@nuxt/devtools 4.0.0-alpha.12 → 4.0.0-alpha.14

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 (130) hide show
  1. package/dist/chunks/analyze-build.mjs +1 -1
  2. package/dist/chunks/module-main.mjs +44 -35
  3. package/dist/chunks/vite-inspect.mjs +2 -2
  4. package/dist/dirs.d.mts +1 -3
  5. package/dist/dirs.mjs +2 -4
  6. package/dist/module.d.mts +1 -1
  7. package/dist/module.json +1 -1
  8. package/dist/runtime/plugins/devtools.client.js +0 -4
  9. package/dist/runtime/plugins/view/client.js +1 -67
  10. package/dist/shared/{devtools.LsRDzDTD.d.mts → devtools.DIKI0iiX.d.mts} +1 -7
  11. package/dist/types.d.mts +1 -1
  12. package/package.json +17 -12
  13. package/dist/client/200.html +0 -1
  14. package/dist/client/404.html +0 -1
  15. package/dist/client/_nuxt/__blank-ki8oaugs.js +0 -1
  16. package/dist/client/_nuxt/_plugin-vue_export-helper-d9irwgla.js +0 -1
  17. package/dist/client/_nuxt/analyze-build-ie32uchi.js +0 -1
  18. package/dist/client/_nuxt/assets-jyg0eofj.js +0 -6
  19. package/dist/client/_nuxt/assets.css-hmxl533k.css +0 -1
  20. package/dist/client/_nuxt/auth-required-panel-hlhmg87z.js +0 -1
  21. package/dist/client/_nuxt/builds/latest.json +0 -1
  22. package/dist/client/_nuxt/builds/meta/1183fbc7-b7db-4404-9ee4-7571849e8ffe.json +0 -1
  23. package/dist/client/_nuxt/cj10ghel.js +0 -2
  24. package/dist/client/_nuxt/client-iet3i2jx.js +0 -1
  25. package/dist/client/_nuxt/code-diff-nh9ucmoa.js +0 -8
  26. package/dist/client/_nuxt/code-snippets-jzjkfinz.js +0 -1
  27. package/dist/client/_nuxt/color-abaog8vc.js +0 -1
  28. package/dist/client/_nuxt/components-oyl85tqv.js +0 -1
  29. package/dist/client/_nuxt/composable-item-flzw59ca.js +0 -1
  30. package/dist/client/_nuxt/composables-ioamscf4.js +0 -1
  31. package/dist/client/_nuxt/composables-li5sexni.js +0 -1
  32. package/dist/client/_nuxt/constants-g2z8m4rs.js +0 -1
  33. package/dist/client/_nuxt/custom-_name_-kwr7j680.js +0 -1
  34. package/dist/client/_nuxt/data-schema-button-nmq5no1t.js +0 -1
  35. package/dist/client/_nuxt/data-schema-drawer-bvbzeooy.js +0 -2
  36. package/dist/client/_nuxt/debug-ouzogne6.js +0 -1
  37. package/dist/client/_nuxt/default-m4s11ttb.js +0 -1
  38. package/dist/client/_nuxt/dialog-i2683h8g.js +0 -1
  39. package/dist/client/_nuxt/dist-2c3gpsw0.js +0 -1
  40. package/dist/client/_nuxt/dist-das2ggjj.js +0 -1
  41. package/dist/client/_nuxt/dist-gklva25a.js +0 -1
  42. package/dist/client/_nuxt/duration-display-fjuy04uz.js +0 -1
  43. package/dist/client/_nuxt/editor-cv8lunmj.js +0 -1
  44. package/dist/client/_nuxt/entry.css-meav5jmw.css +0 -1
  45. package/dist/client/_nuxt/error-404-dxv9ojo4.js +0 -1
  46. package/dist/client/_nuxt/error-404.css-kdbb3rb9.css +0 -1
  47. package/dist/client/_nuxt/error-500-modjju3x.js +0 -1
  48. package/dist/client/_nuxt/error-500.css-hwq7jdp9.css +0 -1
  49. package/dist/client/_nuxt/error-k3ha3twu.js +0 -9
  50. package/dist/client/_nuxt/filepath-item-m6tglha3.js +0 -1
  51. package/dist/client/_nuxt/full-kcw32vsy.js +0 -1
  52. package/dist/client/_nuxt/fuse-ipb957gg.js +0 -1
  53. package/dist/client/_nuxt/help-fab-sp6luyzp.js +0 -1
  54. package/dist/client/_nuxt/help-fab.css-ms50khsu.css +0 -1
  55. package/dist/client/_nuxt/hooks-l1yy9fmc.js +0 -1
  56. package/dist/client/_nuxt/imports-fm9nem8p.js +0 -1
  57. package/dist/client/_nuxt/launch-page-g9x94qn0.js +0 -1
  58. package/dist/client/_nuxt/modules-ha9lr7ce.js +0 -1
  59. package/dist/client/_nuxt/nbadge-n73p68uz.js +0 -1
  60. package/dist/client/_nuxt/nbutton-mxt3cxcx.js +0 -1
  61. package/dist/client/_nuxt/ncard-kyrmtdmn.js +0 -1
  62. package/dist/client/_nuxt/ncheckbox-fbnq3guy.js +0 -1
  63. package/dist/client/_nuxt/ncode-block-ltlsxf5u.js +0 -2
  64. package/dist/client/_nuxt/ncode-block.css-ivoxtfjk.css +0 -1
  65. package/dist/client/_nuxt/ndialog-jnj3j8xn.js +0 -3
  66. package/dist/client/_nuxt/ndrawer-ll4inus6.js +0 -1
  67. package/dist/client/_nuxt/ndropdown-hviylh0n.js +0 -1
  68. package/dist/client/_nuxt/nicon-ccnh6x2r.js +0 -4
  69. package/dist/client/_nuxt/nicon-title-ejbxuupx.js +0 -1
  70. package/dist/client/_nuxt/nlink-h3jrz76l.js +0 -1
  71. package/dist/client/_nuxt/nloading-lhpm96ki.js +0 -1
  72. package/dist/client/_nuxt/nmarkdown-7qnv8atx.js +0 -1
  73. package/dist/client/_nuxt/nnavbar-f1l2np9t.js +0 -1
  74. package/dist/client/_nuxt/none-ju85xmqv.js +0 -1
  75. package/dist/client/_nuxt/npanel-grids-fa3ah9jo.js +0 -1
  76. package/dist/client/_nuxt/npm-eisv4i48.js +0 -1
  77. package/dist/client/_nuxt/nsection-block-nwojdml4.js +0 -1
  78. package/dist/client/_nuxt/nsection-block.css-h1lgpwgm.css +0 -1
  79. package/dist/client/_nuxt/nselect-mnlj28vi.js +0 -1
  80. package/dist/client/_nuxt/nselect-tabs-i66uosc4.js +0 -1
  81. package/dist/client/_nuxt/nsplit-pane-lj2kxwh2.js +0 -1
  82. package/dist/client/_nuxt/nsplit-pane.css-k1gopk47.css +0 -1
  83. package/dist/client/_nuxt/ntext-input-j7ulf0ma.js +0 -1
  84. package/dist/client/_nuxt/ntip-mx3dwcmh.js +0 -1
  85. package/dist/client/_nuxt/nuxt-hj3jyofn.js +0 -1
  86. package/dist/client/_nuxt/nuxt-link-nsgkom6k.js +0 -1
  87. package/dist/client/_nuxt/nuxt-logo-dead1uws.js +0 -1
  88. package/dist/client/_nuxt/open-graph-eytiti5b.js +0 -3
  89. package/dist/client/_nuxt/open-graph.css-dk03m1qz.css +0 -1
  90. package/dist/client/_nuxt/overview-fygybbrw.js +0 -1
  91. package/dist/client/_nuxt/pages-fq4mkuci.js +0 -1
  92. package/dist/client/_nuxt/payload-jw0xxl4z.js +0 -1
  93. package/dist/client/_nuxt/plugins-lou32v4a.js +0 -1
  94. package/dist/client/_nuxt/ready-ikhds7hc.js +0 -2
  95. package/dist/client/_nuxt/rolldown-runtime-f96lzs6p.js +0 -1
  96. package/dist/client/_nuxt/runtime-configs-e7x3t3tj.js +0 -1
  97. package/dist/client/_nuxt/server-route-inputs-kt7x1gp6.js +0 -1
  98. package/dist/client/_nuxt/server-routes-mr1qgqcl.js +0 -7
  99. package/dist/client/_nuxt/server-tasks-evcqaabt.js +0 -1
  100. package/dist/client/_nuxt/settings-ipg67k9i.js +0 -1
  101. package/dist/client/_nuxt/stacktrace-list-kruru2d1.js +0 -1
  102. package/dist/client/_nuxt/state-commands-cjvbhmr2.js +0 -1
  103. package/dist/client/_nuxt/state-components-dzfpv5gi.js +0 -1
  104. package/dist/client/_nuxt/state-editor-eqmkyoyc.js +0 -1
  105. package/dist/client/_nuxt/state-modules-xt0ltk0c.js +0 -1
  106. package/dist/client/_nuxt/state-routes-g66ss5o7.js +0 -1
  107. package/dist/client/_nuxt/state-schema-c04uzwtk.js +0 -1
  108. package/dist/client/_nuxt/state-tabs-ntcahhqz.js +0 -1
  109. package/dist/client/_nuxt/storage-if9cwvvr.js +0 -1
  110. package/dist/client/_nuxt/tab-icon-bw4o7q2t.js +0 -1
  111. package/dist/client/_nuxt/telemetry-gc8f0sai.js +0 -1
  112. package/dist/client/_nuxt/timeline-l8l1qdht.js +0 -31
  113. package/dist/client/_nuxt/timeline.css-m03aec2q.css +0 -1
  114. package/dist/client/_nuxt/unhead.dnki-vlv7-jmz34zx6.js +0 -1
  115. package/dist/client/_nuxt/unocss-runtime-htk43m9c.js +0 -1
  116. package/dist/client/_nuxt/utils-c5p5s7ov.js +0 -1
  117. package/dist/client/_nuxt/vendor/json-editor-vue-h1waqukq.js +0 -3862
  118. package/dist/client/_nuxt/vendor/json-editor-vue.css-lb1ewor6.css +0 -1
  119. package/dist/client/_nuxt/vendor/markdown-exit-nzr6hp55.js +0 -12
  120. package/dist/client/_nuxt/vendor/quicktype-core-lz5bp16m.js +0 -929
  121. package/dist/client/_nuxt/vendor/shiki-g3svwmfz.js +0 -152
  122. package/dist/client/_nuxt/vendor/unocss-hvwio62w.js +0 -3
  123. package/dist/client/_nuxt/vendor/unocss.css-bhad58wt.css +0 -1
  124. package/dist/client/_nuxt/vendor/vis-bjkylbfi.js +0 -30
  125. package/dist/client/_nuxt/virtual-files-epcme7qw.js +0 -1
  126. package/dist/client/_nuxt/virtual-files.css-l97kh4kx.css +0 -1
  127. package/dist/client/index.html +0 -1
  128. package/dist/client/nuxt.svg +0 -3
  129. package/dist/runtime/plugins/view/state.d.ts +0 -2
  130. package/dist/runtime/plugins/view/state.js +0 -12
@@ -6,7 +6,6 @@ import '@nuxt/devtools-kit';
6
6
  import '@vitejs/devtools-kit/node';
7
7
  import 'local-pkg';
8
8
  import './module-main.mjs';
9
- import 'node:fs';
10
9
  import 'node:os';
11
10
  import 'consola/utils';
12
11
  import 'devframe/utils/serve-static';
@@ -16,6 +15,7 @@ import '../dirs.mjs';
16
15
  import 'node:path';
17
16
  import 'node:url';
18
17
  import 'node:child_process';
18
+ import 'node:fs';
19
19
  import 'node:util';
20
20
  import 'tinyglobby';
21
21
  import 'image-meta';
@@ -1,5 +1,3 @@
1
- import fs$1, { promises, statSync, realpathSync, readFileSync, existsSync, accessSync, constants } from 'node:fs';
2
- import fs from 'node:fs/promises';
3
1
  import os, { homedir } from 'node:os';
4
2
  import { onDevtoolsReady, deprecate, registerHostDiagnostics, NUXT_DEVTOOLS_GROUP_ID } from '@nuxt/devtools-kit';
5
3
  import { logger, useNuxt, extendViteConfig, addPlugin, addVitePlugin, addTemplate, addImports } from '@nuxt/kit';
@@ -8,8 +6,10 @@ import { serveStaticNodeMiddleware } from 'devframe/utils/serve-static';
8
6
  import { join, dirname, resolve, isAbsolute } from 'pathe';
9
7
  import { searchForWorkspaceRoot } from 'vite';
10
8
  import { d as defaultAllowedExtensions, c as createDefaultTabOptions, s as setServerTasksEnabledByDefault } from '../shared/devtools.BNZC-DT8.mjs';
11
- import { runtimeDir, clientDir, packageDir } from '../dirs.mjs';
9
+ import { runtimeDir, packageDir } from '../dirs.mjs';
12
10
  import { execFile } from 'node:child_process';
11
+ import fs$1, { promises, statSync, realpathSync, readFileSync, existsSync, accessSync, constants } from 'node:fs';
12
+ import fs from 'node:fs/promises';
13
13
  import { promisify, format, inspect } from 'node:util';
14
14
  import { glob } from 'tinyglobby';
15
15
  import path, { relative, parse, dirname as dirname$1 } from 'node:path';
@@ -31,7 +31,15 @@ import { isLess } from 'verkit';
31
31
  import { DEVTOOLS_TERMINALS_DOCK_ID } from '@vitejs/devtools-kit/constants';
32
32
  import { normalizeBaseKey, normalizeKey, createStorage, builtinDrivers } from 'unstorage';
33
33
 
34
- const version$1 = "4.0.0-alpha.12";
34
+ const version$1 = "4.0.0-alpha.14";
35
+ const peerDependencies = {
36
+ "@nuxt/devtools-assets": "workspace:*",
37
+ "@nuxt/kit": "^4.0.0-0 || ^5.0.0-0",
38
+ nitro: "^3.0.0-0",
39
+ nitropack: "^2.0.0",
40
+ vite: "^8.1.5",
41
+ "vite-plugin-inspect": "catalog:prod"
42
+ };
35
43
 
36
44
  const RPC_NAMESPACE = "nuxt:devtools";
37
45
 
@@ -12001,7 +12009,16 @@ function setupRPC(nuxt, options) {
12001
12009
  }
12002
12010
 
12003
12011
  const MULTIPLE_SLASHES_RE = /\/+/g;
12004
- const DEVTOOLS_BASE_RE = /\/__NUXT_DEVTOOLS_BASE__\//g;
12012
+ const ASSETS_PACKAGE = "@nuxt/devtools-assets";
12013
+ function resolveClientAssetsSource() {
12014
+ const range = peerDependencies[ASSETS_PACKAGE];
12015
+ const name = range.startsWith("npm:") ? range.slice("npm:".length, range.lastIndexOf("@")) : ASSETS_PACKAGE;
12016
+ return {
12017
+ package: name,
12018
+ version: version$1,
12019
+ resolveFrom: import.meta.url
12020
+ };
12021
+ }
12005
12022
  async function enableModule(options, nuxt) {
12006
12023
  if (process.env.TEST || process.env.NODE_ENV === "test" || nuxt.options.test)
12007
12024
  return;
@@ -12022,10 +12039,6 @@ async function enableModule(options, nuxt) {
12022
12039
  devtoolsConfig.clientAuth = false;
12023
12040
  });
12024
12041
  }
12025
- if (options.iframeProps) {
12026
- nuxt.options.runtimeConfig.app.devtools ||= {};
12027
- nuxt.options.runtimeConfig.app.devtools.iframeProps = options.iframeProps;
12028
- }
12029
12042
  nuxt.options.imports.collectMeta = true;
12030
12043
  addPlugin({
12031
12044
  src: join(runtimeDir, "plugins/devtools.client"),
@@ -12048,6 +12061,12 @@ async function enableModule(options, nuxt) {
12048
12061
  "nuxt > @nuxt/devtools > vite-plugin-vue-tracer/client/overlay"
12049
12062
  );
12050
12063
  }
12064
+ const ROUTE_PATH = `${nuxt.options.app.baseURL || "/"}/__nuxt_devtools__`.replace(MULTIPLE_SLASHES_RE, "/");
12065
+ const ROUTE_CLIENT = `${ROUTE_PATH}/client`;
12066
+ const ROUTE_ANALYZE = `${ROUTE_PATH}/analyze`;
12067
+ const isSelfClient = resolve(nuxt.options.rootDir) === resolve(packageDir, "client");
12068
+ const clientAssetsSource = isSelfClient ? void 0 : resolveClientAssetsSource();
12069
+ const clientUrl = clientAssetsSource ? `${ROUTE_CLIENT}/` : `${nuxt.options.app.baseURL || "/"}/`.replace(MULTIPLE_SLASHES_RE, "/");
12051
12070
  const DevTools = await import('@vitejs/devtools').then((r) => r.DevTools());
12052
12071
  addVitePlugin(DevTools);
12053
12072
  let connectDevToolsKit;
@@ -12056,11 +12075,24 @@ async function enableModule(options, nuxt) {
12056
12075
  devtools: {
12057
12076
  async setup(ctx2) {
12058
12077
  if (!skipInSSR(ctx2)) {
12078
+ if (clientAssetsSource) {
12079
+ ctx2.viteServer?.middlewares.use((req, res, next) => {
12080
+ const [pathname = "", search = ""] = (req.url ?? "").split("?");
12081
+ if (pathname !== ROUTE_CLIENT)
12082
+ return next();
12083
+ res.statusCode = 302;
12084
+ res.setHeader("Location", `${ROUTE_CLIENT}/${search ? `?${search}` : ""}`);
12085
+ res.end();
12086
+ });
12087
+ if (ctx2.host.mountConnectionMeta)
12088
+ await ctx2.host.mountConnectionMeta(`${ROUTE_CLIENT}/`);
12089
+ ctx2.views.hostStatic(ROUTE_CLIENT, clientAssetsSource);
12090
+ }
12059
12091
  ctx2.docks.register({
12060
12092
  id: NUXT_DEVTOOLS_GROUP_ID,
12061
12093
  type: "group",
12062
12094
  title: "Nuxt",
12063
- icon: "/__nuxt_devtools__/client/nuxt.svg",
12095
+ icon: `${clientUrl}nuxt.svg`,
12064
12096
  category: "framework",
12065
12097
  defaultOrder: -2e3,
12066
12098
  defaultChildId: "nuxt:devtools",
@@ -12078,8 +12110,8 @@ async function enableModule(options, nuxt) {
12078
12110
  id: "nuxt:devtools",
12079
12111
  type: "iframe",
12080
12112
  title: "Nuxt DevTools",
12081
- icon: "/__nuxt_devtools__/client/nuxt.svg",
12082
- url: "/__nuxt_devtools__/client/",
12113
+ icon: `${clientUrl}nuxt.svg`,
12114
+ url: clientUrl,
12083
12115
  groupId: NUXT_DEVTOOLS_GROUP_ID,
12084
12116
  frameId: "nuxt:devtools",
12085
12117
  subTabs: { protocol: "postmessage" },
@@ -12140,7 +12172,6 @@ window.__NUXT_DEVTOOLS_TIME_METRIC__.appInit = Date.now()
12140
12172
  ctx
12141
12173
  } = setupRPC(nuxt, options);
12142
12174
  connectDevToolsKit = _connectDevToolsKit;
12143
- const clientDirExists = existsSync(clientDir);
12144
12175
  extendViteConfig((config) => {
12145
12176
  config.server ||= {};
12146
12177
  config.server.fs ||= {};
@@ -12159,31 +12190,9 @@ window.__NUXT_DEVTOOLS_TIME_METRIC__.appInit = Date.now()
12159
12190
  name: "useNuxtDevTools",
12160
12191
  from: join(runtimeDir, "use-nuxt-devtools")
12161
12192
  });
12162
- const ROUTE_PATH = `${nuxt.options.app.baseURL || "/"}/__nuxt_devtools__`.replace(MULTIPLE_SLASHES_RE, "/");
12163
- const ROUTE_CLIENT = `${ROUTE_PATH}/client`;
12164
- const ROUTE_ANALYZE = `${ROUTE_PATH}/analyze`;
12165
12193
  nuxt.hook("vite:serverCreated", (server) => {
12166
12194
  const devtoolsAnalyzeDir = join(nuxt.options.rootDir, "node_modules/.cache/nuxt-devtools/analyze");
12167
12195
  server.middlewares.use(ROUTE_ANALYZE, serveStaticNodeMiddleware(devtoolsAnalyzeDir, { single: false }));
12168
- if (clientDirExists) {
12169
- const indexHtmlPath = join(clientDir, "index.html");
12170
- const indexContent = fs.readFile(indexHtmlPath, "utf-8");
12171
- const handleStatic = serveStaticNodeMiddleware(clientDir, {
12172
- single: false
12173
- });
12174
- const handleIndex = async (res) => {
12175
- res.setHeader("Content-Type", "text/html");
12176
- res.statusCode = 200;
12177
- res.write((await indexContent).replace(DEVTOOLS_BASE_RE, `${ROUTE_CLIENT}/`));
12178
- res.end();
12179
- };
12180
- server.middlewares.use(ROUTE_CLIENT, (req, res) => {
12181
- const pathname = (req.url || "/").split("?")[0];
12182
- if (pathname === "/" || pathname === "")
12183
- return handleIndex(res);
12184
- return handleStatic(req, res, () => handleIndex(res));
12185
- });
12186
- }
12187
12196
  });
12188
12197
  await import('./plugin-metrics.mjs').then(({ setup }) => setup(ctx));
12189
12198
  if (options.dataInspector !== false)
@@ -3,8 +3,6 @@ import { addVitePlugin, logger } from '@nuxt/kit';
3
3
  import { createInstallLauncher } from '@vitejs/devtools-kit/node';
4
4
  import { isPackageExists } from 'local-pkg';
5
5
  import { R as RPC_NAMESPACE } from './module-main.mjs';
6
- import 'node:fs';
7
- import 'node:fs/promises';
8
6
  import 'node:os';
9
7
  import 'consola/utils';
10
8
  import 'devframe/utils/serve-static';
@@ -15,6 +13,8 @@ import '../dirs.mjs';
15
13
  import 'node:path';
16
14
  import 'node:url';
17
15
  import 'node:child_process';
16
+ import 'node:fs';
17
+ import 'node:fs/promises';
18
18
  import 'node:util';
19
19
  import 'tinyglobby';
20
20
  import 'image-meta';
package/dist/dirs.d.mts CHANGED
@@ -1,6 +1,4 @@
1
1
  declare const packageDir: string;
2
- declare const distDir: string;
3
2
  declare const runtimeDir: string;
4
- declare const clientDir: string;
5
3
 
6
- export { clientDir, distDir, packageDir, runtimeDir };
4
+ export { packageDir, runtimeDir };
package/dist/dirs.mjs CHANGED
@@ -2,8 +2,6 @@ import { resolve } from 'node:path';
2
2
  import { fileURLToPath } from 'node:url';
3
3
 
4
4
  const packageDir = resolve(fileURLToPath(import.meta.url), "../..");
5
- const distDir = resolve(fileURLToPath(import.meta.url), "..");
6
- const runtimeDir = resolve(distDir, "runtime");
7
- const clientDir = resolve(distDir, "client");
5
+ const runtimeDir = resolve(fileURLToPath(import.meta.url), "../runtime");
8
6
 
9
- export { clientDir, distDir, packageDir, runtimeDir };
7
+ export { packageDir, runtimeDir };
package/dist/module.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as _nuxt_schema from '@nuxt/schema';
2
- import './shared/devtools.LsRDzDTD.mjs';
2
+ import './shared/devtools.DIKI0iiX.mjs';
3
3
  import { ModuleOptions } from '@nuxt/devtools-kit/types';
4
4
  export { ModuleOptions } from '@nuxt/devtools-kit/types';
5
5
 
package/dist/module.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@nuxt/devtools",
3
3
  "configKey": "devtools",
4
- "version": "4.0.0-alpha.12",
4
+ "version": "4.0.0-alpha.14",
5
5
  "builder": {
6
6
  "@nuxt/module-builder": "1.0.3",
7
7
  "unbuild": "3.6.1"
@@ -7,10 +7,6 @@ export default defineNuxtPlugin((nuxt) => {
7
7
  try {
8
8
  if (window.__NUXT_DEVTOOLS_DISABLE__ || window.parent?.__NUXT_DEVTOOLS_DISABLE__)
9
9
  return;
10
- if (parent && window.self !== parent) {
11
- if (parent.__NUXT_DEVTOOLS_VIEW__)
12
- return;
13
- }
14
10
  } catch (e) {
15
11
  console.error("Nuxt DevTools: Failed to check parent window");
16
12
  console.error(e);
@@ -4,10 +4,8 @@ import { createHooks } from "hookable";
4
4
  import { debounce } from "perfect-debounce";
5
5
  import { events as inspectorEvents, hasData as inspectorHasData, state as inspectorState } from "vite-plugin-vue-tracer/client/overlay";
6
6
  import { computed, markRaw, nextTick, reactive, ref, shallowReactive, shallowRef, toRef, watch } from "vue";
7
- import { useAppConfig, useRuntimeConfig } from "#imports";
7
+ import { useAppConfig } from "#imports";
8
8
  import { initTimelineMetrics } from "../../function-metrics-helpers.js";
9
- import { state } from "./state.js";
10
- const MULTIPLE_SLASHES_RE = /\/+/g;
11
9
  const NUXT_DOCK_GROUP_ID = "nuxt";
12
10
  function getViteDevToolsContext() {
13
11
  return getDevToolsClientContext();
@@ -20,7 +18,6 @@ export async function setupDevToolsClient({
20
18
  timeMetric,
21
19
  router
22
20
  }) {
23
- let iframe;
24
21
  let inspector;
25
22
  const colorMode = useClientColorMode();
26
23
  const timeline = initTimelineMetrics();
@@ -28,8 +25,6 @@ export async function setupDevToolsClient({
28
25
  nuxt: markRaw(nuxt),
29
26
  hooks: createHooks(),
30
27
  inspector: getInspectorInstance(),
31
- getIframe,
32
- syncClient,
33
28
  devtools: {
34
29
  toggle() {
35
30
  const ctx = getViteDevToolsContext();
@@ -72,7 +67,6 @@ export async function setupDevToolsClient({
72
67
  router.push(path);
73
68
  },
74
69
  colorMode,
75
- frameState: state,
76
70
  $fetch: globalThis.$fetch
77
71
  },
78
72
  metrics: {
@@ -84,63 +78,6 @@ export async function setupDevToolsClient({
84
78
  revision: ref(0)
85
79
  });
86
80
  window.__NUXT_DEVTOOLS_HOST__ = client;
87
- function syncClient() {
88
- if (!client.inspector)
89
- client.inspector = getInspectorInstance();
90
- try {
91
- iframe?.contentWindow?.__NUXT_DEVTOOLS_VIEW__?.setClient(client);
92
- } catch (e) {
93
- console.error("[nuxt-devtools] Failed to connect view", e);
94
- }
95
- return client;
96
- }
97
- function getIframe() {
98
- if (!iframe) {
99
- const runtimeConfig = useRuntimeConfig();
100
- const CLIENT_BASE = "/__nuxt_devtools__/client";
101
- const CLIENT_PATH = `${runtimeConfig.app.baseURL.replace(CLIENT_BASE, "/")}${CLIENT_BASE}`.replace(MULTIPLE_SLASHES_RE, "/");
102
- const initialUrl = CLIENT_PATH + state.value.route;
103
- iframe = document.createElement("iframe");
104
- for (const [key, value] of Object.entries(runtimeConfig.app.devtools?.iframeProps || {}))
105
- iframe.setAttribute(key, String(value));
106
- iframe.id = "nuxt-devtools-iframe";
107
- iframe.src = initialUrl;
108
- iframe.onload = async () => {
109
- try {
110
- await waitForClientInjection();
111
- client.syncClient();
112
- } catch (e) {
113
- console.error("Nuxt DevTools client injection failed");
114
- console.error(e);
115
- }
116
- };
117
- }
118
- return iframe;
119
- }
120
- function waitForClientInjection(retry = 20, timeout = 300) {
121
- let lastError;
122
- const test = () => {
123
- try {
124
- return !!iframe?.contentWindow?.__NUXT_DEVTOOLS_VIEW__;
125
- } catch (e) {
126
- lastError = e;
127
- }
128
- return false;
129
- };
130
- if (test())
131
- return;
132
- return new Promise((resolve, reject) => {
133
- const interval = setInterval(() => {
134
- if (test()) {
135
- clearInterval(interval);
136
- resolve();
137
- } else if (retry-- <= 0) {
138
- clearInterval(interval);
139
- reject(lastError);
140
- }
141
- }, timeout);
142
- });
143
- }
144
81
  function getInspectorInstance() {
145
82
  if (inspector)
146
83
  return inspector;
@@ -317,7 +254,4 @@ function setupReactivity(client, router, timeMetric) {
317
254
  client.nuxt.hook("app:mounted", () => {
318
255
  refreshReactivity();
319
256
  });
320
- client.hooks.hook("devtools:navigate", (path) => {
321
- state.value.route = path;
322
- });
323
257
  }
@@ -1,4 +1,4 @@
1
- import { NuxtDevtoolsIframeClient, NuxtDevtoolsHostClient, NuxtDevtoolsGlobal, PluginMetric, TimelineMetrics, LoadingTimeMetric } from '@nuxt/devtools-kit/types';
1
+ import { NuxtDevtoolsIframeClient, NuxtDevtoolsHostClient, PluginMetric, TimelineMetrics, LoadingTimeMetric } from '@nuxt/devtools-kit/types';
2
2
 
3
3
  declare global {
4
4
  interface Window {
@@ -10,12 +10,6 @@ declare global {
10
10
  * Nuxt DevTools client for host app
11
11
  */
12
12
  __NUXT_DEVTOOLS_HOST__?: NuxtDevtoolsHostClient;
13
- /**
14
- * Nuxt DevTools for receiving host client
15
- *
16
- * @internal
17
- */
18
- __NUXT_DEVTOOLS_VIEW__?: NuxtDevtoolsGlobal;
19
13
  /**
20
14
  * Metrics for plugin loading time
21
15
  *
package/dist/types.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import './shared/devtools.LsRDzDTD.mjs';
1
+ import './shared/devtools.DIKI0iiX.mjs';
2
2
  import { ModuleStaticInfo } from '@nuxt/devtools-kit/types';
3
3
  export * from '@nuxt/devtools-kit/types';
4
4
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@nuxt/devtools",
3
3
  "type": "module",
4
- "version": "4.0.0-alpha.12",
4
+ "version": "4.0.0-alpha.14",
5
5
  "description": "The Nuxt DevTools gives you insights and transparency about your Nuxt App.",
6
6
  "license": "MIT",
7
7
  "homepage": "https://devtools.nuxt.com",
@@ -25,9 +25,13 @@
25
25
  "nitro": "^3.0.0-0",
26
26
  "nitropack": "^2.0.0",
27
27
  "vite": "^8.1.5",
28
- "vite-plugin-inspect": "^12.0.2"
28
+ "vite-plugin-inspect": "^12.0.2",
29
+ "@nuxt/devtools-assets": "4.0.0-alpha.14"
29
30
  },
30
31
  "peerDependenciesMeta": {
32
+ "@nuxt/devtools-assets": {
33
+ "optional": true
34
+ },
31
35
  "nitro": {
32
36
  "optional": true
33
37
  },
@@ -59,7 +63,7 @@
59
63
  "unstorage": "^1.17.5",
60
64
  "verkit": "^0.4.0",
61
65
  "vite-plugin-vue-tracer": "^1.5.0",
62
- "@nuxt/devtools-kit": "4.0.0-alpha.12"
66
+ "@nuxt/devtools-kit": "4.0.0-alpha.14"
63
67
  },
64
68
  "devDependencies": {
65
69
  "@antfu/utils": "^9.3.0",
@@ -74,10 +78,10 @@
74
78
  "@parcel/watcher": "^2.6.0",
75
79
  "@types/markdown-it-link-attributes": "^3.0.5",
76
80
  "@unhead/schema": "^3.3.2",
77
- "@unocss/nuxt": "^66.7.5",
78
- "@unocss/preset-icons": "^66.7.5",
79
- "@unocss/preset-uno": "^66.7.5",
80
- "@unocss/runtime": "^66.7.5",
81
+ "@unocss/nuxt": "^66.8.0",
82
+ "@unocss/preset-icons": "^66.8.0",
83
+ "@unocss/preset-uno": "^66.8.0",
84
+ "@unocss/runtime": "^66.8.0",
81
85
  "@vitejs/devtools": "^0.5.1",
82
86
  "@vueuse/nuxt": "^14.4.0",
83
87
  "cronstrue": "^3.24.0",
@@ -104,19 +108,20 @@
104
108
  "ua-parser-modern": "^0.1.1",
105
109
  "unbuild": "^3.6.1",
106
110
  "unimport": "^6.4.0",
107
- "unocss": "^66.7.5",
111
+ "unocss": "^66.8.0",
108
112
  "unplugin-vue": "^7.2.0",
109
113
  "unplugin-vue-markdown": "^32.0.0",
110
114
  "vanilla-jsoneditor": "^3.13.0",
111
115
  "vis-data": "^8.0.5",
112
- "vis-network": "^10.1.1",
116
+ "vis-network": "^10.1.2",
113
117
  "vite-plugin-inspect": "^12.0.2",
114
118
  "vue-tsc": "^3.3.10",
115
- "vue-virtual-scroller": "^3.0.5"
119
+ "vue-virtual-scroller": "^3.0.5",
120
+ "@nuxt/devtools-assets": "4.0.0-alpha.14"
116
121
  },
117
122
  "scripts": {
118
- "build": "pnpm dev:prepare && pnpm build:module && pnpm build:client",
119
- "build:client": "nuxi generate client && node scripts/copy-client.mjs",
123
+ "build": "pnpm dev:prepare && pnpm build:module",
124
+ "build:client": "pnpm dev:prepare && nuxi generate client && node scripts/copy-client.mjs",
120
125
  "build:module": "nuxt-build-module build",
121
126
  "stub": "nuxt-build-module build --stub",
122
127
  "dev": "nuxi dev client",
@@ -1 +0,0 @@
1
- <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><script type="importmap">{"imports":{"#entry":"/__NUXT_DEVTOOLS_BASE__/_nuxt/cj10ghel.js"}}</script><link rel="stylesheet" href="/__NUXT_DEVTOOLS_BASE__/_nuxt/entry.css-meav5jmw.css" crossorigin><link rel="stylesheet" href="/__NUXT_DEVTOOLS_BASE__/_nuxt/vendor/json-editor-vue.css-lb1ewor6.css" crossorigin><link rel="stylesheet" href="/__NUXT_DEVTOOLS_BASE__/_nuxt/vendor/unocss.css-bhad58wt.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/cj10ghel.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/nuxt-hj3jyofn.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/vendor/json-editor-vue-h1waqukq.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/rolldown-runtime-f96lzs6p.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/nicon-ccnh6x2r.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/ready-ikhds7hc.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/dist-2c3gpsw0.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/vendor/shiki-g3svwmfz.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/unhead.dnki-vlv7-jmz34zx6.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/composables-li5sexni.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/nuxt-link-nsgkom6k.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/utils-c5p5s7ov.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/dist-gklva25a.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/npm-eisv4i48.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/vendor/unocss-hvwio62w.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/editor-cv8lunmj.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/state-routes-g66ss5o7.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/telemetry-gc8f0sai.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/nloading-lhpm96ki.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/_plugin-vue_export-helper-d9irwgla.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/ntext-input-j7ulf0ma.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/tab-icon-bw4o7q2t.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/nbutton-mxt3cxcx.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/ndialog-jnj3j8xn.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/ncard-kyrmtdmn.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/fuse-ipb957gg.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/state-tabs-ntcahhqz.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/state-commands-cjvbhmr2.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/nuxt-logo-dead1uws.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/dialog-i2683h8g.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/state-schema-c04uzwtk.js"><script type="module" src="/__NUXT_DEVTOOLS_BASE__/_nuxt/cj10ghel.js" crossorigin></script><link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/default-m4s11ttb.js"><link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/full-kcw32vsy.js"><link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/none-ju85xmqv.js"><link rel="prefetch" as="style" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/ncode-block.css-ivoxtfjk.css"><link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/data-schema-drawer-bvbzeooy.js"><link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/nselect-mnlj28vi.js"><link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/ndropdown-hviylh0n.js"><link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/ncode-block-ltlsxf5u.js"><link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/client-iet3i2jx.js"><link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/ndrawer-ll4inus6.js"><link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/vendor/quicktype-core-lz5bp16m.js"><link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/unocss-runtime-htk43m9c.js"><link rel="prefetch" as="style" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/error-404.css-kdbb3rb9.css"><link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/error-404-dxv9ojo4.js"><link rel="prefetch" as="style" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/error-500.css-hwq7jdp9.css"><link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/error-500-modjju3x.js"></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__NUXT_DEVTOOLS_BASE__/",buildId:"1183fbc7-b7db-4404-9ee4-7571849e8ffe",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1787201069258,false]</script></body></html>
@@ -1 +0,0 @@
1
- <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><script type="importmap">{"imports":{"#entry":"/__NUXT_DEVTOOLS_BASE__/_nuxt/cj10ghel.js"}}</script><link rel="stylesheet" href="/__NUXT_DEVTOOLS_BASE__/_nuxt/entry.css-meav5jmw.css" crossorigin><link rel="stylesheet" href="/__NUXT_DEVTOOLS_BASE__/_nuxt/vendor/json-editor-vue.css-lb1ewor6.css" crossorigin><link rel="stylesheet" href="/__NUXT_DEVTOOLS_BASE__/_nuxt/vendor/unocss.css-bhad58wt.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/cj10ghel.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/nuxt-hj3jyofn.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/vendor/json-editor-vue-h1waqukq.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/rolldown-runtime-f96lzs6p.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/nicon-ccnh6x2r.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/ready-ikhds7hc.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/dist-2c3gpsw0.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/vendor/shiki-g3svwmfz.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/unhead.dnki-vlv7-jmz34zx6.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/composables-li5sexni.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/nuxt-link-nsgkom6k.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/utils-c5p5s7ov.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/dist-gklva25a.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/npm-eisv4i48.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/vendor/unocss-hvwio62w.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/editor-cv8lunmj.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/state-routes-g66ss5o7.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/telemetry-gc8f0sai.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/nloading-lhpm96ki.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/_plugin-vue_export-helper-d9irwgla.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/ntext-input-j7ulf0ma.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/tab-icon-bw4o7q2t.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/nbutton-mxt3cxcx.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/ndialog-jnj3j8xn.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/ncard-kyrmtdmn.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/fuse-ipb957gg.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/state-tabs-ntcahhqz.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/state-commands-cjvbhmr2.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/nuxt-logo-dead1uws.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/dialog-i2683h8g.js"><link rel="modulepreload" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/state-schema-c04uzwtk.js"><script type="module" src="/__NUXT_DEVTOOLS_BASE__/_nuxt/cj10ghel.js" crossorigin></script><link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/default-m4s11ttb.js"><link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/full-kcw32vsy.js"><link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/none-ju85xmqv.js"><link rel="prefetch" as="style" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/ncode-block.css-ivoxtfjk.css"><link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/data-schema-drawer-bvbzeooy.js"><link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/nselect-mnlj28vi.js"><link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/ndropdown-hviylh0n.js"><link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/ncode-block-ltlsxf5u.js"><link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/client-iet3i2jx.js"><link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/ndrawer-ll4inus6.js"><link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/vendor/quicktype-core-lz5bp16m.js"><link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/unocss-runtime-htk43m9c.js"><link rel="prefetch" as="style" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/error-404.css-kdbb3rb9.css"><link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/error-404-dxv9ojo4.js"><link rel="prefetch" as="style" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/error-500.css-hwq7jdp9.css"><link rel="prefetch" as="script" crossorigin href="/__NUXT_DEVTOOLS_BASE__/_nuxt/error-500-modjju3x.js"></head><body><div id="__nuxt"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__NUXT_DEVTOOLS_BASE__/",buildId:"1183fbc7-b7db-4404-9ee4-7571849e8ffe",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1787201069273,false]</script></body></html>
@@ -1 +0,0 @@
1
- import{C as e,H as t,h as n}from"./vendor/json-editor-vue-h1waqukq.js";import{t as r}from"./composables-ioamscf4.js";var i={"h-screen":``,"w-screen":``,"bg-black":``},a=e({__name:`__blank`,setup(e){return r({layout:`none`}),(e,r)=>(t(),n(`div`,i))}});export{a as default};
@@ -1 +0,0 @@
1
- var e=(e,t)=>{let n=e.__vccOpts||e;for(let[e,r]of t)n[e]=r;return n};export{e as t};
@@ -1 +0,0 @@
1
- import{a as e}from"./nuxt-hj3jyofn.js";import{C as t,S as n,h as r}from"./nicon-ccnh6x2r.js";import{C as i,H as a,Qt as o,Yt as s,a as c,b as l,bt as u,ct as d,d as f,f as p,h as m,kt as h,lt as g,m as _,p as v,q as y,x as b}from"./vendor/json-editor-vue-h1waqukq.js";import{xt as x}from"./ready-ikhds7hc.js";import{_ as S,g as C}from"./utils-c5p5s7ov.js";import{t as w}from"./npm-eisv4i48.js";import{t as T}from"./_plugin-vue_export-helper-d9irwgla.js";import{t as E}from"./ntext-input-j7ulf0ma.js";import{t as D}from"./nbutton-mxt3cxcx.js";import{t as O}from"./ndialog-jnj3j8xn.js";import{t as k}from"./state-commands-cjvbhmr2.js";import{t as A}from"./telemetry-gc8f0sai.js";import{t as j}from"./ncode-block-ltlsxf5u.js";import{t as M}from"./composables-ioamscf4.js";import{t as N}from"./filepath-item-m6tglha3.js";import{t as P}from"./npanel-grids-fa3ah9jo.js";import{t as F}from"./nsplit-pane-lj2kxwh2.js";import{t as I}from"./ntip-mx3dwcmh.js";import{t as L}from"./ncheckbox-fbnq3guy.js";import{t as R}from"./help-fab-sp6luyzp.js";var z={"h-full":``,grid:`~ rows-[max-content_1fr]`},B={flex:`~ wrap`,"w-full":``},V=[`onClick`],H={key:0,flex:`~ col gap-4 items-center justify-center`,p4:``},U={grid:`~ cols-[30px_1fr] gap-x-2 gap-y-3 items-center justify-center`,"w-100":``},W=`/__nuxt_devtools__/client`,G=Object.assign(i({__name:`BuildAnalyzeDetails`,props:{current:{},prev:{}},setup(n){let i=n,v=`${e().app.baseURL.replace(W,`/`)}/__nuxt_devtools__/analyze/`.replace(/\/+/g,`/`),S=f(()=>{let e=[{name:`Overview`,id:`overview`}];return i.current.features.bundleClient&&e.push({name:`Client Bundle`,id:`bundle-client`}),i.current.features.bundleNitro&&e.push({name:`Nitro Bundle`,id:`bundle-nitro`}),i.current.features.viteInspect&&e.push({name:`Vite Inspect`,id:`vite-inspect`}),e}),C=u(S.value[0]);function w(e){return`${((e.endTime-e.startTime)/1e3).toFixed(1)}s`}function T(e){return e<1024?`${e}B`:e<1048576?`${(e/1024).toFixed(1)}KB`:e<1073741824?`${(e/1024/1024).toFixed(1)}MB`:`${(e/1024/1024/1024).toFixed(1)}GB`}async function E(e){return r.clearAnalyzeBuilds([e])}return(e,r)=>{let i=N,u=D;return a(),m(`div`,z,[p(`div`,B,[(a(!0),m(c,null,y(S.value,(e,t)=>(a(),m(`button`,{key:t,px4:``,py2:``,border:`r base`,hover:`bg-active`,class:s(e.id===C.value?.id?``:`border-b`),onClick:t=>C.value=e},[p(`div`,{class:s(e.id===C.value?.id?``:`op30`)},o(e.name),3)],10,V))),128)),r[1]||=p(`div`,{border:`b base`,"flex-auto":``},null,-1)]),C.value?.id===`overview`?(a(),m(`div`,H,[r[15]||=p(`div`,{"flex-auto":``},null,-1),p(`div`,U,[r[10]||=p(`div`,{"i-carbon-commit":``,"text-xl":``},null,-1),p(`div`,null,[r[2]||=p(`div`,{"text-sm":``,op50:``},` Name `,-1),p(`div`,null,o(n.current.name),1)]),r[11]||=p(`div`,{"i-carbon-time":``,"text-xl":``},null,-1),p(`div`,null,[r[3]||=p(`div`,{"text-sm":``,op50:``},` Build duration `,-1),p(`div`,null,o(w(n.current)),1)]),n.current.size?.clientBundle?(a(),m(c,{key:0},[r[5]||=p(`div`,{"i-carbon-cics-program":``,"text-xl":``},null,-1),p(`div`,null,[r[4]||=p(`div`,{"text-sm":``,op50:``},` Client bundle size `,-1),p(`div`,null,o(T(n.current.size.clientBundle)),1)])],64)):_(``,!0),n.current.size?.nitroBundle?(a(),m(c,{key:1},[r[7]||=p(`div`,{"i-carbon-bare-metal-server":``,"text-xl":``},null,-1),p(`div`,null,[r[6]||=p(`div`,{"text-sm":``,op50:``},` Nitro bundle size `,-1),p(`div`,null,o(T(n.current.size.nitroBundle)),1)])],64)):_(``,!0),r[12]||=p(`div`,{"i-carbon-edge-node":``,"text-xl":``},null,-1),p(`div`,null,[r[8]||=p(`div`,{"text-sm":``,op50:``},` Built `,-1),p(`div`,null,o(h(t)(new Date(n.current.endTime))),1)]),r[13]||=p(`div`,{"i-carbon:folder-parent":``,"text-xl":``},null,-1),p(`div`,null,[r[9]||=p(`div`,{"text-sm":``,op50:``},` Report Path `,-1),b(i,{filepath:n.current.analyzeDir},null,8,[`filepath`])])]),r[16]||=p(`div`,{"flex-auto":``},null,-1),b(u,{n:`rose`,icon:`carbon-delete`,onClick:r[0]||=e=>E(n.current.name)},{default:d(()=>[...r[14]||=[l(` Delete this report `,-1)]]),_:1})])):_(``,!0),r._lazyshow1||C.value?.id===`bundle-client`?(r._lazyshow1=!0,a(),m(c,null,[g(p(`iframe`,{src:`${h(v)}${n.current.slug}/client.html`,"h-full":``,"w-full":``},null,8,[`src`]),[[x,C.value?.id===`bundle-client`]])],64)):_(`v-show-if`,!0),r._lazyshow2||C.value?.id===`bundle-nitro`?(r._lazyshow2=!0,a(),m(c,null,[g(p(`iframe`,{src:`${h(v)}${n.current.slug}/nitro.html`,"h-full":``,"w-full":``},null,8,[`src`]),[[x,C.value?.id===`bundle-nitro`]])],64)):_(`v-show-if`,!0),r._lazyshow3||C.value?.id===`vite-inspect`?(r._lazyshow3=!0,a(),m(c,null,[g(p(`iframe`,{src:`${h(v)}${n.current.slug}/.vite-inspect/`,"h-full":``,"w-full":``},null,8,[`src`]),[[x,C.value?.id===`vite-inspect`]])],64)):_(`v-show-if`,!0)])}}}),{__name:`BuildAnalyzeDetails`}),K={},q={class:`markdown-body`};function J(e,t){return a(),m(`div`,q,[...t[0]||=[p(`template`,null,[p(`div`,{class:`markdown-body`},[p(`h1`,null,`Build Analyze`),p(`p`,null,[l(`DevTools provides a build analyze tool to help you understand the size of your app in production. Whenever you start a new build, it runs the command `),p(`code`,{"v-pre":``},`nuxt build --analyze`),l(` and present the output data directly in DevTools for easy browsing and comparing.`)])])],-1)]])}var Y=T(K,[[`render`,J]]),X={flex:`~ col`},Z=[`onClick`],Q={flex:`~ gap-1 items-center wrap`,"w-full":``,"text-sm":``,op60:``},$={flex:`~ items-center justify-center wrap`,p4:``},ee={flex:`~ col gap-1`,"w-250":``,p4:``},te={flex:`~ gap-3`,mt2:``,"justify-end":``},ne=i({__name:`analyze-build`,setup(e){M({icon:`carbon-edge-node`,title:`Build Analyze`,layout:`full`,category:`analyze`,show(){return w(`^3.5.0`)}});let i=n(),g=S(),x=C(`analyze-build:slug`,``),T=f(()=>g.value?.builds.find(e=>e.slug===x.value)??g.value?.builds[0]),N=u(!1),z=u(``),B=f(()=>g.value?.builds.some(e=>e.name===z.value.trim()));async function V(){if(z.value=await r.generateAnalyzeBuildName(),!await i.start())return;A(`analyze-build:start`);let e=await r.startAnalyzeBuild(z.value);N.value&&r.revealTerminal(e)}function H(e){return`${((e.endTime-e.startTime)/1e3).toFixed(1)}s`}function U(){g.value?.activeSessionId&&r.revealTerminal(g.value.activeSessionId)}return k(()=>[{id:`action:analyze-build: start`,title:`Start a new analyze build`,icon:`i-carbon-edge-node`,action:V}]),(e,n)=>{let r=D,u=G,f=P,S=F,C=E,w=I,k=j,A=L,M=O,W=Y,K=R;return a(),m(c,null,[b(S,{"left-size":30},{left:d(()=>[p(`div`,X,[(a(!0),m(c,null,y(h(g)?.builds,e=>(a(),m(c,{key:e.slug},[p(`button`,{flex:`~ col gap1`,p3:``,"hover:bg-active":``,class:s(e.slug===T.value?.slug?`text-primary bg-active`:``),onClick:t=>x.value=e.slug},[p(`code`,null,o(e.name),1),p(`div`,Q,[n[4]||=p(`div`,{"i-carbon-time":``},null,-1),p(`span`,null,o(H(e)),1),n[5]||=p(`div`,{"flex-auto":``},null,-1),p(`span`,null,o(h(t)(new Date(e.endTime))),1)])],10,Z),n[6]||=p(`div`,{"x-divider":``},null,-1)],64))),128)),p(`div`,$,[h(g)?.isBuilding?(a(),v(r,{key:1,n:`primary`,icon:`carbon-circle-dash animate-spin`,title:`Open the output in the Terminals dock`,onClick:n[1]||=e=>U()},{default:d(()=>[...n[8]||=[l(` Building... `,-1)]]),_:1})):(a(),v(r,{key:0,n:`primary`,icon:`carbon-edge-node`,onClick:n[0]||=e=>V()},{default:d(()=>[...n[7]||=[l(` Start a new build `,-1)]]),_:1}))])])]),right:d(()=>[T.value?(a(),v(u,{key:0,current:T.value},null,8,[`current`])):(a(),v(f,{key:1}))]),_:1}),b(h(i),null,{default:d(({resolve:e})=>[b(M,{"model-value":!0,onClose:t=>e(!1)},{default:d(()=>[p(`div`,ee,[n[13]||=p(`h3`,{class:`text-lg font-medium leading-6`,mb2:``},` Start analyze build? `,-1),n[14]||=p(`p`,{op50:``},` Enter the name of the build: `,-1),b(C,{modelValue:z.value,"onUpdate:modelValue":n[2]||=e=>z.value=e,placeholder:`Build name`},null,8,[`modelValue`]),B.value?(a(),v(w,{key:0,"n-orange":``},{default:d(()=>[...n[9]||=[l(` A build with the same name already exists, continue would overrides the previous build result. `,-1)]]),_:1})):_(``,!0),n[15]||=p(`div`,{my3:``,"x-divider":``},null,-1),n[16]||=p(`p`,{op50:``},` The following command will be executed in your terminal: `,-1),b(k,{code:`npx nuxi analyze --no-serve --name=${z.value}`,lang:`bash`,px4:``,py2:``,border:`~ base rounded`,lines:!1},null,8,[`code`]),b(A,{modelValue:N.value,"onUpdate:modelValue":n[3]||=e=>N.value=e,mt2:``,n:`primary`},{default:d(()=>[...n[10]||=[l(` Open the Terminals dock `,-1)]]),_:1},8,[`modelValue`]),p(`div`,te,[b(r,{onClick:t=>e(!1)},{default:d(()=>[...n[11]||=[l(` Cancel `,-1)]]),_:1},8,[`onClick`]),b(r,{n:`solid primary`,onClick:t=>e(!0)},{default:d(()=>[...n[12]||=[l(` Start `,-1)]]),_:1},8,[`onClick`])])])]),_:2},1032,[`onClose`])]),_:1}),b(K,null,{default:d(()=>[b(W)]),_:1})],64)}}});export{ne as default};
@@ -1,6 +0,0 @@
1
- import{B as e,I as t,L as n,R as r,T as i,_ as a,b as o,h as s,j as c,n as l,q as u,t as d,y as f}from"./nicon-ccnh6x2r.js";import{C as p,H as m,J as h,Qt as g,X as _,Yt as v,Zt as y,a as b,b as x,bt as S,ct as C,d as w,f as T,h as E,ht as D,kt as O,lt as k,m as A,p as j,q as M,x as N}from"./vendor/json-editor-vue-h1waqukq.js";import{St as P,bt as F}from"./ready-ikhds7hc.js";import{j as I,w as L}from"./utils-c5p5s7ov.js";import{i as R,n as ee,t as te}from"./editor-cv8lunmj.js";import{t as z}from"./ntext-input-j7ulf0ma.js";import{t as B}from"./nbutton-mxt3cxcx.js";import{t as ne}from"./ndialog-jnj3j8xn.js";import{t as V}from"./fuse-ipb957gg.js";import{t as H}from"./telemetry-gc8f0sai.js";import{t as U}from"./ndropdown-hviylh0n.js";import{t as W}from"./ndrawer-ll4inus6.js";import{t as G}from"./composables-ioamscf4.js";import{t as re}from"./filepath-item-m6tglha3.js";import{t as K}from"./ncheckbox-fbnq3guy.js";import{t as q}from"./nnavbar-f1l2np9t.js";import{t as J}from"./nsection-block-nwojdml4.js";import{t as Y}from"./code-snippets-jzjkfinz.js";var X={key:0,"h-full":``,"w-full":``,flex:``,"items-center":``,"justify-center":``},ie={for:`drop-zone-input`,"text-3xl":``,hover:`text-green cursor-pointer`,"transition-all":``},ae={key:1,relative:``,"h-full":``,"w-full":``,grid:`~ rows-[max-content_1fr_max-content]`},oe={grid:`~ cols-minmax-8rem gap-8`,"overflow-auto":``,p6:``},se={flex:``,"items-center":``,"justify-center":``,"of-hidden":``,rounded:``,"rounded-t-lg":``,"bg-active":``,"object-cover":``,class:`aspect-1/1`,border:`~ base`},ce=[`src`],le={flex:`~ gap1`,"items-center":``},ue={flex:`~ gap-2`,"items-center":``,"justify-center":``,p8:``},de=Object.assign(p({__name:`AssetDropZone`,props:{modelValue:{type:Boolean,required:!0},folder:{type:String,required:!0}},setup(e){let t=e,n=/\.\w+$/,i=r(t,`modelValue`),o=S(),l=S([]);function u(e){o.value=e.target,i.value=!0}function p(e){e.target===o.value&&(i.value=!1)}function h(e){e.preventDefault()}function g(e){e.preventDefault(),y(e.dataTransfer.files)}function y(e){let t=[...e||[]];if(t.length){let e=[],n=l.value.map(e=>e.name);for(let r of t)if(n.includes(r.name)){let t=1,[i,a]=r.name.split(`.`);for(;n.includes(`${i} (${t}).${a}`);)t++;let o=`${i}-${t}.${a}`,s=new Blob([r],{type:r.type}),c=new File([s],o,{lastModified:Date.now()});e.push(c),n.push(o)}else r.type===``&&R({message:`Folders are not supported yet`,icon:`carbon:face-dissatisfied`,classes:`text-orange`}),e.push(r);l.value=[...l.value,...e]}}async function w(){if(a.value||f.value)return;H(`assets:upload`);let e=[];for(let t of l.value){let n=new FileReader;n.readAsDataURL(t);let r=(await new Promise(e=>{n.onload=()=>e(n.result)})).split(`;base64,`).pop();e.push({path:t.name,encoding:`base64`,content:r})}await s.writeStaticAssets([...e],t.folder).then(()=>{L(),R({message:`Files uploaded successfully!`,icon:`i-carbon:checkmark`})}).catch(e=>{L(),R({message:`Error uploading files: ${e?.message??`unknown`}`,icon:`i-carbon-warning`,classes:`text-red`})}),i.value=!1}function D(e){l.value?.splice(e,1)}function P(e){return URL.createObjectURL(e)}function F(e,t){let[r,i]=e.name.split(`.`),a=t.replace(n,``),o=`${a}.${i}`;return a.length===0?(alert(`File name must be at least 1 characters long`),r):(Object.defineProperty(e,"name",{value:o,writable:!1}),l.value.splice(l.value.indexOf(e),1,e),e)}function I(){l.value=[]}function L(){i.value=!1,I()}return c(`dragenter`,u),c(`dragleave`,p),c(`dragover`,h),c(`drop`,g),(e,t)=>{let n=B,r=d,a=z,o=_(`tooltip`);return m(),E(`div`,{fixed:``,"bottom-0":``,"left-13":``,"right-0":``,"top-0":``,"z-10":``,"backdrop-blur-20":``,"transition-all":``,class:v(O(i)?`opacity-100 visible`:`opacity-0 invisible`)},[k(N(n,{icon:`carbon-close`,title:`Close`,absolute:``,"right-5":``,"top-5":``,"z-20":``,"text-xl":``,border:!1,onClick:L},null,512),[[o,`Close`,void 0,{"bottom-end":!0}]]),l.value?.length?(m(),E(`div`,ae,[t[4]||=T(`div`,{px6:``,py6:``},[T(`h1`,{"text-2xl":``},` Upload `),T(`p`,{"text-sm":``,op50:``},` Drag and drop files to upload `)],-1),T(`div`,oe,[(m(!0),E(b,null,M(l.value,(e,t)=>(m(),E(`div`,{key:e.name,flex:`~ col gap-2`,relative:``,"h-50":``,"w-40":``,"items-center":``},[T(`div`,se,[T(`img`,{"h-full":``,"w-full":``,"rounded-t-lg":``,"object-cover":``,src:P(e)},null,8,ce)]),T(`div`,le,[N(a,{n:`xs`,"h-full":``,"flex-auto":``,"model-value":e.name,"onUpdate:modelValue":t=>F(e,t.target.value)},null,8,[`model-value`,`onUpdate:modelValue`]),N(n,{n:`red`,icon:`carbon-trash-can`,"h-full":``,"flex-none":``,title:`Remove file`,onClick:e=>D(t)},null,8,[`onClick`])])]))),128))]),T(`div`,ue,[l.value.length?(m(),j(n,{key:0,n:`red`,onClick:I},{default:C(()=>[N(r,{icon:`carbon-clean`}),t[2]||=x(` Clear `,-1)]),_:1})):A(``,!0),N(n,{disabled:!l.value.length,n:`primary solid`,onClick:w},{default:C(()=>[N(r,{icon:`carbon-cloud-upload`}),t[3]||=x(` Upload `,-1)]),_:1},8,[`disabled`])])])):(m(),E(`div`,X,[T(`label`,ie,[N(r,{icon:`carbon-cloud-upload`,"mr-2":``}),t[1]||=x(` Drop files here or click to select `,-1)]),T(`input`,{id:`drop-zone-input`,type:`file`,multiple:``,hidden:``,onChange:t[0]||=e=>y(e.target.files)},null,32)]))],2)}}}),{__name:`AssetDropZone`}),fe=Object.assign(p({__name:`AssetFontPreview`,props:{asset:{}},setup(e){let n=e,r=w(()=>`devtools-assets-${u(n.asset)}`);return t(w(()=>`
2
- @font-face {
3
- font-family: '${r.value}';
4
- src: url('${n.asset.publicPath}');
5
- }
6
- `)),(e,t)=>(m(),E(`div`,{"of-hidden":``,style:y({fontFamily:`'${r.value}'`})},` Aa Bb Cc Dd Ee Ff Gg Hh Ii Jj Kk Ll Mm Nn Oo Pp Qq Rr Ss Tt Uu Vv Ww Xx Yy Zz `,4))}}),{__name:`AssetFontPreview`}),pe={flex:``,"items-center":``,"justify-center":``,"of-hidden":``,"bg-active":``,"object-cover":``,p1:``},me=[`src`],he={key:2,"i-carbon-document":``,"text-3xl":``,op20:``},ge={key:3,"w-full":``,"self-start":``,p4:``},_e=[`textContent`],ve={key:4},ye=[`src`,`autoplay`,`controls`],be={key:5},xe={key:0,"i-carbon-volume-up":``,"text-3xl":``,op20:``},Se=[`src`],Ce={key:6,"i-carbon-help":``,"text-3xl":``,op20:``},Z=Object.assign(p({__name:`AssetPreview`,props:{asset:{},textContent:{},detail:{type:Boolean}},setup(e){return(t,n)=>{let r=fe;return m(),E(`div`,pe,[e.asset.type===`image`?(m(),E(`img`,{key:0,src:e.asset.publicPath},null,8,me)):e.asset.type===`font`?(m(),j(r,{key:e.asset.publicPath,asset:e.asset,"self-stretch":``,p2:``,"text-2xl":``},null,8,[`asset`])):e.asset.type===`text`&&!e.textContent?(m(),E(`div`,he)):e.asset.type===`text`&&e.textContent?(m(),E(`div`,ge,[T(`pre`,{"max-h-10rem":``,"of-hidden":``,"text-xs":``,"font-mono":``,textContent:g(e.textContent)},null,8,_e)])):e.asset.type===`video`?(m(),E(`div`,ve,[T(`video`,{src:e.asset.publicPath,autoplay:e.detail,controls:e.detail},null,8,ye)])):e.asset.type===`audio`?(m(),E(`div`,be,[e.detail?(m(),E(`audio`,{key:1,src:e.asset.publicPath,controls:``},null,8,Se)):(m(),E(`div`,xe))])):(m(),E(`div`,Ce))])}}}),{__name:`AssetPreview`}),we={relative:``,flex:`~ col gap-1`,hover:`bg-active`,"items-center":``,"of-hidden":``,rounded:``,p2:``},Te={"w-full":``,"of-hidden":``,truncate:``,"ws-nowrap":``,"text-center":``,"text-xs":``},Ee=Object.assign(p({__name:`AssetGridItem`,props:{asset:{},folder:{}},setup(e){let t=e,n=w(()=>t.folder&&t.asset.path.startsWith(t.folder)?t.asset.path.slice(t.folder.length):t.asset.path);return(t,r)=>{let i=d,a=Z;return m(),E(`button`,we,[e.asset.layer?(m(),j(i,{key:0,icon:`i-carbon-layers`,absolute:``,"right-4":``,"top-4":``,"bg-primary":``})):A(``,!0),N(a,{"h-30":``,"w-30":``,rounded:``,border:`~ base`,asset:e.asset},null,8,[`asset`]),T(`div`,Te,g(n.value),1)])}}}),{__name:`AssetGridItem`}),Q=Object.assign(p({__name:`AssetListItem`,props:{item:{},index:{default:0},modelValue:{}},setup(e,{emit:t}){let n=e,i=r(n,`modelValue`,t,{passive:!0}),a=w(()=>n.item?.children?.length),o=S(!0),s=w(()=>a.value?`i-carbon-folder`:n.item.type===`image`?`i-carbon-image`:n.item.type===`video`?`i-carbon-video`:n.item.type===`audio`?`i-carbon-volume-up`:n.item.type===`font`?`i-carbon-text-small-caps`:n.item.type===`text`?`i-carbon-document`:n.item.type===`json`?`i-carbon-json`:`i-carbon-document-blank`);return(t,n)=>{let r=d,c=Q;return m(),E(`div`,null,[T(`button`,{flex:`~ gap-2`,"w-full":``,"items-center":``,hover:`bg-active`,px4:``,py1:``,style:y({paddingLeft:`calc(1rem + ${e.index*1.5}em)`}),class:v({"bg-active":!a.value&&O(i)?.filePath===e.item?.filePath}),border:`b base`,onClick:n[0]||=t=>a.value?o.value=!o.value:i.value=e.item},[T(`div`,{class:v(s.value)},null,2),T(`span`,{class:v({"flex items-center":a.value}),"flex-auto":``,"text-start":``,"text-sm":``,"font-mono":``},[x(g(e.item.path)+` `,1),e.item.layer?(m(),j(r,{key:0,icon:`i-carbon-layers`,"bg-primary":``})):A(``,!0)],2),a.value?(m(),j(r,{key:0,icon:`carbon:chevron-right`,"transform-rotate":o.value?90:0,transition:``},null,8,[`transform-rotate`])):A(``,!0)],6),o.value?h(t.$slots,`default`,{},()=>[(m(!0),E(b,null,M(e.item?.children,t=>(m(),j(c,{key:t.filepath,modelValue:O(i),"onUpdate:modelValue":n[1]||=e=>D(i)?i.value=e:null,item:t,index:e.index+1},null,8,[`modelValue`,`item`,`index`]))),128))],void 0,0):A(``,!0)])}}}),{__name:`AssetListItem`}),De={flex:`~ col gap-4`,"min-h-full":``,"w-full":``,"of-hidden":``,p4:``},Oe={flex:`~`,"items-center":``,"justify-center":``},ke={"max-w-full":``,"w-full":``,"table-fixed":``},Ae={flex:`~ gap-1`,"w-full":``,"items-center":``},je={flex:`~ gap-1`,"w-full":``,"items-center":``,"of-hidden":``},Me={"flex-auto":``,"of-hidden":``,truncate:``,"ws-pre":``,"font-mono":``},Ne={capitalize:``},Pe={key:0},Fe={op70:``},Ie={flex:`~ gap2 wrap`},Le={flex:`~ col gap-4`,"min-h-full":``,"w-full":``,"of-hidden":``,p8:``},Re={flex:`~ gap2 wrap justify-center`},ze={flex:`~ col gap-4`,"min-h-full":``,"w-full":``,"of-hidden":``,p8:``},Be={flex:`~ gap2 wrap justify-center`},Ve={flex:`~ col gap-4`,"min-h-full":``,"w-full":``,"of-hidden":``,p4:``},$={flex:``,"justify-end":``,"gap-4":``},He=Object.assign(p({__name:`AssetDetails`,props:{modelValue:{}},setup(e,{emit:t}){let i=r(e,`modelValue`,t,{passive:!0}),a=o(async()=>{if(i.value.type===`image`)return s.getImageMeta(i.value.filePath)}),c=S(!1),l=S(),u=S(0),d=o(async()=>{if(i.value.type!==`text`)return;u.value;let e=await s.getTextAssetContent(i.value.filePath);return l.value=e,e});async function f(){if(d.value!==l.value)try{await s.writeStaticAssets([{path:i.value.path,content:l.value,override:!0}],``),c.value=!1,u.value++,R({message:`Updated`,icon:`i-carbon-checkmark`,classes:`text-green`})}catch(e){console.error(e),R({message:`Something went wrong!`,icon:`i-carbon-warning`,classes:`text-red`})}}let p=L(),h=w(()=>(p.value?._installedModules||[]).some(e=>e.meta?.name===`@nuxt/image`||e.meta?.name===`@nuxt/image-edge`||e.meta?.name===`@nuxt/image-nightly`)),v=w(()=>{let e=[];if(i.value.type===`image`){let t=a.value?.width?`\n width="${a.value.width}"\n height="${a.value.height}" `:` `;return e.push({lang:`vue-html`,code:`<img${t}\n src="${i.value.publicPath}"\n/>`,name:`Plain Image`}),h.value&&e.push({lang:`vue-html`,code:`<NuxtImg${t}\n src="${i.value.publicPath}"\n/>`,name:`Nuxt Img`,docs:`https://image.nuxt.com/usage/nuxt-img`},{lang:`vue-html`,code:`<NuxtPicture${t}\n src="${i.value.publicPath}"\n/>`,name:`Nuxt Picture`,docs:`https://image.nuxt.com/usage/nuxt-picture`}),e}return e.push({lang:`html`,code:`<a download href="${i.value.publicPath}">\n Download ${i.value.path.split(`/`).slice(-1)[0]}\n</a>`,name:`Download link`}),e}),y=te(),D=ee(),M=n(()=>i.value.mtime),I=w(()=>{let e=i.value.size;return e<1024?`${e} B`:e<1048576?`${(e/1024).toFixed(2)} KB`:`${(e/1024/1024).toFixed(2)} MB`}),V=w(()=>{if(!a.value?.width||!a.value?.height)return``;let e=(t,n)=>n?e(n,t%n):t,t=e(a.value.width,a.value.height);return t>3?`${a.value.width/t}:${a.value.height/t}`:``}),H=w(()=>[`image`,`text`,`video`,`audio`,`font`].includes(i.value.type)),U=S(!1);async function W(){try{await s.deleteStaticAsset(i.value.filePath),i.value=void 0,U.value=!1,R({message:`Asset deleted`,icon:`i-carbon-checkmark`,classes:`text-green`})}catch(e){console.error(e),R({message:`Something went wrong!`,icon:`i-carbon-warning`,classes:`text-red`})}}let G=S(!1),K=S(``);async function q(){let e=i.value.filePath.split(`/`),t=e.slice(-1)[0]?.split(`.`).slice(0,-1).join(`.`);if(!K.value||K.value===t)return R({message:`Please enter a new name`,icon:`i-carbon-warning`,classes:`text-orange`});try{let t=e.slice(-1)[0]?.split(`.`).slice(-1)[0],n=`${e.slice(0,-1).join(`/`)}/${K.value}.${t}`;await s.renameStaticAsset(i.value.filePath,n),i.value=void 0,G.value=!1,R({message:`Asset renamed`,icon:`i-carbon-checkmark`,classes:`text-green`})}catch(e){console.error(e),R({message:`Something went wrong!`,icon:`i-carbon-warning`,classes:`text-red`})}}return(e,t)=>{let n=Z,r=re,o=B,s=Y,u=ne,p=z,h=_(`tooltip`);return m(),E(b,null,[T(`div`,De,[H.value?(m(),E(b,{key:0},[t[13]||=T(`div`,{flex:`~ gap2`,"mb--2":``,"items-center":``,op50:``},[T(`div`,{"x-divider":``}),T(`div`,{"flex-none":``},` Preview `),T(`div`,{"x-divider":``})],-1),T(`div`,Oe,[N(n,{detail:``,"max-h-80":``,"min-h-20":``,"min-w-20":``,"w-auto":``,rounded:``,border:`~ base`,asset:O(i),"text-content":O(d)},null,8,[`asset`,`text-content`])])],64)):A(``,!0),t[25]||=T(`div`,{flex:`~ gap2`,"mb--2":``,"items-center":``,op50:``},[T(`div`,{"x-divider":``}),T(`div`,{"flex-none":``},` Details `),T(`div`,{"x-divider":``})],-1),T(`table`,ke,[T(`tbody`,null,[T(`tr`,null,[t[14]||=T(`td`,{"w-30":``,"ws-nowrap":``,pr5:``,"text-right":``,op50:``},` Filepath `,-1),T(`td`,null,[T(`div`,Ae,[N(r,{filepath:O(i).filePath,"text-left":``},null,8,[`filepath`]),k(N(o,{"flex-none":``,title:`Open in Editor`,icon:`carbon-launch`,border:!1,onClick:t[0]||=e=>O(D)(O(i).filePath)},null,512),[[h,`Open in Editor`]])])])]),T(`tr`,null,[t[15]||=T(`td`,{"w-30":``,"ws-nowrap":``,pr5:``,"text-right":``,op50:``},` Public Path `,-1),T(`td`,null,[T(`div`,je,[T(`div`,Me,g(O(i).publicPath),1),k(N(o,{"flex-none":``,title:`Copy public path`,icon:`carbon-copy`,border:!1,onClick:t[1]||=e=>O(y)(O(i).publicPath,`assets-public-path`)},null,512),[[h,`Copy public path`]]),k(N(o,{"flex-none":``,to:O(i).publicPath,icon:`carbon-launch`,target:`_blank`,border:!1,title:`Open in browser`},null,8,[`to`]),[[h,`Open in browser`]])])])]),T(`tr`,null,[t[16]||=T(`td`,{"w-30":``,"ws-nowrap":``,pr5:``,"text-right":``,op50:``},` Type `,-1),T(`td`,Ne,g(O(i).type),1)]),O(a)?.width?(m(),E(b,{key:0},[T(`tr`,null,[t[17]||=T(`td`,{"w-30":``,"ws-nowrap":``,pr5:``,"text-right":``,op50:``},` Image Size `,-1),T(`td`,null,g(O(a).width)+` x `+g(O(a).height),1)]),V.value?(m(),E(`tr`,Pe,[t[18]||=T(`td`,{"w-30":``,"ws-nowrap":``,pr5:``,"text-right":``,op50:``},` Aspect Ratio `,-1),T(`td`,null,g(V.value),1)])):A(``,!0)],64)):A(``,!0),T(`tr`,null,[t[19]||=T(`td`,{"w-30":``,"ws-nowrap":``,pr5:``,"text-right":``,op50:``},` File size `,-1),T(`td`,null,g(I.value),1)]),T(`tr`,null,[t[20]||=T(`td`,{"w-30":``,"ws-nowrap":``,pr5:``,"text-right":``,op50:``},` Last modified `,-1),T(`td`,null,[x(g(new Date(O(i).mtime).toLocaleString())+` `,1),T(`span`,Fe,`(`+g(O(M))+`)`,1)])])])]),t[26]||=T(`div`,{flex:`~ gap2`,"mb--2":``,"items-center":``,op50:``},[T(`div`,{"x-divider":``}),T(`div`,{"flex-none":``},` Actions `),T(`div`,{"x-divider":``})],-1),T(`div`,Ie,[N(o,{to:O(i).publicPath,download:``,target:`_blank`,icon:`carbon-download`,n:`green`},{default:C(()=>[...t[21]||=[x(` Download `,-1)]]),_:1},8,[`to`]),O(i).type===`text`?(m(),j(o,{key:0,icon:`carbon-edit`,n:`cyan`,onClick:t[2]||=e=>c.value=!c.value},{default:C(()=>[...t[22]||=[x(` Edit `,-1)]]),_:1})):A(``,!0),N(o,{icon:`carbon-text-annotation-toggle`,n:`blue`,onClick:t[3]||=e=>G.value=!G.value},{default:C(()=>[...t[23]||=[x(` Rename `,-1)]]),_:1}),N(o,{icon:`carbon-delete`,n:`red`,onClick:t[4]||=e=>U.value=!U.value},{default:C(()=>[...t[24]||=[x(` Delete `,-1)]]),_:1})]),t[27]||=T(`div`,{"flex-auto":``},null,-1),v.value.length?(m(),j(s,{key:1,border:`t base`,"mx--4":``,"mb--4":``,"code-snippets":v.value},null,8,[`code-snippets`])):A(``,!0)]),N(u,{modelValue:U.value,"onUpdate:modelValue":t[6]||=e=>U.value=e},{default:C(()=>[T(`div`,Le,[t[30]||=T(`span`,null,` Are you sure you want to delete this asset? `,-1),T(`div`,Re,[N(o,{icon:`carbon-close`,onClick:t[5]||=e=>U.value=!1},{default:C(()=>[...t[28]||=[x(` Cancel `,-1)]]),_:1}),N(o,{icon:`carbon-delete`,n:`red`,onClick:W},{default:C(()=>[...t[29]||=[x(` Delete `,-1)]]),_:1})])])]),_:1},8,[`modelValue`]),N(u,{modelValue:G.value,"onUpdate:modelValue":t[9]||=e=>G.value=e},{default:C(()=>[T(`div`,ze,[N(p,{modelValue:K.value,"onUpdate:modelValue":t[7]||=e=>K.value=e,placeholder:`New name`,n:`blue`},null,8,[`modelValue`]),T(`div`,Be,[N(o,{icon:`carbon-close`,onClick:t[8]||=e=>G.value=!1},{default:C(()=>[...t[31]||=[x(` Cancel `,-1)]]),_:1}),N(o,{icon:`carbon-text-annotation-toggle`,n:`blue`,onClick:q},{default:C(()=>[...t[32]||=[x(` Rename `,-1)]]),_:1})])])]),_:1},8,[`modelValue`]),O(i).type===`text`?(m(),j(u,{key:0,modelValue:c.value,"onUpdate:modelValue":t[12]||=e=>c.value=e},{default:C(()=>[T(`div`,Ve,[k(T(`textarea`,{"onUpdate:modelValue":t[10]||=e=>l.value=e,placeholder:`Item value...`,class:`h-lg w-xl of-auto rounded-lg p-4 text-sm font-mono outline-none`,onKeydown:P(f,[`enter`])},null,544),[[F,l.value]]),T(`div`,$,[N(o,{icon:`carbon-close`,onClick:t[11]||=e=>c.value=!1},{default:C(()=>[...t[33]||=[x(` Cancel `,-1)]]),_:1}),N(o,{icon:`carbon:save`,n:`primary`,onClick:f},{default:C(()=>[...t[34]||=[x(` save `,-1)]]),_:1})])])]),_:1},8,[`modelValue`])):A(``,!0)],64)}}}),{__name:`AssetDetails`}),Ue={"h-full":``,"of-auto":``},We={"flex-none":``,flex:`~ gap2 items-center`,"text-lg":``},Ge={flex:`~ items-center justify-center`,absolute:``,"bottom--1":``,"right--1":``,"h-4":``,"w-4":``,"rounded-full":``,"bg-primary:30":``,"text-8px":``},Ke={flex:`~ col`,"w-30":``,"of-auto":``},qe={"text-xs":``,op75:``},Je={op50:``},Ye={key:0},Xe={"mt--4":``,px2:``,grid:`~ cols-minmax-8rem`},Ze={key:1,p2:``,grid:`~ cols-minmax-8rem`},Qe={key:1},$e=p({__name:`assets`,setup(t){G({icon:`carbon-image-copy`,title:`Assets`,layout:`full`});let n=I(),r=S(!1),a=S(``),o=w(()=>new V(n.value||[],{keys:[`path`]})),s=e(()=>{let e=[];for(let t of n.value||[]){let n=t.path.split(`.`).pop();n&&!e.some(e=>e.name===n)&&e.push({name:n,value:!0})}return e}),c=w(()=>(a.value?o.value.search(a.value).map(e=>e.item):n.value||[]).filter(e=>{let t=e.path.split(`.`).pop();return!t||s.some(e=>e.name===t&&e.value)})),u=w(()=>{let e={};for(let t of c.value){let n=`${t.path.split(`/`).slice(0,-1).join(`/`)}/`;e[n]||(e[n]=[]),e[n].push(t)}return Object.entries(e).sort(([e],[t])=>e.localeCompare(t))}),d=w(()=>{let e={path:`public`,children:[]},t=(e,n,r)=>{let[i,...a]=n,o=e.children.find(e=>e.path===i);o||(o={...r,path:i,children:[]},e.children.push(o)),a.length>1?t(o,a,r):a.length===1&&o.children.push({...r,path:a[0]})};return c.value.forEach(n=>{let r=n.path.split(`/`).filter(e=>e!==``);t(e,r,n)}),e.children}),f=S(),{view:p}=l(`assets`);function h(){p.value=p.value===`list`?`grid`:`list`}i(`Escape`,()=>{f.value=void 0});let v=S();return(e,t)=>{let i=B,o=K,l=U,y=q,x=de,S=Ee,w=J,D=Q,P=He,F=W,I=_(`tooltip`);return m(),E(`div`,Ue,[N(y,{ref_key:`navbar`,ref:v,search:a.value,"onUpdate:search":t[1]||=e=>a.value=e,pb2:``},{actions:C(()=>[T(`div`,We,[k(N(i,{icon:`carbon:cloud-upload`,title:`File Upload`,border:!1,onClick:t[0]||=e=>r.value=!r.value},null,512),[[I,`File Upload`,void 0,{"bottom-end":!0}]]),O(s).length?(m(),j(l,{key:0,direction:`end`,n:`sm primary`},{trigger:C(({click:e})=>[k(N(i,{icon:`carbon-filter`,border:!1,title:`Filter`,p3:``,"text-lg":``,onClick:t=>e()},null,8,[`onClick`]),[[I,`Filter`,void 0,{"bottom-end":!0}]]),T(`span`,Ge,g(O(s).length),1)]),default:C(()=>[T(`div`,Ke,[(m(!0),E(b,null,M(O(s),e=>(m(),j(o,{key:e.name,modelValue:e.value,"onUpdate:modelValue":t=>e.value=t,flex:`~ gap-2`,rounded:``,px2:``,py2:``},{default:C(()=>[T(`span`,qe,g(e.name),1)]),_:2},1032,[`modelValue`,`onUpdate:modelValue`]))),128))])]),_:1})):A(``,!0),k(N(i,{"text-lg":``,border:!1,icon:O(p)===`grid`?`i-carbon-list`:`i-carbon-grid`,title:`Toggle view`,onClick:h},null,8,[`icon`]),[[I,`Toggle View`,void 0,{"bottom-end":!0}]])])]),default:C(()=>[T(`div`,Je,[a.value?(m(),E(`span`,Ye,g(c.value.length)+` matched · `,1)):A(``,!0),T(`span`,null,g(O(n)?.length)+` assets in total`,1)])]),_:1},8,[`search`]),N(x,{modelValue:r.value,"onUpdate:modelValue":t[2]||=e=>r.value=e,folder:`/`},null,8,[`modelValue`]),O(p)===`grid`?(m(),E(b,{key:0},[u.value.length>1?(m(!0),E(b,{key:0},M(u.value,([e,t])=>(m(),j(w,{key:e,text:e,description:`${t.length} items`,open:t.length<=O(50),padding:!1},{default:C(()=>[T(`div`,Xe,[(m(!0),E(b,null,M(t,t=>(m(),j(S,{key:t.path,asset:t,folder:e,onClick:e=>f.value=t},null,8,[`asset`,`folder`,`onClick`]))),128))])]),_:2},1032,[`text`,`description`,`open`]))),128)):(m(),E(`div`,Ze,[(m(!0),E(b,null,M(c.value,e=>(m(),j(S,{key:e.path,asset:e,onClick:t=>f.value=e},null,8,[`asset`,`onClick`]))),128))]))],64)):(m(),E(`div`,Qe,[(m(!0),E(b,null,M(d.value,(e,n)=>(m(),j(D,{key:n,modelValue:f.value,"onUpdate:modelValue":t[3]||=e=>f.value=e,item:e},null,8,[`modelValue`,`item`]))),128))])),N(F,{"model-value":!!f.value,"auto-close":``,"w-120":``,top:v.value,onClose:t[5]||=e=>f.value=void 0},{default:C(()=>[f.value?(m(),j(P,{key:0,modelValue:f.value,"onUpdate:modelValue":t[4]||=e=>f.value=e},null,8,[`modelValue`])):A(``,!0)]),_:1},8,[`model-value`,`top`])])}}});export{$e as default};
@@ -1 +0,0 @@
1
- img{-webkit-user-drag:none;-khtml-user-drag:none;-moz-user-drag:none;-o-user-drag:none;user-drag:none}
@@ -1 +0,0 @@
1
- import{J as e}from"./vendor/json-editor-vue-h1waqukq.js";import{t}from"./_plugin-vue_export-helper-d9irwgla.js";var n={};function r(t,n){return e(t.$slots,`default`)}var i=Object.assign(t(n,[[`render`,r]]),{__name:`AuthRequiredPanel`});export{i as t};
@@ -1 +0,0 @@
1
- {"id":"1183fbc7-b7db-4404-9ee4-7571849e8ffe","timestamp":1787201051203}
@@ -1 +0,0 @@
1
- {"id":"1183fbc7-b7db-4404-9ee4-7571849e8ffe","timestamp":1787201051203,"prerendered":[]}