{"version":3,"file":"use-move.mjs","sources":["../../../../../../../packages/components/transfer/src/composables/use-move.ts"],"sourcesContent":["import { CHANGE_EVENT, UPDATE_MODEL_EVENT } from '@bigin/constants'\nimport { usePropsAlias } from './use-props-alias'\n\nimport type { SetupContext } from 'vue'\nimport type {\n  TransferCheckedState,\n  TransferDataItem,\n  TransferDirection,\n  TransferEmits,\n  TransferKey,\n  TransferProps,\n} from '../transfer'\n\nexport const useMove = (\n  props: TransferProps,\n  checkedState: TransferCheckedState,\n  emit: SetupContext<TransferEmits>['emit']\n) => {\n  const propsAlias = usePropsAlias(props)\n\n  const _emit = (\n    value: TransferKey[],\n    direction: TransferDirection,\n    movedKeys: TransferKey[]\n  ) => {\n    emit(UPDATE_MODEL_EVENT, value)\n    emit(CHANGE_EVENT, value, direction, movedKeys)\n  }\n\n  const addToLeft = () => {\n    const currentValue = props.modelValue.slice()\n\n    checkedState.rightChecked.forEach((item) => {\n      const index = currentValue.indexOf(item)\n      if (index > -1) {\n        currentValue.splice(index, 1)\n      }\n    })\n    _emit(currentValue, 'left', checkedState.rightChecked)\n  }\n\n  const addToRight = () => {\n    let currentValue = props.modelValue.slice()\n\n    const itemsToBeMoved = props.data\n      .filter((item: TransferDataItem) => {\n        const itemKey = item[propsAlias.value.key]\n        return (\n          checkedState.leftChecked.includes(itemKey) &&\n          !props.modelValue.includes(itemKey)\n        )\n      })\n      .map((item) => item[propsAlias.value.key])\n\n    currentValue =\n      props.targetOrder === 'unshift'\n        ? itemsToBeMoved.concat(currentValue)\n        : currentValue.concat(itemsToBeMoved)\n\n    if (props.targetOrder === 'original') {\n      currentValue = props.data\n        .filter((item) => currentValue.includes(item[propsAlias.value.key]))\n        .map((item) => item[propsAlias.value.key])\n    }\n\n    _emit(currentValue, 'right', checkedState.leftChecked)\n  }\n\n  return {\n    addToLeft,\n    addToRight,\n  }\n}\n"],"names":[],"mappings":";;;;AAaO,MAAM,OAAU,GAAA,CACrB,KACA,EAAA,YAAA,EACA,IACG,KAAA;AACH,EAAM,MAAA,UAAA,GAAa,cAAc,KAAK,CAAA,CAAA;AAEtC,EAAA,MAAM,KAAQ,GAAA,CACZ,KACA,EAAA,SAAA,EACA,SACG,KAAA;AACH,IAAA,IAAA,CAAK,oBAAoB,KAAK,CAAA,CAAA;AAC9B,IAAK,IAAA,CAAA,YAAA,EAAc,KAAO,EAAA,SAAA,EAAW,SAAS,CAAA,CAAA;AAAA,GAChD,CAAA;AAEA,EAAA,MAAM,YAAY,MAAM;AACtB,IAAM,MAAA,YAAA,GAAe,KAAM,CAAA,UAAA,CAAW,KAAM,EAAA,CAAA;AAE5C,IAAa,YAAA,CAAA,YAAA,CAAa,OAAQ,CAAA,CAAC,IAAS,KAAA;AAC1C,MAAM,MAAA,KAAA,GAAQ,YAAa,CAAA,OAAA,CAAQ,IAAI,CAAA,CAAA;AACvC,MAAA,IAAI,QAAQ,CAAI,CAAA,EAAA;AACd,QAAa,YAAA,CAAA,MAAA,CAAO,OAAO,CAAC,CAAA,CAAA;AAAA,OAC9B;AAAA,KACD,CAAA,CAAA;AACD,IAAM,KAAA,CAAA,YAAA,EAAc,MAAQ,EAAA,YAAA,CAAa,YAAY,CAAA,CAAA;AAAA,GACvD,CAAA;AAEA,EAAA,MAAM,aAAa,MAAM;AACvB,IAAI,IAAA,YAAA,GAAe,KAAM,CAAA,UAAA,CAAW,KAAM,EAAA,CAAA;AAE1C,IAAA,MAAM,cAAiB,GAAA,KAAA,CAAM,IAC1B,CAAA,MAAA,CAAO,CAAC,IAA2B,KAAA;AAClC,MAAM,MAAA,OAAA,GAAU,IAAK,CAAA,UAAA,CAAW,KAAM,CAAA,GAAA,CAAA,CAAA;AACtC,MACE,OAAA,YAAA,CAAa,YAAY,QAAS,CAAA,OAAO,KACzC,CAAC,KAAA,CAAM,UAAW,CAAA,QAAA,CAAS,OAAO,CAAA,CAAA;AAAA,KAErC,EACA,GAAI,CAAA,CAAC,SAAS,IAAK,CAAA,UAAA,CAAW,MAAM,GAAI,CAAA,CAAA,CAAA;AAE3C,IACE,YAAA,GAAA,KAAA,CAAM,gBAAgB,SAClB,GAAA,cAAA,CAAe,OAAO,YAAY,CAAA,GAClC,YAAa,CAAA,MAAA,CAAO,cAAc,CAAA,CAAA;AAExC,IAAI,IAAA,KAAA,CAAM,gBAAgB,UAAY,EAAA;AACpC,MAAA,YAAA,GAAe,MAAM,IAClB,CAAA,MAAA,CAAO,CAAC,IAAS,KAAA,YAAA,CAAa,SAAS,IAAK,CAAA,UAAA,CAAW,MAAM,GAAI,CAAA,CAAC,EAClE,GAAI,CAAA,CAAC,SAAS,IAAK,CAAA,UAAA,CAAW,MAAM,GAAI,CAAA,CAAA,CAAA;AAAA,KAC7C;AAEA,IAAM,KAAA,CAAA,YAAA,EAAc,OAAS,EAAA,YAAA,CAAa,WAAW,CAAA,CAAA;AAAA,GACvD,CAAA;AAEA,EAAO,OAAA;AAAA,IACL,SAAA;AAAA,IACA,UAAA;AAAA,GACF,CAAA;AACF;;;;"}