@gkd-kit/inspect 0.0.1750946427915 → 0.0.1751183167731
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-fNpluFj0.js +17 -0
- package/dist/assets/{ActionCard.vue_vue_type_script_setup_true_lang-PAYp10Bk.js.map → ActionCard.vue_vue_type_script_setup_true_lang-fNpluFj0.js.map} +1 -1
- package/dist/assets/DevicePage-CZoWkQzd.js +49 -0
- package/dist/assets/DevicePage-CZoWkQzd.js.map +1 -0
- package/dist/assets/{HomePage-D1aYSq5n.js → HomePage-D9jsrGSM.js} +7 -7
- package/dist/assets/HomePage-D9jsrGSM.js.map +1 -0
- package/dist/assets/{ImportPage-BpwSSxFv.js → ImportPage-CJD0J8K6.js} +2 -2
- package/dist/assets/{ImportPage-BpwSSxFv.js.map → ImportPage-CJD0J8K6.js.map} +1 -1
- package/dist/assets/{Input-DakhkhRu.js → Input-BWOc1Pu7.js} +2 -2
- package/dist/assets/{Input-DakhkhRu.js.map → Input-BWOc1Pu7.js.map} +1 -1
- package/dist/assets/{SelectorPage-B8sK0rHd.js → SelectorPage-CooXdhPW.js} +2 -2
- package/dist/assets/{SelectorPage-B8sK0rHd.js.map → SelectorPage-CooXdhPW.js.map} +1 -1
- package/dist/assets/{SnapshotPage-BxGCD3gs.js → SnapshotPage-C8Q0C5gw.js} +10 -10
- package/dist/assets/SnapshotPage-C8Q0C5gw.js.map +1 -0
- package/dist/assets/{SvgPage-DtOA2z5b.js → SvgPage-CZ0kwBxr.js} +2 -2
- package/dist/assets/{SvgPage-DtOA2z5b.js.map → SvgPage-CZ0kwBxr.js.map} +1 -1
- package/dist/assets/{TrackGraph-fb_DI1El.js → TrackGraph-Bq-QwVBW.js} +3 -3
- package/dist/assets/{TrackGraph-fb_DI1El.js.map → TrackGraph-Bq-QwVBW.js.map} +1 -1
- package/dist/assets/{_404Page-CtPfHH3v.js → _404Page-BdR9z2S1.js} +2 -2
- package/dist/assets/{_404Page-CtPfHH3v.js.map → _404Page-BdR9z2S1.js.map} +1 -1
- package/dist/assets/chunk-nZTGrq2r.js +3 -0
- package/dist/assets/{chunk-BxBCNnrz.js.map → chunk-nZTGrq2r.js.map} +1 -1
- package/dist/assets/{dayjs.min-lRbA81xW.js → dayjs.min-nGJM-SKv.js} +2 -2
- package/dist/assets/{dayjs.min-lRbA81xW.js.map → dayjs.min-nGJM-SKv.js.map} +1 -1
- package/dist/assets/{error-aAUoJqWJ.js → error-Be00rObg.js} +2 -2
- package/dist/assets/{error-aAUoJqWJ.js.map → error-Be00rObg.js.map} +1 -1
- package/dist/assets/{import-FrDi0X_0.js → import-Df2Fau0_.js} +2 -2
- package/dist/assets/{import-FrDi0X_0.js.map → import-Df2Fau0_.js.map} +1 -1
- package/dist/assets/{index-CVBUu2Si.js → index-BIfLFWuH.js} +3 -3
- package/dist/assets/{index-CVBUu2Si.js.map → index-BIfLFWuH.js.map} +1 -1
- package/dist/assets/{index-COYXkapr.js → index-IcbtfFdd.js} +6 -6
- package/dist/assets/index-IcbtfFdd.js.map +1 -0
- package/dist/assets/index-tQGywndn.css +1 -0
- package/dist/assets/{jszip.min-Cy5MVem1.js → jszip.min-Du6y-Q7a.js} +2 -2
- package/dist/assets/{jszip.min-Cy5MVem1.js.map → jszip.min-Du6y-Q7a.js.map} +1 -1
- package/dist/assets/{node-BAV4BU5G.js → node-DeXZi5w1.js} +2 -2
- package/dist/assets/{node-BAV4BU5G.js.map → node-DeXZi5w1.js.map} +1 -1
- package/dist/assets/{snapshot-DQoBFjtA.js → snapshot-CELy9cS2.js} +2 -2
- package/dist/assets/{snapshot-DQoBFjtA.js.map → snapshot-CELy9cS2.js.map} +1 -1
- package/dist/assets/{table-qWtkkPlj.js → table-wcRv5TdX.js} +2 -2
- package/dist/assets/{table-qWtkkPlj.js.map → table-wcRv5TdX.js.map} +1 -1
- package/dist/index.html +3 -3
- package/package.json +3 -3
- package/dist/assets/ActionCard.vue_vue_type_script_setup_true_lang-PAYp10Bk.js +0 -17
- package/dist/assets/DevicePage-DsvVoBQM.js +0 -49
- package/dist/assets/DevicePage-DsvVoBQM.js.map +0 -1
- package/dist/assets/HomePage-D1aYSq5n.js.map +0 -1
- package/dist/assets/SnapshotPage-BxGCD3gs.js.map +0 -1
- package/dist/assets/chunk-BxBCNnrz.js +0 -3
- package/dist/assets/index-C98pF2u5.css +0 -1
- package/dist/assets/index-COYXkapr.js.map +0 -1
package/dist/index.html
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!doctype html>
|
|
2
2
|
<html lang="zh">
|
|
3
3
|
<head>
|
|
4
|
-
<script type="module" crossorigin src="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.
|
|
4
|
+
<script type="module" crossorigin src="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1751183167731/files/dist/assets/polyfills-DHsnwdd7.js"></script>
|
|
5
5
|
|
|
6
6
|
<meta charset="UTF-8" />
|
|
7
7
|
<link
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
13
13
|
<meta name="referrer" content="no-referrer" />
|
|
14
14
|
<title>GKD</title>
|
|
15
|
-
<script type="module" crossorigin src="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.
|
|
16
|
-
<link rel="stylesheet" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.
|
|
15
|
+
<script type="module" crossorigin src="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1751183167731/files/dist/assets/index-IcbtfFdd.js"></script>
|
|
16
|
+
<link rel="stylesheet" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1751183167731/files/dist/assets/index-tQGywndn.css">
|
|
17
17
|
</head>
|
|
18
18
|
|
|
19
19
|
<body>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gkd-kit/inspect",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.1751183167731",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public",
|
|
@@ -75,8 +75,8 @@
|
|
|
75
75
|
},
|
|
76
76
|
"lint-staged": {
|
|
77
77
|
"*.{vue,js,jsx,cjs,mjs,ts,tsx}": [
|
|
78
|
-
"
|
|
79
|
-
"
|
|
78
|
+
"eslint --cache --fix",
|
|
79
|
+
"prettier --cache --write"
|
|
80
80
|
],
|
|
81
81
|
"*.{json,yml,html}": [
|
|
82
82
|
"prettier --cache --write"
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import{ai as wt,b1 as xt,d as kt,a5 as _t,b2 as Bt,h as J,at as Oe,k as E,R as le,r as Et,ag as Pt,b3 as Tt,u as Qe,ae as Ct,q as H,x as St,t as Ae,a as je,b as ie,e as Ue,b4 as Ft,b5 as Rt,m as et,o as Ot,y as Ie,a2 as At,aP as ce,Z as tt,G as b,T as B,aY as X,W as jt,b6 as L,b7 as Ut,a_ as Z,aN as De,b8 as It,aM as ze,aO as nt,b9 as Dt,av as zt,aK as Lt,I as Nt,J as Le,K as T,O as N,aw as F,P as x,M as g,X as Mt,aZ as Wt,Y as Ne}from"./index-COYXkapr.js";import{u as Me,_ as Ht}from"./Input-DakhkhRu.js";import{e as it,b as K,p as at,a as ot}from"./snapshot-DQoBFjtA.js";import{J as pe}from"./chunk-BxBCNnrz.js";import{u as M,a as $t}from"./dayjs.min-lRbA81xW.js";import{p as qt,_ as rt,i as Xt,a as Gt}from"./node-BAV4BU5G.js";const Vt={iconSize:"22px"};function Jt(t){const{fontSize:e,warningColor:n}=t;return Object.assign(Object.assign({},Vt),{fontSize:e,iconColor:n})}const Zt=wt({name:"Popconfirm",common:kt,peers:{Button:xt,Popover:qt},self:Jt}),st=_t("n-popconfirm"),lt={positiveText:String,negativeText:String,showIcon:{type:Boolean,default:!0},onPositiveClick:{type:Function,required:!0},onNegativeClick:{type:Function,required:!0}},We=Bt(lt),Kt=J({name:"NPopconfirmPanel",props:lt,setup(t){const{localeRef:e}=Me("Popconfirm"),{inlineThemeDisabled:n}=Qe(),{mergedClsPrefixRef:i,mergedThemeRef:r,props:s}=Ct(st),d=H(()=>{const{common:{cubicBezierEaseInOut:o},self:{fontSize:a,iconSize:c,iconColor:h}}=r.value;return{"--n-bezier":o,"--n-font-size":a,"--n-icon-size":c,"--n-icon-color":h}}),u=n?St("popconfirm-panel",void 0,d,s):void 0;return Object.assign(Object.assign({},Me("Popconfirm")),{mergedClsPrefix:i,cssVars:n?void 0:d,localizedPositiveText:H(()=>t.positiveText||e.value.positiveText),localizedNegativeText:H(()=>t.negativeText||e.value.negativeText),positiveButtonProps:Ae(s,"positiveButtonProps"),negativeButtonProps:Ae(s,"negativeButtonProps"),handlePositiveClick(o){t.onPositiveClick(o)},handleNegativeClick(o){t.onNegativeClick(o)},themeClass:u==null?void 0:u.themeClass,onRender:u==null?void 0:u.onRender})},render(){var t;const{mergedClsPrefix:e,showIcon:n,$slots:i}=this,r=Oe(i.action,()=>this.negativeText===null&&this.positiveText===null?[]:[this.negativeText!==null&&E(le,Object.assign({size:"small",onClick:this.handleNegativeClick},this.negativeButtonProps),{default:()=>this.localizedNegativeText}),this.positiveText!==null&&E(le,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),E("div",{class:[`${e}-popconfirm__panel`,this.themeClass],style:this.cssVars},Et(i.default,s=>n||s?E("div",{class:`${e}-popconfirm__body`},n?E("div",{class:`${e}-popconfirm__icon`},Oe(i.icon,()=>[E(Pt,{clsPrefix:e},{default:()=>E(Tt,null)})])):null,s):null),r?E("div",{class:[`${e}-popconfirm__action`]},r):null)}}),Yt=je("popconfirm",[ie("body",`
|
|
2
|
-
font-size: var(--n-font-size);
|
|
3
|
-
display: flex;
|
|
4
|
-
align-items: center;
|
|
5
|
-
flex-wrap: nowrap;
|
|
6
|
-
position: relative;
|
|
7
|
-
`,[ie("icon",`
|
|
8
|
-
display: flex;
|
|
9
|
-
font-size: var(--n-icon-size);
|
|
10
|
-
color: var(--n-icon-color);
|
|
11
|
-
transition: color .3s var(--n-bezier);
|
|
12
|
-
margin: 0 8px 0 0;
|
|
13
|
-
`)]),ie("action",`
|
|
14
|
-
display: flex;
|
|
15
|
-
justify-content: flex-end;
|
|
16
|
-
`,[Ue("&:not(:first-child)","margin-top: 8px"),je("button",[Ue("&:not(:last-child)","margin-right: 8px;")])])]),Qt=Object.assign(Object.assign(Object.assign({},et.props),Xt),{positiveText:String,negativeText:String,showIcon:{type:Boolean,default:!0},trigger:{type:String,default:"click"},positiveButtonProps:Object,negativeButtonProps:Object,onPositiveClick:Function,onNegativeClick:Function}),en=J({name:"Popconfirm",props:Qt,slots:Object,__popover__:!0,setup(t){const{mergedClsPrefixRef:e}=Qe(),n=et("Popconfirm","-popconfirm",Yt,Zt,t,e),i=Ot(null);function r(u){var o;if(!(!((o=i.value)===null||o===void 0)&&o.getMergedShow()))return;const{onPositiveClick:a,"onUpdate:show":c}=t;Promise.resolve(a?a(u):!0).then(h=>{var l;h!==!1&&((l=i.value)===null||l===void 0||l.setShow(!1),c&&Ie(c,!1))})}function s(u){var o;if(!(!((o=i.value)===null||o===void 0)&&o.getMergedShow()))return;const{onNegativeClick:a,"onUpdate:show":c}=t;Promise.resolve(a?a(u):!0).then(h=>{var l;h!==!1&&((l=i.value)===null||l===void 0||l.setShow(!1),c&&Ie(c,!1))})}return At(st,{mergedThemeRef:n,mergedClsPrefixRef:e,props:t}),{setShow(u){var o;(o=i.value)===null||o===void 0||o.setShow(u)},syncPosition(){var u;(u=i.value)===null||u===void 0||u.syncPosition()},mergedTheme:n,popoverInstRef:i,handlePositiveClick:r,handleNegativeClick:s}},render(){const{$slots:t,$props:e,mergedTheme:n}=this;return E(rt,Ft(e,We,{theme:n.peers.Popover,themeOverrides:n.peerOverrides.Popover,internalExtraClass:["popconfirm"],ref:"popoverInstRef"}),{trigger:t.trigger,default:()=>{const i=Rt(e,We);return E(Kt,Object.assign(Object.assign({},i),{onPositiveClick:this.handlePositiveClick,onNegativeClick:this.handleNegativeClick}),t)}})}}),He=({title:t="批量分享链接",content:e=""})=>{tt.success({title:t,style:{width:"800px"},content(){return b(Ht,{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(()=>{X.success("复制成功")}).catch(()=>{X.success("复制失败")}),!1}})},tn=J(()=>()=>b(jt,{checked:ce.ignoreUploadWarn,onUpdateChecked:t=>{ce.ignoreUploadWarn=t},focusable:!1},{default:()=>[B("不再提醒")]})),$e=async()=>{if(!ce.ignoreUploadWarn)return new Promise((t,e)=>{tt.warning({title:"生成分享链接须知",content(){return b("div",null,[b("div",null,[B("所有快照上传分享链接均为公开链接,任何人均可访问。")]),b("div",null,[B("请确保快照不包含隐私信息,请勿分享任何敏感信息。")]),b(tn,{class:"mt-10px"},null)])},closable:!1,closeOnEsc:!1,maskClosable:!1,positiveText:"继续上传",negativeText:"取消分享",onPositiveClick:t,onNegativeClick:e})})};function qe(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter(function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable})),n.push.apply(n,i)}return n}function W(t){for(var e=1;e<arguments.length;e++){var n=arguments[e]!=null?arguments[e]:{};e%2?qe(Object(n),!0).forEach(function(i){on(t,i,n[i])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):qe(Object(n)).forEach(function(i){Object.defineProperty(t,i,Object.getOwnPropertyDescriptor(n,i))})}return t}function nn(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function Xe(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,ct(i.key),i)}}function an(t,e,n){return e&&Xe(t.prototype,e),n&&Xe(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}function on(t,e,n){return e=ct(e),e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function G(){return G=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(t[i]=n[i])}return t},G.apply(this,arguments)}function rn(t,e){if(typeof t!="object"||t===null)return t;var n=t[Symbol.toPrimitive];if(n!==void 0){var i=n.call(t,e);if(typeof i!="object")return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}function ct(t){var e=rn(t,"string");return typeof e=="symbol"?e:String(e)}var ut={exports:{}};(function(t){typeof window>"u"||function(e){var n=e.HTMLCanvasElement&&e.HTMLCanvasElement.prototype,i=e.Blob&&function(){try{return!!new Blob}catch{return!1}}(),r=i&&e.Uint8Array&&function(){try{return new Blob([new Uint8Array(100)]).size===100}catch{return!1}}(),s=e.BlobBuilder||e.WebKitBlobBuilder||e.MozBlobBuilder||e.MSBlobBuilder,d=/^data:((.*?)(;charset=.*?)?)(;base64)?,/,u=(i||s)&&e.atob&&e.ArrayBuffer&&e.Uint8Array&&function(o){var a,c,h,l,p,f,m,v,_;if(a=o.match(d),!a)throw new Error("invalid data URI");for(c=a[2]?a[1]:"text/plain"+(a[3]||";charset=US-ASCII"),h=!!a[4],l=o.slice(a[0].length),h?p=atob(l):p=decodeURIComponent(l),f=new ArrayBuffer(p.length),m=new Uint8Array(f),v=0;v<p.length;v+=1)m[v]=p.charCodeAt(v);return i?new Blob([r?m:f],{type:c}):(_=new s,_.append(f),_.getBlob(c))};e.HTMLCanvasElement&&!n.toBlob&&(n.mozGetAsFile?n.toBlob=function(o,a,c){var h=this;setTimeout(function(){c&&n.toDataURL&&u?o(u(h.toDataURL(a,c))):o(h.mozGetAsFile("blob",a))})}:n.toDataURL&&u&&(n.msToBlob?n.toBlob=function(o,a,c){var h=this;setTimeout(function(){(a&&a!=="image/png"||c)&&n.toDataURL&&u?o(u(h.toDataURL(a,c))):o(h.msToBlob(a))})}:n.toBlob=function(o,a,c){var h=this;setTimeout(function(){o(u(h.toDataURL(a,c)))})})),t.exports?t.exports=u:e.dataURLtoBlob=u}(window)})(ut);var Ge=ut.exports,sn=function(e){return typeof Blob>"u"?!1:e instanceof Blob||Object.prototype.toString.call(e)==="[object Blob]"},Ve={strict:!0,checkOrientation:!0,retainExif:!1,maxWidth:1/0,maxHeight:1/0,minWidth:0,minHeight:0,width:void 0,height:void 0,resize:"none",quality:.8,mimeType:"auto",convertTypes:["image/png"],convertSize:5e6,beforeDraw:null,drew:null,success:null,error:null},ln=typeof window<"u"&&typeof window.document<"u",C=ln?window:{},V=function(e){return e>0&&e<1/0},cn=Array.prototype.slice;function fe(t){return Array.from?Array.from(t):cn.call(t)}var un=/^image\/.+$/;function ue(t){return un.test(t)}function pn(t){var e=ue(t)?t.substr(6):"";return e==="jpeg"&&(e="jpg"),".".concat(e)}var pt=String.fromCharCode;function fn(t,e,n){var i="",r;for(n+=e,r=e;r<n;r+=1)i+=pt(t.getUint8(r));return i}var dn=C.btoa;function Je(t,e){for(var n=[],i=8192,r=new Uint8Array(t);r.length>0;)n.push(pt.apply(null,fe(r.subarray(0,i)))),r=r.subarray(i);return"data:".concat(e,";base64,").concat(dn(n.join("")))}function hn(t){var e=new DataView(t),n;try{var i,r,s;if(e.getUint8(0)===255&&e.getUint8(1)===216)for(var d=e.byteLength,u=2;u+1<d;){if(e.getUint8(u)===255&&e.getUint8(u+1)===225){r=u;break}u+=1}if(r){var o=r+4,a=r+10;if(fn(e,o,4)==="Exif"){var c=e.getUint16(a);if(i=c===18761,(i||c===19789)&&e.getUint16(a+2,i)===42){var h=e.getUint32(a+4,i);h>=8&&(s=a+h)}}}if(s){var l=e.getUint16(s,i),p,f;for(f=0;f<l;f+=1)if(p=s+f*12+2,e.getUint16(p,i)===274){p+=8,n=e.getUint16(p,i),e.setUint16(p,1,i);break}}}catch{n=1}return n}function mn(t){var e=0,n=1,i=1;switch(t){case 2:n=-1;break;case 3:e=-180;break;case 4:i=-1;break;case 5:e=90,i=-1;break;case 6:e=90;break;case 7:e=90,n=-1;break;case 8:e=-90;break}return{rotate:e,scaleX:n,scaleY:i}}var vn=/\.\d*(?:0|9){12}\d*$/;function Ze(t){var e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1e11;return vn.test(t)?Math.round(t*e)/e:t}function z(t){var e=t.aspectRatio,n=t.height,i=t.width,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"none",s=V(i),d=V(n);if(s&&d){var u=n*e;(r==="contain"||r==="none")&&u>i||r==="cover"&&u<i?n=i/e:i=n*e}else s?n=i/e:d&&(i=n*e);return{width:i,height:n}}function gn(t){for(var e=fe(new Uint8Array(t)),n=e.length,i=[],r=0;r+3<n;){var s=e[r],d=e[r+1];if(s===255&&d===218)break;if(s===255&&d===216)r+=2;else{var u=e[r+2]*256+e[r+3],o=r+u+2,a=e.slice(r,o);i.push(a),r=o}}return i.reduce(function(c,h){return h[0]===255&&h[1]===225?c.concat(h):c},[])}function bn(t,e){var n=fe(new Uint8Array(t));if(n[2]!==255||n[3]!==224)return t;var i=n[4]*256+n[5],r=[255,216].concat(e,n.slice(4+i));return new Uint8Array(r)}var yn=C.ArrayBuffer,ae=C.FileReader,R=C.URL||C.webkitURL,wn=/\.\w+$/,xn=C.Compressor,kn=function(){function t(e,n){nn(this,t),this.file=e,this.exif=[],this.image=new Image,this.options=W(W({},Ve),n),this.aborted=!1,this.result=null,this.init()}return an(t,[{key:"init",value:function(){var n=this,i=this.file,r=this.options;if(!sn(i)){this.fail(new Error("The first argument must be a File or Blob object."));return}var s=i.type;if(!ue(s)){this.fail(new Error("The first argument must be an image File or Blob object."));return}if(!R||!ae){this.fail(new Error("The current browser does not support image compression."));return}yn||(r.checkOrientation=!1,r.retainExif=!1);var d=s==="image/jpeg",u=d&&r.checkOrientation,o=d&&r.retainExif;if(R&&!u&&!o)this.load({url:R.createObjectURL(i)});else{var a=new ae;this.reader=a,a.onload=function(c){var h=c.target,l=h.result,p={},f=1;u&&(f=hn(l),f>1&&G(p,mn(f))),o&&(n.exif=gn(l)),u||o?!R||f>1?p.url=Je(l,s):p.url=R.createObjectURL(i):p.url=l,n.load(p)},a.onabort=function(){n.fail(new Error("Aborted to read the image with FileReader."))},a.onerror=function(){n.fail(new Error("Failed to read the image with FileReader."))},a.onloadend=function(){n.reader=null},u||o?a.readAsArrayBuffer(i):a.readAsDataURL(i)}}},{key:"load",value:function(n){var i=this,r=this.file,s=this.image;s.onload=function(){i.draw(W(W({},n),{},{naturalWidth:s.naturalWidth,naturalHeight:s.naturalHeight}))},s.onabort=function(){i.fail(new Error("Aborted to load the image."))},s.onerror=function(){i.fail(new Error("Failed to load the image."))},C.navigator&&/(?:iPad|iPhone|iPod).*?AppleWebKit/i.test(C.navigator.userAgent)&&(s.crossOrigin="anonymous"),s.alt=r.name,s.src=n.url}},{key:"draw",value:function(n){var i=this,r=n.naturalWidth,s=n.naturalHeight,d=n.rotate,u=d===void 0?0:d,o=n.scaleX,a=o===void 0?1:o,c=n.scaleY,h=c===void 0?1:c,l=this.file,p=this.image,f=this.options,m=document.createElement("canvas"),v=m.getContext("2d"),_=Math.abs(u)%180===90,P=(f.resize==="contain"||f.resize==="cover")&&V(f.width)&&V(f.height),k=Math.max(f.maxWidth,0)||1/0,S=Math.max(f.maxHeight,0)||1/0,j=Math.max(f.minWidth,0)||0,U=Math.max(f.minHeight,0)||0,O=r/s,y=f.width,w=f.height;if(_){var he=[S,k];k=he[0],S=he[1];var me=[U,j];j=me[0],U=me[1];var ve=[w,y];y=ve[0],w=ve[1]}P&&(O=y/w);var ge=z({aspectRatio:O,width:k,height:S},"contain");k=ge.width,S=ge.height;var be=z({aspectRatio:O,width:j,height:U},"cover");if(j=be.width,U=be.height,P){var ye=z({aspectRatio:O,width:y,height:w},f.resize);y=ye.width,w=ye.height}else{var we=z({aspectRatio:O,width:y,height:w}),xe=we.width;y=xe===void 0?r:xe;var ke=we.height;w=ke===void 0?s:ke}y=Math.floor(Ze(Math.min(Math.max(y,j),k))),w=Math.floor(Ze(Math.min(Math.max(w,U),S)));var vt=-y/2,gt=-w/2,bt=y,yt=w,Q=[];if(P){var _e=0,Be=0,ee=r,te=s,Ee=z({aspectRatio:O,width:r,height:s},{contain:"cover",cover:"contain"}[f.resize]);ee=Ee.width,te=Ee.height,_e=(r-ee)/2,Be=(s-te)/2,Q.push(_e,Be,ee,te)}if(Q.push(vt,gt,bt,yt),_){var Pe=[w,y];y=Pe[0],w=Pe[1]}m.width=y,m.height=w,ue(f.mimeType)||(f.mimeType=l.type);var Te="transparent";l.size>f.convertSize&&f.convertTypes.indexOf(f.mimeType)>=0&&(f.mimeType="image/jpeg");var Ce=f.mimeType==="image/jpeg";if(Ce&&(Te="#fff"),v.fillStyle=Te,v.fillRect(0,0,y,w),f.beforeDraw&&f.beforeDraw.call(this,v,m),!this.aborted&&(v.save(),v.translate(y/2,w/2),v.rotate(u*Math.PI/180),v.scale(a,h),v.drawImage.apply(v,[p].concat(Q)),v.restore(),f.drew&&f.drew.call(this,v,m),!this.aborted)){var Se=function(I){if(!i.aborted){var Fe=function(D){return i.done({naturalWidth:r,naturalHeight:s,result:D})};if(I&&Ce&&f.retainExif&&i.exif&&i.exif.length>0){var Re=function(D){return Fe(Ge(Je(bn(D,i.exif),f.mimeType)))};if(I.arrayBuffer)I.arrayBuffer().then(Re).catch(function(){i.fail(new Error("Failed to read the compressed image with Blob.arrayBuffer()."))});else{var A=new ae;i.reader=A,A.onload=function(ne){var D=ne.target;Re(D.result)},A.onabort=function(){i.fail(new Error("Aborted to read the compressed image with FileReader."))},A.onerror=function(){i.fail(new Error("Failed to read the compressed image with FileReader."))},A.onloadend=function(){i.reader=null},A.readAsArrayBuffer(I)}}else Fe(I)}};m.toBlob?m.toBlob(Se,f.mimeType,f.quality):Se(Ge(m.toDataURL(f.mimeType,f.quality)))}}},{key:"done",value:function(n){var i=n.naturalWidth,r=n.naturalHeight,s=n.result,d=this.file,u=this.image,o=this.options;if(R&&u.src.indexOf("blob:")===0&&R.revokeObjectURL(u.src),s)if(o.strict&&!o.retainExif&&s.size>d.size&&o.mimeType===d.type&&!(o.width>i||o.height>r||o.minWidth>i||o.minHeight>r||o.maxWidth<i||o.maxHeight<r))s=d;else{var a=new Date;s.lastModified=a.getTime(),s.lastModifiedDate=a,s.name=d.name,s.name&&s.type!==d.type&&(s.name=s.name.replace(wn,pn(s.type)))}else s=d;this.result=s,o.success&&o.success.call(this,s)}},{key:"fail",value:function(n){var i=this.options;if(i.error)i.error.call(this,n);else throw n}},{key:"abort",value:function(){this.aborted||(this.aborted=!0,this.reader?this.reader.abort():this.image.complete?this.fail(new Error("The compression process has been aborted.")):(this.image.onload=null,this.image.onabort()))}}],[{key:"noConflict",value:function(){return window.Compressor=xn,t}},{key:"setDefaults",value:function(n){G(Ve,n)}}]),t}(),$={exports:{}},_n=$.exports,Ke;function Bn(){return Ke||(Ke=1,function(t,e){(function(n,i){i()})(_n,function(){function n(a,c){return typeof c>"u"?c={autoBom:!1}:typeof c!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),c={autoBom:!c}),c.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(a.type)?new Blob(["\uFEFF",a],{type:a.type}):a}function i(a,c,h){var l=new XMLHttpRequest;l.open("GET",a),l.responseType="blob",l.onload=function(){o(l.response,c,h)},l.onerror=function(){console.error("could not download file")},l.send()}function r(a){var c=new XMLHttpRequest;c.open("HEAD",a,!1);try{c.send()}catch{}return 200<=c.status&&299>=c.status}function s(a){try{a.dispatchEvent(new MouseEvent("click"))}catch{var c=document.createEvent("MouseEvents");c.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(c)}}var d=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof L=="object"&&L.global===L?L:void 0,u=d.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),o=d.saveAs||(typeof window!="object"||window!==d?function(){}:"download"in HTMLAnchorElement.prototype&&!u?function(a,c,h){var l=d.URL||d.webkitURL,p=document.createElement("a");c=c||a.name||"download",p.download=c,p.rel="noopener",typeof a=="string"?(p.href=a,p.origin===location.origin?s(p):r(p.href)?i(a,c,h):s(p,p.target="_blank")):(p.href=l.createObjectURL(a),setTimeout(function(){l.revokeObjectURL(p.href)},4e4),setTimeout(function(){s(p)},0))}:"msSaveOrOpenBlob"in navigator?function(a,c,h){if(c=c||a.name||"download",typeof a!="string")navigator.msSaveOrOpenBlob(n(a,h),c);else if(r(a))i(a,c,h);else{var l=document.createElement("a");l.href=a,l.target="_blank",setTimeout(function(){s(l)})}}:function(a,c,h,l){if(l=l||open("","_blank"),l&&(l.document.title=l.document.body.innerText="downloading..."),typeof a=="string")return i(a,c,h);var p=a.type==="application/octet-stream",f=/constructor/i.test(d.HTMLElement)||d.safari,m=/CriOS\/[\d]+/.test(navigator.userAgent);if((m||p&&f||u)&&typeof FileReader<"u"){var v=new FileReader;v.onloadend=function(){var k=v.result;k=m?k:k.replace(/^data:[^;]*;/,"data:attachment/file;"),l?l.location.href=k:location=k,l=null},v.readAsDataURL(a)}else{var _=d.URL||d.webkitURL,P=_.createObjectURL(a);l?l.location=P:location.href=P,l=null,setTimeout(function(){_.revokeObjectURL(P)},4e4)}});d.saveAs=o.saveAs=o,t.exports=o})}($)),$.exports}var Y=Bn();const Ye=t=>{const e=new FormData;for(const n in t){const i=t[n];i instanceof File?e.append(n,i,i.name):(i instanceof Blob||typeof i=="string")&&e.append(n,i)}return e},oe={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0",origin:"https://github.com",referer:"https://github.com/"},En={svg:"image/svg+xml",gif:"image/gif",jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png",mov:"video/quicktime",mp4:"video/mp4",webm:"video/webm",cpuprofile:"application/json",csv:"text/csv",dmp:"application/octet-stream",docx:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",fodg:"application/vnd.oasis.opendocument.graphics-flat-xml",fodp:"application/vnd.oasis.opendocument.presentation-flat-xml",fods:"application/vnd.oasis.opendocument.spreadsheet-flat-xml",fodt:"application/vnd.oasis.opendocument.text-flat-xml",gz:"application/gzip",json:"application/json",jsonc:"application/json",log:"text/plain",md:"text/markdown",odf:"application/vnd.oasis.opendocument.formula",odg:"application/vnd.oasis.opendocument.graphics",odp:"application/vnd.oasis.opendocument.presentation",ods:"application/vnd.oasis.opendocument.spreadsheet",odt:"application/vnd.oasis.opendocument.text",patch:"text/x-diff",pdf:"application/pdf",pptx:"application/vnd.openxmlformats-officedocument.presentationml.presentation",tgz:"application/gzip",txt:"text/plain",xls:"application/vnd.ms-excel",xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",zip:"application/x-zip-compressed"};class q extends Error{constructor(e,n,i){super(e,i),this.response=n}}const re=t=>{const e={};for(const n in t){const i=t[n];i!=null&&(e[n]=i)}return e},Pn=async t=>{const{cookie:e,fetch:n=globalThis.fetch,repositoryId:i}=t,r=t.file.name.substring(t.file.name.lastIndexOf(".")+1),s=En[r];if(!s)throw new Error(`not support file type ${r}`);const d=t.file.type?t.file:new File([t.file],t.file.name,{type:s}),u=new FormData;u.append("repository_id",String(i)),u.append("name",d.name),u.append("size",d.size.toString()),u.append("content_type",d.type);const o=await n("https://github.com/upload/policies/assets",{method:"POST",body:u,headers:re({...oe,cookie:e,"GitHub-Verified-Fetch":"true","X-Requested-With":"XMLHttpRequest"})}).then(async a=>{if(!a.ok)throw new q("failed upload policies assets",a);return a.json()});return await n(o.upload_url,{method:"POST",body:Ye({...o.form,file:d}),headers:re({authenticity_token:o.same_origin?o.upload_authenticity_token:void 0,...oe,...o.header,cookie:e})}).then(async a=>{if(!a.ok)throw new q("failed upload to s3",a)}),await n(new URL(o.asset_upload_url,"https://github.com/").href,{method:"PUT",body:Ye({authenticity_token:o.asset_upload_authenticity_token}),headers:re({...oe,cookie:e,Accept:"application/json","X-Requested-With":"XMLHttpRequest"})}).then(async a=>{if(!a.ok)throw new q("failed check authenticity upload",a)}),o.asset},se=async t=>it("https://github.com/_graphql",{method:"POST",headers:{"content-type":"text/plain;charset=UTF-8",accept:"application/json","github-verified-fetch":"true",origin:"https://github.com",referer:"https://github.com/gkd-kit/inspect/issues/46"},body:JSON.stringify(t)}).then(async e=>{if(!e.ok)throw console.error(e,await e.text()),new Error("github comment graphql failed");return e}).then(e=>e.json()),ft=async(t,e)=>{const n=await Pn({repositoryId:"661952005",file:new File([t],e),fetch:it}).catch(async r=>{throw r instanceof q&&(Ut().githubErrorDlgVisible=!0),r}),i=await se({query:"50e7774b5a519b88858e02e46e0348da",variables:{connections:["client:I_kwDOJ3SWBc6viUWN:__Issue__backTimelineItems_connection(visibleEventsOnly:true)"],input:{body:n.href,subjectId:"I_kwDOJ3SWBc6viUWN"}}});return await Z(1e3),await se({query:"d0752b2e49295017f67c84f21bfe41a3",variables:{input:{state:"UNSUBSCRIBED",subscribableId:"I_kwDOJ3SWBc6viUWN"}}}),await se({query:"b0f125991160e607a64d9407db9c01b3",variables:{connections:[],input:{id:i.data.addComment.timelineEdge.node.id}}}),n},de=async t=>{t.nodes.length||(t=await ot.getItem(t.id)||t);const e=new(await pe);return e.file("snapshot.json",JSON.stringify(t)).file("screenshot.png",await K.getItem(t.id)),await e.generateAsync({type:"blob",compression:"STORE"})},Tn=async t=>{const e=`snapshot-${t.id}.zip`;Y.saveAs(await de(t),e)},Cn=async t=>{const e=`snapshot-${t.id}.png`;Y.saveAs(new Blob([await K.getItem(t.id)],{type:"image/png"}),e)},Ln=async t=>{const e=new(await pe);for(const i of t)await Z(),e.file(i.id+".png",new Blob([await K.getItem(i.id)],{type:"image/png"}));const n=await e.generateAsync({type:"blob",compression:"STORE"});Y.saveAs(n,`batch-png-${Date.now()}.zip`)},Nn=async t=>{const e=new(await pe);for(const i of t)await Z(),e.file(i.id+".zip",await de(i));const n=await e.generateAsync({type:"blob",compression:"STORE"});Y.saveAs(n,`batch-zip-${Date.now()}.zip`)},Sn=async t=>new Promise((e,n)=>{new kn(new Blob([t],{type:"image/png"}),{quality:.75,convertSize:2e5,success(i){e(i)},error(i){n(i)}})}),dt=async t=>De[t.id]??ft(await Sn(await K.getItem(t.id)),"file.jpg").then(e=>{const n=It(e.href);if(!n)throw new Error("imageId not found");return De[t.id]=n,n}),ht=async t=>ze[t.id]||ft(await de(t).then(e=>e.arrayBuffer()),"file.zip").then(e=>(ze[t.id]=e.id,nt[e.id]=t.id,mt(t.id,e.id),e.id)),Mn=async t=>{const e=at(3);return(await Promise.allSettled(t.map(n=>e(()=>dt(n))))).reduce((n,i)=>(i.status=="fulfilled"&&n.push(i.value),n),[])},Wn=async t=>{const e=at(3);return(await Promise.allSettled(t.map(n=>e(()=>ht(n))))).reduce((n,i)=>(i.status=="fulfilled"&&n.push(i.value),n),[])},mt=async(t,e)=>fetch("https://detect.gkd.li/api/detectSnapshot?"+Dt({id:t,importId:e}).toString()),Hn=async(t,e)=>{e&&Number.isSafeInteger(+e)&&(nt[e]||await mt(t,e))},Fn={flex:"","gap-16px":""},Rn=["href"],$n=J({__name:"ActionCard",props:{snapshot:{},onDelete:{type:Function,default:zt},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,n=Lt(),{snapshotImportId:i,snapshotImageId:r}=Mt(),s=M(async()=>Cn(e.snapshot)),d=M(async()=>Tn(e.snapshot)),u=H(()=>n.resolve({name:"snapshot",params:{snapshotId:e.snapshot.id}}).href),o=M(async()=>{await $e();const l=await dt(e.snapshot);He({title:"分享链接",content:Ne(l)})}),a=M(async()=>{await $e();const l=await ht(e.snapshot);He({title:"分享链接",content:location.origin+`/i/${l}`})}),c=async()=>{await ot.removeItem(e.snapshot.id),await Z(500),e.onDelete()},h=async l=>navigator.clipboard.writeText(l).then(()=>{X.success("复制成功")}).catch(()=>{X.success("复制失败")});return(l,p)=>{const f=Nt("SvgIcon"),m=le,v=$t,_=rt,P=Gt,k=en;return T(),Le("div",Fn,[l.showPreview?(T(),Le("a",{key:0,flex:"",target:"_blank",href:x(u)},[b(m,{text:"",title:"查看"},{icon:g(()=>[b(f,{name:"code"})]),_:1})],8,Rn)):N("",!0),l.showExport?(T(),F(_,{key:1},{trigger:g(()=>[b(m,{text:""},{icon:g(()=>[b(f,{name:"export"})]),_:1})]),default:g(()=>[b(v,{vertical:""},{default:g(()=>[b(m,{loading:x(d).loading,onClick:x(d).invoke},{default:g(()=>p[2]||(p[2]=[B(" 下载-快照 ")])),_:1,__:[2]},8,["loading","onClick"]),b(m,{loading:x(s).loading,onClick:x(s).invoke},{default:g(()=>p[3]||(p[3]=[B(" 下载-图片 ")])),_:1,__:[3]},8,["loading","onClick"])]),_:1})]),_:1})):N("",!0),l.showShare?(T(),F(_,{key:2},{trigger:g(()=>[b(m,{text:""},{icon:g(()=>[b(f,{name:"share"})]),_:1})]),default:g(()=>[b(v,{vertical:""},{default:g(()=>[x(i)[l.snapshot.id]?(T(),F(m,{key:0,onClick:p[0]||(p[0]=S=>h(x(Wt)(x(i)[l.snapshot.id])))},{default:g(()=>p[4]||(p[4]=[B(" 复制链接-快照 ")])),_:1,__:[4]})):(T(),F(m,{key:1,loading:x(a).loading,onClick:x(a).invoke},{default:g(()=>p[5]||(p[5]=[B(" 生成链接-快照 ")])),_:1,__:[5]},8,["loading","onClick"])),x(r)[l.snapshot.id]?(T(),F(m,{key:2,onClick:p[1]||(p[1]=S=>h(x(Ne)(x(r)[l.snapshot.id])))},{default:g(()=>p[6]||(p[6]=[B(" 复制链接-图片 ")])),_:1,__:[6]})):(T(),F(m,{key:3,loading:x(o).loading,onClick:x(o).invoke},{default:g(()=>p[7]||(p[7]=[B(" 生成链接-图片 ")])),_:1,__:[7]},8,["loading","onClick"]))]),_:1})]),_:1})):N("",!0),l.showDelete?(T(),F(k,{key:3,onPositiveClick:c},{trigger:g(()=>[b(P,null,{trigger:g(()=>[b(m,{text:""},{icon:g(()=>[b(f,{name:"delete"})]),_:1})]),default:g(()=>[p[8]||(p[8]=B(" 删除快照 "))]),_:1,__:[8]})]),default:g(()=>[p[9]||(p[9]=B(" 是否删除快照? "))]),_:1,__:[9]})):N("",!0)])}}});export{$n as _,Ln as a,Nn as b,Wn as c,Mn as d,dt as e,ht as f,Hn as g,He as s,$e as w};
|
|
17
|
-
//# sourceMappingURL=ActionCard.vue_vue_type_script_setup_true_lang-PAYp10Bk.js.map
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import{z as S,aY as u,h as le,aK as re,a$ as pe,A as ue,a_ as ce,$ as de,E as me,B as G,H as ge,I as K,J,K as M,G as a,L as w,M as r,P as s,V as j,_ as fe,W as ve,T as h,O as ke,R as D,Q as we,S as W,U as _e}from"./index-COYXkapr.js";import{e as he,a as V,b as T,p as ye}from"./snapshot-DQoBFjtA.js";import{a as Q,l as be}from"./error-aAUoJqWJ.js";import{u as Se,a as Ce,_ as xe}from"./table-qWtkkPlj.js";import{u as U,k as Ie,a as H,_ as Ne}from"./dayjs.min-lRbA81xW.js";import{_ as Re}from"./Input-DakhkhRu.js";import"./node-BAV4BU5G.js";const Pe=E=>{const C=S(E),o=async(n,f={})=>{var z;if(!C.value)throw new Error("origin must exist");const I=new URL("/api/"+n,C.value);Object.entries(f.query||{}).forEach(([v,y])=>{y!==void 0&&I.searchParams.set(v,String(y))});const d=await he(I,f.init).catch(v=>{throw u.error("网络错误:/"+n),v});if(!d.ok)throw u.error("接口错误:/"+n+":"+d.status),d;if((z=d.headers.get("Content-Type"))!=null&&z.includes("application/json")){const v=await d.clone().json();if(v.__error)throw u.error(v.message),d}return d},m=async(...n)=>await(await o(...n)).json(),c=async(...n)=>await(await o(...n)).blob(),g=async(...n)=>await(await o(...n)).arrayBuffer();return{origin:C,api:{device:async()=>m("device"),snapshot:async n=>m("snapshot",{query:n}),screenshot:async n=>g("screenshot",{query:n}),captureSnapshot:async()=>m("captureSnapshot"),snapshots:async()=>m("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=>(n=structuredClone(n),n.action||=void 0,m("execSelector",{init:{method:"POST",body:JSON.stringify(n),headers:{"Content-Type":"application/json"}}}))}}},Te={flex:"","gap-10px":"","flex-items-center":""},Ue={flex:"","flex-col":"","p-10px":"","gap-10px":"","h-full":""},ze={flex:"","items-center":"","gap-24px":""},Ae={"whitespace-nowrap":""},Ee=le({__name:"DevicePage",setup(E){const C=re(),{api:o,origin:m}=Pe(),c=pe("device_link",""),g=S(),x=U(async()=>{c.value&&(m.value=Q(()=>new URL(c.value.trim()),()=>"非法设备地址").origin,c.value=m.value,g.value=await o.device())});ue(async()=>{await ce(500),de(c.value)&&x.invoke()});const n=S([]);me(async()=>{if(!g.value)return;document.title="已连接 "+g.value.manufacturer;const e=await o.snapshots();e.sort((t,p)=>p.id-t.id),n.value=e,R.value=""});const f=U(async()=>{const e=await o.captureSnapshot(),t=await o.screenshot({id:e.id});await V.setItem(e.id,e),await T.setItem(e.id,t),u.success("保存快照成功");const p=await o.snapshots();p.sort((_,P)=>P.id-_.id),n.value=p}),I=U(async()=>{const e=(await o.snapshots()).map(l=>l.id),t=new Set((await T.keys()).map(l=>parseInt(l))),p=e.filter(l=>!t.has(l));if(p.length==0){u.success("没有新记录可导入");return}let _=0;const P=ye(3);await Promise.all(p.map(l=>P(async()=>{const[B,q]=await Promise.all([o.snapshot({id:l}),o.screenshot({id:l})]);B.nodes&&(await Promise.all([V.setItem(l,B),T.setItem(l,q)]),_++)}))),u.success(`导入${_}条新记录`)}),{activityIdCol:d,appIdCol:z,appNameCol:v,ctimeCol:y,appVersionCodeCol:Y,appVersionNameCol:X,resetColWidth:Z}=Se(),ee=e=>{e.columnKey==y.key&&(y.sortOrder=e.order)},F=Ie(async e=>{if(await V.hasItem(e.id)||await V.setItem(e.id,await o.snapshot({id:e.id})),!await T.hasItem(e.id)){const t=await o.screenshot({id:e.id});await T.setItem(e.id,t)}window.open(C.resolve({name:"snapshot",params:{snapshotId:e.id}}).href)},e=>e.id),te=[y,v,z,Y,X,d,{key:"actions",title:"操作",fixed:"right",width:"120px",render(e){return a(H,{size:"small"},{default:()=>[a(D,{size:"small",loading:F.loading[e.id],onClick:()=>F.invoke(e)},{default:()=>[h("查看")]})]})}}],N=G({page:1,pageSize:50,showSizePicker:!0,pageSizes:[50,100],onChange:e=>{N.page=e},onUpdatePageSize:e=>{N.pageSize=e,N.page=1}});ge(N,Z);const A=S(!1),R=S(""),L=U(async()=>{const e=Q(()=>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("修改成功")}}),O=S(!1),se=[{label:"仅查询",value:""},{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}),$=U(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("查询成功")}),ne=`
|
|
2
|
-
请输入订阅文本(JSON5语法):
|
|
3
|
-
示例1-更新单个应用的规则:
|
|
4
|
-
{
|
|
5
|
-
id: 'appId',
|
|
6
|
-
groups: []
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
示例2-更新多个应用的规则:
|
|
10
|
-
[
|
|
11
|
-
{
|
|
12
|
-
id: 'appId1',
|
|
13
|
-
groups: []
|
|
14
|
-
},
|
|
15
|
-
{
|
|
16
|
-
id: 'appId2',
|
|
17
|
-
groups: []
|
|
18
|
-
}
|
|
19
|
-
]
|
|
20
|
-
|
|
21
|
-
示例3-更新全局规则(1.7.0):
|
|
22
|
-
{
|
|
23
|
-
name: '全局规则-1',
|
|
24
|
-
key: 0,
|
|
25
|
-
rules: []
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
示例3-更新多个全局规则(1.7.0):
|
|
29
|
-
[
|
|
30
|
-
{
|
|
31
|
-
name: '全局规则-1',
|
|
32
|
-
key: 0,
|
|
33
|
-
rules: []
|
|
34
|
-
},
|
|
35
|
-
{
|
|
36
|
-
name: '全局规则-2',
|
|
37
|
-
key: 1,
|
|
38
|
-
rules: []
|
|
39
|
-
}
|
|
40
|
-
]
|
|
41
|
-
|
|
42
|
-
示例4-更新整个订阅(1.7.0):
|
|
43
|
-
{
|
|
44
|
-
apps: [],
|
|
45
|
-
globalGroups: [],
|
|
46
|
-
categories: [],
|
|
47
|
-
}
|
|
48
|
-
`.trim();return(e,t)=>{const p=Re,_=fe,P=ve,l=H,B=Ce,q=K("SvgIcon"),b=D,oe=K("RouterLink"),ae=Ne,ie=xe;return M(),J(W,null,[a(_,{show:s(A),"onUpdate:show":t[1]||(t[1]=i=>j(A)?A.value=i:null),preset:"dialog",style:{width:"800px"},title:"修改内存订阅","positive-text":"确认","positive-button-props":{loading:s(L).loading,onClick(){s(L).invoke()}}},{default:r(()=>[a(p,{value:s(R),"onUpdate:value":t[0]||(t[0]=i=>j(R)?R.value=i:null),disabled:s(L).loading,type:"textarea",class:"gkd_code",autosize:{minRows:20,maxRows:25},placeholder:s(ne)},null,8,["value","disabled","placeholder"])]),_:1},8,["show","positive-button-props"]),a(_,{show:s(O),"onUpdate:show":t[5]||(t[5]=i=>j(O)?O.value=i:null),preset:"dialog",style:{width:"800px"},title:"执行选择器","positive-text":"确认","positive-button-props":{loading:s($).loading,onClick(){s($).invoke()}}},{default:r(()=>[a(p,{value:s(k).selector,"onUpdate:value":t[2]||(t[2]=i=>s(k).selector=i),disabled:s($).loading,type:"textarea",class:"gkd_code",autosize:{minRows:4,maxRows:10},placeholder:"请输入合法的选择器"},null,8,["value","disabled"]),t[12]||(t[12]=w("div",{"h-15px":""},null,-1)),a(l,null,{default:r(()=>[a(P,{checked:s(k).quickFind,"onUpdate:checked":t[3]||(t[3]=i=>s(k).quickFind=i)},{default:r(()=>t[9]||(t[9]=[h(" 快速查找 ")])),_:1,__:[9]},8,["checked"]),t[10]||(t[10]=w("a",{href:"https://gkd.li/api/interfaces/RawCommonProps.html#quickfind",target:"_blank",rel:"noopener noreferrer"}," 查找说明 ",-1))]),_:1,__:[10]}),t[13]||(t[13]=w("div",{"h-10px":""},null,-1)),w("div",Te,[a(B,{value:s(k).action,"onUpdate:value":t[4]||(t[4]=i=>s(k).action=i),options:se,class:"w-150px"},null,8,["value"]),t[11]||(t[11]=w("a",{href:"https://gkd.li/api/interfaces/RawRuleProps#action",target:"_blank",rel:"noopener noreferrer"}," 操作说明 ",-1))])]),_:1,__:[12,13]},8,["show","positive-button-props"]),w("div",Ue,[w("div",ze,[a(oe,{to:"/",flex:"","ml-12px":"",title:"首页"},{default:r(()=>[a(b,{text:"",style:{"--n-icon-size":"24px"}},{icon:r(()=>[a(q,{name:"home"})]),_:1})]),_:1}),a(ae,null,{default:r(()=>[a(p,{value:s(c),"onUpdate:value":t[6]||(t[6]=i=>j(c)?c.value=i:null),placeholder:"请输入设备地址",style:{width:"320px"},onKeyup:we(s(x).invoke,["enter"])},null,8,["value","onKeyup"]),a(b,{loading:s(x).loading,onClick:s(x).invoke},{default:r(()=>t[14]||(t[14]=[h(" 刷新连接 ")])),_:1,__:[14]},8,["loading","onClick"])]),_:1}),s(g)?(M(),J(W,{key:0},[w("div",Ae,_e(`已连接 ${s(g).manufacturer} Android ${s(g).release}`),1),a(b,{loading:s(f).loading,onClick:s(f).invoke},{default:r(()=>t[15]||(t[15]=[h(" 快照 ")])),_:1,__:[15]},8,["loading","onClick"]),a(b,{loading:s(I).loading,onClick:s(I).invoke},{default:r(()=>t[16]||(t[16]=[h(" 下载设备所有快照 ")])),_:1,__:[16]},8,["loading","onClick"]),a(b,{onClick:t[7]||(t[7]=i=>A.value=!0)},{default:r(()=>t[17]||(t[17]=[h(" 修改内存订阅 ")])),_:1,__:[17]}),a(b,{onClick:t[8]||(t[8]=i=>O.value=!0)},{default:r(()=>t[18]||(t[18]=[h(" 执行选择器 ")])),_:1,__:[18]})],64)):ke("",!0)]),a(ie,{striped:"","flex-height":"",data:s(n),columns:te,pagination:s(N),size:"small",class:"flex-1","scroll-x":1200,"onUpdate:sorter":ee},null,8,["data","pagination"])])],64)}}});export{Ee as default};
|
|
49
|
-
//# sourceMappingURL=DevicePage-DsvVoBQM.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DevicePage-DsvVoBQM.js","sources":["../../src/utils/api.ts","../../src/views/DevicePage.vue"],"sourcesContent":["import { message } from './discrete';\nimport { enhanceFetch } from './fetch';\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 data = structuredClone(data);\n data.action ||= undefined;\n return jsonRpc<{ message: string; action: string; result: boolean }>(\n `execSelector`,\n {\n init: {\n method: 'POST',\n body: JSON.stringify(data),\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 { DataTableColumns, PaginationProps } from 'naive-ui';\nimport type { SortState } from 'naive-ui/es/data-table/src/interface';\nimport pLimit from 'p-limit';\nimport JSON5 from 'json5';\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: ``,\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 :positive-button-props=\"{\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 :positive-button-props=\"{\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 />\n <NSpace>\n <NCheckbox v-model:checked=\"clickAction.quickFind\">\n 快速查找\n </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 />\n <div\n flex\n gap-10px\n flex-items-center\n >\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\n flex\n flex-col\n p-10px\n gap-10px\n h-full\n >\n <div\n flex\n items-center\n gap-24px\n >\n <RouterLink\n to=\"/\"\n flex\n ml-12px\n title=\"首页\"\n >\n <NButton\n text\n style=\"--n-icon-size: 24px\"\n >\n <template #icon>\n <SvgIcon name=\"home\" />\n </template>\n </NButton>\n </RouterLink>\n <NInputGroup>\n <NInput\n v-model:value=\"link\"\n placeholder=\"请输入设备地址\"\n :style=\"{ width: `320px` }\"\n @keyup.enter=\"connect.invoke\"\n />\n <NButton\n :loading=\"connect.loading\"\n @click=\"connect.invoke\"\n >\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 :loading=\"captureSnapshot.loading\"\n @click=\"captureSnapshot.invoke\"\n >\n 快照\n </NButton>\n <NButton\n :loading=\"downloadAllSnapshot.loading\"\n @click=\"downloadAllSnapshot.invoke\"\n >\n 下载设备所有快照\n </NButton>\n <NButton @click=\"showSubsModel = true\">\n 修改内存订阅\n </NButton>\n <NButton @click=\"showSelectorModel = true\">\n 执行选择器\n </NButton>\n </template>\n </div>\n <NDataTable\n striped\n flex-height\n :data=\"snapshots\"\n :columns=\"columns\"\n :pagination=\"pagination\"\n size=\"small\"\n class=\"flex-1\"\n :scroll-x=\"1200\"\n @update:sorter=\"handleSorterChange\"\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","clickAction","selector","action","quickFind","execSelector","fastQuery","placeholder","_createVNode","_component_NModal","show","_unref","$event","preset","style","_component_NInput","disabled","type","class","autosize","_cache","_createElementVNode","_component_NSpace","_component_NCheckbox","checked","target","rel","_hoisted_1","_component_NSelect","_hoisted_2","_hoisted_3","_component_RouterLink","to","flex","_component_NButton","text","icon","_component_SvgIcon","_component_NInputGroup","onKeyup","_withKeys","_createElementBlock","_Fragment","_hoisted_4","_toDisplayString","release","_component_NDataTable","striped","size"],"mappings":"4hBAQO,MAAMA,GAAgBC,GAAwB,CACnD,MAAMC,EAASC,EAAWF,CAAU,EAC9BG,EAAM,MAAOC,EAAiBC,EAAsB,CAAA,IAAO,OAC/D,GAAI,CAACJ,EAAO,MACV,MAAM,IAAI,MAAM,mBAAmB,EAErC,MAAMK,EAAI,IAAI,IAAI,QAAUF,EAASH,EAAO,KAAK,EACjD,OAAO,QAAQI,EAAQ,OAAS,CAAA,CAAE,EAAE,QAAQ,CAAC,CAACE,EAAKC,CAAK,IAAM,CACxDA,IAAU,QACdF,EAAE,aAAa,IAAIC,EAAK,OAAOC,CAAK,CAAC,CAAA,CACtC,EACD,MAAMC,EAAW,MAAMC,GAAaJ,EAAGD,EAAQ,IAAI,EAAE,MAAOM,GAAM,CAChE,MAAAC,EAAQ,MAAM,SAAWR,CAAO,EAC1BO,CAAA,CACP,EACD,GAAI,CAACF,EAAS,GACZ,MAAAG,EAAQ,MAAM,SAAWR,EAAU,IAAMK,EAAS,MAAM,EAClDA,EAER,IAAII,EAAAJ,EAAS,QAAQ,IAAI,cAAc,IAAnC,MAAAI,EAAsC,SAAS,oBAAqB,CACtE,MAAMC,EAAS,MAAML,EAAS,MAAA,EAAQ,KAAA,EACtC,GAAIK,EAAM,QACR,MAAAF,EAAQ,MAAME,EAAM,OAAO,EACrBL,CACR,CAEF,OAAOA,CAAA,EAEHM,EAAU,SAAaC,IAEnB,MADS,MAAMb,EAAI,GAAGa,CAAI,GACX,KAAA,EAEnBC,EAAU,SAAUD,IAEjB,MADU,MAAMb,EAAI,GAAGa,CAAI,GACZ,KAAA,EAElBE,EAAiB,SAAUF,IAExB,MADU,MAAMb,EAAI,GAAGa,CAAI,GACZ,YAAA,EAiExB,MAAO,CAAE,OAAAf,EAAQ,IA/DL,CACV,OAAQ,SAAYc,EAAgB,QAAQ,EAC5C,SAAU,MAAOI,GACRJ,EAAkB,WAAY,CAAE,MAAAI,CAAA,CAAO,EAEhD,WAAY,MAAOA,GACVD,EAAe,aAAc,CAAE,MAAAC,CAAA,CAAO,EAE/C,gBAAiB,SACRJ,EAAkB,iBAAiB,EAE5C,UAAW,SACFA,EAAoB,WAAW,EAExC,eAAgB,MAAOK,GACdH,EAAQ,iBAAkB,CAC/B,KAAM,CACJ,OAAQ,OACR,KAAM,KAAK,UAAUG,CAAI,EACzB,QAAS,CACP,eAAgB,kBAAA,CAClB,CACF,CACD,EAEH,mBAAoB,MAAOA,GAClBH,EAAQ,qBAAsB,CACnC,KAAM,CACJ,OAAQ,OACR,KAAM,KAAK,UAAU,CACnB,GAAGG,EACH,GAAI,GACJ,KAAM,OACN,QAAS,CAAA,CACV,EACD,QAAS,CACP,eAAgB,kBAAA,CAClB,CACF,CACD,EAEH,aAAc,MAAOA,IAMnBA,EAAO,gBAAgBA,CAAI,EAC3BA,EAAK,SAAW,OACTL,EACL,eACA,CACE,KAAM,CACJ,OAAQ,OACR,KAAM,KAAK,UAAUK,CAAI,EACzB,QAAS,CACP,eAAgB,kBAAA,CAClB,CACF,CACF,EAEJ,CAEe,CACnB,kOClGA,MAAMC,EAASC,GAAS,EAClB,CAAEC,IAAAA,EAAKtB,OAAAA,GAAWF,GAAY,EAC9ByB,EAAOC,GAAW,cAAe,EAAE,EACnCC,EAASxB,EAAU,EACnByB,EAAUC,EAAQ,SAAY,CAC7BJ,EAAKhB,QACVP,EAAOO,MAAQqB,EACb,IAAM,IAAIC,IAAIN,EAAKhB,MAAMuB,KAAI,CAAE,EAC/B,IAAM,QACR,EAAE9B,OACFuB,EAAKhB,MAAQP,EAAOO,MACpBkB,EAAOlB,MAAQ,MAAMe,EAAIG,OAAM,EACjC,CAAC,EACDM,GAAU,SAAY,CACpB,MAAMC,GAAM,GAAG,EACXC,GAAWV,EAAKhB,KAAK,GACvBmB,EAAQQ,OAAM,CAElB,CAAC,EAED,MAAMC,EAAYlC,EAAuB,EAAE,EAC3CmC,GAAY,SAAY,CACtB,GAAI,CAACX,EAAOlB,MAAO,OACnB8B,SAASC,MAAQ,OAASb,EAAOlB,MAAMgC,aACvC,MAAMC,EAAS,MAAMlB,EAAIa,UAAS,EAClCK,EAAOC,KAAK,CAACC,EAAGC,IAAMA,EAAEC,GAAKF,EAAEE,EAAE,EACjCT,EAAU5B,MAAQiC,EAClBK,EAAStC,MAAQ,EACnB,CAAC,EAED,MAAMuC,EAAkBnB,EAAQ,SAAY,CAC1C,MAAMoB,EAAW,MAAMzB,EAAIwB,gBAAe,EACpCE,EAAa,MAAM1B,EAAI0B,WAAW,CAAEJ,GAAIG,EAASH,EAAG,CAAC,EAC3D,MAAMK,EAAgBC,QAAQH,EAASH,GAAIG,CAAQ,EACnD,MAAMI,EAAkBD,QAAQH,EAASH,GAAII,CAAU,EACvDrC,EAAQyC,QAAQ,QAAQ,EACxB,MAAMZ,EAAS,MAAMlB,EAAIa,UAAS,EAClCK,EAAOC,KAAK,CAACC,EAAGC,IAAMA,EAAEC,GAAKF,EAAEE,EAAE,EACjCT,EAAU5B,MAAQiC,CACpB,CAAC,EACKa,EAAsB1B,EAAQ,SAAY,CAC9C,MAAM2B,GAAe,MAAMhC,EAAIa,UAAS,GAAIoB,IAAKC,GAAMA,EAAEZ,EAAE,EACrDa,EAAmB,IAAIC,KAC1B,MAAMP,EAAkBQ,QAAQJ,IAAKC,GAAMI,SAASJ,CAAC,CAAC,CACzD,EACMK,EAAsBP,EAAYQ,OACrCC,GAAM,CAACN,EAAiBO,IAAID,CAAC,CAChC,EACA,GAAIF,EAAoBI,QAAU,EAAG,CACnCtD,EAAQyC,QAAQ,UAAU,EAC1B,MACF,CACA,IAAIc,EAAI,EACR,MAAMC,EAAQC,GAAO,CAAC,EACtB,MAAMC,QAAQC,IACZT,EAAoBN,IAAKgB,GACvBJ,EAAM,SAAY,CAChB,KAAM,CAACK,EAAaC,CAAa,EAAI,MAAMJ,QAAQC,IAAI,CACrDhD,EAAIyB,SAAS,CAAEH,GAAI2B,CAAW,CAAC,EAC/BjD,EAAI0B,WAAW,CAAEJ,GAAI2B,EAAY,CAAC,CAC1B,EACLC,EAAYE,QACjB,MAAML,QAAQC,IAAI,CAChBrB,EAAgBC,QAAQqB,EAAYC,CAAW,EAC/CrB,EAAkBD,QAAQqB,EAAYE,CAAa,CAAC,CACrD,EACDP,KACD,CACH,CACF,EACAvD,EAAQyC,QAAQ,KAAKc,CAAC,MAAM,CAC9B,CAAC,EAEK,CACJS,cAAAA,EACAC,SAAAA,EACAC,WAAAA,EACAC,SAAAA,EACAC,kBAAAA,EACAC,kBAAAA,EACAC,cAAAA,GACEC,GAAkB,EAChBC,GAAsBC,GAAsB,CAC5CA,EAAOC,WAAaP,EAASxE,MAC/BwE,EAASQ,UAAYF,EAAOG,QAG1BC,EAAkBC,GACtB,MAAOC,GAAkB,CAIvB,GAHM,MAAMzC,EAAgB0C,QAAQD,EAAI9C,EAAE,GACxC,MAAMK,EAAgBC,QAAQwC,EAAI9C,GAAI,MAAMtB,EAAIyB,SAAS,CAAEH,GAAI8C,EAAI9C,EAAG,CAAC,CAAC,EAEtE,CAAE,MAAMO,EAAkBwC,QAAQD,EAAI9C,EAAE,EAAI,CAC9C,MAAMgD,EAAK,MAAMtE,EAAI0B,WAAW,CAAEJ,GAAI8C,EAAI9C,EAAG,CAAC,EAC9C,MAAMO,EAAkBD,QAAQwC,EAAI9C,GAAIgD,CAAE,CAC5C,CACAC,OAAOC,KACL1E,EAAO2E,QAAQ,CACbC,KAAM,WACNC,OAAQ,CAAE1B,WAAYmB,EAAI9C,EAAG,EAC9B,EAAEsD,IACL,CACF,EACChC,GAAMA,EAAEtB,EACX,EAEMuD,GAAsC,CAC1CrB,EACAD,EACAD,EACAG,EACAC,EACAL,EACA,CACErE,IAAK,UACLgC,MAAO,KACP8D,MAAO,QACPC,MAAO,QACPC,OAAOZ,EAAK,CACV,OAAAa,EAAAC,EAAA,CAAA,KAAA,OAAA,EAAA,CAAAC,QAAAA,IAAA,CAAAF,EAAAC,EAAA,CAAA,KAAA,QAAA,QAIehB,EAAgBkB,QAAQhB,EAAI9C,EAAE,EAAC,QAC/B+D,IAAMnB,EAAgBtD,OAAOwD,CAAG,CAAC,EAAA,CAAAe,QAAAA,IAAA,CAAAG,EAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAMlD,CACF,CAAC,EAGGC,EAAaC,EAAiC,CAClDC,KAAM,EACNC,SAAU,GACVC,eAAgB,GAChBC,UAAW,CAAC,GAAI,GAAG,EACnBC,SAAWJ,GAAiB,CAC1BF,EAAWE,KAAOA,GAEpBK,iBAAmBJ,GAAqB,CACtCH,EAAWG,SAAWA,EACtBH,EAAWE,KAAO,CACpB,CACF,CAAC,EACDM,GAAMR,EAAY5B,CAAa,EAE/B,MAAMqC,EAAgBrH,EAAW,EAAK,EAChC4C,EAAW5C,EAAW,EAAE,EACxBsH,EAAa5F,EAAQ,SAAY,CACrC,MAAMR,EAAOS,EAAU,IAAM4F,GAAMC,MAAM5E,EAAStC,MAAMuB,KAAI,CAAE,CAAC,EAC/D,GAAKX,EACL,IAAIA,EAAKuG,YAAcvG,EAAKwG,cAAgBxG,EAAKyG,KAC/C,MAAMtG,EAAIuG,mBAAmB1G,CAAI,UACxB,OAAOA,EAAKyB,IAAM,SAC3B,MAAMtB,EAAIuG,mBAAmB,CAC3BD,KAAM,CAACzG,CAAI,CACb,CAAC,UACQ2G,MAAMC,QAAQ5G,CAAI,GAAK,OAAOA,EAAK,CAAC,EAAEyB,IAAM,SACrD,MAAMtB,EAAIuG,mBAAmB,CAC3BD,KAAMzG,CACR,CAAC,UACQ,OAAOA,EAAKb,KAAO,SAC5B,MAAMgB,EAAIuG,mBAAmB,CAC3BF,aAAc,CAACxG,CAAI,CACrB,CAAC,UACQ2G,MAAMC,QAAQ5G,CAAI,GAAK,OAAOA,EAAK,CAAC,EAAEb,KAAO,SACtD,MAAMgB,EAAIuG,mBAAmB,CAC3BF,aAAcxG,CAChB,CAAC,MACI,CACLR,EAAQE,MAAM,WAAW,EACzB,MACF,CACAF,EAAQyC,QAAQ,MAAM,EACxB,CAAC,EAEK4E,EAAoB/H,EAAW,EAAK,EAEpCgI,GAGA,CACJ,CACEC,MAAO,MACP3H,MAAO,EACT,EACA,CACEA,MAAO,QACP2H,MAAO,OACT,EACA,CACE3H,MAAO,YACP2H,MAAO,WACT,EACA,CACE3H,MAAO,cACP2H,MAAO,aACT,EACA,CACE3H,MAAO,OACP2H,MAAO,MACT,EACA,CACE3H,MAAO,YACP2H,MAAO,WACT,EACA,CACE3H,MAAO,gBACP2H,MAAO,eACT,EACA,CACE3H,MAAO,kBACP2H,MAAO,iBACT,CAAC,EAEGC,EAAcrB,EAAgB,CAClCsB,SAAU,GACVC,OAAQ,QACRC,UAAW,EACb,CAAC,EACKC,EAAe5G,EAAQ,SAAY,CACvC,MAAMa,EAAS,MAAMlB,EAAIiH,aAAa,CACpC,GAAGJ,EACHK,UAAWL,EAAYG,SACzB,CAAC,EACD,GAAI9F,EAAO7B,QAAS,CAClBA,EAAQyC,QAAQ,QAAUZ,EAAO7B,OAAO,EACxC,MACF,CACI6B,EAAO6F,OACT1H,EAAQyC,SAASZ,EAAOA,OAAS,QAAU,QAAUA,EAAO6F,MAAM,EACzD,CAAC7F,EAAO6F,QAAU7F,EAAOA,QAClC7B,EAAQyC,QAAQ,MAAM,CAE1B,CAAC,EAEKqF,GAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA+ClB3G,KAAI,qHAGJ4G,EAwBSC,EAAA,CAvBCC,KAAMC,EAAAvB,CAAA,sCAAAA,EAAa/G,MAAAuI,EAAA,MAC3BC,OAAO,SACPC,MAAA,CAAA,MAAA,SACA1G,MAAM,SACN,gBAAc,KACb,wBAAqB,CAAmBoE,QAAAmC,EAAAtB,CAAA,EAAWb,kBAAmCmC,EAAAtB,CAAA,EAAWrF,OAAM,gBAOxG,IAUE,CAVFwG,EAUEO,EAAA,CATQ1I,MAAOsI,EAAAhG,CAAA,uCAAAA,EAAQtC,MAAAuI,EAAA,MACtBI,SAAUL,EAAAtB,CAAA,EAAWb,QACtByC,KAAK,WACLC,MAAM,WACLC,SAAU,wBAIVZ,YAAaI,EAAAJ,EAAA,yFAGlBC,EAwDSC,EAAA,CAvDCC,KAAMC,EAAAb,CAAA,sCAAAA,EAAiBzH,MAAAuI,EAAA,MAC/BC,OAAO,SACPC,MAAA,CAAA,MAAA,SACA1G,MAAM,QACN,gBAAc,KACb,wBAAqB,CAAmBoE,QAAAmC,EAAAN,CAAA,EAAa7B,kBAAmCmC,EAAAN,CAAA,EAAarG,OAAM,gBAO5G,IAUE,CAVFwG,EAUEO,EAAA,CATQ1I,MAAOsI,EAAAV,CAAA,EAAYC,SAAZ,iBAAAkB,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAR,GAAAD,EAAAV,CAAA,EAAYC,SAAQU,GAClCI,SAAUL,EAAAN,CAAA,EAAa7B,QACxByC,KAAK,WACLC,MAAM,WACLC,SAAU,uBAIXZ,YAAY,wDAEdc,EAAc,MAAA,CAAT,SAAA,EAAM,EAAA,KAAA,EAAA,GACXb,EAWSc,EAAA,KAAA,WAVP,IAEY,CAFZd,EAEYe,EAAA,CAFOC,QAASb,EAAAV,CAAA,EAAYG,UAAZ,mBAAAgB,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAR,GAAAD,EAAAV,CAAA,EAAYG,UAASQ,eAAE,IAEnDQ,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAA,GAFmD,QAEnD,CAAA,6CACAC,EAMI,IAAA,CALFrD,KAAK,8DACLyD,OAAO,SACPC,IAAI,uBACL,SAED,EAAA,EAAA,+BAEFL,EAAc,MAAA,CAAT,SAAA,EAAM,EAAA,KAAA,EAAA,GACXA,EAiBM,MAjBNM,GAiBM,CAZJnB,EAIEoB,EAAA,CAHQvJ,MAAOsI,EAAAV,CAAA,EAAYE,OAAZ,iBAAAiB,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAAR,GAAAD,EAAAV,CAAA,EAAYE,OAAMS,GAChC1I,QAAS6H,GACVmB,MAAM,2CAERG,EAMI,IAAA,CALFrD,KAAK,oDACLyD,OAAO,SACPC,IAAI,uBACL,SAED,EAAA,EAAA,yDAGJL,EA4EM,MA5ENQ,GA4EM,CArEJR,EAyDM,MAzDNS,GAyDM,CApDJtB,EAcauB,GAAA,CAbXC,GAAG,IACHC,KAAA,GACA,UAAA,GACA7H,MAAM,iBAEN,IAOU,CAPVoG,EAOU0B,EAAA,CANRC,KAAA,GACArB,MAAA,CAAA,gBAAA,MAAA,IAEWsB,OACT,IAAuB,CAAvB5B,EAAuB6B,EAAA,CAAdvE,KAAK,OAAM,CAAA,iBAI1B0C,EAac8B,GAAA,KAAA,WAZZ,IAKE,CALF9B,EAKEO,EAAA,CAJQ1I,MAAOsI,EAAAtH,CAAA,uCAAAA,EAAIhB,MAAAuI,EAAA,MACnBL,YAAY,UACXO,MAAO,CAAA3C,MAAA,SACPoE,QAAKC,GAAQ7B,EAAAnH,CAAA,EAAQQ,OAAM,CAAA,OAAA,CAAA,+BAE9BwG,EAKU0B,EAAA,CAJP1D,QAASmC,EAAAnH,CAAA,EAAQgF,QACjBC,QAAOkC,EAAAnH,CAAA,EAAQQ,mBACjB,IAEDoH,EAAA,EAAA,IAAAA,EAAA,EAAA,EAAA,GAFC,QAED,CAAA,kDAEcT,EAAApH,CAAA,OAAhBkJ,EAsBWC,EAAA,CAAAtK,IAAA,CAAA,EAAA,CArBTiJ,EAEM,MAFNsB,GAEMC,GAAA,OADMjC,EAAApH,CAAA,EAAOc,YAAY,YAAYsG,EAAApH,CAAA,EAAOsJ,OAAO,EAAA,EAAA,CAAA,EAEzDrC,EAKU0B,EAAA,CAJP1D,QAASmC,EAAA/F,CAAA,EAAgB4D,QACzBC,QAAOkC,EAAA/F,CAAA,EAAgBZ,mBACzB,IAEDoH,EAAA,EAAA,IAAAA,EAAA,EAAA,EAAA,GAFC,MAED,CAAA,0CACAZ,EAKU0B,EAAA,CAJP1D,QAASmC,EAAAxF,CAAA,EAAoBqD,QAC7BC,QAAOkC,EAAAxF,CAAA,EAAoBnB,mBAC7B,IAEDoH,EAAA,EAAA,IAAAA,EAAA,EAAA,EAAA,GAFC,YAED,CAAA,0CACAZ,EAEU0B,EAAA,CAFAzD,uBAAOW,EAAA/G,MAAa,gBAAS,IAEvC+I,EAAA,EAAA,IAAAA,EAAA,EAAA,EAAA,GAFuC,UAEvC,CAAA,kBACAZ,EAEU0B,EAAA,CAFAzD,uBAAOqB,EAAAzH,MAAiB,gBAAS,IAE3C+I,EAAA,EAAA,IAAAA,EAAA,EAAA,EAAA,GAF2C,SAE3C,CAAA,oCAGJZ,EAUEsC,GAAA,CATAC,QAAA,GACA,cAAA,GACC9J,KAAM0H,EAAA1G,CAAA,EACNgE,QAASA,GACTU,WAAYgC,EAAAhC,CAAA,EACbqE,KAAK,QACL9B,MAAM,SACL,WAAU,KACV,kBAAejE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"HomePage-D1aYSq5n.js","sources":["../../node_modules/.pnpm/naive-ui@2.42.0_vue@3.5.17_typescript@5.8.3_/node_modules/naive-ui/es/switch/styles/_common.mjs","../../node_modules/.pnpm/naive-ui@2.42.0_vue@3.5.17_typescript@5.8.3_/node_modules/naive-ui/es/switch/styles/light.mjs","../../node_modules/.pnpm/naive-ui@2.42.0_vue@3.5.17_typescript@5.8.3_/node_modules/naive-ui/es/switch/src/styles/index.cssr.mjs","../../node_modules/.pnpm/naive-ui@2.42.0_vue@3.5.17_typescript@5.8.3_/node_modules/naive-ui/es/switch/src/Switch.mjs","../../src/views/home/HomePage.vue"],"sourcesContent":["export default {\n buttonHeightSmall: '14px',\n buttonHeightMedium: '18px',\n buttonHeightLarge: '22px',\n buttonWidthSmall: '14px',\n buttonWidthMedium: '18px',\n buttonWidthLarge: '22px',\n buttonWidthPressedSmall: '20px',\n buttonWidthPressedMedium: '24px',\n buttonWidthPressedLarge: '28px',\n railHeightSmall: '18px',\n railHeightMedium: '22px',\n railHeightLarge: '26px',\n railWidthSmall: '32px',\n railWidthMedium: '40px',\n railWidthLarge: '48px'\n};","import { changeColor } from 'seemly';\nimport { commonLight } from \"../../_styles/common/index.mjs\";\nimport commonVars from \"./_common.mjs\";\nfunction self(vars) {\n const {\n primaryColor,\n opacityDisabled,\n borderRadius,\n textColor3\n } = vars;\n const railOverlayColor = 'rgba(0, 0, 0, .14)';\n return Object.assign(Object.assign({}, commonVars), {\n iconColor: textColor3,\n textColor: 'white',\n loadingColor: primaryColor,\n opacityDisabled,\n railColor: railOverlayColor,\n railColorActive: primaryColor,\n buttonBoxShadow: '0 1px 4px 0 rgba(0, 0, 0, 0.3), inset 0 0 1px 0 rgba(0, 0, 0, 0.05)',\n buttonColor: '#FFF',\n railBorderRadiusSmall: borderRadius,\n railBorderRadiusMedium: borderRadius,\n railBorderRadiusLarge: borderRadius,\n buttonBorderRadiusSmall: borderRadius,\n buttonBorderRadiusMedium: borderRadius,\n buttonBorderRadiusLarge: borderRadius,\n boxShadowFocus: `0 0 0 2px ${changeColor(primaryColor, {\n alpha: 0.2\n })}`\n });\n}\nconst switchLight = {\n name: 'Switch',\n common: commonLight,\n self\n};\nexport default switchLight;","import { iconSwitchTransition } from \"../../../_styles/transitions/icon-switch.cssr.mjs\";\nimport { c, cB, cE, cM, cNotM } from \"../../../_utils/cssr/index.mjs\";\n// vars:\n// --n-bezier\n// --n-button-border-radius\n// --n-button-box-shadow\n// --n-button-color\n// --n-button-width\n// --n-button-width-pressed\n// --n-height\n// --n-offset\n// --n-rail-border-radius\n// --n-rail-color\n// --n-rail-color-active\n// --n-rail-height\n// --n-rail-width\n// --n-width\n// --n-box-shadow-focus\n// --n-loading-color\n// --n-text-color\n// --n-icon-color\nexport default cB('switch', `\n height: var(--n-height);\n min-width: var(--n-width);\n vertical-align: middle;\n user-select: none;\n -webkit-user-select: none;\n display: inline-flex;\n outline: none;\n justify-content: center;\n align-items: center;\n`, [cE('children-placeholder', `\n height: var(--n-rail-height);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n pointer-events: none;\n visibility: hidden;\n `), cE('rail-placeholder', `\n display: flex;\n flex-wrap: none;\n `), cE('button-placeholder', `\n width: calc(1.75 * var(--n-rail-height));\n height: var(--n-rail-height);\n `), cB('base-loading', `\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translateX(-50%) translateY(-50%);\n font-size: calc(var(--n-button-width) - 4px);\n color: var(--n-loading-color);\n transition: color .3s var(--n-bezier);\n `, [iconSwitchTransition({\n left: '50%',\n top: '50%',\n originalTransform: 'translateX(-50%) translateY(-50%)'\n})]), cE('checked, unchecked', `\n transition: color .3s var(--n-bezier);\n color: var(--n-text-color);\n box-sizing: border-box;\n position: absolute;\n white-space: nowrap;\n top: 0;\n bottom: 0;\n display: flex;\n align-items: center;\n line-height: 1;\n `), cE('checked', `\n right: 0;\n padding-right: calc(1.25 * var(--n-rail-height) - var(--n-offset));\n `), cE('unchecked', `\n left: 0;\n justify-content: flex-end;\n padding-left: calc(1.25 * var(--n-rail-height) - var(--n-offset));\n `), c('&:focus', [cE('rail', `\n box-shadow: var(--n-box-shadow-focus);\n `)]), cM('round', [cE('rail', 'border-radius: calc(var(--n-rail-height) / 2);', [cE('button', 'border-radius: calc(var(--n-button-height) / 2);')])]), cNotM('disabled', [cNotM('icon', [cM('rubber-band', [cM('pressed', [cE('rail', [cE('button', 'max-width: var(--n-button-width-pressed);')])]), cE('rail', [c('&:active', [cE('button', 'max-width: var(--n-button-width-pressed);')])]), cM('active', [cM('pressed', [cE('rail', [cE('button', 'left: calc(100% - var(--n-offset) - var(--n-button-width-pressed));')])]), cE('rail', [c('&:active', [cE('button', 'left: calc(100% - var(--n-offset) - var(--n-button-width-pressed));')])])])])])]), cM('active', [cE('rail', [cE('button', 'left: calc(100% - var(--n-button-width) - var(--n-offset))')])]), cE('rail', `\n overflow: hidden;\n height: var(--n-rail-height);\n min-width: var(--n-rail-width);\n border-radius: var(--n-rail-border-radius);\n cursor: pointer;\n position: relative;\n transition:\n opacity .3s var(--n-bezier),\n background .3s var(--n-bezier),\n box-shadow .3s var(--n-bezier);\n background-color: var(--n-rail-color);\n `, [cE('button-icon', `\n color: var(--n-icon-color);\n transition: color .3s var(--n-bezier);\n font-size: calc(var(--n-button-height) - 4px);\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n line-height: 1;\n `, [iconSwitchTransition()]), cE('button', `\n align-items: center; \n top: var(--n-offset);\n left: var(--n-offset);\n height: var(--n-button-height);\n width: var(--n-button-width-pressed);\n max-width: var(--n-button-width);\n border-radius: var(--n-button-border-radius);\n background-color: var(--n-button-color);\n box-shadow: var(--n-button-box-shadow);\n box-sizing: border-box;\n cursor: inherit;\n content: \"\";\n position: absolute;\n transition:\n background-color .3s var(--n-bezier),\n left .3s var(--n-bezier),\n opacity .3s var(--n-bezier),\n max-width .3s var(--n-bezier),\n box-shadow .3s var(--n-bezier);\n `)]), cM('active', [cE('rail', 'background-color: var(--n-rail-color-active);')]), cM('loading', [cE('rail', `\n cursor: wait;\n `)]), cM('disabled', [cE('rail', `\n cursor: not-allowed;\n opacity: .5;\n `)])]);","import { depx, pxfy } from 'seemly';\nimport { useMergedState } from 'vooks';\nimport { computed, defineComponent, h, ref, toRef, watchEffect } from 'vue';\nimport { NBaseLoading, NIconSwitchTransition } from \"../../_internal/index.mjs\";\nimport { useConfig, useFormItem, useTheme, useThemeClass } from \"../../_mixins/index.mjs\";\nimport { call, createKey, isSlotEmpty, resolveWrappedSlot, warnOnce } from \"../../_utils/index.mjs\";\nimport { switchLight } from \"../styles/index.mjs\";\nimport style from \"./styles/index.cssr.mjs\";\nexport const switchProps = Object.assign(Object.assign({}, useTheme.props), {\n size: {\n type: String,\n default: 'medium'\n },\n value: {\n type: [String, Number, Boolean],\n default: undefined\n },\n loading: Boolean,\n defaultValue: {\n type: [String, Number, Boolean],\n default: false\n },\n disabled: {\n type: Boolean,\n default: undefined\n },\n round: {\n type: Boolean,\n default: true\n },\n 'onUpdate:value': [Function, Array],\n onUpdateValue: [Function, Array],\n checkedValue: {\n type: [String, Number, Boolean],\n default: true\n },\n uncheckedValue: {\n type: [String, Number, Boolean],\n default: false\n },\n railStyle: Function,\n rubberBand: {\n type: Boolean,\n default: true\n },\n /** @deprecated */\n onChange: [Function, Array]\n});\nlet supportCssMax;\nexport default defineComponent({\n name: 'Switch',\n props: switchProps,\n slots: Object,\n setup(props) {\n if (process.env.NODE_ENV !== 'production') {\n watchEffect(() => {\n if (props.onChange) {\n warnOnce('switch', '`on-change` is deprecated, please use `on-update:value` instead.');\n }\n });\n }\n if (supportCssMax === undefined) {\n if (typeof CSS !== 'undefined') {\n if (typeof CSS.supports !== 'undefined') {\n supportCssMax = CSS.supports('width', 'max(1px)');\n } else {\n supportCssMax = false;\n }\n } else {\n // If you are using SSR, we assume that you are targeting browsers with\n // recent versions\n supportCssMax = true;\n }\n }\n const {\n mergedClsPrefixRef,\n inlineThemeDisabled\n } = useConfig(props);\n const themeRef = useTheme('Switch', '-switch', style, switchLight, props, mergedClsPrefixRef);\n const formItem = useFormItem(props);\n const {\n mergedSizeRef,\n mergedDisabledRef\n } = formItem;\n const uncontrolledValueRef = ref(props.defaultValue);\n const controlledValueRef = toRef(props, 'value');\n const mergedValueRef = useMergedState(controlledValueRef, uncontrolledValueRef);\n const checkedRef = computed(() => {\n return mergedValueRef.value === props.checkedValue;\n });\n const pressedRef = ref(false);\n const focusedRef = ref(false);\n const mergedRailStyleRef = computed(() => {\n const {\n railStyle\n } = props;\n if (!railStyle) return undefined;\n return railStyle({\n focused: focusedRef.value,\n checked: checkedRef.value\n });\n });\n function doUpdateValue(value) {\n const {\n 'onUpdate:value': _onUpdateValue,\n onChange,\n onUpdateValue\n } = props;\n const {\n nTriggerFormInput,\n nTriggerFormChange\n } = formItem;\n if (_onUpdateValue) call(_onUpdateValue, value);\n if (onUpdateValue) call(onUpdateValue, value);\n if (onChange) call(onChange, value);\n uncontrolledValueRef.value = value;\n nTriggerFormInput();\n nTriggerFormChange();\n }\n function doFocus() {\n const {\n nTriggerFormFocus\n } = formItem;\n nTriggerFormFocus();\n }\n function doBlur() {\n const {\n nTriggerFormBlur\n } = formItem;\n nTriggerFormBlur();\n }\n function handleClick() {\n if (props.loading || mergedDisabledRef.value) return;\n if (mergedValueRef.value !== props.checkedValue) {\n doUpdateValue(props.checkedValue);\n } else {\n doUpdateValue(props.uncheckedValue);\n }\n }\n function handleFocus() {\n focusedRef.value = true;\n doFocus();\n }\n function handleBlur() {\n focusedRef.value = false;\n doBlur();\n pressedRef.value = false;\n }\n function handleKeyup(e) {\n if (props.loading || mergedDisabledRef.value) return;\n if (e.key === ' ') {\n if (mergedValueRef.value !== props.checkedValue) {\n doUpdateValue(props.checkedValue);\n } else {\n doUpdateValue(props.uncheckedValue);\n }\n pressedRef.value = false;\n }\n }\n function handleKeydown(e) {\n if (props.loading || mergedDisabledRef.value) return;\n if (e.key === ' ') {\n e.preventDefault();\n pressedRef.value = true;\n }\n }\n const cssVarsRef = computed(() => {\n const {\n value: size\n } = mergedSizeRef;\n const {\n self: {\n opacityDisabled,\n railColor,\n railColorActive,\n buttonBoxShadow,\n buttonColor,\n boxShadowFocus,\n loadingColor,\n textColor,\n iconColor,\n [createKey('buttonHeight', size)]: buttonHeight,\n [createKey('buttonWidth', size)]: buttonWidth,\n [createKey('buttonWidthPressed', size)]: buttonWidthPressed,\n [createKey('railHeight', size)]: railHeight,\n [createKey('railWidth', size)]: railWidth,\n [createKey('railBorderRadius', size)]: railBorderRadius,\n [createKey('buttonBorderRadius', size)]: buttonBorderRadius\n },\n common: {\n cubicBezierEaseInOut\n }\n } = themeRef.value;\n let offset;\n let height;\n let width;\n if (supportCssMax) {\n offset = `calc((${railHeight} - ${buttonHeight}) / 2)`;\n height = `max(${railHeight}, ${buttonHeight})`;\n width = `max(${railWidth}, calc(${railWidth} + ${buttonHeight} - ${railHeight}))`;\n } else {\n offset = pxfy((depx(railHeight) - depx(buttonHeight)) / 2);\n height = pxfy(Math.max(depx(railHeight), depx(buttonHeight)));\n width = depx(railHeight) > depx(buttonHeight) ? railWidth : pxfy(depx(railWidth) + depx(buttonHeight) - depx(railHeight));\n }\n return {\n '--n-bezier': cubicBezierEaseInOut,\n '--n-button-border-radius': buttonBorderRadius,\n '--n-button-box-shadow': buttonBoxShadow,\n '--n-button-color': buttonColor,\n '--n-button-width': buttonWidth,\n '--n-button-width-pressed': buttonWidthPressed,\n '--n-button-height': buttonHeight,\n '--n-height': height,\n '--n-offset': offset,\n '--n-opacity-disabled': opacityDisabled,\n '--n-rail-border-radius': railBorderRadius,\n '--n-rail-color': railColor,\n '--n-rail-color-active': railColorActive,\n '--n-rail-height': railHeight,\n '--n-rail-width': railWidth,\n '--n-width': width,\n '--n-box-shadow-focus': boxShadowFocus,\n '--n-loading-color': loadingColor,\n '--n-text-color': textColor,\n '--n-icon-color': iconColor\n };\n });\n const themeClassHandle = inlineThemeDisabled ? useThemeClass('switch', computed(() => {\n return mergedSizeRef.value[0];\n }), cssVarsRef, props) : undefined;\n return {\n handleClick,\n handleBlur,\n handleFocus,\n handleKeyup,\n handleKeydown,\n mergedRailStyle: mergedRailStyleRef,\n pressed: pressedRef,\n mergedClsPrefix: mergedClsPrefixRef,\n mergedValue: mergedValueRef,\n checked: checkedRef,\n mergedDisabled: mergedDisabledRef,\n cssVars: inlineThemeDisabled ? undefined : cssVarsRef,\n themeClass: themeClassHandle === null || themeClassHandle === void 0 ? void 0 : themeClassHandle.themeClass,\n onRender: themeClassHandle === null || themeClassHandle === void 0 ? void 0 : themeClassHandle.onRender\n };\n },\n render() {\n const {\n mergedClsPrefix,\n mergedDisabled,\n checked,\n mergedRailStyle,\n onRender,\n $slots\n } = this;\n onRender === null || onRender === void 0 ? void 0 : onRender();\n const {\n checked: checkedSlot,\n unchecked: uncheckedSlot,\n icon: iconSlot,\n 'checked-icon': checkedIconSlot,\n 'unchecked-icon': uncheckedIconSlot\n } = $slots;\n const hasIcon = !(isSlotEmpty(iconSlot) && isSlotEmpty(checkedIconSlot) && isSlotEmpty(uncheckedIconSlot));\n return h(\"div\", {\n role: \"switch\",\n \"aria-checked\": checked,\n class: [`${mergedClsPrefix}-switch`, this.themeClass, hasIcon && `${mergedClsPrefix}-switch--icon`, checked && `${mergedClsPrefix}-switch--active`, mergedDisabled && `${mergedClsPrefix}-switch--disabled`, this.round && `${mergedClsPrefix}-switch--round`, this.loading && `${mergedClsPrefix}-switch--loading`, this.pressed && `${mergedClsPrefix}-switch--pressed`, this.rubberBand && `${mergedClsPrefix}-switch--rubber-band`],\n tabindex: !this.mergedDisabled ? 0 : undefined,\n style: this.cssVars,\n onClick: this.handleClick,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onKeyup: this.handleKeyup,\n onKeydown: this.handleKeydown\n }, h(\"div\", {\n class: `${mergedClsPrefix}-switch__rail`,\n \"aria-hidden\": \"true\",\n style: mergedRailStyle\n }, resolveWrappedSlot(checkedSlot, checkedSlotChildren => resolveWrappedSlot(uncheckedSlot, uncheckedSlotChildren => {\n if (checkedSlotChildren || uncheckedSlotChildren) {\n return h(\"div\", {\n \"aria-hidden\": true,\n class: `${mergedClsPrefix}-switch__children-placeholder`\n }, h(\"div\", {\n class: `${mergedClsPrefix}-switch__rail-placeholder`\n }, h(\"div\", {\n class: `${mergedClsPrefix}-switch__button-placeholder`\n }), checkedSlotChildren), h(\"div\", {\n class: `${mergedClsPrefix}-switch__rail-placeholder`\n }, h(\"div\", {\n class: `${mergedClsPrefix}-switch__button-placeholder`\n }), uncheckedSlotChildren));\n }\n return null;\n })), h(\"div\", {\n class: `${mergedClsPrefix}-switch__button`\n }, resolveWrappedSlot(iconSlot, icon => resolveWrappedSlot(checkedIconSlot, checkedIcon => resolveWrappedSlot(uncheckedIconSlot, uncheckedIcon => {\n return h(NIconSwitchTransition, null, {\n default: () => this.loading ? h(NBaseLoading, {\n key: \"loading\",\n clsPrefix: mergedClsPrefix,\n strokeWidth: 20\n }) : this.checked && (checkedIcon || icon) ? h(\"div\", {\n class: `${mergedClsPrefix}-switch__button-icon`,\n key: checkedIcon ? 'checked-icon' : 'icon'\n }, checkedIcon || icon) : !this.checked && (uncheckedIcon || icon) ? h(\"div\", {\n class: `${mergedClsPrefix}-switch__button-icon`,\n key: uncheckedIcon ? 'unchecked-icon' : 'icon'\n }, uncheckedIcon || icon) : null\n });\n }))), resolveWrappedSlot(checkedSlot, children => children && h(\"div\", {\n key: \"checked\",\n class: `${mergedClsPrefix}-switch__checked`\n }, children)), resolveWrappedSlot(uncheckedSlot, children => children && h(\"div\", {\n key: \"unchecked\",\n class: `${mergedClsPrefix}-switch__unchecked`\n }, children)))));\n }\n});","<script lang=\"tsx\" setup>\nimport ActionCard from '@/components/ActionCard.vue';\nimport { toValidURL } from '@/utils/check';\nimport { showTextDLg, waitShareAgree } from '@/utils/dialog';\nimport { dialog } from '@/utils/discrete';\nimport {\n batchCreateImageId,\n batchCreateZipUrl,\n batchImageDownloadZip,\n batchZipDownloadZip,\n} from '@/utils/export';\nimport { importFromLocal, importFromNetwork } from '@/utils/import';\nimport { getAppInfo } from '@/utils/node';\nimport { getDragEventFiles } from '@/utils/others';\nimport { shallowSnapshotStorage, snapshotStorage } from '@/utils/snapshot';\nimport { renderDevice, useSnapshotColumns } from '@/utils/table';\nimport { useTask } from '@/utils/task';\nimport { getImagUrl } from '@/utils/url';\nimport type { DataTableColumns, PaginationProps } from 'naive-ui';\nimport type { SortState } from 'naive-ui/es/data-table/src/interface';\n\nconst { settingsStore } = useStorageStore();\n\nconst snapshots = shallowRef<Snapshot[]>([]);\nconst loading = shallowRef(true);\nconst updateSnapshots = async () => {\n loading.value = true;\n snapshots.value = (await shallowSnapshotStorage.getAllItems()).reverse();\n checkedRowKeys.value = [];\n loading.value = false;\n};\nonMounted(updateSnapshots);\nconst filterOption = shallowReactive({\n query: ``,\n actualQuery: ``,\n updateQuery: () => {\n filterOption.actualQuery = filterOption.query.trim();\n checkedRowKeys.value = [];\n },\n});\nconst filterSnapshots = computed(() => {\n const actualQuery = filterOption.actualQuery;\n if (!actualQuery) return snapshots.value;\n return snapshots.value.filter((s) => {\n return (\n (getAppInfo(s).name || ``).includes(actualQuery) ||\n (s.appId || ``).includes(actualQuery) ||\n (s.activityId || ``).includes(actualQuery)\n );\n });\n});\n\nconst importLocal = useTask(async (_files?: File[]) => {\n if (await importFromLocal(_files)) {\n await updateSnapshots();\n }\n});\n\nuseEventListener(document.body, 'drop', async (e) => {\n e.preventDefault();\n await importLocal.invoke(getDragEventFiles(e));\n});\nuseEventListener(document.body, 'dragover', (e) => {\n e.preventDefault();\n});\n\nconst {\n activityIdCol,\n appIdCol,\n appNameCol,\n ctimeCol,\n mtimeCol,\n deviceCol,\n appVersionCodeCol,\n appVersionNameCol,\n resetColWidth,\n} = useSnapshotColumns();\n\nwatchEffect(() => {\n const set = filterSnapshots.value.reduce(\n (p, c) => (p.add(renderDevice(c)), p),\n new Set<string>(),\n );\n if (set.size <= 1) {\n deviceCol.filterOptions = undefined;\n return;\n }\n deviceCol.filterOptions = [...set.values()].map((s) => ({\n value: s,\n label: s,\n }));\n});\n\nwatchEffect(() => {\n const set = filterSnapshots.value.reduce(\n (p, c) => (p.add(getAppInfo(c).name), p),\n new Set<string>(),\n );\n if (set.size <= 1) {\n appNameCol.filterOptions = undefined;\n return;\n }\n appNameCol.filterOptions = [...set.values()].map((s) => ({\n value: s,\n label: s,\n }));\n});\n\nwatchEffect(() => {\n const set = filterSnapshots.value.reduce(\n (p, c) => (p.add(c.activityId), p),\n new Set<string>(),\n );\n if (set.size <= 1) {\n activityIdCol.filterOptions = undefined;\n return;\n }\n activityIdCol.filterOptions = [...set.values()].map((s) => ({\n value: s,\n label: s,\n }));\n});\n\nconst columns: DataTableColumns<Snapshot> = reactive([\n {\n type: 'selection',\n },\n ctimeCol,\n mtimeCol,\n deviceCol,\n appNameCol,\n appIdCol,\n appVersionCodeCol,\n appVersionNameCol,\n activityIdCol,\n {\n key: `actions`,\n title: `操作`,\n fixed: 'right',\n width: `160px`,\n render(row) {\n return <ActionCard snapshot={row} onDelete={updateSnapshots} />;\n },\n },\n]);\n\nconst pagination = shallowReactive<PaginationProps>({\n page: 1,\n pageSize: 50,\n showSizePicker: true,\n pageSizes: [50, 100],\n onChange: (page: number) => {\n pagination.page = page;\n },\n onUpdatePageSize: (pageSize: number) => {\n pagination.pageSize = pageSize;\n pagination.page = 1;\n },\n});\nwatch(pagination, resetColWidth);\n\nconst handleSorterChange = (sorter: SortState) => {\n [ctimeCol, mtimeCol].forEach((c) => {\n if (sorter.columnKey != c.key) {\n c.sortOrder = undefined;\n } else {\n c.sortOrder = sorter.order;\n }\n });\n};\nmtimeCol.sortOrder = `descend`;\nconst showImportModal = shallowRef(false);\nconst textImportValue = shallowRef(``);\nconst importNetwork = useTask(async () => {\n const urls = textImportValue.value\n .trim()\n .split(`\\n`)\n .map((u) => u.trim())\n .filter((u) => toValidURL(u));\n if (urls.length == 0) return;\n const r = await importFromNetwork(urls);\n if (!r) return;\n await updateSnapshots();\n textImportValue.value = ``;\n});\n\nuseEventListener(document.body, 'paste', (e) => {\n if (showImportModal.value) return;\n const target = e.target as HTMLElement;\n if (\n target instanceof HTMLInputElement ||\n target instanceof HTMLTextAreaElement ||\n (target.className || '').includes('input')\n ) {\n return;\n }\n const dataTransfer = e.clipboardData;\n if (!dataTransfer) return;\n const text = (dataTransfer.getData('text') || '').trim();\n if (text.startsWith('https://') || text.startsWith('http://')) {\n textImportValue.value = text;\n showImportModal.value = true;\n }\n});\n\nconst checkedRowKeys = shallowRef<number[]>([]);\nconst checkedSnapshots = () => {\n return Promise.all(\n checkedRowKeys.value.map(\n (id) => snapshotStorage.getItem(id) as Promise<Snapshot>,\n ),\n );\n};\nconst batchDelete = useTask(async () => {\n await new Promise((res, rej) => {\n dialog.warning({\n title: `删除`,\n content: `是否批量删除 ${checkedRowKeys.value.length} 个快照`,\n negativeText: `取消`,\n positiveText: `确认`,\n onClose: rej,\n onEsc: rej,\n onMaskClick: rej,\n onNegativeClick: rej,\n onPositiveClick: res,\n });\n });\n\n await Promise.all(\n checkedRowKeys.value.map((k) => snapshotStorage.removeItem(k)),\n );\n await updateSnapshots();\n});\nconst batchDownloadImage = useTask(async () => {\n await batchImageDownloadZip(await checkedSnapshots());\n});\nconst batchDownloadZip = useTask(async () => {\n await batchZipDownloadZip(await checkedSnapshots());\n});\n\nconst batchShareImageUrl = useTask(async () => {\n await waitShareAgree();\n const imageIds = await batchCreateImageId(await checkedSnapshots());\n showTextDLg({\n content: imageIds.map((s) => getImagUrl(s)).join(`\\n`) + `\\n`,\n });\n});\nconst batchShareZipUrl = useTask(async () => {\n await waitShareAgree();\n const zipUrls = await batchCreateZipUrl(await checkedSnapshots());\n showTextDLg({\n content: zipUrls.map((s) => location.origin + '/i/' + s).join(`\\n`) + `\\n`,\n });\n});\n\nconst settingsDlgShow = shallowRef(false);\n\nconst inputImportRef = shallowRef();\n</script>\n<template>\n <div\n flex\n flex-col\n p-10px\n gap-10px\n h-full\n >\n <div flex>\n <NSpace>\n <NInputGroup>\n <NInput\n v-model:value=\"filterOption.query\"\n placeholder=\"请输入应用名称/应用ID/界面ID\"\n clearable\n class=\"min-w-320px\"\n @keyup.enter=\"filterOption.updateQuery\"\n @change=\"filterOption.updateQuery\"\n />\n <NButton @click=\"filterOption.updateQuery\">\n <template #icon>\n <SvgIcon name=\"search\" />\n </template>\n </NButton>\n </NInputGroup>\n <template v-if=\"checkedRowKeys.length\">\n <NPopover>\n <template #trigger>\n <NButton> 批量下载 </NButton>\n </template>\n <NSpace vertical>\n <NButton\n :loading=\"batchDownloadZip.loading\"\n @click=\"batchDownloadZip.invoke\"\n >\n 批量下载-快照\n </NButton>\n <NButton\n :loading=\"batchDownloadImage.loading\"\n @click=\"batchDownloadImage.invoke\"\n >\n 批量下载-图片\n </NButton>\n </NSpace>\n </NPopover>\n <NPopover>\n <template #trigger>\n <NButton> 批量分享 </NButton>\n </template>\n <NSpace vertical>\n <NButton\n :loading=\"batchShareZipUrl.loading\"\n @click=\"batchShareZipUrl.invoke\"\n >\n 批量生成链接-快照\n </NButton>\n <NButton\n :loading=\"batchShareImageUrl.loading\"\n @click=\"batchShareImageUrl.invoke\"\n >\n 批量生成链接-图片\n </NButton>\n </NSpace>\n </NPopover>\n <NButton @click=\"batchDelete.invoke\">\n 批量删除\n </NButton>\n <div\n h-full\n flex\n flex-items-center\n >\n {{ `已选中 ${checkedRowKeys.length} 个快照` }}\n </div>\n </template>\n </NSpace>\n <div flex-1 />\n <div\n flex\n gap-24px\n items-center\n pr-8px\n class=\"[--svg-h:24px]\"\n >\n <NTooltip>\n <template #trigger>\n <NButton\n text\n @click=\"settingsDlgShow = true\"\n >\n <SvgIcon name=\"settings\" />\n </NButton>\n </template>\n 设置\n </NTooltip>\n <NTooltip>\n <template #trigger>\n <RouterLink\n flex\n to=\"/selector\"\n >\n <NButton text>\n <SvgIcon name=\"terminal\" />\n </NButton>\n </RouterLink>\n </template>\n 测试选择器\n </NTooltip>\n <NPopover>\n <template #trigger>\n <NButton text>\n <SvgIcon name=\"import\" />\n </NButton>\n </template>\n <NSpace vertical>\n <NTooltip placement=\"left\">\n <template #trigger>\n <NButton\n :loading=\"importLocal.loading\"\n @click=\"importLocal.invoke()\"\n >\n 导入本地文件\n </NButton>\n </template>\n <div class=\"whitespace-nowrap\">\n 支持拖拽文件到页面任意位置\n </div>\n </NTooltip>\n <NTooltip placement=\"left\">\n <template #trigger>\n <NButton\n :loading=\"importNetwork.loading\"\n @click=\"showImportModal = true\"\n >\n 导入网络文件\n </NButton>\n </template>\n <div class=\"whitespace-nowrap\">\n 支持任意位置粘贴(Ctrl+V)文本触发导入\n </div>\n </NTooltip>\n </NSpace>\n </NPopover>\n <NTooltip>\n <template #trigger>\n <RouterLink\n flex\n to=\"/device\"\n >\n <NButton text>\n <SvgIcon name=\"device\" />\n </NButton>\n </RouterLink>\n </template>\n 连接设备\n </NTooltip>\n <NTooltip>\n <template #trigger>\n <a\n flex\n href=\"https://github.com/orgs/gkd-kit/discussions\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <NButton text>\n <SvgIcon name=\"discussion\" />\n </NButton>\n </a>\n </template>\n 讨论交流\n </NTooltip>\n <NTooltip>\n <template #trigger>\n <a\n flex\n href=\"https://github.com/gkd-kit/inspect\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n <NButton text>\n <SvgIcon name=\"github\" />\n </NButton>\n </a>\n </template>\n Github\n </NTooltip>\n </div>\n </div>\n <NDataTable\n v-model:checked-row-keys=\"checkedRowKeys\"\n striped\n virtual-scroll\n :data=\"filterSnapshots\"\n :columns=\"columns\"\n :scroll-x=\"1800\"\n :row-key=\"(r:Snapshot)=>r.id\"\n size=\"small\"\n class=\"flex-1\"\n flex-height\n :loading=\"loading\"\n @update:sorter=\"handleSorterChange\"\n />\n </div>\n <NModal\n :show=\"showImportModal\"\n preset=\"dialog\"\n title=\"导入网络文件\"\n :show-icon=\"false\"\n positive-text=\"确认\"\n negative-text=\"取消\"\n style=\"width: 800px\"\n :loading=\"importNetwork.loading\"\n @positive-click=\"importNetwork.invoke\"\n @negative-click=\"showImportModal = false\"\n @close=\"showImportModal = false\"\n @esc=\"showImportModal = false\"\n @after-enter=\"inputImportRef?.focus()\"\n @after-leave=\"textImportValue = ``\"\n >\n <NInput\n ref=\"inputImportRef\"\n :value=\"textImportValue\"\n type=\"textarea\"\n :placeholder=\"`1.支持ZIP文件链接\\n2.支持快照链接\\n每行一个\\n空白行自动忽略\\n非法链接行自动忽略`\"\n :autosize=\"{\n minRows: 8,\n maxRows: 16,\n }\"\n :input-props=\"{\n style: `white-space: nowrap;`,\n }\"\n @update:value=\"\n if (!importNetwork.loading) {\n textImportValue = $event;\n }\n \"\n />\n </NModal>\n\n <NModal\n v-model:show=\"settingsDlgShow\"\n preset=\"dialog\"\n title=\"设置\"\n :show-icon=\"false\"\n positive-text=\"关闭\"\n style=\"width: 600px\"\n @positive-click=\"settingsDlgShow = false\"\n >\n <NCheckbox v-model:checked=\"settingsStore.ignoreUploadWarn\">\n 关闭生成分享链接弹窗提醒\n </NCheckbox>\n <div\n h-1px\n my-10px\n bg=\"#eee\"\n />\n <NCheckbox v-model:checked=\"settingsStore.ignoreWasmWarn\">\n 关闭浏览器版本正则表达式 WASM(GC) 提醒\n </NCheckbox>\n <div\n h-1px\n my-10px\n bg=\"#eee\"\n />\n <div\n flex\n gap-10px\n >\n <NSwitch v-model:value=\"settingsStore.autoUploadImport\" />\n <div>打开快照页面自动生成分享链接(请确保不含隐私)</div>\n </div>\n </NModal>\n</template>\n"],"names":["commonVars","self","vars","primaryColor","opacityDisabled","borderRadius","textColor3","changeColor","switchLight","commonLight","style","cB","cE","iconSwitchTransition","c","cM","cNotM","switchProps","useTheme","supportCssMax","__unplugin_components_9","defineComponent","props","mergedClsPrefixRef","inlineThemeDisabled","useConfig","themeRef","formItem","useFormItem","mergedSizeRef","mergedDisabledRef","uncontrolledValueRef","ref","controlledValueRef","toRef","mergedValueRef","useMergedState","checkedRef","computed","pressedRef","focusedRef","mergedRailStyleRef","railStyle","doUpdateValue","value","_onUpdateValue","onChange","onUpdateValue","nTriggerFormInput","nTriggerFormChange","call","doFocus","nTriggerFormFocus","doBlur","nTriggerFormBlur","handleClick","handleFocus","handleBlur","handleKeyup","e","handleKeydown","cssVarsRef","size","railColor","railColorActive","buttonBoxShadow","buttonColor","boxShadowFocus","loadingColor","textColor","iconColor","createKey","buttonHeight","buttonWidth","buttonWidthPressed","railHeight","railWidth","railBorderRadius","buttonBorderRadius","cubicBezierEaseInOut","offset","height","width","pxfy","depx","themeClassHandle","useThemeClass","mergedClsPrefix","mergedDisabled","checked","mergedRailStyle","onRender","$slots","checkedSlot","uncheckedSlot","iconSlot","checkedIconSlot","uncheckedIconSlot","hasIcon","isSlotEmpty","h","resolveWrappedSlot","checkedSlotChildren","uncheckedSlotChildren","icon","checkedIcon","uncheckedIcon","NIconSwitchTransition","NBaseLoading","children","settingsStore","useStorageStore","snapshots","shallowRef","loading","updateSnapshots","shallowSnapshotStorage","getAllItems","reverse","checkedRowKeys","onMounted","filterOption","shallowReactive","query","actualQuery","updateQuery","trim","filterSnapshots","filter","s","getAppInfo","name","includes","appId","activityId","importLocal","useTask","_files","importFromLocal","useEventListener","document","body","preventDefault","invoke","getDragEventFiles","activityIdCol","appIdCol","appNameCol","ctimeCol","mtimeCol","deviceCol","appVersionCodeCol","appVersionNameCol","resetColWidth","useSnapshotColumns","watchEffect","set","reduce","p","add","renderDevice","Set","filterOptions","undefined","values","map","label","columns","reactive","type","key","title","fixed","render","row","_createVNode2","ActionCard","pagination","page","pageSize","showSizePicker","pageSizes","onUpdatePageSize","watch","handleSorterChange","sorter","forEach","columnKey","sortOrder","order","showImportModal","textImportValue","importNetwork","urls","split","u","toValidURL","length","importFromNetwork","target","HTMLInputElement","HTMLTextAreaElement","className","dataTransfer","clipboardData","text","getData","startsWith","checkedSnapshots","Promise","all","id","snapshotStorage","getItem","batchDelete","res","rej","dialog","warning","content","negativeText","positiveText","onClose","onEsc","onMaskClick","onNegativeClick","onPositiveClick","k","removeItem","batchDownloadImage","batchImageDownloadZip","batchDownloadZip","batchZipDownloadZip","batchShareImageUrl","waitShareAgree","imageIds","batchCreateImageId","showTextDLg","getImagUrl","join","batchShareZipUrl","zipUrls","batchCreateZipUrl","location","origin","settingsDlgShow","inputImportRef","_createElementVNode","_hoisted_1","_hoisted_2","_createVNode","_component_NSpace","_component_NInputGroup","_component_NInput","_unref","_cache","$event","placeholder","clearable","class","onKeyup","_withKeys","_component_NButton","onClick","_component_SvgIcon","_createElementBlock","_Fragment","_component_NPopover","trigger","vertical","_hoisted_3","_toDisplayString","_hoisted_4","_component_NTooltip","_component_RouterLink","flex","to","placement","_hoisted_5","_hoisted_6","_component_NDataTable","striped","data","r","_component_NModal","show","preset","onAfterEnter","focus","onAfterLeave","autosize","_component_NCheckbox","ignoreUploadWarn","bg","ignoreWasmWarn","_hoisted_7","_component_NSwitch","autoUploadImport"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
|