{"version":3,"file":"checker2.mjs","sources":["../../../../../../../packages/components/checkbox/src/checker.tsx"],"sourcesContent":["import { Component, type PropType, computed, defineComponent, ref } from 'vue'\nimport { addUnit, buildProps, extend, truthProp } from '@xzx-design/utils'\nimport { Icon } from '@xzx-design/components'\nimport { CheckSmall } from '@xzx-design/icons-vue'\nimport { checkerProps } from './checker'\n\nimport type { RadioShape } from '@xzx-design/components/radio'\nimport type { CheckerParent, CheckerShape } from './types'\nimport type { UseNamespaceReturn } from '@xzx-design/hooks'\n\nexport default defineComponent({\n  props: extend(\n    {},\n    checkerProps,\n    buildProps({\n      namespace: {\n        type: Object as PropType<UseNamespaceReturn | undefined>,\n      },\n      role: String,\n      shape: {\n        type: String as PropType<CheckerShape | RadioShape>,\n      },\n      parent: {\n        type: Object as PropType<CheckerParent | null>,\n      },\n      checked: Boolean,\n      bindGroup: truthProp,\n      indeterminate: {\n        type: Boolean as PropType<boolean | null>,\n        default: null,\n      },\n    })\n  ),\n  emits: ['click', 'toggle'],\n  setup(props, { emit, slots }) {\n    const iconRef = ref<HTMLElement>()\n\n    const getParentProp = <T extends keyof CheckerParent['props']>(name: T) => {\n      if (props.parent && props.bindGroup) {\n        return props.parent.props[name]\n      }\n    }\n\n    const disabled = computed(() => {\n      if (props.parent && props.bindGroup) {\n        const disabled = getParentProp('disabled') || props.disabled\n\n        if (props.role === 'checkbox') {\n          const checkedCount = (getParentProp('modelValue') as unknown[]).length\n          const max = getParentProp('max')\n          const overlimit = max && checkedCount >= +max\n\n          return disabled || (overlimit && !props.checked)\n        }\n\n        return disabled\n      }\n\n      return props.disabled\n    })\n\n    const direction = computed(() => getParentProp('direction'))\n\n    // eslint-disable-next-line vue/return-in-computed-property\n    const iconStyle = computed(() => {\n      const checkedColor = props.checkedColor || getParentProp('checkedColor')\n\n      if (checkedColor && props.checked && !disabled.value) {\n        return {\n          borderColor: checkedColor,\n          backgroundColor: checkedColor,\n        }\n      }\n    })\n\n    const shape = computed(() => {\n      return props.shape || getParentProp('shape') || 'round'\n    })\n\n    const onClick = (event: MouseEvent) => {\n      const { target } = event\n      const icon = iconRef.value\n      const iconClicked = icon === target || icon?.contains(target as Node)\n\n      if (!disabled.value && (iconClicked || !props.labelDisabled)) {\n        emit('toggle')\n      }\n      emit('click', event)\n    }\n\n    const renderIcon = () => {\n      const { namespace, checked, indeterminate } = props\n\n      const { e, em } = namespace\n\n      const iconSize = props.iconSize || getParentProp('iconSize')\n\n      return (\n        <div\n          ref={iconRef}\n          class={[\n            e('icon'),\n            em('icon', shape.value),\n            disabled.value && em('icon', 'disabled'),\n            checked && em('icon', 'checked'),\n            indeterminate && em('icon', 'indeterminate'),\n          ]}\n          style={\n            shape.value !== 'dot'\n              ? { fontSize: addUnit(iconSize) }\n              : {\n                  width: addUnit(iconSize),\n                  height: addUnit(iconSize),\n                  borderColor: iconStyle.value?.borderColor,\n                }\n          }\n        >\n          {slots.icon ? (\n            slots.icon({ checked, disabled: disabled.value })\n          ) : shape.value !== 'dot' ? (\n            <Icon style={iconStyle.value}>\n              {indeterminate ? <CheckSmall /> : <CheckSmall />}\n            </Icon>\n          ) : (\n            <div\n              class={e('icon--dot__icon')}\n              style={{ backgroundColor: iconStyle.value?.backgroundColor }}\n            ></div>\n          )}\n        </div>\n      )\n    }\n\n    const renderLabel = () => {\n      const { checked, namespace, labelPosition } = props\n\n      const { e, em } = namespace\n\n      if (slots.default) {\n        return (\n          <span\n            class={[\n              e('label'),\n              em('label', labelPosition),\n              disabled.value && em('label', 'disabled'),\n            ]}\n          >\n            {slots.default({ checked, disabled: disabled.value })}\n          </span>\n        )\n      }\n    }\n\n    return () => {\n      const nodes: (JSX.Element | undefined)[] =\n        props.labelPosition === 'left'\n          ? [renderLabel(), renderIcon()]\n          : [renderIcon(), renderLabel()]\n\n      const { b, m } = props.namespace\n\n      return (\n        <div\n          role={props.role}\n          class={[\n            b(),\n            {\n              [m('disabled')]: disabled.value,\n              [m('label-disabled')]: props.labelDisabled,\n            },\n            m(direction.value),\n          ]}\n          tabindex={disabled.value ? undefined : 0}\n          aria-checked={props.checked}\n          onClick={onClick}\n        >\n          {nodes}\n        </div>\n      )\n    }\n  },\n})\n"],"names":["defineComponent","props","extend","checkerProps","buildProps","namespace","type","Object","role","String","shape","parent","checked","Boolean","bindGroup","truthProp","indeterminate","default","emits","setup","emit","slots","iconRef","ref","getParentProp","name","disabled","computed","checkedCount","length","max","overlimit","direction","iconStyle","checkedColor","value","borderColor","backgroundColor","onClick","event","target","icon","iconClicked","contains","labelDisabled","renderIcon","e","em","iconSize","_createVNode","fontSize","addUnit","width","height","Icon","CheckSmall","renderLabel","labelPosition","nodes","b","m","undefined"],"mappings":"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"}