{"version":3,"file":"useCheck.mjs","sources":["../../../../../../packages/components/transfer/src/useCheck.ts"],"sourcesContent":["import { computed, getCurrentInstance, watch } from 'vue'\r\n\r\nimport type { ExtractPropTypes } from 'vue'\r\nimport type { TransferPanelState, Key} from './transfer'\r\n\r\nexport const CHECKED_CHANGE_EVENT = 'checked-change'\r\n\r\nexport const useCheckProps = {\r\n  data: {\r\n    type: Array,\r\n    default() {\r\n      return []\r\n    },\r\n  },\r\n  optionRender: Function,\r\n  title: String,\r\n  filterable: Boolean,\r\n  filterMethod: Function,\r\n  defaultChecked: Array,\r\n  props: Object,\r\n  noDataText: String,\r\n  listHeight: Number,\r\n  listWidth: Number\r\n}\r\n\r\nexport const useCheck = (\r\n  props: ExtractPropTypes<typeof useCheckProps>,\r\n  panelState: TransferPanelState\r\n) => {\r\n  const { emit } = getCurrentInstance()!\r\n\r\n  const labelProp = computed(() => props.props!.label || 'label')\r\n\r\n  const keyProp = computed(() => props.props!.key || 'key')\r\n\r\n  const disabledProp = computed(() => props.props!.disabled || 'disabled')\r\n\r\n  const filteredData = computed<any[]>(() => {\r\n    return props.data.filter((item:any) => {\r\n      if (typeof props.filterMethod === 'function') {\r\n        return props.filterMethod(panelState.query, item)\r\n      } else {\r\n        const label = item[labelProp.value] || item[keyProp.value].toString()\r\n        return label.toLowerCase().includes(panelState.query.toLowerCase())\r\n      }\r\n    })\r\n  })\r\n\r\n  const checkableData = computed(() => {\r\n    return filteredData.value.filter((item:any) => !item[disabledProp.value])\r\n  })\r\n\r\n\r\n  const isIndeterminate = computed(() => {\r\n    const checkedLength = panelState.checked.length\r\n    return checkedLength > 0 && checkedLength < checkableData.value.length\r\n  })\r\n\r\n  const checkedLength = computed(() => {\r\n      return  panelState.checked.length\r\n  })\r\n\r\n  const panelStyle = computed(() => {\r\n    return props.listWidth ? 'width: auto' : ''\r\n  })\r\n\r\n  const bodyStyle = computed(() => {\r\n    return {\r\n      width: `${props.listWidth}px`,\r\n      height: props.filterable && props.listHeight ? `${props.listHeight + 62}px` :`${props.listHeight}px`\r\n    }\r\n  })\r\n\r\n  const listStyle = computed(() => {\r\n    return props.listHeight\r\n      ? props.filterable\r\n        ? 'height: calc(100% - 62px)'\r\n        : 'height: 100%'\r\n      : ''\r\n  })\r\n\r\n  const updateAllChecked = () => {\r\n    const checkableDataKeys = checkableData.value.map(\r\n      (item:any) => item[keyProp.value]\r\n    )\r\n    panelState.allChecked =\r\n      checkableDataKeys.length > 0 &&\r\n      checkableDataKeys.every((item) => panelState.checked.includes(item))\r\n  }\r\n\r\n  const handleAllCheckedChange = (value: Key[]) => {\r\n    panelState.checked = value\r\n      ? checkableData.value.map((item:any) => item[keyProp.value])\r\n      : []\r\n  }\r\n\r\n  const handelInput = (value) => {\r\n    emit('on-input', value)\r\n  }\r\n\r\n  const handelClear = () => {\r\n    emit('on-clear')\r\n  }\r\n\r\n  watch(\r\n    () => panelState.checked,\r\n    (val, oldVal) => {\r\n      updateAllChecked()\r\n\r\n      if (panelState.checkChangeByUser) {\r\n        const movedKeys = val\r\n          .concat(oldVal)\r\n          .filter((v) => !val.includes(v) || !oldVal.includes(v))\r\n        emit(CHECKED_CHANGE_EVENT, val, movedKeys)\r\n      } else {\r\n        emit(CHECKED_CHANGE_EVENT, val)\r\n        panelState.checkChangeByUser = true\r\n      }\r\n    }\r\n  )\r\n\r\n  watch(checkableData, () => {\r\n    updateAllChecked()\r\n  })\r\n\r\n  watch(\r\n    () => props.data,\r\n    () => {\r\n      const checked = []\r\n      const filteredDataKeys = filteredData.value.map(\r\n        (item:any) => item[keyProp.value]\r\n      )\r\n      panelState.checked.forEach((item) => {\r\n        if (filteredDataKeys.includes(item)) {\r\n          checked.push(item as never)\r\n        }\r\n      })\r\n      panelState.checkChangeByUser = false\r\n      panelState.checked = checked\r\n    }\r\n  )\r\n\r\n  watch(\r\n    () => props.defaultChecked,\r\n    (val, oldVal) => {\r\n      if (\r\n        oldVal &&\r\n        val!.length === oldVal.length &&\r\n        val!.every((item) => oldVal.includes(item))\r\n      )\r\n        return\r\n\r\n      const checked = []\r\n      const checkableDataKeys = checkableData.value.map(\r\n        (item:any) => item[keyProp.value]\r\n      )\r\n\r\n      val!.forEach((item) => {\r\n        if (checkableDataKeys.includes(item)) {\r\n          checked.push(item as never)\r\n        }\r\n      })\r\n      panelState.checkChangeByUser = false\r\n      panelState.checked = checked\r\n    },\r\n    {\r\n      immediate: true,\r\n    }\r\n  )\r\n\r\n  return {\r\n    labelProp,\r\n    keyProp,\r\n    disabledProp,\r\n    checkedLength: checkedLength,\r\n    filteredData,\r\n    checkableData,\r\n    isIndeterminate,\r\n    updateAllChecked,\r\n    handleAllCheckedChange,\r\n    handelInput,\r\n    handelClear,\r\n    panelStyle,\r\n    bodyStyle,\r\n    listStyle,\r\n  }\r\n}\r\n"],"names":[],"mappings":"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"}