@gkd-kit/inspect 0.0.1719554981776 → 0.0.1719771844368

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 (45) hide show
  1. package/dist/assets/{ActionCard.vue_vue_type_script_setup_true_lang-osiRFbW-.js → ActionCard.vue_vue_type_script_setup_true_lang-BQ_8fdAM.js} +2 -2
  2. package/dist/assets/{ActionCard.vue_vue_type_script_setup_true_lang-osiRFbW-.js.map → ActionCard.vue_vue_type_script_setup_true_lang-BQ_8fdAM.js.map} +1 -1
  3. package/dist/assets/DevicePage-DVADu81G.js +49 -0
  4. package/dist/assets/DevicePage-DVADu81G.js.map +1 -0
  5. package/dist/assets/{HomePage-e_VAOXhM.js → HomePage-CaxY_1lw.js} +2 -2
  6. package/dist/assets/{HomePage-e_VAOXhM.js.map → HomePage-CaxY_1lw.js.map} +1 -1
  7. package/dist/assets/ImportPage-NLsJri71.js +2 -0
  8. package/dist/assets/{ImportPage-CHjeYLZq.js.map → ImportPage-NLsJri71.js.map} +1 -1
  9. package/dist/assets/PreviewSharePage-CQKWL6mm.js +2 -0
  10. package/dist/assets/{PreviewSharePage-BhIamd8L.js.map → PreviewSharePage-CQKWL6mm.js.map} +1 -1
  11. package/dist/assets/SnapshotPage-CaEVhDB3.js +276 -0
  12. package/dist/assets/SnapshotPage-CaEVhDB3.js.map +1 -0
  13. package/dist/assets/{TrackGraph-CEp76OOj.js → TrackGraph-LNwgG7Zu.js} +2 -2
  14. package/dist/assets/{TrackGraph-CEp76OOj.js.map → TrackGraph-LNwgG7Zu.js.map} +1 -1
  15. package/dist/assets/{_404Page-CZ0CByXf.js → _404Page-FYDSyMId.js} +2 -2
  16. package/dist/assets/{_404Page-CZ0CByXf.js.map → _404Page-FYDSyMId.js.map} +1 -1
  17. package/dist/assets/{dayjs.min-uKVeuXWf.js → dayjs.min-Dk3SwgwA.js} +2 -2
  18. package/dist/assets/{dayjs.min-uKVeuXWf.js.map → dayjs.min-Dk3SwgwA.js.map} +1 -1
  19. package/dist/assets/error-cRQAxhsF.js +2 -0
  20. package/dist/assets/error-cRQAxhsF.js.map +1 -0
  21. package/dist/assets/{export-C0OLZkuw.js → export-BbCEpSmy.js} +2 -2
  22. package/dist/assets/{export-C0OLZkuw.js.map → export-BbCEpSmy.js.map} +1 -1
  23. package/dist/assets/{fetch-CpTiefX8.js → fetch-H6IWSOXO.js} +27 -27
  24. package/dist/assets/{fetch-CpTiefX8.js.map → fetch-H6IWSOXO.js.map} +1 -1
  25. package/dist/assets/{import-DideFhmR.js → import-CtVhDhqQ.js} +2 -2
  26. package/dist/assets/{import-DideFhmR.js.map → import-CtVhDhqQ.js.map} +1 -1
  27. package/dist/assets/{index-Xf3Ut-IQ.js → index-B3yJ_cuJ.js} +2 -2
  28. package/dist/assets/{index-Xf3Ut-IQ.js.map → index-B3yJ_cuJ.js.map} +1 -1
  29. package/dist/assets/{index-DEdjUr5q.js → index-DUNQCHBS.js} +5 -5
  30. package/dist/assets/{index-DEdjUr5q.js.map → index-DUNQCHBS.js.map} +1 -1
  31. package/dist/assets/{index-BK1Q2G8Y.js → index-DgVERJQU.js} +2 -2
  32. package/dist/assets/{index-BK1Q2G8Y.js.map → index-DgVERJQU.js.map} +1 -1
  33. package/dist/assets/{polyfills-Bzj3sCUp.js → polyfills-C-WU4AZr.js} +1 -1
  34. package/dist/assets/{table-CA4K56iX.js → table-Nqs-aN9a.js} +2 -2
  35. package/dist/assets/{table-CA4K56iX.js.map → table-Nqs-aN9a.js.map} +1 -1
  36. package/dist/index.html +3 -3
  37. package/package.json +1 -1
  38. package/dist/assets/DevicePage-Cv3SCQIP.js +0 -49
  39. package/dist/assets/DevicePage-Cv3SCQIP.js.map +0 -1
  40. package/dist/assets/ImportPage-CHjeYLZq.js +0 -2
  41. package/dist/assets/PreviewSharePage-BhIamd8L.js +0 -2
  42. package/dist/assets/SnapshotPage-CO6Z0AlC.js +0 -272
  43. package/dist/assets/SnapshotPage-CO6Z0AlC.js.map +0 -1
  44. package/dist/assets/selector-BAtGYIJN.js +0 -6
  45. package/dist/assets/selector-BAtGYIJN.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"mappings":"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","names":["createDataKey","key","ChevronLeftIcon","defineComponent","h","SwitcherIcon","zero","n1","createLeftBorderStyle","type","cM","c","cB","cE","createTopBorderStyle","style$3","cNotM","buttonGroupProps","NButtonGroup","props","mergedClsPrefixRef","mergedRtlRef","useConfig","useStyle","style","provide","buttonGroupInjectionKey","useRtl","mergedClsPrefix","self","vars","fontWeight","textColor1","textColor2","textColorDisabled","dividerColor","fontSize","collapseLight","commonLight","collapseLight$1","style$2","fadeInHeightExpandTransition","collapseProps","useTheme","collapseInjectionKey","createInjectionKey","NCollapse","slots","inlineThemeDisabled","uncontrolledExpandedNamesRef","ref","controlledExpandedNamesRef","computed","mergedExpandedNamesRef","useMergedState","themeRef","doUpdateExpandedNames","names","_onUpdateExpandedNames","onUpdateExpandedNames","onExpandedNamesChange","call","doItemHeaderClick","info","onItemHeaderClick","toggleItem","collapse","name","event","accordion","expandedNames","activeNames","index","activeName","rtlEnabledRef","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","happensInArea","happensIn","$slots","arrowPlacement","collapsed","mergedDisplayDirective","disabled","triggerAreas","headerNode","resolveSlotWithProps","headerExtraSlot","arrowSlot","area","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","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","i","isBrowser","emptyImage","filterTree","tree","visitedTailKeys","visitedNonTailKeys","expandedKeys","filteredTree","visit","t","n","build","sibs","isVisitedTail","isVisitedNonTail","clonedNode","TreeNode","droppingNodeParentRef","droppingMouseNodeRef","draggingNodeRef","droppingPositionRef","droppingOffsetLevelRef","nodePropsRef","indentRef","blockLineRef","checkboxPlacementRef","checkOnClickRef","disabledFieldRef","showLineRef","overrideDefaultNodeClickBehaviorRef","checkboxDisabledRef","nodeIsDisabledRef","disabledRef","resolvedNodePropsRef","contentInstRef","contentElRef","onMounted","handleSwitcherClick","tmNode","onLoad","selectableRef","checkableRef","checkedRef","mergedCheckOnClickRef","checkable","checkOnClick","_handleClick","expandOnClick","selectable","mergedCheckOnClick","handleCheck","handleNodeClick","_b","overrideDefaultNodeClickBehavior","shouldOverride","handleContentClick","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","mergedCheckedKeysRef","handleSelect","mergedSelectedKeys","treeSelectInjection","pendingNodeKeyRef","handleKeydown","pendingNodeKey","enterBehavior","fNodes","fIndex","pendingNode","parentTmNode","MotionWrapper","FadeInExpandTransition","pxfy","iconSwitchTransitionNode","iconSwitchTransition","__awaiter","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","checkedStatusRef","mergedCheckStrategyRef","displayedCheckedKeysRef","displayedIndeterminateKeysRef","indeterminateKeys","uncontrolledSelectedKeysRef","controlledSelectedKeysRef","uncontrolledExpandedKeysRef","initUncontrolledExpandedKeys","controlledExpandedKeysRef","expandTimerId","nodeKeyToBeExpanded","uncontrolledHighlightKeySetRef","controlledHighlightKeySetRef","mergedHighlightKeySetRef","loadingKeysRef","expandedNonLoadingKeysRef","dragStartX","droppingNodeRef","droppingNode","isDataReset","watch","nextTick","resetDndState","expandAnimationDisabled","disableExpandAnimationForOneTick","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","y","exposedMethods","nodeBorderRadius","nodeColorHover","nodeColorPressed","nodeColorActive","loadingColor","nodeTextColor","nodeTextColorDisabled","dropMarkColor","nodeWrapperPadding","lineColor","lineOffsetTop","getPadding","lineOffsetBottom","nodeContentHeight","internalRenderEmpty","blockNode","internalFocusable","rtlEnabled","scrollbarProps","mergedFocusable","tabindex","treeClass","createNode","internalScrollablePadding","padding","NxScrollbar","VVirtualList","item","resolveSlot","NEmpty","useDragMove","xFilter","target","shallowRef","prevOffset","shallowReactive","prevEv","preventSelection","ev","startMove","move","dx","dy","endMove","windowEndMove","top","bottom","left","right","onUnmounted","newValue","transition","__props","isLeft","isTop","leftDragBar","w","rightDragBar","currentStyle","width","widthStyle","yStyle","box","boxDiv","updateTarget","arg","attrTip","lenAttrNames","attrs","attr","_c","windowSize","useWindowSize","debouncedSize","refDebounced","imgRef","imgLoadTime","clickImg","img","imgRect","innerHeight","offsetTop","ox","oy","results","findNodesByXy","percent","positionStyle","imgHover","hoverPosition","boxHoverPosition","imgMove","hoverPositionStyle","browser","percentToByte","p","encode","str","byteToPercent","b","decode","dist","universal_base64_1","require$$0","decode_1","encode_1","vw","gkdWidth","useRouter","route","useRoute","selectorText","selectorResults","searchSelector","text","selector","errorWrap","parseSelector","s","message","searchString","stack","getNodeLabel","refreshExpandedKeys","newResult","newNode","allKeys","newKeys","k","searchBySelector","errorTry","enableSearchBySelector","wasmLoadTask","count","base64url.decode","generateRules","jpgUrl","githubJpgStorage","githubUrlToSelfUrl","importId","importStorage","zipUrl","getImportUrl","quickFind","rule","getAppInfo","dayjs","copy","JSON5","hasZipId","shareResult","importUrl","base64url.encode","focusNode","focusCount","id","then","delay","treeRef","behavior","debounce","parent","Set","add","length","every","v","has","treeFilter","treeNodeProps","qf","idQf","textQf","onUpdateFocusNode","color","undefined","AsyncTrackGraph","loader","__vitePreload","defineAsyncComponent","router","title","useTitle","snapshotId","showSize","screenshotUrl","snapshot","localSnapshot","snapshotStorage","loadingBar","r","detectSnapshot","gmOk","settingsStorage","exportSnapshotAsJpgUrl","exportSnapshotAsImportId","bf","screenshotStorage","rootNode","listToTree","onDelete","track","trackVisible","multiFocus"],"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,30,31,36,37],"sources":["../../node_modules/.pnpm/naive-ui@2.38.1_vue@3.4.23_typescript@5.4.5_/node_modules/naive-ui/es/_utils/vue/create-data-key.mjs","../../node_modules/.pnpm/naive-ui@2.38.1_vue@3.4.23_typescript@5.4.5_/node_modules/naive-ui/es/_internal/icons/ChevronLeft.mjs","../../node_modules/.pnpm/naive-ui@2.38.1_vue@3.4.23_typescript@5.4.5_/node_modules/naive-ui/es/_internal/icons/Switcher.mjs","../../node_modules/.pnpm/naive-ui@2.38.1_vue@3.4.23_typescript@5.4.5_/node_modules/naive-ui/es/button-group/src/styles/index.cssr.mjs","../../node_modules/.pnpm/naive-ui@2.38.1_vue@3.4.23_typescript@5.4.5_/node_modules/naive-ui/es/button-group/src/ButtonGroup.mjs","../../node_modules/.pnpm/naive-ui@2.38.1_vue@3.4.23_typescript@5.4.5_/node_modules/naive-ui/es/collapse/styles/light.mjs","../../node_modules/.pnpm/naive-ui@2.38.1_vue@3.4.23_typescript@5.4.5_/node_modules/naive-ui/es/collapse/src/styles/index.cssr.mjs","../../node_modules/.pnpm/naive-ui@2.38.1_vue@3.4.23_typescript@5.4.5_/node_modules/naive-ui/es/collapse/src/Collapse.mjs","../../node_modules/.pnpm/naive-ui@2.38.1_vue@3.4.23_typescript@5.4.5_/node_modules/naive-ui/es/collapse/src/CollapseItemContent.mjs","../../node_modules/.pnpm/naive-ui@2.38.1_vue@3.4.23_typescript@5.4.5_/node_modules/naive-ui/es/collapse/src/CollapseItem.mjs","../../node_modules/.pnpm/naive-ui@2.38.1_vue@3.4.23_typescript@5.4.5_/node_modules/naive-ui/es/table/styles/_common.mjs","../../node_modules/.pnpm/naive-ui@2.38.1_vue@3.4.23_typescript@5.4.5_/node_modules/naive-ui/es/table/styles/light.mjs","../../node_modules/.pnpm/naive-ui@2.38.1_vue@3.4.23_typescript@5.4.5_/node_modules/naive-ui/es/tree/styles/light.mjs","../../node_modules/.pnpm/naive-ui@2.38.1_vue@3.4.23_typescript@5.4.5_/node_modules/naive-ui/es/table/src/styles/index.cssr.mjs","../../node_modules/.pnpm/naive-ui@2.38.1_vue@3.4.23_typescript@5.4.5_/node_modules/naive-ui/es/table/src/Table.mjs","../../node_modules/.pnpm/naive-ui@2.38.1_vue@3.4.23_typescript@5.4.5_/node_modules/naive-ui/es/table/src/Th.mjs","../../node_modules/.pnpm/naive-ui@2.38.1_vue@3.4.23_typescript@5.4.5_/node_modules/naive-ui/es/table/src/Tr.mjs","../../node_modules/.pnpm/naive-ui@2.38.1_vue@3.4.23_typescript@5.4.5_/node_modules/naive-ui/es/table/src/Td.mjs","../../node_modules/.pnpm/naive-ui@2.38.1_vue@3.4.23_typescript@5.4.5_/node_modules/naive-ui/es/table/src/Thead.mjs","../../node_modules/.pnpm/naive-ui@2.38.1_vue@3.4.23_typescript@5.4.5_/node_modules/naive-ui/es/table/src/Tbody.mjs","../../node_modules/.pnpm/naive-ui@2.38.1_vue@3.4.23_typescript@5.4.5_/node_modules/naive-ui/es/tree-select/src/interface.mjs","../../node_modules/.pnpm/naive-ui@2.38.1_vue@3.4.23_typescript@5.4.5_/node_modules/naive-ui/es/tree/src/interface.mjs","../../node_modules/.pnpm/naive-ui@2.38.1_vue@3.4.23_typescript@5.4.5_/node_modules/naive-ui/es/tree/src/TreeNodeSwitcher.mjs","../../node_modules/.pnpm/naive-ui@2.38.1_vue@3.4.23_typescript@5.4.5_/node_modules/naive-ui/es/tree/src/TreeNodeCheckbox.mjs","../../node_modules/.pnpm/naive-ui@2.38.1_vue@3.4.23_typescript@5.4.5_/node_modules/naive-ui/es/tree/src/TreeNodeContent.mjs","../../node_modules/.pnpm/naive-ui@2.38.1_vue@3.4.23_typescript@5.4.5_/node_modules/naive-ui/es/tree/src/dnd.mjs","../../node_modules/.pnpm/naive-ui@2.38.1_vue@3.4.23_typescript@5.4.5_/node_modules/naive-ui/es/tree/src/utils.mjs","../../node_modules/.pnpm/naive-ui@2.38.1_vue@3.4.23_typescript@5.4.5_/node_modules/naive-ui/es/tree/src/TreeNode.mjs","../../node_modules/.pnpm/naive-ui@2.38.1_vue@3.4.23_typescript@5.4.5_/node_modules/naive-ui/es/tree/src/keyboard.mjs","../../node_modules/.pnpm/naive-ui@2.38.1_vue@3.4.23_typescript@5.4.5_/node_modules/naive-ui/es/tree/src/MotionWrapper.mjs","../../node_modules/.pnpm/naive-ui@2.38.1_vue@3.4.23_typescript@5.4.5_/node_modules/naive-ui/es/tree/src/styles/index.cssr.mjs","../../node_modules/.pnpm/naive-ui@2.38.1_vue@3.4.23_typescript@5.4.5_/node_modules/naive-ui/es/tree/src/Tree.mjs","../../src/utils/draggable.ts","../../src/components/DraggableCard.vue","../../src/components/AttrCard.vue","../../src/components/ScreenshotCard.vue","../../node_modules/.pnpm/universal-base64@2.1.0/node_modules/universal-base64/dist/browser.js","../../node_modules/.pnpm/universal-base64url@1.1.0/node_modules/universal-base64url/dist/index.js","../../src/utils/size.ts","../../src/components/SearchCard.vue","../../src/components/WindowCard.vue","../../src/components/MultiFocusCard.vue","../../src/views/SnapshotPage.vue"],"sourcesContent":["export function createDataKey(key) {\n return typeof key === 'string' ? `s-${key}` : `n-${key}`;\n}","import { h, defineComponent } from 'vue';\nexport default defineComponent({\n name: 'ChevronLeft',\n render() {\n return h(\"svg\", {\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\"\n }, h(\"path\", {\n 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\",\n fill: \"currentColor\"\n }));\n }\n});","import { h, defineComponent } from 'vue';\nexport default defineComponent({\n name: 'Switcher',\n render() {\n return h(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 32\"\n }, h(\"path\", {\n d: \"M12 8l10 8l-10 8z\"\n }));\n }\n});","import { c, cB, cM, cE, cNotM } from \"../../../_utils/cssr/index.mjs\";\nexport const zero = '0!important';\nexport const n1 = '-1px!important';\nfunction createLeftBorderStyle(type) {\n return cM(type + '-type', [c('& +', [cB('button', {}, [cM(type + '-type', [cE('border', {\n borderLeftWidth: zero\n }), cE('state-border', {\n left: n1\n })])])])]);\n}\nfunction createTopBorderStyle(type) {\n return cM(type + '-type', [c('& +', [cB('button', [cM(type + '-type', [cE('border', {\n borderTopWidth: zero\n }), cE('state-border', {\n top: n1\n })])])])]);\n}\nexport default cB('button-group', `\n flex-wrap: nowrap;\n display: inline-flex;\n position: relative;\n`, [cNotM('vertical', {\n flexDirection: 'row'\n}, [cNotM('rtl', [cB('button', [c('&:first-child:not(:last-child)', `\n margin-right: ${zero};\n border-top-right-radius: ${zero};\n border-bottom-right-radius: ${zero};\n `), c('&:last-child:not(:first-child)', `\n margin-left: ${zero};\n border-top-left-radius: ${zero};\n border-bottom-left-radius: ${zero};\n `), c('&:not(:first-child):not(:last-child)', `\n margin-left: ${zero};\n margin-right: ${zero};\n border-radius: ${zero};\n `), createLeftBorderStyle('default'), cM('ghost', [createLeftBorderStyle('primary'), createLeftBorderStyle('info'), createLeftBorderStyle('success'), createLeftBorderStyle('warning'), createLeftBorderStyle('error')])])])]), cM('vertical', {\n flexDirection: 'column'\n}, [cB('button', [c('&:first-child:not(:last-child)', `\n margin-bottom: ${zero};\n margin-left: ${zero};\n margin-right: ${zero};\n border-bottom-left-radius: ${zero};\n border-bottom-right-radius: ${zero};\n `), c('&:last-child:not(:first-child)', `\n margin-top: ${zero};\n margin-left: ${zero};\n margin-right: ${zero};\n border-top-left-radius: ${zero};\n border-top-right-radius: ${zero};\n `), c('&:not(:first-child):not(:last-child)', `\n margin: ${zero};\n border-radius: ${zero};\n `), createTopBorderStyle('default'), cM('ghost', [createTopBorderStyle('primary'), createTopBorderStyle('info'), createTopBorderStyle('success'), createTopBorderStyle('warning'), createTopBorderStyle('error')])])])]);","import { h, defineComponent, provide } from 'vue';\nimport { useRtl } from \"../../_mixins/use-rtl.mjs\";\nimport { useConfig, useStyle } from \"../../_mixins/index.mjs\";\nimport { buttonGroupInjectionKey } from \"./context.mjs\";\nimport style from \"./styles/index.cssr.mjs\";\nexport const buttonGroupProps = {\n size: {\n type: String,\n default: undefined\n },\n vertical: Boolean\n};\nexport default defineComponent({\n name: 'ButtonGroup',\n props: buttonGroupProps,\n setup(props) {\n const {\n mergedClsPrefixRef,\n mergedRtlRef\n } = useConfig(props);\n useStyle('-button-group', style, mergedClsPrefixRef);\n provide(buttonGroupInjectionKey, props);\n const rtlEnabledRef = useRtl('ButtonGroup', mergedRtlRef, mergedClsPrefixRef);\n return {\n rtlEnabled: rtlEnabledRef,\n mergedClsPrefix: mergedClsPrefixRef\n };\n },\n render() {\n const {\n mergedClsPrefix\n } = this;\n return h(\"div\", {\n class: [`${mergedClsPrefix}-button-group`, this.rtlEnabled && `${mergedClsPrefix}-button-group--rtl`, this.vertical && `${mergedClsPrefix}-button-group--vertical`],\n role: \"group\"\n }, this.$slots);\n }\n});","import { commonLight } from \"../../_styles/common/index.mjs\";\nexport const self = vars => {\n const {\n fontWeight,\n textColor1,\n textColor2,\n textColorDisabled,\n dividerColor,\n fontSize\n } = 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;","import { c, cB, cE, cM, cNotM } from \"../../../_utils/cssr/index.mjs\";\nimport { fadeInHeightExpandTransition } from \"../../../_styles/transitions/fade-in-height-expand.cssr.mjs\";\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);'), cNotM('disabled', [cM('trigger-area-main', [cE('header', [cE('header-main', 'cursor: pointer;'), cB('collapse-item-arrow', 'cursor: default;')])]), cM('trigger-area-arrow', [cE('header', [cB('collapse-item-arrow', 'cursor: pointer;')])]), cM('trigger-area-extra', [cE('header', [cE('header-extra', 'cursor: pointer;')])])]), 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 `, [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/index.mjs\";\nimport { call, createInjectionKey, warn } from \"../../_utils/index.mjs\";\nimport { collapseLight } from \"../styles/index.mjs\";\nimport style from \"./styles/index.cssr.mjs\";\nimport { useRtl } from \"../../_mixins/use-rtl.mjs\";\nexport const collapseProps = Object.assign(Object.assign({}, useTheme.props), {\n defaultExpandedNames: {\n type: [Array, String],\n default: null\n },\n expandedNames: [Array, String],\n arrowPlacement: {\n type: String,\n default: 'left'\n },\n accordion: {\n type: Boolean,\n default: false\n },\n displayDirective: {\n type: String,\n default: 'if'\n },\n triggerAreas: {\n type: Array,\n default: () => ['main', 'extra', 'arrow']\n },\n onItemHeaderClick: [Function, Array],\n 'onUpdate:expandedNames': [Function, Array],\n 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 }\n});\nexport const collapseInjectionKey = createInjectionKey('n-collapse');\nexport default defineComponent({\n name: 'Collapse',\n props: collapseProps,\n setup(props, {\n slots\n }) {\n const {\n mergedClsPrefixRef,\n inlineThemeDisabled,\n mergedRtlRef\n } = 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 {\n 'onUpdate:expandedNames': _onUpdateExpandedNames,\n onUpdateExpandedNames,\n onExpandedNamesChange\n } = 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 {\n onItemHeaderClick\n } = props;\n if (onItemHeaderClick) {\n call(onItemHeaderClick, info);\n }\n }\n function toggleItem(collapse, name, event) {\n const {\n accordion\n } = props;\n const {\n value: expandedNames\n } = mergedExpandedNamesRef;\n if (accordion) {\n if (collapse) {\n doUpdateExpandedNames([name]);\n doItemHeaderClick({\n name,\n expanded: true,\n event\n });\n } else {\n doUpdateExpandedNames([]);\n doItemHeaderClick({\n name,\n expanded: false,\n event\n });\n }\n } else {\n if (!Array.isArray(expandedNames)) {\n doUpdateExpandedNames([name]);\n doItemHeaderClick({\n name,\n expanded: true,\n 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({\n name,\n expanded: false,\n event\n });\n } else {\n activeNames.push(name);\n doUpdateExpandedNames(activeNames);\n doItemHeaderClick({\n name,\n expanded: true,\n event\n });\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 {\n common: {\n cubicBezierEaseInOut\n },\n self: {\n titleFontWeight,\n dividerColor,\n titlePadding,\n titleTextColor,\n titleTextColorDisabled,\n textColor,\n arrowColor,\n fontSize,\n titleFontSize,\n arrowColorDisabled,\n itemMargin\n }\n } = 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 ? useThemeClass('collapse', undefined, cssVarsRef, props) : 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\", {\n class: [`${this.mergedClsPrefix}-collapse`, this.rtlEnabled && `${this.mergedClsPrefix}-collapse--rtl`, this.themeClass],\n style: this.cssVars\n }, this.$slots);\n }\n});","import { h, withDirectives, vShow, defineComponent, toRef } from 'vue';\nimport { useFalseUntilTruthy } from 'vooks';\nimport { NFadeInExpandTransition } from \"../../_internal/index.mjs\";\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 {\n show,\n displayDirective,\n onceTrue,\n clsPrefix\n } = this;\n const useVShow = displayDirective === 'show' && onceTrue;\n const contentNode = h(\"div\", {\n class: `${clsPrefix}-collapse-item__content-wrapper`\n }, h(\"div\", {\n class: `${clsPrefix}-collapse-item__content-inner`\n }, this.$slots));\n return useVShow ? withDirectives(contentNode, [[vShow, show]]) : show ? contentNode : null;\n }\n });\n }\n});","import { h, defineComponent, inject, computed, toRef } from 'vue';\nimport { createId, happensIn } from 'seemly';\nimport { useMemo } from 'vooks';\nimport { ChevronRightIcon as ArrowRightIcon, ChevronLeftIcon as ArrowLeftIcon } from \"../../_internal/icons/index.mjs\";\nimport { useRtl } from \"../../_mixins/use-rtl.mjs\";\nimport { useConfig } from \"../../_mixins/index.mjs\";\nimport { NBaseIcon } from \"../../_internal/index.mjs\";\nimport { throwError, resolveSlotWithProps, resolveWrappedSlotWithProps } from \"../../_utils/index.mjs\";\nimport { collapseInjectionKey } from \"./Collapse.mjs\";\nimport NCollapseItemContent from \"./CollapseItemContent.mjs\";\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 {\n mergedRtlRef\n } = 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 {\n expandedNamesRef,\n props: collapseProps,\n mergedClsPrefixRef,\n slots: collapseSlots\n } = NCollapse;\n const collapsedRef = computed(() => {\n const {\n value: expandedNames\n } = expandedNamesRef;\n if (Array.isArray(expandedNames)) {\n const {\n value: name\n } = mergedNameRef;\n return !~expandedNames.findIndex(expandedName => expandedName === name);\n } else if (expandedNames) {\n const {\n value: name\n } = 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 triggerAreas: toRef(collapseProps, 'triggerAreas'),\n mergedDisplayDirective: computed(() => {\n const {\n displayDirective\n } = props;\n if (displayDirective) {\n return displayDirective;\n } else {\n return collapseProps.displayDirective;\n }\n }),\n arrowPlacement: computed(() => {\n return collapseProps.arrowPlacement;\n }),\n handleClick(e) {\n let happensInArea = 'main';\n if (happensIn(e, 'arrow')) happensInArea = 'arrow';\n if (happensIn(e, 'extra')) happensInArea = 'extra';\n if (!collapseProps.triggerAreas.includes(happensInArea)) {\n return;\n }\n if (NCollapse && !props.disabled) {\n NCollapse.toggleItem(collapsedRef.value, mergedNameRef.value, e);\n }\n }\n };\n },\n render() {\n const {\n collapseSlots,\n $slots,\n arrowPlacement,\n collapsed,\n mergedDisplayDirective,\n mergedClsPrefix,\n disabled,\n triggerAreas\n } = this;\n const headerNode = resolveSlotWithProps($slots.header, {\n collapsed\n }, () => [this.title]);\n const headerExtraSlot = $slots['header-extra'] || collapseSlots['header-extra'];\n const arrowSlot = $slots.arrow || collapseSlots.arrow;\n return h(\"div\", {\n class: [`${mergedClsPrefix}-collapse-item`, `${mergedClsPrefix}-collapse-item--${arrowPlacement}-arrow-placement`, disabled && `${mergedClsPrefix}-collapse-item--disabled`, !collapsed && `${mergedClsPrefix}-collapse-item--active`, triggerAreas.map(area => {\n return `${mergedClsPrefix}-collapse-item--trigger-area-${area}`;\n })]\n }, h(\"div\", {\n class: [`${mergedClsPrefix}-collapse-item__header`, !collapsed && `${mergedClsPrefix}-collapse-item__header--active`]\n }, h(\"div\", {\n class: `${mergedClsPrefix}-collapse-item__header-main`,\n onClick: this.handleClick\n }, arrowPlacement === 'right' && headerNode, h(\"div\", {\n class: `${mergedClsPrefix}-collapse-item-arrow`,\n key: this.rtlEnabled ? 0 : 1,\n \"data-arrow\": true\n }, resolveSlotWithProps(arrowSlot, {\n collapsed\n }, () => {\n var _a;\n return [h(NBaseIcon, {\n clsPrefix: mergedClsPrefix\n }, {\n default: (_a = collapseSlots.expandIcon) !== null && _a !== void 0 ? _a : () => this.rtlEnabled ? h(ArrowLeftIcon, null) : h(ArrowRightIcon, null)\n })];\n })), arrowPlacement === 'left' && headerNode), resolveWrappedSlotWithProps(headerExtraSlot, {\n collapsed\n }, children => h(\"div\", {\n class: `${mergedClsPrefix}-collapse-item__header-extra`,\n onClick: this.handleClick,\n \"data-extra\": true\n }, children))), h(NCollapseItemContent, {\n clsPrefix: mergedClsPrefix,\n displayDirective: mergedDisplayDirective,\n show: !collapsed\n }, $slots));\n }\n});","export default {\n thPaddingSmall: '6px',\n thPaddingMedium: '12px',\n thPaddingLarge: '12px',\n tdPaddingSmall: '6px',\n tdPaddingMedium: '12px',\n tdPaddingLarge: '12px'\n};","import { composite } from 'seemly';\nimport sizeVariables from \"./_common.mjs\";\nimport { commonLight } from \"../../_styles/common/index.mjs\";\nexport const self = vars => {\n const {\n dividerColor,\n cardColor,\n modalColor,\n popoverColor,\n tableHeaderColor,\n tableColorStriped,\n textColor1,\n textColor2,\n borderRadius,\n fontWeightStrong,\n lineHeight,\n fontSizeSmall,\n fontSizeMedium,\n fontSizeLarge\n } = vars;\n return Object.assign(Object.assign({}, sizeVariables), {\n fontSizeSmall,\n fontSizeMedium,\n fontSizeLarge,\n lineHeight,\n borderRadius,\n borderColor: composite(cardColor, dividerColor),\n borderColorModal: composite(modalColor, dividerColor),\n borderColorPopover: composite(popoverColor, dividerColor),\n tdColor: cardColor,\n tdColorModal: modalColor,\n tdColorPopover: popoverColor,\n tdColorStriped: composite(cardColor, tableColorStriped),\n tdColorStripedModal: composite(modalColor, tableColorStriped),\n tdColorStripedPopover: composite(popoverColor, tableColorStriped),\n thColor: composite(cardColor, tableHeaderColor),\n thColorModal: composite(modalColor, tableHeaderColor),\n thColorPopover: composite(popoverColor, tableHeaderColor),\n thTextColor: textColor1,\n tdTextColor: textColor2,\n thFontWeight: fontWeightStrong\n });\n};\nconst tableLight = {\n name: 'Table',\n common: commonLight,\n self\n};\nexport default tableLight;","import { changeColor } from 'seemly';\nimport { checkboxLight } from \"../../checkbox/styles/index.mjs\";\nimport { emptyLight } from \"../../empty/styles/index.mjs\";\nimport { scrollbarLight } from \"../../_internal/scrollbar/styles/index.mjs\";\nimport { commonLight } from \"../../_styles/common/index.mjs\";\nimport { createTheme } from \"../../_mixins/use-theme.mjs\";\nexport const self = vars => {\n const {\n borderRadiusSmall,\n dividerColor,\n hoverColor,\n pressedColor,\n primaryColor,\n textColor3,\n textColor2,\n textColorDisabled,\n fontSize\n } = 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, {\n alpha: 0.1\n }),\n arrowColor: textColor3,\n nodeTextColor: textColor2,\n nodeTextColorDisabled: textColorDisabled,\n loadingColor: primaryColor,\n dropMarkColor: primaryColor,\n lineColor: dividerColor\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;","import { c, cB, cM, cNotM, insideModal, insidePopover } from \"../../../_utils/cssr/index.mjs\";\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/index.mjs\";\nimport { useRtl } from \"../../_mixins/use-rtl.mjs\";\nimport { createKey } from \"../../_utils/index.mjs\";\nimport { tableLight } from \"../styles/index.mjs\";\nimport style from \"./styles/index.cssr.mjs\";\nexport const tableProps = Object.assign(Object.assign({}, useTheme.props), {\n bordered: {\n type: Boolean,\n default: true\n },\n bottomBordered: {\n type: Boolean,\n default: true\n },\n singleLine: {\n type: Boolean,\n default: true\n },\n striped: Boolean,\n singleColumn: Boolean,\n size: {\n type: String,\n default: 'medium'\n }\n});\nexport default defineComponent({\n name: 'Table',\n props: tableProps,\n setup(props) {\n const {\n mergedClsPrefixRef,\n inlineThemeDisabled,\n mergedRtlRef\n } = 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 {\n size\n } = props;\n const {\n self: {\n borderColor,\n tdColor,\n tdColorModal,\n tdColorPopover,\n thColor,\n thColorModal,\n thColorPopover,\n thTextColor,\n tdTextColor,\n borderRadius,\n thFontWeight,\n lineHeight,\n borderColorModal,\n borderColorPopover,\n tdColorStriped,\n tdColorStripedModal,\n tdColorStripedPopover,\n [createKey('fontSize', size)]: fontSize,\n [createKey('tdPadding', size)]: tdPadding,\n [createKey('thPadding', size)]: thPadding\n },\n common: {\n cubicBezierEaseInOut\n }\n } = 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 ? useThemeClass('table', computed(() => {\n return props.size[0];\n }), cssVarsRef, props) : 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 {\n mergedClsPrefix\n } = this;\n (_a = this.onRender) === null || _a === void 0 ? void 0 : _a.call(this);\n return h(\"table\", {\n class: [`${mergedClsPrefix}-table`, this.themeClass, {\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\n }, this.$slots);\n }\n});","import { defineComponent, h } from 'vue';\nexport default defineComponent({\n name: 'Th',\n render() {\n return h(\"th\", null, this.$slots);\n }\n});","import { defineComponent, h } from 'vue';\nexport default defineComponent({\n name: 'Tr',\n render() {\n return h(\"tr\", null, this.$slots);\n }\n});","import { defineComponent, h } from 'vue';\nexport default defineComponent({\n name: 'Td',\n render() {\n return h(\"td\", null, this.$slots);\n }\n});","import { defineComponent, h } from 'vue';\nexport default defineComponent({\n name: 'Thead',\n render() {\n return h(\"thead\", null, this.$slots);\n }\n});","import { defineComponent, h } from 'vue';\nexport default defineComponent({\n name: 'Tbody',\n render() {\n return h(\"tbody\", null, this.$slots);\n }\n});","import { createInjectionKey } from \"../../_utils/index.mjs\";\nexport const treeSelectInjectionKey = createInjectionKey('n-tree-select');","import { createInjectionKey } from \"../../_utils/index.mjs\";\nexport const treeInjectionKey = createInjectionKey('n-tree');","import { h, defineComponent, inject } from 'vue';\nimport { SwitcherIcon } from \"../../_internal/icons/index.mjs\";\nimport { NIconSwitchTransition, NBaseLoading, NBaseIcon } from \"../../_internal/index.mjs\";\nimport { treeInjectionKey } from \"./interface.mjs\";\nexport default defineComponent({\n name: 'NTreeSwitcher',\n props: {\n clsPrefix: {\n type: String,\n required: true\n },\n indent: {\n type: Number,\n required: true\n },\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 {\n renderSwitcherIconRef\n } = inject(treeInjectionKey, null);\n return () => {\n const {\n clsPrefix,\n expanded,\n hide,\n indent,\n onClick\n } = props;\n return h(\"span\", {\n \"data-switcher\": true,\n class: [`${clsPrefix}-tree-node-switcher`, expanded && `${clsPrefix}-tree-node-switcher--expanded`, hide && `${clsPrefix}-tree-node-switcher--hide`],\n style: {\n width: `${indent}px`\n },\n onClick: onClick\n }, h(\"div\", {\n class: `${clsPrefix}-tree-node-switcher__icon`\n }, h(NIconSwitchTransition, null, {\n default: () => {\n if (props.loading) {\n return h(NBaseLoading, {\n clsPrefix: clsPrefix,\n key: \"loading\",\n radius: 85,\n strokeWidth: 20\n });\n }\n const {\n value: renderSwitcherIcon\n } = renderSwitcherIconRef;\n return renderSwitcherIcon ? renderSwitcherIcon({\n expanded: props.expanded,\n selected: props.selected,\n option: props.tmNode.rawNode\n }) : h(NBaseIcon, {\n clsPrefix: clsPrefix,\n key: \"switcher\"\n }, {\n default: () => h(SwitcherIcon, null)\n });\n }\n })));\n };\n }\n});","import { h, defineComponent, inject } from 'vue';\nimport { NCheckbox } from \"../../checkbox/index.mjs\";\nimport { treeInjectionKey } from \"./interface.mjs\";\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 {\n onCheck\n } = 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 {\n clsPrefix,\n mergedTheme,\n checked,\n indeterminate,\n disabled,\n focusable,\n indent,\n handleUpdateValue\n } = this;\n return h(\"span\", {\n class: [`${clsPrefix}-tree-node-checkbox`, this.right && `${clsPrefix}-tree-node-checkbox--right`],\n style: {\n width: `${indent}px`\n },\n \"data-checkbox\": true\n }, h(NCheckbox, {\n focusable: focusable,\n disabled: disabled,\n theme: mergedTheme.peers.Checkbox,\n themeOverrides: mergedTheme.peerOverrides.Checkbox,\n checked: checked,\n indeterminate: indeterminate,\n onUpdateChecked: handleUpdateValue\n }));\n }\n});","import { h, defineComponent, ref, inject } from 'vue';\nimport { render } from \"../../_utils/index.mjs\";\nimport { treeInjectionKey } from \"./interface.mjs\";\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 {\n renderLabelRef,\n renderPrefixRef,\n renderSuffixRef,\n labelFieldRef\n } =\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 {\n onClick\n } = props;\n if (onClick) 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 {\n clsPrefix,\n labelField,\n nodeProps,\n checked = false,\n selected = false,\n renderLabel,\n renderPrefix,\n renderSuffix,\n handleClick,\n onDragstart,\n tmNode: {\n rawNode,\n rawNode: {\n prefix,\n suffix,\n [labelField]: label\n }\n }\n } = this;\n return h(\"span\", Object.assign({}, nodeProps, {\n ref: \"selfRef\",\n class: [`${clsPrefix}-tree-node-content`, nodeProps === null || nodeProps === void 0 ? void 0 : nodeProps.class],\n onClick: handleClick,\n draggable: onDragstart === undefined ? undefined : true,\n onDragstart: onDragstart\n }), renderPrefix || prefix ? h(\"div\", {\n class: `${clsPrefix}-tree-node-content__prefix`\n }, renderPrefix ? renderPrefix({\n option: rawNode,\n selected,\n checked\n }) : render(prefix)) : null, h(\"div\", {\n class: `${clsPrefix}-tree-node-content__text`\n }, renderLabel ? renderLabel({\n option: rawNode,\n selected,\n checked\n }) : render(label)), renderSuffix || suffix ? h(\"div\", {\n class: `${clsPrefix}-tree-node-content__suffix`\n }, renderSuffix ? renderSuffix({\n option: rawNode,\n selected,\n checked\n }) : render(suffix)) : null);\n }\n});","import { h } from 'vue';\nexport function renderDropMark({\n position,\n offsetLevel,\n indent,\n el\n}) {\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 } 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 = position === 'before' ? 'translateY(-4px)' : 'translateY(4px)';\n }\n return h(\"div\", {\n style: style\n });\n}\nexport function defaultAllowDrop({\n dropPosition,\n node\n}) {\n if (node.isLeaf === false) return true;\n if (node.children) {\n return true;\n }\n return dropPosition !== 'inside';\n}","import { computed } from 'vue';\nimport { isBrowser } from \"../../_utils/index.mjs\";\nimport { happensIn } from 'seemly';\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 } 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 = '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 } 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) 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 } else {\n // It it is not visited path tail, use cloned node\n expandedKeys.push(key);\n const clonedNode = Object.assign(Object.assign({}, n), {\n [childrenField]: []\n });\n sibs.push(clonedNode);\n build(children, clonedNode[childrenField]);\n }\n } else {\n sibs.push(n);\n }\n });\n }\n build(tree, filteredTree);\n return {\n filteredTree,\n highlightKeySet,\n expandedKeys\n };\n}\nexport function treeGetClickTarget(e) {\n if (happensIn(e, 'checkbox')) {\n return 'checkbox';\n } else if (happensIn(e, 'switcher')) {\n return 'switcher';\n } else {\n return 'node';\n }\n}","import { h, inject, computed, defineComponent, ref, onMounted } from 'vue';\nimport { useMemo } from 'vooks';\nimport { happensIn, repeat } from 'seemly';\nimport { createDataKey } from \"../../_utils/index.mjs\";\nimport NTreeNodeSwitcher from \"./TreeNodeSwitcher.mjs\";\nimport NTreeNodeCheckbox from \"./TreeNodeCheckbox.mjs\";\nimport NTreeNodeContent from \"./TreeNodeContent.mjs\";\nimport { treeInjectionKey } from \"./interface.mjs\";\nimport { renderDropMark } from \"./dnd.mjs\";\nimport { isNodeDisabled } from \"./utils.mjs\";\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 {\n droppingNodeParentRef,\n droppingMouseNodeRef,\n draggingNodeRef,\n droppingPositionRef,\n droppingOffsetLevelRef,\n nodePropsRef,\n indentRef,\n blockLineRef,\n checkboxPlacementRef,\n checkOnClickRef,\n disabledFieldRef,\n showLineRef,\n renderSwitcherIconRef,\n overrideDefaultNodeClickBehaviorRef\n } = 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 {\n value: nodeProps\n } = nodePropsRef;\n if (!nodeProps) return undefined;\n return nodeProps({\n option: props.tmNode.rawNode\n });\n });\n // used for drag and drop\n const contentInstRef = ref(null);\n // must be non-reactive\n const contentElRef = {\n value: null\n };\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 callback = () => {\n const {\n tmNode\n } = props;\n if (!tmNode.isLeaf && !tmNode.shallowLoaded) {\n if (!NTree.loadingKeysRef.value.has(tmNode.key)) {\n NTree.loadingKeysRef.value.add(tmNode.key);\n } else {\n return;\n }\n const {\n onLoadRef: {\n value: onLoad\n }\n } = NTree;\n if (onLoad) {\n void onLoad(tmNode.rawNode).then(value => {\n if (value !== false) {\n NTree.handleSwitcherClick(tmNode);\n }\n }).finally(() => {\n NTree.loadingKeysRef.value.delete(tmNode.key);\n });\n }\n } else {\n NTree.handleSwitcherClick(tmNode);\n }\n };\n if (renderSwitcherIconRef.value) {\n // if renderSwitcherIcon is set, icon dom may be altered before event\n // bubbles to parent dom, so that target check fails. Call it in next\n // event loop so that event bubble phase is finishes.\n setTimeout(callback, 0);\n } else {\n callback();\n }\n }\n const selectableRef = useMemo(() => !nodeIsDisabledRef.value && NTree.selectableRef.value && (NTree.internalTreeSelect ? NTree.mergedCheckStrategyRef.value !== 'child' || NTree.multipleRef.value && NTree.cascadeRef.value || props.tmNode.isLeaf : true));\n const checkableRef = useMemo(() => NTree.checkableRef.value && (NTree.cascadeRef.value || NTree.mergedCheckStrategyRef.value !== 'child' || props.tmNode.isLeaf));\n const checkedRef = useMemo(() => NTree.displayedCheckedKeysRef.value.includes(props.tmNode.key));\n const mergedCheckOnClickRef = useMemo(() => {\n const {\n value: checkable\n } = checkableRef;\n if (!checkable) return false;\n const {\n value: checkOnClick\n } = checkOnClickRef;\n const {\n tmNode\n } = 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 {\n value: expandOnClick\n } = NTree.expandOnClickRef;\n const {\n value: selectable\n } = selectableRef;\n const {\n value: mergedCheckOnClick\n } = mergedCheckOnClickRef;\n if (!selectable && !expandOnClick && !mergedCheckOnClick) return;\n if (happensIn(e, 'checkbox') || happensIn(e, 'switcher')) return;\n const {\n tmNode\n } = 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 handleNodeClick(e) {\n var _a, _b;\n if (happensIn(e, 'checkbox') || happensIn(e, 'switcher')) return;\n if (!disabledRef.value) {\n const overrideDefaultNodeClickBehavior = overrideDefaultNodeClickBehaviorRef.value;\n let shouldOverride = false;\n if (overrideDefaultNodeClickBehavior) {\n switch (overrideDefaultNodeClickBehavior({\n option: props.tmNode.rawNode\n })) {\n case 'toggleCheck':\n shouldOverride = true;\n handleCheck(!checkedRef.value);\n break;\n case 'toggleSelect':\n shouldOverride = true;\n NTree.handleSelect(props.tmNode);\n break;\n case 'toggleExpand':\n shouldOverride = true;\n handleSwitcherClick();\n shouldOverride = true;\n break;\n case 'none':\n shouldOverride = true;\n shouldOverride = true;\n return;\n case 'default':\n default:\n break;\n }\n }\n if (!shouldOverride) {\n _handleClick(e);\n }\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 handleContentClick(e) {\n if (blockLineRef.value) return;\n handleNodeClick(e);\n }\n function handleLineClick(e) {\n if (!blockLineRef.value) return;\n handleNodeClick(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 {\n clsPrefix\n } = props;\n const {\n value: indent\n } = 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\", {\n class: `${clsPrefix}-tree-node-indent`\n }, h(\"div\", {\n style: {\n width: `${indent}px`\n }\n })));\n } else {\n indentNodes.push(h(\"div\", {\n class: [`${clsPrefix}-tree-node-indent`, `${clsPrefix}-tree-node-indent--show-line`]\n }, h(\"div\", {\n style: {\n width: `${indent}px`\n }\n })));\n }\n cursor = cursor.parent;\n }\n return indentNodes.reverse();\n } else {\n return repeat(props.tmNode.level, h(\"div\", {\n class: `${props.clsPrefix}-tree-node-indent`\n }, h(\"div\", {\n style: {\n width: `${indent}px`\n }\n })));\n }\n });\n return {\n showDropMark: useMemo(() => {\n const {\n value: draggingNode\n } = draggingNodeRef;\n if (!draggingNode) return;\n const {\n value: droppingPosition\n } = droppingPositionRef;\n if (!droppingPosition) return;\n const {\n value: droppingMouseNode\n } = droppingMouseNodeRef;\n if (!droppingMouseNode) {\n return;\n }\n const {\n tmNode\n } = props;\n if (tmNode.key === droppingMouseNode.key) return true;\n return false;\n }),\n showDropMarkAsParent: useMemo(() => {\n const {\n value: droppingNodeParent\n } = droppingNodeParentRef;\n if (!droppingNodeParent) return false;\n const {\n tmNode\n } = props;\n const {\n value: droppingPosition\n } = 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 {\n tmNode,\n clsPrefix,\n checkable,\n expandOnClick,\n selectable,\n selected,\n checked,\n highlight,\n draggable,\n blockLine,\n indent,\n indentNodes,\n disabled,\n pending,\n internalScrollable,\n nodeProps,\n checkboxPlacement\n } = this;\n // drag start not inside\n // it need to be append to node itself, not wrapper\n const dragEventHandlers = draggable && !disabled ? {\n onDragenter: this.handleDragEnter,\n onDragleave: this.handleDragLeave,\n onDragend: this.handleDragEnd,\n onDrop: this.handleDrop,\n onDragover: this.handleDragOver\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, {\n indent: indent,\n right: checkboxOnRight,\n focusable: this.checkboxFocusable,\n disabled: disabled || this.checkboxDisabled,\n clsPrefix: clsPrefix,\n checked: this.checked,\n indeterminate: this.indeterminate,\n onCheck: this.handleCheck\n }) : null;\n return h(\"div\", Object.assign({\n class: `${clsPrefix}-tree-node-wrapper`\n }, dragEventHandlers), h(\"div\", Object.assign({}, blockLine ? nodeProps : undefined, {\n class: [`${clsPrefix}-tree-node`, {\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 }, nodeProps === null || nodeProps === void 0 ? void 0 : nodeProps.class],\n \"data-key\": dataKey,\n draggable: draggable && blockLine,\n onClick: this.handleLineClick,\n onDragstart: draggable && blockLine && !disabled ? this.handleDragStart : undefined\n }), indentNodes, tmNode.isLeaf && this.showLine ? h(\"div\", {\n class: [`${clsPrefix}-tree-node-indent`, `${clsPrefix}-tree-node-indent--show-line`, tmNode.isLeaf && `${clsPrefix}-tree-node-indent--is-leaf`, tmNode.isLastChild && `${clsPrefix}-tree-node-indent--last-child`]\n }, h(\"div\", {\n style: {\n width: `${indent}px`\n }\n })) : h(NTreeNodeSwitcher, {\n clsPrefix: clsPrefix,\n expanded: this.expanded,\n selected: selected,\n loading: this.loading,\n hide: tmNode.isLeaf,\n tmNode: this.tmNode,\n indent: indent,\n onClick: this.handleSwitcherClick\n }), !checkboxOnRight ? checkboxNode : null, h(NTreeNodeContent, {\n ref: \"contentInstRef\",\n clsPrefix: clsPrefix,\n checked: checked,\n selected: selected,\n onClick: this.handleContentClick,\n nodeProps: blockLine ? undefined : nodeProps,\n onDragstart: draggable && !blockLine && !disabled ? this.handleDragStart : undefined,\n tmNode: tmNode\n }), draggable ? this.showDropMark ? 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 }) : this.showDropMarkAsParent ? 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 }) : null : null, checkboxOnRight ? checkboxNode : null));\n }\n});\nexport default TreeNode;","import { inject, ref } from 'vue';\nimport { treeSelectInjectionKey } from \"../../tree-select/src/interface.mjs\";\nexport function useKeyboard({\n props,\n fNodesRef,\n mergedExpandedKeysRef,\n mergedSelectedKeysRef,\n mergedCheckedKeysRef,\n handleCheck,\n handleSelect,\n handleSwitcherClick\n}) {\n const {\n value: mergedSelectedKeys\n } = 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 ? treeSelectInjection.pendingNodeKeyRef : ref(mergedSelectedKeys.length ? mergedSelectedKeys[mergedSelectedKeys.length - 1] : null);\n function handleKeydown(e) {\n var _a;\n if (!props.keyboard) return {\n enterBehavior: null\n };\n const {\n value: pendingNodeKey\n } = pendingNodeKeyRef;\n let enterBehavior = null;\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 {\n value: fNodes\n } = 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 } else {\n const {\n value: fNodes\n } = fNodesRef;\n let fIndex = fNodes.findIndex(tmNode => tmNode.key === pendingNodeKey);\n if (!~fIndex) return {\n enterBehavior: null\n };\n if (e.key === 'Enter') {\n const tmNode = fNodes[fIndex];\n enterBehavior = ((_a = props.overrideDefaultNodeClickBehavior) === null || _a === void 0 ? void 0 : _a.call(props, {\n option: tmNode.rawNode\n })) || null;\n switch (enterBehavior) {\n case 'toggleCheck':\n handleCheck(tmNode, !mergedCheckedKeysRef.value.includes(tmNode.key));\n break;\n case 'toggleSelect':\n handleSelect(tmNode);\n break;\n case 'toggleExpand':\n handleSwitcherClick(tmNode);\n break;\n case 'none':\n break;\n case 'default':\n default:\n enterBehavior = 'default';\n handleSelect(tmNode);\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 } 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 } else if (e.key === 'ArrowLeft') {\n const pendingNode = fNodes[fIndex];\n if (pendingNode.isLeaf || !mergedExpandedKeysRef.value.includes(pendingNodeKey)) {\n const parentTmNode = pendingNode.getParent();\n if (parentTmNode) {\n pendingNodeKeyRef.value = parentTmNode.key;\n }\n } else {\n handleSwitcherClick(pendingNode);\n }\n } else if (e.key === 'ArrowRight') {\n const pendingNode = fNodes[fIndex];\n if (pendingNode.isLeaf) return {\n enterBehavior: null\n };\n if (!mergedExpandedKeysRef.value.includes(pendingNodeKey)) {\n handleSwitcherClick(pendingNode);\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 return {\n enterBehavior\n };\n }\n return {\n pendingNodeKeyRef,\n handleKeydown\n };\n}","import { h, defineComponent } from 'vue';\nimport { pxfy } from 'seemly';\nimport FadeInExpandTransition from \"../../_internal/fade-in-expand-transition/index.mjs\";\nimport TreeNode from \"./TreeNode.mjs\";\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 {\n clsPrefix\n } = this;\n return h(FadeInExpandTransition, {\n onAfterEnter: this.onAfterEnter,\n appear: true,\n reverse: this.mode === 'collapse'\n }, {\n default: () => h(\"div\", {\n class: [`${clsPrefix}-tree-motion-wrapper`, `${clsPrefix}-tree-motion-wrapper--${this.mode}`],\n style: {\n height: pxfy(this.height)\n }\n }, this.nodes.map(node => h(TreeNode, {\n clsPrefix: clsPrefix,\n tmNode: node\n })))\n });\n }\n});","import { c, cB, cE, cM, cNotM } from \"../../../_utils/cssr/index.mjs\";\nimport { iconSwitchTransition } from \"../../../_styles/transitions/icon-switch.cssr.mjs\";\nimport { fadeInHeightExpandTransition } from \"../../../_styles/transitions/fade-in-height-expand.cssr.mjs\";\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\n// --n-line-color\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('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('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-line-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-line-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) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\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.mjs\";\nimport { useConfig, useTheme, useThemeClass, useRtl } from \"../../_mixins/index.mjs\";\nimport { call, createDataKey, resolveSlot, warn, warnOnce } from \"../../_utils/index.mjs\";\nimport { NxScrollbar } from \"../../_internal/index.mjs\";\nimport { treeLight } from \"../styles/index.mjs\";\nimport { NEmpty } from \"../../empty/index.mjs\";\nimport NTreeNode from \"./TreeNode.mjs\";\nimport { keysWithFilter, emptyImage, filterTree, isNodeDisabled, useMergedCheckStrategy } from \"./utils.mjs\";\nimport { useKeyboard } from \"./keyboard.mjs\";\nimport { treeInjectionKey } from \"./interface.mjs\";\nimport MotionWrapper from \"./MotionWrapper.mjs\";\nimport { defaultAllowDrop } from \"./dnd.mjs\";\nimport style from \"./styles/index.cssr.mjs\";\nexport function createTreeMateOptions(keyField, childrenField, disabledField, getChildren) {\n const settledGetChildren = getChildren || (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 overrideDefaultNodeClickBehavior: Function\n};\nexport const treeProps = Object.assign(Object.assign(Object.assign(Object.assign({}, useTheme.props), {\n accordion: Boolean,\n showIrrelevantNodes: {\n type: Boolean,\n default: true\n },\n data: {\n type: Array,\n default: () => []\n },\n expandOnDragenter: {\n type: Boolean,\n default: true\n },\n expandOnClick: Boolean,\n checkOnClick: {\n type: [Boolean, Function],\n default: false\n },\n cancelable: {\n type: Boolean,\n default: true\n },\n checkable: Boolean,\n draggable: Boolean,\n blockNode: Boolean,\n blockLine: Boolean,\n showLine: Boolean,\n disabled: Boolean,\n checkedKeys: Array,\n defaultCheckedKeys: {\n type: Array,\n default: () => []\n },\n selectedKeys: Array,\n defaultSelectedKeys: {\n type: Array,\n default: () => []\n },\n multiple: Boolean,\n pattern: {\n type: String,\n default: ''\n },\n onLoad: Function,\n cascade: Boolean,\n selectable: {\n type: Boolean,\n default: true\n },\n scrollbarProps: Object,\n indent: {\n type: Number,\n default: 24\n },\n allowDrop: {\n type: Function,\n default: defaultAllowDrop\n },\n animated: {\n type: Boolean,\n default: true\n },\n checkboxPlacement: {\n type: String,\n default: 'left'\n },\n virtualScroll: Boolean,\n watchProps: Array,\n renderLabel: Function,\n renderPrefix: Function,\n renderSuffix: Function,\n nodeProps: Function,\n keyboard: {\n type: Boolean,\n default: true\n },\n getChildren: Function,\n onDragenter: [Function, Array],\n onDragleave: [Function, Array],\n onDragend: [Function, Array],\n onDragstart: [Function, Array],\n onDragover: [Function, Array],\n onDrop: [Function, Array],\n onUpdateCheckedKeys: [Function, Array],\n 'onUpdate:checkedKeys': [Function, Array],\n onUpdateSelectedKeys: [Function, Array],\n 'onUpdate:selectedKeys': [Function, Array]\n}), treeSharedProps), {\n // internal props for tree-select\n internalTreeSelect: Boolean,\n internalScrollable: Boolean,\n internalScrollablePadding: String,\n // use it to display\n internalRenderEmpty: Function,\n internalHighlightKeySet: Object,\n internalUnifySelectCheck: Boolean,\n internalCheckboxFocusable: {\n type: Boolean,\n default: true\n },\n internalFocusable: {\n // Make tree-select take over keyboard operations\n type: Boolean,\n default: true\n },\n checkStrategy: {\n type: String,\n default: 'all'\n },\n /**\n * @deprecated\n */\n leafOnly: Boolean\n});\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 {\n mergedClsPrefixRef,\n inlineThemeDisabled,\n mergedRtlRef\n } = 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 {\n filter\n } = props;\n if (filter) return filter;\n const {\n labelField\n } = props;\n return (pattern, node) => {\n if (!pattern.length) 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 {\n pattern\n } = 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 ? props.data : filteredTreeInfoRef.value.filteredTree, createTreeMateOptions(props.keyField, props.childrenField, props.disabledField, props.getChildren)));\n const treeSelectInjection = inject(treeSelectInjectionKey, null);\n const dataTreeMateRef = props.internalTreeSelect ? treeSelectInjection.dataTreeMate : displayTreeMateRef;\n const {\n watchProps\n } = 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 } 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 {\n indeterminateKeys\n } = props;\n if (indeterminateKeys !== undefined) 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 } 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 ? dataTreeMateRef.value.getNonLeafKeys() : keys === undefined ? props.defaultExpandedKeys : 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 } 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 {\n pendingNodeKeyRef,\n handleKeydown\n } = useKeyboard({\n props,\n mergedCheckedKeysRef,\n mergedSelectedKeysRef,\n fNodesRef,\n mergedExpandedKeysRef,\n handleCheck,\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 || 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 {\n value: droppingNode\n } = droppingNodeRef;\n if (!droppingNode) 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 let isDataReset = false;\n watch(toRef(props, 'data'), () => {\n isDataReset = true;\n void nextTick(() => {\n isDataReset = false;\n });\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 {\n expandedKeys: expandedKeysAfterChange,\n highlightKeySet\n } = keysWithFilter(props.data, props.pattern, props.keyField, props.childrenField, mergedFilterRef.value);\n uncontrolledHighlightKeySetRef.value = highlightKeySet;\n disableExpandAnimationForOneTick();\n doUpdateExpandedKeys(expandedKeysAfterChange, getOptionsByKeys(expandedKeysAfterChange), {\n node: null,\n action: 'filter'\n });\n } else {\n uncontrolledHighlightKeySetRef.value = new Set();\n }\n } else {\n if (!value.length) {\n if (memoizedExpandedKeys !== undefined) {\n disableExpandAnimationForOneTick();\n doUpdateExpandedKeys(memoizedExpandedKeys, getOptionsByKeys(memoizedExpandedKeys), {\n node: null,\n action: 'filter'\n });\n }\n } else {\n if (!oldValue.length) {\n memoizedExpandedKeys = mergedExpandedKeysRef.value;\n }\n const {\n expandedKeys\n } = 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 {\n onLoad\n } = 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 {\n value: loadingKeys\n } = 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 } catch (loadError) {\n console.error(loadError);\n resetDragExpandState();\n }\n loadingKeys.delete(node.key);\n }\n });\n }\n watchEffect(() => {\n var _a;\n const {\n value: displayTreeMate\n } = displayTreeMateRef;\n if (!displayTreeMate) return;\n const {\n getNode\n } = 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 if (isDataReset) {\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) 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) 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 {\n virtualScroll\n } = 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 } else {\n baseExpandedKeys = baseExpandedKeys.filter(key => key !== removedKey);\n }\n }\n aipRef.value = true;\n afNodesRef.value = displayTreeMateRef.value.getFlattenedNodes(baseExpandedKeys);\n if (addedKey !== null) {\n const expandedNodeIndex = afNodesRef.value.findIndex(node => node.key === addedKey);\n if (~expandedNodeIndex) {\n const children =\n // 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 ? expandedChildren.length * nodeHeight : undefined,\n nodes: virtualScroll ? expandedChildren.slice(0, viewportItemCount) : 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) 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 ? collapsedChildren.length * nodeHeight : undefined,\n nodes: virtualScroll ? collapsedChildren.slice(0, viewportItemCount) : collapsedChildren\n });\n }\n }\n });\n const getFIndexRef = computed(() => {\n return createIndexGetter(fNodesRef.value);\n });\n const mergedFNodesRef = computed(() => {\n if (aipRef.value) return afNodesRef.value;else return fNodesRef.value;\n });\n function syncScrollbar() {\n const {\n value: scrollbarInst\n } = scrollbarInstRef;\n if (scrollbarInst) 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 {\n getNode\n } = dataTreeMateRef.value;\n return keys.map(key => {\n var _a;\n return ((_a = getNode(key)) === null || _a === void 0 ? void 0 : _a.rawNode) || null;\n });\n }\n function doUpdateExpandedKeys(value, option, meta) {\n const {\n 'onUpdate:expandedKeys': _onUpdateExpandedKeys,\n onUpdateExpandedKeys\n } = 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 {\n 'onUpdate:checkedKeys': _onUpdateCheckedKeys,\n onUpdateCheckedKeys\n } = 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 {\n 'onUpdate:indeterminateKeys': _onUpdateIndeterminateKeys,\n onUpdateIndeterminateKeys\n } = 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 {\n 'onUpdate:selectedKeys': _onUpdateSelectedKeys,\n onUpdateSelectedKeys\n } = 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 {\n onDragenter\n } = props;\n if (onDragenter) call(onDragenter, info);\n }\n function doDragLeave(info) {\n const {\n onDragleave\n } = props;\n if (onDragleave) call(onDragleave, info);\n }\n function doDragEnd(info) {\n const {\n onDragend\n } = props;\n if (onDragend) call(onDragend, info);\n }\n function doDragStart(info) {\n const {\n onDragstart\n } = props;\n if (onDragstart) call(onDragstart, info);\n }\n function doDragOver(info) {\n const {\n onDragover\n } = props;\n if (onDragover) call(onDragover, info);\n }\n function doDrop(info) {\n const {\n onDrop\n } = props;\n if (onDrop) 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 {\n checkedKeys,\n indeterminateKeys\n } = 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) return;\n const {\n key\n } = node;\n const {\n value: mergedExpandedKeys\n } = 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 } 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(({\n key\n }) => key));\n nextKeys = mergedExpandedKeys.filter(expandedKey => {\n return !siblingKeySet.has(expandedKey);\n });\n nextKeys.push(key);\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) 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 {\n value: {\n checkedKeys,\n indeterminateKeys\n }\n } = checkedStatusRef;\n if (props.multiple) {\n handleCheck(node, !(checkedKeys.includes(node.key) || indeterminateKeys.includes(node.key)));\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 } 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 } 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 } 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) return;\n nodeKeyToBeExpanded = node.key;\n const expand = () => {\n if (nodeKeyToBeExpanded !== node.key) return;\n const {\n value: droppingMouseNode\n } = droppingMouseNodeRef;\n if (droppingMouseNode && droppingMouseNode.key === node.key && !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 } else {\n expandTimerId = window.setTimeout(() => {\n expand();\n }, 1000);\n }\n }\n // Dnd\n function handleDragEnter({\n event,\n node\n }) {\n // node should be a tmNode\n if (!props.draggable || props.disabled || isNodeDisabled(node, props.disabledField)) {\n return;\n }\n handleDragOver({\n event,\n node\n }, false);\n doDragEnter({\n event,\n node: node.rawNode\n });\n }\n function handleDragLeave({\n event,\n node\n }) {\n if (!props.draggable || props.disabled || isNodeDisabled(node, props.disabledField)) {\n return;\n }\n doDragLeave({\n event,\n node: node.rawNode\n });\n }\n function handleDragLeaveTree(e) {\n if (e.target !== e.currentTarget) return;\n resetDropState();\n }\n // Dragend is ok, we don't need to add global listener to reset drag status\n function handleDragEnd({\n event,\n node\n }) {\n resetDndState();\n if (!props.draggable || props.disabled || isNodeDisabled(node, props.disabledField)) {\n return;\n }\n doDragEnd({\n event,\n node: node.rawNode\n });\n }\n function handleDragStart({\n event,\n node\n }) {\n var _a;\n if (!props.draggable || props.disabled || 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({\n event,\n node: node.rawNode\n });\n }\n function handleDragOver({\n event,\n node\n }, emit = true) {\n var _a;\n if (!props.draggable || props.disabled || isNodeDisabled(node, props.disabledField)) {\n return;\n }\n const {\n value: draggingNode\n } = draggingNodeRef;\n if (!draggingNode) return;\n const {\n allowDrop,\n indent\n } = props;\n if (emit) doDragOver({\n event,\n node: node.rawNode\n });\n // Update dropping node\n const el = event.currentTarget;\n const {\n height: elOffsetHeight,\n top: elClientTop\n } = 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 } else if (eventOffsetY >= elOffsetHeight - 8) {\n mousePosition = 'after';\n } else {\n mousePosition = 'inside';\n }\n } else {\n if (eventOffsetY <= elOffsetHeight / 2) {\n mousePosition = 'before';\n } else {\n mousePosition = 'after';\n }\n }\n const {\n value: getFindex\n } = 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 } else {\n if (mousePosition === 'before') {\n if (node.isFirstChild) {\n finalDropNode = node;\n finalDropPosition = 'before';\n } else {\n finalDropNode = fNodesRef.value[hoverNodeFIndex - 1];\n finalDropPosition = 'after';\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 && 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 } 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 && draggingNode.isLastChild && 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 &&\n // divide by 2 to make it easier to trigger\n finalDropNode.parent !== null && finalDropNode.isLastChild && offsetLevel < 1) {\n offset -= indent;\n offsetLevel += 1;\n finalDropNode = finalDropNode.parent;\n }\n droppingOffsetLevelRef.value = offsetLevel;\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) || finalDropPosition === 'inside' && ((_a = draggingNode.parent) === null || _a === void 0 ? void 0 : _a.key) === finalDropNode.key) {\n if (draggingNode.key === droppingMouseNode.key && 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 } 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 } 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 && nodeKeyToBeExpanded !== finalDropNode.key) {\n resetDndState();\n return;\n }\n } else {\n // Bailout 5\n // never expands on drag\n if (!finalDropNode.shallowLoaded) {\n resetDndState();\n return;\n }\n }\n } else {\n resetDragExpandState();\n }\n } else {\n if (finalDropPosition !== 'inside') {\n resetDragExpandState();\n }\n }\n }\n droppingPositionRef.value = finalDropPosition;\n droppingNodeRef.value = finalDropNode;\n }\n function handleDrop({\n event,\n node,\n dropPosition\n }) {\n if (!props.draggable || props.disabled || isNodeDisabled(node, props.disabledField)) {\n return;\n }\n const {\n value: draggingNode\n } = draggingNodeRef;\n const {\n value: droppingNode\n } = droppingNodeRef;\n const {\n value: droppingPosition\n } = 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({\n includeDisabled: true\n });\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({\n includeDisabled: true\n });\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 {\n value: scrollbarInst\n } = 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 } else {\n const {\n value: selfEl\n } = selfElRef;\n if (selfEl === null || selfEl === void 0 ? void 0 : selfEl.contains(e.relatedTarget)) return;\n pendingNodeKeyRef.value = null;\n }\n }\n watch(pendingNodeKeyRef, value => {\n var _a, _b;\n if (value === null) return;\n if (props.virtualScroll) {\n (_a = virtualListInstRef.value) === null || _a === void 0 ? void 0 : _a.scrollTo({\n key: value\n });\n } else if (props.internalScrollable) {\n const {\n value: scrollbarInst\n } = scrollbarInstRef;\n if (scrollbarInst === null) return;\n const targetEl = (_b = scrollbarInst.contentRef) === null || _b === void 0 ? void 0 : _b.querySelector(`[data-key=\"${createDataKey(value)}\"]`);\n if (!targetEl) 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 overrideDefaultNodeClickBehaviorRef: toRef(props, 'overrideDefaultNodeClickBehavior'),\n handleSwitcherClick,\n handleDragEnd,\n handleDragEnter,\n handleDragLeave,\n handleDragStart,\n handleDrop,\n handleDragOver,\n handleSelect,\n handleCheck\n });\n function scrollTo(options, y) {\n var _a, _b;\n if (typeof options === 'number') {\n (_a = virtualListInstRef.value) === null || _a === void 0 ? void 0 : _a.scrollTo(options, y || 0);\n } else {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n (_b = virtualListInstRef.value) === null || _b === void 0 ? void 0 : _b.scrollTo(options);\n }\n }\n const exposedMethods = {\n handleKeydown,\n scrollTo,\n getCheckedData: () => {\n if (!props.checkable) return {\n keys: [],\n options: []\n };\n const {\n checkedKeys\n } = checkedStatusRef.value;\n return {\n keys: checkedKeys,\n options: getOptionsByKeys(checkedKeys)\n };\n },\n getIndeterminateData: () => {\n if (!props.checkable) return {\n keys: [],\n options: []\n };\n const {\n indeterminateKeys\n } = checkedStatusRef.value;\n return {\n keys: indeterminateKeys,\n options: getOptionsByKeys(indeterminateKeys)\n };\n }\n };\n const cssVarsRef = computed(() => {\n const {\n common: {\n cubicBezierEaseInOut\n },\n self: {\n fontSize,\n nodeBorderRadius,\n nodeColorHover,\n nodeColorPressed,\n nodeColorActive,\n arrowColor,\n loadingColor,\n nodeTextColor,\n nodeTextColorDisabled,\n dropMarkColor,\n nodeWrapperPadding,\n nodeHeight,\n lineHeight,\n lineColor\n }\n } = 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-line-color': lineColor\n };\n });\n const themeClassHandle = inlineThemeDisabled ? useThemeClass('tree', undefined, cssVarsRef, props) : undefined;\n return Object.assign(Object.assign({}, exposedMethods), {\n mergedClsPrefix: mergedClsPrefixRef,\n mergedTheme: themeRef,\n rtlEnabled: rtlEnabledRef,\n fNodes: mergedFNodesRef,\n aip: aipRef,\n selfElRef,\n virtualListInstRef,\n scrollbarInstRef,\n handleFocusout,\n handleDragLeaveTree,\n handleScroll,\n getScrollContainer,\n getScrollContent,\n handleAfterEnter,\n handleResize,\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 {\n fNodes,\n internalRenderEmpty\n } = this;\n if (!fNodes.length && internalRenderEmpty) {\n return internalRenderEmpty();\n }\n const {\n mergedClsPrefix,\n blockNode,\n blockLine,\n draggable,\n disabled,\n internalFocusable,\n checkable,\n handleKeydown,\n rtlEnabled,\n handleFocusout,\n scrollbarProps\n } = this;\n const mergedFocusable = internalFocusable && !disabled;\n const tabindex = mergedFocusable ? '0' : undefined;\n const treeClass = [`${mergedClsPrefix}-tree`, rtlEnabled && `${mergedClsPrefix}-tree--rtl`, checkable && `${mergedClsPrefix}-tree--checkable`, (blockLine || blockNode) && `${mergedClsPrefix}-tree--block-node`, blockLine && `${mergedClsPrefix}-tree--block-line`];\n const createNode = tmNode => {\n return '__motion' in tmNode ? h(MotionWrapper, {\n height: tmNode.height,\n nodes: tmNode.nodes,\n clsPrefix: mergedClsPrefix,\n mode: tmNode.mode,\n onAfterEnter: this.handleAfterEnter\n }) : h(NTreeNode, {\n key: tmNode.key,\n tmNode: tmNode,\n clsPrefix: mergedClsPrefix\n });\n };\n if (this.virtualScroll) {\n const {\n mergedTheme,\n internalScrollablePadding\n } = this;\n const padding = getPadding(internalScrollablePadding || '0');\n return h(NxScrollbar, Object.assign({}, scrollbarProps, {\n ref: \"scrollbarInstRef\",\n onDragleave: draggable ? this.handleDragLeaveTree : undefined,\n container: this.getScrollContainer,\n content: this.getScrollContent,\n class: treeClass,\n theme: mergedTheme.peers.Scrollbar,\n themeOverrides: mergedTheme.peerOverrides.Scrollbar,\n tabindex: tabindex,\n onKeydown: mergedFocusable ? handleKeydown : undefined,\n onFocusout: mergedFocusable ? handleFocusout : undefined\n }), {\n default: () => {\n var _a;\n (_a = this.onRender) === null || _a === void 0 ? void 0 : _a.call(this);\n return !fNodes.length ? resolveSlot(this.$slots.empty, () => [h(NEmpty, {\n class: `${mergedClsPrefix}-tree__empty`,\n theme: this.mergedTheme.peers.Empty,\n themeOverrides: this.mergedTheme.peerOverrides.Empty\n })]) : h(VVirtualList, {\n ref: \"virtualListInstRef\",\n items: this.fNodes,\n itemSize: depx(mergedTheme.self.nodeHeight),\n ignoreItemResize: this.aip,\n paddingTop: padding.top,\n paddingBottom: padding.bottom,\n class: this.themeClass,\n style: [this.cssVars, {\n paddingLeft: padding.left,\n paddingRight: padding.right\n }],\n onScroll: this.handleScroll,\n onResize: this.handleResize,\n showScrollbar: false,\n itemResizable: true\n }, {\n default: ({\n item\n }) => createNode(item)\n });\n }\n });\n }\n const {\n internalScrollable\n } = 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, {\n class: treeClass,\n tabindex: tabindex,\n onKeydown: mergedFocusable ? handleKeydown : undefined,\n onFocusout: mergedFocusable ? handleFocusout : undefined,\n style: this.cssVars,\n contentStyle: {\n padding: this.internalScrollablePadding\n }\n }), {\n default: () => h(\"div\", {\n onDragleave: draggable ? this.handleDragLeaveTree : undefined,\n ref: \"selfElRef\"\n }, this.fNodes.map(createNode))\n });\n } else {\n return h(\"div\", {\n class: treeClass,\n tabindex: tabindex,\n ref: \"selfElRef\",\n style: this.cssVars,\n onKeydown: mergedFocusable ? handleKeydown : undefined,\n onFocusout: mergedFocusable ? handleFocusout : undefined,\n onDragleave: draggable ? this.handleDragLeaveTree : undefined\n }, !fNodes.length ? resolveSlot(this.$slots.empty, () => [h(NEmpty, {\n class: `${mergedClsPrefix}-tree__empty`,\n theme: this.mergedTheme.peers.Empty,\n themeOverrides: this.mergedTheme.peerOverrides.Empty\n })]) : fNodes.map(createNode));\n }\n }\n});","import {\n shallowRef,\n shallowReactive,\n onMounted,\n onUnmounted,\n watch,\n} from 'vue';\n\nexport const useDragMove = (xFilter: (x: number) => boolean) => {\n const target = shallowRef<HTMLElement>();\n const prevOffset = {\n x: 0,\n y: 0,\n };\n\n const offset = shallowReactive({ ...prevOffset });\n let prevEv: PointerEvent | undefined = undefined;\n const preventSelection = (ev: Event) => {\n if (prevEv) {\n ev.preventDefault();\n }\n };\n const startMove = (ev: PointerEvent) => {\n prevEv = ev;\n prevOffset.x = offset.x;\n prevOffset.y = offset.y;\n };\n const move = (ev: PointerEvent) => {\n if (!prevEv || !target.value) return;\n\n const dx = ev.clientX - prevEv.clientX; // ev.movementX;\n const dy = ev.clientY - prevEv.clientY; //ev.movementY;\n\n if (xFilter(dx)) {\n offset.x = prevOffset.x + dx;\n }\n offset.y = prevOffset.y + dy;\n };\n const endMove = () => {\n prevEv = undefined;\n };\n const windowEndMove = () => {\n if (!target.value || !prevEv) return;\n endMove();\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 }\n };\n onMounted(() => {\n window.addEventListener('pointermove', move);\n window.addEventListener('pointerup', windowEndMove);\n document.addEventListener('selectstart', preventSelection);\n });\n onUnmounted(() => {\n window.removeEventListener('pointermove', move);\n window.removeEventListener('pointerup', windowEndMove);\n document.removeEventListener('selectstart', preventSelection);\n endMove();\n });\n watch(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 });\n onUnmounted(() => {\n if (!target.value) return;\n target.value.removeEventListener('pointerdown', startMove);\n target.value.removeEventListener('pointerup', endMove);\n });\n return {\n target,\n offset,\n };\n};\n","<script setup lang=\"ts\">\nimport { useDragMove } from '@/utils/draggable';\nimport {\n computed,\n onMounted,\n onUnmounted,\n shallowReactive,\n shallowRef,\n watch,\n} from 'vue';\n\nconst props = withDefaults(\n defineProps<{\n initialValue: {\n left?: number;\n right?: number;\n top?: number;\n bottom?: number;\n\n width?: number;\n };\n minWidth?: number;\n sizeDraggable?: boolean;\n disabled?: boolean;\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 leftDragBar = useDragMove((dx) => {\n const w =\n (props.initialValue.width || 0) +\n rightDragBar.offset.x +\n -leftDragBar.offset.x -\n dx;\n return (props.minWidth || 0) < w;\n});\nconst rightDragBar = useDragMove((dx) => {\n const w =\n (props.initialValue.width || 0) +\n rightDragBar.offset.x +\n dx -\n leftDragBar.offset.x;\n\n return (props.minWidth || 0) < w;\n});\n\nconst offset = shallowReactive({ ...prevOffset });\nconst currentStyle = computed(() => {\n const width =\n (props.initialValue.width || 0) +\n rightDragBar.offset.x -\n leftDragBar.offset.x;\n const widthStyle = props.initialValue.width ? `width:${width}px;` : ``;\n const yStyle = isTop ? `top:${offset.y}px;` : `bottom:${offset.y}px;`;\n if (isLeft) {\n return `left:${offset.x - leftDragBar.offset.x}px;` + yStyle + widthStyle;\n } else {\n return `right:${offset.x - rightDragBar.offset.x}px;` + yStyle + widthStyle;\n }\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 transition = `transition-top,bottom,left,right-500`;\nconst windowEndMove = () => {\n if (!target.value || !prevEv) return;\n endMove();\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\n const boxDiv = box.value;\n if (boxDiv) {\n boxDiv.classList.add(transition);\n setTimeout(() => {\n boxDiv.classList.remove(transition);\n }, 550);\n }\n }\n};\n\n// move 事件应该给 window. 如果给目标元素,容易出现鼠标移速过快无法跟随的bug\nonMounted(() => {\n window.addEventListener('pointermove', move);\n window.addEventListener('pointerup', windowEndMove);\n document.addEventListener('selectstart', preventSelection);\n});\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=\"#app\" :disabled=\"disabled\">\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\n <template v-if=\"sizeDraggable\">\n <div\n :ref=\"leftDragBar.target\"\n absolute\n right-full\n top-0\n bottom-0\n w-5px\n cursor-ew-resize\n ></div>\n <div\n :ref=\"rightDragBar.target\"\n absolute\n left-full\n top-0\n bottom-0\n w-5px\n cursor-ew-resize\n ></div>\n </template>\n </div>\n </Teleport>\n</template>\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 attrTip: Record<\n string,\n { show?: () => unknown; desc: string; type: 'info' | 'quickFind' }\n> = {\n _id: {\n desc: `虚拟属性(真机不可用):生成快照访问节点顺序`,\n type: 'info',\n },\n _pid: { desc: `虚拟属性(真机不可用):父节点的 _id`, type: 'info' },\n depth: { desc: `使用此属性在某些应用上可能造成无限节点错误`, type: 'info' },\n id: {\n desc: `可快速查找`,\n type: 'quickFind',\n show() {\n return (\n (props.focusNode.quickFind || props.focusNode.idQf) &&\n props.focusNode.attr.id\n );\n },\n },\n vid: {\n desc: `可快速查找`,\n type: 'quickFind',\n show() {\n return (\n (props.focusNode.quickFind || props.focusNode.idQf) &&\n props.focusNode.attr.vid\n );\n },\n },\n text: {\n desc: `可快速查找`,\n type: 'quickFind',\n show() {\n return (\n (props.focusNode.quickFind || props.focusNode.textQf) &&\n props.focusNode.attr.text\n );\n },\n },\n};\n\nconst lenAttrNames = [`text`, `desc`];\nconst attrs = computed(() => {\n return Object.entries(props.focusNode.attr)\n .map(([name, value]) => {\n const show = attrTip[name]?.show;\n const attr = {\n name,\n value,\n desc: JSON.stringify(value),\n tip: (show ? show() : true) ? attrTip[name] : undefined,\n };\n if (lenAttrNames.includes(name)) {\n return [\n attr,\n {\n name: name + `.length`,\n value: (value as string)?.length ?? null,\n desc: JSON.stringify((value as string)?.length ?? null),\n tip: undefined,\n },\n ];\n }\n return attr;\n })\n .flat();\n});\n</script>\n\n<template>\n <DraggableCard\n :initialValue=\"{ top: 75, right: 10 }\"\n v-slot=\"{ onRef }\"\n class=\"box-shadow-dim\"\n >\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.desc}`)\">\n <div v-if=\"attrx.tip\" flex justify-between items-center>\n <div>\n {{ attrx.name }}\n </div>\n <NTooltip>\n <template #trigger>\n <NIcon size=\"16\">\n <svg viewBox=\"0 0 28 28\" v-if=\"attrx.tip.type == 'info'\">\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 </svg>\n <svg\n viewBox=\"0 0 1024 1024\"\n v-else-if=\"attrx.tip.type == 'quickFind'\"\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 fill=\"currentColor\"\n ></path>\n </svg>\n </NIcon>\n </template>\n {{ attrx.tip.desc }}\n </NTooltip>\n </div>\n <template v-else>\n {{ attrx.name }}\n </template>\n </NTd>\n <NTd>\n <NEllipsis\n class=\"w-[calc(var(--gkd-width)*0.12)]\"\n :class=\"{\n 'text-left direction-rtl': attrx.name == 'id',\n }\"\n >\n {{ attrx.desc }}\n </NEllipsis>\n </NTd>\n </NTr>\n </NTbody>\n </NTable>\n </DraggableCard>\n</template>\n","<script setup lang=\"ts\">\nimport { findNodesByXy } from '@/utils/node';\nimport { buildEmptyFn } from '@/utils/others';\nimport type { RawNode, Snapshot } from '@/utils/types';\nimport { refDebounced, useWindowSize } from '@vueuse/core';\nimport { computed, shallowRef } 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 onUpdateFocusNodes?: (data: {\n nodes: RawNode[];\n position: { x: number; y: number };\n }) => void;\n }>(),\n {\n onUpdateFocusNode: buildEmptyFn,\n onUpdateFocusNodes: buildEmptyFn,\n },\n);\nconst windowSize = useWindowSize();\nconst debouncedSize = refDebounced(\n computed(() => {\n windowSize.width.value;\n windowSize.height.value;\n return Math.random();\n }),\n 300,\n);\n\nconst imgRef = shallowRef<HTMLImageElement>();\nconst imgLoadTime = shallowRef(0);\n\nconst clickImg = (ev: MouseEvent) => {\n if (!props.rootNode) return;\n const img = imgRef.value;\n if (!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 results = findNodesByXy(props.snapshot.nodes, ox, oy);\n if (results.length === 0) return;\n if (results.length === 1) {\n props.onUpdateFocusNode(results[0]);\n } else {\n props.onUpdateFocusNode(results[0]);\n props.onUpdateFocusNodes({ nodes: results, position: { x: ox, y: oy } });\n }\n};\n\nconst percent = (n: number) => {\n return `${n * 100}%`;\n};\nconst positionStyle = computed(() => {\n debouncedSize.value; // 在窗口大小变化后触发更新\n imgLoadTime.value; // 在图片加载完成后触发更新\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 boxHoverPosition = computed(() => {\n const attr = props.focusNode?.attr;\n if (!attr) {\n return;\n }\n const { ox, oy } = hoverPosition.value;\n return {\n left: ox - attr.left,\n right: attr.right - ox,\n top: oy - attr.top,\n bottom: attr.bottom - oy,\n };\n});\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=\"clickImg\"\n cursor-crosshair\n h-full\n object-contain\n class=\"max-w-[calc(var(--gkd-width)*0.35)]\"\n @mouseover=\"imgHover = true\"\n @mouseleave=\"imgHover = false\"\n @mousemove=\"imgMove\"\n @load=\"imgLoadTime = Date.now()\"\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 p-1px\n z-1\n text-13px\n class=\"leading-[1] bg-[rgba(256,256,256,0.7)]\"\n >\n {{ `${hoverPosition.ox.toFixed(0)},${hoverPosition.oy.toFixed(0)}` }}\n </div>\n <div\n v-if=\"boxHoverPosition\"\n absolute\n left-2px\n bottom-2px\n p-1px\n z-1\n text-12px\n class=\"leading-[1] bg-[rgba(256,256,256,0.7)]\"\n flex\n flex-col\n flex-items-center\n >\n <div>{{ boxHoverPosition.top.toFixed(0) }}</div>\n <div>\n {{\n boxHoverPosition.left.toFixed(0) +\n ',' +\n boxHoverPosition.right.toFixed(0)\n }}\n </div>\n <div>{{ boxHoverPosition.bottom.toFixed(0) }}</div>\n </div>\n <div\n class=\"top-[calc(50%-1px)] bg-[length:10px_1px]\"\n absolute\n left-0\n right-0\n h-1px\n bg-repeat-x\n mix-blend-difference\n style=\"\n background-image: linear-gradient(\n to left,\n transparent 0%,\n transparent 50%,\n #fff 50%,\n #fff 100%\n );\n background-position-x: 1.5px;\n \"\n ></div>\n <div\n class=\"left-[calc(50%-1px)] bg-[length:1px_10px]\"\n absolute\n top-0\n bottom-0\n w-1px\n bg-repeat-y\n mix-blend-difference\n style=\"\n background-image: linear-gradient(\n to top,\n transparent 0%,\n transparent 50%,\n #fff 50%,\n #fff 100%\n );\n background-position-y: 1.5px;\n \"\n ></div>\n </div>\n </div>\n</template>\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction percentToByte(p) {\n return String.fromCharCode(parseInt(p.slice(1), 16));\n}\nfunction encode(str) {\n return btoa(encodeURIComponent(str).replace(/%[0-9A-F]{2}/g, percentToByte));\n}\nexports.encode = encode;\nfunction byteToPercent(b) {\n return `%${`00${b.charCodeAt(0).toString(16)}`.slice(-2)}`;\n}\nfunction decode(str) {\n return decodeURIComponent(Array.from(atob(str), byteToPercent).join(\"\"));\n}\nexports.decode = decode;\n//# sourceMappingURL=browser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst universal_base64_1 = require(\"universal-base64\");\nfunction decode(str) {\n return universal_base64_1.decode(str.replace(/\\-/g, \"+\").replace(/_/g, \"/\"));\n}\nexports.decode = decode;\nfunction encode(str) {\n return universal_base64_1.encode(str)\n .replace(/\\//g, \"_\")\n .replace(/\\+/g, \"-\")\n .replace(/=+$/, \"\");\n}\nexports.encode = encode;\n//# sourceMappingURL=index.js.map","import { useWindowSize } from '@vueuse/core';\nimport { computed } from 'vue';\n\nconst windowSize = useWindowSize();\nexport const vw = computed(() => windowSize.width.value / 100);\n// const vh = computed(() => windowSize.width.value / 100);\n\n// --gkd-width: max(1200px, 100vw);\nexport const gkdWidth = computed(() => Math.max(1200, windowSize.width.value));\n\n// --gkd-height: max(700px, 100vh);\nexport const gkdHeight = computed(() => Math.max(700, windowSize.height.value));\n","<script setup lang=\"ts\">\nimport { message } from '@/utils/discrete';\nimport { errorTry, errorWrap } from '@/utils/error';\nimport { getAppInfo, getNodeLabel } from '@/utils/node';\nimport { buildEmptyFn, copy } from '@/utils/others';\nimport type { Selector } from '@/utils/selector';\nimport { parseSelector, wasmLoadTask } from '@/utils/selector';\nimport { githubJpgStorage, importStorage } from '@/utils/storage';\nimport type { RawNode, Snapshot } from '@/utils/types';\nimport { getImportUrl, githubUrlToSelfUrl } from '@/utils/url';\nimport dayjs from 'dayjs';\nimport JSON5 from 'json5';\nimport {\n NButton,\n NButtonGroup,\n NCollapse,\n NCollapseItem,\n NIcon,\n NInput,\n NInputGroup,\n NRadio,\n NRadioGroup,\n NSpace,\n} from 'naive-ui';\nimport * as base64url from 'universal-base64url';\nimport { computed, onMounted, shallowReactive, shallowRef } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\nimport DraggableCard from './DraggableCard.vue';\nimport { gkdWidth, vw } from '@/utils/size';\n\nconst router = useRouter();\nconst route = useRoute();\n\nconst props = withDefaults(\n defineProps<{\n snapshot: Snapshot;\n rootNode: RawNode;\n focusNode?: RawNode;\n onUpdateFocusNode?: (data: RawNode) => void;\n onUpdateTrack?: (track: { selector: Selector; nodes: RawNode[] }) => void;\n }>(),\n {\n onUpdateFocusNode: buildEmptyFn,\n onUpdateTrack: buildEmptyFn,\n },\n);\n\nconst selectorText = shallowRef(``);\ntype SearchResult =\n | {\n key: number;\n selector: string;\n nodes: RawNode[];\n }\n | {\n key: number;\n selector: Selector;\n nodes: RawNode[][];\n };\nconst selectorResults = shallowReactive<SearchResult[]>([]);\nconst expandedKeys = shallowRef<number[]>([]);\nconst searchSelector = (text: string) => {\n const selector = errorWrap(\n () => parseSelector(text),\n (e) => {\n if (typeof e == 'string') {\n return e;\n }\n return `非法选择器`;\n },\n );\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.querySelectorTrackAll(props.rootNode);\n if (results.length == 0) {\n message.success(`没有选择到节点`);\n return;\n }\n message.success(`选择到 ${results.length} 个节点`);\n selectorResults.unshift({ selector, nodes: results, key: Date.now() });\n return results.length;\n};\nconst searchString = (text: string) => {\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({\n selector: text,\n nodes: results,\n key: Date.now(),\n });\n return results.length;\n};\nconst refreshExpandedKeys = () => {\n const newResult = selectorResults[0];\n\n const newNode = newResult.nodes[0];\n if (!Array.isArray(newNode)) {\n props.onUpdateFocusNode(newNode);\n } else if (typeof newResult.selector == 'object' && Array.isArray(newNode)) {\n props.onUpdateFocusNode(newNode[newResult.selector.trackIndex]);\n }\n const allKeys = new Set(selectorResults.map((s) => s.key));\n const newKeys = expandedKeys.value.filter((k) => allKeys.has(k));\n newKeys.push(newResult.key);\n expandedKeys.value = newKeys;\n};\nconst searchBySelector = errorTry(() => {\n const text = selectorText.value.trim();\n if (!text) return;\n if (enableSearchBySelector.value) {\n if (!searchSelector(text)) return;\n } else {\n if (!searchString(text)) return;\n }\n refreshExpandedKeys();\n});\n\nonMounted(async () => {\n await wasmLoadTask;\n let count = 0;\n if (route.query.gkd) {\n count += searchSelector(base64url.decode(route.query.gkd as string)) || 0;\n }\n if (route.query.str) {\n count += searchString(route.query.str as string) || 0;\n }\n if (count > 0) {\n refreshExpandedKeys();\n }\n});\n\nconst generateRules = errorTry(\n async (result: { key: number; selector: Selector; nodes: RawNode[][] }) => {\n let jpgUrl = githubJpgStorage[props.snapshot.id];\n if (jpgUrl) {\n jpgUrl = githubUrlToSelfUrl(jpgUrl);\n }\n const importId = importStorage[props.snapshot.id];\n const zipUrl = importId ? getImportUrl(importId) : undefined;\n\n const s = result.selector;\n const t = result.nodes[0][0];\n\n const quickFind = [\n (t.quickFind ?? t.idQf) && t.attr.id && s.qfIdValue,\n (t.quickFind ?? t.idQf) && t.attr.vid && s.qfVidValue,\n (t.quickFind ?? t.textQf) && t.attr.text && s.qfTextValue,\n ].some(Boolean);\n const rule = {\n id: props.snapshot.appId,\n name: getAppInfo(props.snapshot).name,\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 quickFind: quickFind || undefined,\n activityIds: props.snapshot.activityId,\n matches: s.toString(),\n exampleUrls: jpgUrl,\n snapshotUrls: zipUrl,\n },\n ],\n },\n ],\n };\n\n copy(JSON5.stringify(rule, undefined, 2));\n },\n);\nconst enableSearchBySelector = shallowRef(true);\nconst hasZipId = computed(() => {\n return importStorage[props.snapshot.id];\n});\nconst shareResult = (result: SearchResult) => {\n if (!hasZipId.value) return;\n const importUrl = new URL(getImportUrl(importStorage[props.snapshot.id]));\n if (typeof result.selector == 'object') {\n importUrl.searchParams.set(\n 'gkd',\n base64url.encode(result.selector.toString()),\n );\n } else {\n importUrl.searchParams.set('str', result.selector.toString());\n }\n copy(importUrl.toString());\n};\n</script>\n<template>\n <DraggableCard\n :initialValue=\"{\n top: 75,\n right: Math.max(315, 12 * vw + 135),\n width: Math.max(480, gkdWidth * 0.3),\n }\"\n :minWidth=\"300\"\n sizeDraggable\n v-slot=\"{ onRef }\"\n class=\"z-1 box-shadow-dim\"\n >\n <div bg-white b-1px b-solid b-gray-200 rounded-4px p-8px>\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 viewBox=\"0 0 32 32\">\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 v-model:expandedNames=\"expandedKeys\">\n <NCollapseItem\n v-for=\"(result, index) in selectorResults\"\n :key=\"result.key\"\n :name=\"result.key\"\n >\n <template #header>\n <span\n v-if=\"result.nodes.length > 1\"\n underline\n decoration-1\n m-r-4px\n title=\"查询数量\"\n >\n {{ result.nodes.length }}\n </span>\n <span\n break-all\n :title=\"\n typeof result.selector == 'object' ? `选择器` : `搜索字符`\n \"\n >\n {{ result.selector.toString() }}\n </span>\n </template>\n <template #header-extra>\n <NButton\n size=\"small\"\n v-if=\"\n typeof result.selector == 'object' && result.selector.canCopy\n \"\n @click.stop=\"\n // @ts-ignore\n generateRules(result)\n \"\n title=\"复制规则\"\n >\n <template #icon>\n <NIcon>\n <svg viewBox=\"0 0 24 24\">\n <path\n d=\"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </NIcon>\n </template>\n </NButton>\n <div p-l-4px></div>\n <NButton\n v-if=\"hasZipId\"\n size=\"small\"\n :title=\"\n typeof result.selector == 'object'\n ? `复制查询链接`\n : `复制搜索链接`\n \"\n @click.stop=\"shareResult(result)\"\n >\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 24 24\"\n >\n <path\n d=\"M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81c1.66 0 3-1.34 3-3s-1.34-3-3-3s-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65c0 1.61 1.31 2.92 2.92 2.92s2.92-1.31 2.92-2.92s-1.31-2.92-2.92-2.92z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </NIcon>\n </template>\n </NButton>\n <div p-l-4px></div>\n <NButton\n size=\"small\"\n @click.stop=\"selectorResults.splice(index, 1)\"\n title=\"删除记录\"\n >\n <template #icon>\n <NIcon>\n <svg viewBox=\"0 0 24 24\">\n <g fill=\"none\">\n <path\n d=\"M12 1.75a3.25 3.25 0 0 1 3.245 3.066L15.25 5h5.25a.75.75 0 0 1 .102 1.493L20.5 6.5h-.796l-1.28 13.02a2.75 2.75 0 0 1-2.561 2.474l-.176.006H8.313a2.75 2.75 0 0 1-2.714-2.307l-.023-.174L4.295 6.5H3.5a.75.75 0 0 1-.743-.648L2.75 5.75a.75.75 0 0 1 .648-.743L3.5 5h5.25A3.25 3.25 0 0 1 12 1.75zm6.197 4.75H5.802l1.267 12.872a1.25 1.25 0 0 0 1.117 1.122l.127.006h7.374c.6 0 1.109-.425 1.225-1.002l.02-.126L18.196 6.5zM13.75 9.25a.75.75 0 0 1 .743.648L14.5 10v7a.75.75 0 0 1-1.493.102L13 17v-7a.75.75 0 0 1 .75-.75zm-3.5 0a.75.75 0 0 1 .743.648L11 10v7a.75.75 0 0 1-1.493.102L9.5 17v-7a.75.75 0 0 1 .75-.75zm1.75-6a1.75 1.75 0 0 0-1.744 1.606L10.25 5h3.5A1.75 1.75 0 0 0 12 3.25z\"\n fill=\"currentColor\"\n ></path>\n </g></svg\n ></NIcon>\n </template>\n </NButton>\n </template>\n <NSpace\n style=\"max-height: 400px; overflow-y: scroll; padding-bottom: 10px\"\n >\n <template\n v-if=\"\n typeof result.selector == 'string' ||\n result.selector.tracks.length <= 1\n \"\n >\n <NButton\n v-for=\"resultNode in result.nodes.map((r) =>\n Array.isArray(r) ? r[0] : r,\n )\"\n :key=\"resultNode.id\"\n @click=\"onUpdateFocusNode(resultNode)\"\n size=\"small\"\n :class=\"{ 'color-[#00F]': resultNode === focusNode }\"\n >\n {{ getNodeLabel(resultNode) }}\n </NButton>\n </template>\n <template v-else>\n <NButtonGroup\n v-for=\"(trackNodes, index) in result.nodes.map((r) =>\n Array.isArray(r) ? r : [r],\n )\"\n :key=\"index\"\n >\n <NButton\n size=\"small\"\n @click=\"\n onUpdateTrack({\n nodes: trackNodes,\n selector: result.selector,\n })\n \"\n >\n <NIcon>\n <svg viewBox=\"0 0 24 24\">\n <path\n fill=\"currentColor\"\n d=\"M5 21V8.825Q4.125 8.5 3.563 7.738T3 6q0-1.25.875-2.125T6 3q1.25 0 2.125.875T9 6q0 .975-.562 1.738T7 8.825V19h4V3h8v12.175q.875.325 1.438 1.088T21 18q0 1.25-.875 2.125T18 21q-1.25 0-2.125-.875T15 18q0-.975.563-1.75T17 15.175V5h-4v16zM6 7q.425 0 .713-.288T7 6q0-.425-.288-.712T6 5q-.425 0-.712.288T5 6q0 .425.288.713T6 7m12 12q.425 0 .713-.288T19 18q0-.425-.288-.712T18 17q-.425 0-.712.288T17 18q0 .425.288.713T18 19m0-1\"\n />\n </svg>\n </NIcon>\n </NButton>\n <NButton\n @click=\"\n onUpdateFocusNode(trackNodes[result.selector.trackIndex])\n \"\n size=\"small\"\n :class=\"{\n 'color-[#00F]':\n trackNodes[result.selector.trackIndex] === focusNode,\n }\"\n >\n {{ getNodeLabel(trackNodes[result.selector.trackIndex]) }}\n </NButton>\n </NButtonGroup>\n </template>\n </NSpace>\n </NCollapseItem>\n </NCollapse>\n </div>\n </DraggableCard>\n</template>\n","<script setup lang=\"tsx\">\nimport {\n getAppInfo,\n getDevice,\n getGkdAppInfo,\n getNodeLabel,\n} from '@/utils/node';\nimport { buildEmptyFn, copy, delay } from '@/utils/others';\nimport type { RawNode, Snapshot } from '@/utils/types';\nimport {\n NEllipsis,\n NTable,\n NTbody,\n NTd,\n NTh,\n NThead,\n NTr,\n NTree,\n} from 'naive-ui';\nimport type { TreeInst } from 'naive-ui';\nimport { nextTick, shallowRef, watch } from 'vue';\nimport type { HTMLAttributes } from 'vue';\n\nconst props = withDefaults(\n defineProps<{\n snapshot: Snapshot;\n rootNode: RawNode;\n focusNode?: RawNode;\n focusCount: number;\n onUpdateFocusNode?: (data: RawNode) => void;\n }>(),\n {\n onUpdateFocusNode: buildEmptyFn,\n },\n);\n\nconst expandedKeys = shallowRef<number[]>([]);\nwatch([() => props.focusNode, () => props.focusCount], async () => {\n if (!props.focusNode) return;\n const key = props.focusNode.id;\n nextTick().then(async () => {\n await delay(100);\n if (key === props.focusNode?.id) {\n treeRef.value?.scrollTo({ key, behavior: 'smooth', debounce: true });\n }\n });\n let parent = props.focusNode.parent;\n if (!parent) {\n return;\n }\n const s = new Set(expandedKeys.value);\n while (parent) {\n s.add(parent.id);\n parent = parent.parent;\n }\n if (\n s.size == expandedKeys.value.length &&\n expandedKeys.value.every((v) => s.has(v))\n ) {\n return;\n }\n expandedKeys.value = [...s];\n});\n\nconst treeRef = shallowRef<TreeInst>();\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 const qf = info.option.idQf || info.option.textQf || info.option.quickFind;\n return {\n onClick: () => {\n props.onUpdateFocusNode(info.option);\n },\n style: {\n color: info.option.id == props.focusNode?.id ? `#00F` : undefined,\n fontWeight: qf ? `bold` : undefined,\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 :themeOverrides=\"{\n thPaddingSmall: '2px 6px',\n tdPaddingSmall: '2px 6px',\n }\"\n >\n <NThead>\n <NTr>\n <NTh> 设备 </NTh>\n <NTh> GKD </NTh>\n <NTh> 应用名称 </NTh>\n <NTh> 版本名称 </NTh>\n <NTh> 版本代码 </NTh>\n <NTh> 系统应用 </NTh>\n <NTh> 应用ID </NTh>\n <NTh> 界面ID </NTh>\n <NTh> 操作 </NTh>\n </NTr>\n </NThead>\n <NTbody>\n <NTr>\n <NTd class=\"whitespace-nowrap w-0\">\n {{\n `${getDevice(snapshot).manufacturer} Android ${\n getDevice(snapshot).release || ``\n }`\n }}\n </NTd>\n <NTd class=\"whitespace-nowrap\">\n {{ getGkdAppInfo(snapshot).versionName }}\n </NTd>\n <NTd\n class=\"whitespace-nowrap\"\n @click=\"copy(getAppInfo(snapshot).name)\"\n >\n <NEllipsis>\n {{ getAppInfo(snapshot).name }}\n </NEllipsis>\n </NTd>\n <NTd\n class=\"whitespace-nowrap\"\n @click=\"copy(getAppInfo(snapshot).versionName)\"\n >\n <NEllipsis>\n {{ getAppInfo(snapshot).versionName }}\n </NEllipsis>\n </NTd>\n <NTd\n class=\"whitespace-nowrap\"\n @click=\"copy(getAppInfo(snapshot).versionCode.toString())\"\n >\n <NEllipsis>\n {{ getAppInfo(snapshot).versionCode }}\n </NEllipsis>\n </NTd>\n <NTd class=\"whitespace-nowrap\">\n {{ getAppInfo(snapshot).isSystem ? `是` : `否` }}\n </NTd>\n <NTd\n class=\"whitespace-nowrap max-w-[max(12vw,180px)]\"\n @click=\"copy(snapshot.appId)\"\n >\n <NEllipsis>\n {{ snapshot.appId }}\n </NEllipsis>\n </NTd>\n <NTd\n @click=\"copy(snapshot.activityId)\"\n class=\"break-words max-w-[max(15vw,200px)] text-left direction-rtl\"\n >\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 keyField=\"id\"\n v-model:expandedKeys=\"expandedKeys\"\n :data=\"[rootNode as any]\"\n :filter=\"(treeFilter as any)\"\n :nodeProps=\"(treeNodeProps as any)\"\n :renderLabel=\"(renderLabel as any)\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport { getNodeLabel } from '@/utils/node';\nimport { buildEmptyFn } from '@/utils/others';\nimport type { RawNode } from '@/utils/types';\nimport { NCard, NSpace, NButton } from 'naive-ui';\nimport DraggableCard from './DraggableCard.vue';\n\nconst props = withDefaults(\n defineProps<{\n focusNode?: RawNode;\n focusNodes?: {\n nodes: RawNode[];\n position: { x: number; y: number };\n };\n onUpdateFocusNode?: (data: RawNode) => void;\n onClose?: () => void;\n }>(),\n {\n onUpdateFocusNode: buildEmptyFn,\n onUpdateTrack: buildEmptyFn,\n onClose: buildEmptyFn,\n },\n);\nconst _1vw = document.documentElement.scrollWidth / 100;\nconst left = _1vw * 25.5;\n</script>\n<template>\n <DraggableCard\n :initialValue=\"{ top: 215, left }\"\n v-slot=\"{ onRef }\"\n class=\"z-2 box-shadow-dim w-420px\"\n :disabled=\"!focusNodes\"\n >\n <NCard v-if=\"focusNodes\" size=\"small\" closable @close=\"onClose\">\n <template #header>\n <div :ref=\"onRef\" cursor-move>\n 位置\n <span bg=\"#eee\" px-2px>{{\n `${focusNodes.position.x.toFixed(0)},${focusNodes.position.y.toFixed()}`\n }}</span>\n 存在 {{ focusNodes.nodes.length }} 个层叠节点\n </div>\n </template>\n <NSpace\n style=\"max-height: 400px; overflow-y: scroll; padding-bottom: 10px\"\n >\n <NButton\n v-for=\"resultNode in focusNodes.nodes\"\n :key=\"resultNode.id\"\n @click=\"onUpdateFocusNode(resultNode)\"\n size=\"small\"\n :class=\"{ 'color-[#00F]': resultNode === focusNode }\"\n >\n {{ getNodeLabel(resultNode) }}\n </NButton>\n </NSpace>\n </NCard>\n </DraggableCard>\n</template>\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 { getAppInfo, listToTree } from '@/utils/node';\nimport { loadingBar, message } from '@/utils/discrete';\nimport { delay } from '@/utils/others';\nimport {\n snapshotStorage,\n screenshotStorage,\n importStorage,\n settingsStorage,\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 {\n detectSnapshot,\n exportSnapshotAsJpgUrl,\n exportSnapshotAsImportId,\n} from '@/utils/export';\nimport type { Selector } from '@/utils/selector';\nimport { NModal, NIcon } from 'naive-ui';\nimport MultiFocusCard from '@/components/MultiFocusCard.vue';\nimport { watch, defineAsyncComponent } from 'vue';\nimport { onMounted } from 'vue';\nconst AsyncTrackGraph = (() => {\n const loader = () => import('@/components/TrackGraph.vue');\n setTimeout(loader, 3000);\n return defineAsyncComponent(loader);\n})();\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\nonMounted(async () => {\n if (!Number.isSafeInteger(+snapshotId.value)) {\n message.error('非法快照ID');\n return;\n }\n const localSnapshot = await snapshotStorage.getItem(snapshotId.value);\n if (!localSnapshot) {\n loadingBar.start();\n try {\n const importId: number | null =\n importStorage[snapshotId.value] ||\n (await fetch(\n 'https://detect.gkd.li/api/getImportId?id=' + snapshotId.value,\n ).then((r) => r.json()));\n if (importId && Number.isSafeInteger(importId)) {\n router.replace({\n path: '/i/' + importId,\n query: route.query,\n });\n return;\n }\n } finally {\n loadingBar.finish();\n }\n message.error(`快照数据缺失`);\n return;\n }\n setTimeout(() => {\n const importId = importStorage[localSnapshot.id];\n if (importId) {\n detectSnapshot(importId);\n }\n }, 1000);\n if (gmOk() && settingsStorage.autoUploadImport) {\n // 静默生成 jpg/zip\n setTimeout(async () => {\n exportSnapshotAsJpgUrl(localSnapshot);\n if (!importStorage[localSnapshot.id]) {\n exportSnapshotAsImportId(\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 = '快照-' + getAppInfo(localSnapshot).name || localSnapshot.appId;\n if (!focusNode.value) {\n focusNode.value = rootNode.value;\n }\n});\n\nconst rootNode = shallowRef<RawNode>();\nconst focusNode = shallowRef<RawNode>();\nconst focusCount = shallowRef(0);\n\nconst onDelete = async () => {\n message.success(`删除成功,即将回到首页`);\n await delay(2000);\n router.replace({\n path: `/`,\n });\n};\n\nconst track = shallowRef<{\n selector: Selector;\n nodes: RawNode[];\n}>();\nconst trackVisible = shallowRef(false);\nwatchEffect(() => {\n if (track.value) {\n trackVisible.value = true;\n }\n});\nconst multiFocus = shallowRef<{\n nodes: RawNode[];\n position: { x: number; y: number };\n}>();\nwatch(\n () => focusNode.value,\n (newNode) => {\n const nodes = multiFocus.value?.nodes;\n if (!nodes) return;\n if (!newNode || !nodes.includes(newNode)) {\n multiFocus.value = undefined;\n }\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=\"\n focusNode = $event;\n focusCount++;\n \"\n @updateFocusNodes=\"multiFocus = $event\"\n />\n <WindowCard\n v-if=\"snapshot && rootNode\"\n :rootNode=\"rootNode\"\n :snapshot=\"snapshot\"\n :focusNode=\"focusNode\"\n @updateFocusNode=\"focusNode = $event\"\n :focusCount=\"focusCount\"\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 && snapshot\"\n :snapshot=\"snapshot\"\n :rootNode=\"rootNode\"\n :focusNode=\"focusNode\"\n @updateFocusNode=\"\n focusNode = $event;\n focusCount++;\n \"\n @updateTrack=\"track = $event\"\n />\n <MultiFocusCard\n :focusNode=\"focusNode\"\n :focusNodes=\"multiFocus\"\n @updateFocusNode=\"\n focusNode = $event;\n focusCount++;\n \"\n @close=\"multiFocus = undefined\"\n />\n <NModal\n v-model:show=\"trackVisible\"\n preset=\"dialog\"\n title=\"选择器路径视图\"\n class=\"min-w-[calc(var(--gkd-width)*0.4)]\"\n @afterLeave=\"track = undefined\"\n >\n <template #icon>\n <NIcon>\n <svg viewBox=\"0 0 24 24\">\n <path\n fill=\"currentColor\"\n d=\"M5 21V8.825Q4.125 8.5 3.563 7.738T3 6q0-1.25.875-2.125T6 3q1.25 0 2.125.875T9 6q0 .975-.562 1.738T7 8.825V19h4V3h8v12.175q.875.325 1.438 1.088T21 18q0 1.25-.875 2.125T18 21q-1.25 0-2.125-.875T15 18q0-.975.563-1.75T17 15.175V5h-4v16zM6 7q.425 0 .713-.288T7 6q0-.425-.288-.712T6 5q-.425 0-.712.288T5 6q0 .425.288.713T6 7m12 12q.425 0 .713-.288T19 18q0-.425-.288-.712T18 17q-.425 0-.712.288T17 18q0 .425.288.713T18 19m0-1\"\n />\n </svg>\n </NIcon>\n </template>\n <div v-if=\"track\" class=\"gkd_code py-2px px-4px rounded-2px bg-[#eee]\">\n {{ track.selector.toString() }}\n </div>\n <AsyncTrackGraph v-if=\"track\" :track=\"track\" />\n <div opacity-75 text-12px>*为简化视图已隐藏部分节点</div>\n </NModal>\n </div>\n</template>\n"],"file":"assets/SnapshotPage-CO6Z0AlC.js"}