@qwik.dev/devtools 2.0.0-beta.43 → 2.0.0-beta.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/kit/index.mjs +4 -6
- package/dist/plugin/codegen.mjs +1 -1
- package/dist/plugin/{create-hook-runtime-ChnIePeB.mjs → create-hook-runtime-CoRDu99E.mjs} +2 -4
- package/dist/plugin/index.mjs +4 -7
- package/dist/ui/{bundle-graph-CoI___e1.json → bundle-graph-DNRrO_5W.json} +1 -1
- package/dist/ui/entry.extension.qwik.mjs +3 -2
- package/dist/ui/node_modules/.pnpm/hast-util-to-html@9.0.5/node_modules/hast-util-to-html/lib/handle/element.qwik.mjs +2 -2
- package/dist/ui/node_modules/.pnpm/hast-util-to-html@9.0.5/node_modules/hast-util-to-html/lib/index.qwik.mjs +1 -1
- package/dist/ui/node_modules/.pnpm/{property-information@7.1.0 → property-information@7.2.0}/node_modules/property-information/lib/html.qwik.mjs +11 -1
- package/dist/ui/node_modules/.pnpm/{property-information@7.1.0 → property-information@7.2.0}/node_modules/property-information/lib/svg.qwik.mjs +2 -0
- package/dist/ui/packages/devtools/kit/src/overlay-paths.qwik.mjs +4 -4
- package/dist/ui/packages/devtools/ui/src/components/DevtoolsButton/DevtoolsButton.qwik.mjs +15 -13
- package/dist/ui/packages/devtools/ui/src/components/DevtoolsContainer/DevtoolsContainer.qwik.mjs +4 -1
- package/dist/ui/packages/devtools/ui/src/components/DevtoolsPanel/DevtoolsPanel.qwik.mjs +82 -69
- package/dist/ui/packages/devtools/ui/src/components/IconButton/IconButton.qwik.mjs +3 -2
- package/dist/ui/packages/devtools/ui/src/components/Icons/Icons.qwik.mjs +178 -96
- package/dist/ui/packages/devtools/ui/src/components/InfoBanner/InfoBanner.qwik.mjs +4 -2
- package/dist/ui/packages/devtools/ui/src/components/Tab/Tab.qwik.mjs +5 -6
- package/dist/ui/packages/devtools/ui/src/components/TabContent/TabContent.qwik.mjs +1 -1
- package/dist/ui/packages/devtools/ui/src/components/TabTitle/TabTitle.qwik.mjs +1 -1
- package/dist/ui/packages/devtools/ui/src/components/ThemeToggle/QwikThemeToggle.qwik.mjs +4 -4
- package/dist/ui/packages/devtools/ui/src/components/ThemeToggle/theme-script.qwik.mjs +1 -1
- package/dist/ui/packages/devtools/ui/src/components/Tree/Tree.qwik.mjs +36 -19
- package/dist/ui/packages/devtools/ui/src/devtools/CommandPalette.qwik.mjs +40 -26
- package/dist/ui/packages/devtools/ui/src/devtools/CustomizeTabsPanel.qwik.mjs +39 -28
- package/dist/ui/packages/devtools/ui/src/devtools/DevtoolsContent.qwik.mjs +30 -45
- package/dist/ui/packages/devtools/ui/src/devtools/DevtoolsSidebar.qwik.mjs +26 -20
- package/dist/ui/packages/devtools/ui/src/devtools/QwikDevtools.qwik.mjs +7 -7
- package/dist/ui/packages/devtools/ui/src/devtools/QwikDevtoolsExtension.qwik.mjs +3 -2
- package/dist/ui/packages/devtools/ui/src/devtools/command-palette.qwik.mjs +24 -12
- package/dist/ui/packages/devtools/ui/src/devtools/page-data-source.qwik.mjs +4 -2
- package/dist/ui/packages/devtools/ui/src/devtools/rpc.qwik.mjs +6 -4
- package/dist/ui/packages/devtools/ui/src/devtools/sidebar-tabs.qwik.mjs +24 -13
- package/dist/ui/packages/devtools/ui/src/devtools/tabs.qwik.mjs +10 -10
- package/dist/ui/packages/devtools/ui/src/features/Assets/Assets.qwik.mjs +2 -2
- package/dist/ui/packages/devtools/ui/src/features/BuildAnalysis/BuildAnalysis.qwik.mjs +10 -8
- package/dist/ui/packages/devtools/ui/src/features/CodeBreak/CodeBreak.qwik.mjs +19 -21
- package/dist/ui/packages/devtools/ui/src/features/CodeBreak/HtmlParser.qwik.mjs +10 -8
- package/dist/ui/packages/devtools/ui/src/features/CodeBreak/StateParser.qwik.mjs +10 -8
- package/dist/ui/packages/devtools/ui/src/features/HookTree/HookTree.qwik.mjs +67 -56
- package/dist/ui/packages/devtools/ui/src/features/HookTree/hookTreeHelpers.qwik.mjs +6 -3
- package/dist/ui/packages/devtools/ui/src/features/Inspect/Inspect.qwik.mjs +12 -11
- package/dist/ui/packages/devtools/ui/src/features/Inspect/iframe-theme.qwik.mjs +2 -1
- package/dist/ui/packages/devtools/ui/src/features/Overview/Overview.qwik.mjs +14 -10
- package/dist/ui/packages/devtools/ui/src/features/Packages/Packages.qwik.mjs +24 -23
- package/dist/ui/packages/devtools/ui/src/features/Packages/components/DependencyCard/DependencyCard.qwik.mjs +34 -24
- package/dist/ui/packages/devtools/ui/src/features/Packages/components/DependencyOperationFeedback/DependencyOperationFeedback.qwik.mjs +4 -3
- package/dist/ui/packages/devtools/ui/src/features/Packages/components/DependencyToolbar/DependencyToolbar.qwik.mjs +19 -18
- package/dist/ui/packages/devtools/ui/src/features/Packages/components/InstalledDependencyList/InstalledDependencyList.qwik.mjs +4 -4
- package/dist/ui/packages/devtools/ui/src/features/Packages/components/PackageIcon/PackageIcon.qwik.mjs +2 -2
- package/dist/ui/packages/devtools/ui/src/features/Packages/components/PackageSearchResults/PackageSearchResults.qwik.mjs +6 -5
- package/dist/ui/packages/devtools/ui/src/features/Packages/components/SearchResultCard/SearchResultCard.qwik.mjs +25 -14
- package/dist/ui/packages/devtools/ui/src/features/Performance/Performance.qwik.mjs +14 -10
- package/dist/ui/packages/devtools/ui/src/features/Performance/components/ComponentCard.qwik.mjs +3 -1
- package/dist/ui/packages/devtools/ui/src/features/Performance/components/HookDetailsPanel.qwik.mjs +10 -6
- package/dist/ui/packages/devtools/ui/src/features/Performance/components/PerformanceOverview.qwik.mjs +11 -9
- package/dist/ui/packages/devtools/ui/src/features/Performance/components/StatCard.qwik.mjs +2 -2
- package/dist/ui/packages/devtools/ui/src/features/Performance/computePerfViewModel.qwik.mjs +4 -2
- package/dist/ui/packages/devtools/ui/src/features/Preloads/Preloads.qwik.mjs +84 -72
- package/dist/ui/packages/devtools/ui/src/features/RenderTree/RenderTree.qwik.mjs +25 -21
- package/dist/ui/packages/devtools/ui/src/features/RenderTree/components/HighlightedCodeList.qwik.mjs +2 -1
- package/dist/ui/packages/devtools/ui/src/features/RenderTree/components/HookFiltersCard.qwik.mjs +16 -17
- package/dist/ui/packages/devtools/ui/src/features/RenderTree/components/RenderTreeTabs.qwik.mjs +4 -2
- package/dist/ui/packages/devtools/ui/src/features/RenderTree/components/StateTreeNodeLabel.qwik.mjs +8 -7
- package/dist/ui/packages/devtools/ui/src/features/Routes/Routes.qwik.mjs +10 -6
- package/dist/ui/q-manifest.json +180 -180
- package/package.json +8 -8
- /package/dist/ui/node_modules/.pnpm/{debug@4.4.3_supports-color@10.2.2 → debug@4.4.3_supports-color@11.0.0}/node_modules/debug/src/browser.qwik.mjs +0 -0
- /package/dist/ui/node_modules/.pnpm/{debug@4.4.3_supports-color@10.2.2 → debug@4.4.3_supports-color@11.0.0}/node_modules/debug/src/common.qwik.mjs +0 -0
- /package/dist/ui/node_modules/.pnpm/{property-information@7.1.0 → property-information@7.2.0}/node_modules/property-information/index.qwik.mjs +0 -0
- /package/dist/ui/node_modules/.pnpm/{property-information@7.1.0 → property-information@7.2.0}/node_modules/property-information/lib/aria.qwik.mjs +0 -0
- /package/dist/ui/node_modules/.pnpm/{property-information@7.1.0 → property-information@7.2.0}/node_modules/property-information/lib/find.qwik.mjs +0 -0
- /package/dist/ui/node_modules/.pnpm/{property-information@7.1.0 → property-information@7.2.0}/node_modules/property-information/lib/normalize.qwik.mjs +0 -0
- /package/dist/ui/node_modules/.pnpm/{property-information@7.1.0 → property-information@7.2.0}/node_modules/property-information/lib/util/case-insensitive-transform.qwik.mjs +0 -0
- /package/dist/ui/node_modules/.pnpm/{property-information@7.1.0 → property-information@7.2.0}/node_modules/property-information/lib/util/case-sensitive-transform.qwik.mjs +0 -0
- /package/dist/ui/node_modules/.pnpm/{property-information@7.1.0 → property-information@7.2.0}/node_modules/property-information/lib/util/create.qwik.mjs +0 -0
- /package/dist/ui/node_modules/.pnpm/{property-information@7.1.0 → property-information@7.2.0}/node_modules/property-information/lib/util/defined-info.qwik.mjs +0 -0
- /package/dist/ui/node_modules/.pnpm/{property-information@7.1.0 → property-information@7.2.0}/node_modules/property-information/lib/util/info.qwik.mjs +0 -0
- /package/dist/ui/node_modules/.pnpm/{property-information@7.1.0 → property-information@7.2.0}/node_modules/property-information/lib/util/merge.qwik.mjs +0 -0
- /package/dist/ui/node_modules/.pnpm/{property-information@7.1.0 → property-information@7.2.0}/node_modules/property-information/lib/util/schema.qwik.mjs +0 -0
- /package/dist/ui/node_modules/.pnpm/{property-information@7.1.0 → property-information@7.2.0}/node_modules/property-information/lib/util/types.qwik.mjs +0 -0
- /package/dist/ui/node_modules/.pnpm/{property-information@7.1.0 → property-information@7.2.0}/node_modules/property-information/lib/xlink.qwik.mjs +0 -0
- /package/dist/ui/node_modules/.pnpm/{property-information@7.1.0 → property-information@7.2.0}/node_modules/property-information/lib/xml.qwik.mjs +0 -0
- /package/dist/ui/node_modules/.pnpm/{property-information@7.1.0 → property-information@7.2.0}/node_modules/property-information/lib/xmlns.qwik.mjs +0 -0
- /package/dist/ui/node_modules/.pnpm/{vite-hot-client@2.1.0_vite@8.2.1_@types_node@24.10.0_esbuild@0.28.2_jiti@2.6.1_terser@5.46.0_tsx@4.21.0_yaml@2.8.3_ → vite-hot-client@2.2.0_vite@8.2.1_@types_node@25.6.0_esbuild@0.28.2_jiti@2.7.0_terser@5.46.0_tsx@4.21.0_yaml@2.9.0_}/node_modules/vite-hot-client/dist/index.qwik.mjs +0 -0
|
@@ -14,7 +14,8 @@ import { _captures, _jsxSorted, componentQrl, inlinedQrl, useStore, useVisibleTa
|
|
|
14
14
|
* The outer `.qwik-devtools` wrapper is required because the Tailwind utilities are scoped under
|
|
15
15
|
* `.qwik-devtools .{class}` in the CSS build. It must be a separate element so descendant selectors
|
|
16
16
|
* match.
|
|
17
|
-
*/
|
|
17
|
+
*/
|
|
18
|
+
var QwikDevtoolsExtension = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(() => {
|
|
18
19
|
const state = useStore(createDevtoolsState({ isExtension: true }));
|
|
19
20
|
useVisibleTaskQrl(/*#__PURE__*/ inlinedQrl(async () => {
|
|
20
21
|
const state = _captures[0];
|
|
@@ -26,6 +27,6 @@ import { _captures, _jsxSorted, componentQrl, inlinedQrl, useStore, useVisibleTa
|
|
|
26
27
|
}, /*#__PURE__*/ _jsxSorted("div", null, {
|
|
27
28
|
class: "flex overflow-hidden",
|
|
28
29
|
style: "height: 100%; width: 100%;"
|
|
29
|
-
}, [/*#__PURE__*/ _jsxSorted(DevtoolsSidebar, null, { state }, null, 3, "
|
|
30
|
+
}, [/*#__PURE__*/ _jsxSorted(DevtoolsSidebar, null, { state }, null, 3, "jJ_0"), /*#__PURE__*/ _jsxSorted("div", null, { class: "custom-scrollbar min-h-0 flex-1 overflow-y-auto p-4" }, /*#__PURE__*/ _jsxSorted(DevtoolsContent, null, { state }, null, 3, "jJ_1"), 1, null)], 1, null), 1, "jJ_2");
|
|
30
31
|
}, "QwikDevtoolsExtension_component_EdZTDUSLNrE"));
|
|
31
32
|
export { QwikDevtoolsExtension };
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { devtoolsTabs } from "./tabs.qwik.mjs";
|
|
2
2
|
var RECENTS_STORAGE_KEY = "qwik-devtools:palette-recents";
|
|
3
3
|
var MAX_RECENTS = 5;
|
|
4
|
-
/** Categories always render in this order. */
|
|
4
|
+
/** Categories always render in this order. */
|
|
5
|
+
var CATEGORY_ORDER = [
|
|
5
6
|
"Tabs",
|
|
6
7
|
"Components",
|
|
7
8
|
"Routes",
|
|
8
9
|
"Packages",
|
|
9
10
|
"Actions"
|
|
10
11
|
];
|
|
11
|
-
/** Tabs reachable in the current context (Vite-only tabs are hidden in the extension). */
|
|
12
|
+
/** Tabs reachable in the current context (Vite-only tabs are hidden in the extension). */
|
|
13
|
+
function getTabResults(state) {
|
|
12
14
|
return devtoolsTabs.filter((tab) => !(state.isExtension && tab.viteOnly)).map((tab) => ({
|
|
13
15
|
id: `tab:${tab.id}`,
|
|
14
16
|
category: "Tabs",
|
|
@@ -31,7 +33,8 @@ function getComponentResults(state) {
|
|
|
31
33
|
}
|
|
32
34
|
}));
|
|
33
35
|
}
|
|
34
|
-
/** Routes live behind the Vite-only Routes tab, so they are excluded in the extension. */
|
|
36
|
+
/** Routes live behind the Vite-only Routes tab, so they are excluded in the extension. */
|
|
37
|
+
function getRouteResults(state) {
|
|
35
38
|
if (state.isExtension || !state.routes) return [];
|
|
36
39
|
return state.routes.map((route) => ({
|
|
37
40
|
id: `route:${route.relativePath}`,
|
|
@@ -44,7 +47,8 @@ function getComponentResults(state) {
|
|
|
44
47
|
}
|
|
45
48
|
}));
|
|
46
49
|
}
|
|
47
|
-
/** Packages live behind the Vite-only Packages tab, so they are excluded in the extension. */
|
|
50
|
+
/** Packages live behind the Vite-only Packages tab, so they are excluded in the extension. */
|
|
51
|
+
function getPackageResults(state) {
|
|
48
52
|
if (state.isExtension) return [];
|
|
49
53
|
return state.npmPackages.map(([name, version]) => ({
|
|
50
54
|
id: `package:${name}`,
|
|
@@ -57,7 +61,8 @@ function getComponentResults(state) {
|
|
|
57
61
|
}
|
|
58
62
|
}));
|
|
59
63
|
}
|
|
60
|
-
/** Common quick actions available in the current context. */
|
|
64
|
+
/** Common quick actions available in the current context. */
|
|
65
|
+
function getActionResults(state) {
|
|
61
66
|
const actions = [
|
|
62
67
|
{
|
|
63
68
|
id: "action:toggleTheme",
|
|
@@ -98,7 +103,8 @@ function getComponentResults(state) {
|
|
|
98
103
|
});
|
|
99
104
|
return actions;
|
|
100
105
|
}
|
|
101
|
-
/** Every searchable result for the current context (tabs, components, routes, packages). */
|
|
106
|
+
/** Every searchable result for the current context (tabs, components, routes, packages). */
|
|
107
|
+
function buildPaletteSources(state) {
|
|
102
108
|
return [
|
|
103
109
|
...getTabResults(state),
|
|
104
110
|
...getComponentResults(state),
|
|
@@ -106,12 +112,14 @@ function getComponentResults(state) {
|
|
|
106
112
|
...getPackageResults(state)
|
|
107
113
|
];
|
|
108
114
|
}
|
|
109
|
-
/** Filters results by a substring match against label and hint; an empty query returns nothing. */
|
|
115
|
+
/** Filters results by a substring match against label and hint; an empty query returns nothing. */
|
|
116
|
+
function filterResults(results, query) {
|
|
110
117
|
const normalized = query.trim().toLowerCase();
|
|
111
118
|
if (!normalized) return [];
|
|
112
119
|
return results.filter((result) => result.label.toLowerCase().includes(normalized) || (result.hint?.toLowerCase().includes(normalized) ?? false));
|
|
113
120
|
}
|
|
114
|
-
/** Groups results by category, preserving the fixed category order and dropping empty groups. */
|
|
121
|
+
/** Groups results by category, preserving the fixed category order and dropping empty groups. */
|
|
122
|
+
function groupResults(results) {
|
|
115
123
|
const groups = [];
|
|
116
124
|
for (const category of CATEGORY_ORDER) {
|
|
117
125
|
const inCategory = results.filter((result) => result.category === category);
|
|
@@ -122,7 +130,8 @@ function getComponentResults(state) {
|
|
|
122
130
|
}
|
|
123
131
|
return groups;
|
|
124
132
|
}
|
|
125
|
-
/** Reads the persisted recent-selection ids, newest first; empty when nothing valid is stored. */
|
|
133
|
+
/** Reads the persisted recent-selection ids, newest first; empty when nothing valid is stored. */
|
|
134
|
+
function loadRecentIds() {
|
|
126
135
|
try {
|
|
127
136
|
const raw = localStorage.getItem(RECENTS_STORAGE_KEY);
|
|
128
137
|
if (!raw) return [];
|
|
@@ -133,18 +142,21 @@ function getComponentResults(state) {
|
|
|
133
142
|
return [];
|
|
134
143
|
}
|
|
135
144
|
}
|
|
136
|
-
/** Persists the recent-selection ids. Storage failures (private mode, quota) are ignored. */
|
|
145
|
+
/** Persists the recent-selection ids. Storage failures (private mode, quota) are ignored. */
|
|
146
|
+
function saveRecentIds(ids) {
|
|
137
147
|
try {
|
|
138
148
|
localStorage.setItem(RECENTS_STORAGE_KEY, JSON.stringify(ids));
|
|
139
149
|
} catch {}
|
|
140
150
|
}
|
|
141
|
-
/** Returns a new list with `id` moved to the front, de-duped and capped at MAX_RECENTS. */
|
|
151
|
+
/** Returns a new list with `id` moved to the front, de-duped and capped at MAX_RECENTS. */
|
|
152
|
+
function addRecentId(recentIds, id) {
|
|
142
153
|
return [id, ...recentIds.filter((existing) => existing !== id)].slice(0, MAX_RECENTS);
|
|
143
154
|
}
|
|
144
155
|
/**
|
|
145
156
|
* Resolves persisted recent ids to their current results, dropping entries that no longer exist
|
|
146
157
|
* (e.g. a component that unmounted or a package that was removed). Actions are resolvable too.
|
|
147
|
-
*/
|
|
158
|
+
*/
|
|
159
|
+
function resolveRecents(recentIds, state) {
|
|
148
160
|
const byId = /* @__PURE__ */ new Map();
|
|
149
161
|
for (const result of [...buildPaletteSources(state), ...getActionResults(state)]) byId.set(result.id, result);
|
|
150
162
|
const resolved = [];
|
|
@@ -3,7 +3,8 @@ import { QWIK_DEVTOOLS_GLOBAL, createInPageBridge, getQwikDevtoolsGlobal } from
|
|
|
3
3
|
/**
|
|
4
4
|
* Default implementation that reads directly from `window` globals. Used when the devtools UI runs
|
|
5
5
|
* as an in-app overlay (same document).
|
|
6
|
-
*/
|
|
6
|
+
*/
|
|
7
|
+
var InPageDataSource = class {
|
|
7
8
|
constructor() {
|
|
8
9
|
this.bridge = createInPageBridge({ isBrowser });
|
|
9
10
|
}
|
|
@@ -52,7 +53,8 @@ var defaultSource = new InPageDataSource();
|
|
|
52
53
|
*
|
|
53
54
|
* When the Qwik DevTools root has a `pageDataSource` (by the browser extension entry point), that
|
|
54
55
|
* source is used. Otherwise the default in-page source is returned.
|
|
55
|
-
*/
|
|
56
|
+
*/
|
|
57
|
+
function getPageDataSource() {
|
|
56
58
|
const source = isBrowser ? getQwikDevtoolsGlobal(window)?.[QWIK_DEVTOOLS_GLOBAL.props.pageDataSource] : void 0;
|
|
57
59
|
if (source) return source;
|
|
58
60
|
return defaultSource;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __toESM } from "../../../../../_virtual/_rolldown/runtime.qwik.mjs";
|
|
2
|
-
import { require_browser } from "../../../../../node_modules/.pnpm/debug@4.4.3_supports-color@
|
|
3
|
-
import { tryCreateHotContext } from "../../../../../node_modules/.pnpm/vite-hot-client@2.
|
|
2
|
+
import { require_browser } from "../../../../../node_modules/.pnpm/debug@4.4.3_supports-color@11.0.0/node_modules/debug/src/browser.qwik.mjs";
|
|
3
|
+
import { tryCreateHotContext } from "../../../../../node_modules/.pnpm/vite-hot-client@2.2.0_vite@8.2.1_@types_node@25.6.0_esbuild@0.28.2_jiti@2.7.0_terser@5.46.0_tsx@4.21.0_yaml@2.9.0_/node_modules/vite-hot-client/dist/index.qwik.mjs";
|
|
4
4
|
import { noSerialize } from "@qwik.dev/core";
|
|
5
5
|
import { QWIK_DEVTOOLS_GLOBAL, RouteType, createClientRpc, getQwikDevtoolsGlobal, getViteClientRpc, setViteClientContext } from "@qwik.dev/devtools/kit";
|
|
6
6
|
var log = (0, (/* @__PURE__ */ __toESM(require_browser(), 1)).default)("qwik:devtools:devtools");
|
|
@@ -33,7 +33,8 @@ function getDevtoolsRpc() {
|
|
|
33
33
|
/**
|
|
34
34
|
* Default data provider that loads data via Vite HMR RPC. Used when the devtools UI runs as an
|
|
35
35
|
* in-app overlay.
|
|
36
|
-
*/
|
|
36
|
+
*/
|
|
37
|
+
var viteDataProvider = { async loadData(state) {
|
|
37
38
|
const rpc = await getDevtoolsRpc();
|
|
38
39
|
const primaryDataPromise = Promise.allSettled([
|
|
39
40
|
rpc.getAssetsFromPublicDir(),
|
|
@@ -65,7 +66,8 @@ function getDevtoolsRpc() {
|
|
|
65
66
|
*
|
|
66
67
|
* When the Qwik DevTools root has a `dataProvider` (e.g. from the browser extension entry point),
|
|
67
68
|
* that provider is used. Otherwise, falls back to the default Vite HMR RPC provider.
|
|
68
|
-
*/
|
|
69
|
+
*/
|
|
70
|
+
async function loadDevtoolsData(state) {
|
|
69
71
|
await (getQwikDevtoolsGlobal(window)?.[QWIK_DEVTOOLS_GLOBAL.props.dataProvider] ?? viteDataProvider).loadData(state);
|
|
70
72
|
}
|
|
71
73
|
export { getDevtoolsRpc, loadDevtoolsData };
|
|
@@ -1,18 +1,26 @@
|
|
|
1
1
|
import { devtoolsTabs } from "./tabs.qwik.mjs";
|
|
2
2
|
var STORAGE_KEY = "qwik-devtools:visible-tabs";
|
|
3
|
-
/** Tab configs keyed by id, for resolving an ordered id list. */
|
|
3
|
+
/** Tab configs keyed by id, for resolving an ordered id list. */
|
|
4
|
+
var tabsById = new Map(devtoolsTabs.map((tab) => [tab.id, tab]));
|
|
4
5
|
var KNOWN_TAB_IDS = new Set(devtoolsTabs.map((tab) => tab.id));
|
|
5
6
|
function isDevtoolsTabId(id) {
|
|
6
7
|
return KNOWN_TAB_IDS.has(id);
|
|
7
8
|
}
|
|
8
|
-
/** Default sidebar configuration: every tab visible, in registry order. */
|
|
9
|
+
/** Default sidebar configuration: every tab visible, in registry order. */
|
|
10
|
+
function getDefaultVisibleTabIds() {
|
|
9
11
|
return devtoolsTabs.map((tab) => tab.id);
|
|
10
12
|
}
|
|
11
|
-
/** Tabs not currently visible (reachable via the More panel), in registry order. */
|
|
13
|
+
/** Tabs not currently visible (reachable via the More panel), in registry order. */
|
|
14
|
+
function getAvailableTabIds(visibleTabIds) {
|
|
12
15
|
const visible = new Set(visibleTabIds);
|
|
13
16
|
return devtoolsTabs.map((tab) => tab.id).filter((id) => !visible.has(id));
|
|
14
17
|
}
|
|
15
|
-
/**
|
|
18
|
+
/** Hidden tabs resolved to their configs (the More panel contents), in registry order. */
|
|
19
|
+
function getAvailableTabs(visibleTabIds) {
|
|
20
|
+
return resolveTabs(getAvailableTabIds(visibleTabIds));
|
|
21
|
+
}
|
|
22
|
+
/** Moves `draggedId` to sit just before `targetId` in the list, returning a new list. */
|
|
23
|
+
function reorderVisibleTabs(visibleTabIds, draggedId, targetId) {
|
|
16
24
|
if (draggedId === targetId) return visibleTabIds;
|
|
17
25
|
const without = visibleTabIds.filter((id) => id !== draggedId);
|
|
18
26
|
const targetIndex = without.indexOf(targetId);
|
|
@@ -20,11 +28,13 @@ function isDevtoolsTabId(id) {
|
|
|
20
28
|
without.splice(targetIndex, 0, draggedId);
|
|
21
29
|
return without;
|
|
22
30
|
}
|
|
23
|
-
/** Adds (appends) or removes a tab from the ordered visible list, returning a new list. */
|
|
31
|
+
/** Adds (appends) or removes a tab from the ordered visible list, returning a new list. */
|
|
32
|
+
function setTabVisible(visibleTabIds, id, visible) {
|
|
24
33
|
if (visible) return visibleTabIds.includes(id) ? visibleTabIds : [...visibleTabIds, id];
|
|
25
34
|
return visibleTabIds.filter((tabId) => tabId !== id);
|
|
26
35
|
}
|
|
27
|
-
/** Drops ids no longer in the registry and de-dupes, preserving the stored order. */
|
|
36
|
+
/** Drops ids no longer in the registry and de-dupes, preserving the stored order. */
|
|
37
|
+
function normalizeVisibleTabIds(ids) {
|
|
28
38
|
const seen = /* @__PURE__ */ new Set();
|
|
29
39
|
const result = [];
|
|
30
40
|
for (const id of ids) if (isDevtoolsTabId(id) && !seen.has(id)) {
|
|
@@ -37,7 +47,8 @@ function isDevtoolsTabId(id) {
|
|
|
37
47
|
* Reads the persisted visible-tabs list, or null when nothing valid is stored so the caller falls
|
|
38
48
|
* back to the default. An empty list is honored (the user hid every tab). Tabs added to the
|
|
39
49
|
* registry since the last save stay hidden (reachable via the More panel) until opted in.
|
|
40
|
-
*/
|
|
50
|
+
*/
|
|
51
|
+
function loadVisibleTabIds() {
|
|
41
52
|
try {
|
|
42
53
|
const raw = localStorage.getItem(STORAGE_KEY);
|
|
43
54
|
if (!raw) return null;
|
|
@@ -48,12 +59,14 @@ function isDevtoolsTabId(id) {
|
|
|
48
59
|
return null;
|
|
49
60
|
}
|
|
50
61
|
}
|
|
51
|
-
/** Persists the visible-tabs list. Storage failures (private mode, quota) are ignored. */
|
|
62
|
+
/** Persists the visible-tabs list. Storage failures (private mode, quota) are ignored. */
|
|
63
|
+
function saveVisibleTabIds(visibleTabIds) {
|
|
52
64
|
try {
|
|
53
65
|
localStorage.setItem(STORAGE_KEY, JSON.stringify(visibleTabIds));
|
|
54
66
|
} catch {}
|
|
55
67
|
}
|
|
56
|
-
/** Resolves an ordered id list to its tab configs, dropping unknown ids. */
|
|
68
|
+
/** Resolves an ordered id list to its tab configs, dropping unknown ids. */
|
|
69
|
+
function resolveTabs(ids) {
|
|
57
70
|
const tabs = [];
|
|
58
71
|
for (const id of ids) {
|
|
59
72
|
const tab = tabsById.get(id);
|
|
@@ -61,13 +74,11 @@ function isDevtoolsTabId(id) {
|
|
|
61
74
|
}
|
|
62
75
|
return tabs;
|
|
63
76
|
}
|
|
64
|
-
/** Hidden tabs resolved to their configs (the More panel contents), in registry order. */ function getAvailableTabs(visibleTabIds) {
|
|
65
|
-
return resolveTabs(getAvailableTabIds(visibleTabIds));
|
|
66
|
-
}
|
|
67
77
|
/**
|
|
68
78
|
* Resolves the ordered visible ids to their tab configs, dropping, in the extension, tabs that
|
|
69
79
|
* require the Vite plugin.
|
|
70
|
-
*/
|
|
80
|
+
*/
|
|
81
|
+
function getVisibleTabs(visibleTabIds, isExtension) {
|
|
71
82
|
return resolveTabs(visibleTabIds).filter((tab) => !(isExtension && tab.viteOnly));
|
|
72
83
|
}
|
|
73
84
|
export { getAvailableTabIds, getAvailableTabs, getDefaultVisibleTabIds, getVisibleTabs, loadVisibleTabIds, reorderVisibleTabs, resolveTabs, saveVisibleTabIds, setTabVisible };
|
|
@@ -4,56 +4,56 @@ var devtoolsTabs = [
|
|
|
4
4
|
{
|
|
5
5
|
id: "overview",
|
|
6
6
|
title: "Overview",
|
|
7
|
-
renderIcon: () => /*#__PURE__*/ _jsxSorted(IconBoltOutline, null, { class: "h-6 w-6" }, null, 3, "
|
|
7
|
+
renderIcon: () => /*#__PURE__*/ _jsxSorted(IconBoltOutline, null, { class: "h-6 w-6" }, null, 3, "NS_0")
|
|
8
8
|
},
|
|
9
9
|
{
|
|
10
10
|
id: "packages",
|
|
11
11
|
title: "Packages",
|
|
12
|
-
renderIcon: () => /*#__PURE__*/ _jsxSorted(IconCubeOutline, null, { class: "h-6 w-6" }, null, 3, "
|
|
12
|
+
renderIcon: () => /*#__PURE__*/ _jsxSorted(IconCubeOutline, null, { class: "h-6 w-6" }, null, 3, "NS_1"),
|
|
13
13
|
viteOnly: true
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
16
|
id: "renderTree",
|
|
17
17
|
title: "Render Tree",
|
|
18
|
-
renderIcon: () => /*#__PURE__*/ _jsxSorted(IconDiagram3, null, { class: "h-6 w-6" }, null, 3, "
|
|
18
|
+
renderIcon: () => /*#__PURE__*/ _jsxSorted(IconDiagram3, null, { class: "h-6 w-6" }, null, 3, "NS_2")
|
|
19
19
|
},
|
|
20
20
|
{
|
|
21
21
|
id: "routes",
|
|
22
22
|
title: "Routes",
|
|
23
|
-
renderIcon: () => /*#__PURE__*/ _jsxSorted(IconFolderTree, null, { class: "h-6 w-6" }, null, 3, "
|
|
23
|
+
renderIcon: () => /*#__PURE__*/ _jsxSorted(IconFolderTree, null, { class: "h-6 w-6" }, null, 3, "NS_3"),
|
|
24
24
|
viteOnly: true
|
|
25
25
|
},
|
|
26
26
|
{
|
|
27
27
|
id: "assets",
|
|
28
28
|
title: "Assets",
|
|
29
|
-
renderIcon: () => /*#__PURE__*/ _jsxSorted(IconPhotoOutline, null, { class: "h-6 w-6" }, null, 3, "
|
|
29
|
+
renderIcon: () => /*#__PURE__*/ _jsxSorted(IconPhotoOutline, null, { class: "h-6 w-6" }, null, 3, "NS_4"),
|
|
30
30
|
viteOnly: true
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
id: "inspect",
|
|
34
34
|
title: "Inspect",
|
|
35
|
-
renderIcon: () => /*#__PURE__*/ _jsxSorted(IconMegaphoneMini, null, { class: "h-6 w-6" }, null, 3, "
|
|
35
|
+
renderIcon: () => /*#__PURE__*/ _jsxSorted(IconMegaphoneMini, null, { class: "h-6 w-6" }, null, 3, "NS_5"),
|
|
36
36
|
viteOnly: true
|
|
37
37
|
},
|
|
38
38
|
{
|
|
39
39
|
id: "codeBreak",
|
|
40
40
|
title: "Code Break",
|
|
41
|
-
renderIcon: () => /*#__PURE__*/ _jsxSorted(IconCodeBracketSolid, null, { class: "h-6 w-6" }, null, 3, "
|
|
41
|
+
renderIcon: () => /*#__PURE__*/ _jsxSorted(IconCodeBracketSolid, null, { class: "h-6 w-6" }, null, 3, "NS_6")
|
|
42
42
|
},
|
|
43
43
|
{
|
|
44
44
|
id: "performance",
|
|
45
45
|
title: "Performance",
|
|
46
|
-
renderIcon: () => /*#__PURE__*/ _jsxSorted(IconClockOutline, null, { class: "h-6 w-6" }, null, 3, "
|
|
46
|
+
renderIcon: () => /*#__PURE__*/ _jsxSorted(IconClockOutline, null, { class: "h-6 w-6" }, null, 3, "NS_7")
|
|
47
47
|
},
|
|
48
48
|
{
|
|
49
49
|
id: "preloads",
|
|
50
50
|
title: "Preloads",
|
|
51
|
-
renderIcon: () => /*#__PURE__*/ _jsxSorted(IconArrowDownTray, null, { class: "h-6 w-6" }, null, 3, "
|
|
51
|
+
renderIcon: () => /*#__PURE__*/ _jsxSorted(IconArrowDownTray, null, { class: "h-6 w-6" }, null, 3, "NS_8")
|
|
52
52
|
},
|
|
53
53
|
{
|
|
54
54
|
id: "buildAnalysis",
|
|
55
55
|
title: "Build Analysis",
|
|
56
|
-
renderIcon: () => /*#__PURE__*/ _jsxSorted(IconChartBarOutline, null, { class: "h-6 w-6" }, null, 3, "
|
|
56
|
+
renderIcon: () => /*#__PURE__*/ _jsxSorted(IconChartBarOutline, null, { class: "h-6 w-6" }, null, 3, "NS_9"),
|
|
57
57
|
viteOnly: true
|
|
58
58
|
}
|
|
59
59
|
];
|
|
@@ -10,7 +10,7 @@ var Assets = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl((_rawProps) =>
|
|
|
10
10
|
width: 176,
|
|
11
11
|
height: 176,
|
|
12
12
|
class: "h-full w-full object-cover"
|
|
13
|
-
}, null, 3, null), 1, "
|
|
14
|
-
}), 1, "
|
|
13
|
+
}, null, 3, null), 1, "El_0") : /*#__PURE__*/ _jsxSorted("div", null, { class: "bg-foreground/5 flex aspect-square items-center justify-center" }, /*#__PURE__*/ _jsxSorted("span", null, { class: "text-muted-foreground font-mono text-2xl" }, fileExt, 1, null), 1, "El_1"), /*#__PURE__*/ _jsxSorted("div", null, { class: "space-y-2 p-4" }, [/*#__PURE__*/ _jsxSorted("div", { title: _wrapProp(asset, "path") }, { class: "truncate text-sm" }, asset.path.split("/").pop(), 1, null), /*#__PURE__*/ _jsxSorted("div", null, { class: "text-muted-foreground flex items-center justify-between text-xs" }, [/*#__PURE__*/ _jsxSorted("span", null, null, [(asset.size / 1024).toFixed(2), " KB"], 1, null), /*#__PURE__*/ _jsxSorted("span", null, { class: "bg-foreground/5 rounded-full px-2 py-1" }, fileExt, 1, null)], 1, null)], 1, null)], 1, asset.filePath);
|
|
14
|
+
}), 1, "El_2");
|
|
15
15
|
}, "Assets_component_3McbsijSMd8"));
|
|
16
16
|
export { Assets };
|
|
@@ -2,7 +2,9 @@ import { getDevtoolsRpc } from "../../devtools/rpc.qwik.mjs";
|
|
|
2
2
|
import { _captures, _fnSignal, _jsxSorted, _wrapProp, componentQrl, inlinedQrl, isBrowser, useSignal, useVisibleTaskQrl } from "@qwik.dev/core";
|
|
3
3
|
import { Fragment } from "@qwik.dev/core/jsx-runtime";
|
|
4
4
|
var _hf0 = (p0) => p0.value ? "Rebuilding..." : "Rebuild Report";
|
|
5
|
+
var _hf0_str = "p0.value?\"Rebuilding...\":\"Rebuild Report\"";
|
|
5
6
|
var _hf1 = (p0) => p0.value ? "Building..." : "Build Report";
|
|
7
|
+
var _hf1_str = "p0.value?\"Building...\":\"Build Report\"";
|
|
6
8
|
var BUILD_ANALYSIS_VIEW_PATH = "/__qwik_devtools/build-analysis/report";
|
|
7
9
|
function getBuildAnalysisIframeSrc(version, origin) {
|
|
8
10
|
const baseOrigin = origin ?? (isBrowser ? location.origin : "");
|
|
@@ -92,22 +94,22 @@ var BuildAnalysis = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(() => {
|
|
|
92
94
|
return /*#__PURE__*/ _jsxSorted("div", null, { class: "flex h-full min-h-0 flex-col gap-4" }, [/*#__PURE__*/ _jsxSorted("div", null, { class: "border-glass-border bg-card-item-bg rounded-2xl border p-5" }, /*#__PURE__*/ _jsxSorted("div", null, { class: "flex flex-col gap-3" }, [
|
|
93
95
|
/*#__PURE__*/ _jsxSorted("div", null, { class: "text-lg font-semibold" }, "Build Analysis", 3, null),
|
|
94
96
|
/*#__PURE__*/ _jsxSorted("div", null, { class: "text-muted-foreground max-w-3xl text-sm leading-6" }, "This tab embeds the HTML report generated by the visualizer plugin after a build.", 3, null),
|
|
95
|
-
buildCommand.value ? /*#__PURE__*/ _jsxSorted("code", null, { class: "text-muted-foreground bg-foreground/5 rounded-lg px-3 py-2 text-xs" }, _wrapProp(buildCommand), 3, "
|
|
96
|
-
buildTriggerHint.value ? /*#__PURE__*/ _jsxSorted("div", null, { class: "rounded-xl border border-amber-500/20 bg-amber-500/10 px-3 py-2 text-sm text-amber-200" }, _wrapProp(buildTriggerHint), 3, "
|
|
97
|
-
errorMessage.value ? /*#__PURE__*/ _jsxSorted("div", null, { class: "rounded-xl border border-red-500/20 bg-red-500/10 px-3 py-2 text-sm text-red-300" }, _wrapProp(errorMessage), 3, "
|
|
98
|
-
], 1, null), 1, null), isChecking.value ? /*#__PURE__*/ _jsxSorted("div", null, { class: "border-glass-border bg-card-item-bg text-muted-foreground rounded-2xl border p-6 text-sm" }, "Checking build analysis report...", 3, "
|
|
97
|
+
buildCommand.value ? /*#__PURE__*/ _jsxSorted("code", null, { class: "text-muted-foreground bg-foreground/5 rounded-lg px-3 py-2 text-xs" }, _wrapProp(buildCommand), 3, "td_0") : null,
|
|
98
|
+
buildTriggerHint.value ? /*#__PURE__*/ _jsxSorted("div", null, { class: "rounded-xl border border-amber-500/20 bg-amber-500/10 px-3 py-2 text-sm text-amber-200" }, _wrapProp(buildTriggerHint), 3, "td_1") : null,
|
|
99
|
+
errorMessage.value ? /*#__PURE__*/ _jsxSorted("div", null, { class: "rounded-xl border border-red-500/20 bg-red-500/10 px-3 py-2 text-sm text-red-300" }, _wrapProp(errorMessage), 3, "td_2") : null
|
|
100
|
+
], 1, null), 1, null), isChecking.value ? /*#__PURE__*/ _jsxSorted("div", null, { class: "border-glass-border bg-card-item-bg text-muted-foreground rounded-2xl border p-6 text-sm" }, "Checking build analysis report...", 3, "td_3") : hasReport.value ? /*#__PURE__*/ _jsxSorted(Fragment, null, null, [/*#__PURE__*/ _jsxSorted("div", null, { class: "flex items-center justify-end gap-3" }, [buildCommand.value && canTriggerBuild.value ? /*#__PURE__*/ _jsxSorted("button", null, {
|
|
99
101
|
type: "button",
|
|
100
102
|
"q-e:click": buildReport,
|
|
101
103
|
disabled: _wrapProp(isBuilding),
|
|
102
104
|
class: "border-border bg-foreground/5 hover:bg-foreground/10 rounded-xl border px-4 py-2 text-sm transition-colors disabled:cursor-not-allowed disabled:opacity-50"
|
|
103
|
-
}, _fnSignal(_hf0, [isBuilding]), 3, "
|
|
105
|
+
}, _fnSignal(_hf0, [isBuilding], _hf0_str), 3, "td_4") : null, /*#__PURE__*/ _jsxSorted("button", null, {
|
|
104
106
|
type: "button",
|
|
105
107
|
"q-e:click": refreshFrame,
|
|
106
108
|
class: "border-border bg-foreground/5 hover:bg-foreground/10 rounded-xl border px-4 py-2 text-sm transition-colors"
|
|
107
109
|
}, "Reload Report", 3, null)], 1, null), /*#__PURE__*/ _jsxSorted("div", null, { class: "border-glass-border bg-card-item-bg min-h-0 flex-1 overflow-hidden rounded-2xl border" }, /*#__PURE__*/ _jsxSorted("iframe", { src: getBuildAnalysisIframeSrc(iframeVersion.value) }, {
|
|
108
110
|
title: "Build Analysis Report",
|
|
109
111
|
class: "h-full min-h-[680px] w-full border-0 bg-white"
|
|
110
|
-
}, null, 3, getBuildAnalysisIframeSrc(iframeVersion.value)), 1, null)], 1, "
|
|
112
|
+
}, null, 3, getBuildAnalysisIframeSrc(iframeVersion.value)), 1, null)], 1, "td_5") : /*#__PURE__*/ _jsxSorted("div", null, { class: "border-glass-border bg-card-item-bg rounded-2xl border p-6" }, /*#__PURE__*/ _jsxSorted("div", null, { class: "flex max-w-3xl flex-col gap-4" }, [
|
|
111
113
|
/*#__PURE__*/ _jsxSorted("div", null, { class: "text-base font-semibold" }, "No build analysis report yet", 3, null),
|
|
112
114
|
/*#__PURE__*/ _jsxSorted("div", null, { class: "text-muted-foreground text-sm leading-6" }, canTriggerBuild.value ? "The visualizer HTML file does not exist yet. You need to build the current project first, and DevTools will ask for your confirmation before running that build." : "The visualizer HTML file does not exist yet. Run the build command locally to generate it, or reconnect from localhost if you want DevTools to trigger it for you.", 1, null),
|
|
113
115
|
/*#__PURE__*/ _jsxSorted("code", null, { class: "text-muted-foreground bg-foreground/5 rounded-lg px-3 py-2 text-xs" }, _wrapProp(reportPath), 3, null),
|
|
@@ -116,7 +118,7 @@ var BuildAnalysis = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(() => {
|
|
|
116
118
|
"q-e:click": buildReport,
|
|
117
119
|
disabled: _wrapProp(isBuilding),
|
|
118
120
|
class: "border-border bg-foreground/5 hover:bg-foreground/10 rounded-xl border px-4 py-2 text-sm transition-colors disabled:cursor-not-allowed disabled:opacity-50"
|
|
119
|
-
}, _fnSignal(_hf1, [isBuilding]), 3, "
|
|
120
|
-
], 1, null), 1, "
|
|
121
|
+
}, _fnSignal(_hf1, [isBuilding], _hf1_str), 3, "td_6") : null, 1, null)
|
|
122
|
+
], 1, null), 1, "td_7")], 1, "td_8");
|
|
121
123
|
}, "BuildAnalysis_component_wViM53DMgX4"));
|
|
122
124
|
export { BuildAnalysis, getBuildAnalysisIframeSrc };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { StateParser } from "./StateParser.qwik.mjs";
|
|
2
2
|
import { HtmlParser } from "./HtmlParser.qwik.mjs";
|
|
3
|
-
import { _jsxSorted, componentQrl, inlinedQrl, useSignal, useStylesQrl } from "@qwik.dev/core";
|
|
3
|
+
import { _captures, _jsxSorted, componentQrl, inlinedQrl, useSignal, useStylesQrl } from "@qwik.dev/core";
|
|
4
4
|
var CodeBreak = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(() => {
|
|
5
5
|
useStylesQrl(/*#__PURE__*/ inlinedQrl(`
|
|
6
6
|
.code-output-container {
|
|
@@ -18,25 +18,23 @@ var CodeBreak = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(() => {
|
|
|
18
18
|
`, "CodeBreak_component_useStyles_lHrOlzOysW0"));
|
|
19
19
|
const currentTab = useSignal("state");
|
|
20
20
|
return /*#__PURE__*/ _jsxSorted("div", null, { class: "h-full space-y-6 overflow-hidden" }, [
|
|
21
|
-
/*#__PURE__*/ _jsxSorted("div", null, { class: "flex justify-center" }, /*#__PURE__*/ _jsxSorted("div", null, { class: "border-glass-border bg-card-item-bg inline-flex rounded-xl border p-0.5" }, [/*#__PURE__*/ _jsxSorted("button", {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
currentTab.value === "html" && /*#__PURE__*/ _jsxSorted(HtmlParser, null, null, null, 3, "on_1")
|
|
40
|
-
], 1, "on_2");
|
|
21
|
+
/*#__PURE__*/ _jsxSorted("div", null, { class: "flex justify-center" }, /*#__PURE__*/ _jsxSorted("div", null, { class: "border-glass-border bg-card-item-bg inline-flex rounded-xl border p-0.5" }, [/*#__PURE__*/ _jsxSorted("button", { class: {
|
|
22
|
+
"rounded-lg px-3 py-2 text-sm font-medium transition-colors md:px-4": true,
|
|
23
|
+
"bg-accent text-white shadow": currentTab.value === "state",
|
|
24
|
+
"text-muted-foreground hover:bg-foreground/5": currentTab.value !== "state"
|
|
25
|
+
} }, { "q-e:click": /*#__PURE__*/ inlinedQrl(() => {
|
|
26
|
+
const currentTab = _captures[0];
|
|
27
|
+
return currentTab.value = "state";
|
|
28
|
+
}, "CodeBreak_component_div_div_div_button_q_e_click_xWgXsjQPkqw", [currentTab]) }, "State Parser", 3, null), /*#__PURE__*/ _jsxSorted("button", { class: {
|
|
29
|
+
"rounded-lg px-3 py-2 text-sm font-medium transition-colors md:px-4": true,
|
|
30
|
+
"bg-accent text-white shadow": currentTab.value === "html",
|
|
31
|
+
"text-muted-foreground hover:bg-foreground/5": currentTab.value !== "html"
|
|
32
|
+
} }, { "q-e:click": /*#__PURE__*/ inlinedQrl(() => {
|
|
33
|
+
const currentTab = _captures[0];
|
|
34
|
+
return currentTab.value = "html";
|
|
35
|
+
}, "CodeBreak_component_div_div_div_button_q_e_click_1_LC2WyereJ0c", [currentTab]) }, "HTML Parser", 3, null)], 1, null), 1, null),
|
|
36
|
+
currentTab.value === "state" && /*#__PURE__*/ _jsxSorted(StateParser, null, null, null, 3, "Qk_0"),
|
|
37
|
+
currentTab.value === "html" && /*#__PURE__*/ _jsxSorted(HtmlParser, null, null, null, 3, "Qk_1")
|
|
38
|
+
], 1, "Qk_2");
|
|
41
39
|
}, "CodeBreak_component_TGxTKTmWfNE"));
|
|
42
40
|
export { CodeBreak };
|
|
@@ -2,6 +2,7 @@ import { getHighlighter } from "../../utils/shiki.qwik.mjs";
|
|
|
2
2
|
import { _captures, _fnSignal, _jsxSorted, _wrapProp, componentQrl, inlinedQrl, useSignal, useStylesQrl, useVisibleTaskQrl } from "@qwik.dev/core";
|
|
3
3
|
import { _getDomContainer, _vnode_toString } from "@qwik.dev/core/internal";
|
|
4
4
|
var _hf0 = (p0) => p0.value || "";
|
|
5
|
+
var _hf0_str = "p0.value||\"\"";
|
|
5
6
|
var HtmlParser = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(() => {
|
|
6
7
|
useStylesQrl(/*#__PURE__*/ inlinedQrl(`
|
|
7
8
|
pre.shiki { overflow: auto; padding: 10px; height: 100%; }
|
|
@@ -68,19 +69,20 @@ var HtmlParser = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(() => {
|
|
|
68
69
|
htmlResult,
|
|
69
70
|
shikiRef
|
|
70
71
|
]));
|
|
71
|
-
return /*#__PURE__*/ _jsxSorted("div", null, { class: "grid grid-cols-1 gap-4 md:grid-cols-2" }, [/*#__PURE__*/ _jsxSorted("div", null, { class: "border-glass-border bg-card-item-bg flex h-[60vh] min-h-0 flex-col rounded-xl border" }, [/*#__PURE__*/ _jsxSorted("div", null, { class: "border-glass-border flex items-center justify-between border-b p-3" }, [/*#__PURE__*/ _jsxSorted("div", null, { class: "text-sm font-medium" }, "Input HTML", 3, null), parsingTime.value !== null && /*#__PURE__*/ _jsxSorted("span", null, { class: "border-glass-border text-muted-foreground rounded-full border px-2 py-0.5 text-xs" }, [_wrapProp(parsingTime), "ms"], 3, "
|
|
72
|
-
"q-e:input": /*#__PURE__*/ inlinedQrl((e, t, inputHtml) => inputHtml.value = t.value, "HtmlParser_component_div_div_div_textarea_q_e_input_XIyjbAjuy8w").m(),
|
|
73
|
-
"q:p": inputHtml
|
|
74
|
-
}, {
|
|
72
|
+
return /*#__PURE__*/ _jsxSorted("div", null, { class: "grid grid-cols-1 gap-4 md:grid-cols-2" }, [/*#__PURE__*/ _jsxSorted("div", null, { class: "border-glass-border bg-card-item-bg flex h-[60vh] min-h-0 flex-col rounded-xl border" }, [/*#__PURE__*/ _jsxSorted("div", null, { class: "border-glass-border flex items-center justify-between border-b p-3" }, [/*#__PURE__*/ _jsxSorted("div", null, { class: "text-sm font-medium" }, "Input HTML", 3, null), parsingTime.value !== null && /*#__PURE__*/ _jsxSorted("span", null, { class: "border-glass-border text-muted-foreground rounded-full border px-2 py-0.5 text-xs" }, [_wrapProp(parsingTime), "ms"], 3, "nu_0")], 1, null), /*#__PURE__*/ _jsxSorted("div", null, { class: "min-h-0 flex-1 flex-col space-y-3 p-3" }, [/*#__PURE__*/ _jsxSorted("textarea", null, {
|
|
75
73
|
value: _wrapProp(inputHtml),
|
|
74
|
+
"q-e:input": /*#__PURE__*/ inlinedQrl((e, t) => {
|
|
75
|
+
const inputHtml = _captures[0];
|
|
76
|
+
return inputHtml.value = t.value;
|
|
77
|
+
}, "HtmlParser_component_div_div_div_textarea_q_e_input_XIyjbAjuy8w", [inputHtml]),
|
|
76
78
|
placeholder: "Paste HTML and click to parse/format.",
|
|
77
79
|
class: "border-glass-border bg-card-item-bg text-foreground placeholder:text-muted-foreground h-full min-h-0 w-full flex-1 resize-none rounded-md border p-3 font-mono text-sm"
|
|
78
|
-
}, null,
|
|
80
|
+
}, null, 3, null), /*#__PURE__*/ _jsxSorted("div", null, { class: "flex items-center gap-3" }, /*#__PURE__*/ _jsxSorted("button", null, {
|
|
79
81
|
"q-e:click": onParseHtml$,
|
|
80
82
|
class: "bg-accent rounded-md px-3 py-1.5 text-sm text-white hover:opacity-90"
|
|
81
|
-
}, "Parse HTML", 3, null), 3, null)],
|
|
83
|
+
}, "Parse HTML", 3, null), 3, null)], 3, null)], 1, null), /*#__PURE__*/ _jsxSorted("div", null, { class: "border-glass-border bg-card-item-bg flex h-[60vh] min-h-0 flex-col overflow-hidden rounded-xl border" }, [/*#__PURE__*/ _jsxSorted("div", null, { class: "border-glass-border flex items-center justify-between border-b p-3" }, [/*#__PURE__*/ _jsxSorted("div", null, { class: "text-sm font-medium" }, "VNode Tree", 3, null), parsingTime.value !== null && /*#__PURE__*/ _jsxSorted("span", null, { class: "border-glass-border text-muted-foreground rounded-full border px-2 py-0.5 text-xs" }, [_wrapProp(parsingTime), "ms"], 3, "nu_1")], 1, null), /*#__PURE__*/ _jsxSorted("div", null, { class: "h-full min-h-0 flex-1" }, /*#__PURE__*/ _jsxSorted("pre", null, {
|
|
82
84
|
class: "h-full overflow-auto",
|
|
83
|
-
dangerouslySetInnerHTML: _fnSignal(_hf0, [highlightedHtml])
|
|
84
|
-
}, null, 3, null), 3, null)], 1, null)], 1, "
|
|
85
|
+
dangerouslySetInnerHTML: _fnSignal(_hf0, [highlightedHtml], _hf0_str)
|
|
86
|
+
}, null, 3, null), 3, null)], 1, null)], 1, "nu_2");
|
|
85
87
|
}, "HtmlParser_component_9YnEezFEUMA"));
|
|
86
88
|
export { HtmlParser };
|
|
@@ -2,6 +2,7 @@ import { getHighlighter } from "../../utils/shiki.qwik.mjs";
|
|
|
2
2
|
import { _captures, _fnSignal, _jsxSorted, _wrapProp, componentQrl, inlinedQrl, useSignal, useStylesQrl, useVisibleTaskQrl } from "@qwik.dev/core";
|
|
3
3
|
import { _dumpState, _preprocessState } from "@qwik.dev/core/internal";
|
|
4
4
|
var _hf0 = (p0) => p0.value || "";
|
|
5
|
+
var _hf0_str = "p0.value||\"\"";
|
|
5
6
|
var StateParser = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(() => {
|
|
6
7
|
useStylesQrl(/*#__PURE__*/ inlinedQrl(`
|
|
7
8
|
pre.shiki { overflow: auto; padding: 10px; height: 100%; }
|
|
@@ -94,19 +95,20 @@ var StateParser = /*#__PURE__*/ componentQrl(/*#__PURE__*/ inlinedQrl(() => {
|
|
|
94
95
|
shikiRef,
|
|
95
96
|
stateResult
|
|
96
97
|
]));
|
|
97
|
-
return /*#__PURE__*/ _jsxSorted("div", null, { class: "grid grid-cols-1 gap-4 md:grid-cols-2" }, [/*#__PURE__*/ _jsxSorted("div", null, { class: "border-glass-border bg-card-item-bg flex h-[60vh] min-h-0 flex-col rounded-xl border" }, [/*#__PURE__*/ _jsxSorted("div", null, { class: "border-glass-border flex items-center justify-between gap-3 border-b p-3" }, [/*#__PURE__*/ _jsxSorted("div", null, { class: "flex items-center gap-3" }, [/*#__PURE__*/ _jsxSorted("div", null, { class: "text-sm font-medium" }, "Input State", 3, null), parsingTime.value !== null && /*#__PURE__*/ _jsxSorted("span", null, { class: "border-glass-border text-muted-foreground rounded-full border px-2 py-0.5 text-xs" }, [_wrapProp(parsingTime), "ms"], 3, "
|
|
98
|
+
return /*#__PURE__*/ _jsxSorted("div", null, { class: "grid grid-cols-1 gap-4 md:grid-cols-2" }, [/*#__PURE__*/ _jsxSorted("div", null, { class: "border-glass-border bg-card-item-bg flex h-[60vh] min-h-0 flex-col rounded-xl border" }, [/*#__PURE__*/ _jsxSorted("div", null, { class: "border-glass-border flex items-center justify-between gap-3 border-b p-3" }, [/*#__PURE__*/ _jsxSorted("div", null, { class: "flex items-center gap-3" }, [/*#__PURE__*/ _jsxSorted("div", null, { class: "text-sm font-medium" }, "Input State", 3, null), parsingTime.value !== null && /*#__PURE__*/ _jsxSorted("span", null, { class: "border-glass-border text-muted-foreground rounded-full border px-2 py-0.5 text-xs" }, [_wrapProp(parsingTime), "ms"], 3, "97_0")], 1, null), /*#__PURE__*/ _jsxSorted("button", null, {
|
|
98
99
|
"q-e:click": onParseState$,
|
|
99
100
|
class: "bg-accent rounded-md px-3 py-1.5 text-sm text-white hover:opacity-90"
|
|
100
|
-
}, "Parse State", 3, null)], 1, null), /*#__PURE__*/ _jsxSorted("div", null, { class: "flex min-h-0 flex-1 flex-col p-3" }, /*#__PURE__*/ _jsxSorted("textarea", {
|
|
101
|
-
"q-e:input": /*#__PURE__*/ inlinedQrl((e, t, inputState) => inputState.value = t.value, "StateParser_component_div_div_div_textarea_q_e_input_kcp2t0mamTI").m(),
|
|
102
|
-
"q:p": inputState
|
|
103
|
-
}, {
|
|
101
|
+
}, "Parse State", 3, null)], 1, null), /*#__PURE__*/ _jsxSorted("div", null, { class: "flex min-h-0 flex-1 flex-col p-3" }, /*#__PURE__*/ _jsxSorted("textarea", null, {
|
|
104
102
|
value: _wrapProp(inputState),
|
|
103
|
+
"q-e:input": /*#__PURE__*/ inlinedQrl((e, t) => {
|
|
104
|
+
const inputState = _captures[0];
|
|
105
|
+
return inputState.value = t.value;
|
|
106
|
+
}, "StateParser_component_div_div_div_textarea_q_e_input_kcp2t0mamTI", [inputState]),
|
|
105
107
|
placeholder: "Paste Qwik state and click to parse/format.",
|
|
106
108
|
class: "border-glass-border bg-card-item-bg text-foreground placeholder:text-muted-foreground min-h-0 w-full flex-1 resize-none rounded-md border p-3 font-mono text-sm"
|
|
107
|
-
}, null,
|
|
109
|
+
}, null, 3, null), 3, null)], 1, null), /*#__PURE__*/ _jsxSorted("div", null, { class: "border-glass-border bg-card-item-bg flex h-[60vh] min-h-0 flex-col overflow-hidden rounded-xl border" }, [/*#__PURE__*/ _jsxSorted("div", null, { class: "border-glass-border flex items-center justify-between border-b p-3" }, [/*#__PURE__*/ _jsxSorted("div", null, { class: "text-sm font-medium" }, "Parsed State", 3, null), parsingTime.value !== null && /*#__PURE__*/ _jsxSorted("span", null, { class: "border-glass-border text-muted-foreground rounded-full border px-2 py-0.5 text-xs" }, [_wrapProp(parsingTime), "ms"], 3, "97_1")], 1, null), /*#__PURE__*/ _jsxSorted("div", null, { class: "h-full min-h-0 flex-1" }, /*#__PURE__*/ _jsxSorted("pre", null, {
|
|
108
110
|
class: "h-full overflow-auto",
|
|
109
|
-
dangerouslySetInnerHTML: _fnSignal(_hf0, [highlightedState])
|
|
110
|
-
}, null, 3, null), 3, null)], 1, null)], 1, "
|
|
111
|
+
dangerouslySetInnerHTML: _fnSignal(_hf0, [highlightedState], _hf0_str)
|
|
112
|
+
}, null, 3, null), 3, null)], 1, null)], 1, "97_2");
|
|
111
113
|
}, "StateParser_component_WYGTcR6czK0"));
|
|
112
114
|
export { StateParser };
|