{"version":3,"file":"index.mjs","sources":["../../../../../../package/formily/array-base/src/index.ts"],"sourcesContent":["/* eslint-disable indent */\nimport {\n  defineComponent,\n  provide,\n  InjectionKey,\n  Ref,\n  inject,\n  toRefs,\n  ref,\n  onBeforeUnmount,\n  PropType,\n  h,\n  toRef,\n  ExtractPropTypes,\n  computed\n} from \"vue\";\nimport { FragmentComponent, useField, useFieldSchema } from \"@formily/vue\";\nimport { isValid, uid, clone } from \"@formily/shared\";\nimport { ArrayField } from \"@formily/core\";\nimport type { Action, ButtonProps } from \"element-plus\";\nimport {\n  ElButton,\n  ElPopconfirm,\n  popconfirmProps,\n  ElMessageBoxOptions,\n  ElMessageBox\n} from \"element-plus\";\nimport type { Schema } from \"@formily/json-schema\";\nimport { Delete, ArrowDown, ArrowUp, Rank, Plus } from \"@element-plus/icons-vue\";\n\nimport { stylePrefix } from \"../../__builtins__/configs\";\nimport { composeExport, resolveComponent } from \"../../__builtins__/shared\";\nimport { isPromise } from \"element-plus/es/utils/index\";\nimport { omit } from \"lodash-es\";\n\nexport interface IArrayBaseAdditionProps extends ButtonProps {\n  title?: string;\n  method?: \"push\" | \"unshift\";\n  defaultValue?: any;\n}\n\nexport type ArrayBaseMixins = {\n  Addition?: typeof ArrayBaseAddition;\n  Remove?: typeof ArrayBaseRemove;\n  MoveUp?: typeof ArrayBaseMoveUp;\n  MoveDown?: typeof ArrayBaseMoveDown;\n  SortHandle?: typeof ArrayBaseSortHandle;\n  Index?: typeof ArrayBaseIndex;\n  useArray?: typeof useArray;\n  useIndex?: typeof useIndex;\n  useRecord?: typeof useRecord;\n};\n\nexport interface IArrayBaseProps {\n  disabled?: boolean;\n  keyMap?: WeakMap<Record<string, unknown>, string> | string[] | null;\n}\n\nexport interface IArrayBaseItemProps {\n  index: number;\n  record: any;\n}\n\nexport interface IArrayBaseContext {\n  field: Ref<ArrayField>;\n  schema: Ref<Schema>;\n  props: IArrayBaseProps;\n  attrs: {\n    [key in string]?: any;\n  };\n  keyMap?: WeakMap<Record<string, unknown>, string> | string[] | null;\n}\n\nconst ArrayBaseSymbol: InjectionKey<IArrayBaseContext> = Symbol(\"ArrayBaseContext\");\nconst ItemSymbol: InjectionKey<IArrayBaseItemProps> = Symbol(\"ItemContext\");\n\nconst useArray = () => {\n  return inject(ArrayBaseSymbol, null);\n};\n\nconst useIndex = (index?: number) => {\n  const { index: indexRef } = toRefs(inject(ItemSymbol) as IArrayBaseItemProps);\n  return indexRef ?? ref(index);\n};\n\nconst useRecord = (record?: number) => {\n  const { record: recordRef } = toRefs(inject(ItemSymbol) as IArrayBaseItemProps);\n  return recordRef.value ?? ref(record);\n};\n\nconst useItemScope = () => {\n  return toRef(inject(ItemSymbol) as IArrayBaseItemProps);\n};\n\n// const use\n\nconst isObjectValue: (schema: Schema) => boolean = (schema: Schema) => {\n  if (Array.isArray(schema?.items)) return isObjectValue(schema.items[0]);\n\n  if (schema?.items?.type === \"array\" || schema?.items?.type === \"object\") {\n    return true;\n  }\n  return false;\n};\n\nconst useKey = (schema: Schema) => {\n  const isObject = isObjectValue(schema);\n  let keyMap: WeakMap<Record<string, unknown>, string> | string[] | null = null;\n\n  if (isObject) {\n    keyMap = new WeakMap();\n  } else {\n    keyMap = [];\n  }\n\n  onBeforeUnmount(() => {\n    keyMap = null;\n  });\n\n  return {\n    keyMap,\n    getKey: (record: any, index: number) => {\n      if (keyMap instanceof WeakMap) {\n        if (!keyMap.has(record)) {\n          keyMap.set(record, uid());\n        }\n        return `${keyMap.get(record)}-${index}`;\n      }\n\n      if (keyMap && !keyMap[index]) {\n        keyMap[index] = uid();\n      }\n      return keyMap ? `${keyMap[index]}-${index}` : undefined;\n    }\n  };\n};\n\nconst getDefaultValue = (defaultValue: any, schema: Schema): any => {\n  if (isValid(defaultValue)) return clone(defaultValue);\n  if (Array.isArray(schema?.items)) return getDefaultValue(defaultValue, schema.items[0]);\n  if (schema?.items?.type === \"array\") return [];\n  if (schema?.items?.type === \"boolean\") return true;\n  if (schema?.items?.type === \"date\") return \"\";\n  if (schema?.items?.type === \"datetime\") return \"\";\n  if (schema?.items?.type === \"number\") return 0;\n  if (schema?.items?.type === \"object\") return {};\n  if (schema?.items?.type === \"string\") return \"\";\n  return null;\n};\n\nconst ArrayBaseInner = defineComponent({\n  name: \"ArrayBase\",\n  props: {\n    disabled: {\n      type: Boolean,\n      default: false\n    },\n    keyMap: {\n      type: [WeakMap, Array] as PropType<WeakMap<Record<string, unknown>, string> | string[]>\n    }\n  },\n  setup(props, { slots, attrs }) {\n    const field = useField<ArrayField>();\n    const schema = useFieldSchema();\n\n    provide(ArrayBaseSymbol, {\n      field,\n      schema,\n      props,\n      attrs,\n      keyMap: props.keyMap\n    });\n    return () => {\n      return h(FragmentComponent, {}, slots);\n    };\n  }\n});\n\nconst ArrayBaseButton = defineComponent({\n  name: \"ArrayBaseButton\",\n  props: {\n    ...ElButton.props,\n    popconfirmProps: {\n      type: Object as PropType<ExtractPropTypes<typeof popconfirmProps>>\n    },\n    messageBoxOptions: {\n      type: Object as PropType<ElMessageBoxOptions>\n    },\n    title: {\n      type: String\n    },\n    link: {\n      type: Boolean,\n      default: true\n    },\n    size: {\n      type: String,\n      default: \"small\"\n    },\n    onClick: {\n      type: Function\n    }\n  },\n  emits: [\"click\"],\n  setup(props, { attrs }) {\n    const scope = useItemScope();\n    const field = useField();\n    const base = useArray();\n    const schema = useFieldSchema();\n    const buttonProps = omit(props, [\"popconfirmProps\", \"messageBoxOptions\"]);\n    const popconfirmProps = computed(() => props.popconfirmProps);\n    const messageBoxOptions = computed(() => props.messageBoxOptions);\n    const loading = ref(false);\n    return () => {\n      if (base?.field.value.pattern !== \"editable\") return null;\n      const ButtonNode = h(\n        ElButton,\n        {\n          ...buttonProps,\n          ...attrs,\n          type: buttonProps.type || \"primary\",\n          loading: loading.value,\n          onClick: async (e: MouseEvent) => {\n            e.stopPropagation();\n            if (messageBoxOptions.value) {\n              ElMessageBox.confirm(\"\", {\n                type: \"warning\",\n                ...messageBoxOptions.value\n              })\n                .then(async () => {\n                  loading.value = true;\n                  await messageBoxOptions.value?.onConfirm?.(e, scope.value);\n                  loading.value = false;\n                })\n                .catch(async (action: Action) => {\n                  loading.value = true;\n                  await messageBoxOptions.value?.onCancel?.(e, scope.value, action);\n                  loading.value = false;\n                });\n            } else {\n              if (typeof props.onClick === \"function\") {\n                loading.value = true;\n                await props.onClick(e, scope.value);\n                loading.value = false;\n              }\n            }\n          }\n        },\n        {\n          default: () => [\n            resolveComponent(schema.value[\"x-render\"]?.(scope.value)) ||\n              field.value.title ||\n              props.title\n          ]\n        }\n      );\n      if (popconfirmProps.value) {\n        return h(\n          ElPopconfirm,\n          {\n            ...popconfirmProps.value,\n            onCancel: async (e: any) => {\n              loading.value = true;\n              await popconfirmProps.value?.onCancel?.(e, scope.value);\n              loading.value = false;\n            },\n            onConfirm: async (e: any) => {\n              loading.value = true;\n              popconfirmProps.value?.onConfirm?.(e, scope.value);\n              loading.value = false;\n            }\n          },\n          {\n            reference: () => ButtonNode\n          }\n        );\n      }\n      return ButtonNode;\n    };\n  }\n});\n\nconst ArrayBaseItem = defineComponent({\n  name: \"ArrayBaseItem\",\n  props: [\"index\", \"record\"],\n  setup(props: IArrayBaseItemProps, { slots }) {\n    provide(ItemSymbol, props);\n    return () => {\n      return h(FragmentComponent, {}, slots);\n    };\n  }\n});\n\nconst ArrayBaseSortHandle = defineComponent({\n  name: \"ArrayBaseSortHandle\",\n  props: [\"index\"],\n  setup(props, { attrs }) {\n    const array = useArray();\n    const prefixCls = `${stylePrefix}-array-base`;\n\n    return () => {\n      if (!array) return null;\n      if (array.field.value?.pattern !== \"editable\") return null;\n\n      return h(\n        ElButton,\n        {\n          directives: [{ name: \"handle\" }],\n          size: \"small\",\n          type: \"primary\",\n          text: true,\n          icon: Rank,\n          ...attrs,\n          class: [`${prefixCls}-sort-handle`].concat(attrs.class as any)\n        },\n        {}\n      );\n    };\n  }\n});\n\nconst ArrayBaseIndex = defineComponent({\n  name: \"ArrayBaseIndex\",\n  setup(props, { attrs }) {\n    const index = useIndex();\n    const prefixCls = `${stylePrefix}-array-base`;\n    return () => {\n      const { class: className, ...other } = attrs;\n      return h(\n        \"span\",\n        {\n          class: [`${prefixCls}-index`, className],\n          ...other\n        },\n        {\n          default: () => [`${index.value + 1}`]\n        }\n      );\n    };\n  }\n});\n\nconst ArrayBaseAddition = defineComponent({\n  name: \"ArrayBaseAddition\",\n  props: [\"method\", \"defaultValue\", \"title\"],\n  setup(props, { attrs }) {\n    const self = useField();\n    const array = useArray();\n    const prefixCls = `${stylePrefix}-array-base`;\n    return () => {\n      if (!array) return null;\n      if (array?.field.value.pattern !== \"editable\") return null;\n      const { class: className, ...other } = attrs;\n      return h(\n        ElButton,\n        {\n          class: [`${prefixCls}-addition`, className],\n          icon: Plus,\n          ...other,\n          ...props,\n          onClick: (e) => {\n            if (array.props?.disabled) return;\n            const defaultValue = getDefaultValue(props.defaultValue, array?.schema.value);\n            if (props.method === \"unshift\") {\n              array?.field?.value.unshift(defaultValue);\n              array.attrs?.add?.(0);\n            } else {\n              array?.field?.value.push(defaultValue);\n              array.attrs?.add?.(array?.field?.value?.value?.length - 1);\n            }\n            if (typeof attrs.onClick === \"function\") {\n              attrs.onClick(e);\n            }\n          }\n        },\n        {\n          default: () => [self.value.title || props.title]\n        }\n      );\n    };\n  }\n});\n\nconst ArrayBaseRemove = defineComponent({\n  name: \"ArrayBaseRemove\",\n  props: {\n    ...ArrayBaseButton.props,\n    index: {\n      type: Number\n    },\n    onClick: {\n      type: Function\n    }\n  },\n  setup(props, { attrs }) {\n    const indexRef = useIndex(props.index);\n    const self = useField();\n    const base = useArray();\n    const prefixCls = `${stylePrefix}-array-base`;\n\n    const remove = async (e: MouseEvent) => {\n      e.stopPropagation();\n      if (typeof props.onClick === \"function\") {\n        const fn = await props.onClick(e);\n        if (isPromise(fn)) {\n          await fn;\n        }\n      }\n      base?.field.value.remove(indexRef.value as number);\n      base?.attrs?.remove?.(indexRef.value as number);\n    };\n\n    const popconfirmProps = {\n      title: \"是否该删除数据\",\n      ...props.popconfirmProps,\n      onConfirm: async (...args: any) => {\n        await props.popconfirmProps?.onConfirm?.(...args);\n        base?.field.value.remove(indexRef.value as number);\n        base?.attrs?.remove?.(indexRef.value as number);\n      }\n    };\n\n    const messageBoxOptions = {\n      message: \"是否该删除数据\",\n      ...props.messageBoxOptions,\n      onConfirm: async (...args: any) => {\n        await props.messageBoxOptions?.onConfirm?.(...args);\n        base?.field.value.remove(indexRef.value as number);\n        base?.attrs?.remove?.(indexRef.value as number);\n      }\n    };\n\n    return () => {\n      if (base?.field.value.pattern !== \"editable\") return null;\n      const { class: className, ...other } = attrs;\n      return h(\n        ArrayBaseButton,\n        {\n          class: [`${prefixCls}-remove`, className],\n          link: true,\n          size: \"small\",\n          icon: Delete,\n          ...props,\n          ...other,\n          type: props.type ? props.type : \"danger\",\n          onClick: props.popconfirmProps || props.messageBoxOptions ? () => {} : remove,\n          popconfirmProps: props.popconfirmProps ? popconfirmProps : null,\n          messageBoxOptions: props.messageBoxOptions ? messageBoxOptions : null\n        },\n        {\n          default: () => [self.value.title || props.title]\n        }\n      );\n    };\n  }\n});\n\nconst ArrayBaseMoveDown = defineComponent({\n  name: \"ArrayBaseMoveDown\",\n  props: [\"index\", \"title\"],\n  setup(props, { attrs }) {\n    const indexRef = useIndex(props.index);\n    const self = useField();\n    const base = useArray();\n    const prefixCls = `${stylePrefix}-array-base`;\n    return () => {\n      if (base?.field.value.pattern !== \"editable\") return null;\n\n      const { class: className, ...other } = attrs;\n      return h(\n        ElButton,\n        {\n          class: [`${prefixCls}-move-down`, className],\n          size: \"small\",\n          type: \"primary\",\n          link: true,\n          icon: ArrowDown,\n          ...other,\n          onClick: async (e: MouseEvent) => {\n            e.stopPropagation();\n\n            if (typeof attrs.onClick === \"function\") {\n              const fn = attrs.onClick(e);\n              if (isPromise(fn)) {\n                await fn;\n              }\n            }\n\n            if (Array.isArray(base?.keyMap)) {\n              base.keyMap.splice(indexRef.value + 1, 0, base.keyMap.splice(indexRef.value, 1)[0]);\n            }\n\n            base?.field.value.moveDown(indexRef.value as number);\n            base?.attrs?.moveDown?.(indexRef.value as number);\n          }\n        },\n        {\n          default: () => [self.value.title || props.title]\n        }\n      );\n    };\n  }\n});\n\nconst ArrayBaseMoveUp = defineComponent({\n  name: \"ArrayBaseMoveUp\",\n  props: [\"index\", \"title\"],\n  setup(props, { attrs }) {\n    const indexRef = useIndex(props.index);\n    const self = useField();\n    const base = useArray();\n    const prefixCls = `${stylePrefix}-array-base`;\n    return () => {\n      if (base?.field.value.pattern !== \"editable\") return null;\n      const { class: className, ...other } = attrs;\n      return h(\n        ElButton,\n        {\n          class: [`${prefixCls}-move-up`, className],\n          size: \"small\",\n          type: \"primary\",\n          link: true,\n          icon: ArrowUp,\n          ...other,\n          onClick: async (e: MouseEvent) => {\n            e.stopPropagation();\n            if (typeof attrs.onClick === \"function\") {\n              const fn = attrs.onClick(e);\n              if (isPromise(fn)) {\n                await fn;\n              }\n            }\n            if (Array.isArray(base?.keyMap)) {\n              base.keyMap.splice(indexRef.value - 1, 0, base.keyMap.splice(indexRef.value, 1)[0]);\n            }\n\n            base?.field.value.moveUp(indexRef.value as number);\n            base?.attrs?.moveUp?.(indexRef.value as number);\n          }\n        },\n        {\n          default: () => [self.value.title || props.title]\n        }\n      );\n    };\n  }\n});\n\nconst ArrayBaseButtonGroup = defineComponent({\n  name: \"ArrayBaseButtonGroup\",\n  inheritAttrs: false,\n  props: [\"index\"],\n  setup(props) {\n    const indexRef = useIndex(props.index);\n    const record = useRecord();\n    const schema = useFieldSchema();\n    const base = useArray();\n    return () => {\n      if (base?.field.value.pattern !== \"editable\") return null;\n      return h(\n        FragmentComponent,\n        {},\n        {\n          default: () =>\n            resolveComponent(schema.value[\"x-render\"]?.({ row: record, $index: indexRef.value }))\n        }\n      );\n    };\n  }\n});\n\nexport const ArrayBase = composeExport(ArrayBaseInner, {\n  Index: ArrayBaseIndex,\n  Item: ArrayBaseItem,\n  SortHandle: ArrayBaseSortHandle,\n  Addition: ArrayBaseAddition,\n  Remove: ArrayBaseRemove,\n  MoveDown: ArrayBaseMoveDown,\n  MoveUp: ArrayBaseMoveUp,\n  Button: ArrayBaseButton,\n  ButtonGroup: ArrayBaseButtonGroup,\n  useArray: useArray,\n  useIndex: useIndex,\n  useKey: useKey,\n  useRecord: useRecord\n});\n"],"names":["popconfirmProps"],"mappings":"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"}