@tanstack/devtools 0.4.4 → 0.5.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 (89) 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 +118 -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/dist/esm/tabs/settings-tab.js +0 -1
  20. package/dist/esm/tabs/settings-tab.js.map +1 -1
  21. package/package.json +3 -8
  22. package/src/components/main-panel.tsx +7 -2
  23. package/src/components/tab-content.tsx +4 -9
  24. package/src/components/tabs.tsx +58 -20
  25. package/src/context/pip-context.tsx +178 -0
  26. package/src/core.tsx +6 -3
  27. package/src/devtools.tsx +36 -26
  28. package/src/styles/use-styles.ts +11 -3
  29. package/src/tabs/settings-tab.tsx +0 -1
  30. package/dist/cjs/components/content-panel.cjs +0 -32
  31. package/dist/cjs/components/content-panel.cjs.map +0 -1
  32. package/dist/cjs/components/content-panel.d.cts +0 -6
  33. package/dist/cjs/components/main-panel.cjs +0 -34
  34. package/dist/cjs/components/main-panel.cjs.map +0 -1
  35. package/dist/cjs/components/main-panel.d.cts +0 -6
  36. package/dist/cjs/components/tab-content.cjs +0 -26
  37. package/dist/cjs/components/tab-content.cjs.map +0 -1
  38. package/dist/cjs/components/tab-content.d.cts +0 -2
  39. package/dist/cjs/components/tabs.cjs +0 -47
  40. package/dist/cjs/components/tabs.cjs.map +0 -1
  41. package/dist/cjs/components/tabs.d.cts +0 -5
  42. package/dist/cjs/components/trigger.cjs +0 -31
  43. package/dist/cjs/components/trigger.cjs.map +0 -1
  44. package/dist/cjs/components/trigger.d.cts +0 -5
  45. package/dist/cjs/constants.cjs +0 -7
  46. package/dist/cjs/constants.cjs.map +0 -1
  47. package/dist/cjs/constants.d.cts +0 -2
  48. package/dist/cjs/context/devtools-context.cjs +0 -77
  49. package/dist/cjs/context/devtools-context.cjs.map +0 -1
  50. package/dist/cjs/context/devtools-context.d.cts +0 -62
  51. package/dist/cjs/context/devtools-store.cjs +0 -28
  52. package/dist/cjs/context/devtools-store.cjs.map +0 -1
  53. package/dist/cjs/context/devtools-store.d.cts +0 -54
  54. package/dist/cjs/context/use-devtools-context.cjs +0 -78
  55. package/dist/cjs/context/use-devtools-context.cjs.map +0 -1
  56. package/dist/cjs/context/use-devtools-context.d.cts +0 -35
  57. package/dist/cjs/core.cjs +0 -74
  58. package/dist/cjs/core.cjs.map +0 -1
  59. package/dist/cjs/core.d.cts +0 -39
  60. package/dist/cjs/devtools.cjs +0 -184
  61. package/dist/cjs/devtools.cjs.map +0 -1
  62. package/dist/cjs/devtools.d.cts +0 -1
  63. package/dist/cjs/hooks/use-disable-tabbing.cjs +0 -23
  64. package/dist/cjs/hooks/use-disable-tabbing.cjs.map +0 -1
  65. package/dist/cjs/hooks/use-disable-tabbing.d.cts +0 -6
  66. package/dist/cjs/index.cjs +0 -8
  67. package/dist/cjs/index.cjs.map +0 -1
  68. package/dist/cjs/index.d.cts +0 -4
  69. package/dist/cjs/styles/tokens.cjs +0 -50
  70. package/dist/cjs/styles/tokens.cjs.map +0 -1
  71. package/dist/cjs/styles/tokens.d.cts +0 -298
  72. package/dist/cjs/styles/use-styles.cjs +0 -326
  73. package/dist/cjs/styles/use-styles.cjs.map +0 -1
  74. package/dist/cjs/styles/use-styles.d.cts +0 -29
  75. package/dist/cjs/tabs/index.cjs +0 -19
  76. package/dist/cjs/tabs/index.cjs.map +0 -1
  77. package/dist/cjs/tabs/index.d.cts +0 -12
  78. package/dist/cjs/tabs/plugins-tab.cjs +0 -69
  79. package/dist/cjs/tabs/plugins-tab.cjs.map +0 -1
  80. package/dist/cjs/tabs/plugins-tab.d.cts +0 -1
  81. package/dist/cjs/tabs/settings-tab.cjs +0 -252
  82. package/dist/cjs/tabs/settings-tab.cjs.map +0 -1
  83. package/dist/cjs/tabs/settings-tab.d.cts +0 -1
  84. package/dist/cjs/utils/sanitize.cjs +0 -31
  85. package/dist/cjs/utils/sanitize.cjs.map +0 -1
  86. package/dist/cjs/utils/sanitize.d.cts +0 -3
  87. package/dist/cjs/utils/storage.cjs +0 -19
  88. package/dist/cjs/utils/storage.cjs.map +0 -1
  89. package/dist/cjs/utils/storage.d.cts +0 -5
@@ -0,0 +1,178 @@
1
+ import {
2
+ createContext,
3
+ createEffect,
4
+ createMemo,
5
+ createSignal,
6
+ onCleanup,
7
+ useContext,
8
+ } from 'solid-js'
9
+ import { clearDelegatedEvents, delegateEvents } from 'solid-js/web'
10
+ import type { Accessor, JSX } from 'solid-js'
11
+
12
+ interface PiPProviderProps {
13
+ children: JSX.Element
14
+ // localStore: StorageObject<string>
15
+ // setLocalStore: StorageSetter<string, unknown>
16
+ disabled?: boolean
17
+ }
18
+
19
+ type PiPContextType = {
20
+ pipWindow: Window | null
21
+ requestPipWindow: (settings: string) => void
22
+ closePipWindow: () => void
23
+ disabled: boolean
24
+ }
25
+
26
+ const PiPContext = createContext<Accessor<PiPContextType> | undefined>(
27
+ undefined,
28
+ )
29
+
30
+ export const PiPProvider = (props: PiPProviderProps) => {
31
+ // Expose pipWindow that is currently active
32
+ const [pipWindow, setPipWindow] = createSignal<Window | null>(null)
33
+
34
+ // Close pipWindow programmatically
35
+ const closePipWindow = () => {
36
+ const w = pipWindow()
37
+ if (w != null) {
38
+ w.close()
39
+ setPipWindow(null)
40
+ }
41
+ }
42
+
43
+ // Open new pipWindow
44
+ const requestPipWindow = (settings: string) => {
45
+ // We don't want to allow multiple requests.
46
+ if (pipWindow() != null) {
47
+ return
48
+ }
49
+
50
+ const pip = window.open('', 'TSDT-Devtools-Panel', `${settings},popup`)
51
+
52
+ if (!pip) {
53
+ throw new Error(
54
+ 'Failed to open popup. Please allow popups for this site to view the devtools in picture-in-picture mode.',
55
+ )
56
+ }
57
+
58
+ const meta = typeof import.meta !== 'undefined' ? import.meta : null
59
+
60
+ meta?.hot?.on('vite:beforeUpdate', () => {
61
+ localStorage.setItem('pip_open', 'false')
62
+ closePipWindow()
63
+ })
64
+ window.addEventListener('beforeunload', () => {
65
+ localStorage.setItem('pip_open', 'false')
66
+ closePipWindow()
67
+ })
68
+ // Remove existing styles
69
+ pip.document.head.innerHTML = ''
70
+ // Remove existing body
71
+ pip.document.body.innerHTML = ''
72
+ // Clear Delegated Events
73
+ clearDelegatedEvents(pip.document)
74
+
75
+ pip.document.title = 'TanStack Devtools'
76
+ pip.document.body.style.margin = '0'
77
+
78
+ // Detect when window is closed by user
79
+ pip.addEventListener('pagehide', () => {
80
+ localStorage.setItem('pip_open', 'false')
81
+ closePipWindow()
82
+ })
83
+
84
+ // It is important to copy all parent window styles. Otherwise, there would be no CSS available at all
85
+ // https://developer.chrome.com/docs/web-platform/document-picture-in-picture/#copy-style-sheets-to-the-picture-in-picture-window
86
+ ;[...document.styleSheets].forEach((styleSheet) => {
87
+ try {
88
+ const cssRules = [...styleSheet.cssRules]
89
+ .map((rule) => rule.cssText)
90
+ .join('')
91
+ const style = document.createElement('style')
92
+ const style_node = styleSheet.ownerNode
93
+ let style_id = ''
94
+
95
+ if (style_node && 'id' in style_node) {
96
+ style_id = style_node.id
97
+ }
98
+
99
+ if (style_id) {
100
+ style.setAttribute('id', style_id)
101
+ }
102
+ style.textContent = cssRules
103
+ pip.document.head.appendChild(style)
104
+ } catch (e) {
105
+ const link = document.createElement('link')
106
+ if (styleSheet.href == null) {
107
+ return
108
+ }
109
+
110
+ link.rel = 'stylesheet'
111
+ link.type = styleSheet.type
112
+ link.media = styleSheet.media.toString()
113
+ link.href = styleSheet.href
114
+ pip.document.head.appendChild(link)
115
+ }
116
+ })
117
+ delegateEvents(
118
+ [
119
+ 'focusin',
120
+ 'focusout',
121
+ 'pointermove',
122
+ 'keydown',
123
+ 'pointerdown',
124
+ 'pointerup',
125
+ 'click',
126
+ 'mousedown',
127
+ 'input',
128
+ ],
129
+ pip.document,
130
+ )
131
+
132
+ setPipWindow(pip)
133
+ }
134
+
135
+ createEffect(() => {
136
+ // Setup mutation observer for goober styles with id `_goober
137
+ const gooberStyles = document.querySelector('#_goober')
138
+ const w = pipWindow()
139
+ if (gooberStyles && w) {
140
+ const observer = new MutationObserver(() => {
141
+ const pip_style = w.document.querySelector('#_goober')
142
+ if (pip_style) {
143
+ pip_style.textContent = gooberStyles.textContent
144
+ }
145
+ })
146
+ observer.observe(gooberStyles, {
147
+ childList: true, // observe direct children
148
+ subtree: true, // and lower descendants too
149
+ characterDataOldValue: true, // pass old data to callback
150
+ })
151
+ onCleanup(() => {
152
+ observer.disconnect()
153
+ })
154
+ }
155
+ })
156
+
157
+ const value = createMemo(() => ({
158
+ pipWindow: pipWindow(),
159
+ requestPipWindow,
160
+ closePipWindow,
161
+ disabled: props.disabled ?? false,
162
+ }))
163
+
164
+ return (
165
+ <PiPContext.Provider value={value}>{props.children}</PiPContext.Provider>
166
+ )
167
+ }
168
+
169
+ export const usePiPWindow = () => {
170
+ const context = createMemo(() => {
171
+ const ctx = useContext(PiPContext)
172
+ if (!ctx) {
173
+ throw new Error('usePiPWindow must be used within a PiPProvider')
174
+ }
175
+ return ctx()
176
+ })
177
+ return context
178
+ }
package/src/core.tsx CHANGED
@@ -3,6 +3,7 @@ import { Portal, render } from 'solid-js/web'
3
3
  import { ClientEventBus } from '@tanstack/devtools-event-bus/client'
4
4
  import { DevtoolsProvider } from './context/devtools-context'
5
5
  import { initialState } from './context/devtools-store'
6
+ import { PiPProvider } from './context/pip-context'
6
7
  import type { ClientEventBusConfig } from '@tanstack/devtools-event-bus/client'
7
8
  import type {
8
9
  TanStackDevtoolsConfig,
@@ -71,9 +72,11 @@ export class TanStackDevtoolsCore {
71
72
  this.#eventBus.start()
72
73
  return (
73
74
  <DevtoolsProvider plugins={this.#plugins} config={this.#config}>
74
- <Portal mount={mountTo}>
75
- <Devtools />
76
- </Portal>
75
+ <PiPProvider>
76
+ <Portal mount={mountTo}>
77
+ <Devtools />
78
+ </Portal>
79
+ </PiPProvider>
77
80
  </DevtoolsProvider>
78
81
  )
79
82
  }, mountTo)
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 {
@@ -208,7 +208,6 @@ export const SettingsTab = () => {
208
208
  .split('+')
209
209
  .flatMap((key) => makeModifierArray(key))
210
210
  .filter(Boolean)
211
- console.log(e, modifiers)
212
211
  return setSettings({
213
212
  openHotkey: [
214
213
  ...hotkey().filter((key) =>
@@ -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";