{"version":3,"file":"option.mjs","sources":["../../../../../../packages/components/cascader/src/option.tsx"],"sourcesContent":["import { computed, defineComponent, ref, inject } from 'vue'\nimport type { PropType, VNode, VNodeChild } from 'vue'\nimport { getNamespace } from '../../../utils/global-config'\nimport { BnIconLoading, BnIconCaret } from '../../icon'\nimport Checkbox from '../../checkbox/src/checkbox.vue'\n\nimport { isFunction } from '../../../utils/is'\nimport { type CascaderContext, cascaderInjectionKey } from './context'\n\nimport { getCheckedStatus } from './utils'\nimport type { CascaderNode } from './type'\n\nexport default defineComponent({\n  name: 'CascaderOption',\n  props: {\n    node: {\n      type: Object as PropType<CascaderNode>,\n      required: true\n    },\n    active: Boolean,\n    multiple: Boolean,\n    checkStrictly: Boolean\n  },\n  setup(props) {\n    const ns = getNamespace('cascader-panel')\n\n    const cls = computed(() => [\n      `${ns}__option`,\n      props.active && 'is-active',\n      props.node.disabled && 'is-disabled'\n    ])\n    const cascaderContext = inject<Partial<CascaderContext>>(cascaderInjectionKey, {})\n\n    const isLoading = ref(false)\n\n    const events = computed(() => {\n      const _events: Record<string, any> = {}\n      if (!props.node.disabled) {\n        _events.onMouseenter = []\n        _events.onMouseleave = []\n        _events.onClick = []\n\n        _events.onMouseenter.push(() => {\n          cascaderContext.setSelectedPath?.(props.node.key)\n        })\n\n        if (!props.multiple) {\n          if (!props.checkStrictly && props.node.isLeaf) {\n            _events.onClick.push(() => {\n              cascaderContext.emitPath?.(props.node)\n            })\n          }\n          if (props.checkStrictly) {\n            _events.onClick.push(() => {\n              cascaderContext.emitPath?.(props.node)\n            })\n          }\n        }\n\n        if (props.multiple) {\n          _events.onClick.push(() => {\n            cascaderContext.emitPath?.(props.node, !checkedStatus.value.checked)\n          })\n        }\n      }\n      return _events\n    })\n\n    const handleCheckedChange = () => {\n      cascaderContext.emitPath?.(props.node, !checkedStatus.value.checked)\n    }\n\n    const renderContent = () => {\n      let render: VNodeChild | VNode | string | undefined = props.node.label\n\n      if (isFunction(props.node.render)) {\n        render = props.node.render()\n      }\n\n      const defaultSlot = cascaderContext?.slots?.['default']\n      if (isFunction(defaultSlot)) {\n        render = defaultSlot({ node: props.node, data: props.node.raw })\n      }\n\n      return <span>{render}</span>\n    }\n\n    const renderContentRightIcon = () => {\n      if (isLoading.value) {\n        return <BnIconLoading />\n      }\n      if (!props.node.isLeaf) {\n        return <BnIconCaret rotate={-90} />\n      }\n      return null\n    }\n\n    const checkedStatus = computed(() => {\n      if (props.checkStrictly) {\n        return {\n          checked: cascaderContext.nodeKeys?.includes(props.node.key),\n          indeterminate: false\n        }\n      }\n      return getCheckedStatus(props.node, cascaderContext.nodeKeys)\n    })\n\n    const renderOps = () => {\n      if (props.multiple) {\n        return (\n          <Checkbox\n            modelValue={checkedStatus.value.checked}\n            indeterminate={checkedStatus.value.indeterminate}\n            disabled={props.node.disabled}\n            validateEvent={false}\n            onChange={handleCheckedChange}\n            // @ts-ignore: click\n            onClick={(ev: Event) => ev.stopPropagation()}\n          />\n        )\n      }\n    }\n\n    return () => {\n      return (\n        <li class={cls.value} {...events.value}>\n          {renderOps()}\n\n          <div class={[`${ns}__option-label`]}>\n            {renderContent()}\n            {renderContentRightIcon()}\n          </div>\n        </li>\n      )\n    }\n  }\n})\n"],"names":["name","props","node","type","Object","required","active","Boolean","multiple","checkStrictly","setup","ns","getNamespace","cls","computed","disabled","cascaderContext","inject","cascaderInjectionKey","isLoading","ref","events","_events","onMouseenter","onMouseleave","onClick","push","setSelectedPath","key","isLeaf","emitPath","checkedStatus","value","checked","handleCheckedChange","renderContent","render","label","isFunction","defaultSlot","slots","data","raw","_createVNode","renderContentRightIcon","BnIconLoading","BnIconCaret","nodeKeys","includes","indeterminate","getCheckedStatus","renderOps","Checkbox","ev","stopPropagation","_mergeProps"],"mappings":"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"}