@tanstack/pacer-devtools 0.1.0
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/LICENSE +21 -0
- package/dist/cjs/PacerContextProvider.cjs +156 -0
- package/dist/cjs/PacerContextProvider.cjs.map +1 -0
- package/dist/cjs/PacerContextProvider.d.cts +19 -0
- package/dist/cjs/PacerDevtools.cjs +13 -0
- package/dist/cjs/PacerDevtools.cjs.map +1 -0
- package/dist/cjs/PacerDevtools.d.cts +1 -0
- package/dist/cjs/components/ActionButtons.cjs +157 -0
- package/dist/cjs/components/ActionButtons.cjs.map +1 -0
- package/dist/cjs/components/ActionButtons.d.cts +6 -0
- package/dist/cjs/components/DetailsPanel.cjs +80 -0
- package/dist/cjs/components/DetailsPanel.cjs.map +1 -0
- package/dist/cjs/components/DetailsPanel.d.cts +11 -0
- package/dist/cjs/components/Shell.cjs +102 -0
- package/dist/cjs/components/Shell.cjs.map +1 -0
- package/dist/cjs/components/Shell.d.cts +1 -0
- package/dist/cjs/components/StateHeader.cjs +95 -0
- package/dist/cjs/components/StateHeader.cjs.map +1 -0
- package/dist/cjs/components/StateHeader.d.cts +11 -0
- package/dist/cjs/components/UtilList.cjs +70 -0
- package/dist/cjs/components/UtilList.cjs.map +1 -0
- package/dist/cjs/components/UtilList.d.cts +8 -0
- package/dist/cjs/components/util-groups.cjs +40 -0
- package/dist/cjs/components/util-groups.cjs.map +1 -0
- package/dist/cjs/components/util-groups.d.cts +8 -0
- package/dist/cjs/core.cjs +43 -0
- package/dist/cjs/core.cjs.map +1 -0
- package/dist/cjs/core.d.cts +8 -0
- package/dist/cjs/index.cjs +15 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/cjs/index.d.cts +3 -0
- package/dist/cjs/production.cjs +7 -0
- package/dist/cjs/production.cjs.map +1 -0
- package/dist/cjs/production.d.cts +3 -0
- package/dist/cjs/styles/tokens.cjs +90 -0
- package/dist/cjs/styles/tokens.cjs.map +1 -0
- package/dist/cjs/styles/tokens.d.cts +298 -0
- package/dist/cjs/styles/use-styles.cjs +397 -0
- package/dist/cjs/styles/use-styles.cjs.map +1 -0
- package/dist/cjs/styles/use-styles.d.cts +42 -0
- package/dist/esm/PacerContextProvider.d.ts +19 -0
- package/dist/esm/PacerContextProvider.js +156 -0
- package/dist/esm/PacerContextProvider.js.map +1 -0
- package/dist/esm/PacerDevtools.d.ts +1 -0
- package/dist/esm/PacerDevtools.js +14 -0
- package/dist/esm/PacerDevtools.js.map +1 -0
- package/dist/esm/components/ActionButtons.d.ts +6 -0
- package/dist/esm/components/ActionButtons.js +157 -0
- package/dist/esm/components/ActionButtons.js.map +1 -0
- package/dist/esm/components/DetailsPanel.d.ts +11 -0
- package/dist/esm/components/DetailsPanel.js +80 -0
- package/dist/esm/components/DetailsPanel.js.map +1 -0
- package/dist/esm/components/Shell.d.ts +1 -0
- package/dist/esm/components/Shell.js +102 -0
- package/dist/esm/components/Shell.js.map +1 -0
- package/dist/esm/components/StateHeader.d.ts +11 -0
- package/dist/esm/components/StateHeader.js +95 -0
- package/dist/esm/components/StateHeader.js.map +1 -0
- package/dist/esm/components/UtilList.d.ts +8 -0
- package/dist/esm/components/UtilList.js +70 -0
- package/dist/esm/components/UtilList.js.map +1 -0
- package/dist/esm/components/util-groups.d.ts +8 -0
- package/dist/esm/components/util-groups.js +40 -0
- package/dist/esm/components/util-groups.js.map +1 -0
- package/dist/esm/core.d.ts +8 -0
- package/dist/esm/core.js +42 -0
- package/dist/esm/core.js.map +1 -0
- package/dist/esm/index.d.ts +3 -0
- package/dist/esm/index.js +15 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/production.d.ts +3 -0
- package/dist/esm/production.js +7 -0
- package/dist/esm/production.js.map +1 -0
- package/dist/esm/styles/tokens.d.ts +298 -0
- package/dist/esm/styles/tokens.js +90 -0
- package/dist/esm/styles/tokens.js.map +1 -0
- package/dist/esm/styles/use-styles.d.ts +42 -0
- package/dist/esm/styles/use-styles.js +380 -0
- package/dist/esm/styles/use-styles.js.map +1 -0
- package/package.json +84 -0
- package/src/PacerContextProvider.tsx +203 -0
- package/src/PacerDevtools.tsx +10 -0
- package/src/components/ActionButtons.tsx +143 -0
- package/src/components/DetailsPanel.tsx +61 -0
- package/src/components/Shell.tsx +102 -0
- package/src/components/StateHeader.tsx +106 -0
- package/src/components/UtilList.tsx +62 -0
- package/src/components/util-groups.ts +54 -0
- package/src/core.tsx +41 -0
- package/src/index.ts +17 -0
- package/src/production.ts +7 -0
- package/src/styles/tokens.ts +305 -0
- package/src/styles/use-styles.ts +379 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Tanner Linsley
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const web = require("solid-js/web");
|
|
4
|
+
const store = require("solid-js/store");
|
|
5
|
+
const solidJs = require("solid-js");
|
|
6
|
+
const eventClient = require("@tanstack/pacer/event-client");
|
|
7
|
+
const initialPacerDevtoolsStore = {
|
|
8
|
+
asyncBatchers: [],
|
|
9
|
+
asyncDebouncers: [],
|
|
10
|
+
asyncQueuers: [],
|
|
11
|
+
asyncRateLimiters: [],
|
|
12
|
+
asyncThrottlers: [],
|
|
13
|
+
batchers: [],
|
|
14
|
+
debouncers: [],
|
|
15
|
+
queuers: [],
|
|
16
|
+
rateLimiters: [],
|
|
17
|
+
throttlers: [],
|
|
18
|
+
lastUpdatedByKey: {}
|
|
19
|
+
};
|
|
20
|
+
const PacerDevtoolsContext = solidJs.createContext([initialPacerDevtoolsStore, () => {
|
|
21
|
+
}]);
|
|
22
|
+
const updateOrAddToArray = (oldArray, newItem) => {
|
|
23
|
+
const index = oldArray.findIndex((item) => item.key === newItem.key);
|
|
24
|
+
if (index !== -1) {
|
|
25
|
+
return oldArray.map((item, i) => i === index ? newItem : item);
|
|
26
|
+
}
|
|
27
|
+
return [...oldArray, newItem];
|
|
28
|
+
};
|
|
29
|
+
function PacerContextProvider(props) {
|
|
30
|
+
const [store$1, setStore] = store.createStore(initialPacerDevtoolsStore);
|
|
31
|
+
solidJs.createEffect(() => {
|
|
32
|
+
const cleanup = eventClient.pacerEventClient.onAllPluginEvents((_e) => {
|
|
33
|
+
const e = _e;
|
|
34
|
+
switch (e.type) {
|
|
35
|
+
case "pacer:AsyncBatcher": {
|
|
36
|
+
setStore({
|
|
37
|
+
asyncBatchers: updateOrAddToArray(store$1.asyncBatchers, e.payload),
|
|
38
|
+
lastUpdatedByKey: {
|
|
39
|
+
...store$1.lastUpdatedByKey,
|
|
40
|
+
[e.payload.key]: Date.now()
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
45
|
+
case "pacer:AsyncDebouncer": {
|
|
46
|
+
setStore({
|
|
47
|
+
asyncDebouncers: updateOrAddToArray(store$1.asyncDebouncers, e.payload),
|
|
48
|
+
lastUpdatedByKey: {
|
|
49
|
+
...store$1.lastUpdatedByKey,
|
|
50
|
+
[e.payload.key]: Date.now()
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
case "pacer:AsyncQueuer": {
|
|
56
|
+
setStore({
|
|
57
|
+
asyncQueuers: updateOrAddToArray(store$1.asyncQueuers, e.payload),
|
|
58
|
+
lastUpdatedByKey: {
|
|
59
|
+
...store$1.lastUpdatedByKey,
|
|
60
|
+
[e.payload.key]: Date.now()
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
case "pacer:AsyncRateLimiter": {
|
|
66
|
+
setStore({
|
|
67
|
+
asyncRateLimiters: updateOrAddToArray(store$1.asyncRateLimiters, e.payload),
|
|
68
|
+
lastUpdatedByKey: {
|
|
69
|
+
...store$1.lastUpdatedByKey,
|
|
70
|
+
[e.payload.key]: Date.now()
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
case "pacer:AsyncThrottler": {
|
|
76
|
+
setStore({
|
|
77
|
+
asyncThrottlers: updateOrAddToArray(store$1.asyncThrottlers, e.payload),
|
|
78
|
+
lastUpdatedByKey: {
|
|
79
|
+
...store$1.lastUpdatedByKey,
|
|
80
|
+
[e.payload.key]: Date.now()
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
case "pacer:Batcher": {
|
|
86
|
+
setStore({
|
|
87
|
+
batchers: updateOrAddToArray(store$1.batchers, e.payload),
|
|
88
|
+
lastUpdatedByKey: {
|
|
89
|
+
...store$1.lastUpdatedByKey,
|
|
90
|
+
[e.payload.key]: Date.now()
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
case "pacer:Debouncer": {
|
|
96
|
+
setStore({
|
|
97
|
+
debouncers: updateOrAddToArray(store$1.debouncers, e.payload),
|
|
98
|
+
lastUpdatedByKey: {
|
|
99
|
+
...store$1.lastUpdatedByKey,
|
|
100
|
+
[e.payload.key]: Date.now()
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
case "pacer:Queuer": {
|
|
106
|
+
setStore({
|
|
107
|
+
queuers: updateOrAddToArray(store$1.queuers, e.payload),
|
|
108
|
+
lastUpdatedByKey: {
|
|
109
|
+
...store$1.lastUpdatedByKey,
|
|
110
|
+
[e.payload.key]: Date.now()
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
case "pacer:RateLimiter": {
|
|
116
|
+
setStore({
|
|
117
|
+
rateLimiters: updateOrAddToArray(store$1.rateLimiters, e.payload),
|
|
118
|
+
lastUpdatedByKey: {
|
|
119
|
+
...store$1.lastUpdatedByKey,
|
|
120
|
+
[e.payload.key]: Date.now()
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
break;
|
|
124
|
+
}
|
|
125
|
+
case "pacer:Throttler": {
|
|
126
|
+
setStore({
|
|
127
|
+
throttlers: updateOrAddToArray(store$1.throttlers, e.payload),
|
|
128
|
+
lastUpdatedByKey: {
|
|
129
|
+
...store$1.lastUpdatedByKey,
|
|
130
|
+
[e.payload.key]: Date.now()
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
solidJs.onCleanup(cleanup);
|
|
138
|
+
});
|
|
139
|
+
return web.createComponent(PacerDevtoolsContext.Provider, {
|
|
140
|
+
value: [store$1, setStore],
|
|
141
|
+
get children() {
|
|
142
|
+
return props.children;
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
const usePacerDevtoolsContext = () => {
|
|
147
|
+
const context = solidJs.useContext(PacerDevtoolsContext);
|
|
148
|
+
return context;
|
|
149
|
+
};
|
|
150
|
+
const usePacerDevtoolsState = () => {
|
|
151
|
+
const [state] = usePacerDevtoolsContext();
|
|
152
|
+
return state;
|
|
153
|
+
};
|
|
154
|
+
exports.PacerContextProvider = PacerContextProvider;
|
|
155
|
+
exports.usePacerDevtoolsState = usePacerDevtoolsState;
|
|
156
|
+
//# sourceMappingURL=PacerContextProvider.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PacerContextProvider.cjs","sources":["../../src/PacerContextProvider.tsx"],"sourcesContent":["import { createStore } from 'solid-js/store'\nimport { createContext, createEffect, onCleanup, useContext } from 'solid-js'\nimport { pacerEventClient } from '@tanstack/pacer/event-client'\nimport type {\n AsyncBatcher,\n AsyncDebouncer,\n AsyncQueuer,\n AsyncRateLimiter,\n AsyncThrottler,\n Batcher,\n Debouncer,\n Queuer,\n RateLimiter,\n Throttler,\n} from '@tanstack/pacer'\n\ninterface PacerDevtoolsContextType {\n asyncBatchers: Array<AsyncBatcher<any>>\n asyncDebouncers: Array<AsyncDebouncer<any>>\n asyncQueuers: Array<AsyncQueuer<any>>\n asyncRateLimiters: Array<AsyncRateLimiter<any>>\n asyncThrottlers: Array<AsyncThrottler<any>>\n batchers: Array<Batcher<any>>\n debouncers: Array<Debouncer<any>>\n queuers: Array<Queuer<any>>\n rateLimiters: Array<RateLimiter<any>>\n throttlers: Array<Throttler<any>>\n lastUpdatedByKey: Record<string, number>\n}\n\nconst initialPacerDevtoolsStore = {\n asyncBatchers: [],\n asyncDebouncers: [],\n asyncQueuers: [],\n asyncRateLimiters: [],\n asyncThrottlers: [],\n batchers: [],\n debouncers: [],\n queuers: [],\n rateLimiters: [],\n throttlers: [],\n lastUpdatedByKey: {},\n}\n\nconst PacerDevtoolsContext = createContext<\n [\n PacerDevtoolsContextType,\n (newState: Partial<PacerDevtoolsContextType>) => void,\n ]\n>([initialPacerDevtoolsStore, () => {}])\n\nconst updateOrAddToArray = <T extends { key: string }>(\n oldArray: Array<T>,\n newItem: T,\n) => {\n const index = oldArray.findIndex((item) => item.key === newItem.key)\n if (index !== -1) {\n // Update existing item\n return oldArray.map((item, i) => (i === index ? newItem : item))\n }\n // Add new item\n return [...oldArray, newItem]\n}\n\nexport function PacerContextProvider(props: { children: any }) {\n const [store, setStore] = createStore<PacerDevtoolsContextType>(\n initialPacerDevtoolsStore,\n )\n\n createEffect(() => {\n const cleanup = pacerEventClient.onAllPluginEvents((_e) => {\n const e = _e as unknown as { type: string; payload: any }\n switch (e.type) {\n case 'pacer:AsyncBatcher': {\n setStore({\n asyncBatchers: updateOrAddToArray(store.asyncBatchers, e.payload),\n lastUpdatedByKey: {\n ...store.lastUpdatedByKey,\n [e.payload.key]: Date.now(),\n },\n })\n break\n }\n case 'pacer:AsyncDebouncer': {\n setStore({\n asyncDebouncers: updateOrAddToArray(\n store.asyncDebouncers,\n e.payload,\n ),\n lastUpdatedByKey: {\n ...store.lastUpdatedByKey,\n [e.payload.key]: Date.now(),\n },\n })\n break\n }\n case 'pacer:AsyncQueuer': {\n setStore({\n asyncQueuers: updateOrAddToArray(store.asyncQueuers, e.payload),\n lastUpdatedByKey: {\n ...store.lastUpdatedByKey,\n [e.payload.key]: Date.now(),\n },\n })\n break\n }\n case 'pacer:AsyncRateLimiter': {\n setStore({\n asyncRateLimiters: updateOrAddToArray(\n store.asyncRateLimiters,\n e.payload,\n ),\n lastUpdatedByKey: {\n ...store.lastUpdatedByKey,\n [e.payload.key]: Date.now(),\n },\n })\n break\n }\n case 'pacer:AsyncThrottler': {\n setStore({\n asyncThrottlers: updateOrAddToArray(\n store.asyncThrottlers,\n e.payload,\n ),\n lastUpdatedByKey: {\n ...store.lastUpdatedByKey,\n [e.payload.key]: Date.now(),\n },\n })\n break\n }\n case 'pacer:Batcher': {\n setStore({\n batchers: updateOrAddToArray(store.batchers, e.payload),\n lastUpdatedByKey: {\n ...store.lastUpdatedByKey,\n [e.payload.key]: Date.now(),\n },\n })\n break\n }\n case 'pacer:Debouncer': {\n setStore({\n debouncers: updateOrAddToArray(store.debouncers, e.payload),\n lastUpdatedByKey: {\n ...store.lastUpdatedByKey,\n [e.payload.key]: Date.now(),\n },\n })\n break\n }\n case 'pacer:Queuer': {\n setStore({\n queuers: updateOrAddToArray(store.queuers, e.payload),\n lastUpdatedByKey: {\n ...store.lastUpdatedByKey,\n [e.payload.key]: Date.now(),\n },\n })\n break\n }\n case 'pacer:RateLimiter': {\n setStore({\n rateLimiters: updateOrAddToArray(store.rateLimiters, e.payload),\n lastUpdatedByKey: {\n ...store.lastUpdatedByKey,\n [e.payload.key]: Date.now(),\n },\n })\n break\n }\n case 'pacer:Throttler': {\n setStore({\n throttlers: updateOrAddToArray(store.throttlers, e.payload),\n lastUpdatedByKey: {\n ...store.lastUpdatedByKey,\n [e.payload.key]: Date.now(),\n },\n })\n break\n }\n }\n })\n onCleanup(cleanup)\n })\n return (\n <PacerDevtoolsContext.Provider value={[store, setStore]}>\n {props.children}\n </PacerDevtoolsContext.Provider>\n )\n}\n\nconst usePacerDevtoolsContext = () => {\n const context = useContext(PacerDevtoolsContext)\n\n return context\n}\n\nexport const usePacerDevtoolsState = () => {\n const [state] = usePacerDevtoolsContext()\n return state\n}\n"],"names":["initialPacerDevtoolsStore","asyncBatchers","asyncDebouncers","asyncQueuers","asyncRateLimiters","asyncThrottlers","batchers","debouncers","queuers","rateLimiters","throttlers","lastUpdatedByKey","PacerDevtoolsContext","createContext","updateOrAddToArray","oldArray","newItem","index","findIndex","item","key","map","i","PacerContextProvider","props","store","setStore","createStore","createEffect","cleanup","pacerEventClient","onAllPluginEvents","_e","e","type","payload","Date","now","onCleanup","_$createComponent","Provider","value","children","usePacerDevtoolsContext","context","useContext","usePacerDevtoolsState","state"],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { AsyncBatcher, AsyncDebouncer, AsyncQueuer, AsyncRateLimiter, AsyncThrottler, Batcher, Debouncer, Queuer, RateLimiter, Throttler } from '@tanstack/pacer';
|
|
2
|
+
interface PacerDevtoolsContextType {
|
|
3
|
+
asyncBatchers: Array<AsyncBatcher<any>>;
|
|
4
|
+
asyncDebouncers: Array<AsyncDebouncer<any>>;
|
|
5
|
+
asyncQueuers: Array<AsyncQueuer<any>>;
|
|
6
|
+
asyncRateLimiters: Array<AsyncRateLimiter<any>>;
|
|
7
|
+
asyncThrottlers: Array<AsyncThrottler<any>>;
|
|
8
|
+
batchers: Array<Batcher<any>>;
|
|
9
|
+
debouncers: Array<Debouncer<any>>;
|
|
10
|
+
queuers: Array<Queuer<any>>;
|
|
11
|
+
rateLimiters: Array<RateLimiter<any>>;
|
|
12
|
+
throttlers: Array<Throttler<any>>;
|
|
13
|
+
lastUpdatedByKey: Record<string, number>;
|
|
14
|
+
}
|
|
15
|
+
export declare function PacerContextProvider(props: {
|
|
16
|
+
children: any;
|
|
17
|
+
}): import("solid-js").JSX.Element;
|
|
18
|
+
export declare const usePacerDevtoolsState: () => PacerDevtoolsContextType;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const web = require("solid-js/web");
|
|
3
|
+
const PacerContextProvider = require("./PacerContextProvider.cjs");
|
|
4
|
+
const Shell = require("./components/Shell.cjs");
|
|
5
|
+
function PacerDevtools() {
|
|
6
|
+
return web.createComponent(PacerContextProvider.PacerContextProvider, {
|
|
7
|
+
get children() {
|
|
8
|
+
return web.createComponent(Shell.Shell, {});
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
module.exports = PacerDevtools;
|
|
13
|
+
//# sourceMappingURL=PacerDevtools.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PacerDevtools.cjs","sources":["../../src/PacerDevtools.tsx"],"sourcesContent":["import { PacerContextProvider } from './PacerContextProvider'\nimport { Shell } from './components/Shell'\n\nexport default function PacerDevtools() {\n return (\n <PacerContextProvider>\n <Shell />\n </PacerContextProvider>\n )\n}\n"],"names":["PacerDevtools","_$createComponent","PacerContextProvider","children","Shell"],"mappings":";;;;AAGA,SAAwBA,gBAAgB;AACtC,SAAAC,IAAAA,gBACGC,qBAAAA,sBAAoB;AAAA,IAAA,IAAAC,WAAA;AAAA,aAAAF,IAAAA,gBAClBG,MAAAA,OAAK,EAAA;AAAA,IAAA;AAAA,EAAA,CAAA;AAGZ;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function PacerDevtools(): import("solid-js").JSX.Element;
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const web = require("solid-js/web");
|
|
4
|
+
const pacer = require("@tanstack/pacer");
|
|
5
|
+
const useStyles = require("../styles/use-styles.cjs");
|
|
6
|
+
var _tmpl$ = /* @__PURE__ */ web.template(`<div>No actions available for this util`), _tmpl$2 = /* @__PURE__ */ web.template(`<div>`), _tmpl$3 = /* @__PURE__ */ web.template(`<button><span>`), _tmpl$4 = /* @__PURE__ */ web.template(`<button><span></span>Flush`), _tmpl$5 = /* @__PURE__ */ web.template(`<button><span></span>Cancel`), _tmpl$6 = /* @__PURE__ */ web.template(`<button><span></span>Reset`), _tmpl$7 = /* @__PURE__ */ web.template(`<button><span></span>Clear`);
|
|
7
|
+
function ActionButtons(props) {
|
|
8
|
+
const styles = useStyles.useStyles();
|
|
9
|
+
const utilInstance = props.instance;
|
|
10
|
+
const utilState = utilInstance?.store?.state;
|
|
11
|
+
const hasPending = utilState && "isPending" in utilState;
|
|
12
|
+
const hasEmpty = utilState && "isEmpty" in utilState;
|
|
13
|
+
const isPending = hasPending ? !!utilState.isPending : false;
|
|
14
|
+
const isEmpty = hasEmpty ? utilState.isEmpty : void 0;
|
|
15
|
+
const hasFlush = typeof utilInstance.flush === "function";
|
|
16
|
+
const hasCancel = typeof utilInstance.cancel === "function";
|
|
17
|
+
const hasReset = typeof utilInstance.reset === "function";
|
|
18
|
+
const hasClear = typeof utilInstance.clear === "function";
|
|
19
|
+
const hasStart = typeof utilInstance.start === "function";
|
|
20
|
+
const hasStop = typeof utilInstance.stop === "function";
|
|
21
|
+
const hasStartStop = hasStart && hasStop;
|
|
22
|
+
const isRunning = utilState?.isRunning ?? true;
|
|
23
|
+
if (!hasPending && !hasFlush && !hasCancel && !hasReset && !hasClear) {
|
|
24
|
+
return (() => {
|
|
25
|
+
var _el$ = _tmpl$();
|
|
26
|
+
web.effect(() => web.className(_el$, styles().sectionEmpty));
|
|
27
|
+
return _el$;
|
|
28
|
+
})();
|
|
29
|
+
}
|
|
30
|
+
const emitName = `d-${props.utilName}`;
|
|
31
|
+
return (() => {
|
|
32
|
+
var _el$2 = _tmpl$2();
|
|
33
|
+
web.insert(_el$2, hasPending && (() => {
|
|
34
|
+
var _el$3 = _tmpl$3(), _el$4 = _el$3.firstChild;
|
|
35
|
+
_el$3.$$mousedown = () => {
|
|
36
|
+
const next = !isPending;
|
|
37
|
+
utilInstance.store.setState((prev) => ({
|
|
38
|
+
...prev,
|
|
39
|
+
isPending: next
|
|
40
|
+
}));
|
|
41
|
+
pacer.pacerEventClient.emit(emitName, utilInstance);
|
|
42
|
+
};
|
|
43
|
+
web.insert(_el$3, isPending ? "Restore Pending" : "Trigger Pending", null);
|
|
44
|
+
web.effect((_p$) => {
|
|
45
|
+
var _v$ = styles().actionButton, _v$2 = styles().actionDotBlue;
|
|
46
|
+
_v$ !== _p$.e && web.className(_el$3, _p$.e = _v$);
|
|
47
|
+
_v$2 !== _p$.t && web.className(_el$4, _p$.t = _v$2);
|
|
48
|
+
return _p$;
|
|
49
|
+
}, {
|
|
50
|
+
e: void 0,
|
|
51
|
+
t: void 0
|
|
52
|
+
});
|
|
53
|
+
return _el$3;
|
|
54
|
+
})(), null);
|
|
55
|
+
web.insert(_el$2, hasFlush && (() => {
|
|
56
|
+
var _el$5 = _tmpl$4(), _el$6 = _el$5.firstChild;
|
|
57
|
+
_el$5.$$mousedown = () => {
|
|
58
|
+
utilInstance.flush();
|
|
59
|
+
pacer.pacerEventClient.emit(emitName, utilInstance);
|
|
60
|
+
};
|
|
61
|
+
web.effect((_p$) => {
|
|
62
|
+
var _v$3 = styles().actionButton, _v$4 = props.utilName.toLowerCase().includes("debouncer") && !isPending || props.utilName.toLowerCase().includes("throttler") && !isPending || props.utilName.toLowerCase().includes("batcher") && isEmpty || props.utilName.toLowerCase().includes("queuer") && isEmpty, _v$5 = styles().actionDotGreen;
|
|
63
|
+
_v$3 !== _p$.e && web.className(_el$5, _p$.e = _v$3);
|
|
64
|
+
_v$4 !== _p$.t && (_el$5.disabled = _p$.t = _v$4);
|
|
65
|
+
_v$5 !== _p$.a && web.className(_el$6, _p$.a = _v$5);
|
|
66
|
+
return _p$;
|
|
67
|
+
}, {
|
|
68
|
+
e: void 0,
|
|
69
|
+
t: void 0,
|
|
70
|
+
a: void 0
|
|
71
|
+
});
|
|
72
|
+
return _el$5;
|
|
73
|
+
})(), null);
|
|
74
|
+
web.insert(_el$2, hasCancel && (() => {
|
|
75
|
+
var _el$7 = _tmpl$5(), _el$8 = _el$7.firstChild;
|
|
76
|
+
_el$7.$$mousedown = () => {
|
|
77
|
+
utilInstance.cancel();
|
|
78
|
+
pacer.pacerEventClient.emit(emitName, utilInstance);
|
|
79
|
+
};
|
|
80
|
+
web.effect((_p$) => {
|
|
81
|
+
var _v$6 = styles().actionButton, _v$7 = props.utilName.toLowerCase().includes("debouncer") && !isPending || props.utilName.toLowerCase().includes("throttler") && !isPending || props.utilName.toLowerCase().includes("batcher") && isEmpty || props.utilName.toLowerCase().includes("queuer") && isEmpty, _v$8 = styles().actionDotRed;
|
|
82
|
+
_v$6 !== _p$.e && web.className(_el$7, _p$.e = _v$6);
|
|
83
|
+
_v$7 !== _p$.t && (_el$7.disabled = _p$.t = _v$7);
|
|
84
|
+
_v$8 !== _p$.a && web.className(_el$8, _p$.a = _v$8);
|
|
85
|
+
return _p$;
|
|
86
|
+
}, {
|
|
87
|
+
e: void 0,
|
|
88
|
+
t: void 0,
|
|
89
|
+
a: void 0
|
|
90
|
+
});
|
|
91
|
+
return _el$7;
|
|
92
|
+
})(), null);
|
|
93
|
+
web.insert(_el$2, hasReset && (() => {
|
|
94
|
+
var _el$9 = _tmpl$6(), _el$0 = _el$9.firstChild;
|
|
95
|
+
_el$9.$$mousedown = () => {
|
|
96
|
+
utilInstance.reset();
|
|
97
|
+
pacer.pacerEventClient.emit(emitName, utilInstance);
|
|
98
|
+
};
|
|
99
|
+
web.effect((_p$) => {
|
|
100
|
+
var _v$9 = styles().actionButton, _v$0 = styles().actionDotYellow;
|
|
101
|
+
_v$9 !== _p$.e && web.className(_el$9, _p$.e = _v$9);
|
|
102
|
+
_v$0 !== _p$.t && web.className(_el$0, _p$.t = _v$0);
|
|
103
|
+
return _p$;
|
|
104
|
+
}, {
|
|
105
|
+
e: void 0,
|
|
106
|
+
t: void 0
|
|
107
|
+
});
|
|
108
|
+
return _el$9;
|
|
109
|
+
})(), null);
|
|
110
|
+
web.insert(_el$2, hasClear && (() => {
|
|
111
|
+
var _el$1 = _tmpl$7(), _el$10 = _el$1.firstChild;
|
|
112
|
+
_el$1.$$mousedown = () => {
|
|
113
|
+
utilInstance.clear();
|
|
114
|
+
pacer.pacerEventClient.emit(emitName, utilInstance);
|
|
115
|
+
};
|
|
116
|
+
web.effect((_p$) => {
|
|
117
|
+
var _v$1 = styles().actionButton, _v$10 = props.utilName.toLowerCase().includes("batcher") && isEmpty || props.utilName.toLowerCase().includes("queuer") && isEmpty, _v$11 = styles().actionDotOrange;
|
|
118
|
+
_v$1 !== _p$.e && web.className(_el$1, _p$.e = _v$1);
|
|
119
|
+
_v$10 !== _p$.t && (_el$1.disabled = _p$.t = _v$10);
|
|
120
|
+
_v$11 !== _p$.a && web.className(_el$10, _p$.a = _v$11);
|
|
121
|
+
return _p$;
|
|
122
|
+
}, {
|
|
123
|
+
e: void 0,
|
|
124
|
+
t: void 0,
|
|
125
|
+
a: void 0
|
|
126
|
+
});
|
|
127
|
+
return _el$1;
|
|
128
|
+
})(), null);
|
|
129
|
+
web.insert(_el$2, hasStartStop && (() => {
|
|
130
|
+
var _el$11 = _tmpl$3(), _el$12 = _el$11.firstChild;
|
|
131
|
+
_el$11.$$mousedown = () => {
|
|
132
|
+
if (isRunning) {
|
|
133
|
+
utilInstance.stop();
|
|
134
|
+
} else {
|
|
135
|
+
utilInstance.start();
|
|
136
|
+
}
|
|
137
|
+
pacer.pacerEventClient.emit(emitName, utilInstance);
|
|
138
|
+
};
|
|
139
|
+
web.insert(_el$11, isRunning ? "Stop" : "Start", null);
|
|
140
|
+
web.effect((_p$) => {
|
|
141
|
+
var _v$12 = styles().actionButton, _v$13 = styles().actionDotPurple;
|
|
142
|
+
_v$12 !== _p$.e && web.className(_el$11, _p$.e = _v$12);
|
|
143
|
+
_v$13 !== _p$.t && web.className(_el$12, _p$.t = _v$13);
|
|
144
|
+
return _p$;
|
|
145
|
+
}, {
|
|
146
|
+
e: void 0,
|
|
147
|
+
t: void 0
|
|
148
|
+
});
|
|
149
|
+
return _el$11;
|
|
150
|
+
})(), null);
|
|
151
|
+
web.effect(() => web.className(_el$2, styles().actionsRow));
|
|
152
|
+
return _el$2;
|
|
153
|
+
})();
|
|
154
|
+
}
|
|
155
|
+
web.delegateEvents(["mousedown"]);
|
|
156
|
+
exports.ActionButtons = ActionButtons;
|
|
157
|
+
//# sourceMappingURL=ActionButtons.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActionButtons.cjs","sources":["../../../src/components/ActionButtons.tsx"],"sourcesContent":["import { pacerEventClient } from '@tanstack/pacer'\nimport { useStyles } from '../styles/use-styles'\nimport type { PacerEventName } from '@tanstack/pacer'\n\ntype ActionButtonsProps = {\n instance: any\n utilName: string\n}\n\nexport function ActionButtons(props: ActionButtonsProps) {\n const styles = useStyles()\n const utilInstance = props.instance\n const utilState = utilInstance?.store?.state\n const hasPending = utilState && 'isPending' in utilState\n const hasEmpty = utilState && 'isEmpty' in utilState\n const isPending = hasPending ? !!utilState.isPending : false\n const isEmpty = hasEmpty ? utilState.isEmpty : undefined\n\n const hasFlush = typeof utilInstance.flush === 'function'\n const hasCancel = typeof utilInstance.cancel === 'function'\n const hasReset = typeof utilInstance.reset === 'function'\n const hasClear = typeof utilInstance.clear === 'function'\n const hasStart = typeof utilInstance.start === 'function'\n const hasStop = typeof utilInstance.stop === 'function'\n const hasStartStop = hasStart && hasStop\n\n const isRunning = utilState?.isRunning ?? true\n\n if (!hasPending && !hasFlush && !hasCancel && !hasReset && !hasClear) {\n return (\n <div class={styles().sectionEmpty}>\n No actions available for this util\n </div>\n )\n }\n\n const emitName = `d-${props.utilName}` as PacerEventName\n\n return (\n <div class={styles().actionsRow}>\n {hasPending && (\n <button\n class={styles().actionButton}\n onMouseDown={() => {\n const next = !isPending\n utilInstance.store.setState((prev: any) => ({\n ...prev,\n isPending: next,\n }))\n pacerEventClient.emit(emitName, utilInstance)\n }}\n >\n <span class={styles().actionDotBlue} />\n {isPending ? 'Restore Pending' : 'Trigger Pending'}\n </button>\n )}\n {hasFlush && (\n <button\n class={styles().actionButton}\n onMouseDown={() => {\n utilInstance.flush()\n pacerEventClient.emit(emitName, utilInstance)\n }}\n disabled={\n (props.utilName.toLowerCase().includes('debouncer') &&\n !isPending) ||\n (props.utilName.toLowerCase().includes('throttler') &&\n !isPending) ||\n (props.utilName.toLowerCase().includes('batcher') && isEmpty) ||\n (props.utilName.toLowerCase().includes('queuer') && isEmpty)\n }\n >\n <span class={styles().actionDotGreen} />\n Flush\n </button>\n )}\n {hasCancel && (\n <button\n class={styles().actionButton}\n onMouseDown={() => {\n utilInstance.cancel()\n pacerEventClient.emit(emitName, utilInstance)\n }}\n disabled={\n (props.utilName.toLowerCase().includes('debouncer') &&\n !isPending) ||\n (props.utilName.toLowerCase().includes('throttler') &&\n !isPending) ||\n (props.utilName.toLowerCase().includes('batcher') && isEmpty) ||\n (props.utilName.toLowerCase().includes('queuer') && isEmpty)\n }\n >\n <span class={styles().actionDotRed} />\n Cancel\n </button>\n )}\n {hasReset && (\n <button\n class={styles().actionButton}\n onMouseDown={() => {\n utilInstance.reset()\n pacerEventClient.emit(emitName, utilInstance)\n }}\n >\n <span class={styles().actionDotYellow} />\n Reset\n </button>\n )}\n {hasClear && (\n <button\n class={styles().actionButton}\n onMouseDown={() => {\n utilInstance.clear()\n pacerEventClient.emit(emitName, utilInstance)\n }}\n disabled={\n (props.utilName.toLowerCase().includes('batcher') && isEmpty) ||\n (props.utilName.toLowerCase().includes('queuer') && isEmpty)\n }\n >\n <span class={styles().actionDotOrange} />\n Clear\n </button>\n )}\n {hasStartStop && (\n <button\n class={styles().actionButton}\n onMouseDown={() => {\n if (isRunning) {\n utilInstance.stop()\n } else {\n utilInstance.start()\n }\n pacerEventClient.emit(emitName, utilInstance)\n }}\n >\n <span class={styles().actionDotPurple} />\n {isRunning ? 'Stop' : 'Start'}\n </button>\n )}\n </div>\n )\n}\n"],"names":["ActionButtons","props","styles","useStyles","utilInstance","instance","utilState","store","state","hasPending","hasEmpty","isPending","isEmpty","undefined","hasFlush","flush","hasCancel","cancel","hasReset","reset","hasClear","clear","hasStart","start","hasStop","stop","hasStartStop","isRunning","_el$","_tmpl$","_$effect","_$className","sectionEmpty","emitName","utilName","_el$2","_tmpl$2","_$insert","_el$3","_tmpl$3","_el$4","firstChild","$$mousedown","next","setState","prev","pacerEventClient","emit","_p$","_v$","actionButton","_v$2","actionDotBlue","e","t","_el$5","_tmpl$4","_el$6","_v$3","_v$4","toLowerCase","includes","_v$5","actionDotGreen","disabled","a","_el$7","_tmpl$5","_el$8","_v$6","_v$7","_v$8","actionDotRed","_el$9","_tmpl$6","_el$0","_v$9","_v$0","actionDotYellow","_el$1","_tmpl$7","_el$10","_v$1","_v$10","_v$11","actionDotOrange","_el$11","_el$12","_v$12","_v$13","actionDotPurple","actionsRow","_$delegateEvents"],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const web = require("solid-js/web");
|
|
4
|
+
const devtoolsUi = require("@tanstack/devtools-ui");
|
|
5
|
+
const useStyles = require("../styles/use-styles.cjs");
|
|
6
|
+
const ActionButtons = require("./ActionButtons.cjs");
|
|
7
|
+
const StateHeader = require("./StateHeader.cjs");
|
|
8
|
+
var _tmpl$ = /* @__PURE__ */ web.template(`<div>`), _tmpl$2 = /* @__PURE__ */ web.template(`<div>Select a util from the left panel to view its state`), _tmpl$3 = /* @__PURE__ */ web.template(`<div><div><div>Actions</div></div><div><div>State</div><div></div></div><div><div>Options</div><div>`);
|
|
9
|
+
function DetailsPanel(props) {
|
|
10
|
+
const styles = useStyles.useStyles();
|
|
11
|
+
return (() => {
|
|
12
|
+
var _el$ = _tmpl$();
|
|
13
|
+
web.insert(_el$, () => {
|
|
14
|
+
const entry = props.selectedInstance();
|
|
15
|
+
if (!entry) {
|
|
16
|
+
return (() => {
|
|
17
|
+
var _el$2 = _tmpl$2();
|
|
18
|
+
web.effect(() => web.className(_el$2, styles().noSelection));
|
|
19
|
+
return _el$2;
|
|
20
|
+
})();
|
|
21
|
+
}
|
|
22
|
+
return [web.createComponent(StateHeader.StateHeader, {
|
|
23
|
+
get selectedInstance() {
|
|
24
|
+
return props.selectedInstance;
|
|
25
|
+
},
|
|
26
|
+
get utilState() {
|
|
27
|
+
return props.utilState;
|
|
28
|
+
}
|
|
29
|
+
}), (() => {
|
|
30
|
+
var _el$3 = _tmpl$3(), _el$4 = _el$3.firstChild, _el$5 = _el$4.firstChild, _el$6 = _el$4.nextSibling, _el$7 = _el$6.firstChild, _el$8 = _el$7.nextSibling, _el$9 = _el$6.nextSibling, _el$0 = _el$9.firstChild, _el$1 = _el$0.nextSibling;
|
|
31
|
+
web.insert(_el$4, web.createComponent(ActionButtons.ActionButtons, {
|
|
32
|
+
get instance() {
|
|
33
|
+
return entry.instance;
|
|
34
|
+
},
|
|
35
|
+
get utilName() {
|
|
36
|
+
return entry.type;
|
|
37
|
+
}
|
|
38
|
+
}), null);
|
|
39
|
+
web.insert(_el$8, web.createComponent(devtoolsUi.JsonTree, {
|
|
40
|
+
get value() {
|
|
41
|
+
return entry.instance.store?.state;
|
|
42
|
+
}
|
|
43
|
+
}));
|
|
44
|
+
web.insert(_el$1, web.createComponent(devtoolsUi.JsonTree, {
|
|
45
|
+
get value() {
|
|
46
|
+
return entry.instance.options;
|
|
47
|
+
}
|
|
48
|
+
}));
|
|
49
|
+
web.effect((_p$) => {
|
|
50
|
+
var _v$ = styles().detailsGrid, _v$2 = styles().detailSection, _v$3 = styles().detailSectionHeader, _v$4 = styles().detailSection, _v$5 = styles().detailSectionHeader, _v$6 = styles().stateContent, _v$7 = styles().detailSection, _v$8 = styles().detailSectionHeader, _v$9 = styles().stateContent;
|
|
51
|
+
_v$ !== _p$.e && web.className(_el$3, _p$.e = _v$);
|
|
52
|
+
_v$2 !== _p$.t && web.className(_el$4, _p$.t = _v$2);
|
|
53
|
+
_v$3 !== _p$.a && web.className(_el$5, _p$.a = _v$3);
|
|
54
|
+
_v$4 !== _p$.o && web.className(_el$6, _p$.o = _v$4);
|
|
55
|
+
_v$5 !== _p$.i && web.className(_el$7, _p$.i = _v$5);
|
|
56
|
+
_v$6 !== _p$.n && web.className(_el$8, _p$.n = _v$6);
|
|
57
|
+
_v$7 !== _p$.s && web.className(_el$9, _p$.s = _v$7);
|
|
58
|
+
_v$8 !== _p$.h && web.className(_el$0, _p$.h = _v$8);
|
|
59
|
+
_v$9 !== _p$.r && web.className(_el$1, _p$.r = _v$9);
|
|
60
|
+
return _p$;
|
|
61
|
+
}, {
|
|
62
|
+
e: void 0,
|
|
63
|
+
t: void 0,
|
|
64
|
+
a: void 0,
|
|
65
|
+
o: void 0,
|
|
66
|
+
i: void 0,
|
|
67
|
+
n: void 0,
|
|
68
|
+
s: void 0,
|
|
69
|
+
h: void 0,
|
|
70
|
+
r: void 0
|
|
71
|
+
});
|
|
72
|
+
return _el$3;
|
|
73
|
+
})()];
|
|
74
|
+
});
|
|
75
|
+
web.effect(() => web.className(_el$, styles().stateDetails));
|
|
76
|
+
return _el$;
|
|
77
|
+
})();
|
|
78
|
+
}
|
|
79
|
+
exports.DetailsPanel = DetailsPanel;
|
|
80
|
+
//# sourceMappingURL=DetailsPanel.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DetailsPanel.cjs","sources":["../../../src/components/DetailsPanel.tsx"],"sourcesContent":["import { JsonTree } from '@tanstack/devtools-ui'\nimport { useStyles } from '../styles/use-styles'\nimport { ActionButtons } from './ActionButtons'\nimport { StateHeader } from './StateHeader'\n\ntype DetailsPanelProps = {\n selectedInstance: () => { instance: any; type: string } | null\n utilState: () => { lastUpdatedByKey: Record<string, number> }\n}\n\nexport function DetailsPanel(props: DetailsPanelProps) {\n const styles = useStyles()\n\n return (\n <div class={styles().stateDetails}>\n {(() => {\n const entry = props.selectedInstance()\n if (!entry) {\n return (\n <div class={styles().noSelection}>\n Select a util from the left panel to view its state\n </div>\n )\n }\n\n return (\n <>\n <StateHeader\n selectedInstance={props.selectedInstance}\n utilState={props.utilState}\n />\n\n <div class={styles().detailsGrid}>\n <div class={styles().detailSection}>\n <div class={styles().detailSectionHeader}>Actions</div>\n <ActionButtons\n instance={entry.instance}\n utilName={entry.type}\n />\n </div>\n\n <div class={styles().detailSection}>\n <div class={styles().detailSectionHeader}>State</div>\n <div class={styles().stateContent}>\n <JsonTree value={entry.instance.store?.state} />\n </div>\n </div>\n\n <div class={styles().detailSection}>\n <div class={styles().detailSectionHeader}>Options</div>\n <div class={styles().stateContent}>\n <JsonTree value={entry.instance.options} />\n </div>\n </div>\n </div>\n </>\n )\n })()}\n </div>\n )\n}\n"],"names":["DetailsPanel","props","styles","useStyles","_el$","_tmpl$","_$insert","entry","selectedInstance","_el$2","_tmpl$2","_$effect","_$className","noSelection","_$createComponent","StateHeader","utilState","_el$3","_tmpl$3","_el$4","firstChild","_el$5","_el$6","nextSibling","_el$7","_el$8","_el$9","_el$0","_el$1","ActionButtons","instance","utilName","type","JsonTree","value","store","state","options","_p$","_v$","detailsGrid","_v$2","detailSection","_v$3","detailSectionHeader","_v$4","_v$5","_v$6","stateContent","_v$7","_v$8","_v$9","e","t","a","o","i","n","s","h","r","undefined","stateDetails"],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
type DetailsPanelProps = {
|
|
2
|
+
selectedInstance: () => {
|
|
3
|
+
instance: any;
|
|
4
|
+
type: string;
|
|
5
|
+
} | null;
|
|
6
|
+
utilState: () => {
|
|
7
|
+
lastUpdatedByKey: Record<string, number>;
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
export declare function DetailsPanel(props: DetailsPanelProps): import("solid-js").JSX.Element;
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const web = require("solid-js/web");
|
|
4
|
+
const solidJs = require("solid-js");
|
|
5
|
+
const useStyles = require("../styles/use-styles.cjs");
|
|
6
|
+
const PacerContextProvider = require("../PacerContextProvider.cjs");
|
|
7
|
+
const utilGroups = require("./util-groups.cjs");
|
|
8
|
+
const UtilList = require("./UtilList.cjs");
|
|
9
|
+
const DetailsPanel = require("./DetailsPanel.cjs");
|
|
10
|
+
var _tmpl$ = /* @__PURE__ */ web.template(`<div><div>TanStack Pacer</div><div><div></div><div></div><div><div>Details`);
|
|
11
|
+
function Shell() {
|
|
12
|
+
const styles = useStyles.useStyles();
|
|
13
|
+
const state = PacerContextProvider.usePacerDevtoolsState();
|
|
14
|
+
const utilState = () => state;
|
|
15
|
+
const [selectedKey, setSelectedKey] = solidJs.createSignal(null);
|
|
16
|
+
const [leftPanelWidth, setLeftPanelWidth] = solidJs.createSignal(300);
|
|
17
|
+
const [isDragging, setIsDragging] = solidJs.createSignal(false);
|
|
18
|
+
const selectedInstance = solidJs.createMemo(() => {
|
|
19
|
+
const key = selectedKey();
|
|
20
|
+
if (!key) return null;
|
|
21
|
+
for (const group of utilGroups.UTIL_GROUPS) {
|
|
22
|
+
const instance = utilState()[group.key].find((inst) => inst.key === key);
|
|
23
|
+
if (instance) return {
|
|
24
|
+
instance,
|
|
25
|
+
type: group.displayName
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
return null;
|
|
29
|
+
});
|
|
30
|
+
let dragStartX = 0;
|
|
31
|
+
let dragStartWidth = 0;
|
|
32
|
+
const handleMouseDown = (e) => {
|
|
33
|
+
e.preventDefault();
|
|
34
|
+
e.stopPropagation();
|
|
35
|
+
setIsDragging(true);
|
|
36
|
+
document.body.style.cursor = "col-resize";
|
|
37
|
+
document.body.style.userSelect = "none";
|
|
38
|
+
dragStartX = e.clientX;
|
|
39
|
+
dragStartWidth = leftPanelWidth();
|
|
40
|
+
};
|
|
41
|
+
const handleMouseMove = (e) => {
|
|
42
|
+
if (!isDragging()) return;
|
|
43
|
+
e.preventDefault();
|
|
44
|
+
const deltaX = e.clientX - dragStartX;
|
|
45
|
+
const newWidth = Math.max(150, Math.min(800, dragStartWidth + deltaX));
|
|
46
|
+
setLeftPanelWidth(newWidth);
|
|
47
|
+
};
|
|
48
|
+
const handleMouseUp = () => {
|
|
49
|
+
setIsDragging(false);
|
|
50
|
+
document.body.style.cursor = "";
|
|
51
|
+
document.body.style.userSelect = "";
|
|
52
|
+
};
|
|
53
|
+
solidJs.onMount(() => {
|
|
54
|
+
document.addEventListener("mousemove", handleMouseMove);
|
|
55
|
+
document.addEventListener("mouseup", handleMouseUp);
|
|
56
|
+
});
|
|
57
|
+
solidJs.onCleanup(() => {
|
|
58
|
+
document.removeEventListener("mousemove", handleMouseMove);
|
|
59
|
+
document.removeEventListener("mouseup", handleMouseUp);
|
|
60
|
+
});
|
|
61
|
+
return (() => {
|
|
62
|
+
var _el$ = _tmpl$(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling, _el$4 = _el$3.firstChild, _el$5 = _el$4.nextSibling, _el$6 = _el$5.nextSibling, _el$7 = _el$6.firstChild;
|
|
63
|
+
_el$4.style.setProperty("min-width", "150px");
|
|
64
|
+
_el$4.style.setProperty("max-width", "800px");
|
|
65
|
+
web.insert(_el$4, web.createComponent(UtilList.UtilList, {
|
|
66
|
+
selectedKey,
|
|
67
|
+
setSelectedKey,
|
|
68
|
+
utilState
|
|
69
|
+
}));
|
|
70
|
+
_el$5.$$mousedown = handleMouseDown;
|
|
71
|
+
_el$6.style.setProperty("flex", "1");
|
|
72
|
+
web.insert(_el$6, web.createComponent(DetailsPanel.DetailsPanel, {
|
|
73
|
+
selectedInstance,
|
|
74
|
+
utilState
|
|
75
|
+
}), null);
|
|
76
|
+
web.effect((_p$) => {
|
|
77
|
+
var _v$ = styles().devtoolsPanel, _v$2 = styles().stickyHeader, _v$3 = styles().mainContainer, _v$4 = styles().leftPanel, _v$5 = `${leftPanelWidth()}px`, _v$6 = `${styles().dragHandle} ${isDragging() ? "dragging" : ""}`, _v$7 = styles().rightPanel, _v$8 = styles().panelHeader;
|
|
78
|
+
_v$ !== _p$.e && web.className(_el$, _p$.e = _v$);
|
|
79
|
+
_v$2 !== _p$.t && web.className(_el$2, _p$.t = _v$2);
|
|
80
|
+
_v$3 !== _p$.a && web.className(_el$3, _p$.a = _v$3);
|
|
81
|
+
_v$4 !== _p$.o && web.className(_el$4, _p$.o = _v$4);
|
|
82
|
+
_v$5 !== _p$.i && ((_p$.i = _v$5) != null ? _el$4.style.setProperty("width", _v$5) : _el$4.style.removeProperty("width"));
|
|
83
|
+
_v$6 !== _p$.n && web.className(_el$5, _p$.n = _v$6);
|
|
84
|
+
_v$7 !== _p$.s && web.className(_el$6, _p$.s = _v$7);
|
|
85
|
+
_v$8 !== _p$.h && web.className(_el$7, _p$.h = _v$8);
|
|
86
|
+
return _p$;
|
|
87
|
+
}, {
|
|
88
|
+
e: void 0,
|
|
89
|
+
t: void 0,
|
|
90
|
+
a: void 0,
|
|
91
|
+
o: void 0,
|
|
92
|
+
i: void 0,
|
|
93
|
+
n: void 0,
|
|
94
|
+
s: void 0,
|
|
95
|
+
h: void 0
|
|
96
|
+
});
|
|
97
|
+
return _el$;
|
|
98
|
+
})();
|
|
99
|
+
}
|
|
100
|
+
web.delegateEvents(["mousedown"]);
|
|
101
|
+
exports.Shell = Shell;
|
|
102
|
+
//# sourceMappingURL=Shell.cjs.map
|