@tanstack/devtools 0.4.5 → 0.5.1
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/esm/components/main-panel.js +3 -1
- package/dist/esm/components/main-panel.js.map +1 -1
- package/dist/esm/components/tab-content.js +3 -6
- package/dist/esm/components/tab-content.js.map +1 -1
- package/dist/esm/components/tabs.js +34 -19
- package/dist/esm/components/tabs.js.map +1 -1
- package/dist/esm/context/pip-context.d.ts +14 -0
- package/dist/esm/context/pip-context.js +117 -0
- package/dist/esm/context/pip-context.js.map +1 -0
- package/dist/esm/core.js +8 -3
- package/dist/esm/core.js.map +1 -1
- package/dist/esm/devtools.js +45 -41
- package/dist/esm/devtools.js.map +1 -1
- package/dist/esm/styles/tokens.js +3 -0
- package/dist/esm/styles/tokens.js.map +1 -1
- package/dist/esm/styles/use-styles.d.ts +1 -1
- package/dist/esm/styles/use-styles.js +11 -4
- package/dist/esm/styles/use-styles.js.map +1 -1
- package/package.json +2 -7
- package/src/components/main-panel.tsx +7 -2
- package/src/components/tab-content.tsx +4 -9
- package/src/components/tabs.tsx +58 -20
- package/src/context/pip-context.tsx +176 -0
- package/src/core.tsx +6 -3
- package/src/devtools.tsx +36 -26
- package/src/styles/use-styles.ts +11 -3
- package/dist/cjs/components/content-panel.cjs +0 -32
- package/dist/cjs/components/content-panel.cjs.map +0 -1
- package/dist/cjs/components/content-panel.d.cts +0 -6
- package/dist/cjs/components/main-panel.cjs +0 -34
- package/dist/cjs/components/main-panel.cjs.map +0 -1
- package/dist/cjs/components/main-panel.d.cts +0 -6
- package/dist/cjs/components/tab-content.cjs +0 -26
- package/dist/cjs/components/tab-content.cjs.map +0 -1
- package/dist/cjs/components/tab-content.d.cts +0 -2
- package/dist/cjs/components/tabs.cjs +0 -47
- package/dist/cjs/components/tabs.cjs.map +0 -1
- package/dist/cjs/components/tabs.d.cts +0 -5
- package/dist/cjs/components/trigger.cjs +0 -31
- package/dist/cjs/components/trigger.cjs.map +0 -1
- package/dist/cjs/components/trigger.d.cts +0 -5
- package/dist/cjs/constants.cjs +0 -7
- package/dist/cjs/constants.cjs.map +0 -1
- package/dist/cjs/constants.d.cts +0 -2
- package/dist/cjs/context/devtools-context.cjs +0 -77
- package/dist/cjs/context/devtools-context.cjs.map +0 -1
- package/dist/cjs/context/devtools-context.d.cts +0 -62
- package/dist/cjs/context/devtools-store.cjs +0 -28
- package/dist/cjs/context/devtools-store.cjs.map +0 -1
- package/dist/cjs/context/devtools-store.d.cts +0 -54
- package/dist/cjs/context/use-devtools-context.cjs +0 -78
- package/dist/cjs/context/use-devtools-context.cjs.map +0 -1
- package/dist/cjs/context/use-devtools-context.d.cts +0 -35
- package/dist/cjs/core.cjs +0 -74
- package/dist/cjs/core.cjs.map +0 -1
- package/dist/cjs/core.d.cts +0 -39
- package/dist/cjs/devtools.cjs +0 -184
- package/dist/cjs/devtools.cjs.map +0 -1
- package/dist/cjs/devtools.d.cts +0 -1
- package/dist/cjs/hooks/use-disable-tabbing.cjs +0 -23
- package/dist/cjs/hooks/use-disable-tabbing.cjs.map +0 -1
- package/dist/cjs/hooks/use-disable-tabbing.d.cts +0 -6
- package/dist/cjs/index.cjs +0 -8
- package/dist/cjs/index.cjs.map +0 -1
- package/dist/cjs/index.d.cts +0 -4
- package/dist/cjs/styles/tokens.cjs +0 -50
- package/dist/cjs/styles/tokens.cjs.map +0 -1
- package/dist/cjs/styles/tokens.d.cts +0 -298
- package/dist/cjs/styles/use-styles.cjs +0 -326
- package/dist/cjs/styles/use-styles.cjs.map +0 -1
- package/dist/cjs/styles/use-styles.d.cts +0 -29
- package/dist/cjs/tabs/index.cjs +0 -19
- package/dist/cjs/tabs/index.cjs.map +0 -1
- package/dist/cjs/tabs/index.d.cts +0 -12
- package/dist/cjs/tabs/plugins-tab.cjs +0 -69
- package/dist/cjs/tabs/plugins-tab.cjs.map +0 -1
- package/dist/cjs/tabs/plugins-tab.d.cts +0 -1
- package/dist/cjs/tabs/settings-tab.cjs +0 -251
- package/dist/cjs/tabs/settings-tab.cjs.map +0 -1
- package/dist/cjs/tabs/settings-tab.d.cts +0 -1
- package/dist/cjs/utils/sanitize.cjs +0 -31
- package/dist/cjs/utils/sanitize.cjs.map +0 -1
- package/dist/cjs/utils/sanitize.d.cts +0 -3
- package/dist/cjs/utils/storage.cjs +0 -19
- package/dist/cjs/utils/storage.cjs.map +0 -1
- package/dist/cjs/utils/storage.d.cts +0 -5
package/src/devtools.tsx
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Show, createEffect, createSignal, onCleanup } from 'solid-js'
|
|
2
2
|
import { createShortcut } from '@solid-primitives/keyboard'
|
|
3
|
+
import { Portal } from 'solid-js/web'
|
|
3
4
|
import {
|
|
4
5
|
useDevtoolsSettings,
|
|
5
6
|
useHeight,
|
|
@@ -14,6 +15,7 @@ import { Tabs } from './components/tabs'
|
|
|
14
15
|
import { TabContent } from './components/tab-content'
|
|
15
16
|
import { keyboardModifiers } from './context/devtools-store'
|
|
16
17
|
import { getAllPermutations } from './utils/sanitize'
|
|
18
|
+
import { usePiPWindow } from './context/pip-context'
|
|
17
19
|
|
|
18
20
|
export default function DevTools() {
|
|
19
21
|
const { settings } = useDevtoolsSettings()
|
|
@@ -23,14 +25,17 @@ export default function DevTools() {
|
|
|
23
25
|
const [isOpen, setIsOpen] = createSignal(
|
|
24
26
|
settings().defaultOpen || persistOpen(),
|
|
25
27
|
)
|
|
28
|
+
const pip = usePiPWindow()
|
|
26
29
|
let panelRef: HTMLDivElement | undefined = undefined
|
|
27
30
|
const [isResizing, setIsResizing] = createSignal(false)
|
|
28
31
|
const toggleOpen = () => {
|
|
32
|
+
if (pip().pipWindow) {
|
|
33
|
+
return
|
|
34
|
+
}
|
|
29
35
|
const open = isOpen()
|
|
30
36
|
setIsOpen(!open)
|
|
31
37
|
setPersistOpen(!open)
|
|
32
38
|
}
|
|
33
|
-
createEffect(() => {})
|
|
34
39
|
// Used to resize the panel
|
|
35
40
|
const handleDragStart = (
|
|
36
41
|
panelElement: HTMLDivElement | undefined,
|
|
@@ -78,11 +83,11 @@ export default function DevTools() {
|
|
|
78
83
|
|
|
79
84
|
const run = () => {
|
|
80
85
|
if (!panelRef) return
|
|
81
|
-
const containerHeight = panelRef.getBoundingClientRect().height
|
|
86
|
+
// const containerHeight = panelRef.getBoundingClientRect().height
|
|
82
87
|
if (rootEl()?.parentElement) {
|
|
83
88
|
setRootEl((prev) => {
|
|
84
89
|
if (prev?.parentElement) {
|
|
85
|
-
prev.parentElement.style.paddingBottom = `${containerHeight}px`
|
|
90
|
+
// prev.parentElement.style.paddingBottom = `${containerHeight}px`
|
|
86
91
|
}
|
|
87
92
|
return prev
|
|
88
93
|
})
|
|
@@ -92,13 +97,13 @@ export default function DevTools() {
|
|
|
92
97
|
run()
|
|
93
98
|
|
|
94
99
|
if (typeof window !== 'undefined') {
|
|
95
|
-
window.addEventListener('resize', run)
|
|
100
|
+
;(pip().pipWindow ?? window).addEventListener('resize', run)
|
|
96
101
|
|
|
97
102
|
return () => {
|
|
98
|
-
window.removeEventListener('resize', run)
|
|
103
|
+
;(pip().pipWindow ?? window).removeEventListener('resize', run)
|
|
99
104
|
if (rootEl()?.parentElement && typeof previousValue === 'string') {
|
|
100
105
|
setRootEl((prev) => {
|
|
101
|
-
prev!.parentElement!.style.paddingBottom = previousValue
|
|
106
|
+
// prev!.parentElement!.style.paddingBottom = previousValue
|
|
102
107
|
return prev
|
|
103
108
|
})
|
|
104
109
|
}
|
|
@@ -117,6 +122,7 @@ export default function DevTools() {
|
|
|
117
122
|
}
|
|
118
123
|
return
|
|
119
124
|
})
|
|
125
|
+
|
|
120
126
|
createEffect(() => {
|
|
121
127
|
window.addEventListener('keydown', (e) => {
|
|
122
128
|
if (e.key === 'Escape' && isOpen()) {
|
|
@@ -178,25 +184,29 @@ export default function DevTools() {
|
|
|
178
184
|
})
|
|
179
185
|
|
|
180
186
|
return (
|
|
181
|
-
<
|
|
182
|
-
<
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
187
|
+
<Portal mount={(pip().pipWindow ?? window).document.body}>
|
|
188
|
+
<div ref={setRootEl} data-testid={TANSTACK_DEVTOOLS}>
|
|
189
|
+
<Show
|
|
190
|
+
when={
|
|
191
|
+
pip().pipWindow !== null
|
|
192
|
+
? true
|
|
193
|
+
: settings().requireUrlFlag
|
|
194
|
+
? window.location.search.includes(settings().urlFlag)
|
|
195
|
+
: true
|
|
196
|
+
}
|
|
197
|
+
>
|
|
198
|
+
<Trigger isOpen={isOpen} setIsOpen={toggleOpen} />
|
|
199
|
+
<MainPanel isResizing={isResizing} isOpen={isOpen}>
|
|
200
|
+
<ContentPanel
|
|
201
|
+
ref={(ref) => (panelRef = ref)}
|
|
202
|
+
handleDragStart={(e) => handleDragStart(panelRef, e)}
|
|
203
|
+
>
|
|
204
|
+
<Tabs toggleOpen={toggleOpen} />
|
|
205
|
+
<TabContent />
|
|
206
|
+
</ContentPanel>
|
|
207
|
+
</MainPanel>
|
|
208
|
+
</Show>
|
|
209
|
+
</div>
|
|
210
|
+
</Portal>
|
|
201
211
|
)
|
|
202
212
|
}
|
package/src/styles/use-styles.ts
CHANGED
|
@@ -12,6 +12,7 @@ const stylesFactory = () => {
|
|
|
12
12
|
return {
|
|
13
13
|
devtoolsPanelContainer: (
|
|
14
14
|
panelLocation: TanStackDevtoolsConfig['panelLocation'],
|
|
15
|
+
isDetached: boolean,
|
|
15
16
|
) => css`
|
|
16
17
|
direction: ltr;
|
|
17
18
|
position: fixed;
|
|
@@ -21,8 +22,7 @@ const stylesFactory = () => {
|
|
|
21
22
|
right: 0;
|
|
22
23
|
z-index: 99999;
|
|
23
24
|
width: 100%;
|
|
24
|
-
|
|
25
|
-
max-height: 90%;
|
|
25
|
+
${isDetached ? '' : 'max-height: 90%;'}
|
|
26
26
|
border-top: 1px solid ${colors.gray[700]};
|
|
27
27
|
transform-origin: top;
|
|
28
28
|
`,
|
|
@@ -181,7 +181,7 @@ const stylesFactory = () => {
|
|
|
181
181
|
border: none;
|
|
182
182
|
transition: all 0.2s ease-in-out;
|
|
183
183
|
border-left: 2px solid transparent;
|
|
184
|
-
&:hover:not(.close):not(.active) {
|
|
184
|
+
&:hover:not(.close):not(.active):not(.detach) {
|
|
185
185
|
background-color: ${colors.gray[700]};
|
|
186
186
|
color: ${colors.gray[100]};
|
|
187
187
|
border-left: 2px solid ${colors.purple[500]};
|
|
@@ -191,6 +191,14 @@ const stylesFactory = () => {
|
|
|
191
191
|
color: ${colors.gray[100]};
|
|
192
192
|
border-left: 2px solid ${colors.purple[500]};
|
|
193
193
|
}
|
|
194
|
+
&.detach {
|
|
195
|
+
&:hover {
|
|
196
|
+
background-color: ${colors.gray[700]};
|
|
197
|
+
}
|
|
198
|
+
&:hover {
|
|
199
|
+
color: ${colors.green[500]};
|
|
200
|
+
}
|
|
201
|
+
}
|
|
194
202
|
&.close {
|
|
195
203
|
margin-top: auto;
|
|
196
204
|
&:hover {
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const web = require("solid-js/web");
|
|
4
|
-
const useDevtoolsContext = require("../context/use-devtools-context.cjs");
|
|
5
|
-
const useStyles = require("../styles/use-styles.cjs");
|
|
6
|
-
var _tmpl$ = /* @__PURE__ */ web.template(`<div>`);
|
|
7
|
-
const ContentPanel = (props) => {
|
|
8
|
-
const styles = useStyles.useStyles();
|
|
9
|
-
const {
|
|
10
|
-
settings
|
|
11
|
-
} = useDevtoolsContext.useDevtoolsSettings();
|
|
12
|
-
return (() => {
|
|
13
|
-
var _el$ = _tmpl$();
|
|
14
|
-
var _ref$ = props.ref;
|
|
15
|
-
typeof _ref$ === "function" ? web.use(_ref$, _el$) : props.ref = _el$;
|
|
16
|
-
web.insert(_el$, (() => {
|
|
17
|
-
var _c$ = web.memo(() => !!props.handleDragStart);
|
|
18
|
-
return () => _c$() ? (() => {
|
|
19
|
-
var _el$2 = _tmpl$();
|
|
20
|
-
web.addEventListener(_el$2, "mousedown", props.handleDragStart, true);
|
|
21
|
-
web.effect(() => web.className(_el$2, styles().dragHandle(settings().panelLocation)));
|
|
22
|
-
return _el$2;
|
|
23
|
-
})() : null;
|
|
24
|
-
})(), null);
|
|
25
|
-
web.insert(_el$, () => props.children, null);
|
|
26
|
-
web.effect(() => web.className(_el$, styles().devtoolsPanel));
|
|
27
|
-
return _el$;
|
|
28
|
-
})();
|
|
29
|
-
};
|
|
30
|
-
web.delegateEvents(["mousedown"]);
|
|
31
|
-
exports.ContentPanel = ContentPanel;
|
|
32
|
-
//# sourceMappingURL=content-panel.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"content-panel.cjs","sources":["../../../src/components/content-panel.tsx"],"sourcesContent":["import { useDevtoolsSettings } from '../context/use-devtools-context'\nimport { useStyles } from '../styles/use-styles'\nimport type { JSX } from 'solid-js/jsx-runtime'\n\nexport const ContentPanel = (props: {\n ref: (el: HTMLDivElement | undefined) => void\n children: JSX.Element\n handleDragStart?: (e: any) => void\n}) => {\n const styles = useStyles()\n const { settings } = useDevtoolsSettings()\n return (\n <div ref={props.ref} class={styles().devtoolsPanel}>\n {props.handleDragStart ? (\n <div\n class={styles().dragHandle(settings().panelLocation)}\n onMouseDown={props.handleDragStart}\n ></div>\n ) : null}\n {props.children}\n </div>\n )\n}\n"],"names":["ContentPanel","props","styles","useStyles","settings","useDevtoolsSettings","_el$","_tmpl$","_ref$","ref","_$use","_$insert","_c$","_$memo","handleDragStart","_el$2","_$addEventListener","_$effect","_$className","dragHandle","panelLocation","children","devtoolsPanel","_$delegateEvents"],"mappings":";;;;;;AAIO,MAAMA,eAAeA,CAACC,UAIvB;AACJ,QAAMC,SAASC,UAAAA,UAAAA;AACf,QAAM;AAAA,IAAEC;AAAAA,EAAAA,IAAaC,uCAAAA;AACrB,UAAA,MAAA;AAAA,QAAAC,OAAAC,OAAAA;AAAA,QAAAC,QACYP,MAAMQ;AAAG,WAAAD,UAAA,aAAAE,QAAAF,OAAAF,IAAA,IAATL,MAAMQ,MAAGH;AAAAK,QAAAA,OAAAL,OAAA,MAAA;AAAA,UAAAM,MAAAC,IAAAA,KAAA,MAAA,CAAA,CAChBZ,MAAMa,eAAe;AAAA,aAAA,MAArBF,IAAAA,KAAA,MAAA;AAAA,YAAAG,QAAAR,OAAAA;AAAAS,YAAAA,iBAAAD,OAAA,aAGgBd,MAAMa,iBAAe,IAAA;AAAAG,yBAAAC,cAAAH,OAD3Bb,OAAAA,EAASiB,WAAWf,SAAAA,EAAWgB,aAAa,CAAC,CAAA;AAAA,eAAAL;AAAAA,MAAA,OAGpD;AAAA,IAAI,GAAA,GAAA,IAAA;AAAAJ,QAAAA,OAAAL,MAAA,MACPL,MAAMoB,UAAQ,IAAA;AAAAJ,QAAAA,OAAA,MAAAC,IAAAA,UAAAZ,MAPWJ,OAAAA,EAASoB,aAAa,CAAA;AAAA,WAAAhB;AAAAA,EAAA,GAAA;AAUtD;AAACiB,IAAAA,eAAA,CAAA,WAAA,CAAA;;"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const web = require("solid-js/web");
|
|
4
|
-
const clsx = require("clsx");
|
|
5
|
-
const useDevtoolsContext = require("../context/use-devtools-context.cjs");
|
|
6
|
-
const useStyles = require("../styles/use-styles.cjs");
|
|
7
|
-
const storage = require("../utils/storage.cjs");
|
|
8
|
-
var _tmpl$ = /* @__PURE__ */ web.template(`<div>`);
|
|
9
|
-
const MainPanel = (props) => {
|
|
10
|
-
const styles = useStyles.useStyles();
|
|
11
|
-
const {
|
|
12
|
-
height
|
|
13
|
-
} = useDevtoolsContext.useHeight();
|
|
14
|
-
const {
|
|
15
|
-
settings
|
|
16
|
-
} = useDevtoolsContext.useDevtoolsSettings();
|
|
17
|
-
return (() => {
|
|
18
|
-
var _el$ = _tmpl$();
|
|
19
|
-
web.setAttribute(_el$, "id", storage.TANSTACK_DEVTOOLS);
|
|
20
|
-
web.insert(_el$, () => props.children);
|
|
21
|
-
web.effect((_p$) => {
|
|
22
|
-
var _v$ = height() + "px", _v$2 = clsx(styles().devtoolsPanelContainer(settings().panelLocation), styles().devtoolsPanelContainerAnimation(props.isOpen(), height()), styles().devtoolsPanelContainerVisibility(props.isOpen()), styles().devtoolsPanelContainerResizing(props.isResizing));
|
|
23
|
-
_v$ !== _p$.e && ((_p$.e = _v$) != null ? _el$.style.setProperty("height", _v$) : _el$.style.removeProperty("height"));
|
|
24
|
-
_v$2 !== _p$.t && web.className(_el$, _p$.t = _v$2);
|
|
25
|
-
return _p$;
|
|
26
|
-
}, {
|
|
27
|
-
e: void 0,
|
|
28
|
-
t: void 0
|
|
29
|
-
});
|
|
30
|
-
return _el$;
|
|
31
|
-
})();
|
|
32
|
-
};
|
|
33
|
-
exports.MainPanel = MainPanel;
|
|
34
|
-
//# sourceMappingURL=main-panel.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"main-panel.cjs","sources":["../../../src/components/main-panel.tsx"],"sourcesContent":["import clsx from 'clsx'\nimport { useDevtoolsSettings, useHeight } from '../context/use-devtools-context'\nimport { useStyles } from '../styles/use-styles'\nimport { TANSTACK_DEVTOOLS } from '../utils/storage'\nimport type { Accessor, JSX } from 'solid-js'\n\nexport const MainPanel = (props: {\n isOpen: Accessor<boolean>\n children: JSX.Element\n isResizing: Accessor<boolean>\n}) => {\n const styles = useStyles()\n const { height } = useHeight()\n const { settings } = useDevtoolsSettings()\n return (\n <div\n id={TANSTACK_DEVTOOLS}\n style={{\n height: height() + 'px',\n }}\n class={clsx(\n styles().devtoolsPanelContainer(settings().panelLocation),\n styles().devtoolsPanelContainerAnimation(props.isOpen(), height()),\n styles().devtoolsPanelContainerVisibility(props.isOpen()),\n styles().devtoolsPanelContainerResizing(props.isResizing),\n )}\n >\n {props.children}\n </div>\n )\n}\n"],"names":["MainPanel","props","styles","useStyles","height","useHeight","settings","useDevtoolsSettings","_el$","_tmpl$","_$setAttribute","TANSTACK_DEVTOOLS","_$insert","children","_$effect","_p$","_v$","_v$2","clsx","devtoolsPanelContainer","panelLocation","devtoolsPanelContainerAnimation","isOpen","devtoolsPanelContainerVisibility","devtoolsPanelContainerResizing","isResizing","e","style","setProperty","removeProperty","t","_$className","undefined"],"mappings":";;;;;;;;AAMO,MAAMA,YAAYA,CAACC,UAIpB;AACJ,QAAMC,SAASC,UAAAA,UAAAA;AACf,QAAM;AAAA,IAAEC;AAAAA,EAAAA,IAAWC,6BAAAA;AACnB,QAAM;AAAA,IAAEC;AAAAA,EAAAA,IAAaC,uCAAAA;AACrB,UAAA,MAAA;AAAA,QAAAC,OAAAC,OAAAA;AAAAC,qBAAAF,MAAA,MAEQG,yBAAiB;AAAAC,QAAAA,OAAAJ,MAAA,MAWpBP,MAAMY,QAAQ;AAAAC,QAAAA,OAAAC,CAAAA,QAAA;AAAA,UAAAC,MATLZ,OAAAA,IAAW,MAAIa,OAElBC,KACLhB,SAASiB,uBAAuBb,WAAWc,aAAa,GACxDlB,OAAAA,EAASmB,gCAAgCpB,MAAMqB,OAAAA,GAAUlB,OAAAA,CAAQ,GACjEF,OAAAA,EAASqB,iCAAiCtB,MAAMqB,OAAAA,CAAQ,GACxDpB,OAAAA,EAASsB,+BAA+BvB,MAAMwB,UAAU,CAC1D;AAACT,cAAAD,IAAAW,OAAAX,IAAAW,IAAAV,QAAA,OAAAR,KAAAmB,MAAAC,YAAA,UAAAZ,GAAA,IAAAR,KAAAmB,MAAAE,eAAA,QAAA;AAAAZ,eAAAF,IAAAe,KAAAC,IAAAA,UAAAvB,MAAAO,IAAAe,IAAAb,IAAA;AAAA,aAAAF;AAAAA,IAAA,GAAA;AAAA,MAAAW,GAAAM;AAAAA,MAAAF,GAAAE;AAAAA,IAAAA,CAAA;AAAA,WAAAxB;AAAAA,EAAA,GAAA;AAKP;;"}
|
|
@@ -1,26 +0,0 @@
|
|
|
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 useDevtoolsContext = require("../context/use-devtools-context.cjs");
|
|
6
|
-
const index = require("../tabs/index.cjs");
|
|
7
|
-
const useStyles = require("../styles/use-styles.cjs");
|
|
8
|
-
var _tmpl$ = /* @__PURE__ */ web.template(`<div>`);
|
|
9
|
-
const TabContent = () => {
|
|
10
|
-
const {
|
|
11
|
-
state
|
|
12
|
-
} = useDevtoolsContext.useDevtoolsState();
|
|
13
|
-
const styles = useStyles.useStyles();
|
|
14
|
-
const [component, setComponent] = solidJs.createSignal(index.tabs.find((t) => t.id === state().activeTab)?.component() || null);
|
|
15
|
-
solidJs.createEffect(() => {
|
|
16
|
-
setComponent(index.tabs.find((t) => t.id === state().activeTab)?.component() || null);
|
|
17
|
-
});
|
|
18
|
-
return (() => {
|
|
19
|
-
var _el$ = _tmpl$();
|
|
20
|
-
web.insert(_el$, component);
|
|
21
|
-
web.effect(() => web.className(_el$, styles().tabContent));
|
|
22
|
-
return _el$;
|
|
23
|
-
})();
|
|
24
|
-
};
|
|
25
|
-
exports.TabContent = TabContent;
|
|
26
|
-
//# sourceMappingURL=tab-content.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tab-content.cjs","sources":["../../../src/components/tab-content.tsx"],"sourcesContent":["import { createEffect, createSignal } from 'solid-js'\nimport { useDevtoolsState } from '../context/use-devtools-context'\nimport { tabs } from '../tabs'\nimport { useStyles } from '../styles/use-styles'\nimport type { JSX } from 'solid-js'\n\nexport const TabContent = () => {\n const { state } = useDevtoolsState()\n const styles = useStyles()\n const [component, setComponent] = createSignal<JSX.Element | null>(\n tabs.find((t) => t.id === state().activeTab)?.component() || null,\n )\n createEffect(() => {\n setComponent(\n tabs.find((t) => t.id === state().activeTab)?.component() || null,\n )\n })\n\n return <div class={styles().tabContent}>{component()}</div>\n}\n"],"names":["TabContent","state","useDevtoolsState","styles","useStyles","component","setComponent","createSignal","tabs","find","t","id","activeTab","createEffect","_el$","_tmpl$","_$insert","_$effect","_$className","tabContent"],"mappings":";;;;;;;;AAMO,MAAMA,aAAaA,MAAM;AAC9B,QAAM;AAAA,IAAEC;AAAAA,EAAAA,IAAUC,oCAAAA;AAClB,QAAMC,SAASC,UAAAA,UAAAA;AACf,QAAM,CAACC,WAAWC,YAAY,IAAIC,QAAAA,aAChCC,MAAAA,KAAKC,KAAMC,CAAAA,MAAMA,EAAEC,OAAOV,QAAQW,SAAS,GAAGP,UAAAA,KAAe,IAC/D;AACAQ,UAAAA,aAAa,MAAM;AACjBP,iBACEE,MAAAA,KAAKC,KAAMC,CAAAA,MAAMA,EAAEC,OAAOV,MAAAA,EAAQW,SAAS,GAAGP,UAAAA,KAAe,IAC/D;AAAA,EACF,CAAC;AAED,UAAA,MAAA;AAAA,QAAAS,OAAAC,OAAAA;AAAAC,QAAAA,OAAAF,MAAyCT,SAAS;AAAAY,QAAAA,OAAA,MAAAC,IAAAA,UAAAJ,MAA/BX,OAAAA,EAASgB,UAAU,CAAA;AAAA,WAAAL;AAAAA,EAAA,GAAA;AACxC;;"}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const web = require("solid-js/web");
|
|
4
|
-
const clsx = require("clsx");
|
|
5
|
-
const solidJs = require("solid-js");
|
|
6
|
-
const useStyles = require("../styles/use-styles.cjs");
|
|
7
|
-
const useDevtoolsContext = require("../context/use-devtools-context.cjs");
|
|
8
|
-
const index = require("../tabs/index.cjs");
|
|
9
|
-
var _tmpl$ = /* @__PURE__ */ web.template(`<div><button type=button><svg xmlns=http://www.w3.org/2000/svg width=24 height=24 viewBox="0 0 24 24"fill=none stroke=currentColor stroke-width=2 stroke-linecap=round stroke-linejoin=round><path d="M18 6 6 18"></path><path d="m6 6 12 12">`), _tmpl$2 = /* @__PURE__ */ web.template(`<button type=button>`);
|
|
10
|
-
const Tabs = (props) => {
|
|
11
|
-
const styles = useStyles.useStyles();
|
|
12
|
-
const {
|
|
13
|
-
state,
|
|
14
|
-
setState
|
|
15
|
-
} = useDevtoolsContext.useDevtoolsState();
|
|
16
|
-
return (() => {
|
|
17
|
-
var _el$ = _tmpl$(), _el$2 = _el$.firstChild;
|
|
18
|
-
web.insert(_el$, web.createComponent(solidJs.For, {
|
|
19
|
-
each: index.tabs,
|
|
20
|
-
children: (tab) => (() => {
|
|
21
|
-
var _el$3 = _tmpl$2();
|
|
22
|
-
_el$3.$$click = () => setState({
|
|
23
|
-
activeTab: tab.id
|
|
24
|
-
});
|
|
25
|
-
web.insert(_el$3, () => tab.icon);
|
|
26
|
-
web.effect(() => web.className(_el$3, clsx(styles().tab, {
|
|
27
|
-
active: state().activeTab === tab.id
|
|
28
|
-
})));
|
|
29
|
-
return _el$3;
|
|
30
|
-
})()
|
|
31
|
-
}), _el$2);
|
|
32
|
-
_el$2.$$click = () => props.toggleOpen();
|
|
33
|
-
web.effect((_p$) => {
|
|
34
|
-
var _v$ = styles().tabContainer, _v$2 = clsx(styles().tab, "close");
|
|
35
|
-
_v$ !== _p$.e && web.className(_el$, _p$.e = _v$);
|
|
36
|
-
_v$2 !== _p$.t && web.className(_el$2, _p$.t = _v$2);
|
|
37
|
-
return _p$;
|
|
38
|
-
}, {
|
|
39
|
-
e: void 0,
|
|
40
|
-
t: void 0
|
|
41
|
-
});
|
|
42
|
-
return _el$;
|
|
43
|
-
})();
|
|
44
|
-
};
|
|
45
|
-
web.delegateEvents(["click"]);
|
|
46
|
-
exports.Tabs = Tabs;
|
|
47
|
-
//# sourceMappingURL=tabs.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.cjs","sources":["../../../src/components/tabs.tsx"],"sourcesContent":["import clsx from 'clsx'\nimport { For } from 'solid-js'\nimport { useStyles } from '../styles/use-styles'\nimport { useDevtoolsState } from '../context/use-devtools-context'\nimport { tabs } from '../tabs'\n\ninterface TabsProps {\n toggleOpen: () => void\n}\n\nexport const Tabs = (props: TabsProps) => {\n const styles = useStyles()\n const { state, setState } = useDevtoolsState()\n\n return (\n <div class={styles().tabContainer}>\n <For each={tabs}>\n {(tab) => (\n <button\n type=\"button\"\n onClick={() => setState({ activeTab: tab.id })}\n class={clsx(styles().tab, { active: state().activeTab === tab.id })}\n >\n {tab.icon}\n </button>\n )}\n </For>\n <button\n type=\"button\"\n class={clsx(styles().tab, 'close')}\n onClick={() => props.toggleOpen()}\n >\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n >\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </svg>\n </button>\n </div>\n )\n}\n"],"names":["Tabs","props","styles","useStyles","state","setState","useDevtoolsState","_el$","_tmpl$","_el$2","firstChild","_$insert","_$createComponent","For","each","tabs","children","tab","_el$3","_tmpl$2","$$click","activeTab","id","icon","_$effect","_$className","clsx","active","toggleOpen","_p$","_v$","tabContainer","_v$2","e","t","undefined","_$delegateEvents"],"mappings":";;;;;;;;;AAUO,MAAMA,OAAOA,CAACC,UAAqB;AACxC,QAAMC,SAASC,UAAAA,UAAAA;AACf,QAAM;AAAA,IAAEC;AAAAA,IAAOC;AAAAA,EAAAA,IAAaC,oCAAAA;AAE5B,UAAA,MAAA;AAAA,QAAAC,OAAAC,OAAAA,GAAAC,QAAAF,KAAAG;AAAAC,eAAAJ,MAAAK,IAAAA,gBAEKC,aAAG;AAAA,MAACC,MAAMC,MAAAA;AAAAA,MAAIC,UACXC,UAAG,MAAA;AAAA,YAAAC,QAAAC,QAAAA;AAAAD,cAAAE,UAGQ,MAAMf,SAAS;AAAA,UAAEgB,WAAWJ,IAAIK;AAAAA,QAAAA,CAAI;AAACX,YAAAA,OAAAO,OAAA,MAG7CD,IAAIM,IAAI;AAAAC,YAAAA,OAAA,MAAAC,IAAAA,UAAAP,OAFFQ,KAAKxB,OAAAA,EAASe,KAAK;AAAA,UAAEU,QAAQvB,MAAAA,EAAQiB,cAAcJ,IAAIK;AAAAA,QAAAA,CAAI,CAAC,CAAA;AAAA,eAAAJ;AAAAA,MAAA,GAAA;AAAA,IAAA,CAItE,GAAAT,KAAA;AAAAA,UAAAW,UAKQ,MAAMnB,MAAM2B,WAAAA;AAAYJ,QAAAA,OAAAK,CAAAA,QAAA;AAAA,UAAAC,MAfzB5B,SAAS6B,cAAYC,OActBN,KAAKxB,OAAAA,EAASe,KAAK,OAAO;AAACa,cAAAD,IAAAI,KAAAR,IAAAA,UAAAlB,MAAAsB,IAAAI,IAAAH,GAAA;AAAAE,eAAAH,IAAAK,KAAAT,IAAAA,UAAAhB,OAAAoB,IAAAK,IAAAF,IAAA;AAAA,aAAAH;AAAAA,IAAA,GAAA;AAAA,MAAAI,GAAAE;AAAAA,MAAAD,GAAAC;AAAAA,IAAAA,CAAA;AAAA,WAAA5B;AAAAA,EAAA,GAAA;AAoB1C;AAAC6B,IAAAA,eAAA,CAAA,OAAA,CAAA;;"}
|
|
@@ -1,31 +0,0 @@
|
|
|
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 clsx = require("clsx");
|
|
6
|
-
const devtoolsUi = require("@tanstack/devtools-ui");
|
|
7
|
-
const useDevtoolsContext = require("../context/use-devtools-context.cjs");
|
|
8
|
-
const useStyles = require("../styles/use-styles.cjs");
|
|
9
|
-
var _tmpl$ = /* @__PURE__ */ web.template(`<button type=button aria-label="Open TanStack Devtools">`);
|
|
10
|
-
const Trigger = ({
|
|
11
|
-
isOpen,
|
|
12
|
-
setIsOpen
|
|
13
|
-
}) => {
|
|
14
|
-
const {
|
|
15
|
-
settings
|
|
16
|
-
} = useDevtoolsContext.useDevtoolsSettings();
|
|
17
|
-
const styles = useStyles.useStyles();
|
|
18
|
-
const buttonStyle = solidJs.createMemo(() => {
|
|
19
|
-
return clsx(styles().mainCloseBtn, styles().mainCloseBtnPosition(settings().position), styles().mainCloseBtnAnimation(isOpen(), settings().hideUntilHover));
|
|
20
|
-
});
|
|
21
|
-
return (() => {
|
|
22
|
-
var _el$ = _tmpl$();
|
|
23
|
-
_el$.$$click = () => setIsOpen(!isOpen());
|
|
24
|
-
web.insert(_el$, web.createComponent(devtoolsUi.TanStackLogo, {}));
|
|
25
|
-
web.effect(() => web.className(_el$, buttonStyle()));
|
|
26
|
-
return _el$;
|
|
27
|
-
})();
|
|
28
|
-
};
|
|
29
|
-
web.delegateEvents(["click"]);
|
|
30
|
-
exports.Trigger = Trigger;
|
|
31
|
-
//# sourceMappingURL=trigger.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"trigger.cjs","sources":["../../../src/components/trigger.tsx"],"sourcesContent":["import { createMemo } from 'solid-js'\nimport clsx from 'clsx'\nimport { TanStackLogo } from '@tanstack/devtools-ui'\nimport { useDevtoolsSettings } from '../context/use-devtools-context'\nimport { useStyles } from '../styles/use-styles'\nimport type { Accessor } from 'solid-js'\n\nexport const Trigger = ({\n isOpen,\n setIsOpen,\n}: {\n isOpen: Accessor<boolean>\n setIsOpen: (isOpen: boolean) => void\n}) => {\n const { settings } = useDevtoolsSettings()\n const styles = useStyles()\n const buttonStyle = createMemo(() => {\n return clsx(\n styles().mainCloseBtn,\n styles().mainCloseBtnPosition(settings().position),\n styles().mainCloseBtnAnimation(isOpen(), settings().hideUntilHover),\n )\n })\n return (\n <button\n type=\"button\"\n aria-label=\"Open TanStack Devtools\"\n class={buttonStyle()}\n onClick={() => setIsOpen(!isOpen())}\n >\n <TanStackLogo />\n </button>\n )\n}\n"],"names":["Trigger","isOpen","setIsOpen","settings","useDevtoolsSettings","styles","useStyles","buttonStyle","createMemo","clsx","mainCloseBtn","mainCloseBtnPosition","position","mainCloseBtnAnimation","hideUntilHover","_el$","_tmpl$","$$click","_$insert","_$createComponent","TanStackLogo","_$effect","_$className","_$delegateEvents"],"mappings":";;;;;;;;;AAOO,MAAMA,UAAUA,CAAC;AAAA,EACtBC;AAAAA,EACAC;AAIF,MAAM;AACJ,QAAM;AAAA,IAAEC;AAAAA,EAAAA,IAAaC,uCAAAA;AACrB,QAAMC,SAASC,UAAAA,UAAAA;AACf,QAAMC,cAAcC,QAAAA,WAAW,MAAM;AACnC,WAAOC,KACLJ,SAASK,cACTL,OAAAA,EAASM,qBAAqBR,SAAAA,EAAWS,QAAQ,GACjDP,OAAAA,EAASQ,sBAAsBZ,OAAAA,GAAUE,SAAAA,EAAWW,cAAc,CACpE;AAAA,EACF,CAAC;AACD,UAAA,MAAA;AAAA,QAAAC,OAAAC,OAAAA;AAAAD,SAAAE,UAKa,MAAMf,UAAU,CAACD,QAAQ;AAACiB,QAAAA,OAAAH,MAAAI,IAAAA,gBAElCC,WAAAA,cAAY,CAAA,CAAA,CAAA;AAAAC,QAAAA,aAAAC,IAAAA,UAAAP,MAHNR,YAAAA,CAAa,CAAA;AAAA,WAAAQ;AAAAA,EAAA,GAAA;AAM1B;AAACQ,IAAAA,eAAA,CAAA,OAAA,CAAA;;"}
|
package/dist/cjs/constants.cjs
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const PLUGIN_CONTAINER_ID = "plugin-container";
|
|
4
|
-
const PLUGIN_TITLE_CONTAINER_ID = "plugin-title-container";
|
|
5
|
-
exports.PLUGIN_CONTAINER_ID = PLUGIN_CONTAINER_ID;
|
|
6
|
-
exports.PLUGIN_TITLE_CONTAINER_ID = PLUGIN_TITLE_CONTAINER_ID;
|
|
7
|
-
//# sourceMappingURL=constants.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.cjs","sources":["../../src/constants.ts"],"sourcesContent":["export const PLUGIN_CONTAINER_ID = 'plugin-container'\nexport const PLUGIN_TITLE_CONTAINER_ID = 'plugin-title-container'\n"],"names":[],"mappings":";;AAAO,MAAM,sBAAsB;AAC5B,MAAM,4BAA4B;;;"}
|
package/dist/cjs/constants.d.cts
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
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 store = require("solid-js/store");
|
|
6
|
-
const sanitize = require("../utils/sanitize.cjs");
|
|
7
|
-
const storage = require("../utils/storage.cjs");
|
|
8
|
-
const devtoolsStore = require("./devtools-store.cjs");
|
|
9
|
-
const DevtoolsContext = solidJs.createContext();
|
|
10
|
-
const getSettings = () => {
|
|
11
|
-
const settingsString = storage.getStorageItem(storage.TANSTACK_DEVTOOLS_SETTINGS);
|
|
12
|
-
const settings = sanitize.tryParseJson(settingsString);
|
|
13
|
-
return {
|
|
14
|
-
...settings
|
|
15
|
-
};
|
|
16
|
-
};
|
|
17
|
-
const generatePluginId = (plugin, index) => {
|
|
18
|
-
if (plugin.id) {
|
|
19
|
-
return plugin.id;
|
|
20
|
-
}
|
|
21
|
-
if (typeof plugin.name === "string") {
|
|
22
|
-
return `${plugin.name.toLowerCase().replace(" ", "-")}-${index}`;
|
|
23
|
-
}
|
|
24
|
-
return index.toString();
|
|
25
|
-
};
|
|
26
|
-
const getExistingStateFromStorage = (config, plugins) => {
|
|
27
|
-
const existingState = storage.getStorageItem(storage.TANSTACK_DEVTOOLS_STATE);
|
|
28
|
-
const settings = getSettings();
|
|
29
|
-
const state = {
|
|
30
|
-
...devtoolsStore.initialState,
|
|
31
|
-
plugins: plugins?.map((plugin, i) => {
|
|
32
|
-
const id = generatePluginId(plugin, i);
|
|
33
|
-
return {
|
|
34
|
-
...plugin,
|
|
35
|
-
id
|
|
36
|
-
};
|
|
37
|
-
}) || [],
|
|
38
|
-
state: {
|
|
39
|
-
...devtoolsStore.initialState.state,
|
|
40
|
-
...existingState ? JSON.parse(existingState) : {}
|
|
41
|
-
},
|
|
42
|
-
settings: {
|
|
43
|
-
...devtoolsStore.initialState.settings,
|
|
44
|
-
...config,
|
|
45
|
-
...settings
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
return state;
|
|
49
|
-
};
|
|
50
|
-
const DevtoolsProvider = (props) => {
|
|
51
|
-
const [store$1, setStore] = store.createStore(getExistingStateFromStorage(props.config, props.plugins));
|
|
52
|
-
const value = {
|
|
53
|
-
store: store$1,
|
|
54
|
-
setStore: (updater) => {
|
|
55
|
-
const newState = updater(store$1);
|
|
56
|
-
const {
|
|
57
|
-
settings,
|
|
58
|
-
state: internalState
|
|
59
|
-
} = newState;
|
|
60
|
-
storage.setStorageItem(storage.TANSTACK_DEVTOOLS_SETTINGS, JSON.stringify(settings));
|
|
61
|
-
storage.setStorageItem(storage.TANSTACK_DEVTOOLS_STATE, JSON.stringify(internalState));
|
|
62
|
-
setStore((prev) => ({
|
|
63
|
-
...prev,
|
|
64
|
-
...newState
|
|
65
|
-
}));
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
return web.createComponent(DevtoolsContext.Provider, {
|
|
69
|
-
value,
|
|
70
|
-
get children() {
|
|
71
|
-
return props.children;
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
};
|
|
75
|
-
exports.DevtoolsContext = DevtoolsContext;
|
|
76
|
-
exports.DevtoolsProvider = DevtoolsProvider;
|
|
77
|
-
//# sourceMappingURL=devtools-context.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"devtools-context.cjs","sources":["../../../src/context/devtools-context.tsx"],"sourcesContent":["import { createContext } from 'solid-js'\nimport { createStore } from 'solid-js/store'\nimport { tryParseJson } from '../utils/sanitize'\nimport {\n TANSTACK_DEVTOOLS_SETTINGS,\n TANSTACK_DEVTOOLS_STATE,\n getStorageItem,\n setStorageItem,\n} from '../utils/storage'\nimport { initialState } from './devtools-store'\nimport type { DevtoolsStore } from './devtools-store'\nimport type { JSX, Setter } from 'solid-js'\n\nexport interface TanStackDevtoolsPlugin {\n /**\n * Name to be displayed in the devtools UI.\n * If a string, it will be used as the plugin name.\n * If a function, it will be called with the mount element.\n *\n * Example:\n * ```ts\n * {\n * // If a string, it will be used as the plugin name\n * name: \"Your Plugin\",\n * render: () => {}\n * }\n * ```\n * or\n *\n * ```ts\n * {\n * // If a function, it will be called with the mount element\n * name: (el) => {\n * el.innerText = \"Your Plugin Name\"\n * // Your name logic here\n * },\n * render: () => {}\n * }\n * ```\n */\n name: string | ((el: HTMLHeadingElement) => void)\n /**\n * Unique identifier for the plugin.\n * If not provided, it will be generated based on the name.\n */\n id?: string\n /**\n * Render the plugin UI by using the provided element. This function will be called\n * when the plugin tab is clicked and expected to be mounted.\n * @param el The mount element for the plugin.\n * @returns void\n *\n * Example:\n * ```ts\n * render: (el) => {\n * el.innerHTML = \"<h1>Your Plugin</h1>\"\n * }\n * ```\n */\n render: (el: HTMLDivElement) => void\n}\nexport const DevtoolsContext = createContext<{\n store: DevtoolsStore\n setStore: Setter<DevtoolsStore>\n}>()\n\ninterface ContextProps {\n children: JSX.Element\n plugins?: Array<TanStackDevtoolsPlugin>\n config?: TanStackDevtoolsConfig\n}\n\nconst getSettings = () => {\n const settingsString = getStorageItem(TANSTACK_DEVTOOLS_SETTINGS)\n const settings = tryParseJson<DevtoolsStore['settings']>(settingsString)\n return {\n ...settings,\n }\n}\n\nconst generatePluginId = (plugin: TanStackDevtoolsPlugin, index: number) => {\n // if set by user, return the plugin id\n if (plugin.id) {\n return plugin.id\n }\n if (typeof plugin.name === 'string') {\n // if name is a string, use it to generate an id\n return `${plugin.name.toLowerCase().replace(' ', '-')}-${index}`\n }\n // Name is JSX? return the index as a string\n return index.toString()\n}\n\nconst getExistingStateFromStorage = (\n config?: TanStackDevtoolsConfig,\n plugins?: Array<TanStackDevtoolsPlugin>,\n) => {\n const existingState = getStorageItem(TANSTACK_DEVTOOLS_STATE)\n const settings = getSettings()\n\n const state: DevtoolsStore = {\n ...initialState,\n plugins:\n plugins?.map((plugin, i) => {\n const id = generatePluginId(plugin, i)\n return {\n ...plugin,\n id,\n }\n }) || [],\n state: {\n ...initialState.state,\n ...(existingState ? JSON.parse(existingState) : {}),\n },\n settings: {\n ...initialState.settings,\n ...config,\n ...settings,\n },\n }\n return state\n}\n\nexport type TanStackDevtoolsConfig = DevtoolsStore['settings']\n\nexport const DevtoolsProvider = (props: ContextProps) => {\n const [store, setStore] = createStore(\n getExistingStateFromStorage(props.config, props.plugins),\n )\n\n const value = {\n store,\n setStore: (\n updater: (prev: DevtoolsStore) => DevtoolsStore | Partial<DevtoolsStore>,\n ) => {\n const newState = updater(store)\n const { settings, state: internalState } = newState\n // Store user settings for dev tools into local storage\n setStorageItem(TANSTACK_DEVTOOLS_SETTINGS, JSON.stringify(settings))\n // Store general state into local storage\n setStorageItem(TANSTACK_DEVTOOLS_STATE, JSON.stringify(internalState))\n setStore((prev) => ({\n ...prev,\n ...newState,\n }))\n },\n }\n\n return (\n <DevtoolsContext.Provider value={value}>\n {props.children}\n </DevtoolsContext.Provider>\n )\n}\n"],"names":["DevtoolsContext","createContext","getSettings","settingsString","getStorageItem","TANSTACK_DEVTOOLS_SETTINGS","settings","tryParseJson","generatePluginId","plugin","index","id","name","toLowerCase","replace","toString","getExistingStateFromStorage","config","plugins","existingState","TANSTACK_DEVTOOLS_STATE","state","initialState","map","i","JSON","parse","DevtoolsProvider","props","store","setStore","createStore","value","updater","newState","internalState","setStorageItem","stringify","prev","_$createComponent","Provider","children"],"mappings":";;;;;;;;AA6DO,MAAMA,kBAAkBC,QAAAA,cAAAA;AAW/B,MAAMC,cAAcA,MAAM;AACxB,QAAMC,iBAAiBC,QAAAA,eAAeC,kCAA0B;AAChE,QAAMC,WAAWC,SAAAA,aAAwCJ,cAAc;AACvE,SAAO;AAAA,IACL,GAAGG;AAAAA,EAAAA;AAEP;AAEA,MAAME,mBAAmBA,CAACC,QAAgCC,UAAkB;AAE1E,MAAID,OAAOE,IAAI;AACb,WAAOF,OAAOE;AAAAA,EAChB;AACA,MAAI,OAAOF,OAAOG,SAAS,UAAU;AAEnC,WAAO,GAAGH,OAAOG,KAAKC,YAAAA,EAAcC,QAAQ,KAAK,GAAG,CAAC,IAAIJ,KAAK;AAAA,EAChE;AAEA,SAAOA,MAAMK,SAAAA;AACf;AAEA,MAAMC,8BAA8BA,CAClCC,QACAC,YACG;AACH,QAAMC,gBAAgBf,QAAAA,eAAegB,+BAAuB;AAC5D,QAAMd,WAAWJ,YAAAA;AAEjB,QAAMmB,QAAuB;AAAA,IAC3B,GAAGC,cAAAA;AAAAA,IACHJ,SACEA,SAASK,IAAI,CAACd,QAAQe,MAAM;AAC1B,YAAMb,KAAKH,iBAAiBC,QAAQe,CAAC;AACrC,aAAO;AAAA,QACL,GAAGf;AAAAA,QACHE;AAAAA,MAAAA;AAAAA,IAEJ,CAAC,KAAK,CAAA;AAAA,IACRU,OAAO;AAAA,MACL,GAAGC,cAAAA,aAAaD;AAAAA,MAChB,GAAIF,gBAAgBM,KAAKC,MAAMP,aAAa,IAAI,CAAA;AAAA,IAAC;AAAA,IAEnDb,UAAU;AAAA,MACR,GAAGgB,cAAAA,aAAahB;AAAAA,MAChB,GAAGW;AAAAA,MACH,GAAGX;AAAAA,IAAAA;AAAAA,EACL;AAEF,SAAOe;AACT;AAIO,MAAMM,mBAAmBA,CAACC,UAAwB;AACvD,QAAM,CAACC,SAAOC,QAAQ,IAAIC,MAAAA,YACxBf,4BAA4BY,MAAMX,QAAQW,MAAMV,OAAO,CACzD;AAEA,QAAMc,QAAQ;AAAA,IAAA,OACZH;AAAAA,IACAC,UAAUA,CACRG,YACG;AACH,YAAMC,WAAWD,QAAQJ,OAAK;AAC9B,YAAM;AAAA,QAAEvB;AAAAA,QAAUe,OAAOc;AAAAA,MAAAA,IAAkBD;AAE3CE,cAAAA,eAAe/B,QAAAA,4BAA4BoB,KAAKY,UAAU/B,QAAQ,CAAC;AAEnE8B,cAAAA,eAAehB,QAAAA,yBAAyBK,KAAKY,UAAUF,aAAa,CAAC;AACrEL,eAAUQ,CAAAA,UAAU;AAAA,QAClB,GAAGA;AAAAA,QACH,GAAGJ;AAAAA,MAAAA,EACH;AAAA,IACJ;AAAA,EAAA;AAGF,SAAAK,IAAAA,gBACGvC,gBAAgBwC,UAAQ;AAAA,IAACR;AAAAA,IAAY,IAAAS,WAAA;AAAA,aACnCb,MAAMa;AAAAA,IAAQ;AAAA,EAAA,CAAA;AAGrB;;;"}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import { DevtoolsStore } from './devtools-store.cjs';
|
|
2
|
-
import { JSX, Setter } from 'solid-js';
|
|
3
|
-
export interface TanStackDevtoolsPlugin {
|
|
4
|
-
/**
|
|
5
|
-
* Name to be displayed in the devtools UI.
|
|
6
|
-
* If a string, it will be used as the plugin name.
|
|
7
|
-
* If a function, it will be called with the mount element.
|
|
8
|
-
*
|
|
9
|
-
* Example:
|
|
10
|
-
* ```ts
|
|
11
|
-
* {
|
|
12
|
-
* // If a string, it will be used as the plugin name
|
|
13
|
-
* name: "Your Plugin",
|
|
14
|
-
* render: () => {}
|
|
15
|
-
* }
|
|
16
|
-
* ```
|
|
17
|
-
* or
|
|
18
|
-
*
|
|
19
|
-
* ```ts
|
|
20
|
-
* {
|
|
21
|
-
* // If a function, it will be called with the mount element
|
|
22
|
-
* name: (el) => {
|
|
23
|
-
* el.innerText = "Your Plugin Name"
|
|
24
|
-
* // Your name logic here
|
|
25
|
-
* },
|
|
26
|
-
* render: () => {}
|
|
27
|
-
* }
|
|
28
|
-
* ```
|
|
29
|
-
*/
|
|
30
|
-
name: string | ((el: HTMLHeadingElement) => void);
|
|
31
|
-
/**
|
|
32
|
-
* Unique identifier for the plugin.
|
|
33
|
-
* If not provided, it will be generated based on the name.
|
|
34
|
-
*/
|
|
35
|
-
id?: string;
|
|
36
|
-
/**
|
|
37
|
-
* Render the plugin UI by using the provided element. This function will be called
|
|
38
|
-
* when the plugin tab is clicked and expected to be mounted.
|
|
39
|
-
* @param el The mount element for the plugin.
|
|
40
|
-
* @returns void
|
|
41
|
-
*
|
|
42
|
-
* Example:
|
|
43
|
-
* ```ts
|
|
44
|
-
* render: (el) => {
|
|
45
|
-
* el.innerHTML = "<h1>Your Plugin</h1>"
|
|
46
|
-
* }
|
|
47
|
-
* ```
|
|
48
|
-
*/
|
|
49
|
-
render: (el: HTMLDivElement) => void;
|
|
50
|
-
}
|
|
51
|
-
export declare const DevtoolsContext: import('solid-js').Context<{
|
|
52
|
-
store: DevtoolsStore;
|
|
53
|
-
setStore: Setter<DevtoolsStore>;
|
|
54
|
-
} | undefined>;
|
|
55
|
-
interface ContextProps {
|
|
56
|
-
children: JSX.Element;
|
|
57
|
-
plugins?: Array<TanStackDevtoolsPlugin>;
|
|
58
|
-
config?: TanStackDevtoolsConfig;
|
|
59
|
-
}
|
|
60
|
-
export type TanStackDevtoolsConfig = DevtoolsStore['settings'];
|
|
61
|
-
export declare const DevtoolsProvider: (props: ContextProps) => JSX.Element;
|
|
62
|
-
export {};
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
-
const keyboardModifiers = [
|
|
4
|
-
"Alt",
|
|
5
|
-
"Control",
|
|
6
|
-
"Meta",
|
|
7
|
-
"Shift"
|
|
8
|
-
];
|
|
9
|
-
const initialState = {
|
|
10
|
-
settings: {
|
|
11
|
-
defaultOpen: false,
|
|
12
|
-
hideUntilHover: false,
|
|
13
|
-
position: "bottom-right",
|
|
14
|
-
panelLocation: "bottom",
|
|
15
|
-
openHotkey: ["Shift", "A"],
|
|
16
|
-
requireUrlFlag: false,
|
|
17
|
-
urlFlag: "tanstack-devtools"
|
|
18
|
-
},
|
|
19
|
-
state: {
|
|
20
|
-
activeTab: "plugins",
|
|
21
|
-
height: 400,
|
|
22
|
-
activePlugin: void 0,
|
|
23
|
-
persistOpen: false
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
exports.initialState = initialState;
|
|
27
|
-
exports.keyboardModifiers = keyboardModifiers;
|
|
28
|
-
//# sourceMappingURL=devtools-store.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"devtools-store.cjs","sources":["../../../src/context/devtools-store.ts"],"sourcesContent":["import type { TabName } from '../tabs'\nimport type { TanStackDevtoolsPlugin } from './devtools-context'\n\ntype ModifierKey = 'Alt' | 'Control' | 'Meta' | 'Shift'\ntype KeyboardKey = ModifierKey | (string & {})\nexport const keyboardModifiers: Array<ModifierKey> = [\n 'Alt',\n 'Control',\n 'Meta',\n 'Shift',\n]\n\ntype TriggerPosition =\n | 'top-left'\n | 'top-right'\n | 'bottom-left'\n | 'bottom-right'\n | 'middle-left'\n | 'middle-right'\n\nexport type DevtoolsStore = {\n settings: {\n /**\n * Whether the dev tools should be open by default\n * @default false\n */\n defaultOpen: boolean\n /**\n * Whether the dev tools trigger should be hidden until the user hovers over it\n * @default false\n */\n hideUntilHover: boolean\n /**\n * The position of the trigger button\n * @default \"bottom-right\"\n */\n position: TriggerPosition\n\n /**\n * The location of the panel once it is open\n * @default \"bottom\"\n */\n panelLocation: 'top' | 'bottom'\n /**\n * The hotkey to open the dev tools\n * @default \"shift+a\"\n */\n openHotkey: Array<KeyboardKey>\n /**\n * Whether to require the URL flag to open the dev tools\n * @default false\n */\n requireUrlFlag: boolean\n /**\n * The URL flag to open the dev tools, used in conjunction with requireUrlFlag (if set to true)\n * @default \"tanstack-devtools\"\n */\n urlFlag: string\n }\n state: {\n activeTab: TabName\n height: number\n activePlugin?: string | undefined\n persistOpen: boolean\n }\n plugins?: Array<TanStackDevtoolsPlugin>\n}\n\nexport const initialState: DevtoolsStore = {\n settings: {\n defaultOpen: false,\n hideUntilHover: false,\n position: 'bottom-right',\n panelLocation: 'bottom',\n openHotkey: ['Shift', 'A'],\n requireUrlFlag: false,\n urlFlag: 'tanstack-devtools',\n },\n state: {\n activeTab: 'plugins',\n height: 400,\n activePlugin: undefined,\n persistOpen: false,\n },\n}\n"],"names":[],"mappings":";;AAKO,MAAM,oBAAwC;AAAA,EACnD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AA0DO,MAAM,eAA8B;AAAA,EACzC,UAAU;AAAA,IACR,aAAa;AAAA,IACb,gBAAgB;AAAA,IAChB,UAAU;AAAA,IACV,eAAe;AAAA,IACf,YAAY,CAAC,SAAS,GAAG;AAAA,IACzB,gBAAgB;AAAA,IAChB,SAAS;AAAA,EAAA;AAAA,EAEX,OAAO;AAAA,IACL,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,aAAa;AAAA,EAAA;AAEjB;;;"}
|