@gkd-kit/inspect 0.0.1724434380121 → 0.0.1724939132543
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-BFa0IyQm.js → ActionCard.vue_vue_type_script_setup_true_lang-Df2iJOjy.js} +3 -3
- package/dist/assets/{ActionCard.vue_vue_type_script_setup_true_lang-BFa0IyQm.js.map → ActionCard.vue_vue_type_script_setup_true_lang-Df2iJOjy.js.map} +1 -1
- package/dist/assets/{DevicePage-DPrlUK63.js → DevicePage-DLHOFccW.js} +3 -3
- package/dist/assets/DevicePage-DLHOFccW.js.map +1 -0
- package/dist/assets/{HomePage-DMcbcesZ.js → HomePage-BeCxcFEe.js} +25 -25
- package/dist/assets/HomePage-BeCxcFEe.js.map +1 -0
- package/dist/assets/{ImportPage-BEW0_Ji8.js → ImportPage-gMpnvfZI.js} +2 -2
- package/dist/assets/{ImportPage-BEW0_Ji8.js.map → ImportPage-gMpnvfZI.js.map} +1 -1
- package/dist/assets/{PreviewSharePage-DnJK8xUG.js → PreviewSharePage-Deko6lrO.js} +2 -2
- package/dist/assets/PreviewSharePage-Deko6lrO.js.map +1 -0
- package/dist/assets/{SelectorPage-BL0knEXv.js → SelectorPage-C7ee-UE1.js} +2 -2
- package/dist/assets/SelectorPage-C7ee-UE1.js.map +1 -0
- package/dist/assets/SnapshotPage-CNdcl2gK.js +279 -0
- package/dist/assets/SnapshotPage-CNdcl2gK.js.map +1 -0
- package/dist/assets/{TrackGraph-BnYy-9kR.js → TrackGraph-CHeOoYTg.js} +2 -2
- package/dist/assets/{TrackGraph-BnYy-9kR.js.map → TrackGraph-CHeOoYTg.js.map} +1 -1
- package/dist/assets/{_404Page-CCc9iyd0.js → _404Page-DukTdgke.js} +2 -2
- package/dist/assets/{_404Page-CCc9iyd0.js.map → _404Page-DukTdgke.js.map} +1 -1
- package/dist/assets/{dayjs.min-nYk0KZgc.js → dayjs.min-LhczAOpU.js} +3 -3
- package/dist/assets/{dayjs.min-nYk0KZgc.js.map → dayjs.min-LhczAOpU.js.map} +1 -1
- package/dist/assets/{error-PMSUztRe.js → error-BYB57NEs.js} +2 -2
- package/dist/assets/{error-PMSUztRe.js.map → error-BYB57NEs.js.map} +1 -1
- package/dist/assets/{export-BUkxbX2q.js → export-CIlUfZHW.js} +3 -3
- package/dist/assets/export-CIlUfZHW.js.map +1 -0
- package/dist/assets/{fetch-DWjWhedl.js → fetch-C2zNU7qy.js} +9 -9
- package/dist/assets/{fetch-DWjWhedl.js.map → fetch-C2zNU7qy.js.map} +1 -1
- package/dist/assets/{import-ZkfId0fZ.js → import-DfEWUxfp.js} +2 -2
- package/dist/assets/{import-ZkfId0fZ.js.map → import-DfEWUxfp.js.map} +1 -1
- package/dist/assets/index-BV9z1P1k.js +2 -0
- package/dist/assets/index-BV9z1P1k.js.map +1 -0
- package/dist/assets/index-BiTh0rHq.js +561 -0
- package/dist/assets/index-BiTh0rHq.js.map +1 -0
- package/dist/assets/index-DlhjoJf3.css +1 -0
- package/dist/assets/{index-ROf0c0Xh.js → index-Xe8rbuNP.js} +10 -10
- package/dist/assets/index-Xe8rbuNP.js.map +1 -0
- package/dist/assets/polyfills-DUcgW2kq.js +1 -0
- package/dist/assets/{table-ctU_40W1.js → table-bzmBkVJL.js} +2 -2
- package/dist/assets/{table-ctU_40W1.js.map → table-bzmBkVJL.js.map} +1 -1
- package/dist/index.html +3 -3
- package/package.json +21 -20
- package/dist/assets/DevicePage-DPrlUK63.js.map +0 -1
- package/dist/assets/HomePage-DMcbcesZ.js.map +0 -1
- package/dist/assets/PreviewSharePage-DnJK8xUG.js.map +0 -1
- package/dist/assets/SelectorPage-BL0knEXv.js.map +0 -1
- package/dist/assets/SnapshotPage-BdqzEl0W.js +0 -276
- package/dist/assets/SnapshotPage-BdqzEl0W.js.map +0 -1
- package/dist/assets/export-BUkxbX2q.js.map +0 -1
- package/dist/assets/index-BjUZsA8f.css +0 -1
- package/dist/assets/index-C-DeO7Kz.js +0 -565
- package/dist/assets/index-C-DeO7Kz.js.map +0 -1
- package/dist/assets/index-Cm7FbOlM.js +0 -2
- package/dist/assets/index-Cm7FbOlM.js.map +0 -1
- package/dist/assets/index-ROf0c0Xh.js.map +0 -1
- package/dist/assets/polyfills-C_lm3y55.js +0 -1
package/dist/index.html
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!doctype html>
|
|
2
2
|
<html lang="zh">
|
|
3
3
|
<head>
|
|
4
|
-
<script type="module" crossorigin src="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.
|
|
4
|
+
<script type="module" crossorigin src="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1724939132543/files/dist/assets/polyfills-DUcgW2kq.js"></script>
|
|
5
5
|
|
|
6
6
|
<meta charset="UTF-8" />
|
|
7
7
|
<link
|
|
@@ -12,8 +12,8 @@
|
|
|
12
12
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
13
13
|
<meta name="referrer" content="no-referrer" />
|
|
14
14
|
<title>GKD</title>
|
|
15
|
-
<script type="module" crossorigin src="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.
|
|
16
|
-
<link rel="stylesheet" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.
|
|
15
|
+
<script type="module" crossorigin src="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1724939132543/files/dist/assets/index-BiTh0rHq.js"></script>
|
|
16
|
+
<link rel="stylesheet" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1724939132543/files/dist/assets/index-DlhjoJf3.css">
|
|
17
17
|
</head>
|
|
18
18
|
|
|
19
19
|
<body>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gkd-kit/inspect",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.1724939132543",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public",
|
|
@@ -11,26 +11,27 @@
|
|
|
11
11
|
],
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@antv/g6": "4.8.24",
|
|
14
|
+
"@gkd-kit/api": "0.3.3",
|
|
14
15
|
"@gkd-kit/selector": "0.4.2",
|
|
15
16
|
"@gkd-kit/wasm_matches": "0.0.1",
|
|
16
|
-
"@rushstack/eslint-patch": "1.10.
|
|
17
|
+
"@rushstack/eslint-patch": "1.10.4",
|
|
17
18
|
"@tsconfig/node20": "20.1.4",
|
|
18
19
|
"@types/file-saver": "2.0.7",
|
|
19
20
|
"@types/fs-extra": "11.0.4",
|
|
20
|
-
"@types/node": "22.
|
|
21
|
+
"@types/node": "22.5.1",
|
|
21
22
|
"@types/qrcode": "1.5.5",
|
|
22
|
-
"@vitejs/plugin-legacy": "5.4.
|
|
23
|
-
"@vitejs/plugin-vue": "5.1.
|
|
24
|
-
"@vitejs/plugin-vue-jsx": "4.0.
|
|
23
|
+
"@vitejs/plugin-legacy": "5.4.2",
|
|
24
|
+
"@vitejs/plugin-vue": "5.1.2",
|
|
25
|
+
"@vitejs/plugin-vue-jsx": "4.0.1",
|
|
25
26
|
"@vue/eslint-config-prettier": "9.0.0",
|
|
26
27
|
"@vue/eslint-config-typescript": "13.0.0",
|
|
27
28
|
"@vue/tsconfig": "0.5.1",
|
|
28
|
-
"@vueuse/components": "
|
|
29
|
-
"@vueuse/core": "
|
|
29
|
+
"@vueuse/components": "11.0.3",
|
|
30
|
+
"@vueuse/core": "11.0.3",
|
|
30
31
|
"browser-fs-access": "0.35.0",
|
|
31
32
|
"compressorjs": "1.2.1",
|
|
32
33
|
"cross-env": "7.0.3",
|
|
33
|
-
"dayjs": "1.11.
|
|
34
|
+
"dayjs": "1.11.13",
|
|
34
35
|
"eslint": "8.57.0",
|
|
35
36
|
"eslint-define-config": "2.1.0",
|
|
36
37
|
"eslint-plugin-unused-imports": "3.2.0",
|
|
@@ -39,32 +40,32 @@
|
|
|
39
40
|
"fs-extra": "11.2.0",
|
|
40
41
|
"json5": "2.2.3",
|
|
41
42
|
"jszip": "3.10.1",
|
|
42
|
-
"lint-staged": "15.2.
|
|
43
|
+
"lint-staged": "15.2.9",
|
|
43
44
|
"localforage": "1.10.0",
|
|
44
45
|
"naive-ui": "2.39.0",
|
|
45
46
|
"normalize.css": "8.0.1",
|
|
46
47
|
"p-limit": "6.1.0",
|
|
47
|
-
"pinia": "2.2.0",
|
|
48
48
|
"prettier": "3.3.3",
|
|
49
|
-
"qrcode": "1.5.
|
|
49
|
+
"qrcode": "1.5.4",
|
|
50
50
|
"sass": "1.77.8",
|
|
51
51
|
"simple-git": "3.25.0",
|
|
52
52
|
"simple-git-hooks": "2.11.1",
|
|
53
|
-
"tsx": "4.
|
|
53
|
+
"tsx": "4.19.0",
|
|
54
54
|
"typescript": "5.5.4",
|
|
55
55
|
"universal-base64url": "1.1.0",
|
|
56
|
-
"unocss": "0.
|
|
56
|
+
"unocss": "0.62.3",
|
|
57
57
|
"unplugin-auto-import": "0.18.2",
|
|
58
|
-
"unplugin-vue-components": "0.27.
|
|
58
|
+
"unplugin-vue-components": "0.27.4",
|
|
59
59
|
"user-attachments": "1.1.2",
|
|
60
|
-
"vite": "5.
|
|
60
|
+
"vite": "5.4.2",
|
|
61
61
|
"vite-plugin-monkey": "4.0.6",
|
|
62
|
-
"vue": "3.4.
|
|
63
|
-
"vue-router": "4.4.
|
|
64
|
-
"vue-tsc": "2.
|
|
62
|
+
"vue": "3.4.38",
|
|
63
|
+
"vue-router": "4.4.3",
|
|
64
|
+
"vue-tsc": "2.1.2"
|
|
65
65
|
},
|
|
66
66
|
"volta": {
|
|
67
|
-
"node": "22.
|
|
67
|
+
"node": "22.7.0",
|
|
68
|
+
"pnpm": "9.9.0"
|
|
68
69
|
},
|
|
69
70
|
"simple-git-hooks": {
|
|
70
71
|
"pre-commit": "pnpm exec lint-staged"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DevicePage-DPrlUK63.js","sources":["../../src/utils/api.ts","../../src/views/DevicePage.vue"],"sourcesContent":["import { message } from './discrete';\nimport { enhanceFetch } from './fetch';\nimport type { Device, RpcError, Snapshot } from './types';\n\ntype RpcOptions = {\n query?: Record<string, unknown>;\n init?: RequestInit;\n};\n\nexport const useDeviceApi = (initOrigin?: string) => {\n const origin = shallowRef(initOrigin);\n const rpc = async (rpcName: string, options: RpcOptions = {}) => {\n if (!origin.value) {\n throw new Error(`origin must exist`);\n }\n const u = new URL(`/api/` + rpcName, origin.value);\n Object.entries(options.query || {}).forEach(([key, value]) => {\n if (value === undefined) return;\n u.searchParams.set(key, String(value));\n });\n const response = await enhanceFetch(u, options.init).catch((e) => {\n message.error(`网络错误:/` + rpcName);\n throw e;\n });\n if (!response.ok) {\n message.error(`接口错误:/` + rpcName + `:` + response.status);\n throw response;\n }\n if (response.headers.get(`Content-Type`)?.includes(`application/json`)) {\n const error = (await response.clone().json()) as RpcError;\n if (error.__error) {\n message.error(error.message);\n throw response;\n }\n }\n return response;\n };\n const jsonRpc = async <T>(...args: Parameters<typeof rpc>) => {\n const response = await rpc(...args);\n return (await response.json()) as T;\n };\n const blobRpc = async (...args: Parameters<typeof rpc>) => {\n const response = await rpc(...args);\n return await response.blob();\n };\n const arrayBufferRpc = async (...args: Parameters<typeof rpc>) => {\n const response = await rpc(...args);\n return await response.arrayBuffer();\n };\n const api = {\n device: async () => jsonRpc<Device>(`device`),\n snapshot: async (query?: { id?: string | number }) => {\n return jsonRpc<Snapshot>(`snapshot`, { query });\n },\n screenshot: async (query: { id: string | number }) => {\n return arrayBufferRpc(`screenshot`, { query });\n },\n captureSnapshot: async () => {\n return jsonRpc<Snapshot>(`captureSnapshot`);\n },\n snapshots: async () => {\n return jsonRpc<Snapshot[]>(`snapshots`);\n },\n updateSubsApps: async (data: unknown[]) => {\n return blobRpc(`updateSubsApps`, {\n init: {\n method: 'POST',\n body: JSON.stringify(data),\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n });\n },\n updateSubscription: async (data: any) => {\n return blobRpc(`updateSubscription`, {\n init: {\n method: 'POST',\n body: JSON.stringify({\n ...data,\n id: -1,\n name: '内存订阅',\n version: 0,\n }),\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n });\n },\n execSelector: async (data: {\n selector: string;\n action?: string;\n quickFind?: boolean;\n fastQuery?: boolean;\n }) => {\n return jsonRpc<{ message: string; action: string; result: boolean }>(\n `execSelector`,\n {\n init: {\n method: 'POST',\n // value 是旧版本的选择器\n body: JSON.stringify({ ...data, value: data.selector }),\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n },\n );\n },\n };\n return { origin, api };\n};\n","<script setup lang=\"tsx\">\nimport { useDeviceApi } from '@/utils/api';\nimport { toValidURL } from '@/utils/check';\nimport { message } from '@/utils/discrete';\nimport { errorWrap } from '@/utils/error';\nimport { delay } from '@/utils/others';\nimport { screenshotStorage, snapshotStorage } from '@/utils/storage';\nimport { useSnapshotColumns } from '@/utils/table';\nimport { useBatchTask, useTask } from '@/utils/task';\nimport type { Device, Snapshot } from '@/utils/types';\nimport JSON5 from 'json5';\nimport type { DataTableColumns, PaginationProps } from 'naive-ui';\nimport type { SortState } from 'naive-ui/es/data-table/src/interface';\nimport pLimit from 'p-limit';\n\nconst router = useRouter();\nconst 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({\n ...clickAction,\n fastQuery: clickAction.quickFind,\n });\n if (result.message) {\n message.success(`操作成功:` + result.message);\n return;\n }\n if (result.action) {\n message.success((result.result ? `操作成功:` : `操作失败`) + result.action);\n } else if (!result.action && result.result) {\n message.success(`查询成功`);\n }\n});\n\nconst placeholder = `\n请输入订阅文本(JSON5语法):\n示例1-更新单个应用的规则:\n{\n id: 'appId',\n groups: []\n}\n\n示例2-更新多个应用的规则:\n[\n {\n id: 'appId1',\n groups: []\n },\n {\n id: 'appId2',\n groups: []\n }\n]\n\n示例3-更新全局规则(1.7.0):\n{\n name: '全局规则-1',\n key: 0,\n rules: []\n}\n\n示例3-更新多个全局规则(1.7.0):\n[\n {\n name: '全局规则-1',\n key: 0,\n rules: []\n },\n {\n name: '全局规则-2',\n key: 1,\n rules: []\n }\n]\n\n示例4-更新整个订阅(1.7.0):\n{\n apps: [],\n globalGroups: [],\n categories: [],\n}\n`.trim();\n</script>\n<template>\n <NModal\n v-model:show=\"showSubsModel\"\n preset=\"dialog\"\n style=\"width: 800px\"\n title=\"修改内存订阅\"\n positive-text=\"确认\"\n :positiveButtonProps=\"{\n loading: updateSubs.loading,\n onClick() {\n updateSubs.invoke();\n },\n }\"\n >\n <NInput\n v-model:value=\"subsText\"\n :disabled=\"updateSubs.loading\"\n type=\"textarea\"\n class=\"gkd_code\"\n :autosize=\"{\n minRows: 20,\n maxRows: 25,\n }\"\n :placeholder=\"placeholder\"\n />\n </NModal>\n <NModal\n v-model:show=\"showSelectorModel\"\n preset=\"dialog\"\n style=\"width: 800px\"\n title=\"执行选择器\"\n positive-text=\"确认\"\n :positiveButtonProps=\"{\n loading: execSelector.loading,\n onClick() {\n execSelector.invoke();\n },\n }\"\n >\n <NInput\n v-model:value=\"clickAction.selector\"\n :disabled=\"execSelector.loading\"\n type=\"textarea\"\n class=\"gkd_code\"\n :autosize=\"{\n minRows: 4,\n maxRows: 10,\n }\"\n placeholder=\"请输入合法的选择器\"\n />\n <div h-15px></div>\n <NSpace>\n <NCheckbox v-model:checked=\"clickAction.quickFind\"> 快速查找 </NCheckbox>\n <a\n href=\"https://gkd.li/api/interfaces/RawCommonProps.html#quickfind\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n 查找说明\n </a>\n </NSpace>\n <div h-10px></div>\n <div flex gap-10px flex-items-center>\n <NSelect\n v-model:value=\"clickAction.action\"\n :options=\"actionOptions\"\n class=\"w-150px\"\n />\n <a\n href=\"https://gkd.li/api/interfaces/RawRuleProps#action\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n 操作说明\n </a>\n </div>\n </NModal>\n <div flex flex-col p-10px gap-10px h-full>\n <div flex items-center gap-24px>\n <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 whitespace-nowrap>\n {{ `已连接 ${device.manufacturer} Android ${device.release}` }}\n </div>\n <NButton\n @click=\"captureSnapshot.invoke\"\n :loading=\"captureSnapshot.loading\"\n >\n 快照\n </NButton>\n <NButton\n @click=\"downloadAllSnapshot.invoke\"\n :loading=\"downloadAllSnapshot.loading\"\n >\n 下载设备所有快照\n </NButton>\n <NButton @click=\"showSubsModel = true\"> 修改内存订阅 </NButton>\n <NButton @click=\"showSelectorModel = true\"> 执行选择器 </NButton>\n </template>\n </div>\n <NDataTable\n striped\n flexHeight\n :data=\"snapshots\"\n :columns=\"columns\"\n :pagination=\"pagination\"\n @update:sorter=\"handleSorterChange\"\n size=\"small\"\n class=\"flex-1\"\n :scrollX=\"1200\"\n />\n </div>\n</template>\n"],"names":["useDeviceApi","initOrigin","origin","shallowRef","rpc","rpcName","options","u","key","value","response","enhanceFetch","e","message","_a","error","jsonRpc","args","blobRpc","arrayBufferRpc","query","data","router","useRouter","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","_resolveComponent2","default","loading","onClick","_createTextVNode2","pagination","shallowReactive","page","pageSize","showSizePicker","pageSizes","onChange","onUpdatePageSize","watch","showSubsModel","updateSubs","JSON5","parse","categories","globalGroups","apps","updateSubscription","Array","isArray","showSelectorModel","actionOptions","label","undefined","clickAction","selector","action","quickFind","execSelector","fastQuery","placeholder"],"mappings":"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"}
|