Skip to content

Commit 63b149b

Browse files
feat: devtools setup
1 parent 6143276 commit 63b149b

24 files changed

Lines changed: 1029 additions & 205 deletions

File tree

examples/react/basic/package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@
99
"test:types": "tsc"
1010
},
1111
"dependencies": {
12+
"@tanstack/react-devtools": "^0.9.5",
1213
"@tanstack/react-time": "^0.0.0",
14+
"@tanstack/react-time-devtools": "^0.0.0",
1315
"@tanstack/time": "^0.0.0",
1416
"react": "^19.2.3",
1517
"react-dom": "^19.2.3"

examples/react/basic/src/index.tsx

Lines changed: 190 additions & 189 deletions
Large diffs are not rendered by default.

packages/react-time-devtools/package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
"src"
4949
],
5050
"dependencies": {
51+
"@tanstack/devtools-utils": "^0.3.0",
5152
"@tanstack/time-devtools": "workspace:*"
5253
},
5354
"devDependencies": {
@@ -56,7 +57,8 @@
5657
"@vitejs/plugin-react": "^5.1.2",
5758
"eslint-plugin-react-compiler": "19.1.0-rc.2",
5859
"eslint-plugin-react-hooks": "^7.0.1",
59-
"react": "^19.2.3"
60+
"react": "^19.2.3",
61+
"solid-js": "^1.9.10"
6062
},
6163
"peerDependencies": {
6264
"react": ">=16.8",
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import React, { useEffect, useRef } from 'react'
2+
import { TimeDevtoolsCore } from '@tanstack/time-devtools'
3+
import type { DevtoolsPanelProps } from '@tanstack/devtools-utils/react'
4+
5+
export interface TimeDevtoolsReactInit extends DevtoolsPanelProps {}
6+
7+
function TimeDevtoolsPanel(props: TimeDevtoolsReactInit) {
8+
const containerRef = useRef<HTMLDivElement>(null)
9+
const devtoolsRef = useRef<InstanceType<typeof TimeDevtoolsCore> | null>(null)
10+
11+
useEffect(() => {
12+
if (containerRef.current && !devtoolsRef.current) {
13+
const devtools = new TimeDevtoolsCore()
14+
devtoolsRef.current = devtools
15+
devtools.mount(containerRef.current, props.theme ?? 'dark')
16+
}
17+
18+
return () => {
19+
if (devtoolsRef.current) {
20+
devtoolsRef.current.unmount()
21+
devtoolsRef.current = null
22+
}
23+
}
24+
}, [props.theme])
25+
26+
return <div ref={containerRef} style={{ height: '100%' }} />
27+
}
28+
29+
function TimeDevtoolsPanelNoOp(_props: TimeDevtoolsReactInit) {
30+
return null
31+
}
32+
33+
export { TimeDevtoolsPanel, TimeDevtoolsPanelNoOp }
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
'use client'
2+
3+
import type { createSolidPanel } from '@tanstack/devtools-utils/solid'
4+
import * as Devtools from './TimeDevtools'
5+
import * as plugin from './plugin'
6+
7+
type SolidPanelComponent = ReturnType<typeof createSolidPanel>[0]
8+
9+
export const TimeDevtoolsPanel: SolidPanelComponent =
10+
process.env.NODE_ENV !== 'development'
11+
? Devtools.TimeDevtoolsPanelNoOp
12+
: Devtools.TimeDevtoolsPanel
13+
14+
export const timeDevtoolsPlugin =
15+
process.env.NODE_ENV !== 'development'
16+
? plugin.timeDevtoolsNoOpPlugin
17+
: plugin.timeDevtoolsPlugin
18+
19+
export type { TimeDevtoolsReactInit } from './TimeDevtools'
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { createReactPlugin } from '@tanstack/devtools-utils/react'
2+
import { TimeDevtoolsPanel } from './TimeDevtools'
3+
4+
const [timeDevtoolsPlugin, timeDevtoolsNoOpPlugin] = createReactPlugin({
5+
Component: TimeDevtoolsPanel,
6+
name: 'TanStack Time',
7+
id: 'tanstack-time',
8+
defaultOpen: true,
9+
})
10+
11+
export { timeDevtoolsPlugin, timeDevtoolsNoOpPlugin }
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
'use client'
2+
3+
export { TimeDevtoolsPanel } from './TimeDevtools'
4+
5+
export type { TimeDevtoolsReactInit } from './TimeDevtools'
6+
7+
export { TimeDevtoolsPlugin } from './plugin'

packages/solid-time-devtools/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
"src"
4949
],
5050
"dependencies": {
51+
"@tanstack/devtools-utils": "^0.3.0",
5152
"@tanstack/time-devtools": "workspace:*"
5253
},
5354
"devDependencies": {
Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1-
import { template } from 'solid-js/web'
1+
import { createSolidPanel } from '@tanstack/devtools-utils/solid'
2+
import { TimeDevtoolsCore } from '@tanstack/time-devtools'
3+
import type { DevtoolsPanelProps } from '@tanstack/devtools-utils/solid'
24

3-
const _tmpl$ = /* @__PURE__ */ template(`<div>Solid Time Devtools</div>`)
5+
const [TimeDevtoolsPanel, TimeDevtoolsPanelNoOp] =
6+
createSolidPanel(TimeDevtoolsCore)
47

5-
export function TimeDevtools() {
6-
console.log('Hello from @tanstack/solid-time-devtools!')
7-
return _tmpl$()
8-
}
8+
export interface TimeDevtoolsSolidInit extends DevtoolsPanelProps {}
9+
10+
export { TimeDevtoolsPanel, TimeDevtoolsPanelNoOp }
Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,14 @@
1-
export * from './TimeDevtools'
1+
import * as Devtools from './TimeDevtools'
2+
import * as plugin from './plugin'
3+
4+
export const TimeDevtools =
5+
process.env.NODE_ENV !== 'development'
6+
? Devtools.TimeDevtoolsPanelNoOp
7+
: Devtools.TimeDevtoolsPanel
8+
9+
export const timeDevtoolsPlugin =
10+
process.env.NODE_ENV !== 'development'
11+
? plugin.timeDevtoolsNoOpPlugin
12+
: plugin.timeDevtoolsPlugin
13+
14+
export type { TimeDevtoolsSolidInit } from './TimeDevtools'

0 commit comments

Comments
 (0)