{"version":3,"file":"useCheck.mjs","sources":["../../../../../packages/components/transfer/src/useCheck.ts"],"sourcesContent":["import { computed, getCurrentInstance, watch } from 'vue'\n\nimport type { ExtractPropTypes } from 'vue'\nimport type { TransferPanelState, Key } from './transfer'\n\nexport const CHECKED_CHANGE_EVENT = 'checked-change'\n\nexport const useCheckProps = {\n  data: {\n    type: Array,\n    default() {\n      return []\n    },\n  },\n  optionRender: Function,\n  placeholder: String,\n  title: String,\n  filterable: Boolean,\n  format: Object,\n  filterMethod: Function,\n  defaultChecked: Array,\n  props: Object,\n}\n\nexport const useCheck = (\n  props: ExtractPropTypes<typeof useCheckProps>,\n  panelState: TransferPanelState\n) => {\n  const { emit } = getCurrentInstance()\n\n  const labelProp = computed(() => props.props.label || 'label')\n\n  const keyProp = computed(() => props.props.key || 'key')\n\n  const disabledProp = computed(() => props.props.disabled || 'disabled')\n\n  const filteredData = computed(() => {\n    return props.data.filter((item) => {\n      if (typeof props.filterMethod === 'function') {\n        return props.filterMethod(panelState.query, item)\n      } else {\n        const label = item[labelProp.value] || item[keyProp.value].toString()\n        return label.toLowerCase().includes(panelState.query.toLowerCase())\n      }\n    })\n  })\n\n  const checkableData = computed(() => {\n    return filteredData.value.filter((item) => !item[disabledProp.value])\n  })\n\n  const checkedSummary = computed(() => {\n    const checkedLength = panelState.checked.length\n    const dataLength = props.data.length\n    const { noChecked, hasChecked } = props.format\n\n    if (noChecked && hasChecked) {\n      return checkedLength > 0\n        ? hasChecked\n            .replace(/\\${checked}/g, checkedLength.toString())\n            .replace(/\\${total}/g, dataLength.toString())\n        : noChecked.replace(/\\${total}/g, dataLength.toString())\n    } else {\n      return `${checkedLength}/${dataLength}`\n    }\n  })\n\n  const isIndeterminate = computed(() => {\n    const checkedLength = panelState.checked.length\n    return checkedLength > 0 && checkedLength < checkableData.value.length\n  })\n\n  const updateAllChecked = () => {\n    const checkableDataKeys = checkableData.value.map(\n      (item) => item[keyProp.value]\n    )\n    panelState.allChecked =\n      checkableDataKeys.length > 0 &&\n      checkableDataKeys.every((item) => panelState.checked.includes(item))\n  }\n\n  const handleAllCheckedChange = (value: Key[]) => {\n    panelState.checked = value\n      ? checkableData.value.map((item) => item[keyProp.value])\n      : []\n  }\n\n  watch(\n    () => panelState.checked,\n    (val, oldVal) => {\n      updateAllChecked()\n\n      if (panelState.checkChangeByUser) {\n        const movedKeys = val\n          .concat(oldVal)\n          .filter((v) => !val.includes(v) || !oldVal.includes(v))\n        emit(CHECKED_CHANGE_EVENT, val, movedKeys)\n      } else {\n        emit(CHECKED_CHANGE_EVENT, val)\n        panelState.checkChangeByUser = true\n      }\n    }\n  )\n\n  watch(checkableData, () => {\n    updateAllChecked()\n  })\n\n  watch(\n    () => props.data,\n    () => {\n      const checked = []\n      const filteredDataKeys = filteredData.value.map(\n        (item) => item[keyProp.value]\n      )\n      panelState.checked.forEach((item) => {\n        if (filteredDataKeys.includes(item)) {\n          checked.push(item)\n        }\n      })\n      panelState.checkChangeByUser = false\n      panelState.checked = checked\n    }\n  )\n\n  watch(\n    () => props.defaultChecked,\n    (val, oldVal) => {\n      if (\n        oldVal &&\n        val.length === oldVal.length &&\n        val.every((item) => oldVal.includes(item))\n      )\n        return\n\n      const checked = []\n      const checkableDataKeys = checkableData.value.map(\n        (item) => item[keyProp.value]\n      )\n\n      val.forEach((item) => {\n        if (checkableDataKeys.includes(item)) {\n          checked.push(item)\n        }\n      })\n      panelState.checkChangeByUser = false\n      panelState.checked = checked\n    },\n    {\n      immediate: true,\n    }\n  )\n\n  return {\n    labelProp,\n    keyProp,\n    disabledProp,\n    filteredData,\n    checkableData,\n    checkedSummary,\n    isIndeterminate,\n    updateAllChecked,\n    handleAllCheckedChange,\n  }\n}\n"],"names":[],"mappings":"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"}