@gkd-kit/inspect 0.0.1700288228119 → 0.0.1700797366308

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/dist/404.html +4 -4
  2. package/dist/assets/{ActionCard.vue_vue_type_script_setup_true_lang-09bc5c52.js → ActionCard.vue_vue_type_script_setup_true_lang-64f43fc5.js} +2 -2
  3. package/dist/assets/{ActionCard.vue_vue_type_script_setup_true_lang-09bc5c52.js.map → ActionCard.vue_vue_type_script_setup_true_lang-64f43fc5.js.map} +1 -1
  4. package/dist/assets/DevicePage-9642be67.js +17 -0
  5. package/dist/assets/{DevicePage-d6b09324.js.map → DevicePage-9642be67.js.map} +1 -1
  6. package/dist/assets/{HomePage-043d31a6.js → HomePage-0dd4a119.js} +2 -2
  7. package/dist/assets/{HomePage-043d31a6.js.map → HomePage-0dd4a119.js.map} +1 -1
  8. package/dist/assets/{ImportPage-dd4ac333.js → ImportPage-684eabaf.js} +2 -2
  9. package/dist/assets/{ImportPage-dd4ac333.js.map → ImportPage-684eabaf.js.map} +1 -1
  10. package/dist/assets/{SnapshotPage-1a366586.js → SnapshotPage-d633b6c9.js} +2 -2
  11. package/dist/assets/{SnapshotPage-1a366586.js.map → SnapshotPage-d633b6c9.js.map} +1 -1
  12. package/dist/assets/{_404Page-7cc2c1c3.js → _404Page-daea93a1.js} +2 -2
  13. package/dist/assets/{_404Page-7cc2c1c3.js.map → _404Page-daea93a1.js.map} +1 -1
  14. package/dist/assets/{import-11d308be.js → import-7302ef69.js} +2 -2
  15. package/dist/assets/{import-11d308be.js.map → import-7302ef69.js.map} +1 -1
  16. package/dist/assets/{index-17496c07.js → index-35bb5706.js} +2 -2
  17. package/dist/assets/{index-17496c07.js.map → index-35bb5706.js.map} +1 -1
  18. package/dist/assets/{index-f89ae0a4.js → index-7ab1a1b0.js} +3 -3
  19. package/dist/assets/{index-f89ae0a4.js.map → index-7ab1a1b0.js.map} +1 -1
  20. package/dist/assets/{jszip.min-900e2ba4.js → jszip.min-64ef0de2.js} +2 -2
  21. package/dist/assets/{jszip.min-900e2ba4.js.map → jszip.min-64ef0de2.js.map} +1 -1
  22. package/dist/assets/{node-b2d3cf06.js → node-815a36e5.js} +2 -2
  23. package/dist/assets/{node-b2d3cf06.js.map → node-815a36e5.js.map} +1 -1
  24. package/dist/assets/{storage-53995e92.js → storage-d71fd6d4.js} +2 -2
  25. package/dist/assets/{storage-53995e92.js.map → storage-d71fd6d4.js.map} +1 -1
  26. package/dist/assets/{table-a8163fec.js → table-1e46f9e4.js} +3 -3
  27. package/dist/assets/{table-a8163fec.js.map → table-1e46f9e4.js.map} +1 -1
  28. package/dist/index.html +4 -4
  29. package/package.json +1 -1
  30. package/dist/assets/DevicePage-d6b09324.js +0 -17
@@ -1 +1 @@
1
- {"version":3,"file":"SnapshotPage-1a366586.js","sources":["../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/_utils/vue/create-data-key.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/_internal/icons/ChevronLeft.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/_internal/icons/Switcher.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/collapse/styles/light.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/collapse/src/styles/index.cssr.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/collapse/src/Collapse.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/collapse/src/CollapseItemContent.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/collapse/src/CollapseItem.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/table/styles/_common.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/table/styles/light.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/tree/styles/light.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/table/src/styles/index.cssr.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/table/src/Table.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/table/src/Th.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/table/src/Tr.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/table/src/Td.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/table/src/Thead.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/table/src/Tbody.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/tree-select/src/interface.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/tree/src/interface.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/tree/src/TreeNodeSwitcher.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/tree/src/TreeNodeCheckbox.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/tree/src/TreeNodeContent.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/tree/src/dnd.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/tree/src/utils.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/tree/src/TreeNode.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/tree/src/keyboard.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/tree/src/MotionWrapper.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/tree/src/styles/index.cssr.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/tree/src/Tree.js","../../src/components/DraggableCard.vue","../../src/components/AttrCard.vue","../../src/components/ScreenshotCard.vue","../../src/components/SearchCard.vue","../../src/components/WindowCard.vue","../../src/views/SnapshotPage.vue"],"sourcesContent":["export function createDataKey(key) {\n return typeof key === 'string' ? `s-${key}` : `n-${key}`;\n}\n","import { h, defineComponent } from 'vue';\nexport default defineComponent({\n name: 'ChevronLeft',\n render() {\n return (h(\"svg\", { viewBox: \"0 0 16 16\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\" },\n h(\"path\", { d: \"M10.3536 3.14645C10.5488 3.34171 10.5488 3.65829 10.3536 3.85355L6.20711 8L10.3536 12.1464C10.5488 12.3417 10.5488 12.6583 10.3536 12.8536C10.1583 13.0488 9.84171 13.0488 9.64645 12.8536L5.14645 8.35355C4.95118 8.15829 4.95118 7.84171 5.14645 7.64645L9.64645 3.14645C9.84171 2.95118 10.1583 2.95118 10.3536 3.14645Z\", fill: \"currentColor\" })));\n }\n});\n","import { h, defineComponent } from 'vue';\nexport default defineComponent({\n name: 'Switcher',\n render() {\n return (h(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 32 32\" },\n h(\"path\", { d: \"M12 8l10 8l-10 8z\" })));\n }\n});\n","import { commonLight } from '../../_styles/common';\nexport const self = (vars) => {\n const { fontWeight, textColor1, textColor2, textColorDisabled, dividerColor, fontSize } = vars;\n return {\n titleFontSize: fontSize,\n titleFontWeight: fontWeight,\n dividerColor,\n titleTextColor: textColor1,\n titleTextColorDisabled: textColorDisabled,\n fontSize,\n textColor: textColor2,\n arrowColor: textColor2,\n arrowColorDisabled: textColorDisabled,\n itemMargin: '16px 0 0 0',\n titlePadding: '16px 0 0 0'\n };\n};\nconst collapseLight = {\n name: 'Collapse',\n common: commonLight,\n self\n};\nexport default collapseLight;\n","import { c, cB, cE, cM } from '../../../_utils/cssr';\nimport { fadeInHeightExpandTransition } from '../../../_styles/transitions/fade-in-height-expand.cssr';\n// vars:\n// --n-font-size\n// --n-bezier\n// --n-text-color\n// --n-divider-color\n// --n-title-padding\n// --n-title-font-size\n// --n-title-text-color\n// --n-title-font-weight\n// --n-arrow-color\n// --n-arrow-color-disabled\n// --n-title-text-color-disabled\n// --n-item-margin\nexport default cB('collapse', 'width: 100%;', [cB('collapse-item', `\n font-size: var(--n-font-size);\n color: var(--n-text-color);\n transition:\n color .3s var(--n-bezier),\n border-color .3s var(--n-bezier);\n margin: var(--n-item-margin);\n `, [cM('disabled', [cE('header', 'cursor: not-allowed;', [cE('header-main', `\n color: var(--n-title-text-color-disabled);\n `), cB('collapse-item-arrow', `\n color: var(--n-arrow-color-disabled);\n `)])]), cB('collapse-item', 'margin-left: 32px;'), c('&:first-child', 'margin-top: 0;'), c('&:first-child >', [cE('header', 'padding-top: 0;')]), cM('left-arrow-placement', [cE('header', [cB('collapse-item-arrow', 'margin-right: 4px;')])]), cM('right-arrow-placement', [cE('header', [cB('collapse-item-arrow', 'margin-left: 4px;')])]), cE('content-wrapper', [cE('content-inner', 'padding-top: 16px;'), fadeInHeightExpandTransition({\n duration: '0.15s'\n})]), cM('active', [cE('header', [cM('active', [cB('collapse-item-arrow', 'transform: rotate(90deg);')])])]), c('&:not(:first-child)', 'border-top: 1px solid var(--n-divider-color);'), cE('header', `\n font-size: var(--n-title-font-size);\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n transition: color .3s var(--n-bezier);\n position: relative;\n padding: var(--n-title-padding);\n color: var(--n-title-text-color);\n cursor: pointer;\n `, [cE('header-main', `\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n font-weight: var(--n-title-font-weight);\n transition: color .3s var(--n-bezier);\n flex: 1;\n color: var(--n-title-text-color);\n `), cE('header-extra', `\n display: flex;\n align-items: center;\n transition: color .3s var(--n-bezier);\n color: var(--n-text-color);\n `), cB('collapse-item-arrow', `\n display: flex;\n transition:\n transform .15s var(--n-bezier),\n color .3s var(--n-bezier);\n font-size: 18px;\n color: var(--n-arrow-color);\n `)])])]);","import { computed, h, defineComponent, provide, ref } from 'vue';\nimport { useMergedState } from 'vooks';\nimport { useConfig, useTheme, useThemeClass } from '../../_mixins';\nimport { call, createInjectionKey, warn } from '../../_utils';\nimport { collapseLight } from '../styles';\nimport style from './styles/index.cssr';\nimport { useRtl } from '../../_mixins/use-rtl';\nexport const collapseProps = Object.assign(Object.assign({}, useTheme.props), { defaultExpandedNames: {\n type: [Array, String],\n default: null\n }, expandedNames: [Array, String], arrowPlacement: {\n type: String,\n default: 'left'\n }, accordion: {\n type: Boolean,\n default: false\n }, displayDirective: {\n type: String,\n default: 'if'\n }, onItemHeaderClick: [Function, Array], 'onUpdate:expandedNames': [Function, Array], onUpdateExpandedNames: [Function, Array], \n // deprecated\n onExpandedNamesChange: {\n type: [Function, Array],\n validator: () => {\n if (process.env.NODE_ENV !== 'production') {\n warn('collapse', '`on-expanded-names-change` is deprecated, please use `on-update:expanded-names` instead.');\n }\n return true;\n },\n default: undefined\n } });\nexport const collapseInjectionKey = createInjectionKey('n-collapse');\nexport default defineComponent({\n name: 'Collapse',\n props: collapseProps,\n setup(props, { slots }) {\n const { mergedClsPrefixRef, inlineThemeDisabled, mergedRtlRef } = useConfig(props);\n const uncontrolledExpandedNamesRef = ref(props.defaultExpandedNames);\n const controlledExpandedNamesRef = computed(() => props.expandedNames);\n const mergedExpandedNamesRef = useMergedState(controlledExpandedNamesRef, uncontrolledExpandedNamesRef);\n const themeRef = useTheme('Collapse', '-collapse', style, collapseLight, props, mergedClsPrefixRef);\n function doUpdateExpandedNames(names) {\n const { 'onUpdate:expandedNames': _onUpdateExpandedNames, onUpdateExpandedNames, onExpandedNamesChange } = props;\n if (onUpdateExpandedNames) {\n call(onUpdateExpandedNames, names);\n }\n if (_onUpdateExpandedNames) {\n call(_onUpdateExpandedNames, names);\n }\n if (onExpandedNamesChange) {\n call(onExpandedNamesChange, names);\n }\n uncontrolledExpandedNamesRef.value = names;\n }\n function doItemHeaderClick(info) {\n const { onItemHeaderClick } = props;\n if (onItemHeaderClick) {\n call(onItemHeaderClick, info);\n }\n }\n function toggleItem(collapse, name, event) {\n const { accordion } = props;\n const { value: expandedNames } = mergedExpandedNamesRef;\n if (accordion) {\n if (collapse) {\n doUpdateExpandedNames([name]);\n doItemHeaderClick({ name, expanded: true, event });\n }\n else {\n doUpdateExpandedNames([]);\n doItemHeaderClick({ name, expanded: false, event });\n }\n }\n else {\n if (!Array.isArray(expandedNames)) {\n doUpdateExpandedNames([name]);\n doItemHeaderClick({ name, expanded: true, event });\n }\n else {\n const activeNames = expandedNames.slice();\n const index = activeNames.findIndex((activeName) => name === activeName);\n if (~index) {\n activeNames.splice(index, 1);\n doUpdateExpandedNames(activeNames);\n doItemHeaderClick({ name, expanded: false, event });\n }\n else {\n activeNames.push(name);\n doUpdateExpandedNames(activeNames);\n doItemHeaderClick({ name, expanded: true, event });\n }\n }\n }\n }\n provide(collapseInjectionKey, {\n props,\n mergedClsPrefixRef,\n expandedNamesRef: mergedExpandedNamesRef,\n slots,\n toggleItem\n });\n const rtlEnabledRef = useRtl('Collapse', mergedRtlRef, mergedClsPrefixRef);\n const cssVarsRef = computed(() => {\n const { common: { cubicBezierEaseInOut }, self: { titleFontWeight, dividerColor, titlePadding, titleTextColor, titleTextColorDisabled, textColor, arrowColor, fontSize, titleFontSize, arrowColorDisabled, itemMargin } } = themeRef.value;\n return {\n '--n-font-size': fontSize,\n '--n-bezier': cubicBezierEaseInOut,\n '--n-text-color': textColor,\n '--n-divider-color': dividerColor,\n '--n-title-padding': titlePadding,\n '--n-title-font-size': titleFontSize,\n '--n-title-text-color': titleTextColor,\n '--n-title-text-color-disabled': titleTextColorDisabled,\n '--n-title-font-weight': titleFontWeight,\n '--n-arrow-color': arrowColor,\n '--n-arrow-color-disabled': arrowColorDisabled,\n '--n-item-margin': itemMargin\n };\n });\n const themeClassHandle = inlineThemeDisabled\n ? useThemeClass('collapse', undefined, cssVarsRef, props)\n : undefined;\n return {\n rtlEnabled: rtlEnabledRef,\n mergedTheme: themeRef,\n mergedClsPrefix: mergedClsPrefixRef,\n cssVars: inlineThemeDisabled ? undefined : cssVarsRef,\n themeClass: themeClassHandle === null || themeClassHandle === void 0 ? void 0 : themeClassHandle.themeClass,\n onRender: themeClassHandle === null || themeClassHandle === void 0 ? void 0 : themeClassHandle.onRender\n };\n },\n render() {\n var _a;\n (_a = this.onRender) === null || _a === void 0 ? void 0 : _a.call(this);\n return (h(\"div\", { class: [\n `${this.mergedClsPrefix}-collapse`,\n this.rtlEnabled && `${this.mergedClsPrefix}-collapse--rtl`,\n this.themeClass\n ], style: this.cssVars }, this.$slots));\n }\n});\n","import { h, withDirectives, vShow, defineComponent, toRef } from 'vue';\nimport { useFalseUntilTruthy } from 'vooks';\nimport { NFadeInExpandTransition } from '../../_internal';\nexport default defineComponent({\n name: 'CollapseItemContent',\n props: {\n displayDirective: {\n type: String,\n required: true\n },\n show: Boolean,\n clsPrefix: {\n type: String,\n required: true\n }\n },\n setup(props) {\n const onceTrueRef = useFalseUntilTruthy(toRef(props, 'show'));\n return {\n onceTrue: onceTrueRef\n };\n },\n render() {\n return (h(NFadeInExpandTransition, null, {\n default: () => {\n const { show, displayDirective, onceTrue, clsPrefix } = this;\n const useVShow = displayDirective === 'show' && onceTrue;\n const contentNode = (h(\"div\", { class: `${clsPrefix}-collapse-item__content-wrapper` },\n h(\"div\", { class: `${clsPrefix}-collapse-item__content-inner` }, this.$slots)));\n return useVShow\n ? withDirectives(contentNode, [[vShow, show]])\n : show\n ? contentNode\n : null;\n }\n }));\n }\n});\n","import { h, defineComponent, inject, computed } from 'vue';\nimport { createId } from 'seemly';\nimport { useMemo } from 'vooks';\nimport { ChevronRightIcon as ArrowRightIcon, ChevronLeftIcon as ArrowLeftIcon } from '../../_internal/icons';\nimport { useRtl } from '../../_mixins/use-rtl';\nimport { useConfig } from '../../_mixins';\nimport { NBaseIcon } from '../../_internal';\nimport { throwError, resolveSlotWithProps, resolveWrappedSlotWithProps } from '../../_utils';\nimport { collapseInjectionKey } from './Collapse';\nimport NCollapseItemContent from './CollapseItemContent';\nexport const collapseItemProps = {\n title: String,\n name: [String, Number],\n disabled: Boolean,\n displayDirective: String\n};\nexport default defineComponent({\n name: 'CollapseItem',\n props: collapseItemProps,\n setup(props) {\n const { mergedRtlRef } = useConfig(props);\n const randomName = createId();\n const mergedNameRef = useMemo(() => {\n var _a;\n return (_a = props.name) !== null && _a !== void 0 ? _a : randomName;\n });\n const NCollapse = inject(collapseInjectionKey);\n if (!NCollapse) {\n throwError('collapse-item', '`n-collapse-item` must be placed inside `n-collapse`.');\n }\n const { expandedNamesRef, props: collapseProps, mergedClsPrefixRef, slots: collapseSlots } = NCollapse;\n const collapsedRef = computed(() => {\n const { value: expandedNames } = expandedNamesRef;\n if (Array.isArray(expandedNames)) {\n const { value: name } = mergedNameRef;\n return !~expandedNames.findIndex((expandedName) => expandedName === name);\n }\n else if (expandedNames) {\n const { value: name } = mergedNameRef;\n return name !== expandedNames;\n }\n return true;\n });\n const rtlEnabledRef = useRtl('Collapse', mergedRtlRef, mergedClsPrefixRef);\n return {\n rtlEnabled: rtlEnabledRef,\n collapseSlots,\n randomName,\n mergedClsPrefix: mergedClsPrefixRef,\n collapsed: collapsedRef,\n mergedDisplayDirective: computed(() => {\n const { displayDirective } = props;\n if (displayDirective) {\n return displayDirective;\n }\n else {\n return collapseProps.displayDirective;\n }\n }),\n arrowPlacement: computed(() => {\n return collapseProps.arrowPlacement;\n }),\n handleClick(e) {\n if (NCollapse && !props.disabled) {\n NCollapse.toggleItem(collapsedRef.value, mergedNameRef.value, e);\n }\n }\n };\n },\n render() {\n const { collapseSlots, $slots, arrowPlacement, collapsed, mergedDisplayDirective, mergedClsPrefix, disabled } = this;\n const headerNode = resolveSlotWithProps($slots.header, { collapsed }, () => [this.title]);\n const headerExtraSlot = $slots['header-extra'] || collapseSlots['header-extra'];\n const arrowSlot = $slots.arrow || collapseSlots.arrow;\n return (h(\"div\", { class: [\n `${mergedClsPrefix}-collapse-item`,\n `${mergedClsPrefix}-collapse-item--${arrowPlacement}-arrow-placement`,\n disabled && `${mergedClsPrefix}-collapse-item--disabled`,\n !collapsed && `${mergedClsPrefix}-collapse-item--active`\n ] },\n h(\"div\", { class: [\n `${mergedClsPrefix}-collapse-item__header`,\n !collapsed && `${mergedClsPrefix}-collapse-item__header--active`\n ] },\n h(\"div\", { class: `${mergedClsPrefix}-collapse-item__header-main`, onClick: this.handleClick },\n arrowPlacement === 'right' && headerNode,\n h(\"div\", { class: `${mergedClsPrefix}-collapse-item-arrow`, key: this.rtlEnabled ? 0 : 1 }, resolveSlotWithProps(arrowSlot, { collapsed }, () => {\n var _a;\n return [\n h(NBaseIcon, { clsPrefix: mergedClsPrefix }, {\n default: (_a = collapseSlots.expandIcon) !== null && _a !== void 0 ? _a : (() => this.rtlEnabled ? (h(ArrowLeftIcon, null)) : (h(ArrowRightIcon, null)))\n })\n ];\n })),\n arrowPlacement === 'left' && headerNode),\n resolveWrappedSlotWithProps(headerExtraSlot, { collapsed }, (children) => (h(\"div\", { class: `${mergedClsPrefix}-collapse-item__header-extra`, onClick: this.handleClick }, children)))),\n h(NCollapseItemContent, { clsPrefix: mergedClsPrefix, displayDirective: mergedDisplayDirective, show: !collapsed }, $slots)));\n }\n});\n","export default {\n thPaddingSmall: '6px',\n thPaddingMedium: '12px',\n thPaddingLarge: '12px',\n tdPaddingSmall: '6px',\n tdPaddingMedium: '12px',\n tdPaddingLarge: '12px'\n};\n","import { composite } from 'seemly';\nimport sizeVariables from './_common';\nimport { commonLight } from '../../_styles/common';\nexport const self = (vars) => {\n const { dividerColor, cardColor, modalColor, popoverColor, tableHeaderColor, tableColorStriped, textColor1, textColor2, borderRadius, fontWeightStrong, lineHeight, fontSizeSmall, fontSizeMedium, fontSizeLarge } = vars;\n return Object.assign(Object.assign({}, sizeVariables), { fontSizeSmall,\n fontSizeMedium,\n fontSizeLarge,\n lineHeight,\n borderRadius, borderColor: composite(cardColor, dividerColor), borderColorModal: composite(modalColor, dividerColor), borderColorPopover: composite(popoverColor, dividerColor), tdColor: cardColor, tdColorModal: modalColor, tdColorPopover: popoverColor, tdColorStriped: composite(cardColor, tableColorStriped), tdColorStripedModal: composite(modalColor, tableColorStriped), tdColorStripedPopover: composite(popoverColor, tableColorStriped), thColor: composite(cardColor, tableHeaderColor), thColorModal: composite(modalColor, tableHeaderColor), thColorPopover: composite(popoverColor, tableHeaderColor), thTextColor: textColor1, tdTextColor: textColor2, thFontWeight: fontWeightStrong });\n};\nconst tableLight = {\n name: 'Table',\n common: commonLight,\n self\n};\nexport default tableLight;\n","import { changeColor } from 'seemly';\nimport { checkboxLight } from '../../checkbox/styles';\nimport { emptyLight } from '../../empty/styles';\nimport { scrollbarLight } from '../../_internal/scrollbar/styles';\nimport { commonLight } from '../../_styles/common';\nimport { createTheme } from '../../_mixins/use-theme';\nexport const self = (vars) => {\n const { borderRadiusSmall, hoverColor, pressedColor, primaryColor, textColor3, textColor2, textColorDisabled, fontSize } = vars;\n return {\n fontSize,\n lineHeight: '1.5',\n nodeHeight: '30px',\n nodeWrapperPadding: '3px 0',\n nodeBorderRadius: borderRadiusSmall,\n nodeColorHover: hoverColor,\n nodeColorPressed: pressedColor,\n nodeColorActive: changeColor(primaryColor, { alpha: 0.1 }),\n arrowColor: textColor3,\n nodeTextColor: textColor2,\n nodeTextColorDisabled: textColorDisabled,\n loadingColor: primaryColor,\n dropMarkColor: primaryColor\n };\n};\nconst treeLight = createTheme({\n name: 'Tree',\n common: commonLight,\n peers: {\n Checkbox: checkboxLight,\n Scrollbar: scrollbarLight,\n Empty: emptyLight\n },\n self\n});\nexport default treeLight;\n","import { c, cB, cM, cNotM, insideModal, insidePopover } from '../../../_utils/cssr';\n// vars:\n// --n-bezier\n// --n-td-color\n// --n-td-color-modal\n// --n-td-color-popover\n// --n-td-text-color\n// --n-border-color\n// --n-border-color-modal\n// --n-border-color-popover\n// --n-border-radius\n// --n-font-size\n// --n-th-color\n// --n-th-color-modal\n// --n-th-color-popover\n// --n-th-font-weight\n// --n-th-text-color\n// --n-line-height\n// --n-td-padding\n// --n-th-padding\nexport default c([cB('table', `\n font-size: var(--n-font-size);\n font-variant-numeric: tabular-nums;\n line-height: var(--n-line-height);\n width: 100%;\n border-radius: var(--n-border-radius) var(--n-border-radius) 0 0;\n text-align: left;\n border-collapse: separate;\n border-spacing: 0;\n overflow: hidden;\n background-color: var(--n-td-color);\n border-color: var(--n-merged-border-color);\n transition:\n background-color .3s var(--n-bezier),\n border-color .3s var(--n-bezier),\n color .3s var(--n-bezier);\n --n-merged-border-color: var(--n-border-color);\n `, [c('th', `\n white-space: nowrap;\n transition:\n background-color .3s var(--n-bezier),\n border-color .3s var(--n-bezier),\n color .3s var(--n-bezier);\n text-align: inherit;\n padding: var(--n-th-padding);\n vertical-align: inherit;\n text-transform: none;\n border: 0px solid var(--n-merged-border-color);\n font-weight: var(--n-th-font-weight);\n color: var(--n-th-text-color);\n background-color: var(--n-th-color);\n border-bottom: 1px solid var(--n-merged-border-color);\n border-right: 1px solid var(--n-merged-border-color);\n `, [c('&:last-child', `\n border-right: 0px solid var(--n-merged-border-color);\n `)]), c('td', `\n transition:\n background-color .3s var(--n-bezier),\n border-color .3s var(--n-bezier),\n color .3s var(--n-bezier);\n padding: var(--n-td-padding);\n color: var(--n-td-text-color);\n background-color: var(--n-td-color);\n border: 0px solid var(--n-merged-border-color);\n border-right: 1px solid var(--n-merged-border-color);\n border-bottom: 1px solid var(--n-merged-border-color);\n `, [c('&:last-child', `\n border-right: 0px solid var(--n-merged-border-color);\n `)]), cM('bordered', `\n border: 1px solid var(--n-merged-border-color);\n border-radius: var(--n-border-radius);\n `, [c('tr', [c('&:last-child', [c('td', `\n border-bottom: 0 solid var(--n-merged-border-color);\n `)])])]), cM('single-line', [c('th', `\n border-right: 0px solid var(--n-merged-border-color);\n `), c('td', `\n border-right: 0px solid var(--n-merged-border-color);\n `)]), cM('single-column', [c('tr', [c('&:not(:last-child)', [c('td', `\n border-bottom: 0px solid var(--n-merged-border-color);\n `)])])]), cM('striped', [c('tr:nth-of-type(even)', [c('td', 'background-color: var(--n-td-color-striped)')])]), cNotM('bottom-bordered', [c('tr', [c('&:last-child', [c('td', `\n border-bottom: 0px solid var(--n-merged-border-color);\n `)])])])]), insideModal(cB('table', `\n background-color: var(--n-td-color-modal);\n --n-merged-border-color: var(--n-border-color-modal);\n `, [c('th', `\n background-color: var(--n-th-color-modal);\n `), c('td', `\n background-color: var(--n-td-color-modal);\n `)])), insidePopover(cB('table', `\n background-color: var(--n-td-color-popover);\n --n-merged-border-color: var(--n-border-color-popover);\n `, [c('th', `\n background-color: var(--n-th-color-popover);\n `), c('td', `\n background-color: var(--n-td-color-popover);\n `)]))]);","import { defineComponent, computed, h } from 'vue';\nimport { useConfig, useTheme, useThemeClass } from '../../_mixins';\nimport { useRtl } from '../../_mixins/use-rtl';\nimport { createKey } from '../../_utils';\nimport { tableLight } from '../styles';\nimport style from './styles/index.cssr';\nexport const tableProps = Object.assign(Object.assign({}, useTheme.props), { bordered: {\n type: Boolean,\n default: true\n }, bottomBordered: {\n type: Boolean,\n default: true\n }, singleLine: {\n type: Boolean,\n default: true\n }, striped: Boolean, singleColumn: Boolean, size: {\n type: String,\n default: 'medium'\n } });\nexport default defineComponent({\n name: 'Table',\n props: tableProps,\n setup(props) {\n const { mergedClsPrefixRef, inlineThemeDisabled, mergedRtlRef } = useConfig(props);\n const themeRef = useTheme('Table', '-table', style, tableLight, props, mergedClsPrefixRef);\n const rtlEnabledRef = useRtl('Table', mergedRtlRef, mergedClsPrefixRef);\n const cssVarsRef = computed(() => {\n const { size } = props;\n const { self: { borderColor, tdColor, tdColorModal, tdColorPopover, thColor, thColorModal, thColorPopover, thTextColor, tdTextColor, borderRadius, thFontWeight, lineHeight, borderColorModal, borderColorPopover, tdColorStriped, tdColorStripedModal, tdColorStripedPopover, [createKey('fontSize', size)]: fontSize, [createKey('tdPadding', size)]: tdPadding, [createKey('thPadding', size)]: thPadding }, common: { cubicBezierEaseInOut } } = themeRef.value;\n return {\n '--n-bezier': cubicBezierEaseInOut,\n '--n-td-color': tdColor,\n '--n-td-color-modal': tdColorModal,\n '--n-td-color-popover': tdColorPopover,\n '--n-td-text-color': tdTextColor,\n '--n-border-color': borderColor,\n '--n-border-color-modal': borderColorModal,\n '--n-border-color-popover': borderColorPopover,\n '--n-border-radius': borderRadius,\n '--n-font-size': fontSize,\n '--n-th-color': thColor,\n '--n-th-color-modal': thColorModal,\n '--n-th-color-popover': thColorPopover,\n '--n-th-font-weight': thFontWeight,\n '--n-th-text-color': thTextColor,\n '--n-line-height': lineHeight,\n '--n-td-padding': tdPadding,\n '--n-th-padding': thPadding,\n '--n-td-color-striped': tdColorStriped,\n '--n-td-color-striped-modal': tdColorStripedModal,\n '--n-td-color-striped-popover': tdColorStripedPopover\n };\n });\n const themeClassHandle = inlineThemeDisabled\n ? useThemeClass('table', computed(() => {\n return props.size[0];\n }), cssVarsRef, props)\n : undefined;\n return {\n rtlEnabled: rtlEnabledRef,\n mergedClsPrefix: mergedClsPrefixRef,\n cssVars: inlineThemeDisabled ? undefined : cssVarsRef,\n themeClass: themeClassHandle === null || themeClassHandle === void 0 ? void 0 : themeClassHandle.themeClass,\n onRender: themeClassHandle === null || themeClassHandle === void 0 ? void 0 : themeClassHandle.onRender\n };\n },\n render() {\n var _a;\n const { mergedClsPrefix } = this;\n (_a = this.onRender) === null || _a === void 0 ? void 0 : _a.call(this);\n return (h(\"table\", { class: [\n `${mergedClsPrefix}-table`,\n this.themeClass,\n {\n [`${mergedClsPrefix}-table--rtl`]: this.rtlEnabled,\n [`${mergedClsPrefix}-table--bottom-bordered`]: this.bottomBordered,\n [`${mergedClsPrefix}-table--bordered`]: this.bordered,\n [`${mergedClsPrefix}-table--single-line`]: this.singleLine,\n [`${mergedClsPrefix}-table--single-column`]: this.singleColumn,\n [`${mergedClsPrefix}-table--striped`]: this.striped\n }\n ], style: this.cssVars }, this.$slots));\n }\n});\n","import { defineComponent, h } from 'vue';\nexport default defineComponent({\n name: 'Th',\n render() {\n return h(\"th\", null, this.$slots);\n }\n});\n","import { defineComponent, h } from 'vue';\nexport default defineComponent({\n name: 'Tr',\n render() {\n return h(\"tr\", null, this.$slots);\n }\n});\n","import { defineComponent, h } from 'vue';\nexport default defineComponent({\n name: 'Td',\n render() {\n return h(\"td\", null, this.$slots);\n }\n});\n","import { defineComponent, h } from 'vue';\nexport default defineComponent({\n name: 'Thead',\n render() {\n return h(\"thead\", null, this.$slots);\n }\n});\n","import { defineComponent, h } from 'vue';\nexport default defineComponent({\n name: 'Tbody',\n render() {\n return h(\"tbody\", null, this.$slots);\n }\n});\n","import { createInjectionKey } from '../../_utils';\nexport const treeSelectInjectionKey = createInjectionKey('n-tree-select');\n","import { createInjectionKey } from '../../_utils';\nexport const treeInjectionKey = createInjectionKey('n-tree');\n","import { h, defineComponent, inject } from 'vue';\nimport { SwitcherIcon } from '../../_internal/icons';\nimport { NIconSwitchTransition, NBaseLoading, NBaseIcon } from '../../_internal';\nimport { treeInjectionKey } from './interface';\nexport default defineComponent({\n name: 'NTreeSwitcher',\n props: {\n clsPrefix: {\n type: String,\n required: true\n },\n indent: { type: Number, required: true },\n expanded: Boolean,\n selected: Boolean,\n hide: Boolean,\n loading: Boolean,\n onClick: Function,\n tmNode: {\n type: Object,\n required: true\n }\n },\n setup(props) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const { renderSwitcherIconRef } = inject(treeInjectionKey, null);\n return () => {\n const { clsPrefix, expanded, hide, indent, onClick } = props;\n return (h(\"span\", { \"data-switcher\": true, class: [\n `${clsPrefix}-tree-node-switcher`,\n expanded && `${clsPrefix}-tree-node-switcher--expanded`,\n hide && `${clsPrefix}-tree-node-switcher--hide`\n ], style: { width: `${indent}px` }, onClick: onClick },\n h(\"div\", { class: `${clsPrefix}-tree-node-switcher__icon` },\n h(NIconSwitchTransition, null, {\n default: () => {\n if (props.loading) {\n return (h(NBaseLoading, { clsPrefix: clsPrefix, key: \"loading\", radius: 85, strokeWidth: 20 }));\n }\n const { value: renderSwitcherIcon } = renderSwitcherIconRef;\n return renderSwitcherIcon ? (renderSwitcherIcon({\n expanded: props.expanded,\n selected: props.selected,\n option: props.tmNode.rawNode\n })) : (h(NBaseIcon, { clsPrefix: clsPrefix, key: \"switcher\" }, { default: () => h(SwitcherIcon, null) }));\n }\n }))));\n };\n }\n});\n","import { h, defineComponent, inject } from 'vue';\nimport { NCheckbox } from '../../checkbox';\nimport { treeInjectionKey } from './interface';\nexport default defineComponent({\n name: 'NTreeNodeCheckbox',\n props: {\n clsPrefix: {\n type: String,\n required: true\n },\n indent: {\n type: Number,\n required: true\n },\n right: Boolean,\n focusable: Boolean,\n disabled: Boolean,\n checked: Boolean,\n indeterminate: Boolean,\n onCheck: Function\n },\n setup(props) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const NTree = inject(treeInjectionKey);\n function doCheck(value) {\n const { onCheck } = props;\n if (onCheck) {\n onCheck(value);\n }\n }\n function handleUpdateValue(value) {\n doCheck(value);\n }\n return {\n handleUpdateValue,\n mergedTheme: NTree.mergedThemeRef\n };\n },\n render() {\n const { clsPrefix, mergedTheme, checked, indeterminate, disabled, focusable, indent, handleUpdateValue } = this;\n return (h(\"span\", { class: [\n `${clsPrefix}-tree-node-checkbox`,\n this.right && `${clsPrefix}-tree-node-checkbox--right`\n ], style: {\n width: `${indent}px`\n }, \"data-checkbox\": true },\n h(NCheckbox, { focusable: focusable, disabled: disabled, theme: mergedTheme.peers.Checkbox, themeOverrides: mergedTheme.peerOverrides.Checkbox, checked: checked, indeterminate: indeterminate, onUpdateChecked: handleUpdateValue })));\n }\n});\n","import { h, defineComponent, ref, inject } from 'vue';\nimport { render } from '../../_utils';\nimport { treeInjectionKey } from './interface';\nexport default defineComponent({\n name: 'TreeNodeContent',\n props: {\n clsPrefix: {\n type: String,\n required: true\n },\n disabled: Boolean,\n checked: Boolean,\n selected: Boolean,\n onClick: Function,\n onDragstart: Function,\n tmNode: {\n type: Object,\n required: true\n },\n nodeProps: Object\n },\n setup(props) {\n const { renderLabelRef, renderPrefixRef, renderSuffixRef, labelFieldRef } = \n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n inject(treeInjectionKey);\n const selfRef = ref(null);\n function doClick(e) {\n const { onClick } = props;\n if (onClick)\n onClick(e);\n }\n function handleClick(e) {\n doClick(e);\n }\n return {\n selfRef,\n renderLabel: renderLabelRef,\n renderPrefix: renderPrefixRef,\n renderSuffix: renderSuffixRef,\n labelField: labelFieldRef,\n handleClick\n };\n },\n render() {\n const { clsPrefix, labelField, nodeProps, checked = false, selected = false, renderLabel, renderPrefix, renderSuffix, handleClick, onDragstart, tmNode: { rawNode, rawNode: { prefix, suffix, [labelField]: label } } } = this;\n return (h(\"span\", Object.assign({}, nodeProps, { ref: \"selfRef\", class: [`${clsPrefix}-tree-node-content`, nodeProps === null || nodeProps === void 0 ? void 0 : nodeProps.class], onClick: handleClick, draggable: onDragstart === undefined ? undefined : true, onDragstart: onDragstart }),\n renderPrefix || prefix ? (h(\"div\", { class: `${clsPrefix}-tree-node-content__prefix` }, renderPrefix\n ? renderPrefix({\n option: rawNode,\n selected,\n checked\n })\n : render(prefix))) : null,\n h(\"div\", { class: `${clsPrefix}-tree-node-content__text` }, renderLabel\n ? renderLabel({\n option: rawNode,\n selected,\n checked\n })\n : render(label)),\n renderSuffix || suffix ? (h(\"div\", { class: `${clsPrefix}-tree-node-content__suffix` }, renderSuffix\n ? renderSuffix({\n option: rawNode,\n selected,\n checked\n })\n : render(suffix))) : null));\n }\n});\n","import { h } from 'vue';\nexport function renderDropMark({ position, offsetLevel, indent, el }) {\n const style = {\n position: 'absolute',\n boxSizing: 'border-box',\n right: 0\n };\n if (position === 'inside') {\n style.left = 0;\n style.top = 0;\n style.bottom = 0;\n style.borderRadius = 'inherit';\n style.boxShadow = 'inset 0 0 0 2px var(--n-drop-mark-color)';\n }\n else {\n const cssPosition = position === 'before' ? 'top' : 'bottom';\n style[cssPosition] = 0;\n // The left prop should be modified when tree's style is changed\n // Maybe it is possible to use content left\n style.left = `${el.offsetLeft + 6 - offsetLevel * indent}px`;\n style.height = '2px';\n style.backgroundColor = 'var(--n-drop-mark-color)';\n style.transformOrigin = cssPosition;\n style.borderRadius = '1px';\n style.transform =\n position === 'before' ? 'translateY(-4px)' : 'translateY(4px)';\n }\n return h(\"div\", { style: style });\n}\nexport function defaultAllowDrop({ dropPosition, node }) {\n if (node.isLeaf === false)\n return true;\n if (node.children) {\n return true;\n }\n return dropPosition !== 'inside';\n}\n","import { computed } from 'vue';\nimport { isBrowser } from '../../_utils';\nexport function useMergedCheckStrategy(props) {\n return computed(() => (props.leafOnly ? 'child' : props.checkStrategy));\n}\nexport function isNodeDisabled(node, disabledField) {\n return !!node.rawNode[disabledField];\n}\nfunction traverse(nodes, childrenField, callback, callbackAfter) {\n nodes === null || nodes === void 0 ? void 0 : nodes.forEach((node) => {\n callback(node);\n traverse(node[childrenField], childrenField, callback, callbackAfter);\n callbackAfter(node);\n });\n}\nexport function keysWithFilter(nodes, pattern, keyField, childrenField, filter) {\n const keys = new Set();\n const highlightKeySet = new Set();\n const path = [];\n traverse(nodes, childrenField, (node) => {\n path.push(node);\n if (filter(pattern, node)) {\n highlightKeySet.add(node[keyField]);\n for (let i = path.length - 2; i >= 0; --i) {\n if (!keys.has(path[i][keyField])) {\n keys.add(path[i][keyField]);\n }\n else {\n return;\n }\n }\n }\n }, () => {\n path.pop();\n });\n return {\n expandedKeys: Array.from(keys),\n highlightKeySet\n };\n}\nconst emptyImage = null;\nif (isBrowser && Image) {\n const emptyImage = new Image();\n emptyImage.src =\n 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';\n}\nexport { emptyImage };\nexport function filterTree(tree, filter, pattern, keyField, childrenField) {\n const visitedTailKeys = new Set();\n const visitedNonTailKeys = new Set();\n const highlightKeySet = new Set();\n const expandedKeys = [];\n const filteredTree = [];\n const path = [];\n function visit(t) {\n t.forEach((n) => {\n path.push(n);\n if (filter(pattern, n)) {\n visitedTailKeys.add(n[keyField]);\n highlightKeySet.add(n[keyField]);\n for (let i = path.length - 2; i >= 0; --i) {\n const key = path[i][keyField];\n if (!visitedNonTailKeys.has(key)) {\n visitedNonTailKeys.add(key);\n if (visitedTailKeys.has(key)) {\n visitedTailKeys.delete(key);\n }\n }\n else {\n break;\n }\n }\n }\n const children = n[childrenField];\n if (children) {\n visit(children);\n }\n path.pop();\n });\n }\n visit(tree);\n function build(t, sibs) {\n t.forEach((n) => {\n const key = n[keyField];\n const isVisitedTail = visitedTailKeys.has(key);\n const isVisitedNonTail = visitedNonTailKeys.has(key);\n if (!isVisitedTail && !isVisitedNonTail)\n return;\n const children = n[childrenField];\n if (children) {\n if (isVisitedTail) {\n // If it is visited path tail, use origin node\n sibs.push(n);\n }\n else {\n // It it is not visited path tail, use cloned node\n expandedKeys.push(key);\n const clonedNode = Object.assign(Object.assign({}, n), { [childrenField]: [] });\n sibs.push(clonedNode);\n build(children, clonedNode[childrenField]);\n }\n }\n else {\n sibs.push(n);\n }\n });\n }\n build(tree, filteredTree);\n return {\n filteredTree,\n highlightKeySet,\n expandedKeys\n };\n}\n","import { h, inject, computed, defineComponent, ref, onMounted } from 'vue';\nimport { useMemo } from 'vooks';\nimport { happensIn, repeat } from 'seemly';\nimport { createDataKey } from '../../_utils';\nimport NTreeNodeSwitcher from './TreeNodeSwitcher';\nimport NTreeNodeCheckbox from './TreeNodeCheckbox';\nimport NTreeNodeContent from './TreeNodeContent';\nimport { treeInjectionKey } from './interface';\nimport { renderDropMark } from './dnd';\nimport { isNodeDisabled } from './utils';\nconst TreeNode = defineComponent({\n name: 'TreeNode',\n props: {\n clsPrefix: {\n type: String,\n required: true\n },\n tmNode: {\n type: Object,\n required: true\n }\n },\n setup(props) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const NTree = inject(treeInjectionKey);\n const { droppingNodeParentRef, droppingMouseNodeRef, draggingNodeRef, droppingPositionRef, droppingOffsetLevelRef, nodePropsRef, indentRef, blockLineRef, checkboxPlacementRef, checkOnClickRef, disabledFieldRef, showLineRef } = NTree;\n const checkboxDisabledRef = useMemo(() => !!props.tmNode.rawNode.checkboxDisabled);\n const nodeIsDisabledRef = useMemo(() => {\n return isNodeDisabled(props.tmNode, disabledFieldRef.value);\n });\n const disabledRef = useMemo(() => NTree.disabledRef.value || nodeIsDisabledRef.value);\n const resolvedNodePropsRef = computed(() => {\n const { value: nodeProps } = nodePropsRef;\n if (!nodeProps)\n return undefined;\n return nodeProps({ option: props.tmNode.rawNode });\n });\n // used for drag and drop\n const contentInstRef = ref(null);\n // must be non-reactive\n const contentElRef = { value: null };\n onMounted(() => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n contentElRef.value = contentInstRef.value.$el;\n });\n function handleSwitcherClick() {\n const { tmNode } = props;\n if (!tmNode.isLeaf && !tmNode.shallowLoaded) {\n if (!NTree.loadingKeysRef.value.has(tmNode.key)) {\n NTree.loadingKeysRef.value.add(tmNode.key);\n }\n else {\n return;\n }\n const { onLoadRef: { value: onLoad } } = NTree;\n if (onLoad) {\n void onLoad(tmNode.rawNode)\n .then((value) => {\n if (value !== false) {\n NTree.handleSwitcherClick(tmNode);\n }\n })\n .finally(() => {\n NTree.loadingKeysRef.value.delete(tmNode.key);\n });\n }\n }\n else {\n NTree.handleSwitcherClick(tmNode);\n }\n }\n const selectableRef = useMemo(() => !nodeIsDisabledRef.value &&\n NTree.selectableRef.value &&\n (NTree.internalTreeSelect\n ? NTree.mergedCheckStrategyRef.value !== 'child' ||\n (NTree.multipleRef.value && NTree.cascadeRef.value) ||\n props.tmNode.isLeaf\n : true));\n const checkableRef = useMemo(() => NTree.checkableRef.value &&\n (NTree.cascadeRef.value ||\n NTree.mergedCheckStrategyRef.value !== 'child' ||\n props.tmNode.isLeaf));\n const checkedRef = useMemo(() => NTree.displayedCheckedKeysRef.value.includes(props.tmNode.key));\n const mergedCheckOnClickRef = useMemo(() => {\n const { value: checkable } = checkableRef;\n if (!checkable)\n return false;\n const { value: checkOnClick } = checkOnClickRef;\n const { tmNode } = props;\n if (typeof checkOnClick === 'boolean') {\n return !tmNode.disabled && checkOnClick;\n }\n return checkOnClick(props.tmNode.rawNode);\n });\n function _handleClick(e) {\n const { value: expandOnClick } = NTree.expandOnClickRef;\n const { value: selectable } = selectableRef;\n const { value: mergedCheckOnClick } = mergedCheckOnClickRef;\n if (!selectable && !expandOnClick && !mergedCheckOnClick)\n return;\n if (happensIn(e, 'checkbox') || happensIn(e, 'switcher'))\n return;\n const { tmNode } = props;\n if (selectable) {\n NTree.handleSelect(tmNode);\n }\n if (expandOnClick && !tmNode.isLeaf) {\n handleSwitcherClick();\n }\n if (mergedCheckOnClick) {\n handleCheck(!checkedRef.value);\n }\n }\n function handleContentClick(e) {\n var _a, _b;\n if (blockLineRef.value)\n return;\n if (!disabledRef.value)\n _handleClick(e);\n (_b = (_a = resolvedNodePropsRef.value) === null || _a === void 0 ? void 0 : _a.onClick) === null || _b === void 0 ? void 0 : _b.call(_a, e);\n }\n function handleLineClick(e) {\n var _a, _b;\n if (!blockLineRef.value)\n return;\n if (!disabledRef.value) {\n _handleClick(e);\n }\n (_b = (_a = resolvedNodePropsRef.value) === null || _a === void 0 ? void 0 : _a.onClick) === null || _b === void 0 ? void 0 : _b.call(_a, e);\n }\n function handleCheck(checked) {\n NTree.handleCheck(props.tmNode, checked);\n }\n // Dnd\n function handleDragStart(e) {\n NTree.handleDragStart({\n event: e,\n node: props.tmNode\n });\n }\n function handleDragEnter(e) {\n if (e.currentTarget !== e.target) {\n return;\n }\n NTree.handleDragEnter({\n event: e,\n node: props.tmNode\n });\n }\n function handleDragOver(e) {\n e.preventDefault(); // if not prevent, drop event won't be fired...\n NTree.handleDragOver({\n event: e,\n node: props.tmNode\n });\n }\n function handleDragEnd(e) {\n NTree.handleDragEnd({\n event: e,\n node: props.tmNode\n });\n }\n function handleDragLeave(e) {\n if (e.currentTarget !== e.target) {\n return;\n }\n NTree.handleDragLeave({\n event: e,\n node: props.tmNode\n });\n }\n function handleDrop(e) {\n e.preventDefault();\n if (droppingPositionRef.value !== null) {\n NTree.handleDrop({\n event: e,\n node: props.tmNode,\n dropPosition: droppingPositionRef.value\n });\n }\n }\n const indentNodes = computed(() => {\n const { clsPrefix } = props;\n const { value: indent } = indentRef;\n if (showLineRef.value) {\n const indentNodes = [];\n let cursor = props.tmNode.parent;\n while (cursor) {\n if (cursor.isLastChild) {\n indentNodes.push(h(\"div\", { class: `${clsPrefix}-tree-node-indent` },\n h(\"div\", { style: { width: `${indent}px` } })));\n }\n else {\n indentNodes.push(h(\"div\", { class: [\n `${clsPrefix}-tree-node-indent`,\n `${clsPrefix}-tree-node-indent--show-line`\n ] },\n h(\"div\", { style: { width: `${indent}px` } })));\n }\n cursor = cursor.parent;\n }\n return indentNodes.reverse();\n }\n else {\n return repeat(props.tmNode.level, h(\"div\", { class: `${props.clsPrefix}-tree-node-indent` },\n h(\"div\", { style: { width: `${indent}px` } })));\n }\n });\n return {\n showDropMark: useMemo(() => {\n const { value: draggingNode } = draggingNodeRef;\n if (!draggingNode)\n return;\n const { value: droppingPosition } = droppingPositionRef;\n if (!droppingPosition)\n return;\n const { value: droppingMouseNode } = droppingMouseNodeRef;\n if (!droppingMouseNode) {\n return;\n }\n const { tmNode } = props;\n if (tmNode.key === droppingMouseNode.key)\n return true;\n return false;\n }),\n showDropMarkAsParent: useMemo(() => {\n const { value: droppingNodeParent } = droppingNodeParentRef;\n if (!droppingNodeParent)\n return false;\n const { tmNode } = props;\n const { value: droppingPosition } = droppingPositionRef;\n if (droppingPosition === 'before' || droppingPosition === 'after') {\n return droppingNodeParent.key === tmNode.key;\n }\n return false;\n }),\n pending: useMemo(() => NTree.pendingNodeKeyRef.value === props.tmNode.key),\n loading: useMemo(() => NTree.loadingKeysRef.value.has(props.tmNode.key)),\n highlight: useMemo(() => {\n var _a;\n return (_a = NTree.highlightKeySetRef.value) === null || _a === void 0 ? void 0 : _a.has(props.tmNode.key);\n }),\n checked: checkedRef,\n indeterminate: useMemo(() => NTree.displayedIndeterminateKeysRef.value.includes(props.tmNode.key)),\n selected: useMemo(() => NTree.mergedSelectedKeysRef.value.includes(props.tmNode.key)),\n expanded: useMemo(() => NTree.mergedExpandedKeysRef.value.includes(props.tmNode.key)),\n disabled: disabledRef,\n checkable: checkableRef,\n mergedCheckOnClick: mergedCheckOnClickRef,\n checkboxDisabled: checkboxDisabledRef,\n selectable: selectableRef,\n expandOnClick: NTree.expandOnClickRef,\n internalScrollable: NTree.internalScrollableRef,\n draggable: NTree.draggableRef,\n blockLine: blockLineRef,\n nodeProps: resolvedNodePropsRef,\n checkboxFocusable: NTree.internalCheckboxFocusableRef,\n droppingPosition: droppingPositionRef,\n droppingOffsetLevel: droppingOffsetLevelRef,\n indent: indentRef,\n checkboxPlacement: checkboxPlacementRef,\n showLine: showLineRef,\n contentInstRef,\n contentElRef,\n indentNodes,\n handleCheck,\n handleDrop,\n handleDragStart,\n handleDragEnter,\n handleDragOver,\n handleDragEnd,\n handleDragLeave,\n handleLineClick,\n handleContentClick,\n handleSwitcherClick\n };\n },\n render() {\n const { tmNode, clsPrefix, checkable, expandOnClick, selectable, selected, checked, highlight, draggable, blockLine, indent, indentNodes, disabled, pending, internalScrollable, nodeProps, checkboxPlacement } = this;\n // drag start not inside\n // it need to be append to node itself, not wrapper\n const dragEventHandlers = draggable && !disabled\n ? {\n onDragenter: this.handleDragEnter,\n onDragleave: this.handleDragLeave,\n onDragend: this.handleDragEnd,\n onDrop: this.handleDrop,\n onDragover: this.handleDragOver\n }\n : undefined;\n // In non virtual mode, there's no evidence that which element should be\n // scrolled to, so we need data-key to query the target element.\n const dataKey = internalScrollable ? createDataKey(tmNode.key) : undefined;\n const checkboxOnRight = checkboxPlacement === 'right';\n const checkboxNode = checkable ? (h(NTreeNodeCheckbox, { indent: indent, right: checkboxOnRight, focusable: this.checkboxFocusable, disabled: disabled || this.checkboxDisabled, clsPrefix: clsPrefix, checked: this.checked, indeterminate: this.indeterminate, onCheck: this.handleCheck })) : null;\n return (h(\"div\", Object.assign({ class: `${clsPrefix}-tree-node-wrapper` }, dragEventHandlers),\n h(\"div\", Object.assign({}, (blockLine ? nodeProps : undefined), { class: [\n `${clsPrefix}-tree-node`,\n {\n [`${clsPrefix}-tree-node--selected`]: selected,\n [`${clsPrefix}-tree-node--checkable`]: checkable,\n [`${clsPrefix}-tree-node--highlight`]: highlight,\n [`${clsPrefix}-tree-node--pending`]: pending,\n [`${clsPrefix}-tree-node--disabled`]: disabled,\n [`${clsPrefix}-tree-node--selectable`]: selectable,\n [`${clsPrefix}-tree-node--clickable`]: selectable || expandOnClick || this.mergedCheckOnClick\n },\n nodeProps === null || nodeProps === void 0 ? void 0 : nodeProps.class\n ], \"data-key\": dataKey, draggable: draggable && blockLine, onClick: this.handleLineClick, onDragstart: draggable && blockLine && !disabled\n ? this.handleDragStart\n : undefined }),\n indentNodes,\n tmNode.isLeaf && this.showLine ? (h(\"div\", { class: [\n `${clsPrefix}-tree-node-indent`,\n `${clsPrefix}-tree-node-indent--show-line`,\n tmNode.isLeaf && `${clsPrefix}-tree-node-indent--is-leaf`,\n tmNode.isLastChild &&\n `${clsPrefix}-tree-node-indent--last-child`\n ] },\n h(\"div\", { style: { width: `${indent}px` } }))) : (h(NTreeNodeSwitcher, { clsPrefix: clsPrefix, expanded: this.expanded, selected: selected, loading: this.loading, hide: tmNode.isLeaf, tmNode: this.tmNode, indent: indent, onClick: this.handleSwitcherClick })),\n !checkboxOnRight ? checkboxNode : null,\n h(NTreeNodeContent, { ref: \"contentInstRef\", clsPrefix: clsPrefix, checked: checked, selected: selected, onClick: this.handleContentClick, nodeProps: blockLine ? undefined : nodeProps, onDragstart: draggable && !blockLine && !disabled\n ? this.handleDragStart\n : undefined, tmNode: tmNode }),\n draggable\n ? this.showDropMark\n ? renderDropMark({\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n el: this.contentElRef.value,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n position: this.droppingPosition,\n offsetLevel: this.droppingOffsetLevel,\n indent\n })\n : this.showDropMarkAsParent\n ? renderDropMark({\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n el: this.contentElRef.value,\n position: 'inside',\n offsetLevel: this.droppingOffsetLevel,\n indent\n })\n : null\n : null,\n checkboxOnRight ? checkboxNode : null)));\n }\n});\nexport default TreeNode;\n","import { inject, ref } from 'vue';\nimport { treeSelectInjectionKey } from '../../tree-select/src/interface';\nexport function useKeyboard({ props, fNodesRef, mergedExpandedKeysRef, mergedSelectedKeysRef, handleSelect, handleSwitcherClick }) {\n const { value: mergedSelectedKeys } = mergedSelectedKeysRef;\n // If it's used in tree-select, make it take over pending state\n const treeSelectInjection = inject(treeSelectInjectionKey, null);\n const pendingNodeKeyRef = treeSelectInjection\n ? treeSelectInjection.pendingNodeKeyRef\n : ref(mergedSelectedKeys.length\n ? mergedSelectedKeys[mergedSelectedKeys.length - 1]\n : null);\n function handleKeydown(e) {\n if (!props.keyboard)\n return;\n const { value: pendingNodeKey } = pendingNodeKeyRef;\n if (pendingNodeKey === null) {\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n e.preventDefault();\n }\n if (['ArrowDown', 'ArrowUp', 'ArrowLeft', 'ArrowRight'].includes(e.key)) {\n if (pendingNodeKey === null) {\n const { value: fNodes } = fNodesRef;\n let fIndex = 0;\n while (fIndex < fNodes.length) {\n if (!fNodes[fIndex].disabled) {\n pendingNodeKeyRef.value = fNodes[fIndex].key;\n break;\n }\n fIndex += 1;\n }\n }\n }\n }\n else {\n const { value: fNodes } = fNodesRef;\n let fIndex = fNodes.findIndex((tmNode) => tmNode.key === pendingNodeKey);\n if (!~fIndex)\n return;\n if (e.key === 'Enter') {\n handleSelect(fNodes[fIndex]);\n }\n else if (e.key === 'ArrowDown') {\n e.preventDefault();\n fIndex += 1;\n while (fIndex < fNodes.length) {\n if (!fNodes[fIndex].disabled) {\n pendingNodeKeyRef.value = fNodes[fIndex].key;\n break;\n }\n fIndex += 1;\n }\n }\n else if (e.key === 'ArrowUp') {\n e.preventDefault();\n fIndex -= 1;\n while (fIndex >= 0) {\n if (!fNodes[fIndex].disabled) {\n pendingNodeKeyRef.value = fNodes[fIndex].key;\n break;\n }\n fIndex -= 1;\n }\n }\n else if (e.key === 'ArrowLeft') {\n const pendingNode = fNodes[fIndex];\n if (pendingNode.isLeaf ||\n !mergedExpandedKeysRef.value.includes(pendingNodeKey)) {\n const parentTmNode = pendingNode.getParent();\n if (parentTmNode) {\n pendingNodeKeyRef.value = parentTmNode.key;\n }\n }\n else {\n handleSwitcherClick(pendingNode);\n }\n }\n else if (e.key === 'ArrowRight') {\n const pendingNode = fNodes[fIndex];\n if (pendingNode.isLeaf)\n return;\n if (!mergedExpandedKeysRef.value.includes(pendingNodeKey)) {\n handleSwitcherClick(pendingNode);\n }\n else {\n // Tha same as ArrowDown\n fIndex += 1;\n while (fIndex < fNodes.length) {\n if (!fNodes[fIndex].disabled) {\n pendingNodeKeyRef.value = fNodes[fIndex].key;\n break;\n }\n fIndex += 1;\n }\n }\n }\n }\n }\n return {\n pendingNodeKeyRef,\n handleKeydown\n };\n}\n","import { h, defineComponent } from 'vue';\nimport { pxfy } from 'seemly';\nimport FadeInExpandTransition from '../../_internal/fade-in-expand-transition';\nimport TreeNode from './TreeNode';\nexport default defineComponent({\n name: 'TreeMotionWrapper',\n props: {\n clsPrefix: {\n type: String,\n required: true\n },\n height: Number,\n nodes: {\n type: Array,\n required: true\n },\n mode: {\n type: String,\n required: true\n },\n onAfterEnter: {\n type: Function,\n required: true\n }\n },\n render() {\n const { clsPrefix } = this;\n return (h(FadeInExpandTransition, { onAfterEnter: this.onAfterEnter, appear: true, reverse: this.mode === 'collapse' }, {\n default: () => (h(\"div\", { class: [\n `${clsPrefix}-tree-motion-wrapper`,\n `${clsPrefix}-tree-motion-wrapper--${this.mode}`\n ], style: {\n height: pxfy(this.height)\n } }, this.nodes.map((node) => (h(TreeNode, { clsPrefix: clsPrefix, tmNode: node })))))\n }));\n }\n});\n","import { c, cB, cE, cM, cNotM } from '../../../_utils/cssr';\nimport { iconSwitchTransition } from '../../../_styles/transitions/icon-switch.cssr';\nimport { fadeInHeightExpandTransition } from '../../../_styles/transitions/fade-in-height-expand.cssr';\nconst iconSwitchTransitionNode = iconSwitchTransition();\n// vars:\n// --n-arrow-color\n// --n-bezier\n// --n-font-size\n// --n-node-border-radius\n// --n-node-color-active\n// --n-node-color-hover\n// --n-node-color-pressed\n// --n-node-text-color\n// --n-node-text-color-disabled\n// --n-node-wrapper-padding\n// --n-line-offset-top\n// --n-line-offset-bottom\n// --n-node-content-height\n// --n-line-height\nexport default cB('tree', `\n font-size: var(--n-font-size);\n outline: none;\n`, [c('ul, li', `\n margin: 0;\n padding: 0;\n list-style: none;\n `), c('>', [cB('tree-node', [c('&:first-child', 'margin-top: 0;')])]), cB('tree-motion-wrapper', [cM('expand', [fadeInHeightExpandTransition({\n duration: '0.2s'\n})]), cM('collapse', [fadeInHeightExpandTransition({\n duration: '0.2s',\n reverse: true\n})])]), cB('tree-node-wrapper', `\n box-sizing: border-box;\n padding: var(--n-node-wrapper-padding);\n `), cB('tree-node', `\n transform: translate3d(0,0,0);\n position: relative;\n display: flex;\n border-radius: var(--n-node-border-radius);\n transition: background-color .3s var(--n-bezier);\n `, [cM('highlight', [cB('tree-node-content', [cE('text', 'border-bottom-color: var(--n-node-text-color-disabled);')])]), cM('disabled', [cB('tree-node-content', `\n color: var(--n-node-text-color-disabled);\n cursor: not-allowed;\n `)]), cNotM('disabled', [cM('clickable', [cB('tree-node-content', `\n cursor: pointer;\n `)])])]), cM('block-node', [cB('tree-node-content', `\n flex: 1;\n min-width: 0;\n `)]), cNotM('block-line', [cB('tree-node', [cNotM('disabled', [cB('tree-node-content', [c('&:hover', 'background: var(--n-node-color-hover);')]), cM('selectable', [cB('tree-node-content', [c('&:active', 'background: var(--n-node-color-pressed);')])]), cM('pending', [cB('tree-node-content', `\n background: var(--n-node-color-hover);\n `)]), cM('selected', [cB('tree-node-content', 'background: var(--n-node-color-active);')])])])]), cM('block-line', [cB('tree-node', [cNotM('disabled', [c('&:hover', 'background: var(--n-node-color-hover);'), cM('pending', `\n background: var(--n-node-color-hover);\n `), cM('selectable', [cNotM('selected', [c('&:active', 'background: var(--n-node-color-pressed);')])]), cM('selected', 'background: var(--n-node-color-active);')]), cM('disabled', `\n cursor: not-allowed;\n `)])]), cB('tree-node-indent', `\n flex-grow: 0;\n flex-shrink: 0;\n `, [cM('show-line', 'position: relative', [c('&::before', `\n position: absolute;\n left: 50%;\n border-left: 1px solid var(--n-border-color);\n transition: border-color .3s var(--n-bezier);\n transform: translate(-50%);\n content: \"\";\n top: var(--n-line-offset-top);\n bottom: var(--n-line-offset-bottom);\n `), cM('last-child', [c('&::before', `\n bottom: 50%;\n `)]), cM('is-leaf', [c('&::after', `\n position: absolute;\n content: \"\";\n left: calc(50% + 0.5px);\n right: 0;\n bottom: 50%;\n transition: border-color .3s var(--n-bezier);\n border-bottom: 1px solid var(--n-border-color);\n `)])]), cNotM('show-line', 'height: 0;')]), cB('tree-node-switcher', `\n cursor: pointer;\n display: inline-flex;\n flex-shrink: 0;\n height: var(--n-node-content-height);\n align-items: center;\n justify-content: center;\n transition: transform .15s var(--n-bezier);\n vertical-align: bottom;\n `, [cE('icon', `\n position: relative;\n height: 14px;\n width: 14px;\n display: flex;\n color: var(--n-arrow-color);\n transition: color .3s var(--n-bezier);\n font-size: 14px;\n `, [cB('icon', [iconSwitchTransitionNode]), cB('base-loading', `\n color: var(--n-loading-color);\n position: absolute;\n left: 0;\n top: 0;\n right: 0;\n bottom: 0;\n `, [iconSwitchTransitionNode]), cB('base-icon', [iconSwitchTransitionNode])]), cM('hide', 'visibility: hidden;'), cM('expanded', 'transform: rotate(90deg);')]), cB('tree-node-checkbox', `\n display: inline-flex;\n height: var(--n-node-content-height);\n vertical-align: bottom;\n align-items: center;\n justify-content: center;\n `), cB('tree-node-content', `\n user-select: none;\n position: relative;\n display: inline-flex;\n align-items: center;\n min-height: var(--n-node-content-height);\n box-sizing: border-box;\n line-height: var(--n-line-height);\n vertical-align: bottom;\n padding: 0 6px 0 4px;\n cursor: default;\n border-radius: var(--n-node-border-radius);\n color: var(--n-node-text-color);\n transition:\n color .3s var(--n-bezier),\n background-color .3s var(--n-bezier),\n border-color .3s var(--n-bezier);\n `, [c('&:last-child', 'margin-bottom: 0;'), cE('prefix', `\n display: inline-flex;\n margin-right: 8px;\n `), cE('text', `\n border-bottom: 1px solid #0000;\n transition: border-color .3s var(--n-bezier);\n flex-grow: 1;\n max-width: 100%;\n `), cE('suffix', `\n display: inline-flex;\n `)]), cE('empty', 'margin: auto;')]);","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { h, ref, toRef, computed, defineComponent, provide, watch, nextTick, watchEffect, inject } from 'vue';\nimport { createTreeMate, flatten, createIndexGetter } from 'treemate';\nimport { useMergedState } from 'vooks';\nimport { VVirtualList } from 'vueuc';\nimport { depx, getPadding, pxfy } from 'seemly';\nimport { treeSelectInjectionKey } from '../../tree-select/src/interface';\nimport { useConfig, useTheme, useThemeClass, useRtl } from '../../_mixins';\nimport { call, createDataKey, resolveSlot, warn, warnOnce } from '../../_utils';\nimport { NxScrollbar } from '../../_internal';\nimport { treeLight } from '../styles';\nimport { NEmpty } from '../../empty';\nimport NTreeNode from './TreeNode';\nimport { keysWithFilter, emptyImage, filterTree, isNodeDisabled, useMergedCheckStrategy } from './utils';\nimport { useKeyboard } from './keyboard';\nimport { treeInjectionKey } from './interface';\nimport MotionWrapper from './MotionWrapper';\nimport { defaultAllowDrop } from './dnd';\nimport style from './styles/index.cssr';\nexport function createTreeMateOptions(keyField, childrenField, disabledField, getChildren) {\n const settledGetChildren = getChildren ||\n ((node) => {\n return node[childrenField];\n });\n return {\n getIsGroup() {\n return false;\n },\n getKey(node) {\n return node[keyField];\n },\n getChildren: settledGetChildren,\n getDisabled(node) {\n return !!(node[disabledField] || node.checkboxDisabled);\n }\n };\n}\nexport const treeSharedProps = {\n allowCheckingNotLoaded: Boolean,\n filter: Function,\n defaultExpandAll: Boolean,\n expandedKeys: Array,\n keyField: {\n type: String,\n default: 'key'\n },\n labelField: {\n type: String,\n default: 'label'\n },\n childrenField: {\n type: String,\n default: 'children'\n },\n disabledField: {\n type: String,\n default: 'disabled'\n },\n defaultExpandedKeys: {\n type: Array,\n default: () => []\n },\n indeterminateKeys: Array,\n renderSwitcherIcon: Function,\n onUpdateIndeterminateKeys: [Function, Array],\n 'onUpdate:indeterminateKeys': [Function, Array],\n onUpdateExpandedKeys: [Function, Array],\n 'onUpdate:expandedKeys': [Function, Array]\n};\nexport const treeProps = Object.assign(Object.assign(Object.assign(Object.assign({}, useTheme.props), { accordion: Boolean, showIrrelevantNodes: { type: Boolean, default: true }, data: {\n type: Array,\n default: () => []\n }, expandOnDragenter: {\n type: Boolean,\n default: true\n }, expandOnClick: Boolean, checkOnClick: {\n type: [Boolean, Function],\n default: false\n }, cancelable: {\n type: Boolean,\n default: true\n }, checkable: Boolean, draggable: Boolean, blockNode: Boolean, blockLine: Boolean, showLine: Boolean, disabled: Boolean, checkedKeys: Array, defaultCheckedKeys: {\n type: Array,\n default: () => []\n }, selectedKeys: Array, defaultSelectedKeys: {\n type: Array,\n default: () => []\n }, multiple: Boolean, pattern: {\n type: String,\n default: ''\n }, onLoad: Function, cascade: Boolean, selectable: {\n type: Boolean,\n default: true\n }, scrollbarProps: Object, indent: {\n type: Number,\n default: 24\n }, allowDrop: {\n type: Function,\n default: defaultAllowDrop\n }, animated: {\n type: Boolean,\n default: true\n }, checkboxPlacement: {\n type: String,\n default: 'left'\n }, virtualScroll: Boolean, watchProps: Array, renderLabel: Function, renderPrefix: Function, renderSuffix: Function, nodeProps: Function, keyboard: {\n type: Boolean,\n default: true\n }, getChildren: Function, onDragenter: [Function, Array], onDragleave: [Function, Array], onDragend: [Function, Array], onDragstart: [Function, Array], onDragover: [Function, Array], onDrop: [Function, Array], onUpdateCheckedKeys: [Function, Array], 'onUpdate:checkedKeys': [Function, Array], onUpdateSelectedKeys: [Function, Array], 'onUpdate:selectedKeys': [Function, Array] }), treeSharedProps), { \n // internal props for tree-select\n internalTreeSelect: Boolean, internalScrollable: Boolean, internalScrollablePadding: String, \n // use it to display\n internalRenderEmpty: Function, internalHighlightKeySet: Object, internalUnifySelectCheck: Boolean, internalCheckboxFocusable: {\n type: Boolean,\n default: true\n }, internalFocusable: {\n // Make tree-select take over keyboard operations\n type: Boolean,\n default: true\n }, checkStrategy: {\n type: String,\n default: 'all'\n }, \n /**\n * @deprecated\n */\n leafOnly: Boolean });\nexport default defineComponent({\n name: 'Tree',\n props: treeProps,\n setup(props) {\n if (process.env.NODE_ENV !== 'production') {\n watchEffect(() => {\n if (props.leafOnly) {\n warnOnce('tree', '`leaf-only` is deprecated, please use `check-strategy=\"child\"` instead');\n }\n });\n }\n const { mergedClsPrefixRef, inlineThemeDisabled, mergedRtlRef } = useConfig(props);\n const rtlEnabledRef = useRtl('Tree', mergedRtlRef, mergedClsPrefixRef);\n const themeRef = useTheme('Tree', '-tree', style, treeLight, props, mergedClsPrefixRef);\n const selfElRef = ref(null);\n const scrollbarInstRef = ref(null);\n const virtualListInstRef = ref(null);\n function getScrollContainer() {\n var _a;\n return (_a = virtualListInstRef.value) === null || _a === void 0 ? void 0 : _a.listElRef;\n }\n function getScrollContent() {\n var _a;\n return (_a = virtualListInstRef.value) === null || _a === void 0 ? void 0 : _a.itemsElRef;\n }\n const mergedFilterRef = computed(() => {\n const { filter } = props;\n if (filter)\n return filter;\n const { labelField } = props;\n return (pattern, node) => {\n if (!pattern.length)\n return true;\n const label = node[labelField];\n if (typeof label === 'string') {\n return label.toLowerCase().includes(pattern.toLowerCase());\n }\n return false;\n };\n });\n const filteredTreeInfoRef = computed(() => {\n const { pattern } = props;\n if (!pattern) {\n return {\n filteredTree: props.data,\n highlightKeySet: null,\n expandedKeys: undefined\n };\n }\n if (!pattern.length || !mergedFilterRef.value) {\n return {\n filteredTree: props.data,\n highlightKeySet: null,\n expandedKeys: undefined\n };\n }\n return filterTree(props.data, mergedFilterRef.value, pattern, props.keyField, props.childrenField);\n });\n // We don't expect data source to change so we just determine it once\n const displayTreeMateRef = computed(() => createTreeMate(props.showIrrelevantNodes\n ? props.data\n : filteredTreeInfoRef.value.filteredTree, createTreeMateOptions(props.keyField, props.childrenField, props.disabledField, props.getChildren)));\n const treeSelectInjection = inject(treeSelectInjectionKey, null);\n const dataTreeMateRef = props.internalTreeSelect\n ? treeSelectInjection.dataTreeMate\n : displayTreeMateRef;\n const { watchProps } = props;\n const uncontrolledCheckedKeysRef = ref([]);\n if (watchProps === null || watchProps === void 0 ? void 0 : watchProps.includes('defaultCheckedKeys')) {\n watchEffect(() => {\n uncontrolledCheckedKeysRef.value = props.defaultCheckedKeys;\n });\n }\n else {\n uncontrolledCheckedKeysRef.value = props.defaultCheckedKeys;\n }\n const controlledCheckedKeysRef = toRef(props, 'checkedKeys');\n const mergedCheckedKeysRef = useMergedState(controlledCheckedKeysRef, uncontrolledCheckedKeysRef);\n const checkedStatusRef = computed(() => {\n const value = dataTreeMateRef.value.getCheckedKeys(mergedCheckedKeysRef.value, {\n cascade: props.cascade,\n allowNotLoaded: props.allowCheckingNotLoaded\n });\n return value;\n });\n const mergedCheckStrategyRef = useMergedCheckStrategy(props);\n const displayedCheckedKeysRef = computed(() => {\n return checkedStatusRef.value.checkedKeys;\n });\n const displayedIndeterminateKeysRef = computed(() => {\n const { indeterminateKeys } = props;\n if (indeterminateKeys !== undefined)\n return indeterminateKeys;\n return checkedStatusRef.value.indeterminateKeys;\n });\n const uncontrolledSelectedKeysRef = ref([]);\n if (watchProps === null || watchProps === void 0 ? void 0 : watchProps.includes('defaultSelectedKeys')) {\n watchEffect(() => {\n uncontrolledSelectedKeysRef.value = props.defaultSelectedKeys;\n });\n }\n else {\n uncontrolledSelectedKeysRef.value = props.defaultSelectedKeys;\n }\n const controlledSelectedKeysRef = toRef(props, 'selectedKeys');\n const mergedSelectedKeysRef = useMergedState(controlledSelectedKeysRef, uncontrolledSelectedKeysRef);\n const uncontrolledExpandedKeysRef = ref([]);\n const initUncontrolledExpandedKeys = (keys) => {\n uncontrolledExpandedKeysRef.value = props.defaultExpandAll\n ? dataTreeMateRef.value.getNonLeafKeys()\n : keys === undefined\n ? props.defaultExpandedKeys\n : keys;\n };\n if (watchProps === null || watchProps === void 0 ? void 0 : watchProps.includes('defaultExpandedKeys')) {\n // if watching defaultExpandedKeys, we use access props.defaultExpandedKeys inside initiator\n watchEffect(() => {\n initUncontrolledExpandedKeys(undefined);\n });\n }\n else {\n // We by default watchEffect since if defaultExpandAll is true, we should remain tree expand if data changes\n watchEffect(() => {\n initUncontrolledExpandedKeys(props.defaultExpandedKeys);\n });\n }\n const controlledExpandedKeysRef = toRef(props, 'expandedKeys');\n const mergedExpandedKeysRef = useMergedState(controlledExpandedKeysRef, uncontrolledExpandedKeysRef);\n const fNodesRef = computed(() => displayTreeMateRef.value.getFlattenedNodes(mergedExpandedKeysRef.value));\n const { pendingNodeKeyRef, handleKeydown } = useKeyboard({\n props,\n mergedSelectedKeysRef,\n fNodesRef,\n mergedExpandedKeysRef,\n handleSelect,\n handleSwitcherClick\n });\n let expandTimerId = null;\n let nodeKeyToBeExpanded = null;\n const uncontrolledHighlightKeySetRef = ref(new Set());\n const controlledHighlightKeySetRef = computed(() => {\n return (props.internalHighlightKeySet ||\n filteredTreeInfoRef.value.highlightKeySet);\n });\n const mergedHighlightKeySetRef = useMergedState(controlledHighlightKeySetRef, uncontrolledHighlightKeySetRef);\n const loadingKeysRef = ref(new Set());\n const expandedNonLoadingKeysRef = computed(() => {\n return mergedExpandedKeysRef.value.filter((key) => !loadingKeysRef.value.has(key));\n });\n let dragStartX = 0;\n const draggingNodeRef = ref(null);\n const droppingNodeRef = ref(null);\n const droppingMouseNodeRef = ref(null);\n const droppingPositionRef = ref(null);\n const droppingOffsetLevelRef = ref(0);\n const droppingNodeParentRef = computed(() => {\n const { value: droppingNode } = droppingNodeRef;\n if (!droppingNode)\n return null;\n // May avoid overlap between line mark of first child & rect mark of parent\n // if (droppingNode.isFirstChild && droppingPositionRef.value === 'before') {\n // return null\n // }\n return droppingNode.parent;\n });\n // shallow watch data\n watch(toRef(props, 'data'), () => {\n loadingKeysRef.value.clear();\n pendingNodeKeyRef.value = null;\n resetDndState();\n }, {\n deep: false\n });\n let expandAnimationDisabled = false;\n const disableExpandAnimationForOneTick = () => {\n expandAnimationDisabled = true;\n void nextTick(() => {\n expandAnimationDisabled = false;\n });\n };\n let memoizedExpandedKeys;\n watch(toRef(props, 'pattern'), (value, oldValue) => {\n if (props.showIrrelevantNodes) {\n memoizedExpandedKeys = undefined;\n if (value) {\n const { expandedKeys: expandedKeysAfterChange, highlightKeySet } = keysWithFilter(props.data, props.pattern, props.keyField, props.childrenField, mergedFilterRef.value);\n uncontrolledHighlightKeySetRef.value = highlightKeySet;\n disableExpandAnimationForOneTick();\n doUpdateExpandedKeys(expandedKeysAfterChange, getOptionsByKeys(expandedKeysAfterChange), { node: null, action: 'filter' });\n }\n else {\n uncontrolledHighlightKeySetRef.value = new Set();\n }\n }\n else {\n if (!value.length) {\n if (memoizedExpandedKeys !== undefined) {\n disableExpandAnimationForOneTick();\n doUpdateExpandedKeys(memoizedExpandedKeys, getOptionsByKeys(memoizedExpandedKeys), { node: null, action: 'filter' });\n }\n }\n else {\n if (!oldValue.length) {\n memoizedExpandedKeys = mergedExpandedKeysRef.value;\n }\n const { expandedKeys } = filteredTreeInfoRef.value;\n if (expandedKeys !== undefined) {\n disableExpandAnimationForOneTick();\n doUpdateExpandedKeys(expandedKeys, getOptionsByKeys(expandedKeys), {\n node: null,\n action: 'filter'\n });\n }\n }\n }\n });\n function triggerLoading(node) {\n return __awaiter(this, void 0, void 0, function* () {\n const { onLoad } = props;\n if (!onLoad) {\n if (process.env.NODE_ENV !== 'production') {\n warn('tree', 'There is unloaded node in data but props.onLoad is not specified.');\n }\n yield Promise.resolve();\n return;\n }\n const { value: loadingKeys } = loadingKeysRef;\n if (!loadingKeys.has(node.key)) {\n loadingKeys.add(node.key);\n try {\n const loadResult = yield onLoad(node.rawNode);\n if (loadResult === false) {\n resetDragExpandState();\n }\n }\n catch (loadError) {\n console.error(loadError);\n resetDragExpandState();\n }\n loadingKeys.delete(node.key);\n }\n });\n }\n watchEffect(() => {\n var _a;\n const { value: displayTreeMate } = displayTreeMateRef;\n if (!displayTreeMate)\n return;\n const { getNode } = displayTreeMate;\n (_a = mergedExpandedKeysRef.value) === null || _a === void 0 ? void 0 : _a.forEach((key) => {\n const node = getNode(key);\n if (node && !node.shallowLoaded) {\n void triggerLoading(node);\n }\n });\n });\n // animation in progress\n const aipRef = ref(false);\n // animation flattened nodes\n const afNodesRef = ref([]);\n // Note: Since the virtual list depends on min height, if there's a node\n // whose height starts from 0, the virtual list will have a wrong height\n // during animation. This will seldom cause wired scrollbar status. It is\n // fixable and need some changes in vueuc, I've no time so I just leave it\n // here. Maybe the bug won't be fixed during the life time of the project.\n watch(expandedNonLoadingKeysRef, (value, prevValue) => {\n if (!props.animated || expandAnimationDisabled) {\n void nextTick(syncScrollbar);\n return;\n }\n const nodeHeight = depx(themeRef.value.self.nodeHeight);\n const prevVSet = new Set(prevValue);\n let addedKey = null;\n let removedKey = null;\n for (const expandedKey of value) {\n if (!prevVSet.has(expandedKey)) {\n if (addedKey !== null)\n return; // multi expand, not triggered by click\n addedKey = expandedKey;\n }\n }\n const currentVSet = new Set(value);\n for (const expandedKey of prevValue) {\n if (!currentVSet.has(expandedKey)) {\n if (removedKey !== null)\n return; // multi collapse, not triggered by click\n removedKey = expandedKey;\n }\n }\n if (addedKey === null && removedKey === null) {\n // 1. multi action, not triggered by click\n // 2. no action, don't know what happened\n return;\n }\n const { virtualScroll } = props;\n const viewportHeight = (virtualScroll ? virtualListInstRef.value.listElRef : selfElRef.value).offsetHeight;\n const viewportItemCount = Math.ceil(viewportHeight / nodeHeight) + 1;\n // play add animation\n let baseExpandedKeys;\n if (addedKey !== null) {\n baseExpandedKeys = prevValue;\n }\n if (removedKey !== null) {\n if (baseExpandedKeys === undefined) {\n baseExpandedKeys = value;\n }\n else {\n baseExpandedKeys = baseExpandedKeys.filter((key) => key !== removedKey);\n }\n }\n aipRef.value = true;\n afNodesRef.value =\n displayTreeMateRef.value.getFlattenedNodes(baseExpandedKeys);\n if (addedKey !== null) {\n const expandedNodeIndex = afNodesRef.value.findIndex((node) => node.key === addedKey);\n if (~expandedNodeIndex) {\n const children = // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n afNodesRef.value[expandedNodeIndex].children;\n // sometimes user will pass leaf keys in\n if (children) {\n const expandedChildren = flatten(children, value);\n afNodesRef.value.splice(expandedNodeIndex + 1, 0, {\n __motion: true,\n mode: 'expand',\n height: virtualScroll\n ? expandedChildren.length * nodeHeight\n : undefined,\n nodes: virtualScroll\n ? expandedChildren.slice(0, viewportItemCount)\n : expandedChildren\n });\n }\n }\n }\n if (removedKey !== null) {\n const collapsedNodeIndex = afNodesRef.value.findIndex((node) => node.key === removedKey);\n if (~collapsedNodeIndex) {\n const collapsedNodeChildren = afNodesRef.value[collapsedNodeIndex].children;\n // Sometime the whole tree is change, remove a key doesn't mean it is collapsed,\n // but maybe children removed\n if (!collapsedNodeChildren)\n return;\n // play remove animation\n aipRef.value = true;\n const collapsedChildren = flatten(collapsedNodeChildren, value);\n afNodesRef.value.splice(collapsedNodeIndex + 1, 0, {\n __motion: true,\n mode: 'collapse',\n height: virtualScroll\n ? collapsedChildren.length * nodeHeight\n : undefined,\n nodes: virtualScroll\n ? collapsedChildren.slice(0, viewportItemCount)\n : collapsedChildren\n });\n }\n }\n });\n const getFIndexRef = computed(() => {\n return createIndexGetter(fNodesRef.value);\n });\n const mergedFNodesRef = computed(() => {\n if (aipRef.value)\n return afNodesRef.value;\n else\n return fNodesRef.value;\n });\n function syncScrollbar() {\n const { value: scrollbarInst } = scrollbarInstRef;\n if (scrollbarInst)\n scrollbarInst.sync();\n }\n function handleAfterEnter() {\n aipRef.value = false;\n if (props.virtualScroll) {\n // If virtual scroll, we won't listen to resize during animation, so\n // resize callback of virtual list won't be called and as a result\n // scrollbar won't sync. We need to sync scrollbar manually.\n void nextTick(syncScrollbar);\n }\n }\n function getOptionsByKeys(keys) {\n const { getNode } = dataTreeMateRef.value;\n return keys.map((key) => { var _a; return ((_a = getNode(key)) === null || _a === void 0 ? void 0 : _a.rawNode) || null; });\n }\n function doUpdateExpandedKeys(value, option, meta) {\n const { 'onUpdate:expandedKeys': _onUpdateExpandedKeys, onUpdateExpandedKeys } = props;\n uncontrolledExpandedKeysRef.value = value;\n if (_onUpdateExpandedKeys) {\n call(_onUpdateExpandedKeys, value, option, meta);\n }\n if (onUpdateExpandedKeys) {\n call(onUpdateExpandedKeys, value, option, meta);\n }\n }\n function doUpdateCheckedKeys(value, option, meta) {\n const { 'onUpdate:checkedKeys': _onUpdateCheckedKeys, onUpdateCheckedKeys } = props;\n uncontrolledCheckedKeysRef.value = value;\n if (onUpdateCheckedKeys) {\n call(onUpdateCheckedKeys, value, option, meta);\n }\n if (_onUpdateCheckedKeys) {\n call(_onUpdateCheckedKeys, value, option, meta);\n }\n }\n function doUpdateIndeterminateKeys(value, option) {\n const { 'onUpdate:indeterminateKeys': _onUpdateIndeterminateKeys, onUpdateIndeterminateKeys } = props;\n if (_onUpdateIndeterminateKeys) {\n call(_onUpdateIndeterminateKeys, value, option);\n }\n if (onUpdateIndeterminateKeys) {\n call(onUpdateIndeterminateKeys, value, option);\n }\n }\n function doUpdateSelectedKeys(value, option, meta) {\n const { 'onUpdate:selectedKeys': _onUpdateSelectedKeys, onUpdateSelectedKeys } = props;\n uncontrolledSelectedKeysRef.value = value;\n if (onUpdateSelectedKeys) {\n call(onUpdateSelectedKeys, value, option, meta);\n }\n if (_onUpdateSelectedKeys) {\n call(_onUpdateSelectedKeys, value, option, meta);\n }\n }\n // Drag & Drop\n function doDragEnter(info) {\n const { onDragenter } = props;\n if (onDragenter)\n call(onDragenter, info);\n }\n function doDragLeave(info) {\n const { onDragleave } = props;\n if (onDragleave)\n call(onDragleave, info);\n }\n function doDragEnd(info) {\n const { onDragend } = props;\n if (onDragend)\n call(onDragend, info);\n }\n function doDragStart(info) {\n const { onDragstart } = props;\n if (onDragstart)\n call(onDragstart, info);\n }\n function doDragOver(info) {\n const { onDragover } = props;\n if (onDragover)\n call(onDragover, info);\n }\n function doDrop(info) {\n const { onDrop } = props;\n if (onDrop)\n call(onDrop, info);\n }\n function resetDndState() {\n resetDragState();\n resetDropState();\n }\n function resetDragState() {\n draggingNodeRef.value = null;\n }\n function resetDropState() {\n droppingOffsetLevelRef.value = 0;\n droppingNodeRef.value = null;\n droppingMouseNodeRef.value = null;\n droppingPositionRef.value = null;\n resetDragExpandState();\n }\n function resetDragExpandState() {\n if (expandTimerId) {\n window.clearTimeout(expandTimerId);\n expandTimerId = null;\n }\n nodeKeyToBeExpanded = null;\n }\n function handleCheck(node, checked) {\n // We don't guard for leaf only since we have done it in view layer\n if (props.disabled || isNodeDisabled(node, props.disabledField)) {\n return;\n }\n if (props.internalUnifySelectCheck && !props.multiple) {\n handleSelect(node);\n return;\n }\n const checkedAction = checked ? 'check' : 'uncheck';\n const { checkedKeys, indeterminateKeys } = dataTreeMateRef.value[checkedAction](node.key, displayedCheckedKeysRef.value, {\n cascade: props.cascade,\n checkStrategy: mergedCheckStrategyRef.value,\n allowNotLoaded: props.allowCheckingNotLoaded\n });\n doUpdateCheckedKeys(checkedKeys, getOptionsByKeys(checkedKeys), {\n node: node.rawNode,\n action: checkedAction\n });\n doUpdateIndeterminateKeys(indeterminateKeys, getOptionsByKeys(indeterminateKeys));\n }\n function toggleExpand(node) {\n if (props.disabled)\n return;\n const { key } = node;\n const { value: mergedExpandedKeys } = mergedExpandedKeysRef;\n const index = mergedExpandedKeys.findIndex((expandNodeId) => expandNodeId === key);\n if (~index) {\n const expandedKeysAfterChange = Array.from(mergedExpandedKeys);\n expandedKeysAfterChange.splice(index, 1);\n doUpdateExpandedKeys(expandedKeysAfterChange, getOptionsByKeys(expandedKeysAfterChange), {\n node: node.rawNode,\n action: 'collapse'\n });\n }\n else {\n const nodeToBeExpanded = displayTreeMateRef.value.getNode(key);\n if (!nodeToBeExpanded || nodeToBeExpanded.isLeaf) {\n return;\n }\n let nextKeys;\n if (props.accordion) {\n const siblingKeySet = new Set(node.siblings.map(({ key }) => key));\n nextKeys = mergedExpandedKeys.filter((expandedKey) => {\n return !siblingKeySet.has(expandedKey);\n });\n nextKeys.push(key);\n }\n else {\n nextKeys = mergedExpandedKeys.concat(key);\n }\n doUpdateExpandedKeys(nextKeys, getOptionsByKeys(nextKeys), {\n node: node.rawNode,\n action: 'expand'\n });\n }\n }\n function handleSwitcherClick(node) {\n if (props.disabled || aipRef.value)\n return;\n toggleExpand(node);\n }\n function handleSelect(node) {\n if (props.disabled || !props.selectable) {\n return;\n }\n pendingNodeKeyRef.value = node.key;\n if (props.internalUnifySelectCheck) {\n const { value: { checkedKeys, indeterminateKeys } } = checkedStatusRef;\n if (props.multiple) {\n handleCheck(node, !(checkedKeys.includes(node.key) ||\n indeterminateKeys.includes(node.key)));\n }\n else {\n doUpdateCheckedKeys([node.key], getOptionsByKeys([node.key]), {\n node: node.rawNode,\n action: 'check'\n });\n }\n }\n if (props.multiple) {\n const selectedKeys = Array.from(mergedSelectedKeysRef.value);\n const index = selectedKeys.findIndex((key) => key === node.key);\n if (~index) {\n if (props.cancelable) {\n selectedKeys.splice(index, 1);\n }\n }\n else if (!~index) {\n selectedKeys.push(node.key);\n }\n doUpdateSelectedKeys(selectedKeys, getOptionsByKeys(selectedKeys), {\n node: node.rawNode,\n action: ~index ? 'unselect' : 'select'\n });\n }\n else {\n const selectedKeys = mergedSelectedKeysRef.value;\n if (selectedKeys.includes(node.key)) {\n if (props.cancelable) {\n doUpdateSelectedKeys([], [], {\n node: node.rawNode,\n action: 'unselect'\n });\n }\n }\n else {\n doUpdateSelectedKeys([node.key], getOptionsByKeys([node.key]), {\n node: node.rawNode,\n action: 'select'\n });\n }\n }\n }\n function expandDragEnterNode(node) {\n if (expandTimerId) {\n window.clearTimeout(expandTimerId);\n expandTimerId = null;\n }\n // Don't expand leaf node.\n if (node.isLeaf)\n return;\n nodeKeyToBeExpanded = node.key;\n const expand = () => {\n if (nodeKeyToBeExpanded !== node.key)\n return;\n const { value: droppingMouseNode } = droppingMouseNodeRef;\n if (droppingMouseNode &&\n droppingMouseNode.key === node.key &&\n !mergedExpandedKeysRef.value.includes(node.key)) {\n const nextKeys = mergedExpandedKeysRef.value.concat(node.key);\n doUpdateExpandedKeys(nextKeys, getOptionsByKeys(nextKeys), {\n node: node.rawNode,\n action: 'expand'\n });\n }\n expandTimerId = null;\n nodeKeyToBeExpanded = null;\n };\n if (!node.shallowLoaded) {\n expandTimerId = window.setTimeout(() => {\n void triggerLoading(node).then(() => {\n expand();\n });\n }, 1000);\n }\n else {\n expandTimerId = window.setTimeout(() => {\n expand();\n }, 1000);\n }\n }\n // Dnd\n function handleDragEnter({ event, node }) {\n // node should be a tmNode\n if (!props.draggable ||\n props.disabled ||\n isNodeDisabled(node, props.disabledField)) {\n return;\n }\n handleDragOver({ event, node }, false);\n doDragEnter({ event, node: node.rawNode });\n }\n function handleDragLeave({ event, node }) {\n if (!props.draggable ||\n props.disabled ||\n isNodeDisabled(node, props.disabledField)) {\n return;\n }\n doDragLeave({ event, node: node.rawNode });\n }\n function handleDragLeaveTree(e) {\n if (e.target !== e.currentTarget)\n return;\n resetDropState();\n }\n // Dragend is ok, we don't need to add global listener to reset drag status\n function handleDragEnd({ event, node }) {\n resetDndState();\n if (!props.draggable ||\n props.disabled ||\n isNodeDisabled(node, props.disabledField)) {\n return;\n }\n doDragEnd({ event, node: node.rawNode });\n }\n function handleDragStart({ event, node }) {\n var _a;\n if (!props.draggable ||\n props.disabled ||\n isNodeDisabled(node, props.disabledField)) {\n return;\n }\n // Most of time, the image will block user's view\n emptyImage && ((_a = event.dataTransfer) === null || _a === void 0 ? void 0 : _a.setDragImage(emptyImage, 0, 0));\n dragStartX = event.clientX;\n draggingNodeRef.value = node;\n doDragStart({ event, node: node.rawNode });\n }\n function handleDragOver({ event, node }, emit = true) {\n var _a;\n if (!props.draggable ||\n props.disabled ||\n isNodeDisabled(node, props.disabledField)) {\n return;\n }\n const { value: draggingNode } = draggingNodeRef;\n if (!draggingNode)\n return;\n const { allowDrop, indent } = props;\n if (emit)\n doDragOver({ event, node: node.rawNode });\n // Update dropping node\n const el = event.currentTarget;\n const { height: elOffsetHeight, top: elClientTop } = el.getBoundingClientRect();\n const eventOffsetY = event.clientY - elClientTop;\n let mousePosition;\n const allowDropInside = allowDrop({\n node: node.rawNode,\n dropPosition: 'inside',\n phase: 'drag'\n });\n if (allowDropInside) {\n if (eventOffsetY <= 8) {\n mousePosition = 'before';\n }\n else if (eventOffsetY >= elOffsetHeight - 8) {\n mousePosition = 'after';\n }\n else {\n mousePosition = 'inside';\n }\n }\n else {\n if (eventOffsetY <= elOffsetHeight / 2) {\n mousePosition = 'before';\n }\n else {\n mousePosition = 'after';\n }\n }\n const { value: getFindex } = getFIndexRef;\n /** determine the drop position and drop node */\n /** the dropping node needn't to be the mouse hovering node! */\n /**\n * if there is something i've learned from implementing a complex\n * drag & drop. that is never write unit test before you really figure\n * out what behavior is exactly you want.\n */\n let finalDropNode;\n let finalDropPosition;\n const hoverNodeFIndex = getFindex(node.key);\n if (hoverNodeFIndex === null) {\n resetDropState();\n return;\n }\n let mouseAtExpandedNonLeafNode = false;\n if (mousePosition === 'inside') {\n finalDropNode = node;\n finalDropPosition = 'inside';\n }\n else {\n if (mousePosition === 'before') {\n if (node.isFirstChild) {\n finalDropNode = node;\n finalDropPosition = 'before';\n }\n else {\n finalDropNode = fNodesRef.value[hoverNodeFIndex - 1];\n finalDropPosition = 'after';\n }\n }\n else {\n finalDropNode = node;\n finalDropPosition = 'after';\n }\n }\n // If the node is non-leaf and it is expanded, we don't allow it to\n // drop after it and change it to drop before its next view sibling\n if (!finalDropNode.isLeaf &&\n mergedExpandedKeysRef.value.includes(finalDropNode.key)) {\n mouseAtExpandedNonLeafNode = true;\n if (finalDropPosition === 'after') {\n finalDropNode = fNodesRef.value[hoverNodeFIndex + 1];\n if (!finalDropNode) {\n // maybe there is no next view sibling when non-leaf node has no\n // children and it is the last node in the tree\n finalDropNode = node;\n finalDropPosition = 'inside';\n }\n else {\n finalDropPosition = 'before';\n }\n }\n }\n const droppingMouseNode = finalDropNode;\n droppingMouseNodeRef.value = droppingMouseNode;\n // This is a speacial case, user is dragging a last child itself, so we\n // only view it as they are trying to drop after it.\n // There are some relevant codes in bailout 1's child branch.\n // Also, the expand bailout should have a high priority. If it's non-leaf\n // node and expanded, keep its origin drop position\n if (!mouseAtExpandedNonLeafNode &&\n draggingNode.isLastChild &&\n draggingNode.key === finalDropNode.key) {\n finalDropPosition = 'after';\n }\n if (finalDropPosition === 'after') {\n let offset = dragStartX - event.clientX; // drag left => > 0\n let offsetLevel = 0;\n while (offset >= indent / 2 && // divide by 2 to make it easier to trigger\n finalDropNode.parent !== null &&\n finalDropNode.isLastChild &&\n offsetLevel < 1) {\n offset -= indent;\n offsetLevel += 1;\n finalDropNode = finalDropNode.parent;\n }\n droppingOffsetLevelRef.value = offsetLevel;\n }\n else {\n droppingOffsetLevelRef.value = 0;\n }\n // Bailout 1\n // Drag self into self\n // Drag it into direct parent\n if (draggingNode.contains(finalDropNode) ||\n (finalDropPosition === 'inside' &&\n ((_a = draggingNode.parent) === null || _a === void 0 ? void 0 : _a.key) === finalDropNode.key)) {\n if (draggingNode.key === droppingMouseNode.key &&\n draggingNode.key === finalDropNode.key) {\n // This is special case that we want ui to show a mark to guide user\n // to start dragging. Nor they will think nothing happens.\n // However this is an invalid drop, we need to guard it inside\n // handleDrop\n }\n else {\n resetDropState();\n return;\n }\n }\n // Bailout 3\n if (!allowDrop({\n node: finalDropNode.rawNode,\n dropPosition: finalDropPosition,\n phase: 'drag'\n })) {\n resetDropState();\n return;\n }\n if (draggingNode.key === finalDropNode.key) {\n // don't expand when drag on itself\n resetDragExpandState();\n }\n else {\n if (nodeKeyToBeExpanded !== finalDropNode.key) {\n if (finalDropPosition === 'inside') {\n if (props.expandOnDragenter) {\n expandDragEnterNode(finalDropNode);\n // Bailout 4\n // not try to loading\n if (!finalDropNode.shallowLoaded &&\n nodeKeyToBeExpanded !== finalDropNode.key) {\n resetDndState();\n return;\n }\n }\n else {\n // Bailout 5\n // never expands on drag\n if (!finalDropNode.shallowLoaded) {\n resetDndState();\n return;\n }\n }\n }\n else {\n resetDragExpandState();\n }\n }\n else {\n if (finalDropPosition !== 'inside') {\n resetDragExpandState();\n }\n }\n }\n droppingPositionRef.value = finalDropPosition;\n droppingNodeRef.value = finalDropNode;\n }\n function handleDrop({ event, node, dropPosition }) {\n if (!props.draggable ||\n props.disabled ||\n isNodeDisabled(node, props.disabledField)) {\n return;\n }\n const { value: draggingNode } = draggingNodeRef;\n const { value: droppingNode } = droppingNodeRef;\n const { value: droppingPosition } = droppingPositionRef;\n if (!draggingNode || !droppingNode || !droppingPosition) {\n return;\n }\n // Bailout 1\n if (!props.allowDrop({\n node: droppingNode.rawNode,\n dropPosition: droppingPosition,\n phase: 'drag'\n })) {\n return;\n }\n // Bailout 2\n // This is a special case to guard since we want ui to show the status\n // but not to emit a event\n if (draggingNode.key === droppingNode.key) {\n return;\n }\n // Bailout 3\n // insert before its next node\n // insert after its prev node\n if (droppingPosition === 'before') {\n const nextNode = draggingNode.getNext({ includeDisabled: true });\n if (nextNode) {\n if (nextNode.key === droppingNode.key) {\n resetDropState();\n return;\n }\n }\n }\n if (droppingPosition === 'after') {\n const prevNode = draggingNode.getPrev({ includeDisabled: true });\n if (prevNode) {\n if (prevNode.key === droppingNode.key) {\n resetDropState();\n return;\n }\n }\n }\n doDrop({\n event,\n node: droppingNode.rawNode,\n dragNode: draggingNode.rawNode,\n dropPosition\n });\n resetDndState();\n }\n function handleScroll() {\n syncScrollbar();\n }\n function handleResize() {\n syncScrollbar();\n }\n function handleFocusout(e) {\n var _a;\n if (props.virtualScroll || props.internalScrollable) {\n const { value: scrollbarInst } = scrollbarInstRef;\n if ((_a = scrollbarInst === null || scrollbarInst === void 0 ? void 0 : scrollbarInst.containerRef) === null || _a === void 0 ? void 0 : _a.contains(e.relatedTarget)) {\n return;\n }\n pendingNodeKeyRef.value = null;\n }\n else {\n const { value: selfEl } = selfElRef;\n if (selfEl === null || selfEl === void 0 ? void 0 : selfEl.contains(e.relatedTarget))\n return;\n pendingNodeKeyRef.value = null;\n }\n }\n watch(pendingNodeKeyRef, (value) => {\n var _a, _b;\n if (value === null)\n return;\n if (props.virtualScroll) {\n (_a = virtualListInstRef.value) === null || _a === void 0 ? void 0 : _a.scrollTo({ key: value });\n }\n else if (props.internalScrollable) {\n const { value: scrollbarInst } = scrollbarInstRef;\n if (scrollbarInst === null)\n return;\n const targetEl = (_b = scrollbarInst.contentRef) === null || _b === void 0 ? void 0 : _b.querySelector(`[data-key=\"${createDataKey(value)}\"]`);\n if (!targetEl)\n return;\n scrollbarInst.scrollTo({\n el: targetEl\n });\n }\n });\n provide(treeInjectionKey, {\n loadingKeysRef,\n highlightKeySetRef: mergedHighlightKeySetRef,\n displayedCheckedKeysRef,\n displayedIndeterminateKeysRef,\n mergedSelectedKeysRef,\n mergedExpandedKeysRef,\n mergedThemeRef: themeRef,\n mergedCheckStrategyRef,\n nodePropsRef: toRef(props, 'nodeProps'),\n disabledRef: toRef(props, 'disabled'),\n checkableRef: toRef(props, 'checkable'),\n selectableRef: toRef(props, 'selectable'),\n expandOnClickRef: toRef(props, 'expandOnClick'),\n onLoadRef: toRef(props, 'onLoad'),\n draggableRef: toRef(props, 'draggable'),\n blockLineRef: toRef(props, 'blockLine'),\n indentRef: toRef(props, 'indent'),\n cascadeRef: toRef(props, 'cascade'),\n checkOnClickRef: toRef(props, 'checkOnClick'),\n checkboxPlacementRef: props.checkboxPlacement,\n droppingMouseNodeRef,\n droppingNodeParentRef,\n draggingNodeRef,\n droppingPositionRef,\n droppingOffsetLevelRef,\n fNodesRef,\n pendingNodeKeyRef,\n showLineRef: toRef(props, 'showLine'),\n disabledFieldRef: toRef(props, 'disabledField'),\n internalScrollableRef: toRef(props, 'internalScrollable'),\n internalCheckboxFocusableRef: toRef(props, 'internalCheckboxFocusable'),\n internalTreeSelect: props.internalTreeSelect,\n renderLabelRef: toRef(props, 'renderLabel'),\n renderPrefixRef: toRef(props, 'renderPrefix'),\n renderSuffixRef: toRef(props, 'renderSuffix'),\n renderSwitcherIconRef: toRef(props, 'renderSwitcherIcon'),\n labelFieldRef: toRef(props, 'labelField'),\n multipleRef: toRef(props, 'multiple'),\n handleSwitcherClick,\n handleDragEnd,\n handleDragEnter,\n handleDragLeave,\n handleDragStart,\n handleDrop,\n handleDragOver,\n handleSelect,\n handleCheck\n });\n function scrollTo(options) {\n var _a;\n (_a = virtualListInstRef.value) === null || _a === void 0 ? void 0 : _a.scrollTo(options);\n }\n const exposedMethods = {\n handleKeydown,\n scrollTo,\n getCheckedData: () => {\n if (!props.checkable)\n return { keys: [], options: [] };\n const { checkedKeys } = checkedStatusRef.value;\n return {\n keys: checkedKeys,\n options: getOptionsByKeys(checkedKeys)\n };\n },\n getIndeterminateData: () => {\n if (!props.checkable)\n return { keys: [], options: [] };\n const { indeterminateKeys } = checkedStatusRef.value;\n return {\n keys: indeterminateKeys,\n options: getOptionsByKeys(indeterminateKeys)\n };\n }\n };\n const cssVarsRef = computed(() => {\n const { common: { cubicBezierEaseInOut }, self: { fontSize, nodeBorderRadius, nodeColorHover, nodeColorPressed, nodeColorActive, arrowColor, loadingColor, nodeTextColor, nodeTextColorDisabled, dropMarkColor, nodeWrapperPadding, nodeHeight, lineHeight } } = themeRef.value;\n const lineOffsetTop = getPadding(nodeWrapperPadding, 'top');\n const lineOffsetBottom = getPadding(nodeWrapperPadding, 'bottom');\n const nodeContentHeight = pxfy(depx(nodeHeight) - depx(lineOffsetTop) - depx(lineOffsetBottom));\n return {\n '--n-arrow-color': arrowColor,\n '--n-loading-color': loadingColor,\n '--n-bezier': cubicBezierEaseInOut,\n '--n-font-size': fontSize,\n '--n-node-border-radius': nodeBorderRadius,\n '--n-node-color-active': nodeColorActive,\n '--n-node-color-hover': nodeColorHover,\n '--n-node-color-pressed': nodeColorPressed,\n '--n-node-text-color': nodeTextColor,\n '--n-node-text-color-disabled': nodeTextColorDisabled,\n '--n-drop-mark-color': dropMarkColor,\n '--n-node-wrapper-padding': nodeWrapperPadding,\n '--n-line-offset-top': `-${lineOffsetTop}`,\n '--n-line-offset-bottom': `-${lineOffsetBottom}`,\n '--n-node-content-height': nodeContentHeight,\n '--n-line-height': lineHeight\n };\n });\n const themeClassHandle = inlineThemeDisabled\n ? useThemeClass('tree', undefined, cssVarsRef, props)\n : undefined;\n return Object.assign(Object.assign({}, exposedMethods), { mergedClsPrefix: mergedClsPrefixRef, mergedTheme: themeRef, rtlEnabled: rtlEnabledRef, fNodes: mergedFNodesRef, aip: aipRef, selfElRef,\n virtualListInstRef,\n scrollbarInstRef,\n handleFocusout,\n handleDragLeaveTree,\n handleScroll,\n getScrollContainer,\n getScrollContent,\n handleAfterEnter,\n handleResize, cssVars: inlineThemeDisabled ? undefined : cssVarsRef, themeClass: themeClassHandle === null || themeClassHandle === void 0 ? void 0 : themeClassHandle.themeClass, onRender: themeClassHandle === null || themeClassHandle === void 0 ? void 0 : themeClassHandle.onRender });\n },\n render() {\n var _a;\n const { fNodes, internalRenderEmpty } = this;\n if (!fNodes.length && internalRenderEmpty) {\n return internalRenderEmpty();\n }\n const { mergedClsPrefix, blockNode, blockLine, draggable, disabled, internalFocusable, checkable, handleKeydown, rtlEnabled, handleFocusout, scrollbarProps } = this;\n const mergedFocusable = internalFocusable && !disabled;\n const tabindex = mergedFocusable ? '0' : undefined;\n const treeClass = [\n `${mergedClsPrefix}-tree`,\n rtlEnabled && `${mergedClsPrefix}-tree--rtl`,\n checkable && `${mergedClsPrefix}-tree--checkable`,\n (blockLine || blockNode) && `${mergedClsPrefix}-tree--block-node`,\n blockLine && `${mergedClsPrefix}-tree--block-line`\n ];\n const createNode = (tmNode) => {\n return '__motion' in tmNode ? (h(MotionWrapper, { height: tmNode.height, nodes: tmNode.nodes, clsPrefix: mergedClsPrefix, mode: tmNode.mode, onAfterEnter: this.handleAfterEnter })) : (h(NTreeNode, { key: tmNode.key, tmNode: tmNode, clsPrefix: mergedClsPrefix }));\n };\n if (this.virtualScroll) {\n const { mergedTheme, internalScrollablePadding } = this;\n const padding = getPadding(internalScrollablePadding || '0');\n return (h(NxScrollbar, Object.assign({}, scrollbarProps, { ref: \"scrollbarInstRef\", onDragleave: draggable ? this.handleDragLeaveTree : undefined, container: this.getScrollContainer, content: this.getScrollContent, class: treeClass, theme: mergedTheme.peers.Scrollbar, themeOverrides: mergedTheme.peerOverrides.Scrollbar, tabindex: tabindex, onKeydown: mergedFocusable ? handleKeydown : undefined, onFocusout: mergedFocusable ? handleFocusout : undefined }), {\n default: () => {\n var _a;\n (_a = this.onRender) === null || _a === void 0 ? void 0 : _a.call(this);\n return (h(VVirtualList, { ref: \"virtualListInstRef\", items: this.fNodes, itemSize: depx(mergedTheme.self.nodeHeight), ignoreItemResize: this.aip, paddingTop: padding.top, paddingBottom: padding.bottom, class: this.themeClass, style: [\n this.cssVars,\n {\n paddingLeft: padding.left,\n paddingRight: padding.right\n }\n ], onScroll: this.handleScroll, onResize: this.handleResize, showScrollbar: false, itemResizable: true }, {\n default: ({ item }) => createNode(item)\n }));\n }\n }));\n }\n const { internalScrollable } = this;\n treeClass.push(this.themeClass);\n (_a = this.onRender) === null || _a === void 0 ? void 0 : _a.call(this);\n if (internalScrollable) {\n return (h(NxScrollbar, Object.assign({}, scrollbarProps, { class: treeClass, tabindex: tabindex, onKeydown: mergedFocusable ? handleKeydown : undefined, onFocusout: mergedFocusable ? handleFocusout : undefined, style: this.cssVars, contentStyle: { padding: this.internalScrollablePadding } }), {\n default: () => (h(\"div\", { onDragleave: draggable ? this.handleDragLeaveTree : undefined, ref: \"selfElRef\" }, this.fNodes.map(createNode)))\n }));\n }\n else {\n return (h(\"div\", { class: treeClass, tabindex: tabindex, ref: \"selfElRef\", style: this.cssVars, onKeydown: mergedFocusable ? handleKeydown : undefined, onFocusout: mergedFocusable ? handleFocusout : undefined, onDragleave: draggable ? this.handleDragLeaveTree : undefined }, !fNodes.length\n ? resolveSlot(this.$slots.empty, () => [\n h(NEmpty, { class: `${mergedClsPrefix}-tree__empty`, theme: this.mergedTheme.peers.Empty, themeOverrides: this.mergedTheme.peerOverrides.Empty })\n ])\n : fNodes.map(createNode)));\n }\n }\n});\n","<script setup lang=\"ts\">\nimport { computed, onUnmounted, shallowReactive, shallowRef, watch } from 'vue';\n\nconst props = withDefaults(\n defineProps<{\n initialValue: {\n left?: number;\n right?: number;\n top?: number;\n bottom?: number;\n };\n }>(),\n { initialValue: () => ({}) },\n);\n\nconst isLeft = props.initialValue.left !== void 0;\nconst isTop = props.initialValue.top !== void 0;\nconst prevOffset = {\n x: (isLeft ? props.initialValue.left : props.initialValue.right) ?? 0,\n y: (isTop ? props.initialValue.top : props.initialValue.bottom) ?? 0,\n};\n\nconst offset = shallowReactive({ ...prevOffset });\nconst currentStyle = computed(() => {\n const xStyle = isLeft ? `left:${offset.x}px;` : `right:${offset.x}px;`;\n const yStyle = isTop ? `top:${offset.y}px;` : `bottom:${offset.y}px;`;\n return xStyle + yStyle;\n});\n/**\n * it will be PointerEvent when moving\n */\nlet prevEv: PointerEvent | undefined = undefined;\nconst startMove = (ev: PointerEvent) => {\n prevEv = ev;\n prevOffset.x = offset.x;\n prevOffset.y = offset.y;\n};\nconst move = (ev: PointerEvent) => {\n if (!target.value || !prevEv) return;\n\n const dx = ev.clientX - prevEv.clientX; // ev.movementX;\n const dy = ev.clientY - prevEv.clientY; //ev.movementY;\n\n offset.x = prevOffset.x + (isLeft ? dx : -dx);\n offset.y = prevOffset.y + (isTop ? dy : -dy);\n};\nconst endMove = () => {\n prevEv = undefined;\n};\nconst box = shallowRef<HTMLElement>();\nconst target = shallowRef<HTMLElement>();\nconst preventSelection = (ev: Event) => {\n if (prevEv) {\n ev.preventDefault();\n }\n};\nconst transitions = [`transition-top,bottom,left,right-500`];\nconst windowEndMove = () => {\n if (!target.value) return;\n const { top, bottom, left, right } = target.value.getBoundingClientRect();\n if (\n right < 0 ||\n left > window.innerWidth ||\n bottom < 0 ||\n top > window.innerHeight\n ) {\n // isOutsideViewport\n offset.x = prevOffset.x;\n offset.y = prevOffset.y;\n endMove();\n\n const boxDiv = box.value;\n if (boxDiv) {\n boxDiv.classList.add(...transitions);\n setTimeout(() => {\n boxDiv.classList.remove(...transitions);\n }, 550);\n }\n }\n};\n\n// move 事件应该给 window. 如果给目标元素,容易出现鼠标移速过快无法跟随的bug\nwindow.addEventListener('pointermove', move);\nwindow.addEventListener('pointerup', windowEndMove);\ndocument.addEventListener('selectstart', preventSelection);\nonUnmounted(() => {\n window.removeEventListener('pointermove', move);\n window.removeEventListener('pointerup', windowEndMove);\n document.removeEventListener('selectstart', preventSelection);\n endMove();\n});\n\nwatch(target, (newValue, oldvalue) => {\n if (newValue) {\n newValue.addEventListener('pointerdown', startMove);\n newValue.addEventListener('pointerup', endMove);\n }\n if (oldvalue) {\n oldvalue.removeEventListener('pointerdown', startMove);\n oldvalue.removeEventListener('pointerup', endMove);\n }\n});\nonUnmounted(() => {\n if (!target.value) return;\n target.value.removeEventListener('pointerdown', startMove);\n target.value.removeEventListener('pointerup', endMove);\n});\nconst updateTarget = (arg: unknown) => {\n if (arg instanceof HTMLElement) {\n target.value = arg;\n } else {\n target.value = void 0;\n }\n};\n</script>\n<template>\n <Teleport to=\"body\">\n <div\n fixed\n ref=\"box\"\n :style=\"[$attrs.style as string, currentStyle]\"\n :class=\"$attrs.class\"\n >\n <slot :onRef=\"updateTarget\"></slot>\n </div>\n </Teleport>\n</template>\n<style>\n.smooth-1s {\n transition:\n bottom 1s,\n top 1s,\n right 1s,\n left 1s;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { copy } from '@/utils/others';\nimport type { RawNode } from '@/utils/types';\nimport { NEllipsis, NIcon, NTable, NTbody, NTd, NTooltip, NTr } from 'naive-ui';\nimport { computed } from 'vue';\nimport DraggableCard from './DraggableCard.vue';\n\nconst props = withDefaults(defineProps<{ focusNode: RawNode }>(), {});\n\nconst lenAttrNames = [`text`, `desc`];\nconst attrs = computed(() => {\n return Object.entries(props.focusNode.attr)\n .map(([name, value]) => {\n const attr = {\n name,\n value: JSON.stringify(value),\n };\n if (lenAttrNames.includes(name)) {\n return [\n attr,\n {\n name: name + `.length`,\n value: JSON.stringify((value as string)?.length ?? null),\n },\n ];\n }\n return attr;\n })\n .flat();\n});\n\nconst attrDesc: Record<string, string> = {\n _id: `虚拟属性:生成快照访问节点顺序`,\n _pid: `虚拟属性:父节点的 _id`,\n depth: `在某些应用上可能造成无限节点错误`,\n id: `可快速查找`,\n text: `可快速查找`,\n};\n</script>\n\n<template>\n <DraggableCard :initialValue=\"{ top: 75, right: 10 }\" v-slot=\"{ onRef }\">\n <NTable\n size=\"small\"\n striped\n :singleLine=\"false\"\n class=\"gkd_code\"\n :themeOverrides=\"{\n thPaddingSmall: '1px 3px',\n tdPaddingSmall: '1px 3px',\n }\"\n ><thead>\n <tr :ref=\"onRef\" cursor-move>\n <th>Name</th>\n <th>Value</th>\n </tr>\n </thead>\n <NTbody>\n <NTr v-for=\"attrx in attrs\" :key=\"attrx.name\">\n <NTd @click=\"copy(`${attrx.name}=${attrx.value}`)\">\n <div\n v-if=\"attrx.name in attrDesc\"\n flex\n flex-justify-between\n flex-items-center\n >\n <div>\n {{ attrx.name }}\n </div>\n <NTooltip>\n <template #trigger>\n <NIcon size=\"16\">\n <svg\n viewBox=\"0 0 28 28\"\n v-if=\"attrx.name != `id` && attrx.name != `text`\"\n >\n <g fill=\"none\">\n <path\n d=\"M15 8a1 1 0 1 1-2 0a1 1 0 0 1 2 0zm-1.75 3.75v7.5a.75.75 0 0 0 1.5 0v-7.5a.75.75 0 0 0-1.5 0zM2 14C2 7.373 7.373 2 14 2s12 5.373 12 12s-5.373 12-12 12S2 20.627 2 14zM14 3.5C8.201 3.5 3.5 8.201 3.5 14S8.201 24.5 14 24.5S24.5 19.799 24.5 14S19.799 3.5 14 3.5z\"\n fill=\"currentColor\"\n ></path>\n </g>\n </svg>\n <svg\n v-else-if=\"\n (focusNode.quickFind ||\n (attrx.name == 'id' && focusNode.idQf) ||\n (attrx.name == 'text' && focusNode.textQf)) &&\n JSON.parse(attrx.value)\n \"\n viewBox=\"0 0 1024 1024\"\n >\n <path\n d=\"M722.500267 330.888533l-273.408 273.408-147.729067-147.729066a42.018133 42.018133 0 1 0-59.426133 59.426133l177.425066 177.493333a41.984 41.984 0 0 0 59.426134 0L781.9264 390.314667a42.001067 42.001067 0 0 0-59.392-59.426134h-0.034133zM78.506667 783.496533a508.279467 508.279467 0 0 0 319.0784 226.986667C530.773333 1041.066667 667.886933 1017.924267 783.701333 945.390933a508.279467 508.279467 0 0 0 226.986667-319.0784 508.279467 508.279467 0 0 0-65.058133-386.116266C848.554667 85.367467 681.710933 0.341333 511.214933 0.341333a508.6208 508.6208 0 0 0-270.813866 77.960534A36.864 36.864 0 0 0 279.552 140.629333C484.113067 12.288 755.029333 74.581333 883.268267 279.278933a434.9952 434.9952 0 0 1 55.739733 330.5472 435.029333 435.029333 0 0 1-194.3552 273.134934 435.746133 435.746133 0 0 1-330.581333 55.773866A435.165867 435.165867 0 0 1 140.936533 744.379733a436.770133 436.770133 0 0 1-5.666133-456.055466 36.829867 36.829867 0 0 0-63.317333-37.546667A510.1568 510.1568 0 0 0 78.506667 783.530667v-0.034134z\"\n ></path>\n </svg>\n </NIcon>\n </template>\n {{ attrDesc[attrx.name] }}\n </NTooltip>\n </div>\n <template v-else>\n {{ attrx.name }}\n </template>\n </NTd>\n <NTd>\n <NEllipsis\n v-if=\"attrx.name == 'id'\"\n style=\"\n width: 180px;\n min-width: max(12vw, 180px);\n direction: rtl;\n text-align: left;\n \"\n >\n {{ attrx.value }}\n </NEllipsis>\n <NEllipsis v-else style=\"width: 180px; min-width: max(12vw, 180px)\">\n {{ attrx.value }}\n </NEllipsis>\n </NTd>\n </NTr>\n </NTbody>\n </NTable>\n </DraggableCard>\n</template>\n","<script setup lang=\"ts\">\nimport { findNodeByXy } from '@/utils/node';\nimport type { RawNode, Snapshot } from '@/utils/types';\nimport { computed, shallowRef, watchEffect } from 'vue';\n\nconst props = withDefaults(\n defineProps<{\n url: string;\n snapshot: Snapshot;\n rootNode?: RawNode;\n focusNode?: RawNode;\n onUpdateFocusNode?: (data: RawNode) => void;\n }>(),\n {\n onUpdateFocusNode: () => () => {},\n },\n);\n\nconst imgRef = shallowRef<HTMLImageElement>();\n\nconst clickEvRef = shallowRef<MouseEvent>();\nwatchEffect(() => {\n if (!props.rootNode) return;\n const ev = clickEvRef.value;\n const img = imgRef.value;\n if (!ev || !img) {\n return;\n }\n\n const imgRect = img.getBoundingClientRect();\n\n const innerHeight = (imgRect.width / img.naturalWidth) * img.naturalHeight;\n const offsetTop = (imgRect.height - innerHeight) / 2;\n\n const ox = ((ev.clientX - imgRect.left) / imgRect.width) * img.naturalWidth;\n const oy =\n ((ev.clientY - imgRect.top - offsetTop) / innerHeight) * img.naturalHeight;\n\n const childNode = findNodeByXy(props.snapshot.nodes, ox, oy);\n if (childNode) {\n props.onUpdateFocusNode(childNode);\n }\n});\nconst percent = (n: number) => {\n return `${n * 100}%`;\n};\nconst positionStyle = computed(() => {\n const img = imgRef.value;\n const attr = props.focusNode?.attr;\n if (!props.focusNode || !img || !attr) {\n return ``;\n }\n const imgRect = img.getBoundingClientRect();\n const innerHeight = (imgRect.width / img.naturalWidth) * img.naturalHeight;\n return {\n left: `calc(${percent(attr.left / img.naturalWidth)} - 2px)`,\n width: `calc(${percent(\n (attr.right - attr.left) / img.naturalWidth,\n )} + 2px)`,\n\n top: `calc(${percent(\n ((attr.top / img.naturalHeight) * innerHeight +\n (imgRect.height - innerHeight) / 2) /\n imgRect.height,\n )} - 2px)`,\n height: `calc(${percent(\n (((attr.bottom - attr.top) / img.naturalHeight) * innerHeight) /\n imgRect.height,\n )} + 2px)`,\n };\n});\nconst imgHover = shallowRef(false);\nconst hoverPosition = shallowRef({ ox: 0, oy: 0 });\nconst imgMove = (ev: MouseEvent) => {\n const img = imgRef.value;\n if (!img) return;\n const imgRect = img.getBoundingClientRect();\n\n const innerHeight = (imgRect.width / img.naturalWidth) * img.naturalHeight;\n const offsetTop = (imgRect.height - innerHeight) / 2;\n\n const ox = ((ev.clientX - imgRect.left) / imgRect.width) * img.naturalWidth;\n const oy =\n ((ev.clientY - imgRect.top - offsetTop) / innerHeight) * img.naturalHeight;\n hoverPosition.value = { ox, oy };\n hoverPositionStyle.value = {\n left: (-(ox - 0.1 * img.naturalWidth) / img.naturalWidth) * 1000 + 'px',\n top: (-(oy - 0.1 * img.naturalWidth) / img.naturalWidth) * 1000 + 'px',\n };\n};\nconst hoverPositionStyle = shallowRef({ left: '0', top: '0' });\n</script>\n\n<template>\n <div flex flex-col relative h-full>\n <img\n ref=\"imgRef\"\n :src=\"url\"\n @click=\"clickEvRef = $event\"\n cursor-crosshair\n h-full\n object-contain\n style=\"max-width: max(35vw, 400px)\"\n @mouseover=\"imgHover = true\"\n @mouseleave=\"imgHover = false\"\n @mousemove=\"imgMove\"\n />\n <div\n :style=\"positionStyle\"\n absolute\n pointer-events-none\n transition-all-300\n b-1px\n b-blue\n b-solid\n >\n <div absolute left-0 top-0 bottom-0 right-0 b-solid b-1px b-red></div>\n </div>\n\n <div\n v-show=\"imgHover\"\n class=\"left-[calc(100%+4px)]\"\n absolute\n top-0\n overflow-hidden\n z-1\n bg-white\n h-200px\n w-200px\n border-1px\n border-indigo-600\n border-dashed\n >\n <img\n :src=\"url\"\n object-contain\n absolute\n left-0\n top-0\n :style=\"hoverPositionStyle\"\n w-1000px\n />\n <div\n absolute\n left-2px\n top-2px\n class=\"leading-[1]\"\n style=\"background-color: rgba(256, 256, 256, 0.7)\"\n >\n {{ `${hoverPosition.ox.toFixed(0)},${hoverPosition.oy.toFixed(0)}` }}\n </div>\n <div\n class=\"top-[calc(50%-1px)]\"\n absolute\n left-0\n right-0\n h-1px\n bg-repeat-x\n mix-blend-difference\n style=\"\n background: linear-gradient(\n to left,\n transparent 0%,\n transparent 50%,\n #fff 50%,\n #fff 100%\n );\n\n background-size: 10px 1px;\n \"\n ></div>\n <div\n class=\"left-[calc(50%-1px)]\"\n absolute\n top-0\n bottom-0\n w-1px\n bg-repeat-y\n mix-blend-difference\n style=\"\n background: linear-gradient(\n to top,\n transparent 0%,\n transparent 50%,\n #fff 50%,\n #fff 100%\n );\n background-size: 1px 10px;\n \"\n ></div>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport dayjs from 'dayjs';\nimport { message } from '@/utils/discrete';\nimport { errorTry, errorWrap } from '@/utils/error';\nimport { parseSelector } from '@/utils/selector';\nimport type { Selector } from '@/utils/selector';\nimport type { RawNode, Snapshot } from '@/utils/types';\nimport {\n NButton,\n NCollapse,\n NCollapseItem,\n NInput,\n NInputGroup,\n NRadio,\n NRadioGroup,\n NSpace,\n NIcon,\n} from 'naive-ui';\nimport { shallowReactive, shallowRef } from 'vue';\nimport DraggableCard from './DraggableCard.vue';\nimport { getNodeLabel } from '@/utils/node';\nimport { copy } from '@/utils/others';\nimport { githubJpgStorage, githubZipStorage } from '@/utils/storage';\nimport { githubUrlToSelfUrl } from '@/utils/url';\n\nconst props = withDefaults(\n defineProps<{\n snapshot: Snapshot;\n rootNode: RawNode;\n onUpdateFocusNode?: (data: RawNode) => void;\n }>(),\n {\n onUpdateFocusNode: () => () => {},\n },\n);\n\nconst selectorText = shallowRef(``);\nconst selectorResults = shallowReactive<\n {\n selector: string | Selector;\n\n results: RawNode[];\n }[]\n>([]);\nconst searchBySelector = errorTry(() => {\n if (!props.rootNode) {\n message.error(`根节点不存在`);\n return;\n }\n const text = selectorText.value.trim();\n if (!text) return;\n\n if (enableSearchBySelector.value) {\n const selector = errorWrap(() => parseSelector(text), `选择器非法`);\n if (\n selectorResults.find(\n (s) =>\n typeof s.selector == 'object' &&\n s.selector.toString() == selector.toString(),\n )\n ) {\n message.warning(`不可重复选择`);\n return;\n }\n\n const results = selector.querySelectorAll(props.rootNode);\n if (results.length == 0) {\n message.success(`没有选择到节点`);\n return;\n }\n message.success(`选择到 ${results.length} 个节点`);\n selectorResults.unshift({ selector, results });\n } else {\n if (\n selectorResults.find(\n (s) => typeof s.selector == 'string' && s.selector.toString() == text,\n )\n ) {\n message.warning(`不可重复选择`);\n return;\n }\n const results: RawNode[] = [];\n const stack: RawNode[] = [props.rootNode];\n while (stack.length > 0) {\n const n = stack.pop()!;\n if (getNodeLabel(n).includes(text)) {\n results.push(n);\n }\n stack.push(...[...n.children].reverse());\n }\n if (results.length == 0) {\n message.success(`没有搜索到节点`);\n return;\n }\n message.success(`搜索到 ${results.length} 个节点`);\n selectorResults.unshift({ selector: text, results });\n }\n});\nconst generateRules = errorTry(async (selector: Selector) => {\n let jpgUrl = githubJpgStorage[props.snapshot.id];\n if (jpgUrl) {\n jpgUrl = githubUrlToSelfUrl(jpgUrl);\n }\n let zipUrl = githubZipStorage[props.snapshot.id];\n if (zipUrl) {\n zipUrl = githubUrlToSelfUrl(zipUrl);\n }\n\n const rule = {\n id: props.snapshot.appId,\n name: props.snapshot.appName,\n groups: [\n {\n key: 1,\n name: `[ChangeMe]规则名称-${dayjs().format('YYYY-MM-DD HH:mm:ss')}`,\n desc: `[ChangeMe]本规则由GKD网页端审查工具生成`,\n rules: [\n {\n activityIds: props.snapshot.activityId,\n matches: selector.toString(),\n exampleUrls: jpgUrl,\n snapshotUrls: zipUrl,\n },\n ],\n },\n ],\n };\n\n copy(JSON.stringify(rule, undefined, 2));\n});\nconst enableSearchBySelector = shallowRef(true);\nconst _1vw = window.innerWidth / 100;\n</script>\n<template>\n <DraggableCard\n :initialValue=\"{ top: 75, right: Math.max(315, 12 * _1vw + 135) }\"\n v-slot=\"{ onRef }\"\n class=\"z-1\"\n >\n <div\n w-480px\n bg-white\n b-1px\n b-solid\n b-gray-200\n rounded-4px\n p-8px\n style=\"min-width: max(25vw, 480px)\"\n >\n <div flex m-b-4px>\n <NRadioGroup v-model:value=\"enableSearchBySelector\">\n <NSpace>\n <NRadio :value=\"false\"> 字符搜索 </NRadio>\n <NRadio :value=\"true\"> 选择器查询 </NRadio>\n </NSpace>\n </NRadioGroup>\n <div flex-1 cursor-move :ref=\"onRef\"></div>\n </div>\n <NInputGroup>\n <NInput\n v-model:value=\"selectorText\"\n :placeholder=\"enableSearchBySelector ? `请输入选择器` : `请输入字符`\"\n @keyup.enter=\"searchBySelector\"\n :inputProps=\"{ class: 'gkd_code' }\"\n ></NInput>\n <NButton @click=\"searchBySelector\">\n <template #icon>\n <NIcon>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n viewBox=\"0 0 32 32\"\n >\n <path\n d=\"M29 27.586l-7.552-7.552a11.018 11.018 0 1 0-1.414 1.414L27.586 29zM4 13a9 9 0 1 1 9 9a9.01 9.01 0 0 1-9-9z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </NIcon>\n </template>\n </NButton>\n </NInputGroup>\n <div p-5px></div>\n <NCollapse>\n <NCollapseItem\n v-for=\"(selectorResult, index) in selectorResults\"\n :key=\"selectorResult.selector.toString()\"\n >\n <template #header>\n <span break-all>\n {{ selectorResult.selector.toString() }}\n </span>\n </template>\n <template #header-extra>\n <NButton\n size=\"small\"\n v-if=\"typeof selectorResult.selector == 'object'\"\n @click.stop=\"generateRules(selectorResult.selector as Selector)\"\n >\n 生成规则\n </NButton>\n <div p-l-8px></div>\n <NButton\n size=\"small\"\n @click.stop=\"selectorResults.splice(index, 1)\"\n >\n 删除\n </NButton>\n </template>\n <NSpace\n style=\"max-height: 400px; overflow-y: scroll; padding-bottom: 10px\"\n >\n <NButton\n v-for=\"resultNode in selectorResult.results\"\n :key=\"resultNode.id\"\n @click=\"onUpdateFocusNode(resultNode)\"\n size=\"small\"\n >\n {{ getNodeLabel(resultNode) }}\n </NButton>\n </NSpace>\n </NCollapseItem>\n </NCollapse>\n </div>\n </DraggableCard>\n</template>\n","<script setup lang=\"tsx\">\nimport { getDevice, getNodeLabel } from '@/utils/node';\nimport { copy } from '@/utils/others';\nimport type { RawNode, Snapshot } from '@/utils/types';\nimport {\n NTable,\n NTbody,\n NTd,\n NTh,\n NThead,\n NTr,\n NTree,\n NEllipsis,\n type TreeInst,\n type TreeOption,\n} from 'naive-ui';\nimport { HTMLAttributes, nextTick, shallowRef, watchEffect } from 'vue';\n\nconst props = withDefaults(\n defineProps<{\n snapshot: Snapshot;\n rootNode: RawNode;\n focusNode?: RawNode;\n onUpdateFocusNode?: (data: RawNode) => void;\n }>(),\n {\n onUpdateFocusNode: () => () => {},\n },\n);\n\nconst defaultExpandedKeys = shallowRef<number[]>([]);\nwatchEffect(async () => {\n if (!props.focusNode) return;\n const key = props.focusNode.id;\n let n = props.focusNode.parent;\n if (!n) {\n return;\n }\n const s = new Set(defaultExpandedKeys.value);\n while (n) {\n s.add(n.id);\n n = n.parent;\n }\n if (s.size == defaultExpandedKeys.value.length) {\n return;\n }\n defaultExpandedKeys.value = [...s];\n await nextTick();\n treeRef.value?.scrollTo({ key });\n});\n\nconst treeRef = shallowRef<TreeInst>();\n\nconst updateCheckedKeys = (\n keys: Array<string | number>,\n options: Array<TreeOption | null>,\n meta: {\n node: TreeOption | null;\n action: 'check' | 'uncheck';\n },\n) => {};\n\nconst treeFilter = (pattern: string, node: RawNode) => {\n return node.id === props.focusNode?.id;\n};\nconst treeNodeProps = (info: {\n option: RawNode;\n}): HTMLAttributes & Record<string, unknown> => {\n return {\n onClick: () => {\n props.onUpdateFocusNode(info.option);\n },\n style: {\n color: info.option.id == props.focusNode?.id ? `#00F` : void 0,\n },\n };\n};\n\nconst renderLabel = (info: {\n option: RawNode;\n checked: boolean;\n selected: boolean;\n}) => {\n return getNodeLabel(info.option);\n};\n</script>\n\n<template>\n <div flex flex-col>\n <NTable\n size=\"small\"\n striped\n :singleLine=\"false\"\n class=\"table-fixed\"\n :themeOverrides=\"{\n thPaddingSmall: '2px 4px',\n tdPaddingSmall: '2px 4px',\n }\"\n >\n <NThead>\n <NTr>\n <NTh class=\"w-140px\"> Device </NTh>\n <NTh class=\"w-100px\"> Name </NTh>\n <NTh class=\"w-100px\"> VersionName </NTh>\n <NTh class=\"w-100px\"> VersionCode </NTh>\n <NTh class=\"w-150px\"> AppId </NTh>\n <NTh> ActivityId </NTh>\n <NTh class=\"w-175px\"> 操作 </NTh>\n </NTr>\n </NThead>\n <NTbody>\n <NTr>\n <NTd class=\"whitespace-nowrap\">\n {{\n `${getDevice(snapshot).manufacturer} Android ${\n getDevice(snapshot).release || ``\n }`\n }}\n </NTd>\n <NTd class=\"whitespace-nowrap\" @click=\"copy(snapshot.appName)\">\n <NEllipsis>\n {{ snapshot.appName }}\n </NEllipsis>\n </NTd>\n <NTd class=\"whitespace-nowrap\" @click=\"copy(snapshot.appVersionName)\">\n <NEllipsis>\n {{ snapshot.appVersionName }}\n </NEllipsis>\n </NTd>\n <NTd\n class=\"whitespace-nowrap\"\n @click=\"copy(snapshot.appVersionCode.toString())\"\n >\n <NEllipsis>\n {{ snapshot.appVersionCode }}\n </NEllipsis>\n </NTd>\n <NTd class=\"whitespace-nowrap\" @click=\"copy(snapshot.appId)\">\n <NEllipsis>\n {{ snapshot.appId }}\n </NEllipsis>\n </NTd>\n <NTd @click=\"copy(snapshot.activityId)\" class=\"break-words\">\n <NEllipsis>\n {{ snapshot.activityId }}\n </NEllipsis>\n </NTd>\n <NTd>\n <slot></slot>\n </NTd>\n </NTr>\n </NTbody>\n </NTable>\n <NTree\n ref=\"treeRef\"\n virtualScroll\n showLine\n @update:checked-keys=\"updateCheckedKeys\"\n keyField=\"id\"\n :defaultExpandedKeys=\"defaultExpandedKeys\"\n :data=\"[rootNode as any]\"\n :filter=\"(treeFilter as any)\"\n :nodeProps=\"(treeNodeProps as any)\"\n :renderLabel=\"(renderLabel as any)\"\n style=\"--n-border-color: rgb(239, 239, 245)\"\n />\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n.WindowCard {\n .n-tree {\n overflow: scroll;\n }\n\n :deep(.n-tree-node-content__text) {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: 800px;\n }\n}\n</style>\n","<script lang=\"ts\" setup>\nimport ActionCard from '@/components/ActionCard.vue';\nimport AttrCard from '@/components/AttrCard.vue';\nimport ScreenshotCard from '@/components/ScreenshotCard.vue';\nimport SearchCard from '@/components/SearchCard.vue';\nimport WindowCard from '@/components/WindowCard.vue';\nimport { listToTree } from '@/utils/node';\nimport { message } from '@/utils/discrete';\nimport { delay } from '@/utils/others';\nimport {\n snapshotStorage,\n screenshotStorage,\n githubZipStorage,\n} from '@/utils/storage';\nimport type { RawNode, Snapshot } from '@/utils/types';\nimport { computed, shallowRef, watchEffect } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\nimport { useTitle } from '@vueuse/core';\nimport { gmOk } from '@/utils/gm';\nimport { exportSnapshotAsJpgUrl, exportSnapshotAsZipUrl } from '@/utils/export';\n\nconst route = useRoute();\nconst router = useRouter();\nconst title = useTitle();\n\nconst snapshotId = computed(() => String(route.params.snapshotId || ``));\nconst showSize = computed(() => {\n const n = Number(route.query.showSize || ``);\n if (!Number.isSafeInteger(n) || n <= 0) {\n return 2000;\n }\n return n;\n});\n\nconst screenshotUrl = shallowRef(``);\nconst snapshot = shallowRef<Snapshot>();\n\nwatchEffect(async () => {\n const localSnapshot = await snapshotStorage.getItem(snapshotId.value);\n if (!localSnapshot) {\n message.error(`快照数据缺失`);\n return;\n }\n if (gmOk()) {\n // 静默生成 jpg/zip\n setTimeout(async () => {\n exportSnapshotAsJpgUrl(localSnapshot);\n if (!githubZipStorage[localSnapshot.id]) {\n exportSnapshotAsZipUrl(\n (await snapshotStorage.getItem(snapshotId.value))!,\n );\n }\n }, 1000);\n }\n if (localSnapshot.nodes.length > showSize.value) {\n message.warning(\n `当前展示节点数量为${showSize.value}\\n之后的${\n localSnapshot.nodes.length - showSize.value\n }个节点将被丢弃\\n使用showSize查询参数可以修改展示数量`,\n );\n localSnapshot.nodes = localSnapshot.nodes.slice(0, showSize.value);\n }\n const bf = await screenshotStorage.getItem(snapshotId.value);\n if (!bf) {\n message.create(`截屏数据缺失`);\n return;\n }\n screenshotUrl.value = URL.createObjectURL(\n new Blob([bf], {\n type: 'image/png',\n }),\n );\n snapshot.value = localSnapshot;\n rootNode.value = listToTree(localSnapshot.nodes);\n title.value = '快照-' + localSnapshot.appName || localSnapshot.appId;\n await delay(500);\n if (!focusNode.value) {\n focusNode.value = rootNode.value;\n }\n});\n\nconst rootNode = shallowRef<RawNode>();\nconst focusNode = shallowRef<RawNode>();\n// 节点存在层叠渲染的情况,而且 Android 无障碍无法获取 z-index\n// const skipKeys = shallowRef<number[]>([]);\n\nconst onDelete = async () => {\n message.success(`删除成功,即将回到首页`);\n await delay(2000);\n router.replace({\n path: `/`,\n });\n};\n</script>\n<template>\n <div h-full flex gap-5px p-5px box-border>\n <ScreenshotCard\n v-if=\"screenshotUrl && snapshot\"\n :url=\"screenshotUrl\"\n :snapshot=\"snapshot\"\n :rootNode=\"rootNode\"\n :focusNode=\"focusNode\"\n @updateFocusNode=\"focusNode = $event\"\n />\n <WindowCard\n v-if=\"snapshot && rootNode\"\n :rootNode=\"rootNode\"\n :snapshot=\"snapshot\"\n :focusNode=\"focusNode\"\n @updateFocusNode=\"focusNode = $event\"\n class=\"flex-1\"\n >\n <ActionCard\n v-if=\"snapshot\"\n :snapshot=\"snapshot\"\n @delete=\"onDelete\"\n :showPreview=\"false\"\n />\n </WindowCard>\n <AttrCard v-if=\"focusNode\" :focusNode=\"focusNode\" />\n <SearchCard\n v-if=\"rootNode\"\n :snapshot=\"snapshot\"\n :rootNode=\"rootNode\"\n @updateFocusNode=\"focusNode = $event\"\n />\n </div>\n</template>\n"],"names":["createDataKey","key","ChevronLeftIcon","defineComponent","h","SwitcherIcon","self","vars","fontWeight","textColor1","textColor2","textColorDisabled","dividerColor","fontSize","collapseLight","commonLight","collapseLight$1","style$2","cB","cM","cE","c","fadeInHeightExpandTransition","collapseProps","useTheme","collapseInjectionKey","createInjectionKey","NCollapse","props","slots","mergedClsPrefixRef","inlineThemeDisabled","mergedRtlRef","useConfig","uncontrolledExpandedNamesRef","ref","controlledExpandedNamesRef","computed","mergedExpandedNamesRef","useMergedState","themeRef","style","doUpdateExpandedNames","names","_onUpdateExpandedNames","onUpdateExpandedNames","onExpandedNamesChange","call","doItemHeaderClick","info","onItemHeaderClick","toggleItem","collapse","name","event","accordion","expandedNames","activeNames","index","activeName","provide","rtlEnabledRef","useRtl","cssVarsRef","cubicBezierEaseInOut","titleFontWeight","titlePadding","titleTextColor","titleTextColorDisabled","textColor","arrowColor","titleFontSize","arrowColorDisabled","itemMargin","themeClassHandle","useThemeClass","_a","NCollapseItemContent","useFalseUntilTruthy","toRef","NFadeInExpandTransition","show","displayDirective","onceTrue","clsPrefix","useVShow","contentNode","withDirectives","vShow","collapseItemProps","NCollapseItem","randomName","createId","mergedNameRef","useMemo","inject","throwError","expandedNamesRef","collapseSlots","collapsedRef","expandedName","e","$slots","arrowPlacement","collapsed","mergedDisplayDirective","mergedClsPrefix","disabled","headerNode","resolveSlotWithProps","headerExtraSlot","arrowSlot","NBaseIcon","ArrowLeftIcon","ArrowRightIcon","resolveWrappedSlotWithProps","children","sizeVariables","cardColor","modalColor","popoverColor","tableHeaderColor","tableColorStriped","borderRadius","fontWeightStrong","lineHeight","fontSizeSmall","fontSizeMedium","fontSizeLarge","composite","tableLight","tableLight$1","borderRadiusSmall","hoverColor","pressedColor","primaryColor","textColor3","changeColor","treeLight","createTheme","checkboxLight","scrollbarLight","emptyLight","treeLight$1","style$1","cNotM","insideModal","insidePopover","tableProps","NTable","size","borderColor","tdColor","tdColorModal","tdColorPopover","thColor","thColorModal","thColorPopover","thTextColor","tdTextColor","thFontWeight","borderColorModal","borderColorPopover","tdColorStriped","tdColorStripedModal","tdColorStripedPopover","createKey","tdPadding","thPadding","NTh","NTr","NTd","NThead","NTbody","treeSelectInjectionKey","treeInjectionKey","NTreeNodeSwitcher","renderSwitcherIconRef","expanded","hide","indent","onClick","NIconSwitchTransition","NBaseLoading","renderSwitcherIcon","NTreeNodeCheckbox","NTree","doCheck","value","onCheck","handleUpdateValue","mergedTheme","checked","indeterminate","focusable","NCheckbox","NTreeNodeContent","renderLabelRef","renderPrefixRef","renderSuffixRef","labelFieldRef","selfRef","doClick","handleClick","labelField","nodeProps","selected","renderLabel","renderPrefix","renderSuffix","onDragstart","rawNode","prefix","suffix","label","render","renderDropMark","position","offsetLevel","el","cssPosition","defaultAllowDrop","dropPosition","node","useMergedCheckStrategy","isNodeDisabled","disabledField","traverse","nodes","childrenField","callback","callbackAfter","keysWithFilter","pattern","keyField","filter","keys","highlightKeySet","path","isBrowser","emptyImage","filterTree","tree","visitedTailKeys","visitedNonTailKeys","expandedKeys","filteredTree","visit","t","n","i","build","sibs","isVisitedTail","isVisitedNonTail","clonedNode","TreeNode","droppingNodeParentRef","droppingMouseNodeRef","draggingNodeRef","droppingPositionRef","droppingOffsetLevelRef","nodePropsRef","indentRef","blockLineRef","checkboxPlacementRef","checkOnClickRef","disabledFieldRef","showLineRef","checkboxDisabledRef","nodeIsDisabledRef","disabledRef","resolvedNodePropsRef","contentInstRef","contentElRef","onMounted","handleSwitcherClick","tmNode","onLoad","selectableRef","checkableRef","checkedRef","mergedCheckOnClickRef","checkable","checkOnClick","_handleClick","expandOnClick","selectable","mergedCheckOnClick","happensIn","handleCheck","handleContentClick","_b","handleLineClick","handleDragStart","handleDragEnter","handleDragOver","handleDragEnd","handleDragLeave","handleDrop","indentNodes","cursor","repeat","draggingNode","droppingPosition","droppingMouseNode","droppingNodeParent","highlight","draggable","blockLine","pending","internalScrollable","checkboxPlacement","dragEventHandlers","dataKey","checkboxOnRight","checkboxNode","NTreeNode","useKeyboard","fNodesRef","mergedExpandedKeysRef","mergedSelectedKeysRef","handleSelect","mergedSelectedKeys","treeSelectInjection","pendingNodeKeyRef","handleKeydown","pendingNodeKey","fNodes","fIndex","pendingNode","parentTmNode","MotionWrapper","FadeInExpandTransition","pxfy","iconSwitchTransitionNode","iconSwitchTransition","__awaiter","this","thisArg","_arguments","P","generator","adopt","resolve","reject","fulfilled","step","rejected","result","createTreeMateOptions","getChildren","treeSharedProps","treeProps","selfElRef","scrollbarInstRef","virtualListInstRef","getScrollContainer","getScrollContent","mergedFilterRef","filteredTreeInfoRef","displayTreeMateRef","createTreeMate","dataTreeMateRef","watchProps","uncontrolledCheckedKeysRef","watchEffect","controlledCheckedKeysRef","mergedCheckedKeysRef","checkedStatusRef","mergedCheckStrategyRef","displayedCheckedKeysRef","displayedIndeterminateKeysRef","indeterminateKeys","uncontrolledSelectedKeysRef","controlledSelectedKeysRef","uncontrolledExpandedKeysRef","initUncontrolledExpandedKeys","controlledExpandedKeysRef","expandTimerId","nodeKeyToBeExpanded","uncontrolledHighlightKeySetRef","controlledHighlightKeySetRef","mergedHighlightKeySetRef","loadingKeysRef","expandedNonLoadingKeysRef","dragStartX","droppingNodeRef","droppingNode","watch","resetDndState","expandAnimationDisabled","disableExpandAnimationForOneTick","nextTick","memoizedExpandedKeys","oldValue","expandedKeysAfterChange","doUpdateExpandedKeys","getOptionsByKeys","triggerLoading","loadingKeys","resetDragExpandState","loadError","displayTreeMate","getNode","aipRef","afNodesRef","prevValue","syncScrollbar","nodeHeight","depx","prevVSet","addedKey","removedKey","expandedKey","currentVSet","virtualScroll","viewportHeight","viewportItemCount","baseExpandedKeys","expandedNodeIndex","expandedChildren","flatten","collapsedNodeIndex","collapsedNodeChildren","collapsedChildren","getFIndexRef","createIndexGetter","mergedFNodesRef","scrollbarInst","handleAfterEnter","option","meta","_onUpdateExpandedKeys","onUpdateExpandedKeys","doUpdateCheckedKeys","_onUpdateCheckedKeys","onUpdateCheckedKeys","doUpdateIndeterminateKeys","_onUpdateIndeterminateKeys","onUpdateIndeterminateKeys","doUpdateSelectedKeys","_onUpdateSelectedKeys","onUpdateSelectedKeys","doDragEnter","onDragenter","doDragLeave","onDragleave","doDragEnd","onDragend","doDragStart","doDragOver","onDragover","doDrop","onDrop","resetDragState","resetDropState","checkedAction","checkedKeys","toggleExpand","mergedExpandedKeys","expandNodeId","nodeToBeExpanded","nextKeys","siblingKeySet","selectedKeys","expandDragEnterNode","expand","handleDragLeaveTree","emit","allowDrop","elOffsetHeight","elClientTop","eventOffsetY","mousePosition","getFindex","finalDropNode","finalDropPosition","hoverNodeFIndex","mouseAtExpandedNonLeafNode","offset","nextNode","prevNode","handleScroll","handleResize","handleFocusout","selfEl","targetEl","scrollTo","options","exposedMethods","nodeBorderRadius","nodeColorHover","nodeColorPressed","nodeColorActive","loadingColor","nodeTextColor","nodeTextColorDisabled","dropMarkColor","nodeWrapperPadding","lineOffsetTop","getPadding","lineOffsetBottom","nodeContentHeight","internalRenderEmpty","blockNode","internalFocusable","rtlEnabled","scrollbarProps","mergedFocusable","tabindex","treeClass","createNode","internalScrollablePadding","padding","NxScrollbar","VVirtualList","item","resolveSlot","NEmpty","isLeft","isTop","prevOffset","shallowReactive","currentStyle","xStyle","yStyle","prevEv","startMove","ev","move","target","dx","dy","endMove","box","shallowRef","preventSelection","transitions","windowEndMove","top","bottom","left","right","boxDiv","onUnmounted","newValue","oldvalue","updateTarget","arg","lenAttrNames","attrs","attr","attrDesc","imgRef","clickEvRef","img","imgRect","innerHeight","offsetTop","ox","oy","childNode","findNodeByXy","percent","positionStyle","imgHover","hoverPosition","imgMove","hoverPositionStyle","selectorText","selectorResults","searchBySelector","errorTry","message","text","enableSearchBySelector","selector","errorWrap","parseSelector","s","results","stack","getNodeLabel","generateRules","jpgUrl","githubJpgStorage","githubUrlToSelfUrl","zipUrl","githubZipStorage","rule","dayjs","copy","_1vw","defaultExpandedKeys","focusNode","id","parent","Set","add","length","treeRef","updateCheckedKeys","treeFilter","treeNodeProps","onUpdateFocusNode","color","route","useRoute","router","useRouter","title","useTitle","snapshotId","showSize","screenshotUrl","snapshot","localSnapshot","snapshotStorage","gmOk","exportSnapshotAsJpgUrl","exportSnapshotAsZipUrl","bf","screenshotStorage","rootNode","listToTree","delay","onDelete"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29]}
1
+ {"version":3,"file":"SnapshotPage-d633b6c9.js","sources":["../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/_utils/vue/create-data-key.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/_internal/icons/ChevronLeft.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/_internal/icons/Switcher.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/collapse/styles/light.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/collapse/src/styles/index.cssr.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/collapse/src/Collapse.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/collapse/src/CollapseItemContent.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/collapse/src/CollapseItem.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/table/styles/_common.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/table/styles/light.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/tree/styles/light.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/table/src/styles/index.cssr.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/table/src/Table.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/table/src/Th.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/table/src/Tr.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/table/src/Td.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/table/src/Thead.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/table/src/Tbody.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/tree-select/src/interface.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/tree/src/interface.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/tree/src/TreeNodeSwitcher.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/tree/src/TreeNodeCheckbox.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/tree/src/TreeNodeContent.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/tree/src/dnd.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/tree/src/utils.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/tree/src/TreeNode.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/tree/src/keyboard.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/tree/src/MotionWrapper.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/tree/src/styles/index.cssr.js","../../node_modules/.pnpm/naive-ui@2.35.0_vue@3.3.4/node_modules/naive-ui/es/tree/src/Tree.js","../../src/components/DraggableCard.vue","../../src/components/AttrCard.vue","../../src/components/ScreenshotCard.vue","../../src/components/SearchCard.vue","../../src/components/WindowCard.vue","../../src/views/SnapshotPage.vue"],"sourcesContent":["export function createDataKey(key) {\n return typeof key === 'string' ? `s-${key}` : `n-${key}`;\n}\n","import { h, defineComponent } from 'vue';\nexport default defineComponent({\n name: 'ChevronLeft',\n render() {\n return (h(\"svg\", { viewBox: \"0 0 16 16\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\" },\n h(\"path\", { d: \"M10.3536 3.14645C10.5488 3.34171 10.5488 3.65829 10.3536 3.85355L6.20711 8L10.3536 12.1464C10.5488 12.3417 10.5488 12.6583 10.3536 12.8536C10.1583 13.0488 9.84171 13.0488 9.64645 12.8536L5.14645 8.35355C4.95118 8.15829 4.95118 7.84171 5.14645 7.64645L9.64645 3.14645C9.84171 2.95118 10.1583 2.95118 10.3536 3.14645Z\", fill: \"currentColor\" })));\n }\n});\n","import { h, defineComponent } from 'vue';\nexport default defineComponent({\n name: 'Switcher',\n render() {\n return (h(\"svg\", { xmlns: \"http://www.w3.org/2000/svg\", viewBox: \"0 0 32 32\" },\n h(\"path\", { d: \"M12 8l10 8l-10 8z\" })));\n }\n});\n","import { commonLight } from '../../_styles/common';\nexport const self = (vars) => {\n const { fontWeight, textColor1, textColor2, textColorDisabled, dividerColor, fontSize } = vars;\n return {\n titleFontSize: fontSize,\n titleFontWeight: fontWeight,\n dividerColor,\n titleTextColor: textColor1,\n titleTextColorDisabled: textColorDisabled,\n fontSize,\n textColor: textColor2,\n arrowColor: textColor2,\n arrowColorDisabled: textColorDisabled,\n itemMargin: '16px 0 0 0',\n titlePadding: '16px 0 0 0'\n };\n};\nconst collapseLight = {\n name: 'Collapse',\n common: commonLight,\n self\n};\nexport default collapseLight;\n","import { c, cB, cE, cM } from '../../../_utils/cssr';\nimport { fadeInHeightExpandTransition } from '../../../_styles/transitions/fade-in-height-expand.cssr';\n// vars:\n// --n-font-size\n// --n-bezier\n// --n-text-color\n// --n-divider-color\n// --n-title-padding\n// --n-title-font-size\n// --n-title-text-color\n// --n-title-font-weight\n// --n-arrow-color\n// --n-arrow-color-disabled\n// --n-title-text-color-disabled\n// --n-item-margin\nexport default cB('collapse', 'width: 100%;', [cB('collapse-item', `\n font-size: var(--n-font-size);\n color: var(--n-text-color);\n transition:\n color .3s var(--n-bezier),\n border-color .3s var(--n-bezier);\n margin: var(--n-item-margin);\n `, [cM('disabled', [cE('header', 'cursor: not-allowed;', [cE('header-main', `\n color: var(--n-title-text-color-disabled);\n `), cB('collapse-item-arrow', `\n color: var(--n-arrow-color-disabled);\n `)])]), cB('collapse-item', 'margin-left: 32px;'), c('&:first-child', 'margin-top: 0;'), c('&:first-child >', [cE('header', 'padding-top: 0;')]), cM('left-arrow-placement', [cE('header', [cB('collapse-item-arrow', 'margin-right: 4px;')])]), cM('right-arrow-placement', [cE('header', [cB('collapse-item-arrow', 'margin-left: 4px;')])]), cE('content-wrapper', [cE('content-inner', 'padding-top: 16px;'), fadeInHeightExpandTransition({\n duration: '0.15s'\n})]), cM('active', [cE('header', [cM('active', [cB('collapse-item-arrow', 'transform: rotate(90deg);')])])]), c('&:not(:first-child)', 'border-top: 1px solid var(--n-divider-color);'), cE('header', `\n font-size: var(--n-title-font-size);\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n transition: color .3s var(--n-bezier);\n position: relative;\n padding: var(--n-title-padding);\n color: var(--n-title-text-color);\n cursor: pointer;\n `, [cE('header-main', `\n display: flex;\n flex-wrap: nowrap;\n align-items: center;\n font-weight: var(--n-title-font-weight);\n transition: color .3s var(--n-bezier);\n flex: 1;\n color: var(--n-title-text-color);\n `), cE('header-extra', `\n display: flex;\n align-items: center;\n transition: color .3s var(--n-bezier);\n color: var(--n-text-color);\n `), cB('collapse-item-arrow', `\n display: flex;\n transition:\n transform .15s var(--n-bezier),\n color .3s var(--n-bezier);\n font-size: 18px;\n color: var(--n-arrow-color);\n `)])])]);","import { computed, h, defineComponent, provide, ref } from 'vue';\nimport { useMergedState } from 'vooks';\nimport { useConfig, useTheme, useThemeClass } from '../../_mixins';\nimport { call, createInjectionKey, warn } from '../../_utils';\nimport { collapseLight } from '../styles';\nimport style from './styles/index.cssr';\nimport { useRtl } from '../../_mixins/use-rtl';\nexport const collapseProps = Object.assign(Object.assign({}, useTheme.props), { defaultExpandedNames: {\n type: [Array, String],\n default: null\n }, expandedNames: [Array, String], arrowPlacement: {\n type: String,\n default: 'left'\n }, accordion: {\n type: Boolean,\n default: false\n }, displayDirective: {\n type: String,\n default: 'if'\n }, onItemHeaderClick: [Function, Array], 'onUpdate:expandedNames': [Function, Array], onUpdateExpandedNames: [Function, Array], \n // deprecated\n onExpandedNamesChange: {\n type: [Function, Array],\n validator: () => {\n if (process.env.NODE_ENV !== 'production') {\n warn('collapse', '`on-expanded-names-change` is deprecated, please use `on-update:expanded-names` instead.');\n }\n return true;\n },\n default: undefined\n } });\nexport const collapseInjectionKey = createInjectionKey('n-collapse');\nexport default defineComponent({\n name: 'Collapse',\n props: collapseProps,\n setup(props, { slots }) {\n const { mergedClsPrefixRef, inlineThemeDisabled, mergedRtlRef } = useConfig(props);\n const uncontrolledExpandedNamesRef = ref(props.defaultExpandedNames);\n const controlledExpandedNamesRef = computed(() => props.expandedNames);\n const mergedExpandedNamesRef = useMergedState(controlledExpandedNamesRef, uncontrolledExpandedNamesRef);\n const themeRef = useTheme('Collapse', '-collapse', style, collapseLight, props, mergedClsPrefixRef);\n function doUpdateExpandedNames(names) {\n const { 'onUpdate:expandedNames': _onUpdateExpandedNames, onUpdateExpandedNames, onExpandedNamesChange } = props;\n if (onUpdateExpandedNames) {\n call(onUpdateExpandedNames, names);\n }\n if (_onUpdateExpandedNames) {\n call(_onUpdateExpandedNames, names);\n }\n if (onExpandedNamesChange) {\n call(onExpandedNamesChange, names);\n }\n uncontrolledExpandedNamesRef.value = names;\n }\n function doItemHeaderClick(info) {\n const { onItemHeaderClick } = props;\n if (onItemHeaderClick) {\n call(onItemHeaderClick, info);\n }\n }\n function toggleItem(collapse, name, event) {\n const { accordion } = props;\n const { value: expandedNames } = mergedExpandedNamesRef;\n if (accordion) {\n if (collapse) {\n doUpdateExpandedNames([name]);\n doItemHeaderClick({ name, expanded: true, event });\n }\n else {\n doUpdateExpandedNames([]);\n doItemHeaderClick({ name, expanded: false, event });\n }\n }\n else {\n if (!Array.isArray(expandedNames)) {\n doUpdateExpandedNames([name]);\n doItemHeaderClick({ name, expanded: true, event });\n }\n else {\n const activeNames = expandedNames.slice();\n const index = activeNames.findIndex((activeName) => name === activeName);\n if (~index) {\n activeNames.splice(index, 1);\n doUpdateExpandedNames(activeNames);\n doItemHeaderClick({ name, expanded: false, event });\n }\n else {\n activeNames.push(name);\n doUpdateExpandedNames(activeNames);\n doItemHeaderClick({ name, expanded: true, event });\n }\n }\n }\n }\n provide(collapseInjectionKey, {\n props,\n mergedClsPrefixRef,\n expandedNamesRef: mergedExpandedNamesRef,\n slots,\n toggleItem\n });\n const rtlEnabledRef = useRtl('Collapse', mergedRtlRef, mergedClsPrefixRef);\n const cssVarsRef = computed(() => {\n const { common: { cubicBezierEaseInOut }, self: { titleFontWeight, dividerColor, titlePadding, titleTextColor, titleTextColorDisabled, textColor, arrowColor, fontSize, titleFontSize, arrowColorDisabled, itemMargin } } = themeRef.value;\n return {\n '--n-font-size': fontSize,\n '--n-bezier': cubicBezierEaseInOut,\n '--n-text-color': textColor,\n '--n-divider-color': dividerColor,\n '--n-title-padding': titlePadding,\n '--n-title-font-size': titleFontSize,\n '--n-title-text-color': titleTextColor,\n '--n-title-text-color-disabled': titleTextColorDisabled,\n '--n-title-font-weight': titleFontWeight,\n '--n-arrow-color': arrowColor,\n '--n-arrow-color-disabled': arrowColorDisabled,\n '--n-item-margin': itemMargin\n };\n });\n const themeClassHandle = inlineThemeDisabled\n ? useThemeClass('collapse', undefined, cssVarsRef, props)\n : undefined;\n return {\n rtlEnabled: rtlEnabledRef,\n mergedTheme: themeRef,\n mergedClsPrefix: mergedClsPrefixRef,\n cssVars: inlineThemeDisabled ? undefined : cssVarsRef,\n themeClass: themeClassHandle === null || themeClassHandle === void 0 ? void 0 : themeClassHandle.themeClass,\n onRender: themeClassHandle === null || themeClassHandle === void 0 ? void 0 : themeClassHandle.onRender\n };\n },\n render() {\n var _a;\n (_a = this.onRender) === null || _a === void 0 ? void 0 : _a.call(this);\n return (h(\"div\", { class: [\n `${this.mergedClsPrefix}-collapse`,\n this.rtlEnabled && `${this.mergedClsPrefix}-collapse--rtl`,\n this.themeClass\n ], style: this.cssVars }, this.$slots));\n }\n});\n","import { h, withDirectives, vShow, defineComponent, toRef } from 'vue';\nimport { useFalseUntilTruthy } from 'vooks';\nimport { NFadeInExpandTransition } from '../../_internal';\nexport default defineComponent({\n name: 'CollapseItemContent',\n props: {\n displayDirective: {\n type: String,\n required: true\n },\n show: Boolean,\n clsPrefix: {\n type: String,\n required: true\n }\n },\n setup(props) {\n const onceTrueRef = useFalseUntilTruthy(toRef(props, 'show'));\n return {\n onceTrue: onceTrueRef\n };\n },\n render() {\n return (h(NFadeInExpandTransition, null, {\n default: () => {\n const { show, displayDirective, onceTrue, clsPrefix } = this;\n const useVShow = displayDirective === 'show' && onceTrue;\n const contentNode = (h(\"div\", { class: `${clsPrefix}-collapse-item__content-wrapper` },\n h(\"div\", { class: `${clsPrefix}-collapse-item__content-inner` }, this.$slots)));\n return useVShow\n ? withDirectives(contentNode, [[vShow, show]])\n : show\n ? contentNode\n : null;\n }\n }));\n }\n});\n","import { h, defineComponent, inject, computed } from 'vue';\nimport { createId } from 'seemly';\nimport { useMemo } from 'vooks';\nimport { ChevronRightIcon as ArrowRightIcon, ChevronLeftIcon as ArrowLeftIcon } from '../../_internal/icons';\nimport { useRtl } from '../../_mixins/use-rtl';\nimport { useConfig } from '../../_mixins';\nimport { NBaseIcon } from '../../_internal';\nimport { throwError, resolveSlotWithProps, resolveWrappedSlotWithProps } from '../../_utils';\nimport { collapseInjectionKey } from './Collapse';\nimport NCollapseItemContent from './CollapseItemContent';\nexport const collapseItemProps = {\n title: String,\n name: [String, Number],\n disabled: Boolean,\n displayDirective: String\n};\nexport default defineComponent({\n name: 'CollapseItem',\n props: collapseItemProps,\n setup(props) {\n const { mergedRtlRef } = useConfig(props);\n const randomName = createId();\n const mergedNameRef = useMemo(() => {\n var _a;\n return (_a = props.name) !== null && _a !== void 0 ? _a : randomName;\n });\n const NCollapse = inject(collapseInjectionKey);\n if (!NCollapse) {\n throwError('collapse-item', '`n-collapse-item` must be placed inside `n-collapse`.');\n }\n const { expandedNamesRef, props: collapseProps, mergedClsPrefixRef, slots: collapseSlots } = NCollapse;\n const collapsedRef = computed(() => {\n const { value: expandedNames } = expandedNamesRef;\n if (Array.isArray(expandedNames)) {\n const { value: name } = mergedNameRef;\n return !~expandedNames.findIndex((expandedName) => expandedName === name);\n }\n else if (expandedNames) {\n const { value: name } = mergedNameRef;\n return name !== expandedNames;\n }\n return true;\n });\n const rtlEnabledRef = useRtl('Collapse', mergedRtlRef, mergedClsPrefixRef);\n return {\n rtlEnabled: rtlEnabledRef,\n collapseSlots,\n randomName,\n mergedClsPrefix: mergedClsPrefixRef,\n collapsed: collapsedRef,\n mergedDisplayDirective: computed(() => {\n const { displayDirective } = props;\n if (displayDirective) {\n return displayDirective;\n }\n else {\n return collapseProps.displayDirective;\n }\n }),\n arrowPlacement: computed(() => {\n return collapseProps.arrowPlacement;\n }),\n handleClick(e) {\n if (NCollapse && !props.disabled) {\n NCollapse.toggleItem(collapsedRef.value, mergedNameRef.value, e);\n }\n }\n };\n },\n render() {\n const { collapseSlots, $slots, arrowPlacement, collapsed, mergedDisplayDirective, mergedClsPrefix, disabled } = this;\n const headerNode = resolveSlotWithProps($slots.header, { collapsed }, () => [this.title]);\n const headerExtraSlot = $slots['header-extra'] || collapseSlots['header-extra'];\n const arrowSlot = $slots.arrow || collapseSlots.arrow;\n return (h(\"div\", { class: [\n `${mergedClsPrefix}-collapse-item`,\n `${mergedClsPrefix}-collapse-item--${arrowPlacement}-arrow-placement`,\n disabled && `${mergedClsPrefix}-collapse-item--disabled`,\n !collapsed && `${mergedClsPrefix}-collapse-item--active`\n ] },\n h(\"div\", { class: [\n `${mergedClsPrefix}-collapse-item__header`,\n !collapsed && `${mergedClsPrefix}-collapse-item__header--active`\n ] },\n h(\"div\", { class: `${mergedClsPrefix}-collapse-item__header-main`, onClick: this.handleClick },\n arrowPlacement === 'right' && headerNode,\n h(\"div\", { class: `${mergedClsPrefix}-collapse-item-arrow`, key: this.rtlEnabled ? 0 : 1 }, resolveSlotWithProps(arrowSlot, { collapsed }, () => {\n var _a;\n return [\n h(NBaseIcon, { clsPrefix: mergedClsPrefix }, {\n default: (_a = collapseSlots.expandIcon) !== null && _a !== void 0 ? _a : (() => this.rtlEnabled ? (h(ArrowLeftIcon, null)) : (h(ArrowRightIcon, null)))\n })\n ];\n })),\n arrowPlacement === 'left' && headerNode),\n resolveWrappedSlotWithProps(headerExtraSlot, { collapsed }, (children) => (h(\"div\", { class: `${mergedClsPrefix}-collapse-item__header-extra`, onClick: this.handleClick }, children)))),\n h(NCollapseItemContent, { clsPrefix: mergedClsPrefix, displayDirective: mergedDisplayDirective, show: !collapsed }, $slots)));\n }\n});\n","export default {\n thPaddingSmall: '6px',\n thPaddingMedium: '12px',\n thPaddingLarge: '12px',\n tdPaddingSmall: '6px',\n tdPaddingMedium: '12px',\n tdPaddingLarge: '12px'\n};\n","import { composite } from 'seemly';\nimport sizeVariables from './_common';\nimport { commonLight } from '../../_styles/common';\nexport const self = (vars) => {\n const { dividerColor, cardColor, modalColor, popoverColor, tableHeaderColor, tableColorStriped, textColor1, textColor2, borderRadius, fontWeightStrong, lineHeight, fontSizeSmall, fontSizeMedium, fontSizeLarge } = vars;\n return Object.assign(Object.assign({}, sizeVariables), { fontSizeSmall,\n fontSizeMedium,\n fontSizeLarge,\n lineHeight,\n borderRadius, borderColor: composite(cardColor, dividerColor), borderColorModal: composite(modalColor, dividerColor), borderColorPopover: composite(popoverColor, dividerColor), tdColor: cardColor, tdColorModal: modalColor, tdColorPopover: popoverColor, tdColorStriped: composite(cardColor, tableColorStriped), tdColorStripedModal: composite(modalColor, tableColorStriped), tdColorStripedPopover: composite(popoverColor, tableColorStriped), thColor: composite(cardColor, tableHeaderColor), thColorModal: composite(modalColor, tableHeaderColor), thColorPopover: composite(popoverColor, tableHeaderColor), thTextColor: textColor1, tdTextColor: textColor2, thFontWeight: fontWeightStrong });\n};\nconst tableLight = {\n name: 'Table',\n common: commonLight,\n self\n};\nexport default tableLight;\n","import { changeColor } from 'seemly';\nimport { checkboxLight } from '../../checkbox/styles';\nimport { emptyLight } from '../../empty/styles';\nimport { scrollbarLight } from '../../_internal/scrollbar/styles';\nimport { commonLight } from '../../_styles/common';\nimport { createTheme } from '../../_mixins/use-theme';\nexport const self = (vars) => {\n const { borderRadiusSmall, hoverColor, pressedColor, primaryColor, textColor3, textColor2, textColorDisabled, fontSize } = vars;\n return {\n fontSize,\n lineHeight: '1.5',\n nodeHeight: '30px',\n nodeWrapperPadding: '3px 0',\n nodeBorderRadius: borderRadiusSmall,\n nodeColorHover: hoverColor,\n nodeColorPressed: pressedColor,\n nodeColorActive: changeColor(primaryColor, { alpha: 0.1 }),\n arrowColor: textColor3,\n nodeTextColor: textColor2,\n nodeTextColorDisabled: textColorDisabled,\n loadingColor: primaryColor,\n dropMarkColor: primaryColor\n };\n};\nconst treeLight = createTheme({\n name: 'Tree',\n common: commonLight,\n peers: {\n Checkbox: checkboxLight,\n Scrollbar: scrollbarLight,\n Empty: emptyLight\n },\n self\n});\nexport default treeLight;\n","import { c, cB, cM, cNotM, insideModal, insidePopover } from '../../../_utils/cssr';\n// vars:\n// --n-bezier\n// --n-td-color\n// --n-td-color-modal\n// --n-td-color-popover\n// --n-td-text-color\n// --n-border-color\n// --n-border-color-modal\n// --n-border-color-popover\n// --n-border-radius\n// --n-font-size\n// --n-th-color\n// --n-th-color-modal\n// --n-th-color-popover\n// --n-th-font-weight\n// --n-th-text-color\n// --n-line-height\n// --n-td-padding\n// --n-th-padding\nexport default c([cB('table', `\n font-size: var(--n-font-size);\n font-variant-numeric: tabular-nums;\n line-height: var(--n-line-height);\n width: 100%;\n border-radius: var(--n-border-radius) var(--n-border-radius) 0 0;\n text-align: left;\n border-collapse: separate;\n border-spacing: 0;\n overflow: hidden;\n background-color: var(--n-td-color);\n border-color: var(--n-merged-border-color);\n transition:\n background-color .3s var(--n-bezier),\n border-color .3s var(--n-bezier),\n color .3s var(--n-bezier);\n --n-merged-border-color: var(--n-border-color);\n `, [c('th', `\n white-space: nowrap;\n transition:\n background-color .3s var(--n-bezier),\n border-color .3s var(--n-bezier),\n color .3s var(--n-bezier);\n text-align: inherit;\n padding: var(--n-th-padding);\n vertical-align: inherit;\n text-transform: none;\n border: 0px solid var(--n-merged-border-color);\n font-weight: var(--n-th-font-weight);\n color: var(--n-th-text-color);\n background-color: var(--n-th-color);\n border-bottom: 1px solid var(--n-merged-border-color);\n border-right: 1px solid var(--n-merged-border-color);\n `, [c('&:last-child', `\n border-right: 0px solid var(--n-merged-border-color);\n `)]), c('td', `\n transition:\n background-color .3s var(--n-bezier),\n border-color .3s var(--n-bezier),\n color .3s var(--n-bezier);\n padding: var(--n-td-padding);\n color: var(--n-td-text-color);\n background-color: var(--n-td-color);\n border: 0px solid var(--n-merged-border-color);\n border-right: 1px solid var(--n-merged-border-color);\n border-bottom: 1px solid var(--n-merged-border-color);\n `, [c('&:last-child', `\n border-right: 0px solid var(--n-merged-border-color);\n `)]), cM('bordered', `\n border: 1px solid var(--n-merged-border-color);\n border-radius: var(--n-border-radius);\n `, [c('tr', [c('&:last-child', [c('td', `\n border-bottom: 0 solid var(--n-merged-border-color);\n `)])])]), cM('single-line', [c('th', `\n border-right: 0px solid var(--n-merged-border-color);\n `), c('td', `\n border-right: 0px solid var(--n-merged-border-color);\n `)]), cM('single-column', [c('tr', [c('&:not(:last-child)', [c('td', `\n border-bottom: 0px solid var(--n-merged-border-color);\n `)])])]), cM('striped', [c('tr:nth-of-type(even)', [c('td', 'background-color: var(--n-td-color-striped)')])]), cNotM('bottom-bordered', [c('tr', [c('&:last-child', [c('td', `\n border-bottom: 0px solid var(--n-merged-border-color);\n `)])])])]), insideModal(cB('table', `\n background-color: var(--n-td-color-modal);\n --n-merged-border-color: var(--n-border-color-modal);\n `, [c('th', `\n background-color: var(--n-th-color-modal);\n `), c('td', `\n background-color: var(--n-td-color-modal);\n `)])), insidePopover(cB('table', `\n background-color: var(--n-td-color-popover);\n --n-merged-border-color: var(--n-border-color-popover);\n `, [c('th', `\n background-color: var(--n-th-color-popover);\n `), c('td', `\n background-color: var(--n-td-color-popover);\n `)]))]);","import { defineComponent, computed, h } from 'vue';\nimport { useConfig, useTheme, useThemeClass } from '../../_mixins';\nimport { useRtl } from '../../_mixins/use-rtl';\nimport { createKey } from '../../_utils';\nimport { tableLight } from '../styles';\nimport style from './styles/index.cssr';\nexport const tableProps = Object.assign(Object.assign({}, useTheme.props), { bordered: {\n type: Boolean,\n default: true\n }, bottomBordered: {\n type: Boolean,\n default: true\n }, singleLine: {\n type: Boolean,\n default: true\n }, striped: Boolean, singleColumn: Boolean, size: {\n type: String,\n default: 'medium'\n } });\nexport default defineComponent({\n name: 'Table',\n props: tableProps,\n setup(props) {\n const { mergedClsPrefixRef, inlineThemeDisabled, mergedRtlRef } = useConfig(props);\n const themeRef = useTheme('Table', '-table', style, tableLight, props, mergedClsPrefixRef);\n const rtlEnabledRef = useRtl('Table', mergedRtlRef, mergedClsPrefixRef);\n const cssVarsRef = computed(() => {\n const { size } = props;\n const { self: { borderColor, tdColor, tdColorModal, tdColorPopover, thColor, thColorModal, thColorPopover, thTextColor, tdTextColor, borderRadius, thFontWeight, lineHeight, borderColorModal, borderColorPopover, tdColorStriped, tdColorStripedModal, tdColorStripedPopover, [createKey('fontSize', size)]: fontSize, [createKey('tdPadding', size)]: tdPadding, [createKey('thPadding', size)]: thPadding }, common: { cubicBezierEaseInOut } } = themeRef.value;\n return {\n '--n-bezier': cubicBezierEaseInOut,\n '--n-td-color': tdColor,\n '--n-td-color-modal': tdColorModal,\n '--n-td-color-popover': tdColorPopover,\n '--n-td-text-color': tdTextColor,\n '--n-border-color': borderColor,\n '--n-border-color-modal': borderColorModal,\n '--n-border-color-popover': borderColorPopover,\n '--n-border-radius': borderRadius,\n '--n-font-size': fontSize,\n '--n-th-color': thColor,\n '--n-th-color-modal': thColorModal,\n '--n-th-color-popover': thColorPopover,\n '--n-th-font-weight': thFontWeight,\n '--n-th-text-color': thTextColor,\n '--n-line-height': lineHeight,\n '--n-td-padding': tdPadding,\n '--n-th-padding': thPadding,\n '--n-td-color-striped': tdColorStriped,\n '--n-td-color-striped-modal': tdColorStripedModal,\n '--n-td-color-striped-popover': tdColorStripedPopover\n };\n });\n const themeClassHandle = inlineThemeDisabled\n ? useThemeClass('table', computed(() => {\n return props.size[0];\n }), cssVarsRef, props)\n : undefined;\n return {\n rtlEnabled: rtlEnabledRef,\n mergedClsPrefix: mergedClsPrefixRef,\n cssVars: inlineThemeDisabled ? undefined : cssVarsRef,\n themeClass: themeClassHandle === null || themeClassHandle === void 0 ? void 0 : themeClassHandle.themeClass,\n onRender: themeClassHandle === null || themeClassHandle === void 0 ? void 0 : themeClassHandle.onRender\n };\n },\n render() {\n var _a;\n const { mergedClsPrefix } = this;\n (_a = this.onRender) === null || _a === void 0 ? void 0 : _a.call(this);\n return (h(\"table\", { class: [\n `${mergedClsPrefix}-table`,\n this.themeClass,\n {\n [`${mergedClsPrefix}-table--rtl`]: this.rtlEnabled,\n [`${mergedClsPrefix}-table--bottom-bordered`]: this.bottomBordered,\n [`${mergedClsPrefix}-table--bordered`]: this.bordered,\n [`${mergedClsPrefix}-table--single-line`]: this.singleLine,\n [`${mergedClsPrefix}-table--single-column`]: this.singleColumn,\n [`${mergedClsPrefix}-table--striped`]: this.striped\n }\n ], style: this.cssVars }, this.$slots));\n }\n});\n","import { defineComponent, h } from 'vue';\nexport default defineComponent({\n name: 'Th',\n render() {\n return h(\"th\", null, this.$slots);\n }\n});\n","import { defineComponent, h } from 'vue';\nexport default defineComponent({\n name: 'Tr',\n render() {\n return h(\"tr\", null, this.$slots);\n }\n});\n","import { defineComponent, h } from 'vue';\nexport default defineComponent({\n name: 'Td',\n render() {\n return h(\"td\", null, this.$slots);\n }\n});\n","import { defineComponent, h } from 'vue';\nexport default defineComponent({\n name: 'Thead',\n render() {\n return h(\"thead\", null, this.$slots);\n }\n});\n","import { defineComponent, h } from 'vue';\nexport default defineComponent({\n name: 'Tbody',\n render() {\n return h(\"tbody\", null, this.$slots);\n }\n});\n","import { createInjectionKey } from '../../_utils';\nexport const treeSelectInjectionKey = createInjectionKey('n-tree-select');\n","import { createInjectionKey } from '../../_utils';\nexport const treeInjectionKey = createInjectionKey('n-tree');\n","import { h, defineComponent, inject } from 'vue';\nimport { SwitcherIcon } from '../../_internal/icons';\nimport { NIconSwitchTransition, NBaseLoading, NBaseIcon } from '../../_internal';\nimport { treeInjectionKey } from './interface';\nexport default defineComponent({\n name: 'NTreeSwitcher',\n props: {\n clsPrefix: {\n type: String,\n required: true\n },\n indent: { type: Number, required: true },\n expanded: Boolean,\n selected: Boolean,\n hide: Boolean,\n loading: Boolean,\n onClick: Function,\n tmNode: {\n type: Object,\n required: true\n }\n },\n setup(props) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const { renderSwitcherIconRef } = inject(treeInjectionKey, null);\n return () => {\n const { clsPrefix, expanded, hide, indent, onClick } = props;\n return (h(\"span\", { \"data-switcher\": true, class: [\n `${clsPrefix}-tree-node-switcher`,\n expanded && `${clsPrefix}-tree-node-switcher--expanded`,\n hide && `${clsPrefix}-tree-node-switcher--hide`\n ], style: { width: `${indent}px` }, onClick: onClick },\n h(\"div\", { class: `${clsPrefix}-tree-node-switcher__icon` },\n h(NIconSwitchTransition, null, {\n default: () => {\n if (props.loading) {\n return (h(NBaseLoading, { clsPrefix: clsPrefix, key: \"loading\", radius: 85, strokeWidth: 20 }));\n }\n const { value: renderSwitcherIcon } = renderSwitcherIconRef;\n return renderSwitcherIcon ? (renderSwitcherIcon({\n expanded: props.expanded,\n selected: props.selected,\n option: props.tmNode.rawNode\n })) : (h(NBaseIcon, { clsPrefix: clsPrefix, key: \"switcher\" }, { default: () => h(SwitcherIcon, null) }));\n }\n }))));\n };\n }\n});\n","import { h, defineComponent, inject } from 'vue';\nimport { NCheckbox } from '../../checkbox';\nimport { treeInjectionKey } from './interface';\nexport default defineComponent({\n name: 'NTreeNodeCheckbox',\n props: {\n clsPrefix: {\n type: String,\n required: true\n },\n indent: {\n type: Number,\n required: true\n },\n right: Boolean,\n focusable: Boolean,\n disabled: Boolean,\n checked: Boolean,\n indeterminate: Boolean,\n onCheck: Function\n },\n setup(props) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const NTree = inject(treeInjectionKey);\n function doCheck(value) {\n const { onCheck } = props;\n if (onCheck) {\n onCheck(value);\n }\n }\n function handleUpdateValue(value) {\n doCheck(value);\n }\n return {\n handleUpdateValue,\n mergedTheme: NTree.mergedThemeRef\n };\n },\n render() {\n const { clsPrefix, mergedTheme, checked, indeterminate, disabled, focusable, indent, handleUpdateValue } = this;\n return (h(\"span\", { class: [\n `${clsPrefix}-tree-node-checkbox`,\n this.right && `${clsPrefix}-tree-node-checkbox--right`\n ], style: {\n width: `${indent}px`\n }, \"data-checkbox\": true },\n h(NCheckbox, { focusable: focusable, disabled: disabled, theme: mergedTheme.peers.Checkbox, themeOverrides: mergedTheme.peerOverrides.Checkbox, checked: checked, indeterminate: indeterminate, onUpdateChecked: handleUpdateValue })));\n }\n});\n","import { h, defineComponent, ref, inject } from 'vue';\nimport { render } from '../../_utils';\nimport { treeInjectionKey } from './interface';\nexport default defineComponent({\n name: 'TreeNodeContent',\n props: {\n clsPrefix: {\n type: String,\n required: true\n },\n disabled: Boolean,\n checked: Boolean,\n selected: Boolean,\n onClick: Function,\n onDragstart: Function,\n tmNode: {\n type: Object,\n required: true\n },\n nodeProps: Object\n },\n setup(props) {\n const { renderLabelRef, renderPrefixRef, renderSuffixRef, labelFieldRef } = \n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n inject(treeInjectionKey);\n const selfRef = ref(null);\n function doClick(e) {\n const { onClick } = props;\n if (onClick)\n onClick(e);\n }\n function handleClick(e) {\n doClick(e);\n }\n return {\n selfRef,\n renderLabel: renderLabelRef,\n renderPrefix: renderPrefixRef,\n renderSuffix: renderSuffixRef,\n labelField: labelFieldRef,\n handleClick\n };\n },\n render() {\n const { clsPrefix, labelField, nodeProps, checked = false, selected = false, renderLabel, renderPrefix, renderSuffix, handleClick, onDragstart, tmNode: { rawNode, rawNode: { prefix, suffix, [labelField]: label } } } = this;\n return (h(\"span\", Object.assign({}, nodeProps, { ref: \"selfRef\", class: [`${clsPrefix}-tree-node-content`, nodeProps === null || nodeProps === void 0 ? void 0 : nodeProps.class], onClick: handleClick, draggable: onDragstart === undefined ? undefined : true, onDragstart: onDragstart }),\n renderPrefix || prefix ? (h(\"div\", { class: `${clsPrefix}-tree-node-content__prefix` }, renderPrefix\n ? renderPrefix({\n option: rawNode,\n selected,\n checked\n })\n : render(prefix))) : null,\n h(\"div\", { class: `${clsPrefix}-tree-node-content__text` }, renderLabel\n ? renderLabel({\n option: rawNode,\n selected,\n checked\n })\n : render(label)),\n renderSuffix || suffix ? (h(\"div\", { class: `${clsPrefix}-tree-node-content__suffix` }, renderSuffix\n ? renderSuffix({\n option: rawNode,\n selected,\n checked\n })\n : render(suffix))) : null));\n }\n});\n","import { h } from 'vue';\nexport function renderDropMark({ position, offsetLevel, indent, el }) {\n const style = {\n position: 'absolute',\n boxSizing: 'border-box',\n right: 0\n };\n if (position === 'inside') {\n style.left = 0;\n style.top = 0;\n style.bottom = 0;\n style.borderRadius = 'inherit';\n style.boxShadow = 'inset 0 0 0 2px var(--n-drop-mark-color)';\n }\n else {\n const cssPosition = position === 'before' ? 'top' : 'bottom';\n style[cssPosition] = 0;\n // The left prop should be modified when tree's style is changed\n // Maybe it is possible to use content left\n style.left = `${el.offsetLeft + 6 - offsetLevel * indent}px`;\n style.height = '2px';\n style.backgroundColor = 'var(--n-drop-mark-color)';\n style.transformOrigin = cssPosition;\n style.borderRadius = '1px';\n style.transform =\n position === 'before' ? 'translateY(-4px)' : 'translateY(4px)';\n }\n return h(\"div\", { style: style });\n}\nexport function defaultAllowDrop({ dropPosition, node }) {\n if (node.isLeaf === false)\n return true;\n if (node.children) {\n return true;\n }\n return dropPosition !== 'inside';\n}\n","import { computed } from 'vue';\nimport { isBrowser } from '../../_utils';\nexport function useMergedCheckStrategy(props) {\n return computed(() => (props.leafOnly ? 'child' : props.checkStrategy));\n}\nexport function isNodeDisabled(node, disabledField) {\n return !!node.rawNode[disabledField];\n}\nfunction traverse(nodes, childrenField, callback, callbackAfter) {\n nodes === null || nodes === void 0 ? void 0 : nodes.forEach((node) => {\n callback(node);\n traverse(node[childrenField], childrenField, callback, callbackAfter);\n callbackAfter(node);\n });\n}\nexport function keysWithFilter(nodes, pattern, keyField, childrenField, filter) {\n const keys = new Set();\n const highlightKeySet = new Set();\n const path = [];\n traverse(nodes, childrenField, (node) => {\n path.push(node);\n if (filter(pattern, node)) {\n highlightKeySet.add(node[keyField]);\n for (let i = path.length - 2; i >= 0; --i) {\n if (!keys.has(path[i][keyField])) {\n keys.add(path[i][keyField]);\n }\n else {\n return;\n }\n }\n }\n }, () => {\n path.pop();\n });\n return {\n expandedKeys: Array.from(keys),\n highlightKeySet\n };\n}\nconst emptyImage = null;\nif (isBrowser && Image) {\n const emptyImage = new Image();\n emptyImage.src =\n 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';\n}\nexport { emptyImage };\nexport function filterTree(tree, filter, pattern, keyField, childrenField) {\n const visitedTailKeys = new Set();\n const visitedNonTailKeys = new Set();\n const highlightKeySet = new Set();\n const expandedKeys = [];\n const filteredTree = [];\n const path = [];\n function visit(t) {\n t.forEach((n) => {\n path.push(n);\n if (filter(pattern, n)) {\n visitedTailKeys.add(n[keyField]);\n highlightKeySet.add(n[keyField]);\n for (let i = path.length - 2; i >= 0; --i) {\n const key = path[i][keyField];\n if (!visitedNonTailKeys.has(key)) {\n visitedNonTailKeys.add(key);\n if (visitedTailKeys.has(key)) {\n visitedTailKeys.delete(key);\n }\n }\n else {\n break;\n }\n }\n }\n const children = n[childrenField];\n if (children) {\n visit(children);\n }\n path.pop();\n });\n }\n visit(tree);\n function build(t, sibs) {\n t.forEach((n) => {\n const key = n[keyField];\n const isVisitedTail = visitedTailKeys.has(key);\n const isVisitedNonTail = visitedNonTailKeys.has(key);\n if (!isVisitedTail && !isVisitedNonTail)\n return;\n const children = n[childrenField];\n if (children) {\n if (isVisitedTail) {\n // If it is visited path tail, use origin node\n sibs.push(n);\n }\n else {\n // It it is not visited path tail, use cloned node\n expandedKeys.push(key);\n const clonedNode = Object.assign(Object.assign({}, n), { [childrenField]: [] });\n sibs.push(clonedNode);\n build(children, clonedNode[childrenField]);\n }\n }\n else {\n sibs.push(n);\n }\n });\n }\n build(tree, filteredTree);\n return {\n filteredTree,\n highlightKeySet,\n expandedKeys\n };\n}\n","import { h, inject, computed, defineComponent, ref, onMounted } from 'vue';\nimport { useMemo } from 'vooks';\nimport { happensIn, repeat } from 'seemly';\nimport { createDataKey } from '../../_utils';\nimport NTreeNodeSwitcher from './TreeNodeSwitcher';\nimport NTreeNodeCheckbox from './TreeNodeCheckbox';\nimport NTreeNodeContent from './TreeNodeContent';\nimport { treeInjectionKey } from './interface';\nimport { renderDropMark } from './dnd';\nimport { isNodeDisabled } from './utils';\nconst TreeNode = defineComponent({\n name: 'TreeNode',\n props: {\n clsPrefix: {\n type: String,\n required: true\n },\n tmNode: {\n type: Object,\n required: true\n }\n },\n setup(props) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const NTree = inject(treeInjectionKey);\n const { droppingNodeParentRef, droppingMouseNodeRef, draggingNodeRef, droppingPositionRef, droppingOffsetLevelRef, nodePropsRef, indentRef, blockLineRef, checkboxPlacementRef, checkOnClickRef, disabledFieldRef, showLineRef } = NTree;\n const checkboxDisabledRef = useMemo(() => !!props.tmNode.rawNode.checkboxDisabled);\n const nodeIsDisabledRef = useMemo(() => {\n return isNodeDisabled(props.tmNode, disabledFieldRef.value);\n });\n const disabledRef = useMemo(() => NTree.disabledRef.value || nodeIsDisabledRef.value);\n const resolvedNodePropsRef = computed(() => {\n const { value: nodeProps } = nodePropsRef;\n if (!nodeProps)\n return undefined;\n return nodeProps({ option: props.tmNode.rawNode });\n });\n // used for drag and drop\n const contentInstRef = ref(null);\n // must be non-reactive\n const contentElRef = { value: null };\n onMounted(() => {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n contentElRef.value = contentInstRef.value.$el;\n });\n function handleSwitcherClick() {\n const { tmNode } = props;\n if (!tmNode.isLeaf && !tmNode.shallowLoaded) {\n if (!NTree.loadingKeysRef.value.has(tmNode.key)) {\n NTree.loadingKeysRef.value.add(tmNode.key);\n }\n else {\n return;\n }\n const { onLoadRef: { value: onLoad } } = NTree;\n if (onLoad) {\n void onLoad(tmNode.rawNode)\n .then((value) => {\n if (value !== false) {\n NTree.handleSwitcherClick(tmNode);\n }\n })\n .finally(() => {\n NTree.loadingKeysRef.value.delete(tmNode.key);\n });\n }\n }\n else {\n NTree.handleSwitcherClick(tmNode);\n }\n }\n const selectableRef = useMemo(() => !nodeIsDisabledRef.value &&\n NTree.selectableRef.value &&\n (NTree.internalTreeSelect\n ? NTree.mergedCheckStrategyRef.value !== 'child' ||\n (NTree.multipleRef.value && NTree.cascadeRef.value) ||\n props.tmNode.isLeaf\n : true));\n const checkableRef = useMemo(() => NTree.checkableRef.value &&\n (NTree.cascadeRef.value ||\n NTree.mergedCheckStrategyRef.value !== 'child' ||\n props.tmNode.isLeaf));\n const checkedRef = useMemo(() => NTree.displayedCheckedKeysRef.value.includes(props.tmNode.key));\n const mergedCheckOnClickRef = useMemo(() => {\n const { value: checkable } = checkableRef;\n if (!checkable)\n return false;\n const { value: checkOnClick } = checkOnClickRef;\n const { tmNode } = props;\n if (typeof checkOnClick === 'boolean') {\n return !tmNode.disabled && checkOnClick;\n }\n return checkOnClick(props.tmNode.rawNode);\n });\n function _handleClick(e) {\n const { value: expandOnClick } = NTree.expandOnClickRef;\n const { value: selectable } = selectableRef;\n const { value: mergedCheckOnClick } = mergedCheckOnClickRef;\n if (!selectable && !expandOnClick && !mergedCheckOnClick)\n return;\n if (happensIn(e, 'checkbox') || happensIn(e, 'switcher'))\n return;\n const { tmNode } = props;\n if (selectable) {\n NTree.handleSelect(tmNode);\n }\n if (expandOnClick && !tmNode.isLeaf) {\n handleSwitcherClick();\n }\n if (mergedCheckOnClick) {\n handleCheck(!checkedRef.value);\n }\n }\n function handleContentClick(e) {\n var _a, _b;\n if (blockLineRef.value)\n return;\n if (!disabledRef.value)\n _handleClick(e);\n (_b = (_a = resolvedNodePropsRef.value) === null || _a === void 0 ? void 0 : _a.onClick) === null || _b === void 0 ? void 0 : _b.call(_a, e);\n }\n function handleLineClick(e) {\n var _a, _b;\n if (!blockLineRef.value)\n return;\n if (!disabledRef.value) {\n _handleClick(e);\n }\n (_b = (_a = resolvedNodePropsRef.value) === null || _a === void 0 ? void 0 : _a.onClick) === null || _b === void 0 ? void 0 : _b.call(_a, e);\n }\n function handleCheck(checked) {\n NTree.handleCheck(props.tmNode, checked);\n }\n // Dnd\n function handleDragStart(e) {\n NTree.handleDragStart({\n event: e,\n node: props.tmNode\n });\n }\n function handleDragEnter(e) {\n if (e.currentTarget !== e.target) {\n return;\n }\n NTree.handleDragEnter({\n event: e,\n node: props.tmNode\n });\n }\n function handleDragOver(e) {\n e.preventDefault(); // if not prevent, drop event won't be fired...\n NTree.handleDragOver({\n event: e,\n node: props.tmNode\n });\n }\n function handleDragEnd(e) {\n NTree.handleDragEnd({\n event: e,\n node: props.tmNode\n });\n }\n function handleDragLeave(e) {\n if (e.currentTarget !== e.target) {\n return;\n }\n NTree.handleDragLeave({\n event: e,\n node: props.tmNode\n });\n }\n function handleDrop(e) {\n e.preventDefault();\n if (droppingPositionRef.value !== null) {\n NTree.handleDrop({\n event: e,\n node: props.tmNode,\n dropPosition: droppingPositionRef.value\n });\n }\n }\n const indentNodes = computed(() => {\n const { clsPrefix } = props;\n const { value: indent } = indentRef;\n if (showLineRef.value) {\n const indentNodes = [];\n let cursor = props.tmNode.parent;\n while (cursor) {\n if (cursor.isLastChild) {\n indentNodes.push(h(\"div\", { class: `${clsPrefix}-tree-node-indent` },\n h(\"div\", { style: { width: `${indent}px` } })));\n }\n else {\n indentNodes.push(h(\"div\", { class: [\n `${clsPrefix}-tree-node-indent`,\n `${clsPrefix}-tree-node-indent--show-line`\n ] },\n h(\"div\", { style: { width: `${indent}px` } })));\n }\n cursor = cursor.parent;\n }\n return indentNodes.reverse();\n }\n else {\n return repeat(props.tmNode.level, h(\"div\", { class: `${props.clsPrefix}-tree-node-indent` },\n h(\"div\", { style: { width: `${indent}px` } })));\n }\n });\n return {\n showDropMark: useMemo(() => {\n const { value: draggingNode } = draggingNodeRef;\n if (!draggingNode)\n return;\n const { value: droppingPosition } = droppingPositionRef;\n if (!droppingPosition)\n return;\n const { value: droppingMouseNode } = droppingMouseNodeRef;\n if (!droppingMouseNode) {\n return;\n }\n const { tmNode } = props;\n if (tmNode.key === droppingMouseNode.key)\n return true;\n return false;\n }),\n showDropMarkAsParent: useMemo(() => {\n const { value: droppingNodeParent } = droppingNodeParentRef;\n if (!droppingNodeParent)\n return false;\n const { tmNode } = props;\n const { value: droppingPosition } = droppingPositionRef;\n if (droppingPosition === 'before' || droppingPosition === 'after') {\n return droppingNodeParent.key === tmNode.key;\n }\n return false;\n }),\n pending: useMemo(() => NTree.pendingNodeKeyRef.value === props.tmNode.key),\n loading: useMemo(() => NTree.loadingKeysRef.value.has(props.tmNode.key)),\n highlight: useMemo(() => {\n var _a;\n return (_a = NTree.highlightKeySetRef.value) === null || _a === void 0 ? void 0 : _a.has(props.tmNode.key);\n }),\n checked: checkedRef,\n indeterminate: useMemo(() => NTree.displayedIndeterminateKeysRef.value.includes(props.tmNode.key)),\n selected: useMemo(() => NTree.mergedSelectedKeysRef.value.includes(props.tmNode.key)),\n expanded: useMemo(() => NTree.mergedExpandedKeysRef.value.includes(props.tmNode.key)),\n disabled: disabledRef,\n checkable: checkableRef,\n mergedCheckOnClick: mergedCheckOnClickRef,\n checkboxDisabled: checkboxDisabledRef,\n selectable: selectableRef,\n expandOnClick: NTree.expandOnClickRef,\n internalScrollable: NTree.internalScrollableRef,\n draggable: NTree.draggableRef,\n blockLine: blockLineRef,\n nodeProps: resolvedNodePropsRef,\n checkboxFocusable: NTree.internalCheckboxFocusableRef,\n droppingPosition: droppingPositionRef,\n droppingOffsetLevel: droppingOffsetLevelRef,\n indent: indentRef,\n checkboxPlacement: checkboxPlacementRef,\n showLine: showLineRef,\n contentInstRef,\n contentElRef,\n indentNodes,\n handleCheck,\n handleDrop,\n handleDragStart,\n handleDragEnter,\n handleDragOver,\n handleDragEnd,\n handleDragLeave,\n handleLineClick,\n handleContentClick,\n handleSwitcherClick\n };\n },\n render() {\n const { tmNode, clsPrefix, checkable, expandOnClick, selectable, selected, checked, highlight, draggable, blockLine, indent, indentNodes, disabled, pending, internalScrollable, nodeProps, checkboxPlacement } = this;\n // drag start not inside\n // it need to be append to node itself, not wrapper\n const dragEventHandlers = draggable && !disabled\n ? {\n onDragenter: this.handleDragEnter,\n onDragleave: this.handleDragLeave,\n onDragend: this.handleDragEnd,\n onDrop: this.handleDrop,\n onDragover: this.handleDragOver\n }\n : undefined;\n // In non virtual mode, there's no evidence that which element should be\n // scrolled to, so we need data-key to query the target element.\n const dataKey = internalScrollable ? createDataKey(tmNode.key) : undefined;\n const checkboxOnRight = checkboxPlacement === 'right';\n const checkboxNode = checkable ? (h(NTreeNodeCheckbox, { indent: indent, right: checkboxOnRight, focusable: this.checkboxFocusable, disabled: disabled || this.checkboxDisabled, clsPrefix: clsPrefix, checked: this.checked, indeterminate: this.indeterminate, onCheck: this.handleCheck })) : null;\n return (h(\"div\", Object.assign({ class: `${clsPrefix}-tree-node-wrapper` }, dragEventHandlers),\n h(\"div\", Object.assign({}, (blockLine ? nodeProps : undefined), { class: [\n `${clsPrefix}-tree-node`,\n {\n [`${clsPrefix}-tree-node--selected`]: selected,\n [`${clsPrefix}-tree-node--checkable`]: checkable,\n [`${clsPrefix}-tree-node--highlight`]: highlight,\n [`${clsPrefix}-tree-node--pending`]: pending,\n [`${clsPrefix}-tree-node--disabled`]: disabled,\n [`${clsPrefix}-tree-node--selectable`]: selectable,\n [`${clsPrefix}-tree-node--clickable`]: selectable || expandOnClick || this.mergedCheckOnClick\n },\n nodeProps === null || nodeProps === void 0 ? void 0 : nodeProps.class\n ], \"data-key\": dataKey, draggable: draggable && blockLine, onClick: this.handleLineClick, onDragstart: draggable && blockLine && !disabled\n ? this.handleDragStart\n : undefined }),\n indentNodes,\n tmNode.isLeaf && this.showLine ? (h(\"div\", { class: [\n `${clsPrefix}-tree-node-indent`,\n `${clsPrefix}-tree-node-indent--show-line`,\n tmNode.isLeaf && `${clsPrefix}-tree-node-indent--is-leaf`,\n tmNode.isLastChild &&\n `${clsPrefix}-tree-node-indent--last-child`\n ] },\n h(\"div\", { style: { width: `${indent}px` } }))) : (h(NTreeNodeSwitcher, { clsPrefix: clsPrefix, expanded: this.expanded, selected: selected, loading: this.loading, hide: tmNode.isLeaf, tmNode: this.tmNode, indent: indent, onClick: this.handleSwitcherClick })),\n !checkboxOnRight ? checkboxNode : null,\n h(NTreeNodeContent, { ref: \"contentInstRef\", clsPrefix: clsPrefix, checked: checked, selected: selected, onClick: this.handleContentClick, nodeProps: blockLine ? undefined : nodeProps, onDragstart: draggable && !blockLine && !disabled\n ? this.handleDragStart\n : undefined, tmNode: tmNode }),\n draggable\n ? this.showDropMark\n ? renderDropMark({\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n el: this.contentElRef.value,\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n position: this.droppingPosition,\n offsetLevel: this.droppingOffsetLevel,\n indent\n })\n : this.showDropMarkAsParent\n ? renderDropMark({\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n el: this.contentElRef.value,\n position: 'inside',\n offsetLevel: this.droppingOffsetLevel,\n indent\n })\n : null\n : null,\n checkboxOnRight ? checkboxNode : null)));\n }\n});\nexport default TreeNode;\n","import { inject, ref } from 'vue';\nimport { treeSelectInjectionKey } from '../../tree-select/src/interface';\nexport function useKeyboard({ props, fNodesRef, mergedExpandedKeysRef, mergedSelectedKeysRef, handleSelect, handleSwitcherClick }) {\n const { value: mergedSelectedKeys } = mergedSelectedKeysRef;\n // If it's used in tree-select, make it take over pending state\n const treeSelectInjection = inject(treeSelectInjectionKey, null);\n const pendingNodeKeyRef = treeSelectInjection\n ? treeSelectInjection.pendingNodeKeyRef\n : ref(mergedSelectedKeys.length\n ? mergedSelectedKeys[mergedSelectedKeys.length - 1]\n : null);\n function handleKeydown(e) {\n if (!props.keyboard)\n return;\n const { value: pendingNodeKey } = pendingNodeKeyRef;\n if (pendingNodeKey === null) {\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n e.preventDefault();\n }\n if (['ArrowDown', 'ArrowUp', 'ArrowLeft', 'ArrowRight'].includes(e.key)) {\n if (pendingNodeKey === null) {\n const { value: fNodes } = fNodesRef;\n let fIndex = 0;\n while (fIndex < fNodes.length) {\n if (!fNodes[fIndex].disabled) {\n pendingNodeKeyRef.value = fNodes[fIndex].key;\n break;\n }\n fIndex += 1;\n }\n }\n }\n }\n else {\n const { value: fNodes } = fNodesRef;\n let fIndex = fNodes.findIndex((tmNode) => tmNode.key === pendingNodeKey);\n if (!~fIndex)\n return;\n if (e.key === 'Enter') {\n handleSelect(fNodes[fIndex]);\n }\n else if (e.key === 'ArrowDown') {\n e.preventDefault();\n fIndex += 1;\n while (fIndex < fNodes.length) {\n if (!fNodes[fIndex].disabled) {\n pendingNodeKeyRef.value = fNodes[fIndex].key;\n break;\n }\n fIndex += 1;\n }\n }\n else if (e.key === 'ArrowUp') {\n e.preventDefault();\n fIndex -= 1;\n while (fIndex >= 0) {\n if (!fNodes[fIndex].disabled) {\n pendingNodeKeyRef.value = fNodes[fIndex].key;\n break;\n }\n fIndex -= 1;\n }\n }\n else if (e.key === 'ArrowLeft') {\n const pendingNode = fNodes[fIndex];\n if (pendingNode.isLeaf ||\n !mergedExpandedKeysRef.value.includes(pendingNodeKey)) {\n const parentTmNode = pendingNode.getParent();\n if (parentTmNode) {\n pendingNodeKeyRef.value = parentTmNode.key;\n }\n }\n else {\n handleSwitcherClick(pendingNode);\n }\n }\n else if (e.key === 'ArrowRight') {\n const pendingNode = fNodes[fIndex];\n if (pendingNode.isLeaf)\n return;\n if (!mergedExpandedKeysRef.value.includes(pendingNodeKey)) {\n handleSwitcherClick(pendingNode);\n }\n else {\n // Tha same as ArrowDown\n fIndex += 1;\n while (fIndex < fNodes.length) {\n if (!fNodes[fIndex].disabled) {\n pendingNodeKeyRef.value = fNodes[fIndex].key;\n break;\n }\n fIndex += 1;\n }\n }\n }\n }\n }\n return {\n pendingNodeKeyRef,\n handleKeydown\n };\n}\n","import { h, defineComponent } from 'vue';\nimport { pxfy } from 'seemly';\nimport FadeInExpandTransition from '../../_internal/fade-in-expand-transition';\nimport TreeNode from './TreeNode';\nexport default defineComponent({\n name: 'TreeMotionWrapper',\n props: {\n clsPrefix: {\n type: String,\n required: true\n },\n height: Number,\n nodes: {\n type: Array,\n required: true\n },\n mode: {\n type: String,\n required: true\n },\n onAfterEnter: {\n type: Function,\n required: true\n }\n },\n render() {\n const { clsPrefix } = this;\n return (h(FadeInExpandTransition, { onAfterEnter: this.onAfterEnter, appear: true, reverse: this.mode === 'collapse' }, {\n default: () => (h(\"div\", { class: [\n `${clsPrefix}-tree-motion-wrapper`,\n `${clsPrefix}-tree-motion-wrapper--${this.mode}`\n ], style: {\n height: pxfy(this.height)\n } }, this.nodes.map((node) => (h(TreeNode, { clsPrefix: clsPrefix, tmNode: node })))))\n }));\n }\n});\n","import { c, cB, cE, cM, cNotM } from '../../../_utils/cssr';\nimport { iconSwitchTransition } from '../../../_styles/transitions/icon-switch.cssr';\nimport { fadeInHeightExpandTransition } from '../../../_styles/transitions/fade-in-height-expand.cssr';\nconst iconSwitchTransitionNode = iconSwitchTransition();\n// vars:\n// --n-arrow-color\n// --n-bezier\n// --n-font-size\n// --n-node-border-radius\n// --n-node-color-active\n// --n-node-color-hover\n// --n-node-color-pressed\n// --n-node-text-color\n// --n-node-text-color-disabled\n// --n-node-wrapper-padding\n// --n-line-offset-top\n// --n-line-offset-bottom\n// --n-node-content-height\n// --n-line-height\nexport default cB('tree', `\n font-size: var(--n-font-size);\n outline: none;\n`, [c('ul, li', `\n margin: 0;\n padding: 0;\n list-style: none;\n `), c('>', [cB('tree-node', [c('&:first-child', 'margin-top: 0;')])]), cB('tree-motion-wrapper', [cM('expand', [fadeInHeightExpandTransition({\n duration: '0.2s'\n})]), cM('collapse', [fadeInHeightExpandTransition({\n duration: '0.2s',\n reverse: true\n})])]), cB('tree-node-wrapper', `\n box-sizing: border-box;\n padding: var(--n-node-wrapper-padding);\n `), cB('tree-node', `\n transform: translate3d(0,0,0);\n position: relative;\n display: flex;\n border-radius: var(--n-node-border-radius);\n transition: background-color .3s var(--n-bezier);\n `, [cM('highlight', [cB('tree-node-content', [cE('text', 'border-bottom-color: var(--n-node-text-color-disabled);')])]), cM('disabled', [cB('tree-node-content', `\n color: var(--n-node-text-color-disabled);\n cursor: not-allowed;\n `)]), cNotM('disabled', [cM('clickable', [cB('tree-node-content', `\n cursor: pointer;\n `)])])]), cM('block-node', [cB('tree-node-content', `\n flex: 1;\n min-width: 0;\n `)]), cNotM('block-line', [cB('tree-node', [cNotM('disabled', [cB('tree-node-content', [c('&:hover', 'background: var(--n-node-color-hover);')]), cM('selectable', [cB('tree-node-content', [c('&:active', 'background: var(--n-node-color-pressed);')])]), cM('pending', [cB('tree-node-content', `\n background: var(--n-node-color-hover);\n `)]), cM('selected', [cB('tree-node-content', 'background: var(--n-node-color-active);')])])])]), cM('block-line', [cB('tree-node', [cNotM('disabled', [c('&:hover', 'background: var(--n-node-color-hover);'), cM('pending', `\n background: var(--n-node-color-hover);\n `), cM('selectable', [cNotM('selected', [c('&:active', 'background: var(--n-node-color-pressed);')])]), cM('selected', 'background: var(--n-node-color-active);')]), cM('disabled', `\n cursor: not-allowed;\n `)])]), cB('tree-node-indent', `\n flex-grow: 0;\n flex-shrink: 0;\n `, [cM('show-line', 'position: relative', [c('&::before', `\n position: absolute;\n left: 50%;\n border-left: 1px solid var(--n-border-color);\n transition: border-color .3s var(--n-bezier);\n transform: translate(-50%);\n content: \"\";\n top: var(--n-line-offset-top);\n bottom: var(--n-line-offset-bottom);\n `), cM('last-child', [c('&::before', `\n bottom: 50%;\n `)]), cM('is-leaf', [c('&::after', `\n position: absolute;\n content: \"\";\n left: calc(50% + 0.5px);\n right: 0;\n bottom: 50%;\n transition: border-color .3s var(--n-bezier);\n border-bottom: 1px solid var(--n-border-color);\n `)])]), cNotM('show-line', 'height: 0;')]), cB('tree-node-switcher', `\n cursor: pointer;\n display: inline-flex;\n flex-shrink: 0;\n height: var(--n-node-content-height);\n align-items: center;\n justify-content: center;\n transition: transform .15s var(--n-bezier);\n vertical-align: bottom;\n `, [cE('icon', `\n position: relative;\n height: 14px;\n width: 14px;\n display: flex;\n color: var(--n-arrow-color);\n transition: color .3s var(--n-bezier);\n font-size: 14px;\n `, [cB('icon', [iconSwitchTransitionNode]), cB('base-loading', `\n color: var(--n-loading-color);\n position: absolute;\n left: 0;\n top: 0;\n right: 0;\n bottom: 0;\n `, [iconSwitchTransitionNode]), cB('base-icon', [iconSwitchTransitionNode])]), cM('hide', 'visibility: hidden;'), cM('expanded', 'transform: rotate(90deg);')]), cB('tree-node-checkbox', `\n display: inline-flex;\n height: var(--n-node-content-height);\n vertical-align: bottom;\n align-items: center;\n justify-content: center;\n `), cB('tree-node-content', `\n user-select: none;\n position: relative;\n display: inline-flex;\n align-items: center;\n min-height: var(--n-node-content-height);\n box-sizing: border-box;\n line-height: var(--n-line-height);\n vertical-align: bottom;\n padding: 0 6px 0 4px;\n cursor: default;\n border-radius: var(--n-node-border-radius);\n color: var(--n-node-text-color);\n transition:\n color .3s var(--n-bezier),\n background-color .3s var(--n-bezier),\n border-color .3s var(--n-bezier);\n `, [c('&:last-child', 'margin-bottom: 0;'), cE('prefix', `\n display: inline-flex;\n margin-right: 8px;\n `), cE('text', `\n border-bottom: 1px solid #0000;\n transition: border-color .3s var(--n-bezier);\n flex-grow: 1;\n max-width: 100%;\n `), cE('suffix', `\n display: inline-flex;\n `)]), cE('empty', 'margin: auto;')]);","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\nimport { h, ref, toRef, computed, defineComponent, provide, watch, nextTick, watchEffect, inject } from 'vue';\nimport { createTreeMate, flatten, createIndexGetter } from 'treemate';\nimport { useMergedState } from 'vooks';\nimport { VVirtualList } from 'vueuc';\nimport { depx, getPadding, pxfy } from 'seemly';\nimport { treeSelectInjectionKey } from '../../tree-select/src/interface';\nimport { useConfig, useTheme, useThemeClass, useRtl } from '../../_mixins';\nimport { call, createDataKey, resolveSlot, warn, warnOnce } from '../../_utils';\nimport { NxScrollbar } from '../../_internal';\nimport { treeLight } from '../styles';\nimport { NEmpty } from '../../empty';\nimport NTreeNode from './TreeNode';\nimport { keysWithFilter, emptyImage, filterTree, isNodeDisabled, useMergedCheckStrategy } from './utils';\nimport { useKeyboard } from './keyboard';\nimport { treeInjectionKey } from './interface';\nimport MotionWrapper from './MotionWrapper';\nimport { defaultAllowDrop } from './dnd';\nimport style from './styles/index.cssr';\nexport function createTreeMateOptions(keyField, childrenField, disabledField, getChildren) {\n const settledGetChildren = getChildren ||\n ((node) => {\n return node[childrenField];\n });\n return {\n getIsGroup() {\n return false;\n },\n getKey(node) {\n return node[keyField];\n },\n getChildren: settledGetChildren,\n getDisabled(node) {\n return !!(node[disabledField] || node.checkboxDisabled);\n }\n };\n}\nexport const treeSharedProps = {\n allowCheckingNotLoaded: Boolean,\n filter: Function,\n defaultExpandAll: Boolean,\n expandedKeys: Array,\n keyField: {\n type: String,\n default: 'key'\n },\n labelField: {\n type: String,\n default: 'label'\n },\n childrenField: {\n type: String,\n default: 'children'\n },\n disabledField: {\n type: String,\n default: 'disabled'\n },\n defaultExpandedKeys: {\n type: Array,\n default: () => []\n },\n indeterminateKeys: Array,\n renderSwitcherIcon: Function,\n onUpdateIndeterminateKeys: [Function, Array],\n 'onUpdate:indeterminateKeys': [Function, Array],\n onUpdateExpandedKeys: [Function, Array],\n 'onUpdate:expandedKeys': [Function, Array]\n};\nexport const treeProps = Object.assign(Object.assign(Object.assign(Object.assign({}, useTheme.props), { accordion: Boolean, showIrrelevantNodes: { type: Boolean, default: true }, data: {\n type: Array,\n default: () => []\n }, expandOnDragenter: {\n type: Boolean,\n default: true\n }, expandOnClick: Boolean, checkOnClick: {\n type: [Boolean, Function],\n default: false\n }, cancelable: {\n type: Boolean,\n default: true\n }, checkable: Boolean, draggable: Boolean, blockNode: Boolean, blockLine: Boolean, showLine: Boolean, disabled: Boolean, checkedKeys: Array, defaultCheckedKeys: {\n type: Array,\n default: () => []\n }, selectedKeys: Array, defaultSelectedKeys: {\n type: Array,\n default: () => []\n }, multiple: Boolean, pattern: {\n type: String,\n default: ''\n }, onLoad: Function, cascade: Boolean, selectable: {\n type: Boolean,\n default: true\n }, scrollbarProps: Object, indent: {\n type: Number,\n default: 24\n }, allowDrop: {\n type: Function,\n default: defaultAllowDrop\n }, animated: {\n type: Boolean,\n default: true\n }, checkboxPlacement: {\n type: String,\n default: 'left'\n }, virtualScroll: Boolean, watchProps: Array, renderLabel: Function, renderPrefix: Function, renderSuffix: Function, nodeProps: Function, keyboard: {\n type: Boolean,\n default: true\n }, getChildren: Function, onDragenter: [Function, Array], onDragleave: [Function, Array], onDragend: [Function, Array], onDragstart: [Function, Array], onDragover: [Function, Array], onDrop: [Function, Array], onUpdateCheckedKeys: [Function, Array], 'onUpdate:checkedKeys': [Function, Array], onUpdateSelectedKeys: [Function, Array], 'onUpdate:selectedKeys': [Function, Array] }), treeSharedProps), { \n // internal props for tree-select\n internalTreeSelect: Boolean, internalScrollable: Boolean, internalScrollablePadding: String, \n // use it to display\n internalRenderEmpty: Function, internalHighlightKeySet: Object, internalUnifySelectCheck: Boolean, internalCheckboxFocusable: {\n type: Boolean,\n default: true\n }, internalFocusable: {\n // Make tree-select take over keyboard operations\n type: Boolean,\n default: true\n }, checkStrategy: {\n type: String,\n default: 'all'\n }, \n /**\n * @deprecated\n */\n leafOnly: Boolean });\nexport default defineComponent({\n name: 'Tree',\n props: treeProps,\n setup(props) {\n if (process.env.NODE_ENV !== 'production') {\n watchEffect(() => {\n if (props.leafOnly) {\n warnOnce('tree', '`leaf-only` is deprecated, please use `check-strategy=\"child\"` instead');\n }\n });\n }\n const { mergedClsPrefixRef, inlineThemeDisabled, mergedRtlRef } = useConfig(props);\n const rtlEnabledRef = useRtl('Tree', mergedRtlRef, mergedClsPrefixRef);\n const themeRef = useTheme('Tree', '-tree', style, treeLight, props, mergedClsPrefixRef);\n const selfElRef = ref(null);\n const scrollbarInstRef = ref(null);\n const virtualListInstRef = ref(null);\n function getScrollContainer() {\n var _a;\n return (_a = virtualListInstRef.value) === null || _a === void 0 ? void 0 : _a.listElRef;\n }\n function getScrollContent() {\n var _a;\n return (_a = virtualListInstRef.value) === null || _a === void 0 ? void 0 : _a.itemsElRef;\n }\n const mergedFilterRef = computed(() => {\n const { filter } = props;\n if (filter)\n return filter;\n const { labelField } = props;\n return (pattern, node) => {\n if (!pattern.length)\n return true;\n const label = node[labelField];\n if (typeof label === 'string') {\n return label.toLowerCase().includes(pattern.toLowerCase());\n }\n return false;\n };\n });\n const filteredTreeInfoRef = computed(() => {\n const { pattern } = props;\n if (!pattern) {\n return {\n filteredTree: props.data,\n highlightKeySet: null,\n expandedKeys: undefined\n };\n }\n if (!pattern.length || !mergedFilterRef.value) {\n return {\n filteredTree: props.data,\n highlightKeySet: null,\n expandedKeys: undefined\n };\n }\n return filterTree(props.data, mergedFilterRef.value, pattern, props.keyField, props.childrenField);\n });\n // We don't expect data source to change so we just determine it once\n const displayTreeMateRef = computed(() => createTreeMate(props.showIrrelevantNodes\n ? props.data\n : filteredTreeInfoRef.value.filteredTree, createTreeMateOptions(props.keyField, props.childrenField, props.disabledField, props.getChildren)));\n const treeSelectInjection = inject(treeSelectInjectionKey, null);\n const dataTreeMateRef = props.internalTreeSelect\n ? treeSelectInjection.dataTreeMate\n : displayTreeMateRef;\n const { watchProps } = props;\n const uncontrolledCheckedKeysRef = ref([]);\n if (watchProps === null || watchProps === void 0 ? void 0 : watchProps.includes('defaultCheckedKeys')) {\n watchEffect(() => {\n uncontrolledCheckedKeysRef.value = props.defaultCheckedKeys;\n });\n }\n else {\n uncontrolledCheckedKeysRef.value = props.defaultCheckedKeys;\n }\n const controlledCheckedKeysRef = toRef(props, 'checkedKeys');\n const mergedCheckedKeysRef = useMergedState(controlledCheckedKeysRef, uncontrolledCheckedKeysRef);\n const checkedStatusRef = computed(() => {\n const value = dataTreeMateRef.value.getCheckedKeys(mergedCheckedKeysRef.value, {\n cascade: props.cascade,\n allowNotLoaded: props.allowCheckingNotLoaded\n });\n return value;\n });\n const mergedCheckStrategyRef = useMergedCheckStrategy(props);\n const displayedCheckedKeysRef = computed(() => {\n return checkedStatusRef.value.checkedKeys;\n });\n const displayedIndeterminateKeysRef = computed(() => {\n const { indeterminateKeys } = props;\n if (indeterminateKeys !== undefined)\n return indeterminateKeys;\n return checkedStatusRef.value.indeterminateKeys;\n });\n const uncontrolledSelectedKeysRef = ref([]);\n if (watchProps === null || watchProps === void 0 ? void 0 : watchProps.includes('defaultSelectedKeys')) {\n watchEffect(() => {\n uncontrolledSelectedKeysRef.value = props.defaultSelectedKeys;\n });\n }\n else {\n uncontrolledSelectedKeysRef.value = props.defaultSelectedKeys;\n }\n const controlledSelectedKeysRef = toRef(props, 'selectedKeys');\n const mergedSelectedKeysRef = useMergedState(controlledSelectedKeysRef, uncontrolledSelectedKeysRef);\n const uncontrolledExpandedKeysRef = ref([]);\n const initUncontrolledExpandedKeys = (keys) => {\n uncontrolledExpandedKeysRef.value = props.defaultExpandAll\n ? dataTreeMateRef.value.getNonLeafKeys()\n : keys === undefined\n ? props.defaultExpandedKeys\n : keys;\n };\n if (watchProps === null || watchProps === void 0 ? void 0 : watchProps.includes('defaultExpandedKeys')) {\n // if watching defaultExpandedKeys, we use access props.defaultExpandedKeys inside initiator\n watchEffect(() => {\n initUncontrolledExpandedKeys(undefined);\n });\n }\n else {\n // We by default watchEffect since if defaultExpandAll is true, we should remain tree expand if data changes\n watchEffect(() => {\n initUncontrolledExpandedKeys(props.defaultExpandedKeys);\n });\n }\n const controlledExpandedKeysRef = toRef(props, 'expandedKeys');\n const mergedExpandedKeysRef = useMergedState(controlledExpandedKeysRef, uncontrolledExpandedKeysRef);\n const fNodesRef = computed(() => displayTreeMateRef.value.getFlattenedNodes(mergedExpandedKeysRef.value));\n const { pendingNodeKeyRef, handleKeydown } = useKeyboard({\n props,\n mergedSelectedKeysRef,\n fNodesRef,\n mergedExpandedKeysRef,\n handleSelect,\n handleSwitcherClick\n });\n let expandTimerId = null;\n let nodeKeyToBeExpanded = null;\n const uncontrolledHighlightKeySetRef = ref(new Set());\n const controlledHighlightKeySetRef = computed(() => {\n return (props.internalHighlightKeySet ||\n filteredTreeInfoRef.value.highlightKeySet);\n });\n const mergedHighlightKeySetRef = useMergedState(controlledHighlightKeySetRef, uncontrolledHighlightKeySetRef);\n const loadingKeysRef = ref(new Set());\n const expandedNonLoadingKeysRef = computed(() => {\n return mergedExpandedKeysRef.value.filter((key) => !loadingKeysRef.value.has(key));\n });\n let dragStartX = 0;\n const draggingNodeRef = ref(null);\n const droppingNodeRef = ref(null);\n const droppingMouseNodeRef = ref(null);\n const droppingPositionRef = ref(null);\n const droppingOffsetLevelRef = ref(0);\n const droppingNodeParentRef = computed(() => {\n const { value: droppingNode } = droppingNodeRef;\n if (!droppingNode)\n return null;\n // May avoid overlap between line mark of first child & rect mark of parent\n // if (droppingNode.isFirstChild && droppingPositionRef.value === 'before') {\n // return null\n // }\n return droppingNode.parent;\n });\n // shallow watch data\n watch(toRef(props, 'data'), () => {\n loadingKeysRef.value.clear();\n pendingNodeKeyRef.value = null;\n resetDndState();\n }, {\n deep: false\n });\n let expandAnimationDisabled = false;\n const disableExpandAnimationForOneTick = () => {\n expandAnimationDisabled = true;\n void nextTick(() => {\n expandAnimationDisabled = false;\n });\n };\n let memoizedExpandedKeys;\n watch(toRef(props, 'pattern'), (value, oldValue) => {\n if (props.showIrrelevantNodes) {\n memoizedExpandedKeys = undefined;\n if (value) {\n const { expandedKeys: expandedKeysAfterChange, highlightKeySet } = keysWithFilter(props.data, props.pattern, props.keyField, props.childrenField, mergedFilterRef.value);\n uncontrolledHighlightKeySetRef.value = highlightKeySet;\n disableExpandAnimationForOneTick();\n doUpdateExpandedKeys(expandedKeysAfterChange, getOptionsByKeys(expandedKeysAfterChange), { node: null, action: 'filter' });\n }\n else {\n uncontrolledHighlightKeySetRef.value = new Set();\n }\n }\n else {\n if (!value.length) {\n if (memoizedExpandedKeys !== undefined) {\n disableExpandAnimationForOneTick();\n doUpdateExpandedKeys(memoizedExpandedKeys, getOptionsByKeys(memoizedExpandedKeys), { node: null, action: 'filter' });\n }\n }\n else {\n if (!oldValue.length) {\n memoizedExpandedKeys = mergedExpandedKeysRef.value;\n }\n const { expandedKeys } = filteredTreeInfoRef.value;\n if (expandedKeys !== undefined) {\n disableExpandAnimationForOneTick();\n doUpdateExpandedKeys(expandedKeys, getOptionsByKeys(expandedKeys), {\n node: null,\n action: 'filter'\n });\n }\n }\n }\n });\n function triggerLoading(node) {\n return __awaiter(this, void 0, void 0, function* () {\n const { onLoad } = props;\n if (!onLoad) {\n if (process.env.NODE_ENV !== 'production') {\n warn('tree', 'There is unloaded node in data but props.onLoad is not specified.');\n }\n yield Promise.resolve();\n return;\n }\n const { value: loadingKeys } = loadingKeysRef;\n if (!loadingKeys.has(node.key)) {\n loadingKeys.add(node.key);\n try {\n const loadResult = yield onLoad(node.rawNode);\n if (loadResult === false) {\n resetDragExpandState();\n }\n }\n catch (loadError) {\n console.error(loadError);\n resetDragExpandState();\n }\n loadingKeys.delete(node.key);\n }\n });\n }\n watchEffect(() => {\n var _a;\n const { value: displayTreeMate } = displayTreeMateRef;\n if (!displayTreeMate)\n return;\n const { getNode } = displayTreeMate;\n (_a = mergedExpandedKeysRef.value) === null || _a === void 0 ? void 0 : _a.forEach((key) => {\n const node = getNode(key);\n if (node && !node.shallowLoaded) {\n void triggerLoading(node);\n }\n });\n });\n // animation in progress\n const aipRef = ref(false);\n // animation flattened nodes\n const afNodesRef = ref([]);\n // Note: Since the virtual list depends on min height, if there's a node\n // whose height starts from 0, the virtual list will have a wrong height\n // during animation. This will seldom cause wired scrollbar status. It is\n // fixable and need some changes in vueuc, I've no time so I just leave it\n // here. Maybe the bug won't be fixed during the life time of the project.\n watch(expandedNonLoadingKeysRef, (value, prevValue) => {\n if (!props.animated || expandAnimationDisabled) {\n void nextTick(syncScrollbar);\n return;\n }\n const nodeHeight = depx(themeRef.value.self.nodeHeight);\n const prevVSet = new Set(prevValue);\n let addedKey = null;\n let removedKey = null;\n for (const expandedKey of value) {\n if (!prevVSet.has(expandedKey)) {\n if (addedKey !== null)\n return; // multi expand, not triggered by click\n addedKey = expandedKey;\n }\n }\n const currentVSet = new Set(value);\n for (const expandedKey of prevValue) {\n if (!currentVSet.has(expandedKey)) {\n if (removedKey !== null)\n return; // multi collapse, not triggered by click\n removedKey = expandedKey;\n }\n }\n if (addedKey === null && removedKey === null) {\n // 1. multi action, not triggered by click\n // 2. no action, don't know what happened\n return;\n }\n const { virtualScroll } = props;\n const viewportHeight = (virtualScroll ? virtualListInstRef.value.listElRef : selfElRef.value).offsetHeight;\n const viewportItemCount = Math.ceil(viewportHeight / nodeHeight) + 1;\n // play add animation\n let baseExpandedKeys;\n if (addedKey !== null) {\n baseExpandedKeys = prevValue;\n }\n if (removedKey !== null) {\n if (baseExpandedKeys === undefined) {\n baseExpandedKeys = value;\n }\n else {\n baseExpandedKeys = baseExpandedKeys.filter((key) => key !== removedKey);\n }\n }\n aipRef.value = true;\n afNodesRef.value =\n displayTreeMateRef.value.getFlattenedNodes(baseExpandedKeys);\n if (addedKey !== null) {\n const expandedNodeIndex = afNodesRef.value.findIndex((node) => node.key === addedKey);\n if (~expandedNodeIndex) {\n const children = // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n afNodesRef.value[expandedNodeIndex].children;\n // sometimes user will pass leaf keys in\n if (children) {\n const expandedChildren = flatten(children, value);\n afNodesRef.value.splice(expandedNodeIndex + 1, 0, {\n __motion: true,\n mode: 'expand',\n height: virtualScroll\n ? expandedChildren.length * nodeHeight\n : undefined,\n nodes: virtualScroll\n ? expandedChildren.slice(0, viewportItemCount)\n : expandedChildren\n });\n }\n }\n }\n if (removedKey !== null) {\n const collapsedNodeIndex = afNodesRef.value.findIndex((node) => node.key === removedKey);\n if (~collapsedNodeIndex) {\n const collapsedNodeChildren = afNodesRef.value[collapsedNodeIndex].children;\n // Sometime the whole tree is change, remove a key doesn't mean it is collapsed,\n // but maybe children removed\n if (!collapsedNodeChildren)\n return;\n // play remove animation\n aipRef.value = true;\n const collapsedChildren = flatten(collapsedNodeChildren, value);\n afNodesRef.value.splice(collapsedNodeIndex + 1, 0, {\n __motion: true,\n mode: 'collapse',\n height: virtualScroll\n ? collapsedChildren.length * nodeHeight\n : undefined,\n nodes: virtualScroll\n ? collapsedChildren.slice(0, viewportItemCount)\n : collapsedChildren\n });\n }\n }\n });\n const getFIndexRef = computed(() => {\n return createIndexGetter(fNodesRef.value);\n });\n const mergedFNodesRef = computed(() => {\n if (aipRef.value)\n return afNodesRef.value;\n else\n return fNodesRef.value;\n });\n function syncScrollbar() {\n const { value: scrollbarInst } = scrollbarInstRef;\n if (scrollbarInst)\n scrollbarInst.sync();\n }\n function handleAfterEnter() {\n aipRef.value = false;\n if (props.virtualScroll) {\n // If virtual scroll, we won't listen to resize during animation, so\n // resize callback of virtual list won't be called and as a result\n // scrollbar won't sync. We need to sync scrollbar manually.\n void nextTick(syncScrollbar);\n }\n }\n function getOptionsByKeys(keys) {\n const { getNode } = dataTreeMateRef.value;\n return keys.map((key) => { var _a; return ((_a = getNode(key)) === null || _a === void 0 ? void 0 : _a.rawNode) || null; });\n }\n function doUpdateExpandedKeys(value, option, meta) {\n const { 'onUpdate:expandedKeys': _onUpdateExpandedKeys, onUpdateExpandedKeys } = props;\n uncontrolledExpandedKeysRef.value = value;\n if (_onUpdateExpandedKeys) {\n call(_onUpdateExpandedKeys, value, option, meta);\n }\n if (onUpdateExpandedKeys) {\n call(onUpdateExpandedKeys, value, option, meta);\n }\n }\n function doUpdateCheckedKeys(value, option, meta) {\n const { 'onUpdate:checkedKeys': _onUpdateCheckedKeys, onUpdateCheckedKeys } = props;\n uncontrolledCheckedKeysRef.value = value;\n if (onUpdateCheckedKeys) {\n call(onUpdateCheckedKeys, value, option, meta);\n }\n if (_onUpdateCheckedKeys) {\n call(_onUpdateCheckedKeys, value, option, meta);\n }\n }\n function doUpdateIndeterminateKeys(value, option) {\n const { 'onUpdate:indeterminateKeys': _onUpdateIndeterminateKeys, onUpdateIndeterminateKeys } = props;\n if (_onUpdateIndeterminateKeys) {\n call(_onUpdateIndeterminateKeys, value, option);\n }\n if (onUpdateIndeterminateKeys) {\n call(onUpdateIndeterminateKeys, value, option);\n }\n }\n function doUpdateSelectedKeys(value, option, meta) {\n const { 'onUpdate:selectedKeys': _onUpdateSelectedKeys, onUpdateSelectedKeys } = props;\n uncontrolledSelectedKeysRef.value = value;\n if (onUpdateSelectedKeys) {\n call(onUpdateSelectedKeys, value, option, meta);\n }\n if (_onUpdateSelectedKeys) {\n call(_onUpdateSelectedKeys, value, option, meta);\n }\n }\n // Drag & Drop\n function doDragEnter(info) {\n const { onDragenter } = props;\n if (onDragenter)\n call(onDragenter, info);\n }\n function doDragLeave(info) {\n const { onDragleave } = props;\n if (onDragleave)\n call(onDragleave, info);\n }\n function doDragEnd(info) {\n const { onDragend } = props;\n if (onDragend)\n call(onDragend, info);\n }\n function doDragStart(info) {\n const { onDragstart } = props;\n if (onDragstart)\n call(onDragstart, info);\n }\n function doDragOver(info) {\n const { onDragover } = props;\n if (onDragover)\n call(onDragover, info);\n }\n function doDrop(info) {\n const { onDrop } = props;\n if (onDrop)\n call(onDrop, info);\n }\n function resetDndState() {\n resetDragState();\n resetDropState();\n }\n function resetDragState() {\n draggingNodeRef.value = null;\n }\n function resetDropState() {\n droppingOffsetLevelRef.value = 0;\n droppingNodeRef.value = null;\n droppingMouseNodeRef.value = null;\n droppingPositionRef.value = null;\n resetDragExpandState();\n }\n function resetDragExpandState() {\n if (expandTimerId) {\n window.clearTimeout(expandTimerId);\n expandTimerId = null;\n }\n nodeKeyToBeExpanded = null;\n }\n function handleCheck(node, checked) {\n // We don't guard for leaf only since we have done it in view layer\n if (props.disabled || isNodeDisabled(node, props.disabledField)) {\n return;\n }\n if (props.internalUnifySelectCheck && !props.multiple) {\n handleSelect(node);\n return;\n }\n const checkedAction = checked ? 'check' : 'uncheck';\n const { checkedKeys, indeterminateKeys } = dataTreeMateRef.value[checkedAction](node.key, displayedCheckedKeysRef.value, {\n cascade: props.cascade,\n checkStrategy: mergedCheckStrategyRef.value,\n allowNotLoaded: props.allowCheckingNotLoaded\n });\n doUpdateCheckedKeys(checkedKeys, getOptionsByKeys(checkedKeys), {\n node: node.rawNode,\n action: checkedAction\n });\n doUpdateIndeterminateKeys(indeterminateKeys, getOptionsByKeys(indeterminateKeys));\n }\n function toggleExpand(node) {\n if (props.disabled)\n return;\n const { key } = node;\n const { value: mergedExpandedKeys } = mergedExpandedKeysRef;\n const index = mergedExpandedKeys.findIndex((expandNodeId) => expandNodeId === key);\n if (~index) {\n const expandedKeysAfterChange = Array.from(mergedExpandedKeys);\n expandedKeysAfterChange.splice(index, 1);\n doUpdateExpandedKeys(expandedKeysAfterChange, getOptionsByKeys(expandedKeysAfterChange), {\n node: node.rawNode,\n action: 'collapse'\n });\n }\n else {\n const nodeToBeExpanded = displayTreeMateRef.value.getNode(key);\n if (!nodeToBeExpanded || nodeToBeExpanded.isLeaf) {\n return;\n }\n let nextKeys;\n if (props.accordion) {\n const siblingKeySet = new Set(node.siblings.map(({ key }) => key));\n nextKeys = mergedExpandedKeys.filter((expandedKey) => {\n return !siblingKeySet.has(expandedKey);\n });\n nextKeys.push(key);\n }\n else {\n nextKeys = mergedExpandedKeys.concat(key);\n }\n doUpdateExpandedKeys(nextKeys, getOptionsByKeys(nextKeys), {\n node: node.rawNode,\n action: 'expand'\n });\n }\n }\n function handleSwitcherClick(node) {\n if (props.disabled || aipRef.value)\n return;\n toggleExpand(node);\n }\n function handleSelect(node) {\n if (props.disabled || !props.selectable) {\n return;\n }\n pendingNodeKeyRef.value = node.key;\n if (props.internalUnifySelectCheck) {\n const { value: { checkedKeys, indeterminateKeys } } = checkedStatusRef;\n if (props.multiple) {\n handleCheck(node, !(checkedKeys.includes(node.key) ||\n indeterminateKeys.includes(node.key)));\n }\n else {\n doUpdateCheckedKeys([node.key], getOptionsByKeys([node.key]), {\n node: node.rawNode,\n action: 'check'\n });\n }\n }\n if (props.multiple) {\n const selectedKeys = Array.from(mergedSelectedKeysRef.value);\n const index = selectedKeys.findIndex((key) => key === node.key);\n if (~index) {\n if (props.cancelable) {\n selectedKeys.splice(index, 1);\n }\n }\n else if (!~index) {\n selectedKeys.push(node.key);\n }\n doUpdateSelectedKeys(selectedKeys, getOptionsByKeys(selectedKeys), {\n node: node.rawNode,\n action: ~index ? 'unselect' : 'select'\n });\n }\n else {\n const selectedKeys = mergedSelectedKeysRef.value;\n if (selectedKeys.includes(node.key)) {\n if (props.cancelable) {\n doUpdateSelectedKeys([], [], {\n node: node.rawNode,\n action: 'unselect'\n });\n }\n }\n else {\n doUpdateSelectedKeys([node.key], getOptionsByKeys([node.key]), {\n node: node.rawNode,\n action: 'select'\n });\n }\n }\n }\n function expandDragEnterNode(node) {\n if (expandTimerId) {\n window.clearTimeout(expandTimerId);\n expandTimerId = null;\n }\n // Don't expand leaf node.\n if (node.isLeaf)\n return;\n nodeKeyToBeExpanded = node.key;\n const expand = () => {\n if (nodeKeyToBeExpanded !== node.key)\n return;\n const { value: droppingMouseNode } = droppingMouseNodeRef;\n if (droppingMouseNode &&\n droppingMouseNode.key === node.key &&\n !mergedExpandedKeysRef.value.includes(node.key)) {\n const nextKeys = mergedExpandedKeysRef.value.concat(node.key);\n doUpdateExpandedKeys(nextKeys, getOptionsByKeys(nextKeys), {\n node: node.rawNode,\n action: 'expand'\n });\n }\n expandTimerId = null;\n nodeKeyToBeExpanded = null;\n };\n if (!node.shallowLoaded) {\n expandTimerId = window.setTimeout(() => {\n void triggerLoading(node).then(() => {\n expand();\n });\n }, 1000);\n }\n else {\n expandTimerId = window.setTimeout(() => {\n expand();\n }, 1000);\n }\n }\n // Dnd\n function handleDragEnter({ event, node }) {\n // node should be a tmNode\n if (!props.draggable ||\n props.disabled ||\n isNodeDisabled(node, props.disabledField)) {\n return;\n }\n handleDragOver({ event, node }, false);\n doDragEnter({ event, node: node.rawNode });\n }\n function handleDragLeave({ event, node }) {\n if (!props.draggable ||\n props.disabled ||\n isNodeDisabled(node, props.disabledField)) {\n return;\n }\n doDragLeave({ event, node: node.rawNode });\n }\n function handleDragLeaveTree(e) {\n if (e.target !== e.currentTarget)\n return;\n resetDropState();\n }\n // Dragend is ok, we don't need to add global listener to reset drag status\n function handleDragEnd({ event, node }) {\n resetDndState();\n if (!props.draggable ||\n props.disabled ||\n isNodeDisabled(node, props.disabledField)) {\n return;\n }\n doDragEnd({ event, node: node.rawNode });\n }\n function handleDragStart({ event, node }) {\n var _a;\n if (!props.draggable ||\n props.disabled ||\n isNodeDisabled(node, props.disabledField)) {\n return;\n }\n // Most of time, the image will block user's view\n emptyImage && ((_a = event.dataTransfer) === null || _a === void 0 ? void 0 : _a.setDragImage(emptyImage, 0, 0));\n dragStartX = event.clientX;\n draggingNodeRef.value = node;\n doDragStart({ event, node: node.rawNode });\n }\n function handleDragOver({ event, node }, emit = true) {\n var _a;\n if (!props.draggable ||\n props.disabled ||\n isNodeDisabled(node, props.disabledField)) {\n return;\n }\n const { value: draggingNode } = draggingNodeRef;\n if (!draggingNode)\n return;\n const { allowDrop, indent } = props;\n if (emit)\n doDragOver({ event, node: node.rawNode });\n // Update dropping node\n const el = event.currentTarget;\n const { height: elOffsetHeight, top: elClientTop } = el.getBoundingClientRect();\n const eventOffsetY = event.clientY - elClientTop;\n let mousePosition;\n const allowDropInside = allowDrop({\n node: node.rawNode,\n dropPosition: 'inside',\n phase: 'drag'\n });\n if (allowDropInside) {\n if (eventOffsetY <= 8) {\n mousePosition = 'before';\n }\n else if (eventOffsetY >= elOffsetHeight - 8) {\n mousePosition = 'after';\n }\n else {\n mousePosition = 'inside';\n }\n }\n else {\n if (eventOffsetY <= elOffsetHeight / 2) {\n mousePosition = 'before';\n }\n else {\n mousePosition = 'after';\n }\n }\n const { value: getFindex } = getFIndexRef;\n /** determine the drop position and drop node */\n /** the dropping node needn't to be the mouse hovering node! */\n /**\n * if there is something i've learned from implementing a complex\n * drag & drop. that is never write unit test before you really figure\n * out what behavior is exactly you want.\n */\n let finalDropNode;\n let finalDropPosition;\n const hoverNodeFIndex = getFindex(node.key);\n if (hoverNodeFIndex === null) {\n resetDropState();\n return;\n }\n let mouseAtExpandedNonLeafNode = false;\n if (mousePosition === 'inside') {\n finalDropNode = node;\n finalDropPosition = 'inside';\n }\n else {\n if (mousePosition === 'before') {\n if (node.isFirstChild) {\n finalDropNode = node;\n finalDropPosition = 'before';\n }\n else {\n finalDropNode = fNodesRef.value[hoverNodeFIndex - 1];\n finalDropPosition = 'after';\n }\n }\n else {\n finalDropNode = node;\n finalDropPosition = 'after';\n }\n }\n // If the node is non-leaf and it is expanded, we don't allow it to\n // drop after it and change it to drop before its next view sibling\n if (!finalDropNode.isLeaf &&\n mergedExpandedKeysRef.value.includes(finalDropNode.key)) {\n mouseAtExpandedNonLeafNode = true;\n if (finalDropPosition === 'after') {\n finalDropNode = fNodesRef.value[hoverNodeFIndex + 1];\n if (!finalDropNode) {\n // maybe there is no next view sibling when non-leaf node has no\n // children and it is the last node in the tree\n finalDropNode = node;\n finalDropPosition = 'inside';\n }\n else {\n finalDropPosition = 'before';\n }\n }\n }\n const droppingMouseNode = finalDropNode;\n droppingMouseNodeRef.value = droppingMouseNode;\n // This is a speacial case, user is dragging a last child itself, so we\n // only view it as they are trying to drop after it.\n // There are some relevant codes in bailout 1's child branch.\n // Also, the expand bailout should have a high priority. If it's non-leaf\n // node and expanded, keep its origin drop position\n if (!mouseAtExpandedNonLeafNode &&\n draggingNode.isLastChild &&\n draggingNode.key === finalDropNode.key) {\n finalDropPosition = 'after';\n }\n if (finalDropPosition === 'after') {\n let offset = dragStartX - event.clientX; // drag left => > 0\n let offsetLevel = 0;\n while (offset >= indent / 2 && // divide by 2 to make it easier to trigger\n finalDropNode.parent !== null &&\n finalDropNode.isLastChild &&\n offsetLevel < 1) {\n offset -= indent;\n offsetLevel += 1;\n finalDropNode = finalDropNode.parent;\n }\n droppingOffsetLevelRef.value = offsetLevel;\n }\n else {\n droppingOffsetLevelRef.value = 0;\n }\n // Bailout 1\n // Drag self into self\n // Drag it into direct parent\n if (draggingNode.contains(finalDropNode) ||\n (finalDropPosition === 'inside' &&\n ((_a = draggingNode.parent) === null || _a === void 0 ? void 0 : _a.key) === finalDropNode.key)) {\n if (draggingNode.key === droppingMouseNode.key &&\n draggingNode.key === finalDropNode.key) {\n // This is special case that we want ui to show a mark to guide user\n // to start dragging. Nor they will think nothing happens.\n // However this is an invalid drop, we need to guard it inside\n // handleDrop\n }\n else {\n resetDropState();\n return;\n }\n }\n // Bailout 3\n if (!allowDrop({\n node: finalDropNode.rawNode,\n dropPosition: finalDropPosition,\n phase: 'drag'\n })) {\n resetDropState();\n return;\n }\n if (draggingNode.key === finalDropNode.key) {\n // don't expand when drag on itself\n resetDragExpandState();\n }\n else {\n if (nodeKeyToBeExpanded !== finalDropNode.key) {\n if (finalDropPosition === 'inside') {\n if (props.expandOnDragenter) {\n expandDragEnterNode(finalDropNode);\n // Bailout 4\n // not try to loading\n if (!finalDropNode.shallowLoaded &&\n nodeKeyToBeExpanded !== finalDropNode.key) {\n resetDndState();\n return;\n }\n }\n else {\n // Bailout 5\n // never expands on drag\n if (!finalDropNode.shallowLoaded) {\n resetDndState();\n return;\n }\n }\n }\n else {\n resetDragExpandState();\n }\n }\n else {\n if (finalDropPosition !== 'inside') {\n resetDragExpandState();\n }\n }\n }\n droppingPositionRef.value = finalDropPosition;\n droppingNodeRef.value = finalDropNode;\n }\n function handleDrop({ event, node, dropPosition }) {\n if (!props.draggable ||\n props.disabled ||\n isNodeDisabled(node, props.disabledField)) {\n return;\n }\n const { value: draggingNode } = draggingNodeRef;\n const { value: droppingNode } = droppingNodeRef;\n const { value: droppingPosition } = droppingPositionRef;\n if (!draggingNode || !droppingNode || !droppingPosition) {\n return;\n }\n // Bailout 1\n if (!props.allowDrop({\n node: droppingNode.rawNode,\n dropPosition: droppingPosition,\n phase: 'drag'\n })) {\n return;\n }\n // Bailout 2\n // This is a special case to guard since we want ui to show the status\n // but not to emit a event\n if (draggingNode.key === droppingNode.key) {\n return;\n }\n // Bailout 3\n // insert before its next node\n // insert after its prev node\n if (droppingPosition === 'before') {\n const nextNode = draggingNode.getNext({ includeDisabled: true });\n if (nextNode) {\n if (nextNode.key === droppingNode.key) {\n resetDropState();\n return;\n }\n }\n }\n if (droppingPosition === 'after') {\n const prevNode = draggingNode.getPrev({ includeDisabled: true });\n if (prevNode) {\n if (prevNode.key === droppingNode.key) {\n resetDropState();\n return;\n }\n }\n }\n doDrop({\n event,\n node: droppingNode.rawNode,\n dragNode: draggingNode.rawNode,\n dropPosition\n });\n resetDndState();\n }\n function handleScroll() {\n syncScrollbar();\n }\n function handleResize() {\n syncScrollbar();\n }\n function handleFocusout(e) {\n var _a;\n if (props.virtualScroll || props.internalScrollable) {\n const { value: scrollbarInst } = scrollbarInstRef;\n if ((_a = scrollbarInst === null || scrollbarInst === void 0 ? void 0 : scrollbarInst.containerRef) === null || _a === void 0 ? void 0 : _a.contains(e.relatedTarget)) {\n return;\n }\n pendingNodeKeyRef.value = null;\n }\n else {\n const { value: selfEl } = selfElRef;\n if (selfEl === null || selfEl === void 0 ? void 0 : selfEl.contains(e.relatedTarget))\n return;\n pendingNodeKeyRef.value = null;\n }\n }\n watch(pendingNodeKeyRef, (value) => {\n var _a, _b;\n if (value === null)\n return;\n if (props.virtualScroll) {\n (_a = virtualListInstRef.value) === null || _a === void 0 ? void 0 : _a.scrollTo({ key: value });\n }\n else if (props.internalScrollable) {\n const { value: scrollbarInst } = scrollbarInstRef;\n if (scrollbarInst === null)\n return;\n const targetEl = (_b = scrollbarInst.contentRef) === null || _b === void 0 ? void 0 : _b.querySelector(`[data-key=\"${createDataKey(value)}\"]`);\n if (!targetEl)\n return;\n scrollbarInst.scrollTo({\n el: targetEl\n });\n }\n });\n provide(treeInjectionKey, {\n loadingKeysRef,\n highlightKeySetRef: mergedHighlightKeySetRef,\n displayedCheckedKeysRef,\n displayedIndeterminateKeysRef,\n mergedSelectedKeysRef,\n mergedExpandedKeysRef,\n mergedThemeRef: themeRef,\n mergedCheckStrategyRef,\n nodePropsRef: toRef(props, 'nodeProps'),\n disabledRef: toRef(props, 'disabled'),\n checkableRef: toRef(props, 'checkable'),\n selectableRef: toRef(props, 'selectable'),\n expandOnClickRef: toRef(props, 'expandOnClick'),\n onLoadRef: toRef(props, 'onLoad'),\n draggableRef: toRef(props, 'draggable'),\n blockLineRef: toRef(props, 'blockLine'),\n indentRef: toRef(props, 'indent'),\n cascadeRef: toRef(props, 'cascade'),\n checkOnClickRef: toRef(props, 'checkOnClick'),\n checkboxPlacementRef: props.checkboxPlacement,\n droppingMouseNodeRef,\n droppingNodeParentRef,\n draggingNodeRef,\n droppingPositionRef,\n droppingOffsetLevelRef,\n fNodesRef,\n pendingNodeKeyRef,\n showLineRef: toRef(props, 'showLine'),\n disabledFieldRef: toRef(props, 'disabledField'),\n internalScrollableRef: toRef(props, 'internalScrollable'),\n internalCheckboxFocusableRef: toRef(props, 'internalCheckboxFocusable'),\n internalTreeSelect: props.internalTreeSelect,\n renderLabelRef: toRef(props, 'renderLabel'),\n renderPrefixRef: toRef(props, 'renderPrefix'),\n renderSuffixRef: toRef(props, 'renderSuffix'),\n renderSwitcherIconRef: toRef(props, 'renderSwitcherIcon'),\n labelFieldRef: toRef(props, 'labelField'),\n multipleRef: toRef(props, 'multiple'),\n handleSwitcherClick,\n handleDragEnd,\n handleDragEnter,\n handleDragLeave,\n handleDragStart,\n handleDrop,\n handleDragOver,\n handleSelect,\n handleCheck\n });\n function scrollTo(options) {\n var _a;\n (_a = virtualListInstRef.value) === null || _a === void 0 ? void 0 : _a.scrollTo(options);\n }\n const exposedMethods = {\n handleKeydown,\n scrollTo,\n getCheckedData: () => {\n if (!props.checkable)\n return { keys: [], options: [] };\n const { checkedKeys } = checkedStatusRef.value;\n return {\n keys: checkedKeys,\n options: getOptionsByKeys(checkedKeys)\n };\n },\n getIndeterminateData: () => {\n if (!props.checkable)\n return { keys: [], options: [] };\n const { indeterminateKeys } = checkedStatusRef.value;\n return {\n keys: indeterminateKeys,\n options: getOptionsByKeys(indeterminateKeys)\n };\n }\n };\n const cssVarsRef = computed(() => {\n const { common: { cubicBezierEaseInOut }, self: { fontSize, nodeBorderRadius, nodeColorHover, nodeColorPressed, nodeColorActive, arrowColor, loadingColor, nodeTextColor, nodeTextColorDisabled, dropMarkColor, nodeWrapperPadding, nodeHeight, lineHeight } } = themeRef.value;\n const lineOffsetTop = getPadding(nodeWrapperPadding, 'top');\n const lineOffsetBottom = getPadding(nodeWrapperPadding, 'bottom');\n const nodeContentHeight = pxfy(depx(nodeHeight) - depx(lineOffsetTop) - depx(lineOffsetBottom));\n return {\n '--n-arrow-color': arrowColor,\n '--n-loading-color': loadingColor,\n '--n-bezier': cubicBezierEaseInOut,\n '--n-font-size': fontSize,\n '--n-node-border-radius': nodeBorderRadius,\n '--n-node-color-active': nodeColorActive,\n '--n-node-color-hover': nodeColorHover,\n '--n-node-color-pressed': nodeColorPressed,\n '--n-node-text-color': nodeTextColor,\n '--n-node-text-color-disabled': nodeTextColorDisabled,\n '--n-drop-mark-color': dropMarkColor,\n '--n-node-wrapper-padding': nodeWrapperPadding,\n '--n-line-offset-top': `-${lineOffsetTop}`,\n '--n-line-offset-bottom': `-${lineOffsetBottom}`,\n '--n-node-content-height': nodeContentHeight,\n '--n-line-height': lineHeight\n };\n });\n const themeClassHandle = inlineThemeDisabled\n ? useThemeClass('tree', undefined, cssVarsRef, props)\n : undefined;\n return Object.assign(Object.assign({}, exposedMethods), { mergedClsPrefix: mergedClsPrefixRef, mergedTheme: themeRef, rtlEnabled: rtlEnabledRef, fNodes: mergedFNodesRef, aip: aipRef, selfElRef,\n virtualListInstRef,\n scrollbarInstRef,\n handleFocusout,\n handleDragLeaveTree,\n handleScroll,\n getScrollContainer,\n getScrollContent,\n handleAfterEnter,\n handleResize, cssVars: inlineThemeDisabled ? undefined : cssVarsRef, themeClass: themeClassHandle === null || themeClassHandle === void 0 ? void 0 : themeClassHandle.themeClass, onRender: themeClassHandle === null || themeClassHandle === void 0 ? void 0 : themeClassHandle.onRender });\n },\n render() {\n var _a;\n const { fNodes, internalRenderEmpty } = this;\n if (!fNodes.length && internalRenderEmpty) {\n return internalRenderEmpty();\n }\n const { mergedClsPrefix, blockNode, blockLine, draggable, disabled, internalFocusable, checkable, handleKeydown, rtlEnabled, handleFocusout, scrollbarProps } = this;\n const mergedFocusable = internalFocusable && !disabled;\n const tabindex = mergedFocusable ? '0' : undefined;\n const treeClass = [\n `${mergedClsPrefix}-tree`,\n rtlEnabled && `${mergedClsPrefix}-tree--rtl`,\n checkable && `${mergedClsPrefix}-tree--checkable`,\n (blockLine || blockNode) && `${mergedClsPrefix}-tree--block-node`,\n blockLine && `${mergedClsPrefix}-tree--block-line`\n ];\n const createNode = (tmNode) => {\n return '__motion' in tmNode ? (h(MotionWrapper, { height: tmNode.height, nodes: tmNode.nodes, clsPrefix: mergedClsPrefix, mode: tmNode.mode, onAfterEnter: this.handleAfterEnter })) : (h(NTreeNode, { key: tmNode.key, tmNode: tmNode, clsPrefix: mergedClsPrefix }));\n };\n if (this.virtualScroll) {\n const { mergedTheme, internalScrollablePadding } = this;\n const padding = getPadding(internalScrollablePadding || '0');\n return (h(NxScrollbar, Object.assign({}, scrollbarProps, { ref: \"scrollbarInstRef\", onDragleave: draggable ? this.handleDragLeaveTree : undefined, container: this.getScrollContainer, content: this.getScrollContent, class: treeClass, theme: mergedTheme.peers.Scrollbar, themeOverrides: mergedTheme.peerOverrides.Scrollbar, tabindex: tabindex, onKeydown: mergedFocusable ? handleKeydown : undefined, onFocusout: mergedFocusable ? handleFocusout : undefined }), {\n default: () => {\n var _a;\n (_a = this.onRender) === null || _a === void 0 ? void 0 : _a.call(this);\n return (h(VVirtualList, { ref: \"virtualListInstRef\", items: this.fNodes, itemSize: depx(mergedTheme.self.nodeHeight), ignoreItemResize: this.aip, paddingTop: padding.top, paddingBottom: padding.bottom, class: this.themeClass, style: [\n this.cssVars,\n {\n paddingLeft: padding.left,\n paddingRight: padding.right\n }\n ], onScroll: this.handleScroll, onResize: this.handleResize, showScrollbar: false, itemResizable: true }, {\n default: ({ item }) => createNode(item)\n }));\n }\n }));\n }\n const { internalScrollable } = this;\n treeClass.push(this.themeClass);\n (_a = this.onRender) === null || _a === void 0 ? void 0 : _a.call(this);\n if (internalScrollable) {\n return (h(NxScrollbar, Object.assign({}, scrollbarProps, { class: treeClass, tabindex: tabindex, onKeydown: mergedFocusable ? handleKeydown : undefined, onFocusout: mergedFocusable ? handleFocusout : undefined, style: this.cssVars, contentStyle: { padding: this.internalScrollablePadding } }), {\n default: () => (h(\"div\", { onDragleave: draggable ? this.handleDragLeaveTree : undefined, ref: \"selfElRef\" }, this.fNodes.map(createNode)))\n }));\n }\n else {\n return (h(\"div\", { class: treeClass, tabindex: tabindex, ref: \"selfElRef\", style: this.cssVars, onKeydown: mergedFocusable ? handleKeydown : undefined, onFocusout: mergedFocusable ? handleFocusout : undefined, onDragleave: draggable ? this.handleDragLeaveTree : undefined }, !fNodes.length\n ? resolveSlot(this.$slots.empty, () => [\n h(NEmpty, { class: `${mergedClsPrefix}-tree__empty`, theme: this.mergedTheme.peers.Empty, themeOverrides: this.mergedTheme.peerOverrides.Empty })\n ])\n : fNodes.map(createNode)));\n }\n }\n});\n","<script setup lang=\"ts\">\nimport { computed, onUnmounted, shallowReactive, shallowRef, watch } from 'vue';\n\nconst props = withDefaults(\n defineProps<{\n initialValue: {\n left?: number;\n right?: number;\n top?: number;\n bottom?: number;\n };\n }>(),\n { initialValue: () => ({}) },\n);\n\nconst isLeft = props.initialValue.left !== void 0;\nconst isTop = props.initialValue.top !== void 0;\nconst prevOffset = {\n x: (isLeft ? props.initialValue.left : props.initialValue.right) ?? 0,\n y: (isTop ? props.initialValue.top : props.initialValue.bottom) ?? 0,\n};\n\nconst offset = shallowReactive({ ...prevOffset });\nconst currentStyle = computed(() => {\n const xStyle = isLeft ? `left:${offset.x}px;` : `right:${offset.x}px;`;\n const yStyle = isTop ? `top:${offset.y}px;` : `bottom:${offset.y}px;`;\n return xStyle + yStyle;\n});\n/**\n * it will be PointerEvent when moving\n */\nlet prevEv: PointerEvent | undefined = undefined;\nconst startMove = (ev: PointerEvent) => {\n prevEv = ev;\n prevOffset.x = offset.x;\n prevOffset.y = offset.y;\n};\nconst move = (ev: PointerEvent) => {\n if (!target.value || !prevEv) return;\n\n const dx = ev.clientX - prevEv.clientX; // ev.movementX;\n const dy = ev.clientY - prevEv.clientY; //ev.movementY;\n\n offset.x = prevOffset.x + (isLeft ? dx : -dx);\n offset.y = prevOffset.y + (isTop ? dy : -dy);\n};\nconst endMove = () => {\n prevEv = undefined;\n};\nconst box = shallowRef<HTMLElement>();\nconst target = shallowRef<HTMLElement>();\nconst preventSelection = (ev: Event) => {\n if (prevEv) {\n ev.preventDefault();\n }\n};\nconst transitions = [`transition-top,bottom,left,right-500`];\nconst windowEndMove = () => {\n if (!target.value) return;\n const { top, bottom, left, right } = target.value.getBoundingClientRect();\n if (\n right < 0 ||\n left > window.innerWidth ||\n bottom < 0 ||\n top > window.innerHeight\n ) {\n // isOutsideViewport\n offset.x = prevOffset.x;\n offset.y = prevOffset.y;\n endMove();\n\n const boxDiv = box.value;\n if (boxDiv) {\n boxDiv.classList.add(...transitions);\n setTimeout(() => {\n boxDiv.classList.remove(...transitions);\n }, 550);\n }\n }\n};\n\n// move 事件应该给 window. 如果给目标元素,容易出现鼠标移速过快无法跟随的bug\nwindow.addEventListener('pointermove', move);\nwindow.addEventListener('pointerup', windowEndMove);\ndocument.addEventListener('selectstart', preventSelection);\nonUnmounted(() => {\n window.removeEventListener('pointermove', move);\n window.removeEventListener('pointerup', windowEndMove);\n document.removeEventListener('selectstart', preventSelection);\n endMove();\n});\n\nwatch(target, (newValue, oldvalue) => {\n if (newValue) {\n newValue.addEventListener('pointerdown', startMove);\n newValue.addEventListener('pointerup', endMove);\n }\n if (oldvalue) {\n oldvalue.removeEventListener('pointerdown', startMove);\n oldvalue.removeEventListener('pointerup', endMove);\n }\n});\nonUnmounted(() => {\n if (!target.value) return;\n target.value.removeEventListener('pointerdown', startMove);\n target.value.removeEventListener('pointerup', endMove);\n});\nconst updateTarget = (arg: unknown) => {\n if (arg instanceof HTMLElement) {\n target.value = arg;\n } else {\n target.value = void 0;\n }\n};\n</script>\n<template>\n <Teleport to=\"body\">\n <div\n fixed\n ref=\"box\"\n :style=\"[$attrs.style as string, currentStyle]\"\n :class=\"$attrs.class\"\n >\n <slot :onRef=\"updateTarget\"></slot>\n </div>\n </Teleport>\n</template>\n<style>\n.smooth-1s {\n transition:\n bottom 1s,\n top 1s,\n right 1s,\n left 1s;\n}\n</style>\n","<script setup lang=\"ts\">\nimport { copy } from '@/utils/others';\nimport type { RawNode } from '@/utils/types';\nimport { NEllipsis, NIcon, NTable, NTbody, NTd, NTooltip, NTr } from 'naive-ui';\nimport { computed } from 'vue';\nimport DraggableCard from './DraggableCard.vue';\n\nconst props = withDefaults(defineProps<{ focusNode: RawNode }>(), {});\n\nconst lenAttrNames = [`text`, `desc`];\nconst attrs = computed(() => {\n return Object.entries(props.focusNode.attr)\n .map(([name, value]) => {\n const attr = {\n name,\n value: JSON.stringify(value),\n };\n if (lenAttrNames.includes(name)) {\n return [\n attr,\n {\n name: name + `.length`,\n value: JSON.stringify((value as string)?.length ?? null),\n },\n ];\n }\n return attr;\n })\n .flat();\n});\n\nconst attrDesc: Record<string, string> = {\n _id: `虚拟属性:生成快照访问节点顺序`,\n _pid: `虚拟属性:父节点的 _id`,\n depth: `在某些应用上可能造成无限节点错误`,\n id: `可快速查找`,\n text: `可快速查找`,\n};\n</script>\n\n<template>\n <DraggableCard :initialValue=\"{ top: 75, right: 10 }\" v-slot=\"{ onRef }\">\n <NTable\n size=\"small\"\n striped\n :singleLine=\"false\"\n class=\"gkd_code\"\n :themeOverrides=\"{\n thPaddingSmall: '1px 3px',\n tdPaddingSmall: '1px 3px',\n }\"\n ><thead>\n <tr :ref=\"onRef\" cursor-move>\n <th>Name</th>\n <th>Value</th>\n </tr>\n </thead>\n <NTbody>\n <NTr v-for=\"attrx in attrs\" :key=\"attrx.name\">\n <NTd @click=\"copy(`${attrx.name}=${attrx.value}`)\">\n <div\n v-if=\"attrx.name in attrDesc\"\n flex\n flex-justify-between\n flex-items-center\n >\n <div>\n {{ attrx.name }}\n </div>\n <NTooltip>\n <template #trigger>\n <NIcon size=\"16\">\n <svg\n viewBox=\"0 0 28 28\"\n v-if=\"attrx.name != `id` && attrx.name != `text`\"\n >\n <g fill=\"none\">\n <path\n d=\"M15 8a1 1 0 1 1-2 0a1 1 0 0 1 2 0zm-1.75 3.75v7.5a.75.75 0 0 0 1.5 0v-7.5a.75.75 0 0 0-1.5 0zM2 14C2 7.373 7.373 2 14 2s12 5.373 12 12s-5.373 12-12 12S2 20.627 2 14zM14 3.5C8.201 3.5 3.5 8.201 3.5 14S8.201 24.5 14 24.5S24.5 19.799 24.5 14S19.799 3.5 14 3.5z\"\n fill=\"currentColor\"\n ></path>\n </g>\n </svg>\n <svg\n v-else-if=\"\n (focusNode.quickFind ||\n (attrx.name == 'id' && focusNode.idQf) ||\n (attrx.name == 'text' && focusNode.textQf)) &&\n JSON.parse(attrx.value)\n \"\n viewBox=\"0 0 1024 1024\"\n >\n <path\n d=\"M722.500267 330.888533l-273.408 273.408-147.729067-147.729066a42.018133 42.018133 0 1 0-59.426133 59.426133l177.425066 177.493333a41.984 41.984 0 0 0 59.426134 0L781.9264 390.314667a42.001067 42.001067 0 0 0-59.392-59.426134h-0.034133zM78.506667 783.496533a508.279467 508.279467 0 0 0 319.0784 226.986667C530.773333 1041.066667 667.886933 1017.924267 783.701333 945.390933a508.279467 508.279467 0 0 0 226.986667-319.0784 508.279467 508.279467 0 0 0-65.058133-386.116266C848.554667 85.367467 681.710933 0.341333 511.214933 0.341333a508.6208 508.6208 0 0 0-270.813866 77.960534A36.864 36.864 0 0 0 279.552 140.629333C484.113067 12.288 755.029333 74.581333 883.268267 279.278933a434.9952 434.9952 0 0 1 55.739733 330.5472 435.029333 435.029333 0 0 1-194.3552 273.134934 435.746133 435.746133 0 0 1-330.581333 55.773866A435.165867 435.165867 0 0 1 140.936533 744.379733a436.770133 436.770133 0 0 1-5.666133-456.055466 36.829867 36.829867 0 0 0-63.317333-37.546667A510.1568 510.1568 0 0 0 78.506667 783.530667v-0.034134z\"\n ></path>\n </svg>\n </NIcon>\n </template>\n {{ attrDesc[attrx.name] }}\n </NTooltip>\n </div>\n <template v-else>\n {{ attrx.name }}\n </template>\n </NTd>\n <NTd>\n <NEllipsis\n v-if=\"attrx.name == 'id'\"\n style=\"\n width: 180px;\n min-width: max(12vw, 180px);\n direction: rtl;\n text-align: left;\n \"\n >\n {{ attrx.value }}\n </NEllipsis>\n <NEllipsis v-else style=\"width: 180px; min-width: max(12vw, 180px)\">\n {{ attrx.value }}\n </NEllipsis>\n </NTd>\n </NTr>\n </NTbody>\n </NTable>\n </DraggableCard>\n</template>\n","<script setup lang=\"ts\">\nimport { findNodeByXy } from '@/utils/node';\nimport type { RawNode, Snapshot } from '@/utils/types';\nimport { computed, shallowRef, watchEffect } from 'vue';\n\nconst props = withDefaults(\n defineProps<{\n url: string;\n snapshot: Snapshot;\n rootNode?: RawNode;\n focusNode?: RawNode;\n onUpdateFocusNode?: (data: RawNode) => void;\n }>(),\n {\n onUpdateFocusNode: () => () => {},\n },\n);\n\nconst imgRef = shallowRef<HTMLImageElement>();\n\nconst clickEvRef = shallowRef<MouseEvent>();\nwatchEffect(() => {\n if (!props.rootNode) return;\n const ev = clickEvRef.value;\n const img = imgRef.value;\n if (!ev || !img) {\n return;\n }\n\n const imgRect = img.getBoundingClientRect();\n\n const innerHeight = (imgRect.width / img.naturalWidth) * img.naturalHeight;\n const offsetTop = (imgRect.height - innerHeight) / 2;\n\n const ox = ((ev.clientX - imgRect.left) / imgRect.width) * img.naturalWidth;\n const oy =\n ((ev.clientY - imgRect.top - offsetTop) / innerHeight) * img.naturalHeight;\n\n const childNode = findNodeByXy(props.snapshot.nodes, ox, oy);\n if (childNode) {\n props.onUpdateFocusNode(childNode);\n }\n});\nconst percent = (n: number) => {\n return `${n * 100}%`;\n};\nconst positionStyle = computed(() => {\n const img = imgRef.value;\n const attr = props.focusNode?.attr;\n if (!props.focusNode || !img || !attr) {\n return ``;\n }\n const imgRect = img.getBoundingClientRect();\n const innerHeight = (imgRect.width / img.naturalWidth) * img.naturalHeight;\n return {\n left: `calc(${percent(attr.left / img.naturalWidth)} - 2px)`,\n width: `calc(${percent(\n (attr.right - attr.left) / img.naturalWidth,\n )} + 2px)`,\n\n top: `calc(${percent(\n ((attr.top / img.naturalHeight) * innerHeight +\n (imgRect.height - innerHeight) / 2) /\n imgRect.height,\n )} - 2px)`,\n height: `calc(${percent(\n (((attr.bottom - attr.top) / img.naturalHeight) * innerHeight) /\n imgRect.height,\n )} + 2px)`,\n };\n});\nconst imgHover = shallowRef(false);\nconst hoverPosition = shallowRef({ ox: 0, oy: 0 });\nconst imgMove = (ev: MouseEvent) => {\n const img = imgRef.value;\n if (!img) return;\n const imgRect = img.getBoundingClientRect();\n\n const innerHeight = (imgRect.width / img.naturalWidth) * img.naturalHeight;\n const offsetTop = (imgRect.height - innerHeight) / 2;\n\n const ox = ((ev.clientX - imgRect.left) / imgRect.width) * img.naturalWidth;\n const oy =\n ((ev.clientY - imgRect.top - offsetTop) / innerHeight) * img.naturalHeight;\n hoverPosition.value = { ox, oy };\n hoverPositionStyle.value = {\n left: (-(ox - 0.1 * img.naturalWidth) / img.naturalWidth) * 1000 + 'px',\n top: (-(oy - 0.1 * img.naturalWidth) / img.naturalWidth) * 1000 + 'px',\n };\n};\nconst hoverPositionStyle = shallowRef({ left: '0', top: '0' });\n</script>\n\n<template>\n <div flex flex-col relative h-full>\n <img\n ref=\"imgRef\"\n :src=\"url\"\n @click=\"clickEvRef = $event\"\n cursor-crosshair\n h-full\n object-contain\n style=\"max-width: max(35vw, 400px)\"\n @mouseover=\"imgHover = true\"\n @mouseleave=\"imgHover = false\"\n @mousemove=\"imgMove\"\n />\n <div\n :style=\"positionStyle\"\n absolute\n pointer-events-none\n transition-all-300\n b-1px\n b-blue\n b-solid\n >\n <div absolute left-0 top-0 bottom-0 right-0 b-solid b-1px b-red></div>\n </div>\n\n <div\n v-show=\"imgHover\"\n class=\"left-[calc(100%+4px)]\"\n absolute\n top-0\n overflow-hidden\n z-1\n bg-white\n h-200px\n w-200px\n border-1px\n border-indigo-600\n border-dashed\n >\n <img\n :src=\"url\"\n object-contain\n absolute\n left-0\n top-0\n :style=\"hoverPositionStyle\"\n w-1000px\n />\n <div\n absolute\n left-2px\n top-2px\n class=\"leading-[1]\"\n style=\"background-color: rgba(256, 256, 256, 0.7)\"\n >\n {{ `${hoverPosition.ox.toFixed(0)},${hoverPosition.oy.toFixed(0)}` }}\n </div>\n <div\n class=\"top-[calc(50%-1px)]\"\n absolute\n left-0\n right-0\n h-1px\n bg-repeat-x\n mix-blend-difference\n style=\"\n background: linear-gradient(\n to left,\n transparent 0%,\n transparent 50%,\n #fff 50%,\n #fff 100%\n );\n\n background-size: 10px 1px;\n \"\n ></div>\n <div\n class=\"left-[calc(50%-1px)]\"\n absolute\n top-0\n bottom-0\n w-1px\n bg-repeat-y\n mix-blend-difference\n style=\"\n background: linear-gradient(\n to top,\n transparent 0%,\n transparent 50%,\n #fff 50%,\n #fff 100%\n );\n background-size: 1px 10px;\n \"\n ></div>\n </div>\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport dayjs from 'dayjs';\nimport { message } from '@/utils/discrete';\nimport { errorTry, errorWrap } from '@/utils/error';\nimport { parseSelector } from '@/utils/selector';\nimport type { Selector } from '@/utils/selector';\nimport type { RawNode, Snapshot } from '@/utils/types';\nimport {\n NButton,\n NCollapse,\n NCollapseItem,\n NInput,\n NInputGroup,\n NRadio,\n NRadioGroup,\n NSpace,\n NIcon,\n} from 'naive-ui';\nimport { shallowReactive, shallowRef } from 'vue';\nimport DraggableCard from './DraggableCard.vue';\nimport { getNodeLabel } from '@/utils/node';\nimport { copy } from '@/utils/others';\nimport { githubJpgStorage, githubZipStorage } from '@/utils/storage';\nimport { githubUrlToSelfUrl } from '@/utils/url';\n\nconst props = withDefaults(\n defineProps<{\n snapshot: Snapshot;\n rootNode: RawNode;\n onUpdateFocusNode?: (data: RawNode) => void;\n }>(),\n {\n onUpdateFocusNode: () => () => {},\n },\n);\n\nconst selectorText = shallowRef(``);\nconst selectorResults = shallowReactive<\n {\n selector: string | Selector;\n\n results: RawNode[];\n }[]\n>([]);\nconst searchBySelector = errorTry(() => {\n if (!props.rootNode) {\n message.error(`根节点不存在`);\n return;\n }\n const text = selectorText.value.trim();\n if (!text) return;\n\n if (enableSearchBySelector.value) {\n const selector = errorWrap(() => parseSelector(text), `选择器非法`);\n if (\n selectorResults.find(\n (s) =>\n typeof s.selector == 'object' &&\n s.selector.toString() == selector.toString(),\n )\n ) {\n message.warning(`不可重复选择`);\n return;\n }\n\n const results = selector.querySelectorAll(props.rootNode);\n if (results.length == 0) {\n message.success(`没有选择到节点`);\n return;\n }\n message.success(`选择到 ${results.length} 个节点`);\n selectorResults.unshift({ selector, results });\n } else {\n if (\n selectorResults.find(\n (s) => typeof s.selector == 'string' && s.selector.toString() == text,\n )\n ) {\n message.warning(`不可重复选择`);\n return;\n }\n const results: RawNode[] = [];\n const stack: RawNode[] = [props.rootNode];\n while (stack.length > 0) {\n const n = stack.pop()!;\n if (getNodeLabel(n).includes(text)) {\n results.push(n);\n }\n stack.push(...[...n.children].reverse());\n }\n if (results.length == 0) {\n message.success(`没有搜索到节点`);\n return;\n }\n message.success(`搜索到 ${results.length} 个节点`);\n selectorResults.unshift({ selector: text, results });\n }\n});\nconst generateRules = errorTry(async (selector: Selector) => {\n let jpgUrl = githubJpgStorage[props.snapshot.id];\n if (jpgUrl) {\n jpgUrl = githubUrlToSelfUrl(jpgUrl);\n }\n let zipUrl = githubZipStorage[props.snapshot.id];\n if (zipUrl) {\n zipUrl = githubUrlToSelfUrl(zipUrl);\n }\n\n const rule = {\n id: props.snapshot.appId,\n name: props.snapshot.appName,\n groups: [\n {\n key: 1,\n name: `[ChangeMe]规则名称-${dayjs().format('YYYY-MM-DD HH:mm:ss')}`,\n desc: `[ChangeMe]本规则由GKD网页端审查工具生成`,\n rules: [\n {\n activityIds: props.snapshot.activityId,\n matches: selector.toString(),\n exampleUrls: jpgUrl,\n snapshotUrls: zipUrl,\n },\n ],\n },\n ],\n };\n\n copy(JSON.stringify(rule, undefined, 2));\n});\nconst enableSearchBySelector = shallowRef(true);\nconst _1vw = window.innerWidth / 100;\n</script>\n<template>\n <DraggableCard\n :initialValue=\"{ top: 75, right: Math.max(315, 12 * _1vw + 135) }\"\n v-slot=\"{ onRef }\"\n class=\"z-1\"\n >\n <div\n w-480px\n bg-white\n b-1px\n b-solid\n b-gray-200\n rounded-4px\n p-8px\n style=\"min-width: max(25vw, 480px)\"\n >\n <div flex m-b-4px>\n <NRadioGroup v-model:value=\"enableSearchBySelector\">\n <NSpace>\n <NRadio :value=\"false\"> 字符搜索 </NRadio>\n <NRadio :value=\"true\"> 选择器查询 </NRadio>\n </NSpace>\n </NRadioGroup>\n <div flex-1 cursor-move :ref=\"onRef\"></div>\n </div>\n <NInputGroup>\n <NInput\n v-model:value=\"selectorText\"\n :placeholder=\"enableSearchBySelector ? `请输入选择器` : `请输入字符`\"\n @keyup.enter=\"searchBySelector\"\n :inputProps=\"{ class: 'gkd_code' }\"\n ></NInput>\n <NButton @click=\"searchBySelector\">\n <template #icon>\n <NIcon>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n viewBox=\"0 0 32 32\"\n >\n <path\n d=\"M29 27.586l-7.552-7.552a11.018 11.018 0 1 0-1.414 1.414L27.586 29zM4 13a9 9 0 1 1 9 9a9.01 9.01 0 0 1-9-9z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </NIcon>\n </template>\n </NButton>\n </NInputGroup>\n <div p-5px></div>\n <NCollapse>\n <NCollapseItem\n v-for=\"(selectorResult, index) in selectorResults\"\n :key=\"selectorResult.selector.toString()\"\n >\n <template #header>\n <span break-all>\n {{ selectorResult.selector.toString() }}\n </span>\n </template>\n <template #header-extra>\n <NButton\n size=\"small\"\n v-if=\"typeof selectorResult.selector == 'object'\"\n @click.stop=\"generateRules(selectorResult.selector as Selector)\"\n >\n 生成规则\n </NButton>\n <div p-l-8px></div>\n <NButton\n size=\"small\"\n @click.stop=\"selectorResults.splice(index, 1)\"\n >\n 删除\n </NButton>\n </template>\n <NSpace\n style=\"max-height: 400px; overflow-y: scroll; padding-bottom: 10px\"\n >\n <NButton\n v-for=\"resultNode in selectorResult.results\"\n :key=\"resultNode.id\"\n @click=\"onUpdateFocusNode(resultNode)\"\n size=\"small\"\n >\n {{ getNodeLabel(resultNode) }}\n </NButton>\n </NSpace>\n </NCollapseItem>\n </NCollapse>\n </div>\n </DraggableCard>\n</template>\n","<script setup lang=\"tsx\">\nimport { getDevice, getNodeLabel } from '@/utils/node';\nimport { copy } from '@/utils/others';\nimport type { RawNode, Snapshot } from '@/utils/types';\nimport {\n NTable,\n NTbody,\n NTd,\n NTh,\n NThead,\n NTr,\n NTree,\n NEllipsis,\n type TreeInst,\n type TreeOption,\n} from 'naive-ui';\nimport { HTMLAttributes, nextTick, shallowRef, watchEffect } from 'vue';\n\nconst props = withDefaults(\n defineProps<{\n snapshot: Snapshot;\n rootNode: RawNode;\n focusNode?: RawNode;\n onUpdateFocusNode?: (data: RawNode) => void;\n }>(),\n {\n onUpdateFocusNode: () => () => {},\n },\n);\n\nconst defaultExpandedKeys = shallowRef<number[]>([]);\nwatchEffect(async () => {\n if (!props.focusNode) return;\n const key = props.focusNode.id;\n let n = props.focusNode.parent;\n if (!n) {\n return;\n }\n const s = new Set(defaultExpandedKeys.value);\n while (n) {\n s.add(n.id);\n n = n.parent;\n }\n if (s.size == defaultExpandedKeys.value.length) {\n return;\n }\n defaultExpandedKeys.value = [...s];\n await nextTick();\n treeRef.value?.scrollTo({ key });\n});\n\nconst treeRef = shallowRef<TreeInst>();\n\nconst updateCheckedKeys = (\n keys: Array<string | number>,\n options: Array<TreeOption | null>,\n meta: {\n node: TreeOption | null;\n action: 'check' | 'uncheck';\n },\n) => {};\n\nconst treeFilter = (pattern: string, node: RawNode) => {\n return node.id === props.focusNode?.id;\n};\nconst treeNodeProps = (info: {\n option: RawNode;\n}): HTMLAttributes & Record<string, unknown> => {\n return {\n onClick: () => {\n props.onUpdateFocusNode(info.option);\n },\n style: {\n color: info.option.id == props.focusNode?.id ? `#00F` : void 0,\n },\n };\n};\n\nconst renderLabel = (info: {\n option: RawNode;\n checked: boolean;\n selected: boolean;\n}) => {\n return getNodeLabel(info.option);\n};\n</script>\n\n<template>\n <div flex flex-col>\n <NTable\n size=\"small\"\n striped\n :singleLine=\"false\"\n class=\"table-fixed\"\n :themeOverrides=\"{\n thPaddingSmall: '2px 4px',\n tdPaddingSmall: '2px 4px',\n }\"\n >\n <NThead>\n <NTr>\n <NTh class=\"w-140px\"> Device </NTh>\n <NTh class=\"w-100px\"> Name </NTh>\n <NTh class=\"w-100px\"> VersionName </NTh>\n <NTh class=\"w-100px\"> VersionCode </NTh>\n <NTh class=\"w-150px\"> AppId </NTh>\n <NTh> ActivityId </NTh>\n <NTh class=\"w-175px\"> 操作 </NTh>\n </NTr>\n </NThead>\n <NTbody>\n <NTr>\n <NTd class=\"whitespace-nowrap\">\n {{\n `${getDevice(snapshot).manufacturer} Android ${\n getDevice(snapshot).release || ``\n }`\n }}\n </NTd>\n <NTd class=\"whitespace-nowrap\" @click=\"copy(snapshot.appName)\">\n <NEllipsis>\n {{ snapshot.appName }}\n </NEllipsis>\n </NTd>\n <NTd class=\"whitespace-nowrap\" @click=\"copy(snapshot.appVersionName)\">\n <NEllipsis>\n {{ snapshot.appVersionName }}\n </NEllipsis>\n </NTd>\n <NTd\n class=\"whitespace-nowrap\"\n @click=\"copy(snapshot.appVersionCode.toString())\"\n >\n <NEllipsis>\n {{ snapshot.appVersionCode }}\n </NEllipsis>\n </NTd>\n <NTd class=\"whitespace-nowrap\" @click=\"copy(snapshot.appId)\">\n <NEllipsis>\n {{ snapshot.appId }}\n </NEllipsis>\n </NTd>\n <NTd @click=\"copy(snapshot.activityId)\" class=\"break-words\">\n <NEllipsis>\n {{ snapshot.activityId }}\n </NEllipsis>\n </NTd>\n <NTd>\n <slot></slot>\n </NTd>\n </NTr>\n </NTbody>\n </NTable>\n <NTree\n ref=\"treeRef\"\n virtualScroll\n showLine\n @update:checked-keys=\"updateCheckedKeys\"\n keyField=\"id\"\n :defaultExpandedKeys=\"defaultExpandedKeys\"\n :data=\"[rootNode as any]\"\n :filter=\"(treeFilter as any)\"\n :nodeProps=\"(treeNodeProps as any)\"\n :renderLabel=\"(renderLabel as any)\"\n style=\"--n-border-color: rgb(239, 239, 245)\"\n />\n </div>\n</template>\n\n<style scoped lang=\"scss\">\n.WindowCard {\n .n-tree {\n overflow: scroll;\n }\n\n :deep(.n-tree-node-content__text) {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: 800px;\n }\n}\n</style>\n","<script lang=\"ts\" setup>\nimport ActionCard from '@/components/ActionCard.vue';\nimport AttrCard from '@/components/AttrCard.vue';\nimport ScreenshotCard from '@/components/ScreenshotCard.vue';\nimport SearchCard from '@/components/SearchCard.vue';\nimport WindowCard from '@/components/WindowCard.vue';\nimport { listToTree } from '@/utils/node';\nimport { message } from '@/utils/discrete';\nimport { delay } from '@/utils/others';\nimport {\n snapshotStorage,\n screenshotStorage,\n githubZipStorage,\n} from '@/utils/storage';\nimport type { RawNode, Snapshot } from '@/utils/types';\nimport { computed, shallowRef, watchEffect } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\nimport { useTitle } from '@vueuse/core';\nimport { gmOk } from '@/utils/gm';\nimport { exportSnapshotAsJpgUrl, exportSnapshotAsZipUrl } from '@/utils/export';\n\nconst route = useRoute();\nconst router = useRouter();\nconst title = useTitle();\n\nconst snapshotId = computed(() => String(route.params.snapshotId || ``));\nconst showSize = computed(() => {\n const n = Number(route.query.showSize || ``);\n if (!Number.isSafeInteger(n) || n <= 0) {\n return 2000;\n }\n return n;\n});\n\nconst screenshotUrl = shallowRef(``);\nconst snapshot = shallowRef<Snapshot>();\n\nwatchEffect(async () => {\n const localSnapshot = await snapshotStorage.getItem(snapshotId.value);\n if (!localSnapshot) {\n message.error(`快照数据缺失`);\n return;\n }\n if (gmOk()) {\n // 静默生成 jpg/zip\n setTimeout(async () => {\n exportSnapshotAsJpgUrl(localSnapshot);\n if (!githubZipStorage[localSnapshot.id]) {\n exportSnapshotAsZipUrl(\n (await snapshotStorage.getItem(snapshotId.value))!,\n );\n }\n }, 1000);\n }\n if (localSnapshot.nodes.length > showSize.value) {\n message.warning(\n `当前展示节点数量为${showSize.value}\\n之后的${\n localSnapshot.nodes.length - showSize.value\n }个节点将被丢弃\\n使用showSize查询参数可以修改展示数量`,\n );\n localSnapshot.nodes = localSnapshot.nodes.slice(0, showSize.value);\n }\n const bf = await screenshotStorage.getItem(snapshotId.value);\n if (!bf) {\n message.create(`截屏数据缺失`);\n return;\n }\n screenshotUrl.value = URL.createObjectURL(\n new Blob([bf], {\n type: 'image/png',\n }),\n );\n snapshot.value = localSnapshot;\n rootNode.value = listToTree(localSnapshot.nodes);\n title.value = '快照-' + localSnapshot.appName || localSnapshot.appId;\n await delay(500);\n if (!focusNode.value) {\n focusNode.value = rootNode.value;\n }\n});\n\nconst rootNode = shallowRef<RawNode>();\nconst focusNode = shallowRef<RawNode>();\n// 节点存在层叠渲染的情况,而且 Android 无障碍无法获取 z-index\n// const skipKeys = shallowRef<number[]>([]);\n\nconst onDelete = async () => {\n message.success(`删除成功,即将回到首页`);\n await delay(2000);\n router.replace({\n path: `/`,\n });\n};\n</script>\n<template>\n <div h-full flex gap-5px p-5px box-border>\n <ScreenshotCard\n v-if=\"screenshotUrl && snapshot\"\n :url=\"screenshotUrl\"\n :snapshot=\"snapshot\"\n :rootNode=\"rootNode\"\n :focusNode=\"focusNode\"\n @updateFocusNode=\"focusNode = $event\"\n />\n <WindowCard\n v-if=\"snapshot && rootNode\"\n :rootNode=\"rootNode\"\n :snapshot=\"snapshot\"\n :focusNode=\"focusNode\"\n @updateFocusNode=\"focusNode = $event\"\n class=\"flex-1\"\n >\n <ActionCard\n v-if=\"snapshot\"\n :snapshot=\"snapshot\"\n @delete=\"onDelete\"\n :showPreview=\"false\"\n />\n </WindowCard>\n <AttrCard v-if=\"focusNode\" :focusNode=\"focusNode\" />\n <SearchCard\n v-if=\"rootNode\"\n :snapshot=\"snapshot\"\n :rootNode=\"rootNode\"\n @updateFocusNode=\"focusNode = $event\"\n />\n </div>\n</template>\n"],"names":["createDataKey","key","ChevronLeftIcon","defineComponent","h","SwitcherIcon","self","vars","fontWeight","textColor1","textColor2","textColorDisabled","dividerColor","fontSize","collapseLight","commonLight","collapseLight$1","style$2","cB","cM","cE","c","fadeInHeightExpandTransition","collapseProps","useTheme","collapseInjectionKey","createInjectionKey","NCollapse","props","slots","mergedClsPrefixRef","inlineThemeDisabled","mergedRtlRef","useConfig","uncontrolledExpandedNamesRef","ref","controlledExpandedNamesRef","computed","mergedExpandedNamesRef","useMergedState","themeRef","style","doUpdateExpandedNames","names","_onUpdateExpandedNames","onUpdateExpandedNames","onExpandedNamesChange","call","doItemHeaderClick","info","onItemHeaderClick","toggleItem","collapse","name","event","accordion","expandedNames","activeNames","index","activeName","provide","rtlEnabledRef","useRtl","cssVarsRef","cubicBezierEaseInOut","titleFontWeight","titlePadding","titleTextColor","titleTextColorDisabled","textColor","arrowColor","titleFontSize","arrowColorDisabled","itemMargin","themeClassHandle","useThemeClass","_a","NCollapseItemContent","useFalseUntilTruthy","toRef","NFadeInExpandTransition","show","displayDirective","onceTrue","clsPrefix","useVShow","contentNode","withDirectives","vShow","collapseItemProps","NCollapseItem","randomName","createId","mergedNameRef","useMemo","inject","throwError","expandedNamesRef","collapseSlots","collapsedRef","expandedName","e","$slots","arrowPlacement","collapsed","mergedDisplayDirective","mergedClsPrefix","disabled","headerNode","resolveSlotWithProps","headerExtraSlot","arrowSlot","NBaseIcon","ArrowLeftIcon","ArrowRightIcon","resolveWrappedSlotWithProps","children","sizeVariables","cardColor","modalColor","popoverColor","tableHeaderColor","tableColorStriped","borderRadius","fontWeightStrong","lineHeight","fontSizeSmall","fontSizeMedium","fontSizeLarge","composite","tableLight","tableLight$1","borderRadiusSmall","hoverColor","pressedColor","primaryColor","textColor3","changeColor","treeLight","createTheme","checkboxLight","scrollbarLight","emptyLight","treeLight$1","style$1","cNotM","insideModal","insidePopover","tableProps","NTable","size","borderColor","tdColor","tdColorModal","tdColorPopover","thColor","thColorModal","thColorPopover","thTextColor","tdTextColor","thFontWeight","borderColorModal","borderColorPopover","tdColorStriped","tdColorStripedModal","tdColorStripedPopover","createKey","tdPadding","thPadding","NTh","NTr","NTd","NThead","NTbody","treeSelectInjectionKey","treeInjectionKey","NTreeNodeSwitcher","renderSwitcherIconRef","expanded","hide","indent","onClick","NIconSwitchTransition","NBaseLoading","renderSwitcherIcon","NTreeNodeCheckbox","NTree","doCheck","value","onCheck","handleUpdateValue","mergedTheme","checked","indeterminate","focusable","NCheckbox","NTreeNodeContent","renderLabelRef","renderPrefixRef","renderSuffixRef","labelFieldRef","selfRef","doClick","handleClick","labelField","nodeProps","selected","renderLabel","renderPrefix","renderSuffix","onDragstart","rawNode","prefix","suffix","label","render","renderDropMark","position","offsetLevel","el","cssPosition","defaultAllowDrop","dropPosition","node","useMergedCheckStrategy","isNodeDisabled","disabledField","traverse","nodes","childrenField","callback","callbackAfter","keysWithFilter","pattern","keyField","filter","keys","highlightKeySet","path","isBrowser","emptyImage","filterTree","tree","visitedTailKeys","visitedNonTailKeys","expandedKeys","filteredTree","visit","t","n","i","build","sibs","isVisitedTail","isVisitedNonTail","clonedNode","TreeNode","droppingNodeParentRef","droppingMouseNodeRef","draggingNodeRef","droppingPositionRef","droppingOffsetLevelRef","nodePropsRef","indentRef","blockLineRef","checkboxPlacementRef","checkOnClickRef","disabledFieldRef","showLineRef","checkboxDisabledRef","nodeIsDisabledRef","disabledRef","resolvedNodePropsRef","contentInstRef","contentElRef","onMounted","handleSwitcherClick","tmNode","onLoad","selectableRef","checkableRef","checkedRef","mergedCheckOnClickRef","checkable","checkOnClick","_handleClick","expandOnClick","selectable","mergedCheckOnClick","happensIn","handleCheck","handleContentClick","_b","handleLineClick","handleDragStart","handleDragEnter","handleDragOver","handleDragEnd","handleDragLeave","handleDrop","indentNodes","cursor","repeat","draggingNode","droppingPosition","droppingMouseNode","droppingNodeParent","highlight","draggable","blockLine","pending","internalScrollable","checkboxPlacement","dragEventHandlers","dataKey","checkboxOnRight","checkboxNode","NTreeNode","useKeyboard","fNodesRef","mergedExpandedKeysRef","mergedSelectedKeysRef","handleSelect","mergedSelectedKeys","treeSelectInjection","pendingNodeKeyRef","handleKeydown","pendingNodeKey","fNodes","fIndex","pendingNode","parentTmNode","MotionWrapper","FadeInExpandTransition","pxfy","iconSwitchTransitionNode","iconSwitchTransition","__awaiter","this","thisArg","_arguments","P","generator","adopt","resolve","reject","fulfilled","step","rejected","result","createTreeMateOptions","getChildren","treeSharedProps","treeProps","selfElRef","scrollbarInstRef","virtualListInstRef","getScrollContainer","getScrollContent","mergedFilterRef","filteredTreeInfoRef","displayTreeMateRef","createTreeMate","dataTreeMateRef","watchProps","uncontrolledCheckedKeysRef","watchEffect","controlledCheckedKeysRef","mergedCheckedKeysRef","checkedStatusRef","mergedCheckStrategyRef","displayedCheckedKeysRef","displayedIndeterminateKeysRef","indeterminateKeys","uncontrolledSelectedKeysRef","controlledSelectedKeysRef","uncontrolledExpandedKeysRef","initUncontrolledExpandedKeys","controlledExpandedKeysRef","expandTimerId","nodeKeyToBeExpanded","uncontrolledHighlightKeySetRef","controlledHighlightKeySetRef","mergedHighlightKeySetRef","loadingKeysRef","expandedNonLoadingKeysRef","dragStartX","droppingNodeRef","droppingNode","watch","resetDndState","expandAnimationDisabled","disableExpandAnimationForOneTick","nextTick","memoizedExpandedKeys","oldValue","expandedKeysAfterChange","doUpdateExpandedKeys","getOptionsByKeys","triggerLoading","loadingKeys","resetDragExpandState","loadError","displayTreeMate","getNode","aipRef","afNodesRef","prevValue","syncScrollbar","nodeHeight","depx","prevVSet","addedKey","removedKey","expandedKey","currentVSet","virtualScroll","viewportHeight","viewportItemCount","baseExpandedKeys","expandedNodeIndex","expandedChildren","flatten","collapsedNodeIndex","collapsedNodeChildren","collapsedChildren","getFIndexRef","createIndexGetter","mergedFNodesRef","scrollbarInst","handleAfterEnter","option","meta","_onUpdateExpandedKeys","onUpdateExpandedKeys","doUpdateCheckedKeys","_onUpdateCheckedKeys","onUpdateCheckedKeys","doUpdateIndeterminateKeys","_onUpdateIndeterminateKeys","onUpdateIndeterminateKeys","doUpdateSelectedKeys","_onUpdateSelectedKeys","onUpdateSelectedKeys","doDragEnter","onDragenter","doDragLeave","onDragleave","doDragEnd","onDragend","doDragStart","doDragOver","onDragover","doDrop","onDrop","resetDragState","resetDropState","checkedAction","checkedKeys","toggleExpand","mergedExpandedKeys","expandNodeId","nodeToBeExpanded","nextKeys","siblingKeySet","selectedKeys","expandDragEnterNode","expand","handleDragLeaveTree","emit","allowDrop","elOffsetHeight","elClientTop","eventOffsetY","mousePosition","getFindex","finalDropNode","finalDropPosition","hoverNodeFIndex","mouseAtExpandedNonLeafNode","offset","nextNode","prevNode","handleScroll","handleResize","handleFocusout","selfEl","targetEl","scrollTo","options","exposedMethods","nodeBorderRadius","nodeColorHover","nodeColorPressed","nodeColorActive","loadingColor","nodeTextColor","nodeTextColorDisabled","dropMarkColor","nodeWrapperPadding","lineOffsetTop","getPadding","lineOffsetBottom","nodeContentHeight","internalRenderEmpty","blockNode","internalFocusable","rtlEnabled","scrollbarProps","mergedFocusable","tabindex","treeClass","createNode","internalScrollablePadding","padding","NxScrollbar","VVirtualList","item","resolveSlot","NEmpty","isLeft","isTop","prevOffset","shallowReactive","currentStyle","xStyle","yStyle","prevEv","startMove","ev","move","target","dx","dy","endMove","box","shallowRef","preventSelection","transitions","windowEndMove","top","bottom","left","right","boxDiv","onUnmounted","newValue","oldvalue","updateTarget","arg","lenAttrNames","attrs","attr","attrDesc","imgRef","clickEvRef","img","imgRect","innerHeight","offsetTop","ox","oy","childNode","findNodeByXy","percent","positionStyle","imgHover","hoverPosition","imgMove","hoverPositionStyle","selectorText","selectorResults","searchBySelector","errorTry","message","text","enableSearchBySelector","selector","errorWrap","parseSelector","s","results","stack","getNodeLabel","generateRules","jpgUrl","githubJpgStorage","githubUrlToSelfUrl","zipUrl","githubZipStorage","rule","dayjs","copy","_1vw","defaultExpandedKeys","focusNode","id","parent","Set","add","length","treeRef","updateCheckedKeys","treeFilter","treeNodeProps","onUpdateFocusNode","color","route","useRoute","router","useRouter","title","useTitle","snapshotId","showSize","screenshotUrl","snapshot","localSnapshot","snapshotStorage","gmOk","exportSnapshotAsJpgUrl","exportSnapshotAsZipUrl","bf","screenshotStorage","rootNode","listToTree","delay","onDelete"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29]}