@gkd-kit/inspect 0.0.1720790319736 → 0.0.1720860174154

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.
Files changed (39) hide show
  1. package/dist/assets/{ActionCard.vue_vue_type_script_setup_true_lang-B3P9WeFT.js → ActionCard.vue_vue_type_script_setup_true_lang-CGs1cPzA.js} +2 -2
  2. package/dist/assets/{ActionCard.vue_vue_type_script_setup_true_lang-B3P9WeFT.js.map → ActionCard.vue_vue_type_script_setup_true_lang-CGs1cPzA.js.map} +1 -1
  3. package/dist/assets/{DevicePage-DuGAOazv.js → DevicePage-CM1ULeVm.js} +3 -3
  4. package/dist/assets/DevicePage-CM1ULeVm.js.map +1 -0
  5. package/dist/assets/{HomePage-CiZZ9K2l.js → HomePage-3V5xJg9k.js} +2 -2
  6. package/dist/assets/{HomePage-CiZZ9K2l.js.map → HomePage-3V5xJg9k.js.map} +1 -1
  7. package/dist/assets/{ImportPage-Cpits6pu.js → ImportPage-D88d_itK.js} +2 -2
  8. package/dist/assets/{ImportPage-Cpits6pu.js.map → ImportPage-D88d_itK.js.map} +1 -1
  9. package/dist/assets/{PreviewSharePage-CUeNrps3.js → PreviewSharePage-Cb_P5t2B.js} +2 -2
  10. package/dist/assets/{PreviewSharePage-CUeNrps3.js.map → PreviewSharePage-Cb_P5t2B.js.map} +1 -1
  11. package/dist/assets/{SnapshotPage-CpnT9MXA.js → SnapshotPage-BscJ-Nkb.js} +4 -4
  12. package/dist/assets/{SnapshotPage-CpnT9MXA.js.map → SnapshotPage-BscJ-Nkb.js.map} +1 -1
  13. package/dist/assets/{TrackGraph-LsieAbNS.js → TrackGraph-CMHTvoGt.js} +2 -2
  14. package/dist/assets/{TrackGraph-LsieAbNS.js.map → TrackGraph-CMHTvoGt.js.map} +1 -1
  15. package/dist/assets/{_404Page-BfLfCFVH.js → _404Page-CaX45OsL.js} +2 -2
  16. package/dist/assets/{_404Page-BfLfCFVH.js.map → _404Page-CaX45OsL.js.map} +1 -1
  17. package/dist/assets/{dayjs.min-Cg-bNh_C.js → dayjs.min-Hr7L9DXw.js} +2 -2
  18. package/dist/assets/{dayjs.min-Cg-bNh_C.js.map → dayjs.min-Hr7L9DXw.js.map} +1 -1
  19. package/dist/assets/{error-Btoipp7y.js → error-DOunVL9f.js} +2 -2
  20. package/dist/assets/{error-Btoipp7y.js.map → error-DOunVL9f.js.map} +1 -1
  21. package/dist/assets/{export-CkzQvxmp.js → export-DjHqDTqO.js} +2 -2
  22. package/dist/assets/{export-CkzQvxmp.js.map → export-DjHqDTqO.js.map} +1 -1
  23. package/dist/assets/{fetch-CtwugztR.js → fetch-lqKer6jo.js} +2 -2
  24. package/dist/assets/{fetch-CtwugztR.js.map → fetch-lqKer6jo.js.map} +1 -1
  25. package/dist/assets/{import-FivSpj9W.js → import-ClNBv320.js} +2 -2
  26. package/dist/assets/{import-FivSpj9W.js.map → import-ClNBv320.js.map} +1 -1
  27. package/dist/assets/{index-Beo7aU17.js → index-BkUU8Odg.js} +2 -2
  28. package/dist/assets/{index-Beo7aU17.js.map → index-BkUU8Odg.js.map} +1 -1
  29. package/dist/assets/{index-BB5J1Ki3.js → index-BpxEt8WS.js} +4 -4
  30. package/dist/assets/{index-BB5J1Ki3.js.map → index-BpxEt8WS.js.map} +1 -1
  31. package/dist/assets/{index-DkqASO5t.js → index-CCb0Gr6g.js} +2 -2
  32. package/dist/assets/{index-DkqASO5t.js.map → index-CCb0Gr6g.js.map} +1 -1
  33. package/dist/assets/index-DIWtDTS2.css +1 -0
  34. package/dist/assets/{table-Bxy-tGbK.js → table-CLfwJUFh.js} +2 -2
  35. package/dist/assets/{table-Bxy-tGbK.js.map → table-CLfwJUFh.js.map} +1 -1
  36. package/dist/index.html +3 -3
  37. package/package.json +1 -1
  38. package/dist/assets/DevicePage-DuGAOazv.js.map +0 -1
  39. package/dist/assets/index-DLD-a2BR.css +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.1720790319736/files/dist/assets/polyfills-C_lm3y55.js"></script>
4
+ <script type="module" crossorigin src="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1720860174154/files/dist/assets/polyfills-C_lm3y55.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.1720790319736/files/dist/assets/index-BB5J1Ki3.js"></script>
16
- <link rel="stylesheet" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1720790319736/files/dist/assets/index-DLD-a2BR.css">
15
+ <script type="module" crossorigin src="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1720860174154/files/dist/assets/index-BpxEt8WS.js"></script>
16
+ <link rel="stylesheet" crossorigin href="https://registry.npmmirror.com/@gkd-kit/inspect/0.0.1720860174154/files/dist/assets/index-DIWtDTS2.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.1720790319736",
3
+ "version": "0.0.1720860174154",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public",
@@ -1 +0,0 @@
1
- {"version":3,"file":"DevicePage-DuGAOazv.js","sources":["../../src/utils/api.ts","../../src/views/DevicePage.vue"],"sourcesContent":["import { shallowRef } from 'vue';\nimport { message } from './discrete';\nimport { enhanceFetch } from './fetch';\nimport type { Device, RpcError, Snapshot } from './types';\n\ntype RpcOptions = {\n query?: Record<string, unknown>;\n init?: RequestInit;\n};\n\nexport const useDeviceApi = (initOrigin?: string) => {\n const origin = shallowRef(initOrigin);\n const rpc = async (rpcName: string, options: RpcOptions = {}) => {\n if (!origin.value) {\n throw new Error(`origin must exist`);\n }\n const u = new URL(`/api/` + rpcName, origin.value);\n Object.entries(options.query || {}).forEach(([key, value]) => {\n if (value === undefined) return;\n u.searchParams.set(key, String(value));\n });\n const response = await enhanceFetch(u, options.init).catch((e) => {\n message.error(`网络错误:/` + rpcName);\n throw e;\n });\n if (!response.ok) {\n message.error(`接口错误:/` + rpcName + `:` + response.status);\n throw response;\n }\n if (response.headers.get(`Content-Type`)?.includes(`application/json`)) {\n const error = (await response.clone().json()) as RpcError;\n if (error.__error) {\n message.error(error.message);\n throw response;\n }\n }\n return response;\n };\n const jsonRpc = async <T>(...args: Parameters<typeof rpc>) => {\n const response = await rpc(...args);\n return (await response.json()) as T;\n };\n const blobRpc = async (...args: Parameters<typeof rpc>) => {\n const response = await rpc(...args);\n return await response.blob();\n };\n const arrayBufferRpc = async (...args: Parameters<typeof rpc>) => {\n const response = await rpc(...args);\n return await response.arrayBuffer();\n };\n const api = {\n device: async () => jsonRpc<Device>(`device`),\n snapshot: async (query?: { id?: string | number }) => {\n return jsonRpc<Snapshot>(`snapshot`, { query });\n },\n screenshot: async (query: { id: string | number }) => {\n return arrayBufferRpc(`screenshot`, { query });\n },\n captureSnapshot: async () => {\n return jsonRpc<Snapshot>(`captureSnapshot`);\n },\n snapshots: async () => {\n return jsonRpc<Snapshot[]>(`snapshots`);\n },\n updateSubsApps: async (data: unknown[]) => {\n return blobRpc(`updateSubsApps`, {\n init: {\n method: 'POST',\n body: JSON.stringify(data),\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n });\n },\n updateSubscription: async (data: any) => {\n return blobRpc(`updateSubscription`, {\n init: {\n method: 'POST',\n body: JSON.stringify({\n ...data,\n id: -1,\n name: '内存订阅',\n version: 0,\n }),\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n });\n },\n execSelector: async (data: {\n selector: string;\n action?: string;\n quickFind?: boolean;\n }) => {\n return jsonRpc<{ message: string; action: string; result: boolean }>(\n `execSelector`,\n {\n init: {\n method: 'POST',\n // value 是旧版本的选择器\n body: JSON.stringify({ ...data, value: data.selector }),\n headers: {\n 'Content-Type': 'application/json',\n },\n },\n },\n );\n },\n };\n return { origin, api };\n};\n","<script setup lang=\"tsx\">\nimport { useDeviceApi } from '@/utils/api';\nimport { toValidURL } from '@/utils/check';\nimport { message } from '@/utils/discrete';\nimport { errorWrap } from '@/utils/error';\nimport { delay } from '@/utils/others';\nimport { screenshotStorage, snapshotStorage } from '@/utils/storage';\nimport { useSnapshotColumns } from '@/utils/table';\nimport { useBatchTask, useTask } from '@/utils/task';\nimport type { Device, Snapshot } from '@/utils/types';\nimport { useStorage, useTitle } from '@vueuse/core';\nimport JSON5 from 'json5';\nimport {\n NButton,\n NCheckbox,\n NDataTable,\n NIcon,\n NInput,\n NInputGroup,\n NModal,\n NSelect,\n NSpace,\n type DataTableColumns,\n type PaginationProps,\n} from 'naive-ui';\nimport type { SortState } from 'naive-ui/es/data-table/src/interface';\nimport pLimit from 'p-limit';\nimport {\n onMounted,\n shallowReactive,\n shallowRef,\n watch,\n watchEffect,\n} from 'vue';\nimport { useRouter } from 'vue-router';\n\nconst router = useRouter();\nconst title = useTitle(`新设备`);\nconst { api, origin } = useDeviceApi();\nconst link = useStorage(`device_link`, ``);\nconst device = shallowRef<Device>();\nconst connect = useTask(async () => {\n if (!link.value) return;\n origin.value = errorWrap(\n () => new URL(link.value.trim()),\n () => `非法设备地址`,\n ).origin;\n link.value = origin.value;\n device.value = await api.device();\n});\nonMounted(async () => {\n await delay(500);\n if (toValidURL(link.value)) {\n connect.invoke();\n }\n});\n\nconst snapshots = shallowRef<Snapshot[]>([]);\nwatchEffect(async () => {\n if (!device.value) return;\n title.value = `已连接 ` + device.value.manufacturer;\n device.value.release;\n const result = await api.snapshots();\n result.sort((a, b) => b.id - a.id);\n snapshots.value = result;\n subsText.value = '';\n});\n\nconst captureSnapshot = useTask(async () => {\n const snapshot = await api.captureSnapshot();\n const screenshot = await api.screenshot({ id: snapshot.id });\n await snapshotStorage.setItem(snapshot.id, snapshot);\n await screenshotStorage.setItem(snapshot.id, screenshot);\n message.success(`保存快照成功`);\n const result = await api.snapshots();\n result.sort((a, b) => b.id - a.id);\n snapshots.value = result;\n});\nconst downloadAllSnapshot = useTask(async () => {\n const snapshotIds = (await api.snapshots()).map((s) => s.id);\n const existSnapshotIds = new Set(\n (await screenshotStorage.keys()).map((s) => parseInt(s)),\n );\n const unimportSnapshotIds = snapshotIds.filter(\n (k) => !existSnapshotIds.has(k),\n );\n if (unimportSnapshotIds.length == 0) {\n message.success(`没有新记录可导入`);\n return;\n }\n let r = 0;\n const limit = pLimit(3);\n await Promise.all(\n unimportSnapshotIds.map((snapshotId) =>\n limit(async () => {\n const [newSnapshot, newScreenshot] = await Promise.all([\n api.snapshot({ id: snapshotId }),\n api.screenshot({ id: snapshotId }),\n ] as const);\n if (!newSnapshot.nodes) return;\n await Promise.all([\n snapshotStorage.setItem(snapshotId, newSnapshot),\n screenshotStorage.setItem(snapshotId, newScreenshot),\n ]);\n r++;\n }),\n ),\n );\n message.success(`导入${r}条新记录`);\n});\n\nconst {\n activityIdCol,\n appIdCol,\n appNameCol,\n ctimeCol,\n appVersionCodeCol,\n appVersionNameCol,\n resetColWidth,\n} = useSnapshotColumns();\nconst handleSorterChange = (sorter: SortState) => {\n if (sorter.columnKey == ctimeCol.key) {\n ctimeCol.sortOrder = sorter.order;\n }\n};\nconst previewSnapshot = useBatchTask(\n async (row: Snapshot) => {\n if (!(await snapshotStorage.hasItem(row.id))) {\n await snapshotStorage.setItem(row.id, await api.snapshot({ id: row.id }));\n }\n if (!(await screenshotStorage.hasItem(row.id))) {\n const bf = await api.screenshot({ id: row.id });\n await screenshotStorage.setItem(row.id, bf);\n }\n window.open(\n router.resolve({\n name: 'snapshot',\n params: { snapshotId: row.id },\n }).href,\n );\n },\n (r) => r.id,\n);\n\nconst columns: DataTableColumns<Snapshot> = [\n ctimeCol,\n appNameCol,\n appIdCol,\n appVersionCodeCol,\n appVersionNameCol,\n activityIdCol,\n {\n key: `actions`,\n title: `操作`,\n fixed: 'right',\n width: `120px`,\n render(row) {\n return (\n <NSpace size=\"small\">\n <NButton\n size=\"small\"\n loading={previewSnapshot.loading[row.id]}\n onClick={() => previewSnapshot.invoke(row)}\n >\n 查看\n </NButton>\n </NSpace>\n );\n },\n },\n];\n\nconst pagination = shallowReactive<PaginationProps>({\n page: 1,\n pageSize: 50,\n showSizePicker: true,\n pageSizes: [50, 100],\n onChange: (page: number) => {\n pagination.page = page;\n },\n onUpdatePageSize: (pageSize: number) => {\n pagination.pageSize = pageSize;\n pagination.page = 1;\n },\n});\nwatch(pagination, resetColWidth);\n\nconst showSubsModel = shallowRef(false);\nconst subsText = shallowRef(``);\nconst updateSubs = useTask(async () => {\n const data = errorWrap(() => JSON5.parse(subsText.value.trim()));\n if (!data) return;\n if (data.categories || data.globalGroups || data.apps) {\n await api.updateSubscription(data);\n } else if (typeof data.id == 'string') {\n await api.updateSubscription({\n apps: [data],\n });\n } else if (Array.isArray(data) && typeof data[0].id == 'string') {\n await api.updateSubscription({\n apps: data,\n });\n } else if (typeof data.key == 'number') {\n await api.updateSubscription({\n globalGroups: [data],\n });\n } else if (Array.isArray(data) && typeof data[0].key == 'number') {\n await api.updateSubscription({\n globalGroups: data,\n });\n } else {\n message.error(`无法识别的订阅文本`);\n return;\n }\n message.success(`修改成功`);\n});\n\nconst showSelectorModel = shallowRef(false);\n\nconst actionOptions: {\n value?: string;\n label: string;\n}[] = [\n {\n label: '仅查询',\n value: undefined,\n },\n {\n value: 'click',\n label: 'click',\n },\n {\n value: 'clickNode',\n label: 'clickNode',\n },\n {\n value: 'clickCenter',\n label: 'clickCenter',\n },\n {\n value: 'back',\n label: 'back',\n },\n {\n value: 'longClick',\n label: 'longClick',\n },\n {\n value: 'longClickNode',\n label: 'longClickNode',\n },\n {\n value: 'longClickCenter',\n label: 'longClickCenter',\n },\n];\nconst clickAction = shallowReactive({\n selector: ``,\n action: 'click',\n quickFind: false,\n});\nconst execSelector = useTask(async () => {\n const result = await api.execSelector({ ...clickAction });\n if (result.message) {\n message.success(`操作成功:` + result.message);\n return;\n }\n if (result.action) {\n message.success((result.result ? `操作成功:` : `操作失败`) + result.action);\n } else if (!result.action && result.result) {\n message.success(`查询成功`);\n }\n});\n\nconst placeholder = `\n请输入订阅文本(JSON5语法):\n示例1-更新单个应用的规则:\n{\n id: 'appId',\n groups: []\n}\n\n示例2-更新多个应用的规则:\n[\n {\n id: 'appId1',\n groups: []\n },\n {\n id: 'appId2',\n groups: []\n }\n]\n\n示例3-更新全局规则(1.7.0):\n{\n name: '全局规则-1',\n key: 0,\n rules: []\n}\n\n示例3-更新多个全局规则(1.7.0):\n[\n {\n name: '全局规则-1',\n key: 0,\n rules: []\n },\n {\n name: '全局规则-2',\n key: 1,\n rules: []\n }\n]\n\n示例4-更新整个订阅(1.7.0):\n{\n apps: [],\n globalGroups: [],\n categories: [],\n}\n`.trim();\n</script>\n<template>\n <NModal\n v-model:show=\"showSubsModel\"\n preset=\"dialog\"\n style=\"width: 800px\"\n title=\"修改内存订阅\"\n positive-text=\"确认\"\n :positiveButtonProps=\"{\n loading: updateSubs.loading,\n onClick() {\n updateSubs.invoke();\n },\n }\"\n >\n <NInput\n v-model:value=\"subsText\"\n :disabled=\"updateSubs.loading\"\n type=\"textarea\"\n class=\"gkd_code\"\n :autosize=\"{\n minRows: 20,\n maxRows: 25,\n }\"\n :placeholder=\"placeholder\"\n />\n </NModal>\n <NModal\n v-model:show=\"showSelectorModel\"\n preset=\"dialog\"\n style=\"width: 800px\"\n title=\"执行选择器\"\n positive-text=\"确认\"\n :positiveButtonProps=\"{\n loading: execSelector.loading,\n onClick() {\n execSelector.invoke();\n },\n }\"\n >\n <NInput\n v-model:value=\"clickAction.selector\"\n :disabled=\"execSelector.loading\"\n type=\"textarea\"\n class=\"gkd_code\"\n :autosize=\"{\n minRows: 4,\n maxRows: 10,\n }\"\n placeholder=\"请输入合法的选择器\"\n />\n <div h-15px></div>\n <NSpace>\n <NCheckbox v-model:checked=\"clickAction.quickFind\"> 快速查找 </NCheckbox>\n <a\n href=\"https://gkd.li/api/interfaces/RawCommonProps.html#quickfind\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n 查找说明\n </a>\n </NSpace>\n <div h-10px></div>\n <div flex gap-10px flex-items-center>\n <NSelect\n v-model:value=\"clickAction.action\"\n :options=\"actionOptions\"\n class=\"w-150px\"\n />\n <a\n href=\"https://gkd.li/api/interfaces/RawRuleProps#action\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n 操作说明\n </a>\n </div>\n </NModal>\n <div flex flex-col p-10px gap-10px h-full>\n <div flex items-center gap-24px>\n <a href=\"/\" flex ml-12px title=\"首页\">\n <NButton text>\n <template #icon>\n <NIcon :size=\"24\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n viewBox=\"0 0 32 32\"\n >\n <path\n d=\"M16.612 2.214a1.01 1.01 0 0 0-1.242 0L1 13.419l1.243 1.572L4 13.621V26a2.004 2.004 0 0 0 2 2h20a2.004 2.004 0 0 0 2-2V13.63L29.757 15L31 13.428zM18 26h-4v-8h4zm2 0v-8a2.002 2.002 0 0 0-2-2h-4a2.002 2.002 0 0 0-2 2v8H6V12.062l10-7.79l10 7.8V26z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </NIcon>\n </template>\n </NButton>\n </a>\n <NInputGroup>\n <NInput\n v-model:value=\"link\"\n placeholder=\"请输入设备地址\"\n :style=\"{ width: `200px` }\"\n @keyup.enter=\"connect.invoke\"\n ></NInput>\n <NButton @click=\"connect.invoke\" :loading=\"connect.loading\">\n 刷新连接\n </NButton>\n </NInputGroup>\n <template v-if=\"device\">\n <div class=\"h-full\" flex flex-items-center>\n {{ `已连接 ${device.manufacturer} Android ${device.release}` }}\n </div>\n <NButton\n @click=\"captureSnapshot.invoke\"\n :loading=\"captureSnapshot.loading\"\n >\n 快照\n </NButton>\n <NButton\n @click=\"downloadAllSnapshot.invoke\"\n :loading=\"downloadAllSnapshot.loading\"\n >\n 下载设备所有快照\n </NButton>\n <NButton @click=\"showSubsModel = true\"> 修改内存订阅 </NButton>\n <NButton @click=\"showSelectorModel = true\"> 执行选择器 </NButton>\n </template>\n </div>\n <NDataTable\n striped\n flexHeight\n :data=\"snapshots\"\n :columns=\"columns\"\n :pagination=\"pagination\"\n @update:sorter=\"handleSorterChange\"\n size=\"small\"\n class=\"flex-1\"\n :scrollX=\"1200\"\n />\n </div>\n</template>\n"],"names":["useDeviceApi","initOrigin","origin","shallowRef","rpc","rpcName","options","u","key","value","response","enhanceFetch","e","message","_a","error","jsonRpc","args","blobRpc","arrayBufferRpc","query","data","router","useRouter","title","useTitle","api","link","useStorage","device","connect","useTask","errorWrap","URL","trim","onMounted","delay","toValidURL","invoke","snapshots","watchEffect","manufacturer","release","result","sort","a","b","id","subsText","captureSnapshot","snapshot","screenshot","snapshotStorage","setItem","screenshotStorage","success","downloadAllSnapshot","snapshotIds","map","s","existSnapshotIds","Set","keys","parseInt","unimportSnapshotIds","filter","k","has","length","r","limit","pLimit","Promise","all","snapshotId","newSnapshot","newScreenshot","nodes","activityIdCol","appIdCol","appNameCol","ctimeCol","appVersionCodeCol","appVersionNameCol","resetColWidth","useSnapshotColumns","handleSorterChange","sorter","columnKey","sortOrder","order","previewSnapshot","useBatchTask","row","hasItem","bf","window","open","resolve","name","params","href","columns","fixed","width","render","_createVNode2","NSpace","default","NButton","loading","onClick","_createTextVNode2","pagination","shallowReactive","page","pageSize","showSizePicker","pageSizes","onChange","onUpdatePageSize","watch","showSubsModel","updateSubs","JSON5","parse","categories","globalGroups","apps","updateSubscription","Array","isArray","showSelectorModel","actionOptions","label","undefined","clickAction","selector","action","quickFind","execSelector","placeholder"],"mappings":"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"}
@@ -1 +0,0 @@
1
- *,:before,:after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / .5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }.container,[container=""]{width:100%}@media (min-width: 640px){.container,[container=""]{max-width:640px}}@media (min-width: 768px){.container,[container=""]{max-width:768px}}@media (min-width: 1024px){.container,[container=""]{max-width:1024px}}@media (min-width: 1280px){.container,[container=""]{max-width:1280px}}@media (min-width: 1536px){.container,[container=""]{max-width:1536px}}.pointer-events-none,[pointer-events-none=""]{pointer-events:none}.absolute,[absolute=""]{position:absolute}.fixed,[fixed=""]{position:fixed}.relative,[relative=""]{position:relative}.bottom-0,[bottom-0=""]{bottom:0}.bottom-2px,[bottom-2px=""]{bottom:2px}.left-\[calc\(100\%\+4px\)\]{left:calc(100% + 4px)}.left-\[calc\(50\%-1px\)\]{left:calc(50% - 1px)}.left-0,[left-0=""]{left:0}.left-2px,[left-2px=""]{left:2px}.left-full,[left-full=""]{left:100%}.right-0,[right-0=""]{right:0}.right-full,[right-full=""]{right:100%}.top-\[calc\(50\%-1px\)\]{top:calc(50% - 1px)}.top-0,[top-0=""]{top:0}.top-10px{top:10px}.top-2px,[top-2px=""]{top:2px}[right-500=""]{right:125rem}.z-1,[z-1=""]{z-index:1}.z-2{z-index:2}.m14{margin:3.5rem}.my-10px,[my-10px=""]{margin-top:10px;margin-bottom:10px}.m-b-4px,[m-b-4px=""]{margin-bottom:4px}.m-r-4px,.mr-4px,[m-r-4px=""],[mr-4px=""]{margin-right:4px}.mb-20px,[mb-20px=""]{margin-bottom:20px}.ml-12px,[ml-12px=""]{margin-left:12px}.ml-8px,[ml-8px=""]{margin-left:8px}.mt-10px,[mt-10px=""]{margin-top:10px}.mt-4px,[mt-4px=""]{margin-top:4px}.box-border,[box-border=""]{box-sizing:border-box}.inline{display:inline}.block,[block=""]{display:block}.size-200px,[size-200px=""]{width:200px;height:200px}[size~="14"]{width:3.5rem;height:3.5rem}[size~="16"]{width:4rem;height:4rem}[size~="24"]{width:6rem;height:6rem}.h-\[calc\(100\%-10px\)\]{height:calc(100% - 10px)}.h-\[calc\(var\(--gkd-height\)\*0\.6\)\]{height:calc(var(--gkd-height) * .6)}.h-10px,[h-10px=""]{height:10px}.h-12px,[h-12px=""]{height:12px}.h-15px,[h-15px=""]{height:15px}.h-1px,[h-1px=""]{height:1px}.h-200px,[h-200px=""]{height:200px}.h-20px,[h-20px=""]{height:20px}.h-full,[h-full=""]{height:100%}.max-w-\[calc\(var\(--gkd-width\)\*0\.35\)\]{max-width:calc(var(--gkd-width) * .35)}.max-w-120px,[max-w-120px=""]{max-width:120px}.min-w-\[calc\(var\(--gkd-width\)\*0\.4\)\]{min-width:calc(var(--gkd-width) * .4)}.min-w-320px{min-width:320px}.w-\[calc\(var\(--gkd-width\)\*0\.12\)\]{width:calc(var(--gkd-width) * .12)}.w-1000px,[w-1000px=""]{width:1000px}.w-100vw,[w-100vw=""]{width:100vw}.w-150px{width:150px}.w-1px,[w-1px=""]{width:1px}.w-200px,[w-200px=""]{width:200px}.w-420px{width:420px}.w-5px,[w-5px=""]{width:5px}.flex,[flex=""]{display:flex}.flex-1,[flex-1=""]{flex:1 1 0%}.flex-col,[flex-col=""]{flex-direction:column}.flex-wrap,[flex-wrap=""]{flex-wrap:wrap}.cursor-crosshair,[cursor-crosshair=""]{cursor:crosshair}.cursor-move,[cursor-move=""]{cursor:move}.cursor-ew-resize,[cursor-ew-resize=""]{cursor:ew-resize}.resize,[resize=""]{resize:both}.flex-items-center,.items-center,[flex-items-center=""],[items-center=""]{align-items:center}.justify-between,[justify-between=""]{justify-content:space-between}.gap-10px,[gap-10px=""]{gap:10px}.gap-16px,[gap-16px=""]{gap:16px}.gap-20px,[gap-20px=""]{gap:20px}.gap-24px,[gap-24px=""]{gap:24px}.gap-2px,[gap-2px=""]{gap:2px}.gap-5px,[gap-5px=""]{gap:5px}.gap-8px,[gap-8px=""]{gap:8px}.overflow-hidden,[overflow-hidden=""]{overflow:hidden}.whitespace-nowrap{white-space:nowrap}.break-all,[break-all=""]{word-break:break-all}.b-1px,.border-1px,[b-1px=""],[b=""],[border-1px=""]{border-width:1px}.b-blue,[b-blue=""]{--un-border-opacity:1;border-color:rgb(96 165 250 / var(--un-border-opacity))}.b-gray-200,[b-gray-200=""]{--un-border-opacity:1;border-color:rgb(229 231 235 / var(--un-border-opacity))}.b-red,[b-red=""]{--un-border-opacity:1;border-color:rgb(248 113 113 / var(--un-border-opacity))}.border-indigo-600,[border-indigo-600=""]{--un-border-opacity:1;border-color:rgb(79 70 229 / var(--un-border-opacity))}.rounded-2px{border-radius:2px}.rounded-4px,[rounded-4px=""]{border-radius:4px}.b-solid,[b-solid=""]{border-style:solid}.border-dashed,[border-dashed=""]{border-style:dashed}.bg-\[\#eee\],[bg~="#eee"]{--un-bg-opacity:1;background-color:rgb(238 238 238 / var(--un-bg-opacity))}.bg-\[length\:10px_1px\]{background-size:10px 1px}.bg-\[length\:1px_10px\]{background-size:1px 10px}.bg-\[rgba\(256\,256\,256\,0\.7\)\]{--un-bg-opacity:.7;background-color:rgba(256,256,256,var(--un-bg-opacity))}.bg-gray,[bg-gray=""]{--un-bg-opacity:1;background-color:rgb(156 163 175 / var(--un-bg-opacity))}.bg-white,[bg-white=""]{--un-bg-opacity:1;background-color:rgb(255 255 255 / var(--un-bg-opacity))}[bg~="#efeff5"]{--un-bg-opacity:1;background-color:rgb(239 239 245 / var(--un-bg-opacity))}.bg-repeat-x,[bg-repeat-x=""]{background-repeat:repeat-x}.bg-repeat-y,[bg-repeat-y=""]{background-repeat:repeat-y}[stroke-width~="2"]{stroke-width:2px}.object-contain,[object-contain=""]{object-fit:contain}.p-10px,[p-10px=""]{padding:10px}.p-1px,[p-1px=""]{padding:1px}.p-20px,[p-20px=""]{padding:20px}.p-5px,[p-5px=""]{padding:5px}.p-8px,[p-8px=""]{padding:8px}.px,[px=""]{padding-left:1rem;padding-right:1rem}.px-2px,[px-2px=""]{padding-left:2px;padding-right:2px}.px-4px{padding-left:4px;padding-right:4px}.px-8px,[px-8px=""]{padding-left:8px;padding-right:8px}.py-2px{padding-top:2px;padding-bottom:2px}.p-l-4px,[p-l-4px=""]{padding-left:4px}.pr-8px,[pr-8px=""]{padding-right:8px}.pt-40px,[pt-40px=""]{padding-top:40px}.pt-50px,[pt-50px=""]{padding-top:50px}.text-center,[text-center=""]{text-align:center}.text-left{text-align:left}.indent{text-indent:1.5rem}.text-12px,[text-12px=""]{font-size:12px}.text-13px,[text-13px=""]{font-size:13px}.color-\[\#00F\]{--un-text-opacity:1;color:rgb(0 0 255 / var(--un-text-opacity))}.font-bold,[font-bold=""]{font-weight:700}.leading-\[1\]{line-height:1}.underline,[underline=""]{text-decoration-line:underline}.decoration-1,[decoration-1=""]{text-decoration-thickness:1px}.opacity-75,[opacity-75=""]{opacity:.75}.mix-blend-difference,[mix-blend-difference=""]{mix-blend-mode:difference}.filter{filter:var(--un-blur) var(--un-brightness) var(--un-contrast) var(--un-drop-shadow) var(--un-grayscale) var(--un-hue-rotate) var(--un-invert) var(--un-saturate) var(--un-sepia)}.transition,[transition=""]{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all-300,[transition-all-300=""]{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.3s}.transition-top\,bottom\,left\,right-500{transition-property:top,bottom,left,right;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.5s}[transition-top=""]{transition-property:top;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}:root{--gkd-width: max(1200px, 100vw);--gkd-height: max(700px, 100vh)}#app{min-width:1200px;min-height:700px;display:flex;flex-direction:column;width:100vw;height:100vh}#app.mobile{--gkd-width: 100vw;min-width:auto}.gkd_code,[gkd_code]{font-family:v-mono,SFMono-Regular,Menlo,Consolas,Courier,monospace!important}[direction-rtl],.direction-rtl{direction:rtl}.box-shadow-dim,[box-shadow-dim]{box-shadow:0 3px 6px -4px rgba(0,0,0,.12),0 6px 16px rgba(0,0,0,.08),0 9px 28px 8px rgba(0,0,0,.05)}@media (prefers-color-scheme: dark){.box-shadow-dim,[box-shadow-dim]{box-shadow:0 3px 6px -4px rgba(0,0,0,.24),0 6px 12px rgba(0,0,0,.16),0 9px 18px 8px rgba(0,0,0,.1)}}img,svg,video,canvas,audio,iframe,embed,object{display:block}