{"version":3,"file":"Panel.mjs","sources":["../../../src/cascader/components/Panel.tsx"],"sourcesContent":["import { defineComponent, PropType, computed, h } from 'vue';\n\nimport Item from './Item';\nimport { TreeNode, CascaderContextType } from '../interface';\nimport CascaderProps from '../props';\nimport { usePrefixClass, useConfig } from '../../hooks/useConfig';\nimport { useTNodeDefault } from '../../hooks/tnode';\nimport { getDefaultNode } from '../../utils/render-tnode';\nimport { getPanels } from '../core/helper';\nimport { expendClickEffect, valueChangeEffect } from '../core/effect';\n\nexport default defineComponent({\n  name: 'XCascaderSubPanel',\n  props: {\n    option: CascaderProps.option,\n    empty: CascaderProps.empty,\n    trigger: CascaderProps.trigger,\n    onChange: CascaderProps.onChange,\n    loading: CascaderProps.loading,\n    loadingText: CascaderProps.loadingText,\n    cascaderContext: {\n      type: Object as PropType<CascaderContextType>,\n    },\n  },\n\n  setup(props) {\n    const renderTNodeJSXDefault = useTNodeDefault();\n    const COMPONENT_NAME = usePrefixClass('cascader');\n    const { globalConfig } = useConfig('cascader');\n\n    const panels = computed(() => getPanels(props.cascaderContext.treeNodes));\n\n    const handleExpand = (node: TreeNode, trigger: 'hover' | 'click') => {\n      const { trigger: propsTrigger, cascaderContext } = props;\n      expendClickEffect(propsTrigger, trigger, node, cascaderContext);\n    };\n\n    const renderItem = (node: TreeNode, index: number) => {\n      const optionChild = node.data.content\n        ? getDefaultNode(node.data.content(h))\n        : renderTNodeJSXDefault('option', {\n            params: { item: node.data, index },\n          });\n      return (\n        <Item\n          key={node.value}\n          node={node}\n          optionChild={optionChild}\n          cascaderContext={props.cascaderContext}\n          onClick={() => {\n            handleExpand(node, 'click');\n          }}\n          onMouseenter={() => {\n            handleExpand(node, 'hover');\n          }}\n          onChange={() => {\n            valueChangeEffect(node, props.cascaderContext);\n          }}\n        />\n      );\n    };\n\n    const renderList = (treeNodes: TreeNode[], isFilter = false, segment = true, index = 1) => (\n      <ul\n        class={[\n          `${COMPONENT_NAME.value}__menu`,\n          'narrow-scrollbar',\n          {\n            [`${COMPONENT_NAME.value}__menu--segment`]: segment,\n            [`${COMPONENT_NAME.value}__menu--filter`]: isFilter,\n          },\n        ]}\n        key={`${COMPONENT_NAME}__menu${index}`}\n      >\n        {treeNodes.map((node: TreeNode) => renderItem(node, index))}\n      </ul>\n    );\n\n    const renderPanels = () => {\n      const { inputVal, treeNodes } = props.cascaderContext;\n      return inputVal\n        ? renderList(treeNodes, true)\n        : panels.value.map((treeNodes, index: number) =>\n            renderList(treeNodes, false, index !== panels.value.length - 1, index),\n          );\n    };\n\n    return () => {\n      let content;\n      if (props.loading) {\n        content = renderTNodeJSXDefault(\n          'loadingText',\n          <div class={`${COMPONENT_NAME.value}__panel--empty`}>{globalConfig.value.loadingText}</div>,\n        );\n      } else {\n        content = panels.value.length\n          ? renderPanels()\n          : renderTNodeJSXDefault(\n              'empty',\n              <div class={`${COMPONENT_NAME.value}__panel--empty`}>{globalConfig.value.empty}</div>,\n            );\n      }\n      return (\n        <div\n          class={[\n            `${COMPONENT_NAME.value}__panel`,\n            { [`${COMPONENT_NAME.value}--normal`]: panels.value.length && !props.loading },\n          ]}\n        >\n          {content}\n        </div>\n      );\n    };\n  },\n});\n"],"names":["name","props","cascaderContext","type","params","index","handleExpand","valueChangeEffect","_createVNode","content"],"mappings":"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"}