@gkd-kit/inspect 0.0.1740478645328 → 0.0.1740482998257
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.
- package/dist/assets/{ActionCard.vue_vue_type_script_setup_true_lang-D6uGSuV_.js → ActionCard.vue_vue_type_script_setup_true_lang-DacJ-UuI.js} +4 -4
- package/dist/assets/{ActionCard.vue_vue_type_script_setup_true_lang-D6uGSuV_.js.map → ActionCard.vue_vue_type_script_setup_true_lang-DacJ-UuI.js.map} +1 -1
- package/dist/assets/DevicePage-DnuVnPW5.js +49 -0
- package/dist/assets/{DevicePage-22pCriWH.js.map → DevicePage-DnuVnPW5.js.map} +1 -1
- package/dist/assets/{HomePage-BXuOF8zt.js → HomePage-C7CH_Ajg.js} +5 -5
- package/dist/assets/{HomePage-BXuOF8zt.js.map → HomePage-C7CH_Ajg.js.map} +1 -1
- package/dist/assets/ImportPage-BWc_h_CQ.js +2 -0
- package/dist/assets/{ImportPage-BdtL0i84.js.map → ImportPage-BWc_h_CQ.js.map} +1 -1
- package/dist/assets/{Input-BFF_YDmk.js → Input-CXshwgiN.js} +2 -2
- package/dist/assets/{Input-BFF_YDmk.js.map → Input-CXshwgiN.js.map} +1 -1
- package/dist/assets/SelectorPage-DycNBpQf.js +2 -0
- package/dist/assets/SelectorPage-DycNBpQf.js.map +1 -0
- package/dist/assets/SnapshotPage-CozGdn53.js +272 -0
- package/dist/assets/SnapshotPage-CozGdn53.js.map +1 -0
- package/dist/assets/{SvgPage-T42iMi2a.js → SvgPage-D3NUkPtO.js} +2 -2
- package/dist/assets/{SvgPage-T42iMi2a.js.map → SvgPage-D3NUkPtO.js.map} +1 -1
- package/dist/assets/{_404Page-Bfy8LBhL.js → _404Page-BE1vUiRw.js} +2 -2
- package/dist/assets/{_404Page-Bfy8LBhL.js.map → _404Page-BE1vUiRw.js.map} +1 -1
- package/dist/assets/chunk-D5zCSjLw.js +3 -0
- package/dist/assets/{chunk-B1uHQf23.js.map → chunk-D5zCSjLw.js.map} +1 -1
- package/dist/assets/dayjs.min-Bg7KENpr.js +371 -0
- package/dist/assets/dayjs.min-Bg7KENpr.js.map +1 -0
- package/dist/assets/{error-BhW4B-ex.js → error-BlyahdiG.js} +5 -5
- package/dist/assets/{error-BhW4B-ex.js.map → error-BlyahdiG.js.map} +1 -1
- package/dist/assets/{import-DF6hDg2o.js → import-Cxh63wVM.js} +2 -2
- package/dist/assets/{import-DF6hDg2o.js.map → import-Cxh63wVM.js.map} +1 -1
- package/dist/assets/index-BvMJHG7T.js +10 -0
- package/dist/assets/index-BvMJHG7T.js.map +1 -0
- package/dist/assets/{index-HykT01V7.js → index-CYASaayu.js} +7 -7
- package/dist/assets/{index-HykT01V7.js.map → index-CYASaayu.js.map} +1 -1
- package/dist/assets/{jszip.min-PFERbZEF.js → jszip.min-BOS24VEm.js} +2 -2
- package/dist/assets/{jszip.min-PFERbZEF.js.map → jszip.min-BOS24VEm.js.map} +1 -1
- package/dist/assets/node-CLCaX0fb.js +2 -0
- package/dist/assets/node-CLCaX0fb.js.map +1 -0
- package/dist/assets/{snapshot-7V6viKJH.js → snapshot-yzw3cyQE.js} +3 -3
- package/dist/assets/{snapshot-7V6viKJH.js.map → snapshot-yzw3cyQE.js.map} +1 -1
- package/dist/assets/{table-CJEMQCSa.js → table-DC8EQEY9.js} +4 -4
- package/dist/assets/{table-CJEMQCSa.js.map → table-DC8EQEY9.js.map} +1 -1
- package/dist/index.html +3 -3
- package/package.json +1 -1
- package/dist/assets/DevicePage-22pCriWH.js +0 -49
- package/dist/assets/ImportPage-BdtL0i84.js +0 -2
- package/dist/assets/SelectorPage-uMb66kF4.js +0 -2
- package/dist/assets/SelectorPage-uMb66kF4.js.map +0 -1
- package/dist/assets/SnapshotPage-Cx8Bc7Xj.js +0 -274
- package/dist/assets/SnapshotPage-Cx8Bc7Xj.js.map +0 -1
- package/dist/assets/chunk-B1uHQf23.js +0 -3
- package/dist/assets/dayjs.min-BjBrwguZ.js +0 -371
- package/dist/assets/dayjs.min-BjBrwguZ.js.map +0 -1
- package/dist/assets/index-Cjc782aG.js +0 -8
- package/dist/assets/index-Cjc782aG.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SnapshotPage-Cx8Bc7Xj.js","sources":["../../node_modules/.pnpm/naive-ui@2.41.0_vue@3.5.13_typescript@5.7.3_/node_modules/naive-ui/es/_utils/vue/create-data-key.mjs","../../node_modules/.pnpm/naive-ui@2.41.0_vue@3.5.13_typescript@5.7.3_/node_modules/naive-ui/es/_internal/icons/ChevronLeft.mjs","../../node_modules/.pnpm/naive-ui@2.41.0_vue@3.5.13_typescript@5.7.3_/node_modules/naive-ui/es/_internal/icons/Switcher.mjs","../../node_modules/.pnpm/naive-ui@2.41.0_vue@3.5.13_typescript@5.7.3_/node_modules/naive-ui/es/button-group/src/styles/index.cssr.mjs","../../node_modules/.pnpm/naive-ui@2.41.0_vue@3.5.13_typescript@5.7.3_/node_modules/naive-ui/es/button-group/src/ButtonGroup.mjs","../../node_modules/.pnpm/naive-ui@2.41.0_vue@3.5.13_typescript@5.7.3_/node_modules/naive-ui/es/collapse/styles/light.mjs","../../node_modules/.pnpm/naive-ui@2.41.0_vue@3.5.13_typescript@5.7.3_/node_modules/naive-ui/es/collapse/src/styles/index.cssr.mjs","../../node_modules/.pnpm/naive-ui@2.41.0_vue@3.5.13_typescript@5.7.3_/node_modules/naive-ui/es/collapse/src/Collapse.mjs","../../node_modules/.pnpm/naive-ui@2.41.0_vue@3.5.13_typescript@5.7.3_/node_modules/naive-ui/es/collapse/src/CollapseItemContent.mjs","../../node_modules/.pnpm/naive-ui@2.41.0_vue@3.5.13_typescript@5.7.3_/node_modules/naive-ui/es/collapse/src/CollapseItem.mjs","../../node_modules/.pnpm/naive-ui@2.41.0_vue@3.5.13_typescript@5.7.3_/node_modules/naive-ui/es/table/styles/_common.mjs","../../node_modules/.pnpm/naive-ui@2.41.0_vue@3.5.13_typescript@5.7.3_/node_modules/naive-ui/es/table/styles/light.mjs","../../node_modules/.pnpm/naive-ui@2.41.0_vue@3.5.13_typescript@5.7.3_/node_modules/naive-ui/es/tree/styles/light.mjs","../../node_modules/.pnpm/naive-ui@2.41.0_vue@3.5.13_typescript@5.7.3_/node_modules/naive-ui/es/scrollbar/src/Scrollbar.mjs","../../node_modules/.pnpm/naive-ui@2.41.0_vue@3.5.13_typescript@5.7.3_/node_modules/naive-ui/es/table/src/styles/index.cssr.mjs","../../node_modules/.pnpm/naive-ui@2.41.0_vue@3.5.13_typescript@5.7.3_/node_modules/naive-ui/es/table/src/Table.mjs","../../node_modules/.pnpm/naive-ui@2.41.0_vue@3.5.13_typescript@5.7.3_/node_modules/naive-ui/es/table/src/Tbody.mjs","../../node_modules/.pnpm/naive-ui@2.41.0_vue@3.5.13_typescript@5.7.3_/node_modules/naive-ui/es/table/src/Td.mjs","../../node_modules/.pnpm/naive-ui@2.41.0_vue@3.5.13_typescript@5.7.3_/node_modules/naive-ui/es/table/src/Tr.mjs","../../node_modules/.pnpm/naive-ui@2.41.0_vue@3.5.13_typescript@5.7.3_/node_modules/naive-ui/es/tree-select/src/interface.mjs","../../node_modules/.pnpm/naive-ui@2.41.0_vue@3.5.13_typescript@5.7.3_/node_modules/naive-ui/es/tree/src/dnd.mjs","../../node_modules/.pnpm/naive-ui@2.41.0_vue@3.5.13_typescript@5.7.3_/node_modules/naive-ui/es/tree/src/interface.mjs","../../node_modules/.pnpm/naive-ui@2.41.0_vue@3.5.13_typescript@5.7.3_/node_modules/naive-ui/es/tree/src/keyboard.mjs","../../node_modules/.pnpm/naive-ui@2.41.0_vue@3.5.13_typescript@5.7.3_/node_modules/naive-ui/es/tree/src/TreeNodeCheckbox.mjs","../../node_modules/.pnpm/naive-ui@2.41.0_vue@3.5.13_typescript@5.7.3_/node_modules/naive-ui/es/tree/src/TreeNodeContent.mjs","../../node_modules/.pnpm/naive-ui@2.41.0_vue@3.5.13_typescript@5.7.3_/node_modules/naive-ui/es/tree/src/TreeNodeSwitcher.mjs","../../node_modules/.pnpm/naive-ui@2.41.0_vue@3.5.13_typescript@5.7.3_/node_modules/naive-ui/es/tree/src/utils.mjs","../../node_modules/.pnpm/naive-ui@2.41.0_vue@3.5.13_typescript@5.7.3_/node_modules/naive-ui/es/tree/src/TreeNode.mjs","../../node_modules/.pnpm/naive-ui@2.41.0_vue@3.5.13_typescript@5.7.3_/node_modules/naive-ui/es/tree/src/MotionWrapper.mjs","../../node_modules/.pnpm/naive-ui@2.41.0_vue@3.5.13_typescript@5.7.3_/node_modules/naive-ui/es/tree/src/styles/index.cssr.mjs","../../node_modules/.pnpm/naive-ui@2.41.0_vue@3.5.13_typescript@5.7.3_/node_modules/naive-ui/es/tree/src/Tree.mjs","../../src/utils/draggable.ts","../../src/components/DraggableCard.vue","../../src/store/snapshot.ts","../../src/views/snapshot/AttrCard.vue","../../src/views/snapshot/OverlapCard.vue","../../node_modules/.pnpm/@gkd-kit+wasm_matches@0.0.1/node_modules/@gkd-kit/wasm_matches/dist/instantiate.mjs","../../node_modules/.pnpm/@gkd-kit+wasm_matches@0.0.1/node_modules/@gkd-kit/wasm_matches/dist/mod.wasm?url","../../src/utils/selector.ts","../../src/utils/size.ts","../../src/views/snapshot/RuleCard.vue","../../src/views/snapshot/MiniHoverImg.vue","../../src/views/snapshot/ScreenshotCard.vue","../../src/views/snapshot/SearchCard.vue","../../src/components/GapList.ts","../../src/views/snapshot/WindowCard.vue","../../src/views/snapshot/SnapshotPage.vue"],"sourcesContent":["export function createDataKey(key) {\n return typeof key === 'string' ? `s-${key}` : `n-${key}`;\n}","import { defineComponent, h } 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 { defineComponent, h } 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, cE, cM, 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 { defineComponent, h, provide } from 'vue';\nimport { useConfig, useStyle } from \"../../_mixins/index.mjs\";\nimport { useRtl } from \"../../_mixins/use-rtl.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 function 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 { fadeInHeightExpandTransition } from \"../../../_styles/transitions/fade-in-height-expand.cssr.mjs\";\nimport { c, cB, cE, cM, cNotM } from \"../../../_utils/cssr/index.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 { useMergedState } from 'vooks';\nimport { computed, defineComponent, h, provide, ref } from 'vue';\nimport { useConfig, useTheme, useThemeClass } from \"../../_mixins/index.mjs\";\nimport { useRtl } from \"../../_mixins/use-rtl.mjs\";\nimport { call, createInjectionKey, warn } from \"../../_utils/index.mjs\";\nimport { collapseLight } from \"../styles/index.mjs\";\nimport style from \"./styles/index.cssr.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 slots: Object,\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 { useFalseUntilTruthy } from 'vooks';\nimport { defineComponent, h, toRef, vShow, withDirectives } from 'vue';\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 { createId, happensIn } from 'seemly';\nimport { useMemo } from 'vooks';\nimport { computed, defineComponent, h, inject, toRef } from 'vue';\nimport { NBaseIcon } from \"../../_internal/index.mjs\";\nimport { ChevronLeftIcon as ArrowLeftIcon, ChevronRightIcon as ArrowRightIcon } from \"../../_internal/icons/index.mjs\";\nimport { useConfig } from \"../../_mixins/index.mjs\";\nimport { useRtl } from \"../../_mixins/use-rtl.mjs\";\nimport { resolveSlotWithTypedProps, resolveWrappedSlotWithProps, throwError } 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 = resolveSlotWithTypedProps($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 }, resolveSlotWithTypedProps(arrowSlot, {\n collapsed\n }, () => [h(NBaseIcon, {\n clsPrefix: mergedClsPrefix\n }, {\n default: () => this.rtlEnabled ? h(ArrowLeftIcon, null) : h(ArrowRightIcon, null)\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 { commonLight } from \"../../_styles/common/index.mjs\";\nimport sizeVariables from \"./_common.mjs\";\nexport function 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 { scrollbarLight } from \"../../_internal/scrollbar/styles/index.mjs\";\nimport { createTheme } from \"../../_mixins/use-theme.mjs\";\nimport { commonLight } from \"../../_styles/common/index.mjs\";\nimport { checkboxLight } from \"../../checkbox/styles/index.mjs\";\nimport { emptyLight } from \"../../empty/styles/index.mjs\";\nexport function 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 { defineComponent, h, ref } from 'vue';\nimport { NScrollbar } from \"../../_internal/index.mjs\";\nimport { useTheme } from \"../../_mixins/index.mjs\";\nexport const scrollbarProps = Object.assign(Object.assign({}, useTheme.props), {\n trigger: String,\n xScrollable: Boolean,\n onScroll: Function,\n contentClass: String,\n contentStyle: [Object, String],\n size: Number,\n yPlacement: {\n type: String,\n default: 'right'\n },\n xPlacement: {\n type: String,\n default: 'bottom'\n }\n});\nconst Scrollbar = defineComponent({\n name: 'Scrollbar',\n props: scrollbarProps,\n setup() {\n const scrollbarInstRef = ref(null);\n const exposedMethods = {\n scrollTo: (...args) => {\n var _a;\n (_a = scrollbarInstRef.value) === null || _a === void 0 ? void 0 : _a.scrollTo(args[0], args[1]);\n },\n scrollBy: (...args) => {\n var _a;\n (_a = scrollbarInstRef.value) === null || _a === void 0 ? void 0 : _a.scrollBy(args[0], args[1]);\n }\n };\n return Object.assign(Object.assign({}, exposedMethods), {\n scrollbarInstRef\n });\n },\n render() {\n return h(NScrollbar, Object.assign({\n ref: \"scrollbarInstRef\"\n }, this.$props), this.$slots);\n }\n});\nexport default Scrollbar;","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 { computed, defineComponent, 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: 'Tbody',\n render() {\n return h(\"tbody\", 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: 'Tr',\n render() {\n return h(\"tr\", null, this.$slots);\n }\n});","import { createInjectionKey } from \"../../_utils/index.mjs\";\nexport const treeSelectInjectionKey = createInjectionKey('n-tree-select');","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 { createInjectionKey } from \"../../_utils/index.mjs\";\nexport const treeInjectionKey = createInjectionKey('n-tree');","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 { defineComponent, h, 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 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 { defineComponent, h, inject, ref } 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 } = 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 { defineComponent, h, inject } from 'vue';\nimport { NBaseIcon, NBaseLoading, NIconSwitchTransition } from \"../../_internal/index.mjs\";\nimport { SwitcherIcon } from \"../../_internal/icons/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 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 { happensIn } from 'seemly';\nimport { computed } from 'vue';\nimport { isBrowser } from \"../../_utils/index.mjs\";\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 { happensIn, repeat } from 'seemly';\nimport { useMemo } from 'vooks';\nimport { computed, defineComponent, h, inject, onMounted, ref } from 'vue';\nimport { createDataKey } from \"../../_utils/index.mjs\";\nimport { renderDropMark } from \"./dnd.mjs\";\nimport { treeInjectionKey } from \"./interface.mjs\";\nimport NTreeNodeCheckbox from \"./TreeNodeCheckbox.mjs\";\nimport NTreeNodeContent from \"./TreeNodeContent.mjs\";\nimport NTreeNodeSwitcher from \"./TreeNodeSwitcher.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 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 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 el: this.contentElRef.value,\n position: this.droppingPosition,\n offsetLevel: this.droppingOffsetLevel,\n indent\n }) : this.showDropMarkAsParent ? renderDropMark({\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 { pxfy } from 'seemly';\nimport { defineComponent, h } from 'vue';\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 { fadeInHeightExpandTransition } from \"../../../_styles/transitions/fade-in-height-expand.cssr.mjs\";\nimport { iconSwitchTransition } from \"../../../_styles/transitions/icon-switch.cssr.mjs\";\nimport { c, cB, cE, cM, cNotM } from \"../../../_utils/cssr/index.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};\nimport { depx, getPadding, pxfy } from 'seemly';\nimport { createIndexGetter, createTreeMate, flatten } from 'treemate';\nimport { useMergedState } from 'vooks';\nimport { computed, defineComponent, h, inject, nextTick, provide, ref, toRef, watch, watchEffect } from 'vue';\nimport { VVirtualList } from 'vueuc';\nimport { NxScrollbar } from \"../../_internal/index.mjs\";\nimport { useConfig, useRtl, useTheme, useThemeClass } from \"../../_mixins/index.mjs\";\nimport { call, createDataKey, resolveSlot, warn, warnOnce } from \"../../_utils/index.mjs\";\nimport { NEmpty } from \"../../empty/index.mjs\";\nimport { treeSelectInjectionKey } from \"../../tree-select/src/interface.mjs\";\nimport { treeLight } from \"../styles/index.mjs\";\nimport { defaultAllowDrop } from \"./dnd.mjs\";\nimport { treeInjectionKey } from \"./interface.mjs\";\nimport { useKeyboard } from \"./keyboard.mjs\";\nimport MotionWrapper from \"./MotionWrapper.mjs\";\nimport style from \"./styles/index.cssr.mjs\";\nimport NTreeNode from \"./TreeNode.mjs\";\nimport { emptyImage, filterTree, isNodeDisabled, keysWithFilter, useMergedCheckStrategy } from \"./utils.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 slots: Object,\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 : computed(() => props.showIrrelevantNodes ? displayTreeMateRef.value : createTreeMate(props.data, createTreeMateOptions(props.keyField, props.childrenField, props.disabledField, props.getChildren)));\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 = 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 if (emptyImage) {\n (_a = event.dataTransfer) === null || _a === void 0 ? void 0 : _a.setDragImage(emptyImage, 0, 0);\n }\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 // 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 (_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});","export 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\nlet currentMaxZIndex = 1000;\nexport const useZindex = () => {\n currentMaxZIndex++;\n const zIndex = shallowRef(currentMaxZIndex);\n const setTop = () => {\n if (zIndex.value === currentMaxZIndex) return;\n currentMaxZIndex++;\n zIndex.value = currentMaxZIndex;\n };\n return {\n zIndex,\n setTop,\n };\n};\n","<script setup lang=\"ts\">\nimport { useDragMove, useZindex } from '@/utils/draggable';\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 show?: boolean;\n class?: string;\n }>(),\n { initialValue: () => ({}), show: true },\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 moved = shallowRef(false);\nconst startMove = (ev: PointerEvent) => {\n prevEv = ev;\n prevOffset.x = offset.x;\n prevOffset.y = offset.y;\n moved.value = false;\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\n moved.value = true;\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\nconst { setTop, zIndex } = useZindex();\nwatch(\n () => props.show,\n () => {\n if (props.show) {\n setTop();\n }\n },\n);\n</script>\n<template>\n <Teleport to=\"body\">\n <div\n v-if=\"show\"\n fixed\n ref=\"box\"\n class=\"DraggableCard\"\n :style=\"[currentStyle, { zIndex }]\"\n :class=\"props.class\"\n @mousedown=\"setTop\"\n >\n <slot :onRef=\"updateTarget\" :moved=\"moved\"></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","import {\n detectSnapshot,\n exportSnapshotAsImageId,\n exportSnapshotAsImportId,\n} from '@/utils/export';\nimport { gmOk } from '@/utils/gm';\nimport { getAppInfo, listToTree } from '@/utils/node';\nimport { toInteger } from '@/utils/others';\nimport { snapshotStorage, screenshotStorage } from '@/utils/snapshot';\nimport { useTask } from '@/utils/task';\nimport type { Position, RawNode, Snapshot, TrackValue } from '@/utils/types';\nimport { findNodesByXy } from '@/utils/node';\n\nconst getRemoteImportId = async (id: number): Promise<number> => {\n return fetch('https://detect.gkd.li/api/getImportId?id=' + id)\n .then((r) => r.json())\n .catch(() => 0);\n};\n\nexport const useSnapshotStore = defineStore('snapshot', () => {\n const route = useRoute();\n const router = useRouter();\n const settingsStore = useSettingsStore();\n const storageStore = useStorageStore();\n const { snapshotImportId, snapshotImageId, importSnapshotId } = storageStore;\n\n const snapshotId = shallowRef<number>();\n watchImmediate(\n () => route.params.snapshotId,\n (v) => {\n snapshotId.value = toInteger(v);\n },\n );\n const importId = computed(() => {\n if (snapshotId.value) return snapshotImportId[snapshotId.value];\n return undefined;\n });\n const imageId = computed(() => {\n if (snapshotId.value) return snapshotImageId[snapshotId.value];\n return undefined;\n });\n const snapshot = shallowRef<Snapshot>();\n watchEffect(() => {\n if (snapshot.value) {\n document.title =\n '快照-' + (getAppInfo(snapshot.value).name || snapshot.value.appId);\n }\n });\n const screenshot = shallowRef<ArrayBuffer>();\n const screenshotUrl = computed(() => {\n if (screenshot.value) {\n return URL.createObjectURL(\n new Blob([screenshot.value], {\n type: 'image/png',\n }),\n );\n }\n return undefined;\n });\n const redirected = shallowRef(false);\n const update = useTask(async (id: number | undefined) => {\n redirected.value = false;\n if (!id) {\n snapshot.value = undefined;\n screenshot.value = undefined;\n return;\n }\n await Promise.all([\n snapshotStorage.getItem(id).then((r) => {\n snapshot.value = r || undefined;\n }),\n screenshotStorage.getItem(id).then((r) => {\n screenshot.value = r || undefined;\n }),\n ]);\n if (!snapshot.value) {\n const remoteImportId =\n snapshotImportId[id] || (await getRemoteImportId(id));\n if (remoteImportId && Number.isSafeInteger(remoteImportId)) {\n redirected.value = true;\n router.replace({\n path: '/i/' + remoteImportId,\n query: route.query,\n });\n return;\n }\n }\n });\n const loading = computed(() => update.loading);\n watchImmediate(() => snapshotId.value, update.invoke);\n watchEffect(() => {\n if (\n importId.value &&\n storageStore.inited &&\n !importSnapshotId[importId.value] &&\n snapshotId.value\n ) {\n importSnapshotId[importId.value] = snapshotId.value;\n fetch(\n `https://detect.gkd.li/api/detectSnapshot?importId=` + importId.value,\n );\n }\n });\n const autoUpload = computed(() => {\n return (\n gmOk() &&\n settingsStore.inited &&\n settingsStore.autoUploadImport &&\n storageStore.inited\n );\n });\n watchEffect(() => {\n if (autoUpload.value && snapshot.value && !imageId.value) {\n exportSnapshotAsImageId(snapshot.value);\n }\n if (autoUpload.value && snapshot.value && !importId.value) {\n exportSnapshotAsImportId(snapshot.value);\n }\n if (autoUpload.value && snapshot.value && importId.value) {\n detectSnapshot(snapshot.value.id, importId.value);\n }\n });\n const nodes = computed(() => {\n if (snapshot.value && settingsStore.inited) {\n if (snapshot.value.nodes.length <= settingsStore.maxShowNodeSize) {\n return structuredClone(snapshot.value.nodes);\n } else {\n return structuredClone(\n snapshot.value.nodes.slice(0, settingsStore.maxShowNodeSize),\n );\n }\n }\n return [];\n });\n const rootNode = computed(() => {\n if (nodes.value.length) {\n return listToTree(nodes.value);\n }\n return undefined;\n });\n const missNodeSize = computed(() => {\n if (snapshot.value) {\n return snapshot.value.nodes.length - settingsStore.maxShowNodeSize;\n }\n return 0;\n });\n const focusNode = shallowRef<RawNode>();\n const focusTime = shallowRef(0);\n const focusPosition = shallowRef<Position>();\n const overlapNodes = shallowRef<RawNode[]>();\n const updateFocusNode = async (node: RawNode) => {\n focusNode.value = node;\n focusTime.value = Date.now();\n await nextTick();\n if (overlapNodes.value && !overlapNodes.value.includes(node)) {\n focusPosition.value = undefined;\n overlapNodes.value = undefined;\n }\n };\n watchEffect(() => {\n if (rootNode.value) {\n updateFocusNode(rootNode.value);\n }\n });\n const updatePosition = (position: Position) => {\n focusPosition.value = position;\n const resultNodes = findNodesByXy(nodes.value, focusPosition.value);\n if (resultNodes.length) {\n updateFocusNode(resultNodes[0]);\n }\n if (resultNodes.length > 1) {\n overlapNodes.value = resultNodes;\n }\n };\n\n const track = shallowRef<TrackValue>();\n return {\n snapshotId,\n snapshot,\n rootNode,\n screenshotUrl,\n loading,\n redirected,\n importId,\n imageId,\n focusNode,\n updateFocusNode,\n focusTime,\n overlapNodes,\n missNodeSize,\n focusPosition,\n updatePosition,\n track,\n };\n});\n\nif (import.meta.hot) {\n import.meta.hot.accept(() => {\n location.reload();\n });\n}\n","<script setup lang=\"ts\">\nimport DraggableCard from '@/components/DraggableCard.vue';\nimport { getNodeSelectorText } from '@/utils/node';\nimport { buildEmptyFn, copy } from '@/utils/others';\n\nwithDefaults(\n defineProps<{\n show: boolean;\n onUpdateShow?: (data: boolean) => void;\n }>(),\n {\n onUpdateShow: buildEmptyFn,\n },\n);\n\nconst { focusNode } = storeToRefs(useSnapshotStore());\n\ntype AttrTipMap = Record<\n string,\n { desc: string; type: 'info' | 'quickFind'; show?: boolean }\n>;\n\nconst attrTip = computed<AttrTipMap>(() => {\n const node = focusNode.value;\n if (!node) return {};\n return {\n _id: {\n desc: `虚拟属性(真机不可用):生成快照访问节点顺序`,\n type: 'info',\n show: true,\n },\n _pid: {\n desc: `虚拟属性(真机不可用):父节点的 _id`,\n type: 'info',\n show: true,\n },\n _selector: {\n desc: `自动生成的选择器, 点击“_selector”可直接复制内容, 用于定位`,\n type: 'info',\n show: true,\n },\n depth: {\n desc: `使用此属性在某些应用上可能造成无限节点错误`,\n type: 'info',\n show: true,\n },\n id: {\n desc: `可快速查找`,\n type: 'quickFind',\n show: Boolean((node.quickFind || node.idQf) && node.attr.id),\n },\n vid: {\n desc: `可快速查找`,\n type: 'quickFind',\n show: Boolean((node.quickFind || node.idQf) && node.attr.vid),\n },\n text: {\n desc: `可快速查找`,\n type: 'quickFind',\n show: Boolean((node.quickFind || node.textQf) && node.attr.text),\n },\n } as AttrTipMap;\n});\n\nconst lenAttrNames = [`text`, `desc`];\nconst attrs = computed(() => {\n if (!focusNode.value) return [];\n return Object.entries(focusNode.value.attr)\n .map(([name, value]) => {\n const attr = {\n name,\n value,\n desc: JSON.stringify(value),\n tip: attrTip.value[name]?.show ? attrTip.value[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\nconst selectText = computed(() => {\n if (!focusNode.value) return '';\n return getNodeSelectorText(focusNode.value);\n});\n</script>\n\n<template>\n <DraggableCard\n :initialValue=\"{ top: 40, right: 10 }\"\n v-slot=\"{ onRef }\"\n class=\"box-shadow-dim\"\n :show=\"show && Boolean(focusNode)\"\n >\n <div absolute top-0 right-0 pt-4px pr-8px>\n <NButton @click=\"onUpdateShow(!show)\" text title=\"最小化\">\n <template #icon>\n <SvgIcon name=\"minus\" />\n </template>\n </NButton>\n </div>\n <NTable\n v-if=\"focusNode\"\n size=\"small\"\n striped\n :singleLine=\"false\"\n class=\"gkd_code\"\n :themeOverrides=\"{\n thPaddingSmall: '1px 3px',\n tdPaddingSmall: '0px 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 <SvgIcon name=\"info\" v-if=\"attrx.tip.type == 'info'\" />\n <SvgIcon\n v-else-if=\"attrx.tip.type == 'quickFind'\"\n name=\"ok\"\n />\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-w)*0.12)]\"\n :class=\"{\n 'text-left direction-rtl': attrx.name == 'id',\n 'opacity-50': attrx.value === null,\n }\"\n >\n {{ attrx.desc }}\n </NEllipsis>\n </NTd>\n </NTr>\n <NTr>\n <NTd colspan=\"2\">\n <div flex items-center h-24px px-2px>\n <NTooltip>\n <template #trigger>\n <NButton text @click=\"copy(selectText)\">\n <template #icon>\n <NIcon size=\"20\">\n <SvgIcon name=\"path\" />\n </NIcon>\n </template>\n </NButton>\n </template>\n <div max-w-500px>{{ selectText }}</div>\n </NTooltip>\n </div>\n </NTd>\n </NTr>\n </NTbody>\n </NTable>\n </DraggableCard>\n</template>\n","<script setup lang=\"ts\">\nimport DraggableCard from '@/components/DraggableCard.vue';\nimport { getNodeLabel, getNodeStyle } from '@/utils/node';\n\nconst snapshotStore = useSnapshotStore();\nconst { focusNode, overlapNodes, focusPosition } = storeToRefs(snapshotStore);\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=\"box-shadow-dim w-420px\"\n :show=\"Boolean(overlapNodes && focusPosition)\"\n >\n <NCard\n v-if=\"overlapNodes && focusPosition\"\n size=\"small\"\n closable\n @close=\"overlapNodes = undefined\"\n >\n <template #header>\n <div :ref=\"onRef\" cursor-move>\n 位置\n <span bg=\"#eee\" px-2px>{{\n `${focusPosition.x.toFixed(0)},${focusPosition.y.toFixed()}`\n }}</span>\n 存在 {{ overlapNodes.length }} 个层叠节点\n </div>\n </template>\n <NSpace\n style=\"max-height: 400px; overflow-y: scroll; padding-bottom: 10px\"\n class=\"scrollbar-hidden\"\n >\n <NButton\n v-for=\"resultNode in overlapNodes\"\n :key=\"resultNode.id\"\n @click=\"snapshotStore.updateFocusNode(resultNode)\"\n size=\"small\"\n :style=\"getNodeStyle(resultNode, focusNode)\"\n >\n {{ getNodeLabel(resultNode) }}\n </NButton>\n </NSpace>\n </NCard>\n </DraggableCard>\n</template>\n","// @ts-check\r\nexport default async function instantiate(\r\n /**\r\n * @type {BufferSource|Response|Promise<BufferSource|Response>} }\r\n */\r\n wasmSource\r\n) {\r\n if (wasmSource instanceof Promise) {\r\n wasmSource = await wasmSource;\r\n }\r\n const js_code = {\r\n 'kotlin.captureStackTrace': () => new Error().stack,\r\n 'kotlin.wasm.internal.throwJsError': (message, wasmTypeName, stack) => {\r\n const error = new Error();\r\n error.message = message;\r\n error.name = wasmTypeName;\r\n error.stack = stack;\r\n throw error;\r\n },\r\n 'kotlin.wasm.internal.stringLength': (x) => x.length,\r\n 'kotlin.wasm.internal.jsExportStringToWasm': (\r\n src,\r\n srcOffset,\r\n srcLength,\r\n dstAddr\r\n ) => {\r\n const mem16 = new Uint16Array(\r\n wasmExports.memory.buffer,\r\n dstAddr,\r\n srcLength\r\n );\r\n let arrayIndex = 0;\r\n let srcIndex = srcOffset;\r\n while (arrayIndex < srcLength) {\r\n mem16.set([src.charCodeAt(srcIndex)], arrayIndex);\r\n srcIndex++;\r\n arrayIndex++;\r\n }\r\n },\r\n 'kotlin.wasm.internal.importStringFromWasm': (\r\n address,\r\n length,\r\n prefix\r\n ) => {\r\n const mem16 = new Uint16Array(\r\n wasmExports.memory.buffer,\r\n address,\r\n length\r\n );\r\n const str = String.fromCharCode.apply(null, mem16);\r\n return prefix == null ? str : prefix + str;\r\n },\r\n 'kotlin.wasm.internal.getJsEmptyString': () => '',\r\n 'kotlin.wasm.internal.isNullish': (ref) => ref == null,\r\n 'kotlin.wasm.internal.getJsTrue': () => true,\r\n 'kotlin.wasm.internal.getJsFalse': () => false,\r\n 'kotlin.random.initialSeed': () =>\r\n (Math.random() * Math.pow(2, 32)) | 0,\r\n 'li.songe.matches.__convertKotlinClosureToJsClosure_((String)->Boolean)':\r\n (f) => (p0) =>\r\n wasmExports['__callFunction_((String)->Boolean)'](f, p0),\r\n };\r\n\r\n // Placed here to give access to it from externals (js_code)\r\n let wasmInstance;\r\n let require;\r\n let wasmExports;\r\n\r\n const wasmFilePath = './gkd-wasm_matches-wasm-js.wasm';\r\n const importObject = {\r\n js_code,\r\n };\r\n\r\n try {\r\n if (wasmSource instanceof Response) {\r\n wasmInstance = (\r\n await WebAssembly.instantiateStreaming(wasmSource, importObject)\r\n ).instance;\r\n } else {\r\n const wasmModule = new WebAssembly.Module(wasmSource);\r\n wasmInstance = new WebAssembly.Instance(wasmModule, importObject);\r\n }\r\n } catch (e) {\r\n if (e instanceof WebAssembly.CompileError) {\r\n let text = `Please make sure that your runtime environment supports the latest version of Wasm GC and Exception-Handling proposals.\r\nFor more information, see https://kotl.in/wasm-help\r\n`;\r\n console.error(text);\r\n }\r\n throw e;\r\n }\r\n\r\n wasmExports = wasmInstance.exports;\r\n // @ts-ignore\r\n wasmExports._initialize();\r\n\r\n return { instance: wasmInstance, exports: wasmExports };\r\n}\r\n","export default \"__VITE_ASSET__BUZrO3c9__\"","import {\n FastQuery,\n getBooleanInvoke,\n getIntInvoke,\n getStringAttr,\n getStringInvoke,\n initDefaultTypeInfo,\n MatchOption,\n QueryResult,\n Selector,\n Transform,\n updateWasmToMatches,\n QueryContext,\n} from '@gkd-kit/selector';\nimport matchesInstantiate from '@gkd-kit/wasm_matches';\nimport matchesWasmUrl from '@gkd-kit/wasm_matches/dist/mod.wasm?url';\nimport { isRawNode } from './node';\nimport type { RawNode } from './types';\n\nexport const wasmLoadTask = matchesInstantiate(fetch(matchesWasmUrl))\n .then((mod) => {\n const toMatches = mod.exports.toMatches;\n updateWasmToMatches(toMatches as any);\n useGlobalStore().wasmSupported = true;\n if (import.meta.env.PROD) {\n console.log('use wasm matches');\n }\n })\n .catch((e) => {\n useGlobalStore().wasmSupported = false;\n console.error(e);\n if (import.meta.env.PROD) {\n console.log('use js matches');\n }\n });\n\nconst getNodeAttr = (target: RawNode, name: string) => {\n if (name == '_id') return target.id;\n if (name == '_pid') return target.pid;\n if (name == 'parent') return target.parent ?? null;\n return Reflect.get(target.attr, name) ?? null;\n};\n\nconst getNodeInvoke = (target: RawNode, name: string, args: any) => {\n if (name === 'getChild') {\n const i = args.asJsReadonlyArrayView()[0];\n return target.children[i] ?? null;\n }\n return null;\n};\n\nconst transform = Transform.Companion.multiplatformBuild<RawNode>(\n (target, name) => {\n if (typeof target === 'string') {\n return getStringAttr(target, name);\n }\n if (target instanceof QueryContext) {\n if (name === 'prev') {\n return target.prev;\n }\n if (name === 'current') {\n return target.current;\n }\n return getNodeAttr(target.current, name);\n }\n if (isRawNode(target)) {\n return getNodeAttr(target, name);\n }\n return null;\n },\n (target, name, args) => {\n if (typeof target === 'number') {\n return getIntInvoke(target, name, args);\n }\n if (typeof target === 'boolean') {\n return getBooleanInvoke(target, name, args);\n }\n if (typeof target === 'string') {\n return getStringInvoke(target, name, args);\n }\n if (target instanceof QueryContext) {\n if (name === 'getPrev') {\n const i = args.asJsReadonlyArrayView()[0];\n if (Number.isSafeInteger(i)) {\n return target.getPrev(i);\n }\n return null;\n }\n return getNodeInvoke(target.current, name, args);\n }\n if (isRawNode(target)) {\n return getNodeInvoke(target, name, args);\n }\n return null;\n },\n (node) => node.attr.name,\n (node) => node.children,\n (node) => node.parent,\n);\n\nexport interface ResolvedSelector {\n value: Selector;\n connectKeys: string[];\n fastQueryList: readonly FastQuery[];\n canQf: boolean;\n canCopy: boolean;\n toString: () => string;\n match: (node: RawNode) => RawNode | undefined;\n querySelectorAll: (node: RawNode | undefined) => RawNode[];\n querySelectorAllContext: (\n node: RawNode | undefined,\n ) => QueryResult<RawNode>[];\n}\n\nconst typeInfo = initDefaultTypeInfo(true).globalType;\nconst matchOption = new MatchOption(false);\n\nexport const parseSelector = (source: string): ResolvedSelector => {\n const value = Selector.Companion.parse(source);\n value.checkType(typeInfo);\n const binaryExpressionList =\n value.expression.binaryExpressionList.asJsReadonlyArrayView();\n const fastQueryList = value.expression.fastQueryList.asJsReadonlyArrayView();\n const connectSegmentList =\n value.expression.connectSegmentList.asJsReadonlyArrayView();\n\n const selector: ResolvedSelector = {\n value,\n connectKeys: connectSegmentList.map((v) => v.operator.key),\n canCopy: !binaryExpressionList.some((b) =>\n b.properties.some((p) => p.startsWith('_')),\n ),\n canQf: fastQueryList.length > 0,\n fastQueryList: fastQueryList,\n toString() {\n return value.toString();\n },\n match(node) {\n return value.match(node, transform, matchOption) ?? undefined;\n },\n querySelectorAll(node) {\n if (!node) return [];\n return transform.querySelectorAllArray(node, value);\n },\n querySelectorAllContext(node) {\n if (!node) return [];\n return transform.querySelectorAllContextArray(node, value);\n },\n };\n for (const exp of binaryExpressionList) {\n if (exp.operator.key == '~=' && !useGlobalStore().wasmSupported) {\n if (!useSettingsStore().ignoreWasmWarn) {\n useGlobalStore().wasmErrorDlgVisible = true;\n break;\n }\n }\n }\n return selector;\n};\n\nexport const checkSelector = (source: string) => {\n return Selector.Companion.parseOrNull(source) != null;\n};\n","const windowSize = useWindowSize();\nexport const vw = computed(() => windowSize.width.value / 100);\n// const vh = computed(() => windowSize.width.value / 100);\n\n// --gkd-w: max(1200px, 100vw);\nexport const gkdWidth = computed(() => Math.max(1200, windowSize.width.value));\n\n// --gkd-h: max(700px, 100vh);\nexport const gkdHeight = computed(() => Math.max(700, windowSize.height.value));\n","<script setup lang=\"ts\">\nimport DraggableCard from '@/components/DraggableCard.vue';\nimport { getNodeLabel, getNodeStyle } from '@/utils/node';\nimport { buildEmptyFn } from '@/utils/others';\nimport { parseSelector, type ResolvedSelector } from '@/utils/selector';\nimport { gkdWidth, vw } from '@/utils/size';\nimport type { RawNode, Snapshot } from '@/utils/types';\nimport type { ShallowRef } from 'vue';\n\nwithDefaults(\n defineProps<{\n show: boolean;\n onUpdateShow?: (data: boolean) => void;\n }>(),\n {\n onUpdateShow: buildEmptyFn,\n },\n);\n\nconst snapshotStore = useSnapshotStore();\nconst snapshotRefs = storeToRefs(snapshotStore);\nconst { rootNode, focusNode } = snapshotRefs;\nconst snapshot = snapshotRefs.snapshot as ShallowRef<Snapshot>;\n\nconst text = shallowRef('');\nconst lazyText = refDebounced(text, 500);\n\ninterface ResolvedData {\n matches: string[];\n anyMatches: string[];\n excludeMatches: string[];\n}\n\nconst toArray = (v: any): string[] | undefined => {\n if (v === undefined || v === null) return [];\n if (typeof v === 'string') return [v];\n if (Array.isArray(v) && v.every((s) => typeof s === 'string')) return v;\n};\nconst checkRule = (obj: ResolvedData): string | RawNode => {\n const matches = toArray(obj.matches);\n if (!matches) {\n return '非法格式: matches';\n }\n const anyMatches = toArray(obj.anyMatches);\n if (!anyMatches) {\n return '非法格式: anyMatches';\n }\n const excludeMatches = toArray(obj.excludeMatches);\n if (!excludeMatches) {\n return '非法格式: excludeMatches';\n }\n\n const resolvedMatches: ResolvedSelector[] = [];\n for (let i = 0; i < matches.length; i++) {\n const v = matches[i];\n try {\n resolvedMatches.push(parseSelector(v));\n } catch (e) {\n const message = e instanceof Error ? e.message : String(e);\n return `非法选择器: matches[${i}]\\n错误: ${message}`;\n }\n }\n const matchesResult = resolvedMatches.map((s) =>\n s.querySelectorAll(rootNode.value),\n );\n if (resolvedMatches.length) {\n const notIndex = matchesResult.findIndex((s) => s.length === 0);\n if (notIndex >= 0) {\n return `无法匹配: matches[${notIndex}] 查找结果为空`;\n }\n }\n\n const resolvedAnyMatches: ResolvedSelector[] = [];\n for (let i = 0; i < anyMatches.length; i++) {\n const v = anyMatches[i];\n try {\n resolvedAnyMatches.push(parseSelector(v));\n } catch (e) {\n const message = e instanceof Error ? e.message : String(e);\n return `非法选择器: anyMatches[${i}]\\n错误: ${message}`;\n }\n }\n const anyMatchesResult = resolvedAnyMatches.map((s) =>\n s.querySelectorAll(rootNode.value),\n );\n if (resolvedAnyMatches.length) {\n if (anyMatchesResult.every((s) => s.length === 0)) {\n return `无法匹配: anyMatches 查找结果为空`;\n }\n }\n\n if (!matches.length && !anyMatches.length) {\n return '非法规则: matches 和 anyMatches 至少存在一个';\n }\n\n const resolvedExcludeMatches: ResolvedSelector[] = [];\n for (let i = 0; i < excludeMatches.length; i++) {\n const v = excludeMatches[i];\n try {\n resolvedExcludeMatches.push(parseSelector(v));\n } catch (e) {\n const message = e instanceof Error ? e.message : String(e);\n return `非法选择器: excludeMatches[${i}]\\n错误: ${message}`;\n }\n }\n const excludeMatchesResult = resolvedExcludeMatches.map((s) =>\n s.querySelectorAll(rootNode.value),\n );\n if (resolvedExcludeMatches.length) {\n const index = excludeMatchesResult.findIndex((s) => s.length !== 0);\n if (index >= 0) {\n return `无法匹配: excludeMatches[${index}] 查找结果不为空`;\n }\n }\n if (!matchesResult.length) {\n return anyMatchesResult[0][0];\n }\n return matchesResult.at(-1)![0];\n};\n\nconst isObj = (v: any): v is Record<string, any> => {\n return typeof v === 'object' && v !== null && !Array.isArray(v);\n};\n\nconst dataRef = computed<RawNode | string>(() => {\n if (!lazyText.value) return '';\n const obj = (() => {\n try {\n return JSON5.parse(lazyText.value);\n } catch (e) {\n return e as Error;\n }\n })();\n if (obj instanceof Error) {\n return `非法格式: ${obj.message}`;\n }\n if (!isObj(obj)) {\n return '非法格式: 请使用对象格式';\n }\n if (typeof obj.id === 'string') {\n if (obj.id !== snapshot.value.appId) {\n return '非法格式: id 不匹配 appId';\n }\n if (!Array.isArray(obj.groups)) {\n return '非法格式: groups 不是数组';\n }\n if (obj.groups.length !== 1) {\n return '非法格式: groups 长度不为 1';\n }\n const group = obj.groups[0];\n if (!group?.rules) {\n return '非法格式: groups[0].rules 非法';\n }\n const rules = Array.isArray(group.rules) ? group.rules : [group.rules];\n if (rules.length !== 1) {\n return '非法格式: groups[0].rules 长度不为 1';\n }\n const rule =\n typeof rules[0] === 'string' ? { matches: rules[0] } : rules[0];\n if (!isObj(rule)) {\n return '非法格式: rules[0] 非法';\n }\n return checkRule(rule as ResolvedData);\n }\n if (obj.rules) {\n const rules = Array.isArray(obj.rules) ? obj.rules : [obj.rules];\n if (rules.length !== 1) {\n return '非法格式: rules 长度不为 1';\n }\n const rule =\n typeof rules[0] === 'string' ? { matches: rules[0] } : rules[0];\n if (!isObj(rule)) {\n return '非法格式: rules[0] 非法';\n }\n return checkRule(rule as ResolvedData);\n }\n return checkRule(obj as ResolvedData);\n});\nconst errorText = computed(() => {\n if (text.value && lazyText.value && typeof dataRef.value === 'string') {\n return dataRef.value;\n }\n return '';\n});\nconst targetNode = computed(() => {\n if (typeof dataRef.value === 'string') return null;\n return dataRef.value;\n});\n</script>\n<template>\n <DraggableCard\n :initialValue=\"{\n top: 40,\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=\"box-shadow-dim\"\n :show=\"show\"\n >\n <div bg-white b-1px b-solid b-gray-200 rounded-4px p-8px>\n <div flex m-b-4px pr-4px>\n <div>测试规则</div>\n <div flex-1 cursor-move :ref=\"onRef\"></div>\n <NButton @click=\"onUpdateShow(!show)\" text title=\"最小化\">\n <template #icon>\n <SvgIcon name=\"minus\" />\n </template>\n </NButton>\n </div>\n <NInput\n v-model:value=\"text\"\n type=\"textarea\"\n placeholder=\"请输入单个规则测试\"\n size=\"small\"\n class=\"gkd_code m-b-4px\"\n :autosize=\"{\n minRows: 10,\n maxRows: 20,\n }\"\n />\n <div min-h-24px>\n <div color-red whitespace-pre v-if=\"errorText\">{{ errorText }}</div>\n\n <NButton\n v-else-if=\"targetNode\"\n @click=\"snapshotStore.updateFocusNode(targetNode)\"\n size=\"small\"\n :style=\"getNodeStyle(targetNode, focusNode)\"\n >\n {{ getNodeLabel(targetNode) }}\n </NButton>\n </div>\n </div>\n </DraggableCard>\n</template>\n","<script lang=\"ts\" setup>\nconst props = defineProps<{\n imgRef: HTMLElement;\n imgHover: boolean;\n screenshotUrl: string;\n hoverPosition: {\n ox: number;\n oy: number;\n };\n hoverPositionStyle?: {\n left: string;\n top: string;\n };\n boxHoverPosition?: {\n left: number;\n right: number;\n top: number;\n bottom: number;\n };\n boxHoverPerPosition?: {\n left: string;\n right: string;\n top: string;\n bottom: string;\n };\n}>();\n\nconst imgBounding = useElementBounding(computed(() => props.imgRef));\n</script>\n\n<template>\n <!-- Teleport 需要单独一个组件否则 hmr 错误 -->\n <Teleport to=\"body\">\n <!-- 渲染在外部防止被遮挡 -->\n <div\n v-show=\"imgHover\"\n :style=\"{\n left: imgBounding.right.value + 4 + 'px',\n top: imgBounding.top.value + 'px',\n }\"\n pointer-events-none\n fixed\n overflow-hidden\n z-2\n bg-white\n h-200px\n w-200px\n border-1px\n border-indigo-600\n border-dashed\n >\n <img\n :src=\"screenshotUrl\"\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 v-if=\"boxHoverPerPosition\"\n absolute\n right-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>{{ boxHoverPerPosition.top }}</div>\n <div>\n {{ boxHoverPerPosition.left + ',' + boxHoverPerPosition.right }}\n </div>\n <div>{{ boxHoverPerPosition.bottom }}</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 </Teleport>\n</template>\n","<script setup lang=\"ts\">\nimport dayjs from 'dayjs';\nimport MiniHoverImg from './MiniHoverImg.vue';\n\nconst snapshotStore = useSnapshotStore();\nconst { updatePosition } = snapshotStore;\nconst snapshotRefs = storeToRefs(snapshotStore);\nconst { focusNode, screenshotUrl } = snapshotRefs;\n\nconst snapshot = computed(() => snapshotStore.snapshot!);\n\nconst imgRef = shallowRef<HTMLImageElement>();\nconst imgLoadTime = shallowRef(false);\n\nconst clickImg = (ev: MouseEvent) => {\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 x = ((ev.clientX - imgRect.left) / imgRect.width) * img.naturalWidth;\n const y =\n ((ev.clientY - imgRect.top - offsetTop) / innerHeight) * img.naturalHeight;\n\n updatePosition({ x, y });\n};\n\nconst percent = (n: number) => {\n return `${n * 100}%`;\n};\n\nconst imgSize = useElementSize(imgRef);\n\nconst positionStyle = computed(() => {\n const img = imgRef.value;\n\n const attr = focusNode.value?.attr;\n if (!focusNode.value || !img || !attr || !imgLoadTime.value) {\n return ``;\n }\n const imgWidth = imgSize.width.value;\n const imgHeight = imgSize.height.value;\n const innerHeight = (imgWidth / 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 (imgHeight - innerHeight) / 2) /\n imgHeight,\n )} - 2px)`,\n height: `calc(${percent(\n (((attr.bottom - attr.top) / img.naturalHeight) * innerHeight) /\n imgHeight,\n )} + 2px)`,\n };\n});\nconst imgHover = shallowRef(false);\nconst hoverPosition = shallowRef({ ox: 0, oy: 0 });\nconst boxHoverPosition = computed(() => {\n const attr = focusNode.value?.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 boxHoverPerPosition = computed(() => {\n const attr = focusNode.value?.attr;\n if (!attr || !boxHoverPosition.value) {\n return;\n }\n const { bottom, left, right, top } = boxHoverPosition.value;\n return {\n left: (left / (right + left)).toFixed(3),\n right: (right / (right + left)).toFixed(3),\n top: (top / (top + bottom)).toFixed(3),\n bottom: (bottom / (top + bottom)).toFixed(3),\n };\n});\nconst hoverPositionStyle = shallowRef({ left: '0', top: '0' });\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};\n</script>\n\n<template>\n <div\n v-if=\"screenshotUrl\"\n flex\n flex-col\n relative\n h-full\n p-2px\n box-border\n overflow-hidden\n >\n <img\n ref=\"imgRef\"\n :src=\"screenshotUrl\"\n @click=\"clickImg\"\n cursor-crosshair\n object-contain\n h-full\n class=\"max-w-[calc(var(--gkd-w)*0.35)]\"\n @mouseover=\"imgHover = true\"\n @mouseleave=\"imgHover = false\"\n @mousemove=\"imgMove\"\n @load=\"imgLoadTime = true\"\n />\n <div pointer-events-none absolute left-2px top-2px size=\"[calc(100%-4px)]\">\n <div\n :style=\"positionStyle\"\n absolute\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 </div>\n <div\n absolute\n z-4\n pointer-events-none\n left-0\n top-0\n text-12px\n leading=\"100%\"\n flex\n gap-4px\n >\n <div p-1px bg=\"#ffffff70\">\n {{ `${snapshot.screenWidth}x${snapshot.screenHeight}` }}\n </div>\n <div p-1px bg=\"#ffffff70\">\n {{ dayjs(snapshot.id).format('YYYY-MM-DD HH:mm:ss') }}\n </div>\n </div>\n <MiniHoverImg\n v-if=\"imgRef\"\n :imgHover=\"imgHover\"\n :imgRef=\"imgRef\"\n :boxHoverPerPosition=\"boxHoverPerPosition\"\n :boxHoverPosition=\"boxHoverPosition\"\n :hoverPositionStyle=\"hoverPositionStyle\"\n :hoverPosition=\"hoverPosition\"\n :screenshotUrl=\"screenshotUrl\"\n />\n </div>\n</template>\n","<script setup lang=\"ts\">\nimport DraggableCard from '@/components/DraggableCard.vue';\nimport { message } from '@/utils/discrete';\nimport { errorTry, errorWrap } from '@/utils/error';\nimport { getAppInfo, getNodeLabel, getNodeStyle } from '@/utils/node';\nimport { buildEmptyFn, copy } from '@/utils/others';\nimport type { ResolvedSelector } from '@/utils/selector';\nimport { parseSelector, wasmLoadTask } from '@/utils/selector';\nimport { gkdWidth, vw } from '@/utils/size';\nimport type { RawNode, Snapshot } from '@/utils/types';\nimport { getImagUrl, getImportUrl } from '@/utils/url';\nimport { FastQuery, GkdException } from '@gkd-kit/selector';\nimport dayjs from 'dayjs';\nimport * as base64url from 'universal-base64url';\nimport type { ShallowRef } from 'vue';\n\nwithDefaults(\n defineProps<{\n show: boolean;\n onUpdateShow?: (data: boolean) => void;\n }>(),\n {\n onUpdateShow: buildEmptyFn,\n },\n);\n\nconst route = useRoute();\nconst { snapshotImportId, snapshotImageId } = useStorageStore();\n\nconst snapshotStore = useSnapshotStore();\nconst { updateFocusNode } = snapshotStore;\nconst snapshotRefs = storeToRefs(snapshotStore);\nconst snapshot = snapshotRefs.snapshot as ShallowRef<Snapshot>;\nconst rootNode = snapshotRefs.rootNode as ShallowRef<RawNode>;\nconst { focusNode } = snapshotRefs;\n\nconst selectorText = shallowRef(``);\n\ninterface SelectorSearchResult {\n key: number;\n selector: ResolvedSelector;\n nodes: RawNode[];\n}\ninterface StringSearchResult {\n key: number;\n selector: string;\n nodes: RawNode[];\n}\n\ntype SearchResult = SelectorSearchResult | StringSearchResult;\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 if (e instanceof GkdException) {\n return `非法选择器:` + e.outMessage;\n }\n return `非法选择器:` + (e instanceof Error ? e.message : e);\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.querySelectorAll(rootNode.value);\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[] = [rootNode.value];\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 const newNode = newResult.nodes[0];\n if (!Array.isArray(newNode)) {\n updateFocusNode(newNode);\n } else if (typeof newResult.selector == 'object') {\n updateFocusNode(newNode);\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(async (result: SelectorSearchResult) => {\n const imageId = snapshotImageId[snapshot.value.id];\n const importId = snapshotImportId[snapshot.value.id];\n const snapshotUrls = importId ? getImportUrl(importId) : undefined;\n const exampleUrls = imageId ? getImagUrl(imageId) : undefined;\n\n const s = result.selector;\n const t = result.nodes[0];\n\n const fastQuery = [\n (t.quickFind ?? t.idQf) &&\n t.attr.id &&\n s.fastQueryList.some(\n (v) => v instanceof FastQuery.Id && v.value === t.attr.id,\n ),\n (t.quickFind ?? t.idQf) &&\n t.attr.vid &&\n s.fastQueryList.some(\n (v) => v instanceof FastQuery.Vid && v.value === t.attr.vid,\n ),\n (t.quickFind ?? t.textQf) &&\n t.attr.text &&\n s.fastQueryList.some(\n (v) => v instanceof FastQuery.Text && v.value === t.attr.text,\n ),\n ].some(Boolean);\n const rule = {\n id: snapshot.value.appId,\n name: getAppInfo(snapshot.value).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 fastQuery: fastQuery || undefined,\n activityIds: snapshot.value.activityId,\n matches: s.toString(),\n exampleUrls,\n snapshotUrls,\n },\n ],\n },\n ],\n };\n\n copy(JSON5.stringify(rule, undefined, 2));\n});\nconst enableSearchBySelector = shallowRef(true);\nconst hasZipId = computed(() => {\n return snapshotImportId[snapshot.value.id];\n});\nconst shareResult = (result: SearchResult) => {\n if (!hasZipId.value) return;\n const importUrl = new URL(getImportUrl(snapshotImportId[snapshot.value.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: 40,\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=\"box-shadow-dim\"\n :show=\"show\"\n >\n <div bg-white b-1px b-solid b-gray-200 rounded-4px p-8px>\n <div flex m-b-4px pr-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 <NButton @click=\"onUpdateShow(!show)\" text title=\"最小化\">\n <template #icon>\n <SvgIcon name=\"minus\" />\n </template>\n </NButton>\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 <SvgIcon name=\"search\" />\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 leading-20px\n decoration-1\n m-r-4px\n title=\"查询数量\"\n >\n {{ result.nodes.length }}\n </span>\n <span\n break-all\n px-4px\n leading-20px\n bg=\"#eee\"\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=\"generateRules(result as SelectorSearchResult)\"\n title=\"复制规则\"\n >\n <template #icon>\n <SvgIcon name=\"copy\" />\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 <SvgIcon name=\"share\" />\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 <SvgIcon name=\"delete\" />\n </template>\n </NButton>\n </template>\n <NScrollbar xScrollable style=\"max-height: 400px\">\n <div flex gap-8px flex-wrap>\n <template\n v-if=\"\n typeof result.selector == 'string' ||\n result.selector.connectKeys.length === 0\n \"\n >\n <NButton\n v-for=\"resultNode in result.nodes\"\n :key=\"resultNode.id\"\n @click=\"updateFocusNode(resultNode)\"\n size=\"small\"\n :style=\"getNodeStyle(resultNode, focusNode)\"\n >\n {{ getNodeLabel(resultNode) }}\n </NButton>\n </template>\n <template v-else>\n <NButtonGroup\n v-for=\"(resultNode, index) in result.nodes\"\n :key=\"index\"\n >\n <NButton\n @click=\"updateFocusNode(resultNode)\"\n size=\"small\"\n :style=\"getNodeStyle(resultNode, focusNode)\"\n >\n {{ getNodeLabel(resultNode) }}\n </NButton>\n </NButtonGroup>\n </template>\n </div>\n <div un=\"h-10px\"></div>\n </NScrollbar>\n </NCollapseItem>\n </NCollapse>\n </div>\n </DraggableCard>\n</template>\n","import type { SlotsType } from 'vue';\n\nconst emptyArray = [] as [];\nconst GapList = defineComponent<\n { tag?: string; virtual?: boolean },\n {},\n string,\n SlotsType<{\n default: () => VNode[];\n gap: (props: { index: number }) => VNode[];\n }>\n>(\n (props, ctx) => {\n const tag = computed(() => props.tag || 'div');\n return () => {\n const defaultNodes = (ctx.slots.default?.() || emptyArray).filter((n) => {\n return typeof n.type !== 'symbol'; // remove comment nodes\n });\n const nodes: typeof defaultNodes = [];\n if (defaultNodes.length > 0) {\n nodes.push(defaultNodes[0]);\n }\n if (defaultNodes.length > 1) {\n for (let i = 1; i < defaultNodes.length; i++) {\n const gapNodes = ctx.slots.gap?.({ index: i - 1 }) || emptyArray;\n nodes.push(...gapNodes);\n nodes.push(defaultNodes[i]);\n }\n }\n if (props.virtual) return nodes;\n return h(tag.value, props, nodes);\n };\n },\n { props: ['tag', 'virtual'] },\n);\n\nexport default GapList;\n","<script setup lang=\"tsx\">\nimport ActionCard from '@/components/ActionCard.vue';\nimport GapList from '@/components/GapList';\nimport { message } from '@/utils/discrete';\nimport {\n getAppInfo,\n getDevice,\n getGkdAppInfo,\n getNodeLabel,\n getNodeStyle,\n} from '@/utils/node';\nimport { copy, delay } from '@/utils/others';\nimport type { RawNode, Snapshot } from '@/utils/types';\nimport type { TreeInst } from 'naive-ui';\nimport type { HTMLAttributes, ShallowRef } from 'vue';\n\nconst router = useRouter();\n\nconst snapshotStore = useSnapshotStore();\nconst { updateFocusNode } = snapshotStore;\nconst snapshotRefs = storeToRefs(snapshotStore);\nconst snapshot = snapshotRefs.snapshot as ShallowRef<Snapshot>;\nconst rootNode = snapshotRefs.rootNode as ShallowRef<RawNode>;\nconst { focusNode, focusTime } = snapshotRefs;\n\nlet lastClickId = Number.NaN;\nconst expandedKeys = shallowRef<number[]>([]);\nconst selectedKeys = shallowRef<number[]>([]);\nwatch([() => focusNode.value, () => focusTime.value], async () => {\n if (!focusNode.value) return;\n const key = focusNode.value.id;\n nextTick().then(async () => {\n await delay(300);\n if (key === focusNode.value?.id) {\n if (lastClickId === key) {\n // 当点击节点树中的节点时, 不滚动\n lastClickId = Number.NaN;\n return;\n }\n // NTree 被 virtualScroll 包裹后, treeRef.value?.scrollTo 无效, 使用 scrollIntoView\n const item = document.querySelector<HTMLElement>(\n `[data-node-id=\"${key}\"]`,\n );\n if (!item) return;\n selectedKeys.value = [key];\n item.scrollIntoView({ behavior: 'smooth', block: 'center' });\n }\n });\n let parent = focusNode.value.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 === focusNode.value?.id;\n};\nconst treeNodeProps = (info: {\n option: RawNode;\n}): HTMLAttributes & Record<string, unknown> => {\n const style = getNodeStyle(info.option, focusNode.value);\n return {\n onClick: () => {\n lastClickId = info.option.id;\n updateFocusNode(info.option);\n },\n style: {\n '--n-node-text-color': style.color,\n ...style,\n },\n class: 'whitespace-nowrap',\n 'data-node-id': String(info.option.id),\n };\n};\n\nconst renderLabel = (info: {\n option: RawNode;\n checked: boolean;\n selected: boolean;\n}) => {\n return getNodeLabel(info.option);\n};\n\nconst deviceName = computed(() => {\n return `${getDevice(snapshot.value).manufacturer} Android ${getDevice(snapshot.value).release || ``}`;\n});\n\nconst isSystem = computed(() => {\n return getAppInfo(snapshot.value).isSystem;\n});\nconst activityId = computed(() => {\n const v = snapshot.value.activityId;\n const appId = snapshot.value.appId;\n if (!v || !appId) return '';\n if (v.startsWith(appId) && v[appId.length] === '.') {\n return v.substring(appId.length);\n }\n return v;\n});\n\nconst onDelete = async () => {\n message.success(`删除成功,即将回到首页`);\n await delay(2000);\n router.replace({\n path: `/`,\n });\n};\n</script>\n\n<template>\n <div flex flex-col overflow-hidden>\n <div flex items-center px-8px>\n <GapList flex flex-wrap items-center gap-8px gkd_code>\n <template #gap>\n <div w-1px bg-gray h-12px></div>\n </template>\n <NTooltip>\n <template #trigger>\n <div @click=\"copy(deviceName)\">\n {{ deviceName }}\n </div>\n </template>\n 设备名称\n </NTooltip>\n\n <NTooltip>\n <template #trigger>\n <div\n :class=\"{\n 'opacity-50': !getGkdAppInfo(snapshot).versionName,\n }\"\n >\n {{ getGkdAppInfo(snapshot).versionName || 'null' }}\n </div>\n </template>\n GKD 版本\n </NTooltip>\n\n <div flex items-center gap-2px max-w-120px>\n <NTooltip v-if=\"isSystem\">\n <template #trigger>\n <SvgIcon name=\"system\" />\n </template>\n {{ `${getAppInfo(snapshot).name} 是一个系统应用` }}\n </NTooltip>\n <NTooltip>\n <template #trigger>\n <div @click=\"copy(getAppInfo(snapshot).name)\">\n {{ getAppInfo(snapshot).name }}\n </div>\n </template>\n 应用名称\n </NTooltip>\n </div>\n\n <NTooltip>\n <template #trigger>\n <div @click=\"copy(getAppInfo(snapshot).versionName)\">\n {{ getAppInfo(snapshot).versionName }}\n </div>\n </template>\n 版本名称\n </NTooltip>\n\n <NTooltip>\n <template #trigger>\n <div @click=\"copy(getAppInfo(snapshot).versionCode.toString())\">\n {{ getAppInfo(snapshot).versionCode }}\n </div>\n </template>\n 版本代码\n </NTooltip>\n\n <NTooltip>\n <template #trigger>\n <div @click=\"copy(snapshot.appId)\">\n {{ snapshot.appId }}\n </div>\n </template>\n 应用ID\n </NTooltip>\n\n <NTooltip>\n <template #trigger>\n <div\n @click=\"copy(activityId)\"\n :class=\"{\n 'opacity-50': !activityId,\n }\"\n >\n {{ activityId || 'null' }}\n </div>\n </template>\n 界面ID\n </NTooltip>\n </GapList>\n <div flex-1></div>\n <ActionCard\n class=\"ml-8px\"\n :snapshot=\"snapshot\"\n @delete=\"onDelete\"\n :showPreview=\"false\"\n />\n </div>\n <div h-1px mt-4px bg=\"#efeff5\"></div>\n\n <NScrollbar xScrollable class=\"flex-1\">\n <NTree\n class=\"mb-24px mr-24px\"\n ref=\"treeRef\"\n virtualScroll\n showLine\n blockLine\n keyField=\"id\"\n v-model:expandedKeys=\"expandedKeys\"\n v-model:selectedKeys=\"selectedKeys\"\n :data=\"[rootNode as any]\"\n :filter=\"(treeFilter as any)\"\n :nodeProps=\"(treeNodeProps as any)\"\n :renderLabel=\"(renderLabel as any)\"\n />\n </NScrollbar>\n </div>\n</template>\n","<script lang=\"ts\" setup>\nimport { loadingBar, message } from '@/utils/discrete';\nimport AttrCard from './AttrCard.vue';\nimport OverlapCard from './OverlapCard.vue';\nimport RuleCard from './RuleCard.vue';\nimport ScreenshotCard from './ScreenshotCard.vue';\nimport SearchCard from './SearchCard.vue';\nimport WindowCard from './WindowCard.vue';\n\nconst snapshotStore = useSnapshotStore();\nconst snapshotRefs = storeToRefs(snapshotStore);\nconst { snapshot, rootNode, loading, redirected } = snapshotRefs;\n\nwatchEffect(() => {\n if (loading.value) {\n loadingBar.start();\n } else {\n loadingBar.finish();\n }\n});\n\nconst searchShow = useStorage('searchShow', true, sessionStorage);\nconst ruleShow = useStorage('ruleShow', false, sessionStorage);\nconst attrShow = useStorage('attrShow', true, sessionStorage);\n\nconst clickSettings = () => {\n message.info('暂未实现');\n};\n</script>\n<template>\n <template v-if=\"snapshot && rootNode\">\n <div h-full flex gap-5px>\n <div w-28px py-8px flex flex-col gap-16px>\n <NTooltip placement=\"right\">\n <template #trigger>\n <NButton text>\n <template #icon>\n <RouterLink to=\"/\" title=\"\" color=\"inherit\">\n <NIcon size=\"24\">\n <SvgIcon name=\"home\" />\n </NIcon>\n </RouterLink>\n </template>\n </NButton>\n </template>\n 回到首页\n </NTooltip>\n <NTooltip placement=\"right\">\n <template #trigger>\n <NButton @click=\"clickSettings\" text>\n <template #icon>\n <NIcon size=\"24\">\n <SvgIcon name=\"settings\" />\n </NIcon>\n </template>\n </NButton>\n </template>\n 设置\n </NTooltip>\n <div></div>\n <NTooltip placement=\"right\">\n <template #trigger>\n <NButton text @click=\"searchShow = !searchShow\">\n <template #icon>\n <NIcon size=\"24\">\n <SvgIcon name=\"search-list\" />\n </NIcon>\n </template>\n </NButton>\n </template>\n 搜索面板\n </NTooltip>\n <NTooltip placement=\"right\">\n <template #trigger>\n <NButton @click=\"attrShow = !attrShow\" text>\n <template #icon>\n <NIcon size=\"24\">\n <SvgIcon name=\"prop\" />\n </NIcon>\n </template>\n </NButton>\n </template>\n 属性面板\n </NTooltip>\n <NTooltip placement=\"right\">\n <template #trigger>\n <NButton @click=\"ruleShow = !ruleShow\" text>\n <template #icon>\n <NIcon size=\"24\">\n <SvgIcon name=\"test\" />\n </NIcon>\n </template>\n </NButton>\n </template>\n 测试规则\n </NTooltip>\n <div></div>\n <NTooltip placement=\"right\">\n <template #trigger>\n <a\n flex\n justify-center\n href=\"https://gkd.li/guide/snapshot#share-note\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <NButton text>\n <template #icon>\n <NIcon size=\"24\">\n <SvgIcon name=\"warn\" />\n </NIcon>\n </template>\n </NButton>\n </a>\n </template>\n 分享须知\n </NTooltip>\n </div>\n <ScreenshotCard />\n <WindowCard class=\"flex-1\" />\n </div>\n\n <SearchCard :show=\"searchShow\" @updateShow=\"searchShow = $event\" />\n <RuleCard :show=\"ruleShow\" @updateShow=\"ruleShow = $event\" />\n <AttrCard :show=\"attrShow\" @updateShow=\"attrShow = $event\" />\n <OverlapCard />\n </template>\n <div v-else-if=\"!loading && !redirected\" flex justify-center pt-80px>\n <div>快照数据缺失</div>\n </div>\n</template>\n"],"names":["createDataKey","key","ChevronLeftIcon","defineComponent","h","SwitcherIcon","zero","n1","createLeftBorderStyle","type","cM","c","cB","cE","createTopBorderStyle","style$3","cNotM","buttonGroupProps","__unplugin_components_6$1","props","mergedClsPrefixRef","mergedRtlRef","useConfig","useStyle","style","provide","buttonGroupInjectionKey","useRtl","mergedClsPrefix","self","vars","fontWeight","textColor1","textColor2","textColorDisabled","dividerColor","fontSize","collapseLight","commonLight","style$2","fadeInHeightExpandTransition","collapseProps","useTheme","collapseInjectionKey","createInjectionKey","__unplugin_components_9","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","__unplugin_components_8","randomName","createId","mergedNameRef","useMemo","NCollapse","inject","throwError","expandedNamesRef","collapseSlots","collapsedRef","expandedName","e","happensInArea","happensIn","$slots","arrowPlacement","collapsed","mergedDisplayDirective","disabled","triggerAreas","headerNode","resolveSlotWithTypedProps","headerExtraSlot","arrowSlot","area","NBaseIcon","ArrowLeftIcon","ArrowRightIcon","resolveWrappedSlotWithProps","children","sizeVariables","cardColor","modalColor","popoverColor","tableHeaderColor","tableColorStriped","borderRadius","fontWeightStrong","lineHeight","fontSizeSmall","fontSizeMedium","fontSizeLarge","composite","tableLight","borderRadiusSmall","hoverColor","pressedColor","primaryColor","textColor3","changeColor","treeLight","createTheme","checkboxLight","scrollbarLight","emptyLight","scrollbarProps","Scrollbar","scrollbarInstRef","args","NScrollbar","style$1","insideModal","insidePopover","tableProps","__unplugin_components_7","size","borderColor","tdColor","tdColorModal","tdColorPopover","thColor","thColorModal","thColorPopover","thTextColor","tdTextColor","thFontWeight","borderColorModal","borderColorPopover","tdColorStriped","tdColorStripedModal","tdColorStripedPopover","createKey","tdPadding","thPadding","__unplugin_components_6","__unplugin_components_3","__unplugin_components_5","treeSelectInjectionKey","renderDropMark","position","offsetLevel","indent","el","cssPosition","defaultAllowDrop","dropPosition","node","treeInjectionKey","useKeyboard","fNodesRef","mergedExpandedKeysRef","mergedSelectedKeysRef","mergedCheckedKeysRef","handleCheck","handleSelect","handleSwitcherClick","mergedSelectedKeys","treeSelectInjection","pendingNodeKeyRef","handleKeydown","pendingNodeKey","enterBehavior","fNodes","fIndex","tmNode","pendingNode","parentTmNode","NTreeNodeCheckbox","NTree","doCheck","value","onCheck","handleUpdateValue","mergedTheme","checked","indeterminate","focusable","NCheckbox","NTreeNodeContent","renderLabelRef","renderPrefixRef","renderSuffixRef","labelFieldRef","selfRef","doClick","onClick","handleClick","labelField","nodeProps","selected","renderLabel","renderPrefix","renderSuffix","onDragstart","rawNode","prefix","suffix","label","render","NTreeNodeSwitcher","renderSwitcherIconRef","expanded","hide","NIconSwitchTransition","NBaseLoading","renderSwitcherIcon","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","onLoad","selectableRef","checkableRef","checkedRef","mergedCheckOnClickRef","checkable","checkOnClick","_handleClick","expandOnClick","selectable","mergedCheckOnClick","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","MotionWrapper","FadeInExpandTransition","pxfy","iconSwitchTransitionNode","iconSwitchTransition","__awaiter","thisArg","_arguments","P","generator","adopt","resolve","reject","fulfilled","step","rejected","result","createTreeMateOptions","getChildren","treeSharedProps","treeProps","__unplugin_components_1","selfElRef","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","exposedMethods","nodeBorderRadius","nodeColorHover","nodeColorPressed","nodeColorActive","loadingColor","nodeTextColor","nodeTextColorDisabled","dropMarkColor","nodeWrapperPadding","lineColor","lineOffsetTop","getPadding","lineOffsetBottom","nodeContentHeight","internalRenderEmpty","blockNode","internalFocusable","rtlEnabled","mergedFocusable","tabindex","treeClass","createNode","NTreeNode","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","currentMaxZIndex","useZindex","zIndex","transition","__props","isLeft","isTop","leftDragBar","w","rightDragBar","currentStyle","width","widthStyle","yStyle","moved","box","boxDiv","updateTarget","arg","setTop","getRemoteImportId","id","r","useSnapshotStore","defineStore","route","useRoute","router","useRouter","settingsStore","useSettingsStore","storageStore","useStorageStore","snapshotImportId","snapshotImageId","importSnapshotId","snapshotId","watchImmediate","v","toInteger","importId","imageId","snapshot","getAppInfo","screenshot","screenshotUrl","redirected","update","useTask","snapshotStorage","screenshotStorage","remoteImportId","loading","autoUpload","gmOk","exportSnapshotAsImageId","exportSnapshotAsImportId","detectSnapshot","rootNode","listToTree","missNodeSize","focusNode","focusTime","focusPosition","overlapNodes","updateFocusNode","updatePosition","resultNodes","findNodesByXy","track","storeToRefs","attrTip","lenAttrNames","attrs","attr","_c","selectText","getNodeSelectorText","snapshotStore","instantiate","wasmSource","js_code","message","wasmTypeName","stack","error","x","src","srcOffset","srcLength","dstAddr","mem16","wasmExports","arrayIndex","srcIndex","address","length","str","f","p0","wasmInstance","importObject","wasmModule","matchesWasmUrl","wasmLoadTask","matchesInstantiate","mod","toMatches","updateWasmToMatches","useGlobalStore","getNodeAttr","getNodeInvoke","transform","Transform","getStringAttr","QueryContext","isRawNode","getIntInvoke","getBooleanInvoke","getStringInvoke","typeInfo","initDefaultTypeInfo","matchOption","MatchOption","parseSelector","source","Selector","binaryExpressionList","fastQueryList","connectSegmentList","selector","b","p","exp","windowSize","useWindowSize","vw","gkdWidth","snapshotRefs","text","lazyText","refDebounced","toArray","s","checkRule","obj","matches","anyMatches","excludeMatches","resolvedMatches","matchesResult","notIndex","resolvedAnyMatches","anyMatchesResult","resolvedExcludeMatches","excludeMatchesResult","isObj","dataRef","JSON5","group","rules","rule","errorText","targetNode","imgBounding","useElementBounding","imgRef","imgLoadTime","clickImg","img","imgRect","innerHeight","offsetTop","y","percent","imgSize","useElementSize","positionStyle","imgWidth","imgHeight","imgHover","hoverPosition","boxHoverPosition","ox","oy","boxHoverPerPosition","hoverPositionStyle","imgMove","selectorText","selectorResults","searchSelector","errorWrap","GkdException","results","searchString","getNodeLabel","refreshExpandedKeys","newResult","newNode","allKeys","newKeys","k","searchBySelector","errorTry","enableSearchBySelector","count","base64url.decode","generateRules","snapshotUrls","getImportUrl","exampleUrls","getImagUrl","fastQuery","FastQuery","dayjs","copy","hasZipId","shareResult","importUrl","base64url.encode","emptyArray","GapList","ctx","tag","defaultNodes","gapNodes","_d","lastClickId","Number","NaN","then","delay","document","querySelector","scrollIntoView","behavior","block","parent","Set","add","every","has","treeRef","treeFilter","treeNodeProps","getNodeStyle","color","class","String","deviceName","getDevice","manufacturer","release","isSystem","activityId","appId","startsWith","substring","onDelete","success","replace","loadingBar","searchShow","useStorage","ruleShow","attrShow","clickSettings"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,36,37]}
|