{"version":3,"file":"batch-input.vue2.mjs","sources":["../../../../../packages/components/batch-input/src/batch-input.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as __MACROS_defineComponent } from \"vue\";\nexport default /*#__PURE__*/ __MACROS_defineComponent({\n  name: 'ElBatchInput'\n});\n</script>\n<template>\n  <ul :class=\"ns.b()\" @blur.capture=\"handleEmitValue\" tabindex=\"0\">\n    <li v-if=\"isEmpty && allowAdd\">\n      <el-button style=\"width: 100%\" :icon=\"Plus\" @click=\"handleAdd(0)\">{{\n        placeholder\n      }}</el-button>\n    </li>\n\n    <li\n      :class=\"ns.e('item')\"\n      v-for=\"(item, index) of list\"\n      :key=\"item._id\"\n      tabindex=\"0\"\n    >\n      <slot v-bind=\"{ item, index }\" />\n\n      <el-button-group :class=\"ns.e('operation')\" v-if=\"allowAdd\">\n        <el-button\n          :icon=\"Minus\"\n          circle\n          :disabled=\"batchInputDisabled\"\n          @click=\"handleRemove(index)\"\n        ></el-button>\n        <el-button\n          :icon=\"Plus\"\n          circle\n          :disabled=\"batchInputDisabled\"\n          @click=\"handleAdd(index)\"\n        ></el-button>\n      </el-button-group>\n    </li>\n  </ul>\n</template>\n<script lang=\"ts\" setup>\nimport {\n  useDisabled,\n  useEventWatch,\n  useFormItem,\n  useNamespace,\n  useSize\n} from '@element-ultra/hooks'\nimport { batchInputProps, batchInputEmits } from './batch-input'\nimport { Plus, Minus } from 'icon-ultra'\nimport {\n  computed,\n  isReactive,\n  provide,\n  shallowReactive,\n  shallowRef,\n  watch\n} from 'vue'\nimport { ElButton, ElButtonGroup } from '@element-ultra/components/button'\nimport { formKey } from '@element-ultra/tokens'\n\n\n\nlet uniqueId = 0\n\nconst props = defineProps(batchInputProps)\nconst emit = defineEmits(batchInputEmits)\n\nconst ns = useNamespace('batch-input')\n\nconst list = shallowRef<any[]>([])\n\nconst isEmpty = computed(() => {\n  return !list.value.length\n})\n\nconst [run] = useEventWatch(\n  () => props.modelValue,\n  {\n    onChangeNotByEvent(v) {\n      if (!v) return\n      list.value = v.map(item => {\n        let ret = isReactive(item) ? item : shallowReactive(item)\n        if (!ret._id) {\n          ret._id = uniqueId++\n        }\n        return ret\n      })\n    }\n  },\n  { immediate: true }\n)\n\nconst { formItem, form } = useFormItem()\nconst inputSize = useSize({ props })\nconst batchInputDisabled = useDisabled({ props })\nconst provideObj = {\n  ...form,\n  props: shallowReactive<Record<string, any>>({})\n}\n\nwatch(\n  [\n    () => batchInputDisabled.value,\n    () => inputSize.value,\n    () => form?.props\n  ] as const,\n  ([disabled, size, props]) => {\n    Object.assign(provideObj.props, props)\n    provideObj.props.disabled = disabled\n    provideObj.props.size = size\n  }\n)\n// TODO 修复此处的类型忽略\n// @ts-ignore\nprovide(formKey, provideObj)\n\nconst handleEmitValue = () => {\n  run(() => {\n    emit('update:modelValue', list.value)\n    formItem?.validate()\n  })\n}\n\nconst handleAdd = (index: number) => {\n  list.value = [\n    ...list.value.slice(0, index + 1),\n    shallowReactive(Object.assign({ _id: uniqueId++ }, props.itemDefault)),\n    ...list.value.slice(index + 1)\n  ]\n}\n\nconst handleRemove = (index: number) => {\n  run(() => {\n    list.value = [...list.value.slice(0, index), ...list.value.slice(index + 1)]\n  })\n}\n</script>\n"],"names":["__MACROS_defineComponent","props"],"mappings":";;;;;;;;;;;;;;;AAEA,MAA6B,cAAAA,eAAyB,CAAA;AAAA,EACpD,IAAM,EAAA,cAAA;AACR,CAAC,CAAA,CAAA;;;;;;;AA0DD,IAAA,IAAI,QAAW,GAAA,CAAA,CAAA;AAKf,IAAM,MAAA,EAAA,GAAK,aAAa,aAAa,CAAA,CAAA;AAErC,IAAM,MAAA,IAAA,GAAO,UAAkB,CAAA,EAAE,CAAA,CAAA;AAEjC,IAAM,MAAA,OAAA,GAAU,SAAS,MAAM;AAC7B,MAAO,OAAA,CAAC,KAAK,KAAM,CAAA,MAAA,CAAA;AAAA,KACpB,CAAA,CAAA;AAED,IAAM,MAAA,CAAC,GAAG,CAAI,GAAA,aAAA;AAAA,MACZ,MAAM,KAAM,CAAA,UAAA;AAAA,MACZ;AAAA,QACE,mBAAmB,CAAG,EAAA;AACpB,UAAA,IAAI,CAAC,CAAA;AAAG,YAAA,OAAA;AACR,UAAK,IAAA,CAAA,KAAA,GAAQ,CAAE,CAAA,GAAA,CAAI,CAAQ,IAAA,KAAA;AACzB,YAAA,IAAI,MAAM,UAAW,CAAA,IAAI,CAAI,GAAA,IAAA,GAAO,gBAAgB,IAAI,CAAA,CAAA;AACxD,YAAI,IAAA,CAAC,IAAI,GAAK,EAAA;AACZ,cAAA,GAAA,CAAI,GAAM,GAAA,QAAA,EAAA,CAAA;AAAA,aACZ;AACA,YAAO,OAAA,GAAA,CAAA;AAAA,WACR,CAAA,CAAA;AAAA,SACH;AAAA,OACF;AAAA,MACA,EAAE,WAAW,IAAK,EAAA;AAAA,KACpB,CAAA;AAEA,IAAA,MAAM,EAAE,QAAA,EAAU,IAAK,EAAA,GAAI,WAAY,EAAA,CAAA;AACvC,IAAA,MAAM,SAAY,GAAA,OAAA,CAAQ,EAAE,KAAA,EAAO,CAAA,CAAA;AACnC,IAAA,MAAM,kBAAqB,GAAA,WAAA,CAAY,EAAE,KAAA,EAAO,CAAA,CAAA;AAChD,IAAA,MAAM,UAAa,GAAA;AAAA,MACjB,GAAG,IAAA;AAAA,MACH,KAAA,EAAO,eAAqC,CAAA,EAAE,CAAA;AAAA,KAChD,CAAA;AAEA,IAAA,KAAA;AAAA,MACE;AAAA,QACE,MAAM,kBAAmB,CAAA,KAAA;AAAA,QACzB,MAAM,SAAU,CAAA,KAAA;AAAA,QAChB,MAAM,IAAM,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,IAAA,CAAA,KAAA;AAAA,OACd;AAAA,MACA,CAAC,CAAC,QAAU,EAAA,IAAA,EAAMC,MAAK,CAAM,KAAA;AAC3B,QAAO,MAAA,CAAA,MAAA,CAAO,UAAW,CAAA,KAAA,EAAOA,MAAK,CAAA,CAAA;AACrC,QAAA,UAAA,CAAW,MAAM,QAAW,GAAA,QAAA,CAAA;AAC5B,QAAA,UAAA,CAAW,MAAM,IAAO,GAAA,IAAA,CAAA;AAAA,OAC1B;AAAA,KACF,CAAA;AAGA,IAAA,OAAA,CAAQ,SAAS,UAAU,CAAA,CAAA;AAE3B,IAAA,MAAM,kBAAkB,MAAM;AAC5B,MAAA,GAAA,CAAI,MAAM;AACR,QAAK,IAAA,CAAA,mBAAA,EAAqB,KAAK,KAAK,CAAA,CAAA;AACpC,QAAU,QAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,QAAA,CAAA,QAAA,EAAA,CAAA;AAAA,OACX,CAAA,CAAA;AAAA,KACH,CAAA;AAEA,IAAM,MAAA,SAAA,GAAY,CAAC,KAAkB,KAAA;AACnC,MAAA,IAAA,CAAK,KAAQ,GAAA;AAAA,QACX,GAAG,IAAK,CAAA,KAAA,CAAM,KAAM,CAAA,CAAA,EAAG,QAAQ,CAAC,CAAA;AAAA,QAChC,eAAA,CAAgB,OAAO,MAAO,CAAA,EAAE,KAAK,QAAW,EAAA,EAAA,EAAG,KAAM,CAAA,WAAW,CAAC,CAAA;AAAA,QACrE,GAAG,IAAA,CAAK,KAAM,CAAA,KAAA,CAAM,QAAQ,CAAC,CAAA;AAAA,OAC/B,CAAA;AAAA,KACF,CAAA;AAEA,IAAM,MAAA,YAAA,GAAe,CAAC,KAAkB,KAAA;AACtC,MAAA,GAAA,CAAI,MAAM;AACR,QAAA,IAAA,CAAK,KAAQ,GAAA,CAAC,GAAG,IAAA,CAAK,MAAM,KAAM,CAAA,CAAA,EAAG,KAAK,CAAA,EAAG,GAAG,IAAK,CAAA,KAAA,CAAM,KAAM,CAAA,KAAA,GAAQ,CAAC,CAAC,CAAA,CAAA;AAAA,OAC5E,CAAA,CAAA;AAAA,KACH,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}