{"version":3,"file":"node2.mjs","sources":["../../../../../../../packages/components/cascader-panel/src/node.vue"],"sourcesContent":["<template>\n  <li\n    :id=\"`${menuId}-${node.uid}`\"\n    role=\"menuitem\"\n    :aria-haspopup=\"!isLeaf\"\n    :aria-owns=\"isLeaf ? undefined : menuId\"\n    :aria-expanded=\"inExpandingPath\"\n    :tabindex=\"expandable ? -1 : undefined\"\n    :class=\"[\n      ns.b(),\n      ns.is('selectable', checkStrictly),\n      ns.is('active', node.checked),\n      ns.is('disabled', !expandable),\n      inExpandingPath && 'in-active-path',\n      inCheckedPath && 'in-checked-path',\n    ]\"\n    @mouseenter=\"handleHoverExpand\"\n    @focus=\"handleHoverExpand\"\n    @click=\"handleClick\"\n  >\n    <!-- prefix -->\n    <el-checkbox\n      v-if=\"multiple && showPrefix\"\n      :model-value=\"node.checked\"\n      :indeterminate=\"node.indeterminate\"\n      :disabled=\"isDisabled\"\n      @click.stop\n      @update:model-value=\"handleSelectCheck\"\n    />\n    <el-radio\n      v-else-if=\"checkStrictly && showPrefix\"\n      :model-value=\"checkedNodeId\"\n      :label=\"node.uid\"\n      :disabled=\"isDisabled\"\n      @update:model-value=\"handleSelectCheck\"\n      @click.stop\n    >\n      <!--\n        Add an empty element to avoid render label,\n        do not use empty fragment here for https://github.com/vuejs/vue-next/pull/2485\n      -->\n      <span />\n    </el-radio>\n    <el-icon v-else-if=\"isLeaf && node.checked\" :class=\"ns.e('prefix')\">\n      <check />\n    </el-icon>\n\n    <!-- content -->\n    <node-content :node=\"node\" />\n    <!-- postfix -->\n    <template v-if=\"!isLeaf\">\n      <el-icon v-if=\"node.loading\" :class=\"[ns.is('loading'), ns.e('postfix')]\">\n        <loading />\n      </el-icon>\n      <el-icon v-else :class=\"['arrow-right', ns.e('postfix')]\">\n        <arrow-right />\n      </el-icon>\n    </template>\n  </li>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject } from 'vue'\nimport ElCheckbox from '@hd-front-end/components/checkbox'\nimport ElRadio from '@hd-front-end/components/radio'\nimport ElIcon from '@hd-front-end/components/icon'\nimport { useNamespace } from '@hd-front-end/hooks'\nimport { ArrowRight, Check, Loading } from '@element-plus/icons-vue'\nimport NodeContent from './node-content'\nimport { CASCADER_PANEL_INJECTION_KEY } from './types'\n\nimport type { CascaderNode } from './types'\nimport type { PropType } from 'vue'\nimport type { CheckboxValueType } from '@hd-front-end/components/checkbox'\n\ndefineOptions({\n  name: 'ElCascaderNode',\n})\n\nconst props = defineProps({\n  node: {\n    type: Object as PropType<CascaderNode>,\n    required: true,\n  },\n  menuId: String,\n})\nconst emit = defineEmits(['expand'])\n\nconst panel = inject(CASCADER_PANEL_INJECTION_KEY)!\n\nconst ns = useNamespace('cascader-node')\nconst isHoverMenu = computed(() => panel.isHoverMenu)\nconst multiple = computed(() => panel.config.multiple)\nconst checkStrictly = computed(() => panel.config.checkStrictly)\nconst showPrefix = computed(() => panel.config.showPrefix)\nconst checkedNodeId = computed(() => panel.checkedNodes[0]?.uid)\nconst isDisabled = computed(() => props.node.isDisabled)\nconst isLeaf = computed(() => props.node.isLeaf)\nconst expandable = computed(\n  () => (checkStrictly.value && !isLeaf.value) || !isDisabled.value\n)\nconst inExpandingPath = computed(() => isInPath(panel.expandingNode!))\n\n// only useful in check-strictly mode\nconst inCheckedPath = computed(\n  () => checkStrictly.value && panel.checkedNodes.some(isInPath)\n)\n\nconst isInPath = (node: CascaderNode) => {\n  const { level, uid } = props.node\n  return node?.pathNodes[level - 1]?.uid === uid\n}\n\nconst doExpand = () => {\n  if (inExpandingPath.value) return\n  panel.expandNode(props.node)\n}\n\nconst doCheck = (checked: boolean) => {\n  const { node } = props\n  if (checked === node.checked) return\n  panel.handleCheckChange(node, checked)\n}\n\nconst doLoad = () => {\n  panel.lazyLoad(props.node, () => {\n    if (!isLeaf.value) doExpand()\n  })\n}\n\nconst handleHoverExpand = (e: Event) => {\n  if (!isHoverMenu.value) return\n  handleExpand()\n  !isLeaf.value && emit('expand', e)\n}\n\nconst handleExpand = () => {\n  const { node } = props\n  // do not exclude leaf node because the menus expanded might have to reset\n  if (!expandable.value || node.loading) return\n  node.loaded ? doExpand() : doLoad()\n}\n\nconst handleClick = () => {\n  if (\n    isLeaf.value &&\n    !isDisabled.value &&\n    !checkStrictly.value &&\n    !multiple.value\n  ) {\n    handleCheck(true)\n  } else if (\n    ((panel.config.checkOnClickNode &&\n      (multiple.value || checkStrictly.value)) ||\n      (isLeaf.value && panel.config.checkOnClickLeaf)) &&\n    !isDisabled.value\n  ) {\n    handleSelectCheck(!props.node.checked)\n  } else if (!isHoverMenu.value) {\n    handleExpand()\n  }\n}\n\nconst handleSelectCheck = (checked: CheckboxValueType | undefined) => {\n  if (checkStrictly.value) {\n    doCheck(checked as boolean)\n    if (props.node.loaded) {\n      doExpand()\n    }\n  } else {\n    handleCheck(checked as boolean)\n  }\n}\n\nconst handleCheck = (checked: boolean) => {\n  if (!props.node.loaded) {\n    doLoad()\n  } else {\n    doCheck(checked)\n    !checkStrictly.value && doExpand()\n  }\n}\n</script>\n"],"names":["_createElementBlock","_normalizeClass","_unref","_createCommentVNode","_createBlock","_withModifiers","_createElementVNode","_createVNode","_openBlock","_Fragment"],"mappings":"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"}