{"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    data-test-name=\"cascader-panel\"\n    data-test-variant=\"\"\n    data-test-state=\"\"\n    @keydown=\"handleKeyDown\"\n  >\n    <b-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  </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 { flattenDeep, isEqual } from 'lodash-unified'\nimport { isClient } from '@vueuse/core'\nimport {\n  castArray,\n  focusNode,\n  getSibling,\n  isEmpty,\n  scrollIntoView,\n  unique,\n} from '@bigin/utils'\nimport { CHANGE_EVENT, EVENT_CODE, UPDATE_MODEL_EVENT } from '@bigin/constants'\nimport { useNamespace } from '@bigin/hooks'\n\nimport BCascaderMenu from './menu.vue'\nimport Store from './store'\nimport Node from './node'\nimport { CommonProps, useCascaderConfig } from './config'\nimport { checkNode, getMenuIndex, sortByOriginalOrder } from './utils'\nimport { CASCADER_PANEL_INJECTION_KEY } from './types'\n\nimport type { PropType } from 'vue'\nimport type { Nullable } from '@bigin/utils'\nimport type {\n  default as CascaderNode,\n  CascaderNodeValue,\n  CascaderOption,\n  CascaderValue,\n  RenderLabel,\n} from './node'\n\nimport type { BCascaderPanelContext } from './types'\n\nexport default defineComponent({\n  name: 'BCascaderPanel',\n\n  components: {\n    BCascaderMenu,\n  },\n\n  props: {\n    ...CommonProps,\n    border: {\n      type: Boolean,\n      default: true,\n    },\n    renderLabel: Function as PropType<RenderLabel>,\n  },\n\n  emits: [UPDATE_MODEL_EVENT, CHANGE_EVENT, 'close', 'expand-change'],\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    let store: Nullable<Store> = null\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 = 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: BCascaderPanelContext['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?.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: BCascaderPanelContext['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: BCascaderPanelContext['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 && !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      checkedNodes.value.forEach((node) => node.doCheck(false))\n      calculateCheckedValue()\n    }\n\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)\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 = !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?.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?.getNodeByValue(val, leafOnly))\n        ) as Node[]\n        syncMenuState(nodes, forced)\n        checkedValue.value = 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) => !!node && (checkStrictly || node.isLeaf)\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      newNodes.forEach((node) => node.doCheck(true))\n\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          checkNode(target)\n          break\n      }\n    }\n\n    provide(\n      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      })\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\n    watch(checkedValue, (val) => {\n      if (!isEqual(val, props.modelValue)) {\n        emit(UPDATE_MODEL_EVENT, val)\n        emit(CHANGE_EVENT, val)\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      getCheckedNodes,\n      clearCheckedNodes,\n      calculateCheckedValue,\n      scrollToExpandingNode,\n    }\n  },\n})\n</script>\n"],"names":["_createElementBlock","_normalizeClass","_openBlock","_Fragment","_renderList","_createBlock"],"mappings":"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"}