@gkd-kit/inspect 0.0.1720768220157 → 0.0.1720783595262
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-D1bqqquO.js +2 -0
- package/dist/assets/ActionCard.vue_vue_type_script_setup_true_lang-D1bqqquO.js.map +1 -0
- package/dist/assets/DevicePage-D8Dz5nDd.js +49 -0
- package/dist/assets/{DevicePage-D-LwK_zs.js.map → DevicePage-D8Dz5nDd.js.map} +1 -1
- package/dist/assets/HomePage-B2SdsyaW.js +119 -0
- package/dist/assets/{HomePage-wTwxydlP.js.map → HomePage-B2SdsyaW.js.map} +1 -1
- package/dist/assets/ImportPage-Ds-yTg59.js +2 -0
- package/dist/assets/{ImportPage-CkZwVHif.js.map → ImportPage-Ds-yTg59.js.map} +1 -1
- package/dist/assets/PreviewSharePage-B5amOzM-.js +2 -0
- package/dist/assets/{PreviewSharePage-DAnZtndW.js.map → PreviewSharePage-B5amOzM-.js.map} +1 -1
- package/dist/assets/SnapshotPage-Dil4Mc2r.js +276 -0
- package/dist/assets/SnapshotPage-Dil4Mc2r.js.map +1 -0
- package/dist/assets/{TrackGraph-Cr10OLtR.js → TrackGraph-CQE12GtD.js} +2 -2
- package/dist/assets/{TrackGraph-Cr10OLtR.js.map → TrackGraph-CQE12GtD.js.map} +1 -1
- package/dist/assets/{_404Page-D4svmADH.js → _404Page-B52i9ZKs.js} +2 -2
- package/dist/assets/{_404Page-D4svmADH.js.map → _404Page-B52i9ZKs.js.map} +1 -1
- package/dist/assets/dayjs.min-DrBDYJ5w.js +362 -0
- package/dist/assets/{dayjs.min-BMwWZzyB.js.map → dayjs.min-DrBDYJ5w.js.map} +1 -1
- package/dist/assets/{error-BPzJIXYT.js → error-ijdOpFbQ.js} +2 -2
- package/dist/assets/{error-BPzJIXYT.js.map → error-ijdOpFbQ.js.map} +1 -1
- package/dist/assets/{export-CLn-twNn.js → export-CF8GsQ0z.js} +2 -2
- package/dist/assets/{export-CLn-twNn.js.map → export-CF8GsQ0z.js.map} +1 -1
- package/dist/assets/{fetch-DwLUk9HH.js → fetch-C0XLIL4i.js} +2 -2
- package/dist/assets/{fetch-DwLUk9HH.js.map → fetch-C0XLIL4i.js.map} +1 -1
- package/dist/assets/{import-CcVymU3e.js → import-6OeGP_H_.js} +2 -2
- package/dist/assets/{import-CcVymU3e.js.map → import-6OeGP_H_.js.map} +1 -1
- package/dist/assets/index-0cKcDgib.css +1 -0
- package/dist/assets/{index-DTptwOfh.js → index-BFfvSiU_.js} +9 -9
- package/dist/assets/{index-DTptwOfh.js.map → index-BFfvSiU_.js.map} +1 -1
- package/dist/assets/{index-TlhuqM-o.js → index-BhH5asly.js} +56 -56
- package/dist/assets/index-BhH5asly.js.map +1 -0
- package/dist/assets/{index-DlfK4yZh.js → index-DqhLBrrn.js} +2 -2
- package/dist/assets/{index-DlfK4yZh.js.map → index-DqhLBrrn.js.map} +1 -1
- package/dist/assets/{table-CAkl9K8v.js → table-C31-ztL6.js} +2 -2
- package/dist/assets/{table-CAkl9K8v.js.map → table-C31-ztL6.js.map} +1 -1
- package/dist/index.html +3 -3
- package/package.json +1 -1
- package/dist/assets/ActionCard.vue_vue_type_script_setup_true_lang-3l8QgYLy.js +0 -2
- package/dist/assets/ActionCard.vue_vue_type_script_setup_true_lang-3l8QgYLy.js.map +0 -1
- package/dist/assets/DevicePage-D-LwK_zs.js +0 -49
- package/dist/assets/HomePage-wTwxydlP.js +0 -119
- package/dist/assets/ImportPage-CkZwVHif.js +0 -2
- package/dist/assets/PreviewSharePage-DAnZtndW.js +0 -2
- package/dist/assets/SnapshotPage-DZUOefXY.js +0 -276
- package/dist/assets/SnapshotPage-DZUOefXY.js.map +0 -1
- package/dist/assets/dayjs.min-BMwWZzyB.js +0 -362
- package/dist/assets/index-TlhuqM-o.js.map +0 -1
- package/dist/assets/index-bjp6bkMr.css +0 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{d as D,m,b as T,a as P}from"./fetch-C0XLIL4i.js";import{D as a,X as f,M as r,h as I,W as J,H as Z,m as H,I as i,C as _,E as t,F as e,L as l,P as h,at as c,aA as y,aE as V,aD as E,_ as B,K as n,Z as p}from"./index-BhH5asly.js";import{N as W,a as g}from"./index-BFfvSiU_.js";import{h as R,i as $,f as j,g as K}from"./export-CF8GsQ0z.js";import{u as w,b as A,a as L}from"./dayjs.min-DrBDYJ5w.js";const S=({title:u="批量分享链接",content:s=""})=>{D.success({title:u,style:{width:"800px"},content(){return a(W,{type:"textarea",autosize:{minRows:8,maxRows:16},inputProps:{style:"white-space: nowrap;",class:"gkd_code"},value:s},null)},positiveText:"复制",onPositiveClick(){return navigator.clipboard.writeText(s).then(()=>{m.success("复制成功")}).catch(()=>{m.success("复制失败")}),!1}})},O=I(()=>()=>a(J,{checked:f.ignoreUploadWarn,onUpdateChecked:u=>{f.ignoreUploadWarn=u},focusable:!1},{default:()=>[r("不再提醒")]})),b=async()=>{if(!f.ignoreUploadWarn)return new Promise((u,s)=>{D.warning({title:"生成分享链接须知",content(){return a("div",null,[a("div",null,[r("所有快照上传分享链接均为公开链接,任何人均可访问。")]),a("div",null,[r("请确保快照不包含隐私信息,请勿分享任何敏感信息。")]),a(O,{class:"mt-10px"},null)])},closable:!1,closeOnEsc:!1,maskClosable:!1,positiveText:"继续上传",negativeText:"取消分享",onPositiveClick:u,onNegativeClick:s})})},X={flex:"","gap-12px":"","flex-nowrap":""},q=["href"],G=n("svg",{viewBox:"0 0 1024 1024",width:"200",height:"200"},[n("path",{d:"M549.973333 128 633.6 145.066667 474.026667 896 390.4 878.933333 549.973333 128M835.84 512 682.666667 358.826667 682.666667 238.08 956.586667 512 682.666667 785.493333 682.666667 664.746667 835.84 512M67.413333 512 341.333333 238.08 341.333333 358.826667 188.16 512 341.333333 664.746667 341.333333 785.493333 67.413333 512Z"})],-1),Q=n("svg",{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},[n("g",{fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[n("path",{d:"M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2"}),n("path",{d:"M7 11l5 5l5-5"}),n("path",{d:"M12 4v12"})])],-1),Y=n("svg",{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},[n("path",{d:"M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81c1.66 0 3-1.34 3-3s-1.34-3-3-3s-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65c0 1.61 1.31 2.92 2.92 2.92s2.92-1.31 2.92-2.92s-1.31-2.92-2.92-2.92z",fill:"currentColor"})],-1),ee=n("svg",{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},[n("g",{fill:"none"},[n("path",{d:"M12 1.75a3.25 3.25 0 0 1 3.245 3.066L15.25 5h5.25a.75.75 0 0 1 .102 1.493L20.5 6.5h-.796l-1.28 13.02a2.75 2.75 0 0 1-2.561 2.474l-.176.006H8.313a2.75 2.75 0 0 1-2.714-2.307l-.023-.174L4.295 6.5H3.5a.75.75 0 0 1-.743-.648L2.75 5.75a.75.75 0 0 1 .648-.743L3.5 5h5.25A3.25 3.25 0 0 1 12 1.75zm6.197 4.75H5.802l1.267 12.872a1.25 1.25 0 0 0 1.117 1.122l.127.006h7.374c.6 0 1.109-.425 1.225-1.002l.02-.126L18.196 6.5zM13.75 9.25a.75.75 0 0 1 .743.648L14.5 10v7a.75.75 0 0 1-1.493.102L13 17v-7a.75.75 0 0 1 .75-.75zm-3.5 0a.75.75 0 0 1 .743.648L11 10v7a.75.75 0 0 1-1.493.102L9.5 17v-7a.75.75 0 0 1 .75-.75zm1.75-6a1.75 1.75 0 0 0-1.744 1.606L10.25 5h3.5A1.75 1.75 0 0 0 12 3.25z",fill:"currentColor"})])],-1),le=I({__name:"ActionCard",props:{snapshot:{},onDelete:{type:Function,default:T},showPreview:{type:Boolean,default:!0},showExport:{type:Boolean,default:!0},showDelete:{type:Boolean,default:!0},showShare:{type:Boolean,default:!0}},setup(u){const s=u,N=Z(),k=w(async()=>R(await p.getItem(s.snapshot.id))),v=w(async()=>$(await p.getItem(s.snapshot.id))),U=H(()=>N.resolve({name:"snapshot",params:{snapshotId:s.snapshot.id}}).href),x=w(async()=>{await b();const o=await j(await p.getItem(s.snapshot.id));S({title:"分享链接",content:B(o)})}),C=w(async()=>{await b();const o=await K(await p.getItem(s.snapshot.id));S({title:"分享链接",content:location.origin+`/i/${o}`})}),z=async()=>{await p.removeItem(s.snapshot.id),await P(500),s.onDelete()},F=async o=>navigator.clipboard.writeText(o).then(()=>{m.success("复制成功")}).catch(()=>{m.success("复制失败")});return(o,d)=>(i(),_("div",X,[o.showPreview?(i(),_("a",{key:0,flex:"",target:"_blank",href:U.value},[a(e(l),{size:"small"},{icon:t(()=>[a(e(g),null,{default:t(()=>[G]),_:1})]),_:1})],8,q)):h("",!0),o.showExport?(i(),c(e(L),{key:1},{trigger:t(()=>[a(e(l),{size:"small"},{icon:t(()=>[a(e(g),null,{default:t(()=>[Q]),_:1})]),_:1})]),default:t(()=>[a(e(A),{vertical:""},{default:t(()=>[a(e(l),{onClick:e(v).invoke,loading:e(v).loading},{default:t(()=>[r(" 下载-快照 ")]),_:1},8,["onClick","loading"]),a(e(l),{onClick:e(k).invoke,loading:e(k).loading},{default:t(()=>[r(" 下载-图片 ")]),_:1},8,["onClick","loading"])]),_:1})]),_:1})):h("",!0),o.showShare?(i(),c(e(L),{key:2},{trigger:t(()=>[a(e(l),{size:"small"},{icon:t(()=>[a(e(g),null,{default:t(()=>[Y]),_:1})]),_:1})]),default:t(()=>[a(e(A),{vertical:""},{default:t(()=>[e(y)[o.snapshot.id]?(i(),c(e(l),{key:0,onClick:d[0]||(d[0]=M=>F(e(V)(e(y)[o.snapshot.id])))},{default:t(()=>[r(" 复制链接-快照 ")]),_:1})):(i(),c(e(l),{key:1,onClick:e(C).invoke,loading:e(C).loading},{default:t(()=>[r(" 生成链接-快照 ")]),_:1},8,["onClick","loading"])),e(E)[o.snapshot.id]?(i(),c(e(l),{key:2,onClick:d[1]||(d[1]=M=>F(e(B)(e(E)[o.snapshot.id])))},{default:t(()=>[r(" 复制链接-图片 ")]),_:1})):(i(),c(e(l),{key:3,onClick:e(x).invoke,loading:e(x).loading},{default:t(()=>[r(" 生成链接-图片 ")]),_:1},8,["onClick","loading"]))]),_:1})]),_:1})):h("",!0),o.showDelete?(i(),c(e(l),{key:3,size:"small",onClick:z},{icon:t(()=>[a(e(g),null,{default:t(()=>[ee]),_:1})]),_:1})):h("",!0)]))}});export{le as _,S as s,b as w};
|
|
2
|
+
//# sourceMappingURL=ActionCard.vue_vue_type_script_setup_true_lang-D1bqqquO.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActionCard.vue_vue_type_script_setup_true_lang-D1bqqquO.js","sources":["../../src/utils/dialog.tsx","../../src/components/ActionCard.vue"],"sourcesContent":["import { NCheckbox, NInput } from 'naive-ui';\nimport { dialog, message } from './discrete';\nimport { defineComponent } from 'vue';\nimport { settingsStorage } from './storage';\n\nexport const showTextDLg = ({ title = `批量分享链接`, content = '' }) => {\n dialog.success({\n title,\n style: {\n width: `800px`,\n },\n content() {\n return (\n <NInput\n type=\"textarea\"\n autosize={{\n minRows: 8,\n maxRows: 16,\n }}\n inputProps={{\n style: `white-space: nowrap;`,\n class: `gkd_code`,\n }}\n value={content}\n />\n );\n },\n positiveText: `复制`,\n onPositiveClick() {\n navigator.clipboard\n .writeText(content)\n .then(() => {\n message.success(`复制成功`);\n })\n .catch(() => {\n message.success(`复制失败`);\n });\n return false;\n },\n });\n};\n\nconst NoticeCheckbox = defineComponent(() => {\n return () => {\n return (\n <NCheckbox\n checked={settingsStorage.ignoreUploadWarn}\n onUpdateChecked={(value) => {\n settingsStorage.ignoreUploadWarn = value;\n }}\n focusable={false}\n >\n 不再提醒\n </NCheckbox>\n );\n };\n});\n\nexport const waitShareAgree = async () => {\n if (settingsStorage.ignoreUploadWarn) return;\n return new Promise((resolve, reject) => {\n dialog.warning({\n title: '生成分享链接须知',\n content() {\n return (\n <div>\n <div>所有快照上传分享链接均为公开链接,任何人均可访问。</div>\n <div>请确保快照不包含隐私信息,请勿分享任何敏感信息。</div>\n <NoticeCheckbox class=\"mt-10px\" />\n </div>\n );\n },\n closable: false,\n closeOnEsc: false,\n maskClosable: false,\n positiveText: '继续上传',\n negativeText: '取消分享',\n onPositiveClick: resolve,\n onNegativeClick: reject,\n });\n });\n};\n","<script setup lang=\"tsx\">\nimport { showTextDLg, waitShareAgree } from '@/utils/dialog';\nimport { message } from '@/utils/discrete';\nimport {\n exportSnapshotAsImportId,\n exportSnapshotAsJpg,\n exportSnapshotAsJpgUrl,\n exportSnapshotAsZip,\n} from '@/utils/export';\nimport { buildEmptyFn, delay } from '@/utils/others';\nimport {\n githubJpgStorage,\n importStorage,\n snapshotStorage,\n} from '@/utils/storage';\nimport { useTask } from '@/utils/task';\nimport type { Snapshot } from '@/utils/types';\nimport { getImportUrl, githubUrlToSelfUrl } from '@/utils/url';\nimport { NButton, NIcon, NPopover, NSpace } from 'naive-ui';\nimport { computed } from 'vue';\nimport { useRouter } from 'vue-router';\n\nconst props = withDefaults(\n defineProps<{\n snapshot: Snapshot;\n onDelete?: () => void;\n showPreview?: boolean;\n showExport?: boolean;\n showDelete?: boolean;\n showShare?: boolean;\n }>(),\n {\n showPreview: true,\n showExport: true,\n showDelete: true,\n showShare: true,\n onDelete: buildEmptyFn,\n },\n);\n\nconst router = useRouter();\n\nconst exportJpg = useTask(async () =>\n exportSnapshotAsJpg((await snapshotStorage.getItem(props.snapshot.id))!),\n);\nconst exportZip = useTask(async () =>\n exportSnapshotAsZip((await snapshotStorage.getItem(props.snapshot.id))!),\n);\n\nconst previewUrl = computed(() => {\n return router.resolve({\n name: 'snapshot',\n params: { snapshotId: props.snapshot.id },\n }).href;\n});\n\nconst exportJpgUrl = useTask(async () => {\n await waitShareAgree();\n const pngUrl = await exportSnapshotAsJpgUrl(\n (await snapshotStorage.getItem(props.snapshot.id))!,\n );\n showTextDLg({\n title: `分享链接`,\n content: githubUrlToSelfUrl(pngUrl),\n });\n});\n\nconst exportZipUrl = useTask(async () => {\n await waitShareAgree();\n const importId = await exportSnapshotAsImportId(\n (await snapshotStorage.getItem(props.snapshot.id))!,\n );\n showTextDLg({\n title: `分享链接`,\n content: location.origin + `/i/${importId}`,\n });\n});\n\nconst deleteSnapshot = async () => {\n await snapshotStorage.removeItem(props.snapshot.id);\n await delay(500);\n props.onDelete();\n};\n\nconst copy = async (content: string) => {\n return navigator.clipboard\n .writeText(content)\n .then(() => {\n message.success(`复制成功`);\n })\n .catch(() => {\n message.success(`复制失败`);\n });\n};\n</script>\n<template>\n <div flex gap-12px flex-nowrap>\n <a v-if=\"showPreview\" flex target=\"_blank\" :href=\"previewUrl\">\n <NButton size=\"small\">\n <template #icon>\n <NIcon>\n <svg viewBox=\"0 0 1024 1024\" width=\"200\" height=\"200\">\n <path\n d=\"M549.973333 128 633.6 145.066667 474.026667 896 390.4 878.933333 549.973333 128M835.84 512 682.666667 358.826667 682.666667 238.08 956.586667 512 682.666667 785.493333 682.666667 664.746667 835.84 512M67.413333 512 341.333333 238.08 341.333333 358.826667 188.16 512 341.333333 664.746667 341.333333 785.493333 67.413333 512Z\"\n ></path>\n </svg>\n </NIcon>\n </template>\n </NButton>\n </a>\n\n <NPopover v-if=\"showExport\">\n <template #trigger>\n <NButton size=\"small\">\n <template #icon>\n <NIcon>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n viewBox=\"0 0 24 24\"\n >\n <g\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2\"></path>\n <path d=\"M7 11l5 5l5-5\"></path>\n <path d=\"M12 4v12\"></path>\n </g>\n </svg>\n </NIcon>\n </template>\n </NButton>\n </template>\n <NSpace vertical>\n <NButton @click=\"exportZip.invoke\" :loading=\"exportZip.loading\">\n 下载-快照\n </NButton>\n <NButton @click=\"exportJpg.invoke\" :loading=\"exportJpg.loading\">\n 下载-图片\n </NButton>\n </NSpace>\n </NPopover>\n\n <NPopover v-if=\"showShare\">\n <template #trigger>\n <NButton size=\"small\">\n <template #icon>\n <NIcon>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n viewBox=\"0 0 24 24\"\n >\n <path\n d=\"M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81c1.66 0 3-1.34 3-3s-1.34-3-3-3s-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65c0 1.61 1.31 2.92 2.92 2.92s2.92-1.31 2.92-2.92s-1.31-2.92-2.92-2.92z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </NIcon>\n </template>\n </NButton>\n </template>\n <NSpace vertical>\n <NButton\n v-if=\"importStorage[snapshot.id]\"\n @click=\"copy(getImportUrl(importStorage[snapshot.id]))\"\n >\n 复制链接-快照\n </NButton>\n <NButton\n v-else\n @click=\"exportZipUrl.invoke\"\n :loading=\"exportZipUrl.loading\"\n >\n 生成链接-快照\n </NButton>\n <NButton\n v-if=\"githubJpgStorage[snapshot.id]\"\n @click=\"copy(githubUrlToSelfUrl(githubJpgStorage[snapshot.id]))\"\n >\n 复制链接-图片\n </NButton>\n <NButton\n v-else\n @click=\"exportJpgUrl.invoke\"\n :loading=\"exportJpgUrl.loading\"\n >\n 生成链接-图片\n </NButton>\n </NSpace>\n </NPopover>\n\n <NButton v-if=\"showDelete\" size=\"small\" @click=\"deleteSnapshot\">\n <template #icon>\n <NIcon>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n viewBox=\"0 0 24 24\"\n >\n <g fill=\"none\">\n <path\n d=\"M12 1.75a3.25 3.25 0 0 1 3.245 3.066L15.25 5h5.25a.75.75 0 0 1 .102 1.493L20.5 6.5h-.796l-1.28 13.02a2.75 2.75 0 0 1-2.561 2.474l-.176.006H8.313a2.75 2.75 0 0 1-2.714-2.307l-.023-.174L4.295 6.5H3.5a.75.75 0 0 1-.743-.648L2.75 5.75a.75.75 0 0 1 .648-.743L3.5 5h5.25A3.25 3.25 0 0 1 12 1.75zm6.197 4.75H5.802l1.267 12.872a1.25 1.25 0 0 0 1.117 1.122l.127.006h7.374c.6 0 1.109-.425 1.225-1.002l.02-.126L18.196 6.5zM13.75 9.25a.75.75 0 0 1 .743.648L14.5 10v7a.75.75 0 0 1-1.493.102L13 17v-7a.75.75 0 0 1 .75-.75zm-3.5 0a.75.75 0 0 1 .743.648L11 10v7a.75.75 0 0 1-1.493.102L9.5 17v-7a.75.75 0 0 1 .75-.75zm1.75-6a1.75 1.75 0 0 0-1.744 1.606L10.25 5h3.5A1.75 1.75 0 0 0 12 3.25z\"\n fill=\"currentColor\"\n ></path>\n </g></svg\n ></NIcon>\n </template>\n </NButton>\n </div>\n</template>\n"],"names":["showTextDLg","title","content","dialog","success","style","width","_createVNode","NInput","minRows","maxRows","class","positiveText","onPositiveClick","navigator","clipboard","writeText","then","message","catch","NoticeCheckbox","defineComponent","NCheckbox","settingsStorage","ignoreUploadWarn","value","default","_createTextVNode","waitShareAgree","Promise","resolve","reject","warning","closable","closeOnEsc","maskClosable","negativeText","onNegativeClick","props","__props","router","useRouter","exportJpg","useTask","exportSnapshotAsJpg","snapshotStorage","getItem","snapshot","id","exportZip","exportSnapshotAsZip","previewUrl","computed","name","params","snapshotId","href","exportJpgUrl","pngUrl","exportSnapshotAsJpgUrl","githubUrlToSelfUrl","exportZipUrl","importId","exportSnapshotAsImportId","location","origin","deleteSnapshot","removeItem","delay","onDelete","copy"],"mappings":"gZAKO,MAAMA,EAAcA,CAAC,CAAEC,MAAAA,EAAQ,SAAUC,QAAAA,EAAU,EAAG,IAAM,CACjEC,EAAOC,QAAQ,CACbH,MAAAA,EACAI,MAAO,CACLC,MAAO,OACR,EACDJ,SAAU,CACR,OAAAK,EAAAC,EAAA,CAAA,KAAA,WAAA,SAGc,CACRC,QAAS,EACTC,QAAS,EACV,EAAA,WACW,CACVL,MAAO,uBACPM,MAAO,UACR,EAAA,MACMT,CAAO,EAAA,IAAA,CAGnB,EACDU,aAAc,KACdC,iBAAkB,CAChBC,iBAAUC,UACPC,UAAUd,CAAO,EACjBe,KAAK,IAAM,CACVC,EAAQd,QAAQ,MAAM,CACxB,CAAC,EACAe,MAAM,IAAM,CACXD,EAAQd,QAAQ,MAAM,CACxB,CAAC,EACI,EACT,CACF,CAAC,CACH,EAEMgB,EAAgCC,EAAC,IAC9B,IACLd,EAAAe,EAAA,CAAA,QAEaC,EAAgBC,iBAAgB,gBACvBC,GAAU,CAC1BF,EAAgBC,iBAAmBC,CACpC,EAAA,UACU,EAAK,EAAA,CAAAC,QAAAA,IAAA,CAAAC,EAAA,MAAA,CAAA,CAAA,CAAA,CAMvB,EAEYC,EAAiB,SAAY,CACxC,GAAIL,CAAAA,EAAgBC,iBACpB,OAAO,IAAIK,QAAQ,CAACC,EAASC,IAAW,CACtC5B,EAAO6B,QAAQ,CACb/B,MAAO,WACPC,SAAU,CACR,OAAAK,EAAA,MAAA,KAAA,CAAAA,EAAA,MAAA,KAAA,CAAAoB,EAAA,2BAAA,CAAA,CAAA,EAAApB,EAAA,MAAA,KAAA,CAAAoB,EAAA,0BAAA,CAAA,CAAA,EAAApB,EAAAa,EAAA,CAAA,MAAA,SAAA,EAAA,IAAA,CAAA,CAAA,CAOD,EACDa,SAAU,GACVC,WAAY,GACZC,aAAc,GACdvB,aAAc,OACdwB,aAAc,OACdvB,gBAAiBiB,EACjBO,gBAAiBN,CACnB,CAAC,CACH,CAAC,CACH,u2EC3DA,MAAMO,EAAQC,EAkBRC,EAASC,IAETC,EAAYC,EAAQ,SACxBC,EAAqB,MAAMC,EAAgBC,QAAQR,EAAMS,SAASC,EAAE,CAAG,CACzE,EACMC,EAAYN,EAAQ,SACxBO,EAAqB,MAAML,EAAgBC,QAAQR,EAAMS,SAASC,EAAE,CAAG,CACzE,EAEMG,EAAaC,EAAS,IACnBZ,EAAOV,QAAQ,CACpBuB,KAAM,WACNC,OAAQ,CAAEC,WAAYjB,EAAMS,SAASC,EAAG,CACzC,CAAA,EAAEQ,IACJ,EAEKC,EAAed,EAAQ,SAAY,CACvC,MAAMf,EAAc,EACpB,MAAM8B,EAAS,MAAMC,EAClB,MAAMd,EAAgBC,QAAQR,EAAMS,SAASC,EAAE,CAClD,EACAhD,EAAY,CACVC,MAAO,OACPC,QAAS0D,EAAmBF,CAAM,CACpC,CAAC,CACH,CAAC,EAEKG,EAAelB,EAAQ,SAAY,CACvC,MAAMf,EAAc,EACpB,MAAMkC,EAAW,MAAMC,EACpB,MAAMlB,EAAgBC,QAAQR,EAAMS,SAASC,EAAE,CAClD,EACAhD,EAAY,CACVC,MAAO,OACPC,QAAS8D,SAASC,OAAS,MAAMH,CAAQ,EAC3C,CAAC,CACH,CAAC,EAEKI,EAAiB,SAAY,CACjC,MAAMrB,EAAgBsB,WAAW7B,EAAMS,SAASC,EAAE,EAClD,MAAMoB,EAAM,GAAG,EACf9B,EAAM+B,SAAQ,GAGVC,EAAO,MAAOpE,GACXY,UAAUC,UACdC,UAAUd,CAAO,EACjBe,KAAK,IAAM,CACVC,EAAQd,QAAQ,MAAM,CACxB,CAAC,EACAe,MAAM,IAAM,CACXD,EAAQd,QAAQ,MAAM,CACxB,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import{A as k,h as se,Q as oe,Y as ne,B as ie,R as G,T as le,C as q,D as i,E as l,F as a,K as c,G as D,O as re,P as ce,H as pe,Z as B,aH as _,L as g,M as w,I as J,J as K,W as ue,aR as de,V as he}from"./index-BhH5asly.js";import{h as fe,m as r,a as ve}from"./fetch-C0XLIL4i.js";import{e as $}from"./error-ijdOpFbQ.js";import{u as me,a as ge,N as we}from"./table-C31-ztL6.js";import{t as ke,u as N,b as H,N as ye}from"./dayjs.min-DrBDYJ5w.js";import{a as be,b as Se}from"./index-DqhLBrrn.js";import{N as j,a as xe,l as Ce}from"./index-BFfvSiU_.js";import{p as _e}from"./index-CE_5kTG8.js";const Ne=M=>{const y=k(M),b=async(s,h={})=>{var I;if(!y.value)throw new Error("origin must exist");const x=new URL("/api/"+s,y.value);Object.entries(h.query||{}).forEach(([v,R])=>{R!==void 0&&x.searchParams.set(v,String(R))});const p=await fe(x,h.init).catch(v=>{throw r.error("网络错误:/"+s),v});if(!p.ok)throw r.error("接口错误:/"+s+":"+p.status),p;if((I=p.headers.get("Content-Type"))!=null&&I.includes("application/json")){const v=await p.clone().json();if(v.__error)throw r.error(v.message),p}return p},n=async(...s)=>await(await b(...s)).json(),S=async(...s)=>await(await b(...s)).blob(),d=async(...s)=>await(await b(...s)).arrayBuffer();return{origin:y,api:{device:async()=>n("device"),snapshot:async s=>n("snapshot",{query:s}),screenshot:async s=>d("screenshot",{query:s}),captureSnapshot:async()=>n("captureSnapshot"),snapshots:async()=>n("snapshots"),updateSubsApps:async s=>S("updateSubsApps",{init:{method:"POST",body:JSON.stringify(s),headers:{"Content-Type":"application/json"}}}),updateSubscription:async s=>S("updateSubscription",{init:{method:"POST",body:JSON.stringify({...s,id:-1,name:"内存订阅",version:0}),headers:{"Content-Type":"application/json"}}}),execSelector:async s=>n("execSelector",{init:{method:"POST",body:JSON.stringify({...s,value:s.selector}),headers:{"Content-Type":"application/json"}}})}}},Ie=c("div",{"h-15px":""},null,-1),Re=c("a",{href:"https://gkd.li/api/interfaces/RawCommonProps.html#quickfind",target:"_blank",rel:"noopener noreferrer"}," 查找说明 ",-1),Pe=c("div",{"h-10px":""},null,-1),ze={flex:"","gap-10px":"","flex-items-center":""},Be=c("a",{href:"https://gkd.li/api/interfaces/RawRuleProps#action",target:"_blank",rel:"noopener noreferrer"}," 操作说明 ",-1),Te={flex:"","flex-col":"","p-10px":"","gap-10px":"","h-full":""},Ue={flex:"","items-center":"","gap-24px":""},Ve={href:"/",flex:"","ml-12px":"",title:"首页"},Ae=c("svg",{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 32 32"},[c("path",{d:"M16.612 2.214a1.01 1.01 0 0 0-1.242 0L1 13.419l1.243 1.572L4 13.621V26a2.004 2.004 0 0 0 2 2h20a2.004 2.004 0 0 0 2-2V13.63L29.757 15L31 13.428zM18 26h-4v-8h4zm2 0v-8a2.002 2.002 0 0 0-2-2h-4a2.002 2.002 0 0 0-2 2v8H6V12.062l10-7.79l10 7.8V26z",fill:"currentColor"})],-1),Oe={class:"h-full",flex:"","flex-items-center":""},Je=se({__name:"DevicePage",setup(M){const y=pe(),b=be("新设备"),{api:n,origin:S}=Ne(),d=Se("device_link",""),f=k(),s=N(async()=>{d.value&&(S.value=$(()=>new URL(d.value.trim()),()=>"非法设备地址").origin,d.value=S.value,f.value=await n.device())});oe(async()=>{await ve(500),ne(d.value)&&s.invoke()});const h=k([]);ie(async()=>{if(!f.value)return;b.value="已连接 "+f.value.manufacturer,f.value.release;const e=await n.snapshots();e.sort((t,o)=>o.id-t.id),h.value=e,P.value=""});const x=N(async()=>{const e=await n.captureSnapshot(),t=await n.screenshot({id:e.id});await B.setItem(e.id,e),await _.setItem(e.id,t),r.success("保存快照成功");const o=await n.snapshots();o.sort((z,L)=>L.id-z.id),h.value=o}),p=N(async()=>{const e=(await n.snapshots()).map(u=>u.id),t=new Set((await _.keys()).map(u=>parseInt(u))),o=e.filter(u=>!t.has(u));if(o.length==0){r.success("没有新记录可导入");return}let z=0;const L=_e(3);await Promise.all(o.map(u=>L(async()=>{const[F,te]=await Promise.all([n.snapshot({id:u}),n.screenshot({id:u})]);F.nodes&&(await Promise.all([B.setItem(u,F),_.setItem(u,te)]),z++)}))),r.success(`导入${z}条新记录`)}),{activityIdCol:I,appIdCol:v,appNameCol:R,ctimeCol:T,appVersionCodeCol:W,appVersionNameCol:Q,resetColWidth:X}=me(),Y=e=>{e.columnKey==T.key&&(T.sortOrder=e.order)},E=ke(async e=>{if(await B.hasItem(e.id)||await B.setItem(e.id,await n.snapshot({id:e.id})),!await _.hasItem(e.id)){const t=await n.screenshot({id:e.id});await _.setItem(e.id,t)}window.open(y.resolve({name:"snapshot",params:{snapshotId:e.id}}).href)},e=>e.id),Z=[T,R,v,W,Q,I,{key:"actions",title:"操作",fixed:"right",width:"120px",render(e){return i(H,{size:"small"},{default:()=>[i(g,{size:"small",loading:E.loading[e.id],onClick:()=>E.invoke(e)},{default:()=>[w("查看")]})]})}}],C=G({page:1,pageSize:50,showSizePicker:!0,pageSizes:[50,100],onChange:e=>{C.page=e},onUpdatePageSize:e=>{C.pageSize=e,C.page=1}});le(C,X);const U=k(!1),P=k(""),V=N(async()=>{const e=$(()=>Ce.parse(P.value.trim()));if(e){if(e.categories||e.globalGroups||e.apps)await n.updateSubscription(e);else if(typeof e.id=="string")await n.updateSubscription({apps:[e]});else if(Array.isArray(e)&&typeof e[0].id=="string")await n.updateSubscription({apps:e});else if(typeof e.key=="number")await n.updateSubscription({globalGroups:[e]});else if(Array.isArray(e)&&typeof e[0].key=="number")await n.updateSubscription({globalGroups:e});else{r.error("无法识别的订阅文本");return}r.success("修改成功")}}),A=k(!1),ee=[{label:"仅查询",value:void 0},{value:"click",label:"click"},{value:"clickNode",label:"clickNode"},{value:"clickCenter",label:"clickCenter"},{value:"back",label:"back"},{value:"longClick",label:"longClick"},{value:"longClickNode",label:"longClickNode"},{value:"longClickCenter",label:"longClickCenter"}],m=G({selector:"",action:"click",quickFind:!1}),O=N(async()=>{const e=await n.execSelector({...m});if(e.message){r.success("操作成功:"+e.message);return}e.action?r.success((e.result?"操作成功:":"操作失败")+e.action):!e.action&&e.result&&r.success("查询成功")}),ae=`
|
|
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)=>(J(),q(D,null,[i(a(K),{show:U.value,"onUpdate:show":t[1]||(t[1]=o=>U.value=o),preset:"dialog",style:{width:"800px"},title:"修改内存订阅","positive-text":"确认",positiveButtonProps:{loading:a(V).loading,onClick(){a(V).invoke()}}},{default:l(()=>[i(a(j),{value:P.value,"onUpdate:value":t[0]||(t[0]=o=>P.value=o),disabled:a(V).loading,type:"textarea",class:"gkd_code",autosize:{minRows:20,maxRows:25},placeholder:a(ae)},null,8,["value","disabled","placeholder"])]),_:1},8,["show","positiveButtonProps"]),i(a(K),{show:A.value,"onUpdate:show":t[5]||(t[5]=o=>A.value=o),preset:"dialog",style:{width:"800px"},title:"执行选择器","positive-text":"确认",positiveButtonProps:{loading:a(O).loading,onClick(){a(O).invoke()}}},{default:l(()=>[i(a(j),{value:a(m).selector,"onUpdate:value":t[2]||(t[2]=o=>a(m).selector=o),disabled:a(O).loading,type:"textarea",class:"gkd_code",autosize:{minRows:4,maxRows:10},placeholder:"请输入合法的选择器"},null,8,["value","disabled"]),Ie,i(a(H),null,{default:l(()=>[i(a(ue),{checked:a(m).quickFind,"onUpdate:checked":t[3]||(t[3]=o=>a(m).quickFind=o)},{default:l(()=>[w(" 快速查找 ")]),_:1},8,["checked"]),Re]),_:1}),Pe,c("div",ze,[i(a(ge),{value:a(m).action,"onUpdate:value":t[4]||(t[4]=o=>a(m).action=o),options:ee,class:"w-150px"},null,8,["value"]),Be])]),_:1},8,["show","positiveButtonProps"]),c("div",Te,[c("div",Ue,[c("a",Ve,[i(a(g),{text:""},{icon:l(()=>[i(a(xe),{size:24},{default:l(()=>[Ae]),_:1})]),_:1})]),i(a(ye),null,{default:l(()=>[i(a(j),{value:a(d),"onUpdate:value":t[6]||(t[6]=o=>de(d)?d.value=o:null),placeholder:"请输入设备地址",style:{width:"200px"},onKeyup:he(a(s).invoke,["enter"])},null,8,["value","onKeyup"]),i(a(g),{onClick:a(s).invoke,loading:a(s).loading},{default:l(()=>[w(" 刷新连接 ")]),_:1},8,["onClick","loading"])]),_:1}),f.value?(J(),q(D,{key:0},[c("div",Oe,re(`已连接 ${f.value.manufacturer} Android ${f.value.release}`),1),i(a(g),{onClick:a(x).invoke,loading:a(x).loading},{default:l(()=>[w(" 快照 ")]),_:1},8,["onClick","loading"]),i(a(g),{onClick:a(p).invoke,loading:a(p).loading},{default:l(()=>[w(" 下载设备所有快照 ")]),_:1},8,["onClick","loading"]),i(a(g),{onClick:t[7]||(t[7]=o=>U.value=!0)},{default:l(()=>[w(" 修改内存订阅 ")]),_:1}),i(a(g),{onClick:t[8]||(t[8]=o=>A.value=!0)},{default:l(()=>[w(" 执行选择器 ")]),_:1})],64)):ce("",!0)]),i(a(we),{striped:"",flexHeight:"",data:h.value,columns:Z,pagination:a(C),"onUpdate:sorter":Y,size:"small",class:"flex-1",scrollX:1200},null,8,["data","pagination"])])],64))}});export{Je as default};
|
|
49
|
+
//# sourceMappingURL=DevicePage-D8Dz5nDd.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DevicePage-D-LwK_zs.js","sources":["../../src/utils/api.ts","../../src/views/DevicePage.vue"],"sourcesContent":["import { shallowRef } from 'vue';\nimport { message } from './discrete';\nimport { enhanceFetch } from './fetch';\nimport type { Device, RpcError, Snapshot } from './types';\n\ntype RpcOptions = {\n query?: Record<string, unknown>;\n init?: RequestInit;\n};\n\nexport const useDeviceApi = (initOrigin?: string) => {\n const origin = shallowRef(initOrigin);\n const rpc = async (rpcName: string, options: RpcOptions = {}) => {\n if (!origin.value) {\n throw new Error(`origin must exist`);\n }\n const u = new URL(`/api/` + rpcName, origin.value);\n Object.entries(options.query || {}).forEach(([key, value]) => {\n if (value === undefined) return;\n u.searchParams.set(key, String(value));\n });\n const response = await enhanceFetch(u, options.init).catch((e) => {\n message.error(`网络错误:/` + rpcName);\n throw e;\n });\n if (!response.ok) {\n message.error(`接口错误:/` + rpcName + `:` + response.status);\n throw response;\n }\n if (response.headers.get(`Content-Type`)?.includes(`application/json`)) {\n const error = (await response.clone().json()) as RpcError;\n if (error.__error) {\n message.error(error.message);\n throw response;\n }\n }\n return response;\n };\n const jsonRpc = async <T>(...args: Parameters<typeof rpc>) => {\n const response = await rpc(...args);\n return (await response.json()) as T;\n };\n const blobRpc = async (...args: Parameters<typeof rpc>) => {\n const response = await rpc(...args);\n return await response.blob();\n };\n const arrayBufferRpc = async (...args: Parameters<typeof rpc>) => {\n const response = await rpc(...args);\n return await response.arrayBuffer();\n };\n const api = {\n device: async () => jsonRpc<Device>(`device`),\n snapshot: async (query?: { id?: string | number }) => {\n return jsonRpc<Snapshot>(`snapshot`, { query });\n },\n screenshot: async (query: { id: string | number }) => {\n return arrayBufferRpc(`screenshot`, { query });\n },\n captureSnapshot: async () => {\n return jsonRpc<Snapshot>(`captureSnapshot`);\n },\n snapshots: async () => {\n return jsonRpc<Snapshot[]>(`snapshots`);\n },\n updateSubsApps: async (data: unknown[]) => {\n return blobRpc(`updateSubsApps`, {\n init: {\n method: 'POST',\n body: JSON.stringify(data),\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n });\n },\n updateSubscription: async (data: any) => {\n return blobRpc(`updateSubscription`, {\n init: {\n method: 'POST',\n body: JSON.stringify({\n ...data,\n id: -1,\n name: '内存订阅',\n version: 0,\n }),\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n });\n },\n execSelector: async (data: {\n selector: string;\n action?: string;\n quickFind?: boolean;\n }) => {\n return jsonRpc<{ message: string; action: string; result: boolean }>(\n `execSelector`,\n {\n init: {\n method: 'POST',\n // value 是旧版本的选择器\n body: JSON.stringify({ ...data, value: data.selector }),\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n },\n );\n },\n };\n return { origin, api };\n};\n","<script setup lang=\"tsx\">\nimport { useDeviceApi } from '@/utils/api';\nimport { toValidURL } from '@/utils/check';\nimport { message } from '@/utils/discrete';\nimport { errorWrap } from '@/utils/error';\nimport { delay } from '@/utils/others';\nimport { screenshotStorage, snapshotStorage } from '@/utils/storage';\nimport { useSnapshotColumns } from '@/utils/table';\nimport { useBatchTask, useTask } from '@/utils/task';\nimport type { Device, Snapshot } from '@/utils/types';\nimport { useStorage, useTitle } from '@vueuse/core';\nimport JSON5 from 'json5';\nimport {\n NButton,\n NCheckbox,\n NDataTable,\n NIcon,\n NInput,\n NInputGroup,\n NModal,\n NSelect,\n NSpace,\n type DataTableColumns,\n type PaginationProps,\n} from 'naive-ui';\nimport type { SortState } from 'naive-ui/es/data-table/src/interface';\nimport pLimit from 'p-limit';\nimport {\n onMounted,\n shallowReactive,\n shallowRef,\n watch,\n watchEffect,\n} from 'vue';\nimport { useRouter } from 'vue-router';\n\nconst router = useRouter();\nconst title = useTitle(`新设备`);\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 title.value = `已连接 ` + device.value.manufacturer;\n device.value.release;\n const result = await api.snapshots();\n result.sort((a, b) => b.id - a.id);\n snapshots.value = result;\n subsText.value = '';\n});\n\nconst captureSnapshot = useTask(async () => {\n const snapshot = await api.captureSnapshot();\n const screenshot = await api.screenshot({ id: snapshot.id });\n await snapshotStorage.setItem(snapshot.id, snapshot);\n await screenshotStorage.setItem(snapshot.id, screenshot);\n message.success(`保存快照成功`);\n const result = await api.snapshots();\n result.sort((a, b) => b.id - a.id);\n snapshots.value = result;\n});\nconst downloadAllSnapshot = useTask(async () => {\n const snapshotIds = (await api.snapshots()).map((s) => s.id);\n const existSnapshotIds = new Set(\n (await screenshotStorage.keys()).map((s) => parseInt(s)),\n );\n const unimportSnapshotIds = snapshotIds.filter(\n (k) => !existSnapshotIds.has(k),\n );\n if (unimportSnapshotIds.length == 0) {\n message.success(`没有新记录可导入`);\n return;\n }\n let r = 0;\n const limit = pLimit(3);\n await Promise.all(\n unimportSnapshotIds.map((snapshotId) =>\n limit(async () => {\n const [newSnapshot, newScreenshot] = await Promise.all([\n api.snapshot({ id: snapshotId }),\n api.screenshot({ id: snapshotId }),\n ] as const);\n if (!newSnapshot.nodes) return;\n await Promise.all([\n snapshotStorage.setItem(snapshotId, newSnapshot),\n screenshotStorage.setItem(snapshotId, newScreenshot),\n ]);\n r++;\n }),\n ),\n );\n message.success(`导入${r}条新记录`);\n});\n\nconst {\n activityIdCol,\n appIdCol,\n appNameCol,\n ctimeCol,\n appVersionCodeCol,\n appVersionNameCol,\n resetColWidth,\n} = useSnapshotColumns();\nconst handleSorterChange = (sorter: SortState) => {\n if (sorter.columnKey == ctimeCol.key) {\n ctimeCol.sortOrder = sorter.order;\n }\n};\nconst previewSnapshot = useBatchTask(\n async (row: Snapshot) => {\n if (!(await snapshotStorage.hasItem(row.id))) {\n await snapshotStorage.setItem(row.id, await api.snapshot({ id: row.id }));\n }\n if (!(await screenshotStorage.hasItem(row.id))) {\n const bf = await api.screenshot({ id: row.id });\n await screenshotStorage.setItem(row.id, bf);\n }\n window.open(\n router.resolve({\n name: 'snapshot',\n params: { snapshotId: row.id },\n }).href,\n );\n },\n (r) => r.id,\n);\n\nconst columns: DataTableColumns<Snapshot> = [\n ctimeCol,\n appNameCol,\n appIdCol,\n appVersionCodeCol,\n appVersionNameCol,\n activityIdCol,\n {\n key: `actions`,\n title: `操作`,\n fixed: 'right',\n width: `120px`,\n render(row) {\n return (\n <NSpace size=\"small\">\n <NButton\n size=\"small\"\n loading={previewSnapshot.loading[row.id]}\n onClick={() => previewSnapshot.invoke(row)}\n >\n 查看\n </NButton>\n </NSpace>\n );\n },\n },\n];\n\nconst pagination = shallowReactive<PaginationProps>({\n page: 1,\n pageSize: 50,\n showSizePicker: true,\n pageSizes: [50, 100],\n onChange: (page: number) => {\n pagination.page = page;\n },\n onUpdatePageSize: (pageSize: number) => {\n pagination.pageSize = pageSize;\n pagination.page = 1;\n },\n});\nwatch(pagination, resetColWidth);\n\nconst showSubsModel = shallowRef(false);\nconst subsText = shallowRef(``);\nconst updateSubs = useTask(async () => {\n const data = errorWrap(() => JSON5.parse(subsText.value.trim()));\n if (!data) return;\n if (data.categories || data.globalGroups || data.apps) {\n await api.updateSubscription(data);\n } else if (typeof data.id == 'string') {\n await api.updateSubscription({\n apps: [data],\n });\n } else if (Array.isArray(data) && typeof data[0].id == 'string') {\n await api.updateSubscription({\n apps: data,\n });\n } else if (typeof data.key == 'number') {\n await api.updateSubscription({\n globalGroups: [data],\n });\n } else if (Array.isArray(data) && typeof data[0].key == 'number') {\n await api.updateSubscription({\n globalGroups: data,\n });\n } else {\n message.error(`无法识别的订阅文本`);\n return;\n }\n message.success(`修改成功`);\n});\n\nconst showSelectorModel = shallowRef(false);\n\nconst actionOptions: {\n value?: string;\n label: string;\n}[] = [\n {\n label: '仅查询',\n value: undefined,\n },\n {\n value: 'click',\n label: 'click',\n },\n {\n value: 'clickNode',\n label: 'clickNode',\n },\n {\n value: 'clickCenter',\n label: 'clickCenter',\n },\n {\n value: 'back',\n label: 'back',\n },\n {\n value: 'longClick',\n label: 'longClick',\n },\n {\n value: 'longClickNode',\n label: 'longClickNode',\n },\n {\n value: 'longClickCenter',\n label: 'longClickCenter',\n },\n];\nconst clickAction = shallowReactive({\n selector: ``,\n action: 'click',\n quickFind: false,\n});\nconst execSelector = useTask(async () => {\n const result = await api.execSelector({ ...clickAction });\n if (result.message) {\n message.success(`操作成功:` + result.message);\n return;\n }\n if (result.action) {\n message.success((result.result ? `操作成功:` : `操作失败`) + result.action);\n } else if (!result.action && result.result) {\n message.success(`查询成功`);\n }\n});\n\nconst placeholder = `\n请输入订阅文本(JSON5语法):\n示例1-更新单个应用的规则:\n{\n id: 'appId',\n groups: []\n}\n\n示例2-更新多个应用的规则:\n[\n {\n id: 'appId1',\n groups: []\n },\n {\n id: 'appId2',\n groups: []\n }\n]\n\n示例3-更新全局规则(1.7.0):\n{\n name: '全局规则-1',\n key: 0,\n rules: []\n}\n\n示例3-更新多个全局规则(1.7.0):\n[\n {\n name: '全局规则-1',\n key: 0,\n rules: []\n },\n {\n name: '全局规则-2',\n key: 1,\n rules: []\n }\n]\n\n示例4-更新整个订阅(1.7.0):\n{\n apps: [],\n globalGroups: [],\n categories: [],\n}\n`.trim();\n</script>\n<template>\n <NModal\n v-model:show=\"showSubsModel\"\n preset=\"dialog\"\n style=\"width: 800px\"\n title=\"修改内存订阅\"\n positive-text=\"确认\"\n :positiveButtonProps=\"{\n loading: updateSubs.loading,\n onClick() {\n updateSubs.invoke();\n },\n }\"\n >\n <NInput\n v-model:value=\"subsText\"\n :disabled=\"updateSubs.loading\"\n type=\"textarea\"\n class=\"gkd_code\"\n :autosize=\"{\n minRows: 20,\n maxRows: 25,\n }\"\n :placeholder=\"placeholder\"\n />\n </NModal>\n <NModal\n v-model:show=\"showSelectorModel\"\n preset=\"dialog\"\n style=\"width: 800px\"\n title=\"执行选择器\"\n positive-text=\"确认\"\n :positiveButtonProps=\"{\n loading: execSelector.loading,\n onClick() {\n execSelector.invoke();\n },\n }\"\n >\n <NInput\n v-model:value=\"clickAction.selector\"\n :disabled=\"execSelector.loading\"\n type=\"textarea\"\n class=\"gkd_code\"\n :autosize=\"{\n minRows: 4,\n maxRows: 10,\n }\"\n placeholder=\"请输入合法的选择器\"\n />\n <div h-15px></div>\n <NSpace>\n <NCheckbox v-model:checked=\"clickAction.quickFind\"> 快速查找 </NCheckbox>\n <a\n href=\"https://gkd.li/api/interfaces/RawCommonProps.html#quickfind\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n 查找说明\n </a>\n </NSpace>\n <div h-10px></div>\n <div flex gap-10px flex-items-center>\n <NSelect\n v-model:value=\"clickAction.action\"\n :options=\"actionOptions\"\n class=\"w-150px\"\n />\n <a\n href=\"https://gkd.li/api/interfaces/RawRuleProps#action\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n 操作说明\n </a>\n </div>\n </NModal>\n <div flex flex-col p-10px gap-10px h-full>\n <NSpace>\n <RouterLink to=\"/\">\n <NButton>\n <template #icon>\n <NIcon>\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n viewBox=\"0 0 32 32\"\n >\n <path\n d=\"M16.612 2.214a1.01 1.01 0 0 0-1.242 0L1 13.419l1.243 1.572L4 13.621V26a2.004 2.004 0 0 0 2 2h20a2.004 2.004 0 0 0 2-2V13.63L29.757 15L31 13.428zM18 26h-4v-8h4zm2 0v-8a2.002 2.002 0 0 0-2-2h-4a2.002 2.002 0 0 0-2 2v8H6V12.062l10-7.79l10 7.8V26z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </NIcon>\n </template>\n </NButton>\n </RouterLink>\n <NInputGroup>\n <NInput\n v-model:value=\"link\"\n placeholder=\"请输入设备地址\"\n :style=\"{ minWidth: `250px` }\"\n @keyup.enter=\"connect.invoke\"\n ></NInput>\n <NButton @click=\"connect.invoke\" :loading=\"connect.loading\">\n 刷新连接\n </NButton>\n </NInputGroup>\n <template v-if=\"device\">\n <div class=\"h-full\" flex flex-items-center>\n {{ `已连接 ${device.manufacturer} Android ${device.release}` }}\n </div>\n <NButton\n @click=\"captureSnapshot.invoke\"\n :loading=\"captureSnapshot.loading\"\n >\n 快照\n </NButton>\n <NButton\n @click=\"downloadAllSnapshot.invoke\"\n :loading=\"downloadAllSnapshot.loading\"\n >\n 下载设备所有快照\n </NButton>\n <NButton @click=\"showSubsModel = true\"> 修改内存订阅 </NButton>\n <NButton @click=\"showSelectorModel = true\"> 执行选择器 </NButton>\n </template>\n </NSpace>\n <NDataTable\n striped\n flexHeight\n :data=\"snapshots\"\n :columns=\"columns\"\n :pagination=\"pagination\"\n @update:sorter=\"handleSorterChange\"\n size=\"small\"\n class=\"flex-1\"\n :scrollX=\"1200\"\n />\n </div>\n</template>\n"],"names":["useDeviceApi","initOrigin","origin","shallowRef","rpc","rpcName","options","u","key","value","response","enhanceFetch","e","message","_a","error","jsonRpc","args","blobRpc","arrayBufferRpc","query","data","router","useRouter","title","useTitle","api","link","useStorage","device","connect","useTask","errorWrap","URL","trim","onMounted","delay","toValidURL","invoke","snapshots","watchEffect","manufacturer","release","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","NSpace","default","NButton","loading","onClick","_createTextVNode2","pagination","shallowReactive","page","pageSize","showSizePicker","pageSizes","onChange","onUpdatePageSize","watch","showSubsModel","updateSubs","JSON5","parse","categories","globalGroups","apps","updateSubscription","Array","isArray","showSelectorModel","actionOptions","label","undefined","clickAction","selector","action","quickFind","execSelector","placeholder"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DevicePage-D8Dz5nDd.js","sources":["../../src/utils/api.ts","../../src/views/DevicePage.vue"],"sourcesContent":["import { shallowRef } from 'vue';\nimport { message } from './discrete';\nimport { enhanceFetch } from './fetch';\nimport type { Device, RpcError, Snapshot } from './types';\n\ntype RpcOptions = {\n query?: Record<string, unknown>;\n init?: RequestInit;\n};\n\nexport const useDeviceApi = (initOrigin?: string) => {\n const origin = shallowRef(initOrigin);\n const rpc = async (rpcName: string, options: RpcOptions = {}) => {\n if (!origin.value) {\n throw new Error(`origin must exist`);\n }\n const u = new URL(`/api/` + rpcName, origin.value);\n Object.entries(options.query || {}).forEach(([key, value]) => {\n if (value === undefined) return;\n u.searchParams.set(key, String(value));\n });\n const response = await enhanceFetch(u, options.init).catch((e) => {\n message.error(`网络错误:/` + rpcName);\n throw e;\n });\n if (!response.ok) {\n message.error(`接口错误:/` + rpcName + `:` + response.status);\n throw response;\n }\n if (response.headers.get(`Content-Type`)?.includes(`application/json`)) {\n const error = (await response.clone().json()) as RpcError;\n if (error.__error) {\n message.error(error.message);\n throw response;\n }\n }\n return response;\n };\n const jsonRpc = async <T>(...args: Parameters<typeof rpc>) => {\n const response = await rpc(...args);\n return (await response.json()) as T;\n };\n const blobRpc = async (...args: Parameters<typeof rpc>) => {\n const response = await rpc(...args);\n return await response.blob();\n };\n const arrayBufferRpc = async (...args: Parameters<typeof rpc>) => {\n const response = await rpc(...args);\n return await response.arrayBuffer();\n };\n const api = {\n device: async () => jsonRpc<Device>(`device`),\n snapshot: async (query?: { id?: string | number }) => {\n return jsonRpc<Snapshot>(`snapshot`, { query });\n },\n screenshot: async (query: { id: string | number }) => {\n return arrayBufferRpc(`screenshot`, { query });\n },\n captureSnapshot: async () => {\n return jsonRpc<Snapshot>(`captureSnapshot`);\n },\n snapshots: async () => {\n return jsonRpc<Snapshot[]>(`snapshots`);\n },\n updateSubsApps: async (data: unknown[]) => {\n return blobRpc(`updateSubsApps`, {\n init: {\n method: 'POST',\n body: JSON.stringify(data),\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n });\n },\n updateSubscription: async (data: any) => {\n return blobRpc(`updateSubscription`, {\n init: {\n method: 'POST',\n body: JSON.stringify({\n ...data,\n id: -1,\n name: '内存订阅',\n version: 0,\n }),\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n });\n },\n execSelector: async (data: {\n selector: string;\n action?: string;\n quickFind?: boolean;\n }) => {\n return jsonRpc<{ message: string; action: string; result: boolean }>(\n `execSelector`,\n {\n init: {\n method: 'POST',\n // value 是旧版本的选择器\n body: JSON.stringify({ ...data, value: data.selector }),\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n },\n );\n },\n };\n return { origin, api };\n};\n","<script setup lang=\"tsx\">\nimport { useDeviceApi } from '@/utils/api';\nimport { toValidURL } from '@/utils/check';\nimport { message } from '@/utils/discrete';\nimport { errorWrap } from '@/utils/error';\nimport { delay } from '@/utils/others';\nimport { screenshotStorage, snapshotStorage } from '@/utils/storage';\nimport { useSnapshotColumns } from '@/utils/table';\nimport { useBatchTask, useTask } from '@/utils/task';\nimport type { Device, Snapshot } from '@/utils/types';\nimport { useStorage, useTitle } from '@vueuse/core';\nimport JSON5 from 'json5';\nimport {\n NButton,\n NCheckbox,\n NDataTable,\n NIcon,\n NInput,\n NInputGroup,\n NModal,\n NSelect,\n NSpace,\n type DataTableColumns,\n type PaginationProps,\n} from 'naive-ui';\nimport type { SortState } from 'naive-ui/es/data-table/src/interface';\nimport pLimit from 'p-limit';\nimport {\n onMounted,\n shallowReactive,\n shallowRef,\n watch,\n watchEffect,\n} from 'vue';\nimport { useRouter } from 'vue-router';\n\nconst router = useRouter();\nconst title = useTitle(`新设备`);\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 title.value = `已连接 ` + device.value.manufacturer;\n device.value.release;\n const result = await api.snapshots();\n result.sort((a, b) => b.id - a.id);\n snapshots.value = result;\n subsText.value = '';\n});\n\nconst captureSnapshot = useTask(async () => {\n const snapshot = await api.captureSnapshot();\n const screenshot = await api.screenshot({ id: snapshot.id });\n await snapshotStorage.setItem(snapshot.id, snapshot);\n await screenshotStorage.setItem(snapshot.id, screenshot);\n message.success(`保存快照成功`);\n const result = await api.snapshots();\n result.sort((a, b) => b.id - a.id);\n snapshots.value = result;\n});\nconst downloadAllSnapshot = useTask(async () => {\n const snapshotIds = (await api.snapshots()).map((s) => s.id);\n const existSnapshotIds = new Set(\n (await screenshotStorage.keys()).map((s) => parseInt(s)),\n );\n const unimportSnapshotIds = snapshotIds.filter(\n (k) => !existSnapshotIds.has(k),\n );\n if (unimportSnapshotIds.length == 0) {\n message.success(`没有新记录可导入`);\n return;\n }\n let r = 0;\n const limit = pLimit(3);\n await Promise.all(\n unimportSnapshotIds.map((snapshotId) =>\n limit(async () => {\n const [newSnapshot, newScreenshot] = await Promise.all([\n api.snapshot({ id: snapshotId }),\n api.screenshot({ id: snapshotId }),\n ] as const);\n if (!newSnapshot.nodes) return;\n await Promise.all([\n snapshotStorage.setItem(snapshotId, newSnapshot),\n screenshotStorage.setItem(snapshotId, newScreenshot),\n ]);\n r++;\n }),\n ),\n );\n message.success(`导入${r}条新记录`);\n});\n\nconst {\n activityIdCol,\n appIdCol,\n appNameCol,\n ctimeCol,\n appVersionCodeCol,\n appVersionNameCol,\n resetColWidth,\n} = useSnapshotColumns();\nconst handleSorterChange = (sorter: SortState) => {\n if (sorter.columnKey == ctimeCol.key) {\n ctimeCol.sortOrder = sorter.order;\n }\n};\nconst previewSnapshot = useBatchTask(\n async (row: Snapshot) => {\n if (!(await snapshotStorage.hasItem(row.id))) {\n await snapshotStorage.setItem(row.id, await api.snapshot({ id: row.id }));\n }\n if (!(await screenshotStorage.hasItem(row.id))) {\n const bf = await api.screenshot({ id: row.id });\n await screenshotStorage.setItem(row.id, bf);\n }\n window.open(\n router.resolve({\n name: 'snapshot',\n params: { snapshotId: row.id },\n }).href,\n );\n },\n (r) => r.id,\n);\n\nconst columns: DataTableColumns<Snapshot> = [\n ctimeCol,\n appNameCol,\n appIdCol,\n appVersionCodeCol,\n appVersionNameCol,\n activityIdCol,\n {\n key: `actions`,\n title: `操作`,\n fixed: 'right',\n width: `120px`,\n render(row) {\n return (\n <NSpace size=\"small\">\n <NButton\n size=\"small\"\n loading={previewSnapshot.loading[row.id]}\n onClick={() => previewSnapshot.invoke(row)}\n >\n 查看\n </NButton>\n </NSpace>\n );\n },\n },\n];\n\nconst pagination = shallowReactive<PaginationProps>({\n page: 1,\n pageSize: 50,\n showSizePicker: true,\n pageSizes: [50, 100],\n onChange: (page: number) => {\n pagination.page = page;\n },\n onUpdatePageSize: (pageSize: number) => {\n pagination.pageSize = pageSize;\n pagination.page = 1;\n },\n});\nwatch(pagination, resetColWidth);\n\nconst showSubsModel = shallowRef(false);\nconst subsText = shallowRef(``);\nconst updateSubs = useTask(async () => {\n const data = errorWrap(() => JSON5.parse(subsText.value.trim()));\n if (!data) return;\n if (data.categories || data.globalGroups || data.apps) {\n await api.updateSubscription(data);\n } else if (typeof data.id == 'string') {\n await api.updateSubscription({\n apps: [data],\n });\n } else if (Array.isArray(data) && typeof data[0].id == 'string') {\n await api.updateSubscription({\n apps: data,\n });\n } else if (typeof data.key == 'number') {\n await api.updateSubscription({\n globalGroups: [data],\n });\n } else if (Array.isArray(data) && typeof data[0].key == 'number') {\n await api.updateSubscription({\n globalGroups: data,\n });\n } else {\n message.error(`无法识别的订阅文本`);\n return;\n }\n message.success(`修改成功`);\n});\n\nconst showSelectorModel = shallowRef(false);\n\nconst actionOptions: {\n value?: string;\n label: string;\n}[] = [\n {\n label: '仅查询',\n value: undefined,\n },\n {\n value: 'click',\n label: 'click',\n },\n {\n value: 'clickNode',\n label: 'clickNode',\n },\n {\n value: 'clickCenter',\n label: 'clickCenter',\n },\n {\n value: 'back',\n label: 'back',\n },\n {\n value: 'longClick',\n label: 'longClick',\n },\n {\n value: 'longClickNode',\n label: 'longClickNode',\n },\n {\n value: 'longClickCenter',\n label: 'longClickCenter',\n },\n];\nconst clickAction = shallowReactive({\n selector: ``,\n action: 'click',\n quickFind: false,\n});\nconst execSelector = useTask(async () => {\n const result = await api.execSelector({ ...clickAction });\n if (result.message) {\n message.success(`操作成功:` + result.message);\n return;\n }\n if (result.action) {\n message.success((result.result ? `操作成功:` : `操作失败`) + result.action);\n } else if (!result.action && result.result) {\n message.success(`查询成功`);\n }\n});\n\nconst placeholder = `\n请输入订阅文本(JSON5语法):\n示例1-更新单个应用的规则:\n{\n id: 'appId',\n groups: []\n}\n\n示例2-更新多个应用的规则:\n[\n {\n id: 'appId1',\n groups: []\n },\n {\n id: 'appId2',\n groups: []\n }\n]\n\n示例3-更新全局规则(1.7.0):\n{\n name: '全局规则-1',\n key: 0,\n rules: []\n}\n\n示例3-更新多个全局规则(1.7.0):\n[\n {\n name: '全局规则-1',\n key: 0,\n rules: []\n },\n {\n name: '全局规则-2',\n key: 1,\n rules: []\n }\n]\n\n示例4-更新整个订阅(1.7.0):\n{\n apps: [],\n globalGroups: [],\n categories: [],\n}\n`.trim();\n</script>\n<template>\n <NModal\n v-model:show=\"showSubsModel\"\n preset=\"dialog\"\n style=\"width: 800px\"\n title=\"修改内存订阅\"\n positive-text=\"确认\"\n :positiveButtonProps=\"{\n loading: updateSubs.loading,\n onClick() {\n updateSubs.invoke();\n },\n }\"\n >\n <NInput\n v-model:value=\"subsText\"\n :disabled=\"updateSubs.loading\"\n type=\"textarea\"\n class=\"gkd_code\"\n :autosize=\"{\n minRows: 20,\n maxRows: 25,\n }\"\n :placeholder=\"placeholder\"\n />\n </NModal>\n <NModal\n v-model:show=\"showSelectorModel\"\n preset=\"dialog\"\n style=\"width: 800px\"\n title=\"执行选择器\"\n positive-text=\"确认\"\n :positiveButtonProps=\"{\n loading: execSelector.loading,\n onClick() {\n execSelector.invoke();\n },\n }\"\n >\n <NInput\n v-model:value=\"clickAction.selector\"\n :disabled=\"execSelector.loading\"\n type=\"textarea\"\n class=\"gkd_code\"\n :autosize=\"{\n minRows: 4,\n maxRows: 10,\n }\"\n placeholder=\"请输入合法的选择器\"\n />\n <div h-15px></div>\n <NSpace>\n <NCheckbox v-model:checked=\"clickAction.quickFind\"> 快速查找 </NCheckbox>\n <a\n href=\"https://gkd.li/api/interfaces/RawCommonProps.html#quickfind\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n 查找说明\n </a>\n </NSpace>\n <div h-10px></div>\n <div flex gap-10px flex-items-center>\n <NSelect\n v-model:value=\"clickAction.action\"\n :options=\"actionOptions\"\n class=\"w-150px\"\n />\n <a\n href=\"https://gkd.li/api/interfaces/RawRuleProps#action\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n 操作说明\n </a>\n </div>\n </NModal>\n <div flex flex-col p-10px gap-10px h-full>\n <div flex items-center gap-24px>\n <a href=\"/\" flex ml-12px title=\"首页\">\n <NButton text>\n <template #icon>\n <NIcon :size=\"24\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n viewBox=\"0 0 32 32\"\n >\n <path\n d=\"M16.612 2.214a1.01 1.01 0 0 0-1.242 0L1 13.419l1.243 1.572L4 13.621V26a2.004 2.004 0 0 0 2 2h20a2.004 2.004 0 0 0 2-2V13.63L29.757 15L31 13.428zM18 26h-4v-8h4zm2 0v-8a2.002 2.002 0 0 0-2-2h-4a2.002 2.002 0 0 0-2 2v8H6V12.062l10-7.79l10 7.8V26z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </NIcon>\n </template>\n </NButton>\n </a>\n <NInputGroup>\n <NInput\n v-model:value=\"link\"\n placeholder=\"请输入设备地址\"\n :style=\"{ width: `200px` }\"\n @keyup.enter=\"connect.invoke\"\n ></NInput>\n <NButton @click=\"connect.invoke\" :loading=\"connect.loading\">\n 刷新连接\n </NButton>\n </NInputGroup>\n <template v-if=\"device\">\n <div class=\"h-full\" flex flex-items-center>\n {{ `已连接 ${device.manufacturer} Android ${device.release}` }}\n </div>\n <NButton\n @click=\"captureSnapshot.invoke\"\n :loading=\"captureSnapshot.loading\"\n >\n 快照\n </NButton>\n <NButton\n @click=\"downloadAllSnapshot.invoke\"\n :loading=\"downloadAllSnapshot.loading\"\n >\n 下载设备所有快照\n </NButton>\n <NButton @click=\"showSubsModel = true\"> 修改内存订阅 </NButton>\n <NButton @click=\"showSelectorModel = true\"> 执行选择器 </NButton>\n </template>\n </div>\n <NDataTable\n striped\n flexHeight\n :data=\"snapshots\"\n :columns=\"columns\"\n :pagination=\"pagination\"\n @update:sorter=\"handleSorterChange\"\n size=\"small\"\n class=\"flex-1\"\n :scrollX=\"1200\"\n />\n </div>\n</template>\n"],"names":["useDeviceApi","initOrigin","origin","shallowRef","rpc","rpcName","options","u","key","value","response","enhanceFetch","e","message","_a","error","jsonRpc","args","blobRpc","arrayBufferRpc","query","data","router","useRouter","title","useTitle","api","link","useStorage","device","connect","useTask","errorWrap","URL","trim","onMounted","delay","toValidURL","invoke","snapshots","watchEffect","manufacturer","release","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","NSpace","default","NButton","loading","onClick","_createTextVNode2","pagination","shallowReactive","page","pageSize","showSizePicker","pageSizes","onChange","onUpdatePageSize","watch","showSubsModel","updateSubs","JSON5","parse","categories","globalGroups","apps","updateSubscription","Array","isArray","showSelectorModel","actionOptions","label","undefined","clickAction","selector","action","quickFind","execSelector","placeholder"],"mappings":"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"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import{d as Ut,c as zt,a as Xe,b as A,i as et,e as Te,f as O,g as tt,h as Ye,u as Dt,j as dt,k as Ft,r as Ae,t as Vt,l as $t,m as le,n as q,p as Ie,o as J,q as Ht,s as Me,v as z,w as Z,N as Kt,x as Ot,y as Re,z as Jt,A as $,B as ce,C as me,D as y,E as S,F as d,G as $e,H as ft,I as ve,J as ye,K as I,L as U,M as V,O as ht,P as gt,Q as Wt,R as nt,S as Yt,T as jt,U as Qt,V as Gt,W as ot,X as ee,Y as qt,Z as it,_ as Zt}from"./index-BhH5asly.js";import{_ as Xt,w as rt,s as at}from"./ActionCard.vue_vue_type_script_setup_true_lang-D1bqqquO.js";import{u as en,b as tn,a as nn,c as on,d as rn}from"./export-CF8GsQ0z.js";import{c as an,d as sn}from"./fetch-C0XLIL4i.js";import{u as j,g as st,N as ln,a as Pe,b as ge}from"./dayjs.min-DrBDYJ5w.js";import{u as cn,l as Le,N as He,a as ae}from"./index-BFfvSiU_.js";import{i as un,a as dn}from"./import-6OeGP_H_.js";import{u as fn,N as hn,r as gn}from"./table-C31-ztL6.js";import"./index-CE_5kTG8.js";const wn={buttonHeightSmall:"14px",buttonHeightMedium:"18px",buttonHeightLarge:"22px",buttonWidthSmall:"14px",buttonWidthMedium:"18px",buttonWidthLarge:"22px",buttonWidthPressedSmall:"20px",buttonWidthPressedMedium:"24px",buttonWidthPressedLarge:"28px",railHeightSmall:"18px",railHeightMedium:"22px",railHeightLarge:"26px",railWidthSmall:"32px",railWidthMedium:"40px",railWidthLarge:"48px"},pn=e=>{const{primaryColor:t,opacityDisabled:r,borderRadius:i,textColor3:n}=e;return Object.assign(Object.assign({},wn),{iconColor:n,textColor:"white",loadingColor:t,opacityDisabled:r,railColor:"rgba(0, 0, 0, .14)",railColorActive:t,buttonBoxShadow:"0 1px 4px 0 rgba(0, 0, 0, 0.3), inset 0 0 1px 0 rgba(0, 0, 0, 0.05)",buttonColor:"#FFF",railBorderRadiusSmall:i,railBorderRadiusMedium:i,railBorderRadiusLarge:i,buttonBorderRadiusSmall:i,buttonBorderRadiusMedium:i,buttonBorderRadiusLarge:i,boxShadowFocus:`0 0 0 2px ${zt(t,{alpha:.2})}`})},mn={name:"Switch",common:Ut,self:pn},vn=Xe("switch",`
|
|
2
|
+
height: var(--n-height);
|
|
3
|
+
min-width: var(--n-width);
|
|
4
|
+
vertical-align: middle;
|
|
5
|
+
user-select: none;
|
|
6
|
+
-webkit-user-select: none;
|
|
7
|
+
display: inline-flex;
|
|
8
|
+
outline: none;
|
|
9
|
+
justify-content: center;
|
|
10
|
+
align-items: center;
|
|
11
|
+
`,[A("children-placeholder",`
|
|
12
|
+
height: var(--n-rail-height);
|
|
13
|
+
display: flex;
|
|
14
|
+
flex-direction: column;
|
|
15
|
+
overflow: hidden;
|
|
16
|
+
pointer-events: none;
|
|
17
|
+
visibility: hidden;
|
|
18
|
+
`),A("rail-placeholder",`
|
|
19
|
+
display: flex;
|
|
20
|
+
flex-wrap: none;
|
|
21
|
+
`),A("button-placeholder",`
|
|
22
|
+
width: calc(1.75 * var(--n-rail-height));
|
|
23
|
+
height: var(--n-rail-height);
|
|
24
|
+
`),Xe("base-loading",`
|
|
25
|
+
position: absolute;
|
|
26
|
+
top: 50%;
|
|
27
|
+
left: 50%;
|
|
28
|
+
transform: translateX(-50%) translateY(-50%);
|
|
29
|
+
font-size: calc(var(--n-button-width) - 4px);
|
|
30
|
+
color: var(--n-loading-color);
|
|
31
|
+
transition: color .3s var(--n-bezier);
|
|
32
|
+
`,[et({left:"50%",top:"50%",originalTransform:"translateX(-50%) translateY(-50%)"})]),A("checked, unchecked",`
|
|
33
|
+
transition: color .3s var(--n-bezier);
|
|
34
|
+
color: var(--n-text-color);
|
|
35
|
+
box-sizing: border-box;
|
|
36
|
+
position: absolute;
|
|
37
|
+
white-space: nowrap;
|
|
38
|
+
top: 0;
|
|
39
|
+
bottom: 0;
|
|
40
|
+
display: flex;
|
|
41
|
+
align-items: center;
|
|
42
|
+
line-height: 1;
|
|
43
|
+
`),A("checked",`
|
|
44
|
+
right: 0;
|
|
45
|
+
padding-right: calc(1.25 * var(--n-rail-height) - var(--n-offset));
|
|
46
|
+
`),A("unchecked",`
|
|
47
|
+
left: 0;
|
|
48
|
+
justify-content: flex-end;
|
|
49
|
+
padding-left: calc(1.25 * var(--n-rail-height) - var(--n-offset));
|
|
50
|
+
`),Te("&:focus",[A("rail",`
|
|
51
|
+
box-shadow: var(--n-box-shadow-focus);
|
|
52
|
+
`)]),O("round",[A("rail","border-radius: calc(var(--n-rail-height) / 2);",[A("button","border-radius: calc(var(--n-button-height) / 2);")])]),tt("disabled",[tt("icon",[O("rubber-band",[O("pressed",[A("rail",[A("button","max-width: var(--n-button-width-pressed);")])]),A("rail",[Te("&:active",[A("button","max-width: var(--n-button-width-pressed);")])]),O("active",[O("pressed",[A("rail",[A("button","left: calc(100% - var(--n-offset) - var(--n-button-width-pressed));")])]),A("rail",[Te("&:active",[A("button","left: calc(100% - var(--n-offset) - var(--n-button-width-pressed));")])])])])])]),O("active",[A("rail",[A("button","left: calc(100% - var(--n-button-width) - var(--n-offset))")])]),A("rail",`
|
|
53
|
+
overflow: hidden;
|
|
54
|
+
height: var(--n-rail-height);
|
|
55
|
+
min-width: var(--n-rail-width);
|
|
56
|
+
border-radius: var(--n-rail-border-radius);
|
|
57
|
+
cursor: pointer;
|
|
58
|
+
position: relative;
|
|
59
|
+
transition:
|
|
60
|
+
opacity .3s var(--n-bezier),
|
|
61
|
+
background .3s var(--n-bezier),
|
|
62
|
+
box-shadow .3s var(--n-bezier);
|
|
63
|
+
background-color: var(--n-rail-color);
|
|
64
|
+
`,[A("button-icon",`
|
|
65
|
+
color: var(--n-icon-color);
|
|
66
|
+
transition: color .3s var(--n-bezier);
|
|
67
|
+
font-size: calc(var(--n-button-height) - 4px);
|
|
68
|
+
position: absolute;
|
|
69
|
+
left: 0;
|
|
70
|
+
right: 0;
|
|
71
|
+
top: 0;
|
|
72
|
+
bottom: 0;
|
|
73
|
+
display: flex;
|
|
74
|
+
justify-content: center;
|
|
75
|
+
align-items: center;
|
|
76
|
+
line-height: 1;
|
|
77
|
+
`,[et()]),A("button",`
|
|
78
|
+
align-items: center;
|
|
79
|
+
top: var(--n-offset);
|
|
80
|
+
left: var(--n-offset);
|
|
81
|
+
height: var(--n-button-height);
|
|
82
|
+
width: var(--n-button-width-pressed);
|
|
83
|
+
max-width: var(--n-button-width);
|
|
84
|
+
border-radius: var(--n-button-border-radius);
|
|
85
|
+
background-color: var(--n-button-color);
|
|
86
|
+
box-shadow: var(--n-button-box-shadow);
|
|
87
|
+
box-sizing: border-box;
|
|
88
|
+
cursor: inherit;
|
|
89
|
+
content: "";
|
|
90
|
+
position: absolute;
|
|
91
|
+
transition:
|
|
92
|
+
background-color .3s var(--n-bezier),
|
|
93
|
+
left .3s var(--n-bezier),
|
|
94
|
+
opacity .3s var(--n-bezier),
|
|
95
|
+
max-width .3s var(--n-bezier),
|
|
96
|
+
box-shadow .3s var(--n-bezier);
|
|
97
|
+
`)]),O("active",[A("rail","background-color: var(--n-rail-color-active);")]),O("loading",[A("rail",`
|
|
98
|
+
cursor: wait;
|
|
99
|
+
`)]),O("disabled",[A("rail",`
|
|
100
|
+
cursor: not-allowed;
|
|
101
|
+
opacity: .5;
|
|
102
|
+
`)])]),yn=Object.assign(Object.assign({},dt.props),{size:{type:String,default:"medium"},value:{type:[String,Number,Boolean],default:void 0},loading:Boolean,defaultValue:{type:[String,Number,Boolean],default:!1},disabled:{type:Boolean,default:void 0},round:{type:Boolean,default:!0},"onUpdate:value":[Function,Array],onUpdateValue:[Function,Array],checkedValue:{type:[String,Number,Boolean],default:!0},uncheckedValue:{type:[String,Number,Boolean],default:!1},railStyle:Function,rubberBand:{type:Boolean,default:!0},onChange:[Function,Array]});let se;const bn=Ye({name:"Switch",props:yn,setup(e){se===void 0&&(typeof CSS<"u"?typeof CSS.supports<"u"?se=CSS.supports("width","max(1px)"):se=!1:se=!0);const{mergedClsPrefixRef:t,inlineThemeDisabled:r}=Dt(e),i=dt("Switch","-switch",vn,mn,e,t),n=Ft(e),{mergedSizeRef:o,mergedDisabledRef:a}=n,s=Ae(e.defaultValue),l=Vt(e,"value"),u=$t(l,s),f=le(()=>u.value===e.checkedValue),b=Ae(!1),c=Ae(!1),h=le(()=>{const{railStyle:k}=e;if(k)return k({focused:c.value,checked:f.value})});function v(k){const{"onUpdate:value":P,onChange:R,onUpdateValue:D}=e,{nTriggerFormInput:H,nTriggerFormChange:L}=n;P&&Re(P,k),D&&Re(D,k),R&&Re(R,k),s.value=k,H(),L()}function C(){const{nTriggerFormFocus:k}=n;k()}function M(){const{nTriggerFormBlur:k}=n;k()}function p(){e.loading||a.value||(u.value!==e.checkedValue?v(e.checkedValue):v(e.uncheckedValue))}function B(){c.value=!0,C()}function m(){c.value=!1,M(),b.value=!1}function w(k){e.loading||a.value||k.key===" "&&(u.value!==e.checkedValue?v(e.checkedValue):v(e.uncheckedValue),b.value=!1)}function N(k){e.loading||a.value||k.key===" "&&(k.preventDefault(),b.value=!0)}const x=le(()=>{const{value:k}=o,{self:{opacityDisabled:P,railColor:R,railColorActive:D,buttonBoxShadow:H,buttonColor:L,boxShadowFocus:X,loadingColor:E,textColor:g,iconColor:_,[q("buttonHeight",k)]:W,[q("buttonWidth",k)]:It,[q("buttonWidthPressed",k)]:Mt,[q("railHeight",k)]:Y,[q("railWidth",k)]:re,[q("railBorderRadius",k)]:Rt,[q("buttonBorderRadius",k)]:Pt},common:{cubicBezierEaseInOut:Lt}}=i.value;let xe,Ne,_e;return se?(xe=`calc((${Y} - ${W}) / 2)`,Ne=`max(${Y}, ${W})`,_e=`max(${re}, calc(${re} + ${W} - ${Y}))`):(xe=Ie((J(Y)-J(W))/2),Ne=Ie(Math.max(J(Y),J(W))),_e=J(Y)>J(W)?re:Ie(J(re)+J(W)-J(Y))),{"--n-bezier":Lt,"--n-button-border-radius":Pt,"--n-button-box-shadow":H,"--n-button-color":L,"--n-button-width":It,"--n-button-width-pressed":Mt,"--n-button-height":W,"--n-height":Ne,"--n-offset":xe,"--n-opacity-disabled":P,"--n-rail-border-radius":Rt,"--n-rail-color":R,"--n-rail-color-active":D,"--n-rail-height":Y,"--n-rail-width":re,"--n-width":_e,"--n-box-shadow-focus":X,"--n-loading-color":E,"--n-text-color":g,"--n-icon-color":_}}),T=r?Ht("switch",le(()=>o.value[0]),x,e):void 0;return{handleClick:p,handleBlur:m,handleFocus:B,handleKeyup:w,handleKeydown:N,mergedRailStyle:h,pressed:b,mergedClsPrefix:t,mergedValue:u,checked:f,mergedDisabled:a,cssVars:r?void 0:x,themeClass:T==null?void 0:T.themeClass,onRender:T==null?void 0:T.onRender}},render(){const{mergedClsPrefix:e,mergedDisabled:t,checked:r,mergedRailStyle:i,onRender:n,$slots:o}=this;n==null||n();const{checked:a,unchecked:s,icon:l,"checked-icon":u,"unchecked-icon":f}=o,b=!(Me(l)&&Me(u)&&Me(f));return z("div",{role:"switch","aria-checked":r,class:[`${e}-switch`,this.themeClass,b&&`${e}-switch--icon`,r&&`${e}-switch--active`,t&&`${e}-switch--disabled`,this.round&&`${e}-switch--round`,this.loading&&`${e}-switch--loading`,this.pressed&&`${e}-switch--pressed`,this.rubberBand&&`${e}-switch--rubber-band`],tabindex:this.mergedDisabled?void 0:0,style:this.cssVars,onClick:this.handleClick,onFocus:this.handleFocus,onBlur:this.handleBlur,onKeyup:this.handleKeyup,onKeydown:this.handleKeydown},z("div",{class:`${e}-switch__rail`,"aria-hidden":"true",style:i},Z(a,c=>Z(s,h=>c||h?z("div",{"aria-hidden":!0,class:`${e}-switch__children-placeholder`},z("div",{class:`${e}-switch__rail-placeholder`},z("div",{class:`${e}-switch__button-placeholder`}),c),z("div",{class:`${e}-switch__rail-placeholder`},z("div",{class:`${e}-switch__button-placeholder`}),h)):null)),z("div",{class:`${e}-switch__button`},Z(l,c=>Z(u,h=>Z(f,v=>z(Kt,null,{default:()=>this.loading?z(Ot,{key:"loading",clsPrefix:e,strokeWidth:20}):this.checked&&(h||c)?z("div",{class:`${e}-switch__button-icon`,key:h?"checked-icon":"icon"},h||c):!this.checked&&(v||c)?z("div",{class:`${e}-switch__button-icon`,key:v?"unchecked-icon":"icon"},v||c):null})))),Z(a,c=>c&&z("div",{key:"checked",class:`${e}-switch__checked`},c)),Z(s,c=>c&&z("div",{key:"unchecked",class:`${e}-switch__unchecked`},c)))))}});var fe={},Cn=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then},wt={},F={};let je;const Bn=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];F.getSymbolSize=function(t){if(!t)throw new Error('"version" cannot be null or undefined');if(t<1||t>40)throw new Error('"version" should be in range from 1 to 40');return t*4+17};F.getSymbolTotalCodewords=function(t){return Bn[t]};F.getBCHDigit=function(e){let t=0;for(;e!==0;)t++,e>>>=1;return t};F.setToSJISFunction=function(t){if(typeof t!="function")throw new Error('"toSJISFunc" is not a valid function.');je=t};F.isKanjiModeEnabled=function(){return typeof je<"u"};F.toSJIS=function(t){return je(t)};var Be={};(function(e){e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2};function t(r){if(typeof r!="string")throw new Error("Param is not a string");switch(r.toLowerCase()){case"l":case"low":return e.L;case"m":case"medium":return e.M;case"q":case"quartile":return e.Q;case"h":case"high":return e.H;default:throw new Error("Unknown EC Level: "+r)}}e.isValid=function(i){return i&&typeof i.bit<"u"&&i.bit>=0&&i.bit<4},e.from=function(i,n){if(e.isValid(i))return i;try{return t(i)}catch{return n}}})(Be);function pt(){this.buffer=[],this.length=0}pt.prototype={get:function(e){const t=Math.floor(e/8);return(this.buffer[t]>>>7-e%8&1)===1},put:function(e,t){for(let r=0;r<t;r++)this.putBit((e>>>t-r-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(e){const t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}};var kn=pt;function he(e){if(!e||e<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}he.prototype.set=function(e,t,r,i){const n=e*this.size+t;this.data[n]=r,i&&(this.reservedBit[n]=!0)};he.prototype.get=function(e,t){return this.data[e*this.size+t]};he.prototype.xor=function(e,t,r){this.data[e*this.size+t]^=r};he.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]};var En=he,mt={};(function(e){const t=F.getSymbolSize;e.getRowColCoords=function(i){if(i===1)return[];const n=Math.floor(i/7)+2,o=t(i),a=o===145?26:Math.ceil((o-13)/(2*n-2))*2,s=[o-7];for(let l=1;l<n-1;l++)s[l]=s[l-1]-a;return s.push(6),s.reverse()},e.getPositions=function(i){const n=[],o=e.getRowColCoords(i),a=o.length;for(let s=0;s<a;s++)for(let l=0;l<a;l++)s===0&&l===0||s===0&&l===a-1||s===a-1&&l===0||n.push([o[s],o[l]]);return n}})(mt);var vt={};const Sn=F.getSymbolSize,lt=7;vt.getPositions=function(t){const r=Sn(t);return[[0,0],[r-lt,0],[0,r-lt]]};var yt={};(function(e){e.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};const t={N1:3,N2:3,N3:40,N4:10};e.isValid=function(n){return n!=null&&n!==""&&!isNaN(n)&&n>=0&&n<=7},e.from=function(n){return e.isValid(n)?parseInt(n,10):void 0},e.getPenaltyN1=function(n){const o=n.size;let a=0,s=0,l=0,u=null,f=null;for(let b=0;b<o;b++){s=l=0,u=f=null;for(let c=0;c<o;c++){let h=n.get(b,c);h===u?s++:(s>=5&&(a+=t.N1+(s-5)),u=h,s=1),h=n.get(c,b),h===f?l++:(l>=5&&(a+=t.N1+(l-5)),f=h,l=1)}s>=5&&(a+=t.N1+(s-5)),l>=5&&(a+=t.N1+(l-5))}return a},e.getPenaltyN2=function(n){const o=n.size;let a=0;for(let s=0;s<o-1;s++)for(let l=0;l<o-1;l++){const u=n.get(s,l)+n.get(s,l+1)+n.get(s+1,l)+n.get(s+1,l+1);(u===4||u===0)&&a++}return a*t.N2},e.getPenaltyN3=function(n){const o=n.size;let a=0,s=0,l=0;for(let u=0;u<o;u++){s=l=0;for(let f=0;f<o;f++)s=s<<1&2047|n.get(u,f),f>=10&&(s===1488||s===93)&&a++,l=l<<1&2047|n.get(f,u),f>=10&&(l===1488||l===93)&&a++}return a*t.N3},e.getPenaltyN4=function(n){let o=0;const a=n.data.length;for(let l=0;l<a;l++)o+=n.data[l];return Math.abs(Math.ceil(o*100/a/5)-10)*t.N4};function r(i,n,o){switch(i){case e.Patterns.PATTERN000:return(n+o)%2===0;case e.Patterns.PATTERN001:return n%2===0;case e.Patterns.PATTERN010:return o%3===0;case e.Patterns.PATTERN011:return(n+o)%3===0;case e.Patterns.PATTERN100:return(Math.floor(n/2)+Math.floor(o/3))%2===0;case e.Patterns.PATTERN101:return n*o%2+n*o%3===0;case e.Patterns.PATTERN110:return(n*o%2+n*o%3)%2===0;case e.Patterns.PATTERN111:return(n*o%3+(n+o)%2)%2===0;default:throw new Error("bad maskPattern:"+i)}}e.applyMask=function(n,o){const a=o.size;for(let s=0;s<a;s++)for(let l=0;l<a;l++)o.isReserved(l,s)||o.xor(l,s,r(n,l,s))},e.getBestMask=function(n,o){const a=Object.keys(e.Patterns).length;let s=0,l=1/0;for(let u=0;u<a;u++){o(u),e.applyMask(u,n);const f=e.getPenaltyN1(n)+e.getPenaltyN2(n)+e.getPenaltyN3(n)+e.getPenaltyN4(n);e.applyMask(u,n),f<l&&(l=f,s=u)}return s}})(yt);var ke={};const Q=Be,we=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],pe=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];ke.getBlocksCount=function(t,r){switch(r){case Q.L:return we[(t-1)*4+0];case Q.M:return we[(t-1)*4+1];case Q.Q:return we[(t-1)*4+2];case Q.H:return we[(t-1)*4+3];default:return}};ke.getTotalCodewordsCount=function(t,r){switch(r){case Q.L:return pe[(t-1)*4+0];case Q.M:return pe[(t-1)*4+1];case Q.Q:return pe[(t-1)*4+2];case Q.H:return pe[(t-1)*4+3];default:return}};var bt={},Ee={};const ue=new Uint8Array(512),be=new Uint8Array(256);(function(){let t=1;for(let r=0;r<255;r++)ue[r]=t,be[t]=r,t<<=1,t&256&&(t^=285);for(let r=255;r<512;r++)ue[r]=ue[r-255]})();Ee.log=function(t){if(t<1)throw new Error("log("+t+")");return be[t]};Ee.exp=function(t){return ue[t]};Ee.mul=function(t,r){return t===0||r===0?0:ue[be[t]+be[r]]};(function(e){const t=Ee;e.mul=function(i,n){const o=new Uint8Array(i.length+n.length-1);for(let a=0;a<i.length;a++)for(let s=0;s<n.length;s++)o[a+s]^=t.mul(i[a],n[s]);return o},e.mod=function(i,n){let o=new Uint8Array(i);for(;o.length-n.length>=0;){const a=o[0];for(let l=0;l<n.length;l++)o[l]^=t.mul(n[l],a);let s=0;for(;s<o.length&&o[s]===0;)s++;o=o.slice(s)}return o},e.generateECPolynomial=function(i){let n=new Uint8Array([1]);for(let o=0;o<i;o++)n=e.mul(n,new Uint8Array([1,t.exp(o)]));return n}})(bt);const Ct=bt;function Qe(e){this.genPoly=void 0,this.degree=e,this.degree&&this.initialize(this.degree)}Qe.prototype.initialize=function(t){this.degree=t,this.genPoly=Ct.generateECPolynomial(this.degree)};Qe.prototype.encode=function(t){if(!this.genPoly)throw new Error("Encoder not initialized");const r=new Uint8Array(t.length+this.degree);r.set(t);const i=Ct.mod(r,this.genPoly),n=this.degree-i.length;if(n>0){const o=new Uint8Array(this.degree);return o.set(i,n),o}return i};var xn=Qe,Bt={},G={},Ge={};Ge.isValid=function(t){return!isNaN(t)&&t>=1&&t<=40};var K={};const kt="[0-9]+",Nn="[A-Z $%*+\\-./:]+";let de="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";de=de.replace(/u/g,"\\u");const _n="(?:(?![A-Z0-9 $%*+\\-./:]|"+de+`)(?:.|[\r
|
|
103
|
+
]))+`;K.KANJI=new RegExp(de,"g");K.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g");K.BYTE=new RegExp(_n,"g");K.NUMERIC=new RegExp(kt,"g");K.ALPHANUMERIC=new RegExp(Nn,"g");const Tn=new RegExp("^"+de+"$"),An=new RegExp("^"+kt+"$"),In=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");K.testKanji=function(t){return Tn.test(t)};K.testNumeric=function(t){return An.test(t)};K.testAlphanumeric=function(t){return In.test(t)};(function(e){const t=Ge,r=K;e.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]},e.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]},e.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]},e.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]},e.MIXED={bit:-1},e.getCharCountIndicator=function(o,a){if(!o.ccBits)throw new Error("Invalid mode: "+o);if(!t.isValid(a))throw new Error("Invalid version: "+a);return a>=1&&a<10?o.ccBits[0]:a<27?o.ccBits[1]:o.ccBits[2]},e.getBestModeForData=function(o){return r.testNumeric(o)?e.NUMERIC:r.testAlphanumeric(o)?e.ALPHANUMERIC:r.testKanji(o)?e.KANJI:e.BYTE},e.toString=function(o){if(o&&o.id)return o.id;throw new Error("Invalid mode")},e.isValid=function(o){return o&&o.bit&&o.ccBits};function i(n){if(typeof n!="string")throw new Error("Param is not a string");switch(n.toLowerCase()){case"numeric":return e.NUMERIC;case"alphanumeric":return e.ALPHANUMERIC;case"kanji":return e.KANJI;case"byte":return e.BYTE;default:throw new Error("Unknown mode: "+n)}}e.from=function(o,a){if(e.isValid(o))return o;try{return i(o)}catch{return a}}})(G);(function(e){const t=F,r=ke,i=Be,n=G,o=Ge,a=7973,s=t.getBCHDigit(a);function l(c,h,v){for(let C=1;C<=40;C++)if(h<=e.getCapacity(C,v,c))return C}function u(c,h){return n.getCharCountIndicator(c,h)+4}function f(c,h){let v=0;return c.forEach(function(C){const M=u(C.mode,h);v+=M+C.getBitsLength()}),v}function b(c,h){for(let v=1;v<=40;v++)if(f(c,v)<=e.getCapacity(v,h,n.MIXED))return v}e.from=function(h,v){return o.isValid(h)?parseInt(h,10):v},e.getCapacity=function(h,v,C){if(!o.isValid(h))throw new Error("Invalid QR Code version");typeof C>"u"&&(C=n.BYTE);const M=t.getSymbolTotalCodewords(h),p=r.getTotalCodewordsCount(h,v),B=(M-p)*8;if(C===n.MIXED)return B;const m=B-u(C,h);switch(C){case n.NUMERIC:return Math.floor(m/10*3);case n.ALPHANUMERIC:return Math.floor(m/11*2);case n.KANJI:return Math.floor(m/13);case n.BYTE:default:return Math.floor(m/8)}},e.getBestVersionForData=function(h,v){let C;const M=i.from(v,i.M);if(Array.isArray(h)){if(h.length>1)return b(h,M);if(h.length===0)return 1;C=h[0]}else C=h;return l(C.mode,C.getLength(),M)},e.getEncodedBits=function(h){if(!o.isValid(h)||h<7)throw new Error("Invalid QR Code version");let v=h<<12;for(;t.getBCHDigit(v)-s>=0;)v^=a<<t.getBCHDigit(v)-s;return h<<12|v}})(Bt);var Et={};const Ke=F,St=1335,Mn=21522,ct=Ke.getBCHDigit(St);Et.getEncodedBits=function(t,r){const i=t.bit<<3|r;let n=i<<10;for(;Ke.getBCHDigit(n)-ct>=0;)n^=St<<Ke.getBCHDigit(n)-ct;return(i<<10|n)^Mn};var xt={};const Rn=G;function te(e){this.mode=Rn.NUMERIC,this.data=e.toString()}te.getBitsLength=function(t){return 10*Math.floor(t/3)+(t%3?t%3*3+1:0)};te.prototype.getLength=function(){return this.data.length};te.prototype.getBitsLength=function(){return te.getBitsLength(this.data.length)};te.prototype.write=function(t){let r,i,n;for(r=0;r+3<=this.data.length;r+=3)i=this.data.substr(r,3),n=parseInt(i,10),t.put(n,10);const o=this.data.length-r;o>0&&(i=this.data.substr(r),n=parseInt(i,10),t.put(n,o*3+1))};var Pn=te;const Ln=G,Ue=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function ne(e){this.mode=Ln.ALPHANUMERIC,this.data=e}ne.getBitsLength=function(t){return 11*Math.floor(t/2)+6*(t%2)};ne.prototype.getLength=function(){return this.data.length};ne.prototype.getBitsLength=function(){return ne.getBitsLength(this.data.length)};ne.prototype.write=function(t){let r;for(r=0;r+2<=this.data.length;r+=2){let i=Ue.indexOf(this.data[r])*45;i+=Ue.indexOf(this.data[r+1]),t.put(i,11)}this.data.length%2&&t.put(Ue.indexOf(this.data[r]),6)};var Un=ne,zn=function(t){for(var r=[],i=t.length,n=0;n<i;n++){var o=t.charCodeAt(n);if(o>=55296&&o<=56319&&i>n+1){var a=t.charCodeAt(n+1);a>=56320&&a<=57343&&(o=(o-55296)*1024+a-56320+65536,n+=1)}if(o<128){r.push(o);continue}if(o<2048){r.push(o>>6|192),r.push(o&63|128);continue}if(o<55296||o>=57344&&o<65536){r.push(o>>12|224),r.push(o>>6&63|128),r.push(o&63|128);continue}if(o>=65536&&o<=1114111){r.push(o>>18|240),r.push(o>>12&63|128),r.push(o>>6&63|128),r.push(o&63|128);continue}r.push(239,191,189)}return new Uint8Array(r).buffer};const Dn=zn,Fn=G;function oe(e){this.mode=Fn.BYTE,typeof e=="string"&&(e=Dn(e)),this.data=new Uint8Array(e)}oe.getBitsLength=function(t){return t*8};oe.prototype.getLength=function(){return this.data.length};oe.prototype.getBitsLength=function(){return oe.getBitsLength(this.data.length)};oe.prototype.write=function(e){for(let t=0,r=this.data.length;t<r;t++)e.put(this.data[t],8)};var Vn=oe;const $n=G,Hn=F;function ie(e){this.mode=$n.KANJI,this.data=e}ie.getBitsLength=function(t){return t*13};ie.prototype.getLength=function(){return this.data.length};ie.prototype.getBitsLength=function(){return ie.getBitsLength(this.data.length)};ie.prototype.write=function(e){let t;for(t=0;t<this.data.length;t++){let r=Hn.toSJIS(this.data[t]);if(r>=33088&&r<=40956)r-=33088;else if(r>=57408&&r<=60351)r-=49472;else throw new Error("Invalid SJIS character: "+this.data[t]+`
|
|
104
|
+
Make sure your charset is UTF-8`);r=(r>>>8&255)*192+(r&255),e.put(r,13)}};var Kn=ie,Nt={exports:{}};(function(e){var t={single_source_shortest_paths:function(r,i,n){var o={},a={};a[i]=0;var s=t.PriorityQueue.make();s.push(i,0);for(var l,u,f,b,c,h,v,C,M;!s.empty();){l=s.pop(),u=l.value,b=l.cost,c=r[u]||{};for(f in c)c.hasOwnProperty(f)&&(h=c[f],v=b+h,C=a[f],M=typeof a[f]>"u",(M||C>v)&&(a[f]=v,s.push(f,v),o[f]=u))}if(typeof n<"u"&&typeof a[n]>"u"){var p=["Could not find a path from ",i," to ",n,"."].join("");throw new Error(p)}return o},extract_shortest_path_from_predecessor_list:function(r,i){for(var n=[],o=i;o;)n.push(o),r[o],o=r[o];return n.reverse(),n},find_path:function(r,i,n){var o=t.single_source_shortest_paths(r,i,n);return t.extract_shortest_path_from_predecessor_list(o,n)},PriorityQueue:{make:function(r){var i=t.PriorityQueue,n={},o;r=r||{};for(o in i)i.hasOwnProperty(o)&&(n[o]=i[o]);return n.queue=[],n.sorter=r.sorter||i.default_sorter,n},default_sorter:function(r,i){return r.cost-i.cost},push:function(r,i){var n={value:r,cost:i};this.queue.push(n),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};e.exports=t})(Nt);var On=Nt.exports;(function(e){const t=G,r=Pn,i=Un,n=Vn,o=Kn,a=K,s=F,l=On;function u(p){return unescape(encodeURIComponent(p)).length}function f(p,B,m){const w=[];let N;for(;(N=p.exec(m))!==null;)w.push({data:N[0],index:N.index,mode:B,length:N[0].length});return w}function b(p){const B=f(a.NUMERIC,t.NUMERIC,p),m=f(a.ALPHANUMERIC,t.ALPHANUMERIC,p);let w,N;return s.isKanjiModeEnabled()?(w=f(a.BYTE,t.BYTE,p),N=f(a.KANJI,t.KANJI,p)):(w=f(a.BYTE_KANJI,t.BYTE,p),N=[]),B.concat(m,w,N).sort(function(T,k){return T.index-k.index}).map(function(T){return{data:T.data,mode:T.mode,length:T.length}})}function c(p,B){switch(B){case t.NUMERIC:return r.getBitsLength(p);case t.ALPHANUMERIC:return i.getBitsLength(p);case t.KANJI:return o.getBitsLength(p);case t.BYTE:return n.getBitsLength(p)}}function h(p){return p.reduce(function(B,m){const w=B.length-1>=0?B[B.length-1]:null;return w&&w.mode===m.mode?(B[B.length-1].data+=m.data,B):(B.push(m),B)},[])}function v(p){const B=[];for(let m=0;m<p.length;m++){const w=p[m];switch(w.mode){case t.NUMERIC:B.push([w,{data:w.data,mode:t.ALPHANUMERIC,length:w.length},{data:w.data,mode:t.BYTE,length:w.length}]);break;case t.ALPHANUMERIC:B.push([w,{data:w.data,mode:t.BYTE,length:w.length}]);break;case t.KANJI:B.push([w,{data:w.data,mode:t.BYTE,length:u(w.data)}]);break;case t.BYTE:B.push([{data:w.data,mode:t.BYTE,length:u(w.data)}])}}return B}function C(p,B){const m={},w={start:{}};let N=["start"];for(let x=0;x<p.length;x++){const T=p[x],k=[];for(let P=0;P<T.length;P++){const R=T[P],D=""+x+P;k.push(D),m[D]={node:R,lastCount:0},w[D]={};for(let H=0;H<N.length;H++){const L=N[H];m[L]&&m[L].node.mode===R.mode?(w[L][D]=c(m[L].lastCount+R.length,R.mode)-c(m[L].lastCount,R.mode),m[L].lastCount+=R.length):(m[L]&&(m[L].lastCount=R.length),w[L][D]=c(R.length,R.mode)+4+t.getCharCountIndicator(R.mode,B))}}N=k}for(let x=0;x<N.length;x++)w[N[x]].end=0;return{map:w,table:m}}function M(p,B){let m;const w=t.getBestModeForData(p);if(m=t.from(B,w),m!==t.BYTE&&m.bit<w.bit)throw new Error('"'+p+'" cannot be encoded with mode '+t.toString(m)+`.
|
|
105
|
+
Suggested mode is: `+t.toString(w));switch(m===t.KANJI&&!s.isKanjiModeEnabled()&&(m=t.BYTE),m){case t.NUMERIC:return new r(p);case t.ALPHANUMERIC:return new i(p);case t.KANJI:return new o(p);case t.BYTE:return new n(p)}}e.fromArray=function(B){return B.reduce(function(m,w){return typeof w=="string"?m.push(M(w,null)):w.data&&m.push(M(w.data,w.mode)),m},[])},e.fromString=function(B,m){const w=b(B,s.isKanjiModeEnabled()),N=v(w),x=C(N,m),T=l.find_path(x.map,"start","end"),k=[];for(let P=1;P<T.length-1;P++)k.push(x.table[T[P]].node);return e.fromArray(h(k))},e.rawSplit=function(B){return e.fromArray(b(B,s.isKanjiModeEnabled()))}})(xt);const Se=F,ze=Be,Jn=kn,Wn=En,Yn=mt,jn=vt,Oe=yt,Je=ke,Qn=xn,Ce=Bt,Gn=Et,qn=G,De=xt;function Zn(e,t){const r=e.size,i=jn.getPositions(t);for(let n=0;n<i.length;n++){const o=i[n][0],a=i[n][1];for(let s=-1;s<=7;s++)if(!(o+s<=-1||r<=o+s))for(let l=-1;l<=7;l++)a+l<=-1||r<=a+l||(s>=0&&s<=6&&(l===0||l===6)||l>=0&&l<=6&&(s===0||s===6)||s>=2&&s<=4&&l>=2&&l<=4?e.set(o+s,a+l,!0,!0):e.set(o+s,a+l,!1,!0))}}function Xn(e){const t=e.size;for(let r=8;r<t-8;r++){const i=r%2===0;e.set(r,6,i,!0),e.set(6,r,i,!0)}}function eo(e,t){const r=Yn.getPositions(t);for(let i=0;i<r.length;i++){const n=r[i][0],o=r[i][1];for(let a=-2;a<=2;a++)for(let s=-2;s<=2;s++)a===-2||a===2||s===-2||s===2||a===0&&s===0?e.set(n+a,o+s,!0,!0):e.set(n+a,o+s,!1,!0)}}function to(e,t){const r=e.size,i=Ce.getEncodedBits(t);let n,o,a;for(let s=0;s<18;s++)n=Math.floor(s/3),o=s%3+r-8-3,a=(i>>s&1)===1,e.set(n,o,a,!0),e.set(o,n,a,!0)}function Fe(e,t,r){const i=e.size,n=Gn.getEncodedBits(t,r);let o,a;for(o=0;o<15;o++)a=(n>>o&1)===1,o<6?e.set(o,8,a,!0):o<8?e.set(o+1,8,a,!0):e.set(i-15+o,8,a,!0),o<8?e.set(8,i-o-1,a,!0):o<9?e.set(8,15-o-1+1,a,!0):e.set(8,15-o-1,a,!0);e.set(i-8,8,1,!0)}function no(e,t){const r=e.size;let i=-1,n=r-1,o=7,a=0;for(let s=r-1;s>0;s-=2)for(s===6&&s--;;){for(let l=0;l<2;l++)if(!e.isReserved(n,s-l)){let u=!1;a<t.length&&(u=(t[a]>>>o&1)===1),e.set(n,s-l,u),o--,o===-1&&(a++,o=7)}if(n+=i,n<0||r<=n){n-=i,i=-i;break}}}function oo(e,t,r){const i=new Jn;r.forEach(function(l){i.put(l.mode.bit,4),i.put(l.getLength(),qn.getCharCountIndicator(l.mode,e)),l.write(i)});const n=Se.getSymbolTotalCodewords(e),o=Je.getTotalCodewordsCount(e,t),a=(n-o)*8;for(i.getLengthInBits()+4<=a&&i.put(0,4);i.getLengthInBits()%8!==0;)i.putBit(0);const s=(a-i.getLengthInBits())/8;for(let l=0;l<s;l++)i.put(l%2?17:236,8);return io(i,e,t)}function io(e,t,r){const i=Se.getSymbolTotalCodewords(t),n=Je.getTotalCodewordsCount(t,r),o=i-n,a=Je.getBlocksCount(t,r),s=i%a,l=a-s,u=Math.floor(i/a),f=Math.floor(o/a),b=f+1,c=u-f,h=new Qn(c);let v=0;const C=new Array(a),M=new Array(a);let p=0;const B=new Uint8Array(e.buffer);for(let T=0;T<a;T++){const k=T<l?f:b;C[T]=B.slice(v,v+k),M[T]=h.encode(C[T]),v+=k,p=Math.max(p,k)}const m=new Uint8Array(i);let w=0,N,x;for(N=0;N<p;N++)for(x=0;x<a;x++)N<C[x].length&&(m[w++]=C[x][N]);for(N=0;N<c;N++)for(x=0;x<a;x++)m[w++]=M[x][N];return m}function ro(e,t,r,i){let n;if(Array.isArray(e))n=De.fromArray(e);else if(typeof e=="string"){let u=t;if(!u){const f=De.rawSplit(e);u=Ce.getBestVersionForData(f,r)}n=De.fromString(e,u||40)}else throw new Error("Invalid data");const o=Ce.getBestVersionForData(n,r);if(!o)throw new Error("The amount of data is too big to be stored in a QR Code");if(!t)t=o;else if(t<o)throw new Error(`
|
|
106
|
+
The chosen QR Code version cannot contain this amount of data.
|
|
107
|
+
Minimum version required to store current data is: `+o+`.
|
|
108
|
+
`);const a=oo(t,r,n),s=Se.getSymbolSize(t),l=new Wn(s);return Zn(l,t),Xn(l),eo(l,t),Fe(l,r,0),t>=7&&to(l,t),no(l,a),isNaN(i)&&(i=Oe.getBestMask(l,Fe.bind(null,l,r))),Oe.applyMask(i,l),Fe(l,r,i),{modules:l,version:t,errorCorrectionLevel:r,maskPattern:i,segments:n}}wt.create=function(t,r){if(typeof t>"u"||t==="")throw new Error("No input text");let i=ze.M,n,o;return typeof r<"u"&&(i=ze.from(r.errorCorrectionLevel,ze.M),n=Ce.from(r.version),o=Oe.from(r.maskPattern),r.toSJISFunc&&Se.setToSJISFunction(r.toSJISFunc)),ro(t,n,i,o)};var _t={},qe={};(function(e){function t(r){if(typeof r=="number"&&(r=r.toString()),typeof r!="string")throw new Error("Color should be defined as hex string");let i=r.slice().replace("#","").split("");if(i.length<3||i.length===5||i.length>8)throw new Error("Invalid hex color: "+r);(i.length===3||i.length===4)&&(i=Array.prototype.concat.apply([],i.map(function(o){return[o,o]}))),i.length===6&&i.push("F","F");const n=parseInt(i.join(""),16);return{r:n>>24&255,g:n>>16&255,b:n>>8&255,a:n&255,hex:"#"+i.slice(0,6).join("")}}e.getOptions=function(i){i||(i={}),i.color||(i.color={});const n=typeof i.margin>"u"||i.margin===null||i.margin<0?4:i.margin,o=i.width&&i.width>=21?i.width:void 0,a=i.scale||4;return{width:o,scale:o?4:a,margin:n,color:{dark:t(i.color.dark||"#000000ff"),light:t(i.color.light||"#ffffffff")},type:i.type,rendererOpts:i.rendererOpts||{}}},e.getScale=function(i,n){return n.width&&n.width>=i+n.margin*2?n.width/(i+n.margin*2):n.scale},e.getImageWidth=function(i,n){const o=e.getScale(i,n);return Math.floor((i+n.margin*2)*o)},e.qrToImageData=function(i,n,o){const a=n.modules.size,s=n.modules.data,l=e.getScale(a,o),u=Math.floor((a+o.margin*2)*l),f=o.margin*l,b=[o.color.light,o.color.dark];for(let c=0;c<u;c++)for(let h=0;h<u;h++){let v=(c*u+h)*4,C=o.color.light;if(c>=f&&h>=f&&c<u-f&&h<u-f){const M=Math.floor((c-f)/l),p=Math.floor((h-f)/l);C=b[s[M*a+p]?1:0]}i[v++]=C.r,i[v++]=C.g,i[v++]=C.b,i[v]=C.a}}})(qe);(function(e){const t=qe;function r(n,o,a){n.clearRect(0,0,o.width,o.height),o.style||(o.style={}),o.height=a,o.width=a,o.style.height=a+"px",o.style.width=a+"px"}function i(){try{return document.createElement("canvas")}catch{throw new Error("You need to specify a canvas element")}}e.render=function(o,a,s){let l=s,u=a;typeof l>"u"&&(!a||!a.getContext)&&(l=a,a=void 0),a||(u=i()),l=t.getOptions(l);const f=t.getImageWidth(o.modules.size,l),b=u.getContext("2d"),c=b.createImageData(f,f);return t.qrToImageData(c.data,o,l),r(b,u,f),b.putImageData(c,0,0),u},e.renderToDataURL=function(o,a,s){let l=s;typeof l>"u"&&(!a||!a.getContext)&&(l=a,a=void 0),l||(l={});const u=e.render(o,a,l),f=l.type||"image/png",b=l.rendererOpts||{};return u.toDataURL(f,b.quality)}})(_t);var Tt={};const ao=qe;function ut(e,t){const r=e.a/255,i=t+'="'+e.hex+'"';return r<1?i+" "+t+'-opacity="'+r.toFixed(2).slice(1)+'"':i}function Ve(e,t,r){let i=e+t;return typeof r<"u"&&(i+=" "+r),i}function so(e,t,r){let i="",n=0,o=!1,a=0;for(let s=0;s<e.length;s++){const l=Math.floor(s%t),u=Math.floor(s/t);!l&&!o&&(o=!0),e[s]?(a++,s>0&&l>0&&e[s-1]||(i+=o?Ve("M",l+r,.5+u+r):Ve("m",n,0),n=0,o=!1),l+1<t&&e[s+1]||(i+=Ve("h",a),a=0)):n++}return i}Tt.render=function(t,r,i){const n=ao.getOptions(r),o=t.modules.size,a=t.modules.data,s=o+n.margin*2,l=n.color.light.a?"<path "+ut(n.color.light,"fill")+' d="M0 0h'+s+"v"+s+'H0z"/>':"",u="<path "+ut(n.color.dark,"stroke")+' d="'+so(a,o,n.margin)+'"/>',f='viewBox="0 0 '+s+" "+s+'"',c='<svg xmlns="http://www.w3.org/2000/svg" '+(n.width?'width="'+n.width+'" height="'+n.width+'" ':"")+f+' shape-rendering="crispEdges">'+l+u+`</svg>
|
|
109
|
+
`;return typeof i=="function"&&i(null,c),c};const lo=Cn,We=wt,At=_t,co=Tt;function Ze(e,t,r,i,n){const o=[].slice.call(arguments,1),a=o.length,s=typeof o[a-1]=="function";if(!s&&!lo())throw new Error("Callback required as last argument");if(s){if(a<2)throw new Error("Too few arguments provided");a===2?(n=r,r=t,t=i=void 0):a===3&&(t.getContext&&typeof n>"u"?(n=i,i=void 0):(n=i,i=r,r=t,t=void 0))}else{if(a<1)throw new Error("Too few arguments provided");return a===1?(r=t,t=i=void 0):a===2&&!t.getContext&&(i=r,r=t,t=void 0),new Promise(function(l,u){try{const f=We.create(r,i);l(e(f,t,i))}catch(f){u(f)}})}try{const l=We.create(r,i);n(null,e(l,t,i))}catch(l){n(l)}}fe.create=We.create;fe.toCanvas=Ze.bind(null,At.render);fe.toDataURL=Ze.bind(null,At.renderToDataURL);fe.toString=Ze.bind(null,function(e,t,r){return co.render(e,r)});const uo=["src"],fo=Ye({__name:"BuildShareDlg",props:{show:{default:!1},showModifiers:{}},emits:["update:show"],setup(e){const t=ft(),r=Jt(e,"show"),i=$(""),n=$(!1),o=cn(()=>{try{Le.parse(i.value),n.value=!1}catch{n.value=!0}},500);ce(()=>{i.value.trim()?o():n.value=!0});const a=$(!1),s=$(""),l=$("");ce(()=>{s.value?fe.toDataURL(s.value,{width:256,margin:2}).then(b=>{l.value=b}):l.value=""});const u=()=>{an(s.value),a.value=!1},f=j(async()=>{const b=Le.parse(i.value),c=await en(new TextEncoder().encode(Le.stringify({data:b,ctime:Date.now(),type:"share"})),"file.txt"),h=location.origin+t.resolve(`/s/${c.id}`).href;s.value=h,a.value=!0});return(b,c)=>(ve(),me($e,null,[y(d(ye),{show:r.value,"onUpdate:show":c[1]||(c[1]=h=>r.value=h),preset:"dialog",title:"分享规则",positiveText:d(f).loading?"分享中...":"分享",onPositiveClick:d(f).invoke,loading:d(f).loading,positiveButtonProps:{disabled:n.value},style:{width:"800px"},onAfterLeave:c[2]||(c[2]=h=>i.value="")},{default:S(()=>[y(d(He),{class:"gkd_code h-[calc(var(--gkd-height)*0.6)]",type:"textarea","show-count":"",value:i.value,"onUpdate:value":c[0]||(c[0]=h=>{d(f).loading||(i.value=h)}),placeholder:"请输入需要分享的规则"},null,8,["value"])]),_:1},8,["show","positiveText","onPositiveClick","loading","positiveButtonProps"]),y(d(ye),{show:a.value,"onUpdate:show":c[3]||(c[3]=h=>a.value=h),preset:"dialog",title:"分享成功",positiveText:"复制并关闭",negativeText:"重新分享",onPositiveClick:u,onNegativeClick:c[4]||(c[4]=h=>{a.value=!1,i.value="",r.value=!0}),onAfterLeave:c[5]||(c[5]=h=>s.value=""),maskClosable:!1},{default:S(()=>[I("div",null,[y(d(U),{text:"",tag:"a",href:s.value,target:"_blank",type:"primary"},{default:S(()=>[V(ht(s.value),1)]),_:1},8,["href"]),l.value?(ve(),me("img",{key:0,src:l.value,"size-200px":"",block:""},null,8,uo)):gt("",!0)])]),_:1},8,["show"])],64))}}),ho={flex:"","flex-col":"","p-10px":"","gap-10px":"","h-full":""},go={flex:""},wo=I("svg",{viewBox:"0 0 32 32"},[I("path",{d:"M29 27.586l-7.552-7.552a11.018 11.018 0 1 0-1.414 1.414L27.586 29zM4 13a9 9 0 1 1 9 9a9.01 9.01 0 0 1-9-9z",fill:"currentColor"})],-1),po={"h-full":"",flex:"","flex-items-center":""},mo=I("div",{"flex-1":""},null,-1),vo={flex:"","gap-24px":"","items-center":"","pr-8px":""},yo=I("svg",{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},[I("path",{d:"M19.43 12.98c.04-.32.07-.64.07-.98c0-.34-.03-.66-.07-.98l2.11-1.65c.19-.15.24-.42.12-.64l-2-3.46a.5.5 0 0 0-.61-.22l-2.49 1c-.52-.4-1.08-.73-1.69-.98l-.38-2.65A.488.488 0 0 0 14 2h-4c-.25 0-.46.18-.49.42l-.38 2.65c-.61.25-1.17.59-1.69.98l-2.49-1a.566.566 0 0 0-.18-.03c-.17 0-.34.09-.43.25l-2 3.46c-.13.22-.07.49.12.64l2.11 1.65c-.04.32-.07.65-.07.98c0 .33.03.66.07.98l-2.11 1.65c-.19.15-.24.42-.12.64l2 3.46a.5.5 0 0 0 .61.22l2.49-1c.52.4 1.08.73 1.69.98l.38 2.65c.03.24.24.42.49.42h4c.25 0 .46-.18.49-.42l.38-2.65c.61-.25 1.17-.59 1.69-.98l2.49 1c.06.02.12.03.18.03c.17 0 .34-.09.43-.25l2-3.46c.12-.22.07-.49-.12-.64l-2.11-1.65zm-1.98-1.71c.04.31.05.52.05.73c0 .21-.02.43-.05.73l-.14 1.13l.89.7l1.08.84l-.7 1.21l-1.27-.51l-1.04-.42l-.9.68c-.43.32-.84.56-1.25.73l-1.06.43l-.16 1.13l-.2 1.35h-1.4l-.19-1.35l-.16-1.13l-1.06-.43c-.43-.18-.83-.41-1.23-.71l-.91-.7l-1.06.43l-1.27.51l-.7-1.21l1.08-.84l.89-.7l-.14-1.13c-.03-.31-.05-.54-.05-.74s.02-.43.05-.73l.14-1.13l-.89-.7l-1.08-.84l.7-1.21l1.27.51l1.04.42l.9-.68c.43-.32.84-.56 1.25-.73l1.06-.43l.16-1.13l.2-1.35h1.39l.19 1.35l.16 1.13l1.06.43c.43.18.83.41 1.23.71l.91.7l1.06-.43l1.27-.51l.7 1.21l-1.07.85l-.89.7l.14 1.13zM12 8c-2.21 0-4 1.79-4 4s1.79 4 4 4s4-1.79 4-4s-1.79-4-4-4zm0 6c-1.1 0-2-.9-2-2s.9-2 2-2s2 .9 2 2s-.9 2-2 2z",fill:"currentColor"})],-1),bo=I("svg",{xmlns:"http://www.w3.org/2000/svg",width:"32",height:"32",viewBox:"0 0 24 24"},[I("path",{fill:"currentColor",d:"m14 12l-4-4v3H2v2h8v3m10 2V6a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v3h2V6h12v12H6v-3H4v3a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2"})],-1),Co={flex:"",href:"/device",title:"连接设备"},Bo=I("svg",{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 1024 1024"},[I("path",{d:"M270.1 741.7c0 23.4 19.1 42.5 42.6 42.5h48.7v120.4c0 30.5 24.5 55.4 54.6 55.4c30.2 0 54.6-24.8 54.6-55.4V784.1h85v120.4c0 30.5 24.5 55.4 54.6 55.4c30.2 0 54.6-24.8 54.6-55.4V784.1h48.7c23.5 0 42.6-19.1 42.6-42.5V346.4h-486v395.3zm357.1-600.1l44.9-65c2.6-3.8 2-8.9-1.5-11.4c-3.5-2.4-8.5-1.2-11.1 2.6l-46.6 67.6c-30.7-12.1-64.9-18.8-100.8-18.8c-35.9 0-70.1 6.7-100.8 18.8l-46.6-67.5c-2.6-3.8-7.6-5.1-11.1-2.6c-3.5 2.4-4.1 7.4-1.5 11.4l44.9 65c-71.4 33.2-121.4 96.1-127.8 169.6h486c-6.6-73.6-56.7-136.5-128-169.7zM409.5 244.1a26.9 26.9 0 1 1 26.9-26.9a26.97 26.97 0 0 1-26.9 26.9zm208.4 0a26.9 26.9 0 1 1 26.9-26.9a26.97 26.97 0 0 1-26.9 26.9zm223.4 100.7c-30.2 0-54.6 24.8-54.6 55.4v216.4c0 30.5 24.5 55.4 54.6 55.4c30.2 0 54.6-24.8 54.6-55.4V400.1c.1-30.6-24.3-55.3-54.6-55.3zm-658.6 0c-30.2 0-54.6 24.8-54.6 55.4v216.4c0 30.5 24.5 55.4 54.6 55.4c30.2 0 54.6-24.8 54.6-55.4V400.1c0-30.6-24.5-55.3-54.6-55.3z",fill:"currentColor"})],-1),ko={flex:"",href:"https://github.com/gkd-kit/inspect",target:"_blank",rel:"noopener noreferrer"},Eo=I("svg",{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 496 512"},[I("path",{d:"M165.9 397.4c0 2-2.3 3.6-5.2 3.6c-3.3.3-5.6-1.3-5.6-3.6c0-2 2.3-3.6 5.2-3.6c3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9c2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9c.3 2 2.9 3.3 5.9 2.6c2.9-.7 4.9-2.6 4.6-4.6c-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2c12.8 2.3 17.3-5.6 17.3-12.1c0-6.2-.3-40.4-.3-61.4c0 0-70 15-84.7-29.8c0 0-11.4-29.1-27.8-36.6c0 0-22.9-15.7 1.6-15.4c0 0 24.9 2 38.6 25.8c21.9 38.6 58.6 27.5 72.9 20.9c2.3-16 8.8-27.1 16-33.7c-55.9-6.2-112.3-14.3-112.3-110.5c0-27.5 7.6-41.3 23.6-58.9c-2.6-6.5-11.1-33.3 2.6-67.9c20.9-6.5 69 27 69 27c20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27c13.7 34.7 5.2 61.4 2.6 67.9c16 17.7 25.8 31.5 25.8 58.9c0 96.5-58.9 104.2-114.8 110.5c9.2 7.9 17 22.9 17 46.4c0 33.7-.3 75.4-.3 83.6c0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252C496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2c1.6 1.6 3.9 2.3 5.2 1c1.3-1 1-3.3-.7-5.2c-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9c1.6 1 3.6.7 4.3-.7c.7-1.3-.3-2.9-2.3-3.9c-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2c2.3 2.3 5.2 2.6 6.5 1c1.3-1.3.7-4.3-1.3-6.2c-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9c1.6 2.3 4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2c-1.4-2.3-4-3.3-5.6-2z",fill:"currentColor"})],-1),So=I("div",{"h-1px":"","my-10px":"",bg:"#eee"},null,-1),xo=I("div",{"h-1px":"","my-10px":"",bg:"#eee"},null,-1),No={flex:"","gap-10px":""},_o=I("div",null,"打开快照页面自动生成分享链接(请确保不含隐私)",-1),Do=Ye({__name:"HomePage",setup(e){ft();const t=$([]),r=$(!0),i=async()=>{r.value=!0,t.value=(await Qt.getAllItems()).reverse(),x.value=[],r.value=!1};Wt(i);const n=nt({query:"",actualQuery:"",updateQuery:()=>{n.actualQuery=n.query.trim(),x.value=[]}}),o=le(()=>{const E=n.actualQuery;return E?t.value.filter(g=>(st(g).name||"").includes(E)||(g.appId||"").includes(E)||(g.activityId||"").includes(E)):t.value}),a=j(async()=>{await un(),await i()}),{activityIdCol:s,appIdCol:l,appNameCol:u,ctimeCol:f,mtimeCol:b,deviceCol:c,appVersionCodeCol:h,appVersionNameCol:v,resetColWidth:C}=fn();ce(()=>{const E=o.value.reduce((g,_)=>(g.add(gn(_)),g),new Set);if(E.size<=1){c.filterOptions=void 0;return}c.filterOptions=[...E.values()].map(g=>({value:g,label:g}))}),ce(()=>{const E=o.value.reduce((g,_)=>(g.add(st(_).name),g),new Set);if(E.size<=1){u.filterOptions=void 0;return}u.filterOptions=[...E.values()].map(g=>({value:g,label:g}))}),ce(()=>{const E=o.value.reduce((g,_)=>(g.add(_.activityId),g),new Set);if(E.size<=1){s.filterOptions=void 0;return}s.filterOptions=[...E.values()].map(g=>({value:g,label:g}))});const M=Yt([{type:"selection"},f,b,c,u,l,h,v,s,{key:"actions",title:"操作",fixed:"right",width:"255px",render(E){return y(Xt,{snapshot:E,onDelete:i},null)}}]),p=nt({page:1,pageSize:50,showSizePicker:!0,pageSizes:[50,100],onChange:E=>{p.page=E},onUpdatePageSize:E=>{p.pageSize=E,p.page=1}});jt(p,C);const B=E=>{[f,b].forEach(g=>{E.columnKey!=g.key?g.sortOrder=void 0:g.sortOrder=E.order})};b.sortOrder="descend";const m=$(!1),w=$(""),N=j(async()=>{const E=w.value.trim().split(`
|
|
110
|
+
`).map(g=>g.trim()).filter(g=>qt(g));E.length!=0&&(await dn(E),await i(),w.value="")}),x=$([]),T=()=>Promise.all(x.value.map(E=>it.getItem(E))),k=j(async()=>{await new Promise((E,g)=>{sn.warning({title:"删除",content:`是否批量删除 ${x.value.length} 个快照`,negativeText:"取消",positiveText:"确认",onClose:g,onEsc:g,onMaskClick:g,onNegativeClick:g,onPositiveClick:E})}),await Promise.all(x.value.map(E=>it.removeItem(E))),await i()}),P=j(async()=>{await tn(await T())}),R=j(async()=>{await nn(await T())}),D=j(async()=>{await rt();const E=await on(await T());at({content:E.map(g=>Zt(g)).join(`
|
|
111
|
+
`)+`
|
|
112
|
+
`})}),H=j(async()=>{await rt();const E=await rn(await T());at({content:E.map(g=>location.origin+"/i/"+g).join(`
|
|
113
|
+
`)+`
|
|
114
|
+
`})}),L=$(!1),X=$(!1);return(E,g)=>(ve(),me($e,null,[I("div",ho,[I("div",go,[y(d(ge),null,{default:S(()=>[y(d(ln),null,{default:S(()=>[y(d(He),{placeholder:"请输入应用名称/应用ID/界面ID",clearable:"",class:"min-w-320px",value:d(n).query,"onUpdate:value":g[0]||(g[0]=_=>d(n).query=_),onKeyup:Gt(d(n).updateQuery,["enter"]),onChange:d(n).updateQuery},null,8,["value","onKeyup","onChange"]),y(d(U),{onClick:d(n).updateQuery},{icon:S(()=>[y(d(ae),null,{default:S(()=>[wo]),_:1})]),_:1},8,["onClick"])]),_:1}),x.value.length?(ve(),me($e,{key:0},[y(d(Pe),null,{trigger:S(()=>[y(d(U),null,{default:S(()=>[V(" 批量下载 ")]),_:1})]),default:S(()=>[y(d(ge),{vertical:""},{default:S(()=>[y(d(U),{onClick:d(R).invoke,loading:d(R).loading},{default:S(()=>[V(" 批量下载-快照 ")]),_:1},8,["onClick","loading"]),y(d(U),{onClick:d(P).invoke,loading:d(P).loading},{default:S(()=>[V(" 批量下载-图片 ")]),_:1},8,["onClick","loading"])]),_:1})]),_:1}),y(d(Pe),null,{trigger:S(()=>[y(d(U),null,{default:S(()=>[V(" 批量分享 ")]),_:1})]),default:S(()=>[y(d(ge),{vertical:""},{default:S(()=>[y(d(U),{onClick:d(H).invoke,loading:d(H).loading},{default:S(()=>[V(" 批量生成链接-快照 ")]),_:1},8,["onClick","loading"]),y(d(U),{onClick:d(D).invoke,loading:d(D).loading},{default:S(()=>[V(" 批量生成链接-图片 ")]),_:1},8,["onClick","loading"])]),_:1})]),_:1}),y(d(U),{onClick:d(k).invoke},{default:S(()=>[V(" 批量删除 ")]),_:1},8,["onClick"]),I("div",po,ht(`已选中 ${x.value.length} 个快照`),1)],64)):gt("",!0)]),_:1}),mo,I("div",vo,[y(d(U),{text:"",title:"设置",onClick:g[1]||(g[1]=_=>X.value=!0)},{icon:S(()=>[y(d(ae),{size:24},{default:S(()=>[yo]),_:1})]),_:1}),y(d(Pe),null,{trigger:S(()=>[y(d(U),{text:""},{icon:S(()=>[y(d(ae),{size:24},{default:S(()=>[bo]),_:1})]),_:1})]),default:S(()=>[y(d(ge),{vertical:""},{default:S(()=>[y(d(U),{onClick:d(a).invoke,loading:d(a).loading},{default:S(()=>[V(" 导入本地文件 ")]),_:1},8,["onClick","loading"]),y(d(U),{onClick:g[2]||(g[2]=_=>m.value=!0),loading:d(N).loading},{default:S(()=>[V(" 导入网络文件 ")]),_:1},8,["loading"])]),_:1})]),_:1}),I("a",Co,[y(d(U),{text:""},{icon:S(()=>[y(d(ae),{size:24},{default:S(()=>[Bo]),_:1})]),_:1})]),I("a",ko,[y(d(U),{text:""},{icon:S(()=>[y(d(ae),{size:24},{default:S(()=>[Eo]),_:1})]),_:1})])])]),y(d(hn),{striped:"",data:o.value,columns:M,scrollX:1800,pagination:d(p),checkedRowKeys:x.value,"onUpdate:checkedRowKeys":g[3]||(g[3]=_=>x.value=_),rowKey:_=>_.id,"onUpdate:sorter":B,size:"small",class:"flex-1",flexHeight:"",loading:r.value},null,8,["data","columns","pagination","checkedRowKeys","rowKey","loading"])]),y(d(ye),{show:m.value,"onUpdate:show":g[5]||(g[5]=_=>m.value=_),preset:"dialog",title:"导入网络文件",showIcon:!1,positiveText:"确认",negativeText:"取消",style:{width:"800px"},onPositiveClick:d(N).invoke,loading:d(N).loading,onAfterLeave:g[6]||(g[6]=_=>w.value="")},{default:S(()=>[y(d(He),{value:w.value,"onUpdate:value":g[4]||(g[4]=_=>{d(N).loading||(w.value=_)}),type:"textarea",placeholder:`1.支持ZIP文件链接
|
|
115
|
+
2.支持快照链接
|
|
116
|
+
每行一个
|
|
117
|
+
空白行自动忽略
|
|
118
|
+
非法链接行自动忽略`,autosize:{minRows:8,maxRows:16},inputProps:{style:"white-space: nowrap;"}},null,8,["value"])]),_:1},8,["show","onPositiveClick","loading"]),y(fo,{show:L.value,"onUpdate:show":g[7]||(g[7]=_=>L.value=_)},null,8,["show"]),y(d(ye),{show:X.value,"onUpdate:show":g[11]||(g[11]=_=>X.value=_),preset:"dialog",title:"设置",showIcon:!1,positiveText:"关闭",style:{width:"600px"},onPositiveClick:g[12]||(g[12]=_=>X.value=!1)},{default:S(()=>[y(d(ot),{checked:d(ee).ignoreUploadWarn,"onUpdate:checked":g[8]||(g[8]=_=>d(ee).ignoreUploadWarn=_)},{default:S(()=>[V(" 关闭生成分享链接弹窗提醒 ")]),_:1},8,["checked"]),So,y(d(ot),{checked:d(ee).ignoreWasmWarn,"onUpdate:checked":g[9]||(g[9]=_=>d(ee).ignoreWasmWarn=_)},{default:S(()=>[V(" 关闭浏览器版本正则表达式 WASM(GC) 提醒 ")]),_:1},8,["checked"]),xo,I("div",No,[y(d(bn),{value:d(ee).autoUploadImport,"onUpdate:value":g[10]||(g[10]=_=>d(ee).autoUploadImport=_)},null,8,["value"]),_o])]),_:1},8,["show"])],64))}});export{Do as default};
|
|
119
|
+
//# sourceMappingURL=HomePage-B2SdsyaW.js.map
|