{"version":3,"file":"index.mjs","sources":["../../../../../packages/element/check-card/src/index.tsx"],"sourcesContent":["import { provide } from 'vue'\nimport { useNamespace } from '@ideaz/hooks'\nimport { get } from 'lodash-unified'\nimport { isValid } from '@ideaz/utils'\nimport ZCheckCardItem from './CheckCardItem'\nimport { checkCardGroupProps } from './props'\nimport type { CheckCardItemProps, CheckCardValueType } from './props'\n\nexport default defineComponent({\n  name: 'ZCheckCard',\n  components: { ZCheckCardItem },\n  props: checkCardGroupProps,\n  emits: ['change', 'update:modelValue'],\n  setup(props, { slots, expose, emit }) {\n    const ns = useNamespace('check-card')\n    const size = useFormSize()\n\n    const stateValue = computed({\n      get() {\n        return props.modelValue || props.value\n      },\n      set(val) {\n        emit('update:modelValue', val)\n        emit('change', val)\n      },\n    })\n\n    const getOptions = () => {\n      return (props.options as CheckCardItemProps[])?.map(\n        (option) => {\n          if (typeof option === 'string') {\n            return {\n              title: option,\n              value: option,\n            }\n          }\n          return option\n        },\n      )\n    }\n\n    const toggleOption = (option: CheckCardItemProps) => {\n      if (!props.multiple) {\n        let changeValue\n\n        changeValue = stateValue.value\n\n        if (changeValue === option.value)\n          changeValue = undefined\n\n        else\n          changeValue = option.value\n\n        stateValue.value = changeValue\n      }\n\n      if (props.multiple) {\n        let changeValue = []\n        const stateValues = stateValue.value as CheckCardValueType[]\n        const hasOption = stateValues.includes(option.value!)\n        changeValue = [...(stateValues || [])]\n        if (!hasOption)\n          changeValue.push(option.value!)\n\n        if (hasOption) {\n          changeValue = changeValue.filter(\n            itemValue => itemValue !== option.value,\n          )\n        }\n        const newOptions = getOptions()\n        const newValue = changeValue\n          // ?.filter((val) => registerValueMap.current.has(val))\n          ?.sort((a, b) => {\n            const indexA = newOptions.findIndex((opt: { title: string, value: any } | CheckCardItemProps) => opt.value === a || get(opt, props.alias?.value || 'value', '') === a)\n            const indexB = newOptions.findIndex((opt: { title: string, value: any } | CheckCardItemProps) => opt.value === b || get(opt, props.alias?.value || 'value', '') === b)\n            return indexA - indexB\n          })\n\n        stateValue.value = newValue\n      }\n    }\n\n    const children = () => {\n      const { loading, multiple, options } = props\n      if (loading) {\n        // eslint-disable-next-line unicorn/no-new-array\n        return new Array(options?.length || slots.default?.()?.length || 1)\n          .fill(0)\n          .map((_, index) => <ZCheckCardItem key={index} loading />)\n      }\n\n      if (options && options.length > 0) {\n        const optionValue = stateValue.value\n        return (getOptions() as CheckCardItemProps[]).map((option) => {\n          const value = get(option, props.alias?.value || 'value', '')\n          return (\n            <ZCheckCardItem\n              key={value.toString()}\n              {...option}\n              disabled={get(option, props.alias?.disabled || 'disabled', false)}\n              size={option.size || size.value}\n              value={value}\n              bordered={isValid(option.bordered) ? option.bordered : props.bordered}\n              checked={\n              multiple\n                ? (optionValue as CheckCardValueType[])?.includes(value)\n                : (optionValue as CheckCardValueType) === value\n            }\n              title={get(option, props.alias?.title || 'title', '')}\n            />\n          )\n        })\n      }\n\n      return slots.default?.()\n    }\n\n    provide(\n      'check-card-group',\n      computed(() => {\n        return {\n          toggleOption,\n          bordered: props.bordered,\n          value: stateValue.value,\n          disabled: props.disabled,\n          size: size.value,\n          loading: props.loading,\n          multiple: props.multiple,\n        }\n      }),\n    )\n\n    expose({\n      toggleOption,\n    })\n\n    return () => {\n      return <div class={ns.b('group')}>{children()}</div>\n    }\n  },\n})\n"],"names":["CheckCard","defineComponent","name","components","ZCheckCardItem","props","emits","emit","ns","useNamespace","size","useFormSize","get","_a","option","title","value","changeValue","stateValues","stateValue","hasOption","newOptions","getOptions","newValue","a","b","indexA","opt","indexB","options","loading","_b","slots","_","index","createVNode","CheckCardItem","optionValue","mergeProps","isValid","_c","provide","expose","toggleOption"],"mappings":"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"}