@gkd-kit/inspect 0.0.1731072097488 → 0.0.1731083481660
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{ActionCard.vue_vue_type_script_setup_true_lang-W3CeQLk1.js → ActionCard.vue_vue_type_script_setup_true_lang-oPon0Nur.js} +2 -2
- package/dist/assets/{ActionCard.vue_vue_type_script_setup_true_lang-W3CeQLk1.js.map → ActionCard.vue_vue_type_script_setup_true_lang-oPon0Nur.js.map} +1 -1
- package/dist/assets/{DevicePage-DKp5Muez.js → DevicePage-BoHW8n5e.js} +2 -2
- package/dist/assets/{DevicePage-DKp5Muez.js.map → DevicePage-BoHW8n5e.js.map} +1 -1
- package/dist/assets/{HomePage-vKqGviyv.js → HomePage-BluPIA_G.js} +2 -2
- package/dist/assets/{HomePage-vKqGviyv.js.map → HomePage-BluPIA_G.js.map} +1 -1
- package/dist/assets/{ImportPage-Dlw4rWe0.js → ImportPage-DC4pKBGl.js} +2 -2
- package/dist/assets/{ImportPage-Dlw4rWe0.js.map → ImportPage-DC4pKBGl.js.map} +1 -1
- package/dist/assets/{SelectorPage-C9kuZjHl.js → SelectorPage-CEfdDP5V.js} +2 -2
- package/dist/assets/SelectorPage-CEfdDP5V.js.map +1 -0
- package/dist/assets/SnapshotPage-EGh8pEr-.js +277 -0
- package/dist/assets/SnapshotPage-EGh8pEr-.js.map +1 -0
- package/dist/assets/{TrackGraph-BDOpjLUX.js → TrackGraph-KAxv3ke9.js} +2 -2
- package/dist/assets/{TrackGraph-BDOpjLUX.js.map → TrackGraph-KAxv3ke9.js.map} +1 -1
- package/dist/assets/{_404Page-DIehiXNC.js → _404Page-Cdcz7xpm.js} +2 -2
- package/dist/assets/{_404Page-DIehiXNC.js.map → _404Page-Cdcz7xpm.js.map} +1 -1
- package/dist/assets/{dayjs.min--4WhWu2i.js → dayjs.min-BtHCNtMU.js} +2 -2
- package/dist/assets/{dayjs.min--4WhWu2i.js.map → dayjs.min-BtHCNtMU.js.map} +1 -1
- package/dist/assets/{error-Cmy1iv3M.js → error-DiKELM7X.js} +2 -2
- package/dist/assets/{error-Cmy1iv3M.js.map → error-DiKELM7X.js.map} +1 -1
- package/dist/assets/{export-3Tse87m6.js → export-CmIirSOE.js} +4 -4
- package/dist/assets/{export-3Tse87m6.js.map → export-CmIirSOE.js.map} +1 -1
- package/dist/assets/{import-DlZumkH6.js → import-CZ0VIHxs.js} +2 -2
- package/dist/assets/{import-DlZumkH6.js.map → import-CZ0VIHxs.js.map} +1 -1
- package/dist/assets/{index-D8nE5X8w.css → index-DQz5HHRP.css} +1 -1
- package/dist/assets/{index-BThCakt9.js → index-DstKhbDa.js} +8 -8
- package/dist/assets/{index-BThCakt9.js.map → index-DstKhbDa.js.map} +1 -1
- package/dist/assets/{jszip.min-B-JZFq3A.js → jszip.min-BB3coTrH.js} +2 -2
- package/dist/assets/{jszip.min-B-JZFq3A.js.map → jszip.min-BB3coTrH.js.map} +1 -1
- package/dist/assets/{snapshot-CgBRrWm5.js → snapshot-BPq4m02d.js} +2 -2
- package/dist/assets/{snapshot-CgBRrWm5.js.map → snapshot-BPq4m02d.js.map} +1 -1
- package/dist/assets/{table-DCQIEyUc.js → table-C8_5JxaC.js} +2 -2
- package/dist/assets/{table-DCQIEyUc.js.map → table-C8_5JxaC.js.map} +1 -1
- package/dist/index.html +3 -3
- package/package.json +1 -1
- package/dist/assets/SelectorPage-C9kuZjHl.js.map +0 -1
- package/dist/assets/SnapshotPage-CJW8dhRV.js +0 -277
- package/dist/assets/SnapshotPage-CJW8dhRV.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{ag as te,d as oe,aR as ne,a3 as se,h as I,u as H,aa as ie,m as F,q as ae,t as j,aq as L,v as m,w as le,aS as re,X as z,ad as ue,aT as pe,a as O,b,e as R,j as q,r as ce,$ as de,aU as ve,aV as ge,y as A,V as J,K as a,aM as T,z as K,Q as v,Y as fe,at as me,aF as he,H as x,I as U,M as p,L as n,J as c,S as B,av as C,aE as we,aP as xe,aO as ke,W as $}from"./index-
|
|
1
|
+
import{ag as te,d as oe,aR as ne,a3 as se,h as I,u as H,aa as ie,m as F,q as ae,t as j,aq as L,v as m,w as le,aS as re,X as z,ad as ue,aT as pe,a as O,b,e as R,j as q,r as ce,$ as de,aU as ve,aV as ge,y as A,V as J,K as a,aM as T,z as K,Q as v,Y as fe,at as me,aF as he,H as x,I as U,M as p,L as n,J as c,S as B,av as C,aE as we,aP as xe,aO as ke,W as $}from"./index-DstKhbDa.js";import{w as Ce,x as M,c as Z,y as Pe,_ as _e,u as S,N as ye,b as Be,m as Se}from"./dayjs.min-BtHCNtMU.js";import{g as Fe,h as Te,e as Ie,f as be}from"./export-CmIirSOE.js";import{a as _}from"./snapshot-BPq4m02d.js";const ze={iconSize:"22px"};function Ee(t){const{fontSize:e,warningColor:u}=t;return Object.assign(Object.assign({},ze),{fontSize:e,iconColor:u})}const Ne=te({name:"Popconfirm",common:oe,peers:{Button:ne,Popover:Ce},self:Ee}),Q=se("n-popconfirm"),X={positiveText:String,negativeText:String,showIcon:{type:Boolean,default:!0},onPositiveClick:{type:Function,required:!0},onNegativeClick:{type:Function,required:!0}},D=re(X),je=I({name:"NPopconfirmPanel",props:X,setup(t){const{localeRef:e}=M("Popconfirm"),{inlineThemeDisabled:u}=H(),{mergedClsPrefixRef:l,mergedThemeRef:h,props:d}=ie(Q),P=F(()=>{const{common:{cubicBezierEaseInOut:i},self:{fontSize:g,iconSize:w,iconColor:k}}=h.value;return{"--n-bezier":i,"--n-font-size":g,"--n-icon-size":w,"--n-icon-color":k}}),r=u?ae("popconfirm-panel",void 0,P,d):void 0;return Object.assign(Object.assign({},M("Popconfirm")),{mergedClsPrefix:l,cssVars:u?void 0:P,localizedPositiveText:F(()=>t.positiveText||e.value.positiveText),localizedNegativeText:F(()=>t.negativeText||e.value.negativeText),positiveButtonProps:j(d,"positiveButtonProps"),negativeButtonProps:j(d,"negativeButtonProps"),handlePositiveClick(i){t.onPositiveClick(i)},handleNegativeClick(i){t.onNegativeClick(i)},themeClass:r==null?void 0:r.themeClass,onRender:r==null?void 0:r.onRender})},render(){var t;const{mergedClsPrefix:e,showIcon:u,$slots:l}=this,h=L(l.action,()=>this.negativeText===null&&this.positiveText===null?[]:[this.negativeText!==null&&m(z,Object.assign({size:"small",onClick:this.handleNegativeClick},this.negativeButtonProps),{default:()=>this.localizedNegativeText}),this.positiveText!==null&&m(z,Object.assign({size:"small",type:"primary",onClick:this.handlePositiveClick},this.positiveButtonProps),{default:()=>this.localizedPositiveText})]);return(t=this.onRender)===null||t===void 0||t.call(this),m("div",{class:[`${e}-popconfirm__panel`,this.themeClass],style:this.cssVars},le(l.default,d=>u||d?m("div",{class:`${e}-popconfirm__body`},u?m("div",{class:`${e}-popconfirm__icon`},L(l.icon,()=>[m(ue,{clsPrefix:e},{default:()=>m(pe,null)})])):null,d):null),h?m("div",{class:[`${e}-popconfirm__action`]},h):null)}}),Le=O("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{ag as te,d as oe,aR as ne,a3 as se,h as I,u as H,aa as ie,m as F,q as ae,
|
|
|
14
14
|
display: flex;
|
|
15
15
|
justify-content: flex-end;
|
|
16
16
|
`,[R("&:not(:first-child)","margin-top: 8px"),O("button",[R("&:not(:last-child)","margin-right: 8px;")])])]),Oe=Object.assign(Object.assign(Object.assign({},q.props),Pe),{positiveText:String,negativeText:String,showIcon:{type:Boolean,default:!0},trigger:{type:String,default:"click"},positiveButtonProps:Object,negativeButtonProps:Object,onPositiveClick:Function,onNegativeClick:Function}),Re=I({name:"Popconfirm",props:Oe,__popover__:!0,setup(t){const{mergedClsPrefixRef:e}=H(),u=q("Popconfirm","-popconfirm",Le,Ne,t,e),l=ce(null);function h(r){var i;if(!(!((i=l.value)===null||i===void 0)&&i.getMergedShow()))return;const{onPositiveClick:g,"onUpdate:show":w}=t;Promise.resolve(g?g(r):!0).then(k=>{var s;k!==!1&&((s=l.value)===null||s===void 0||s.setShow(!1),w&&A(w,!1))})}function d(r){var i;if(!(!((i=l.value)===null||i===void 0)&&i.getMergedShow()))return;const{onNegativeClick:g,"onUpdate:show":w}=t;Promise.resolve(g?g(r):!0).then(k=>{var s;k!==!1&&((s=l.value)===null||s===void 0||s.setShow(!1),w&&A(w,!1))})}return de(Q,{mergedThemeRef:u,mergedClsPrefixRef:e,props:t}),{setShow(r){var i;(i=l.value)===null||i===void 0||i.setShow(r)},syncPosition(){var r;(r=l.value)===null||r===void 0||r.syncPosition()},mergedTheme:u,popoverInstRef:l,handlePositiveClick:h,handleNegativeClick:d}},render(){const{$slots:t,$props:e,mergedTheme:u}=this;return m(Z,ge(e,D,{theme:u.peers.Popover,themeOverrides:u.peerOverrides.Popover,internalExtraClass:["popconfirm"],ref:"popoverInstRef"}),{trigger:t.activator||t.trigger,default:()=>{const l=ve(e,D);return m(je,Object.assign(Object.assign({},l),{onPositiveClick:this.handlePositiveClick,onNegativeClick:this.handleNegativeClick}),t)}})}}),V=({title:t="批量分享链接",content:e=""})=>{J.success({title:t,style:{width:"800px"},content(){return a(_e,{type:"textarea",autosize:{minRows:8,maxRows:16},inputProps:{style:"white-space: nowrap;",class:"gkd_code"},value:e},null)},positiveText:"复制",onPositiveClick(){return navigator.clipboard.writeText(e).then(()=>{T.success("复制成功")}).catch(()=>{T.success("复制失败")}),!1}})},Ae=I(()=>{const t=K();return()=>a(fe,{checked:t.ignoreUploadWarn,onUpdateChecked:e=>{t.ignoreUploadWarn=e},focusable:!1},{default:()=>[v("不再提醒")]})}),W=async()=>{const t=K();if(await t.waitInit(),!t.ignoreUploadWarn)return new Promise((e,u)=>{J.warning({title:"生成分享链接须知",content(){return a("div",null,[a("div",null,[v("所有快照上传分享链接均为公开链接,任何人均可访问。")]),a("div",null,[v("请确保快照不包含隐私信息,请勿分享任何敏感信息。")]),a(Ae,{class:"mt-10px"},null)])},closable:!1,closeOnEsc:!1,maskClosable:!1,positiveText:"继续上传",negativeText:"取消分享",onPositiveClick:e,onNegativeClick:u})})},Ue={flex:"","gap-16px":""},$e=["href"],He=I({__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(t){const e=t,u=we(),{snapshotImportId:l,snapshotImageId:h}=he(),d=S(async()=>Fe(await _.getItem(e.snapshot.id))),P=S(async()=>Te(await _.getItem(e.snapshot.id))),r=F(()=>u.resolve({name:"snapshot",params:{snapshotId:e.snapshot.id}}).href),i=S(async()=>{await W();const s=await Ie(await _.getItem(e.snapshot.id));V({title:"分享链接",content:$(s)})}),g=S(async()=>{await W();const s=await be(await _.getItem(e.snapshot.id));V({title:"分享链接",content:location.origin+`/i/${s}`})}),w=async()=>{await _.removeItem(e.snapshot.id),await xe(500),e.onDelete()},k=async s=>navigator.clipboard.writeText(s).then(()=>{T.success("复制成功")}).catch(()=>{T.success("复制失败")});return(s,o)=>{const y=ye,f=z,E=Be,N=Z,Y=Se,G=Re;return x(),U("div",Ue,[s.showPreview?(x(),U("a",{key:0,flex:"",target:"_blank",href:p(r)},[a(f,{text:"",title:"查看"},{icon:n(()=>[a(y,{size:""},{default:n(()=>o[2]||(o[2]=[c("svg",{viewBox:"0 0 1024 1024"},[c("path",{d:"M549.973333 128 633.6 145.066667 474.026667 896 390.4 878.933333 549.973333 128M835.84 512 682.666667 358.826667 682.666667 238.08 956.586667 512 682.666667 785.493333 682.666667 664.746667 835.84 512M67.413333 512 341.333333 238.08 341.333333 358.826667 188.16 512 341.333333 664.746667 341.333333 785.493333 67.413333 512Z"})],-1)])),_:1})]),_:1})],8,$e)):B("",!0),s.showExport?(x(),C(N,{key:1},{trigger:n(()=>[a(f,{text:""},{icon:n(()=>[a(y,null,{default:n(()=>o[3]||(o[3]=[c("svg",{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},[c("g",{fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[c("path",{d:"M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2"}),c("path",{d:"M7 11l5 5l5-5"}),c("path",{d:"M12 4v12"})])],-1)])),_:1})]),_:1})]),default:n(()=>[a(E,{vertical:""},{default:n(()=>[a(f,{onClick:p(P).invoke,loading:p(P).loading},{default:n(()=>o[4]||(o[4]=[v(" 下载-快照 ")])),_:1},8,["onClick","loading"]),a(f,{onClick:p(d).invoke,loading:p(d).loading},{default:n(()=>o[5]||(o[5]=[v(" 下载-图片 ")])),_:1},8,["onClick","loading"])]),_:1})]),_:1})):B("",!0),s.showShare?(x(),C(N,{key:2},{trigger:n(()=>[a(f,{text:""},{icon:n(()=>[a(y,null,{default:n(()=>o[6]||(o[6]=[c("svg",{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},[c("path",{d:"M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81c1.66 0 3-1.34 3-3s-1.34-3-3-3s-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65c0 1.61 1.31 2.92 2.92 2.92s2.92-1.31 2.92-2.92s-1.31-2.92-2.92-2.92z",fill:"currentColor"})],-1)])),_:1})]),_:1})]),default:n(()=>[a(E,{vertical:""},{default:n(()=>[p(l)[s.snapshot.id]?(x(),C(f,{key:0,onClick:o[0]||(o[0]=ee=>k(p(ke)(p(l)[s.snapshot.id])))},{default:n(()=>o[7]||(o[7]=[v(" 复制链接-快照 ")])),_:1})):(x(),C(f,{key:1,onClick:p(g).invoke,loading:p(g).loading},{default:n(()=>o[8]||(o[8]=[v(" 生成链接-快照 ")])),_:1},8,["onClick","loading"])),p(h)[s.snapshot.id]?(x(),C(f,{key:2,onClick:o[1]||(o[1]=ee=>k(p($)(p(h)[s.snapshot.id])))},{default:n(()=>o[9]||(o[9]=[v(" 复制链接-图片 ")])),_:1})):(x(),C(f,{key:3,onClick:p(i).invoke,loading:p(i).loading},{default:n(()=>o[10]||(o[10]=[v(" 生成链接-图片 ")])),_:1},8,["onClick","loading"]))]),_:1})]),_:1})):B("",!0),s.showDelete?(x(),C(G,{key:3,onPositiveClick:w},{trigger:n(()=>[a(Y,null,{trigger:n(()=>[a(f,{text:""},{icon:n(()=>[a(y,null,{default:n(()=>o[11]||(o[11]=[c("svg",{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},[c("g",{fill:"none"},[c("path",{d:"M12 1.75a3.25 3.25 0 0 1 3.245 3.066L15.25 5h5.25a.75.75 0 0 1 .102 1.493L20.5 6.5h-.796l-1.28 13.02a2.75 2.75 0 0 1-2.561 2.474l-.176.006H8.313a2.75 2.75 0 0 1-2.714-2.307l-.023-.174L4.295 6.5H3.5a.75.75 0 0 1-.743-.648L2.75 5.75a.75.75 0 0 1 .648-.743L3.5 5h5.25A3.25 3.25 0 0 1 12 1.75zm6.197 4.75H5.802l1.267 12.872a1.25 1.25 0 0 0 1.117 1.122l.127.006h7.374c.6 0 1.109-.425 1.225-1.002l.02-.126L18.196 6.5zM13.75 9.25a.75.75 0 0 1 .743.648L14.5 10v7a.75.75 0 0 1-1.493.102L13 17v-7a.75.75 0 0 1 .75-.75zm-3.5 0a.75.75 0 0 1 .743.648L11 10v7a.75.75 0 0 1-1.493.102L9.5 17v-7a.75.75 0 0 1 .75-.75zm1.75-6a1.75 1.75 0 0 0-1.744 1.606L10.25 5h3.5A1.75 1.75 0 0 0 12 3.25z",fill:"currentColor"})])],-1)])),_:1})]),_:1})]),default:n(()=>[o[12]||(o[12]=v(" 删除快照 "))]),_:1})]),default:n(()=>[o[13]||(o[13]=v(" 是否删除快照? "))]),_:1})):B("",!0)])}}});export{He as _,V as s,W as w};
|
|
17
|
-
//# sourceMappingURL=ActionCard.vue_vue_type_script_setup_true_lang-
|
|
17
|
+
//# sourceMappingURL=ActionCard.vue_vue_type_script_setup_true_lang-oPon0Nur.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionCard.vue_vue_type_script_setup_true_lang-W3CeQLk1.js","sources":["../../node_modules/.pnpm/naive-ui@2.40.1_vue@3.5.11_typescript@5.6.3_/node_modules/naive-ui/es/popconfirm/styles/_common.mjs","../../node_modules/.pnpm/naive-ui@2.40.1_vue@3.5.11_typescript@5.6.3_/node_modules/naive-ui/es/popconfirm/styles/light.mjs","../../node_modules/.pnpm/naive-ui@2.40.1_vue@3.5.11_typescript@5.6.3_/node_modules/naive-ui/es/popconfirm/src/interface.mjs","../../node_modules/.pnpm/naive-ui@2.40.1_vue@3.5.11_typescript@5.6.3_/node_modules/naive-ui/es/popconfirm/src/PopconfirmPanel.mjs","../../node_modules/.pnpm/naive-ui@2.40.1_vue@3.5.11_typescript@5.6.3_/node_modules/naive-ui/es/popconfirm/src/styles/index.cssr.mjs","../../node_modules/.pnpm/naive-ui@2.40.1_vue@3.5.11_typescript@5.6.3_/node_modules/naive-ui/es/popconfirm/src/Popconfirm.mjs","../../src/utils/dialog.tsx","../../src/components/ActionCard.vue"],"sourcesContent":["export default {\n iconSize: '22px'\n};","import { buttonLight } from \"../../button/styles/index.mjs\";\nimport { popoverLight } from \"../../popover/styles/index.mjs\";\nimport { createTheme } from \"../../_mixins/index.mjs\";\nimport { commonLight } from \"../../_styles/common/index.mjs\";\nimport commonVars from \"./_common.mjs\";\nexport function self(vars) {\n const {\n fontSize,\n warningColor\n } = vars;\n return Object.assign(Object.assign({}, commonVars), {\n fontSize,\n iconColor: warningColor\n });\n}\nconst popconfirmLight = createTheme({\n name: 'Popconfirm',\n common: commonLight,\n peers: {\n Button: buttonLight,\n Popover: popoverLight\n },\n self\n});\nexport default popconfirmLight;","import { createInjectionKey } from \"../../_utils/index.mjs\";\nexport const popconfirmInjectionKey = createInjectionKey('n-popconfirm');","import { computed, defineComponent, h, inject, toRef } from 'vue';\nimport { NButton } from \"../../button/index.mjs\";\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 { 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 { NPopover } from \"../../popover/index.mjs\";\nimport { popoverBaseProps } from \"../../popover/src/Popover.mjs\";\nimport { call, keep, omit } from \"../../_utils/index.mjs\";\nimport { useConfig, useTheme } from \"../../_mixins/index.mjs\";\nimport { popconfirmLight } from \"../styles/index.mjs\";\nimport PopconfirmPanel, { panelPropKeys } from \"./PopconfirmPanel.mjs\";\nimport { popconfirmInjectionKey } from \"./interface.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 __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, omit(props, panelPropKeys, {\n theme: mergedTheme.peers.Popover,\n themeOverrides: mergedTheme.peerOverrides.Popover,\n internalExtraClass: ['popconfirm'],\n ref: 'popoverInstRef'\n }), {\n trigger: slots.activator || slots.trigger,\n default: () => {\n const panelProps = keep(props, panelPropKeys);\n return h(PopconfirmPanel, Object.assign(Object.assign({}, panelProps), {\n onPositiveClick: this.handlePositiveClick,\n onNegativeClick: this.handleNegativeClick\n }), slots);\n }\n });\n }\n});","import { dialog, message } from './discrete';\n\nexport const showTextDLg = ({ title = `批量分享链接`, content = '' }) => {\n dialog.success({\n title,\n style: {\n width: `800px`,\n },\n content() {\n return (\n <NInput\n type=\"textarea\"\n autosize={{\n minRows: 8,\n maxRows: 16,\n }}\n inputProps={{\n style: `white-space: nowrap;`,\n class: `gkd_code`,\n }}\n value={content}\n />\n );\n },\n positiveText: `复制`,\n onPositiveClick() {\n navigator.clipboard\n .writeText(content)\n .then(() => {\n message.success(`复制成功`);\n })\n .catch(() => {\n message.success(`复制失败`);\n });\n return false;\n },\n });\n};\n\nconst NoticeCheckbox = defineComponent(() => {\n const settingsStore = useSettingsStore();\n return () => {\n return (\n <NCheckbox\n checked={settingsStore.ignoreUploadWarn}\n onUpdateChecked={(value) => {\n settingsStore.ignoreUploadWarn = value;\n }}\n focusable={false}\n >\n 不再提醒\n </NCheckbox>\n );\n };\n});\n\nexport const waitShareAgree = async () => {\n const settingsStore = useSettingsStore();\n await settingsStore.waitInit();\n if (settingsStore.ignoreUploadWarn) return;\n return new Promise((resolve, reject) => {\n dialog.warning({\n title: '生成分享链接须知',\n content() {\n return (\n <div>\n <div>所有快照上传分享链接均为公开链接,任何人均可访问。</div>\n <div>请确保快照不包含隐私信息,请勿分享任何敏感信息。</div>\n <NoticeCheckbox class=\"mt-10px\" />\n </div>\n );\n },\n closable: false,\n closeOnEsc: false,\n maskClosable: false,\n positiveText: '继续上传',\n negativeText: '取消分享',\n onPositiveClick: resolve,\n onNegativeClick: reject,\n });\n });\n};\n","<script setup lang=\"tsx\">\nimport { showTextDLg, waitShareAgree } from '@/utils/dialog';\nimport { message } from '@/utils/discrete';\nimport {\n exportSnapshotAsImportId,\n exportSnapshotAsJpg,\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 type { Snapshot } from '@/utils/types';\nimport { getImportUrl, getImagUrl } from '@/utils/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 { snapshotImportId, snapshotImageId } = useStorageStore();\n\nconst exportJpg = useTask(async () =>\n exportSnapshotAsJpg((await snapshotStorage.getItem(props.snapshot.id))!),\n);\nconst exportZip = useTask(async () =>\n exportSnapshotAsZip((await snapshotStorage.getItem(props.snapshot.id))!),\n);\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(\n (await snapshotStorage.getItem(props.snapshot.id))!,\n );\n showTextDLg({\n title: `分享链接`,\n content: getImagUrl(imageId),\n });\n});\n\nconst exportZipUrl = useTask(async () => {\n await waitShareAgree();\n const importId = await exportSnapshotAsImportId(\n (await snapshotStorage.getItem(props.snapshot.id))!,\n );\n showTextDLg({\n title: `分享链接`,\n content: location.origin + `/i/${importId}`,\n });\n});\n\nconst deleteSnapshot = async () => {\n await snapshotStorage.removeItem(props.snapshot.id);\n await delay(500);\n props.onDelete();\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 <NIcon size=\"\">\n <svg viewBox=\"0 0 1024 1024\">\n <path\n d=\"M549.973333 128 633.6 145.066667 474.026667 896 390.4 878.933333 549.973333 128M835.84 512 682.666667 358.826667 682.666667 238.08 956.586667 512 682.666667 785.493333 682.666667 664.746667 835.84 512M67.413333 512 341.333333 238.08 341.333333 358.826667 188.16 512 341.333333 664.746667 341.333333 785.493333 67.413333 512Z\"\n ></path>\n </svg>\n </NIcon>\n </template>\n </NButton>\n </a>\n\n <NPopover v-if=\"showExport\">\n <template #trigger>\n <NButton text>\n <template #icon>\n <NIcon>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n viewBox=\"0 0 24 24\"\n >\n <g\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2\"></path>\n <path d=\"M7 11l5 5l5-5\"></path>\n <path d=\"M12 4v12\"></path>\n </g>\n </svg>\n </NIcon>\n </template>\n </NButton>\n </template>\n <NSpace vertical>\n <NButton @click=\"exportZip.invoke\" :loading=\"exportZip.loading\">\n 下载-快照\n </NButton>\n <NButton @click=\"exportJpg.invoke\" :loading=\"exportJpg.loading\">\n 下载-图片\n </NButton>\n </NSpace>\n </NPopover>\n\n <NPopover v-if=\"showShare\">\n <template #trigger>\n <NButton text>\n <template #icon>\n <NIcon>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n viewBox=\"0 0 24 24\"\n >\n <path\n d=\"M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81c1.66 0 3-1.34 3-3s-1.34-3-3-3s-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65c0 1.61 1.31 2.92 2.92 2.92s2.92-1.31 2.92-2.92s-1.31-2.92-2.92-2.92z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </NIcon>\n </template>\n </NButton>\n </template>\n <NSpace vertical>\n <NButton\n v-if=\"snapshotImportId[snapshot.id]\"\n @click=\"copy(getImportUrl(snapshotImportId[snapshot.id]))\"\n >\n 复制链接-快照\n </NButton>\n <NButton\n v-else\n @click=\"exportZipUrl.invoke\"\n :loading=\"exportZipUrl.loading\"\n >\n 生成链接-快照\n </NButton>\n <NButton\n v-if=\"snapshotImageId[snapshot.id]\"\n @click=\"copy(getImagUrl(snapshotImageId[snapshot.id]))\"\n >\n 复制链接-图片\n </NButton>\n <NButton\n v-else\n @click=\"exportJpgUrl.invoke\"\n :loading=\"exportJpgUrl.loading\"\n >\n 生成链接-图片\n </NButton>\n </NSpace>\n </NPopover>\n\n <NPopconfirm v-if=\"showDelete\" @positive-click=\"deleteSnapshot\">\n 是否删除快照?\n <template #trigger>\n <NTooltip>\n <template #trigger>\n <NButton text>\n <template #icon>\n <NIcon>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n viewBox=\"0 0 24 24\"\n >\n <g fill=\"none\">\n <path\n d=\"M12 1.75a3.25 3.25 0 0 1 3.245 3.066L15.25 5h5.25a.75.75 0 0 1 .102 1.493L20.5 6.5h-.796l-1.28 13.02a2.75 2.75 0 0 1-2.561 2.474l-.176.006H8.313a2.75 2.75 0 0 1-2.714-2.307l-.023-.174L4.295 6.5H3.5a.75.75 0 0 1-.743-.648L2.75 5.75a.75.75 0 0 1 .648-.743L3.5 5h5.25A3.25 3.25 0 0 1 12 1.75zm6.197 4.75H5.802l1.267 12.872a1.25 1.25 0 0 0 1.117 1.122l.127.006h7.374c.6 0 1.109-.425 1.225-1.002l.02-.126L18.196 6.5zM13.75 9.25a.75.75 0 0 1 .743.648L14.5 10v7a.75.75 0 0 1-1.493.102L13 17v-7a.75.75 0 0 1 .75-.75zm-3.5 0a.75.75 0 0 1 .743.648L11 10v7a.75.75 0 0 1-1.493.102L9.5 17v-7a.75.75 0 0 1 .75-.75zm1.75-6a1.75 1.75 0 0 0-1.744 1.606L10.25 5h3.5A1.75 1.75 0 0 0 12 3.25z\"\n fill=\"currentColor\"\n ></path>\n </g>\n </svg>\n </NIcon>\n </template>\n </NButton>\n </template>\n 删除快照\n </NTooltip>\n </template>\n </NPopconfirm>\n </div>\n</template>\n"],"names":["commonVars","self","vars","fontSize","warningColor","popconfirmLight","createTheme","commonLight","buttonLight","popoverLight","popconfirmInjectionKey","createInjectionKey","panelProps","panelPropKeys","keysOf","PopconfirmPanel","defineComponent","props","localeRef","useLocale","inlineThemeDisabled","useConfig","mergedClsPrefixRef","mergedThemeRef","popconfirmProps","inject","cssVarsRef","computed","cubicBezierEaseInOut","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_5","themeRef","popoverInstRef","ref","handlePositiveClick","onPositiveClick","onUpdateShow","value","call","handleNegativeClick","onNegativeClick","provide","slots","mergedTheme","NPopover","omit","keep","showTextDLg","title","content","dialog","success","width","_createVNode","_resolveComponent","minRows","maxRows","class","positiveText","navigator","clipboard","writeText","then","message","catch","NoticeCheckbox","settingsStore","useSettingsStore","ignoreUploadWarn","default","_createTextVNode","waitShareAgree","waitInit","Promise","resolve","reject","warning","closable","closeOnEsc","maskClosable","negativeText","__props","router","useRouter","snapshotImportId","snapshotImageId","useStorageStore","exportJpg","useTask","exportSnapshotAsJpg","snapshotStorage","getItem","snapshot","id","exportZip","exportSnapshotAsZip","previewUrl","name","params","snapshotId","href","exportJpgUrl","imageId","exportSnapshotAsImageId","getImagUrl","exportZipUrl","importId","exportSnapshotAsImportId","location","origin","deleteSnapshot","removeItem","delay","onDelete","copy"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5]}
|
|
1
|
+
{"version":3,"file":"ActionCard.vue_vue_type_script_setup_true_lang-oPon0Nur.js","sources":["../../node_modules/.pnpm/naive-ui@2.40.1_vue@3.5.11_typescript@5.6.3_/node_modules/naive-ui/es/popconfirm/styles/_common.mjs","../../node_modules/.pnpm/naive-ui@2.40.1_vue@3.5.11_typescript@5.6.3_/node_modules/naive-ui/es/popconfirm/styles/light.mjs","../../node_modules/.pnpm/naive-ui@2.40.1_vue@3.5.11_typescript@5.6.3_/node_modules/naive-ui/es/popconfirm/src/interface.mjs","../../node_modules/.pnpm/naive-ui@2.40.1_vue@3.5.11_typescript@5.6.3_/node_modules/naive-ui/es/popconfirm/src/PopconfirmPanel.mjs","../../node_modules/.pnpm/naive-ui@2.40.1_vue@3.5.11_typescript@5.6.3_/node_modules/naive-ui/es/popconfirm/src/styles/index.cssr.mjs","../../node_modules/.pnpm/naive-ui@2.40.1_vue@3.5.11_typescript@5.6.3_/node_modules/naive-ui/es/popconfirm/src/Popconfirm.mjs","../../src/utils/dialog.tsx","../../src/components/ActionCard.vue"],"sourcesContent":["export default {\n iconSize: '22px'\n};","import { buttonLight } from \"../../button/styles/index.mjs\";\nimport { popoverLight } from \"../../popover/styles/index.mjs\";\nimport { createTheme } from \"../../_mixins/index.mjs\";\nimport { commonLight } from \"../../_styles/common/index.mjs\";\nimport commonVars from \"./_common.mjs\";\nexport function self(vars) {\n const {\n fontSize,\n warningColor\n } = vars;\n return Object.assign(Object.assign({}, commonVars), {\n fontSize,\n iconColor: warningColor\n });\n}\nconst popconfirmLight = createTheme({\n name: 'Popconfirm',\n common: commonLight,\n peers: {\n Button: buttonLight,\n Popover: popoverLight\n },\n self\n});\nexport default popconfirmLight;","import { createInjectionKey } from \"../../_utils/index.mjs\";\nexport const popconfirmInjectionKey = createInjectionKey('n-popconfirm');","import { computed, defineComponent, h, inject, toRef } from 'vue';\nimport { NButton } from \"../../button/index.mjs\";\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 { 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 { NPopover } from \"../../popover/index.mjs\";\nimport { popoverBaseProps } from \"../../popover/src/Popover.mjs\";\nimport { call, keep, omit } from \"../../_utils/index.mjs\";\nimport { useConfig, useTheme } from \"../../_mixins/index.mjs\";\nimport { popconfirmLight } from \"../styles/index.mjs\";\nimport PopconfirmPanel, { panelPropKeys } from \"./PopconfirmPanel.mjs\";\nimport { popconfirmInjectionKey } from \"./interface.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 __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, omit(props, panelPropKeys, {\n theme: mergedTheme.peers.Popover,\n themeOverrides: mergedTheme.peerOverrides.Popover,\n internalExtraClass: ['popconfirm'],\n ref: 'popoverInstRef'\n }), {\n trigger: slots.activator || slots.trigger,\n default: () => {\n const panelProps = keep(props, panelPropKeys);\n return h(PopconfirmPanel, Object.assign(Object.assign({}, panelProps), {\n onPositiveClick: this.handlePositiveClick,\n onNegativeClick: this.handleNegativeClick\n }), slots);\n }\n });\n }\n});","import { dialog, message } from './discrete';\n\nexport const showTextDLg = ({ title = `批量分享链接`, content = '' }) => {\n dialog.success({\n title,\n style: {\n width: `800px`,\n },\n content() {\n return (\n <NInput\n type=\"textarea\"\n autosize={{\n minRows: 8,\n maxRows: 16,\n }}\n inputProps={{\n style: `white-space: nowrap;`,\n class: `gkd_code`,\n }}\n value={content}\n />\n );\n },\n positiveText: `复制`,\n onPositiveClick() {\n navigator.clipboard\n .writeText(content)\n .then(() => {\n message.success(`复制成功`);\n })\n .catch(() => {\n message.success(`复制失败`);\n });\n return false;\n },\n });\n};\n\nconst NoticeCheckbox = defineComponent(() => {\n const settingsStore = useSettingsStore();\n return () => {\n return (\n <NCheckbox\n checked={settingsStore.ignoreUploadWarn}\n onUpdateChecked={(value) => {\n settingsStore.ignoreUploadWarn = value;\n }}\n focusable={false}\n >\n 不再提醒\n </NCheckbox>\n );\n };\n});\n\nexport const waitShareAgree = async () => {\n const settingsStore = useSettingsStore();\n await settingsStore.waitInit();\n if (settingsStore.ignoreUploadWarn) return;\n return new Promise((resolve, reject) => {\n dialog.warning({\n title: '生成分享链接须知',\n content() {\n return (\n <div>\n <div>所有快照上传分享链接均为公开链接,任何人均可访问。</div>\n <div>请确保快照不包含隐私信息,请勿分享任何敏感信息。</div>\n <NoticeCheckbox class=\"mt-10px\" />\n </div>\n );\n },\n closable: false,\n closeOnEsc: false,\n maskClosable: false,\n positiveText: '继续上传',\n negativeText: '取消分享',\n onPositiveClick: resolve,\n onNegativeClick: reject,\n });\n });\n};\n","<script setup lang=\"tsx\">\nimport { showTextDLg, waitShareAgree } from '@/utils/dialog';\nimport { message } from '@/utils/discrete';\nimport {\n exportSnapshotAsImportId,\n exportSnapshotAsJpg,\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 type { Snapshot } from '@/utils/types';\nimport { getImportUrl, getImagUrl } from '@/utils/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 { snapshotImportId, snapshotImageId } = useStorageStore();\n\nconst exportJpg = useTask(async () =>\n exportSnapshotAsJpg((await snapshotStorage.getItem(props.snapshot.id))!),\n);\nconst exportZip = useTask(async () =>\n exportSnapshotAsZip((await snapshotStorage.getItem(props.snapshot.id))!),\n);\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(\n (await snapshotStorage.getItem(props.snapshot.id))!,\n );\n showTextDLg({\n title: `分享链接`,\n content: getImagUrl(imageId),\n });\n});\n\nconst exportZipUrl = useTask(async () => {\n await waitShareAgree();\n const importId = await exportSnapshotAsImportId(\n (await snapshotStorage.getItem(props.snapshot.id))!,\n );\n showTextDLg({\n title: `分享链接`,\n content: location.origin + `/i/${importId}`,\n });\n});\n\nconst deleteSnapshot = async () => {\n await snapshotStorage.removeItem(props.snapshot.id);\n await delay(500);\n props.onDelete();\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 <NIcon size=\"\">\n <svg viewBox=\"0 0 1024 1024\">\n <path\n d=\"M549.973333 128 633.6 145.066667 474.026667 896 390.4 878.933333 549.973333 128M835.84 512 682.666667 358.826667 682.666667 238.08 956.586667 512 682.666667 785.493333 682.666667 664.746667 835.84 512M67.413333 512 341.333333 238.08 341.333333 358.826667 188.16 512 341.333333 664.746667 341.333333 785.493333 67.413333 512Z\"\n ></path>\n </svg>\n </NIcon>\n </template>\n </NButton>\n </a>\n\n <NPopover v-if=\"showExport\">\n <template #trigger>\n <NButton text>\n <template #icon>\n <NIcon>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n viewBox=\"0 0 24 24\"\n >\n <g\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2\"></path>\n <path d=\"M7 11l5 5l5-5\"></path>\n <path d=\"M12 4v12\"></path>\n </g>\n </svg>\n </NIcon>\n </template>\n </NButton>\n </template>\n <NSpace vertical>\n <NButton @click=\"exportZip.invoke\" :loading=\"exportZip.loading\">\n 下载-快照\n </NButton>\n <NButton @click=\"exportJpg.invoke\" :loading=\"exportJpg.loading\">\n 下载-图片\n </NButton>\n </NSpace>\n </NPopover>\n\n <NPopover v-if=\"showShare\">\n <template #trigger>\n <NButton text>\n <template #icon>\n <NIcon>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n viewBox=\"0 0 24 24\"\n >\n <path\n d=\"M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81c1.66 0 3-1.34 3-3s-1.34-3-3-3s-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65c0 1.61 1.31 2.92 2.92 2.92s2.92-1.31 2.92-2.92s-1.31-2.92-2.92-2.92z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </NIcon>\n </template>\n </NButton>\n </template>\n <NSpace vertical>\n <NButton\n v-if=\"snapshotImportId[snapshot.id]\"\n @click=\"copy(getImportUrl(snapshotImportId[snapshot.id]))\"\n >\n 复制链接-快照\n </NButton>\n <NButton\n v-else\n @click=\"exportZipUrl.invoke\"\n :loading=\"exportZipUrl.loading\"\n >\n 生成链接-快照\n </NButton>\n <NButton\n v-if=\"snapshotImageId[snapshot.id]\"\n @click=\"copy(getImagUrl(snapshotImageId[snapshot.id]))\"\n >\n 复制链接-图片\n </NButton>\n <NButton\n v-else\n @click=\"exportJpgUrl.invoke\"\n :loading=\"exportJpgUrl.loading\"\n >\n 生成链接-图片\n </NButton>\n </NSpace>\n </NPopover>\n\n <NPopconfirm v-if=\"showDelete\" @positive-click=\"deleteSnapshot\">\n 是否删除快照?\n <template #trigger>\n <NTooltip>\n <template #trigger>\n <NButton text>\n <template #icon>\n <NIcon>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n viewBox=\"0 0 24 24\"\n >\n <g fill=\"none\">\n <path\n d=\"M12 1.75a3.25 3.25 0 0 1 3.245 3.066L15.25 5h5.25a.75.75 0 0 1 .102 1.493L20.5 6.5h-.796l-1.28 13.02a2.75 2.75 0 0 1-2.561 2.474l-.176.006H8.313a2.75 2.75 0 0 1-2.714-2.307l-.023-.174L4.295 6.5H3.5a.75.75 0 0 1-.743-.648L2.75 5.75a.75.75 0 0 1 .648-.743L3.5 5h5.25A3.25 3.25 0 0 1 12 1.75zm6.197 4.75H5.802l1.267 12.872a1.25 1.25 0 0 0 1.117 1.122l.127.006h7.374c.6 0 1.109-.425 1.225-1.002l.02-.126L18.196 6.5zM13.75 9.25a.75.75 0 0 1 .743.648L14.5 10v7a.75.75 0 0 1-1.493.102L13 17v-7a.75.75 0 0 1 .75-.75zm-3.5 0a.75.75 0 0 1 .743.648L11 10v7a.75.75 0 0 1-1.493.102L9.5 17v-7a.75.75 0 0 1 .75-.75zm1.75-6a1.75 1.75 0 0 0-1.744 1.606L10.25 5h3.5A1.75 1.75 0 0 0 12 3.25z\"\n fill=\"currentColor\"\n ></path>\n </g>\n </svg>\n </NIcon>\n </template>\n </NButton>\n </template>\n 删除快照\n </NTooltip>\n </template>\n </NPopconfirm>\n </div>\n</template>\n"],"names":["commonVars","self","vars","fontSize","warningColor","popconfirmLight","createTheme","commonLight","buttonLight","popoverLight","popconfirmInjectionKey","createInjectionKey","panelProps","panelPropKeys","keysOf","PopconfirmPanel","defineComponent","props","localeRef","useLocale","inlineThemeDisabled","useConfig","mergedClsPrefixRef","mergedThemeRef","popconfirmProps","inject","cssVarsRef","computed","cubicBezierEaseInOut","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_5","themeRef","popoverInstRef","ref","handlePositiveClick","onPositiveClick","onUpdateShow","value","call","handleNegativeClick","onNegativeClick","provide","slots","mergedTheme","NPopover","omit","keep","showTextDLg","title","content","dialog","success","width","_createVNode","_resolveComponent","minRows","maxRows","class","positiveText","navigator","clipboard","writeText","then","message","catch","NoticeCheckbox","settingsStore","useSettingsStore","ignoreUploadWarn","default","_createTextVNode","waitShareAgree","waitInit","Promise","resolve","reject","warning","closable","closeOnEsc","maskClosable","negativeText","__props","router","useRouter","snapshotImportId","snapshotImageId","useStorageStore","exportJpg","useTask","exportSnapshotAsJpg","snapshotStorage","getItem","snapshot","id","exportZip","exportSnapshotAsZip","previewUrl","name","params","snapshotId","href","exportJpgUrl","imageId","exportSnapshotAsImageId","getImagUrl","exportZipUrl","importId","exportSnapshotAsImportId","location","origin","deleteSnapshot","removeItem","delay","onDelete","copy"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{A as _,aM as u,h as ie,B as le,aP as re,U as pe,D as ue,C as G,F as ce,G as de,H as D,I as J,K as a,L as l,M as s,T as O,J as d,Q as y,O as me,P as K,R as ge,S as fe,aE as ve,X as $,_ as we,Y as ke}from"./index-
|
|
1
|
+
import{A as _,aM as u,h as ie,B as le,aP as re,U as pe,D as ue,C as G,F as ce,G as de,H as D,I as J,K as a,L as l,M as s,T as O,J as d,Q as y,O as me,P as K,R as ge,S as fe,aE as ve,X as $,_ as we,Y as ke}from"./index-DstKhbDa.js";import{e as he,a as V,b as z,p as ye}from"./snapshot-BPq4m02d.js";import{d as Se,e as H,l as be}from"./error-DiKELM7X.js";import{u as _e,a as xe,_ as Ce}from"./table-C8_5JxaC.js";import{u as B,z as Ne,b as Q,_ as Ie,N as Re,a as Pe}from"./dayjs.min-BtHCNtMU.js";const ze=q=>{const x=_(q),o=async(n,v={})=>{var T;if(!x.value)throw new Error("origin must exist");const N=new URL("/api/"+n,x.value);Object.entries(v.query||{}).forEach(([w,S])=>{S!==void 0&&N.searchParams.set(w,String(S))});const m=await he(N,v.init).catch(w=>{throw u.error("网络错误:/"+n),w});if(!m.ok)throw u.error("接口错误:/"+n+":"+m.status),m;if((T=m.headers.get("Content-Type"))!=null&&T.includes("application/json")){const w=await m.clone().json();if(w.__error)throw u.error(w.message),m}return m},g=async(...n)=>await(await o(...n)).json(),c=async(...n)=>await(await o(...n)).blob(),f=async(...n)=>await(await o(...n)).arrayBuffer();return{origin:x,api:{device:async()=>g("device"),snapshot:async n=>g("snapshot",{query:n}),screenshot:async n=>f("screenshot",{query:n}),captureSnapshot:async()=>g("captureSnapshot"),snapshots:async()=>g("snapshots"),updateSubsApps:async n=>c("updateSubsApps",{init:{method:"POST",body:JSON.stringify(n),headers:{"Content-Type":"application/json"}}}),updateSubscription:async n=>c("updateSubscription",{init:{method:"POST",body:JSON.stringify({...n,id:-1,name:"内存订阅",version:0}),headers:{"Content-Type":"application/json"}}}),execSelector:async n=>g("execSelector",{init:{method:"POST",body:JSON.stringify({...n,value:n.selector}),headers:{"Content-Type":"application/json"}}})}}},Be={flex:"","gap-10px":"","flex-items-center":""},Te={flex:"","flex-col":"","p-10px":"","gap-10px":"","h-full":""},Ue={flex:"","items-center":"","gap-24px":""},Ae={"whitespace-nowrap":""},Fe=ie({__name:"DevicePage",setup(q){const x=ve(),{api:o,origin:g}=ze(),c=Se("device_link",""),f=_(),C=B(async()=>{c.value&&(g.value=H(()=>new URL(c.value.trim()),()=>"非法设备地址").origin,c.value=g.value,f.value=await o.device())});le(async()=>{await re(500),pe(c.value)&&C.invoke()});const n=_([]);ue(async()=>{if(!f.value)return;document.title="已连接 "+f.value.manufacturer;const e=await o.snapshots();e.sort((t,p)=>p.id-t.id),n.value=e,R.value=""});const v=B(async()=>{const e=await o.captureSnapshot(),t=await o.screenshot({id:e.id});await V.setItem(e.id,e),await z.setItem(e.id,t),u.success("保存快照成功");const p=await o.snapshots();p.sort((h,P)=>P.id-h.id),n.value=p}),N=B(async()=>{const e=(await o.snapshots()).map(r=>r.id),t=new Set((await z.keys()).map(r=>parseInt(r))),p=e.filter(r=>!t.has(r));if(p.length==0){u.success("没有新记录可导入");return}let h=0;const P=ye(3);await Promise.all(p.map(r=>P(async()=>{const[L,F]=await Promise.all([o.snapshot({id:r}),o.screenshot({id:r})]);L.nodes&&(await Promise.all([V.setItem(r,L),z.setItem(r,F)]),h++)}))),u.success(`导入${h}条新记录`)}),{activityIdCol:m,appIdCol:T,appNameCol:w,ctimeCol:S,appVersionCodeCol:W,appVersionNameCol:X,resetColWidth:Y}=_e(),Z=e=>{e.columnKey==S.key&&(S.sortOrder=e.order)},E=Ne(async e=>{if(await V.hasItem(e.id)||await V.setItem(e.id,await o.snapshot({id:e.id})),!await z.hasItem(e.id)){const t=await o.screenshot({id:e.id});await z.setItem(e.id,t)}window.open(x.resolve({name:"snapshot",params:{snapshotId:e.id}}).href)},e=>e.id),ee=[S,w,T,W,X,m,{key:"actions",title:"操作",fixed:"right",width:"120px",render(e){return a(Q,{size:"small"},{default:()=>[a($,{size:"small",loading:E.loading[e.id],onClick:()=>E.invoke(e)},{default:()=>[y("查看")]})]})}}],I=G({page:1,pageSize:50,showSizePicker:!0,pageSizes:[50,100],onChange:e=>{I.page=e},onUpdatePageSize:e=>{I.pageSize=e,I.page=1}});ce(I,Y);const U=_(!1),R=_(""),j=B(async()=>{const e=H(()=>be.parse(R.value.trim()));if(e){if(e.categories||e.globalGroups||e.apps)await o.updateSubscription(e);else if(typeof e.id=="string")await o.updateSubscription({apps:[e]});else if(Array.isArray(e)&&typeof e[0].id=="string")await o.updateSubscription({apps:e});else if(typeof e.key=="number")await o.updateSubscription({globalGroups:[e]});else if(Array.isArray(e)&&typeof e[0].key=="number")await o.updateSubscription({globalGroups:e});else{u.error("无法识别的订阅文本");return}u.success("修改成功")}}),A=_(!1),te=[{label:"仅查询",value:void 0},{value:"click",label:"click"},{value:"clickNode",label:"clickNode"},{value:"clickCenter",label:"clickCenter"},{value:"back",label:"back"},{value:"longClick",label:"longClick"},{value:"longClickNode",label:"longClickNode"},{value:"longClickCenter",label:"longClickCenter"}],k=G({selector:"",action:"click",quickFind:!1}),M=B(async()=>{const e=await o.execSelector({...k,fastQuery:k.quickFind});if(e.message){u.success("操作成功:"+e.message);return}e.action?u.success((e.result?"操作成功:":"操作失败")+e.action):!e.action&&e.result&&u.success("查询成功")}),se=`
|
|
2
2
|
请输入订阅文本(JSON5语法):
|
|
3
3
|
示例1-更新单个应用的规则:
|
|
4
4
|
{
|
|
@@ -46,4 +46,4 @@ import{A as _,aM as u,h as ie,B as le,aP as re,U as pe,D as ue,C as G,F as ce,G
|
|
|
46
46
|
categories: [],
|
|
47
47
|
}
|
|
48
48
|
`.trim();return(e,t)=>{const p=Ie,h=we,P=ke,r=Q,L=xe,F=Re,b=$,ne=de("RouterLink"),oe=Pe,ae=Ce;return D(),J(K,null,[a(h,{show:s(U),"onUpdate:show":t[1]||(t[1]=i=>O(U)?U.value=i:null),preset:"dialog",style:{width:"800px"},title:"修改内存订阅","positive-text":"确认",positiveButtonProps:{loading:s(j).loading,onClick(){s(j).invoke()}}},{default:l(()=>[a(p,{value:s(R),"onUpdate:value":t[0]||(t[0]=i=>O(R)?R.value=i:null),disabled:s(j).loading,type:"textarea",class:"gkd_code",autosize:{minRows:20,maxRows:25},placeholder:s(se)},null,8,["value","disabled","placeholder"])]),_:1},8,["show","positiveButtonProps"]),a(h,{show:s(A),"onUpdate:show":t[5]||(t[5]=i=>O(A)?A.value=i:null),preset:"dialog",style:{width:"800px"},title:"执行选择器","positive-text":"确认",positiveButtonProps:{loading:s(M).loading,onClick(){s(M).invoke()}}},{default:l(()=>[a(p,{value:s(k).selector,"onUpdate:value":t[2]||(t[2]=i=>s(k).selector=i),disabled:s(M).loading,type:"textarea",class:"gkd_code",autosize:{minRows:4,maxRows:10},placeholder:"请输入合法的选择器"},null,8,["value","disabled"]),t[12]||(t[12]=d("div",{"h-15px":""},null,-1)),a(r,null,{default:l(()=>[a(P,{checked:s(k).quickFind,"onUpdate:checked":t[3]||(t[3]=i=>s(k).quickFind=i)},{default:l(()=>t[9]||(t[9]=[y(" 快速查找 ")])),_:1},8,["checked"]),t[10]||(t[10]=d("a",{href:"https://gkd.li/api/interfaces/RawCommonProps.html#quickfind",target:"_blank",rel:"noopener noreferrer"}," 查找说明 ",-1))]),_:1}),t[13]||(t[13]=d("div",{"h-10px":""},null,-1)),d("div",Be,[a(L,{value:s(k).action,"onUpdate:value":t[4]||(t[4]=i=>s(k).action=i),options:te,class:"w-150px"},null,8,["value"]),t[11]||(t[11]=d("a",{href:"https://gkd.li/api/interfaces/RawRuleProps#action",target:"_blank",rel:"noopener noreferrer"}," 操作说明 ",-1))])]),_:1},8,["show","positiveButtonProps"]),d("div",Te,[d("div",Ue,[a(ne,{to:"/",flex:"","ml-12px":"",title:"首页"},{default:l(()=>[a(b,{text:""},{icon:l(()=>[a(F,{size:24},{default:l(()=>t[14]||(t[14]=[d("svg",{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 32 32"},[d("path",{d:"M16.612 2.214a1.01 1.01 0 0 0-1.242 0L1 13.419l1.243 1.572L4 13.621V26a2.004 2.004 0 0 0 2 2h20a2.004 2.004 0 0 0 2-2V13.63L29.757 15L31 13.428zM18 26h-4v-8h4zm2 0v-8a2.002 2.002 0 0 0-2-2h-4a2.002 2.002 0 0 0-2 2v8H6V12.062l10-7.79l10 7.8V26z",fill:"currentColor"})],-1)])),_:1})]),_:1})]),_:1}),a(oe,null,{default:l(()=>[a(p,{value:s(c),"onUpdate:value":t[6]||(t[6]=i=>O(c)?c.value=i:null),placeholder:"请输入设备地址",style:{width:"200px"},onKeyup:me(s(C).invoke,["enter"])},null,8,["value","onKeyup"]),a(b,{onClick:s(C).invoke,loading:s(C).loading},{default:l(()=>t[15]||(t[15]=[y(" 刷新连接 ")])),_:1},8,["onClick","loading"])]),_:1}),s(f)?(D(),J(K,{key:0},[d("div",Ae,ge(`已连接 ${s(f).manufacturer} Android ${s(f).release}`),1),a(b,{onClick:s(v).invoke,loading:s(v).loading},{default:l(()=>t[16]||(t[16]=[y(" 快照 ")])),_:1},8,["onClick","loading"]),a(b,{onClick:s(N).invoke,loading:s(N).loading},{default:l(()=>t[17]||(t[17]=[y(" 下载设备所有快照 ")])),_:1},8,["onClick","loading"]),a(b,{onClick:t[7]||(t[7]=i=>U.value=!0)},{default:l(()=>t[18]||(t[18]=[y(" 修改内存订阅 ")])),_:1}),a(b,{onClick:t[8]||(t[8]=i=>A.value=!0)},{default:l(()=>t[19]||(t[19]=[y(" 执行选择器 ")])),_:1})],64)):fe("",!0)]),a(ae,{striped:"",flexHeight:"",data:s(n),columns:ee,pagination:s(I),"onUpdate:sorter":Z,size:"small",class:"flex-1",scrollX:1200},null,8,["data","pagination"])])],64)}}});export{Fe as default};
|
|
49
|
-
//# sourceMappingURL=DevicePage-
|
|
49
|
+
//# sourceMappingURL=DevicePage-BoHW8n5e.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DevicePage-DKp5Muez.js","sources":["../../src/utils/api.ts","../../src/views/DevicePage.vue"],"sourcesContent":["import { message } from './discrete';\nimport { enhanceFetch } from './fetch';\nimport type { Device, RpcError, Snapshot } from './types';\n\ntype RpcOptions = {\n query?: Record<string, unknown>;\n init?: RequestInit;\n};\n\nexport const useDeviceApi = (initOrigin?: string) => {\n const origin = shallowRef(initOrigin);\n const rpc = async (rpcName: string, options: RpcOptions = {}) => {\n if (!origin.value) {\n throw new Error(`origin must exist`);\n }\n const u = new URL(`/api/` + rpcName, origin.value);\n Object.entries(options.query || {}).forEach(([key, value]) => {\n if (value === undefined) return;\n u.searchParams.set(key, String(value));\n });\n const response = await enhanceFetch(u, options.init).catch((e) => {\n message.error(`网络错误:/` + rpcName);\n throw e;\n });\n if (!response.ok) {\n message.error(`接口错误:/` + rpcName + `:` + response.status);\n throw response;\n }\n if (response.headers.get(`Content-Type`)?.includes(`application/json`)) {\n const error = (await response.clone().json()) as RpcError;\n if (error.__error) {\n message.error(error.message);\n throw response;\n }\n }\n return response;\n };\n const jsonRpc = async <T>(...args: Parameters<typeof rpc>) => {\n const response = await rpc(...args);\n return (await response.json()) as T;\n };\n const blobRpc = async (...args: Parameters<typeof rpc>) => {\n const response = await rpc(...args);\n return await response.blob();\n };\n const arrayBufferRpc = async (...args: Parameters<typeof rpc>) => {\n const response = await rpc(...args);\n return await response.arrayBuffer();\n };\n const api = {\n device: async () => jsonRpc<Device>(`device`),\n snapshot: async (query?: { id?: string | number }) => {\n return jsonRpc<Snapshot>(`snapshot`, { query });\n },\n screenshot: async (query: { id: string | number }) => {\n return arrayBufferRpc(`screenshot`, { query });\n },\n captureSnapshot: async () => {\n return jsonRpc<Snapshot>(`captureSnapshot`);\n },\n snapshots: async () => {\n return jsonRpc<Snapshot[]>(`snapshots`);\n },\n updateSubsApps: async (data: unknown[]) => {\n return blobRpc(`updateSubsApps`, {\n init: {\n method: 'POST',\n body: JSON.stringify(data),\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n });\n },\n updateSubscription: async (data: any) => {\n return blobRpc(`updateSubscription`, {\n init: {\n method: 'POST',\n body: JSON.stringify({\n ...data,\n id: -1,\n name: '内存订阅',\n version: 0,\n }),\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n });\n },\n execSelector: async (data: {\n selector: string;\n action?: string;\n quickFind?: boolean;\n fastQuery?: boolean;\n }) => {\n return jsonRpc<{ message: string; action: string; result: boolean }>(\n `execSelector`,\n {\n init: {\n method: 'POST',\n // value 是旧版本的选择器\n body: JSON.stringify({ ...data, value: data.selector }),\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n },\n );\n },\n };\n return { origin, api };\n};\n","<script setup lang=\"tsx\">\nimport { useDeviceApi } from '@/utils/api';\nimport { toValidURL } from '@/utils/check';\nimport { message } from '@/utils/discrete';\nimport { errorWrap } from '@/utils/error';\nimport { delay } from '@/utils/others';\nimport { screenshotStorage, snapshotStorage } from '@/utils/snapshot';\nimport { useSnapshotColumns } from '@/utils/table';\nimport { useBatchTask, useTask } from '@/utils/task';\nimport type { Device, Snapshot } from '@/utils/types';\nimport type { DataTableColumns, PaginationProps } from 'naive-ui';\nimport type { SortState } from 'naive-ui/es/data-table/src/interface';\nimport pLimit from 'p-limit';\n\nconst router = useRouter();\nconst { api, origin } = useDeviceApi();\nconst link = useStorage(`device_link`, ``);\nconst device = shallowRef<Device>();\nconst connect = useTask(async () => {\n if (!link.value) return;\n origin.value = errorWrap(\n () => new URL(link.value.trim()),\n () => `非法设备地址`,\n ).origin;\n link.value = origin.value;\n device.value = await api.device();\n});\nonMounted(async () => {\n await delay(500);\n if (toValidURL(link.value)) {\n connect.invoke();\n }\n});\n\nconst snapshots = shallowRef<Snapshot[]>([]);\nwatchEffect(async () => {\n if (!device.value) return;\n document.title = `已连接 ` + device.value.manufacturer;\n const result = await api.snapshots();\n result.sort((a, b) => b.id - a.id);\n snapshots.value = result;\n subsText.value = '';\n});\n\nconst captureSnapshot = useTask(async () => {\n const snapshot = await api.captureSnapshot();\n const screenshot = await api.screenshot({ 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.snapshots();\n result.sort((a, b) => b.id - a.id);\n snapshots.value = result;\n});\nconst downloadAllSnapshot = useTask(async () => {\n const snapshotIds = (await api.snapshots()).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 r = 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.snapshot({ id: snapshotId }),\n api.screenshot({ 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 r++;\n }),\n ),\n );\n message.success(`导入${r}条新记录`);\n});\n\nconst {\n activityIdCol,\n appIdCol,\n appNameCol,\n ctimeCol,\n appVersionCodeCol,\n appVersionNameCol,\n resetColWidth,\n} = useSnapshotColumns();\nconst handleSorterChange = (sorter: SortState) => {\n if (sorter.columnKey == ctimeCol.key) {\n ctimeCol.sortOrder = sorter.order;\n }\n};\nconst previewSnapshot = useBatchTask(\n async (row: Snapshot) => {\n if (!(await snapshotStorage.hasItem(row.id))) {\n await snapshotStorage.setItem(row.id, await api.snapshot({ id: row.id }));\n }\n if (!(await screenshotStorage.hasItem(row.id))) {\n const bf = await api.screenshot({ id: row.id });\n await screenshotStorage.setItem(row.id, bf);\n }\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 columns: DataTableColumns<Snapshot> = [\n ctimeCol,\n appNameCol,\n appIdCol,\n appVersionCodeCol,\n appVersionNameCol,\n activityIdCol,\n {\n key: `actions`,\n title: `操作`,\n fixed: 'right',\n width: `120px`,\n render(row) {\n return (\n <NSpace size=\"small\">\n <NButton\n size=\"small\"\n loading={previewSnapshot.loading[row.id]}\n onClick={() => previewSnapshot.invoke(row)}\n >\n 查看\n </NButton>\n </NSpace>\n );\n },\n },\n];\n\nconst pagination = shallowReactive<PaginationProps>({\n page: 1,\n pageSize: 50,\n showSizePicker: true,\n pageSizes: [50, 100],\n onChange: (page: number) => {\n pagination.page = page;\n },\n onUpdatePageSize: (pageSize: number) => {\n pagination.pageSize = pageSize;\n pagination.page = 1;\n },\n});\nwatch(pagination, resetColWidth);\n\nconst showSubsModel = shallowRef(false);\nconst subsText = shallowRef(``);\nconst updateSubs = useTask(async () => {\n const data = errorWrap(() => JSON5.parse(subsText.value.trim()));\n if (!data) return;\n if (data.categories || data.globalGroups || data.apps) {\n await api.updateSubscription(data);\n } else if (typeof data.id == 'string') {\n await api.updateSubscription({\n apps: [data],\n });\n } else if (Array.isArray(data) && typeof data[0].id == 'string') {\n await api.updateSubscription({\n apps: data,\n });\n } else if (typeof data.key == 'number') {\n await api.updateSubscription({\n globalGroups: [data],\n });\n } else if (Array.isArray(data) && typeof data[0].key == 'number') {\n await api.updateSubscription({\n globalGroups: data,\n });\n } else {\n message.error(`无法识别的订阅文本`);\n return;\n }\n message.success(`修改成功`);\n});\n\nconst showSelectorModel = shallowRef(false);\n\nconst actionOptions: {\n value?: string;\n label: string;\n}[] = [\n {\n label: '仅查询',\n value: undefined,\n },\n {\n value: 'click',\n label: 'click',\n },\n {\n value: 'clickNode',\n label: 'clickNode',\n },\n {\n value: 'clickCenter',\n label: 'clickCenter',\n },\n {\n value: 'back',\n label: 'back',\n },\n {\n value: 'longClick',\n label: 'longClick',\n },\n {\n value: 'longClickNode',\n label: 'longClickNode',\n },\n {\n value: 'longClickCenter',\n label: 'longClickCenter',\n },\n];\nconst clickAction = shallowReactive({\n selector: ``,\n action: 'click',\n quickFind: false,\n});\nconst execSelector = useTask(async () => {\n const result = await api.execSelector({\n ...clickAction,\n fastQuery: clickAction.quickFind,\n });\n if (result.message) {\n message.success(`操作成功:` + result.message);\n return;\n }\n if (result.action) {\n message.success((result.result ? `操作成功:` : `操作失败`) + result.action);\n } else if (!result.action && result.result) {\n message.success(`查询成功`);\n }\n});\n\nconst placeholder = `\n请输入订阅文本(JSON5语法):\n示例1-更新单个应用的规则:\n{\n id: 'appId',\n groups: []\n}\n\n示例2-更新多个应用的规则:\n[\n {\n id: 'appId1',\n groups: []\n },\n {\n id: 'appId2',\n groups: []\n }\n]\n\n示例3-更新全局规则(1.7.0):\n{\n name: '全局规则-1',\n key: 0,\n rules: []\n}\n\n示例3-更新多个全局规则(1.7.0):\n[\n {\n name: '全局规则-1',\n key: 0,\n rules: []\n },\n {\n name: '全局规则-2',\n key: 1,\n rules: []\n }\n]\n\n示例4-更新整个订阅(1.7.0):\n{\n apps: [],\n globalGroups: [],\n categories: [],\n}\n`.trim();\n</script>\n<template>\n <NModal\n v-model:show=\"showSubsModel\"\n preset=\"dialog\"\n style=\"width: 800px\"\n title=\"修改内存订阅\"\n positive-text=\"确认\"\n :positiveButtonProps=\"{\n loading: updateSubs.loading,\n onClick() {\n updateSubs.invoke();\n },\n }\"\n >\n <NInput\n v-model:value=\"subsText\"\n :disabled=\"updateSubs.loading\"\n type=\"textarea\"\n class=\"gkd_code\"\n :autosize=\"{\n minRows: 20,\n maxRows: 25,\n }\"\n :placeholder=\"placeholder\"\n />\n </NModal>\n <NModal\n v-model:show=\"showSelectorModel\"\n preset=\"dialog\"\n style=\"width: 800px\"\n title=\"执行选择器\"\n positive-text=\"确认\"\n :positiveButtonProps=\"{\n loading: execSelector.loading,\n onClick() {\n execSelector.invoke();\n },\n }\"\n >\n <NInput\n v-model:value=\"clickAction.selector\"\n :disabled=\"execSelector.loading\"\n type=\"textarea\"\n class=\"gkd_code\"\n :autosize=\"{\n minRows: 4,\n maxRows: 10,\n }\"\n placeholder=\"请输入合法的选择器\"\n />\n <div h-15px></div>\n <NSpace>\n <NCheckbox v-model:checked=\"clickAction.quickFind\"> 快速查找 </NCheckbox>\n <a\n href=\"https://gkd.li/api/interfaces/RawCommonProps.html#quickfind\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n 查找说明\n </a>\n </NSpace>\n <div h-10px></div>\n <div flex gap-10px flex-items-center>\n <NSelect\n v-model:value=\"clickAction.action\"\n :options=\"actionOptions\"\n class=\"w-150px\"\n />\n <a\n href=\"https://gkd.li/api/interfaces/RawRuleProps#action\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n 操作说明\n </a>\n </div>\n </NModal>\n <div flex flex-col p-10px gap-10px h-full>\n <div flex items-center gap-24px>\n <RouterLink to=\"/\" flex ml-12px title=\"首页\">\n <NButton text>\n <template #icon>\n <NIcon :size=\"24\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n viewBox=\"0 0 32 32\"\n >\n <path\n d=\"M16.612 2.214a1.01 1.01 0 0 0-1.242 0L1 13.419l1.243 1.572L4 13.621V26a2.004 2.004 0 0 0 2 2h20a2.004 2.004 0 0 0 2-2V13.63L29.757 15L31 13.428zM18 26h-4v-8h4zm2 0v-8a2.002 2.002 0 0 0-2-2h-4a2.002 2.002 0 0 0-2 2v8H6V12.062l10-7.79l10 7.8V26z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </NIcon>\n </template>\n </NButton>\n </RouterLink>\n <NInputGroup>\n <NInput\n v-model:value=\"link\"\n placeholder=\"请输入设备地址\"\n :style=\"{ width: `200px` }\"\n @keyup.enter=\"connect.invoke\"\n ></NInput>\n <NButton @click=\"connect.invoke\" :loading=\"connect.loading\">\n 刷新连接\n </NButton>\n </NInputGroup>\n <template v-if=\"device\">\n <div whitespace-nowrap>\n {{ `已连接 ${device.manufacturer} Android ${device.release}` }}\n </div>\n <NButton\n @click=\"captureSnapshot.invoke\"\n :loading=\"captureSnapshot.loading\"\n >\n 快照\n </NButton>\n <NButton\n @click=\"downloadAllSnapshot.invoke\"\n :loading=\"downloadAllSnapshot.loading\"\n >\n 下载设备所有快照\n </NButton>\n <NButton @click=\"showSubsModel = true\"> 修改内存订阅 </NButton>\n <NButton @click=\"showSelectorModel = true\"> 执行选择器 </NButton>\n </template>\n </div>\n <NDataTable\n striped\n flexHeight\n :data=\"snapshots\"\n :columns=\"columns\"\n :pagination=\"pagination\"\n @update:sorter=\"handleSorterChange\"\n size=\"small\"\n class=\"flex-1\"\n :scrollX=\"1200\"\n />\n </div>\n</template>\n"],"names":["useDeviceApi","initOrigin","origin","shallowRef","rpc","rpcName","options","u","key","value","response","enhanceFetch","e","message","_a","error","jsonRpc","args","blobRpc","arrayBufferRpc","query","data","router","useRouter","api","link","useStorage","device","connect","useTask","errorWrap","URL","trim","onMounted","delay","toValidURL","invoke","snapshots","watchEffect","document","title","manufacturer","result","sort","a","b","id","subsText","captureSnapshot","snapshot","screenshot","snapshotStorage","setItem","screenshotStorage","success","downloadAllSnapshot","snapshotIds","map","s","existSnapshotIds","Set","keys","parseInt","unimportSnapshotIds","filter","k","has","length","r","limit","pLimit","Promise","all","snapshotId","newSnapshot","newScreenshot","nodes","activityIdCol","appIdCol","appNameCol","ctimeCol","appVersionCodeCol","appVersionNameCol","resetColWidth","useSnapshotColumns","handleSorterChange","sorter","columnKey","sortOrder","order","previewSnapshot","useBatchTask","row","hasItem","bf","window","open","resolve","name","params","href","columns","fixed","width","render","_createVNode2","_resolveComponent2","default","loading","onClick","_createTextVNode2","pagination","shallowReactive","page","pageSize","showSizePicker","pageSizes","onChange","onUpdatePageSize","watch","showSubsModel","updateSubs","JSON5","parse","categories","globalGroups","apps","updateSubscription","Array","isArray","showSelectorModel","actionOptions","label","undefined","clickAction","selector","action","quickFind","execSelector","fastQuery","placeholder"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DevicePage-BoHW8n5e.js","sources":["../../src/utils/api.ts","../../src/views/DevicePage.vue"],"sourcesContent":["import { message } from './discrete';\nimport { enhanceFetch } from './fetch';\nimport type { Device, RpcError, Snapshot } from './types';\n\ntype RpcOptions = {\n query?: Record<string, unknown>;\n init?: RequestInit;\n};\n\nexport const useDeviceApi = (initOrigin?: string) => {\n const origin = shallowRef(initOrigin);\n const rpc = async (rpcName: string, options: RpcOptions = {}) => {\n if (!origin.value) {\n throw new Error(`origin must exist`);\n }\n const u = new URL(`/api/` + rpcName, origin.value);\n Object.entries(options.query || {}).forEach(([key, value]) => {\n if (value === undefined) return;\n u.searchParams.set(key, String(value));\n });\n const response = await enhanceFetch(u, options.init).catch((e) => {\n message.error(`网络错误:/` + rpcName);\n throw e;\n });\n if (!response.ok) {\n message.error(`接口错误:/` + rpcName + `:` + response.status);\n throw response;\n }\n if (response.headers.get(`Content-Type`)?.includes(`application/json`)) {\n const error = (await response.clone().json()) as RpcError;\n if (error.__error) {\n message.error(error.message);\n throw response;\n }\n }\n return response;\n };\n const jsonRpc = async <T>(...args: Parameters<typeof rpc>) => {\n const response = await rpc(...args);\n return (await response.json()) as T;\n };\n const blobRpc = async (...args: Parameters<typeof rpc>) => {\n const response = await rpc(...args);\n return await response.blob();\n };\n const arrayBufferRpc = async (...args: Parameters<typeof rpc>) => {\n const response = await rpc(...args);\n return await response.arrayBuffer();\n };\n const api = {\n device: async () => jsonRpc<Device>(`device`),\n snapshot: async (query?: { id?: string | number }) => {\n return jsonRpc<Snapshot>(`snapshot`, { query });\n },\n screenshot: async (query: { id: string | number }) => {\n return arrayBufferRpc(`screenshot`, { query });\n },\n captureSnapshot: async () => {\n return jsonRpc<Snapshot>(`captureSnapshot`);\n },\n snapshots: async () => {\n return jsonRpc<Snapshot[]>(`snapshots`);\n },\n updateSubsApps: async (data: unknown[]) => {\n return blobRpc(`updateSubsApps`, {\n init: {\n method: 'POST',\n body: JSON.stringify(data),\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n });\n },\n updateSubscription: async (data: any) => {\n return blobRpc(`updateSubscription`, {\n init: {\n method: 'POST',\n body: JSON.stringify({\n ...data,\n id: -1,\n name: '内存订阅',\n version: 0,\n }),\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n });\n },\n execSelector: async (data: {\n selector: string;\n action?: string;\n quickFind?: boolean;\n fastQuery?: boolean;\n }) => {\n return jsonRpc<{ message: string; action: string; result: boolean }>(\n `execSelector`,\n {\n init: {\n method: 'POST',\n // value 是旧版本的选择器\n body: JSON.stringify({ ...data, value: data.selector }),\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n },\n );\n },\n };\n return { origin, api };\n};\n","<script setup lang=\"tsx\">\nimport { useDeviceApi } from '@/utils/api';\nimport { toValidURL } from '@/utils/check';\nimport { message } from '@/utils/discrete';\nimport { errorWrap } from '@/utils/error';\nimport { delay } from '@/utils/others';\nimport { screenshotStorage, snapshotStorage } from '@/utils/snapshot';\nimport { useSnapshotColumns } from '@/utils/table';\nimport { useBatchTask, useTask } from '@/utils/task';\nimport type { Device, Snapshot } from '@/utils/types';\nimport type { DataTableColumns, PaginationProps } from 'naive-ui';\nimport type { SortState } from 'naive-ui/es/data-table/src/interface';\nimport pLimit from 'p-limit';\n\nconst router = useRouter();\nconst { api, origin } = useDeviceApi();\nconst link = useStorage(`device_link`, ``);\nconst device = shallowRef<Device>();\nconst connect = useTask(async () => {\n if (!link.value) return;\n origin.value = errorWrap(\n () => new URL(link.value.trim()),\n () => `非法设备地址`,\n ).origin;\n link.value = origin.value;\n device.value = await api.device();\n});\nonMounted(async () => {\n await delay(500);\n if (toValidURL(link.value)) {\n connect.invoke();\n }\n});\n\nconst snapshots = shallowRef<Snapshot[]>([]);\nwatchEffect(async () => {\n if (!device.value) return;\n document.title = `已连接 ` + device.value.manufacturer;\n const result = await api.snapshots();\n result.sort((a, b) => b.id - a.id);\n snapshots.value = result;\n subsText.value = '';\n});\n\nconst captureSnapshot = useTask(async () => {\n const snapshot = await api.captureSnapshot();\n const screenshot = await api.screenshot({ 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.snapshots();\n result.sort((a, b) => b.id - a.id);\n snapshots.value = result;\n});\nconst downloadAllSnapshot = useTask(async () => {\n const snapshotIds = (await api.snapshots()).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 r = 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.snapshot({ id: snapshotId }),\n api.screenshot({ 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 r++;\n }),\n ),\n );\n message.success(`导入${r}条新记录`);\n});\n\nconst {\n activityIdCol,\n appIdCol,\n appNameCol,\n ctimeCol,\n appVersionCodeCol,\n appVersionNameCol,\n resetColWidth,\n} = useSnapshotColumns();\nconst handleSorterChange = (sorter: SortState) => {\n if (sorter.columnKey == ctimeCol.key) {\n ctimeCol.sortOrder = sorter.order;\n }\n};\nconst previewSnapshot = useBatchTask(\n async (row: Snapshot) => {\n if (!(await snapshotStorage.hasItem(row.id))) {\n await snapshotStorage.setItem(row.id, await api.snapshot({ id: row.id }));\n }\n if (!(await screenshotStorage.hasItem(row.id))) {\n const bf = await api.screenshot({ id: row.id });\n await screenshotStorage.setItem(row.id, bf);\n }\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 columns: DataTableColumns<Snapshot> = [\n ctimeCol,\n appNameCol,\n appIdCol,\n appVersionCodeCol,\n appVersionNameCol,\n activityIdCol,\n {\n key: `actions`,\n title: `操作`,\n fixed: 'right',\n width: `120px`,\n render(row) {\n return (\n <NSpace size=\"small\">\n <NButton\n size=\"small\"\n loading={previewSnapshot.loading[row.id]}\n onClick={() => previewSnapshot.invoke(row)}\n >\n 查看\n </NButton>\n </NSpace>\n );\n },\n },\n];\n\nconst pagination = shallowReactive<PaginationProps>({\n page: 1,\n pageSize: 50,\n showSizePicker: true,\n pageSizes: [50, 100],\n onChange: (page: number) => {\n pagination.page = page;\n },\n onUpdatePageSize: (pageSize: number) => {\n pagination.pageSize = pageSize;\n pagination.page = 1;\n },\n});\nwatch(pagination, resetColWidth);\n\nconst showSubsModel = shallowRef(false);\nconst subsText = shallowRef(``);\nconst updateSubs = useTask(async () => {\n const data = errorWrap(() => JSON5.parse(subsText.value.trim()));\n if (!data) return;\n if (data.categories || data.globalGroups || data.apps) {\n await api.updateSubscription(data);\n } else if (typeof data.id == 'string') {\n await api.updateSubscription({\n apps: [data],\n });\n } else if (Array.isArray(data) && typeof data[0].id == 'string') {\n await api.updateSubscription({\n apps: data,\n });\n } else if (typeof data.key == 'number') {\n await api.updateSubscription({\n globalGroups: [data],\n });\n } else if (Array.isArray(data) && typeof data[0].key == 'number') {\n await api.updateSubscription({\n globalGroups: data,\n });\n } else {\n message.error(`无法识别的订阅文本`);\n return;\n }\n message.success(`修改成功`);\n});\n\nconst showSelectorModel = shallowRef(false);\n\nconst actionOptions: {\n value?: string;\n label: string;\n}[] = [\n {\n label: '仅查询',\n value: undefined,\n },\n {\n value: 'click',\n label: 'click',\n },\n {\n value: 'clickNode',\n label: 'clickNode',\n },\n {\n value: 'clickCenter',\n label: 'clickCenter',\n },\n {\n value: 'back',\n label: 'back',\n },\n {\n value: 'longClick',\n label: 'longClick',\n },\n {\n value: 'longClickNode',\n label: 'longClickNode',\n },\n {\n value: 'longClickCenter',\n label: 'longClickCenter',\n },\n];\nconst clickAction = shallowReactive({\n selector: ``,\n action: 'click',\n quickFind: false,\n});\nconst execSelector = useTask(async () => {\n const result = await api.execSelector({\n ...clickAction,\n fastQuery: clickAction.quickFind,\n });\n if (result.message) {\n message.success(`操作成功:` + result.message);\n return;\n }\n if (result.action) {\n message.success((result.result ? `操作成功:` : `操作失败`) + result.action);\n } else if (!result.action && result.result) {\n message.success(`查询成功`);\n }\n});\n\nconst placeholder = `\n请输入订阅文本(JSON5语法):\n示例1-更新单个应用的规则:\n{\n id: 'appId',\n groups: []\n}\n\n示例2-更新多个应用的规则:\n[\n {\n id: 'appId1',\n groups: []\n },\n {\n id: 'appId2',\n groups: []\n }\n]\n\n示例3-更新全局规则(1.7.0):\n{\n name: '全局规则-1',\n key: 0,\n rules: []\n}\n\n示例3-更新多个全局规则(1.7.0):\n[\n {\n name: '全局规则-1',\n key: 0,\n rules: []\n },\n {\n name: '全局规则-2',\n key: 1,\n rules: []\n }\n]\n\n示例4-更新整个订阅(1.7.0):\n{\n apps: [],\n globalGroups: [],\n categories: [],\n}\n`.trim();\n</script>\n<template>\n <NModal\n v-model:show=\"showSubsModel\"\n preset=\"dialog\"\n style=\"width: 800px\"\n title=\"修改内存订阅\"\n positive-text=\"确认\"\n :positiveButtonProps=\"{\n loading: updateSubs.loading,\n onClick() {\n updateSubs.invoke();\n },\n }\"\n >\n <NInput\n v-model:value=\"subsText\"\n :disabled=\"updateSubs.loading\"\n type=\"textarea\"\n class=\"gkd_code\"\n :autosize=\"{\n minRows: 20,\n maxRows: 25,\n }\"\n :placeholder=\"placeholder\"\n />\n </NModal>\n <NModal\n v-model:show=\"showSelectorModel\"\n preset=\"dialog\"\n style=\"width: 800px\"\n title=\"执行选择器\"\n positive-text=\"确认\"\n :positiveButtonProps=\"{\n loading: execSelector.loading,\n onClick() {\n execSelector.invoke();\n },\n }\"\n >\n <NInput\n v-model:value=\"clickAction.selector\"\n :disabled=\"execSelector.loading\"\n type=\"textarea\"\n class=\"gkd_code\"\n :autosize=\"{\n minRows: 4,\n maxRows: 10,\n }\"\n placeholder=\"请输入合法的选择器\"\n />\n <div h-15px></div>\n <NSpace>\n <NCheckbox v-model:checked=\"clickAction.quickFind\"> 快速查找 </NCheckbox>\n <a\n href=\"https://gkd.li/api/interfaces/RawCommonProps.html#quickfind\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n 查找说明\n </a>\n </NSpace>\n <div h-10px></div>\n <div flex gap-10px flex-items-center>\n <NSelect\n v-model:value=\"clickAction.action\"\n :options=\"actionOptions\"\n class=\"w-150px\"\n />\n <a\n href=\"https://gkd.li/api/interfaces/RawRuleProps#action\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n 操作说明\n </a>\n </div>\n </NModal>\n <div flex flex-col p-10px gap-10px h-full>\n <div flex items-center gap-24px>\n <RouterLink to=\"/\" flex ml-12px title=\"首页\">\n <NButton text>\n <template #icon>\n <NIcon :size=\"24\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n viewBox=\"0 0 32 32\"\n >\n <path\n d=\"M16.612 2.214a1.01 1.01 0 0 0-1.242 0L1 13.419l1.243 1.572L4 13.621V26a2.004 2.004 0 0 0 2 2h20a2.004 2.004 0 0 0 2-2V13.63L29.757 15L31 13.428zM18 26h-4v-8h4zm2 0v-8a2.002 2.002 0 0 0-2-2h-4a2.002 2.002 0 0 0-2 2v8H6V12.062l10-7.79l10 7.8V26z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </NIcon>\n </template>\n </NButton>\n </RouterLink>\n <NInputGroup>\n <NInput\n v-model:value=\"link\"\n placeholder=\"请输入设备地址\"\n :style=\"{ width: `200px` }\"\n @keyup.enter=\"connect.invoke\"\n ></NInput>\n <NButton @click=\"connect.invoke\" :loading=\"connect.loading\">\n 刷新连接\n </NButton>\n </NInputGroup>\n <template v-if=\"device\">\n <div whitespace-nowrap>\n {{ `已连接 ${device.manufacturer} Android ${device.release}` }}\n </div>\n <NButton\n @click=\"captureSnapshot.invoke\"\n :loading=\"captureSnapshot.loading\"\n >\n 快照\n </NButton>\n <NButton\n @click=\"downloadAllSnapshot.invoke\"\n :loading=\"downloadAllSnapshot.loading\"\n >\n 下载设备所有快照\n </NButton>\n <NButton @click=\"showSubsModel = true\"> 修改内存订阅 </NButton>\n <NButton @click=\"showSelectorModel = true\"> 执行选择器 </NButton>\n </template>\n </div>\n <NDataTable\n striped\n flexHeight\n :data=\"snapshots\"\n :columns=\"columns\"\n :pagination=\"pagination\"\n @update:sorter=\"handleSorterChange\"\n size=\"small\"\n class=\"flex-1\"\n :scrollX=\"1200\"\n />\n </div>\n</template>\n"],"names":["useDeviceApi","initOrigin","origin","shallowRef","rpc","rpcName","options","u","key","value","response","enhanceFetch","e","message","_a","error","jsonRpc","args","blobRpc","arrayBufferRpc","query","data","router","useRouter","api","link","useStorage","device","connect","useTask","errorWrap","URL","trim","onMounted","delay","toValidURL","invoke","snapshots","watchEffect","document","title","manufacturer","result","sort","a","b","id","subsText","captureSnapshot","snapshot","screenshot","snapshotStorage","setItem","screenshotStorage","success","downloadAllSnapshot","snapshotIds","map","s","existSnapshotIds","Set","keys","parseInt","unimportSnapshotIds","filter","k","has","length","r","limit","pLimit","Promise","all","snapshotId","newSnapshot","newScreenshot","nodes","activityIdCol","appIdCol","appNameCol","ctimeCol","appVersionCodeCol","appVersionNameCol","resetColWidth","useSnapshotColumns","handleSorterChange","sorter","columnKey","sortOrder","order","previewSnapshot","useBatchTask","row","hasItem","bf","window","open","resolve","name","params","href","columns","fixed","width","render","_createVNode2","_resolveComponent2","default","loading","onClick","_createTextVNode2","pagination","shallowReactive","page","pageSize","showSizePicker","pageSizes","onChange","onUpdatePageSize","watch","showSubsModel","updateSubs","JSON5","parse","categories","globalGroups","apps","updateSubscription","Array","isArray","showSelectorModel","actionOptions","label","undefined","clickAction","selector","action","quickFind","execSelector","fastQuery","placeholder"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{d as ze,c as Re,a as pe,b as r,i as ge,e as le,f as V,g as ve,h as _e,u as Be,j as Se,k as $e,r as se,t as Ve,l as Me,m as X,n as L,p as re,o as M,q as Ie,s as ce,v as w,w as H,N as Ne,x as Te,y as de,z as Ue,A as E,B as We,C as fe,D as ue,E as Pe,F as Fe,G as De,H as me,I as we,J as c,K as a,L as i,M as n,O as Le,P as be,Q as C,R as He,S as Ke,T as he,U as Oe,V as qe,W as Ae,X as Qe,_ as Ze,Y as Ee}from"./index-
|
|
1
|
+
import{d as ze,c as Re,a as pe,b as r,i as ge,e as le,f as V,g as ve,h as _e,u as Be,j as Se,k as $e,r as se,t as Ve,l as Me,m as X,n as L,p as re,o as M,q as Ie,s as ce,v as w,w as H,N as Ne,x as Te,y as de,z as Ue,A as E,B as We,C as fe,D as ue,E as Pe,F as Fe,G as De,H as me,I as we,J as c,K as a,L as i,M as n,O as Le,P as be,Q as C,R as He,S as Ke,T as he,U as Oe,V as qe,W as Ae,X as Qe,_ as Ze,Y as Ee}from"./index-DstKhbDa.js";import{_ as je,w as xe,s as ke}from"./ActionCard.vue_vue_type_script_setup_true_lang-oPon0Nur.js";import{b as Je,a as Xe,c as Ge,d as Ye}from"./export-CmIirSOE.js";import{i as et,a as tt}from"./import-CZ0VIHxs.js";import{g as ye,u as K,_ as ot,N as at,a as nt,b as it,c as lt}from"./dayjs.min-BtHCNtMU.js";import{s as st,a as Ce}from"./snapshot-BPq4m02d.js";import{u as rt,_ as ct,r as dt}from"./table-C8_5JxaC.js";const ut={buttonHeightSmall:"14px",buttonHeightMedium:"18px",buttonHeightLarge:"22px",buttonWidthSmall:"14px",buttonWidthMedium:"18px",buttonWidthLarge:"22px",buttonWidthPressedSmall:"20px",buttonWidthPressedMedium:"24px",buttonWidthPressedLarge:"28px",railHeightSmall:"18px",railHeightMedium:"22px",railHeightLarge:"26px",railWidthSmall:"32px",railWidthMedium:"40px",railWidthLarge:"48px"};function ht(t){const{primaryColor:g,opacityDisabled:y,borderRadius:v,textColor3:h}=t;return Object.assign(Object.assign({},ut),{iconColor:h,textColor:"white",loadingColor:g,opacityDisabled:y,railColor:"rgba(0, 0, 0, .14)",railColorActive:g,buttonBoxShadow:"0 1px 4px 0 rgba(0, 0, 0, 0.3), inset 0 0 1px 0 rgba(0, 0, 0, 0.05)",buttonColor:"#FFF",railBorderRadiusSmall:v,railBorderRadiusMedium:v,railBorderRadiusLarge:v,buttonBorderRadiusSmall:v,buttonBorderRadiusMedium:v,buttonBorderRadiusLarge:v,boxShadowFocus:`0 0 0 2px ${Re(g,{alpha:.2})}`})}const pt={name:"Switch",common:ze,self:ht},gt=pe("switch",`
|
|
2
2
|
height: var(--n-height);
|
|
3
3
|
min-width: var(--n-width);
|
|
4
4
|
vertical-align: middle;
|
|
@@ -109,4 +109,4 @@ import{d as ze,c as Re,a as pe,b as r,i as ge,e as le,f as V,g as ve,h as _e,u a
|
|
|
109
109
|
每行一个
|
|
110
110
|
空白行自动忽略
|
|
111
111
|
非法链接行自动忽略`,autosize:{minRows:8,maxRows:16},inputProps:{style:"white-space: nowrap;"}},null,8,["value"])]),_:1},8,["show","onPositiveClick","loading"]),a(G,{show:n(D),"onUpdate:show":e[10]||(e[10]=s=>he(D)?D.value=s:null),preset:"dialog",title:"设置",showIcon:!1,positiveText:"关闭",style:{width:"600px"},onPositiveClick:e[11]||(e[11]=s=>D.value=!1)},{default:i(()=>[a(Z,{checked:n(g).ignoreUploadWarn,"onUpdate:checked":e[7]||(e[7]=s=>n(g).ignoreUploadWarn=s)},{default:i(()=>e[27]||(e[27]=[C(" 关闭生成分享链接弹窗提醒 ")])),_:1},8,["checked"]),e[30]||(e[30]=c("div",{"h-1px":"","my-10px":"",bg:"#eee"},null,-1)),a(Z,{checked:n(g).ignoreWasmWarn,"onUpdate:checked":e[8]||(e[8]=s=>n(g).ignoreWasmWarn=s)},{default:i(()=>e[28]||(e[28]=[C(" 关闭浏览器版本正则表达式 WASM(GC) 提醒 ")])),_:1},8,["checked"]),e[31]||(e[31]=c("div",{"h-1px":"","my-10px":"",bg:"#eee"},null,-1)),c("div",yt,[a(j,{value:n(g).autoUploadImport,"onUpdate:value":e[9]||(e[9]=s=>n(g).autoUploadImport=s)},null,8,["value"]),e[29]||(e[29]=c("div",null,"打开快照页面自动生成分享链接(请确保不含隐私)",-1))])]),_:1},8,["show"])],64)}}});export{Vt as default};
|
|
112
|
-
//# sourceMappingURL=HomePage-
|
|
112
|
+
//# sourceMappingURL=HomePage-BluPIA_G.js.map
|