{"version":3,"file":"index.mjs","sources":["../../../../../../package/formily/checkbox/src/index.ts"],"sourcesContent":["/* eslint-disable indent */\nimport { defineComponent, PropType, h, Component, ref, computed, toRefs, reactive } from \"vue\";\nimport { connect, mapProps, mapReadPretty } from \"@formily/vue\";\nimport {\n  composeExport,\n  transformComponent,\n  resolveComponent,\n  SlotTypes,\n  PropsType\n} from \"../../__builtins__/shared\";\n\nimport {\n  ElCheckbox,\n  ElCheckboxGroup,\n  ElCheckboxButton,\n  UPDATE_MODEL_EVENT,\n  CHANGE_EVENT\n} from \"element-plus\";\nimport { PreviewText } from \"../../preview-text\";\nimport { useGlobalConfig } from \"@vue-admin-core/components/config-provider\";\nimport { flattenDeep, isFunction, omit, remove } from \"lodash-es\";\nimport { toJS } from \"@formily/reactive\";\nimport { useArrToStr } from \"../../__builtins__/hooks/useArrToStr\";\n\ntype ElCheckboxProps = Omit<typeof ElCheckbox, \"value\"> & {\n  value: ElCheckboxProps[\"label\"];\n};\n\nexport interface CheckboxProps extends ElCheckboxProps {\n  /**\n   * 选项属性\n   */\n  option: Omit<typeof ElCheckbox, \"value\"> & {\n    value: ElCheckboxProps[\"label\"];\n    label: SlotTypes;\n  };\n}\n\nconst CheckboxOption = defineComponent({\n  name: \"FCheckbox\",\n  inheritAttrs: false,\n  props: {\n    option: {\n      type: Object,\n      default: null\n    }\n  },\n  setup(curtomProps, { attrs, slots }) {\n    return () => {\n      const props = attrs as unknown as CheckboxProps;\n      const option = curtomProps?.option;\n      if (option) {\n        const children = {\n          default: () => [resolveComponent(slots.default ?? option.label, { option })]\n        };\n        const newProps = { ...props } as Partial<ElCheckboxProps>;\n        Object.assign(newProps, option);\n        newProps.label = option.value;\n        delete newProps.value;\n\n        return h(\n          attrs.optionType === \"button\" ? ElCheckboxButton : ElCheckbox,\n          {\n            ...newProps\n          },\n          children\n        );\n      }\n\n      return h(\n        ElCheckbox,\n        {\n          ...props\n        },\n        slots\n      );\n    };\n  }\n});\n\nexport type CheckboxGroupProps = typeof ElCheckboxGroup & {\n  value: any[];\n  options?: Array<CheckboxProps | string>;\n  optionType: \"default\" | \"button\";\n  /**\n   * @description 互斥选项\n   * @example [\"01\", \"*\"] [[\"01\", \"02\"], [\"03\", \"04\"]] [\"01\", \"02\", \"03\"]\n   */\n  mutualExclusion: any[] | any[][];\n};\n\nconst TransformElCheckboxGroup = transformComponent(ElCheckboxGroup, {\n  change: \"update:modelValue\"\n});\nconst CheckboxGroupOption: Component = defineComponent({\n  name: \"FCheckboxGroup\",\n  props: {\n    ...ElCheckboxGroup.props,\n    modelValue: {\n      type: [Array, String],\n      default: () => []\n    },\n    options: {\n      type: Array,\n      default: () => []\n    },\n    optionType: {\n      type: String as PropType<CheckboxGroupProps[\"optionType\"]>,\n      default: \"default\"\n    },\n    mutualExclusion: {\n      type: Array,\n      default: () => []\n    },\n    props: {\n      type: Object as PropType<PropsType>,\n      default: () => ({\n        children: \"children\",\n        label: \"label\",\n        value: \"value\",\n        disabled: \"disabled\"\n      })\n    }\n  },\n  emits: [UPDATE_MODEL_EVENT, CHANGE_EVENT],\n  setup(customProps, { attrs, slots, emit }) {\n    const config = useGlobalConfig();\n    const checkbox = ref();\n    const label = computed(() => customProps.props.label || \"label\");\n    const value = computed(() => customProps.props.value || \"value\");\n    const _props = useArrToStr(customProps, { attrs, slots } as any, {\n      vm: checkbox,\n      always: true\n    });\n    const mutualExclusionFn = (checked: boolean, value: any) => {\n      const _modelValue = toJS(attrs.modelValue) as any[];\n      if (!checked) return;\n      const mutualExclusion = customProps.mutualExclusion;\n      if (mutualExclusion.indexOf(\"*\") !== -1) {\n        if (mutualExclusion.indexOf(value) !== -1) {\n          emit(\"change\", [value]);\n          return;\n        } else {\n          remove(_modelValue, (val) => mutualExclusion.indexOf(val) !== -1);\n          emit(\"change\", _modelValue);\n          return;\n        }\n      }\n      if (flattenDeep(mutualExclusion).indexOf(value) === -1) return;\n      if (checked && Array.isArray(mutualExclusion[0])) {\n        mutualExclusion.forEach((item: any) => {\n          if (item.indexOf(value) === -1) {\n            remove(_modelValue, (val) => item.indexOf(val) !== -1 && item.indexOf(value) === -1);\n          }\n        });\n      } else {\n        remove(_modelValue, (val) => mutualExclusion.indexOf(val) !== -1 && val !== value);\n      }\n      emit(\"change\", _modelValue);\n    };\n    return (): any => {\n      const options = customProps.options || [];\n      const children =\n        options.length !== 0\n          ? {\n              default: () =>\n                options.map((option: any) => {\n                  if (typeof option === \"string\") {\n                    return h(\n                      Checkbox,\n                      {\n                        option: {\n                          label: option,\n                          value: option\n                        },\n                        optionType: customProps.optionType\n                      },\n                      slots?.option ? { default: () => slots?.option?.({ option }) } : {}\n                    );\n                  } else {\n                    const {\n                      [label.value]: __label,\n                      [value.value]: __value,\n                      [config.value.dictLabelKey as string]: _label,\n                      [config.value.dictValueKey as string]: _value,\n                      ...other\n                    } = option;\n                    return h(\n                      Checkbox as any,\n                      {\n                        ...other,\n                        option: {\n                          label: __label || _label,\n                          value: __value || _value\n                        },\n                        optionType: customProps.optionType,\n                        disabled: isFunction(customProps.props?.disabled)\n                          ? customProps.props?.disabled(option)\n                          : customProps.props?.disabled\n                            ? option[customProps.props?.disabled]\n                            : false,\n                        onChange:\n                          customProps.mutualExclusion.length > 0\n                            ? (checked: boolean) => mutualExclusionFn(checked, __value || _value)\n                            : null\n                      },\n                      slots?.option ? { default: () => slots?.option?.({ option }) } : {}\n                    );\n                  }\n                })\n            }\n          : slots;\n\n      return h(\n        TransformElCheckboxGroup,\n        reactive({\n          ...omit(toRefs(customProps), [\"options\", \"props\"]),\n          ..._props,\n          ref: (ref: any) => (checkbox.value = ref)\n        }),\n        children\n      );\n    };\n  }\n});\n\nconst CheckboxGroup = connect(\n  CheckboxGroupOption,\n  mapProps({ dataSource: \"options\", value: \"modelValue\" }),\n  mapReadPretty(PreviewText.Select, {\n    multiple: true\n  })\n);\n\nexport const Checkbox = composeExport(connect(CheckboxOption), {\n  Group: CheckboxGroup\n});\n\nexport default Checkbox;\n"],"names":["value","_a","ref"],"mappings":"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"}