{"version":3,"file":"Item.mjs","sources":["../../../src/cascader/components/Item.tsx"],"sourcesContent":["import { defineComponent, PropType, computed, ref } from 'vue';\n\nimport { getFullPathLabel } from '../core/helper';\nimport { getCascaderItemClass, getCascaderItemIconClass } from '../core/className';\n\nimport Checkbox from '../../checkbox/index';\nimport TLoading from '../../loading';\n\nimport { CascaderContextType, TreeNodeValue, TreeNode, TdCascaderProps } from '../interface';\nimport { usePrefixClass, useCommonClassName } from '../../hooks/useConfig';\nimport useRipple from '../../hooks/useRipple';\n\nconst props = {\n  node: {\n    type: Object as PropType<TreeNode>,\n    default() {\n      return {};\n    },\n  },\n  optionChild: {\n    type: [Object, Array] as PropType<TdCascaderProps['option']>,\n  },\n  cascaderContext: {\n    type: Object as PropType<CascaderContextType>,\n  },\n  onChange: Function as PropType<() => void>,\n  onClick: Function as PropType<() => void>,\n  onMouseenter: Function as PropType<() => void>,\n};\n\nexport default defineComponent({\n  name: 'XCascaderItem',\n  props,\n  setup(props) {\n    const liRef = ref<HTMLElement>();\n    useRipple(liRef);\n\n    const COMPONENT_NAME = usePrefixClass('cascader__item');\n    const classPrefix = usePrefixClass();\n    const { STATUS, SIZE } = useCommonClassName();\n\n    const itemClass = computed(() => {\n      return getCascaderItemClass(classPrefix.value, props.node, SIZE.value, STATUS.value, props.cascaderContext);\n    });\n\n    const iconClass = computed(() => {\n      return getCascaderItemIconClass(classPrefix.value, props.node, STATUS.value, props.cascaderContext);\n    });\n\n    function RenderLabelInner(node: TreeNode, cascaderContext: CascaderContextType) {\n      const { inputVal } = cascaderContext;\n      const labelText = inputVal ? getFullPathLabel(node) : node.label;\n      if (inputVal) {\n        const texts = labelText.split(inputVal as string);\n        const doms = [];\n        for (let index = 0; index < texts.length; index++) {\n          doms.push(<span key={index}>{texts[index]}</span>);\n          if (index === texts.length - 1) break;\n          doms.push(\n            <span key={`${index}filter`} class={`${COMPONENT_NAME.value}-label--filter`}>\n              {inputVal}\n            </span>,\n          );\n        }\n        return doms;\n      }\n      return labelText;\n    }\n\n    function RenderLabelContent(node: TreeNode, cascaderContext: CascaderContextType) {\n      const label = RenderLabelInner(node, cascaderContext);\n\n      const labelCont = (\n        <span\n          title={cascaderContext.inputVal ? getFullPathLabel(node) : node.label}\n          class={[`${COMPONENT_NAME.value}-label`, `${COMPONENT_NAME.value}-label--ellipsis`]}\n          role=\"label\"\n        >\n          {label}\n        </span>\n      );\n\n      return labelCont;\n    }\n\n    function RenderCheckBox(node: TreeNode, cascaderContext: CascaderContextType) {\n      const { checkProps, value, max, inputVal } = cascaderContext;\n      const label = RenderLabelInner(node, cascaderContext);\n      return (\n        <Checkbox\n          checked={node.checked}\n          indeterminate={node.indeterminate}\n          disabled={node.isDisabled() || ((value as TreeNodeValue[]).length >= max && max !== 0)}\n          // node.value maybe string or number\n          name={String(node.value)}\n          stopLabelTrigger={!!node.children}\n          title={inputVal ? getFullPathLabel(node) : node.label}\n          onChange={() => {\n            props.onChange();\n          }}\n          {...checkProps}\n        >\n          {label}\n        </Checkbox>\n      );\n    }\n\n    return () => {\n      const { cascaderContext, node, optionChild } = props;\n      return (\n        <li\n          ref={liRef}\n          class={itemClass.value}\n          onClick={(e: Event) => {\n            e.stopPropagation();\n            props.onClick();\n          }}\n          onMouseenter={(e: Event) => {\n            e.stopPropagation();\n            props.onMouseenter();\n          }}\n        >\n          {optionChild ||\n            (cascaderContext.multiple\n              ? RenderCheckBox(node, cascaderContext)\n              : RenderLabelContent(node, cascaderContext))}\n          {node.children &&\n            (node.loading ? (\n              <TLoading class={iconClass.value} size=\"small\" />\n            ) : (\n              <icon-ri-arrow-right-s-line class={iconClass.value} />\n            ))}\n        </li>\n      );\n    };\n  },\n});\n"],"names":["_isVNode","node","type","optionChild","cascaderContext","onChange","onClick","onMouseenter","name","props","_createVNode","_mergeProps","TLoading"],"mappings":"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"}