{"version":3,"file":"index.mjs","sources":["../../../../../../packages/components/dsh-cascader-panel/src/index.vue"],"sourcesContent":["<template>\n  <div\n    :class=\"[ns.b('panel'), ns.is('bordered', border)]\"\n    @keydown=\"handleKeyDown\"\n  >\n    <el-dsh-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      :only-this=\"onlyThis\"\n    />\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 '@code-monkey-ui/utils'\nimport {\n  CHANGE_EVENT,\n  EVENT_CODE,\n  UPDATE_MODEL_EVENT,\n} from '@code-monkey-ui/constants'\nimport { useNamespace } from '@code-monkey-ui/hooks'\n\nimport ElDshCascaderMenu from './menu.vue'\nimport Store from './store'\nimport DshNode from './node'\nimport {\n  DSH_CASCADER_ALL_NODE_VALUE,\n  DshCommonProps,\n  DshDefaultProps,\n  DshUseCascaderConfig,\n} from './config'\nimport { checkNode, getMenuIndex, sortByOriginalOrder } from './utils'\nimport { DSH_CASCADER_PANEL_INJECTION_KEY } from './types'\n\nimport type { PropType } from 'vue'\nimport type { Nullable } from '@code-monkey-ui/utils'\nimport type {\n  default as DshCascaderNode,\n  DshCascaderNodeValue,\n  DshCascaderOption,\n  DshCascaderValue,\n  DshRenderLabel,\n} from './node'\n\nimport type { DshCascaderPanelContext } from './types'\n\nexport default defineComponent({\n  name: 'ElDshCascaderPanel',\n\n  components: {\n    ElDshCascaderMenu,\n  },\n\n  props: {\n    ...DshCommonProps,\n    border: {\n      type: Boolean,\n      default: true,\n    },\n    onlyThis: {\n      type: Boolean,\n      default: true,\n    },\n    renderLabel: Function as PropType<DshRenderLabel>,\n  },\n\n  emits: [\n    UPDATE_MODEL_EVENT,\n    CHANGE_EVENT,\n    'close',\n    'expand-change',\n    'confirm',\n  ],\n\n  setup(props, { emit, slots }) {\n    // for interrupt sync check status in lazy mode\n    let manualChecked = false\n    const ns = useNamespace('dsh-cascader')\n    const config = DshUseCascaderConfig(props)\n\n    let store: Nullable<Store> = null\n    const initialLoaded = ref(true)\n    const menuList = ref<any[]>([])\n    const checkedValue = ref<Nullable<DshCascaderValue>>(null)\n    const menus = ref<DshCascaderNode[][]>([])\n    const expandingNode = ref<Nullable<DshCascaderNode>>(null)\n    const checkedNodes = ref<DshCascaderNode[]>([])\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 = new Store(options, cfg)\n      menus.value = [store.getNodes()]\n\n      if (cfg.lazy && isEmpty(props.options)) {\n        initialLoaded.value = false\n        lazyLoad(undefined, (list) => {\n          if (list) {\n            store = new Store(list, cfg)\n            menus.value = [store.getNodes()]\n          }\n          initialLoaded.value = true\n          syncCheckedValue(false, true)\n        })\n      } else {\n        syncCheckedValue(false, true)\n      }\n    }\n\n    const lazyLoad: DshCascaderPanelContext['lazyLoad'] = (node, cb) => {\n      const cfg = config.value\n      node! = node || new DshNode({}, cfg, undefined, true)\n      node.loading = true\n\n      const resolve = (dataList: DshCascaderOption[]) => {\n        const _node = node as DshNode\n        const parent = _node.root ? null : _node\n        dataList && store?.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: DshCascaderPanelContext['expandNode'] = (\n      node,\n      silent\n    ) => {\n      const { level } = node\n      const newMenus = menus.value.slice(0, level)\n      let newExpandingNode: Nullable<DshCascaderNode>\n\n      if (node.DshIsLeaf) {\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: DshCascaderPanelContext['handleCheckChange'] = (\n      node,\n      checked\n    ) => {\n      const { 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 && !multiple && !checkStrictly && emit('close')\n      // !emitClose && !multiple && !checkStrictly && expandParentNode(node)\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?.getFlattedNodes(leafOnly)\n    }\n\n    const getCheckedNodes = (leafOnly: boolean) => {\n      return getFlattedNodes(leafOnly)?.filter((node) => node.checked !== false)\n    }\n\n    const clearCheckedNodes = () => {\n      getFlattedNodes(true)?.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 onlyThisConfirm = () => {\n      emit('confirm', checkedValue.value)\n    }\n\n    const checkedAll = (checked: boolean) => {\n      getFlattedNodes(true)?.forEach((node) => node.doCheck(checked))\n      calculateCheckedValue()\n      menus.value = menus.value.slice(0, 1)\n      expandingNode.value = null\n      emit('expand-change', [])\n    }\n    const propsValue = props.props.value ?? DshDefaultProps.value\n    const calculateCheckedValue = () => {\n      const { checkStrictly, multiple } = config.value\n      const oldNodes = checkedNodes.value\n      const newNodes = getCheckedNodes(!checkStrictly)!\n      // ensure the original order\n      const nodes = sortByOriginalOrder(oldNodes, newNodes).filter(\n        (node) => node.data[propsValue] !== DSH_CASCADER_ALL_NODE_VALUE\n      )\n      const values = nodes\n        .map((node) => node.valueByOption)\n        .filter((value) => value[propsValue] !== DSH_CASCADER_ALL_NODE_VALUE)\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 = !checkStrictly\n      // 源代码无全选，没从全量数据中过滤，修改为从全量中过滤，多选时考虑全选的渲染\n      if (multiple) {\n        let allNode = null\n        const nodes = getFlattedNodes(leafOnly)?.filter((node) => {\n          if (node.data[propsValue] !== DSH_CASCADER_ALL_NODE_VALUE) {\n            return true\n          } else {\n            allNode = node\n            return false\n          }\n        })\n        // 除全选项以外的项目数与选中数相等时对权限项打钩，否则强制重新渲染\n        if (nodes?.length === modelValue?.length) {\n          syncMenuState(allNode ? nodes?.concat(allNode) : nodes, forced)\n        } else {\n          allNode.doCheck(false)\n          forced = true\n        }\n      }\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: DshCascaderNodeValue[] = unique(\n          flattenDeep(castArray(modelValue))\n        )\n        const nodes = values\n          .map((val) => store?.getNodeByValue(val))\n          .filter(\n            (node) => !!node && !node.loaded && !node.loading\n          ) as DshNode[]\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?.getNodeByValue(val, leafOnly))\n        ) as DshNode[]\n        syncMenuState(nodes, forced)\n        checkedValue.value = cloneDeep(modelValue)\n      }\n    }\n\n    const syncMenuState = (\n      newCheckedNodes: DshCascaderNode[],\n      reserveExpandingState = true\n    ) => {\n      const { checkStrictly } = config.value\n      const oldNodes = checkedNodes.value\n      const newNodes = newCheckedNodes.filter(\n        (node) => !!node && (checkStrictly || node.DshIsLeaf)\n      )\n      const oldExpandingNode = store?.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      if (props.props.multiple) {\n        reactive(newNodes).forEach((node) => node.doCheck(true))\n      } else {\n        newNodes.forEach((node) => node.doCheck(true))\n      }\n      checkedNodes.value = newNodes.filter(\n        (node) => node.data[propsValue] !== DSH_CASCADER_ALL_NODE_VALUE\n      )\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          checkNode(target)\n          break\n      }\n    }\n\n    provide(\n      DSH_CASCADER_PANEL_INJECTION_KEY,\n      reactive({\n        config,\n        expandingNode,\n        checkedNodes,\n        isHoverMenu,\n        initialLoaded,\n        renderLabelFn,\n        lazyLoad,\n        expandNode,\n        handleCheckChange,\n        onlyThisConfirm,\n        checkedAll,\n        getFlattedNodes,\n      })\n    )\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    return {\n      ns,\n      menuList,\n      menus,\n      checkedNodes,\n      handleKeyDown,\n      handleCheckChange,\n      getFlattedNodes,\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      /**\n       * @description clear checked nodes\n       */\n      clearCheckedNodes,\n      calculateCheckedValue,\n      scrollToExpandingNode,\n      expandParentNode,\n      onlyThisConfirm,\n    }\n  },\n})\n</script>\n"],"names":["_resolveComponent","_openBlock","_createElementBlock","_normalizeClass","_Fragment","_renderList","_createBlock"],"mappings":"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"}