{"version":3,"file":"Group.mjs","sources":["../../../../../../packages/components/checkbox/src/Group.tsx"],"sourcesContent":["// CSSINJS\nimport type { CheckboxOptionType } from './interface';\nimport { computed, defineComponent, provide, ref, watch } from 'vue';\nimport useConfigInject from '../../config-provider/src/hooks/useConfigInject';\nimport { useInjectFormItemContext } from '../../form/src/FormItemContext';\nimport useStyle from '../style';\nimport Checkbox from './Checkbox';\nimport { CheckboxGroupContextKey } from './interface';\n\nimport { checkboxGroupProps } from './props';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ACheckboxGroup',\n  inheritAttrs: false,\n  props: checkboxGroupProps(),\n  // emits: ['change', 'update:value'],\n  setup(props, { slots, attrs, emit, expose }) {\n    const formItemContext = useInjectFormItemContext();\n    const { prefixCls, direction } = useConfigInject('checkbox', props);\n    const groupPrefixCls = computed(() => `${prefixCls.value}-group`);\n\n    // style\n    const [wrapSSR, hashId] = useStyle(groupPrefixCls);\n\n    const mergedValue = ref((props.value === undefined ? props.defaultValue : props.value) || []);\n    watch(\n      () => props.value,\n      () => {\n        mergedValue.value = props.value || [];\n      },\n    );\n    const options = computed(() => {\n      return props.options.map((option) => {\n        if (typeof option === 'string' || typeof option === 'number') {\n          return {\n            label: option,\n            value: option,\n          };\n        }\n        return option;\n      });\n    });\n    const triggerUpdate = ref(Symbol('TriggerUpdateKey'));\n    const registeredValuesMap = ref(new Map<symbol, string>());\n    const cancelValue = (id: symbol) => {\n      registeredValuesMap.value.delete(id);\n      triggerUpdate.value = Symbol('TriggerUpdateCancelKey');\n    };\n    const registerValue = (id: symbol, value: string) => {\n      registeredValuesMap.value.set(id, value);\n      triggerUpdate.value = Symbol('TriggerUpdateRegisterKey');\n    };\n\n    const registeredValues = ref(new Map());\n    watch(triggerUpdate, () => {\n      const valuseMap = new Map();\n      for (const value of registeredValuesMap.value.values())\n        valuseMap.set(value, true);\n\n      registeredValues.value = valuseMap;\n    });\n\n    const toggleOption = (option: CheckboxOptionType) => {\n      const optionIndex = mergedValue.value.indexOf(option.value);\n      const value = [...mergedValue.value];\n      if (optionIndex === -1)\n        value.push(option.value);\n      else\n        value.splice(optionIndex, 1);\n\n      if (props.value === undefined)\n        mergedValue.value = value;\n\n      const val = value\n        .filter(v => registeredValues.value.has(v))\n        .sort((a, b) => {\n          const indexA = options.value.findIndex(opt => opt.value === a);\n          const indexB = options.value.findIndex(opt => opt.value === b);\n          return indexA - indexB;\n        });\n      emit('update:value', val);\n      emit('change', val);\n      formItemContext.onFieldChange();\n    };\n    provide(CheckboxGroupContextKey, {\n      cancelValue,\n      registerValue,\n      toggleOption,\n      mergedValue,\n      name: computed(() => props.name),\n      disabled: computed(() => props.disabled),\n    });\n    expose({\n      mergedValue,\n    });\n    return () => {\n      const { id = formItemContext.id.value } = props;\n      let children = null;\n      if (options.value && options.value.length > 0) {\n        children = options.value.map(option => (\n          <Checkbox\n            prefixCls={prefixCls.value}\n            key={option.value.toString()}\n            disabled={'disabled' in option ? option.disabled : props.disabled}\n            indeterminate={option.indeterminate}\n            value={option.value}\n            checked={mergedValue.value.includes(option.value)}\n            onChange={option.onChange}\n            class={`${groupPrefixCls.value}-item`}\n          >\n            {slots.label !== undefined ? slots.label?.(option) : option.label}\n          </Checkbox>\n        ));\n      }\n      return wrapSSR(\n        <div\n          {...attrs}\n          class={[\n            groupPrefixCls.value,\n            { [`${groupPrefixCls.value}-rtl`]: direction.value === 'rtl' },\n            attrs.class,\n            hashId.value,\n          ]}\n          id={id}\n        >\n          {children || slots.default?.()}\n        </div>,\n      );\n    };\n  },\n});\n"],"names":["compatConfig","MODE","name","inheritAttrs","props","checkboxGroupProps","setup","slots","attrs","emit","expose","formItemContext","useInjectFormItemContext","prefixCls","direction","useConfigInject","groupPrefixCls","computed","value","wrapSSR","hashId","useStyle","mergedValue","ref","undefined","defaultValue","watch","options","map","option","label","triggerUpdate","Symbol","registeredValuesMap","Map","cancelValue","id","delete","registerValue","set","registeredValues","valuseMap","values","toggleOption","optionIndex","indexOf","push","splice","val","filter","v","has","sort","a","b","indexA","findIndex","opt","indexB","onFieldChange","provide","CheckboxGroupContextKey","disabled","children","length","_createVNode","Checkbox","toString","indeterminate","includes","onChange","default","class"],"mappings":"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"}