{"version":3,"file":"transfer2.mjs","sources":["../../../../../../packages/components/transfer/src/transfer.vue"],"sourcesContent":["<template>\n  <div\n    :class=\"ns.b()\"\n    data-test-name=\"transfer\"\n    data-test-variant=\"\"\n    data-test-state=\"\"\n  >\n    <transfer-panel\n      ref=\"leftPanel\"\n      :data=\"sourceData\"\n      :option-render=\"optionRender\"\n      :placeholder=\"panelFilterPlaceholder\"\n      :title=\"leftPanelTitle\"\n      :filterable=\"filterable\"\n      :format=\"format\"\n      :filter-method=\"filterMethod\"\n      :default-checked=\"leftDefaultChecked\"\n      :props=\"props\"\n      :width=\"width\"\n      :height=\"height\"\n      @checked-change=\"onSourceCheckedChange\"\n    >\n      <slot name=\"left-footer\" />\n    </transfer-panel>\n    <div :class=\"ns.e('buttons')\">\n      <b-button\n        small\n        :icon=\"ArrowLeft\"\n        :disabled=\"isEmpty(checkedState.rightChecked)\"\n        @click=\"addToLeft\"\n      />\n      <b-button\n        small\n        :icon=\"ArrowRight\"\n        :disabled=\"isEmpty(checkedState.leftChecked)\"\n        @click=\"addToRight\"\n      />\n    </div>\n    <transfer-panel\n      ref=\"rightPanel\"\n      :data=\"targetData\"\n      :option-render=\"optionRender\"\n      :placeholder=\"panelFilterPlaceholder\"\n      :filterable=\"filterable\"\n      :format=\"format\"\n      :filter-method=\"filterMethod\"\n      :title=\"rightPanelTitle\"\n      :default-checked=\"rightDefaultChecked\"\n      :props=\"props\"\n      :width=\"width\"\n      :height=\"height\"\n      @checked-change=\"onTargetCheckedChange\"\n    >\n      <slot name=\"right-footer\" />\n    </transfer-panel>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, h, reactive, ref, useSlots } from 'vue'\nimport { isEmpty } from '@bigin/utils'\nimport { useLocale, useNamespace } from '@bigin/hooks'\nimport { BButton } from '@bigin/components/button'\nimport { ArrowLeft, ArrowRight } from '@bigin/icons-vue'\nimport { transferEmits, transferProps } from './transfer'\nimport {\n  useCheckedChange,\n  useComputedData,\n  useMove,\n  usePropsAlias,\n} from './composables'\nimport TransferPanel from './transfer-panel.vue'\n\nimport type {\n  TransferCheckedState,\n  TransferDataItem,\n  TransferDirection,\n} from './transfer'\nimport type { TransferPanelInstance } from './transfer-panel'\n\ndefineOptions({\n  name: 'BTransfer',\n})\n\nconst props = defineProps(transferProps)\nconst emit = defineEmits(transferEmits)\nconst slots = useSlots()\n\nconst width = computed(() => props.panelWidth)\nconst height = computed(() => props.panelHeight)\n\nconst { t } = useLocale()\nconst ns = useNamespace('transfer')\n\nconst checkedState = reactive<TransferCheckedState>({\n  leftChecked: [],\n  rightChecked: [],\n})\n\nconst propsAlias = usePropsAlias(props)\n\nconst { sourceData, targetData } = useComputedData(props)\n\nconst { onSourceCheckedChange, onTargetCheckedChange } = useCheckedChange(\n  checkedState,\n  emit\n)\n\nconst { addToLeft, addToRight } = useMove(props, checkedState, emit)\n\nconst leftPanel = ref<TransferPanelInstance>()\nconst rightPanel = ref<TransferPanelInstance>()\n\nconst clearQuery = (which: TransferDirection) => {\n  switch (which) {\n    case 'left':\n      leftPanel.value!.query = ''\n      break\n    case 'right':\n      rightPanel.value!.query = ''\n      break\n  }\n}\n\nconst leftPanelTitle = computed(\n  () => props.titles[0] || t('b.transfer.titles.0')\n)\n\nconst rightPanelTitle = computed(\n  () => props.titles[1] || t('b.transfer.titles.1')\n)\n\nconst panelFilterPlaceholder = computed(\n  () => props.filterPlaceholder || t('b.transfer.filterPlaceholder')\n)\n\nconst optionRender = computed(() => (option: TransferDataItem) => {\n  if (props.renderContent) return props.renderContent(h, option)\n\n  if (slots.default) return slots.default({ option })\n\n  return h(\n    'span',\n    option[propsAlias.value.label] || option[propsAlias.value.key]\n  )\n})\n\ndefineExpose({\n  /** @description clear the filter keyword of a certain panel */\n  clearQuery,\n  /** @description left panel ref */\n  leftPanel,\n  /** @description left panel ref */\n  rightPanel,\n})\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;mCAgFc,CAAA;AAAA,EACZ,IAAM,EAAA,WAAA;AACR,CAAA,CAAA,CAAA;;;;;;;AAIA,IAAA,MAAM,QAAQ,QAAS,EAAA,CAAA;AAEvB,IAAA,MAAM,KAAQ,GAAA,QAAA,CAAS,MAAM,KAAA,CAAM,UAAU,CAAA,CAAA;AAC7C,IAAA,MAAM,MAAS,GAAA,QAAA,CAAS,MAAM,KAAA,CAAM,WAAW,CAAA,CAAA;AAEzC,IAAA,MAAA,EAAE,CAAE,EAAA,GAAI,SAAU,EAAA,CAAA;AAClB,IAAA,MAAA,EAAA,GAAK,aAAa,UAAU,CAAA,CAAA;AAElC,IAAA,MAAM,eAAe,QAA+B,CAAA;AAAA,MAClD,aAAa,EAAC;AAAA,MACd,cAAc,EAAC;AAAA,KAChB,CAAA,CAAA;AAEK,IAAA,MAAA,UAAA,GAAa,cAAc,KAAK,CAAA,CAAA;AAEtC,IAAA,MAAM,EAAE,UAAA,EAAY,UAAW,EAAA,GAAI,gBAAgB,KAAK,CAAA,CAAA;AAElD,IAAA,MAAA,EAAE,qBAAuB,EAAA,qBAAA,EAA0B,GAAA,gBAAA;AAAA,MACvD,YAAA;AAAA,MACA,IAAA;AAAA,KACF,CAAA;AAEA,IAAA,MAAM,EAAE,SAAW,EAAA,UAAA,KAAe,OAAQ,CAAA,KAAA,EAAO,cAAc,IAAI,CAAA,CAAA;AAEnE,IAAA,MAAM,YAAY,GAA2B,EAAA,CAAA;AAC7C,IAAA,MAAM,aAAa,GAA2B,EAAA,CAAA;AAExC,IAAA,MAAA,UAAA,GAAa,CAAC,KAA6B,KAAA;AACvC,MAAA,QAAA,KAAA;AAAA,QACD,KAAA,MAAA;AACH,UAAA,SAAA,CAAU,MAAO,KAAQ,GAAA,EAAA,CAAA;AACzB,UAAA,MAAA;AAAA,QACG,KAAA,OAAA;AACH,UAAA,UAAA,CAAW,MAAO,KAAQ,GAAA,EAAA,CAAA;AAC1B,UAAA,MAAA;AAAA,OAAA;AAAA,KAEN,CAAA;AAEA,IAAA,MAAM,cAAiB,GAAA,QAAA;AAAA,MACrB,MAAM,KAAA,CAAM,MAAO,CAAA,CAAA,CAAA,IAAM,EAAE,qBAAqB,CAAA;AAAA,KAClD,CAAA;AAEA,IAAA,MAAM,eAAkB,GAAA,QAAA;AAAA,MACtB,MAAM,KAAA,CAAM,MAAO,CAAA,CAAA,CAAA,IAAM,EAAE,qBAAqB,CAAA;AAAA,KAClD,CAAA;AAEA,IAAA,MAAM,sBAAyB,GAAA,QAAA;AAAA,MAC7B,MAAM,KAAA,CAAM,iBAAqB,IAAA,CAAA,CAAE,8BAA8B,CAAA;AAAA,KACnE,CAAA;AAEA,IAAA,MAAM,YAAe,GAAA,QAAA,CAAS,MAAM,CAAC,MAA6B,KAAA;AAChE,MAAA,IAAI,KAAM,CAAA,aAAA;AAAsB,QAAA,OAAA,KAAA,CAAM,aAAc,CAAA,CAAA,EAAG,MAAM,CAAA,CAAA;AAE7D,MAAA,IAAI,KAAM,CAAA,OAAA;AAAS,QAAA,OAAO,KAAM,CAAA,OAAA,CAAQ,EAAE,MAAA,EAAQ,CAAA,CAAA;AAE3C,MAAA,OAAA,CAAA;AAAA,QACL,MAAA;AAAA,QACA,OAAO,UAAW,CAAA,KAAA,CAAM,KAAU,CAAA,IAAA,MAAA,CAAO,WAAW,KAAM,CAAA,GAAA,CAAA;AAAA,OAC5D,CAAA;AAAA,KACD,CAAA,CAAA;AAEY,IAAA,MAAA,CAAA;AAAA,MAEX,UAAA;AAAA,MAEA,SAAA;AAAA,MAEA,UAAA;AAAA,KACD,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}