@gkd-kit/inspect 0.0.1 → 0.0.1700107642762

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 (42) hide show
  1. package/dist/404.html +7 -7
  2. package/dist/assets/{ActionCard.vue_vue_type_script_setup_true_lang-c0c375f2.js → ActionCard.vue_vue_type_script_setup_true_lang-9695f4de.js} +2 -2
  3. package/dist/assets/ActionCard.vue_vue_type_script_setup_true_lang-9695f4de.js.map +1 -0
  4. package/dist/assets/{DevicePage-788d5a4c.js → DevicePage-3b496007.js} +2 -2
  5. package/dist/assets/DevicePage-3b496007.js.map +1 -0
  6. package/dist/assets/{HomePage-c2c4385f.js → HomePage-511ea3b8.js} +2 -2
  7. package/dist/assets/HomePage-511ea3b8.js.map +1 -0
  8. package/dist/assets/{ImportPage-7faa712c.js → ImportPage-d161324f.js} +2 -2
  9. package/dist/assets/ImportPage-d161324f.js.map +1 -0
  10. package/dist/assets/{SnapshotPage-1aeb4b79.js → SnapshotPage-57d26603.js} +2 -2
  11. package/dist/assets/{SnapshotPage-1aeb4b79.js.map → SnapshotPage-57d26603.js.map} +1 -1
  12. package/dist/assets/_404Page-2ece9679.css +1 -0
  13. package/dist/assets/_404Page-dc5996d1.js +2 -0
  14. package/dist/assets/_404Page-dc5996d1.js.map +1 -0
  15. package/dist/assets/check-44032eaf.js.map +1 -1
  16. package/dist/assets/{import-63fc8997.js → import-526beb2d.js} +2 -2
  17. package/dist/assets/import-526beb2d.js.map +1 -0
  18. package/dist/assets/{index-e468b71c.js → index-9247afbf.js} +3 -3
  19. package/dist/assets/{index-e468b71c.js.map → index-9247afbf.js.map} +1 -1
  20. package/dist/assets/{index-5ce4e14c.js → index-fac4ff4e.js} +2 -2
  21. package/dist/assets/index-fac4ff4e.js.map +1 -0
  22. package/dist/assets/{jszip.min-d831038b.js → jszip.min-571a1711.js} +2 -2
  23. package/dist/assets/{jszip.min-d831038b.js.map → jszip.min-571a1711.js.map} +1 -1
  24. package/dist/assets/{node-502c43ac.js → node-fc0fdd90.js} +2 -2
  25. package/dist/assets/{node-502c43ac.js.map → node-fc0fdd90.js.map} +1 -1
  26. package/dist/assets/{storage-31cc94d5.js → storage-92b049f8.js} +2 -2
  27. package/dist/assets/storage-92b049f8.js.map +1 -0
  28. package/dist/assets/{table-144bd10b.js → table-7f851995.js} +2 -2
  29. package/dist/assets/{table-144bd10b.js.map → table-7f851995.js.map} +1 -1
  30. package/dist/favicon.svg +4 -4
  31. package/dist/index.html +7 -7
  32. package/package.json +12 -10
  33. package/dist/assets/ActionCard.vue_vue_type_script_setup_true_lang-c0c375f2.js.map +0 -1
  34. package/dist/assets/DevicePage-788d5a4c.js.map +0 -1
  35. package/dist/assets/HomePage-c2c4385f.js.map +0 -1
  36. package/dist/assets/ImportPage-7faa712c.js.map +0 -1
  37. package/dist/assets/_404Page-459ec2ef.css +0 -1
  38. package/dist/assets/_404Page-adf8fe0b.js +0 -2
  39. package/dist/assets/_404Page-adf8fe0b.js.map +0 -1
  40. package/dist/assets/import-63fc8997.js.map +0 -1
  41. package/dist/assets/index-5ce4e14c.js.map +0 -1
  42. package/dist/assets/storage-31cc94d5.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DevicePage-3b496007.js","sources":["../../src/utils/api.ts","../../node_modules/.pnpm/json5@2.2.3/node_modules/json5/dist/index.mjs","../../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 subsApps: async () => {\n return jsonRpc<unknown[]>(`subsApps`);\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 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","// This is a generated file. Do not edit.\nvar Space_Separator = /[\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/;\nvar ID_Start = /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF19]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE83\\uDE86-\\uDE89\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]/;\nvar ID_Continue = /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u08D4-\\u08E1\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u09FC\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9-\\u0AFF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C80-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D00-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D54-\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1CD0-\\u1CD2\\u1CD4-\\u1CF9\\u1D00-\\u1DF9\\u1DFB-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C5\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC6F\\uDC7F-\\uDCBA\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDCA-\\uDDCC\\uDDD0-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE3E\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3C-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC00-\\uDC4A\\uDC50-\\uDC59\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB7\\uDEC0-\\uDEC9\\uDF00-\\uDF19\\uDF1D-\\uDF2B\\uDF30-\\uDF39]|\\uD806[\\uDCA0-\\uDCE9\\uDCFF\\uDE00-\\uDE3E\\uDE47\\uDE50-\\uDE83\\uDE86-\\uDE99\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC36\\uDC38-\\uDC40\\uDC50-\\uDC59\\uDC72-\\uDC8F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD47\\uDD50-\\uDD59]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50-\\uDF7E\\uDF8F-\\uDF9F\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6\\uDD00-\\uDD4A\\uDD50-\\uDD59]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uDB40[\\uDD00-\\uDDEF]/;\n\nvar unicode = {\n\tSpace_Separator: Space_Separator,\n\tID_Start: ID_Start,\n\tID_Continue: ID_Continue\n};\n\nvar util = {\n isSpaceSeparator (c) {\n return typeof c === 'string' && unicode.Space_Separator.test(c)\n },\n\n isIdStartChar (c) {\n return typeof c === 'string' && (\n (c >= 'a' && c <= 'z') ||\n (c >= 'A' && c <= 'Z') ||\n (c === '$') || (c === '_') ||\n unicode.ID_Start.test(c)\n )\n },\n\n isIdContinueChar (c) {\n return typeof c === 'string' && (\n (c >= 'a' && c <= 'z') ||\n (c >= 'A' && c <= 'Z') ||\n (c >= '0' && c <= '9') ||\n (c === '$') || (c === '_') ||\n (c === '\\u200C') || (c === '\\u200D') ||\n unicode.ID_Continue.test(c)\n )\n },\n\n isDigit (c) {\n return typeof c === 'string' && /[0-9]/.test(c)\n },\n\n isHexDigit (c) {\n return typeof c === 'string' && /[0-9A-Fa-f]/.test(c)\n },\n};\n\nlet source;\nlet parseState;\nlet stack;\nlet pos;\nlet line;\nlet column;\nlet token;\nlet key;\nlet root;\n\nvar parse = function parse (text, reviver) {\n source = String(text);\n parseState = 'start';\n stack = [];\n pos = 0;\n line = 1;\n column = 0;\n token = undefined;\n key = undefined;\n root = undefined;\n\n do {\n token = lex();\n\n // This code is unreachable.\n // if (!parseStates[parseState]) {\n // throw invalidParseState()\n // }\n\n parseStates[parseState]();\n } while (token.type !== 'eof')\n\n if (typeof reviver === 'function') {\n return internalize({'': root}, '', reviver)\n }\n\n return root\n};\n\nfunction internalize (holder, name, reviver) {\n const value = holder[name];\n if (value != null && typeof value === 'object') {\n if (Array.isArray(value)) {\n for (let i = 0; i < value.length; i++) {\n const key = String(i);\n const replacement = internalize(value, key, reviver);\n if (replacement === undefined) {\n delete value[key];\n } else {\n Object.defineProperty(value, key, {\n value: replacement,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n }\n }\n } else {\n for (const key in value) {\n const replacement = internalize(value, key, reviver);\n if (replacement === undefined) {\n delete value[key];\n } else {\n Object.defineProperty(value, key, {\n value: replacement,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n }\n }\n }\n }\n\n return reviver.call(holder, name, value)\n}\n\nlet lexState;\nlet buffer;\nlet doubleQuote;\nlet sign;\nlet c;\n\nfunction lex () {\n lexState = 'default';\n buffer = '';\n doubleQuote = false;\n sign = 1;\n\n for (;;) {\n c = peek();\n\n // This code is unreachable.\n // if (!lexStates[lexState]) {\n // throw invalidLexState(lexState)\n // }\n\n const token = lexStates[lexState]();\n if (token) {\n return token\n }\n }\n}\n\nfunction peek () {\n if (source[pos]) {\n return String.fromCodePoint(source.codePointAt(pos))\n }\n}\n\nfunction read () {\n const c = peek();\n\n if (c === '\\n') {\n line++;\n column = 0;\n } else if (c) {\n column += c.length;\n } else {\n column++;\n }\n\n if (c) {\n pos += c.length;\n }\n\n return c\n}\n\nconst lexStates = {\n default () {\n switch (c) {\n case '\\t':\n case '\\v':\n case '\\f':\n case ' ':\n case '\\u00A0':\n case '\\uFEFF':\n case '\\n':\n case '\\r':\n case '\\u2028':\n case '\\u2029':\n read();\n return\n\n case '/':\n read();\n lexState = 'comment';\n return\n\n case undefined:\n read();\n return newToken('eof')\n }\n\n if (util.isSpaceSeparator(c)) {\n read();\n return\n }\n\n // This code is unreachable.\n // if (!lexStates[parseState]) {\n // throw invalidLexState(parseState)\n // }\n\n return lexStates[parseState]()\n },\n\n comment () {\n switch (c) {\n case '*':\n read();\n lexState = 'multiLineComment';\n return\n\n case '/':\n read();\n lexState = 'singleLineComment';\n return\n }\n\n throw invalidChar(read())\n },\n\n multiLineComment () {\n switch (c) {\n case '*':\n read();\n lexState = 'multiLineCommentAsterisk';\n return\n\n case undefined:\n throw invalidChar(read())\n }\n\n read();\n },\n\n multiLineCommentAsterisk () {\n switch (c) {\n case '*':\n read();\n return\n\n case '/':\n read();\n lexState = 'default';\n return\n\n case undefined:\n throw invalidChar(read())\n }\n\n read();\n lexState = 'multiLineComment';\n },\n\n singleLineComment () {\n switch (c) {\n case '\\n':\n case '\\r':\n case '\\u2028':\n case '\\u2029':\n read();\n lexState = 'default';\n return\n\n case undefined:\n read();\n return newToken('eof')\n }\n\n read();\n },\n\n value () {\n switch (c) {\n case '{':\n case '[':\n return newToken('punctuator', read())\n\n case 'n':\n read();\n literal('ull');\n return newToken('null', null)\n\n case 't':\n read();\n literal('rue');\n return newToken('boolean', true)\n\n case 'f':\n read();\n literal('alse');\n return newToken('boolean', false)\n\n case '-':\n case '+':\n if (read() === '-') {\n sign = -1;\n }\n\n lexState = 'sign';\n return\n\n case '.':\n buffer = read();\n lexState = 'decimalPointLeading';\n return\n\n case '0':\n buffer = read();\n lexState = 'zero';\n return\n\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n buffer = read();\n lexState = 'decimalInteger';\n return\n\n case 'I':\n read();\n literal('nfinity');\n return newToken('numeric', Infinity)\n\n case 'N':\n read();\n literal('aN');\n return newToken('numeric', NaN)\n\n case '\"':\n case \"'\":\n doubleQuote = (read() === '\"');\n buffer = '';\n lexState = 'string';\n return\n }\n\n throw invalidChar(read())\n },\n\n identifierNameStartEscape () {\n if (c !== 'u') {\n throw invalidChar(read())\n }\n\n read();\n const u = unicodeEscape();\n switch (u) {\n case '$':\n case '_':\n break\n\n default:\n if (!util.isIdStartChar(u)) {\n throw invalidIdentifier()\n }\n\n break\n }\n\n buffer += u;\n lexState = 'identifierName';\n },\n\n identifierName () {\n switch (c) {\n case '$':\n case '_':\n case '\\u200C':\n case '\\u200D':\n buffer += read();\n return\n\n case '\\\\':\n read();\n lexState = 'identifierNameEscape';\n return\n }\n\n if (util.isIdContinueChar(c)) {\n buffer += read();\n return\n }\n\n return newToken('identifier', buffer)\n },\n\n identifierNameEscape () {\n if (c !== 'u') {\n throw invalidChar(read())\n }\n\n read();\n const u = unicodeEscape();\n switch (u) {\n case '$':\n case '_':\n case '\\u200C':\n case '\\u200D':\n break\n\n default:\n if (!util.isIdContinueChar(u)) {\n throw invalidIdentifier()\n }\n\n break\n }\n\n buffer += u;\n lexState = 'identifierName';\n },\n\n sign () {\n switch (c) {\n case '.':\n buffer = read();\n lexState = 'decimalPointLeading';\n return\n\n case '0':\n buffer = read();\n lexState = 'zero';\n return\n\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n buffer = read();\n lexState = 'decimalInteger';\n return\n\n case 'I':\n read();\n literal('nfinity');\n return newToken('numeric', sign * Infinity)\n\n case 'N':\n read();\n literal('aN');\n return newToken('numeric', NaN)\n }\n\n throw invalidChar(read())\n },\n\n zero () {\n switch (c) {\n case '.':\n buffer += read();\n lexState = 'decimalPoint';\n return\n\n case 'e':\n case 'E':\n buffer += read();\n lexState = 'decimalExponent';\n return\n\n case 'x':\n case 'X':\n buffer += read();\n lexState = 'hexadecimal';\n return\n }\n\n return newToken('numeric', sign * 0)\n },\n\n decimalInteger () {\n switch (c) {\n case '.':\n buffer += read();\n lexState = 'decimalPoint';\n return\n\n case 'e':\n case 'E':\n buffer += read();\n lexState = 'decimalExponent';\n return\n }\n\n if (util.isDigit(c)) {\n buffer += read();\n return\n }\n\n return newToken('numeric', sign * Number(buffer))\n },\n\n decimalPointLeading () {\n if (util.isDigit(c)) {\n buffer += read();\n lexState = 'decimalFraction';\n return\n }\n\n throw invalidChar(read())\n },\n\n decimalPoint () {\n switch (c) {\n case 'e':\n case 'E':\n buffer += read();\n lexState = 'decimalExponent';\n return\n }\n\n if (util.isDigit(c)) {\n buffer += read();\n lexState = 'decimalFraction';\n return\n }\n\n return newToken('numeric', sign * Number(buffer))\n },\n\n decimalFraction () {\n switch (c) {\n case 'e':\n case 'E':\n buffer += read();\n lexState = 'decimalExponent';\n return\n }\n\n if (util.isDigit(c)) {\n buffer += read();\n return\n }\n\n return newToken('numeric', sign * Number(buffer))\n },\n\n decimalExponent () {\n switch (c) {\n case '+':\n case '-':\n buffer += read();\n lexState = 'decimalExponentSign';\n return\n }\n\n if (util.isDigit(c)) {\n buffer += read();\n lexState = 'decimalExponentInteger';\n return\n }\n\n throw invalidChar(read())\n },\n\n decimalExponentSign () {\n if (util.isDigit(c)) {\n buffer += read();\n lexState = 'decimalExponentInteger';\n return\n }\n\n throw invalidChar(read())\n },\n\n decimalExponentInteger () {\n if (util.isDigit(c)) {\n buffer += read();\n return\n }\n\n return newToken('numeric', sign * Number(buffer))\n },\n\n hexadecimal () {\n if (util.isHexDigit(c)) {\n buffer += read();\n lexState = 'hexadecimalInteger';\n return\n }\n\n throw invalidChar(read())\n },\n\n hexadecimalInteger () {\n if (util.isHexDigit(c)) {\n buffer += read();\n return\n }\n\n return newToken('numeric', sign * Number(buffer))\n },\n\n string () {\n switch (c) {\n case '\\\\':\n read();\n buffer += escape();\n return\n\n case '\"':\n if (doubleQuote) {\n read();\n return newToken('string', buffer)\n }\n\n buffer += read();\n return\n\n case \"'\":\n if (!doubleQuote) {\n read();\n return newToken('string', buffer)\n }\n\n buffer += read();\n return\n\n case '\\n':\n case '\\r':\n throw invalidChar(read())\n\n case '\\u2028':\n case '\\u2029':\n separatorChar(c);\n break\n\n case undefined:\n throw invalidChar(read())\n }\n\n buffer += read();\n },\n\n start () {\n switch (c) {\n case '{':\n case '[':\n return newToken('punctuator', read())\n\n // This code is unreachable since the default lexState handles eof.\n // case undefined:\n // return newToken('eof')\n }\n\n lexState = 'value';\n },\n\n beforePropertyName () {\n switch (c) {\n case '$':\n case '_':\n buffer = read();\n lexState = 'identifierName';\n return\n\n case '\\\\':\n read();\n lexState = 'identifierNameStartEscape';\n return\n\n case '}':\n return newToken('punctuator', read())\n\n case '\"':\n case \"'\":\n doubleQuote = (read() === '\"');\n lexState = 'string';\n return\n }\n\n if (util.isIdStartChar(c)) {\n buffer += read();\n lexState = 'identifierName';\n return\n }\n\n throw invalidChar(read())\n },\n\n afterPropertyName () {\n if (c === ':') {\n return newToken('punctuator', read())\n }\n\n throw invalidChar(read())\n },\n\n beforePropertyValue () {\n lexState = 'value';\n },\n\n afterPropertyValue () {\n switch (c) {\n case ',':\n case '}':\n return newToken('punctuator', read())\n }\n\n throw invalidChar(read())\n },\n\n beforeArrayValue () {\n if (c === ']') {\n return newToken('punctuator', read())\n }\n\n lexState = 'value';\n },\n\n afterArrayValue () {\n switch (c) {\n case ',':\n case ']':\n return newToken('punctuator', read())\n }\n\n throw invalidChar(read())\n },\n\n end () {\n // This code is unreachable since it's handled by the default lexState.\n // if (c === undefined) {\n // read()\n // return newToken('eof')\n // }\n\n throw invalidChar(read())\n },\n};\n\nfunction newToken (type, value) {\n return {\n type,\n value,\n line,\n column,\n }\n}\n\nfunction literal (s) {\n for (const c of s) {\n const p = peek();\n\n if (p !== c) {\n throw invalidChar(read())\n }\n\n read();\n }\n}\n\nfunction escape () {\n const c = peek();\n switch (c) {\n case 'b':\n read();\n return '\\b'\n\n case 'f':\n read();\n return '\\f'\n\n case 'n':\n read();\n return '\\n'\n\n case 'r':\n read();\n return '\\r'\n\n case 't':\n read();\n return '\\t'\n\n case 'v':\n read();\n return '\\v'\n\n case '0':\n read();\n if (util.isDigit(peek())) {\n throw invalidChar(read())\n }\n\n return '\\0'\n\n case 'x':\n read();\n return hexEscape()\n\n case 'u':\n read();\n return unicodeEscape()\n\n case '\\n':\n case '\\u2028':\n case '\\u2029':\n read();\n return ''\n\n case '\\r':\n read();\n if (peek() === '\\n') {\n read();\n }\n\n return ''\n\n case '1':\n case '2':\n case '3':\n case '4':\n case '5':\n case '6':\n case '7':\n case '8':\n case '9':\n throw invalidChar(read())\n\n case undefined:\n throw invalidChar(read())\n }\n\n return read()\n}\n\nfunction hexEscape () {\n let buffer = '';\n let c = peek();\n\n if (!util.isHexDigit(c)) {\n throw invalidChar(read())\n }\n\n buffer += read();\n\n c = peek();\n if (!util.isHexDigit(c)) {\n throw invalidChar(read())\n }\n\n buffer += read();\n\n return String.fromCodePoint(parseInt(buffer, 16))\n}\n\nfunction unicodeEscape () {\n let buffer = '';\n let count = 4;\n\n while (count-- > 0) {\n const c = peek();\n if (!util.isHexDigit(c)) {\n throw invalidChar(read())\n }\n\n buffer += read();\n }\n\n return String.fromCodePoint(parseInt(buffer, 16))\n}\n\nconst parseStates = {\n start () {\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n push();\n },\n\n beforePropertyName () {\n switch (token.type) {\n case 'identifier':\n case 'string':\n key = token.value;\n parseState = 'afterPropertyName';\n return\n\n case 'punctuator':\n // This code is unreachable since it's handled by the lexState.\n // if (token.value !== '}') {\n // throw invalidToken()\n // }\n\n pop();\n return\n\n case 'eof':\n throw invalidEOF()\n }\n\n // This code is unreachable since it's handled by the lexState.\n // throw invalidToken()\n },\n\n afterPropertyName () {\n // This code is unreachable since it's handled by the lexState.\n // if (token.type !== 'punctuator' || token.value !== ':') {\n // throw invalidToken()\n // }\n\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n parseState = 'beforePropertyValue';\n },\n\n beforePropertyValue () {\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n push();\n },\n\n beforeArrayValue () {\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n if (token.type === 'punctuator' && token.value === ']') {\n pop();\n return\n }\n\n push();\n },\n\n afterPropertyValue () {\n // This code is unreachable since it's handled by the lexState.\n // if (token.type !== 'punctuator') {\n // throw invalidToken()\n // }\n\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n switch (token.value) {\n case ',':\n parseState = 'beforePropertyName';\n return\n\n case '}':\n pop();\n }\n\n // This code is unreachable since it's handled by the lexState.\n // throw invalidToken()\n },\n\n afterArrayValue () {\n // This code is unreachable since it's handled by the lexState.\n // if (token.type !== 'punctuator') {\n // throw invalidToken()\n // }\n\n if (token.type === 'eof') {\n throw invalidEOF()\n }\n\n switch (token.value) {\n case ',':\n parseState = 'beforeArrayValue';\n return\n\n case ']':\n pop();\n }\n\n // This code is unreachable since it's handled by the lexState.\n // throw invalidToken()\n },\n\n end () {\n // This code is unreachable since it's handled by the lexState.\n // if (token.type !== 'eof') {\n // throw invalidToken()\n // }\n },\n};\n\nfunction push () {\n let value;\n\n switch (token.type) {\n case 'punctuator':\n switch (token.value) {\n case '{':\n value = {};\n break\n\n case '[':\n value = [];\n break\n }\n\n break\n\n case 'null':\n case 'boolean':\n case 'numeric':\n case 'string':\n value = token.value;\n break\n\n // This code is unreachable.\n // default:\n // throw invalidToken()\n }\n\n if (root === undefined) {\n root = value;\n } else {\n const parent = stack[stack.length - 1];\n if (Array.isArray(parent)) {\n parent.push(value);\n } else {\n Object.defineProperty(parent, key, {\n value,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n }\n }\n\n if (value !== null && typeof value === 'object') {\n stack.push(value);\n\n if (Array.isArray(value)) {\n parseState = 'beforeArrayValue';\n } else {\n parseState = 'beforePropertyName';\n }\n } else {\n const current = stack[stack.length - 1];\n if (current == null) {\n parseState = 'end';\n } else if (Array.isArray(current)) {\n parseState = 'afterArrayValue';\n } else {\n parseState = 'afterPropertyValue';\n }\n }\n}\n\nfunction pop () {\n stack.pop();\n\n const current = stack[stack.length - 1];\n if (current == null) {\n parseState = 'end';\n } else if (Array.isArray(current)) {\n parseState = 'afterArrayValue';\n } else {\n parseState = 'afterPropertyValue';\n }\n}\n\n// This code is unreachable.\n// function invalidParseState () {\n// return new Error(`JSON5: invalid parse state '${parseState}'`)\n// }\n\n// This code is unreachable.\n// function invalidLexState (state) {\n// return new Error(`JSON5: invalid lex state '${state}'`)\n// }\n\nfunction invalidChar (c) {\n if (c === undefined) {\n return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)\n }\n\n return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`)\n}\n\nfunction invalidEOF () {\n return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)\n}\n\n// This code is unreachable.\n// function invalidToken () {\n// if (token.type === 'eof') {\n// return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)\n// }\n\n// const c = String.fromCodePoint(token.value.codePointAt(0))\n// return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`)\n// }\n\nfunction invalidIdentifier () {\n column -= 5;\n return syntaxError(`JSON5: invalid identifier character at ${line}:${column}`)\n}\n\nfunction separatorChar (c) {\n console.warn(`JSON5: '${formatChar(c)}' in strings is not valid ECMAScript; consider escaping`);\n}\n\nfunction formatChar (c) {\n const replacements = {\n \"'\": \"\\\\'\",\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\',\n '\\b': '\\\\b',\n '\\f': '\\\\f',\n '\\n': '\\\\n',\n '\\r': '\\\\r',\n '\\t': '\\\\t',\n '\\v': '\\\\v',\n '\\0': '\\\\0',\n '\\u2028': '\\\\u2028',\n '\\u2029': '\\\\u2029',\n };\n\n if (replacements[c]) {\n return replacements[c]\n }\n\n if (c < ' ') {\n const hexString = c.charCodeAt(0).toString(16);\n return '\\\\x' + ('00' + hexString).substring(hexString.length)\n }\n\n return c\n}\n\nfunction syntaxError (message) {\n const err = new SyntaxError(message);\n err.lineNumber = line;\n err.columnNumber = column;\n return err\n}\n\nvar stringify = function stringify (value, replacer, space) {\n const stack = [];\n let indent = '';\n let propertyList;\n let replacerFunc;\n let gap = '';\n let quote;\n\n if (\n replacer != null &&\n typeof replacer === 'object' &&\n !Array.isArray(replacer)\n ) {\n space = replacer.space;\n quote = replacer.quote;\n replacer = replacer.replacer;\n }\n\n if (typeof replacer === 'function') {\n replacerFunc = replacer;\n } else if (Array.isArray(replacer)) {\n propertyList = [];\n for (const v of replacer) {\n let item;\n\n if (typeof v === 'string') {\n item = v;\n } else if (\n typeof v === 'number' ||\n v instanceof String ||\n v instanceof Number\n ) {\n item = String(v);\n }\n\n if (item !== undefined && propertyList.indexOf(item) < 0) {\n propertyList.push(item);\n }\n }\n }\n\n if (space instanceof Number) {\n space = Number(space);\n } else if (space instanceof String) {\n space = String(space);\n }\n\n if (typeof space === 'number') {\n if (space > 0) {\n space = Math.min(10, Math.floor(space));\n gap = ' '.substr(0, space);\n }\n } else if (typeof space === 'string') {\n gap = space.substr(0, 10);\n }\n\n return serializeProperty('', {'': value})\n\n function serializeProperty (key, holder) {\n let value = holder[key];\n if (value != null) {\n if (typeof value.toJSON5 === 'function') {\n value = value.toJSON5(key);\n } else if (typeof value.toJSON === 'function') {\n value = value.toJSON(key);\n }\n }\n\n if (replacerFunc) {\n value = replacerFunc.call(holder, key, value);\n }\n\n if (value instanceof Number) {\n value = Number(value);\n } else if (value instanceof String) {\n value = String(value);\n } else if (value instanceof Boolean) {\n value = value.valueOf();\n }\n\n switch (value) {\n case null: return 'null'\n case true: return 'true'\n case false: return 'false'\n }\n\n if (typeof value === 'string') {\n return quoteString(value, false)\n }\n\n if (typeof value === 'number') {\n return String(value)\n }\n\n if (typeof value === 'object') {\n return Array.isArray(value) ? serializeArray(value) : serializeObject(value)\n }\n\n return undefined\n }\n\n function quoteString (value) {\n const quotes = {\n \"'\": 0.1,\n '\"': 0.2,\n };\n\n const replacements = {\n \"'\": \"\\\\'\",\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\',\n '\\b': '\\\\b',\n '\\f': '\\\\f',\n '\\n': '\\\\n',\n '\\r': '\\\\r',\n '\\t': '\\\\t',\n '\\v': '\\\\v',\n '\\0': '\\\\0',\n '\\u2028': '\\\\u2028',\n '\\u2029': '\\\\u2029',\n };\n\n let product = '';\n\n for (let i = 0; i < value.length; i++) {\n const c = value[i];\n switch (c) {\n case \"'\":\n case '\"':\n quotes[c]++;\n product += c;\n continue\n\n case '\\0':\n if (util.isDigit(value[i + 1])) {\n product += '\\\\x00';\n continue\n }\n }\n\n if (replacements[c]) {\n product += replacements[c];\n continue\n }\n\n if (c < ' ') {\n let hexString = c.charCodeAt(0).toString(16);\n product += '\\\\x' + ('00' + hexString).substring(hexString.length);\n continue\n }\n\n product += c;\n }\n\n const quoteChar = quote || Object.keys(quotes).reduce((a, b) => (quotes[a] < quotes[b]) ? a : b);\n\n product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar]);\n\n return quoteChar + product + quoteChar\n }\n\n function serializeObject (value) {\n if (stack.indexOf(value) >= 0) {\n throw TypeError('Converting circular structure to JSON5')\n }\n\n stack.push(value);\n\n let stepback = indent;\n indent = indent + gap;\n\n let keys = propertyList || Object.keys(value);\n let partial = [];\n for (const key of keys) {\n const propertyString = serializeProperty(key, value);\n if (propertyString !== undefined) {\n let member = serializeKey(key) + ':';\n if (gap !== '') {\n member += ' ';\n }\n member += propertyString;\n partial.push(member);\n }\n }\n\n let final;\n if (partial.length === 0) {\n final = '{}';\n } else {\n let properties;\n if (gap === '') {\n properties = partial.join(',');\n final = '{' + properties + '}';\n } else {\n let separator = ',\\n' + indent;\n properties = partial.join(separator);\n final = '{\\n' + indent + properties + ',\\n' + stepback + '}';\n }\n }\n\n stack.pop();\n indent = stepback;\n return final\n }\n\n function serializeKey (key) {\n if (key.length === 0) {\n return quoteString(key, true)\n }\n\n const firstChar = String.fromCodePoint(key.codePointAt(0));\n if (!util.isIdStartChar(firstChar)) {\n return quoteString(key, true)\n }\n\n for (let i = firstChar.length; i < key.length; i++) {\n if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) {\n return quoteString(key, true)\n }\n }\n\n return key\n }\n\n function serializeArray (value) {\n if (stack.indexOf(value) >= 0) {\n throw TypeError('Converting circular structure to JSON5')\n }\n\n stack.push(value);\n\n let stepback = indent;\n indent = indent + gap;\n\n let partial = [];\n for (let i = 0; i < value.length; i++) {\n const propertyString = serializeProperty(String(i), value);\n partial.push((propertyString !== undefined) ? propertyString : 'null');\n }\n\n let final;\n if (partial.length === 0) {\n final = '[]';\n } else {\n if (gap === '') {\n let properties = partial.join(',');\n final = '[' + properties + ']';\n } else {\n let separator = ',\\n' + indent;\n let properties = partial.join(separator);\n final = '[\\n' + indent + properties + ',\\n' + stepback + ']';\n }\n }\n\n stack.pop();\n indent = stepback;\n return final\n }\n};\n\nconst JSON5 = {\n parse,\n stringify,\n};\n\nvar lib = JSON5;\n\nexport default lib;\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 NRadioGroup,\n NRadio,\n NCheckboxGroup,\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 toRaw,\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 const result = await api.snapshots();\n result.sort((a, b) => b.id - a.id);\n snapshots.value = result;\n const subsApps = await api.subsApps();\n subsText.value = JSON5.stringify(\n subsApps || [],\n function (key, value) {\n if (value === null) return undefined;\n return value;\n },\n 2,\n );\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 appsSubs = errorWrap(() => JSON5.parse(subsText.value.trim() || `[]`));\n await api.updateSubsApps([].concat(appsSubs));\n message.success(`修改成功`);\n});\n\nconst showSelectorModel = shallowRef(false);\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 }\n});\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: 10,\n maxRows: 25,\n }\"\n :placeholder=\"`请输入订阅文本\\n订阅支持JSON5\\n根节点可以是APP规则对象也可以是APP规则对象数组`\"\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://github.com/gkd-kit/subscription/blob/main/src/types.ts\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n 查找说明\n </a>\n </NSpace>\n <div h-10px></div>\n <NRadioGroup v-model:value=\"clickAction.action\">\n <NSpace>\n <NRadio value=\"click\"> click </NRadio>\n <NRadio value=\"clickNode\"> clickNode </NRadio>\n <NRadio value=\"clickCenter\"> clickCenter </NRadio>\n <NRadio value=\"back\"> back </NRadio>\n <a\n href=\"https://github.com/gkd-kit/subscription/blob/main/src/types.ts\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n 操作说明\n </a>\n </NSpace>\n </NRadioGroup>\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","Space_Separator","ID_Start","ID_Continue","unicode","util","c","source","parseState","stack","pos","line","column","token","root","parse","text","reviver","lex","parseStates","internalize","holder","name","i","replacement","lexState","buffer","doubleQuote","sign","peek","lexStates","read","newToken","invalidChar","literal","unicodeEscape","invalidIdentifier","escape","separatorChar","type","s","hexEscape","count","invalidEOF","push","pop","parent","current","syntaxError","formatChar","replacements","hexString","err","stringify","replacer","space","indent","propertyList","replacerFunc","gap","quote","v","item","serializeProperty","quoteString","serializeArray","serializeObject","quotes","product","quoteChar","a","b","stepback","keys","partial","propertyString","member","serializeKey","final","properties","separator","firstChar","JSON5","lib","router","useRouter","title","useTitle","api","link","useStorage","device","connect","useTask","errorWrap","URL","trim","onMounted","delay","toValidURL","invoke","snapshots","watchEffect","manufacturer","result","sort","id","subsApps","subsText","captureSnapshot","snapshot","screenshot","snapshotStorage","setItem","screenshotStorage","success","downloadAllSnapshot","snapshotIds","map","existSnapshotIds","Set","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","params","href","columns","fixed","width","render","_createVNode2","NSpace","default","NButton","loading","onClick","_createTextVNode2","pagination","shallowReactive","page","pageSize","showSizePicker","pageSizes","onChange","onUpdatePageSize","watch","showSubsModel","updateSubs","appsSubs","updateSubsApps","concat","showSelectorModel","clickAction","selector","selectorValid","action","quickFind","checkSelectorValid","useDebounceFn","checkSelector","execSelector"],"mappings":"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","x_google_ignoreList":[1]}
@@ -1,4 +1,4 @@
1
- import{d as A,s as k,a as K,c as G,w as S,r as W,b as l,e as X,f as M,g as o,u as e,h as s,F as T,o as O,N as Y,i as ee,j as i,k as c,t as ae,l as te,R as le}from"./index-e468b71c.js";import{_ as oe,b as ne,a as ie,c as se,s as Q,d as ce}from"./ActionCard.vue_vue_type_script_setup_true_lang-c0c375f2.js";import{t as re}from"./check-44032eaf.js";import{s as ue,d as de,a as B,g as Z}from"./storage-31cc94d5.js";import{i as pe,a as ge}from"./import-63fc8997.js";import{u as ve,N as we,r as fe}from"./table-144bd10b.js";import{u as d,N as L,a as me,b,c as v,d as U}from"./node-502c43ac.js";import"./jszip.min-d831038b.js";const he={flex:"","flex-col":"","p-10px":"","gap-10px":"","h-full":""},ke={flex:""},Ce={"h-full":"",flex:"","flex-items-center":""},_e=s("div",{"flex-1":""},null,-1),ye={href:"https://github.com/gkd-kit/inspect",target:"_blank",rel:"noopener noreferrer"},xe=s("svg",{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 496 512"},[s("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),ze=s("svg",{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 512 512"},[s("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"32",d:"M256 112v288"}),s("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"32",d:"M400 256H112"})],-1),Ne=s("svg",{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 1024 1024"},[s("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),Me=A({__name:"HomePage",setup(Se){const C=k([]),p=async()=>{C.value=(await ue.getAllItems()).reverse(),r.value=[]};p();const u=K({query:"",actualQuery:"",updateQuery:()=>{u.actualQuery=u.query.trim(),r.value=[]}}),w=G(()=>{const t=u.actualQuery;return t?C.value.filter(a=>(a.appName||"").includes(t)||(a.appId||"").includes(t)||(a.activityId||"").includes(t)):C.value}),I=d(async()=>{await pe(),await p()}),{activityIdCol:_,appIdCol:q,appNameCol:y,ctimeCol:x,deviceCol:z,appVersionCodeCol:F,appVersionNameCol:J,reseColWidth:$}=ve();S(()=>{const t=w.value.reduce((a,n)=>(a.add(fe(n)),a),new Set);if(t.size<=1){z.filterOptions=void 0;return}z.filterOptions=[...t.values()].map(a=>({value:a,label:a}))}),S(()=>{const t=w.value.reduce((a,n)=>(a.add(n.appName),a),new Set);if(t.size<=1){y.filterOptions=void 0;return}y.filterOptions=[...t.values()].map(a=>({value:a,label:a}))}),S(()=>{const t=w.value.reduce((a,n)=>(a.add(n.activityId),a),new Set);if(t.size<=1){_.filterOptions=void 0;return}_.filterOptions=[...t.values()].map(a=>({value:a,label:a}))});const E=W([{type:"selection"},x,z,y,q,F,J,_,{key:"actions",title:"操作",fixed:"right",width:"255px",render(t){return l(oe,{snapshot:t,onDelete:p},null)}}]),g=K({page:1,pageSize:50,showSizePicker:!0,pageSizes:[50,100],onChange:t=>{g.page=t},onUpdatePageSize:t=>{g.pageSize=t,g.page=1}});X(g,$);const H=t=>{t.columnKey==x.key&&(x.sortOrder=t.order)},N=k(!1),f=k(""),m=d(async()=>{const t=f.value.trim().split(`
1
+ import{d as A,s as k,a as K,c as G,w as S,r as W,b as l,e as X,f as M,g as o,u as e,h as s,F as T,o as O,N as Y,i as ee,j as i,k as c,t as ae,l as te,R as le}from"./index-9247afbf.js";import{_ as oe,b as ne,a as ie,c as se,s as Q,d as ce}from"./ActionCard.vue_vue_type_script_setup_true_lang-9695f4de.js";import{t as re}from"./check-44032eaf.js";import{s as ue,d as de,a as B,g as Z}from"./storage-92b049f8.js";import{i as pe,a as ge}from"./import-526beb2d.js";import{u as ve,N as we,r as fe}from"./table-7f851995.js";import{u as d,N as L,a as me,b,c as v,d as U}from"./node-fc0fdd90.js";import"./jszip.min-571a1711.js";const he={flex:"","flex-col":"","p-10px":"","gap-10px":"","h-full":""},ke={flex:""},Ce={"h-full":"",flex:"","flex-items-center":""},_e=s("div",{"flex-1":""},null,-1),ye={href:"https://github.com/gkd-kit/inspect",target:"_blank",rel:"noopener noreferrer"},xe=s("svg",{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 496 512"},[s("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),ze=s("svg",{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 512 512"},[s("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"32",d:"M256 112v288"}),s("path",{fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round","stroke-width":"32",d:"M400 256H112"})],-1),Ne=s("svg",{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 1024 1024"},[s("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),Me=A({__name:"HomePage",setup(Se){const C=k([]),p=async()=>{C.value=(await ue.getAllItems()).reverse(),r.value=[]};p();const u=K({query:"",actualQuery:"",updateQuery:()=>{u.actualQuery=u.query.trim(),r.value=[]}}),w=G(()=>{const t=u.actualQuery;return t?C.value.filter(a=>(a.appName||"").includes(t)||(a.appId||"").includes(t)||(a.activityId||"").includes(t)):C.value}),I=d(async()=>{await pe(),await p()}),{activityIdCol:_,appIdCol:q,appNameCol:y,ctimeCol:x,deviceCol:z,appVersionCodeCol:F,appVersionNameCol:J,reseColWidth:$}=ve();S(()=>{const t=w.value.reduce((a,n)=>(a.add(fe(n)),a),new Set);if(t.size<=1){z.filterOptions=void 0;return}z.filterOptions=[...t.values()].map(a=>({value:a,label:a}))}),S(()=>{const t=w.value.reduce((a,n)=>(a.add(n.appName),a),new Set);if(t.size<=1){y.filterOptions=void 0;return}y.filterOptions=[...t.values()].map(a=>({value:a,label:a}))}),S(()=>{const t=w.value.reduce((a,n)=>(a.add(n.activityId),a),new Set);if(t.size<=1){_.filterOptions=void 0;return}_.filterOptions=[...t.values()].map(a=>({value:a,label:a}))});const E=W([{type:"selection"},x,z,y,q,F,J,_,{key:"actions",title:"操作",fixed:"right",width:"255px",render(t){return l(oe,{snapshot:t,onDelete:p},null)}}]),g=K({page:1,pageSize:50,showSizePicker:!0,pageSizes:[50,100],onChange:t=>{g.page=t},onUpdatePageSize:t=>{g.pageSize=t,g.page=1}});X(g,$);const H=t=>{t.columnKey==x.key&&(x.sortOrder=t.order)},N=k(!1),f=k(""),m=d(async()=>{const t=f.value.trim().split(`
2
2
  `).map(a=>a.trim()).filter(a=>re(a));t.length!=0&&(await ge(t),await p(),f.value="")}),r=k([]),h=()=>Promise.all(r.value.map(t=>B.getItem(t))),j=d(async()=>{await new Promise((t,a)=>{de.warning({title:"删除",content:`是否批量删除 ${r.value.length} 个快照`,negativeText:"取消",positiveText:"确认",onClose:a,onEsc:a,onMaskClick:a,onNegativeClick:a,onPositiveClick:t})}),await Promise.all(r.value.map(t=>B.removeItem(t))),await p()}),P=d(async()=>{await ne(await h())}),V=d(async()=>{await ie(await h())}),R=d(async()=>{const t=await se(await h());Q({content:t.map(a=>Z(a)).join(`
3
3
  `)+`
4
4
  `})}),D=d(async()=>{const t=await ce(await h());Q({content:t.map(a=>Z(a)).join(`
@@ -7,4 +7,4 @@ import{d as A,s as k,a as K,c as G,w as S,r as W,b as l,e as X,f as M,g as o,u a
7
7
  每行一个
8
8
  空白行自动忽略
9
9
  非法链接行自动忽略`,autosize:{minRows:8,maxRows:16},inputProps:{style:"white-space: nowrap;"}},null,8,["value"])]),_:1},8,["show","onPositiveClick","loading"]),s("div",he,[s("div",ke,[l(e(v),null,{default:o(()=>[l(e(me),null,{default:o(()=>[l(e(L),{placeholder:"请输入关键字搜索",clearable:"",value:e(u).query,"onUpdate:value":a[2]||(a[2]=n=>e(u).query=n),onKeyup:ee(e(u).updateQuery,["enter"]),onChange:e(u).updateQuery},null,8,["value","onKeyup","onChange"]),l(e(i),{onClick:e(u).updateQuery},{default:o(()=>[c(" 搜索 ")]),_:1},8,["onClick"])]),_:1}),r.value.length?(O(),M(T,{key:0},[l(e(b),null,{trigger:o(()=>[l(e(i),null,{default:o(()=>[c(" 批量下载 ")]),_:1})]),default:o(()=>[l(e(v),{vertical:""},{default:o(()=>[l(e(i),{onClick:e(V).invoke,loading:e(V).loading},{default:o(()=>[c(" 批量下载-快照 ")]),_:1},8,["onClick","loading"]),l(e(i),{onClick:e(P).invoke,loading:e(P).loading},{default:o(()=>[c(" 批量下载-图片 ")]),_:1},8,["onClick","loading"])]),_:1})]),_:1}),l(e(b),null,{trigger:o(()=>[l(e(i),null,{default:o(()=>[c(" 批量分享 ")]),_:1})]),default:o(()=>[l(e(v),{vertical:""},{default:o(()=>[l(e(i),{onClick:e(D).invoke,loading:e(D).loading},{default:o(()=>[c(" 批量生成链接-快照 ")]),_:1},8,["onClick","loading"]),l(e(i),{onClick:e(R).invoke,loading:e(R).loading},{default:o(()=>[c(" 批量生成链接-图片 ")]),_:1},8,["onClick","loading"])]),_:1})]),_:1}),l(e(i),{onClick:e(j).invoke},{default:o(()=>[c(" 批量删除 ")]),_:1},8,["onClick"]),s("div",Ce,ae(`已选中 ${r.value.length} 个快照`),1)],64)):te("",!0)]),_:1}),_e,l(e(v),null,{default:o(()=>[s("a",ye,[l(e(i),null,{icon:o(()=>[l(e(U),null,{default:o(()=>[xe]),_:1})]),_:1})]),l(e(b),null,{trigger:o(()=>[l(e(i),null,{icon:o(()=>[l(e(U),null,{default:o(()=>[ze]),_:1})]),_:1})]),default:o(()=>[l(e(v),{vertical:""},{default:o(()=>[l(e(i),{onClick:e(I).invoke,loading:e(I).loading},{default:o(()=>[c(" 导入本地文件 ")]),_:1},8,["onClick","loading"]),l(e(i),{onClick:a[3]||(a[3]=n=>N.value=!0),loading:e(m).loading},{default:o(()=>[c(" 导入网络文件 ")]),_:1},8,["loading"])]),_:1})]),_:1}),l(e(le),{to:"/device"},{default:o(()=>[l(e(i),null,{icon:o(()=>[l(e(U),null,{default:o(()=>[Ne]),_:1})]),_:1})]),_:1})]),_:1})]),l(e(we),{striped:"",data:w.value,columns:E,scrollX:1800,pagination:e(g),checkedRowKeys:r.value,"onUpdate:checkedRowKeys":a[4]||(a[4]=n=>r.value=n),rowKey:n=>n.id,"onUpdate:sorter":H,size:"small",class:"flex-1",flexHeight:""},null,8,["data","columns","pagination","checkedRowKeys","rowKey"])])],64))}});export{Me as default};
10
- //# sourceMappingURL=HomePage-c2c4385f.js.map
10
+ //# sourceMappingURL=HomePage-511ea3b8.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HomePage-511ea3b8.js","sources":["../../src/views/HomePage.vue"],"sourcesContent":["<script lang=\"tsx\" setup>\nimport ActionCard from '@/components/ActionCard.vue';\nimport { toValidURL } from '@/utils/check';\nimport { showTextDLg } from '@/utils/dialog';\nimport { dialog } from '@/utils/discrete';\nimport {\n batchCreateJpgUrl,\n batchCreateZipUrl,\n batchJpgDownloadZip,\n batchZipDownloadZip,\n} from '@/utils/export';\nimport { importFromLocal, importFromNetwork } from '@/utils/import';\nimport { shallowSnapshotStorage, snapshotStorage } from '@/utils/storage';\nimport { renderDveice, useSnapshotColumns } from '@/utils/table';\nimport { useTask } from '@/utils/task';\nimport type { Snapshot } from '@/utils/types';\nimport { githubUrlToSelfUrl } from '@/utils/url';\nimport {\n NButton,\n NDataTable,\n NInput,\n NInputGroup,\n NModal,\n NPopover,\n NSpace,\n PaginationProps,\n type DataTableColumns,\n NIcon,\n} from 'naive-ui';\nimport type { SortState } from 'naive-ui/es/data-table/src/interface';\nimport {\n computed,\n reactive,\n shallowReactive,\n shallowRef,\n watch,\n watchEffect,\n} from 'vue';\nimport { RouterLink } from 'vue-router';\n\nconst snapshots = shallowRef<Snapshot[]>([]);\nconst updateSnapshots = async () => {\n snapshots.value = (await shallowSnapshotStorage.getAllItems()).reverse();\n checkedRowKeys.value = [];\n};\nupdateSnapshots();\nconst filterOption = shallowReactive({\n query: ``,\n actualQuery: ``,\n updateQuery: () => {\n filterOption.actualQuery = filterOption.query.trim();\n checkedRowKeys.value = [];\n },\n});\nconst filterSnapshots = computed(() => {\n const actualQuery = filterOption.actualQuery;\n if (!actualQuery) return snapshots.value;\n return snapshots.value.filter((s) => {\n return (\n (s.appName || ``).includes(actualQuery) ||\n (s.appId || ``).includes(actualQuery) ||\n (s.activityId || ``).includes(actualQuery)\n );\n });\n});\n\nconst importLoacl = useTask(async () => {\n await importFromLocal();\n await updateSnapshots();\n});\n\nconst {\n activityIdCol,\n appIdCol,\n appNameCol,\n ctimeCol,\n deviceCol,\n appVersionCodeCol,\n appVersionNameCol,\n reseColWidth,\n} = useSnapshotColumns();\n\nwatchEffect(() => {\n const set = filterSnapshots.value.reduce(\n (p, c) => (p.add(renderDveice(c)), p),\n new Set<string>(),\n );\n if (set.size <= 1) {\n deviceCol.filterOptions = undefined;\n return;\n }\n deviceCol.filterOptions = [...set.values()].map((s) => ({\n value: s,\n label: s,\n }));\n});\n\nwatchEffect(() => {\n const set = filterSnapshots.value.reduce(\n (p, c) => (p.add(c.appName), p),\n new Set<string>(),\n );\n if (set.size <= 1) {\n appNameCol.filterOptions = undefined;\n return;\n }\n appNameCol.filterOptions = [...set.values()].map((s) => ({\n value: s,\n label: s,\n }));\n});\n\nwatchEffect(() => {\n const set = filterSnapshots.value.reduce(\n (p, c) => (p.add(c.activityId), p),\n new Set<string>(),\n );\n if (set.size <= 1) {\n activityIdCol.filterOptions = undefined;\n return;\n }\n activityIdCol.filterOptions = [...set.values()].map((s) => ({\n value: s,\n label: s,\n }));\n});\n\nconst columns: DataTableColumns<Snapshot> = reactive([\n {\n type: 'selection',\n },\n ctimeCol,\n deviceCol,\n appNameCol,\n appIdCol,\n appVersionCodeCol,\n appVersionNameCol,\n activityIdCol,\n {\n key: `actions`,\n title: `操作`,\n fixed: 'right',\n width: `255px`,\n render(row) {\n return <ActionCard snapshot={row} onDelete={updateSnapshots} />;\n },\n },\n]);\n\nconst pagination = shallowReactive<PaginationProps>({\n page: 1,\n pageSize: 50,\n showSizePicker: true,\n pageSizes: [50, 100],\n onChange: (page: number) => {\n pagination.page = page;\n },\n onUpdatePageSize: (pageSize: number) => {\n pagination.pageSize = pageSize;\n pagination.page = 1;\n },\n});\nwatch(pagination, reseColWidth);\n\nconst handleSorterChange = (sorter: SortState) => {\n if (sorter.columnKey == ctimeCol.key) {\n ctimeCol.sortOrder = sorter.order;\n }\n};\n\nconst showModal = shallowRef(false);\nconst text = shallowRef(``);\nconst importNetwork = useTask(async () => {\n const urls = text.value\n .trim()\n .split(`\\n`)\n .map((u) => u.trim())\n .filter((u) => toValidURL(u));\n if (urls.length == 0) return;\n await importFromNetwork(urls);\n await updateSnapshots();\n text.value = ``;\n});\n\nconst checkedRowKeys = shallowRef<number[]>([]);\nconst checkedSnapshots = () => {\n return Promise.all(\n checkedRowKeys.value.map(\n (id) => snapshotStorage.getItem(id) as Promise<Snapshot>,\n ),\n );\n};\nconst batchDelete = useTask(async () => {\n await new Promise((res, rej) => {\n dialog.warning({\n title: `删除`,\n content: `是否批量删除 ${checkedRowKeys.value.length} 个快照`,\n negativeText: `取消`,\n positiveText: `确认`,\n onClose: rej,\n onEsc: rej,\n onMaskClick: rej,\n onNegativeClick: rej,\n onPositiveClick: res,\n });\n });\n\n await Promise.all(\n checkedRowKeys.value.map((k) => snapshotStorage.removeItem(k)),\n );\n await updateSnapshots();\n});\nconst batchDownloadJpg = useTask(async () => {\n await batchJpgDownloadZip(await checkedSnapshots());\n});\nconst batchDownloadZip = useTask(async () => {\n await batchZipDownloadZip(await checkedSnapshots());\n});\n\nconst batchShareJpgUrl = useTask(async () => {\n const pngUrls = await batchCreateJpgUrl(await checkedSnapshots());\n showTextDLg({\n content: pngUrls.map((s) => githubUrlToSelfUrl(s)).join(`\\n`) + `\\n`,\n });\n});\nconst batchShareZipUrl = useTask(async () => {\n const zipUrls = await batchCreateZipUrl(await checkedSnapshots());\n showTextDLg({\n content: zipUrls.map((s) => githubUrlToSelfUrl(s)).join(`\\n`) + `\\n`,\n });\n});\n</script>\n<template>\n <NModal\n v-model:show=\"showModal\"\n preset=\"dialog\"\n title=\"导入网络文件\"\n :showIcon=\"false\"\n positiveText=\"确认\"\n negativeText=\"取消\"\n style=\"width: 800px\"\n @positiveClick=\"importNetwork.invoke\"\n :loading=\"importNetwork.loading\"\n >\n <NInput\n :value=\"text\"\n @update:value=\"\n if (!importNetwork.loading) {\n text = $event;\n }\n \"\n type=\"textarea\"\n :placeholder=\"`仅支持ZIP文件链接\\n每行一个\\n空白行自动忽略\\n非法链接行自动忽略`\"\n :autosize=\"{\n minRows: 8,\n maxRows: 16,\n }\"\n :inputProps=\"{\n style: `white-space: nowrap;`,\n }\"\n />\n </NModal>\n <div flex flex-col p-10px gap-10px h-full>\n <div flex>\n <NSpace>\n <NInputGroup>\n <NInput\n placeholder=\"请输入关键字搜索\"\n clearable\n v-model:value=\"filterOption.query\"\n @keyup.enter=\"filterOption.updateQuery\"\n @change=\"filterOption.updateQuery\"\n ></NInput>\n <NButton @click=\"filterOption.updateQuery\"> 搜索 </NButton>\n </NInputGroup>\n <template v-if=\"checkedRowKeys.length\">\n <NPopover>\n <template #trigger>\n <NButton> 批量下载 </NButton>\n </template>\n <NSpace vertical>\n <NButton\n @click=\"batchDownloadZip.invoke\"\n :loading=\"batchDownloadZip.loading\"\n >\n 批量下载-快照\n </NButton>\n <NButton\n @click=\"batchDownloadJpg.invoke\"\n :loading=\"batchDownloadJpg.loading\"\n >\n 批量下载-图片\n </NButton>\n </NSpace>\n </NPopover>\n <NPopover>\n <template #trigger>\n <NButton> 批量分享 </NButton>\n </template>\n <NSpace vertical>\n <NButton\n @click=\"batchShareZipUrl.invoke\"\n :loading=\"batchShareZipUrl.loading\"\n >\n 批量生成链接-快照\n </NButton>\n <NButton\n @click=\"batchShareJpgUrl.invoke\"\n :loading=\"batchShareJpgUrl.loading\"\n >\n 批量生成链接-图片\n </NButton>\n </NSpace>\n </NPopover>\n <NButton @click=\"batchDelete.invoke\"> 批量删除 </NButton>\n <div h-full flex flex-items-center>\n {{ `已选中 ${checkedRowKeys.length} 个快照` }}\n </div>\n </template>\n </NSpace>\n <div flex-1></div>\n <NSpace>\n <a\n href=\"https://github.com/gkd-kit/inspect\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\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 496 512\"\n >\n <path\n 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\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </NIcon>\n </template>\n </NButton>\n </a>\n <NPopover>\n <template #trigger>\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 512 512\"\n >\n <path\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"32\"\n d=\"M256 112v288\"\n ></path>\n <path\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n stroke-width=\"32\"\n d=\"M400 256H112\"\n ></path>\n </svg>\n </NIcon>\n </template>\n </NButton>\n </template>\n <NSpace vertical>\n <NButton @click=\"importLoacl.invoke\" :loading=\"importLoacl.loading\">\n 导入本地文件\n </NButton>\n <NButton @click=\"showModal = true\" :loading=\"importNetwork.loading\">\n 导入网络文件\n </NButton>\n </NSpace>\n </NPopover>\n <RouterLink to=\"/device\">\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 1024 1024\"\n >\n <path\n 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\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </NIcon>\n </template>\n </NButton>\n </RouterLink>\n </NSpace>\n </div>\n <NDataTable\n striped\n :data=\"filterSnapshots\"\n :columns=\"columns\"\n :scrollX=\"1800\"\n :pagination=\"pagination\"\n v-model:checkedRowKeys=\"checkedRowKeys\"\n :rowKey=\"(r:Snapshot)=>r.id\"\n @update:sorter=\"handleSorterChange\"\n size=\"small\"\n class=\"flex-1\"\n flexHeight\n />\n </div>\n</template>\n"],"names":["snapshots","shallowRef","updateSnapshots","value","shallowSnapshotStorage","getAllItems","reverse","checkedRowKeys","filterOption","shallowReactive","query","actualQuery","updateQuery","trim","filterSnapshots","computed","filter","s","appName","includes","appId","activityId","importLoacl","useTask","importFromLocal","activityIdCol","appIdCol","appNameCol","ctimeCol","deviceCol","appVersionCodeCol","appVersionNameCol","reseColWidth","useSnapshotColumns","watchEffect","set","reduce","p","c","add","renderDveice","Set","size","filterOptions","undefined","values","map","label","columns","reactive","type","key","title","fixed","width","render","row","_createVNode2","ActionCard","pagination","page","pageSize","showSizePicker","pageSizes","onChange","onUpdatePageSize","watch","handleSorterChange","sorter","columnKey","sortOrder","order","showModal","text","importNetwork","urls","split","u","toValidURL","length","importFromNetwork","checkedSnapshots","Promise","all","id","snapshotStorage","getItem","batchDelete","res","rej","dialog","warning","content","negativeText","positiveText","onClose","onEsc","onMaskClick","onNegativeClick","onPositiveClick","k","removeItem","batchDownloadJpg","batchJpgDownloadZip","batchDownloadZip","batchZipDownloadZip","batchShareJpgUrl","pngUrls","batchCreateJpgUrl","showTextDLg","githubUrlToSelfUrl","join","batchShareZipUrl","zipUrls","batchCreateZipUrl"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{d as m,am as f,an as h,s as c,a5 as d,f as g,J as v,K as w,h as _,t as x,o as R}from"./index-e468b71c.js";import{t as S}from"./check-44032eaf.js";import{m as b,j as i,u as n,a as y,n as l,q as I,e as U,r as B,b as k}from"./storage-31cc94d5.js";import{a as q}from"./import-63fc8997.js";import"./jszip.min-d831038b.js";const D={class:"h-[calc(100%-10px)]",flex:"","gap-5px":"","p-5px":"","flex-col":"","flex-items-center":""},C=m({__name:"ImportPage",setup(J){const u=f(),r=h(),a=String(u.query.url||""),p=c(!0),o=c("加载中...");return d(async()=>{if(!S(a)){b.error("非法URL参数"),await i(1e3),r.replace({path:"/"});return}await i(1e3);const s=n[a];if(s)if(await y.getItem(s)){r.replace({name:"snapshot",params:{snapshotId:s}});return}else delete n[a];l.start();try{const[t]=await q(a)??[];if(t.status=="fulfilled"){l.finish();const e=t.value;e!=null&&e.id?(n[a]=e.id,a.match(I)?U[e.id]=a:a.match(B)&&(k[e.id]=a),p.value=!1,await i(500),r.replace({name:"snapshot",params:{snapshotId:e.id}})):o.value="获取资源失败"}else throw t.reason}catch{l.error(),o.value="加载资源失败"}}),(s,t)=>(R(),g("div",D,[v(_("div",{"mt-40px":""},x(o.value),513),[[w,p.value]])]))}});export{C as default};
2
- //# sourceMappingURL=ImportPage-7faa712c.js.map
1
+ import{d as m,am as f,an as h,s as c,a5 as d,f as g,J as v,K as w,h as _,t as x,o as R}from"./index-9247afbf.js";import{t as S}from"./check-44032eaf.js";import{m as b,j as i,u as n,a as y,n as l,q as I,e as U,r as B,b as k}from"./storage-92b049f8.js";import{a as q}from"./import-526beb2d.js";import"./jszip.min-571a1711.js";const D={class:"h-[calc(100%-10px)]",flex:"","gap-5px":"","p-5px":"","flex-col":"","flex-items-center":""},C=m({__name:"ImportPage",setup(J){const u=f(),r=h(),a=String(u.query.url||""),p=c(!0),o=c("加载中...");return d(async()=>{if(!S(a)){b.error("非法URL参数"),await i(1e3),r.replace({path:"/"});return}await i(1e3);const s=n[a];if(s)if(await y.getItem(s)){r.replace({name:"snapshot",params:{snapshotId:s}});return}else delete n[a];l.start();try{const[t]=await q(a)??[];if(t.status=="fulfilled"){l.finish();const e=t.value;e!=null&&e.id?(n[a]=e.id,a.match(I)?U[e.id]=a:a.match(B)&&(k[e.id]=a),p.value=!1,await i(500),r.replace({name:"snapshot",params:{snapshotId:e.id}})):o.value="获取资源失败"}else throw t.reason}catch{l.error(),o.value="加载资源失败"}}),(s,t)=>(R(),g("div",D,[v(_("div",{"mt-40px":""},x(o.value),513),[[w,p.value]])]))}});export{C as default};
2
+ //# sourceMappingURL=ImportPage-d161324f.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImportPage-d161324f.js","sources":["../../src/views/ImportPage.vue"],"sourcesContent":["<script setup lang=\"tsx\">\nimport { toValidURL } from '@/utils/check';\nimport { loadingBar, message } from '@/utils/discrete';\nimport { importFromNetwork } from '@/utils/import';\nimport { delay } from '@/utils/others';\nimport { githubZipStorage } from '@/utils/storage';\nimport { githubJpgStorage } from '@/utils/storage';\nimport { urlStorage, snapshotStorage } from '@/utils/storage';\nimport { githubImageUrlReg, githubZipUrlReg } from '@/utils/url';\nimport { onMounted, shallowRef } from 'vue';\nimport { useRoute, useRouter } from 'vue-router';\n\nconst route = useRoute();\nconst router = useRouter();\n\nconst importUrl = String(route.query.url || ``);\n\nconst loading = shallowRef(true);\nconst tip = shallowRef(`加载中...`);\n\nonMounted(async () => {\n if (!toValidURL(importUrl)) {\n message.error(`非法URL参数`);\n await delay(1000);\n router.replace({\n path: `/`,\n });\n return;\n }\n await delay(1000);\n const snapshotId = urlStorage[importUrl];\n if (snapshotId) {\n const snapshot = await snapshotStorage.getItem(snapshotId);\n if (snapshot) {\n router.replace({\n name: 'snapshot',\n params: { snapshotId },\n });\n return;\n } else {\n delete urlStorage[importUrl];\n }\n }\n loadingBar.start();\n try {\n const [result] = (await importFromNetwork(importUrl)) ?? [];\n\n if (result.status == 'fulfilled') {\n loadingBar.finish();\n const snapshot = result.value;\n if (snapshot?.id) {\n urlStorage[importUrl] = snapshot.id;\n if (importUrl.match(githubZipUrlReg)) {\n githubZipStorage[snapshot.id] = importUrl;\n } else if (importUrl.match(githubImageUrlReg)) {\n githubJpgStorage[snapshot.id] = importUrl;\n }\n loading.value = false;\n await delay(500);\n router.replace({\n name: 'snapshot',\n params: { snapshotId: snapshot.id },\n });\n } else {\n tip.value = `获取资源失败`;\n }\n } else {\n throw result.reason;\n }\n } catch {\n loadingBar.error();\n tip.value = `加载资源失败`;\n }\n});\n</script>\n<template>\n <div\n class=\"h-[calc(100%-10px)]\"\n flex\n gap-5px\n p-5px\n flex-col\n flex-items-center\n >\n <div v-show=\"loading\" mt-40px>\n {{ tip }}\n </div>\n </div>\n</template>\n"],"names":["route","useRoute","router","useRouter","importUrl","String","query","url","loading","shallowRef","tip","onMounted","toValidURL","message","error","delay","replace","path","snapshotId","urlStorage","snapshotStorage","getItem","name","params","loadingBar","start","result","importFromNetwork","status","finish","snapshot","value","id","match","githubZipUrlReg","githubZipStorage","githubImageUrlReg","githubJpgStorage","reason"],"mappings":"idAYA,MAAMA,EAAQC,IACRC,EAASC,IAETC,EAAYC,OAAOL,EAAMM,MAAMC,KAAQ,EAAC,EAExCC,EAAUC,EAAW,EAAI,EACzBC,EAAMD,EAAY,QAAO,EAE/BE,OAAAA,EAAU,SAAY,CACpB,GAAI,CAACC,EAAWR,CAAS,EAAG,CAC1BS,EAAQC,MAAO,SAAQ,EACvB,MAAMC,EAAM,GAAI,EAChBb,EAAOc,QAAQ,CACbC,KAAO,GACT,CAAC,EACD,MACF,CACA,MAAMF,EAAM,GAAI,EAChB,MAAMG,EAAaC,EAAWf,CAAS,EACvC,GAAIc,EAEF,GADiB,MAAME,EAAgBC,QAAQH,CAAU,EAC3C,CACZhB,EAAOc,QAAQ,CACbM,KAAM,WACNC,OAAQ,CAAEL,WAAAA,CAAW,CACvB,CAAC,EACD,MACF,MACE,OAAOC,EAAWf,CAAS,EAG/BoB,EAAWC,MAAK,EAChB,GAAI,CACF,KAAM,CAACC,CAAM,EAAK,MAAMC,EAAkBvB,CAAS,GAAM,GAEzD,GAAIsB,EAAOE,QAAU,YAAa,CAChCJ,EAAWK,OAAM,EACjB,MAAMC,EAAWJ,EAAOK,MACpBD,GAAAA,MAAAA,EAAUE,IACZb,EAAWf,CAAS,EAAI0B,EAASE,GAC7B5B,EAAU6B,MAAMC,CAAe,EACjCC,EAAiBL,EAASE,EAAE,EAAI5B,EACvBA,EAAU6B,MAAMG,CAAiB,IAC1CC,EAAiBP,EAASE,EAAE,EAAI5B,GAElCI,EAAQuB,MAAQ,GAChB,MAAMhB,EAAM,GAAG,EACfb,EAAOc,QAAQ,CACbM,KAAM,WACNC,OAAQ,CAAEL,WAAYY,EAASE,EAAG,CACpC,CAAC,GAEDtB,EAAIqB,MAAS,QAEjB,KACE,OAAML,EAAOY,MAEjB,MAAQ,CACNd,EAAWV,MAAK,EAChBJ,EAAIqB,MAAS,QACf,CACF,CAAC"}
@@ -1,4 +1,4 @@
1
- import{_ as zn,e as On,f as Bn}from"./ActionCard.vue_vue_type_script_setup_true_lang-c0c375f2.js";import{f as pt,c as $e,m as ue,b as Mn,g as Et,e as Yt,a as Ft,h as Un,i as jn,j as At}from"./storage-31cc94d5.js";import{d as j,m as y,n as kt,p as D,q as F,v as X,x as K,y as lt,z as W,c as A,A as Oe,B as Xt,C as rt,D as wt,E as Ct,G as q,H as Hn,I as z,J as Gt,K as Jt,L as Qt,M as Vn,O as G,P as Pe,Q as Wn,S as It,T as Zt,U as qn,V as ve,W as Yn,X as Xn,Y as Gn,Z as Ke,_ as Jn,$ as Qn,a0 as ft,a1 as Zn,a2 as eo,a3 as ht,a4 as to,a5 as no,a6 as oo,a7 as en,a8 as lo,w as Ce,e as We,a9 as gt,aa as Ve,ab as zt,ac as ro,ad as nt,a as tn,s as Q,ae as Ot,af as ne,h as B,ag as nn,ah as bt,ai as ao,aj as io,o as M,g as S,b as _,u as b,f as ge,ak as mt,F as ot,t as te,l as De,k as H,i as so,j as tt,al as Bt,am as co,an as uo}from"./index-e468b71c.js";import{e as qe,C as fo,f as ho,g as go,h as vo,i as Mt,V as po,j as bo,k as Ut,l as mo,m as yo,n as xo,d as on,o as Te,p as ko,c as jt,q as Ht,r as wo,N as Co,a as No,s as yt,t as So,v as Vt,w as Ro}from"./node-502c43ac.js";import{e as Wt,a as _o,p as Ko,u as $o}from"./index-5ce4e14c.js";import{_ as Do}from"./_plugin-vue_export-helper-c27b6911.js";import"./jszip.min-d831038b.js";function ln(e){return typeof e=="string"?`s-${e}`:`n-${e}`}const To=j({name:"ChevronLeft",render(){return y("svg",{viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},y("path",{d:"M10.3536 3.14645C10.5488 3.34171 10.5488 3.65829 10.3536 3.85355L6.20711 8L10.3536 12.1464C10.5488 12.3417 10.5488 12.6583 10.3536 12.8536C10.1583 13.0488 9.84171 13.0488 9.64645 12.8536L5.14645 8.35355C4.95118 8.15829 4.95118 7.84171 5.14645 7.64645L9.64645 3.14645C9.84171 2.95118 10.1583 2.95118 10.3536 3.14645Z",fill:"currentColor"}))}}),Po=j({name:"Switcher",render(){return y("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32"},y("path",{d:"M12 8l10 8l-10 8z"}))}}),Lo=e=>{const{fontWeight:t,textColor1:c,textColor2:u,textColorDisabled:s,dividerColor:r,fontSize:g}=e;return{titleFontSize:g,titleFontWeight:t,dividerColor:r,titleTextColor:c,titleTextColorDisabled:s,fontSize:g,textColor:u,arrowColor:u,arrowColorDisabled:s,itemMargin:"16px 0 0 0",titlePadding:"16px 0 0 0"}},Eo={name:"Collapse",common:kt,self:Lo},Fo=Eo,Ao=D("collapse","width: 100%;",[D("collapse-item",`
1
+ import{_ as zn,e as On,f as Bn}from"./ActionCard.vue_vue_type_script_setup_true_lang-9695f4de.js";import{f as pt,c as $e,m as ue,b as Mn,g as Et,e as Yt,a as Ft,h as Un,i as jn,j as At}from"./storage-92b049f8.js";import{d as j,m as y,n as kt,p as D,q as F,v as X,x as K,y as lt,z as W,c as A,A as Oe,B as Xt,C as rt,D as wt,E as Ct,G as q,H as Hn,I as z,J as Gt,K as Jt,L as Qt,M as Vn,O as G,P as Pe,Q as Wn,S as It,T as Zt,U as qn,V as ve,W as Yn,X as Xn,Y as Gn,Z as Ke,_ as Jn,$ as Qn,a0 as ft,a1 as Zn,a2 as eo,a3 as ht,a4 as to,a5 as no,a6 as oo,a7 as en,a8 as lo,w as Ce,e as We,a9 as gt,aa as Ve,ab as zt,ac as ro,ad as nt,a as tn,s as Q,ae as Ot,af as ne,h as B,ag as nn,ah as bt,ai as ao,aj as io,o as M,g as S,b as _,u as b,f as ge,ak as mt,F as ot,t as te,l as De,k as H,i as so,j as tt,al as Bt,am as co,an as uo}from"./index-9247afbf.js";import{e as qe,C as fo,f as ho,g as go,h as vo,i as Mt,V as po,j as bo,k as Ut,l as mo,m as yo,n as xo,d as on,o as Te,p as ko,c as jt,q as Ht,r as wo,N as Co,a as No,s as yt,t as So,v as Vt,w as Ro}from"./node-fc0fdd90.js";import{e as Wt,a as _o,p as Ko,u as $o}from"./index-fac4ff4e.js";import{_ as Do}from"./_plugin-vue_export-helper-c27b6911.js";import"./jszip.min-571a1711.js";function ln(e){return typeof e=="string"?`s-${e}`:`n-${e}`}const To=j({name:"ChevronLeft",render(){return y("svg",{viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},y("path",{d:"M10.3536 3.14645C10.5488 3.34171 10.5488 3.65829 10.3536 3.85355L6.20711 8L10.3536 12.1464C10.5488 12.3417 10.5488 12.6583 10.3536 12.8536C10.1583 13.0488 9.84171 13.0488 9.64645 12.8536L5.14645 8.35355C4.95118 8.15829 4.95118 7.84171 5.14645 7.64645L9.64645 3.14645C9.84171 2.95118 10.1583 2.95118 10.3536 3.14645Z",fill:"currentColor"}))}}),Po=j({name:"Switcher",render(){return y("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32"},y("path",{d:"M12 8l10 8l-10 8z"}))}}),Lo=e=>{const{fontWeight:t,textColor1:c,textColor2:u,textColorDisabled:s,dividerColor:r,fontSize:g}=e;return{titleFontSize:g,titleFontWeight:t,dividerColor:r,titleTextColor:c,titleTextColorDisabled:s,fontSize:g,textColor:u,arrowColor:u,arrowColorDisabled:s,itemMargin:"16px 0 0 0",titlePadding:"16px 0 0 0"}},Eo={name:"Collapse",common:kt,self:Lo},Fo=Eo,Ao=D("collapse","width: 100%;",[D("collapse-item",`
2
2
  font-size: var(--n-font-size);
3
3
  color: var(--n-text-color);
4
4
  transition:
@@ -238,4 +238,4 @@ import{_ as zn,e as On,f as Bn}from"./ActionCard.vue_vue_type_script_setup_true_
238
238
  )`,"background-size":"1px 10px"}},null,-1),El=j({__name:"ScreenshotCard",props:{url:{},snapshot:{},rootNode:{},focusNode:{},onUpdateFocusNode:{type:Function,default:()=>()=>{}}},setup(e){const t=e,c=Q(),u=Q();Ce(()=>{if(!t.rootNode)return;const a=u.value,o=c.value;if(!a||!o)return;const f=o.getBoundingClientRect(),v=f.width/o.naturalWidth*o.naturalHeight,C=(f.height-v)/2,R=(a.clientX-f.left)/f.width*o.naturalWidth,k=(a.clientY-f.top-C)/v*o.naturalHeight,m=ko(t.snapshot.nodes,R,k);m&&t.onUpdateFocusNode(m)});const s=a=>`${a*100}%`,r=A(()=>{var C;const a=c.value,o=(C=t.focusNode)==null?void 0:C.attr;if(!t.focusNode||!a||!o)return"";const f=a.getBoundingClientRect(),v=f.width/a.naturalWidth*a.naturalHeight;return{left:`calc(${s(o.left/a.naturalWidth)} - 2px)`,width:`calc(${s((o.right-o.left)/a.naturalWidth)} + 2px)`,top:`calc(${s((o.top/a.naturalHeight*v+(f.height-v)/2)/f.height)} - 2px)`,height:`calc(${s((o.bottom-o.top)/a.naturalHeight*v/f.height)} + 2px)`}}),g=Q(!1),h=Q({ox:0,oy:0}),l=a=>{const o=c.value;if(!o)return;const f=o.getBoundingClientRect(),v=f.width/o.naturalWidth*o.naturalHeight,C=(f.height-v)/2,R=(a.clientX-f.left)/f.width*o.naturalWidth,k=(a.clientY-f.top-C)/v*o.naturalHeight;h.value={ox:R,oy:k},i.value={left:-(R-.1*o.naturalWidth)/o.naturalWidth*1e3+"px",top:-(k-.1*o.naturalWidth)/o.naturalWidth*1e3+"px"}},i=Q({left:"0",top:"0"});return(a,o)=>(M(),ge("div",Sl,[B("img",{ref_key:"imgRef",ref:c,src:a.url,onClick:o[0]||(o[0]=f=>u.value=f),"cursor-crosshair":"","h-full":"","object-contain":"",style:{"max-width":"max(35vw, 400px)"},onMouseover:o[1]||(o[1]=f=>g.value=!0),onMouseleave:o[2]||(o[2]=f=>g.value=!1),onMousemove:l},null,40,Rl),B("div",{style:bt(r.value),absolute:"","pointer-events-none":"","transition-all-300":"","b-1px":"","b-blue":"","b-solid":""},Kl,4),Gt(B("div",$l,[B("img",{src:a.url,"object-contain":"",absolute:"","left-0":"","top-0":"",style:bt(i.value),"w-1000px":""},null,12,Dl),B("div",Tl,te(`${h.value.ox.toFixed(0)},${h.value.oy.toFixed(0)}`),1),Pl,Ll],512),[[Jt,g.value]])]))}}),Fl={"w-480px":"","bg-white":"","b-1px":"","b-solid":"","b-gray-200":"","rounded-4px":"","p-8px":"",style:{"min-width":"max(25vw, 480px)"}},Al={flex:"","m-b-4px":""},Il=B("svg",{xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",viewBox:"0 0 32 32"},[B("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),zl=B("div",{"p-5px":""},null,-1),Ol={"break-all":""},Bl=B("div",{"p-l-8px":""},null,-1),Ml=j({__name:"SearchCard",props:{snapshot:{},rootNode:{},onUpdateFocusNode:{type:Function,default:()=>()=>{}}},setup(e){const t=e,c=Q(""),u=tn([]),s=Wt(()=>{if(!t.rootNode){ue.error("根节点不存在");return}const l=c.value.trim();if(l)if(g.value){const i=_o(()=>Ko(l),"选择器非法");if(u.find(o=>typeof o.selector=="object"&&o.selector.toString()==i.toString())){ue.warning("不可重复选择");return}const a=i.querySelectorAll(t.rootNode);if(a.length==0){ue.success("没有选择到节点");return}ue.success(`选择到 ${a.length} 个节点`),u.unshift({selector:i,results:a})}else{if(u.find(o=>typeof o.selector=="string"&&o.selector.toString()==l)){ue.warning("不可重复选择");return}const i=[],a=[t.rootNode];for(;a.length>0;){const o=a.pop();yt(o).includes(l)&&i.push(o),a.push(...[...o.children].reverse())}if(i.length==0){ue.success("没有搜索到节点");return}ue.success(`搜索到 ${i.length} 个节点`),u.unshift({selector:l,results:i})}}),r=Wt(async l=>{let i=Mn[t.snapshot.id];i&&(i=Et(i));let a=Yt[t.snapshot.id];a&&(a=Et(a));const o={id:t.snapshot.appId,name:t.snapshot.appName,groups:[{key:1,name:`[ChangeMe]规则名称-${So().format("YYYY-MM-DD HH:mm:ss")}`,desc:"[ChangeMe]本规则由GKD网页端审查工具生成",rules:[{activityIds:t.snapshot.activityId,matches:l.toString(),exampleUrls:i,snapshotUrls:a}]}]};$e(JSON.stringify(o,void 0,2))}),g=Q(!0),h=window.innerWidth/100;return(l,i)=>(M(),ne(fn,{initialValue:{top:75,right:Math.max(315,12*h+135)},class:"z-1"},{default:S(({onRef:a})=>[B("div",Fl,[B("div",Al,[_(b(wo),{value:g.value,"onUpdate:value":i[0]||(i[0]=o=>g.value=o)},{default:S(()=>[_(b(jt),null,{default:S(()=>[_(b(Ht),{value:!1},{default:S(()=>[H(" 字符搜索 ")]),_:1}),_(b(Ht),{value:!0},{default:S(()=>[H(" 选择器查询 ")]),_:1})]),_:1})]),_:1},8,["value"]),B("div",{"flex-1":"","cursor-move":"",ref:a},null,512)]),_(b(No),null,{default:S(()=>[_(b(Co),{value:c.value,"onUpdate:value":i[1]||(i[1]=o=>c.value=o),placeholder:g.value?"请输入选择器":"请输入字符",onKeyup:so(b(s),["enter"]),inputProps:{class:"gkd_code"}},null,8,["value","placeholder","onKeyup"]),_(b(tt),{onClick:b(s)},{icon:S(()=>[_(b(on),null,{default:S(()=>[Il]),_:1})]),_:1},8,["onClick"])]),_:1}),zl,_(b(zo),null,{default:S(()=>[(M(!0),ge(ot,null,mt(b(u),(o,f)=>(M(),ne(b(Mo),{key:o.selector.toString()},{header:S(()=>[B("span",Ol,te(o.selector.toString()),1)]),"header-extra":S(()=>[typeof o.selector=="object"?(M(),ne(b(tt),{key:0,size:"small",onClick:Bt(v=>b(r)(o.selector),["stop"])},{default:S(()=>[H(" 生成规则 ")]),_:2},1032,["onClick"])):De("",!0),Bl,_(b(tt),{size:"small",onClick:Bt(v=>b(u).splice(f,1),["stop"])},{default:S(()=>[H(" 删除 ")]),_:2},1032,["onClick"])]),default:S(()=>[_(b(jt),{style:{"max-height":"400px","overflow-y":"scroll","padding-bottom":"10px"}},{default:S(()=>[(M(!0),ge(ot,null,mt(o.results,v=>(M(),ne(b(tt),{key:v.id,onClick:C=>l.onUpdateFocusNode(v),size:"small"},{default:S(()=>[H(te(b(yt)(v)),1)]),_:2},1032,["onClick"]))),128))]),_:2},1024)]),_:2},1024))),128))]),_:1})])]),_:1},8,["initialValue"]))}}),Ul={flex:"","flex-col":""},jl=j({__name:"WindowCard",props:{snapshot:{},rootNode:{},focusNode:{},onUpdateFocusNode:{type:Function,default:()=>()=>{}}},setup(e){const t=e,c=Q([]);Ce(async()=>{var o;if(!t.focusNode)return;const l=t.focusNode.id;let i=t.focusNode.parent;if(!i)return;const a=new Set(c.value);for(;i;)a.add(i.id),i=i.parent;a.size!=c.value.length&&(c.value=[...a],await nt(),(o=u.value)==null||o.scrollTo({key:l}))});const u=Q(),s=(l,i,a)=>{},r=(l,i)=>{var a;return i.id===((a=t.focusNode)==null?void 0:a.id)},g=l=>{var i;return{onClick:()=>{t.onUpdateFocusNode(l.option)},style:{color:l.option.id==((i=t.focusNode)==null?void 0:i.id)?"#00F":void 0}}},h=l=>yt(l.option);return(l,i)=>(M(),ge("div",Ul,[_(b(an),{size:"small",striped:"",singleLine:!1,class:"table-fixed",themeOverrides:{thPaddingSmall:"2px 4px",tdPaddingSmall:"2px 4px"}},{default:S(()=>[_(b(Jo),null,{default:S(()=>[_(b(xt),null,{default:S(()=>[_(b(_e),{class:"w-140px"},{default:S(()=>[H(" Device ")]),_:1}),_(b(_e),{class:"w-100px"},{default:S(()=>[H(" Name ")]),_:1}),_(b(_e),{class:"w-100px"},{default:S(()=>[H(" VersionName ")]),_:1}),_(b(_e),{class:"w-100px"},{default:S(()=>[H(" VersionCode ")]),_:1}),_(b(_e),{class:"w-150px"},{default:S(()=>[H(" AppId ")]),_:1}),_(b(_e),null,{default:S(()=>[H(" ActivityId ")]),_:1}),_(b(_e),{class:"w-175px"},{default:S(()=>[H(" 操作 ")]),_:1})]),_:1})]),_:1}),_(b(dn),null,{default:S(()=>[_(b(xt),null,{default:S(()=>[_(b(pe),{class:"whitespace-nowrap"},{default:S(()=>[H(te(`${b(Vt)(l.snapshot).manufacturer} Android ${b(Vt)(l.snapshot).release||""}`),1)]),_:1}),_(b(pe),{class:"whitespace-nowrap",onClick:i[0]||(i[0]=a=>b($e)(l.snapshot.appName))},{default:S(()=>[_(b(Te),null,{default:S(()=>[H(te(l.snapshot.appName),1)]),_:1})]),_:1}),_(b(pe),{class:"whitespace-nowrap",onClick:i[1]||(i[1]=a=>b($e)(l.snapshot.appVersionName))},{default:S(()=>[_(b(Te),null,{default:S(()=>[H(te(l.snapshot.appVersionName),1)]),_:1})]),_:1}),_(b(pe),{class:"whitespace-nowrap",onClick:i[2]||(i[2]=a=>b($e)(l.snapshot.appVersionCode.toString()))},{default:S(()=>[_(b(Te),null,{default:S(()=>[H(te(l.snapshot.appVersionCode),1)]),_:1})]),_:1}),_(b(pe),{class:"whitespace-nowrap",onClick:i[3]||(i[3]=a=>b($e)(l.snapshot.appId))},{default:S(()=>[_(b(Te),null,{default:S(()=>[H(te(l.snapshot.appId),1)]),_:1})]),_:1}),_(b(pe),{onClick:i[4]||(i[4]=a=>b($e)(l.snapshot.activityId)),class:"break-words"},{default:S(()=>[_(b(Te),null,{default:S(()=>[H(te(l.snapshot.activityId),1)]),_:1})]),_:1}),_(b(pe),null,{default:S(()=>[nn(l.$slots,"default",{},void 0,!0)]),_:3})]),_:3})]),_:3})]),_:3}),_(b(hl),{ref_key:"treeRef",ref:u,virtualScroll:"",showLine:"","onUpdate:checkedKeys":s,keyField:"id",defaultExpandedKeys:c.value,data:[l.rootNode],filter:r,nodeProps:g,renderLabel:h,style:{"--n-border-color":"rgb(239, 239, 245)"}},null,8,["defaultExpandedKeys","data","filter","nodeProps","renderLabel"])]))}});const Hl=Do(jl,[["__scopeId","data-v-102e2160"]]),Vl={"h-full":"",flex:"","gap-5px":"","p-5px":"","box-border":""},Zl=j({__name:"SnapshotPage",setup(e){const t=co(),c=uo(),u=$o(),s=A(()=>String(t.params.snapshotId||"")),r=A(()=>{const o=Number(t.query.showSize||"");return!Number.isSafeInteger(o)||o<=0?2e3:o}),g=Q(""),h=Q();Ce(async()=>{const o=await Ft.getItem(s.value);if(!o){ue.error("快照数据缺失");return}Un()&&setTimeout(async()=>{On(o),Yt[o.id]||Bn(await Ft.getItem(s.value))},1e3),o.nodes.length>r.value&&(ue.warning(`当前展示节点数量为${r.value}
239
239
  之后的${o.nodes.length-r.value}个节点将被丢弃
240
240
  使用showSize查询参数可以修改展示数量`),o.nodes=o.nodes.slice(0,r.value));const f=await jn.getItem(s.value);if(!f){ue.create("截屏数据缺失");return}g.value=URL.createObjectURL(new Blob([f],{type:"image/png"})),h.value=o,l.value=Ro(o.nodes),u.value="快照-"+o.appName||o.appId,await At(500),i.value||(i.value=l.value)});const l=Q(),i=Q(),a=async()=>{ue.success("删除成功,即将回到首页"),await At(2e3),c.replace({path:"/"})};return(o,f)=>(M(),ge("div",Vl,[g.value&&h.value?(M(),ne(El,{key:0,url:g.value,snapshot:h.value,rootNode:l.value,focusNode:i.value,onUpdateFocusNode:f[0]||(f[0]=v=>i.value=v)},null,8,["url","snapshot","rootNode","focusNode"])):De("",!0),h.value&&l.value?(M(),ne(Hl,{key:1,rootNode:l.value,snapshot:h.value,focusNode:i.value,onUpdateFocusNode:f[1]||(f[1]=v=>i.value=v),class:"flex-1"},{default:S(()=>[h.value?(M(),ne(zn,{key:0,snapshot:h.value,onDelete:a,showPreview:!1},null,8,["snapshot"])):De("",!0)]),_:1},8,["rootNode","snapshot","focusNode"])):De("",!0),i.value?(M(),ne(Nl,{key:2,focusNode:i.value},null,8,["focusNode"])):De("",!0),l.value?(M(),ne(Ml,{key:3,snapshot:h.value,rootNode:l.value,onUpdateFocusNode:f[2]||(f[2]=v=>i.value=v)},null,8,["snapshot","rootNode"])):De("",!0)]))}});export{Zl as default};
241
- //# sourceMappingURL=SnapshotPage-1aeb4b79.js.map
241
+ //# sourceMappingURL=SnapshotPage-57d26603.js.map