@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.
Files changed (86) hide show
  1. package/dist/esm/components/main-panel.js +3 -1
  2. package/dist/esm/components/main-panel.js.map +1 -1
  3. package/dist/esm/components/tab-content.js +3 -6
  4. package/dist/esm/components/tab-content.js.map +1 -1
  5. package/dist/esm/components/tabs.js +34 -19
  6. package/dist/esm/components/tabs.js.map +1 -1
  7. package/dist/esm/context/pip-context.d.ts +14 -0
  8. package/dist/esm/context/pip-context.js +117 -0
  9. package/dist/esm/context/pip-context.js.map +1 -0
  10. package/dist/esm/core.js +8 -3
  11. package/dist/esm/core.js.map +1 -1
  12. package/dist/esm/devtools.js +45 -41
  13. package/dist/esm/devtools.js.map +1 -1
  14. package/dist/esm/styles/tokens.js +3 -0
  15. package/dist/esm/styles/tokens.js.map +1 -1
  16. package/dist/esm/styles/use-styles.d.ts +1 -1
  17. package/dist/esm/styles/use-styles.js +11 -4
  18. package/dist/esm/styles/use-styles.js.map +1 -1
  19. package/package.json +2 -7
  20. package/src/components/main-panel.tsx +7 -2
  21. package/src/components/tab-content.tsx +4 -9
  22. package/src/components/tabs.tsx +58 -20
  23. package/src/context/pip-context.tsx +176 -0
  24. package/src/core.tsx +6 -3
  25. package/src/devtools.tsx +36 -26
  26. package/src/styles/use-styles.ts +11 -3
  27. package/dist/cjs/components/content-panel.cjs +0 -32
  28. package/dist/cjs/components/content-panel.cjs.map +0 -1
  29. package/dist/cjs/components/content-panel.d.cts +0 -6
  30. package/dist/cjs/components/main-panel.cjs +0 -34
  31. package/dist/cjs/components/main-panel.cjs.map +0 -1
  32. package/dist/cjs/components/main-panel.d.cts +0 -6
  33. package/dist/cjs/components/tab-content.cjs +0 -26
  34. package/dist/cjs/components/tab-content.cjs.map +0 -1
  35. package/dist/cjs/components/tab-content.d.cts +0 -2
  36. package/dist/cjs/components/tabs.cjs +0 -47
  37. package/dist/cjs/components/tabs.cjs.map +0 -1
  38. package/dist/cjs/components/tabs.d.cts +0 -5
  39. package/dist/cjs/components/trigger.cjs +0 -31
  40. package/dist/cjs/components/trigger.cjs.map +0 -1
  41. package/dist/cjs/components/trigger.d.cts +0 -5
  42. package/dist/cjs/constants.cjs +0 -7
  43. package/dist/cjs/constants.cjs.map +0 -1
  44. package/dist/cjs/constants.d.cts +0 -2
  45. package/dist/cjs/context/devtools-context.cjs +0 -77
  46. package/dist/cjs/context/devtools-context.cjs.map +0 -1
  47. package/dist/cjs/context/devtools-context.d.cts +0 -62
  48. package/dist/cjs/context/devtools-store.cjs +0 -28
  49. package/dist/cjs/context/devtools-store.cjs.map +0 -1
  50. package/dist/cjs/context/devtools-store.d.cts +0 -54
  51. package/dist/cjs/context/use-devtools-context.cjs +0 -78
  52. package/dist/cjs/context/use-devtools-context.cjs.map +0 -1
  53. package/dist/cjs/context/use-devtools-context.d.cts +0 -35
  54. package/dist/cjs/core.cjs +0 -74
  55. package/dist/cjs/core.cjs.map +0 -1
  56. package/dist/cjs/core.d.cts +0 -39
  57. package/dist/cjs/devtools.cjs +0 -184
  58. package/dist/cjs/devtools.cjs.map +0 -1
  59. package/dist/cjs/devtools.d.cts +0 -1
  60. package/dist/cjs/hooks/use-disable-tabbing.cjs +0 -23
  61. package/dist/cjs/hooks/use-disable-tabbing.cjs.map +0 -1
  62. package/dist/cjs/hooks/use-disable-tabbing.d.cts +0 -6
  63. package/dist/cjs/index.cjs +0 -8
  64. package/dist/cjs/index.cjs.map +0 -1
  65. package/dist/cjs/index.d.cts +0 -4
  66. package/dist/cjs/styles/tokens.cjs +0 -50
  67. package/dist/cjs/styles/tokens.cjs.map +0 -1
  68. package/dist/cjs/styles/tokens.d.cts +0 -298
  69. package/dist/cjs/styles/use-styles.cjs +0 -326
  70. package/dist/cjs/styles/use-styles.cjs.map +0 -1
  71. package/dist/cjs/styles/use-styles.d.cts +0 -29
  72. package/dist/cjs/tabs/index.cjs +0 -19
  73. package/dist/cjs/tabs/index.cjs.map +0 -1
  74. package/dist/cjs/tabs/index.d.cts +0 -12
  75. package/dist/cjs/tabs/plugins-tab.cjs +0 -69
  76. package/dist/cjs/tabs/plugins-tab.cjs.map +0 -1
  77. package/dist/cjs/tabs/plugins-tab.d.cts +0 -1
  78. package/dist/cjs/tabs/settings-tab.cjs +0 -251
  79. package/dist/cjs/tabs/settings-tab.cjs.map +0 -1
  80. package/dist/cjs/tabs/settings-tab.d.cts +0 -1
  81. package/dist/cjs/utils/sanitize.cjs +0 -31
  82. package/dist/cjs/utils/sanitize.cjs.map +0 -1
  83. package/dist/cjs/utils/sanitize.d.cts +0 -3
  84. package/dist/cjs/utils/storage.cjs +0 -19
  85. package/dist/cjs/utils/storage.cjs.map +0 -1
  86. 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
- <div ref={setRootEl} data-testid={TANSTACK_DEVTOOLS}>
182
- <Show
183
- when={
184
- settings().requireUrlFlag
185
- ? window.location.search.includes(settings().urlFlag)
186
- : true
187
- }
188
- >
189
- <Trigger isOpen={isOpen} setIsOpen={toggleOpen} />
190
- <MainPanel isResizing={isResizing} isOpen={isOpen}>
191
- <ContentPanel
192
- ref={(ref) => (panelRef = ref)}
193
- handleDragStart={(e) => handleDragStart(panelRef, e)}
194
- >
195
- <Tabs toggleOpen={toggleOpen} />
196
- <TabContent />
197
- </ContentPanel>
198
- </MainPanel>
199
- </Show>
200
- </div>
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
  }
@@ -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,6 +0,0 @@
1
- import { JSX } from 'solid-js/jsx-runtime';
2
- export declare const ContentPanel: (props: {
3
- ref: (el: HTMLDivElement | undefined) => void;
4
- children: JSX.Element;
5
- handleDragStart?: (e: any) => void;
6
- }) => JSX.Element;
@@ -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,6 +0,0 @@
1
- import { Accessor, JSX } from 'solid-js';
2
- export declare const MainPanel: (props: {
3
- isOpen: Accessor<boolean>;
4
- children: JSX.Element;
5
- isResizing: Accessor<boolean>;
6
- }) => JSX.Element;
@@ -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,2 +0,0 @@
1
- import { JSX } from 'solid-js';
2
- export declare const TabContent: () => JSX.Element;
@@ -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,5 +0,0 @@
1
- interface TabsProps {
2
- toggleOpen: () => void;
3
- }
4
- export declare const Tabs: (props: TabsProps) => import("solid-js").JSX.Element;
5
- export {};
@@ -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;;"}
@@ -1,5 +0,0 @@
1
- import { Accessor } from 'solid-js';
2
- export declare const Trigger: ({ isOpen, setIsOpen, }: {
3
- isOpen: Accessor<boolean>;
4
- setIsOpen: (isOpen: boolean) => void;
5
- }) => import("solid-js").JSX.Element;
@@ -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;;;"}
@@ -1,2 +0,0 @@
1
- export declare const PLUGIN_CONTAINER_ID = "plugin-container";
2
- export declare const PLUGIN_TITLE_CONTAINER_ID = "plugin-title-container";
@@ -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;;;"}