@tanstack/router-devtools 1.16.6 → 1.17.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/cjs/Explorer.cjs +152 -92
- package/dist/cjs/Explorer.cjs.map +1 -1
- package/dist/cjs/Explorer.d.cts +0 -7
- package/dist/cjs/devtools.cjs +924 -905
- package/dist/cjs/devtools.cjs.map +1 -1
- package/dist/cjs/logo.cjs +1012 -0
- package/dist/cjs/logo.cjs.map +1 -0
- package/dist/cjs/logo.d.cts +2 -0
- package/dist/cjs/tokens.cjs +302 -0
- package/dist/cjs/tokens.cjs.map +1 -0
- package/dist/cjs/tokens.d.cts +298 -0
- package/dist/cjs/utils.cjs +5 -33
- package/dist/cjs/utils.cjs.map +1 -1
- package/dist/cjs/utils.d.cts +2 -2
- package/dist/esm/Explorer.d.ts +0 -7
- package/dist/esm/Explorer.js +153 -93
- package/dist/esm/Explorer.js.map +1 -1
- package/dist/esm/devtools.js +924 -905
- package/dist/esm/devtools.js.map +1 -1
- package/dist/esm/logo.d.ts +2 -0
- package/dist/esm/logo.js +1012 -0
- package/dist/esm/logo.js.map +1 -0
- package/dist/esm/tokens.d.ts +298 -0
- package/dist/esm/tokens.js +302 -0
- package/dist/esm/tokens.js.map +1 -0
- package/dist/esm/utils.d.ts +2 -2
- package/dist/esm/utils.js +5 -33
- package/dist/esm/utils.js.map +1 -1
- package/package.json +5 -2
- package/src/Explorer.tsx +155 -93
- package/src/devtools.tsx +974 -860
- package/src/logo.tsx +817 -0
- package/src/tokens.ts +305 -0
- package/src/utils.ts +12 -11
- package/dist/cjs/styledComponents.cjs +0 -93
- package/dist/cjs/styledComponents.cjs.map +0 -1
- package/dist/cjs/styledComponents.d.cts +0 -7
- package/dist/cjs/theme.cjs +0 -28
- package/dist/cjs/theme.cjs.map +0 -1
- package/dist/cjs/useMediaQuery.cjs +0 -27
- package/dist/cjs/useMediaQuery.cjs.map +0 -1
- package/dist/esm/styledComponents.d.ts +0 -7
- package/dist/esm/styledComponents.js +0 -93
- package/dist/esm/styledComponents.js.map +0 -1
- package/dist/esm/theme.js +0 -28
- package/dist/esm/theme.js.map +0 -1
- package/dist/esm/useMediaQuery.js +0 -28
- package/dist/esm/useMediaQuery.js.map +0 -1
- package/src/styledComponents.ts +0 -106
package/src/Explorer.tsx
CHANGED
|
@@ -1,48 +1,8 @@
|
|
|
1
1
|
import * as React from 'react'
|
|
2
|
-
|
|
2
|
+
import { clsx as cx } from 'clsx'
|
|
3
|
+
import { tokens } from './tokens'
|
|
3
4
|
import { displayValue, styled } from './utils'
|
|
4
|
-
|
|
5
|
-
export const Entry = styled('div', {
|
|
6
|
-
fontFamily: 'Menlo, monospace',
|
|
7
|
-
fontSize: '.7rem',
|
|
8
|
-
lineHeight: '1.7',
|
|
9
|
-
outline: 'none',
|
|
10
|
-
wordBreak: 'break-word',
|
|
11
|
-
})
|
|
12
|
-
|
|
13
|
-
export const Label = styled('span', {
|
|
14
|
-
color: 'white',
|
|
15
|
-
})
|
|
16
|
-
|
|
17
|
-
export const LabelButton = styled('button', {
|
|
18
|
-
cursor: 'pointer',
|
|
19
|
-
color: 'white',
|
|
20
|
-
})
|
|
21
|
-
|
|
22
|
-
export const ExpandButton = styled('button', {
|
|
23
|
-
cursor: 'pointer',
|
|
24
|
-
color: 'inherit',
|
|
25
|
-
font: 'inherit',
|
|
26
|
-
outline: 'inherit',
|
|
27
|
-
background: 'transparent',
|
|
28
|
-
border: 'none',
|
|
29
|
-
padding: 0,
|
|
30
|
-
})
|
|
31
|
-
|
|
32
|
-
export const Value = styled('span', (_props, theme) => ({
|
|
33
|
-
color: theme.danger,
|
|
34
|
-
}))
|
|
35
|
-
|
|
36
|
-
export const SubEntries = styled('div', {
|
|
37
|
-
marginLeft: '.1em',
|
|
38
|
-
paddingLeft: '1em',
|
|
39
|
-
borderLeft: '2px solid rgba(0,0,0,.15)',
|
|
40
|
-
})
|
|
41
|
-
|
|
42
|
-
export const Info = styled('span', {
|
|
43
|
-
color: 'grey',
|
|
44
|
-
fontSize: '.7em',
|
|
45
|
-
})
|
|
5
|
+
import { css } from 'goober'
|
|
46
6
|
|
|
47
7
|
type ExpanderProps = {
|
|
48
8
|
expanded: boolean
|
|
@@ -50,15 +10,23 @@ type ExpanderProps = {
|
|
|
50
10
|
}
|
|
51
11
|
|
|
52
12
|
export const Expander = ({ expanded, style = {} }: ExpanderProps) => (
|
|
53
|
-
<span
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
13
|
+
<span className={getStyles().expander}>
|
|
14
|
+
<svg
|
|
15
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
16
|
+
width="12"
|
|
17
|
+
height="12"
|
|
18
|
+
fill="none"
|
|
19
|
+
viewBox="0 0 24 24"
|
|
20
|
+
className={cx(getStyles().expanderIcon(expanded))}
|
|
21
|
+
>
|
|
22
|
+
<path
|
|
23
|
+
stroke="currentColor"
|
|
24
|
+
strokeLinecap="round"
|
|
25
|
+
strokeLinejoin="round"
|
|
26
|
+
strokeWidth="2"
|
|
27
|
+
d="M9 18l6-6-6-6"
|
|
28
|
+
></path>
|
|
29
|
+
</svg>
|
|
62
30
|
</span>
|
|
63
31
|
)
|
|
64
32
|
|
|
@@ -122,47 +90,55 @@ export const DefaultRenderer: Renderer = ({
|
|
|
122
90
|
}
|
|
123
91
|
|
|
124
92
|
return (
|
|
125
|
-
<
|
|
93
|
+
<div className={getStyles().entry}>
|
|
126
94
|
{subEntryPages.length ? (
|
|
127
95
|
<>
|
|
128
|
-
<
|
|
129
|
-
|
|
130
|
-
|
|
96
|
+
<button
|
|
97
|
+
className={getStyles().expandButton}
|
|
98
|
+
onClick={() => toggleExpanded()}
|
|
99
|
+
>
|
|
100
|
+
<Expander expanded={expanded} />
|
|
101
|
+
{label}
|
|
102
|
+
<span className={getStyles().info}>
|
|
131
103
|
{String(type).toLowerCase() === 'iterable' ? '(Iterable) ' : ''}
|
|
132
104
|
{subEntries.length} {subEntries.length > 1 ? `items` : `item`}
|
|
133
|
-
</
|
|
134
|
-
</
|
|
105
|
+
</span>
|
|
106
|
+
</button>
|
|
135
107
|
{expanded ? (
|
|
136
108
|
subEntryPages.length === 1 ? (
|
|
137
|
-
<
|
|
109
|
+
<div className={getStyles().subEntries}>
|
|
138
110
|
{subEntries.map((entry, index) => handleEntry(entry))}
|
|
139
|
-
</
|
|
111
|
+
</div>
|
|
140
112
|
) : (
|
|
141
|
-
<
|
|
142
|
-
{subEntryPages.map((entries, index) =>
|
|
143
|
-
|
|
144
|
-
<
|
|
145
|
-
<
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
113
|
+
<div className={getStyles().subEntries}>
|
|
114
|
+
{subEntryPages.map((entries, index) => {
|
|
115
|
+
return (
|
|
116
|
+
<div key={index}>
|
|
117
|
+
<div className={getStyles().entry}>
|
|
118
|
+
<button
|
|
119
|
+
className={cx(getStyles().labelButton, 'labelButton')}
|
|
120
|
+
onClick={() =>
|
|
121
|
+
setExpandedPages((old) =>
|
|
122
|
+
old.includes(index)
|
|
123
|
+
? old.filter((d) => d !== index)
|
|
124
|
+
: [...old, index],
|
|
125
|
+
)
|
|
126
|
+
}
|
|
127
|
+
>
|
|
128
|
+
<Expander expanded={expandedPages.includes(index)} />{' '}
|
|
129
|
+
[{index * pageSize} ...{' '}
|
|
130
|
+
{index * pageSize + pageSize - 1}]
|
|
131
|
+
</button>
|
|
132
|
+
{expandedPages.includes(index) ? (
|
|
133
|
+
<div className={getStyles().subEntries}>
|
|
134
|
+
{entries.map((entry) => handleEntry(entry))}
|
|
135
|
+
</div>
|
|
136
|
+
) : null}
|
|
137
|
+
</div>
|
|
138
|
+
</div>
|
|
139
|
+
)
|
|
140
|
+
})}
|
|
141
|
+
</div>
|
|
166
142
|
)
|
|
167
143
|
) : null}
|
|
168
144
|
</>
|
|
@@ -173,13 +149,9 @@ export const DefaultRenderer: Renderer = ({
|
|
|
173
149
|
label={
|
|
174
150
|
<button
|
|
175
151
|
onClick={refreshValueSnapshot}
|
|
176
|
-
|
|
177
|
-
appearance: 'none',
|
|
178
|
-
border: '0',
|
|
179
|
-
background: 'transparent',
|
|
180
|
-
}}
|
|
152
|
+
className={getStyles().refreshValueBtn}
|
|
181
153
|
>
|
|
182
|
-
<
|
|
154
|
+
<span>{label}</span> 🔄{' '}
|
|
183
155
|
</button>
|
|
184
156
|
}
|
|
185
157
|
value={valueSnapshot}
|
|
@@ -188,10 +160,11 @@ export const DefaultRenderer: Renderer = ({
|
|
|
188
160
|
</>
|
|
189
161
|
) : (
|
|
190
162
|
<>
|
|
191
|
-
<
|
|
163
|
+
<span>{label}:</span>{' '}
|
|
164
|
+
<span className={getStyles().value}>{displayValue(value)}</span>
|
|
192
165
|
</>
|
|
193
166
|
)}
|
|
194
|
-
</
|
|
167
|
+
</div>
|
|
195
168
|
)
|
|
196
169
|
}
|
|
197
170
|
|
|
@@ -293,3 +266,92 @@ export default function Explorer({
|
|
|
293
266
|
...rest,
|
|
294
267
|
})
|
|
295
268
|
}
|
|
269
|
+
|
|
270
|
+
const stylesFactory = () => {
|
|
271
|
+
const { colors, font, size, alpha, shadow, border } = tokens
|
|
272
|
+
const { fontFamily, lineHeight, size: fontSize } = font
|
|
273
|
+
|
|
274
|
+
return {
|
|
275
|
+
entry: css`
|
|
276
|
+
font-family: ${fontFamily.mono};
|
|
277
|
+
font-size: ${fontSize.xs};
|
|
278
|
+
line-height: ${lineHeight.sm};
|
|
279
|
+
outline: none;
|
|
280
|
+
word-break: break-word;
|
|
281
|
+
`,
|
|
282
|
+
labelButton: css`
|
|
283
|
+
cursor: pointer;
|
|
284
|
+
color: inherit;
|
|
285
|
+
font: inherit;
|
|
286
|
+
outline: inherit;
|
|
287
|
+
background: transparent;
|
|
288
|
+
border: none;
|
|
289
|
+
padding: 0;
|
|
290
|
+
`,
|
|
291
|
+
expander: css`
|
|
292
|
+
display: inline-flex;
|
|
293
|
+
align-items: center;
|
|
294
|
+
justify-content: center;
|
|
295
|
+
width: ${size[3]};
|
|
296
|
+
height: ${size[3]};
|
|
297
|
+
padding-left: 3px;
|
|
298
|
+
box-sizing: content-box;
|
|
299
|
+
`,
|
|
300
|
+
expanderIcon: (expanded: boolean) => {
|
|
301
|
+
if (expanded) {
|
|
302
|
+
return css`
|
|
303
|
+
transform: rotate(90deg);
|
|
304
|
+
transition: transform 0.1s ease;
|
|
305
|
+
`
|
|
306
|
+
}
|
|
307
|
+
return css`
|
|
308
|
+
transform: rotate(0deg);
|
|
309
|
+
transition: transform 0.1s ease;
|
|
310
|
+
`
|
|
311
|
+
},
|
|
312
|
+
expandButton: css`
|
|
313
|
+
display: flex;
|
|
314
|
+
gap: ${size[1]};
|
|
315
|
+
align-items: center;
|
|
316
|
+
cursor: pointer;
|
|
317
|
+
color: inherit;
|
|
318
|
+
font: inherit;
|
|
319
|
+
outline: inherit;
|
|
320
|
+
background: transparent;
|
|
321
|
+
border: none;
|
|
322
|
+
padding: 0;
|
|
323
|
+
`,
|
|
324
|
+
value: css`
|
|
325
|
+
color: ${colors.purple[400]};
|
|
326
|
+
`,
|
|
327
|
+
subEntries: css`
|
|
328
|
+
margin-left: ${size[2]};
|
|
329
|
+
padding-left: ${size[2]};
|
|
330
|
+
border-left: 2px solid ${colors.darkGray[400]};
|
|
331
|
+
`,
|
|
332
|
+
info: css`
|
|
333
|
+
color: ${colors.gray[500]};
|
|
334
|
+
font-size: ${fontSize['2xs']};
|
|
335
|
+
padding-left: ${size[1]};
|
|
336
|
+
`,
|
|
337
|
+
refreshValueBtn: css`
|
|
338
|
+
appearance: none;
|
|
339
|
+
border: 0;
|
|
340
|
+
cursor: pointer;
|
|
341
|
+
background: transparent;
|
|
342
|
+
color: inherit;
|
|
343
|
+
padding: 0;
|
|
344
|
+
font-family: ${fontFamily.mono};
|
|
345
|
+
font-size: ${fontSize.xs};
|
|
346
|
+
`,
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
let _styles: ReturnType<typeof stylesFactory> | null = null
|
|
351
|
+
|
|
352
|
+
function getStyles() {
|
|
353
|
+
if (_styles) return _styles
|
|
354
|
+
_styles = stylesFactory()
|
|
355
|
+
|
|
356
|
+
return _styles
|
|
357
|
+
}
|