@gkd-kit/inspect 0.0.1731084791572 → 0.0.1731131142231

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/dist/assets/{ActionCard.vue_vue_type_script_setup_true_lang-BfL7_bDl.js → ActionCard.vue_vue_type_script_setup_true_lang-Dy7vQdbM.js} +2 -2
  2. package/dist/assets/{ActionCard.vue_vue_type_script_setup_true_lang-BfL7_bDl.js.map → ActionCard.vue_vue_type_script_setup_true_lang-Dy7vQdbM.js.map} +1 -1
  3. package/dist/assets/{DevicePage-D85U8KKi.js → DevicePage-dQp4oRI6.js} +2 -2
  4. package/dist/assets/{DevicePage-D85U8KKi.js.map → DevicePage-dQp4oRI6.js.map} +1 -1
  5. package/dist/assets/{HomePage-DKKKeVst.js → HomePage-DrhpQ2Ed.js} +2 -2
  6. package/dist/assets/{HomePage-DKKKeVst.js.map → HomePage-DrhpQ2Ed.js.map} +1 -1
  7. package/dist/assets/{ImportPage-D14MPdlH.js → ImportPage-U85yH4vu.js} +2 -2
  8. package/dist/assets/{ImportPage-D14MPdlH.js.map → ImportPage-U85yH4vu.js.map} +1 -1
  9. package/dist/assets/{SelectorPage-CAMgkAM7.js → SelectorPage-BSc8-745.js} +2 -2
  10. package/dist/assets/SelectorPage-BSc8-745.js.map +1 -0
  11. package/dist/assets/SnapshotPage-BJ9I8-3p.js +277 -0
  12. package/dist/assets/SnapshotPage-BJ9I8-3p.js.map +1 -0
  13. package/dist/assets/{TrackGraph-CVB7c2cY.js → TrackGraph-xXZ46e3J.js} +2 -2
  14. package/dist/assets/{TrackGraph-CVB7c2cY.js.map → TrackGraph-xXZ46e3J.js.map} +1 -1
  15. package/dist/assets/{_404Page-CjZz9IjJ.js → _404Page-C3EtApVf.js} +2 -2
  16. package/dist/assets/{_404Page-CjZz9IjJ.js.map → _404Page-C3EtApVf.js.map} +1 -1
  17. package/dist/assets/{dayjs.min-DTqy9NsY.js → dayjs.min-BJHF8Mj1.js} +2 -2
  18. package/dist/assets/{dayjs.min-DTqy9NsY.js.map → dayjs.min-BJHF8Mj1.js.map} +1 -1
  19. package/dist/assets/{error-CzBRKQfE.js → error-Dr4GLHRS.js} +2 -2
  20. package/dist/assets/{error-CzBRKQfE.js.map → error-Dr4GLHRS.js.map} +1 -1
  21. package/dist/assets/{export-ajUyVjgy.js → export-4CrrOEIG.js} +4 -4
  22. package/dist/assets/{export-ajUyVjgy.js.map → export-4CrrOEIG.js.map} +1 -1
  23. package/dist/assets/{import-jbiQZOel.js → import-CiWj-daV.js} +2 -2
  24. package/dist/assets/{import-jbiQZOel.js.map → import-CiWj-daV.js.map} +1 -1
  25. package/dist/assets/{index-Bn_rOfk2.js → index-DaNW8YYZ.js} +8 -6
  26. package/dist/assets/index-DaNW8YYZ.js.map +1 -0
  27. package/dist/assets/{jszip.min-BAIqXUkl.js → jszip.min-Bv9g0V7L.js} +2 -2
  28. package/dist/assets/{jszip.min-BAIqXUkl.js.map → jszip.min-Bv9g0V7L.js.map} +1 -1
  29. package/dist/assets/{snapshot-DiQCX7wv.js → snapshot-BMAEQfaw.js} +2 -2
  30. package/dist/assets/{snapshot-DiQCX7wv.js.map → snapshot-BMAEQfaw.js.map} +1 -1
  31. package/dist/assets/{table-jL1lvmx9.js → table-BwpeEDOE.js} +2 -2
  32. package/dist/assets/{table-jL1lvmx9.js.map → table-BwpeEDOE.js.map} +1 -1
  33. package/dist/index.html +3 -3
  34. package/package.json +1 -1
  35. package/dist/assets/SelectorPage-CAMgkAM7.js.map +0 -1
  36. package/dist/assets/SnapshotPage-G7ZhuWoI.js +0 -277
  37. package/dist/assets/SnapshotPage-G7ZhuWoI.js.map +0 -1
  38. package/dist/assets/index-Bn_rOfk2.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"HomePage-DKKKeVst.js","sources":["../../node_modules/.pnpm/naive-ui@2.40.1_vue@3.5.11_typescript@5.6.3_/node_modules/naive-ui/es/switch/styles/_common.mjs","../../node_modules/.pnpm/naive-ui@2.40.1_vue@3.5.11_typescript@5.6.3_/node_modules/naive-ui/es/switch/styles/light.mjs","../../node_modules/.pnpm/naive-ui@2.40.1_vue@3.5.11_typescript@5.6.3_/node_modules/naive-ui/es/switch/src/styles/index.cssr.mjs","../../node_modules/.pnpm/naive-ui@2.40.1_vue@3.5.11_typescript@5.6.3_/node_modules/naive-ui/es/switch/src/Switch.mjs","../../src/views/home/HomePage.vue"],"sourcesContent":["export default {\n buttonHeightSmall: '14px',\n buttonHeightMedium: '18px',\n buttonHeightLarge: '22px',\n buttonWidthSmall: '14px',\n buttonWidthMedium: '18px',\n buttonWidthLarge: '22px',\n buttonWidthPressedSmall: '20px',\n buttonWidthPressedMedium: '24px',\n buttonWidthPressedLarge: '28px',\n railHeightSmall: '18px',\n railHeightMedium: '22px',\n railHeightLarge: '26px',\n railWidthSmall: '32px',\n railWidthMedium: '40px',\n railWidthLarge: '48px'\n};","import { changeColor } from 'seemly';\nimport { commonLight } from \"../../_styles/common/index.mjs\";\nimport commonVars from \"./_common.mjs\";\nfunction self(vars) {\n const {\n primaryColor,\n opacityDisabled,\n borderRadius,\n textColor3\n } = vars;\n const railOverlayColor = 'rgba(0, 0, 0, .14)';\n return Object.assign(Object.assign({}, commonVars), {\n iconColor: textColor3,\n textColor: 'white',\n loadingColor: primaryColor,\n opacityDisabled,\n railColor: railOverlayColor,\n railColorActive: primaryColor,\n buttonBoxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.3), inset 0 0 1px 0 rgba(0, 0, 0, 0.05)',\n buttonColor: '#FFF',\n railBorderRadiusSmall: borderRadius,\n railBorderRadiusMedium: borderRadius,\n railBorderRadiusLarge: borderRadius,\n buttonBorderRadiusSmall: borderRadius,\n buttonBorderRadiusMedium: borderRadius,\n buttonBorderRadiusLarge: borderRadius,\n boxShadowFocus: `0 0 0 2px ${changeColor(primaryColor, {\n alpha: 0.2\n })}`\n });\n}\nconst switchLight = {\n name: 'Switch',\n common: commonLight,\n self\n};\nexport default switchLight;","import { iconSwitchTransition } from \"../../../_styles/transitions/icon-switch.cssr.mjs\";\nimport { c, cB, cE, cM, cNotM } from \"../../../_utils/cssr/index.mjs\";\n// vars:\n// --n-bezier\n// --n-button-border-radius\n// --n-button-box-shadow\n// --n-button-color\n// --n-button-width\n// --n-button-width-pressed\n// --n-height\n// --n-offset\n// --n-rail-border-radius\n// --n-rail-color\n// --n-rail-color-active\n// --n-rail-height\n// --n-rail-width\n// --n-width\n// --n-box-shadow-focus\n// --n-loading-color\n// --n-text-color\n// --n-icon-color\nexport default cB('switch', `\n height: var(--n-height);\n min-width: var(--n-width);\n vertical-align: middle;\n user-select: none;\n -webkit-user-select: none;\n display: inline-flex;\n outline: none;\n justify-content: center;\n align-items: center;\n`, [cE('children-placeholder', `\n height: var(--n-rail-height);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n pointer-events: none;\n visibility: hidden;\n `), cE('rail-placeholder', `\n display: flex;\n flex-wrap: none;\n `), cE('button-placeholder', `\n width: calc(1.75 * var(--n-rail-height));\n height: var(--n-rail-height);\n `), cB('base-loading', `\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translateX(-50%) translateY(-50%);\n font-size: calc(var(--n-button-width) - 4px);\n color: var(--n-loading-color);\n transition: color .3s var(--n-bezier);\n `, [iconSwitchTransition({\n left: '50%',\n top: '50%',\n originalTransform: 'translateX(-50%) translateY(-50%)'\n})]), cE('checked, unchecked', `\n transition: color .3s var(--n-bezier);\n color: var(--n-text-color);\n box-sizing: border-box;\n position: absolute;\n white-space: nowrap;\n top: 0;\n bottom: 0;\n display: flex;\n align-items: center;\n line-height: 1;\n `), cE('checked', `\n right: 0;\n padding-right: calc(1.25 * var(--n-rail-height) - var(--n-offset));\n `), cE('unchecked', `\n left: 0;\n justify-content: flex-end;\n padding-left: calc(1.25 * var(--n-rail-height) - var(--n-offset));\n `), c('&:focus', [cE('rail', `\n box-shadow: var(--n-box-shadow-focus);\n `)]), cM('round', [cE('rail', 'border-radius: calc(var(--n-rail-height) / 2);', [cE('button', 'border-radius: calc(var(--n-button-height) / 2);')])]), cNotM('disabled', [cNotM('icon', [cM('rubber-band', [cM('pressed', [cE('rail', [cE('button', 'max-width: var(--n-button-width-pressed);')])]), cE('rail', [c('&:active', [cE('button', 'max-width: var(--n-button-width-pressed);')])]), cM('active', [cM('pressed', [cE('rail', [cE('button', 'left: calc(100% - var(--n-offset) - var(--n-button-width-pressed));')])]), cE('rail', [c('&:active', [cE('button', 'left: calc(100% - var(--n-offset) - var(--n-button-width-pressed));')])])])])])]), cM('active', [cE('rail', [cE('button', 'left: calc(100% - var(--n-button-width) - var(--n-offset))')])]), cE('rail', `\n overflow: hidden;\n height: var(--n-rail-height);\n min-width: var(--n-rail-width);\n border-radius: var(--n-rail-border-radius);\n cursor: pointer;\n position: relative;\n transition:\n opacity .3s var(--n-bezier),\n background .3s var(--n-bezier),\n box-shadow .3s var(--n-bezier);\n background-color: var(--n-rail-color);\n `, [cE('button-icon', `\n color: var(--n-icon-color);\n transition: color .3s var(--n-bezier);\n font-size: calc(var(--n-button-height) - 4px);\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n line-height: 1;\n `, [iconSwitchTransition()]), cE('button', `\n align-items: center; \n top: var(--n-offset);\n left: var(--n-offset);\n height: var(--n-button-height);\n width: var(--n-button-width-pressed);\n max-width: var(--n-button-width);\n border-radius: var(--n-button-border-radius);\n background-color: var(--n-button-color);\n box-shadow: var(--n-button-box-shadow);\n box-sizing: border-box;\n cursor: inherit;\n content: \"\";\n position: absolute;\n transition:\n background-color .3s var(--n-bezier),\n left .3s var(--n-bezier),\n opacity .3s var(--n-bezier),\n max-width .3s var(--n-bezier),\n box-shadow .3s var(--n-bezier);\n `)]), cM('active', [cE('rail', 'background-color: var(--n-rail-color-active);')]), cM('loading', [cE('rail', `\n cursor: wait;\n `)]), cM('disabled', [cE('rail', `\n cursor: not-allowed;\n opacity: .5;\n `)])]);","import { computed, defineComponent, h, ref, toRef, watchEffect } from 'vue';\nimport { depx, pxfy } from 'seemly';\nimport { useMergedState } from 'vooks';\nimport { useConfig, useFormItem, useTheme, useThemeClass } from \"../../_mixins/index.mjs\";\nimport { NBaseLoading, NIconSwitchTransition } from \"../../_internal/index.mjs\";\nimport { call, createKey, isSlotEmpty, resolveWrappedSlot, warnOnce } from \"../../_utils/index.mjs\";\nimport { switchLight } from \"../styles/index.mjs\";\nimport style from \"./styles/index.cssr.mjs\";\nexport const switchProps = Object.assign(Object.assign({}, useTheme.props), {\n size: {\n type: String,\n default: 'medium'\n },\n value: {\n type: [String, Number, Boolean],\n default: undefined\n },\n loading: Boolean,\n defaultValue: {\n type: [String, Number, Boolean],\n default: false\n },\n disabled: {\n type: Boolean,\n default: undefined\n },\n round: {\n type: Boolean,\n default: true\n },\n 'onUpdate:value': [Function, Array],\n onUpdateValue: [Function, Array],\n checkedValue: {\n type: [String, Number, Boolean],\n default: true\n },\n uncheckedValue: {\n type: [String, Number, Boolean],\n default: false\n },\n railStyle: Function,\n rubberBand: {\n type: Boolean,\n default: true\n },\n /** @deprecated */\n onChange: [Function, Array]\n});\nlet supportCssMax;\nexport default defineComponent({\n name: 'Switch',\n props: switchProps,\n setup(props) {\n if (process.env.NODE_ENV !== 'production') {\n watchEffect(() => {\n if (props.onChange) {\n warnOnce('switch', '`on-change` is deprecated, please use `on-update:value` instead.');\n }\n });\n }\n if (supportCssMax === undefined) {\n if (typeof CSS !== 'undefined') {\n if (typeof CSS.supports !== 'undefined') {\n supportCssMax = CSS.supports('width', 'max(1px)');\n } else {\n supportCssMax = false;\n }\n } else {\n // If you are using SSR, we assume that you are targeting browsers with\n // recent versions\n supportCssMax = true;\n }\n }\n const {\n mergedClsPrefixRef,\n inlineThemeDisabled\n } = useConfig(props);\n const themeRef = useTheme('Switch', '-switch', style, switchLight, props, mergedClsPrefixRef);\n const formItem = useFormItem(props);\n const {\n mergedSizeRef,\n mergedDisabledRef\n } = formItem;\n const uncontrolledValueRef = ref(props.defaultValue);\n const controlledValueRef = toRef(props, 'value');\n const mergedValueRef = useMergedState(controlledValueRef, uncontrolledValueRef);\n const checkedRef = computed(() => {\n return mergedValueRef.value === props.checkedValue;\n });\n const pressedRef = ref(false);\n const focusedRef = ref(false);\n const mergedRailStyleRef = computed(() => {\n const {\n railStyle\n } = props;\n if (!railStyle) return undefined;\n return railStyle({\n focused: focusedRef.value,\n checked: checkedRef.value\n });\n });\n function doUpdateValue(value) {\n const {\n 'onUpdate:value': _onUpdateValue,\n onChange,\n onUpdateValue\n } = props;\n const {\n nTriggerFormInput,\n nTriggerFormChange\n } = formItem;\n if (_onUpdateValue) call(_onUpdateValue, value);\n if (onUpdateValue) call(onUpdateValue, value);\n if (onChange) call(onChange, value);\n uncontrolledValueRef.value = value;\n nTriggerFormInput();\n nTriggerFormChange();\n }\n function doFocus() {\n const {\n nTriggerFormFocus\n } = formItem;\n nTriggerFormFocus();\n }\n function doBlur() {\n const {\n nTriggerFormBlur\n } = formItem;\n nTriggerFormBlur();\n }\n function handleClick() {\n if (props.loading || mergedDisabledRef.value) return;\n if (mergedValueRef.value !== props.checkedValue) {\n doUpdateValue(props.checkedValue);\n } else {\n doUpdateValue(props.uncheckedValue);\n }\n }\n function handleFocus() {\n focusedRef.value = true;\n doFocus();\n }\n function handleBlur() {\n focusedRef.value = false;\n doBlur();\n pressedRef.value = false;\n }\n function handleKeyup(e) {\n if (props.loading || mergedDisabledRef.value) return;\n if (e.key === ' ') {\n if (mergedValueRef.value !== props.checkedValue) {\n doUpdateValue(props.checkedValue);\n } else {\n doUpdateValue(props.uncheckedValue);\n }\n pressedRef.value = false;\n }\n }\n function handleKeydown(e) {\n if (props.loading || mergedDisabledRef.value) return;\n if (e.key === ' ') {\n e.preventDefault();\n pressedRef.value = true;\n }\n }\n const cssVarsRef = computed(() => {\n const {\n value: size\n } = mergedSizeRef;\n const {\n self: {\n opacityDisabled,\n railColor,\n railColorActive,\n buttonBoxShadow,\n buttonColor,\n boxShadowFocus,\n loadingColor,\n textColor,\n iconColor,\n [createKey('buttonHeight', size)]: buttonHeight,\n [createKey('buttonWidth', size)]: buttonWidth,\n [createKey('buttonWidthPressed', size)]: buttonWidthPressed,\n [createKey('railHeight', size)]: railHeight,\n [createKey('railWidth', size)]: railWidth,\n [createKey('railBorderRadius', size)]: railBorderRadius,\n [createKey('buttonBorderRadius', size)]: buttonBorderRadius\n },\n common: {\n cubicBezierEaseInOut\n }\n } = themeRef.value;\n let offset;\n let height;\n let width;\n if (supportCssMax) {\n offset = `calc((${railHeight} - ${buttonHeight}) / 2)`;\n height = `max(${railHeight}, ${buttonHeight})`;\n width = `max(${railWidth}, calc(${railWidth} + ${buttonHeight} - ${railHeight}))`;\n } else {\n offset = pxfy((depx(railHeight) - depx(buttonHeight)) / 2);\n height = pxfy(Math.max(depx(railHeight), depx(buttonHeight)));\n width = depx(railHeight) > depx(buttonHeight) ? railWidth : pxfy(depx(railWidth) + depx(buttonHeight) - depx(railHeight));\n }\n return {\n '--n-bezier': cubicBezierEaseInOut,\n '--n-button-border-radius': buttonBorderRadius,\n '--n-button-box-shadow': buttonBoxShadow,\n '--n-button-color': buttonColor,\n '--n-button-width': buttonWidth,\n '--n-button-width-pressed': buttonWidthPressed,\n '--n-button-height': buttonHeight,\n '--n-height': height,\n '--n-offset': offset,\n '--n-opacity-disabled': opacityDisabled,\n '--n-rail-border-radius': railBorderRadius,\n '--n-rail-color': railColor,\n '--n-rail-color-active': railColorActive,\n '--n-rail-height': railHeight,\n '--n-rail-width': railWidth,\n '--n-width': width,\n '--n-box-shadow-focus': boxShadowFocus,\n '--n-loading-color': loadingColor,\n '--n-text-color': textColor,\n '--n-icon-color': iconColor\n };\n });\n const themeClassHandle = inlineThemeDisabled ? useThemeClass('switch', computed(() => {\n return mergedSizeRef.value[0];\n }), cssVarsRef, props) : undefined;\n return {\n handleClick,\n handleBlur,\n handleFocus,\n handleKeyup,\n handleKeydown,\n mergedRailStyle: mergedRailStyleRef,\n pressed: pressedRef,\n mergedClsPrefix: mergedClsPrefixRef,\n mergedValue: mergedValueRef,\n checked: checkedRef,\n mergedDisabled: mergedDisabledRef,\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 const {\n mergedClsPrefix,\n mergedDisabled,\n checked,\n mergedRailStyle,\n onRender,\n $slots\n } = this;\n onRender === null || onRender === void 0 ? void 0 : onRender();\n const {\n checked: checkedSlot,\n unchecked: uncheckedSlot,\n icon: iconSlot,\n 'checked-icon': checkedIconSlot,\n 'unchecked-icon': uncheckedIconSlot\n } = $slots;\n const hasIcon = !(isSlotEmpty(iconSlot) && isSlotEmpty(checkedIconSlot) && isSlotEmpty(uncheckedIconSlot));\n return h(\"div\", {\n role: \"switch\",\n \"aria-checked\": checked,\n class: [`${mergedClsPrefix}-switch`, this.themeClass, hasIcon && `${mergedClsPrefix}-switch--icon`, checked && `${mergedClsPrefix}-switch--active`, mergedDisabled && `${mergedClsPrefix}-switch--disabled`, this.round && `${mergedClsPrefix}-switch--round`, this.loading && `${mergedClsPrefix}-switch--loading`, this.pressed && `${mergedClsPrefix}-switch--pressed`, this.rubberBand && `${mergedClsPrefix}-switch--rubber-band`],\n tabindex: !this.mergedDisabled ? 0 : undefined,\n style: this.cssVars,\n onClick: this.handleClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onKeyup: this.handleKeyup,\n onKeydown: this.handleKeydown\n }, h(\"div\", {\n class: `${mergedClsPrefix}-switch__rail`,\n \"aria-hidden\": \"true\",\n style: mergedRailStyle\n }, resolveWrappedSlot(checkedSlot, checkedSlotChildren => resolveWrappedSlot(uncheckedSlot, uncheckedSlotChildren => {\n if (checkedSlotChildren || uncheckedSlotChildren) {\n return h(\"div\", {\n \"aria-hidden\": true,\n class: `${mergedClsPrefix}-switch__children-placeholder`\n }, h(\"div\", {\n class: `${mergedClsPrefix}-switch__rail-placeholder`\n }, h(\"div\", {\n class: `${mergedClsPrefix}-switch__button-placeholder`\n }), checkedSlotChildren), h(\"div\", {\n class: `${mergedClsPrefix}-switch__rail-placeholder`\n }, h(\"div\", {\n class: `${mergedClsPrefix}-switch__button-placeholder`\n }), uncheckedSlotChildren));\n }\n return null;\n })), h(\"div\", {\n class: `${mergedClsPrefix}-switch__button`\n }, resolveWrappedSlot(iconSlot, icon => resolveWrappedSlot(checkedIconSlot, checkedIcon => resolveWrappedSlot(uncheckedIconSlot, uncheckedIcon => {\n return h(NIconSwitchTransition, null, {\n default: () => this.loading ? h(NBaseLoading, {\n key: \"loading\",\n clsPrefix: mergedClsPrefix,\n strokeWidth: 20\n }) : this.checked && (checkedIcon || icon) ? h(\"div\", {\n class: `${mergedClsPrefix}-switch__button-icon`,\n key: checkedIcon ? 'checked-icon' : 'icon'\n }, checkedIcon || icon) : !this.checked && (uncheckedIcon || icon) ? h(\"div\", {\n class: `${mergedClsPrefix}-switch__button-icon`,\n key: uncheckedIcon ? 'unchecked-icon' : 'icon'\n }, uncheckedIcon || icon) : null\n });\n }))), resolveWrappedSlot(checkedSlot, children => children && h(\"div\", {\n key: \"checked\",\n class: `${mergedClsPrefix}-switch__checked`\n }, children)), resolveWrappedSlot(uncheckedSlot, children => children && h(\"div\", {\n key: \"unchecked\",\n class: `${mergedClsPrefix}-switch__unchecked`\n }, children)))));\n }\n});","<script lang=\"tsx\" setup>\nimport ActionCard from '@/components/ActionCard.vue';\nimport { toValidURL } from '@/utils/check';\nimport { showTextDLg, waitShareAgree } from '@/utils/dialog';\nimport { dialog } from '@/utils/discrete';\nimport {\n batchCreateImageId,\n batchCreateZipUrl,\n batchJpgDownloadZip,\n batchZipDownloadZip,\n} from '@/utils/export';\nimport { importFromLocal, importFromNetwork } from '@/utils/import';\nimport { getAppInfo } from '@/utils/node';\nimport { shallowSnapshotStorage, snapshotStorage } from '@/utils/snapshot';\nimport { renderDevice, useSnapshotColumns } from '@/utils/table';\nimport { useTask } from '@/utils/task';\nimport type { Snapshot } from '@/utils/types';\nimport { getImagUrl } from '@/utils/url';\nimport type { DataTableColumns, PaginationProps } from 'naive-ui';\nimport type { SortState } from 'naive-ui/es/data-table/src/interface';\n\nconst settingsStore = useSettingsStore();\n\nconst snapshots = shallowRef<Snapshot[]>([]);\nconst loading = shallowRef(true);\nconst updateSnapshots = async () => {\n loading.value = true;\n snapshots.value = (await shallowSnapshotStorage.getAllItems()).reverse();\n checkedRowKeys.value = [];\n loading.value = false;\n};\nonMounted(updateSnapshots);\nconst filterOption = shallowReactive({\n query: ``,\n actualQuery: ``,\n updateQuery: () => {\n filterOption.actualQuery = filterOption.query.trim();\n checkedRowKeys.value = [];\n },\n});\nconst filterSnapshots = computed(() => {\n const actualQuery = filterOption.actualQuery;\n if (!actualQuery) return snapshots.value;\n return snapshots.value.filter((s) => {\n return (\n (getAppInfo(s).name || ``).includes(actualQuery) ||\n (s.appId || ``).includes(actualQuery) ||\n (s.activityId || ``).includes(actualQuery)\n );\n });\n});\n\nconst importLocal = useTask(async () => {\n await importFromLocal();\n await updateSnapshots();\n});\n\nconst {\n activityIdCol,\n appIdCol,\n appNameCol,\n ctimeCol,\n mtimeCol,\n deviceCol,\n appVersionCodeCol,\n appVersionNameCol,\n resetColWidth,\n} = useSnapshotColumns();\n\nwatchEffect(() => {\n const set = filterSnapshots.value.reduce(\n (p, c) => (p.add(renderDevice(c)), p),\n new Set<string>(),\n );\n if (set.size <= 1) {\n deviceCol.filterOptions = undefined;\n return;\n }\n deviceCol.filterOptions = [...set.values()].map((s) => ({\n value: s,\n label: s,\n }));\n});\n\nwatchEffect(() => {\n const set = filterSnapshots.value.reduce(\n (p, c) => (p.add(getAppInfo(c).name), p),\n new Set<string>(),\n );\n if (set.size <= 1) {\n appNameCol.filterOptions = undefined;\n return;\n }\n appNameCol.filterOptions = [...set.values()].map((s) => ({\n value: s,\n label: s,\n }));\n});\n\nwatchEffect(() => {\n const set = filterSnapshots.value.reduce(\n (p, c) => (p.add(c.activityId), p),\n new Set<string>(),\n );\n if (set.size <= 1) {\n activityIdCol.filterOptions = undefined;\n return;\n }\n activityIdCol.filterOptions = [...set.values()].map((s) => ({\n value: s,\n label: s,\n }));\n});\n\nconst columns: DataTableColumns<Snapshot> = reactive([\n {\n type: 'selection',\n },\n ctimeCol,\n mtimeCol,\n deviceCol,\n appNameCol,\n appIdCol,\n appVersionCodeCol,\n appVersionNameCol,\n activityIdCol,\n {\n key: `actions`,\n title: `操作`,\n fixed: 'right',\n width: `160px`,\n render(row) {\n return <ActionCard snapshot={row} onDelete={updateSnapshots} />;\n },\n },\n]);\n\nconst pagination = shallowReactive<PaginationProps>({\n page: 1,\n pageSize: 50,\n showSizePicker: true,\n pageSizes: [50, 100],\n onChange: (page: number) => {\n pagination.page = page;\n },\n onUpdatePageSize: (pageSize: number) => {\n pagination.pageSize = pageSize;\n pagination.page = 1;\n },\n});\nwatch(pagination, resetColWidth);\n\nconst handleSorterChange = (sorter: SortState) => {\n [ctimeCol, mtimeCol].forEach((c) => {\n if (sorter.columnKey != c.key) {\n c.sortOrder = undefined;\n } else {\n c.sortOrder = sorter.order;\n }\n });\n};\nmtimeCol.sortOrder = `descend`;\nconst showModal = shallowRef(false);\nconst text = shallowRef(``);\nconst importNetwork = useTask(async () => {\n const urls = text.value\n .trim()\n .split(`\\n`)\n .map((u) => u.trim())\n .filter((u) => toValidURL(u));\n if (urls.length == 0) return;\n await importFromNetwork(urls);\n await updateSnapshots();\n text.value = ``;\n});\n\nconst checkedRowKeys = shallowRef<number[]>([]);\nconst checkedSnapshots = () => {\n return Promise.all(\n checkedRowKeys.value.map(\n (id) => snapshotStorage.getItem(id) as Promise<Snapshot>,\n ),\n );\n};\nconst batchDelete = useTask(async () => {\n await new Promise((res, rej) => {\n dialog.warning({\n title: `删除`,\n content: `是否批量删除 ${checkedRowKeys.value.length} 个快照`,\n negativeText: `取消`,\n positiveText: `确认`,\n onClose: rej,\n onEsc: rej,\n onMaskClick: rej,\n onNegativeClick: rej,\n onPositiveClick: res,\n });\n });\n\n await Promise.all(\n checkedRowKeys.value.map((k) => snapshotStorage.removeItem(k)),\n );\n await updateSnapshots();\n});\nconst batchDownloadJpg = useTask(async () => {\n await batchJpgDownloadZip(await checkedSnapshots());\n});\nconst batchDownloadZip = useTask(async () => {\n await batchZipDownloadZip(await checkedSnapshots());\n});\n\nconst batchShareJpgUrl = useTask(async () => {\n await waitShareAgree();\n const imageIds = await batchCreateImageId(await checkedSnapshots());\n showTextDLg({\n content: imageIds.map((s) => getImagUrl(s)).join(`\\n`) + `\\n`,\n });\n});\nconst batchShareZipUrl = useTask(async () => {\n await waitShareAgree();\n const zipUrls = await batchCreateZipUrl(await checkedSnapshots());\n showTextDLg({\n content: zipUrls.map((s) => location.origin + '/i/' + s).join(`\\n`) + `\\n`,\n });\n});\n\nconst settingsDlgShow = shallowRef(false);\n</script>\n<template>\n <div flex flex-col p-10px gap-10px h-full>\n <div flex>\n <NSpace>\n <NInputGroup>\n <NInput\n placeholder=\"请输入应用名称/应用ID/界面ID\"\n clearable\n class=\"min-w-320px\"\n v-model:value=\"filterOption.query\"\n @keyup.enter=\"filterOption.updateQuery\"\n @change=\"filterOption.updateQuery\"\n ></NInput>\n <NButton @click=\"filterOption.updateQuery\">\n <template #icon>\n <NIcon>\n <svg viewBox=\"0 0 32 32\">\n <path\n d=\"M29 27.586l-7.552-7.552a11.018 11.018 0 1 0-1.414 1.414L27.586 29zM4 13a9 9 0 1 1 9 9a9.01 9.01 0 0 1-9-9z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </NIcon>\n </template>\n </NButton>\n </NInputGroup>\n <template v-if=\"checkedRowKeys.length\">\n <NPopover>\n <template #trigger>\n <NButton> 批量下载 </NButton>\n </template>\n <NSpace vertical>\n <NButton\n @click=\"batchDownloadZip.invoke\"\n :loading=\"batchDownloadZip.loading\"\n >\n 批量下载-快照\n </NButton>\n <NButton\n @click=\"batchDownloadJpg.invoke\"\n :loading=\"batchDownloadJpg.loading\"\n >\n 批量下载-图片\n </NButton>\n </NSpace>\n </NPopover>\n <NPopover>\n <template #trigger>\n <NButton> 批量分享 </NButton>\n </template>\n <NSpace vertical>\n <NButton\n @click=\"batchShareZipUrl.invoke\"\n :loading=\"batchShareZipUrl.loading\"\n >\n 批量生成链接-快照\n </NButton>\n <NButton\n @click=\"batchShareJpgUrl.invoke\"\n :loading=\"batchShareJpgUrl.loading\"\n >\n 批量生成链接-图片\n </NButton>\n </NSpace>\n </NPopover>\n <NButton @click=\"batchDelete.invoke\"> 批量删除 </NButton>\n <div h-full flex flex-items-center>\n {{ `已选中 ${checkedRowKeys.length} 个快照` }}\n </div>\n </template>\n </NSpace>\n <div flex-1></div>\n <div flex gap-24px items-center pr-8px>\n <NButton text title=\"设置\" @click=\"settingsDlgShow = true\">\n <template #icon>\n <NIcon :size=\"24\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <g fill=\"currentColor\" fill-rule=\"evenodd\" clip-rule=\"evenodd\">\n <path\n d=\"M12 8.25a3.75 3.75 0 1 0 0 7.5a3.75 3.75 0 0 0 0-7.5M9.75 12a2.25 2.25 0 1 1 4.5 0a2.25 2.25 0 0 1-4.5 0\"\n />\n <path\n d=\"M11.975 1.25c-.445 0-.816 0-1.12.02a2.8 2.8 0 0 0-.907.19a2.75 2.75 0 0 0-1.489 1.488c-.145.35-.184.72-.2 1.122a.87.87 0 0 1-.415.731a.87.87 0 0 1-.841-.005c-.356-.188-.696-.339-1.072-.389a2.75 2.75 0 0 0-2.033.545a2.8 2.8 0 0 0-.617.691c-.17.254-.356.575-.578.96l-.025.044c-.223.385-.408.706-.542.98c-.14.286-.25.568-.29.88a2.75 2.75 0 0 0 .544 2.033c.231.301.532.52.872.734a.87.87 0 0 1 .426.726a.87.87 0 0 1-.426.726c-.34.214-.64.433-.872.734a2.75 2.75 0 0 0-.545 2.033c.041.312.15.594.29.88c.135.274.32.595.543.98l.025.044c.222.385.408.706.578.96c.177.263.367.5.617.69a2.75 2.75 0 0 0 2.033.546c.376-.05.716-.2 1.072-.389a.87.87 0 0 1 .84-.005a.86.86 0 0 1 .417.731c.015.402.054.772.2 1.122a2.75 2.75 0 0 0 1.488 1.489c.29.12.59.167.907.188c.304.021.675.021 1.12.021h.05c.445 0 .816 0 1.12-.02c.318-.022.617-.069.907-.19a2.75 2.75 0 0 0 1.489-1.488c.145-.35.184-.72.2-1.122a.87.87 0 0 1 .415-.732a.87.87 0 0 1 .841.006c.356.188.696.339 1.072.388a2.75 2.75 0 0 0 2.033-.544c.25-.192.44-.428.617-.691c.17-.254.356-.575.578-.96l.025-.044c.223-.385.408-.706.542-.98c.14-.286.25-.569.29-.88a2.75 2.75 0 0 0-.544-2.033c-.231-.301-.532-.52-.872-.734a.87.87 0 0 1-.426-.726c0-.278.152-.554.426-.726c.34-.214.64-.433.872-.734a2.75 2.75 0 0 0 .545-2.033a2.8 2.8 0 0 0-.29-.88a18 18 0 0 0-.543-.98l-.025-.044a18 18 0 0 0-.578-.96a2.8 2.8 0 0 0-.617-.69a2.75 2.75 0 0 0-2.033-.546c-.376.05-.716.2-1.072.389a.87.87 0 0 1-.84.005a.87.87 0 0 1-.417-.731c-.015-.402-.054-.772-.2-1.122a2.75 2.75 0 0 0-1.488-1.489c-.29-.12-.59-.167-.907-.188c-.304-.021-.675-.021-1.12-.021zm-1.453 1.595c.077-.032.194-.061.435-.078c.247-.017.567-.017 1.043-.017s.796 0 1.043.017c.241.017.358.046.435.078c.307.127.55.37.677.677c.04.096.073.247.086.604c.03.792.439 1.555 1.165 1.974s1.591.392 2.292.022c.316-.167.463-.214.567-.227a1.25 1.25 0 0 1 .924.247c.066.051.15.138.285.338c.139.206.299.483.537.895s.397.69.506.912c.107.217.14.333.15.416a1.25 1.25 0 0 1-.247.924c-.064.083-.178.187-.48.377c-.672.422-1.128 1.158-1.128 1.996s.456 1.574 1.128 1.996c.302.19.416.294.48.377c.202.263.29.595.247.924c-.01.083-.044.2-.15.416c-.109.223-.268.5-.506.912s-.399.689-.537.895c-.135.2-.219.287-.285.338a1.25 1.25 0 0 1-.924.247c-.104-.013-.25-.06-.567-.227c-.7-.37-1.566-.398-2.292.021s-1.135 1.183-1.165 1.975c-.013.357-.046.508-.086.604a1.25 1.25 0 0 1-.677.677c-.077.032-.194.061-.435.078c-.247.017-.567.017-1.043.017s-.796 0-1.043-.017c-.241-.017-.358-.046-.435-.078a1.25 1.25 0 0 1-.677-.677c-.04-.096-.073-.247-.086-.604c-.03-.792-.439-1.555-1.165-1.974s-1.591-.392-2.292-.022c-.316.167-.463.214-.567.227a1.25 1.25 0 0 1-.924-.247c-.066-.051-.15-.138-.285-.338a17 17 0 0 1-.537-.895c-.238-.412-.397-.69-.506-.912c-.107-.217-.14-.333-.15-.416a1.25 1.25 0 0 1 .247-.924c.064-.083.178-.187.48-.377c.672-.422 1.128-1.158 1.128-1.996s-.456-1.574-1.128-1.996c-.302-.19-.416-.294-.48-.377a1.25 1.25 0 0 1-.247-.924c.01-.083.044-.2.15-.416c.109-.223.268-.5.506-.912s.399-.689.537-.895c.135-.2.219-.287.285-.338a1.25 1.25 0 0 1 .924-.247c.104.013.25.06.567.227c.7.37 1.566.398 2.292-.022c.726-.419 1.135-1.182 1.165-1.974c.013-.357.046-.508.086-.604c.127-.307.37-.55.677-.677\"\n />\n </g>\n </svg>\n </NIcon>\n </template>\n </NButton>\n <NPopover>\n <template #trigger>\n <NButton text>\n <template #icon>\n <NIcon :size=\"24\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\">\n <path\n fill=\"currentColor\"\n d=\"M28 19H14.83l2.58-2.59L16 15l-5 5l5 5l1.41-1.41L14.83 21H28z\"\n />\n <path\n fill=\"currentColor\"\n d=\"M24 14v-4a1 1 0 0 0-.29-.71l-7-7A1 1 0 0 0 16 2H6a2 2 0 0 0-2 2v24a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2h-2v2H6V4h8v6a2 2 0 0 0 2 2h6v2Zm-8-4V4.41L21.59 10Z\"\n />\n </svg>\n </NIcon>\n </template>\n </NButton>\n </template>\n <NSpace vertical>\n <NButton @click=\"importLocal.invoke\" :loading=\"importLocal.loading\">\n 导入本地文件\n </NButton>\n <NButton @click=\"showModal = true\" :loading=\"importNetwork.loading\">\n 导入网络文件\n </NButton>\n </NSpace>\n </NPopover>\n <RouterLink flex to=\"/device\" title=\"连接设备\">\n <NButton text>\n <template #icon>\n <NIcon :size=\"24\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path\n fill=\"currentColor\"\n d=\"M18.35 14.85L16.9 13.4q.3-.275.463-.637t.162-.763t-.162-.763t-.463-.637l1.45-1.45q.575.575.875 1.313t.3 1.537t-.3 1.538t-.875 1.312m2.45 2.45l-1.4-1.4q.775-.775 1.2-1.775T21.025 12T20.6 9.875T19.4 8.1l1.4-1.4q1.075 1.05 1.65 2.425T23.025 12t-.575 2.875T20.8 17.3M7 23q-.825 0-1.412-.587T5 21V3q0-.825.588-1.412T7 1h10q.825 0 1.413.588T19 3v4h-2V6H7v12h10v-1h2v4q0 .825-.587 1.413T17 23zm0-3v1h10v-1zM7 4h10V3H7zm0 0V3zm0 16v1z\"\n />\n </svg>\n </NIcon>\n </template>\n </NButton>\n </RouterLink>\n <a\n flex\n href=\"https://github.com/gkd-kit/inspect\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <NButton text>\n <template #icon>\n <NIcon :size=\"24\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n viewBox=\"0 0 496 512\"\n >\n <path\n d=\"M165.9 397.4c0 2-2.3 3.6-5.2 3.6c-3.3.3-5.6-1.3-5.6-3.6c0-2 2.3-3.6 5.2-3.6c3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9c2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9c.3 2 2.9 3.3 5.9 2.6c2.9-.7 4.9-2.6 4.6-4.6c-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2c12.8 2.3 17.3-5.6 17.3-12.1c0-6.2-.3-40.4-.3-61.4c0 0-70 15-84.7-29.8c0 0-11.4-29.1-27.8-36.6c0 0-22.9-15.7 1.6-15.4c0 0 24.9 2 38.6 25.8c21.9 38.6 58.6 27.5 72.9 20.9c2.3-16 8.8-27.1 16-33.7c-55.9-6.2-112.3-14.3-112.3-110.5c0-27.5 7.6-41.3 23.6-58.9c-2.6-6.5-11.1-33.3 2.6-67.9c20.9-6.5 69 27 69 27c20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27c13.7 34.7 5.2 61.4 2.6 67.9c16 17.7 25.8 31.5 25.8 58.9c0 96.5-58.9 104.2-114.8 110.5c9.2 7.9 17 22.9 17 46.4c0 33.7-.3 75.4-.3 83.6c0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252C496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2c1.6 1.6 3.9 2.3 5.2 1c1.3-1 1-3.3-.7-5.2c-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9c1.6 1 3.6.7 4.3-.7c.7-1.3-.3-2.9-2.3-3.9c-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2c2.3 2.3 5.2 2.6 6.5 1c1.3-1.3.7-4.3-1.3-6.2c-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9c1.6 2.3 4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2c-1.4-2.3-4-3.3-5.6-2z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </NIcon>\n </template>\n </NButton>\n </a>\n </div>\n </div>\n <NDataTable\n striped\n :data=\"filterSnapshots\"\n :columns=\"columns\"\n :scrollX=\"1800\"\n :pagination=\"pagination\"\n v-model:checkedRowKeys=\"checkedRowKeys\"\n :rowKey=\"(r:Snapshot)=>r.id\"\n @update:sorter=\"handleSorterChange\"\n size=\"small\"\n class=\"flex-1\"\n flexHeight\n :loading=\"loading\"\n />\n </div>\n <NModal\n v-model:show=\"showModal\"\n preset=\"dialog\"\n title=\"导入网络文件\"\n :showIcon=\"false\"\n positiveText=\"确认\"\n negativeText=\"取消\"\n style=\"width: 800px\"\n @positiveClick=\"importNetwork.invoke\"\n :loading=\"importNetwork.loading\"\n @afterLeave=\"text = ``\"\n >\n <NInput\n :value=\"text\"\n @update:value=\"\n if (!importNetwork.loading) {\n text = $event;\n }\n \"\n type=\"textarea\"\n :placeholder=\"`1.支持ZIP文件链接\\n2.支持快照链接\\n每行一个\\n空白行自动忽略\\n非法链接行自动忽略`\"\n :autosize=\"{\n minRows: 8,\n maxRows: 16,\n }\"\n :inputProps=\"{\n style: `white-space: nowrap;`,\n }\"\n />\n </NModal>\n\n <NModal\n v-model:show=\"settingsDlgShow\"\n preset=\"dialog\"\n title=\"设置\"\n :showIcon=\"false\"\n positiveText=\"关闭\"\n style=\"width: 600px\"\n @positiveClick=\"settingsDlgShow = false\"\n >\n <NCheckbox v-model:checked=\"settingsStore.ignoreUploadWarn\">\n 关闭生成分享链接弹窗提醒\n </NCheckbox>\n <div h-1px my-10px bg=\"#eee\"></div>\n <NCheckbox v-model:checked=\"settingsStore.ignoreWasmWarn\">\n 关闭浏览器版本正则表达式 WASM(GC) 提醒\n </NCheckbox>\n <div h-1px my-10px bg=\"#eee\"></div>\n <div flex gap-10px>\n <NSwitch v-model:value=\"settingsStore.autoUploadImport\" />\n <div>打开快照页面自动生成分享链接(请确保不含隐私)</div>\n </div>\n </NModal>\n</template>\n"],"names":["commonVars","self","vars","primaryColor","opacityDisabled","borderRadius","textColor3","changeColor","switchLight","commonLight","style","cB","cE","iconSwitchTransition","c","cM","cNotM","switchProps","useTheme","supportCssMax","__unplugin_components_9","defineComponent","props","mergedClsPrefixRef","inlineThemeDisabled","useConfig","themeRef","formItem","useFormItem","mergedSizeRef","mergedDisabledRef","uncontrolledValueRef","ref","controlledValueRef","toRef","mergedValueRef","useMergedState","checkedRef","computed","pressedRef","focusedRef","mergedRailStyleRef","railStyle","doUpdateValue","value","_onUpdateValue","onChange","onUpdateValue","nTriggerFormInput","nTriggerFormChange","call","doFocus","nTriggerFormFocus","doBlur","nTriggerFormBlur","handleClick","handleFocus","handleBlur","handleKeyup","e","handleKeydown","cssVarsRef","size","railColor","railColorActive","buttonBoxShadow","buttonColor","boxShadowFocus","loadingColor","textColor","iconColor","createKey","buttonHeight","buttonWidth","buttonWidthPressed","railHeight","railWidth","railBorderRadius","buttonBorderRadius","cubicBezierEaseInOut","offset","height","width","pxfy","depx","themeClassHandle","useThemeClass","mergedClsPrefix","mergedDisabled","checked","mergedRailStyle","onRender","$slots","checkedSlot","uncheckedSlot","iconSlot","checkedIconSlot","uncheckedIconSlot","hasIcon","isSlotEmpty","h","resolveWrappedSlot","checkedSlotChildren","uncheckedSlotChildren","icon","checkedIcon","uncheckedIcon","NIconSwitchTransition","NBaseLoading","children","settingsStore","useSettingsStore","snapshots","shallowRef","loading","updateSnapshots","shallowSnapshotStorage","getAllItems","reverse","checkedRowKeys","onMounted","filterOption","shallowReactive","query","actualQuery","updateQuery","trim","filterSnapshots","filter","s","getAppInfo","name","includes","appId","activityId","importLocal","useTask","importFromLocal","activityIdCol","appIdCol","appNameCol","ctimeCol","mtimeCol","deviceCol","appVersionCodeCol","appVersionNameCol","resetColWidth","useSnapshotColumns","watchEffect","set","reduce","p","add","renderDevice","Set","filterOptions","undefined","values","map","label","columns","reactive","type","key","title","fixed","render","row","_createVNode2","ActionCard","pagination","page","pageSize","showSizePicker","pageSizes","onUpdatePageSize","watch","handleSorterChange","sorter","forEach","columnKey","sortOrder","order","showModal","text","importNetwork","urls","split","u","toValidURL","length","importFromNetwork","checkedSnapshots","Promise","all","id","snapshotStorage","getItem","batchDelete","res","rej","dialog","warning","content","negativeText","positiveText","onClose","onEsc","onMaskClick","onNegativeClick","onPositiveClick","k","removeItem","batchDownloadJpg","batchJpgDownloadZip","batchDownloadZip","batchZipDownloadZip","batchShareJpgUrl","waitShareAgree","imageIds","batchCreateImageId","showTextDLg","getImagUrl","join","batchShareZipUrl","zipUrls","batchCreateZipUrl","location","origin","settingsDlgShow"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
1
+ {"version":3,"file":"HomePage-DrhpQ2Ed.js","sources":["../../node_modules/.pnpm/naive-ui@2.40.1_vue@3.5.11_typescript@5.6.3_/node_modules/naive-ui/es/switch/styles/_common.mjs","../../node_modules/.pnpm/naive-ui@2.40.1_vue@3.5.11_typescript@5.6.3_/node_modules/naive-ui/es/switch/styles/light.mjs","../../node_modules/.pnpm/naive-ui@2.40.1_vue@3.5.11_typescript@5.6.3_/node_modules/naive-ui/es/switch/src/styles/index.cssr.mjs","../../node_modules/.pnpm/naive-ui@2.40.1_vue@3.5.11_typescript@5.6.3_/node_modules/naive-ui/es/switch/src/Switch.mjs","../../src/views/home/HomePage.vue"],"sourcesContent":["export default {\n buttonHeightSmall: '14px',\n buttonHeightMedium: '18px',\n buttonHeightLarge: '22px',\n buttonWidthSmall: '14px',\n buttonWidthMedium: '18px',\n buttonWidthLarge: '22px',\n buttonWidthPressedSmall: '20px',\n buttonWidthPressedMedium: '24px',\n buttonWidthPressedLarge: '28px',\n railHeightSmall: '18px',\n railHeightMedium: '22px',\n railHeightLarge: '26px',\n railWidthSmall: '32px',\n railWidthMedium: '40px',\n railWidthLarge: '48px'\n};","import { changeColor } from 'seemly';\nimport { commonLight } from \"../../_styles/common/index.mjs\";\nimport commonVars from \"./_common.mjs\";\nfunction self(vars) {\n const {\n primaryColor,\n opacityDisabled,\n borderRadius,\n textColor3\n } = vars;\n const railOverlayColor = 'rgba(0, 0, 0, .14)';\n return Object.assign(Object.assign({}, commonVars), {\n iconColor: textColor3,\n textColor: 'white',\n loadingColor: primaryColor,\n opacityDisabled,\n railColor: railOverlayColor,\n railColorActive: primaryColor,\n buttonBoxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.3), inset 0 0 1px 0 rgba(0, 0, 0, 0.05)',\n buttonColor: '#FFF',\n railBorderRadiusSmall: borderRadius,\n railBorderRadiusMedium: borderRadius,\n railBorderRadiusLarge: borderRadius,\n buttonBorderRadiusSmall: borderRadius,\n buttonBorderRadiusMedium: borderRadius,\n buttonBorderRadiusLarge: borderRadius,\n boxShadowFocus: `0 0 0 2px ${changeColor(primaryColor, {\n alpha: 0.2\n })}`\n });\n}\nconst switchLight = {\n name: 'Switch',\n common: commonLight,\n self\n};\nexport default switchLight;","import { iconSwitchTransition } from \"../../../_styles/transitions/icon-switch.cssr.mjs\";\nimport { c, cB, cE, cM, cNotM } from \"../../../_utils/cssr/index.mjs\";\n// vars:\n// --n-bezier\n// --n-button-border-radius\n// --n-button-box-shadow\n// --n-button-color\n// --n-button-width\n// --n-button-width-pressed\n// --n-height\n// --n-offset\n// --n-rail-border-radius\n// --n-rail-color\n// --n-rail-color-active\n// --n-rail-height\n// --n-rail-width\n// --n-width\n// --n-box-shadow-focus\n// --n-loading-color\n// --n-text-color\n// --n-icon-color\nexport default cB('switch', `\n height: var(--n-height);\n min-width: var(--n-width);\n vertical-align: middle;\n user-select: none;\n -webkit-user-select: none;\n display: inline-flex;\n outline: none;\n justify-content: center;\n align-items: center;\n`, [cE('children-placeholder', `\n height: var(--n-rail-height);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n pointer-events: none;\n visibility: hidden;\n `), cE('rail-placeholder', `\n display: flex;\n flex-wrap: none;\n `), cE('button-placeholder', `\n width: calc(1.75 * var(--n-rail-height));\n height: var(--n-rail-height);\n `), cB('base-loading', `\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translateX(-50%) translateY(-50%);\n font-size: calc(var(--n-button-width) - 4px);\n color: var(--n-loading-color);\n transition: color .3s var(--n-bezier);\n `, [iconSwitchTransition({\n left: '50%',\n top: '50%',\n originalTransform: 'translateX(-50%) translateY(-50%)'\n})]), cE('checked, unchecked', `\n transition: color .3s var(--n-bezier);\n color: var(--n-text-color);\n box-sizing: border-box;\n position: absolute;\n white-space: nowrap;\n top: 0;\n bottom: 0;\n display: flex;\n align-items: center;\n line-height: 1;\n `), cE('checked', `\n right: 0;\n padding-right: calc(1.25 * var(--n-rail-height) - var(--n-offset));\n `), cE('unchecked', `\n left: 0;\n justify-content: flex-end;\n padding-left: calc(1.25 * var(--n-rail-height) - var(--n-offset));\n `), c('&:focus', [cE('rail', `\n box-shadow: var(--n-box-shadow-focus);\n `)]), cM('round', [cE('rail', 'border-radius: calc(var(--n-rail-height) / 2);', [cE('button', 'border-radius: calc(var(--n-button-height) / 2);')])]), cNotM('disabled', [cNotM('icon', [cM('rubber-band', [cM('pressed', [cE('rail', [cE('button', 'max-width: var(--n-button-width-pressed);')])]), cE('rail', [c('&:active', [cE('button', 'max-width: var(--n-button-width-pressed);')])]), cM('active', [cM('pressed', [cE('rail', [cE('button', 'left: calc(100% - var(--n-offset) - var(--n-button-width-pressed));')])]), cE('rail', [c('&:active', [cE('button', 'left: calc(100% - var(--n-offset) - var(--n-button-width-pressed));')])])])])])]), cM('active', [cE('rail', [cE('button', 'left: calc(100% - var(--n-button-width) - var(--n-offset))')])]), cE('rail', `\n overflow: hidden;\n height: var(--n-rail-height);\n min-width: var(--n-rail-width);\n border-radius: var(--n-rail-border-radius);\n cursor: pointer;\n position: relative;\n transition:\n opacity .3s var(--n-bezier),\n background .3s var(--n-bezier),\n box-shadow .3s var(--n-bezier);\n background-color: var(--n-rail-color);\n `, [cE('button-icon', `\n color: var(--n-icon-color);\n transition: color .3s var(--n-bezier);\n font-size: calc(var(--n-button-height) - 4px);\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n line-height: 1;\n `, [iconSwitchTransition()]), cE('button', `\n align-items: center; \n top: var(--n-offset);\n left: var(--n-offset);\n height: var(--n-button-height);\n width: var(--n-button-width-pressed);\n max-width: var(--n-button-width);\n border-radius: var(--n-button-border-radius);\n background-color: var(--n-button-color);\n box-shadow: var(--n-button-box-shadow);\n box-sizing: border-box;\n cursor: inherit;\n content: \"\";\n position: absolute;\n transition:\n background-color .3s var(--n-bezier),\n left .3s var(--n-bezier),\n opacity .3s var(--n-bezier),\n max-width .3s var(--n-bezier),\n box-shadow .3s var(--n-bezier);\n `)]), cM('active', [cE('rail', 'background-color: var(--n-rail-color-active);')]), cM('loading', [cE('rail', `\n cursor: wait;\n `)]), cM('disabled', [cE('rail', `\n cursor: not-allowed;\n opacity: .5;\n `)])]);","import { computed, defineComponent, h, ref, toRef, watchEffect } from 'vue';\nimport { depx, pxfy } from 'seemly';\nimport { useMergedState } from 'vooks';\nimport { useConfig, useFormItem, useTheme, useThemeClass } from \"../../_mixins/index.mjs\";\nimport { NBaseLoading, NIconSwitchTransition } from \"../../_internal/index.mjs\";\nimport { call, createKey, isSlotEmpty, resolveWrappedSlot, warnOnce } from \"../../_utils/index.mjs\";\nimport { switchLight } from \"../styles/index.mjs\";\nimport style from \"./styles/index.cssr.mjs\";\nexport const switchProps = Object.assign(Object.assign({}, useTheme.props), {\n size: {\n type: String,\n default: 'medium'\n },\n value: {\n type: [String, Number, Boolean],\n default: undefined\n },\n loading: Boolean,\n defaultValue: {\n type: [String, Number, Boolean],\n default: false\n },\n disabled: {\n type: Boolean,\n default: undefined\n },\n round: {\n type: Boolean,\n default: true\n },\n 'onUpdate:value': [Function, Array],\n onUpdateValue: [Function, Array],\n checkedValue: {\n type: [String, Number, Boolean],\n default: true\n },\n uncheckedValue: {\n type: [String, Number, Boolean],\n default: false\n },\n railStyle: Function,\n rubberBand: {\n type: Boolean,\n default: true\n },\n /** @deprecated */\n onChange: [Function, Array]\n});\nlet supportCssMax;\nexport default defineComponent({\n name: 'Switch',\n props: switchProps,\n setup(props) {\n if (process.env.NODE_ENV !== 'production') {\n watchEffect(() => {\n if (props.onChange) {\n warnOnce('switch', '`on-change` is deprecated, please use `on-update:value` instead.');\n }\n });\n }\n if (supportCssMax === undefined) {\n if (typeof CSS !== 'undefined') {\n if (typeof CSS.supports !== 'undefined') {\n supportCssMax = CSS.supports('width', 'max(1px)');\n } else {\n supportCssMax = false;\n }\n } else {\n // If you are using SSR, we assume that you are targeting browsers with\n // recent versions\n supportCssMax = true;\n }\n }\n const {\n mergedClsPrefixRef,\n inlineThemeDisabled\n } = useConfig(props);\n const themeRef = useTheme('Switch', '-switch', style, switchLight, props, mergedClsPrefixRef);\n const formItem = useFormItem(props);\n const {\n mergedSizeRef,\n mergedDisabledRef\n } = formItem;\n const uncontrolledValueRef = ref(props.defaultValue);\n const controlledValueRef = toRef(props, 'value');\n const mergedValueRef = useMergedState(controlledValueRef, uncontrolledValueRef);\n const checkedRef = computed(() => {\n return mergedValueRef.value === props.checkedValue;\n });\n const pressedRef = ref(false);\n const focusedRef = ref(false);\n const mergedRailStyleRef = computed(() => {\n const {\n railStyle\n } = props;\n if (!railStyle) return undefined;\n return railStyle({\n focused: focusedRef.value,\n checked: checkedRef.value\n });\n });\n function doUpdateValue(value) {\n const {\n 'onUpdate:value': _onUpdateValue,\n onChange,\n onUpdateValue\n } = props;\n const {\n nTriggerFormInput,\n nTriggerFormChange\n } = formItem;\n if (_onUpdateValue) call(_onUpdateValue, value);\n if (onUpdateValue) call(onUpdateValue, value);\n if (onChange) call(onChange, value);\n uncontrolledValueRef.value = value;\n nTriggerFormInput();\n nTriggerFormChange();\n }\n function doFocus() {\n const {\n nTriggerFormFocus\n } = formItem;\n nTriggerFormFocus();\n }\n function doBlur() {\n const {\n nTriggerFormBlur\n } = formItem;\n nTriggerFormBlur();\n }\n function handleClick() {\n if (props.loading || mergedDisabledRef.value) return;\n if (mergedValueRef.value !== props.checkedValue) {\n doUpdateValue(props.checkedValue);\n } else {\n doUpdateValue(props.uncheckedValue);\n }\n }\n function handleFocus() {\n focusedRef.value = true;\n doFocus();\n }\n function handleBlur() {\n focusedRef.value = false;\n doBlur();\n pressedRef.value = false;\n }\n function handleKeyup(e) {\n if (props.loading || mergedDisabledRef.value) return;\n if (e.key === ' ') {\n if (mergedValueRef.value !== props.checkedValue) {\n doUpdateValue(props.checkedValue);\n } else {\n doUpdateValue(props.uncheckedValue);\n }\n pressedRef.value = false;\n }\n }\n function handleKeydown(e) {\n if (props.loading || mergedDisabledRef.value) return;\n if (e.key === ' ') {\n e.preventDefault();\n pressedRef.value = true;\n }\n }\n const cssVarsRef = computed(() => {\n const {\n value: size\n } = mergedSizeRef;\n const {\n self: {\n opacityDisabled,\n railColor,\n railColorActive,\n buttonBoxShadow,\n buttonColor,\n boxShadowFocus,\n loadingColor,\n textColor,\n iconColor,\n [createKey('buttonHeight', size)]: buttonHeight,\n [createKey('buttonWidth', size)]: buttonWidth,\n [createKey('buttonWidthPressed', size)]: buttonWidthPressed,\n [createKey('railHeight', size)]: railHeight,\n [createKey('railWidth', size)]: railWidth,\n [createKey('railBorderRadius', size)]: railBorderRadius,\n [createKey('buttonBorderRadius', size)]: buttonBorderRadius\n },\n common: {\n cubicBezierEaseInOut\n }\n } = themeRef.value;\n let offset;\n let height;\n let width;\n if (supportCssMax) {\n offset = `calc((${railHeight} - ${buttonHeight}) / 2)`;\n height = `max(${railHeight}, ${buttonHeight})`;\n width = `max(${railWidth}, calc(${railWidth} + ${buttonHeight} - ${railHeight}))`;\n } else {\n offset = pxfy((depx(railHeight) - depx(buttonHeight)) / 2);\n height = pxfy(Math.max(depx(railHeight), depx(buttonHeight)));\n width = depx(railHeight) > depx(buttonHeight) ? railWidth : pxfy(depx(railWidth) + depx(buttonHeight) - depx(railHeight));\n }\n return {\n '--n-bezier': cubicBezierEaseInOut,\n '--n-button-border-radius': buttonBorderRadius,\n '--n-button-box-shadow': buttonBoxShadow,\n '--n-button-color': buttonColor,\n '--n-button-width': buttonWidth,\n '--n-button-width-pressed': buttonWidthPressed,\n '--n-button-height': buttonHeight,\n '--n-height': height,\n '--n-offset': offset,\n '--n-opacity-disabled': opacityDisabled,\n '--n-rail-border-radius': railBorderRadius,\n '--n-rail-color': railColor,\n '--n-rail-color-active': railColorActive,\n '--n-rail-height': railHeight,\n '--n-rail-width': railWidth,\n '--n-width': width,\n '--n-box-shadow-focus': boxShadowFocus,\n '--n-loading-color': loadingColor,\n '--n-text-color': textColor,\n '--n-icon-color': iconColor\n };\n });\n const themeClassHandle = inlineThemeDisabled ? useThemeClass('switch', computed(() => {\n return mergedSizeRef.value[0];\n }), cssVarsRef, props) : undefined;\n return {\n handleClick,\n handleBlur,\n handleFocus,\n handleKeyup,\n handleKeydown,\n mergedRailStyle: mergedRailStyleRef,\n pressed: pressedRef,\n mergedClsPrefix: mergedClsPrefixRef,\n mergedValue: mergedValueRef,\n checked: checkedRef,\n mergedDisabled: mergedDisabledRef,\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 const {\n mergedClsPrefix,\n mergedDisabled,\n checked,\n mergedRailStyle,\n onRender,\n $slots\n } = this;\n onRender === null || onRender === void 0 ? void 0 : onRender();\n const {\n checked: checkedSlot,\n unchecked: uncheckedSlot,\n icon: iconSlot,\n 'checked-icon': checkedIconSlot,\n 'unchecked-icon': uncheckedIconSlot\n } = $slots;\n const hasIcon = !(isSlotEmpty(iconSlot) && isSlotEmpty(checkedIconSlot) && isSlotEmpty(uncheckedIconSlot));\n return h(\"div\", {\n role: \"switch\",\n \"aria-checked\": checked,\n class: [`${mergedClsPrefix}-switch`, this.themeClass, hasIcon && `${mergedClsPrefix}-switch--icon`, checked && `${mergedClsPrefix}-switch--active`, mergedDisabled && `${mergedClsPrefix}-switch--disabled`, this.round && `${mergedClsPrefix}-switch--round`, this.loading && `${mergedClsPrefix}-switch--loading`, this.pressed && `${mergedClsPrefix}-switch--pressed`, this.rubberBand && `${mergedClsPrefix}-switch--rubber-band`],\n tabindex: !this.mergedDisabled ? 0 : undefined,\n style: this.cssVars,\n onClick: this.handleClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onKeyup: this.handleKeyup,\n onKeydown: this.handleKeydown\n }, h(\"div\", {\n class: `${mergedClsPrefix}-switch__rail`,\n \"aria-hidden\": \"true\",\n style: mergedRailStyle\n }, resolveWrappedSlot(checkedSlot, checkedSlotChildren => resolveWrappedSlot(uncheckedSlot, uncheckedSlotChildren => {\n if (checkedSlotChildren || uncheckedSlotChildren) {\n return h(\"div\", {\n \"aria-hidden\": true,\n class: `${mergedClsPrefix}-switch__children-placeholder`\n }, h(\"div\", {\n class: `${mergedClsPrefix}-switch__rail-placeholder`\n }, h(\"div\", {\n class: `${mergedClsPrefix}-switch__button-placeholder`\n }), checkedSlotChildren), h(\"div\", {\n class: `${mergedClsPrefix}-switch__rail-placeholder`\n }, h(\"div\", {\n class: `${mergedClsPrefix}-switch__button-placeholder`\n }), uncheckedSlotChildren));\n }\n return null;\n })), h(\"div\", {\n class: `${mergedClsPrefix}-switch__button`\n }, resolveWrappedSlot(iconSlot, icon => resolveWrappedSlot(checkedIconSlot, checkedIcon => resolveWrappedSlot(uncheckedIconSlot, uncheckedIcon => {\n return h(NIconSwitchTransition, null, {\n default: () => this.loading ? h(NBaseLoading, {\n key: \"loading\",\n clsPrefix: mergedClsPrefix,\n strokeWidth: 20\n }) : this.checked && (checkedIcon || icon) ? h(\"div\", {\n class: `${mergedClsPrefix}-switch__button-icon`,\n key: checkedIcon ? 'checked-icon' : 'icon'\n }, checkedIcon || icon) : !this.checked && (uncheckedIcon || icon) ? h(\"div\", {\n class: `${mergedClsPrefix}-switch__button-icon`,\n key: uncheckedIcon ? 'unchecked-icon' : 'icon'\n }, uncheckedIcon || icon) : null\n });\n }))), resolveWrappedSlot(checkedSlot, children => children && h(\"div\", {\n key: \"checked\",\n class: `${mergedClsPrefix}-switch__checked`\n }, children)), resolveWrappedSlot(uncheckedSlot, children => children && h(\"div\", {\n key: \"unchecked\",\n class: `${mergedClsPrefix}-switch__unchecked`\n }, children)))));\n }\n});","<script lang=\"tsx\" setup>\nimport ActionCard from '@/components/ActionCard.vue';\nimport { toValidURL } from '@/utils/check';\nimport { showTextDLg, waitShareAgree } from '@/utils/dialog';\nimport { dialog } from '@/utils/discrete';\nimport {\n batchCreateImageId,\n batchCreateZipUrl,\n batchJpgDownloadZip,\n batchZipDownloadZip,\n} from '@/utils/export';\nimport { importFromLocal, importFromNetwork } from '@/utils/import';\nimport { getAppInfo } from '@/utils/node';\nimport { shallowSnapshotStorage, snapshotStorage } from '@/utils/snapshot';\nimport { renderDevice, useSnapshotColumns } from '@/utils/table';\nimport { useTask } from '@/utils/task';\nimport type { Snapshot } from '@/utils/types';\nimport { getImagUrl } from '@/utils/url';\nimport type { DataTableColumns, PaginationProps } from 'naive-ui';\nimport type { SortState } from 'naive-ui/es/data-table/src/interface';\n\nconst settingsStore = useSettingsStore();\n\nconst snapshots = shallowRef<Snapshot[]>([]);\nconst loading = shallowRef(true);\nconst updateSnapshots = async () => {\n loading.value = true;\n snapshots.value = (await shallowSnapshotStorage.getAllItems()).reverse();\n checkedRowKeys.value = [];\n loading.value = false;\n};\nonMounted(updateSnapshots);\nconst filterOption = shallowReactive({\n query: ``,\n actualQuery: ``,\n updateQuery: () => {\n filterOption.actualQuery = filterOption.query.trim();\n checkedRowKeys.value = [];\n },\n});\nconst filterSnapshots = computed(() => {\n const actualQuery = filterOption.actualQuery;\n if (!actualQuery) return snapshots.value;\n return snapshots.value.filter((s) => {\n return (\n (getAppInfo(s).name || ``).includes(actualQuery) ||\n (s.appId || ``).includes(actualQuery) ||\n (s.activityId || ``).includes(actualQuery)\n );\n });\n});\n\nconst importLocal = useTask(async () => {\n await importFromLocal();\n await updateSnapshots();\n});\n\nconst {\n activityIdCol,\n appIdCol,\n appNameCol,\n ctimeCol,\n mtimeCol,\n deviceCol,\n appVersionCodeCol,\n appVersionNameCol,\n resetColWidth,\n} = useSnapshotColumns();\n\nwatchEffect(() => {\n const set = filterSnapshots.value.reduce(\n (p, c) => (p.add(renderDevice(c)), p),\n new Set<string>(),\n );\n if (set.size <= 1) {\n deviceCol.filterOptions = undefined;\n return;\n }\n deviceCol.filterOptions = [...set.values()].map((s) => ({\n value: s,\n label: s,\n }));\n});\n\nwatchEffect(() => {\n const set = filterSnapshots.value.reduce(\n (p, c) => (p.add(getAppInfo(c).name), p),\n new Set<string>(),\n );\n if (set.size <= 1) {\n appNameCol.filterOptions = undefined;\n return;\n }\n appNameCol.filterOptions = [...set.values()].map((s) => ({\n value: s,\n label: s,\n }));\n});\n\nwatchEffect(() => {\n const set = filterSnapshots.value.reduce(\n (p, c) => (p.add(c.activityId), p),\n new Set<string>(),\n );\n if (set.size <= 1) {\n activityIdCol.filterOptions = undefined;\n return;\n }\n activityIdCol.filterOptions = [...set.values()].map((s) => ({\n value: s,\n label: s,\n }));\n});\n\nconst columns: DataTableColumns<Snapshot> = reactive([\n {\n type: 'selection',\n },\n ctimeCol,\n mtimeCol,\n deviceCol,\n appNameCol,\n appIdCol,\n appVersionCodeCol,\n appVersionNameCol,\n activityIdCol,\n {\n key: `actions`,\n title: `操作`,\n fixed: 'right',\n width: `160px`,\n render(row) {\n return <ActionCard snapshot={row} onDelete={updateSnapshots} />;\n },\n },\n]);\n\nconst pagination = shallowReactive<PaginationProps>({\n page: 1,\n pageSize: 50,\n showSizePicker: true,\n pageSizes: [50, 100],\n onChange: (page: number) => {\n pagination.page = page;\n },\n onUpdatePageSize: (pageSize: number) => {\n pagination.pageSize = pageSize;\n pagination.page = 1;\n },\n});\nwatch(pagination, resetColWidth);\n\nconst handleSorterChange = (sorter: SortState) => {\n [ctimeCol, mtimeCol].forEach((c) => {\n if (sorter.columnKey != c.key) {\n c.sortOrder = undefined;\n } else {\n c.sortOrder = sorter.order;\n }\n });\n};\nmtimeCol.sortOrder = `descend`;\nconst showModal = shallowRef(false);\nconst text = shallowRef(``);\nconst importNetwork = useTask(async () => {\n const urls = text.value\n .trim()\n .split(`\\n`)\n .map((u) => u.trim())\n .filter((u) => toValidURL(u));\n if (urls.length == 0) return;\n await importFromNetwork(urls);\n await updateSnapshots();\n text.value = ``;\n});\n\nconst checkedRowKeys = shallowRef<number[]>([]);\nconst checkedSnapshots = () => {\n return Promise.all(\n checkedRowKeys.value.map(\n (id) => snapshotStorage.getItem(id) as Promise<Snapshot>,\n ),\n );\n};\nconst batchDelete = useTask(async () => {\n await new Promise((res, rej) => {\n dialog.warning({\n title: `删除`,\n content: `是否批量删除 ${checkedRowKeys.value.length} 个快照`,\n negativeText: `取消`,\n positiveText: `确认`,\n onClose: rej,\n onEsc: rej,\n onMaskClick: rej,\n onNegativeClick: rej,\n onPositiveClick: res,\n });\n });\n\n await Promise.all(\n checkedRowKeys.value.map((k) => snapshotStorage.removeItem(k)),\n );\n await updateSnapshots();\n});\nconst batchDownloadJpg = useTask(async () => {\n await batchJpgDownloadZip(await checkedSnapshots());\n});\nconst batchDownloadZip = useTask(async () => {\n await batchZipDownloadZip(await checkedSnapshots());\n});\n\nconst batchShareJpgUrl = useTask(async () => {\n await waitShareAgree();\n const imageIds = await batchCreateImageId(await checkedSnapshots());\n showTextDLg({\n content: imageIds.map((s) => getImagUrl(s)).join(`\\n`) + `\\n`,\n });\n});\nconst batchShareZipUrl = useTask(async () => {\n await waitShareAgree();\n const zipUrls = await batchCreateZipUrl(await checkedSnapshots());\n showTextDLg({\n content: zipUrls.map((s) => location.origin + '/i/' + s).join(`\\n`) + `\\n`,\n });\n});\n\nconst settingsDlgShow = shallowRef(false);\n</script>\n<template>\n <div flex flex-col p-10px gap-10px h-full>\n <div flex>\n <NSpace>\n <NInputGroup>\n <NInput\n placeholder=\"请输入应用名称/应用ID/界面ID\"\n clearable\n class=\"min-w-320px\"\n v-model:value=\"filterOption.query\"\n @keyup.enter=\"filterOption.updateQuery\"\n @change=\"filterOption.updateQuery\"\n ></NInput>\n <NButton @click=\"filterOption.updateQuery\">\n <template #icon>\n <NIcon>\n <svg viewBox=\"0 0 32 32\">\n <path\n d=\"M29 27.586l-7.552-7.552a11.018 11.018 0 1 0-1.414 1.414L27.586 29zM4 13a9 9 0 1 1 9 9a9.01 9.01 0 0 1-9-9z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </NIcon>\n </template>\n </NButton>\n </NInputGroup>\n <template v-if=\"checkedRowKeys.length\">\n <NPopover>\n <template #trigger>\n <NButton> 批量下载 </NButton>\n </template>\n <NSpace vertical>\n <NButton\n @click=\"batchDownloadZip.invoke\"\n :loading=\"batchDownloadZip.loading\"\n >\n 批量下载-快照\n </NButton>\n <NButton\n @click=\"batchDownloadJpg.invoke\"\n :loading=\"batchDownloadJpg.loading\"\n >\n 批量下载-图片\n </NButton>\n </NSpace>\n </NPopover>\n <NPopover>\n <template #trigger>\n <NButton> 批量分享 </NButton>\n </template>\n <NSpace vertical>\n <NButton\n @click=\"batchShareZipUrl.invoke\"\n :loading=\"batchShareZipUrl.loading\"\n >\n 批量生成链接-快照\n </NButton>\n <NButton\n @click=\"batchShareJpgUrl.invoke\"\n :loading=\"batchShareJpgUrl.loading\"\n >\n 批量生成链接-图片\n </NButton>\n </NSpace>\n </NPopover>\n <NButton @click=\"batchDelete.invoke\"> 批量删除 </NButton>\n <div h-full flex flex-items-center>\n {{ `已选中 ${checkedRowKeys.length} 个快照` }}\n </div>\n </template>\n </NSpace>\n <div flex-1></div>\n <div flex gap-24px items-center pr-8px>\n <NButton text title=\"设置\" @click=\"settingsDlgShow = true\">\n <template #icon>\n <NIcon :size=\"24\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <g fill=\"currentColor\" fill-rule=\"evenodd\" clip-rule=\"evenodd\">\n <path\n d=\"M12 8.25a3.75 3.75 0 1 0 0 7.5a3.75 3.75 0 0 0 0-7.5M9.75 12a2.25 2.25 0 1 1 4.5 0a2.25 2.25 0 0 1-4.5 0\"\n />\n <path\n d=\"M11.975 1.25c-.445 0-.816 0-1.12.02a2.8 2.8 0 0 0-.907.19a2.75 2.75 0 0 0-1.489 1.488c-.145.35-.184.72-.2 1.122a.87.87 0 0 1-.415.731a.87.87 0 0 1-.841-.005c-.356-.188-.696-.339-1.072-.389a2.75 2.75 0 0 0-2.033.545a2.8 2.8 0 0 0-.617.691c-.17.254-.356.575-.578.96l-.025.044c-.223.385-.408.706-.542.98c-.14.286-.25.568-.29.88a2.75 2.75 0 0 0 .544 2.033c.231.301.532.52.872.734a.87.87 0 0 1 .426.726a.87.87 0 0 1-.426.726c-.34.214-.64.433-.872.734a2.75 2.75 0 0 0-.545 2.033c.041.312.15.594.29.88c.135.274.32.595.543.98l.025.044c.222.385.408.706.578.96c.177.263.367.5.617.69a2.75 2.75 0 0 0 2.033.546c.376-.05.716-.2 1.072-.389a.87.87 0 0 1 .84-.005a.86.86 0 0 1 .417.731c.015.402.054.772.2 1.122a2.75 2.75 0 0 0 1.488 1.489c.29.12.59.167.907.188c.304.021.675.021 1.12.021h.05c.445 0 .816 0 1.12-.02c.318-.022.617-.069.907-.19a2.75 2.75 0 0 0 1.489-1.488c.145-.35.184-.72.2-1.122a.87.87 0 0 1 .415-.732a.87.87 0 0 1 .841.006c.356.188.696.339 1.072.388a2.75 2.75 0 0 0 2.033-.544c.25-.192.44-.428.617-.691c.17-.254.356-.575.578-.96l.025-.044c.223-.385.408-.706.542-.98c.14-.286.25-.569.29-.88a2.75 2.75 0 0 0-.544-2.033c-.231-.301-.532-.52-.872-.734a.87.87 0 0 1-.426-.726c0-.278.152-.554.426-.726c.34-.214.64-.433.872-.734a2.75 2.75 0 0 0 .545-2.033a2.8 2.8 0 0 0-.29-.88a18 18 0 0 0-.543-.98l-.025-.044a18 18 0 0 0-.578-.96a2.8 2.8 0 0 0-.617-.69a2.75 2.75 0 0 0-2.033-.546c-.376.05-.716.2-1.072.389a.87.87 0 0 1-.84.005a.87.87 0 0 1-.417-.731c-.015-.402-.054-.772-.2-1.122a2.75 2.75 0 0 0-1.488-1.489c-.29-.12-.59-.167-.907-.188c-.304-.021-.675-.021-1.12-.021zm-1.453 1.595c.077-.032.194-.061.435-.078c.247-.017.567-.017 1.043-.017s.796 0 1.043.017c.241.017.358.046.435.078c.307.127.55.37.677.677c.04.096.073.247.086.604c.03.792.439 1.555 1.165 1.974s1.591.392 2.292.022c.316-.167.463-.214.567-.227a1.25 1.25 0 0 1 .924.247c.066.051.15.138.285.338c.139.206.299.483.537.895s.397.69.506.912c.107.217.14.333.15.416a1.25 1.25 0 0 1-.247.924c-.064.083-.178.187-.48.377c-.672.422-1.128 1.158-1.128 1.996s.456 1.574 1.128 1.996c.302.19.416.294.48.377c.202.263.29.595.247.924c-.01.083-.044.2-.15.416c-.109.223-.268.5-.506.912s-.399.689-.537.895c-.135.2-.219.287-.285.338a1.25 1.25 0 0 1-.924.247c-.104-.013-.25-.06-.567-.227c-.7-.37-1.566-.398-2.292.021s-1.135 1.183-1.165 1.975c-.013.357-.046.508-.086.604a1.25 1.25 0 0 1-.677.677c-.077.032-.194.061-.435.078c-.247.017-.567.017-1.043.017s-.796 0-1.043-.017c-.241-.017-.358-.046-.435-.078a1.25 1.25 0 0 1-.677-.677c-.04-.096-.073-.247-.086-.604c-.03-.792-.439-1.555-1.165-1.974s-1.591-.392-2.292-.022c-.316.167-.463.214-.567.227a1.25 1.25 0 0 1-.924-.247c-.066-.051-.15-.138-.285-.338a17 17 0 0 1-.537-.895c-.238-.412-.397-.69-.506-.912c-.107-.217-.14-.333-.15-.416a1.25 1.25 0 0 1 .247-.924c.064-.083.178-.187.48-.377c.672-.422 1.128-1.158 1.128-1.996s-.456-1.574-1.128-1.996c-.302-.19-.416-.294-.48-.377a1.25 1.25 0 0 1-.247-.924c.01-.083.044-.2.15-.416c.109-.223.268-.5.506-.912s.399-.689.537-.895c.135-.2.219-.287.285-.338a1.25 1.25 0 0 1 .924-.247c.104.013.25.06.567.227c.7.37 1.566.398 2.292-.022c.726-.419 1.135-1.182 1.165-1.974c.013-.357.046-.508.086-.604c.127-.307.37-.55.677-.677\"\n />\n </g>\n </svg>\n </NIcon>\n </template>\n </NButton>\n <NPopover>\n <template #trigger>\n <NButton text>\n <template #icon>\n <NIcon :size=\"24\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\">\n <path\n fill=\"currentColor\"\n d=\"M28 19H14.83l2.58-2.59L16 15l-5 5l5 5l1.41-1.41L14.83 21H28z\"\n />\n <path\n fill=\"currentColor\"\n d=\"M24 14v-4a1 1 0 0 0-.29-.71l-7-7A1 1 0 0 0 16 2H6a2 2 0 0 0-2 2v24a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-2h-2v2H6V4h8v6a2 2 0 0 0 2 2h6v2Zm-8-4V4.41L21.59 10Z\"\n />\n </svg>\n </NIcon>\n </template>\n </NButton>\n </template>\n <NSpace vertical>\n <NButton @click=\"importLocal.invoke\" :loading=\"importLocal.loading\">\n 导入本地文件\n </NButton>\n <NButton @click=\"showModal = true\" :loading=\"importNetwork.loading\">\n 导入网络文件\n </NButton>\n </NSpace>\n </NPopover>\n <RouterLink flex to=\"/device\" title=\"连接设备\">\n <NButton text>\n <template #icon>\n <NIcon :size=\"24\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\n <path\n fill=\"currentColor\"\n d=\"M18.35 14.85L16.9 13.4q.3-.275.463-.637t.162-.763t-.162-.763t-.463-.637l1.45-1.45q.575.575.875 1.313t.3 1.537t-.3 1.538t-.875 1.312m2.45 2.45l-1.4-1.4q.775-.775 1.2-1.775T21.025 12T20.6 9.875T19.4 8.1l1.4-1.4q1.075 1.05 1.65 2.425T23.025 12t-.575 2.875T20.8 17.3M7 23q-.825 0-1.412-.587T5 21V3q0-.825.588-1.412T7 1h10q.825 0 1.413.588T19 3v4h-2V6H7v12h10v-1h2v4q0 .825-.587 1.413T17 23zm0-3v1h10v-1zM7 4h10V3H7zm0 0V3zm0 16v1z\"\n />\n </svg>\n </NIcon>\n </template>\n </NButton>\n </RouterLink>\n <a\n flex\n href=\"https://github.com/gkd-kit/inspect\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <NButton text>\n <template #icon>\n <NIcon :size=\"24\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n viewBox=\"0 0 496 512\"\n >\n <path\n d=\"M165.9 397.4c0 2-2.3 3.6-5.2 3.6c-3.3.3-5.6-1.3-5.6-3.6c0-2 2.3-3.6 5.2-3.6c3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9c2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9c.3 2 2.9 3.3 5.9 2.6c2.9-.7 4.9-2.6 4.6-4.6c-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2c12.8 2.3 17.3-5.6 17.3-12.1c0-6.2-.3-40.4-.3-61.4c0 0-70 15-84.7-29.8c0 0-11.4-29.1-27.8-36.6c0 0-22.9-15.7 1.6-15.4c0 0 24.9 2 38.6 25.8c21.9 38.6 58.6 27.5 72.9 20.9c2.3-16 8.8-27.1 16-33.7c-55.9-6.2-112.3-14.3-112.3-110.5c0-27.5 7.6-41.3 23.6-58.9c-2.6-6.5-11.1-33.3 2.6-67.9c20.9-6.5 69 27 69 27c20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27c13.7 34.7 5.2 61.4 2.6 67.9c16 17.7 25.8 31.5 25.8 58.9c0 96.5-58.9 104.2-114.8 110.5c9.2 7.9 17 22.9 17 46.4c0 33.7-.3 75.4-.3 83.6c0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252C496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2c1.6 1.6 3.9 2.3 5.2 1c1.3-1 1-3.3-.7-5.2c-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9c1.6 1 3.6.7 4.3-.7c.7-1.3-.3-2.9-2.3-3.9c-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2c2.3 2.3 5.2 2.6 6.5 1c1.3-1.3.7-4.3-1.3-6.2c-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9c1.6 2.3 4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2c-1.4-2.3-4-3.3-5.6-2z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </NIcon>\n </template>\n </NButton>\n </a>\n </div>\n </div>\n <NDataTable\n striped\n :data=\"filterSnapshots\"\n :columns=\"columns\"\n :scrollX=\"1800\"\n :pagination=\"pagination\"\n v-model:checkedRowKeys=\"checkedRowKeys\"\n :rowKey=\"(r:Snapshot)=>r.id\"\n @update:sorter=\"handleSorterChange\"\n size=\"small\"\n class=\"flex-1\"\n flexHeight\n :loading=\"loading\"\n />\n </div>\n <NModal\n v-model:show=\"showModal\"\n preset=\"dialog\"\n title=\"导入网络文件\"\n :showIcon=\"false\"\n positiveText=\"确认\"\n negativeText=\"取消\"\n style=\"width: 800px\"\n @positiveClick=\"importNetwork.invoke\"\n :loading=\"importNetwork.loading\"\n @afterLeave=\"text = ``\"\n >\n <NInput\n :value=\"text\"\n @update:value=\"\n if (!importNetwork.loading) {\n text = $event;\n }\n \"\n type=\"textarea\"\n :placeholder=\"`1.支持ZIP文件链接\\n2.支持快照链接\\n每行一个\\n空白行自动忽略\\n非法链接行自动忽略`\"\n :autosize=\"{\n minRows: 8,\n maxRows: 16,\n }\"\n :inputProps=\"{\n style: `white-space: nowrap;`,\n }\"\n />\n </NModal>\n\n <NModal\n v-model:show=\"settingsDlgShow\"\n preset=\"dialog\"\n title=\"设置\"\n :showIcon=\"false\"\n positiveText=\"关闭\"\n style=\"width: 600px\"\n @positiveClick=\"settingsDlgShow = false\"\n >\n <NCheckbox v-model:checked=\"settingsStore.ignoreUploadWarn\">\n 关闭生成分享链接弹窗提醒\n </NCheckbox>\n <div h-1px my-10px bg=\"#eee\"></div>\n <NCheckbox v-model:checked=\"settingsStore.ignoreWasmWarn\">\n 关闭浏览器版本正则表达式 WASM(GC) 提醒\n </NCheckbox>\n <div h-1px my-10px bg=\"#eee\"></div>\n <div flex gap-10px>\n <NSwitch v-model:value=\"settingsStore.autoUploadImport\" />\n <div>打开快照页面自动生成分享链接(请确保不含隐私)</div>\n </div>\n </NModal>\n</template>\n"],"names":["commonVars","self","vars","primaryColor","opacityDisabled","borderRadius","textColor3","changeColor","switchLight","commonLight","style","cB","cE","iconSwitchTransition","c","cM","cNotM","switchProps","useTheme","supportCssMax","__unplugin_components_9","defineComponent","props","mergedClsPrefixRef","inlineThemeDisabled","useConfig","themeRef","formItem","useFormItem","mergedSizeRef","mergedDisabledRef","uncontrolledValueRef","ref","controlledValueRef","toRef","mergedValueRef","useMergedState","checkedRef","computed","pressedRef","focusedRef","mergedRailStyleRef","railStyle","doUpdateValue","value","_onUpdateValue","onChange","onUpdateValue","nTriggerFormInput","nTriggerFormChange","call","doFocus","nTriggerFormFocus","doBlur","nTriggerFormBlur","handleClick","handleFocus","handleBlur","handleKeyup","e","handleKeydown","cssVarsRef","size","railColor","railColorActive","buttonBoxShadow","buttonColor","boxShadowFocus","loadingColor","textColor","iconColor","createKey","buttonHeight","buttonWidth","buttonWidthPressed","railHeight","railWidth","railBorderRadius","buttonBorderRadius","cubicBezierEaseInOut","offset","height","width","pxfy","depx","themeClassHandle","useThemeClass","mergedClsPrefix","mergedDisabled","checked","mergedRailStyle","onRender","$slots","checkedSlot","uncheckedSlot","iconSlot","checkedIconSlot","uncheckedIconSlot","hasIcon","isSlotEmpty","h","resolveWrappedSlot","checkedSlotChildren","uncheckedSlotChildren","icon","checkedIcon","uncheckedIcon","NIconSwitchTransition","NBaseLoading","children","settingsStore","useSettingsStore","snapshots","shallowRef","loading","updateSnapshots","shallowSnapshotStorage","getAllItems","reverse","checkedRowKeys","onMounted","filterOption","shallowReactive","query","actualQuery","updateQuery","trim","filterSnapshots","filter","s","getAppInfo","name","includes","appId","activityId","importLocal","useTask","importFromLocal","activityIdCol","appIdCol","appNameCol","ctimeCol","mtimeCol","deviceCol","appVersionCodeCol","appVersionNameCol","resetColWidth","useSnapshotColumns","watchEffect","set","reduce","p","add","renderDevice","Set","filterOptions","undefined","values","map","label","columns","reactive","type","key","title","fixed","render","row","_createVNode2","ActionCard","pagination","page","pageSize","showSizePicker","pageSizes","onUpdatePageSize","watch","handleSorterChange","sorter","forEach","columnKey","sortOrder","order","showModal","text","importNetwork","urls","split","u","toValidURL","length","importFromNetwork","checkedSnapshots","Promise","all","id","snapshotStorage","getItem","batchDelete","res","rej","dialog","warning","content","negativeText","positiveText","onClose","onEsc","onMaskClick","onNegativeClick","onPositiveClick","k","removeItem","batchDownloadJpg","batchJpgDownloadZip","batchDownloadZip","batchZipDownloadZip","batchShareJpgUrl","waitShareAgree","imageIds","batchCreateImageId","showTextDLg","getImagUrl","join","batchShareZipUrl","zipUrls","batchCreateZipUrl","location","origin","settingsDlgShow"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
@@ -1,2 +1,2 @@
1
- import{h as k,A as f,aW as y,B as S,aX as v,aM as B,aP as h,aF as R,aQ as i,aY as N,H as g,I as w,M as l,Q as I,J as x,S as V,a5 as b,a6 as q,R as D,aD as F,aE as M,aZ as Q}from"./index-Bn_rOfk2.js";import{i as U}from"./export-ajUyVjgy.js";import{a as C,g as E}from"./snapshot-DiQCX7wv.js";import{a as P}from"./import-jbiQZOel.js";const T={class:"h-[calc(100%-10px)]",flex:"","gap-5px":"","pt-40px":"","flex-col":"","flex-items-center":""},A={key:0,"mb-20px":""},X=k({__name:"ImportPage",setup(H){const p=F(),c=M(),u=f(!0),r=f("加载中..."),m=async s=>{c.replace({name:"snapshot",params:{snapshotId:s},query:Q(p.query,["str","gkd"])})},n=String(p.query.url||""),e=y(n);return S(async()=>{var d;if(!v(n)){B.error("非法URL参数"),await h(1e3),c.replace({path:"/"});return}const{importSnapshotId:s,snapshotImportId:o,waitInit:_}=R();if(await _(),e){const t=s[e];if(t)if(await C.getItem(t)){m(t);return}else delete s[e]}i.start();try{const[t]=(d=await P(e?N(e):n))!=null?d:[];if(t.status=="fulfilled"){i.finish();const a=t.value;a!=null&&a.id?(e&&(U(e),s[e]=a.id,o[a.id]=e),u.value=!1,await h(500),m(a.id)):r.value="获取资源失败"}else throw t.reason}catch{i.error(),r.value="加载资源失败"}}),(s,o)=>(g(),w("div",T,[l(E)()?V("",!0):(g(),w("div",A,o[0]||(o[0]=[I(" 建议安装并启用 "),x("a",{href:"https://github.com/gkd-kit/network-extension",target:"_blank",rel:"noopener noreferrer"}," 油猴脚本 ",-1),I(" 获取更快加载速度 ")]))),b(x("div",null,D(l(r)),513),[[q,l(u)]])]))}});export{X as default};
2
- //# sourceMappingURL=ImportPage-D14MPdlH.js.map
1
+ import{h as k,A as f,aW as y,B as S,aX as v,aM as B,aP as h,aF as R,aQ as i,aY as N,H as g,I as w,M as l,Q as I,J as x,S as V,a5 as b,a6 as q,R as D,aD as F,aE as M,aZ as Q}from"./index-DaNW8YYZ.js";import{i as U}from"./export-4CrrOEIG.js";import{a as C,g as E}from"./snapshot-BMAEQfaw.js";import{a as P}from"./import-CiWj-daV.js";const T={class:"h-[calc(100%-10px)]",flex:"","gap-5px":"","pt-40px":"","flex-col":"","flex-items-center":""},A={key:0,"mb-20px":""},X=k({__name:"ImportPage",setup(H){const p=F(),c=M(),u=f(!0),r=f("加载中..."),m=async s=>{c.replace({name:"snapshot",params:{snapshotId:s},query:Q(p.query,["str","gkd"])})},n=String(p.query.url||""),e=y(n);return S(async()=>{var d;if(!v(n)){B.error("非法URL参数"),await h(1e3),c.replace({path:"/"});return}const{importSnapshotId:s,snapshotImportId:o,waitInit:_}=R();if(await _(),e){const t=s[e];if(t)if(await C.getItem(t)){m(t);return}else delete s[e]}i.start();try{const[t]=(d=await P(e?N(e):n))!=null?d:[];if(t.status=="fulfilled"){i.finish();const a=t.value;a!=null&&a.id?(e&&(U(e),s[e]=a.id,o[a.id]=e),u.value=!1,await h(500),m(a.id)):r.value="获取资源失败"}else throw t.reason}catch{i.error(),r.value="加载资源失败"}}),(s,o)=>(g(),w("div",T,[l(E)()?V("",!0):(g(),w("div",A,o[0]||(o[0]=[I(" 建议安装并启用 "),x("a",{href:"https://github.com/gkd-kit/network-extension",target:"_blank",rel:"noopener noreferrer"}," 油猴脚本 ",-1),I(" 获取更快加载速度 ")]))),b(x("div",null,D(l(r)),513),[[q,l(u)]])]))}});export{X as default};
2
+ //# sourceMappingURL=ImportPage-U85yH4vu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ImportPage-D14MPdlH.js","sources":["../../src/views/ImportPage.vue"],"sourcesContent":["<script setup lang=\"tsx\">\nimport { loadingBar, message } from '@/utils/discrete';\nimport { detectSnapshot } from '@/utils/export';\nimport { gmOk } from '@/utils/gm';\nimport { importFromNetwork } from '@/utils/import';\nimport { delay, filterQuery } from '@/utils/others';\nimport { snapshotStorage } from '@/utils/snapshot';\nimport { getImportFileUrl, getImportId, isValidUrl } from '@/utils/url';\n\nconst route = useRoute();\nconst router = useRouter();\n\nconst loading = shallowRef(true);\nconst tip = shallowRef(`加载中...`);\n\nconst goToSnapshot = async (snapshotId: number) => {\n router.replace({\n name: 'snapshot',\n params: { snapshotId },\n query: filterQuery(route.query, ['str', 'gkd']),\n });\n};\n\nconst url = String(route.query.url || ``);\nconst importId = getImportId(url);\n\nonMounted(async () => {\n if (!isValidUrl(url)) {\n message.error(`非法URL参数`);\n await delay(1000);\n router.replace({\n path: `/`,\n });\n return;\n }\n const { importSnapshotId, snapshotImportId, waitInit } = useStorageStore();\n await waitInit();\n if (importId) {\n const snapshotId = importSnapshotId[importId];\n if (snapshotId) {\n const snapshot = await snapshotStorage.getItem(snapshotId);\n if (snapshot) {\n goToSnapshot(snapshotId);\n return;\n } else {\n delete importSnapshotId[importId];\n }\n }\n }\n loadingBar.start();\n try {\n const [result] =\n (await importFromNetwork(importId ? getImportFileUrl(importId) : url)) ??\n [];\n\n if (result.status == 'fulfilled') {\n loadingBar.finish();\n const snapshot = result.value;\n if (snapshot?.id) {\n if (importId) {\n detectSnapshot(importId);\n importSnapshotId[importId] = snapshot.id;\n snapshotImportId[snapshot.id] = importId;\n }\n loading.value = false;\n await delay(500);\n goToSnapshot(snapshot.id);\n } else {\n tip.value = `获取资源失败`;\n }\n } else {\n throw result.reason;\n }\n } catch {\n loadingBar.error();\n tip.value = `加载资源失败`;\n }\n});\n</script>\n<template>\n <div\n class=\"h-[calc(100%-10px)]\"\n flex\n gap-5px\n pt-40px\n flex-col\n flex-items-center\n >\n <div v-if=\"!gmOk()\" mb-20px>\n 建议安装并启用\n <a\n href=\"https://github.com/gkd-kit/network-extension\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n 油猴脚本\n </a>\n 获取更快加载速度\n </div>\n <div v-show=\"loading\">\n {{ tip }}\n </div>\n </div>\n</template>\n"],"names":["route","useRoute","router","useRouter","loading","shallowRef","tip","goToSnapshot","snapshotId","replace","name","params","query","filterQuery","url","String","importId","getImportId","onMounted","isValidUrl","message","error","delay","path","importSnapshotId","snapshotImportId","waitInit","useStorageStore","snapshotStorage","getItem","loadingBar","start","result","_a","importFromNetwork","getImportFileUrl","status","finish","snapshot","value","id","detectSnapshot","reason"],"mappings":"ifASA,MAAMA,EAAQC,IACRC,EAASC,IAETC,EAAUC,EAAW,EAAI,EACzBC,EAAMD,EAAW,QAAQ,EAEzBE,EAAe,MAAOC,GAAuB,CACjDN,EAAOO,QAAQ,CACbC,KAAM,WACNC,OAAQ,CAAEH,WAAAA,CAAY,EACtBI,MAAOC,EAAYb,EAAMY,MAAO,CAAC,MAAO,KAAK,CAAC,CAChD,CAAC,GAGGE,EAAMC,OAAOf,EAAMY,MAAME,KAAO,EAAE,EAClCE,EAAWC,EAAYH,CAAG,EAEhCI,OAAAA,EAAU,SAAY,OACpB,GAAI,CAACC,EAAWL,CAAG,EAAG,CACpBM,EAAQC,MAAM,SAAS,EACvB,MAAMC,EAAM,GAAI,EAChBpB,EAAOO,QAAQ,CACbc,KAAM,GACR,CAAC,EACD,MACF,CACA,KAAM,CAAEC,iBAAAA,EAAkBC,iBAAAA,EAAkBC,SAAAA,CAAU,EAAGC,EAAe,EAExE,GADA,MAAMD,EAAQ,EACVV,EAAU,CACZ,MAAMR,EAAagB,EAAiBR,CAAQ,EAC5C,GAAIR,EAEF,GADiB,MAAMoB,EAAgBC,QAAQrB,CAAU,EAC3C,CACZD,EAAaC,CAAU,EACvB,MACF,MACE,OAAOgB,EAAiBR,CAAQ,CAGtC,CACAc,EAAWC,MAAK,EAChB,GAAI,CACF,KAAM,CAACC,CAAM,GACVC,EAAA,MAAMC,EAAkBlB,EAAWmB,EAAiBnB,CAAQ,EAAIF,CAAG,IAAnE,KAAAmB,EACD,GAEF,GAAID,EAAOI,QAAU,YAAa,CAChCN,EAAWO,OAAM,EACjB,MAAMC,EAAWN,EAAOO,MACpBD,GAAAA,MAAAA,EAAUE,IACRxB,IACFyB,EAAezB,CAAQ,EACvBQ,EAAiBR,CAAQ,EAAIsB,EAASE,GACtCf,EAAiBa,EAASE,EAAE,EAAIxB,GAElCZ,EAAQmC,MAAQ,GAChB,MAAMjB,EAAM,GAAG,EACff,EAAa+B,EAASE,EAAE,GAExBlC,EAAIiC,MAAQ,QAEhB,KACE,OAAMP,EAAOU,MAEjB,MAAQ,CACNZ,EAAWT,MAAK,EAChBf,EAAIiC,MAAQ,QACd,CACF,CAAC"}
1
+ {"version":3,"file":"ImportPage-U85yH4vu.js","sources":["../../src/views/ImportPage.vue"],"sourcesContent":["<script setup lang=\"tsx\">\nimport { loadingBar, message } from '@/utils/discrete';\nimport { detectSnapshot } from '@/utils/export';\nimport { gmOk } from '@/utils/gm';\nimport { importFromNetwork } from '@/utils/import';\nimport { delay, filterQuery } from '@/utils/others';\nimport { snapshotStorage } from '@/utils/snapshot';\nimport { getImportFileUrl, getImportId, isValidUrl } from '@/utils/url';\n\nconst route = useRoute();\nconst router = useRouter();\n\nconst loading = shallowRef(true);\nconst tip = shallowRef(`加载中...`);\n\nconst goToSnapshot = async (snapshotId: number) => {\n router.replace({\n name: 'snapshot',\n params: { snapshotId },\n query: filterQuery(route.query, ['str', 'gkd']),\n });\n};\n\nconst url = String(route.query.url || ``);\nconst importId = getImportId(url);\n\nonMounted(async () => {\n if (!isValidUrl(url)) {\n message.error(`非法URL参数`);\n await delay(1000);\n router.replace({\n path: `/`,\n });\n return;\n }\n const { importSnapshotId, snapshotImportId, waitInit } = useStorageStore();\n await waitInit();\n if (importId) {\n const snapshotId = importSnapshotId[importId];\n if (snapshotId) {\n const snapshot = await snapshotStorage.getItem(snapshotId);\n if (snapshot) {\n goToSnapshot(snapshotId);\n return;\n } else {\n delete importSnapshotId[importId];\n }\n }\n }\n loadingBar.start();\n try {\n const [result] =\n (await importFromNetwork(importId ? getImportFileUrl(importId) : url)) ??\n [];\n\n if (result.status == 'fulfilled') {\n loadingBar.finish();\n const snapshot = result.value;\n if (snapshot?.id) {\n if (importId) {\n detectSnapshot(importId);\n importSnapshotId[importId] = snapshot.id;\n snapshotImportId[snapshot.id] = importId;\n }\n loading.value = false;\n await delay(500);\n goToSnapshot(snapshot.id);\n } else {\n tip.value = `获取资源失败`;\n }\n } else {\n throw result.reason;\n }\n } catch {\n loadingBar.error();\n tip.value = `加载资源失败`;\n }\n});\n</script>\n<template>\n <div\n class=\"h-[calc(100%-10px)]\"\n flex\n gap-5px\n pt-40px\n flex-col\n flex-items-center\n >\n <div v-if=\"!gmOk()\" mb-20px>\n 建议安装并启用\n <a\n href=\"https://github.com/gkd-kit/network-extension\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n 油猴脚本\n </a>\n 获取更快加载速度\n </div>\n <div v-show=\"loading\">\n {{ tip }}\n </div>\n </div>\n</template>\n"],"names":["route","useRoute","router","useRouter","loading","shallowRef","tip","goToSnapshot","snapshotId","replace","name","params","query","filterQuery","url","String","importId","getImportId","onMounted","isValidUrl","message","error","delay","path","importSnapshotId","snapshotImportId","waitInit","useStorageStore","snapshotStorage","getItem","loadingBar","start","result","_a","importFromNetwork","getImportFileUrl","status","finish","snapshot","value","id","detectSnapshot","reason"],"mappings":"ifASA,MAAMA,EAAQC,IACRC,EAASC,IAETC,EAAUC,EAAW,EAAI,EACzBC,EAAMD,EAAW,QAAQ,EAEzBE,EAAe,MAAOC,GAAuB,CACjDN,EAAOO,QAAQ,CACbC,KAAM,WACNC,OAAQ,CAAEH,WAAAA,CAAY,EACtBI,MAAOC,EAAYb,EAAMY,MAAO,CAAC,MAAO,KAAK,CAAC,CAChD,CAAC,GAGGE,EAAMC,OAAOf,EAAMY,MAAME,KAAO,EAAE,EAClCE,EAAWC,EAAYH,CAAG,EAEhCI,OAAAA,EAAU,SAAY,OACpB,GAAI,CAACC,EAAWL,CAAG,EAAG,CACpBM,EAAQC,MAAM,SAAS,EACvB,MAAMC,EAAM,GAAI,EAChBpB,EAAOO,QAAQ,CACbc,KAAM,GACR,CAAC,EACD,MACF,CACA,KAAM,CAAEC,iBAAAA,EAAkBC,iBAAAA,EAAkBC,SAAAA,CAAU,EAAGC,EAAe,EAExE,GADA,MAAMD,EAAQ,EACVV,EAAU,CACZ,MAAMR,EAAagB,EAAiBR,CAAQ,EAC5C,GAAIR,EAEF,GADiB,MAAMoB,EAAgBC,QAAQrB,CAAU,EAC3C,CACZD,EAAaC,CAAU,EACvB,MACF,MACE,OAAOgB,EAAiBR,CAAQ,CAGtC,CACAc,EAAWC,MAAK,EAChB,GAAI,CACF,KAAM,CAACC,CAAM,GACVC,EAAA,MAAMC,EAAkBlB,EAAWmB,EAAiBnB,CAAQ,EAAIF,CAAG,IAAnE,KAAAmB,EACD,GAEF,GAAID,EAAOI,QAAU,YAAa,CAChCN,EAAWO,OAAM,EACjB,MAAMC,EAAWN,EAAOO,MACpBD,GAAAA,MAAAA,EAAUE,IACRxB,IACFyB,EAAezB,CAAQ,EACvBQ,EAAiBR,CAAQ,EAAIsB,EAASE,GACtCf,EAAiBa,EAASE,EAAE,EAAIxB,GAElCZ,EAAQmC,MAAQ,GAChB,MAAMjB,EAAM,GAAG,EACff,EAAa+B,EAASE,EAAE,GAExBlC,EAAIiC,MAAQ,QAEhB,KACE,OAAMP,EAAOU,MAEjB,MAAQ,CACNZ,EAAWT,MAAK,EAChBf,EAAIiC,MAAQ,QACd,CACF,CAAC"}
@@ -1,2 +1,2 @@
1
- import{h as t,H as n,I as o,J as s}from"./index-Bn_rOfk2.js";const l={flex:"","flex-col":"","items-center":"","p-8px":""},c=t({__name:"SelectorPage",setup(r){return(a,e)=>(n(),o("div",l,e[0]||(e[0]=[s("input",null,null,-1)])))}});export{c as default};
2
- //# sourceMappingURL=SelectorPage-CAMgkAM7.js.map
1
+ import{h as t,H as n,I as o,J as s}from"./index-DaNW8YYZ.js";const l={flex:"","flex-col":"","items-center":"","p-8px":""},c=t({__name:"SelectorPage",setup(r){return(a,e)=>(n(),o("div",l,e[0]||(e[0]=[s("input",null,null,-1)])))}});export{c as default};
2
+ //# sourceMappingURL=SelectorPage-BSc8-745.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SelectorPage-BSc8-745.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}