{"version":3,"file":"checkbox2.mjs","sources":["../../../../../../../packages/components/checkbox/src/checkbox.tsx"],"sourcesContent":["import { computed, defineComponent, watch } from 'vue'\n\n// Utils\nimport { extend, pick } from '@xzx-design/utils'\nimport {\n  useCustomFieldValue,\n  useExpose,\n  useNamespace,\n  useParent,\n} from '@xzx-design/hooks'\nimport { CHECKBOX_GROUP_KEY } from './types'\nimport { checkboxProps } from './checkbox'\n\n// Components\nimport Checker from './checker.tsx'\n\n// Types\nimport type { CheckboxExpose } from './types'\n\nconst name = 'XzxCheckbox'\n\nexport default defineComponent({\n  name,\n  __name: name,\n  props: checkboxProps,\n  emits: ['change', 'update:modelValue'],\n  setup(props, { emit, slots }) {\n    const { parent } = useParent(CHECKBOX_GROUP_KEY)\n    const ns = useNamespace('checkbox')\n\n    const setParentValue = (checked: boolean) => {\n      const { name } = props\n      const { max, modelValue } = parent!.props\n      const value = modelValue.slice()\n\n      if (checked) {\n        const overlimit = max && value.length >= +max\n\n        if (!overlimit && !value.includes(name)) {\n          value.push(name)\n\n          if (props.bindGroup) {\n            parent!.updateValue(value)\n          }\n        }\n      } else {\n        const index = value.indexOf(name)\n\n        if (index !== -1) {\n          value.splice(index, 1)\n\n          if (props.bindGroup) {\n            parent!.updateValue(value)\n          }\n        }\n      }\n    }\n\n    const checked = computed(() => {\n      if (parent && props.bindGroup) {\n        return parent.props.modelValue?.indexOf(props.name) !== -1\n      }\n      return !!props.modelValue\n    })\n\n    const toggle = (newValue = !checked.value) => {\n      if (parent && props.bindGroup) {\n        setParentValue(newValue)\n      } else {\n        emit('update:modelValue', newValue)\n      }\n\n      if (props.indeterminate !== null) emit('change', newValue)\n    }\n\n    watch(\n      () => props.modelValue,\n      (value) => {\n        if (props.indeterminate === null) emit('change', value)\n      }\n    )\n\n    useExpose<CheckboxExpose>({ toggle, props, checked })\n    useCustomFieldValue(() => props.modelValue)\n\n    return () => (\n      <Checker\n        v-slots={pick(slots, ['default', 'icon'])}\n        namespace={ns}\n        role=\"checkbox\"\n        parent={parent}\n        checked={checked.value}\n        onToggle={toggle}\n        {...props}\n      />\n    )\n  },\n})\n"],"names":["name","defineComponent","__name","props","checkboxProps","emits","setup","emit","slots","parent","useParent","CHECKBOX_GROUP_KEY","ns","useNamespace","setParentValue","checked","max","modelValue","value","slice","overlimit","length","includes","push","bindGroup","updateValue","index","indexOf","splice","computed","toggle","newValue","indeterminate","watch","useExpose","useCustomFieldValue","_createVNode","Checker","_mergeProps","pick"],"mappings":"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"}