{"version":3,"file":"Switch.cjs","sources":["../../../../../../packages/components/switch/src/Switch.tsx"],"sourcesContent":["import type { CustomSlotsType } from '@antdv/types';\nimport type { CheckedType } from './interface';\nimport { LoadingOutlined } from '@ant-design/icons-vue';\nimport { devWarning, getPropsSlot, KeyCode, omit } from '@antdv/utils';\nimport {\n  computed,\n  defineComponent,\n  nextTick,\n  onBeforeMount,\n  onMounted,\n  ref,\n  watch,\n} from 'vue';\nimport { useInjectDisabled } from '../../config-provider';\nimport useConfigInject from '../../config-provider/src/hooks/useConfigInject';\nimport { useInjectFormItemContext } from '../../form/src/FormItemContext';\nimport { Wave } from '../../wave';\nimport useStyle from '../style';\nimport { switchProps } from './props';\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ASwitch',\n  __ANT_SWITCH: true,\n  inheritAttrs: false,\n  props: switchProps(),\n  slots: Object as CustomSlotsType<{\n    checkedChildren: any\n    unCheckedChildren: any\n    default: any\n  }>,\n  // emits: ['update:checked', 'mouseup', 'change', 'click', 'keydown', 'blur'],\n  setup(props, { attrs, slots, expose, emit }) {\n    const formItemContext = useInjectFormItemContext();\n    const disabledContext = useInjectDisabled();\n    const mergedDisabled = computed(() => props.disabled ?? disabledContext.value);\n\n    onBeforeMount(() => {\n      devWarning(\n        !('defaultChecked' in attrs),\n        'Switch',\n        '\\'defaultChecked\\' is deprecated, please use \\'v-model:checked\\'',\n      );\n      devWarning(\n        !('value' in attrs),\n        'Switch',\n        '`value` is not validate prop, do you mean `checked`?',\n      );\n    });\n    const checked = ref<string | number | boolean>(\n      props.checked !== undefined ? props.checked : (attrs.defaultChecked as boolean),\n    );\n    const checkedStatus = computed(() => checked.value === props.checkedValue);\n\n    watch(\n      () => props.checked,\n      () => {\n        checked.value = props.checked;\n      },\n    );\n\n    const { prefixCls, direction, size } = useConfigInject('switch', props);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const refSwitchNode = ref();\n    const focus = () => {\n      refSwitchNode.value?.focus();\n    };\n    const blur = () => {\n      refSwitchNode.value?.blur();\n    };\n\n    expose({ focus, blur });\n\n    onMounted(() => {\n      nextTick(() => {\n        if (props.autofocus && !mergedDisabled.value)\n          refSwitchNode.value.focus();\n      });\n    });\n\n    const setChecked = (check: CheckedType, e: MouseEvent | KeyboardEvent) => {\n      if (mergedDisabled.value)\n        return;\n\n      emit('update:checked', check);\n      emit('change', check, e);\n      formItemContext.onFieldChange();\n    };\n\n    const handleBlur = (e: FocusEvent) => {\n      emit('blur', e);\n    };\n\n    const handleClick = (e: MouseEvent) => {\n      focus();\n      const newChecked = checkedStatus.value ? props.unCheckedValue : props.checkedValue;\n      setChecked(newChecked, e);\n      emit('click', newChecked, e);\n    };\n\n    const handleKeyDown = (e: KeyboardEvent) => {\n      if (e.keyCode === KeyCode.LEFT)\n        setChecked(props.unCheckedValue, e);\n      else if (e.keyCode === KeyCode.RIGHT)\n        setChecked(props.checkedValue, e);\n\n      emit('keydown', e);\n    };\n\n    const handleMouseUp = (e: MouseEvent) => {\n      refSwitchNode.value?.blur();\n      emit('mouseup', e);\n    };\n\n    const classNames = computed(() => ({\n      [`${prefixCls.value}-small`]: size.value === 'small',\n      [`${prefixCls.value}-loading`]: props.loading,\n      [`${prefixCls.value}-checked`]: checkedStatus.value,\n      [`${prefixCls.value}-disabled`]: mergedDisabled.value,\n      [prefixCls.value]: true,\n      [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n      [hashId.value]: true,\n    }));\n\n    return () =>\n      wrapSSR(\n        <Wave>\n          <button\n            {...omit(props, [\n              'prefixCls',\n              'checkedChildren',\n              'unCheckedChildren',\n              'checked',\n              'autofocus',\n              'checkedValue',\n              'unCheckedValue',\n              'id',\n              'onChange',\n              'onUpdate:checked',\n            ])}\n            {...attrs}\n            id={props.id ?? formItemContext.id.value}\n            onKeydown={handleKeyDown}\n            onClick={handleClick}\n            onBlur={handleBlur}\n            onMouseup={handleMouseUp}\n            type=\"button\"\n            role=\"switch\"\n            aria-checked={checked.value as any}\n            disabled={mergedDisabled.value || props.loading}\n            class={[attrs.class, classNames.value]}\n            ref={refSwitchNode}\n          >\n            <div class={`${prefixCls.value}-handle`}>\n              {props.loading ? <LoadingOutlined class={`${prefixCls.value}-loading-icon`} /> : null}\n            </div>\n            <span class={`${prefixCls.value}-inner`}>\n              <span class={`${prefixCls.value}-inner-checked`}>\n                {getPropsSlot(slots, props, 'checkedChildren')}\n              </span>\n              <span class={`${prefixCls.value}-inner-unchecked`}>\n                {getPropsSlot(slots, props, 'unCheckedChildren')}\n              </span>\n            </span>\n          </button>\n        </Wave>,\n      );\n  },\n});\n"],"names":["defineComponent","compatConfig","MODE","name","__ANT_SWITCH","inheritAttrs","props","switchProps","slots","Object","setup","attrs","expose","emit","formItemContext","useInjectFormItemContext","disabledContext","useInjectDisabled","mergedDisabled","computed","disabled","value","onBeforeMount","devWarning","checked","ref","undefined","defaultChecked","checkedStatus","checkedValue","watch","prefixCls","direction","size","useConfigInject","wrapSSR","hashId","useStyle","refSwitchNode","focus","blur","onMounted","nextTick","autofocus","setChecked","check","e","onFieldChange","handleBlur","handleClick","newChecked","unCheckedValue","handleKeyDown","keyCode","KeyCode","LEFT","RIGHT","handleMouseUp","classNames","loading","_createVNode","Wave","default","omit","id","class","LoadingOutlined","getPropsSlot"],"mappings":"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"}