@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.
Files changed (93) hide show
  1. package/LICENSE +21 -0
  2. package/dist/cjs/PacerContextProvider.cjs +156 -0
  3. package/dist/cjs/PacerContextProvider.cjs.map +1 -0
  4. package/dist/cjs/PacerContextProvider.d.cts +19 -0
  5. package/dist/cjs/PacerDevtools.cjs +13 -0
  6. package/dist/cjs/PacerDevtools.cjs.map +1 -0
  7. package/dist/cjs/PacerDevtools.d.cts +1 -0
  8. package/dist/cjs/components/ActionButtons.cjs +157 -0
  9. package/dist/cjs/components/ActionButtons.cjs.map +1 -0
  10. package/dist/cjs/components/ActionButtons.d.cts +6 -0
  11. package/dist/cjs/components/DetailsPanel.cjs +80 -0
  12. package/dist/cjs/components/DetailsPanel.cjs.map +1 -0
  13. package/dist/cjs/components/DetailsPanel.d.cts +11 -0
  14. package/dist/cjs/components/Shell.cjs +102 -0
  15. package/dist/cjs/components/Shell.cjs.map +1 -0
  16. package/dist/cjs/components/Shell.d.cts +1 -0
  17. package/dist/cjs/components/StateHeader.cjs +95 -0
  18. package/dist/cjs/components/StateHeader.cjs.map +1 -0
  19. package/dist/cjs/components/StateHeader.d.cts +11 -0
  20. package/dist/cjs/components/UtilList.cjs +70 -0
  21. package/dist/cjs/components/UtilList.cjs.map +1 -0
  22. package/dist/cjs/components/UtilList.d.cts +8 -0
  23. package/dist/cjs/components/util-groups.cjs +40 -0
  24. package/dist/cjs/components/util-groups.cjs.map +1 -0
  25. package/dist/cjs/components/util-groups.d.cts +8 -0
  26. package/dist/cjs/core.cjs +43 -0
  27. package/dist/cjs/core.cjs.map +1 -0
  28. package/dist/cjs/core.d.cts +8 -0
  29. package/dist/cjs/index.cjs +15 -0
  30. package/dist/cjs/index.cjs.map +1 -0
  31. package/dist/cjs/index.d.cts +3 -0
  32. package/dist/cjs/production.cjs +7 -0
  33. package/dist/cjs/production.cjs.map +1 -0
  34. package/dist/cjs/production.d.cts +3 -0
  35. package/dist/cjs/styles/tokens.cjs +90 -0
  36. package/dist/cjs/styles/tokens.cjs.map +1 -0
  37. package/dist/cjs/styles/tokens.d.cts +298 -0
  38. package/dist/cjs/styles/use-styles.cjs +397 -0
  39. package/dist/cjs/styles/use-styles.cjs.map +1 -0
  40. package/dist/cjs/styles/use-styles.d.cts +42 -0
  41. package/dist/esm/PacerContextProvider.d.ts +19 -0
  42. package/dist/esm/PacerContextProvider.js +156 -0
  43. package/dist/esm/PacerContextProvider.js.map +1 -0
  44. package/dist/esm/PacerDevtools.d.ts +1 -0
  45. package/dist/esm/PacerDevtools.js +14 -0
  46. package/dist/esm/PacerDevtools.js.map +1 -0
  47. package/dist/esm/components/ActionButtons.d.ts +6 -0
  48. package/dist/esm/components/ActionButtons.js +157 -0
  49. package/dist/esm/components/ActionButtons.js.map +1 -0
  50. package/dist/esm/components/DetailsPanel.d.ts +11 -0
  51. package/dist/esm/components/DetailsPanel.js +80 -0
  52. package/dist/esm/components/DetailsPanel.js.map +1 -0
  53. package/dist/esm/components/Shell.d.ts +1 -0
  54. package/dist/esm/components/Shell.js +102 -0
  55. package/dist/esm/components/Shell.js.map +1 -0
  56. package/dist/esm/components/StateHeader.d.ts +11 -0
  57. package/dist/esm/components/StateHeader.js +95 -0
  58. package/dist/esm/components/StateHeader.js.map +1 -0
  59. package/dist/esm/components/UtilList.d.ts +8 -0
  60. package/dist/esm/components/UtilList.js +70 -0
  61. package/dist/esm/components/UtilList.js.map +1 -0
  62. package/dist/esm/components/util-groups.d.ts +8 -0
  63. package/dist/esm/components/util-groups.js +40 -0
  64. package/dist/esm/components/util-groups.js.map +1 -0
  65. package/dist/esm/core.d.ts +8 -0
  66. package/dist/esm/core.js +42 -0
  67. package/dist/esm/core.js.map +1 -0
  68. package/dist/esm/index.d.ts +3 -0
  69. package/dist/esm/index.js +15 -0
  70. package/dist/esm/index.js.map +1 -0
  71. package/dist/esm/production.d.ts +3 -0
  72. package/dist/esm/production.js +7 -0
  73. package/dist/esm/production.js.map +1 -0
  74. package/dist/esm/styles/tokens.d.ts +298 -0
  75. package/dist/esm/styles/tokens.js +90 -0
  76. package/dist/esm/styles/tokens.js.map +1 -0
  77. package/dist/esm/styles/use-styles.d.ts +42 -0
  78. package/dist/esm/styles/use-styles.js +380 -0
  79. package/dist/esm/styles/use-styles.js.map +1 -0
  80. package/package.json +84 -0
  81. package/src/PacerContextProvider.tsx +203 -0
  82. package/src/PacerDevtools.tsx +10 -0
  83. package/src/components/ActionButtons.tsx +143 -0
  84. package/src/components/DetailsPanel.tsx +61 -0
  85. package/src/components/Shell.tsx +102 -0
  86. package/src/components/StateHeader.tsx +106 -0
  87. package/src/components/UtilList.tsx +62 -0
  88. package/src/components/util-groups.ts +54 -0
  89. package/src/core.tsx +41 -0
  90. package/src/index.ts +17 -0
  91. package/src/production.ts +7 -0
  92. package/src/styles/tokens.ts +305 -0
  93. 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,6 @@
1
+ type ActionButtonsProps = {
2
+ instance: any;
3
+ utilName: string;
4
+ };
5
+ export declare function ActionButtons(props: ActionButtonsProps): import("solid-js").JSX.Element;
6
+ export {};
@@ -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