@gkd-kit/inspect 0.0.1708918565247 → 0.0.1708919550570
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/404.html +4 -4
- package/dist/assets/{ActionCard.vue_vue_type_script_setup_true_lang-LU3Lt3_o.js → ActionCard.vue_vue_type_script_setup_true_lang-RSsRStYS.js} +2 -2
- package/dist/assets/{ActionCard.vue_vue_type_script_setup_true_lang-LU3Lt3_o.js.map → ActionCard.vue_vue_type_script_setup_true_lang-RSsRStYS.js.map} +1 -1
- package/dist/assets/DevicePage-IY_yZmOB.js +49 -0
- package/dist/assets/{DevicePage-Vhc1crcU.js.map → DevicePage-IY_yZmOB.js.map} +1 -1
- package/dist/assets/HomePage-M2HOTAEU.js +17 -0
- package/dist/assets/{HomePage-gL0dyHhS.js.map → HomePage-M2HOTAEU.js.map} +1 -1
- package/dist/assets/ImportPage-wkYT-97S.js +2 -0
- package/dist/assets/{ImportPage-OfwDZX7o.js.map → ImportPage-wkYT-97S.js.map} +1 -1
- package/dist/assets/{PreviewSharePage-jclU90md.js → PreviewSharePage-2JQrfTI7.js} +2 -2
- package/dist/assets/{PreviewSharePage-jclU90md.js.map → PreviewSharePage-2JQrfTI7.js.map} +1 -1
- package/dist/assets/{SnapshotPage-nw8xWimQ.js → SnapshotPage-Dq1xNb_M.js} +2 -2
- package/dist/assets/{SnapshotPage-nw8xWimQ.js.map → SnapshotPage-Dq1xNb_M.js.map} +1 -1
- package/dist/assets/{_404Page-8eX1uBKK.js → _404Page-SB0ya6gK.js} +2 -2
- package/dist/assets/{_404Page-8eX1uBKK.js.map → _404Page-SB0ya6gK.js.map} +1 -1
- package/dist/assets/{fetch-q53fH_ne.js → fetch-MBm2U2F_.js} +6 -6
- package/dist/assets/{fetch-q53fH_ne.js.map → fetch-MBm2U2F_.js.map} +1 -1
- package/dist/assets/{import-ciP2BOZZ.js → import-UQLsOcAp.js} +2 -2
- package/dist/assets/{import-ciP2BOZZ.js.map → import-UQLsOcAp.js.map} +1 -1
- package/dist/assets/{index-w4nOLkUf.js → index-3DTTI4XP.js} +5 -5
- package/dist/assets/{index-w4nOLkUf.js.map → index-3DTTI4XP.js.map} +1 -1
- package/dist/assets/index-PfbVDA8u.js +2 -0
- package/dist/assets/{index-93KkEXbu.js.map → index-PfbVDA8u.js.map} +1 -1
- package/dist/assets/{index-zgnFgUjn.js → index-l288urgW.js} +31 -31
- package/dist/assets/{index-zgnFgUjn.js.map → index-l288urgW.js.map} +1 -1
- package/dist/assets/{jszip.min-Aoxe2ZHN.js → jszip.min-gVLalmbv.js} +2 -2
- package/dist/assets/{jszip.min-Aoxe2ZHN.js.map → jszip.min-gVLalmbv.js.map} +1 -1
- package/dist/assets/{node-zcbE2-JH.js → node-bYxGiaSg.js} +8 -8
- package/dist/assets/{node-zcbE2-JH.js.map → node-bYxGiaSg.js.map} +1 -1
- package/dist/assets/{selector-9aatTwQM.js → selector-Gg-sdF-c.js} +2 -2
- package/dist/assets/{selector-9aatTwQM.js.map → selector-Gg-sdF-c.js.map} +1 -1
- package/dist/assets/{storage-LZEOf-J-.js → storage-WTLW1scY.js} +2 -2
- package/dist/assets/{storage-LZEOf-J-.js.map → storage-WTLW1scY.js.map} +1 -1
- package/dist/assets/{table-LwVLlnuU.js → table-nLKMtWVG.js} +2 -2
- package/dist/assets/{table-LwVLlnuU.js.map → table-nLKMtWVG.js.map} +1 -1
- package/dist/index.html +4 -4
- package/package.json +1 -1
- package/dist/assets/DevicePage-Vhc1crcU.js +0 -49
- package/dist/assets/HomePage-gL0dyHhS.js +0 -17
- package/dist/assets/ImportPage-OfwDZX7o.js +0 -2
- package/dist/assets/index-93KkEXbu.js +0 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DevicePage-Vhc1crcU.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 { checkSelector } from '@/utils/selector';\nimport { snapshotStorage, screenshotStorage } from '@/utils/storage';\nimport { useSnapshotColumns } from '@/utils/table';\nimport { useBatchTask, useTask } from '@/utils/task';\nimport type { Device, Snapshot } from '@/utils/types';\nimport { useStorage, useTitle, useDebounceFn } from '@vueuse/core';\nimport JSON5 from 'json5';\nimport {\n DataTableColumns,\n NButton,\n NDataTable,\n NInput,\n NInputGroup,\n NSpace,\n PaginationProps,\n NIcon,\n NModal,\n NSelect,\n NCheckbox,\n} from 'naive-ui';\nimport { 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 reseColWidth,\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: `Action`,\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, reseColWidth);\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 (device.value?.gkdVersionCode) {\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 } else {\n await api.updateSubsApps([].concat(data));\n }\n message.success(`修改成功`);\n});\n\nconst showSelectorModel = shallowRef(false);\n\nconst actionOptions: {\n value?: string;\n label: string;\n}[] = [\n {\n label: '仅查询',\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 selectorValid: false,\n action: 'click',\n quickFind: false,\n});\nconst checkSelectorValid = useDebounceFn(() => {\n clickAction.selectorValid = checkSelector(clickAction.selector);\n}, 500);\nwatch(() => clickAction.selector.trim(), checkSelectorValid);\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 disabled: !clickAction.selectorValid,\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","reseColWidth","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","gkdVersionCode","categories","globalGroups","apps","updateSubscription","Array","isArray","updateSubsApps","concat","showSelectorModel","actionOptions","label","clickAction","selector","selectorValid","action","quickFind","checkSelectorValid","useDebounceFn","checkSelector","execSelector","placeholder"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DevicePage-IY_yZmOB.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 { checkSelector } from '@/utils/selector';\nimport { snapshotStorage, screenshotStorage } from '@/utils/storage';\nimport { useSnapshotColumns } from '@/utils/table';\nimport { useBatchTask, useTask } from '@/utils/task';\nimport type { Device, Snapshot } from '@/utils/types';\nimport { useStorage, useTitle, useDebounceFn } from '@vueuse/core';\nimport JSON5 from 'json5';\nimport {\n DataTableColumns,\n NButton,\n NDataTable,\n NInput,\n NInputGroup,\n NSpace,\n PaginationProps,\n NIcon,\n NModal,\n NSelect,\n NCheckbox,\n} from 'naive-ui';\nimport { 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 reseColWidth,\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: `Action`,\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, reseColWidth);\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 (device.value?.gkdVersionCode) {\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 } else {\n await api.updateSubsApps([].concat(data));\n }\n message.success(`修改成功`);\n});\n\nconst showSelectorModel = shallowRef(false);\n\nconst actionOptions: {\n value?: string;\n label: string;\n}[] = [\n {\n label: '仅查询',\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 selectorValid: false,\n action: 'click',\n quickFind: false,\n});\nconst checkSelectorValid = useDebounceFn(() => {\n clickAction.selectorValid = checkSelector(clickAction.selector);\n}, 500);\nwatch(() => clickAction.selector.trim(), checkSelectorValid);\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 disabled: !clickAction.selectorValid,\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","reseColWidth","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","gkdVersionCode","categories","globalGroups","apps","updateSubscription","Array","isArray","updateSubsApps","concat","showSelectorModel","actionOptions","label","clickAction","selector","selectorValid","action","quickFind","checkSelectorValid","useDebounceFn","checkSelector","execSelector","placeholder"],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import{d as xt,u as ie,s as U,w as Z,c as rt,a as v,b as N,e as f,F as vt,f as Vt,o as it,N as Et,g as M,h as _,i as F,t as Kt,j as $t,k as se,l as _t,m as ae,r as le,n as ue,p as ce,q as fe,R as de}from"./index-3DTTI4XP.js";import{u as ge,_ as he,b as we,a as pe,c as me,s as Rt,d as Ce}from"./ActionCard.vue_vue_type_script_setup_true_lang-RSsRStYS.js";import{c as ye,d as ve,g as Lt}from"./fetch-MBm2U2F_.js";import{u as K,N as Ee,a as gt,b as q}from"./node-bYxGiaSg.js";import{l as ht,N as Bt,u as Be,a as G}from"./index-l288urgW.js";import{i as Ne,a as ke}from"./import-UQLsOcAp.js";import{s as be,a as Dt}from"./storage-WTLW1scY.js";import{u as Ae,N as Ie,r as Se}from"./table-nLKMtWVG.js";import"./jszip.min-gVLalmbv.js";var tt={},Te=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then},Ht={},L={};let It;const Me=[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];L.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};L.getSymbolTotalCodewords=function(t){return Me[t]};L.getBCHDigit=function(e){let t=0;for(;e!==0;)t++,e>>>=1;return t};L.setToSJISFunction=function(t){if(typeof t!="function")throw new Error('"toSJISFunc" is not a valid function.');It=t};L.isKanjiModeEnabled=function(){return typeof It<"u"};L.toSJIS=function(t){return It(t)};var lt={};(function(e){e.L={bit:1},e.M={bit:0},e.Q={bit:3},e.H={bit:2};function t(i){if(typeof i!="string")throw new Error("Param is not a string");switch(i.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: "+i)}}e.isValid=function(r){return r&&typeof r.bit<"u"&&r.bit>=0&&r.bit<4},e.from=function(r,o){if(e.isValid(r))return r;try{return t(r)}catch{return o}}})(lt);function Jt(){this.buffer=[],this.length=0}Jt.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 i=0;i<t;i++)this.putBit((e>>>t-i-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 Pe=Jt;function et(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)}et.prototype.set=function(e,t,i,r){const o=e*this.size+t;this.data[o]=i,r&&(this.reservedBit[o]=!0)};et.prototype.get=function(e,t){return this.data[e*this.size+t]};et.prototype.xor=function(e,t,i){this.data[e*this.size+t]^=i};et.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]};var _e=et,Ot={};(function(e){const t=L.getSymbolSize;e.getRowColCoords=function(r){if(r===1)return[];const o=Math.floor(r/7)+2,n=t(r),s=n===145?26:Math.ceil((n-13)/(2*o-2))*2,l=[n-7];for(let a=1;a<o-1;a++)l[a]=l[a-1]-s;return l.push(6),l.reverse()},e.getPositions=function(r){const o=[],n=e.getRowColCoords(r),s=n.length;for(let l=0;l<s;l++)for(let a=0;a<s;a++)l===0&&a===0||l===0&&a===s-1||l===s-1&&a===0||o.push([n[l],n[a]]);return o}})(Ot);var Yt={};const Re=L.getSymbolSize,Ut=7;Yt.getPositions=function(t){const i=Re(t);return[[0,0],[i-Ut,0],[0,i-Ut]]};var Qt={};(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(o){return o!=null&&o!==""&&!isNaN(o)&&o>=0&&o<=7},e.from=function(o){return e.isValid(o)?parseInt(o,10):void 0},e.getPenaltyN1=function(o){const n=o.size;let s=0,l=0,a=0,d=null,u=null;for(let b=0;b<n;b++){l=a=0,d=u=null;for(let g=0;g<n;g++){let c=o.get(b,g);c===d?l++:(l>=5&&(s+=t.N1+(l-5)),d=c,l=1),c=o.get(g,b),c===u?a++:(a>=5&&(s+=t.N1+(a-5)),u=c,a=1)}l>=5&&(s+=t.N1+(l-5)),a>=5&&(s+=t.N1+(a-5))}return s},e.getPenaltyN2=function(o){const n=o.size;let s=0;for(let l=0;l<n-1;l++)for(let a=0;a<n-1;a++){const d=o.get(l,a)+o.get(l,a+1)+o.get(l+1,a)+o.get(l+1,a+1);(d===4||d===0)&&s++}return s*t.N2},e.getPenaltyN3=function(o){const n=o.size;let s=0,l=0,a=0;for(let d=0;d<n;d++){l=a=0;for(let u=0;u<n;u++)l=l<<1&2047|o.get(d,u),u>=10&&(l===1488||l===93)&&s++,a=a<<1&2047|o.get(u,d),u>=10&&(a===1488||a===93)&&s++}return s*t.N3},e.getPenaltyN4=function(o){let n=0;const s=o.data.length;for(let a=0;a<s;a++)n+=o.data[a];return Math.abs(Math.ceil(n*100/s/5)-10)*t.N4};function i(r,o,n){switch(r){case e.Patterns.PATTERN000:return(o+n)%2===0;case e.Patterns.PATTERN001:return o%2===0;case e.Patterns.PATTERN010:return n%3===0;case e.Patterns.PATTERN011:return(o+n)%3===0;case e.Patterns.PATTERN100:return(Math.floor(o/2)+Math.floor(n/3))%2===0;case e.Patterns.PATTERN101:return o*n%2+o*n%3===0;case e.Patterns.PATTERN110:return(o*n%2+o*n%3)%2===0;case e.Patterns.PATTERN111:return(o*n%3+(o+n)%2)%2===0;default:throw new Error("bad maskPattern:"+r)}}e.applyMask=function(o,n){const s=n.size;for(let l=0;l<s;l++)for(let a=0;a<s;a++)n.isReserved(a,l)||n.xor(a,l,i(o,a,l))},e.getBestMask=function(o,n){const s=Object.keys(e.Patterns).length;let l=0,a=1/0;for(let d=0;d<s;d++){n(d),e.applyMask(d,o);const u=e.getPenaltyN1(o)+e.getPenaltyN2(o)+e.getPenaltyN3(o)+e.getPenaltyN4(o);e.applyMask(d,o),u<a&&(a=u,l=d)}return l}})(Qt);var ut={};const $=lt,nt=[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],ot=[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];ut.getBlocksCount=function(t,i){switch(i){case $.L:return nt[(t-1)*4+0];case $.M:return nt[(t-1)*4+1];case $.Q:return nt[(t-1)*4+2];case $.H:return nt[(t-1)*4+3];default:return}};ut.getTotalCodewordsCount=function(t,i){switch(i){case $.L:return ot[(t-1)*4+0];case $.M:return ot[(t-1)*4+1];case $.Q:return ot[(t-1)*4+2];case $.H:return ot[(t-1)*4+3];default:return}};var jt={},ct={};const W=new Uint8Array(512),st=new Uint8Array(256);(function(){let t=1;for(let i=0;i<255;i++)W[i]=t,st[t]=i,t<<=1,t&256&&(t^=285);for(let i=255;i<512;i++)W[i]=W[i-255]})();ct.log=function(t){if(t<1)throw new Error("log("+t+")");return st[t]};ct.exp=function(t){return W[t]};ct.mul=function(t,i){return t===0||i===0?0:W[st[t]+st[i]]};(function(e){const t=ct;e.mul=function(r,o){const n=new Uint8Array(r.length+o.length-1);for(let s=0;s<r.length;s++)for(let l=0;l<o.length;l++)n[s+l]^=t.mul(r[s],o[l]);return n},e.mod=function(r,o){let n=new Uint8Array(r);for(;n.length-o.length>=0;){const s=n[0];for(let a=0;a<o.length;a++)n[a]^=t.mul(o[a],s);let l=0;for(;l<n.length&&n[l]===0;)l++;n=n.slice(l)}return n},e.generateECPolynomial=function(r){let o=new Uint8Array([1]);for(let n=0;n<r;n++)o=e.mul(o,new Uint8Array([1,t.exp(n)]));return o}})(jt);const qt=jt;function St(e){this.genPoly=void 0,this.degree=e,this.degree&&this.initialize(this.degree)}St.prototype.initialize=function(t){this.degree=t,this.genPoly=qt.generateECPolynomial(this.degree)};St.prototype.encode=function(t){if(!this.genPoly)throw new Error("Encoder not initialized");const i=new Uint8Array(t.length+this.degree);i.set(t);const r=qt.mod(i,this.genPoly),o=this.degree-r.length;if(o>0){const n=new Uint8Array(this.degree);return n.set(r,o),n}return r};var Le=St,Gt={},H={},Tt={};Tt.isValid=function(t){return!isNaN(t)&&t>=1&&t<=40};var x={};const Zt="[0-9]+",De="[A-Z $%*+\\-./:]+";let X="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";X=X.replace(/u/g,"\\u");const Ue="(?:(?![A-Z0-9 $%*+\\-./:]|"+X+`)(?:.|[\r
|
|
2
|
+
]))+`;x.KANJI=new RegExp(X,"g");x.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g");x.BYTE=new RegExp(Ue,"g");x.NUMERIC=new RegExp(Zt,"g");x.ALPHANUMERIC=new RegExp(De,"g");const ze=new RegExp("^"+X+"$"),Fe=new RegExp("^"+Zt+"$"),xe=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");x.testKanji=function(t){return ze.test(t)};x.testNumeric=function(t){return Fe.test(t)};x.testAlphanumeric=function(t){return xe.test(t)};(function(e){const t=Tt,i=x;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(n,s){if(!n.ccBits)throw new Error("Invalid mode: "+n);if(!t.isValid(s))throw new Error("Invalid version: "+s);return s>=1&&s<10?n.ccBits[0]:s<27?n.ccBits[1]:n.ccBits[2]},e.getBestModeForData=function(n){return i.testNumeric(n)?e.NUMERIC:i.testAlphanumeric(n)?e.ALPHANUMERIC:i.testKanji(n)?e.KANJI:e.BYTE},e.toString=function(n){if(n&&n.id)return n.id;throw new Error("Invalid mode")},e.isValid=function(n){return n&&n.bit&&n.ccBits};function r(o){if(typeof o!="string")throw new Error("Param is not a string");switch(o.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: "+o)}}e.from=function(n,s){if(e.isValid(n))return n;try{return r(n)}catch{return s}}})(H);(function(e){const t=L,i=ut,r=lt,o=H,n=Tt,s=7973,l=t.getBCHDigit(s);function a(g,c,y){for(let E=1;E<=40;E++)if(c<=e.getCapacity(E,y,g))return E}function d(g,c){return o.getCharCountIndicator(g,c)+4}function u(g,c){let y=0;return g.forEach(function(E){const T=d(E.mode,c);y+=T+E.getBitsLength()}),y}function b(g,c){for(let y=1;y<=40;y++)if(u(g,y)<=e.getCapacity(y,c,o.MIXED))return y}e.from=function(c,y){return n.isValid(c)?parseInt(c,10):y},e.getCapacity=function(c,y,E){if(!n.isValid(c))throw new Error("Invalid QR Code version");typeof E>"u"&&(E=o.BYTE);const T=t.getSymbolTotalCodewords(c),m=i.getTotalCodewordsCount(c,y),C=(T-m)*8;if(E===o.MIXED)return C;const p=C-d(E,c);switch(E){case o.NUMERIC:return Math.floor(p/10*3);case o.ALPHANUMERIC:return Math.floor(p/11*2);case o.KANJI:return Math.floor(p/13);case o.BYTE:default:return Math.floor(p/8)}},e.getBestVersionForData=function(c,y){let E;const T=r.from(y,r.M);if(Array.isArray(c)){if(c.length>1)return b(c,T);if(c.length===0)return 1;E=c[0]}else E=c;return a(E.mode,E.getLength(),T)},e.getEncodedBits=function(c){if(!n.isValid(c)||c<7)throw new Error("Invalid QR Code version");let y=c<<12;for(;t.getBCHDigit(y)-l>=0;)y^=s<<t.getBCHDigit(y)-l;return c<<12|y}})(Gt);var Wt={};const Nt=L,Xt=1335,Ve=21522,zt=Nt.getBCHDigit(Xt);Wt.getEncodedBits=function(t,i){const r=t.bit<<3|i;let o=r<<10;for(;Nt.getBCHDigit(o)-zt>=0;)o^=Xt<<Nt.getBCHDigit(o)-zt;return(r<<10|o)^Ve};var te={};const Ke=H;function O(e){this.mode=Ke.NUMERIC,this.data=e.toString()}O.getBitsLength=function(t){return 10*Math.floor(t/3)+(t%3?t%3*3+1:0)};O.prototype.getLength=function(){return this.data.length};O.prototype.getBitsLength=function(){return O.getBitsLength(this.data.length)};O.prototype.write=function(t){let i,r,o;for(i=0;i+3<=this.data.length;i+=3)r=this.data.substr(i,3),o=parseInt(r,10),t.put(o,10);const n=this.data.length-i;n>0&&(r=this.data.substr(i),o=parseInt(r,10),t.put(o,n*3+1))};var $e=O;const He=H,wt=["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 Y(e){this.mode=He.ALPHANUMERIC,this.data=e}Y.getBitsLength=function(t){return 11*Math.floor(t/2)+6*(t%2)};Y.prototype.getLength=function(){return this.data.length};Y.prototype.getBitsLength=function(){return Y.getBitsLength(this.data.length)};Y.prototype.write=function(t){let i;for(i=0;i+2<=this.data.length;i+=2){let r=wt.indexOf(this.data[i])*45;r+=wt.indexOf(this.data[i+1]),t.put(r,11)}this.data.length%2&&t.put(wt.indexOf(this.data[i]),6)};var Je=Y,Oe=function(t){for(var i=[],r=t.length,o=0;o<r;o++){var n=t.charCodeAt(o);if(n>=55296&&n<=56319&&r>o+1){var s=t.charCodeAt(o+1);s>=56320&&s<=57343&&(n=(n-55296)*1024+s-56320+65536,o+=1)}if(n<128){i.push(n);continue}if(n<2048){i.push(n>>6|192),i.push(n&63|128);continue}if(n<55296||n>=57344&&n<65536){i.push(n>>12|224),i.push(n>>6&63|128),i.push(n&63|128);continue}if(n>=65536&&n<=1114111){i.push(n>>18|240),i.push(n>>12&63|128),i.push(n>>6&63|128),i.push(n&63|128);continue}i.push(239,191,189)}return new Uint8Array(i).buffer};const Ye=Oe,Qe=H;function Q(e){this.mode=Qe.BYTE,typeof e=="string"&&(e=Ye(e)),this.data=new Uint8Array(e)}Q.getBitsLength=function(t){return t*8};Q.prototype.getLength=function(){return this.data.length};Q.prototype.getBitsLength=function(){return Q.getBitsLength(this.data.length)};Q.prototype.write=function(e){for(let t=0,i=this.data.length;t<i;t++)e.put(this.data[t],8)};var je=Q;const qe=H,Ge=L;function j(e){this.mode=qe.KANJI,this.data=e}j.getBitsLength=function(t){return t*13};j.prototype.getLength=function(){return this.data.length};j.prototype.getBitsLength=function(){return j.getBitsLength(this.data.length)};j.prototype.write=function(e){let t;for(t=0;t<this.data.length;t++){let i=Ge.toSJIS(this.data[t]);if(i>=33088&&i<=40956)i-=33088;else if(i>=57408&&i<=60351)i-=49472;else throw new Error("Invalid SJIS character: "+this.data[t]+`
|
|
3
|
+
Make sure your charset is UTF-8`);i=(i>>>8&255)*192+(i&255),e.put(i,13)}};var Ze=j,ee={exports:{}};(function(e){var t={single_source_shortest_paths:function(i,r,o){var n={},s={};s[r]=0;var l=t.PriorityQueue.make();l.push(r,0);for(var a,d,u,b,g,c,y,E,T;!l.empty();){a=l.pop(),d=a.value,b=a.cost,g=i[d]||{};for(u in g)g.hasOwnProperty(u)&&(c=g[u],y=b+c,E=s[u],T=typeof s[u]>"u",(T||E>y)&&(s[u]=y,l.push(u,y),n[u]=d))}if(typeof o<"u"&&typeof s[o]>"u"){var m=["Could not find a path from ",r," to ",o,"."].join("");throw new Error(m)}return n},extract_shortest_path_from_predecessor_list:function(i,r){for(var o=[],n=r;n;)o.push(n),i[n],n=i[n];return o.reverse(),o},find_path:function(i,r,o){var n=t.single_source_shortest_paths(i,r,o);return t.extract_shortest_path_from_predecessor_list(n,o)},PriorityQueue:{make:function(i){var r=t.PriorityQueue,o={},n;i=i||{};for(n in r)r.hasOwnProperty(n)&&(o[n]=r[n]);return o.queue=[],o.sorter=i.sorter||r.default_sorter,o},default_sorter:function(i,r){return i.cost-r.cost},push:function(i,r){var o={value:i,cost:r};this.queue.push(o),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};e.exports=t})(ee);var We=ee.exports;(function(e){const t=H,i=$e,r=Je,o=je,n=Ze,s=x,l=L,a=We;function d(m){return unescape(encodeURIComponent(m)).length}function u(m,C,p){const w=[];let k;for(;(k=m.exec(p))!==null;)w.push({data:k[0],index:k.index,mode:C,length:k[0].length});return w}function b(m){const C=u(s.NUMERIC,t.NUMERIC,m),p=u(s.ALPHANUMERIC,t.ALPHANUMERIC,m);let w,k;return l.isKanjiModeEnabled()?(w=u(s.BYTE,t.BYTE,m),k=u(s.KANJI,t.KANJI,m)):(w=u(s.BYTE_KANJI,t.BYTE,m),k=[]),C.concat(p,w,k).sort(function(A,P){return A.index-P.index}).map(function(A){return{data:A.data,mode:A.mode,length:A.length}})}function g(m,C){switch(C){case t.NUMERIC:return i.getBitsLength(m);case t.ALPHANUMERIC:return r.getBitsLength(m);case t.KANJI:return n.getBitsLength(m);case t.BYTE:return o.getBitsLength(m)}}function c(m){return m.reduce(function(C,p){const w=C.length-1>=0?C[C.length-1]:null;return w&&w.mode===p.mode?(C[C.length-1].data+=p.data,C):(C.push(p),C)},[])}function y(m){const C=[];for(let p=0;p<m.length;p++){const w=m[p];switch(w.mode){case t.NUMERIC:C.push([w,{data:w.data,mode:t.ALPHANUMERIC,length:w.length},{data:w.data,mode:t.BYTE,length:w.length}]);break;case t.ALPHANUMERIC:C.push([w,{data:w.data,mode:t.BYTE,length:w.length}]);break;case t.KANJI:C.push([w,{data:w.data,mode:t.BYTE,length:d(w.data)}]);break;case t.BYTE:C.push([{data:w.data,mode:t.BYTE,length:d(w.data)}])}}return C}function E(m,C){const p={},w={start:{}};let k=["start"];for(let I=0;I<m.length;I++){const A=m[I],P=[];for(let z=0;z<A.length;z++){const R=A[z],V=""+I+z;P.push(V),p[V]={node:R,lastCount:0},w[V]={};for(let J=0;J<k.length;J++){const D=k[J];p[D]&&p[D].node.mode===R.mode?(w[D][V]=g(p[D].lastCount+R.length,R.mode)-g(p[D].lastCount,R.mode),p[D].lastCount+=R.length):(p[D]&&(p[D].lastCount=R.length),w[D][V]=g(R.length,R.mode)+4+t.getCharCountIndicator(R.mode,C))}}k=P}for(let I=0;I<k.length;I++)w[k[I]].end=0;return{map:w,table:p}}function T(m,C){let p;const w=t.getBestModeForData(m);if(p=t.from(C,w),p!==t.BYTE&&p.bit<w.bit)throw new Error('"'+m+'" cannot be encoded with mode '+t.toString(p)+`.
|
|
4
|
+
Suggested mode is: `+t.toString(w));switch(p===t.KANJI&&!l.isKanjiModeEnabled()&&(p=t.BYTE),p){case t.NUMERIC:return new i(m);case t.ALPHANUMERIC:return new r(m);case t.KANJI:return new n(m);case t.BYTE:return new o(m)}}e.fromArray=function(C){return C.reduce(function(p,w){return typeof w=="string"?p.push(T(w,null)):w.data&&p.push(T(w.data,w.mode)),p},[])},e.fromString=function(C,p){const w=b(C,l.isKanjiModeEnabled()),k=y(w),I=E(k,p),A=a.find_path(I.map,"start","end"),P=[];for(let z=1;z<A.length-1;z++)P.push(I.table[A[z]].node);return e.fromArray(c(P))},e.rawSplit=function(C){return e.fromArray(b(C,l.isKanjiModeEnabled()))}})(te);const ft=L,pt=lt,Xe=Pe,tn=_e,en=Ot,nn=Yt,kt=Qt,bt=ut,on=Le,at=Gt,rn=Wt,sn=H,mt=te;function an(e,t){const i=e.size,r=nn.getPositions(t);for(let o=0;o<r.length;o++){const n=r[o][0],s=r[o][1];for(let l=-1;l<=7;l++)if(!(n+l<=-1||i<=n+l))for(let a=-1;a<=7;a++)s+a<=-1||i<=s+a||(l>=0&&l<=6&&(a===0||a===6)||a>=0&&a<=6&&(l===0||l===6)||l>=2&&l<=4&&a>=2&&a<=4?e.set(n+l,s+a,!0,!0):e.set(n+l,s+a,!1,!0))}}function ln(e){const t=e.size;for(let i=8;i<t-8;i++){const r=i%2===0;e.set(i,6,r,!0),e.set(6,i,r,!0)}}function un(e,t){const i=en.getPositions(t);for(let r=0;r<i.length;r++){const o=i[r][0],n=i[r][1];for(let s=-2;s<=2;s++)for(let l=-2;l<=2;l++)s===-2||s===2||l===-2||l===2||s===0&&l===0?e.set(o+s,n+l,!0,!0):e.set(o+s,n+l,!1,!0)}}function cn(e,t){const i=e.size,r=at.getEncodedBits(t);let o,n,s;for(let l=0;l<18;l++)o=Math.floor(l/3),n=l%3+i-8-3,s=(r>>l&1)===1,e.set(o,n,s,!0),e.set(n,o,s,!0)}function Ct(e,t,i){const r=e.size,o=rn.getEncodedBits(t,i);let n,s;for(n=0;n<15;n++)s=(o>>n&1)===1,n<6?e.set(n,8,s,!0):n<8?e.set(n+1,8,s,!0):e.set(r-15+n,8,s,!0),n<8?e.set(8,r-n-1,s,!0):n<9?e.set(8,15-n-1+1,s,!0):e.set(8,15-n-1,s,!0);e.set(r-8,8,1,!0)}function fn(e,t){const i=e.size;let r=-1,o=i-1,n=7,s=0;for(let l=i-1;l>0;l-=2)for(l===6&&l--;;){for(let a=0;a<2;a++)if(!e.isReserved(o,l-a)){let d=!1;s<t.length&&(d=(t[s]>>>n&1)===1),e.set(o,l-a,d),n--,n===-1&&(s++,n=7)}if(o+=r,o<0||i<=o){o-=r,r=-r;break}}}function dn(e,t,i){const r=new Xe;i.forEach(function(a){r.put(a.mode.bit,4),r.put(a.getLength(),sn.getCharCountIndicator(a.mode,e)),a.write(r)});const o=ft.getSymbolTotalCodewords(e),n=bt.getTotalCodewordsCount(e,t),s=(o-n)*8;for(r.getLengthInBits()+4<=s&&r.put(0,4);r.getLengthInBits()%8!==0;)r.putBit(0);const l=(s-r.getLengthInBits())/8;for(let a=0;a<l;a++)r.put(a%2?17:236,8);return gn(r,e,t)}function gn(e,t,i){const r=ft.getSymbolTotalCodewords(t),o=bt.getTotalCodewordsCount(t,i),n=r-o,s=bt.getBlocksCount(t,i),l=r%s,a=s-l,d=Math.floor(r/s),u=Math.floor(n/s),b=u+1,g=d-u,c=new on(g);let y=0;const E=new Array(s),T=new Array(s);let m=0;const C=new Uint8Array(e.buffer);for(let A=0;A<s;A++){const P=A<a?u:b;E[A]=C.slice(y,y+P),T[A]=c.encode(E[A]),y+=P,m=Math.max(m,P)}const p=new Uint8Array(r);let w=0,k,I;for(k=0;k<m;k++)for(I=0;I<s;I++)k<E[I].length&&(p[w++]=E[I][k]);for(k=0;k<g;k++)for(I=0;I<s;I++)p[w++]=T[I][k];return p}function hn(e,t,i,r){let o;if(Array.isArray(e))o=mt.fromArray(e);else if(typeof e=="string"){let d=t;if(!d){const u=mt.rawSplit(e);d=at.getBestVersionForData(u,i)}o=mt.fromString(e,d||40)}else throw new Error("Invalid data");const n=at.getBestVersionForData(o,i);if(!n)throw new Error("The amount of data is too big to be stored in a QR Code");if(!t)t=n;else if(t<n)throw new Error(`
|
|
5
|
+
The chosen QR Code version cannot contain this amount of data.
|
|
6
|
+
Minimum version required to store current data is: `+n+`.
|
|
7
|
+
`);const s=dn(t,i,o),l=ft.getSymbolSize(t),a=new tn(l);return an(a,t),ln(a),un(a,t),Ct(a,i,0),t>=7&&cn(a,t),fn(a,s),isNaN(r)&&(r=kt.getBestMask(a,Ct.bind(null,a,i))),kt.applyMask(r,a),Ct(a,i,r),{modules:a,version:t,errorCorrectionLevel:i,maskPattern:r,segments:o}}Ht.create=function(t,i){if(typeof t>"u"||t==="")throw new Error("No input text");let r=pt.M,o,n;return typeof i<"u"&&(r=pt.from(i.errorCorrectionLevel,pt.M),o=at.from(i.version),n=kt.from(i.maskPattern),i.toSJISFunc&&ft.setToSJISFunction(i.toSJISFunc)),hn(t,o,r,n)};var ne={},Mt={};(function(e){function t(i){if(typeof i=="number"&&(i=i.toString()),typeof i!="string")throw new Error("Color should be defined as hex string");let r=i.slice().replace("#","").split("");if(r.length<3||r.length===5||r.length>8)throw new Error("Invalid hex color: "+i);(r.length===3||r.length===4)&&(r=Array.prototype.concat.apply([],r.map(function(n){return[n,n]}))),r.length===6&&r.push("F","F");const o=parseInt(r.join(""),16);return{r:o>>24&255,g:o>>16&255,b:o>>8&255,a:o&255,hex:"#"+r.slice(0,6).join("")}}e.getOptions=function(r){r||(r={}),r.color||(r.color={});const o=typeof r.margin>"u"||r.margin===null||r.margin<0?4:r.margin,n=r.width&&r.width>=21?r.width:void 0,s=r.scale||4;return{width:n,scale:n?4:s,margin:o,color:{dark:t(r.color.dark||"#000000ff"),light:t(r.color.light||"#ffffffff")},type:r.type,rendererOpts:r.rendererOpts||{}}},e.getScale=function(r,o){return o.width&&o.width>=r+o.margin*2?o.width/(r+o.margin*2):o.scale},e.getImageWidth=function(r,o){const n=e.getScale(r,o);return Math.floor((r+o.margin*2)*n)},e.qrToImageData=function(r,o,n){const s=o.modules.size,l=o.modules.data,a=e.getScale(s,n),d=Math.floor((s+n.margin*2)*a),u=n.margin*a,b=[n.color.light,n.color.dark];for(let g=0;g<d;g++)for(let c=0;c<d;c++){let y=(g*d+c)*4,E=n.color.light;if(g>=u&&c>=u&&g<d-u&&c<d-u){const T=Math.floor((g-u)/a),m=Math.floor((c-u)/a);E=b[l[T*s+m]?1:0]}r[y++]=E.r,r[y++]=E.g,r[y++]=E.b,r[y]=E.a}}})(Mt);(function(e){const t=Mt;function i(o,n,s){o.clearRect(0,0,n.width,n.height),n.style||(n.style={}),n.height=s,n.width=s,n.style.height=s+"px",n.style.width=s+"px"}function r(){try{return document.createElement("canvas")}catch{throw new Error("You need to specify a canvas element")}}e.render=function(n,s,l){let a=l,d=s;typeof a>"u"&&(!s||!s.getContext)&&(a=s,s=void 0),s||(d=r()),a=t.getOptions(a);const u=t.getImageWidth(n.modules.size,a),b=d.getContext("2d"),g=b.createImageData(u,u);return t.qrToImageData(g.data,n,a),i(b,d,u),b.putImageData(g,0,0),d},e.renderToDataURL=function(n,s,l){let a=l;typeof a>"u"&&(!s||!s.getContext)&&(a=s,s=void 0),a||(a={});const d=e.render(n,s,a),u=a.type||"image/png",b=a.rendererOpts||{};return d.toDataURL(u,b.quality)}})(ne);var oe={};const wn=Mt;function Ft(e,t){const i=e.a/255,r=t+'="'+e.hex+'"';return i<1?r+" "+t+'-opacity="'+i.toFixed(2).slice(1)+'"':r}function yt(e,t,i){let r=e+t;return typeof i<"u"&&(r+=" "+i),r}function pn(e,t,i){let r="",o=0,n=!1,s=0;for(let l=0;l<e.length;l++){const a=Math.floor(l%t),d=Math.floor(l/t);!a&&!n&&(n=!0),e[l]?(s++,l>0&&a>0&&e[l-1]||(r+=n?yt("M",a+i,.5+d+i):yt("m",o,0),o=0,n=!1),a+1<t&&e[l+1]||(r+=yt("h",s),s=0)):o++}return r}oe.render=function(t,i,r){const o=wn.getOptions(i),n=t.modules.size,s=t.modules.data,l=n+o.margin*2,a=o.color.light.a?"<path "+Ft(o.color.light,"fill")+' d="M0 0h'+l+"v"+l+'H0z"/>':"",d="<path "+Ft(o.color.dark,"stroke")+' d="'+pn(s,n,o.margin)+'"/>',u='viewBox="0 0 '+l+" "+l+'"',g='<svg xmlns="http://www.w3.org/2000/svg" '+(o.width?'width="'+o.width+'" height="'+o.width+'" ':"")+u+' shape-rendering="crispEdges">'+a+d+`</svg>
|
|
8
|
+
`;return typeof r=="function"&&r(null,g),g};const mn=Te,At=Ht,re=ne,Cn=oe;function Pt(e,t,i,r,o){const n=[].slice.call(arguments,1),s=n.length,l=typeof n[s-1]=="function";if(!l&&!mn())throw new Error("Callback required as last argument");if(l){if(s<2)throw new Error("Too few arguments provided");s===2?(o=i,i=t,t=r=void 0):s===3&&(t.getContext&&typeof o>"u"?(o=r,r=void 0):(o=r,r=i,i=t,t=void 0))}else{if(s<1)throw new Error("Too few arguments provided");return s===1?(i=t,t=r=void 0):s===2&&!t.getContext&&(r=i,i=t,t=void 0),new Promise(function(a,d){try{const u=At.create(i,r);a(e(u,t,r))}catch(u){d(u)}})}try{const a=At.create(i,r);o(null,e(a,t,r))}catch(a){o(a)}}tt.create=At.create;tt.toCanvas=Pt.bind(null,re.render);tt.toDataURL=Pt.bind(null,re.renderToDataURL);tt.toString=Pt.bind(null,function(e,t,i){return Cn.render(e,i)});const yn=["src"],vn=xt({__name:"BuildShareDlg",props:{show:{default:!1},showModifiers:{}},emits:["update:show"],setup(e){const t=Vt(),i=ie(e,"show"),r=U(""),o=U(!1),n=Be(()=>{try{ht.parse(r.value),o.value=!1}catch{o.value=!0}},500);Z(()=>{r.value.trim()?n():o.value=!0});const s=U(!1),l=U(""),a=U("");Z(()=>{l.value?tt.toDataURL(l.value,{width:256,margin:2}).then(b=>{a.value=b}):a.value=""});const d=()=>{ye(l.value),s.value=!1},u=K(async()=>{const b=ht.parse(r.value),g=await ge(new TextEncoder().encode(ht.stringify({data:b,ctime:Date.now(),type:"share"})),"file.txt","text/plain"),c=location.origin+t.resolve(`/s/${g.id}`).href;l.value=c,s.value=!0});return(b,g)=>(it(),rt(vt,null,[v(f(Et),{show:i.value,"onUpdate:show":g[1]||(g[1]=c=>i.value=c),preset:"dialog",title:"分享规则",positiveText:f(u).loading?"分享中...":"分享",onPositiveClick:f(u).invoke,loading:f(u).loading,positiveButtonProps:{disabled:o.value},style:{width:"800px"},onAfterLeave:g[2]||(g[2]=c=>r.value="")},{default:N(()=>[v(f(Bt),{class:"gkd_code h-[calc(var(--gkd-height)*0.6)]",type:"textarea","show-count":"",value:r.value,"onUpdate:value":g[0]||(g[0]=c=>{f(u).loading||(r.value=c)}),placeholder:"请输入需要分享的规则"},null,8,["value"])]),_:1},8,["show","positiveText","onPositiveClick","loading","positiveButtonProps"]),v(f(Et),{show:s.value,"onUpdate:show":g[3]||(g[3]=c=>s.value=c),preset:"dialog",title:"分享成功",positiveText:"复制并关闭",negativeText:"重新分享",onPositiveClick:d,onNegativeClick:g[4]||(g[4]=c=>{s.value=!1,r.value="",i.value=!0}),onAfterLeave:g[5]||(g[5]=c=>l.value=""),maskClosable:!1},{default:N(()=>[M("div",null,[v(f(_),{text:"",tag:"a",href:l.value,target:"_blank",type:"primary"},{default:N(()=>[F(Kt(l.value),1)]),_:1},8,["href"]),a.value?(it(),rt("img",{key:0,src:a.value,"size-200px":"",block:""},null,8,yn)):$t("",!0)])]),_:1},8,["show"])],64))}}),En={flex:"","flex-col":"","p-10px":"","gap-10px":"","h-full":""},Bn={flex:""},Nn=M("svg",{viewBox:"0 0 32 32"},[M("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),kn={"h-full":"",flex:"","flex-items-center":""},bn=M("div",{"flex-1":""},null,-1),An=M("svg",{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 512 512"},[M("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"32",d:"M256 112v288"}),M("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"32",d:"M400 256H112"})],-1),In=M("svg",{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 1024 1024"},[M("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),Sn=M("svg",{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 24 24"},[M("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),Tn={href:"https://github.com/gkd-kit/inspect",target:"_blank",rel:"noopener noreferrer"},Mn=M("svg",{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 496 512"},[M("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),Vn=xt({__name:"HomePage",setup(e){const t=Vt(),i=U([]),r=U(!0),o=async()=>{r.value=!0,i.value=(await be.getAllItems()).reverse(),A.value=[],r.value=!1};se(o);const n=_t({query:"",actualQuery:"",updateQuery:()=>{n.actualQuery=n.query.trim(),A.value=[]}}),s=ae(()=>{const B=n.actualQuery;return B?i.value.filter(h=>(h.appName||"").includes(B)||(h.appId||"").includes(B)||(h.activityId||"").includes(B)):i.value}),l=K(async()=>{await Ne(),await o()}),{activityIdCol:a,appIdCol:d,appNameCol:u,ctimeCol:b,mtimeCol:g,deviceCol:c,appVersionCodeCol:y,appVersionNameCol:E,reseColWidth:T}=Ae();Z(()=>{const B=s.value.reduce((h,S)=>(h.add(Se(S)),h),new Set);if(B.size<=1){c.filterOptions=void 0;return}c.filterOptions=[...B.values()].map(h=>({value:h,label:h}))}),Z(()=>{const B=s.value.reduce((h,S)=>(h.add(S.appName),h),new Set);if(B.size<=1){u.filterOptions=void 0;return}u.filterOptions=[...B.values()].map(h=>({value:h,label:h}))}),Z(()=>{const B=s.value.reduce((h,S)=>(h.add(S.activityId),h),new Set);if(B.size<=1){a.filterOptions=void 0;return}a.filterOptions=[...B.values()].map(h=>({value:h,label:h}))});const m=le([{type:"selection"},b,g,c,u,d,y,E,a,{key:"actions",title:"操作",fixed:"right",width:"255px",render(B){return v(he,{snapshot:B,onDelete:o},null)}}]),C=_t({page:1,pageSize:50,showSizePicker:!0,pageSizes:[50,100],onChange:B=>{C.page=B},onUpdatePageSize:B=>{C.pageSize=B,C.page=1}});ue(C,T);const p=B=>{[b,g].forEach(h=>{B.columnKey!=h.key?h.sortOrder=void 0:h.sortOrder=B.order})};g.sortOrder="descend";const w=U(!1),k=U(""),I=K(async()=>{const B=k.value.trim().split(`
|
|
9
|
+
`).map(h=>h.trim()).filter(h=>ce(h));B.length!=0&&(await ke(B),await o(),k.value="")}),A=U([]),P=()=>Promise.all(A.value.map(B=>Dt.getItem(B))),z=K(async()=>{await new Promise((B,h)=>{ve.warning({title:"删除",content:`是否批量删除 ${A.value.length} 个快照`,negativeText:"取消",positiveText:"确认",onClose:h,onEsc:h,onMaskClick:h,onNegativeClick:h,onPositiveClick:B})}),await Promise.all(A.value.map(B=>Dt.removeItem(B))),await o()}),R=K(async()=>{await we(await P())}),V=K(async()=>{await pe(await P())}),J=K(async()=>{const B=await me(await P());Rt({content:B.map(h=>Lt(t,h)).join(`
|
|
10
|
+
`)+`
|
|
11
|
+
`})}),D=K(async()=>{const B=await Ce(await P());Rt({content:B.map(h=>Lt(t,h)).join(`
|
|
12
|
+
`)+`
|
|
13
|
+
`})}),dt=U(!1);return(B,h)=>(it(),rt(vt,null,[M("div",En,[M("div",Bn,[v(f(q),null,{default:N(()=>[v(f(Ee),null,{default:N(()=>[v(f(Bt),{placeholder:"请输入应用名称/应用ID/界面ID",clearable:"",class:"min-w-320px",value:f(n).query,"onUpdate:value":h[0]||(h[0]=S=>f(n).query=S),onKeyup:fe(f(n).updateQuery,["enter"]),onChange:f(n).updateQuery},null,8,["value","onKeyup","onChange"]),v(f(_),{onClick:f(n).updateQuery},{icon:N(()=>[v(f(G),null,{default:N(()=>[Nn]),_:1})]),_:1},8,["onClick"])]),_:1}),A.value.length?(it(),rt(vt,{key:0},[v(f(gt),null,{trigger:N(()=>[v(f(_),null,{default:N(()=>[F(" 批量下载 ")]),_:1})]),default:N(()=>[v(f(q),{vertical:""},{default:N(()=>[v(f(_),{onClick:f(V).invoke,loading:f(V).loading},{default:N(()=>[F(" 批量下载-快照 ")]),_:1},8,["onClick","loading"]),v(f(_),{onClick:f(R).invoke,loading:f(R).loading},{default:N(()=>[F(" 批量下载-图片 ")]),_:1},8,["onClick","loading"])]),_:1})]),_:1}),v(f(gt),null,{trigger:N(()=>[v(f(_),null,{default:N(()=>[F(" 批量分享 ")]),_:1})]),default:N(()=>[v(f(q),{vertical:""},{default:N(()=>[v(f(_),{onClick:f(D).invoke,loading:f(D).loading},{default:N(()=>[F(" 批量生成链接-快照 ")]),_:1},8,["onClick","loading"]),v(f(_),{onClick:f(J).invoke,loading:f(J).loading},{default:N(()=>[F(" 批量生成链接-图片 ")]),_:1},8,["onClick","loading"])]),_:1})]),_:1}),v(f(_),{onClick:f(z).invoke},{default:N(()=>[F(" 批量删除 ")]),_:1},8,["onClick"]),M("div",kn,Kt(`已选中 ${A.value.length} 个快照`),1)],64)):$t("",!0)]),_:1}),bn,v(f(q),null,{default:N(()=>[v(f(gt),null,{trigger:N(()=>[v(f(_),null,{icon:N(()=>[v(f(G),null,{default:N(()=>[An]),_:1})]),_:1})]),default:N(()=>[v(f(q),{vertical:""},{default:N(()=>[v(f(_),{onClick:f(l).invoke,loading:f(l).loading},{default:N(()=>[F(" 导入本地文件 ")]),_:1},8,["onClick","loading"]),v(f(_),{onClick:h[1]||(h[1]=S=>w.value=!0),loading:f(I).loading},{default:N(()=>[F(" 导入网络文件 ")]),_:1},8,["loading"])]),_:1})]),_:1}),v(f(de),{to:"/device",title:"连接设备"},{default:N(()=>[v(f(_),null,{icon:N(()=>[v(f(G),null,{default:N(()=>[In]),_:1})]),_:1})]),_:1}),v(f(_),{title:"创建分享",onClick:h[2]||(h[2]=S=>dt.value=!0)},{icon:N(()=>[v(f(G),null,{default:N(()=>[Sn]),_:1})]),_:1}),M("a",Tn,[v(f(_),null,{icon:N(()=>[v(f(G),null,{default:N(()=>[Mn]),_:1})]),_:1})])]),_:1})]),v(f(Ie),{striped:"",data:s.value,columns:m,scrollX:1800,pagination:f(C),checkedRowKeys:A.value,"onUpdate:checkedRowKeys":h[3]||(h[3]=S=>A.value=S),rowKey:S=>S.id,"onUpdate:sorter":p,size:"small",class:"flex-1",flexHeight:"",loading:r.value},null,8,["data","columns","pagination","checkedRowKeys","rowKey","loading"])]),v(f(Et),{show:w.value,"onUpdate:show":h[5]||(h[5]=S=>w.value=S),preset:"dialog",title:"导入网络文件",showIcon:!1,positiveText:"确认",negativeText:"取消",style:{width:"800px"},onPositiveClick:f(I).invoke,loading:f(I).loading,onAfterLeave:h[6]||(h[6]=S=>k.value="")},{default:N(()=>[v(f(Bt),{value:k.value,"onUpdate:value":h[4]||(h[4]=S=>{f(I).loading||(k.value=S)}),type:"textarea",placeholder:`仅支持ZIP文件链接
|
|
14
|
+
每行一个
|
|
15
|
+
空白行自动忽略
|
|
16
|
+
非法链接行自动忽略`,autosize:{minRows:8,maxRows:16},inputProps:{style:"white-space: nowrap;"}},null,8,["value"])]),_:1},8,["show","onPositiveClick","loading"]),v(vn,{show:dt.value,"onUpdate:show":h[7]||(h[7]=S=>dt.value=S)},null,8,["show"])],64))}});export{Vn as default};
|
|
17
|
+
//# sourceMappingURL=HomePage-M2HOTAEU.js.map
|