{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/cascader-panel/src/index.vue"],"sourcesContent":["<template>\n  <div\n    :class=\"[ns.b('panel'), ns.is('bordered', border)]\"\n    @keydown=\"handleKeyDown\"\n  >\n    <el-cascader-menu\n      v-for=\"(menu, index) in menus\"\n      :key=\"index\"\n      :ref=\"(item) => (menuList[index] = item)\"\n      :index=\"index\"\n      :nodes=\"[...menu]\"\n    >\n      <template #empty>\n        <slot name=\"empty\" />\n      </template>\n    </el-cascader-menu>\n  </div>\n</template>\n\n<script lang=\"ts\">\n// @ts-nocheck\nimport {\n  computed,\n  defineComponent,\n  nextTick,\n  onBeforeUpdate,\n  onMounted,\n  provide,\n  reactive,\n  ref,\n  watch,\n} from 'vue'\nimport { cloneDeep, flattenDeep, isEqual } from 'lodash-unified'\nimport {\n  castArray,\n  focusNode,\n  getSibling,\n  isClient,\n  isEmpty,\n  scrollIntoView,\n  unique,\n} from '@element-plus/utils'\nimport {\n  CHANGE_EVENT,\n  EVENT_CODE,\n  UPDATE_MODEL_EVENT,\n} from '@element-plus/constants'\nimport { useNamespace } from '@element-plus/hooks'\n\nimport ElCascaderMenu from './menu.vue'\nimport Store from './store'\nimport Node from './node'\nimport { CommonProps, useCascaderConfig } from './config'\nimport {\n  checkNode,\n  getMenuIndex,\n  normalizeCheckStrictly,\n  sortByOriginalOrder,\n} from './utils'\nimport { CASCADER_PANEL_INJECTION_KEY } from './types'\n\nimport type { PropType } from 'vue'\nimport type { Nullable } from '@element-plus/utils'\nimport type {\n  default as CascaderNode,\n  CascaderNodeValue,\n  CascaderOption,\n  CascaderValue,\n  RenderLabel,\n} from './node'\n\nimport type {\n  CascaderPanelFilterFunction,\n  ElCascaderPanelContext,\n} from './types'\n\nexport default defineComponent({\n  name: 'ElCascaderPanel',\n\n  components: {\n    ElCascaderMenu,\n  },\n\n  props: {\n    ...CommonProps,\n    filterNodeMethod: Function as PropType<CascaderPanelFilterFunction>,\n    border: {\n      type: Boolean,\n      default: true,\n    },\n    renderLabel: Function as PropType<RenderLabel>,\n  },\n\n  emits: [\n    UPDATE_MODEL_EVENT,\n    CHANGE_EVENT,\n    'close',\n    'expand-change',\n    'current-change',\n  ],\n\n  setup(props, { emit, slots }) {\n    // for interrupt sync check status in lazy mode\n    let manualChecked = false\n\n    const ns = useNamespace('cascader')\n    const config = useCascaderConfig(props)\n\n    const store = ref<Store>()\n    const initialLoaded = ref(true)\n    const menuList = ref<any[]>([])\n    const checkedValue = ref<Nullable<CascaderValue>>(null)\n    const menus = ref<CascaderNode[][]>([])\n    const expandingNode = ref<Nullable<CascaderNode>>(null)\n    const checkedNodes = ref<CascaderNode[]>([])\n\n    const isHoverMenu = computed(() => config.value.expandTrigger === 'hover')\n    const renderLabelFn = computed(() => props.renderLabel || slots.default)\n\n    const initStore = () => {\n      const { options } = props\n      const cfg = config.value\n\n      manualChecked = false\n      store.value = new Store(options, cfg, ctx, props.filterNodeMethod)\n      menus.value = [store.value.getNodes()]\n\n      if (cfg.lazy && isEmpty(props.options)) {\n        initialLoaded.value = false\n        lazyLoad(undefined, (list) => {\n          if (list) {\n            store.value = new Store(list, cfg, ctx, props.filterNodeMethod)\n            menus.value = [store.value.getNodes()]\n          }\n          initialLoaded.value = true\n          syncCheckedValue(false, true)\n        })\n      } else {\n        syncCheckedValue(false, true)\n      }\n    }\n\n    const lazyLoad: ElCascaderPanelContext['lazyLoad'] = (node, cb) => {\n      const cfg = config.value\n      node! = node || new Node({}, cfg, undefined, true)\n      node.loading = true\n\n      const resolve = (dataList: CascaderOption[]) => {\n        const _node = node as Node\n        const parent = _node.root ? null : _node\n        dataList && store.value?.appendNodes(dataList, parent as any)\n        _node.loading = false\n        _node.loaded = true\n        _node.childrenData = _node.childrenData || []\n        cb && cb(dataList)\n      }\n\n      cfg.lazyLoad(node, resolve as any)\n    }\n\n    const expandNode: ElCascaderPanelContext['expandNode'] = (node, silent) => {\n      const { level } = node\n      const newMenus = menus.value.slice(0, level)\n      let newExpandingNode: Nullable<CascaderNode>\n\n      if (node.isLeaf) {\n        newExpandingNode = node.pathNodes[level - 2]\n      } else {\n        newExpandingNode = node\n        newMenus.push(node.children)\n      }\n\n      if (expandingNode.value?.uid !== newExpandingNode?.uid) {\n        expandingNode.value = node\n        menus.value = newMenus\n        !silent && emit('expand-change', node?.pathValues || [])\n      }\n    }\n\n    const handleCheckChange: ElCascaderPanelContext['handleCheckChange'] = (\n      node,\n      checked,\n      emitClose = true\n    ) => {\n      const { checkStrictly, multiple } = config.value\n      const oldNode = checkedNodes.value[0]\n      manualChecked = true\n\n      !multiple && oldNode?.doCheck(false)\n      node.doCheck(checked)\n      calculateCheckedValue()\n      emitClose &&\n        !multiple &&\n        !normalizeCheckStrictly(checkStrictly) &&\n        emit('close')\n      !emitClose &&\n        !multiple &&\n        !normalizeCheckStrictly(checkStrictly) &&\n        expandParentNode(node)\n\n      emit('current-change', node, checked)\n    }\n\n    const setCheckedNodes = (nodes: CascaderNode[], checked: boolean) => {\n      nodes.forEach((node) => {\n        node.doCheck(checked)\n      })\n      calculateCheckedValue()\n    }\n\n    const expandParentNode = (node) => {\n      if (!node) return\n      node = node.parent\n      expandParentNode(node)\n      node && expandNode(node)\n    }\n\n    const getFlattedNodes = (leafOnly: boolean) => {\n      return store.value?.getFlattedNodes(leafOnly)\n    }\n\n    const getCheckedNodes = (leafOnly: boolean) => {\n      return getFlattedNodes(leafOnly)?.filter((node) => node.checked !== false)\n    }\n\n    const clearCheckedNodes = () => {\n      checkedNodes.value.forEach((node) => node.doCheck(false))\n      calculateCheckedValue()\n      menus.value = menus.value.slice(0, 1)\n      expandingNode.value = null\n      emit('expand-change', [])\n    }\n\n    const calculateCheckedValue = () => {\n      const { checkStrictly, multiple } = config.value\n      const oldNodes = checkedNodes.value\n      const newNodes = getCheckedNodes(!normalizeCheckStrictly(checkStrictly))!\n      // ensure the original order\n      const nodes = sortByOriginalOrder(oldNodes, newNodes)\n      const values = nodes.map((node) => node.valueByOption)\n      checkedNodes.value = nodes\n      checkedValue.value = multiple ? values : values[0] ?? null\n    }\n\n    const syncCheckedValue = (loaded = false, forced = false) => {\n      const { modelValue } = props\n      const { lazy, multiple, checkStrictly } = config.value\n      const leafOnly = !normalizeCheckStrictly(checkStrictly)\n\n      if (\n        !initialLoaded.value ||\n        manualChecked ||\n        (!forced && isEqual(modelValue, checkedValue.value))\n      )\n        return\n\n      if (lazy && !loaded) {\n        const values: CascaderNodeValue[] = unique(\n          flattenDeep(castArray(modelValue))\n        )\n        const nodes = values\n          .map((val) => store.value?.getNodeByValue(val))\n          .filter((node) => !!node && !node.loaded && !node.loading) as Node[]\n\n        if (nodes.length) {\n          nodes.forEach((node) => {\n            lazyLoad(node, () => syncCheckedValue(false, forced))\n          })\n        } else {\n          syncCheckedValue(true, forced)\n        }\n      } else {\n        const values = multiple ? castArray(modelValue) : [modelValue]\n        const nodes = unique(\n          values.map((val) => store.value?.getNodeByValue(val, leafOnly))\n        ) as Node[]\n        syncMenuState(nodes, forced)\n        checkedValue.value = cloneDeep(modelValue)\n      }\n    }\n\n    const syncMenuState = (\n      newCheckedNodes: CascaderNode[],\n      reserveExpandingState = true\n    ) => {\n      const { checkStrictly } = config.value\n      const oldNodes = checkedNodes.value\n      const newNodes = newCheckedNodes.filter(\n        (node) =>\n          !!node && (normalizeCheckStrictly(checkStrictly) || node.isLeaf)\n      )\n      const oldExpandingNode = store.value?.getSameNode(expandingNode.value!)\n      const newExpandingNode =\n        (reserveExpandingState && oldExpandingNode) || newNodes[0]\n\n      if (newExpandingNode) {\n        newExpandingNode.pathNodes.forEach((node) => expandNode(node, true))\n      } else {\n        expandingNode.value = null\n      }\n\n      oldNodes.forEach((node) => node.doCheck(false))\n      reactive(newNodes).forEach((node) => node.doCheck(true))\n      checkedNodes.value = newNodes\n      nextTick(scrollToExpandingNode)\n    }\n\n    const scrollToExpandingNode = () => {\n      if (!isClient) return\n\n      menuList.value.forEach((menu) => {\n        const menuElement = menu?.$el\n        if (menuElement) {\n          const container = menuElement.querySelector(\n            `.${ns.namespace.value}-scrollbar__wrap`\n          )\n          const activeNode =\n            menuElement.querySelector(`.${ns.b('node')}.${ns.is('active')}`) ||\n            menuElement.querySelector(`.${ns.b('node')}.in-active-path`)\n          scrollIntoView(container, activeNode)\n        }\n      })\n    }\n\n    const handleKeyDown = (e: KeyboardEvent) => {\n      const target = e.target as HTMLElement\n      const { code } = e\n\n      switch (code) {\n        case EVENT_CODE.up:\n        case EVENT_CODE.down: {\n          e.preventDefault()\n          const distance = code === EVENT_CODE.up ? -1 : 1\n          focusNode(\n            getSibling(target, distance, `.${ns.b('node')}[tabindex=\"-1\"]`)\n          )\n          break\n        }\n        case EVENT_CODE.left: {\n          e.preventDefault()\n          const preMenu = menuList.value[getMenuIndex(target) - 1]\n          const expandedNode = preMenu?.$el.querySelector(\n            `.${ns.b('node')}[aria-expanded=\"true\"]`\n          )\n          focusNode(expandedNode)\n          break\n        }\n        case EVENT_CODE.right: {\n          e.preventDefault()\n          const nextMenu = menuList.value[getMenuIndex(target) + 1]\n          const firstNode = nextMenu?.$el.querySelector(\n            `.${ns.b('node')}[tabindex=\"-1\"]`\n          )\n          focusNode(firstNode)\n          break\n        }\n        case EVENT_CODE.enter:\n        case EVENT_CODE.numpadEnter:\n          checkNode(target)\n          break\n      }\n    }\n\n    const ctx = {\n      config,\n      expandingNode,\n      checkedNodes,\n      isHoverMenu,\n      initialLoaded,\n      renderLabelFn,\n      lazyLoad,\n      expandNode,\n      handleCheckChange,\n    }\n\n    provide(CASCADER_PANEL_INJECTION_KEY, reactive(ctx))\n\n    watch([config, () => props.options], initStore, {\n      deep: true,\n      immediate: true,\n    })\n\n    watch(\n      () => props.modelValue,\n      () => {\n        manualChecked = false\n        syncCheckedValue()\n      },\n      {\n        deep: true,\n      }\n    )\n\n    watch(\n      () => checkedValue.value,\n      (val) => {\n        if (!isEqual(val, props.modelValue)) {\n          emit(UPDATE_MODEL_EVENT, val)\n          emit(CHANGE_EVENT, val)\n        }\n      }\n    )\n\n    onBeforeUpdate(() => (menuList.value = []))\n\n    onMounted(() => !isEmpty(props.modelValue) && syncCheckedValue())\n\n    function filter(value) {\n      if (!props.filterNodeMethod) {\n        throw new Error('[Tree] filterNodeMethod is required when filter')\n      }\n      store.value.filter(value)\n    }\n\n    return {\n      ns,\n      menuList,\n      menus,\n      checkedNodes,\n      handleKeyDown,\n      handleCheckChange,\n      getFlattedNodes,\n      filter,\n      /**\n       * @description get an array of currently selected node,(leafOnly) whether only return the leaf checked nodes, default is `false`\n       */\n      getCheckedNodes,\n      setCheckedNodes,\n      /**\n       * @description clear checked nodes\n       */\n      clearCheckedNodes,\n      calculateCheckedValue,\n      scrollToExpandingNode,\n    }\n  },\n})\n</script>\n"],"names":["_resolveComponent","_openBlock","_createElementBlock","_normalizeClass","_Fragment","_renderList","_createBlock"],"mappings":"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"}