@vitejs/devtools-vite 0.0.0-alpha.1 → 0.0.0-alpha.10

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 (89) hide show
  1. package/dist/{dirs-Z7VQHyIZ.js → dirs-K_XnRVOr.js} +1 -1
  2. package/dist/dirs.js +1 -1
  3. package/dist/index.d.ts +52 -24
  4. package/dist/index.js +107 -62
  5. package/dist/nitro.json +2 -2
  6. package/dist/public/200.html +1 -1
  7. package/dist/public/404.html +1 -1
  8. package/dist/public/_nuxt/17ealR8P.js +1 -0
  9. package/dist/public/_nuxt/2OALqkc2.js +1 -0
  10. package/dist/public/_nuxt/AuXMpmu_.js +1 -0
  11. package/dist/public/_nuxt/B-LCQpq9.js +2 -0
  12. package/dist/public/_nuxt/B-MkobAt.js +1 -0
  13. package/dist/public/_nuxt/BFwdTbGt.js +1 -0
  14. package/dist/public/_nuxt/BQPGP7j8.js +1 -0
  15. package/dist/public/_nuxt/BWDYSEh7.js +11 -0
  16. package/dist/public/_nuxt/B_mZ82Ef.js +1 -0
  17. package/dist/public/_nuxt/BkcJ9YuP.js +33 -0
  18. package/dist/public/_nuxt/Bs1eUuZt.js +1 -0
  19. package/dist/public/_nuxt/C2Zn9dj_.js +1 -0
  20. package/dist/public/_nuxt/CIZ7KSXz.js +1 -0
  21. package/dist/public/_nuxt/CbzAqNxs.js +1 -0
  22. package/dist/public/_nuxt/ChaI2u-J.js +1 -0
  23. package/dist/public/_nuxt/CmZYssbg.js +1 -0
  24. package/dist/public/_nuxt/Cnct9GAr.js +1 -0
  25. package/dist/public/_nuxt/Cq2KqeQT.js +1 -0
  26. package/dist/public/_nuxt/Cql2HFZJ.js +1 -0
  27. package/dist/public/_nuxt/D-ZnEyqr.js +1 -0
  28. package/dist/public/_nuxt/D2Zr4_9a.js +1 -0
  29. package/dist/public/_nuxt/D7AVRXB9.js +1 -0
  30. package/dist/public/_nuxt/{BQ-NBLhA.js → DL1ysgP5.js} +1 -1
  31. package/dist/public/_nuxt/DP5rIU2b.js +1 -0
  32. package/dist/public/_nuxt/DQtLZa7C.js +1 -0
  33. package/dist/public/_nuxt/DcamI1aQ.js +1 -0
  34. package/dist/public/_nuxt/HzvsUJ0F.js +1 -0
  35. package/dist/public/_nuxt/Jdu9jmuG.js +1 -0
  36. package/dist/public/_nuxt/{IrMnfQaU.js → LMGHh3hZ.js} +1 -1
  37. package/dist/public/_nuxt/{BdGMcGSQ.js → SO3ppn9m.js} +1 -1
  38. package/dist/public/_nuxt/X7aOo9pb.js +1 -0
  39. package/dist/public/_nuxt/_hSlj5r4.js +1 -0
  40. package/dist/public/_nuxt/builds/latest.json +1 -1
  41. package/dist/public/_nuxt/builds/meta/a75cfc75-2758-4449-8135-5151dc9f3c34.json +1 -0
  42. package/dist/public/_nuxt/diff.worker-DCsgdfuV.js +10 -0
  43. package/dist/public/_nuxt/entry.CxcRHwcK.css +1 -0
  44. package/dist/public/_nuxt/error-404.CCdr3eE4.css +1 -0
  45. package/dist/public/_nuxt/error-500.D-vBsHK_.css +1 -0
  46. package/dist/public/_nuxt/lxg2Cb0s.js +1 -0
  47. package/dist/public/_nuxt/mIZU4Om9.js +1 -0
  48. package/dist/public/_nuxt/qkzn-X0p.js +1 -0
  49. package/dist/public/_nuxt/vzoJapJG.js +1 -0
  50. package/dist/public/index.html +1 -1
  51. package/package.json +16 -16
  52. package/dist/public/_nuxt/B1Vd6rqS.js +0 -1
  53. package/dist/public/_nuxt/B2YLpys2.js +0 -1
  54. package/dist/public/_nuxt/B2fBtupD.js +0 -1
  55. package/dist/public/_nuxt/BBRXmiYk.js +0 -1
  56. package/dist/public/_nuxt/BL9XEsp7.js +0 -1
  57. package/dist/public/_nuxt/BO9hKuA-.js +0 -1
  58. package/dist/public/_nuxt/BcAccMwu.js +0 -1
  59. package/dist/public/_nuxt/BdSZoQls.js +0 -1
  60. package/dist/public/_nuxt/BjbaCuBE.js +0 -1
  61. package/dist/public/_nuxt/Bjr51Ks8.js +0 -1
  62. package/dist/public/_nuxt/BvuqupwD.js +0 -1
  63. package/dist/public/_nuxt/C2X_oPur.js +0 -1
  64. package/dist/public/_nuxt/C5J04JCq.js +0 -1
  65. package/dist/public/_nuxt/CQNn9qP2.js +0 -1
  66. package/dist/public/_nuxt/CS0-317H.js +0 -1
  67. package/dist/public/_nuxt/CciM0jEL.js +0 -1
  68. package/dist/public/_nuxt/CcwEApAr.js +0 -1
  69. package/dist/public/_nuxt/Ci9NHG69.js +0 -1
  70. package/dist/public/_nuxt/D1yk44lc.js +0 -1
  71. package/dist/public/_nuxt/DKn-LAPX.js +0 -11
  72. package/dist/public/_nuxt/DS2MKblJ.js +0 -1
  73. package/dist/public/_nuxt/DSjlpmm-.js +0 -1
  74. package/dist/public/_nuxt/DZeYNBxL.js +0 -1
  75. package/dist/public/_nuxt/D_Sk_I-u.js +0 -1
  76. package/dist/public/_nuxt/Dl8iHwQo.js +0 -2
  77. package/dist/public/_nuxt/Z5tyTJaP.js +0 -1
  78. package/dist/public/_nuxt/builds/meta/6f75d3aa-4cfc-4ed3-af3a-9078b8defb8f.json +0 -1
  79. package/dist/public/_nuxt/cRQbgMUp.js +0 -1
  80. package/dist/public/_nuxt/diff.worker-BXxwMoGc.js +0 -10
  81. package/dist/public/_nuxt/entry.Dufqy7qJ.css +0 -1
  82. package/dist/public/_nuxt/error-404.yUUAZDjV.css +0 -1
  83. package/dist/public/_nuxt/error-500.BHZzZRS-.css +0 -1
  84. package/dist/public/_nuxt/pXptjyzi.js +0 -1
  85. package/dist/public/_nuxt/rwBDQBzn.js +0 -1
  86. package/dist/public/_nuxt/tS5wJZMm.js +0 -1
  87. package/dist/public/_nuxt/yfNgynAH.js +0 -33
  88. package/dist/public/_nuxt/z9pSC1xM.js +0 -1
  89. /package/dist/public/_nuxt/{l47FwQA-.js → D03ETnho.js} +0 -0
@@ -4,4 +4,4 @@ import { fileURLToPath } from "node:url";
4
4
  const clientPublicDir = fileURLToPath(new URL("../dist/public", import.meta.url));
5
5
 
6
6
  //#endregion
7
- export { clientPublicDir };
7
+ export { clientPublicDir as t };
package/dist/dirs.js CHANGED
@@ -1,3 +1,3 @@
1
- import { clientPublicDir } from "./dirs-Z7VQHyIZ.js";
1
+ import { t as clientPublicDir } from "./dirs-K_XnRVOr.js";
2
2
 
3
3
  export { clientPublicDir };
package/dist/index.d.ts CHANGED
@@ -1,25 +1,54 @@
1
1
  import { Plugin, ResolvedConfig, ViteDevServer } from "vite";
2
2
 
3
- //#region ../devtools-kit/src/types/rpc-augments.d.ts
3
+ //#region ../kit/src/types/rpc-augments.d.ts
4
4
 
5
5
  /**
6
6
  * To be extended
7
7
  */
8
8
  interface DevToolsRpcServerFunctions {}
9
9
  //#endregion
10
- //#region ../devtools-kit/src/types/utils.d.ts
10
+ //#region ../kit/src/types/utils.d.ts
11
11
  type Thenable<T> = T | Promise<T>;
12
12
  //#endregion
13
- //#region ../devtools-kit/src/types/views.d.ts
13
+ //#region ../kit/src/types/views.d.ts
14
14
  interface DevToolsDockHost {
15
+ views: Map<string, DevToolsDockEntry>;
15
16
  register: (entry: DevToolsDockEntry) => void;
17
+ update: (entry: DevToolsDockEntry) => void;
16
18
  values: () => DevToolsDockEntry[];
17
19
  }
20
+ interface DevToolsViewHost {
21
+ /**
22
+ * @internal
23
+ */
24
+ buildStaticDirs: {
25
+ baseUrl: string;
26
+ distDir: string;
27
+ }[];
28
+ /**
29
+ * Helper to host static files
30
+ * - In `dev` mode, it will register middleware to `viteServer.middlewares` to host the static files
31
+ * - In `build` mode, it will copy the static files to the dist directory
32
+ */
33
+ hostStatic: (baseUrl: string, distDir: string) => void;
34
+ }
18
35
  interface DevToolsDockEntryBase {
19
36
  id: string;
20
37
  title: string;
21
38
  icon: string;
22
39
  }
40
+ interface ClientScriptEntry {
41
+ /**
42
+ * The filepath or module name to import from
43
+ */
44
+ importFrom: string;
45
+ /**
46
+ * The name to import the module as
47
+ *
48
+ * @default 'default'
49
+ */
50
+ importName?: string;
51
+ }
23
52
  interface DevToolsViewIframe extends DevToolsDockEntryBase {
24
53
  type: 'iframe';
25
54
  url: string;
@@ -29,23 +58,26 @@ interface DevToolsViewIframe extends DevToolsDockEntryBase {
29
58
  * When not provided, it would be treated as a unique frame.
30
59
  */
31
60
  frameId?: string;
61
+ /**
62
+ * Optional script to import into the iframe
63
+ */
64
+ import?: ClientScriptEntry;
32
65
  }
33
66
  interface DevToolsViewWebComponent extends DevToolsDockEntryBase {
34
67
  type: 'webcomponent';
35
- from: string;
36
- import: string;
68
+ import: ClientScriptEntry;
37
69
  }
38
70
  interface DevToolsViewAction extends DevToolsDockEntryBase {
39
71
  type: 'action';
40
- importFrom: string;
41
- /**
42
- * @default 'default'
43
- */
44
- importName?: string;
72
+ import: ClientScriptEntry;
45
73
  }
46
- type DevToolsDockEntry = DevToolsViewIframe | DevToolsViewWebComponent | DevToolsViewAction;
74
+ interface DevToolsViewCustomRender extends DevToolsDockEntryBase {
75
+ type: 'custom-render';
76
+ import: ClientScriptEntry;
77
+ }
78
+ type DevToolsDockEntry = DevToolsViewIframe | DevToolsViewWebComponent | DevToolsViewAction | DevToolsViewCustomRender;
47
79
  //#endregion
48
- //#region ../devtools-kit/src/types/vite-plugin.d.ts
80
+ //#region ../kit/src/types/vite-plugin.d.ts
49
81
  interface DevToolsCapabilities {
50
82
  rpc?: boolean;
51
83
  views?: boolean;
@@ -64,19 +96,14 @@ interface DevToolsNodeContext {
64
96
  readonly viteServer?: ViteDevServer;
65
97
  rpc: RpcFunctionsHost;
66
98
  docks: DevToolsDockHost;
67
- /**
68
- * Helper to host static files
69
- * - In `dev` mode, it will register middleware to `viteServer.middlewares` to host the static files
70
- * - In `build` mode, it will copy the static files to the dist directory
71
- */
72
- hostStatic: (baseUrl: string, distDir: string) => void;
73
- staticDirs: {
74
- baseUrl: string;
75
- distDir: string;
76
- }[];
99
+ views: DevToolsViewHost;
100
+ utils: DevToolsNodeUtils;
101
+ }
102
+ interface DevToolsNodeUtils {
103
+ clientEntryFromSimpleFunction: (fn: () => void) => ClientScriptEntry;
77
104
  }
78
105
  //#endregion
79
- //#region ../devtools-kit/src/types/rpc.d.ts
106
+ //#region ../kit/src/types/rpc.d.ts
80
107
  /**
81
108
  * Type of the RPC function,
82
109
  * - static: A function that returns a static data (can be cached and dumped)
@@ -89,6 +116,7 @@ interface RpcFunctionsHost {
89
116
  readonly functions: DevToolsRpcServerFunctions;
90
117
  readonly definitions: Map<string, RpcFunctionDefinition<string, any, any, any>>;
91
118
  register: (fn: RpcFunctionDefinition<string, any, any, any>) => void;
119
+ update: (fn: RpcFunctionDefinition<string, any, any, any>) => void;
92
120
  }
93
121
  interface RpcFunctionSetupResult<ARGS extends any[], RETURN = void> {
94
122
  handler: (...args: ARGS) => RETURN;
@@ -102,7 +130,7 @@ interface RpcFunctionDefinition<NAME extends string, TYPE extends RpcFunctionTyp
102
130
  __promise?: Thenable<RpcFunctionSetupResult<ARGS, RETURN>>;
103
131
  }
104
132
  //#endregion
105
- //#region ../devtools-kit/src/types/vite-augment.d.ts
133
+ //#region ../kit/src/types/vite-augment.d.ts
106
134
  declare module 'vite' {
107
135
  interface Plugin {
108
136
  devtools?: DevToolsPluginOptions;
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { clientPublicDir } from "./dirs-Z7VQHyIZ.js";
1
+ import { t as clientPublicDir } from "./dirs-K_XnRVOr.js";
2
2
  import { createRequire } from "node:module";
3
3
  import { defineRpcFunction } from "@vitejs/devtools-kit";
4
4
  import fs, { existsSync } from "node:fs";
@@ -974,8 +974,7 @@ var RolldownEventsReader = class RolldownEventsReader {
974
974
  async read() {
975
975
  const { mtime, size } = await fs.promises.stat(this.filepath);
976
976
  if (mtime.getTime() <= this.lastTimestamp) return;
977
- const stream = fs.createReadStream(this.filepath, { start: this.lastBytes });
978
- await parseJsonStreamWithConcatArrays(stream, (event) => {
977
+ await parseJsonStreamWithConcatArrays(fs.createReadStream(this.filepath, { start: this.lastBytes }), (event) => {
979
978
  this.manager.handleEvent(event);
980
979
  return event;
981
980
  });
@@ -998,8 +997,9 @@ var RolldownLogsManager = class {
998
997
  this.dir = dir;
999
998
  }
1000
999
  async list() {
1000
+ if (!existsSync(this.dir)) return [];
1001
1001
  const sessions = await fs$1.readdir(this.dir, { withFileTypes: true });
1002
- return await Promise.all(sessions.filter((d) => d.isDirectory()).map(async (d) => {
1002
+ return await Promise.all(sessions.filter((d) => d.isDirectory()).filter((d) => existsSync(join(this.dir, d.name, "meta.json"))).map(async (d) => {
1003
1003
  const reader = RolldownEventsReader.get(join(this.dir, d.name, "meta.json"));
1004
1004
  await reader.read();
1005
1005
  const meta = reader.manager.events[reader.manager.events.length - 1];
@@ -1028,9 +1028,10 @@ const weakMap = /* @__PURE__ */ new WeakMap();
1028
1028
  function getLogsManager(context) {
1029
1029
  let manager = weakMap.get(context);
1030
1030
  if (!manager) {
1031
- const dir = [join(context.cwd, ".rolldown"), join(process.cwd(), ".rolldown")].find((dir$1) => existsSync(dir$1));
1032
- if (!dir) throw new Error("Rolldown logs directory not found");
1033
- manager = new RolldownLogsManager(dir);
1031
+ const dirs = [join(context.cwd, ".rolldown"), join(process.cwd(), ".rolldown")];
1032
+ const dir = dirs.find((dir$1) => existsSync(dir$1));
1033
+ if (!dir) console.warn("[Vite DevTools] Rolldown logs directory `.rolldown` not found, you might want to run build with `build.rolldownOptions.debug` enabled first.");
1034
+ manager = new RolldownLogsManager(dir ?? dirs[0]);
1034
1035
  }
1035
1036
  return manager;
1036
1037
  }
@@ -1052,13 +1053,11 @@ const rolldownGetAssetDetails = defineRpcFunction({
1052
1053
  if (asset.chunk_id === null) return { asset };
1053
1054
  const assetChunkId = asset.chunk_id;
1054
1055
  const chunk = chunks.get(assetChunkId);
1055
- const importers = chunkList.filter((mod) => mod.imports.some((i) => i.chunk_id === assetChunkId)).map((c) => assetList.find((a) => a.chunk_id === c.chunk_id));
1056
- const imports = chunk.imports.map((c) => assetList.find((a) => a.chunk_id === c.chunk_id));
1057
1056
  return {
1058
1057
  asset,
1059
1058
  chunk,
1060
- importers,
1061
- imports
1059
+ importers: chunkList.filter((mod) => mod.imports.some((i) => i.chunk_id === assetChunkId)).map((c) => assetList.find((a) => a.chunk_id === c.chunk_id)),
1060
+ imports: chunk.imports.map((c) => assetList.find((a) => a.chunk_id === c.chunk_id))
1062
1061
  };
1063
1062
  } };
1064
1063
  }
@@ -1078,6 +1077,21 @@ const rolldownGetAssetsList = defineRpcFunction({
1078
1077
  }
1079
1078
  });
1080
1079
 
1080
+ //#endregion
1081
+ //#region src/shared/utils/guess-chunk-name.ts
1082
+ function guessChunkName(chunk) {
1083
+ if (chunk.name) return chunk.name;
1084
+ if (chunk.modules.length === 1) return `[${simplifyModuleName(chunk.modules[0])}]`;
1085
+ if (chunk.modules.length > 1) return `[${simplifyModuleName(`${chunk.modules[0]}`)}_${chunk.modules.length}]`;
1086
+ return "[unnamed]";
1087
+ }
1088
+ function simplifyModuleName(module$1) {
1089
+ let parts = module$1.replace(/^.*(\.pnpm|node_modules|src|app|packages)\//gi, "").replace(/\b(index|main|dist|test|component|components)\b/gi, "").replace(/\/+/g, "/").replace(/\?.*$/, "").replace(/\.\w+$/, "").replace(/\W/g, "_").replace(/_+/g, "_").replace(/^_+|_+$/g, "").replace(/([a-z])([A-Z])/g, "$1_$2").toLowerCase().split("_").filter(Boolean);
1090
+ parts = Array.from(new Set(parts));
1091
+ if (parts.length > 5) parts = parts.slice(0, 5);
1092
+ return parts.join("_");
1093
+ }
1094
+
1081
1095
  //#endregion
1082
1096
  //#region src/node/rpc/functions/rolldown-get-chunk-info.ts
1083
1097
  const rolldownGetChunkInfo = defineRpcFunction({
@@ -1086,7 +1100,9 @@ const rolldownGetChunkInfo = defineRpcFunction({
1086
1100
  setup: (context) => {
1087
1101
  const manager = getLogsManager(context);
1088
1102
  return { handler: async ({ session, id }) => {
1089
- return (await manager.loadSession(session)).manager.chunks.get(id);
1103
+ const chunk = (await manager.loadSession(session)).manager.chunks.get(id);
1104
+ if (chunk && !chunk.name) chunk.name = guessChunkName(chunk);
1105
+ return chunk;
1090
1106
  } };
1091
1107
  }
1092
1108
  });
@@ -1100,7 +1116,11 @@ const rolldownGetChunksGraph = defineRpcFunction({
1100
1116
  const manager = getLogsManager(context);
1101
1117
  return { handler: async ({ session }) => {
1102
1118
  const reader = await manager.loadSession(session);
1103
- return Array.from(reader.manager.chunks.values());
1119
+ const chunks = Array.from(reader.manager.chunks.values());
1120
+ chunks.forEach((chunk) => {
1121
+ if (chunk && !chunk.name) chunk.name = guessChunkName(chunk);
1122
+ });
1123
+ return chunks;
1104
1124
  } };
1105
1125
  }
1106
1126
  });
@@ -1209,13 +1229,65 @@ function getModuleNameFromPath(path) {
1209
1229
  return match.split("/")[0];
1210
1230
  }
1211
1231
  function getPackageDirPath(path) {
1212
- const nodeModulesPrefix = path.replace(/%2F/g, "/").replace(/\\/g, "/").match(/^(.+\/node_modules\/)/)?.[1];
1213
- const packageName = getModuleNameFromPath(path);
1214
- return nodeModulesPrefix + packageName;
1232
+ return path.replace(/%2F/g, "/").replace(/\\/g, "/").match(/^(.+\/node_modules\/)/)?.[1] + getModuleNameFromPath(path);
1215
1233
  }
1216
1234
 
1217
1235
  //#endregion
1218
1236
  //#region src/node/rpc/functions/rolldown-get-packages.ts
1237
+ async function getPackagesManifest(reader) {
1238
+ const modulesMap = reader.manager.modules;
1239
+ const chunks = Array.from(reader.manager.chunks.values());
1240
+ const packagesManifest = /* @__PURE__ */ new Map();
1241
+ const getImporters = (path, packageDir, visited = /* @__PURE__ */ new Set()) => {
1242
+ const importers = modulesMap.get(path)?.importers || [];
1243
+ const result = [];
1244
+ for (const importer of importers) {
1245
+ if (visited.has(importer)) continue;
1246
+ visited.add(importer);
1247
+ if ((modulesMap.get(importer)?.imports?.map((i) => i.module_id) || []).some((i) => getPackageDirPath(i) === packageDir)) result.push(importer);
1248
+ result.push(...getImporters(importer, packageDir, visited));
1249
+ }
1250
+ return result;
1251
+ };
1252
+ const packages = chunks.map((chunk) => chunk.modules.map((module$1) => module$1)).flat().filter(isNodeModulePath).map((p) => {
1253
+ const moduleBuildMetrics = modulesMap.get(p)?.build_metrics;
1254
+ return {
1255
+ path: p,
1256
+ dir: getPackageDirPath(p),
1257
+ transformedCodeSize: moduleBuildMetrics?.transforms[moduleBuildMetrics?.transforms.length - 1]?.transformed_code_size ?? 0
1258
+ };
1259
+ });
1260
+ await Promise.all(packages.map(async (p) => {
1261
+ const manifest = await readProjectManifestOnly(p.dir);
1262
+ const packageKey = `${manifest.name}@${manifest.version}`;
1263
+ const packageInfo = packagesManifest.get(packageKey);
1264
+ const importers = getImporters(p.path, p.dir).map((i) => ({
1265
+ path: i,
1266
+ version: ""
1267
+ }));
1268
+ if (packageInfo) packagesManifest.set(packageKey, {
1269
+ ...packageInfo,
1270
+ files: [...packageInfo.files, {
1271
+ path: p.path,
1272
+ transformedCodeSize: p.transformedCodeSize,
1273
+ importers
1274
+ }],
1275
+ transformedCodeSize: packageInfo.transformedCodeSize + p.transformedCodeSize
1276
+ });
1277
+ else packagesManifest.set(packageKey, {
1278
+ name: manifest.name,
1279
+ version: manifest.version,
1280
+ dir: p.dir,
1281
+ files: [{
1282
+ path: p.path,
1283
+ transformedCodeSize: p.transformedCodeSize,
1284
+ importers
1285
+ }],
1286
+ transformedCodeSize: p.transformedCodeSize
1287
+ });
1288
+ }));
1289
+ return packagesManifest;
1290
+ }
1219
1291
  const rolldownGetPackages = defineRpcFunction({
1220
1292
  name: "vite:rolldown:get-packages",
1221
1293
  type: "query",
@@ -1223,50 +1295,9 @@ const rolldownGetPackages = defineRpcFunction({
1223
1295
  const manager = getLogsManager(context);
1224
1296
  return { handler: async ({ session }) => {
1225
1297
  const reader = await manager.loadSession(session);
1226
- const chunks = Array.from(reader.manager.chunks.values());
1227
1298
  const modulesMap = reader.manager.modules;
1228
1299
  const duplicatePackagesMap = /* @__PURE__ */ new Map();
1229
- const packagesManifest = /* @__PURE__ */ new Map();
1230
- const packages = chunks.map((chunk) => chunk.modules.map((module$1) => module$1)).flat().filter(isNodeModulePath).map((p) => {
1231
- const moduleBuildMetrics = modulesMap.get(p)?.build_metrics;
1232
- return {
1233
- path: p,
1234
- dir: getPackageDirPath(p),
1235
- transformedCodeSize: moduleBuildMetrics?.transforms[moduleBuildMetrics?.transforms.length - 1]?.transformed_code_size ?? 0
1236
- };
1237
- });
1238
- await Promise.all(packages.map(async (p) => {
1239
- const manifest = await readProjectManifestOnly(p.dir);
1240
- const packageKey = `${manifest.name}@${manifest.version}`;
1241
- const packageInfo = packagesManifest.get(packageKey);
1242
- const module$1 = modulesMap.get(p.path);
1243
- if (packageInfo) packagesManifest.set(packageKey, {
1244
- ...packageInfo,
1245
- files: [...packageInfo.files, {
1246
- path: p.path,
1247
- transformedCodeSize: p.transformedCodeSize,
1248
- importers: module$1?.importers?.map((i) => ({
1249
- path: i,
1250
- version: ""
1251
- })) ?? []
1252
- }],
1253
- transformedCodeSize: packageInfo.transformedCodeSize + p.transformedCodeSize
1254
- });
1255
- else packagesManifest.set(packageKey, {
1256
- name: manifest.name,
1257
- version: manifest.version,
1258
- dir: p.dir,
1259
- files: [{
1260
- path: p.path,
1261
- transformedCodeSize: p.transformedCodeSize,
1262
- importers: module$1?.importers?.map((i) => ({
1263
- path: i,
1264
- version: ""
1265
- })) ?? []
1266
- }],
1267
- transformedCodeSize: p.transformedCodeSize
1268
- });
1269
- }));
1300
+ const packagesManifest = await getPackagesManifest(reader);
1270
1301
  return (await Promise.all(Array.from(packagesManifest.values()).map((p) => {
1271
1302
  duplicatePackagesMap.set(p.name, (duplicatePackagesMap.get(p.name) ?? 0) + 1);
1272
1303
  return {
@@ -1299,6 +1330,19 @@ const rolldownGetPackages = defineRpcFunction({
1299
1330
  }
1300
1331
  });
1301
1332
 
1333
+ //#endregion
1334
+ //#region src/node/rpc/functions/rolldown-get-package-details.ts
1335
+ const rolldownGetPackageDetails = defineRpcFunction({
1336
+ name: "vite:rolldown:get-package-details",
1337
+ type: "query",
1338
+ setup: (context) => {
1339
+ const manager = getLogsManager(context);
1340
+ return { handler: async ({ session, id }) => {
1341
+ return (await getPackagesManifest(await manager.loadSession(session))).get(id);
1342
+ } };
1343
+ }
1344
+ });
1345
+
1302
1346
  //#endregion
1303
1347
  //#region src/node/rpc/functions/rolldown-get-plugin-details.ts
1304
1348
  const rolldownGetPluginDetails = defineRpcFunction({
@@ -1436,24 +1480,25 @@ const rpcFunctions = [
1436
1480
  rolldownGetPluginDetails,
1437
1481
  rolldownGetSessionCompareSummary,
1438
1482
  rolldownGetChunkInfo,
1439
- rolldownGetPackages
1483
+ rolldownGetPackages,
1484
+ rolldownGetPackageDetails
1440
1485
  ];
1441
1486
 
1442
1487
  //#endregion
1443
1488
  //#region src/node/plugin.ts
1444
1489
  function DevToolsViteUI() {
1445
1490
  return {
1446
- name: "vite:devtools",
1491
+ name: "vite:devtools:vite-ui",
1447
1492
  devtools: { setup(ctx) {
1448
1493
  console.log("Vite DevTools Vite plugin setup");
1449
1494
  for (const fn of rpcFunctions) ctx.rpc.register(fn);
1450
- ctx.hostStatic("/__vite_devtools_vite__/", clientPublicDir);
1495
+ ctx.views.hostStatic("/.devtools-vite/", clientPublicDir);
1451
1496
  ctx.docks.register({
1452
1497
  id: "vite",
1453
1498
  title: "Vite",
1454
1499
  icon: "https://vite.dev/logo.svg",
1455
1500
  type: "iframe",
1456
- url: "/__vite_devtools_vite__/"
1501
+ url: "/.devtools-vite/"
1457
1502
  });
1458
1503
  } }
1459
1504
  };
package/dist/nitro.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
- "date": "2025-10-01T03:54:22.140Z",
2
+ "date": "2025-11-04T08:08:22.280Z",
3
3
  "preset": "static",
4
4
  "framework": {
5
5
  "name": "nuxt",
6
6
  "version": "4.1.2"
7
7
  },
8
8
  "versions": {
9
- "nitro": "2.12.6"
9
+ "nitro": "2.12.8"
10
10
  },
11
11
  "commands": {
12
12
  "preview": "npx serve public"
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en" class="bg-dots"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><script type="importmap">{"imports":{"#entry":"/__vite_devtools_vite__/_nuxt/DKn-LAPX.js"}}</script><title>Vite DevTools</title><link rel="stylesheet" href="/__vite_devtools_vite__/_nuxt/entry.Dufqy7qJ.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__vite_devtools_vite__/_nuxt/DKn-LAPX.js"><link rel="prefetch" as="style" crossorigin href="/__vite_devtools_vite__/_nuxt/error-404.yUUAZDjV.css"><link rel="prefetch" as="script" crossorigin href="/__vite_devtools_vite__/_nuxt/C2X_oPur.js"><link rel="prefetch" as="script" crossorigin href="/__vite_devtools_vite__/_nuxt/Bjr51Ks8.js"><link rel="prefetch" as="style" crossorigin href="/__vite_devtools_vite__/_nuxt/error-500.BHZzZRS-.css"><link rel="prefetch" as="script" crossorigin href="/__vite_devtools_vite__/_nuxt/BL9XEsp7.js"><meta name="description" content="DevTools for Vite"><meta property="og:title" content="Vite DevTools"><meta property="og:description" content="DevTools for Vite"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><script type="module" src="/__vite_devtools_vite__/_nuxt/DKn-LAPX.js" crossorigin></script><script id="unhead:payload" type="application/json">{"title":"Vite DevTools"}</script></head><body><div id="__nuxt"></div><div id="teleports"></div><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1759290862094,false]</script><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__vite_devtools_vite__/",buildId:"6f75d3aa-4cfc-4ed3-af3a-9078b8defb8f",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script></body></html>
1
+ <!DOCTYPE html><html lang="en" class="bg-dots"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><script type="importmap">{"imports":{"#entry":"/.devtools-vite/_nuxt/BWDYSEh7.js"}}</script><title>Vite DevTools</title><link rel="stylesheet" href="/.devtools-vite/_nuxt/entry.CxcRHwcK.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/.devtools-vite/_nuxt/BWDYSEh7.js"><link rel="prefetch" as="style" crossorigin href="/.devtools-vite/_nuxt/error-404.CCdr3eE4.css"><link rel="prefetch" as="script" crossorigin href="/.devtools-vite/_nuxt/D-ZnEyqr.js"><link rel="prefetch" as="script" crossorigin href="/.devtools-vite/_nuxt/Jdu9jmuG.js"><link rel="prefetch" as="style" crossorigin href="/.devtools-vite/_nuxt/error-500.D-vBsHK_.css"><link rel="prefetch" as="script" crossorigin href="/.devtools-vite/_nuxt/AuXMpmu_.js"><meta name="description" content="DevTools for Vite"><meta property="og:title" content="Vite DevTools"><meta property="og:description" content="DevTools for Vite"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><script type="module" src="/.devtools-vite/_nuxt/BWDYSEh7.js" crossorigin></script><script id="unhead:payload" type="application/json">{"title":"Vite DevTools"}</script></head><body><div id="__nuxt"></div><div id="teleports"></div><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1762243702213,false]</script><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/.devtools-vite/",buildId:"a75cfc75-2758-4449-8135-5151dc9f3c34",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html lang="en" class="bg-dots"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><script type="importmap">{"imports":{"#entry":"/__vite_devtools_vite__/_nuxt/DKn-LAPX.js"}}</script><title>Vite DevTools</title><link rel="stylesheet" href="/__vite_devtools_vite__/_nuxt/entry.Dufqy7qJ.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__vite_devtools_vite__/_nuxt/DKn-LAPX.js"><link rel="prefetch" as="style" crossorigin href="/__vite_devtools_vite__/_nuxt/error-404.yUUAZDjV.css"><link rel="prefetch" as="script" crossorigin href="/__vite_devtools_vite__/_nuxt/C2X_oPur.js"><link rel="prefetch" as="script" crossorigin href="/__vite_devtools_vite__/_nuxt/Bjr51Ks8.js"><link rel="prefetch" as="style" crossorigin href="/__vite_devtools_vite__/_nuxt/error-500.BHZzZRS-.css"><link rel="prefetch" as="script" crossorigin href="/__vite_devtools_vite__/_nuxt/BL9XEsp7.js"><meta name="description" content="DevTools for Vite"><meta property="og:title" content="Vite DevTools"><meta property="og:description" content="DevTools for Vite"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><script type="module" src="/__vite_devtools_vite__/_nuxt/DKn-LAPX.js" crossorigin></script><script id="unhead:payload" type="application/json">{"title":"Vite DevTools"}</script></head><body><div id="__nuxt"></div><div id="teleports"></div><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1759290862094,false]</script><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__vite_devtools_vite__/",buildId:"6f75d3aa-4cfc-4ed3-af3a-9078b8defb8f",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script></body></html>
1
+ <!DOCTYPE html><html lang="en" class="bg-dots"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><script type="importmap">{"imports":{"#entry":"/.devtools-vite/_nuxt/BWDYSEh7.js"}}</script><title>Vite DevTools</title><link rel="stylesheet" href="/.devtools-vite/_nuxt/entry.CxcRHwcK.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/.devtools-vite/_nuxt/BWDYSEh7.js"><link rel="prefetch" as="style" crossorigin href="/.devtools-vite/_nuxt/error-404.CCdr3eE4.css"><link rel="prefetch" as="script" crossorigin href="/.devtools-vite/_nuxt/D-ZnEyqr.js"><link rel="prefetch" as="script" crossorigin href="/.devtools-vite/_nuxt/Jdu9jmuG.js"><link rel="prefetch" as="style" crossorigin href="/.devtools-vite/_nuxt/error-500.D-vBsHK_.css"><link rel="prefetch" as="script" crossorigin href="/.devtools-vite/_nuxt/AuXMpmu_.js"><meta name="description" content="DevTools for Vite"><meta property="og:title" content="Vite DevTools"><meta property="og:description" content="DevTools for Vite"><link rel="icon" type="image/svg+xml" href="/favicon.svg"><script type="module" src="/.devtools-vite/_nuxt/BWDYSEh7.js" crossorigin></script><script id="unhead:payload" type="application/json">{"title":"Vite DevTools"}</script></head><body><div id="__nuxt"></div><div id="teleports"></div><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1762243702213,false]</script><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/.devtools-vite/",buildId:"a75cfc75-2758-4449-8135-5151dc9f3c34",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script></body></html>
@@ -0,0 +1 @@
1
+ import{Tt as e,in as t,it as n,kt as r,mt as i,st as a,ut as o}from"#entry";var s={flex:`~ gap5`,"w-full":``,border:`b base`,pb3:``},c={"font-mono":``},l={"font-mono":``},u=[`datetime`],d=i({__name:`SessionMeta`,props:{sessions:{}},setup(i){return(d,f)=>(e(),o(`div`,s,[(e(!0),o(n,null,r(i.sessions,n=>(e(),o(`div`,{key:n.id,"flex-1":``,border:`~ base rounded`,p4:``,grid:`~ cols-[max-content_140px_2fr] max-lg:cols-[max-content_80px_2fr] gap-2 items-center`},[f[0]||=a(`div`,{class:`i-ph-hash-duotone`},null,-1),a(`div`,null,t(n.title),1),a(`div`,c,[a(`span`,null,t(n.id),1)]),f[1]||=a(`div`,{class:`i-ph-clock-duotone`},null,-1),f[2]||=a(`div`,null,` Created At `,-1),a(`div`,l,[a(`time`,{datetime:n.createdAt.toISOString()},t(n.createdAt.toLocaleString()),9,u)])]))),128))]))}}),f=Object.assign(d,{__name:`CompareSessionMeta`});export{f as t};
@@ -0,0 +1 @@
1
+ import{Tt as e,_t as t,mt as n,ot as r,tn as i,ut as a}from"#entry";import{r as o,s}from"./B_mZ82Ef.js";var c=[`title`],l=n({__name:`FileIcon`,props:{filename:{}},setup(t){let n=t,o=r(()=>s(n.filename));return(t,n)=>(e(),a(`div`,{"flex-none":``,"icon-catppuccin":``,title:o.value.description||o.value.name,class:i([o.value.icon])},null,10,c))}}),u=Object.assign(l,{__name:`DisplayFileIcon`}),d=n({name:`HighlightedPath`,props:{path:{type:String,required:!0},minimal:{type:Boolean,default:!1}},setup(e){return()=>{let n=e.path.split(/([?/&:=])/g),r=`path`,i=n.map(()=>[]),a=n.map(()=>[]),s=n.map(e=>t(`span`,{class:``},e)),c=new Set;return n.forEach((t,l)=>{if(t===`?`&&(r=`query`),r===`path`){if(t.match(/^\.+$/)||t===`/`?i[l]?.push(`op50`):(t===`node_modules`||t===`dist`||t===`lib`||t.match(/^\.\w/))&&i[l]?.push(`op60`),t===`node_modules`&&e.minimal)for(let e=0;e<l+2;e++)c.add(e);if(t===`.pnpm`&&(s[l]&&(s[l].children=`~`,i[l]?.push(`op25!`),i[l-1]?.push(`op25!`)),c.add(l+1),c.add(l+2),i[l+3]?.push(`op25!`),s[l+4]?.children===`node_modules`&&(c.add(l+3),c.add(l+4),i[l+5]?.push(`op25!`))),t===`:`&&(s[l-1]&&a[l-1]?.push(`color: ${o(n[l-1])}`),i[l]?.push(`op50`)),n[l-2]===`node_modules`&&!t.startsWith(`.`)){let e=`color: ${o(n[l])}`;a[l]?.push(e),t.startsWith(`@`)&&(a[l+1]?.push(e),a[l+2]?.push(e))}}r===`query`&&(t===`?`?i[l]?.push(`text-red-500 dark:text-red-400`):t===`&`&&i[l]?.push(`text-orange-500 dark:text-orange-400`),t===`=`?i[l]?.push(`text-orange-900 dark:text-orange-200 op50`):n[l+1]===`=`?i[l]?.push(`text-amber-900 dark:text-amber-200`):i[l]?.push(`text-orange-900 dark:text-orange-200`))}),s.forEach((e,t)=>{e.props&&(e.props.class=i[t]?.join(` `)??``,e.props.style=a[t]?.join(`;`)??``)}),Array.from(c).sort((e,t)=>t-e).forEach(e=>{s.splice(e,1)}),s}}});export{u as n,d as t};
@@ -0,0 +1 @@
1
+ import{C as e,Tt as t,V as n,in as r,st as i,ut as a}from"#entry";var o={class:`antialiased bg-white dark:bg-[#020420] dark:text-white font-sans grid min-h-screen overflow-hidden place-content-center text-[#020420] tracking-wide`},s={class:`max-w-520px text-center`},c=[`textContent`],l=[`textContent`],u=[`textContent`],d=e({__name:`error-500`,props:{appName:{type:String,default:`Nuxt`},statusCode:{type:Number,default:500},statusMessage:{type:String,default:`Internal server error`},description:{type:String,default:`This page is temporarily unavailable.`},refresh:{type:String,default:`Refresh this page`}},setup(e){let d=e;return n({title:`${d.statusCode} - ${d.statusMessage} | ${d.appName}`,script:[{innerHTML:`!function(){const e=document.createElement("link").relList;if(!(e&&e.supports&&e.supports("modulepreload"))){for(const e of document.querySelectorAll('link[rel="modulepreload"]'))r(e);new MutationObserver(e=>{for(const o of e)if("childList"===o.type)for(const e of o.addedNodes)"LINK"===e.tagName&&"modulepreload"===e.rel&&r(e)}).observe(document,{childList:!0,subtree:!0})}function r(e){if(e.ep)return;e.ep=!0;const r=function(e){const r={};return e.integrity&&(r.integrity=e.integrity),e.referrerPolicy&&(r.referrerPolicy=e.referrerPolicy),"use-credentials"===e.crossOrigin?r.credentials="include":"anonymous"===e.crossOrigin?r.credentials="omit":r.credentials="same-origin",r}(e);fetch(e.href,r)}}();`}],style:[{innerHTML:`*,:after,:before{border-color:var(--un-default-border-color,#e5e7eb);border-style:solid;border-width:0;box-sizing:border-box}:after,:before{--un-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-moz-tab-size:4;tab-size:4;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}h1,h2{font-size:inherit;font-weight:inherit}h1,h2,p{margin:0}*,:after,:before{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 transparent;--un-ring-shadow:0 0 transparent;--un-shadow-inset: ;--un-shadow:0 0 transparent;--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }`}]}),(n,d)=>(t(),a(`div`,o,[i(`div`,s,[i(`h1`,{class:`font-semibold leading-none mb-4 sm:text-[110px] tabular-nums text-[80px]`,textContent:r(e.statusCode)},null,8,c),i(`h2`,{class:`font-semibold mb-2 sm:text-3xl text-2xl`,textContent:r(e.statusMessage)},null,8,l),i(`p`,{class:`mb-4 px-2 text-[#64748B] text-md`,textContent:r(e.description)},null,8,u)])]))}},[[`__scopeId`,`data-v-4936aca7`]]);export{d as default};
@@ -0,0 +1,2 @@
1
+ import{At as e,Et as t,Gt as n,Ht as r,Mt as i,Nt as a,Ot as o,Pt as s,Tt as c,Ut as l,Vt as u,Yt as d,_t as f,bt as p,ct as m,en as h,gt as g,h as _,in as v,it as y,jt as b,kt as x,lt as S,mt as C,nn as w,pt as T,rn as ee,st as E,tn as D,tt as te,ut as O,xt as k}from"#entry";var ne={flex:`col gap-2`,"max-w-90vw":``,"min-w-30vw":``,border:`~ base rounded-xl`,"bg-glass":``},re={key:0},ie=[`title`],ae=[`checked`,`onChange`],oe={"text-sm":``},A=[`title`],se={key:0,op75:``,"i-ph-selection-slash-duotone":``},ce={key:1,op75:``,"i-ph-selection-plus-duotone":``},le=C({__name:`SearchPanel`,props:{rules:{},modelValue:{default:()=>({search:``,selected:null})},selectedContainerClass:{default:``}},emits:[`update:modelValue`],setup(t,{emit:n}){let i=t,a=_(i,`modelValue`,n);function o(e){let{modelValue:t}=i;return t?.selected?t.selected.includes(e.name):!0}function s(e){let{rules:t}=i;a?.value?.selected||(a.value.selected=t.map(e=>e.name)),a.value.selected.includes(e.name)?a.value.selected=a.value.selected.filter(t=>t!==e.name):a.value.selected.push(e.name),a?.value?.selected.length===i.rules.length&&(a.value.selected=null)}function l(){a?.value?.selected?.length===i.rules.length?a.value.selected=null:a?.value?.selected==null?a.value.selected=[]:a.value.selected=i.rules.map(e=>e.name).filter(e=>!a.value.selected?.includes(e))}function u(){a?.value?.selected?.length===0?a.value.selected=null:a.value.selected=[]}return(n,i)=>(c(),O(`div`,ne,[t.modelValue.search===!1?S(``,!0):(c(),O(`div`,re,[r(E(`input`,{"onUpdate:modelValue":i[0]||=e=>h(a).search=e,p2:``,px4:``,"w-full":``,style:{outline:`none`},placeholder:`Search`},null,512),[[te,h(a).search]])])),t.rules.length?(c(),O(`div`,{key:1,class:D(t.selectedContainerClass),flex:`~ gap-2 wrap`,p2:``,border:`t base`},[(c(!0),O(y,null,x(t.rules,e=>(c(),O(`label`,{key:e.name,border:`~ base rounded-md`,px2:``,py1:``,flex:`~ items-center gap-1`,"select-none":``,title:e.description,class:D(o(e)?`bg-active`:`grayscale op50`)},[E(`input`,{type:`checkbox`,mr1:``,checked:o(e),onChange:t=>s(e)},null,40,ae),E(`div`,{class:D(e.icon),"icon-catppuccin":``},null,2),E(`div`,oe,v(e.description||e.name),1)],10,ie))),128)),E(`button`,{"rounded-md":``,p1:``,flex:`~ items-center gap-1`,"select-none":``,hover:`bg-active`,title:`Reverse Selection`,onClick:l},[...i[1]||=[E(`div`,{op75:``,"i-ph-selection-background-duotone":``},null,-1)]]),E(`button`,{"rounded-md":``,p1:``,flex:`~ items-center gap-1`,"select-none":``,hover:`bg-active`,title:h(a).selected?.length===0?`Select All`:`Unselect All`,onClick:u},[h(a).selected?.length===0?(c(),O(`div`,se)):(c(),O(`div`,ce))],8,A)],2)):S(``,!0),e(n.$slots,`default`)]))}}),ue=Object.assign(le,{__name:`DataSearchPanel`});function de(){var e=window.navigator.userAgent,t=e.indexOf(`MSIE `);if(t>0)return parseInt(e.substring(t+5,e.indexOf(`.`,t)),10);if(e.indexOf(`Trident/`)>0){var n=e.indexOf(`rv:`);return parseInt(e.substring(n+3,e.indexOf(`.`,n)),10)}var r=e.indexOf(`Edge/`);return r>0?parseInt(e.substring(r+5,e.indexOf(`.`,r)),10):-1}var j;function M(){M.init||(M.init=!0,j=de()!==-1)}var N={name:`ResizeObserver`,props:{emitOnMount:{type:Boolean,default:!1},ignoreWidth:{type:Boolean,default:!1},ignoreHeight:{type:Boolean,default:!1}},emits:[`notify`],mounted(){M(),k(()=>{this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.emitOnMount&&this.emitSize()});let e=document.createElement(`object`);this._resizeObject=e,e.setAttribute(`aria-hidden`,`true`),e.setAttribute(`tabindex`,-1),e.onload=this.addResizeHandlers,e.type=`text/html`,j&&this.$el.appendChild(e),e.data=`about:blank`,j||this.$el.appendChild(e)},beforeUnmount(){this.removeResizeHandlers()},methods:{compareAndNotify(){(!this.ignoreWidth&&this._w!==this.$el.offsetWidth||!this.ignoreHeight&&this._h!==this.$el.offsetHeight)&&(this._w=this.$el.offsetWidth,this._h=this.$el.offsetHeight,this.emitSize())},emitSize(){this.$emit(`notify`,{width:this._w,height:this._h})},addResizeHandlers(){this._resizeObject.contentDocument.defaultView.addEventListener(`resize`,this.compareAndNotify),this.compareAndNotify()},removeResizeHandlers(){this._resizeObject&&this._resizeObject.onload&&(!j&&this._resizeObject.contentDocument&&this._resizeObject.contentDocument.defaultView.removeEventListener(`resize`,this.compareAndNotify),this.$el.removeChild(this._resizeObject),this._resizeObject.onload=null,this._resizeObject=null)}}},fe=l(`data-v-b329ee4c`);o(`data-v-b329ee4c`);var pe={class:`resize-observer`,tabindex:`-1`};t(),N.render=fe((e,t,n,r,i,a)=>(c(),m(`div`,pe))),N.__scopeId=`data-v-b329ee4c`,N.__file=`src/components/ResizeObserver.vue`;function P(e){"@babel/helpers - typeof";return P=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},P(e)}function me(e,t){if(!(e instanceof t))throw TypeError(`Cannot call a class as a function`)}function F(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,`value`in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function he(e,t,n){return t&&F(e.prototype,t),n&&F(e,n),e}function I(e){return L(e)||R(e)||ge(e)||_e()}function L(e){if(Array.isArray(e))return z(e)}function R(e){if(typeof Symbol<`u`&&Symbol.iterator in Object(e))return Array.from(e)}function ge(e,t){if(e){if(typeof e==`string`)return z(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if(n===`Object`&&e.constructor&&(n=e.constructor.name),n===`Map`||n===`Set`)return Array.from(e);if(n===`Arguments`||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return z(e,t)}}function z(e,t){(t==null||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function _e(){throw TypeError(`Invalid attempt to spread non-iterable instance.
2
+ In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function ve(e){return typeof e==`function`?{callback:e}:e}function ye(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},r,i,a,o=function(o){if(a=[...arguments].slice(1),!(r&&o===i)){var s=n.leading;typeof s==`function`&&(s=s(o,i)),(!r||o!==i)&&s&&e.apply(void 0,[o].concat(I(a))),i=o,clearTimeout(r),r=setTimeout(function(){e.apply(void 0,[o].concat(I(a))),r=0},t)}};return o._clear=function(){clearTimeout(r),r=null},o}function B(e,t){if(e===t)return!0;if(P(e)===`object`){for(var n in e)if(!B(e[n],t[n]))return!1;return!0}return!1}var be=function(){function e(t,n,r){me(this,e),this.el=t,this.observer=null,this.frozen=!1,this.createObserver(n,r)}return he(e,[{key:`createObserver`,value:function(e,t){var n=this;if(this.observer&&this.destroyObserver(),!this.frozen){if(this.options=ve(e),this.callback=function(e,t){n.options.callback(e,t),e&&n.options.once&&(n.frozen=!0,n.destroyObserver())},this.callback&&this.options.throttle){var r=(this.options.throttleOptions||{}).leading;this.callback=ye(this.callback,this.options.throttle,{leading:function(e){return r===`both`||r===`visible`&&e||r===`hidden`&&!e}})}this.oldResult=void 0,this.observer=new IntersectionObserver(function(e){var t=e[0];if(e.length>1){var r=e.find(function(e){return e.isIntersecting});r&&(t=r)}if(n.callback){var i=t.isIntersecting&&t.intersectionRatio>=n.threshold;if(i===n.oldResult)return;n.oldResult=i,n.callback(i,t)}},this.options.intersection),k(function(){n.observer&&n.observer.observe(n.el)})}}},{key:`destroyObserver`,value:function(){this.observer&&=(this.observer.disconnect(),null),this.callback&&this.callback._clear&&(this.callback._clear(),this.callback=null)}},{key:`threshold`,get:function(){return this.options.intersection&&typeof this.options.intersection.threshold==`number`?this.options.intersection.threshold:0}}]),e}();function V(e,t,n){var r=t.value;r&&(typeof IntersectionObserver>`u`?console.warn(`[vue-observe-visibility] IntersectionObserver API is not available in your browser. Please install this polyfill: https://github.com/w3c/IntersectionObserver/tree/master/polyfill`):e._vue_visibilityState=new be(e,r,n))}function xe(e,t,n){var r=t.value,i=t.oldValue;if(!B(r,i)){var a=e._vue_visibilityState;if(!r){H(e);return}a?a.createObserver(r,n):V(e,{value:r},n)}}function H(e){var t=e._vue_visibilityState;t&&(t.destroyObserver(),delete e._vue_visibilityState)}var Se={beforeMount:V,updated:xe,unmounted:H};function Ce(e){return{all:e||=new Map,on:function(t,n){var r=e.get(t);r&&r.push(n)||e.set(t,[n])},off:function(t,n){var r=e.get(t);r&&r.splice(r.indexOf(n)>>>0,1)},emit:function(t,n){(e.get(t)||[]).slice().map(function(e){e(n)}),(e.get(`*`)||[]).slice().map(function(e){e(t,n)})}}}var we={itemsLimit:1e3},Te=/(auto|scroll)/;function U(e,t){return e.parentNode===null?t:U(e.parentNode,t.concat([e]))}var W=function(e,t){return getComputedStyle(e,null).getPropertyValue(t)},Ee=function(e){return W(e,`overflow`)+W(e,`overflow-y`)+W(e,`overflow-x`)},De=function(e){return Te.test(Ee(e))};function G(e){if(e instanceof HTMLElement||e instanceof SVGElement){for(var t=U(e.parentNode,[]),n=0;n<t.length;n+=1)if(De(t[n]))return t[n];return document.scrollingElement||document.documentElement}}function K(e){"@babel/helpers - typeof";return K=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},K(e)}var q={items:{type:Array,required:!0},keyField:{type:String,default:`id`},direction:{type:String,default:`vertical`,validator:function(e){return[`vertical`,`horizontal`].includes(e)}},listTag:{type:String,default:`div`},itemTag:{type:String,default:`div`}};function J(){return this.items.length&&K(this.items[0])!==`object`}var Y=!1;if(typeof window<`u`){Y=!1;try{var Oe=Object.defineProperty({},`passive`,{get:function(){Y=!0}});window.addEventListener(`test`,null,Oe)}catch{}}var ke=0,X={name:`RecycleScroller`,components:{ResizeObserver:N},directives:{ObserveVisibility:Se},props:{...q,itemSize:{type:Number,default:null},gridItems:{type:Number,default:void 0},itemSecondarySize:{type:Number,default:void 0},minItemSize:{type:[Number,String],default:null},sizeField:{type:String,default:`size`},typeField:{type:String,default:`type`},buffer:{type:Number,default:200},pageMode:{type:Boolean,default:!1},prerender:{type:Number,default:0},emitUpdate:{type:Boolean,default:!1},updateInterval:{type:Number,default:0},skipHover:{type:Boolean,default:!1},listTag:{type:String,default:`div`},itemTag:{type:String,default:`div`},listClass:{type:[String,Object,Array],default:``},itemClass:{type:[String,Object,Array],default:``}},emits:[`resize`,`visible`,`hidden`,`update`,`scroll-start`,`scroll-end`],data(){return{pool:[],totalSize:0,ready:!1,hoverKey:null}},computed:{sizes(){if(this.itemSize===null){let e={"-1":{accumulator:0}},t=this.items,n=this.sizeField,r=this.minItemSize,i=1e4,a=0,o;for(let s=0,c=t.length;s<c;s++)o=t[s][n]||r,o<i&&(i=o),a+=o,e[s]={accumulator:a,size:o};return this.$_computedMinItemSize=i,e}return[]},simpleArray:J,itemIndexByKey(){let{keyField:e,items:t}=this,n={};for(let r=0,i=t.length;r<i;r++)n[t[r][e]]=r;return n}},watch:{items(){this.updateVisibleItems(!0)},pageMode(){this.applyPageMode(),this.updateVisibleItems(!1)},sizes:{handler(){this.updateVisibleItems(!1)},deep:!0},gridItems(){this.updateVisibleItems(!0)},itemSecondarySize(){this.updateVisibleItems(!0)}},created(){this.$_startIndex=0,this.$_endIndex=0,this.$_views=new Map,this.$_unusedViews=new Map,this.$_scrollDirty=!1,this.$_lastUpdateScrollPosition=0,this.prerender&&(this.$_prerender=!0,this.updateVisibleItems(!1)),this.gridItems&&!this.itemSize&&console.error(`[vue-recycle-scroller] You must provide an itemSize when using gridItems`)},mounted(){this.applyPageMode(),this.$nextTick(()=>{this.$_prerender=!1,this.updateVisibleItems(!0),this.ready=!0})},activated(){let e=this.$_lastUpdateScrollPosition;typeof e==`number`&&this.$nextTick(()=>{this.scrollToPosition(e)})},beforeUnmount(){this.removeListeners()},methods:{addView(e,t,r,i,a){let o=d({item:r,position:0,nr:n({id:ke++,index:t,used:!0,key:i,type:a})});return e.push(o),o},unuseView(e,t=!1){let n=this.$_unusedViews,r=e.nr.type,i=n.get(r);i||(i=[],n.set(r,i)),i.push(e),t||(e.nr.used=!1,e.position=-9999)},handleResize(){this.$emit(`resize`),this.ready&&this.updateVisibleItems(!1)},handleScroll(e){if(!this.$_scrollDirty){if(this.$_scrollDirty=!0,this.$_updateTimeout)return;let e=()=>requestAnimationFrame(()=>{this.$_scrollDirty=!1;let{continuous:e}=this.updateVisibleItems(!1,!0);e||(clearTimeout(this.$_refreshTimout),this.$_refreshTimout=setTimeout(this.handleScroll,this.updateInterval+100))});e(),this.updateInterval&&(this.$_updateTimeout=setTimeout(()=>{this.$_updateTimeout=0,this.$_scrollDirty&&e()},this.updateInterval))}},handleVisibilityChange(e,t){this.ready&&(e||t.boundingClientRect.width!==0||t.boundingClientRect.height!==0?(this.$emit(`visible`),requestAnimationFrame(()=>{this.updateVisibleItems(!1)})):this.$emit(`hidden`))},updateVisibleItems(e,t=!1){let n=this.itemSize,r=this.gridItems||1,i=this.itemSecondarySize||n,a=this.$_computedMinItemSize,o=this.typeField,s=this.simpleArray?null:this.keyField,c=this.items,l=c.length,u=this.sizes,d=this.$_views,f=this.$_unusedViews,p=this.pool,m=this.itemIndexByKey,h,g,_,v,y;if(!l)h=g=v=y=_=0;else if(this.$_prerender)h=v=0,g=y=Math.min(this.prerender,c.length),_=null;else{let e=this.getScroll();if(t){let t=e.start-this.$_lastUpdateScrollPosition;if(t<0&&(t=-t),n===null&&t<a||t<n)return{continuous:!0}}this.$_lastUpdateScrollPosition=e.start;let i=this.buffer;e.start-=i,e.end+=i;let o=0;if(this.$refs.before&&(o=this.$refs.before.scrollHeight,e.start-=o),this.$refs.after){let t=this.$refs.after.scrollHeight;e.end+=t}if(n===null){let t,n=0,r=l-1,i=~~(l/2),a;do a=i,t=u[i].accumulator,t<e.start?n=i:i<l-1&&u[i+1].accumulator>e.start&&(r=i),i=~~((n+r)/2);while(i!==a);for(i<0&&(i=0),h=i,_=u[l-1].accumulator,g=i;g<l&&u[g].accumulator<e.end;g++);for(g===-1?g=c.length-1:(g++,g>l&&(g=l)),v=h;v<l&&o+u[v].accumulator<e.start;v++);for(y=v;y<l&&o+u[y].accumulator<e.end;y++);}else{h=~~(e.start/n*r);let t=h%r;h-=t,g=Math.ceil(e.end/n*r),v=Math.max(0,Math.floor((e.start-o)/n*r)),y=Math.floor((e.end-o)/n*r),h<0&&(h=0),g>l&&(g=l),v<0&&(v=0),y>l&&(y=l),_=Math.ceil(l/r)*n}}g-h>we.itemsLimit&&this.itemsLimitError(),this.totalSize=_;let b,x=h<=this.$_endIndex&&g>=this.$_startIndex;if(x)for(let t=0,n=p.length;t<n;t++)b=p[t],b.nr.used&&(e&&(b.nr.index=m[b.item[s]]),(b.nr.index==null||b.nr.index<h||b.nr.index>=g)&&this.unuseView(b));let S=x?null:new Map,C,w,T;for(let e=h;e<g;e++){C=c[e];let t=s?C[s]:C;if(t==null)throw Error(`Key is ${t} on item (keyField is '${s}')`);if(b=d.get(t),!n&&!u[e].size){b&&this.unuseView(b);continue}w=C[o];let a=f.get(w),l=!1;if(!b)x?b=a&&a.length?a.pop():this.addView(p,e,C,t,w):(T=S.get(w)||0,(!a||T>=a.length)&&(b=this.addView(p,e,C,t,w),this.unuseView(b,!0),a=f.get(w)),b=a[T],S.set(w,T+1)),d.delete(b.nr.key),b.nr.used=!0,b.nr.index=e,b.nr.key=t,b.nr.type=w,d.set(t,b),l=!0;else if(!b.nr.used&&(b.nr.used=!0,l=!0,a)){let e=a.indexOf(b);e!==-1&&a.splice(e,1)}b.item=C,l&&(e===c.length-1&&this.$emit(`scroll-end`),e===0&&this.$emit(`scroll-start`)),n===null?(b.position=u[e-1].accumulator,b.offset=0):(b.position=Math.floor(e/r)*n,b.offset=e%r*i)}return this.$_startIndex=h,this.$_endIndex=g,this.emitUpdate&&this.$emit(`update`,h,g,v,y),clearTimeout(this.$_sortTimer),this.$_sortTimer=setTimeout(this.sortViews,this.updateInterval+300),{continuous:x}},getListenerTarget(){let e=G(this.$el);return window.document&&(e===window.document.documentElement||e===window.document.body)&&(e=window),e},getScroll(){let{$el:e,direction:t}=this,n=t===`vertical`,r;if(this.pageMode){let t=e.getBoundingClientRect(),i=n?t.height:t.width,a=-(n?t.top:t.left),o=n?window.innerHeight:window.innerWidth;a<0&&(o+=a,a=0),a+o>i&&(o=i-a),r={start:a,end:a+o}}else r=n?{start:e.scrollTop,end:e.scrollTop+e.clientHeight}:{start:e.scrollLeft,end:e.scrollLeft+e.clientWidth};return r},applyPageMode(){this.pageMode?this.addListeners():this.removeListeners()},addListeners(){this.listenerTarget=this.getListenerTarget(),this.listenerTarget.addEventListener(`scroll`,this.handleScroll,Y?{passive:!0}:!1),this.listenerTarget.addEventListener(`resize`,this.handleResize)},removeListeners(){this.listenerTarget&&=(this.listenerTarget.removeEventListener(`scroll`,this.handleScroll),this.listenerTarget.removeEventListener(`resize`,this.handleResize),null)},scrollToItem(e){let t,n=this.gridItems||1;t=this.itemSize===null?e>0?this.sizes[e-1].accumulator:0:Math.floor(e/n)*this.itemSize,this.scrollToPosition(t)},scrollToPosition(e){let t=this.direction===`vertical`?{scroll:`scrollTop`,start:`top`}:{scroll:`scrollLeft`,start:`left`},n,r,i;if(this.pageMode){let a=G(this.$el),o=a.tagName===`HTML`?0:a[t.scroll],s=a.getBoundingClientRect(),c=this.$el.getBoundingClientRect()[t.start]-s[t.start];n=a,r=t.scroll,i=e+o+c}else n=this.$el,r=t.scroll,i=e;n[r]=i},itemsLimitError(){throw setTimeout(()=>{console.log(`It seems the scroller element isn't scrolling, so it tries to render all the items at once.`,`Scroller:`,this.$el),console.log(`Make sure the scroller has a fixed height (or width) and 'overflow-y' (or 'overflow-x') set to 'auto' so it can scroll correctly and only render the items visible in the scroll viewport.`)}),Error(`Rendered items limit reached`)},sortViews(){this.pool.sort((e,t)=>e.nr.index-t.nr.index)}}},Z={key:0,ref:`before`,class:`vue-recycle-scroller__slot`},Ae={key:1,ref:`after`,class:`vue-recycle-scroller__slot`};function je(t,n,o,l,d,f){let h=b(`ResizeObserver`),g=i(`observe-visibility`);return r((c(),O(`div`,{class:D([`vue-recycle-scroller`,{ready:d.ready,"page-mode":o.pageMode,[`direction-${t.direction}`]:!0}]),onScrollPassive:n[0]||=(...e)=>f.handleScroll&&f.handleScroll(...e)},[t.$slots.before?(c(),O(`div`,Z,[e(t.$slots,`before`)],512)):S(`v-if`,!0),(c(),m(a(o.listTag),{ref:`wrapper`,style:ee({[t.direction===`vertical`?`minHeight`:`minWidth`]:d.totalSize+`px`}),class:D([`vue-recycle-scroller__item-wrapper`,o.listClass])},{default:u(()=>[(c(!0),O(y,null,x(d.pool,n=>(c(),m(a(o.itemTag),p({key:n.nr.id,style:d.ready?{transform:`translate${t.direction===`vertical`?`Y`:`X`}(${n.position}px) translate${t.direction===`vertical`?`X`:`Y`}(${n.offset}px)`,width:o.gridItems?`${t.direction===`vertical`&&o.itemSecondarySize||o.itemSize}px`:void 0,height:o.gridItems?`${t.direction===`horizontal`&&o.itemSecondarySize||o.itemSize}px`:void 0}:null,class:[`vue-recycle-scroller__item-view`,[o.itemClass,{hover:!o.skipHover&&d.hoverKey===n.nr.key}]]},s(o.skipHover?{}:{mouseenter:()=>{d.hoverKey=n.nr.key},mouseleave:()=>{d.hoverKey=null}})),{default:u(()=>[e(t.$slots,`default`,{item:n.item,index:n.nr.index,active:n.nr.used})]),_:2},1040,[`style`,`class`]))),128)),e(t.$slots,`empty`)]),_:3},8,[`style`,`class`])),t.$slots.after?(c(),O(`div`,Ae,[e(t.$slots,`after`)],512)):S(`v-if`,!0),T(h,{onNotify:f.handleResize},null,8,[`onNotify`])],34)),[[g,f.handleVisibilityChange]])}X.render=je,X.__file=`src/components/RecycleScroller.vue`;var Q={name:`DynamicScroller`,components:{RecycleScroller:X},provide(){return typeof ResizeObserver<`u`&&(this.$_resizeObserver=new ResizeObserver(e=>{requestAnimationFrame(()=>{if(Array.isArray(e)){for(let t of e)if(t.target&&t.target.$_vs_onResize){let e,n;if(t.borderBoxSize){let r=t.borderBoxSize[0];e=r.inlineSize,n=r.blockSize}else e=t.contentRect.width,n=t.contentRect.height;t.target.$_vs_onResize(t.target.$_vs_id,e,n)}}})})),{vscrollData:this.vscrollData,vscrollParent:this,vscrollResizeObserver:this.$_resizeObserver}},inheritAttrs:!1,props:{...q,minItemSize:{type:[Number,String],required:!0}},emits:[`resize`,`visible`],data(){return{vscrollData:{active:!0,sizes:{},keyField:this.keyField,simpleArray:!1}}},computed:{simpleArray:J,itemsWithSize(){let e=[],{items:t,keyField:n,simpleArray:r}=this,i=this.vscrollData.sizes,a=t.length;for(let o=0;o<a;o++){let a=t[o],s=r?o:a[n],c=i[s];c===void 0&&!this.$_undefinedMap[s]&&(c=0),e.push({item:a,id:s,size:c})}return e}},watch:{items(){this.forceUpdate()},simpleArray:{handler(e){this.vscrollData.simpleArray=e},immediate:!0},direction(e){this.forceUpdate(!0)},itemsWithSize(e,t){let n=this.$el.scrollTop,r=0,i=0,a=Math.min(e.length,t.length);for(let o=0;o<a&&!(r>=n);o++)r+=t[o].size||this.minItemSize,i+=e[o].size||this.minItemSize;let o=i-r;o!==0&&(this.$el.scrollTop+=o)}},beforeCreate(){this.$_updates=[],this.$_undefinedSizes=0,this.$_undefinedMap={},this.$_events=Ce()},activated(){this.vscrollData.active=!0},deactivated(){this.vscrollData.active=!1},unmounted(){this.$_events.all.clear()},methods:{onScrollerResize(){this.$refs.scroller&&this.forceUpdate(),this.$emit(`resize`)},onScrollerVisible(){this.$_events.emit(`vscroll:update`,{force:!1}),this.$emit(`visible`)},forceUpdate(e=!1){(e||this.simpleArray)&&(this.vscrollData.sizes={}),this.$_events.emit(`vscroll:update`,{force:!0})},scrollToItem(e){let t=this.$refs.scroller;t&&t.scrollToItem(e)},getItemSize(e,t=void 0){let n=this.simpleArray?t??this.items.indexOf(e):e[this.keyField];return this.vscrollData.sizes[n]||0},scrollToBottom(){if(this.$_scrollingToBottom)return;this.$_scrollingToBottom=!0;let e=this.$el;this.$nextTick(()=>{e.scrollTop=e.scrollHeight+5e3;let t=()=>{e.scrollTop=e.scrollHeight+5e3,requestAnimationFrame(()=>{e.scrollTop=e.scrollHeight+5e3,this.$_undefinedSizes===0?this.$_scrollingToBottom=!1:requestAnimationFrame(t)})};requestAnimationFrame(t)})}}};function Me(t,n,r,i,a,o){let s=b(`RecycleScroller`);return c(),m(s,p({ref:`scroller`,items:o.itemsWithSize,"min-item-size":r.minItemSize,direction:t.direction,"key-field":`id`,"list-tag":t.listTag,"item-tag":t.itemTag},t.$attrs,{onResize:o.onScrollerResize,onVisible:o.onScrollerVisible}),{default:u(({item:n,index:r,active:i})=>[e(t.$slots,`default`,w(g({item:n.item,index:r,active:i,itemWithSize:n})))]),before:u(()=>[e(t.$slots,`before`)]),after:u(()=>[e(t.$slots,`after`)]),empty:u(()=>[e(t.$slots,`empty`)]),_:3},16,[`items`,`min-item-size`,`direction`,`list-tag`,`item-tag`,`onResize`,`onVisible`])}Q.render=Me,Q.__file=`src/components/DynamicScroller.vue`;var $={name:`DynamicScrollerItem`,inject:[`vscrollData`,`vscrollParent`,`vscrollResizeObserver`],props:{item:{required:!0},watchData:{type:Boolean,default:!1},active:{type:Boolean,required:!0},index:{type:Number,default:void 0},sizeDependencies:{type:[Array,Object],default:null},emitResize:{type:Boolean,default:!1},tag:{type:String,default:`div`}},emits:[`resize`],computed:{id(){if(this.vscrollData.simpleArray)return this.index;if(this.vscrollData.keyField in this.item)return this.item[this.vscrollData.keyField];throw Error(`keyField '${this.vscrollData.keyField}' not found in your item. You should set a valid keyField prop on your Scroller`)},size(){return this.vscrollData.sizes[this.id]||0},finalActive(){return this.active&&this.vscrollData.active}},watch:{watchData:`updateWatchData`,id(e,t){if(this.$el.$_vs_id=this.id,this.size||this.onDataUpdate(),this.$_sizeObserved){let n=this.vscrollData.sizes[t],r=this.vscrollData.sizes[e];n!=null&&n!==r&&this.applySize(n)}},finalActive(e){this.size||(e?this.vscrollParent.$_undefinedMap[this.id]||(this.vscrollParent.$_undefinedSizes++,this.vscrollParent.$_undefinedMap[this.id]=!0):this.vscrollParent.$_undefinedMap[this.id]&&(this.vscrollParent.$_undefinedSizes--,this.vscrollParent.$_undefinedMap[this.id]=!1)),this.vscrollResizeObserver?e?this.observeSize():this.unobserveSize():e&&this.$_pendingVScrollUpdate===this.id&&this.updateSize()}},created(){if(!this.$isServer&&(this.$_forceNextVScrollUpdate=null,this.updateWatchData(),!this.vscrollResizeObserver)){for(let e in this.sizeDependencies)this.$watch(()=>this.sizeDependencies[e],this.onDataUpdate);this.vscrollParent.$_events.on(`vscroll:update`,this.onVscrollUpdate)}},mounted(){this.finalActive&&(this.updateSize(),this.observeSize())},beforeUnmount(){this.vscrollParent.$_events.off(`vscroll:update`,this.onVscrollUpdate),this.unobserveSize()},methods:{updateSize(){this.finalActive?this.$_pendingSizeUpdate!==this.id&&(this.$_pendingSizeUpdate=this.id,this.$_forceNextVScrollUpdate=null,this.$_pendingVScrollUpdate=null,this.computeSize(this.id)):this.$_forceNextVScrollUpdate=this.id},updateWatchData(){this.watchData&&!this.vscrollResizeObserver?this.$_watchData=this.$watch(`item`,()=>{this.onDataUpdate()},{deep:!0}):this.$_watchData&&=(this.$_watchData(),null)},onVscrollUpdate({force:e}){!this.finalActive&&e&&(this.$_pendingVScrollUpdate=this.id),(this.$_forceNextVScrollUpdate===this.id||e||!this.size)&&this.updateSize()},onDataUpdate(){this.updateSize()},computeSize(e){this.$nextTick(()=>{if(this.id===e){let e=this.$el.offsetWidth,t=this.$el.offsetHeight;this.applyWidthHeight(e,t)}this.$_pendingSizeUpdate=null})},applyWidthHeight(e,t){let n=~~(this.vscrollParent.direction===`vertical`?t:e);n&&this.size!==n&&this.applySize(n)},applySize(e){this.vscrollParent.$_undefinedMap[this.id]&&(this.vscrollParent.$_undefinedSizes--,this.vscrollParent.$_undefinedMap[this.id]=void 0),this.vscrollData.sizes[this.id]=e,this.emitResize&&this.$emit(`resize`,this.id)},observeSize(){this.vscrollResizeObserver&&(this.$_sizeObserved||=(this.vscrollResizeObserver.observe(this.$el),this.$el.$_vs_id=this.id,this.$el.$_vs_onResize=this.onResize,!0))},unobserveSize(){this.vscrollResizeObserver&&(this.$_sizeObserved&&=(this.vscrollResizeObserver.unobserve(this.$el),this.$el.$_vs_onResize=void 0,!1))},onResize(e,t,n){this.id===e&&this.applyWidthHeight(t,n)}},render(){return f(this.tag,this.$slots.default())}};$.__file=`src/components/DynamicScrollerItem.vue`;var Ne=C({__name:`VirtualList`,props:{items:{},keyProp:{}},setup(t){return(n,r)=>(c(),m(h(Q),{items:t.items,"min-item-size":30,"key-field":t.keyProp,"page-mode":``},{default:u(({item:r,active:i,index:a})=>[T(h($),{item:r,active:i,"data-index":a},{default:u(()=>[e(n.$slots,`default`,p({key:r[t.keyProp]},{item:r,index:a,active:i}))]),_:2},1032,[`item`,`active`,`data-index`])]),_:3},8,[`items`,`key-field`]))}}),Pe=Object.assign(Ne,{__name:`DataVirtualList`});export{ue as n,Pe as t};
@@ -0,0 +1 @@
1
+ import{Bt as e,Jt as t,Nt as n,S as r,Tt as i,Vt as a,ct as o,en as s,ft as c,in as l,it as u,kt as d,lt as f,mt as p,ot as m,pt as h,st as g,tn as _,ut as v,y}from"#entry";import{t as b}from"./Jdu9jmuG.js";import{t as x}from"./17ealR8P.js";import"./B_mZ82Ef.js";import"./2OALqkc2.js";import{r as S,t as C}from"./DL1ysgP5.js";import{t as w}from"./CbzAqNxs.js";import"./DnpfwSMy.js";import{t as T}from"./SO3ppn9m.js";var E={flex:`~ col gap-2`},D={flex:`~ gap-1 items-center`,"font-mono":``,op50:``,"text-sm":``},O={"font-mono":``,"font-sm":``},k={key:0,flex:`~ gap-1 items-center`},A={key:0,op50:``,"text-xs":``,border:`~ base rounded-md`,px1:``,"font-mono":``},j=p({__name:`SessionSelector`,props:{sessionMode:{},sessions:{},selectedSessionIds:{},selectedSessions:{}},emits:[`select`],setup(e,{emit:t}){let r=e,p=t;function y(e){return T(e.meta.inputs[0]?.filename??``,e.meta.cwd).path}let x=m(()=>{let e=r.selectedSessions?.[0];return e?y(e):``});function j(e){return x.value&&x.value!==y(e)}function M(e){r.sessionMode===`compare`&&!j(e)&&p(`select`,e)}return(t,r)=>{let p=C,m=S,y=w;return i(),v(`div`,E,[(i(!0),v(u,null,d(e.sessions,t=>(i(),v(`div`,{key:t.id,flex:`~ row gap-2`,relative:``},[(i(),o(n(e.sessionMode===`list`?s(b):`div`),{to:`/session/${t.id}`,border:`~ rounded-md`,class:_(e.sessionMode===`list`?[`hover:bg-active`,`border-base`]:[e.selectedSessionIds.includes(t.id)?`border-active`:`border-base`,j(t)||e.selectedSessions.length===2&&!e.selectedSessionIds.includes(t.id)?`op50`:`hover:bg-active`]),flex:`~ col gap-1`,px4:``,py3:``,"w-full":``,onClick:e=>M(t)},{default:a(()=>[g(`div`,D,[r[0]||=g(`div`,{"i-ph-hash-duotone":``},null,-1),c(` `+l(t.id),1)]),g(`div`,O,l(t.meta.cwd),1),t.meta.inputs[0]?(i(),v(`div`,k,[h(p,{id:t.meta.inputs[0].filename,cwd:t.meta.cwd},null,8,[`id`,`cwd`]),h(m,{text:t.meta.inputs[0].name||`entry`},null,8,[`text`]),t.meta.inputs.length>1?(i(),v(`span`,A,` +`+l(t.meta.inputs.length-1),1)):f(``,!0)])):f(``,!0),h(y,{timestamp:t.timestamp,pt2:``,"text-sm":``,op50:``},null,8,[`timestamp`])]),_:2},1032,[`to`,`class`,`onClick`]))]))),128))])}}}),M=Object.assign(j,{__name:`PanelSessionSelector`}),N={p4:``,flex:`~ col gap-4`,"items-center":``,"justify-center":``,relative:``},P={op50:``},F={relative:``,flex:`~ col gap3 items-center`},I={fixed:``,"top-5":``,"right-5":``,flex:`~ col gap2`},L={flex:`~ row justify-around`,w20:``,h8:``,border:`~ base rounded-8`,"of-hidden":``},R=[`title`,`onClick`],z={key:0,fixed:``,"bottom-5":``,"right-5":``,border:`~ base rounded-2`,w100:``,"max-lg:w85":``,"bg-glass":``,"z-panel-content":``},B={flex:`~ justify-center`,p2:``},V={key:1,op80:``,"text-sm":``},H=p({__name:`index`,async setup(n){let p,S,C=t(`list`),w=[{label:`Session List`,icon:`i-ph-list-bullets-duotone`,value:`list`},{label:`Session Compare`,icon:`i-ph-git-diff-duotone`,value:`compare`}],T=t([]),E=m(()=>T.value.map(e=>e.id).sort()),D=m(()=>[...T.value].sort((e,t)=>e.timestamp-t.timestamp).map((e,t)=>({...e,createdAt:new Date(e.timestamp),title:t===0?`Session A`:`Session B`}))),O=y(),k=([p,S]=e(()=>O.value[`vite:rolldown:list-sessions`]()),p=await p,S(),p);function A(e){E.value.includes(e.id)?T.value=T.value.filter(t=>t.id!==e.id):T.value=[...T.value,e]}return(e,t)=>{let n=r,p=M,m=x,y=b;return i(),v(`div`,N,[h(n),g(`p`,P,l(C.value===`list`?`Select a build session to get started:`:`Select 2 build sessions to compare:`),1),g(`div`,F,[h(p,{"session-mode":C.value,sessions:s(k),"selected-session-ids":E.value,"selected-sessions":T.value,onSelect:A},null,8,[`session-mode`,`sessions`,`selected-session-ids`,`selected-sessions`])]),g(`div`,I,[g(`div`,L,[(i(),v(u,null,d(w,e=>g(`button`,{key:e.value,title:e.label,"flex-1":``,op50:``,flex:`~ items-center justify-center`,class:_({"bg-active text-base op100!":C.value===e.value}),hover:`bg-active text-base op100!`,onClick:t=>C.value=e.value},[g(`span`,{class:_([e.icon,`text-sm`])},null,2)],10,R)),64))])]),T.value.length>0&&C.value===`compare`?(i(),v(`div`,z,[h(m,{sessions:D.value,class:`flex-col gap0 [&>div]:border-none! [&>first-child]:border-b!`},null,8,[`sessions`]),g(`div`,B,[T.value.length===2?(i(),o(y,{key:0,tag:`button`,to:`/compare/${E.value.join(`,`)}`,"btn-action":``,"rounded-8":``,"text-3":``,flex:`~ justify-center`,w30:``,h8:``},{default:a(()=>[...t[0]||=[c(` Compare `,-1)]]),_:1},8,[`to`])):(i(),v(`div`,V,` Select one more session to compare. `))])])):f(``,!0)])}}});export{H as default};