@cjy0812/inspect-plus 0.0.1772375209621 → 0.0.1772377248290
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/404.html +1 -1
- package/dist/assets/{ActionCard.vue_vue_type_script_setup_true_lang-DcXE_lii.js → ActionCard.vue_vue_type_script_setup_true_lang-BaXFjcSg.js} +2 -2
- package/dist/assets/{ActionCard.vue_vue_type_script_setup_true_lang-DcXE_lii.js.map → ActionCard.vue_vue_type_script_setup_true_lang-BaXFjcSg.js.map} +1 -1
- package/dist/assets/{DevicePage-Ds6CFwrc.js → DevicePage-U37dNYv6.js} +2 -2
- package/dist/assets/{DevicePage-Ds6CFwrc.js.map → DevicePage-U37dNYv6.js.map} +1 -1
- package/dist/assets/{HomePage-DUu9x2N1.js → HomePage-B_mKcKlz.js} +2 -2
- package/dist/assets/{HomePage-DUu9x2N1.js.map → HomePage-B_mKcKlz.js.map} +1 -1
- package/dist/assets/{ImportPage-C7PKNMU2.js → ImportPage-CsBlXn3P.js} +2 -2
- package/dist/assets/{ImportPage-C7PKNMU2.js.map → ImportPage-CsBlXn3P.js.map} +1 -1
- package/dist/assets/{SelectorPage-Bw5kZNJA.js → SelectorPage-C3yr-LVg.js} +2 -2
- package/dist/assets/{SelectorPage-Bw5kZNJA.js.map → SelectorPage-C3yr-LVg.js.map} +1 -1
- package/dist/assets/{SettingsModal.vue_vue_type_script_setup_true_lang-BY-etmy1.js → SettingsModal.vue_vue_type_script_setup_true_lang-Dunhc-_c.js} +2 -2
- package/dist/assets/{SettingsModal.vue_vue_type_script_setup_true_lang-BY-etmy1.js.map → SettingsModal.vue_vue_type_script_setup_true_lang-Dunhc-_c.js.map} +1 -1
- package/dist/assets/{SnapshotPage-wzVCZ3ld.js → SnapshotPage-Dq4XmPAH.js} +4 -4
- package/dist/assets/{SnapshotPage-wzVCZ3ld.js.map → SnapshotPage-Dq4XmPAH.js.map} +1 -1
- package/dist/assets/{SvgPage-CKcjK7ye.js → SvgPage-BEv-5VT7.js} +2 -2
- package/dist/assets/{SvgPage-CKcjK7ye.js.map → SvgPage-BEv-5VT7.js.map} +1 -1
- package/dist/assets/{TrackGraph-Cg6NiOH-.js → TrackGraph-CykHiNsg.js} +2 -2
- package/dist/assets/{TrackGraph-Cg6NiOH-.js.map → TrackGraph-CykHiNsg.js.map} +1 -1
- package/dist/assets/{_404Page-CCEpryL3.js → _404Page-DnWNjCJi.js} +2 -2
- package/dist/assets/{_404Page-CCEpryL3.js.map → _404Page-DnWNjCJi.js.map} +1 -1
- package/dist/assets/{import-Dbj_xmJi.js → import-21Jp_8Xc.js} +2 -2
- package/dist/assets/{import-Dbj_xmJi.js.map → import-21Jp_8Xc.js.map} +1 -1
- package/dist/assets/{index-BVe221dz.js → index-B8n8YbRA.js} +29 -35
- package/dist/assets/index-B8n8YbRA.js.map +1 -0
- package/dist/assets/{index-lSQGzWBr.js → index-BhCOT4Uq.js} +2 -2
- package/dist/assets/{index-lSQGzWBr.js.map → index-BhCOT4Uq.js.map} +1 -1
- package/dist/assets/{jszip.min-TiFq1fTj.js → jszip.min-K9dMVIHd.js} +2 -2
- package/dist/assets/{jszip.min-TiFq1fTj.js.map → jszip.min-K9dMVIHd.js.map} +1 -1
- package/dist/assets/{node-DDV9aVRp.js → node-DqtTfexB.js} +2 -2
- package/dist/assets/{node-DDV9aVRp.js.map → node-DqtTfexB.js.map} +1 -1
- package/dist/assets/{snapshot-CG5KackY.js → snapshot-DrF431xa.js} +3 -3
- package/dist/assets/{snapshot-CG5KackY.js.map → snapshot-DrF431xa.js.map} +1 -1
- package/dist/assets/{snapshotGroup-DCHU-3Qc.js → snapshotGroup-DWXLlGGZ.js} +2 -2
- package/dist/assets/{snapshotGroup-DCHU-3Qc.js.map → snapshotGroup-DWXLlGGZ.js.map} +1 -1
- package/dist/index.html +1 -1
- package/package.json +1 -1
- package/dist/assets/index-BVe221dz.js.map +0 -1
package/dist/404.html
CHANGED
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
}
|
|
31
31
|
})();
|
|
32
32
|
</script>
|
|
33
|
-
<script type="module" crossorigin src="/assets/index-
|
|
33
|
+
<script type="module" crossorigin src="/assets/index-B8n8YbRA.js"></script>
|
|
34
34
|
<link rel="stylesheet" crossorigin href="/assets/index-OOkxa8o-.css">
|
|
35
35
|
</head>
|
|
36
36
|
<body>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{ad as ne,d as O,ap as R,h as g,B as N,b0 as se,ah as ie,b1 as ae,b2 as D,u as J,ae as re,g as le,av as $,i as _,b3 as ce,a as E,$ as B,c as F,b4 as pe,b5 as de,e as Q,b6 as ue,r as ve,aw as V,a2 as fe,aF as me,l as ge,q as he,t as I,z as l,x as c,y as n,H as S,D as y,F as k,O as A,V as q,aZ as Z,C as h,Q as xe,W as K,a$ as ke}from"./index-
|
|
1
|
+
import{ad as ne,d as O,ap as R,h as g,B as N,b0 as se,ah as ie,b1 as ae,b2 as D,u as J,ae as re,g as le,av as $,i as _,b3 as ce,a as E,$ as B,c as F,b4 as pe,b5 as de,e as Q,b6 as ue,r as ve,aw as V,a2 as fe,aF as me,l as ge,q as he,t as I,z as l,x as c,y as n,H as S,D as y,F as k,O as A,V as q,aZ as Z,C as h,Q as xe,W as K,a$ as ke}from"./index-B8n8YbRA.js";import{u as b,a as Ce,D as Pe,E as _e,w as L,q as ye,s as M,r as we,k as Ie,j as W}from"./SettingsModal.vue_vue_type_script_setup_true_lang-Dunhc-_c.js";import{a as Se}from"./snapshot-DrF431xa.js";import{_ as G,p as be,a as Te}from"./node-DqtTfexB.js";const X=ne("n-popconfirm"),Y={positiveText:String,negativeText:String,showIcon:{type:Boolean,default:!0},onPositiveClick:{type:Function,required:!0},onNegativeClick:{type:Function,required:!0}},H=ce(Y),Be=O({name:"NPopconfirmPanel",props:Y,setup(o){const{localeRef:e}=D("Popconfirm"),{inlineThemeDisabled:p}=J(),{mergedClsPrefixRef:a,mergedThemeRef:x,props:u}=re(X),P=_(()=>{const{common:{cubicBezierEaseInOut:i},self:{fontSize:v,iconSize:f,iconColor:C}}=x.value;return{"--n-bezier":i,"--n-font-size":v,"--n-icon-size":f,"--n-icon-color":C}}),s=p?le("popconfirm-panel",void 0,P,u):void 0;return Object.assign(Object.assign({},D("Popconfirm")),{mergedClsPrefix:a,cssVars:p?void 0:P,localizedPositiveText:_(()=>o.positiveText||e.value.positiveText),localizedNegativeText:_(()=>o.negativeText||e.value.negativeText),positiveButtonProps:$(u,"positiveButtonProps"),negativeButtonProps:$(u,"negativeButtonProps"),handlePositiveClick(i){o.onPositiveClick(i)},handleNegativeClick(i){o.onNegativeClick(i)},themeClass:s==null?void 0:s.themeClass,onRender:s==null?void 0:s.onRender})},render(){var o;const{mergedClsPrefix:e,showIcon:p,$slots:a}=this,x=R(a.action,()=>this.negativeText===null&&this.positiveText===null?[]:[this.negativeText!==null&&g(N,Object.assign({size:"small",onClick:this.handleNegativeClick},this.negativeButtonProps),{default:()=>this.localizedNegativeText}),this.positiveText!==null&&g(N,Object.assign({size:"small",type:"primary",onClick:this.handlePositiveClick},this.positiveButtonProps),{default:()=>this.localizedPositiveText})]);return(o=this.onRender)===null||o===void 0||o.call(this),g("div",{class:[`${e}-popconfirm__panel`,this.themeClass],style:this.cssVars},se(a.default,u=>p||u?g("div",{class:`${e}-popconfirm__body`},p?g("div",{class:`${e}-popconfirm__icon`},R(a.icon,()=>[g(ie,{clsPrefix:e},{default:()=>g(ae,null)})])):null,u):null),x?g("div",{class:[`${e}-popconfirm__action`]},x):null)}}),Ne=E("popconfirm",[B("body",`
|
|
2
2
|
font-size: var(--n-font-size);
|
|
3
3
|
display: flex;
|
|
4
4
|
align-items: center;
|
|
@@ -14,4 +14,4 @@ import{ad as ne,d as O,ap as R,h as g,B as N,b0 as se,ah as ie,b1 as ae,b2 as D,
|
|
|
14
14
|
display: flex;
|
|
15
15
|
justify-content: flex-end;
|
|
16
16
|
`,[F("&:not(:first-child)","margin-top: 8px"),E("button",[F("&:not(:last-child)","margin-right: 8px;")])])]),Oe=Object.assign(Object.assign(Object.assign({},Q.props),be),{positiveText:String,negativeText:String,showIcon:{type:Boolean,default:!0},trigger:{type:String,default:"click"},positiveButtonProps:Object,negativeButtonProps:Object,onPositiveClick:Function,onNegativeClick:Function}),ze=O({name:"Popconfirm",props:Oe,slots:Object,__popover__:!0,setup(o){const{mergedClsPrefixRef:e}=J(),p=Q("Popconfirm","-popconfirm",Ne,ue,o,e),a=ve(null);function x(s){var i;if(!(!((i=a.value)===null||i===void 0)&&i.getMergedShow()))return;const{onPositiveClick:v,"onUpdate:show":f}=o;Promise.resolve(v?v(s):!0).then(C=>{var d;C!==!1&&((d=a.value)===null||d===void 0||d.setShow(!1),f&&V(f,!1))})}function u(s){var i;if(!(!((i=a.value)===null||i===void 0)&&i.getMergedShow()))return;const{onNegativeClick:v,"onUpdate:show":f}=o;Promise.resolve(v?v(s):!0).then(C=>{var d;C!==!1&&((d=a.value)===null||d===void 0||d.setShow(!1),f&&V(f,!1))})}return fe(X,{mergedThemeRef:p,mergedClsPrefixRef:e,props:o}),{setShow(s){var i;(i=a.value)===null||i===void 0||i.setShow(s)},syncPosition(){var s;(s=a.value)===null||s===void 0||s.syncPosition()},mergedTheme:p,popoverInstRef:a,handlePositiveClick:x,handleNegativeClick:u}},render(){const{$slots:o,$props:e,mergedTheme:p}=this;return g(G,Object.assign({},de(e,H),{theme:p.peers.Popover,themeOverrides:p.peerOverrides.Popover,internalExtraClass:["popconfirm"],ref:"popoverInstRef"}),{trigger:o.trigger,default:()=>{const a=pe(e,H);return g(Be,Object.assign({},a,{onPositiveClick:this.handlePositiveClick,onNegativeClick:this.handleNegativeClick}),o)}})}}),je={flex:"","gap-16px":""},Ue=["href"],Re=["href"],De=["href"],Ae=O({__name:"ActionCard",props:{snapshot:{},onDelete:{type:Function,default:me},showPreview:{type:Boolean,default:!0},showExport:{type:Boolean,default:!0},showDelete:{type:Boolean,default:!0},showShare:{type:Boolean,default:!0}},setup(o){const e=o,p=ge(),{settingsStore:a,snapshotImportId:x,snapshotImageId:u}=xe(),P=b(async()=>Pe(e.snapshot)),s=b(async()=>_e(e.snapshot)),i=_(()=>p.resolve({name:"snapshot",params:{snapshotId:e.snapshot.id}}).href),v=b(async()=>{await L();const r=await ye(e.snapshot);M({title:"分享链接",content:K(r)})}),f=b(async()=>{await L();const r=await we(e.snapshot);M({title:"分享链接",content:a.shareUseOfficialImportDomain?W(r):q(r),extraContent:Ie(r),quickPick:!0})}),C=async()=>{await Se.removeItem(e.snapshot.id),await ke(500),e.onDelete()},d=_(()=>{const r=x[e.snapshot.id];return r?a.shareUseOfficialImportDomain?W(r):q(r):""}),T=_(()=>{const r=u[e.snapshot.id];return r?K(r):""}),z=async r=>navigator.clipboard.writeText(r).then(()=>{Z.success("复制成功")}).catch(()=>{Z.success("复制失败")});return(r,t)=>{const w=he("SvgIcon"),m=N,j=Ce,U=G,ee=Te,te=ze;return h(),I("div",je,[o.showPreview?(h(),I("a",{key:0,flex:"",target:"_blank",href:l(i)},[c(m,{text:"",title:"查看"},{icon:n(()=>[c(w,{name:"code"})]),_:1})],8,Ue)):S("",!0),o.showExport?(h(),y(U,{key:1},{trigger:n(()=>[c(m,{text:""},{icon:n(()=>[c(w,{name:"export"})]),_:1})]),default:n(()=>[c(j,{vertical:""},{default:n(()=>[c(m,{loading:l(s).loading,onClick:l(s).invoke},{default:n(()=>[...t[4]||(t[4]=[k(" 下载-快照 ",-1)])]),_:1},8,["loading","onClick"]),c(m,{loading:l(P).loading,onClick:l(P).invoke},{default:n(()=>[...t[5]||(t[5]=[k(" 下载-图片 ",-1)])]),_:1},8,["loading","onClick"])]),_:1})]),_:1})):S("",!0),o.showShare?(h(),y(U,{key:2},{trigger:n(()=>[c(m,{text:""},{icon:n(()=>[c(w,{name:"share"})]),_:1})]),default:n(()=>[c(j,{vertical:""},{default:n(()=>[l(d)?(h(),I("a",{key:0,flex:"","decoration-none":"",href:l(d),onClick:t[1]||(t[1]=A(()=>{},["prevent"]))},[c(m,{onClick:t[0]||(t[0]=oe=>z(l(d)))},{default:n(()=>[...t[6]||(t[6]=[k(" 复制链接-快照 ",-1)])]),_:1})],8,Re)):(h(),y(m,{key:1,loading:l(f).loading,onClick:l(f).invoke},{default:n(()=>[...t[7]||(t[7]=[k(" 生成链接-快照 ",-1)])]),_:1},8,["loading","onClick"])),l(T)?(h(),I("a",{key:2,flex:"","decoration-none":"",href:l(T),onClick:t[3]||(t[3]=A(()=>{},["prevent"]))},[c(m,{onClick:t[2]||(t[2]=oe=>z(l(T)))},{default:n(()=>[...t[8]||(t[8]=[k(" 复制链接-图片 ",-1)])]),_:1})],8,De)):(h(),y(m,{key:3,loading:l(v).loading,onClick:l(v).invoke},{default:n(()=>[...t[9]||(t[9]=[k(" 生成链接-图片 ",-1)])]),_:1},8,["loading","onClick"]))]),_:1})]),_:1})):S("",!0),o.showDelete?(h(),y(te,{key:3,onPositiveClick:C},{trigger:n(()=>[c(ee,null,{trigger:n(()=>[c(m,{text:""},{icon:n(()=>[c(w,{name:"delete"})]),_:1})]),default:n(()=>[t[10]||(t[10]=k(" 删除快照 ",-1))]),_:1})]),default:n(()=>[t[11]||(t[11]=k(" 是否删除快照? ",-1))]),_:1})):S("",!0)])}}});export{Ae as _};
|
|
17
|
-
//# sourceMappingURL=ActionCard.vue_vue_type_script_setup_true_lang-
|
|
17
|
+
//# sourceMappingURL=ActionCard.vue_vue_type_script_setup_true_lang-BaXFjcSg.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionCard.vue_vue_type_script_setup_true_lang-DcXE_lii.js","sources":["../../node_modules/.pnpm/naive-ui@2.43.2_vue@3.5.29_typescript@5.9.3_/node_modules/naive-ui/es/popconfirm/src/interface.mjs","../../node_modules/.pnpm/naive-ui@2.43.2_vue@3.5.29_typescript@5.9.3_/node_modules/naive-ui/es/popconfirm/src/PopconfirmPanel.mjs","../../node_modules/.pnpm/naive-ui@2.43.2_vue@3.5.29_typescript@5.9.3_/node_modules/naive-ui/es/popconfirm/src/styles/index.cssr.mjs","../../node_modules/.pnpm/naive-ui@2.43.2_vue@3.5.29_typescript@5.9.3_/node_modules/naive-ui/es/popconfirm/src/Popconfirm.mjs","../../src/components/ActionCard.vue"],"sourcesContent":["import { createInjectionKey } from \"../../_utils/index.mjs\";\nexport const popconfirmInjectionKey = createInjectionKey('n-popconfirm');","import { computed, defineComponent, h, inject, toRef } from 'vue';\nimport { NBaseIcon } from \"../../_internal/index.mjs\";\nimport { WarningIcon } from \"../../_internal/icons/index.mjs\";\nimport { useConfig, useLocale, useThemeClass } from \"../../_mixins/index.mjs\";\nimport { keysOf, resolveSlot, resolveWrappedSlot } from \"../../_utils/index.mjs\";\nimport { NButton } from \"../../button/index.mjs\";\nimport { popconfirmInjectionKey } from \"./interface.mjs\";\nexport const panelProps = {\n positiveText: String,\n negativeText: String,\n showIcon: {\n type: Boolean,\n default: true\n },\n onPositiveClick: {\n type: Function,\n required: true\n },\n onNegativeClick: {\n type: Function,\n required: true\n }\n};\nexport const panelPropKeys = keysOf(panelProps);\nexport default defineComponent({\n name: 'NPopconfirmPanel',\n props: panelProps,\n setup(props) {\n const {\n localeRef\n } = useLocale('Popconfirm');\n const {\n inlineThemeDisabled\n } = useConfig();\n const {\n mergedClsPrefixRef,\n mergedThemeRef,\n props: popconfirmProps\n } = inject(popconfirmInjectionKey);\n const cssVarsRef = computed(() => {\n const {\n common: {\n cubicBezierEaseInOut\n },\n self: {\n fontSize,\n iconSize,\n iconColor\n }\n } = mergedThemeRef.value;\n return {\n '--n-bezier': cubicBezierEaseInOut,\n '--n-font-size': fontSize,\n '--n-icon-size': iconSize,\n '--n-icon-color': iconColor\n };\n });\n const themeClassHandle = inlineThemeDisabled ? useThemeClass('popconfirm-panel', undefined, cssVarsRef, popconfirmProps) : undefined;\n return Object.assign(Object.assign({}, useLocale('Popconfirm')), {\n mergedClsPrefix: mergedClsPrefixRef,\n cssVars: inlineThemeDisabled ? undefined : cssVarsRef,\n localizedPositiveText: computed(() => {\n return props.positiveText || localeRef.value.positiveText;\n }),\n localizedNegativeText: computed(() => {\n return props.negativeText || localeRef.value.negativeText;\n }),\n positiveButtonProps: toRef(popconfirmProps, 'positiveButtonProps'),\n negativeButtonProps: toRef(popconfirmProps, 'negativeButtonProps'),\n handlePositiveClick(e) {\n props.onPositiveClick(e);\n },\n handleNegativeClick(e) {\n props.onNegativeClick(e);\n },\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 showIcon,\n $slots\n } = this;\n const actionContentNode = resolveSlot($slots.action, () => this.negativeText === null && this.positiveText === null ? [] : [this.negativeText !== null && h(NButton, Object.assign({\n size: \"small\",\n onClick: this.handleNegativeClick\n }, this.negativeButtonProps), {\n default: () => this.localizedNegativeText\n }), this.positiveText !== null && h(NButton, Object.assign({\n size: \"small\",\n type: \"primary\",\n onClick: this.handlePositiveClick\n }, this.positiveButtonProps), {\n default: () => this.localizedPositiveText\n })]);\n (_a = this.onRender) === null || _a === void 0 ? void 0 : _a.call(this);\n return h(\"div\", {\n class: [`${mergedClsPrefix}-popconfirm__panel`, this.themeClass],\n style: this.cssVars\n }, resolveWrappedSlot($slots.default, children => showIcon || children ? h(\"div\", {\n class: `${mergedClsPrefix}-popconfirm__body`\n }, showIcon ? h(\"div\", {\n class: `${mergedClsPrefix}-popconfirm__icon`\n }, resolveSlot($slots.icon, () => [h(NBaseIcon, {\n clsPrefix: mergedClsPrefix\n }, {\n default: () => h(WarningIcon, null)\n })])) : null, children) : null), actionContentNode ? h(\"div\", {\n class: [`${mergedClsPrefix}-popconfirm__action`]\n }, actionContentNode) : null);\n }\n});","import { c, cB, cE } from \"../../../_utils/cssr/index.mjs\";\n// vars:\n// --n-font-size\n// --n-icon-size\n// --n-bezier\n// --n-icon-color\nexport default cB('popconfirm', [cE('body', `\n font-size: var(--n-font-size);\n display: flex;\n align-items: center;\n flex-wrap: nowrap;\n position: relative;\n `, [cE('icon', `\n display: flex;\n font-size: var(--n-icon-size);\n color: var(--n-icon-color);\n transition: color .3s var(--n-bezier);\n margin: 0 8px 0 0;\n `)]), cE('action', `\n display: flex;\n justify-content: flex-end;\n `, [c('&:not(:first-child)', 'margin-top: 8px'), cB('button', [c('&:not(:last-child)', 'margin-right: 8px;')])])]);","import { defineComponent, h, provide, ref } from 'vue';\nimport { useConfig, useTheme } from \"../../_mixins/index.mjs\";\nimport { call, keep, omit } from \"../../_utils/index.mjs\";\nimport { NPopover } from \"../../popover/index.mjs\";\nimport { popoverBaseProps } from \"../../popover/src/Popover.mjs\";\nimport { popconfirmLight } from \"../styles/index.mjs\";\nimport { popconfirmInjectionKey } from \"./interface.mjs\";\nimport PopconfirmPanel, { panelPropKeys } from \"./PopconfirmPanel.mjs\";\nimport style from \"./styles/index.cssr.mjs\";\nexport const popconfirmProps = Object.assign(Object.assign(Object.assign({}, useTheme.props), popoverBaseProps), {\n positiveText: String,\n negativeText: String,\n showIcon: {\n type: Boolean,\n default: true\n },\n trigger: {\n type: String,\n default: 'click'\n },\n positiveButtonProps: Object,\n negativeButtonProps: Object,\n onPositiveClick: Function,\n onNegativeClick: Function\n});\nexport default defineComponent({\n name: 'Popconfirm',\n props: popconfirmProps,\n slots: Object,\n __popover__: true,\n setup(props) {\n const {\n mergedClsPrefixRef\n } = useConfig();\n const themeRef = useTheme('Popconfirm', '-popconfirm', style, popconfirmLight, props, mergedClsPrefixRef);\n const popoverInstRef = ref(null);\n function handlePositiveClick(e) {\n var _a;\n if (!((_a = popoverInstRef.value) === null || _a === void 0 ? void 0 : _a.getMergedShow())) return;\n const {\n onPositiveClick,\n 'onUpdate:show': onUpdateShow\n } = props;\n void Promise.resolve(onPositiveClick ? onPositiveClick(e) : true).then(value => {\n var _a;\n if (value === false) return;\n (_a = popoverInstRef.value) === null || _a === void 0 ? void 0 : _a.setShow(false);\n if (onUpdateShow) call(onUpdateShow, false);\n });\n }\n function handleNegativeClick(e) {\n var _a;\n if (!((_a = popoverInstRef.value) === null || _a === void 0 ? void 0 : _a.getMergedShow())) return;\n const {\n onNegativeClick,\n 'onUpdate:show': onUpdateShow\n } = props;\n void Promise.resolve(onNegativeClick ? onNegativeClick(e) : true).then(value => {\n var _a;\n if (value === false) return;\n (_a = popoverInstRef.value) === null || _a === void 0 ? void 0 : _a.setShow(false);\n if (onUpdateShow) call(onUpdateShow, false);\n });\n }\n provide(popconfirmInjectionKey, {\n mergedThemeRef: themeRef,\n mergedClsPrefixRef,\n props\n });\n const returned = {\n setShow(value) {\n var _a;\n (_a = popoverInstRef.value) === null || _a === void 0 ? void 0 : _a.setShow(value);\n },\n syncPosition() {\n var _a;\n (_a = popoverInstRef.value) === null || _a === void 0 ? void 0 : _a.syncPosition();\n },\n mergedTheme: themeRef,\n popoverInstRef,\n handlePositiveClick,\n handleNegativeClick\n };\n return returned;\n },\n render() {\n const {\n $slots: slots,\n $props: props,\n mergedTheme\n } = this;\n return h(NPopover, Object.assign({}, omit(props, panelPropKeys), {\n theme: mergedTheme.peers.Popover,\n themeOverrides: mergedTheme.peerOverrides.Popover,\n internalExtraClass: ['popconfirm'],\n ref: \"popoverInstRef\"\n }), {\n trigger: slots.trigger,\n default: () => {\n const panelProps = keep(props, panelPropKeys);\n return h(PopconfirmPanel, Object.assign({}, panelProps, {\n onPositiveClick: this.handlePositiveClick,\n onNegativeClick: this.handleNegativeClick\n }), slots);\n }\n });\n }\n});","<script setup lang=\"tsx\">\nimport { showTextDLg, waitShareAgree } from '@/utils/dialog';\nimport { message } from '@/utils/discrete';\nimport {\n exportSnapshotAsImportId,\n exportSnapshotAsImage,\n exportSnapshotAsImageId,\n exportSnapshotAsZip,\n} from '@/utils/export';\nimport { buildEmptyFn, delay } from '@/utils/others';\nimport { snapshotStorage } from '@/utils/snapshot';\nimport { useTask } from '@/utils/task';\nimport { getImportUrl, getImagUrl } from '@/utils/url';\nimport {\n getCustomDomainImportUrl,\n getOfficialImportUrl,\n} from '@/utils/plus/url';\n\nconst props = withDefaults(\n defineProps<{\n snapshot: Snapshot;\n onDelete?: () => void;\n showPreview?: boolean;\n showExport?: boolean;\n showDelete?: boolean;\n showShare?: boolean;\n }>(),\n {\n showPreview: true,\n showExport: true,\n showDelete: true,\n showShare: true,\n onDelete: buildEmptyFn,\n },\n);\n\nconst router = useRouter();\nconst { settingsStore, snapshotImportId, snapshotImageId } = useStorageStore();\n\nconst exportJpg = useTask(async () => exportSnapshotAsImage(props.snapshot));\nconst exportZip = useTask(async () => exportSnapshotAsZip(props.snapshot));\n\nconst previewUrl = computed(() => {\n return router.resolve({\n name: 'snapshot',\n params: { snapshotId: props.snapshot.id },\n }).href;\n});\n\nconst exportJpgUrl = useTask(async () => {\n await waitShareAgree();\n const imageId = await exportSnapshotAsImageId(props.snapshot);\n showTextDLg({\n title: `分享链接`,\n content: getImagUrl(imageId),\n });\n});\n\nconst exportZipUrl = useTask(async () => {\n await waitShareAgree();\n const importId = await exportSnapshotAsImportId(props.snapshot);\n showTextDLg({\n title: `分享链接`,\n content: settingsStore.shareUseOfficialImportDomain\n ? getOfficialImportUrl(importId)\n : getImportUrl(importId),\n extraContent: getCustomDomainImportUrl(importId),\n quickPick: true,\n });\n});\n\nconst deleteSnapshot = async () => {\n await snapshotStorage.removeItem(props.snapshot.id);\n await delay(500);\n props.onDelete();\n};\n\nconst snapshotImportUrl = computed(() => {\n const t = snapshotImportId[props.snapshot.id];\n if (!t) return '';\n return settingsStore.shareUseOfficialImportDomain\n ? getOfficialImportUrl(t)\n : getImportUrl(t);\n});\nconst snapshotImageUrl = computed(() => {\n const t = snapshotImageId[props.snapshot.id];\n if (!t) return '';\n return getImagUrl(t);\n});\n\nconst copy = async (content: string) => {\n return navigator.clipboard\n .writeText(content)\n .then(() => {\n message.success(`复制成功`);\n })\n .catch(() => {\n message.success(`复制失败`);\n });\n};\n</script>\n<template>\n <div flex gap-16px>\n <a v-if=\"showPreview\" flex target=\"_blank\" :href=\"previewUrl\">\n <NButton text title=\"查看\">\n <template #icon>\n <SvgIcon name=\"code\" />\n </template>\n </NButton>\n </a>\n\n <NPopover v-if=\"showExport\">\n <template #trigger>\n <NButton text>\n <template #icon>\n <SvgIcon name=\"export\" />\n </template>\n </NButton>\n </template>\n <NSpace vertical>\n <NButton :loading=\"exportZip.loading\" @click=\"exportZip.invoke\">\n 下载-快照\n </NButton>\n <NButton :loading=\"exportJpg.loading\" @click=\"exportJpg.invoke\">\n 下载-图片\n </NButton>\n </NSpace>\n </NPopover>\n\n <NPopover v-if=\"showShare\">\n <template #trigger>\n <NButton text>\n <template #icon>\n <SvgIcon name=\"share\" />\n </template>\n </NButton>\n </template>\n <NSpace vertical>\n <a\n v-if=\"snapshotImportUrl\"\n flex\n decoration-none\n :href=\"snapshotImportUrl\"\n @click.prevent\n >\n <NButton @click=\"copy(snapshotImportUrl)\"> 复制链接-快照 </NButton>\n </a>\n <NButton\n v-else\n :loading=\"exportZipUrl.loading\"\n @click=\"exportZipUrl.invoke\"\n >\n 生成链接-快照\n </NButton>\n <a\n v-if=\"snapshotImageUrl\"\n flex\n decoration-none\n :href=\"snapshotImageUrl\"\n @click.prevent\n >\n <NButton @click=\"copy(snapshotImageUrl)\"> 复制链接-图片 </NButton>\n </a>\n <NButton\n v-else\n :loading=\"exportJpgUrl.loading\"\n @click=\"exportJpgUrl.invoke\"\n >\n 生成链接-图片\n </NButton>\n </NSpace>\n </NPopover>\n\n <NPopconfirm v-if=\"showDelete\" @positiveClick=\"deleteSnapshot\">\n 是否删除快照?\n <template #trigger>\n <NTooltip>\n <template #trigger>\n <NButton text>\n <template #icon>\n <SvgIcon name=\"delete\" />\n </template>\n </NButton>\n </template>\n 删除快照\n </NTooltip>\n </template>\n </NPopconfirm>\n </div>\n</template>\n"],"names":["popconfirmInjectionKey","createInjectionKey","panelProps","panelPropKeys","keysOf","PopconfirmPanel","defineComponent","props","localeRef","useLocale","inlineThemeDisabled","useConfig","mergedClsPrefixRef","mergedThemeRef","popconfirmProps","inject","cssVarsRef","computed","cubicBezierEaseInOut","fontSize","iconSize","iconColor","themeClassHandle","useThemeClass","toRef","e","_a","mergedClsPrefix","showIcon","$slots","actionContentNode","resolveSlot","h","NButton","resolveWrappedSlot","children","NBaseIcon","WarningIcon","style","cB","cE","c","useTheme","popoverBaseProps","__unplugin_components_4","themeRef","popconfirmLight","popoverInstRef","ref","handlePositiveClick","onPositiveClick","onUpdateShow","value","call","handleNegativeClick","onNegativeClick","provide","slots","mergedTheme","NPopover","omit","keep","__props","router","useRouter","settingsStore","snapshotImportId","snapshotImageId","useStorageStore","exportJpg","useTask","exportSnapshotAsImage","snapshot","exportZip","exportSnapshotAsZip","previewUrl","resolve","name","params","snapshotId","id","href","exportJpgUrl","waitShareAgree","imageId","exportSnapshotAsImageId","showTextDLg","title","content","getImagUrl","exportZipUrl","importId","exportSnapshotAsImportId","shareUseOfficialImportDomain","getOfficialImportUrl","getImportUrl","extraContent","getCustomDomainImportUrl","quickPick","deleteSnapshot","snapshotStorage","removeItem","delay","onDelete","snapshotImportUrl","t","snapshotImageUrl","copy","navigator","clipboard","writeText","then","message","success","catch","_openBlock","_createElementBlock","_hoisted_1","showPreview","flex","target","_unref","_createVNode","_component_NButton","text","icon","_component_SvgIcon","showExport","_createBlock","_component_NPopover","key","trigger","_component_NSpace","vertical","loading","onClick","invoke","_cache","showShare","$event","showDelete","_component_NPopconfirm","_component_NTooltip"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
|
|
1
|
+
{"version":3,"file":"ActionCard.vue_vue_type_script_setup_true_lang-BaXFjcSg.js","sources":["../../node_modules/.pnpm/naive-ui@2.43.2_vue@3.5.29_typescript@5.9.3_/node_modules/naive-ui/es/popconfirm/src/interface.mjs","../../node_modules/.pnpm/naive-ui@2.43.2_vue@3.5.29_typescript@5.9.3_/node_modules/naive-ui/es/popconfirm/src/PopconfirmPanel.mjs","../../node_modules/.pnpm/naive-ui@2.43.2_vue@3.5.29_typescript@5.9.3_/node_modules/naive-ui/es/popconfirm/src/styles/index.cssr.mjs","../../node_modules/.pnpm/naive-ui@2.43.2_vue@3.5.29_typescript@5.9.3_/node_modules/naive-ui/es/popconfirm/src/Popconfirm.mjs","../../src/components/ActionCard.vue"],"sourcesContent":["import { createInjectionKey } from \"../../_utils/index.mjs\";\nexport const popconfirmInjectionKey = createInjectionKey('n-popconfirm');","import { computed, defineComponent, h, inject, toRef } from 'vue';\nimport { NBaseIcon } from \"../../_internal/index.mjs\";\nimport { WarningIcon } from \"../../_internal/icons/index.mjs\";\nimport { useConfig, useLocale, useThemeClass } from \"../../_mixins/index.mjs\";\nimport { keysOf, resolveSlot, resolveWrappedSlot } from \"../../_utils/index.mjs\";\nimport { NButton } from \"../../button/index.mjs\";\nimport { popconfirmInjectionKey } from \"./interface.mjs\";\nexport const panelProps = {\n positiveText: String,\n negativeText: String,\n showIcon: {\n type: Boolean,\n default: true\n },\n onPositiveClick: {\n type: Function,\n required: true\n },\n onNegativeClick: {\n type: Function,\n required: true\n }\n};\nexport const panelPropKeys = keysOf(panelProps);\nexport default defineComponent({\n name: 'NPopconfirmPanel',\n props: panelProps,\n setup(props) {\n const {\n localeRef\n } = useLocale('Popconfirm');\n const {\n inlineThemeDisabled\n } = useConfig();\n const {\n mergedClsPrefixRef,\n mergedThemeRef,\n props: popconfirmProps\n } = inject(popconfirmInjectionKey);\n const cssVarsRef = computed(() => {\n const {\n common: {\n cubicBezierEaseInOut\n },\n self: {\n fontSize,\n iconSize,\n iconColor\n }\n } = mergedThemeRef.value;\n return {\n '--n-bezier': cubicBezierEaseInOut,\n '--n-font-size': fontSize,\n '--n-icon-size': iconSize,\n '--n-icon-color': iconColor\n };\n });\n const themeClassHandle = inlineThemeDisabled ? useThemeClass('popconfirm-panel', undefined, cssVarsRef, popconfirmProps) : undefined;\n return Object.assign(Object.assign({}, useLocale('Popconfirm')), {\n mergedClsPrefix: mergedClsPrefixRef,\n cssVars: inlineThemeDisabled ? undefined : cssVarsRef,\n localizedPositiveText: computed(() => {\n return props.positiveText || localeRef.value.positiveText;\n }),\n localizedNegativeText: computed(() => {\n return props.negativeText || localeRef.value.negativeText;\n }),\n positiveButtonProps: toRef(popconfirmProps, 'positiveButtonProps'),\n negativeButtonProps: toRef(popconfirmProps, 'negativeButtonProps'),\n handlePositiveClick(e) {\n props.onPositiveClick(e);\n },\n handleNegativeClick(e) {\n props.onNegativeClick(e);\n },\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 showIcon,\n $slots\n } = this;\n const actionContentNode = resolveSlot($slots.action, () => this.negativeText === null && this.positiveText === null ? [] : [this.negativeText !== null && h(NButton, Object.assign({\n size: \"small\",\n onClick: this.handleNegativeClick\n }, this.negativeButtonProps), {\n default: () => this.localizedNegativeText\n }), this.positiveText !== null && h(NButton, Object.assign({\n size: \"small\",\n type: \"primary\",\n onClick: this.handlePositiveClick\n }, this.positiveButtonProps), {\n default: () => this.localizedPositiveText\n })]);\n (_a = this.onRender) === null || _a === void 0 ? void 0 : _a.call(this);\n return h(\"div\", {\n class: [`${mergedClsPrefix}-popconfirm__panel`, this.themeClass],\n style: this.cssVars\n }, resolveWrappedSlot($slots.default, children => showIcon || children ? h(\"div\", {\n class: `${mergedClsPrefix}-popconfirm__body`\n }, showIcon ? h(\"div\", {\n class: `${mergedClsPrefix}-popconfirm__icon`\n }, resolveSlot($slots.icon, () => [h(NBaseIcon, {\n clsPrefix: mergedClsPrefix\n }, {\n default: () => h(WarningIcon, null)\n })])) : null, children) : null), actionContentNode ? h(\"div\", {\n class: [`${mergedClsPrefix}-popconfirm__action`]\n }, actionContentNode) : null);\n }\n});","import { c, cB, cE } from \"../../../_utils/cssr/index.mjs\";\n// vars:\n// --n-font-size\n// --n-icon-size\n// --n-bezier\n// --n-icon-color\nexport default cB('popconfirm', [cE('body', `\n font-size: var(--n-font-size);\n display: flex;\n align-items: center;\n flex-wrap: nowrap;\n position: relative;\n `, [cE('icon', `\n display: flex;\n font-size: var(--n-icon-size);\n color: var(--n-icon-color);\n transition: color .3s var(--n-bezier);\n margin: 0 8px 0 0;\n `)]), cE('action', `\n display: flex;\n justify-content: flex-end;\n `, [c('&:not(:first-child)', 'margin-top: 8px'), cB('button', [c('&:not(:last-child)', 'margin-right: 8px;')])])]);","import { defineComponent, h, provide, ref } from 'vue';\nimport { useConfig, useTheme } from \"../../_mixins/index.mjs\";\nimport { call, keep, omit } from \"../../_utils/index.mjs\";\nimport { NPopover } from \"../../popover/index.mjs\";\nimport { popoverBaseProps } from \"../../popover/src/Popover.mjs\";\nimport { popconfirmLight } from \"../styles/index.mjs\";\nimport { popconfirmInjectionKey } from \"./interface.mjs\";\nimport PopconfirmPanel, { panelPropKeys } from \"./PopconfirmPanel.mjs\";\nimport style from \"./styles/index.cssr.mjs\";\nexport const popconfirmProps = Object.assign(Object.assign(Object.assign({}, useTheme.props), popoverBaseProps), {\n positiveText: String,\n negativeText: String,\n showIcon: {\n type: Boolean,\n default: true\n },\n trigger: {\n type: String,\n default: 'click'\n },\n positiveButtonProps: Object,\n negativeButtonProps: Object,\n onPositiveClick: Function,\n onNegativeClick: Function\n});\nexport default defineComponent({\n name: 'Popconfirm',\n props: popconfirmProps,\n slots: Object,\n __popover__: true,\n setup(props) {\n const {\n mergedClsPrefixRef\n } = useConfig();\n const themeRef = useTheme('Popconfirm', '-popconfirm', style, popconfirmLight, props, mergedClsPrefixRef);\n const popoverInstRef = ref(null);\n function handlePositiveClick(e) {\n var _a;\n if (!((_a = popoverInstRef.value) === null || _a === void 0 ? void 0 : _a.getMergedShow())) return;\n const {\n onPositiveClick,\n 'onUpdate:show': onUpdateShow\n } = props;\n void Promise.resolve(onPositiveClick ? onPositiveClick(e) : true).then(value => {\n var _a;\n if (value === false) return;\n (_a = popoverInstRef.value) === null || _a === void 0 ? void 0 : _a.setShow(false);\n if (onUpdateShow) call(onUpdateShow, false);\n });\n }\n function handleNegativeClick(e) {\n var _a;\n if (!((_a = popoverInstRef.value) === null || _a === void 0 ? void 0 : _a.getMergedShow())) return;\n const {\n onNegativeClick,\n 'onUpdate:show': onUpdateShow\n } = props;\n void Promise.resolve(onNegativeClick ? onNegativeClick(e) : true).then(value => {\n var _a;\n if (value === false) return;\n (_a = popoverInstRef.value) === null || _a === void 0 ? void 0 : _a.setShow(false);\n if (onUpdateShow) call(onUpdateShow, false);\n });\n }\n provide(popconfirmInjectionKey, {\n mergedThemeRef: themeRef,\n mergedClsPrefixRef,\n props\n });\n const returned = {\n setShow(value) {\n var _a;\n (_a = popoverInstRef.value) === null || _a === void 0 ? void 0 : _a.setShow(value);\n },\n syncPosition() {\n var _a;\n (_a = popoverInstRef.value) === null || _a === void 0 ? void 0 : _a.syncPosition();\n },\n mergedTheme: themeRef,\n popoverInstRef,\n handlePositiveClick,\n handleNegativeClick\n };\n return returned;\n },\n render() {\n const {\n $slots: slots,\n $props: props,\n mergedTheme\n } = this;\n return h(NPopover, Object.assign({}, omit(props, panelPropKeys), {\n theme: mergedTheme.peers.Popover,\n themeOverrides: mergedTheme.peerOverrides.Popover,\n internalExtraClass: ['popconfirm'],\n ref: \"popoverInstRef\"\n }), {\n trigger: slots.trigger,\n default: () => {\n const panelProps = keep(props, panelPropKeys);\n return h(PopconfirmPanel, Object.assign({}, panelProps, {\n onPositiveClick: this.handlePositiveClick,\n onNegativeClick: this.handleNegativeClick\n }), slots);\n }\n });\n }\n});","<script setup lang=\"tsx\">\nimport { showTextDLg, waitShareAgree } from '@/utils/dialog';\nimport { message } from '@/utils/discrete';\nimport {\n exportSnapshotAsImportId,\n exportSnapshotAsImage,\n exportSnapshotAsImageId,\n exportSnapshotAsZip,\n} from '@/utils/export';\nimport { buildEmptyFn, delay } from '@/utils/others';\nimport { snapshotStorage } from '@/utils/snapshot';\nimport { useTask } from '@/utils/task';\nimport { getImportUrl, getImagUrl } from '@/utils/url';\nimport {\n getCustomDomainImportUrl,\n getOfficialImportUrl,\n} from '@/utils/plus/url';\n\nconst props = withDefaults(\n defineProps<{\n snapshot: Snapshot;\n onDelete?: () => void;\n showPreview?: boolean;\n showExport?: boolean;\n showDelete?: boolean;\n showShare?: boolean;\n }>(),\n {\n showPreview: true,\n showExport: true,\n showDelete: true,\n showShare: true,\n onDelete: buildEmptyFn,\n },\n);\n\nconst router = useRouter();\nconst { settingsStore, snapshotImportId, snapshotImageId } = useStorageStore();\n\nconst exportJpg = useTask(async () => exportSnapshotAsImage(props.snapshot));\nconst exportZip = useTask(async () => exportSnapshotAsZip(props.snapshot));\n\nconst previewUrl = computed(() => {\n return router.resolve({\n name: 'snapshot',\n params: { snapshotId: props.snapshot.id },\n }).href;\n});\n\nconst exportJpgUrl = useTask(async () => {\n await waitShareAgree();\n const imageId = await exportSnapshotAsImageId(props.snapshot);\n showTextDLg({\n title: `分享链接`,\n content: getImagUrl(imageId),\n });\n});\n\nconst exportZipUrl = useTask(async () => {\n await waitShareAgree();\n const importId = await exportSnapshotAsImportId(props.snapshot);\n showTextDLg({\n title: `分享链接`,\n content: settingsStore.shareUseOfficialImportDomain\n ? getOfficialImportUrl(importId)\n : getImportUrl(importId),\n extraContent: getCustomDomainImportUrl(importId),\n quickPick: true,\n });\n});\n\nconst deleteSnapshot = async () => {\n await snapshotStorage.removeItem(props.snapshot.id);\n await delay(500);\n props.onDelete();\n};\n\nconst snapshotImportUrl = computed(() => {\n const t = snapshotImportId[props.snapshot.id];\n if (!t) return '';\n return settingsStore.shareUseOfficialImportDomain\n ? getOfficialImportUrl(t)\n : getImportUrl(t);\n});\nconst snapshotImageUrl = computed(() => {\n const t = snapshotImageId[props.snapshot.id];\n if (!t) return '';\n return getImagUrl(t);\n});\n\nconst copy = async (content: string) => {\n return navigator.clipboard\n .writeText(content)\n .then(() => {\n message.success(`复制成功`);\n })\n .catch(() => {\n message.success(`复制失败`);\n });\n};\n</script>\n<template>\n <div flex gap-16px>\n <a v-if=\"showPreview\" flex target=\"_blank\" :href=\"previewUrl\">\n <NButton text title=\"查看\">\n <template #icon>\n <SvgIcon name=\"code\" />\n </template>\n </NButton>\n </a>\n\n <NPopover v-if=\"showExport\">\n <template #trigger>\n <NButton text>\n <template #icon>\n <SvgIcon name=\"export\" />\n </template>\n </NButton>\n </template>\n <NSpace vertical>\n <NButton :loading=\"exportZip.loading\" @click=\"exportZip.invoke\">\n 下载-快照\n </NButton>\n <NButton :loading=\"exportJpg.loading\" @click=\"exportJpg.invoke\">\n 下载-图片\n </NButton>\n </NSpace>\n </NPopover>\n\n <NPopover v-if=\"showShare\">\n <template #trigger>\n <NButton text>\n <template #icon>\n <SvgIcon name=\"share\" />\n </template>\n </NButton>\n </template>\n <NSpace vertical>\n <a\n v-if=\"snapshotImportUrl\"\n flex\n decoration-none\n :href=\"snapshotImportUrl\"\n @click.prevent\n >\n <NButton @click=\"copy(snapshotImportUrl)\"> 复制链接-快照 </NButton>\n </a>\n <NButton\n v-else\n :loading=\"exportZipUrl.loading\"\n @click=\"exportZipUrl.invoke\"\n >\n 生成链接-快照\n </NButton>\n <a\n v-if=\"snapshotImageUrl\"\n flex\n decoration-none\n :href=\"snapshotImageUrl\"\n @click.prevent\n >\n <NButton @click=\"copy(snapshotImageUrl)\"> 复制链接-图片 </NButton>\n </a>\n <NButton\n v-else\n :loading=\"exportJpgUrl.loading\"\n @click=\"exportJpgUrl.invoke\"\n >\n 生成链接-图片\n </NButton>\n </NSpace>\n </NPopover>\n\n <NPopconfirm v-if=\"showDelete\" @positiveClick=\"deleteSnapshot\">\n 是否删除快照?\n <template #trigger>\n <NTooltip>\n <template #trigger>\n <NButton text>\n <template #icon>\n <SvgIcon name=\"delete\" />\n </template>\n </NButton>\n </template>\n 删除快照\n </NTooltip>\n </template>\n </NPopconfirm>\n </div>\n</template>\n"],"names":["popconfirmInjectionKey","createInjectionKey","panelProps","panelPropKeys","keysOf","PopconfirmPanel","defineComponent","props","localeRef","useLocale","inlineThemeDisabled","useConfig","mergedClsPrefixRef","mergedThemeRef","popconfirmProps","inject","cssVarsRef","computed","cubicBezierEaseInOut","fontSize","iconSize","iconColor","themeClassHandle","useThemeClass","toRef","e","_a","mergedClsPrefix","showIcon","$slots","actionContentNode","resolveSlot","h","NButton","resolveWrappedSlot","children","NBaseIcon","WarningIcon","style","cB","cE","c","useTheme","popoverBaseProps","__unplugin_components_4","themeRef","popconfirmLight","popoverInstRef","ref","handlePositiveClick","onPositiveClick","onUpdateShow","value","call","handleNegativeClick","onNegativeClick","provide","slots","mergedTheme","NPopover","omit","keep","__props","router","useRouter","settingsStore","snapshotImportId","snapshotImageId","useStorageStore","exportJpg","useTask","exportSnapshotAsImage","snapshot","exportZip","exportSnapshotAsZip","previewUrl","resolve","name","params","snapshotId","id","href","exportJpgUrl","waitShareAgree","imageId","exportSnapshotAsImageId","showTextDLg","title","content","getImagUrl","exportZipUrl","importId","exportSnapshotAsImportId","shareUseOfficialImportDomain","getOfficialImportUrl","getImportUrl","extraContent","getCustomDomainImportUrl","quickPick","deleteSnapshot","snapshotStorage","removeItem","delay","onDelete","snapshotImportUrl","t","snapshotImageUrl","copy","navigator","clipboard","writeText","then","message","success","catch","_openBlock","_createElementBlock","_hoisted_1","showPreview","flex","target","_unref","_createVNode","_component_NButton","text","icon","_component_SvgIcon","showExport","_createBlock","_component_NPopover","key","trigger","_component_NSpace","vertical","loading","onClick","invoke","_cache","showShare","$event","showDelete","_component_NPopconfirm","_component_NTooltip"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{d as Ne,l as Ce,aR as $e,o as De,a$ as ze,w as de,q as ce,t as v,v as i,x as n,y as a,B as Ae,_ as Me,A as Ue,z as s,J as M,F as c,C as m,G as u,H as K,I as $,D as U,K as Z,L as Te,M as F,Q as be,R as T,i as j,aZ as b,V as Le,W as Pe}from"./index-BVe221dz.js";import{u as q,_ as Be,b as Re,d as Ye,c as He,a as Ee,e as Ve,f as Ge,F as Ke,A as Ze,G as D,E as Fe,D as je,w as ue,r as qe,s as me,k as Oe,j as We,q as Je}from"./SettingsModal.vue_vue_type_script_setup_true_lang-BY-etmy1.js";import{u as Qe,b as Xe}from"./snapshotGroup-DCHU-3Qc.js";import{a as et,_ as tt,g as O,b as ge}from"./node-DDV9aVRp.js";import{a as L,b as S,p as at}from"./snapshot-CG5KackY.js";const nt={"page-size":"",flex:"","flex-col":"","p-10px":"","gap-10px":""},st={flex:"","items-center":"","gap-24px":""},ot={key:0,gkd_code:"","pl-16px":"","whitespace-nowrap":"",flex:"","items-center":""},it={class:"flex-1 min-h-0 overflow-auto pr-6px"},lt={key:0,"py-40px":"","text-center":"","opacity-70":""},pt={flex:"","items-center":"","gap-8px":""},rt={flex:"","items-center":"","gap-8px":""},dt={flex:"","items-start":"","gap-10px":"","flex-wrap":""},ct=["onMouseenter"],ut={flex:"","items-center":"","gap-6px":"","leading-18px":""},mt={class:"truncate font-600"},gt={"text-12px":"","mt-2px":"",class:"font-600"},vt={"mt-4px":"","text-12px":"",class:"opacity-75"},ft={"mt-2px":"","text-12px":"",class:"opacity-70"},_t={class:"inline-block w-fit max-w-90vw"},xt=["src"],wt={key:1,"py-20px":"","text-center":"","opacity-70":""},kt={class:"inline-flex"},$t=Ne({__name:"DevicePage",setup(ht){const ve=Ce(),{api:g,origin:fe,serverInfo:f}=Ke(),{settingsStore:P,snapshotImportTime:W,snapshotViewedTime:B}=be(),k=$e("device_link",""),z=T(!1),J=e=>{const t=e.trim();if(!t)return null;const p=/^https?:\/\//i.test(t)?t:`http://${t}`;return Ze(()=>{const l=new URL(p);return l.port||(l.port="8888"),l.origin},()=>null)},A=q(async()=>{const e=J(k.value);if(!e){b.error("非法设备地址");return}fe.value=e,k.value=e,f.value=await g.getServerInfo()}),Q=j(()=>{if(!f.value)return"未连接设备";const e=f.value.device,t=f.value.gkdAppInfo;return`${e.manufacturer} Android${e.release} - GKD${t.versionName}`});De(async()=>{await ze(500),J(k.value)&&A.invoke()});const R=T([]);de(async()=>{if(!f.value)return;document.title=Q.value;const e=await g.getSnapshots();e.sort((t,p)=>p.id-t.id),R.value=e});const X=q(async()=>{const e=await g.captureSnapshot(),t=await g.getScreenshot({id:e.id});await L.setItem(e.id,e),await S.setItem(e.id,t),b.success("捕获并保存快照成功");const p=await g.getSnapshots();p.sort((l,_)=>_.id-l.id),R.value=p}),ee=q(async()=>{const e=(await g.getSnapshots()).map(r=>r.id),t=new Set((await S.keys()).map(r=>parseInt(r))),p=e.filter(r=>!t.has(r));if(p.length==0){b.success("没有新记录可导入");return}let l=0;const _=at(3);await Promise.all(p.map(r=>_(async()=>{const[h,y]=await Promise.all([g.getSnapshot({id:r}),g.getScreenshot({id:r})]);h.nodes&&(await Promise.all([L.setItem(r,h),S.setItem(r,y)]),l++)}))),b.success(`导入${l}条新记录`)}),_e=async e=>{await L.hasItem(e.id)||await L.setItem(e.id,await g.getSnapshot({id:e.id}))},Y=async e=>{await S.hasItem(e.id)||await S.setItem(e.id,await g.getScreenshot({id:e.id}))},H=async e=>{await Promise.all([_e(e),Y(e)])},te=D(async e=>{await H(e),B[e.id]=Date.now(),window.open(ve.resolve({name:"snapshot",params:{snapshotId:e.id}}).href)},e=>e.id),xe=(e,t=4,p=3)=>{const l=e.slice(0,t).map(r=>r.packageName),_=e.slice(0,t).flatMap(r=>r.activities.slice(0,p).map(h=>`${r.packageName}::${h.activityId}`));return{packageNames:l,activityNames:_}},E=j(()=>Xe(R.value,W)),we=e=>O(e).name||e.appId,ke=e=>`${ge(e).manufacturer} Android ${ge(e).release||""}`,he=e=>F(W[e.id]||e.id).format("YYYY-MM-DD HH:mm:ss"),ye=j(()=>P.lowMemoryMode?6:24),{previewUrlMap:ae,previewLoadingMap:Ie,previewErrorMap:Se,ensurePreview:ne}=Qe({getScreenshot:async e=>await S.getItem(e)||await g.getScreenshot({id:e}),cacheLimit:ye}),se=D(async e=>{await H(e),await Fe(e)},e=>e.id),oe=D(async e=>{await Y(e),await je(e)},e=>e.id),ie=D(async e=>{await ue(),await H(e);const t=await qe(e);me({title:"分享链接",content:P.shareUseOfficialImportDomain?We(t):Le(t),extraContent:Oe(t)})},e=>e.id),le=D(async e=>{await ue(),await Y(e);const t=await Je(e);me({title:"分享链接",content:Pe(t)})},e=>e.id),N=T([]),C=T([]);return de(()=>{if(!P.autoExpandSnapshots){N.value=[],C.value=[];return}const{packageNames:e,activityNames:t}=xe(E.value,5,4);N.value=e,C.value=t}),(e,t)=>{const p=ce("SvgIcon"),l=Ae,_=ce("RouterLink"),r=Me,h=Be,y=et,I=Ve,V=tt,G=Ee,pe=Ye,re=He;return m(),v($,null,[i("div",nt,[i("div",st,[n(_,{to:"/",class:"flex ml-12px",title:"首页"},{default:a(()=>[n(l,{text:"",style:{"--n-icon-size":"var(--app-icon-size)"}},{icon:a(()=>[n(p,{name:"home"})]),_:1})]),_:1}),n(h,null,{default:a(()=>[n(r,{value:s(k),"onUpdate:value":t[0]||(t[0]=d=>M(k)?k.value=d:null),placeholder:"请输入设备地址 默认端口:8888",class:"gkd_code",style:{width:"260px"},onKeyup:Ue(s(A).invoke,["enter"])},null,8,["value","onKeyup"]),n(l,{loading:s(A).loading,onClick:s(A).invoke},{default:a(()=>[...t[5]||(t[5]=[c("刷新连接",-1)])]),_:1},8,["loading","onClick"]),s(f)?(m(),v("div",ot,u(s(Q)),1)):K("",!0)]),_:1}),s(f)?(m(),v($,{key:0},[n(y,null,{trigger:a(()=>[n(l,{text:"",style:{"--n-icon-size":"var(--app-icon-size)"},class:"device-top-icon",loading:s(X).loading,onClick:s(X).invoke},{default:a(()=>[n(p,{name:"Snapshot"})]),_:1},8,["loading","onClick"])]),default:a(()=>[t[6]||(t[6]=c(" 捕获快照 ",-1))]),_:1}),n(Re),n(y,null,{trigger:a(()=>[n(l,{text:"",style:{"--n-icon-size":"var(--app-icon-size)"},class:"device-top-icon",loading:s(ee).loading,onClick:s(ee).invoke},{default:a(()=>[n(p,{name:"Down-all"})]),_:1},8,["loading","onClick"])]),default:a(()=>[t[7]||(t[7]=c(" 下载所有快照 ",-1))]),_:1}),n(y,null,{trigger:a(()=>[n(l,{text:"",style:{"--n-icon-size":"var(--app-icon-size)"},class:"device-top-icon",onClick:t[1]||(t[1]=d=>z.value=!0)},{default:a(()=>[n(p,{name:"settings"})]),_:1})]),default:a(()=>[t[8]||(t[8]=c(" 设置 ",-1))]),_:1})],64)):K("",!0)]),i("div",it,[s(E).length?(m(),U(re,{key:1,expandedNames:s(N),"onUpdate:expandedNames":t[3]||(t[3]=d=>M(N)?N.value=d:null),accordion:!1},{default:a(()=>[(m(!0),v($,null,Z(s(E),d=>(m(),U(pe,{key:d.packageName,name:d.packageName},{header:a(()=>[i("div",pt,[n(I,{type:"info",size:"small"},{default:a(()=>[...t[9]||(t[9]=[c("包名",-1)])]),_:1}),i("code",null,u(`${d.appName} (${d.packageName})`),1),n(I,{size:"small"},{default:a(()=>[c(u(d.activities.length)+" Activities",1)]),_:2},1024)])]),default:a(()=>[n(re,{expandedNames:s(C),"onUpdate:expandedNames":t[2]||(t[2]=x=>M(C)?C.value=x:null),accordion:!1},{default:a(()=>[(m(!0),v($,null,Z(d.activities,x=>(m(),U(pe,{key:`${d.packageName}::${x.activityId}`,name:`${d.packageName}::${x.activityId}`},{header:a(()=>[i("div",rt,[n(I,{type:"success",size:"small"},{default:a(()=>[...t[10]||(t[10]=[c("Activity",-1)])]),_:1}),i("code",null,u(x.activityId),1),n(I,{size:"small"},{default:a(()=>[c(u(x.snapshots.length)+" snapshots",1)]),_:2},1024)])]),default:a(()=>[n(G,{vertical:"",size:6},{default:a(()=>[(m(!0),v($,null,Z(x.snapshots,o=>(m(),v("div",{key:o.id,class:Te(["rounded-8px border border-solid px-10px py-6px transition-colors",[s(B)[o.id]?"snapshot-row-viewed":"surface-card"]])},[i("div",dt,[n(V,{trigger:"hover",placement:"right-start",flip:!0,shift:!0,"onUpdate:show":w=>{w&&s(ne)(o.id)}},{trigger:a(()=>[i("div",{class:"min-w-0 inline-flex max-w-full cursor-default select-text flex-col",onMouseenter:w=>s(ne)(o.id)},[i("div",ut,[n(I,{size:"small",type:"warning"},{default:a(()=>[c(u(s(F)(o.id).format("MM-DD HH:mm:ss")),1)]),_:2},1024),s(B)[o.id]?(m(),U(I,{key:0,size:"small",type:"success"},{default:a(()=>[...t[11]||(t[11]=[c(" 已查看 ",-1)])]),_:1})):K("",!0),i("span",mt,u(we(o)),1)]),i("div",gt," 界面ID: "+u(o.activityId||"(unknown)"),1),i("div",vt,[i("span",null,"创建时间: "+u(s(F)(o.id).format("YYYY-MM-DD HH:mm:ss")),1),t[12]||(t[12]=i("span",{class:"mx-6px opacity-45"},"|",-1)),i("span",null,"导入时间: "+u(he(o)),1)]),i("div",ft,[i("span",null,"设备: "+u(ke(o)),1),t[13]||(t[13]=i("span",{class:"mx-6px opacity-45"},"|",-1)),i("span",null,"应用ID: "+u(o.appId),1),t[14]||(t[14]=i("span",{class:"mx-6px opacity-45"},"|",-1)),i("span",null,"版本代码: "+u(s(O)(o).versionCode),1),t[15]||(t[15]=i("span",{class:"mx-6px opacity-45"},"|",-1)),i("span",null,"版本号: "+u(s(O)(o).versionName||"unknown"),1)])],40,ct)]),default:a(()=>[i("div",_t,[s(ae)[o.id]?(m(),v("img",{key:0,src:s(ae)[o.id],class:"block h-auto w-auto max-h-320px max-w-80vw rounded-6px",alt:"preview"},null,8,xt)):(m(),v("div",wt,u(s(Se)[o.id]||(s(Ie)[o.id]?"预览加载中...":"暂无预览")),1))])]),_:2},1032,["onUpdate:show"]),n(l,{text:"",size:"small",class:"ml-auto shrink-0",loading:s(te).loading[o.id],onClick:w=>s(te).invoke(o)},{icon:a(()=>[n(p,{name:"code"})]),_:1},8,["loading","onClick"]),n(V,null,{trigger:a(()=>[n(l,{text:""},{icon:a(()=>[n(p,{name:"export"})]),_:1})]),default:a(()=>[n(G,{vertical:""},{default:a(()=>[n(l,{loading:s(se).loading[o.id],onClick:w=>s(se).invoke(o)},{default:a(()=>[...t[16]||(t[16]=[c(" 下载-快照 ",-1)])]),_:1},8,["loading","onClick"]),n(l,{loading:s(oe).loading[o.id],onClick:w=>s(oe).invoke(o)},{default:a(()=>[...t[17]||(t[17]=[c(" 下载-图片 ",-1)])]),_:1},8,["loading","onClick"])]),_:2},1024)]),_:2},1024),n(V,null,{trigger:a(()=>[n(l,{text:""},{icon:a(()=>[n(p,{name:"share"})]),_:1})]),default:a(()=>[n(G,{vertical:""},{default:a(()=>[n(l,{loading:s(ie).loading[o.id],onClick:w=>s(ie).invoke(o)},{default:a(()=>[...t[18]||(t[18]=[c(" 生成链接-快照 ",-1)])]),_:1},8,["loading","onClick"]),n(l,{loading:s(le).loading[o.id],onClick:w=>s(le).invoke(o)},{default:a(()=>[...t[19]||(t[19]=[c(" 生成链接-图片 ",-1)])]),_:1},8,["loading","onClick"])]),_:2},1024)]),_:2},1024),n(y,null,{trigger:a(()=>[i("span",kt,[n(l,{text:"",disabled:""},{icon:a(()=>[n(p,{name:"delete"})]),_:1})])]),default:a(()=>[t[20]||(t[20]=c(" 远端删除尚未实现 ",-1))]),_:1})])],2))),128))]),_:2},1024)]),_:2},1032,["name"]))),128))]),_:2},1032,["expandedNames"])]),_:2},1032,["name"]))),128))]),_:1},8,["expandedNames"])):(m(),v("div",lt," 暂无快照 "))])]),n(Ge,{show:s(z),"onUpdate:show":t[4]||(t[4]=d=>M(z)?z.value=d:null)},null,8,["show"])],64)}}});export{$t as default};
|
|
2
|
-
//# sourceMappingURL=DevicePage-
|
|
1
|
+
import{d as Ne,l as Ce,aR as $e,o as De,a$ as ze,w as de,q as ce,t as v,v as i,x as n,y as a,B as Ae,_ as Me,A as Ue,z as s,J as M,F as c,C as m,G as u,H as K,I as $,D as U,K as Z,L as Te,M as F,Q as be,R as T,i as j,aZ as b,V as Le,W as Pe}from"./index-B8n8YbRA.js";import{u as q,_ as Be,b as Re,d as Ye,c as He,a as Ee,e as Ve,f as Ge,F as Ke,A as Ze,G as D,E as Fe,D as je,w as ue,r as qe,s as me,k as Oe,j as We,q as Je}from"./SettingsModal.vue_vue_type_script_setup_true_lang-Dunhc-_c.js";import{u as Qe,b as Xe}from"./snapshotGroup-DWXLlGGZ.js";import{a as et,_ as tt,g as O,b as ge}from"./node-DqtTfexB.js";import{a as L,b as S,p as at}from"./snapshot-DrF431xa.js";const nt={"page-size":"",flex:"","flex-col":"","p-10px":"","gap-10px":""},st={flex:"","items-center":"","gap-24px":""},ot={key:0,gkd_code:"","pl-16px":"","whitespace-nowrap":"",flex:"","items-center":""},it={class:"flex-1 min-h-0 overflow-auto pr-6px"},lt={key:0,"py-40px":"","text-center":"","opacity-70":""},pt={flex:"","items-center":"","gap-8px":""},rt={flex:"","items-center":"","gap-8px":""},dt={flex:"","items-start":"","gap-10px":"","flex-wrap":""},ct=["onMouseenter"],ut={flex:"","items-center":"","gap-6px":"","leading-18px":""},mt={class:"truncate font-600"},gt={"text-12px":"","mt-2px":"",class:"font-600"},vt={"mt-4px":"","text-12px":"",class:"opacity-75"},ft={"mt-2px":"","text-12px":"",class:"opacity-70"},_t={class:"inline-block w-fit max-w-90vw"},xt=["src"],wt={key:1,"py-20px":"","text-center":"","opacity-70":""},kt={class:"inline-flex"},$t=Ne({__name:"DevicePage",setup(ht){const ve=Ce(),{api:g,origin:fe,serverInfo:f}=Ke(),{settingsStore:P,snapshotImportTime:W,snapshotViewedTime:B}=be(),k=$e("device_link",""),z=T(!1),J=e=>{const t=e.trim();if(!t)return null;const p=/^https?:\/\//i.test(t)?t:`http://${t}`;return Ze(()=>{const l=new URL(p);return l.port||(l.port="8888"),l.origin},()=>null)},A=q(async()=>{const e=J(k.value);if(!e){b.error("非法设备地址");return}fe.value=e,k.value=e,f.value=await g.getServerInfo()}),Q=j(()=>{if(!f.value)return"未连接设备";const e=f.value.device,t=f.value.gkdAppInfo;return`${e.manufacturer} Android${e.release} - GKD${t.versionName}`});De(async()=>{await ze(500),J(k.value)&&A.invoke()});const R=T([]);de(async()=>{if(!f.value)return;document.title=Q.value;const e=await g.getSnapshots();e.sort((t,p)=>p.id-t.id),R.value=e});const X=q(async()=>{const e=await g.captureSnapshot(),t=await g.getScreenshot({id:e.id});await L.setItem(e.id,e),await S.setItem(e.id,t),b.success("捕获并保存快照成功");const p=await g.getSnapshots();p.sort((l,_)=>_.id-l.id),R.value=p}),ee=q(async()=>{const e=(await g.getSnapshots()).map(r=>r.id),t=new Set((await S.keys()).map(r=>parseInt(r))),p=e.filter(r=>!t.has(r));if(p.length==0){b.success("没有新记录可导入");return}let l=0;const _=at(3);await Promise.all(p.map(r=>_(async()=>{const[h,y]=await Promise.all([g.getSnapshot({id:r}),g.getScreenshot({id:r})]);h.nodes&&(await Promise.all([L.setItem(r,h),S.setItem(r,y)]),l++)}))),b.success(`导入${l}条新记录`)}),_e=async e=>{await L.hasItem(e.id)||await L.setItem(e.id,await g.getSnapshot({id:e.id}))},Y=async e=>{await S.hasItem(e.id)||await S.setItem(e.id,await g.getScreenshot({id:e.id}))},H=async e=>{await Promise.all([_e(e),Y(e)])},te=D(async e=>{await H(e),B[e.id]=Date.now(),window.open(ve.resolve({name:"snapshot",params:{snapshotId:e.id}}).href)},e=>e.id),xe=(e,t=4,p=3)=>{const l=e.slice(0,t).map(r=>r.packageName),_=e.slice(0,t).flatMap(r=>r.activities.slice(0,p).map(h=>`${r.packageName}::${h.activityId}`));return{packageNames:l,activityNames:_}},E=j(()=>Xe(R.value,W)),we=e=>O(e).name||e.appId,ke=e=>`${ge(e).manufacturer} Android ${ge(e).release||""}`,he=e=>F(W[e.id]||e.id).format("YYYY-MM-DD HH:mm:ss"),ye=j(()=>P.lowMemoryMode?6:24),{previewUrlMap:ae,previewLoadingMap:Ie,previewErrorMap:Se,ensurePreview:ne}=Qe({getScreenshot:async e=>await S.getItem(e)||await g.getScreenshot({id:e}),cacheLimit:ye}),se=D(async e=>{await H(e),await Fe(e)},e=>e.id),oe=D(async e=>{await Y(e),await je(e)},e=>e.id),ie=D(async e=>{await ue(),await H(e);const t=await qe(e);me({title:"分享链接",content:P.shareUseOfficialImportDomain?We(t):Le(t),extraContent:Oe(t)})},e=>e.id),le=D(async e=>{await ue(),await Y(e);const t=await Je(e);me({title:"分享链接",content:Pe(t)})},e=>e.id),N=T([]),C=T([]);return de(()=>{if(!P.autoExpandSnapshots){N.value=[],C.value=[];return}const{packageNames:e,activityNames:t}=xe(E.value,5,4);N.value=e,C.value=t}),(e,t)=>{const p=ce("SvgIcon"),l=Ae,_=ce("RouterLink"),r=Me,h=Be,y=et,I=Ve,V=tt,G=Ee,pe=Ye,re=He;return m(),v($,null,[i("div",nt,[i("div",st,[n(_,{to:"/",class:"flex ml-12px",title:"首页"},{default:a(()=>[n(l,{text:"",style:{"--n-icon-size":"var(--app-icon-size)"}},{icon:a(()=>[n(p,{name:"home"})]),_:1})]),_:1}),n(h,null,{default:a(()=>[n(r,{value:s(k),"onUpdate:value":t[0]||(t[0]=d=>M(k)?k.value=d:null),placeholder:"请输入设备地址 默认端口:8888",class:"gkd_code",style:{width:"260px"},onKeyup:Ue(s(A).invoke,["enter"])},null,8,["value","onKeyup"]),n(l,{loading:s(A).loading,onClick:s(A).invoke},{default:a(()=>[...t[5]||(t[5]=[c("刷新连接",-1)])]),_:1},8,["loading","onClick"]),s(f)?(m(),v("div",ot,u(s(Q)),1)):K("",!0)]),_:1}),s(f)?(m(),v($,{key:0},[n(y,null,{trigger:a(()=>[n(l,{text:"",style:{"--n-icon-size":"var(--app-icon-size)"},class:"device-top-icon",loading:s(X).loading,onClick:s(X).invoke},{default:a(()=>[n(p,{name:"Snapshot"})]),_:1},8,["loading","onClick"])]),default:a(()=>[t[6]||(t[6]=c(" 捕获快照 ",-1))]),_:1}),n(Re),n(y,null,{trigger:a(()=>[n(l,{text:"",style:{"--n-icon-size":"var(--app-icon-size)"},class:"device-top-icon",loading:s(ee).loading,onClick:s(ee).invoke},{default:a(()=>[n(p,{name:"Down-all"})]),_:1},8,["loading","onClick"])]),default:a(()=>[t[7]||(t[7]=c(" 下载所有快照 ",-1))]),_:1}),n(y,null,{trigger:a(()=>[n(l,{text:"",style:{"--n-icon-size":"var(--app-icon-size)"},class:"device-top-icon",onClick:t[1]||(t[1]=d=>z.value=!0)},{default:a(()=>[n(p,{name:"settings"})]),_:1})]),default:a(()=>[t[8]||(t[8]=c(" 设置 ",-1))]),_:1})],64)):K("",!0)]),i("div",it,[s(E).length?(m(),U(re,{key:1,expandedNames:s(N),"onUpdate:expandedNames":t[3]||(t[3]=d=>M(N)?N.value=d:null),accordion:!1},{default:a(()=>[(m(!0),v($,null,Z(s(E),d=>(m(),U(pe,{key:d.packageName,name:d.packageName},{header:a(()=>[i("div",pt,[n(I,{type:"info",size:"small"},{default:a(()=>[...t[9]||(t[9]=[c("包名",-1)])]),_:1}),i("code",null,u(`${d.appName} (${d.packageName})`),1),n(I,{size:"small"},{default:a(()=>[c(u(d.activities.length)+" Activities",1)]),_:2},1024)])]),default:a(()=>[n(re,{expandedNames:s(C),"onUpdate:expandedNames":t[2]||(t[2]=x=>M(C)?C.value=x:null),accordion:!1},{default:a(()=>[(m(!0),v($,null,Z(d.activities,x=>(m(),U(pe,{key:`${d.packageName}::${x.activityId}`,name:`${d.packageName}::${x.activityId}`},{header:a(()=>[i("div",rt,[n(I,{type:"success",size:"small"},{default:a(()=>[...t[10]||(t[10]=[c("Activity",-1)])]),_:1}),i("code",null,u(x.activityId),1),n(I,{size:"small"},{default:a(()=>[c(u(x.snapshots.length)+" snapshots",1)]),_:2},1024)])]),default:a(()=>[n(G,{vertical:"",size:6},{default:a(()=>[(m(!0),v($,null,Z(x.snapshots,o=>(m(),v("div",{key:o.id,class:Te(["rounded-8px border border-solid px-10px py-6px transition-colors",[s(B)[o.id]?"snapshot-row-viewed":"surface-card"]])},[i("div",dt,[n(V,{trigger:"hover",placement:"right-start",flip:!0,shift:!0,"onUpdate:show":w=>{w&&s(ne)(o.id)}},{trigger:a(()=>[i("div",{class:"min-w-0 inline-flex max-w-full cursor-default select-text flex-col",onMouseenter:w=>s(ne)(o.id)},[i("div",ut,[n(I,{size:"small",type:"warning"},{default:a(()=>[c(u(s(F)(o.id).format("MM-DD HH:mm:ss")),1)]),_:2},1024),s(B)[o.id]?(m(),U(I,{key:0,size:"small",type:"success"},{default:a(()=>[...t[11]||(t[11]=[c(" 已查看 ",-1)])]),_:1})):K("",!0),i("span",mt,u(we(o)),1)]),i("div",gt," 界面ID: "+u(o.activityId||"(unknown)"),1),i("div",vt,[i("span",null,"创建时间: "+u(s(F)(o.id).format("YYYY-MM-DD HH:mm:ss")),1),t[12]||(t[12]=i("span",{class:"mx-6px opacity-45"},"|",-1)),i("span",null,"导入时间: "+u(he(o)),1)]),i("div",ft,[i("span",null,"设备: "+u(ke(o)),1),t[13]||(t[13]=i("span",{class:"mx-6px opacity-45"},"|",-1)),i("span",null,"应用ID: "+u(o.appId),1),t[14]||(t[14]=i("span",{class:"mx-6px opacity-45"},"|",-1)),i("span",null,"版本代码: "+u(s(O)(o).versionCode),1),t[15]||(t[15]=i("span",{class:"mx-6px opacity-45"},"|",-1)),i("span",null,"版本号: "+u(s(O)(o).versionName||"unknown"),1)])],40,ct)]),default:a(()=>[i("div",_t,[s(ae)[o.id]?(m(),v("img",{key:0,src:s(ae)[o.id],class:"block h-auto w-auto max-h-320px max-w-80vw rounded-6px",alt:"preview"},null,8,xt)):(m(),v("div",wt,u(s(Se)[o.id]||(s(Ie)[o.id]?"预览加载中...":"暂无预览")),1))])]),_:2},1032,["onUpdate:show"]),n(l,{text:"",size:"small",class:"ml-auto shrink-0",loading:s(te).loading[o.id],onClick:w=>s(te).invoke(o)},{icon:a(()=>[n(p,{name:"code"})]),_:1},8,["loading","onClick"]),n(V,null,{trigger:a(()=>[n(l,{text:""},{icon:a(()=>[n(p,{name:"export"})]),_:1})]),default:a(()=>[n(G,{vertical:""},{default:a(()=>[n(l,{loading:s(se).loading[o.id],onClick:w=>s(se).invoke(o)},{default:a(()=>[...t[16]||(t[16]=[c(" 下载-快照 ",-1)])]),_:1},8,["loading","onClick"]),n(l,{loading:s(oe).loading[o.id],onClick:w=>s(oe).invoke(o)},{default:a(()=>[...t[17]||(t[17]=[c(" 下载-图片 ",-1)])]),_:1},8,["loading","onClick"])]),_:2},1024)]),_:2},1024),n(V,null,{trigger:a(()=>[n(l,{text:""},{icon:a(()=>[n(p,{name:"share"})]),_:1})]),default:a(()=>[n(G,{vertical:""},{default:a(()=>[n(l,{loading:s(ie).loading[o.id],onClick:w=>s(ie).invoke(o)},{default:a(()=>[...t[18]||(t[18]=[c(" 生成链接-快照 ",-1)])]),_:1},8,["loading","onClick"]),n(l,{loading:s(le).loading[o.id],onClick:w=>s(le).invoke(o)},{default:a(()=>[...t[19]||(t[19]=[c(" 生成链接-图片 ",-1)])]),_:1},8,["loading","onClick"])]),_:2},1024)]),_:2},1024),n(y,null,{trigger:a(()=>[i("span",kt,[n(l,{text:"",disabled:""},{icon:a(()=>[n(p,{name:"delete"})]),_:1})])]),default:a(()=>[t[20]||(t[20]=c(" 远端删除尚未实现 ",-1))]),_:1})])],2))),128))]),_:2},1024)]),_:2},1032,["name"]))),128))]),_:2},1032,["expandedNames"])]),_:2},1032,["name"]))),128))]),_:1},8,["expandedNames"])):(m(),v("div",lt," 暂无快照 "))])]),n(Ge,{show:s(z),"onUpdate:show":t[4]||(t[4]=d=>M(z)?z.value=d:null)},null,8,["show"])],64)}}});export{$t as default};
|
|
2
|
+
//# sourceMappingURL=DevicePage-U37dNYv6.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DevicePage-Ds6CFwrc.js","sources":["../../src/views/DevicePage.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport DeviceControlTools from '@/components/DeviceControlTools.vue';\nimport SettingsModal from '@/components/SettingsModal.vue';\nimport { usePreviewCache } from '@/composables/plus/usePreviewCache';\nimport { showTextDLg, waitShareAgree } from '@/utils/dialog';\nimport { useDeviceApi } from '@/utils/api';\nimport { message } from '@/utils/discrete';\nimport { errorWrap } from '@/utils/error';\nimport {\n exportSnapshotAsImportId,\n exportSnapshotAsImage,\n exportSnapshotAsImageId,\n exportSnapshotAsZip,\n} from '@/utils/export';\nimport { getAppInfo, getDevice } from '@/utils/node';\nimport { delay } from '@/utils/others';\nimport { buildGroupedSnapshots } from '@/utils/plus/snapshotGroup';\nimport { screenshotStorage, snapshotStorage } from '@/utils/snapshot';\nimport { useBatchTask, useTask } from '@/utils/task';\nimport { getImagUrl, getImportUrl } from '@/utils/url';\nimport {\n getCustomDomainImportUrl,\n getOfficialImportUrl,\n} from '@/utils/plus/url';\nimport dayjs from 'dayjs';\nimport pLimit from 'p-limit';\n\nconst router = useRouter();\nconst { api, origin, serverInfo } = useDeviceApi();\nconst { settingsStore, snapshotImportTime, snapshotViewedTime } =\n useStorageStore();\nconst link = useStorage('device_link', '');\nconst settingsDlgShow = shallowRef(false);\n\nconst normalizeDeviceUrl = (input: string): string | null => {\n const raw = input.trim();\n if (!raw) return null;\n const withProtocol = /^https?:\\/\\//i.test(raw) ? raw : `http://${raw}`;\n return errorWrap(\n () => {\n const url = new URL(withProtocol);\n if (!url.port) url.port = '8888';\n return url.origin;\n },\n () => null,\n );\n};\n\nconst connect = useTask(async () => {\n const normalized = normalizeDeviceUrl(link.value);\n if (!normalized) {\n message.error('非法设备地址');\n return;\n }\n origin.value = normalized;\n link.value = normalized;\n serverInfo.value = await api.getServerInfo();\n});\n\nconst serverTitle = computed(() => {\n if (!serverInfo.value) return '未连接设备';\n const d = serverInfo.value.device;\n const g = serverInfo.value.gkdAppInfo;\n return `${d.manufacturer} Android${d.release} - GKD${g.versionName}`;\n});\n\nonMounted(async () => {\n await delay(500);\n if (normalizeDeviceUrl(link.value)) {\n connect.invoke();\n }\n});\n\nconst snapshots = shallowRef<Snapshot[]>([]);\nwatchEffect(async () => {\n if (!serverInfo.value) return;\n document.title = serverTitle.value;\n const result = await api.getSnapshots();\n result.sort((a, b) => b.id - a.id);\n snapshots.value = result;\n});\n\nconst captureSnapshot = useTask(async () => {\n const snapshot = await api.captureSnapshot();\n const screenshot = await api.getScreenshot({ id: snapshot.id });\n await snapshotStorage.setItem(snapshot.id, snapshot);\n await screenshotStorage.setItem(snapshot.id, screenshot);\n message.success('捕获并保存快照成功');\n const result = await api.getSnapshots();\n result.sort((a, b) => b.id - a.id);\n snapshots.value = result;\n});\n\nconst downloadAllSnapshot = useTask(async () => {\n const snapshotIds = (await api.getSnapshots()).map((s) => s.id);\n const existSnapshotIds = new Set(\n (await screenshotStorage.keys()).map((s) => parseInt(s)),\n );\n const unimportSnapshotIds = snapshotIds.filter(\n (k) => !existSnapshotIds.has(k),\n );\n if (unimportSnapshotIds.length == 0) {\n message.success('没有新记录可导入');\n return;\n }\n let okCount = 0;\n const limit = pLimit(3);\n await Promise.all(\n unimportSnapshotIds.map((snapshotId) =>\n limit(async () => {\n const [newSnapshot, newScreenshot] = await Promise.all([\n api.getSnapshot({ id: snapshotId }),\n api.getScreenshot({ id: snapshotId }),\n ] as const);\n if (!newSnapshot.nodes) return;\n await Promise.all([\n snapshotStorage.setItem(snapshotId, newSnapshot),\n screenshotStorage.setItem(snapshotId, newScreenshot),\n ]);\n okCount++;\n }),\n ),\n );\n message.success(`导入${okCount}条新记录`);\n});\n\nconst ensureSnapshotStored = async (row: Snapshot) => {\n if (!(await snapshotStorage.hasItem(row.id))) {\n await snapshotStorage.setItem(\n row.id,\n await api.getSnapshot({ id: row.id }),\n );\n }\n};\nconst ensureScreenshotStored = async (row: Snapshot) => {\n if (!(await screenshotStorage.hasItem(row.id))) {\n await screenshotStorage.setItem(\n row.id,\n await api.getScreenshot({ id: row.id }),\n );\n }\n};\nconst ensureLocalSnapshotData = async (row: Snapshot) => {\n await Promise.all([ensureSnapshotStored(row), ensureScreenshotStored(row)]);\n};\n\nconst previewSnapshot = useBatchTask(\n async (row: Snapshot) => {\n await ensureLocalSnapshotData(row);\n snapshotViewedTime[row.id] = Date.now();\n window.open(\n router.resolve({\n name: 'snapshot',\n params: { snapshotId: row.id },\n }).href,\n );\n },\n (r) => r.id,\n);\n\nconst getAutoExpandedNames = (\n groups: ReturnType<typeof buildGroupedSnapshots>,\n packageLimit = 4,\n activityLimit = 3,\n) => {\n const packageNames = groups.slice(0, packageLimit).map((g) => g.packageName);\n const activityNames = groups\n .slice(0, packageLimit)\n .flatMap((g) =>\n g.activities\n .slice(0, activityLimit)\n .map((a) => `${g.packageName}::${a.activityId}`),\n );\n return { packageNames, activityNames };\n};\n\nconst groupedSnapshots = computed(() => {\n return buildGroupedSnapshots(snapshots.value, snapshotImportTime);\n});\n\nconst getItemAppName = (item: Snapshot) => getAppInfo(item).name || item.appId;\nconst getItemDeviceText = (item: Snapshot) =>\n `${getDevice(item).manufacturer} Android ${getDevice(item).release || ''}`;\nconst getItemImportTimeText = (item: Snapshot) =>\n dayjs(snapshotImportTime[item.id] || item.id).format('YYYY-MM-DD HH:mm:ss');\n\nconst previewCacheLimit = computed(() =>\n settingsStore.lowMemoryMode ? 6 : 24,\n);\nconst { previewUrlMap, previewLoadingMap, previewErrorMap, ensurePreview } =\n usePreviewCache({\n getScreenshot: async (id) => {\n const local = await screenshotStorage.getItem(id);\n return local || (await api.getScreenshot({ id }));\n },\n cacheLimit: previewCacheLimit,\n });\n\nconst downloadSnapshotZip = useBatchTask(\n async (row: Snapshot) => {\n await ensureLocalSnapshotData(row);\n await exportSnapshotAsZip(row);\n },\n (r) => r.id,\n);\nconst downloadSnapshotImage = useBatchTask(\n async (row: Snapshot) => {\n await ensureScreenshotStored(row);\n await exportSnapshotAsImage(row);\n },\n (r) => r.id,\n);\nconst shareSnapshotZipUrl = useBatchTask(\n async (row: Snapshot) => {\n await waitShareAgree();\n await ensureLocalSnapshotData(row);\n const importId = await exportSnapshotAsImportId(row);\n showTextDLg({\n title: '分享链接',\n content: settingsStore.shareUseOfficialImportDomain\n ? getOfficialImportUrl(importId)\n : getImportUrl(importId),\n extraContent: getCustomDomainImportUrl(importId),\n });\n },\n (r) => r.id,\n);\nconst shareSnapshotImageUrl = useBatchTask(\n async (row: Snapshot) => {\n await waitShareAgree();\n await ensureScreenshotStored(row);\n const imageId = await exportSnapshotAsImageId(row);\n showTextDLg({\n title: '分享链接',\n content: getImagUrl(imageId),\n });\n },\n (r) => r.id,\n);\n\nconst expandedPackageNames = shallowRef<(string | number)[]>([]);\nconst expandedActivityNames = shallowRef<(string | number)[]>([]);\nwatchEffect(() => {\n if (!settingsStore.autoExpandSnapshots) {\n expandedPackageNames.value = [];\n expandedActivityNames.value = [];\n return;\n }\n const { packageNames, activityNames } = getAutoExpandedNames(\n groupedSnapshots.value,\n 5,\n 4,\n );\n expandedPackageNames.value = packageNames;\n expandedActivityNames.value = activityNames;\n});\n</script>\n\n<template>\n <div page-size flex flex-col p-10px gap-10px>\n <div flex items-center gap-24px>\n <RouterLink to=\"/\" class=\"flex ml-12px\" title=\"首页\">\n <NButton text style=\"--n-icon-size: var(--app-icon-size)\">\n <template #icon><SvgIcon name=\"home\" /></template>\n </NButton>\n </RouterLink>\n <NInputGroup>\n <NInput\n v-model:value=\"link\"\n placeholder=\"请输入设备地址 默认端口:8888\"\n class=\"gkd_code\"\n :style=\"{ width: '260px' }\"\n @keyup.enter=\"connect.invoke\"\n />\n <NButton :loading=\"connect.loading\" @click=\"connect.invoke\"\n >刷新连接</NButton\n >\n <div\n v-if=\"serverInfo\"\n gkd_code\n pl-16px\n whitespace-nowrap\n flex\n items-center\n >\n {{ serverTitle }}\n </div>\n </NInputGroup>\n <template v-if=\"serverInfo\">\n <NTooltip>\n <template #trigger>\n <NButton\n text\n style=\"--n-icon-size: var(--app-icon-size)\"\n class=\"device-top-icon\"\n :loading=\"captureSnapshot.loading\"\n @click=\"captureSnapshot.invoke\"\n >\n <SvgIcon name=\"Snapshot\" />\n </NButton>\n </template>\n 捕获快照\n </NTooltip>\n\n <DeviceControlTools />\n\n <NTooltip>\n <template #trigger>\n <NButton\n text\n style=\"--n-icon-size: var(--app-icon-size)\"\n class=\"device-top-icon\"\n :loading=\"downloadAllSnapshot.loading\"\n @click=\"downloadAllSnapshot.invoke\"\n >\n <SvgIcon name=\"Down-all\" />\n </NButton>\n </template>\n 下载所有快照\n </NTooltip>\n\n <NTooltip>\n <template #trigger>\n <NButton\n text\n style=\"--n-icon-size: var(--app-icon-size)\"\n class=\"device-top-icon\"\n @click=\"settingsDlgShow = true\"\n >\n <SvgIcon name=\"settings\" />\n </NButton>\n </template>\n 设置\n </NTooltip>\n </template>\n </div>\n\n <div class=\"flex-1 min-h-0 overflow-auto pr-6px\">\n <div v-if=\"!groupedSnapshots.length\" py-40px text-center opacity-70>\n 暂无快照\n </div>\n <NCollapse\n v-else\n v-model:expandedNames=\"expandedPackageNames\"\n :accordion=\"false\"\n >\n <NCollapseItem\n v-for=\"group in groupedSnapshots\"\n :key=\"group.packageName\"\n :name=\"group.packageName\"\n >\n <template #header>\n <div flex items-center gap-8px>\n <NTag type=\"info\" size=\"small\">包名</NTag>\n <code>{{ `${group.appName} (${group.packageName})` }}</code>\n <NTag size=\"small\">{{ group.activities.length }} Activities</NTag>\n </div>\n </template>\n <NCollapse\n v-model:expandedNames=\"expandedActivityNames\"\n :accordion=\"false\"\n >\n <NCollapseItem\n v-for=\"activity in group.activities\"\n :key=\"`${group.packageName}::${activity.activityId}`\"\n :name=\"`${group.packageName}::${activity.activityId}`\"\n >\n <template #header>\n <div flex items-center gap-8px>\n <NTag type=\"success\" size=\"small\">Activity</NTag>\n <code>{{ activity.activityId }}</code>\n <NTag size=\"small\"\n >{{ activity.snapshots.length }} snapshots</NTag\n >\n </div>\n </template>\n <NSpace vertical :size=\"6\">\n <div\n v-for=\"item in activity.snapshots\"\n :key=\"item.id\"\n class=\"rounded-8px border border-solid px-10px py-6px transition-colors\"\n :class=\"[\n snapshotViewedTime[item.id]\n ? 'snapshot-row-viewed'\n : 'surface-card',\n ]\"\n >\n <div flex items-start gap-10px flex-wrap>\n <NPopover\n trigger=\"hover\"\n placement=\"right-start\"\n :flip=\"true\"\n :shift=\"true\"\n @update:show=\"\n if ($event) {\n ensurePreview(item.id);\n }\n \"\n >\n <template #trigger>\n <div\n class=\"min-w-0 inline-flex max-w-full cursor-default select-text flex-col\"\n @mouseenter=\"ensurePreview(item.id)\"\n >\n <div flex items-center gap-6px leading-18px>\n <NTag size=\"small\" type=\"warning\">{{\n dayjs(item.id).format('MM-DD HH:mm:ss')\n }}</NTag>\n <NTag\n v-if=\"snapshotViewedTime[item.id]\"\n size=\"small\"\n type=\"success\"\n >\n 已查看\n </NTag>\n <span class=\"truncate font-600\">{{\n getItemAppName(item)\n }}</span>\n </div>\n <div text-12px mt-2px class=\"font-600\">\n 界面ID: {{ item.activityId || '(unknown)' }}\n </div>\n <div mt-4px text-12px class=\"opacity-75\">\n <span\n >创建时间:\n {{\n dayjs(item.id).format('YYYY-MM-DD HH:mm:ss')\n }}</span\n >\n <span class=\"mx-6px opacity-45\">|</span>\n <span\n >导入时间: {{ getItemImportTimeText(item) }}</span\n >\n </div>\n <div mt-2px text-12px class=\"opacity-70\">\n <span>设备: {{ getItemDeviceText(item) }}</span>\n <span class=\"mx-6px opacity-45\">|</span>\n <span>应用ID: {{ item.appId }}</span>\n <span class=\"mx-6px opacity-45\">|</span>\n <span\n >版本代码:\n {{ getAppInfo(item).versionCode }}</span\n >\n <span class=\"mx-6px opacity-45\">|</span>\n <span\n >版本号:\n {{\n getAppInfo(item).versionName || 'unknown'\n }}</span\n >\n </div>\n </div>\n </template>\n <div class=\"inline-block w-fit max-w-90vw\">\n <img\n v-if=\"previewUrlMap[item.id]\"\n :src=\"previewUrlMap[item.id]\"\n class=\"block h-auto w-auto max-h-320px max-w-80vw rounded-6px\"\n alt=\"preview\"\n />\n <div v-else py-20px text-center opacity-70>\n {{\n previewErrorMap[item.id] ||\n (previewLoadingMap[item.id]\n ? '预览加载中...'\n : '暂无预览')\n }}\n </div>\n </div>\n </NPopover>\n <NButton\n text\n size=\"small\"\n class=\"ml-auto shrink-0\"\n :loading=\"previewSnapshot.loading[item.id]\"\n @click=\"previewSnapshot.invoke(item)\"\n >\n <template #icon><SvgIcon name=\"code\" /></template>\n </NButton>\n <NPopover>\n <template #trigger>\n <NButton text>\n <template #icon><SvgIcon name=\"export\" /></template>\n </NButton>\n </template>\n <NSpace vertical>\n <NButton\n :loading=\"downloadSnapshotZip.loading[item.id]\"\n @click=\"downloadSnapshotZip.invoke(item)\"\n >\n 下载-快照\n </NButton>\n <NButton\n :loading=\"downloadSnapshotImage.loading[item.id]\"\n @click=\"downloadSnapshotImage.invoke(item)\"\n >\n 下载-图片\n </NButton>\n </NSpace>\n </NPopover>\n <NPopover>\n <template #trigger>\n <NButton text>\n <template #icon><SvgIcon name=\"share\" /></template>\n </NButton>\n </template>\n <NSpace vertical>\n <NButton\n :loading=\"shareSnapshotZipUrl.loading[item.id]\"\n @click=\"shareSnapshotZipUrl.invoke(item)\"\n >\n 生成链接-快照\n </NButton>\n <NButton\n :loading=\"shareSnapshotImageUrl.loading[item.id]\"\n @click=\"shareSnapshotImageUrl.invoke(item)\"\n >\n 生成链接-图片\n </NButton>\n </NSpace>\n </NPopover>\n <NTooltip>\n <template #trigger>\n <span class=\"inline-flex\">\n <NButton text disabled>\n <template #icon><SvgIcon name=\"delete\" /></template>\n </NButton>\n </span>\n </template>\n 远端删除尚未实现\n </NTooltip>\n </div>\n </div>\n </NSpace>\n </NCollapseItem>\n </NCollapse>\n </NCollapseItem>\n </NCollapse>\n </div>\n </div>\n\n <SettingsModal v-model:show=\"settingsDlgShow\" />\n</template>\n"],"names":["router","useRouter","api","origin","serverInfo","useDeviceApi","settingsStore","snapshotImportTime","snapshotViewedTime","useStorageStore","link","useStorage","settingsDlgShow","shallowRef","normalizeDeviceUrl","input","raw","withProtocol","errorWrap","url","connect","useTask","normalized","message","serverTitle","computed","d","g","onMounted","delay","snapshots","watchEffect","result","a","b","captureSnapshot","snapshot","screenshot","snapshotStorage","screenshotStorage","downloadAllSnapshot","snapshotIds","s","existSnapshotIds","unimportSnapshotIds","k","okCount","limit","pLimit","snapshotId","newSnapshot","newScreenshot","ensureSnapshotStored","row","ensureScreenshotStored","ensureLocalSnapshotData","previewSnapshot","useBatchTask","r","getAutoExpandedNames","groups","packageLimit","activityLimit","packageNames","activityNames","groupedSnapshots","buildGroupedSnapshots","getItemAppName","item","getAppInfo","getItemDeviceText","getDevice","getItemImportTimeText","dayjs","previewCacheLimit","previewUrlMap","previewLoadingMap","previewErrorMap","ensurePreview","usePreviewCache","id","downloadSnapshotZip","exportSnapshotAsZip","downloadSnapshotImage","exportSnapshotAsImage","shareSnapshotZipUrl","waitShareAgree","importId","exportSnapshotAsImportId","showTextDLg","getOfficialImportUrl","getImportUrl","getCustomDomainImportUrl","shareSnapshotImageUrl","imageId","exportSnapshotAsImageId","getImagUrl","expandedPackageNames","expandedActivityNames","_createElementVNode","_hoisted_1","_hoisted_2","_createVNode","_component_RouterLink","_component_NButton","_component_SvgIcon","_component_NInputGroup","_component_NInput","_unref","$event","_withKeys","_cache","_createElementBlock","_hoisted_3","_toDisplayString","_Fragment","_component_NTooltip","DeviceControlTools","_hoisted_4","_createBlock","_component_NCollapse","_renderList","group","_component_NCollapseItem","_hoisted_6","_component_NTag","_createTextVNode","_openBlock","activity","_hoisted_7","_component_NSpace","_hoisted_8","_component_NPopover","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_17","_hoisted_18","_hoisted_5","SettingsModal"],"mappings":"8hDA2BA,MAAMA,GAASC,GAAA,EACT,CAAE,IAAAC,EAAK,OAAAC,GAAQ,WAAAC,CAAA,EAAeC,GAAA,EAC9B,CAAE,cAAAC,EAAe,mBAAAC,EAAoB,mBAAAC,CAAA,EACzCC,GAAA,EACIC,EAAOC,GAAW,cAAe,EAAE,EACnCC,EAAkBC,EAAW,EAAK,EAElCC,EAAsBC,GAAiC,CAC3D,MAAMC,EAAMD,EAAM,KAAA,EAClB,GAAI,CAACC,EAAK,OAAO,KACjB,MAAMC,EAAe,gBAAgB,KAAKD,CAAG,EAAIA,EAAM,UAAUA,CAAG,GACpE,OAAOE,GACL,IAAM,CACJ,MAAMC,EAAM,IAAI,IAAIF,CAAY,EAChC,OAAKE,EAAI,OAAMA,EAAI,KAAO,QACnBA,EAAI,MACb,EACA,IAAM,IAAA,CAEV,EAEMC,EAAUC,EAAQ,SAAY,CAClC,MAAMC,EAAaR,EAAmBJ,EAAK,KAAK,EAChD,GAAI,CAACY,EAAY,CACfC,EAAQ,MAAM,QAAQ,EACtB,MACF,CACApB,GAAO,MAAQmB,EACfZ,EAAK,MAAQY,EACblB,EAAW,MAAQ,MAAMF,EAAI,cAAA,CAC/B,CAAC,EAEKsB,EAAcC,EAAS,IAAM,CACjC,GAAI,CAACrB,EAAW,MAAO,MAAO,QAC9B,MAAMsB,EAAItB,EAAW,MAAM,OACrBuB,EAAIvB,EAAW,MAAM,WAC3B,MAAO,GAAGsB,EAAE,YAAY,WAAWA,EAAE,OAAO,SAASC,EAAE,WAAW,EACpE,CAAC,EAEDC,GAAU,SAAY,CACpB,MAAMC,GAAM,GAAG,EACXf,EAAmBJ,EAAK,KAAK,GAC/BU,EAAQ,OAAA,CAEZ,CAAC,EAED,MAAMU,EAAYjB,EAAuB,EAAE,EAC3CkB,GAAY,SAAY,CACtB,GAAI,CAAC3B,EAAW,MAAO,OACvB,SAAS,MAAQoB,EAAY,MAC7B,MAAMQ,EAAS,MAAM9B,EAAI,aAAA,EACzB8B,EAAO,KAAK,CAACC,EAAGC,IAAMA,EAAE,GAAKD,EAAE,EAAE,EACjCH,EAAU,MAAQE,CACpB,CAAC,EAED,MAAMG,EAAkBd,EAAQ,SAAY,CAC1C,MAAMe,EAAW,MAAMlC,EAAI,gBAAA,EACrBmC,EAAa,MAAMnC,EAAI,cAAc,CAAE,GAAIkC,EAAS,GAAI,EAC9D,MAAME,EAAgB,QAAQF,EAAS,GAAIA,CAAQ,EACnD,MAAMG,EAAkB,QAAQH,EAAS,GAAIC,CAAU,EACvDd,EAAQ,QAAQ,WAAW,EAC3B,MAAMS,EAAS,MAAM9B,EAAI,aAAA,EACzB8B,EAAO,KAAK,CAACC,EAAGC,IAAMA,EAAE,GAAKD,EAAE,EAAE,EACjCH,EAAU,MAAQE,CACpB,CAAC,EAEKQ,GAAsBnB,EAAQ,SAAY,CAC9C,MAAMoB,GAAe,MAAMvC,EAAI,aAAA,GAAgB,IAAKwC,GAAMA,EAAE,EAAE,EACxDC,EAAmB,IAAI,KAC1B,MAAMJ,EAAkB,KAAA,GAAQ,IAAKG,GAAM,SAASA,CAAC,CAAC,CAAA,EAEnDE,EAAsBH,EAAY,OACrCI,GAAM,CAACF,EAAiB,IAAIE,CAAC,CAAA,EAEhC,GAAID,EAAoB,QAAU,EAAG,CACnCrB,EAAQ,QAAQ,UAAU,EAC1B,MACF,CACA,IAAIuB,EAAU,EACd,MAAMC,EAAQC,GAAO,CAAC,EACtB,MAAM,QAAQ,IACZJ,EAAoB,IAAKK,GACvBF,EAAM,SAAY,CAChB,KAAM,CAACG,EAAaC,CAAa,EAAI,MAAM,QAAQ,IAAI,CACrDjD,EAAI,YAAY,CAAE,GAAI+C,EAAY,EAClC/C,EAAI,cAAc,CAAE,GAAI+C,EAAY,CAAA,CAC5B,EACLC,EAAY,QACjB,MAAM,QAAQ,IAAI,CAChBZ,EAAgB,QAAQW,EAAYC,CAAW,EAC/CX,EAAkB,QAAQU,EAAYE,CAAa,CAAA,CACpD,EACDL,IACF,CAAC,CAAA,CACH,EAEFvB,EAAQ,QAAQ,KAAKuB,CAAO,MAAM,CACpC,CAAC,EAEKM,GAAuB,MAAOC,GAAkB,CAC9C,MAAMf,EAAgB,QAAQe,EAAI,EAAE,GACxC,MAAMf,EAAgB,QACpBe,EAAI,GACJ,MAAMnD,EAAI,YAAY,CAAE,GAAImD,EAAI,GAAI,CAAA,CAG1C,EACMC,EAAyB,MAAOD,GAAkB,CAChD,MAAMd,EAAkB,QAAQc,EAAI,EAAE,GAC1C,MAAMd,EAAkB,QACtBc,EAAI,GACJ,MAAMnD,EAAI,cAAc,CAAE,GAAImD,EAAI,GAAI,CAAA,CAG5C,EACME,EAA0B,MAAOF,GAAkB,CACvD,MAAM,QAAQ,IAAI,CAACD,GAAqBC,CAAG,EAAGC,EAAuBD,CAAG,CAAC,CAAC,CAC5E,EAEMG,GAAkBC,EACtB,MAAOJ,GAAkB,CACvB,MAAME,EAAwBF,CAAG,EACjC7C,EAAmB6C,EAAI,EAAE,EAAI,KAAK,IAAA,EAClC,OAAO,KACLrD,GAAO,QAAQ,CACb,KAAM,WACN,OAAQ,CAAE,WAAYqD,EAAI,EAAA,CAAG,CAC9B,EAAE,IAAA,CAEP,EACCK,GAAMA,EAAE,EAAA,EAGLC,GAAuB,CAC3BC,EACAC,EAAe,EACfC,EAAgB,IACb,CACH,MAAMC,EAAeH,EAAO,MAAM,EAAGC,CAAY,EAAE,IAAKlC,GAAMA,EAAE,WAAW,EACrEqC,EAAgBJ,EACnB,MAAM,EAAGC,CAAY,EACrB,QAASlC,GACRA,EAAE,WACC,MAAM,EAAGmC,CAAa,EACtB,IAAK7B,GAAM,GAAGN,EAAE,WAAW,KAAKM,EAAE,UAAU,EAAE,CAAA,EAErD,MAAO,CAAE,aAAA8B,EAAc,cAAAC,CAAA,CACzB,EAEMC,EAAmBxC,EAAS,IACzByC,GAAsBpC,EAAU,MAAOvB,CAAkB,CACjE,EAEK4D,GAAkBC,GAAmBC,EAAWD,CAAI,EAAE,MAAQA,EAAK,MACnEE,GAAqBF,GACzB,GAAGG,GAAUH,CAAI,EAAE,YAAY,YAAYG,GAAUH,CAAI,EAAE,SAAW,EAAE,GACpEI,GAAyBJ,GAC7BK,EAAMlE,EAAmB6D,EAAK,EAAE,GAAKA,EAAK,EAAE,EAAE,OAAO,qBAAqB,EAEtEM,GAAoBjD,EAAS,IACjCnB,EAAc,cAAgB,EAAI,EAAA,EAE9B,CAAE,cAAAqE,GAAe,kBAAAC,GAAmB,gBAAAC,GAAiB,cAAAC,EAAA,EACzDC,GAAgB,CACd,cAAe,MAAOC,GACN,MAAMzC,EAAkB,QAAQyC,CAAE,GAC/B,MAAM9E,EAAI,cAAc,CAAE,GAAA8E,EAAI,EAEjD,WAAYN,EAAA,CACb,EAEGO,GAAsBxB,EAC1B,MAAOJ,GAAkB,CACvB,MAAME,EAAwBF,CAAG,EACjC,MAAM6B,GAAoB7B,CAAG,CAC/B,EACCK,GAAMA,EAAE,EAAA,EAELyB,GAAwB1B,EAC5B,MAAOJ,GAAkB,CACvB,MAAMC,EAAuBD,CAAG,EAChC,MAAM+B,GAAsB/B,CAAG,CACjC,EACCK,GAAMA,EAAE,EAAA,EAEL2B,GAAsB5B,EAC1B,MAAOJ,GAAkB,CACvB,MAAMiC,GAAA,EACN,MAAM/B,EAAwBF,CAAG,EACjC,MAAMkC,EAAW,MAAMC,GAAyBnC,CAAG,EACnDoC,GAAY,CACV,MAAO,OACP,QAASnF,EAAc,6BACnBoF,GAAqBH,CAAQ,EAC7BI,GAAaJ,CAAQ,EACzB,aAAcK,GAAyBL,CAAQ,CAAA,CAChD,CACH,EACC7B,GAAMA,EAAE,EAAA,EAELmC,GAAwBpC,EAC5B,MAAOJ,GAAkB,CACvB,MAAMiC,GAAA,EACN,MAAMhC,EAAuBD,CAAG,EAChC,MAAMyC,EAAU,MAAMC,GAAwB1C,CAAG,EACjDoC,GAAY,CACV,MAAO,OACP,QAASO,GAAWF,CAAO,CAAA,CAC5B,CACH,EACCpC,GAAMA,EAAE,EAAA,EAGLuC,EAAuBpF,EAAgC,EAAE,EACzDqF,EAAwBrF,EAAgC,EAAE,EAChE,OAAAkB,GAAY,IAAM,CAChB,GAAI,CAACzB,EAAc,oBAAqB,CACtC2F,EAAqB,MAAQ,CAAA,EAC7BC,EAAsB,MAAQ,CAAA,EAC9B,MACF,CACA,KAAM,CAAE,aAAAnC,EAAc,cAAAC,CAAA,EAAkBL,GACtCM,EAAiB,MACjB,EACA,CAAA,EAEFgC,EAAqB,MAAQlC,EAC7BmC,EAAsB,MAAQlC,CAChC,CAAC,uHAICmC,EAwRM,MAxRNC,GAwRM,CAvRJD,EA2EM,MA3ENE,GA2EM,CA1EJC,EAIaC,EAAA,CAJD,GAAG,IAAI,MAAM,eAAe,MAAM,IAAA,aAC5C,IAEU,CAFVD,EAEUE,EAAA,CAFD,KAAA,GAAK,MAAA,CAAA,gBAAA,sBAAA,CAAA,GACD,OAAK,IAAuB,CAAvBF,EAAuBG,EAAA,CAAd,KAAK,OAAM,CAAA,iBAGxCH,EAqBcI,EAAA,KAAA,WApBZ,IAME,CANFJ,EAMEK,EAAA,CALQ,MAAOC,EAAAlG,CAAA,uCAAAA,EAAI,MAAAmG,EAAA,MACnB,YAAY,oBACZ,MAAM,WACL,MAAO,CAAA,MAAA,OAAA,EACP,QAAKC,GAAQF,EAAAxF,CAAA,EAAQ,OAAM,CAAA,OAAA,CAAA,CAAA,8BAE9BkF,EAECE,EAAA,CAFS,QAASI,EAAAxF,CAAA,EAAQ,QAAU,QAAOwF,EAAAxF,CAAA,EAAQ,MAAA,aACjD,IAAI,CAAA,GAAA2F,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAA,GAAJ,OAAI,EAAA,CAAA,mCAGCH,EAAAxG,CAAA,OADR4G,EASM,MATNC,GASMC,EADDN,EAAApF,CAAA,CAAW,EAAA,CAAA,oBAGFoF,EAAAxG,CAAA,OAAhB4G,EA8CWG,EAAA,CAAA,IAAA,GAAA,CA7CTb,EAaWc,EAAA,KAAA,CAZE,UACT,IAQU,CARVd,EAQUE,EAAA,CAPR,KAAA,GACA,MAAA,CAAA,gBAAA,sBAAA,EACA,MAAM,kBACL,QAASI,EAAAzE,CAAA,EAAgB,QACzB,QAAOyE,EAAAzE,CAAA,EAAgB,MAAA,aAExB,IAA2B,CAA3BmE,EAA2BG,EAAA,CAAlB,KAAK,WAAU,CAAA,6CAEjB,IAEb,eAFa,SAEb,EAAA,EAAA,SAEAH,EAAsBe,EAAA,EAEtBf,EAaWc,EAAA,KAAA,CAZE,UACT,IAQU,CARVd,EAQUE,EAAA,CAPR,KAAA,GACA,MAAA,CAAA,gBAAA,sBAAA,EACA,MAAM,kBACL,QAASI,EAAApE,EAAA,EAAoB,QAC7B,QAAOoE,EAAApE,EAAA,EAAoB,MAAA,aAE5B,IAA2B,CAA3B8D,EAA2BG,EAAA,CAAlB,KAAK,WAAU,CAAA,6CAEjB,IAEb,eAFa,WAEb,EAAA,EAAA,SAEAH,EAYWc,EAAA,KAAA,CAXE,UACT,IAOU,CAPVd,EAOUE,EAAA,CANR,KAAA,GACA,MAAA,CAAA,gBAAA,sBAAA,EACA,MAAM,kBACL,uBAAO5F,EAAA,MAAe,GAAA,aAEvB,IAA2B,CAA3B0F,EAA2BG,EAAA,CAAlB,KAAK,WAAU,CAAA,qBAEjB,IAEb,eAFa,OAEb,EAAA,EAAA,0BAIJN,EAyMM,MAzMNmB,GAyMM,CAxMQV,EAAA3C,CAAA,EAAiB,YAG7BsD,EAoMYC,GAAA,OAlMF,cAAeZ,EAAAX,CAAA,+CAAAA,EAAoB,MAAAY,EAAA,MAC1C,UAAW,EAAA,aAGV,IAAiC,QADnCG,EA8LgBG,EAAA,KAAAM,EA7LEb,EAAA3C,CAAA,EAATyD,QADTH,EA8LgBI,GAAA,CA5Lb,IAAKD,EAAM,YACX,KAAMA,EAAM,WAAA,GAEF,SACT,IAIM,CAJNvB,EAIM,MAJNyB,GAIM,CAHJtB,EAAwCuB,EAAA,CAAlC,KAAK,OAAO,KAAK,OAAA,aAAQ,IAAE,CAAA,GAAAd,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAA,GAAF,KAAE,EAAA,CAAA,WACjCZ,EAA4D,iBAAhDuB,EAAM,OAAO,KAAKA,EAAM,WAAW,GAAA,EAAA,CAAA,EAC/CpB,EAAkEuB,EAAA,CAA5D,KAAK,SAAO,WAAC,IAA6B,CAA1BC,EAAAZ,EAAAQ,EAAM,WAAW,MAAM,EAAG,cAAW,CAAA,CAAA,4BAG/D,IAiLY,CAjLZpB,EAiLYkB,GAAA,CAhLF,cAAeZ,EAAAV,CAAA,+CAAAA,EAAqB,MAAAW,EAAA,MAC3C,UAAW,EAAA,aAGV,IAAoC,EADtCkB,EAAA,EAAA,EAAAf,EA4KgBG,EAAA,KAAAM,EA3KKC,EAAM,WAAlBM,QADTT,EA4KgBI,GAAA,CA1Kb,OAAQD,EAAM,WAAW,KAAKM,EAAS,UAAU,GACjD,QAASN,EAAM,WAAW,KAAKM,EAAS,UAAU,EAAA,GAExC,SACT,IAMM,CANN7B,EAMM,MANN8B,GAMM,CALJ3B,EAAiDuB,EAAA,CAA3C,KAAK,UAAU,KAAK,OAAA,aAAQ,IAAQ,CAAA,GAAAd,EAAA,EAAA,IAAAA,EAAA,EAAA,EAAA,GAAR,WAAQ,EAAA,CAAA,WAC1CZ,EAAsC,OAAA,KAAAe,EAA7Bc,EAAS,UAAU,EAAA,CAAA,EAC5B1B,EAECuB,EAAA,CAFK,KAAK,SAAO,WACf,IAA+B,CAA5BC,EAAAZ,EAAAc,EAAS,UAAU,MAAM,EAAG,aAAU,CAAA,CAAA,4BAIhD,IA6JS,CA7JT1B,EA6JS4B,EAAA,CA7JD,SAAA,GAAU,KAAM,CAAA,aAEpB,IAAkC,EADpCH,EAAA,EAAA,EAAAf,EA2JMG,EAAA,KAAAM,EA1JWO,EAAS,UAAjB5D,QADT4C,EA2JM,MAAA,CAzJH,IAAK5C,EAAK,GACX,UAAM,mEAAkE,CAC1CwC,EAAApG,CAAA,EAAmB4D,EAAK,EAAE,4CAMxD+B,EAgJM,MAhJNgC,GAgJM,CA/IJ7B,EAiFW8B,EAAA,CAhFT,QAAQ,QACR,UAAU,cACT,KAAM,GACN,MAAO,GACP,gBAAWvB,GAAA,CAA+BA,GAAoCD,EAAA9B,EAAA,EAAcV,EAAK,EAAE,KAMzF,UACT,IAmDM,CAnDN+B,EAmDM,MAAA,CAlDJ,MAAM,qEACL,aAAUU,GAAED,EAAA9B,EAAA,EAAcV,EAAK,EAAE,CAAA,GAElC+B,EAcM,MAdNkC,GAcM,CAbJ/B,EAESuB,EAAA,CAFH,KAAK,QAAQ,KAAK,SAAA,aAAU,IAEhC,CADAC,EAAAZ,EAAAN,EAAAnC,CAAA,EAAML,EAAK,EAAE,EAAE,OAAM,gBAAA,CAAA,EAAA,CAAA,CAAA,cAGfwC,EAAApG,CAAA,EAAmB4D,EAAK,EAAE,OADlCmD,EAMOM,EAAA,OAJL,KAAK,QACL,KAAK,SAAA,aACN,IAED,CAAA,GAAAd,EAAA,EAAA,IAAAA,EAAA,EAAA,EAAA,GAFC,QAED,EAAA,CAAA,qBACAZ,EAES,OAFTmC,GAESpB,EADP/C,GAAeC,CAAI,CAAA,EAAA,CAAA,CAAA,GAGvB+B,EAEM,MAFNoC,GAAuC,UAC/BrB,EAAG9C,EAAK,YAAU,WAAA,EAAA,CAAA,EAE1B+B,EAWM,MAXNqC,GAWM,CAVJrC,EAKC,OAAA,KAJE,SACDe,EACEN,EAAAnC,CAAA,EAAML,EAAK,EAAE,EAAE,OAAM,qBAAA,CAAA,EAAA,CAAA,EAGzB2C,EAAA,EAAA,IAAAA,EAAA,EAAA,EAAAZ,EAAwC,OAAA,CAAlC,MAAM,mBAAA,EAAoB,IAAC,EAAA,GACjCA,EAEC,OAAA,KADE,SAAMe,EAAG1C,GAAsBJ,CAAI,CAAA,EAAA,CAAA,CAAA,GAGxC+B,EAgBM,MAhBNsC,GAgBM,CAfJtC,EAA8C,OAAA,KAAxC,OAAIe,EAAG5C,GAAkBF,CAAI,CAAA,EAAA,CAAA,EACnC2C,EAAA,EAAA,IAAAA,EAAA,EAAA,EAAAZ,EAAwC,OAAA,CAAlC,MAAM,mBAAA,EAAoB,IAAC,EAAA,GACjCA,EAAmC,OAAA,KAA7B,SAAMe,EAAG9C,EAAK,KAAK,EAAA,CAAA,EACzB2C,EAAA,EAAA,IAAAA,EAAA,EAAA,EAAAZ,EAAwC,OAAA,CAAlC,MAAM,mBAAA,EAAoB,IAAC,EAAA,GACjCA,EAGC,YAFE,SACDe,EAAGN,KAAWxC,CAAI,EAAE,WAAW,EAAA,CAAA,EAEjC2C,EAAA,EAAA,IAAAA,EAAA,EAAA,EAAAZ,EAAwC,OAAA,CAAlC,MAAM,mBAAA,EAAoB,IAAC,EAAA,GACjCA,EAKC,YAJE,QACDe,EACEN,KAAWxC,CAAI,EAAE,aAAW,SAAA,EAAA,CAAA,CAAA,uBAMtC,IAeM,CAfN+B,EAeM,MAfNuC,GAeM,CAbI9B,EAAAjC,EAAA,EAAcP,EAAK,EAAE,OAD7B4C,EAKE,MAAA,OAHC,IAAKJ,EAAAjC,EAAA,EAAcP,EAAK,EAAE,EAC3B,MAAM,yDACN,IAAI,SAAA,eAEN2D,EAAA,EAAAf,EAOM,MAPN2B,GAOMzB,EALFN,MAAgBxC,EAAK,EAAE,IAAkCwC,EAAAhC,EAAA,EAAkBR,EAAK,EAAE,2DAQ1FkC,EAQUE,EAAA,CAPR,KAAA,GACA,KAAK,QACL,MAAM,mBACL,QAASI,EAAApD,EAAA,EAAgB,QAAQY,EAAK,EAAE,EACxC,QAAKyC,GAAED,EAAApD,EAAA,EAAgB,OAAOY,CAAI,CAAA,GAExB,OAAK,IAAuB,CAAvBkC,EAAuBG,EAAA,CAAd,KAAK,OAAM,CAAA,iCAEtCH,EAoBW8B,EAAA,KAAA,CAnBE,UACT,IAEU,CAFV9B,EAEUE,EAAA,CAFD,KAAA,IAAI,CACA,OAAK,IAAyB,CAAzBF,EAAyBG,EAAA,CAAhB,KAAK,SAAQ,CAAA,qBAG1C,IAaS,CAbTH,EAaS4B,EAAA,CAbD,SAAA,IAAQ,WACd,IAKU,CALV5B,EAKUE,EAAA,CAJP,QAASI,EAAA3B,EAAA,EAAoB,QAAQb,EAAK,EAAE,EAC5C,QAAKyC,GAAED,EAAA3B,EAAA,EAAoB,OAAOb,CAAI,CAAA,aACxC,IAED,CAAA,GAAA2C,EAAA,EAAA,IAAAA,EAAA,EAAA,EAAA,GAFC,UAED,EAAA,CAAA,mCACAT,EAKUE,EAAA,CAJP,QAASI,EAAAzB,EAAA,EAAsB,QAAQf,EAAK,EAAE,EAC9C,QAAKyC,GAAED,EAAAzB,EAAA,EAAsB,OAAOf,CAAI,CAAA,aAC1C,IAED,CAAA,GAAA2C,EAAA,EAAA,IAAAA,EAAA,EAAA,EAAA,GAFC,UAED,EAAA,CAAA,6DAGJT,EAoBW8B,EAAA,KAAA,CAnBE,UACT,IAEU,CAFV9B,EAEUE,EAAA,CAFD,KAAA,IAAI,CACA,OAAK,IAAwB,CAAxBF,EAAwBG,EAAA,CAAf,KAAK,QAAO,CAAA,qBAGzC,IAaS,CAbTH,EAaS4B,EAAA,CAbD,SAAA,IAAQ,WACd,IAKU,CALV5B,EAKUE,EAAA,CAJP,QAASI,EAAAvB,EAAA,EAAoB,QAAQjB,EAAK,EAAE,EAC5C,QAAKyC,GAAED,EAAAvB,EAAA,EAAoB,OAAOjB,CAAI,CAAA,aACxC,IAED,CAAA,GAAA2C,EAAA,EAAA,IAAAA,EAAA,EAAA,EAAA,GAFC,YAED,EAAA,CAAA,mCACAT,EAKUE,EAAA,CAJP,QAASI,EAAAf,EAAA,EAAsB,QAAQzB,EAAK,EAAE,EAC9C,QAAKyC,GAAED,EAAAf,EAAA,EAAsB,OAAOzB,CAAI,CAAA,aAC1C,IAED,CAAA,GAAA2C,EAAA,EAAA,IAAAA,EAAA,EAAA,EAAA,GAFC,YAED,EAAA,CAAA,6DAGJT,EASWc,EAAA,KAAA,CARE,UACT,IAIO,CAJPjB,EAIO,OAJPyC,GAIO,CAHLtC,EAEUE,EAAA,CAFD,KAAA,GAAK,SAAA,EAAA,GACD,OAAK,IAAyB,CAAzBF,EAAyBG,EAAA,CAAhB,KAAK,SAAQ,CAAA,uBAGjC,IAEb,iBAFa,aAEb,EAAA,EAAA,iKAhMdO,EAEM,MAFN6B,GAAoE,QAEpE,OAyMJvC,EAAgDwC,GAAA,CAAzB,KAAMlC,EAAAhG,CAAA,sCAAAA,EAAe,MAAAiG,EAAA,KAAA"}
|
|
1
|
+
{"version":3,"file":"DevicePage-U37dNYv6.js","sources":["../../src/views/DevicePage.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport DeviceControlTools from '@/components/DeviceControlTools.vue';\nimport SettingsModal from '@/components/SettingsModal.vue';\nimport { usePreviewCache } from '@/composables/plus/usePreviewCache';\nimport { showTextDLg, waitShareAgree } from '@/utils/dialog';\nimport { useDeviceApi } from '@/utils/api';\nimport { message } from '@/utils/discrete';\nimport { errorWrap } from '@/utils/error';\nimport {\n exportSnapshotAsImportId,\n exportSnapshotAsImage,\n exportSnapshotAsImageId,\n exportSnapshotAsZip,\n} from '@/utils/export';\nimport { getAppInfo, getDevice } from '@/utils/node';\nimport { delay } from '@/utils/others';\nimport { buildGroupedSnapshots } from '@/utils/plus/snapshotGroup';\nimport { screenshotStorage, snapshotStorage } from '@/utils/snapshot';\nimport { useBatchTask, useTask } from '@/utils/task';\nimport { getImagUrl, getImportUrl } from '@/utils/url';\nimport {\n getCustomDomainImportUrl,\n getOfficialImportUrl,\n} from '@/utils/plus/url';\nimport dayjs from 'dayjs';\nimport pLimit from 'p-limit';\n\nconst router = useRouter();\nconst { api, origin, serverInfo } = useDeviceApi();\nconst { settingsStore, snapshotImportTime, snapshotViewedTime } =\n useStorageStore();\nconst link = useStorage('device_link', '');\nconst settingsDlgShow = shallowRef(false);\n\nconst normalizeDeviceUrl = (input: string): string | null => {\n const raw = input.trim();\n if (!raw) return null;\n const withProtocol = /^https?:\\/\\//i.test(raw) ? raw : `http://${raw}`;\n return errorWrap(\n () => {\n const url = new URL(withProtocol);\n if (!url.port) url.port = '8888';\n return url.origin;\n },\n () => null,\n );\n};\n\nconst connect = useTask(async () => {\n const normalized = normalizeDeviceUrl(link.value);\n if (!normalized) {\n message.error('非法设备地址');\n return;\n }\n origin.value = normalized;\n link.value = normalized;\n serverInfo.value = await api.getServerInfo();\n});\n\nconst serverTitle = computed(() => {\n if (!serverInfo.value) return '未连接设备';\n const d = serverInfo.value.device;\n const g = serverInfo.value.gkdAppInfo;\n return `${d.manufacturer} Android${d.release} - GKD${g.versionName}`;\n});\n\nonMounted(async () => {\n await delay(500);\n if (normalizeDeviceUrl(link.value)) {\n connect.invoke();\n }\n});\n\nconst snapshots = shallowRef<Snapshot[]>([]);\nwatchEffect(async () => {\n if (!serverInfo.value) return;\n document.title = serverTitle.value;\n const result = await api.getSnapshots();\n result.sort((a, b) => b.id - a.id);\n snapshots.value = result;\n});\n\nconst captureSnapshot = useTask(async () => {\n const snapshot = await api.captureSnapshot();\n const screenshot = await api.getScreenshot({ id: snapshot.id });\n await snapshotStorage.setItem(snapshot.id, snapshot);\n await screenshotStorage.setItem(snapshot.id, screenshot);\n message.success('捕获并保存快照成功');\n const result = await api.getSnapshots();\n result.sort((a, b) => b.id - a.id);\n snapshots.value = result;\n});\n\nconst downloadAllSnapshot = useTask(async () => {\n const snapshotIds = (await api.getSnapshots()).map((s) => s.id);\n const existSnapshotIds = new Set(\n (await screenshotStorage.keys()).map((s) => parseInt(s)),\n );\n const unimportSnapshotIds = snapshotIds.filter(\n (k) => !existSnapshotIds.has(k),\n );\n if (unimportSnapshotIds.length == 0) {\n message.success('没有新记录可导入');\n return;\n }\n let okCount = 0;\n const limit = pLimit(3);\n await Promise.all(\n unimportSnapshotIds.map((snapshotId) =>\n limit(async () => {\n const [newSnapshot, newScreenshot] = await Promise.all([\n api.getSnapshot({ id: snapshotId }),\n api.getScreenshot({ id: snapshotId }),\n ] as const);\n if (!newSnapshot.nodes) return;\n await Promise.all([\n snapshotStorage.setItem(snapshotId, newSnapshot),\n screenshotStorage.setItem(snapshotId, newScreenshot),\n ]);\n okCount++;\n }),\n ),\n );\n message.success(`导入${okCount}条新记录`);\n});\n\nconst ensureSnapshotStored = async (row: Snapshot) => {\n if (!(await snapshotStorage.hasItem(row.id))) {\n await snapshotStorage.setItem(\n row.id,\n await api.getSnapshot({ id: row.id }),\n );\n }\n};\nconst ensureScreenshotStored = async (row: Snapshot) => {\n if (!(await screenshotStorage.hasItem(row.id))) {\n await screenshotStorage.setItem(\n row.id,\n await api.getScreenshot({ id: row.id }),\n );\n }\n};\nconst ensureLocalSnapshotData = async (row: Snapshot) => {\n await Promise.all([ensureSnapshotStored(row), ensureScreenshotStored(row)]);\n};\n\nconst previewSnapshot = useBatchTask(\n async (row: Snapshot) => {\n await ensureLocalSnapshotData(row);\n snapshotViewedTime[row.id] = Date.now();\n window.open(\n router.resolve({\n name: 'snapshot',\n params: { snapshotId: row.id },\n }).href,\n );\n },\n (r) => r.id,\n);\n\nconst getAutoExpandedNames = (\n groups: ReturnType<typeof buildGroupedSnapshots>,\n packageLimit = 4,\n activityLimit = 3,\n) => {\n const packageNames = groups.slice(0, packageLimit).map((g) => g.packageName);\n const activityNames = groups\n .slice(0, packageLimit)\n .flatMap((g) =>\n g.activities\n .slice(0, activityLimit)\n .map((a) => `${g.packageName}::${a.activityId}`),\n );\n return { packageNames, activityNames };\n};\n\nconst groupedSnapshots = computed(() => {\n return buildGroupedSnapshots(snapshots.value, snapshotImportTime);\n});\n\nconst getItemAppName = (item: Snapshot) => getAppInfo(item).name || item.appId;\nconst getItemDeviceText = (item: Snapshot) =>\n `${getDevice(item).manufacturer} Android ${getDevice(item).release || ''}`;\nconst getItemImportTimeText = (item: Snapshot) =>\n dayjs(snapshotImportTime[item.id] || item.id).format('YYYY-MM-DD HH:mm:ss');\n\nconst previewCacheLimit = computed(() =>\n settingsStore.lowMemoryMode ? 6 : 24,\n);\nconst { previewUrlMap, previewLoadingMap, previewErrorMap, ensurePreview } =\n usePreviewCache({\n getScreenshot: async (id) => {\n const local = await screenshotStorage.getItem(id);\n return local || (await api.getScreenshot({ id }));\n },\n cacheLimit: previewCacheLimit,\n });\n\nconst downloadSnapshotZip = useBatchTask(\n async (row: Snapshot) => {\n await ensureLocalSnapshotData(row);\n await exportSnapshotAsZip(row);\n },\n (r) => r.id,\n);\nconst downloadSnapshotImage = useBatchTask(\n async (row: Snapshot) => {\n await ensureScreenshotStored(row);\n await exportSnapshotAsImage(row);\n },\n (r) => r.id,\n);\nconst shareSnapshotZipUrl = useBatchTask(\n async (row: Snapshot) => {\n await waitShareAgree();\n await ensureLocalSnapshotData(row);\n const importId = await exportSnapshotAsImportId(row);\n showTextDLg({\n title: '分享链接',\n content: settingsStore.shareUseOfficialImportDomain\n ? getOfficialImportUrl(importId)\n : getImportUrl(importId),\n extraContent: getCustomDomainImportUrl(importId),\n });\n },\n (r) => r.id,\n);\nconst shareSnapshotImageUrl = useBatchTask(\n async (row: Snapshot) => {\n await waitShareAgree();\n await ensureScreenshotStored(row);\n const imageId = await exportSnapshotAsImageId(row);\n showTextDLg({\n title: '分享链接',\n content: getImagUrl(imageId),\n });\n },\n (r) => r.id,\n);\n\nconst expandedPackageNames = shallowRef<(string | number)[]>([]);\nconst expandedActivityNames = shallowRef<(string | number)[]>([]);\nwatchEffect(() => {\n if (!settingsStore.autoExpandSnapshots) {\n expandedPackageNames.value = [];\n expandedActivityNames.value = [];\n return;\n }\n const { packageNames, activityNames } = getAutoExpandedNames(\n groupedSnapshots.value,\n 5,\n 4,\n );\n expandedPackageNames.value = packageNames;\n expandedActivityNames.value = activityNames;\n});\n</script>\n\n<template>\n <div page-size flex flex-col p-10px gap-10px>\n <div flex items-center gap-24px>\n <RouterLink to=\"/\" class=\"flex ml-12px\" title=\"首页\">\n <NButton text style=\"--n-icon-size: var(--app-icon-size)\">\n <template #icon><SvgIcon name=\"home\" /></template>\n </NButton>\n </RouterLink>\n <NInputGroup>\n <NInput\n v-model:value=\"link\"\n placeholder=\"请输入设备地址 默认端口:8888\"\n class=\"gkd_code\"\n :style=\"{ width: '260px' }\"\n @keyup.enter=\"connect.invoke\"\n />\n <NButton :loading=\"connect.loading\" @click=\"connect.invoke\"\n >刷新连接</NButton\n >\n <div\n v-if=\"serverInfo\"\n gkd_code\n pl-16px\n whitespace-nowrap\n flex\n items-center\n >\n {{ serverTitle }}\n </div>\n </NInputGroup>\n <template v-if=\"serverInfo\">\n <NTooltip>\n <template #trigger>\n <NButton\n text\n style=\"--n-icon-size: var(--app-icon-size)\"\n class=\"device-top-icon\"\n :loading=\"captureSnapshot.loading\"\n @click=\"captureSnapshot.invoke\"\n >\n <SvgIcon name=\"Snapshot\" />\n </NButton>\n </template>\n 捕获快照\n </NTooltip>\n\n <DeviceControlTools />\n\n <NTooltip>\n <template #trigger>\n <NButton\n text\n style=\"--n-icon-size: var(--app-icon-size)\"\n class=\"device-top-icon\"\n :loading=\"downloadAllSnapshot.loading\"\n @click=\"downloadAllSnapshot.invoke\"\n >\n <SvgIcon name=\"Down-all\" />\n </NButton>\n </template>\n 下载所有快照\n </NTooltip>\n\n <NTooltip>\n <template #trigger>\n <NButton\n text\n style=\"--n-icon-size: var(--app-icon-size)\"\n class=\"device-top-icon\"\n @click=\"settingsDlgShow = true\"\n >\n <SvgIcon name=\"settings\" />\n </NButton>\n </template>\n 设置\n </NTooltip>\n </template>\n </div>\n\n <div class=\"flex-1 min-h-0 overflow-auto pr-6px\">\n <div v-if=\"!groupedSnapshots.length\" py-40px text-center opacity-70>\n 暂无快照\n </div>\n <NCollapse\n v-else\n v-model:expandedNames=\"expandedPackageNames\"\n :accordion=\"false\"\n >\n <NCollapseItem\n v-for=\"group in groupedSnapshots\"\n :key=\"group.packageName\"\n :name=\"group.packageName\"\n >\n <template #header>\n <div flex items-center gap-8px>\n <NTag type=\"info\" size=\"small\">包名</NTag>\n <code>{{ `${group.appName} (${group.packageName})` }}</code>\n <NTag size=\"small\">{{ group.activities.length }} Activities</NTag>\n </div>\n </template>\n <NCollapse\n v-model:expandedNames=\"expandedActivityNames\"\n :accordion=\"false\"\n >\n <NCollapseItem\n v-for=\"activity in group.activities\"\n :key=\"`${group.packageName}::${activity.activityId}`\"\n :name=\"`${group.packageName}::${activity.activityId}`\"\n >\n <template #header>\n <div flex items-center gap-8px>\n <NTag type=\"success\" size=\"small\">Activity</NTag>\n <code>{{ activity.activityId }}</code>\n <NTag size=\"small\"\n >{{ activity.snapshots.length }} snapshots</NTag\n >\n </div>\n </template>\n <NSpace vertical :size=\"6\">\n <div\n v-for=\"item in activity.snapshots\"\n :key=\"item.id\"\n class=\"rounded-8px border border-solid px-10px py-6px transition-colors\"\n :class=\"[\n snapshotViewedTime[item.id]\n ? 'snapshot-row-viewed'\n : 'surface-card',\n ]\"\n >\n <div flex items-start gap-10px flex-wrap>\n <NPopover\n trigger=\"hover\"\n placement=\"right-start\"\n :flip=\"true\"\n :shift=\"true\"\n @update:show=\"\n if ($event) {\n ensurePreview(item.id);\n }\n \"\n >\n <template #trigger>\n <div\n class=\"min-w-0 inline-flex max-w-full cursor-default select-text flex-col\"\n @mouseenter=\"ensurePreview(item.id)\"\n >\n <div flex items-center gap-6px leading-18px>\n <NTag size=\"small\" type=\"warning\">{{\n dayjs(item.id).format('MM-DD HH:mm:ss')\n }}</NTag>\n <NTag\n v-if=\"snapshotViewedTime[item.id]\"\n size=\"small\"\n type=\"success\"\n >\n 已查看\n </NTag>\n <span class=\"truncate font-600\">{{\n getItemAppName(item)\n }}</span>\n </div>\n <div text-12px mt-2px class=\"font-600\">\n 界面ID: {{ item.activityId || '(unknown)' }}\n </div>\n <div mt-4px text-12px class=\"opacity-75\">\n <span\n >创建时间:\n {{\n dayjs(item.id).format('YYYY-MM-DD HH:mm:ss')\n }}</span\n >\n <span class=\"mx-6px opacity-45\">|</span>\n <span\n >导入时间: {{ getItemImportTimeText(item) }}</span\n >\n </div>\n <div mt-2px text-12px class=\"opacity-70\">\n <span>设备: {{ getItemDeviceText(item) }}</span>\n <span class=\"mx-6px opacity-45\">|</span>\n <span>应用ID: {{ item.appId }}</span>\n <span class=\"mx-6px opacity-45\">|</span>\n <span\n >版本代码:\n {{ getAppInfo(item).versionCode }}</span\n >\n <span class=\"mx-6px opacity-45\">|</span>\n <span\n >版本号:\n {{\n getAppInfo(item).versionName || 'unknown'\n }}</span\n >\n </div>\n </div>\n </template>\n <div class=\"inline-block w-fit max-w-90vw\">\n <img\n v-if=\"previewUrlMap[item.id]\"\n :src=\"previewUrlMap[item.id]\"\n class=\"block h-auto w-auto max-h-320px max-w-80vw rounded-6px\"\n alt=\"preview\"\n />\n <div v-else py-20px text-center opacity-70>\n {{\n previewErrorMap[item.id] ||\n (previewLoadingMap[item.id]\n ? '预览加载中...'\n : '暂无预览')\n }}\n </div>\n </div>\n </NPopover>\n <NButton\n text\n size=\"small\"\n class=\"ml-auto shrink-0\"\n :loading=\"previewSnapshot.loading[item.id]\"\n @click=\"previewSnapshot.invoke(item)\"\n >\n <template #icon><SvgIcon name=\"code\" /></template>\n </NButton>\n <NPopover>\n <template #trigger>\n <NButton text>\n <template #icon><SvgIcon name=\"export\" /></template>\n </NButton>\n </template>\n <NSpace vertical>\n <NButton\n :loading=\"downloadSnapshotZip.loading[item.id]\"\n @click=\"downloadSnapshotZip.invoke(item)\"\n >\n 下载-快照\n </NButton>\n <NButton\n :loading=\"downloadSnapshotImage.loading[item.id]\"\n @click=\"downloadSnapshotImage.invoke(item)\"\n >\n 下载-图片\n </NButton>\n </NSpace>\n </NPopover>\n <NPopover>\n <template #trigger>\n <NButton text>\n <template #icon><SvgIcon name=\"share\" /></template>\n </NButton>\n </template>\n <NSpace vertical>\n <NButton\n :loading=\"shareSnapshotZipUrl.loading[item.id]\"\n @click=\"shareSnapshotZipUrl.invoke(item)\"\n >\n 生成链接-快照\n </NButton>\n <NButton\n :loading=\"shareSnapshotImageUrl.loading[item.id]\"\n @click=\"shareSnapshotImageUrl.invoke(item)\"\n >\n 生成链接-图片\n </NButton>\n </NSpace>\n </NPopover>\n <NTooltip>\n <template #trigger>\n <span class=\"inline-flex\">\n <NButton text disabled>\n <template #icon><SvgIcon name=\"delete\" /></template>\n </NButton>\n </span>\n </template>\n 远端删除尚未实现\n </NTooltip>\n </div>\n </div>\n </NSpace>\n </NCollapseItem>\n </NCollapse>\n </NCollapseItem>\n </NCollapse>\n </div>\n </div>\n\n <SettingsModal v-model:show=\"settingsDlgShow\" />\n</template>\n"],"names":["router","useRouter","api","origin","serverInfo","useDeviceApi","settingsStore","snapshotImportTime","snapshotViewedTime","useStorageStore","link","useStorage","settingsDlgShow","shallowRef","normalizeDeviceUrl","input","raw","withProtocol","errorWrap","url","connect","useTask","normalized","message","serverTitle","computed","d","g","onMounted","delay","snapshots","watchEffect","result","a","b","captureSnapshot","snapshot","screenshot","snapshotStorage","screenshotStorage","downloadAllSnapshot","snapshotIds","s","existSnapshotIds","unimportSnapshotIds","k","okCount","limit","pLimit","snapshotId","newSnapshot","newScreenshot","ensureSnapshotStored","row","ensureScreenshotStored","ensureLocalSnapshotData","previewSnapshot","useBatchTask","r","getAutoExpandedNames","groups","packageLimit","activityLimit","packageNames","activityNames","groupedSnapshots","buildGroupedSnapshots","getItemAppName","item","getAppInfo","getItemDeviceText","getDevice","getItemImportTimeText","dayjs","previewCacheLimit","previewUrlMap","previewLoadingMap","previewErrorMap","ensurePreview","usePreviewCache","id","downloadSnapshotZip","exportSnapshotAsZip","downloadSnapshotImage","exportSnapshotAsImage","shareSnapshotZipUrl","waitShareAgree","importId","exportSnapshotAsImportId","showTextDLg","getOfficialImportUrl","getImportUrl","getCustomDomainImportUrl","shareSnapshotImageUrl","imageId","exportSnapshotAsImageId","getImagUrl","expandedPackageNames","expandedActivityNames","_createElementVNode","_hoisted_1","_hoisted_2","_createVNode","_component_RouterLink","_component_NButton","_component_SvgIcon","_component_NInputGroup","_component_NInput","_unref","$event","_withKeys","_cache","_createElementBlock","_hoisted_3","_toDisplayString","_Fragment","_component_NTooltip","DeviceControlTools","_hoisted_4","_createBlock","_component_NCollapse","_renderList","group","_component_NCollapseItem","_hoisted_6","_component_NTag","_createTextVNode","_openBlock","activity","_hoisted_7","_component_NSpace","_hoisted_8","_component_NPopover","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_17","_hoisted_18","_hoisted_5","SettingsModal"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{c as De,a as H,f as Xe,b as Re,d as Ee,h as R,N as Je,T as et,u as tt,e as Be,g as nt,i as M,w as Ve,s as st,r as at,p as ot,j as it,k as lt,l as rt,o as dt,m as ve,n as ut,q as Me,t as I,v as l,x as a,y as s,_ as pt,z as n,A as ct,B as mt,C as g,D as P,E as ft,F as d,G as f,H as K,I as W,J as ge,K as he,L as vt,M as ke,O as oe,P as gt,Q as ht,R as b,S as Te,U as kt,V as xt,W as yt,X as _t,Y as wt}from"./index-
|
|
1
|
+
import{c as De,a as H,f as Xe,b as Re,d as Ee,h as R,N as Je,T as et,u as tt,e as Be,g as nt,i as M,w as Ve,s as st,r as at,p as ot,j as it,k as lt,l as rt,o as dt,m as ve,n as ut,q as Me,t as I,v as l,x as a,y as s,_ as pt,z as n,A as ct,B as mt,C as g,D as P,E as ft,F as d,G as f,H as K,I as W,J as ge,K as he,L as vt,M as ke,O as oe,P as gt,Q as ht,R as b,S as Te,U as kt,V as xt,W as yt,X as _t,Y as wt}from"./index-B8n8YbRA.js";import{_ as Ct}from"./ActionCard.vue_vue_type_script_setup_true_lang-BaXFjcSg.js";import{u as L,_ as It,a as bt,b as Nt,c as St,d as $t,e as zt,f as Dt,g as Rt,h as Mt,w as Ue,i as Tt,j as Ut,k as Pt,s as Pe,l as Lt}from"./SettingsModal.vue_vue_type_script_setup_true_lang-Dunhc-_c.js";import{u as At,b as Et}from"./snapshotGroup-DWXLlGGZ.js";import{i as Bt,a as Vt}from"./import-21Jp_8Xc.js";import{u as Ht,_ as Kt,a as Ot,g as ie,b as Le}from"./node-DqtTfexB.js";import{s as Yt,a as Ae,b as jt}from"./snapshot-DrF431xa.js";const qt=De([De("@keyframes spin-rotate",`
|
|
2
2
|
from {
|
|
3
3
|
transform: rotate(0);
|
|
4
4
|
}
|
|
@@ -52,4 +52,4 @@ import{c as De,a as H,f as Xe,b as Re,d as Ee,h as R,N as Je,T as et,u as tt,e a
|
|
|
52
52
|
每行一个
|
|
53
53
|
空白行自动忽略
|
|
54
54
|
非法链接行自动忽略`,autosize:{minRows:8,maxRows:16},inputProps:{style:"white-space: nowrap;"},"onUpdate:value":e[9]||(e[9]=o=>{n(X).loading||(B.value=o)})},null,8,["value"])]),_:1},8,["show","loading","onPositiveClick"]),a(Dt,{show:n(te),"onUpdate:show":e[15]||(e[15]=o=>ge(te)?te.value=o:null)},null,8,["show"]),a(ze,{show:n(_).show,preset:"dialog",title:n(_).title||"分组备注",showIcon:!1,positiveText:"保存",negativeText:"取消",onPositiveClick:qe,onNegativeClick:e[17]||(e[17]=o=>n(_).show=!1),onClose:e[18]||(e[18]=o=>n(_).show=!1)},{default:s(()=>[a(u,{value:n(_).value,"onUpdate:value":e[16]||(e[16]=o=>n(_).value=o),type:"textarea",maxlength:"160","show-count":"",autosize:{minRows:3,maxRows:6},placeholder:"请输入备注"},null,8,["value"])]),_:1},8,["show","title"])],64)}}});export{zn as default};
|
|
55
|
-
//# sourceMappingURL=HomePage-
|
|
55
|
+
//# sourceMappingURL=HomePage-B_mKcKlz.js.map
|