@tanstack/react-query-devtools 5.0.0-alpha.4 → 5.0.0-alpha.43

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 (109) hide show
  1. package/build/lib/__tests__/devtools.test.d.ts +1 -1
  2. package/build/lib/__tests__/devtools.test.d.ts.map +1 -0
  3. package/build/lib/__tests__/utils.d.ts +2 -1
  4. package/build/lib/__tests__/utils.d.ts.map +1 -0
  5. package/build/lib/devtools.d.ts +11 -75
  6. package/build/lib/devtools.d.ts.map +1 -0
  7. package/build/lib/devtools.esm.js +52 -766
  8. package/build/lib/devtools.esm.js.map +1 -1
  9. package/build/lib/devtools.js +49 -783
  10. package/build/lib/devtools.js.map +1 -1
  11. package/build/lib/devtools.mjs +52 -766
  12. package/build/lib/devtools.mjs.map +1 -1
  13. package/build/lib/index.d.ts +1 -1
  14. package/build/lib/index.d.ts.map +1 -0
  15. package/build/lib/index.esm.js +10 -5
  16. package/build/lib/index.esm.js.map +1 -1
  17. package/build/lib/index.js +8 -4
  18. package/build/lib/index.js.map +1 -1
  19. package/build/lib/index.mjs +10 -5
  20. package/build/lib/index.mjs.map +1 -1
  21. package/build/lib/{index.prod.d.ts → index.prod.d.ts/build/lib/index.d.ts} +1 -1
  22. package/build/lib/index.prod.esm.js +7892 -1302
  23. package/build/lib/index.prod.esm.js.map +1 -1
  24. package/build/lib/index.prod.js +7959 -1389
  25. package/build/lib/index.prod.js.map +1 -1
  26. package/build/lib/index.prod.mjs +7892 -1302
  27. package/build/lib/index.prod.mjs.map +1 -1
  28. package/build/umd/index.development.js +7016 -2089
  29. package/build/umd/index.development.js.map +1 -1
  30. package/build/umd/index.production.js +1 -1
  31. package/build/umd/index.production.js.map +1 -1
  32. package/package.json +10 -9
  33. package/src/__tests__/devtools.test.tsx +1 -860
  34. package/src/devtools.tsx +61 -1164
  35. package/src/index.ts +6 -6
  36. package/build/lib/Explorer.d.ts +0 -50
  37. package/build/lib/Explorer.esm.js +0 -253
  38. package/build/lib/Explorer.esm.js.map +0 -1
  39. package/build/lib/Explorer.js +0 -287
  40. package/build/lib/Explorer.js.map +0 -1
  41. package/build/lib/Explorer.mjs +0 -253
  42. package/build/lib/Explorer.mjs.map +0 -1
  43. package/build/lib/Logo.d.ts +0 -1
  44. package/build/lib/Logo.esm.js +0 -32
  45. package/build/lib/Logo.esm.js.map +0 -1
  46. package/build/lib/Logo.js +0 -55
  47. package/build/lib/Logo.js.map +0 -1
  48. package/build/lib/Logo.mjs +0 -32
  49. package/build/lib/Logo.mjs.map +0 -1
  50. package/build/lib/__tests__/Explorer.test.d.ts +0 -1
  51. package/build/lib/_virtual/_rollupPluginBabelHelpers.esm.js +0 -17
  52. package/build/lib/_virtual/_rollupPluginBabelHelpers.esm.js.map +0 -1
  53. package/build/lib/_virtual/_rollupPluginBabelHelpers.js +0 -19
  54. package/build/lib/_virtual/_rollupPluginBabelHelpers.js.map +0 -1
  55. package/build/lib/_virtual/_rollupPluginBabelHelpers.mjs +0 -17
  56. package/build/lib/_virtual/_rollupPluginBabelHelpers.mjs.map +0 -1
  57. package/build/lib/noop.d.ts +0 -2
  58. package/build/lib/screenreader.d.ts +0 -3
  59. package/build/lib/screenreader.esm.js +0 -17
  60. package/build/lib/screenreader.esm.js.map +0 -1
  61. package/build/lib/screenreader.js +0 -40
  62. package/build/lib/screenreader.js.map +0 -1
  63. package/build/lib/screenreader.mjs +0 -17
  64. package/build/lib/screenreader.mjs.map +0 -1
  65. package/build/lib/styledComponents.d.ts +0 -9
  66. package/build/lib/styledComponents.esm.js +0 -93
  67. package/build/lib/styledComponents.esm.js.map +0 -1
  68. package/build/lib/styledComponents.js +0 -102
  69. package/build/lib/styledComponents.js.map +0 -1
  70. package/build/lib/styledComponents.mjs +0 -93
  71. package/build/lib/styledComponents.mjs.map +0 -1
  72. package/build/lib/theme.d.ts +0 -36
  73. package/build/lib/theme.esm.js +0 -32
  74. package/build/lib/theme.esm.js.map +0 -1
  75. package/build/lib/theme.js +0 -55
  76. package/build/lib/theme.js.map +0 -1
  77. package/build/lib/theme.mjs +0 -32
  78. package/build/lib/theme.mjs.map +0 -1
  79. package/build/lib/useLocalStorage.d.ts +0 -1
  80. package/build/lib/useLocalStorage.esm.js +0 -40
  81. package/build/lib/useLocalStorage.esm.js.map +0 -1
  82. package/build/lib/useLocalStorage.js +0 -63
  83. package/build/lib/useLocalStorage.js.map +0 -1
  84. package/build/lib/useLocalStorage.mjs +0 -40
  85. package/build/lib/useLocalStorage.mjs.map +0 -1
  86. package/build/lib/useMediaQuery.d.ts +0 -1
  87. package/build/lib/useMediaQuery.esm.js +0 -36
  88. package/build/lib/useMediaQuery.esm.js.map +0 -1
  89. package/build/lib/useMediaQuery.js +0 -59
  90. package/build/lib/useMediaQuery.js.map +0 -1
  91. package/build/lib/useMediaQuery.mjs +0 -36
  92. package/build/lib/useMediaQuery.mjs.map +0 -1
  93. package/build/lib/utils.d.ts +0 -79
  94. package/build/lib/utils.esm.js +0 -184
  95. package/build/lib/utils.esm.js.map +0 -1
  96. package/build/lib/utils.js +0 -218
  97. package/build/lib/utils.js.map +0 -1
  98. package/build/lib/utils.mjs +0 -184
  99. package/build/lib/utils.mjs.map +0 -1
  100. package/src/Explorer.tsx +0 -385
  101. package/src/Logo.tsx +0 -32
  102. package/src/__tests__/Explorer.test.tsx +0 -149
  103. package/src/noop.ts +0 -7
  104. package/src/screenreader.tsx +0 -16
  105. package/src/styledComponents.ts +0 -108
  106. package/src/theme.tsx +0 -33
  107. package/src/useLocalStorage.ts +0 -52
  108. package/src/useMediaQuery.ts +0 -34
  109. package/src/utils.ts +0 -319
package/src/index.ts CHANGED
@@ -9,9 +9,9 @@ export const ReactQueryDevtools: (typeof devtools)['ReactQueryDevtools'] =
9
9
  }
10
10
  : devtools.ReactQueryDevtools
11
11
 
12
- export const ReactQueryDevtoolsPanel: (typeof devtools)['ReactQueryDevtoolsPanel'] =
13
- process.env.NODE_ENV !== 'development'
14
- ? (function () {
15
- return null
16
- } as any)
17
- : devtools.ReactQueryDevtoolsPanel
12
+ // export const ReactQueryDevtoolsPanel: (typeof devtools)['ReactQueryDevtoolsPanel'] =
13
+ // process.env.NODE_ENV !== 'development'
14
+ // ? (function () {
15
+ // return null
16
+ // } as any)
17
+ // : devtools.ReactQueryDevtoolsPanel
@@ -1,50 +0,0 @@
1
- import * as React from 'react';
2
- export declare const Entry: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
3
- export declare const Label: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLSpanElement> & React.RefAttributes<HTMLSpanElement>>;
4
- export declare const LabelButton: React.ForwardRefExoticComponent<Pick<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "key" | keyof React.ButtonHTMLAttributes<HTMLButtonElement>> & React.RefAttributes<HTMLButtonElement>>;
5
- export declare const ExpandButton: React.ForwardRefExoticComponent<Pick<React.DetailedHTMLProps<React.ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, "key" | keyof React.ButtonHTMLAttributes<HTMLButtonElement>> & React.RefAttributes<HTMLButtonElement>>;
6
- export declare const CopyButton: ({ value }: {
7
- value: unknown;
8
- }) => JSX.Element;
9
- export declare const Value: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLSpanElement> & React.RefAttributes<HTMLSpanElement>>;
10
- export declare const SubEntries: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLDivElement> & React.RefAttributes<HTMLDivElement>>;
11
- export declare const Info: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLSpanElement> & React.RefAttributes<HTMLSpanElement>>;
12
- declare type ExpanderProps = {
13
- expanded: boolean;
14
- style?: React.CSSProperties;
15
- };
16
- export declare const Expander: ({ expanded, style }: ExpanderProps) => JSX.Element;
17
- declare type EntryType = {
18
- label: string;
19
- };
20
- declare type RendererProps = {
21
- handleEntry: (entry: EntryType) => JSX.Element;
22
- label?: string;
23
- value: unknown;
24
- subEntries: EntryType[];
25
- subEntryPages: EntryType[][];
26
- type: string;
27
- expanded: boolean;
28
- copyable: boolean;
29
- toggleExpanded: () => void;
30
- pageSize: number;
31
- };
32
- /**
33
- * Chunk elements in the array by size
34
- *
35
- * when the array cannot be chunked evenly by size, the last chunk will be
36
- * filled with the remaining elements
37
- *
38
- * @example
39
- * chunkArray(['a','b', 'c', 'd', 'e'], 2) // returns [['a','b'], ['c', 'd'], ['e']]
40
- */
41
- export declare function chunkArray<T>(array: T[], size: number): T[][];
42
- declare type Renderer = (props: RendererProps) => JSX.Element;
43
- export declare const DefaultRenderer: Renderer;
44
- declare type ExplorerProps = Partial<RendererProps> & {
45
- renderer?: Renderer;
46
- defaultExpanded?: true | Record<string, boolean>;
47
- copyable?: boolean;
48
- };
49
- export default function Explorer({ value, defaultExpanded, renderer, pageSize, copyable, ...rest }: ExplorerProps): JSX.Element;
50
- export {};
@@ -1,253 +0,0 @@
1
- import { extends as _extends } from './_virtual/_rollupPluginBabelHelpers.esm.js';
2
- import * as React from 'react';
3
- import { displayValue, styled } from './utils.esm.js';
4
- import SuperJSON from 'superjson';
5
-
6
- const Entry = styled('div', {
7
- fontFamily: 'Menlo, monospace',
8
- fontSize: '1em',
9
- lineHeight: '1.7',
10
- outline: 'none',
11
- wordBreak: 'break-word'
12
- });
13
- const Label = styled('span', {
14
- color: 'white'
15
- });
16
- const LabelButton = styled('button', {
17
- cursor: 'pointer',
18
- color: 'white'
19
- });
20
- const ExpandButton = styled('button', {
21
- cursor: 'pointer',
22
- color: 'inherit',
23
- font: 'inherit',
24
- outline: 'inherit',
25
- background: 'transparent',
26
- border: 'none',
27
- padding: 0
28
- });
29
- const CopyButton = ({
30
- value
31
- }) => {
32
- const [copyState, setCopyState] = React.useState('NoCopy');
33
- return /*#__PURE__*/React.createElement("button", {
34
- onClick: copyState === 'NoCopy' ? () => {
35
- navigator.clipboard.writeText(SuperJSON.stringify(value)).then(() => {
36
- setCopyState('SuccessCopy');
37
- setTimeout(() => {
38
- setCopyState('NoCopy');
39
- }, 1500);
40
- }, err => {
41
- console.error('Failed to copy: ', err);
42
- setCopyState('ErrorCopy');
43
- setTimeout(() => {
44
- setCopyState('NoCopy');
45
- }, 1500);
46
- });
47
- } : undefined,
48
- style: {
49
- cursor: 'pointer',
50
- color: 'inherit',
51
- font: 'inherit',
52
- outline: 'inherit',
53
- background: 'transparent',
54
- border: 'none',
55
- padding: 0
56
- }
57
- }, copyState === 'NoCopy' ? /*#__PURE__*/React.createElement(Copier, null) : copyState === 'SuccessCopy' ? /*#__PURE__*/React.createElement(CopiedCopier, null) : /*#__PURE__*/React.createElement(ErrorCopier, null));
58
- };
59
- const Value = styled('span', (_props, theme) => ({
60
- color: theme.danger
61
- }));
62
- const SubEntries = styled('div', {
63
- marginLeft: '.1em',
64
- paddingLeft: '1em',
65
- borderLeft: '2px solid rgba(0,0,0,.15)'
66
- });
67
- const Info = styled('span', {
68
- color: 'grey',
69
- fontSize: '.7em'
70
- });
71
- const Expander = ({
72
- expanded,
73
- style = {}
74
- }) => /*#__PURE__*/React.createElement("span", {
75
- style: {
76
- display: 'inline-block',
77
- transition: 'all .1s ease',
78
- transform: `rotate(${expanded ? 90 : 0}deg) ${style.transform || ''}`,
79
- ...style
80
- }
81
- }, "\u25B6");
82
- const Copier = () => /*#__PURE__*/React.createElement("span", {
83
- "aria-label": "Copy object to clipboard",
84
- title: "Copy object to clipboard",
85
- style: {
86
- paddingLeft: '1em'
87
- }
88
- }, /*#__PURE__*/React.createElement("svg", {
89
- height: "12",
90
- viewBox: "0 0 16 12",
91
- width: "10"
92
- }, /*#__PURE__*/React.createElement("path", {
93
- fill: "currentColor",
94
- d: "M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z"
95
- }), /*#__PURE__*/React.createElement("path", {
96
- fill: "currentColor",
97
- d: "M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z"
98
- })));
99
- const ErrorCopier = () => /*#__PURE__*/React.createElement("span", {
100
- "aria-label": "Failed copying to clipboard",
101
- title: "Failed copying to clipboard",
102
- style: {
103
- paddingLeft: '1em',
104
- display: 'flex',
105
- alignItems: 'center'
106
- }
107
- }, /*#__PURE__*/React.createElement("svg", {
108
- height: "12",
109
- viewBox: "0 0 16 12",
110
- width: "10",
111
- display: "block"
112
- }, /*#__PURE__*/React.createElement("path", {
113
- fill: "red",
114
- d: "M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"
115
- })), /*#__PURE__*/React.createElement("span", {
116
- style: {
117
- color: 'red',
118
- fontSize: '12px',
119
- paddingLeft: '4px',
120
- position: 'relative',
121
- top: '2px'
122
- }
123
- }, "See console"));
124
- const CopiedCopier = () => /*#__PURE__*/React.createElement("span", {
125
- "aria-label": "Object copied to clipboard",
126
- title: "Object copied to clipboard",
127
- style: {
128
- paddingLeft: '1em',
129
- display: 'inline-block',
130
- verticalAlign: 'middle'
131
- }
132
- }, /*#__PURE__*/React.createElement("svg", {
133
- height: "16",
134
- viewBox: "0 0 16 16",
135
- width: "16",
136
- display: "block"
137
- }, /*#__PURE__*/React.createElement("path", {
138
- fill: "green",
139
- d: "M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"
140
- })));
141
- /**
142
- * Chunk elements in the array by size
143
- *
144
- * when the array cannot be chunked evenly by size, the last chunk will be
145
- * filled with the remaining elements
146
- *
147
- * @example
148
- * chunkArray(['a','b', 'c', 'd', 'e'], 2) // returns [['a','b'], ['c', 'd'], ['e']]
149
- */
150
- function chunkArray(array, size) {
151
- if (size < 1) return [];
152
- let i = 0;
153
- const result = [];
154
- while (i < array.length) {
155
- result.push(array.slice(i, i + size));
156
- i = i + size;
157
- }
158
- return result;
159
- }
160
- const DefaultRenderer = ({
161
- handleEntry,
162
- label,
163
- value,
164
- subEntries = [],
165
- subEntryPages = [],
166
- type,
167
- expanded = false,
168
- copyable = false,
169
- toggleExpanded,
170
- pageSize
171
- }) => {
172
- const [expandedPages, setExpandedPages] = React.useState([]);
173
- return /*#__PURE__*/React.createElement(Entry, {
174
- key: label
175
- }, subEntryPages.length ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(ExpandButton, {
176
- onClick: () => toggleExpanded()
177
- }, /*#__PURE__*/React.createElement(Expander, {
178
- expanded: expanded
179
- }), " ", label, ' ', /*#__PURE__*/React.createElement(Info, null, String(type).toLowerCase() === 'iterable' ? '(Iterable) ' : '', subEntries.length, " ", subEntries.length > 1 ? `items` : `item`)), copyable ? /*#__PURE__*/React.createElement(CopyButton, {
180
- value: value
181
- }) : null, expanded ? subEntryPages.length === 1 ? /*#__PURE__*/React.createElement(SubEntries, null, subEntries.map(handleEntry)) : /*#__PURE__*/React.createElement(SubEntries, null, subEntryPages.map((entries, index) => /*#__PURE__*/React.createElement("div", {
182
- key: index
183
- }, /*#__PURE__*/React.createElement(Entry, null, /*#__PURE__*/React.createElement(LabelButton, {
184
- onClick: () => setExpandedPages(old => old.includes(index) ? old.filter(d => d !== index) : [...old, index])
185
- }, /*#__PURE__*/React.createElement(Expander, {
186
- expanded: expanded
187
- }), " [", index * pageSize, " ...", ' ', index * pageSize + pageSize - 1, "]"), expandedPages.includes(index) ? /*#__PURE__*/React.createElement(SubEntries, null, entries.map(handleEntry)) : null)))) : null) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Label, null, label, ":"), " ", /*#__PURE__*/React.createElement(Value, null, displayValue(value))));
188
- };
189
- function isIterable(x) {
190
- return Symbol.iterator in x;
191
- }
192
- function Explorer({
193
- value,
194
- defaultExpanded,
195
- renderer = DefaultRenderer,
196
- pageSize = 100,
197
- copyable = false,
198
- ...rest
199
- }) {
200
- const [expanded, setExpanded] = React.useState(Boolean(defaultExpanded));
201
- const toggleExpanded = React.useCallback(() => setExpanded(old => !old), []);
202
- let type = typeof value;
203
- let subEntries = [];
204
- const makeProperty = sub => {
205
- const subDefaultExpanded = defaultExpanded === true ? {
206
- [sub.label]: true
207
- } : defaultExpanded?.[sub.label];
208
- return {
209
- ...sub,
210
- defaultExpanded: subDefaultExpanded
211
- };
212
- };
213
- if (Array.isArray(value)) {
214
- type = 'array';
215
- subEntries = value.map((d, i) => makeProperty({
216
- label: i.toString(),
217
- value: d
218
- }));
219
- } else if (value !== null && typeof value === 'object' && isIterable(value) && typeof value[Symbol.iterator] === 'function') {
220
- type = 'Iterable';
221
- subEntries = Array.from(value, (val, i) => makeProperty({
222
- label: i.toString(),
223
- value: val
224
- }));
225
- } else if (typeof value === 'object' && value !== null) {
226
- type = 'object';
227
- subEntries = Object.entries(value).map(([key, val]) => makeProperty({
228
- label: key,
229
- value: val
230
- }));
231
- }
232
- const subEntryPages = chunkArray(subEntries, pageSize);
233
- return renderer({
234
- handleEntry: entry => /*#__PURE__*/React.createElement(Explorer, _extends({
235
- key: entry.label,
236
- value: value,
237
- renderer: renderer,
238
- copyable: copyable
239
- }, rest, entry)),
240
- type,
241
- subEntries,
242
- subEntryPages,
243
- value,
244
- expanded,
245
- copyable,
246
- toggleExpanded,
247
- pageSize,
248
- ...rest
249
- });
250
- }
251
-
252
- export { CopyButton, DefaultRenderer, Entry, ExpandButton, Expander, Info, Label, LabelButton, SubEntries, Value, chunkArray, Explorer as default };
253
- //# sourceMappingURL=Explorer.esm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Explorer.esm.js","sources":["../../src/Explorer.tsx"],"sourcesContent":["'use client'\nimport * as React from 'react'\n\nimport { displayValue, styled } from './utils'\nimport superjson from 'superjson'\n\nexport const Entry = styled('div', {\n fontFamily: 'Menlo, monospace',\n fontSize: '1em',\n lineHeight: '1.7',\n outline: 'none',\n wordBreak: 'break-word',\n})\n\nexport const Label = styled('span', {\n color: 'white',\n})\n\nexport const LabelButton = styled('button', {\n cursor: 'pointer',\n color: 'white',\n})\n\nexport const ExpandButton = styled('button', {\n cursor: 'pointer',\n color: 'inherit',\n font: 'inherit',\n outline: 'inherit',\n background: 'transparent',\n border: 'none',\n padding: 0,\n})\n\ntype CopyState = 'NoCopy' | 'SuccessCopy' | 'ErrorCopy'\n\nexport const CopyButton = ({ value }: { value: unknown }) => {\n const [copyState, setCopyState] = React.useState<CopyState>('NoCopy')\n\n return (\n <button\n onClick={\n copyState === 'NoCopy'\n ? () => {\n navigator.clipboard.writeText(superjson.stringify(value)).then(\n () => {\n setCopyState('SuccessCopy')\n setTimeout(() => {\n setCopyState('NoCopy')\n }, 1500)\n },\n (err) => {\n console.error('Failed to copy: ', err)\n setCopyState('ErrorCopy')\n setTimeout(() => {\n setCopyState('NoCopy')\n }, 1500)\n },\n )\n }\n : undefined\n }\n style={{\n cursor: 'pointer',\n color: 'inherit',\n font: 'inherit',\n outline: 'inherit',\n background: 'transparent',\n border: 'none',\n padding: 0,\n }}\n >\n {copyState === 'NoCopy' ? (\n <Copier />\n ) : copyState === 'SuccessCopy' ? (\n <CopiedCopier />\n ) : (\n <ErrorCopier />\n )}\n </button>\n )\n}\n\nexport const Value = styled('span', (_props, theme) => ({\n color: theme.danger,\n}))\n\nexport const SubEntries = styled('div', {\n marginLeft: '.1em',\n paddingLeft: '1em',\n borderLeft: '2px solid rgba(0,0,0,.15)',\n})\n\nexport const Info = styled('span', {\n color: 'grey',\n fontSize: '.7em',\n})\n\ntype ExpanderProps = {\n expanded: boolean\n style?: React.CSSProperties\n}\n\nexport const Expander = ({ expanded, style = {} }: ExpanderProps) => (\n <span\n style={{\n display: 'inline-block',\n transition: 'all .1s ease',\n transform: `rotate(${expanded ? 90 : 0}deg) ${style.transform || ''}`,\n ...style,\n }}\n >\n ▶\n </span>\n)\n\nconst Copier = () => (\n <span\n aria-label=\"Copy object to clipboard\"\n title=\"Copy object to clipboard\"\n style={{\n paddingLeft: '1em',\n }}\n >\n <svg height=\"12\" viewBox=\"0 0 16 12\" width=\"10\">\n <path\n fill=\"currentColor\"\n d=\"M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z\"\n ></path>\n <path\n fill=\"currentColor\"\n d=\"M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z\"\n ></path>\n </svg>\n </span>\n)\n\nconst ErrorCopier = () => (\n <span\n aria-label=\"Failed copying to clipboard\"\n title=\"Failed copying to clipboard\"\n style={{\n paddingLeft: '1em',\n display: 'flex',\n alignItems: 'center',\n }}\n >\n <svg height=\"12\" viewBox=\"0 0 16 12\" width=\"10\" display=\"block\">\n <path\n fill=\"red\"\n d=\"M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z\"\n ></path>\n </svg>\n <span\n style={{\n color: 'red',\n fontSize: '12px',\n paddingLeft: '4px',\n position: 'relative',\n top: '2px',\n }}\n >\n See console\n </span>\n </span>\n)\n\nconst CopiedCopier = () => (\n <span\n aria-label=\"Object copied to clipboard\"\n title=\"Object copied to clipboard\"\n style={{\n paddingLeft: '1em',\n display: 'inline-block',\n verticalAlign: 'middle',\n }}\n >\n <svg height=\"16\" viewBox=\"0 0 16 16\" width=\"16\" display=\"block\">\n <path\n fill=\"green\"\n d=\"M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z\"\n ></path>\n </svg>\n </span>\n)\n\ntype EntryType = {\n label: string\n}\n\ntype RendererProps = {\n handleEntry: (entry: EntryType) => JSX.Element\n label?: string\n value: unknown\n subEntries: EntryType[]\n subEntryPages: EntryType[][]\n type: string\n expanded: boolean\n copyable: boolean\n toggleExpanded: () => void\n pageSize: number\n}\n\n/**\n * Chunk elements in the array by size\n *\n * when the array cannot be chunked evenly by size, the last chunk will be\n * filled with the remaining elements\n *\n * @example\n * chunkArray(['a','b', 'c', 'd', 'e'], 2) // returns [['a','b'], ['c', 'd'], ['e']]\n */\nexport function chunkArray<T>(array: T[], size: number): T[][] {\n if (size < 1) return []\n let i = 0\n const result: T[][] = []\n while (i < array.length) {\n result.push(array.slice(i, i + size))\n i = i + size\n }\n return result\n}\n\ntype Renderer = (props: RendererProps) => JSX.Element\n\nexport const DefaultRenderer: Renderer = ({\n handleEntry,\n label,\n value,\n subEntries = [],\n subEntryPages = [],\n type,\n expanded = false,\n copyable = false,\n toggleExpanded,\n pageSize,\n}) => {\n const [expandedPages, setExpandedPages] = React.useState<number[]>([])\n\n return (\n <Entry key={label}>\n {subEntryPages.length ? (\n <>\n <ExpandButton onClick={() => toggleExpanded()}>\n <Expander expanded={expanded} /> {label}{' '}\n <Info>\n {String(type).toLowerCase() === 'iterable' ? '(Iterable) ' : ''}\n {subEntries.length} {subEntries.length > 1 ? `items` : `item`}\n </Info>\n </ExpandButton>\n {copyable ? <CopyButton value={value} /> : null}\n {expanded ? (\n subEntryPages.length === 1 ? (\n <SubEntries>{subEntries.map(handleEntry)}</SubEntries>\n ) : (\n <SubEntries>\n {subEntryPages.map((entries, index) => (\n <div key={index}>\n <Entry>\n <LabelButton\n onClick={() =>\n setExpandedPages((old) =>\n old.includes(index)\n ? old.filter((d) => d !== index)\n : [...old, index],\n )\n }\n >\n <Expander expanded={expanded} /> [{index * pageSize} ...{' '}\n {index * pageSize + pageSize - 1}]\n </LabelButton>\n {expandedPages.includes(index) ? (\n <SubEntries>{entries.map(handleEntry)}</SubEntries>\n ) : null}\n </Entry>\n </div>\n ))}\n </SubEntries>\n )\n ) : null}\n </>\n ) : (\n <>\n <Label>{label}:</Label> <Value>{displayValue(value)}</Value>\n </>\n )}\n </Entry>\n )\n}\n\ntype ExplorerProps = Partial<RendererProps> & {\n renderer?: Renderer\n defaultExpanded?: true | Record<string, boolean>\n copyable?: boolean\n}\n\ntype Property = {\n defaultExpanded?: boolean | Record<string, boolean>\n label: string\n value: unknown\n}\n\nfunction isIterable(x: any): x is Iterable<unknown> {\n return Symbol.iterator in x\n}\n\nexport default function Explorer({\n value,\n defaultExpanded,\n renderer = DefaultRenderer,\n pageSize = 100,\n copyable = false,\n ...rest\n}: ExplorerProps) {\n const [expanded, setExpanded] = React.useState(Boolean(defaultExpanded))\n const toggleExpanded = React.useCallback(() => setExpanded((old) => !old), [])\n\n let type: string = typeof value\n let subEntries: Property[] = []\n\n const makeProperty = (sub: { label: string; value: unknown }): Property => {\n const subDefaultExpanded =\n defaultExpanded === true\n ? { [sub.label]: true }\n : defaultExpanded?.[sub.label]\n return {\n ...sub,\n defaultExpanded: subDefaultExpanded,\n }\n }\n\n if (Array.isArray(value)) {\n type = 'array'\n subEntries = value.map((d, i) =>\n makeProperty({\n label: i.toString(),\n value: d,\n }),\n )\n } else if (\n value !== null &&\n typeof value === 'object' &&\n isIterable(value) &&\n typeof value[Symbol.iterator] === 'function'\n ) {\n type = 'Iterable'\n subEntries = Array.from(value, (val, i) =>\n makeProperty({\n label: i.toString(),\n value: val,\n }),\n )\n } else if (typeof value === 'object' && value !== null) {\n type = 'object'\n subEntries = Object.entries(value).map(([key, val]) =>\n makeProperty({\n label: key,\n value: val,\n }),\n )\n }\n\n const subEntryPages = chunkArray(subEntries, pageSize)\n\n return renderer({\n handleEntry: (entry) => (\n <Explorer\n key={entry.label}\n value={value}\n renderer={renderer}\n copyable={copyable}\n {...rest}\n {...entry}\n />\n ),\n type,\n subEntries,\n subEntryPages,\n value,\n expanded,\n copyable,\n toggleExpanded,\n pageSize,\n ...rest,\n })\n}\n"],"names":["Entry","styled","fontFamily","fontSize","lineHeight","outline","wordBreak","Label","color","LabelButton","cursor","ExpandButton","font","background","border","padding","CopyButton","value","copyState","setCopyState","React","useState","navigator","clipboard","writeText","superjson","stringify","then","setTimeout","err","console","error","undefined","Value","_props","theme","danger","SubEntries","marginLeft","paddingLeft","borderLeft","Info","Expander","expanded","style","display","transition","transform","Copier","ErrorCopier","alignItems","position","top","CopiedCopier","verticalAlign","chunkArray","array","size","i","result","length","push","slice","DefaultRenderer","handleEntry","label","subEntries","subEntryPages","type","copyable","toggleExpanded","pageSize","expandedPages","setExpandedPages","String","toLowerCase","map","entries","index","old","includes","filter","d","displayValue","isIterable","x","Symbol","iterator","Explorer","defaultExpanded","renderer","rest","setExpanded","Boolean","useCallback","makeProperty","sub","subDefaultExpanded","Array","isArray","toString","from","val","Object","key","entry"],"mappings":"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"}
@@ -1,287 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var _rollupPluginBabelHelpers = require('./_virtual/_rollupPluginBabelHelpers.js');
6
- var React = require('react');
7
- var utils = require('./utils.js');
8
- var SuperJSON = require('superjson');
9
-
10
- function _interopNamespaceDefault(e) {
11
- var n = Object.create(null);
12
- if (e) {
13
- Object.keys(e).forEach(function (k) {
14
- if (k !== 'default') {
15
- var d = Object.getOwnPropertyDescriptor(e, k);
16
- Object.defineProperty(n, k, d.get ? d : {
17
- enumerable: true,
18
- get: function () { return e[k]; }
19
- });
20
- }
21
- });
22
- }
23
- n.default = e;
24
- return Object.freeze(n);
25
- }
26
-
27
- var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
28
-
29
- const Entry = utils.styled('div', {
30
- fontFamily: 'Menlo, monospace',
31
- fontSize: '1em',
32
- lineHeight: '1.7',
33
- outline: 'none',
34
- wordBreak: 'break-word'
35
- });
36
- const Label = utils.styled('span', {
37
- color: 'white'
38
- });
39
- const LabelButton = utils.styled('button', {
40
- cursor: 'pointer',
41
- color: 'white'
42
- });
43
- const ExpandButton = utils.styled('button', {
44
- cursor: 'pointer',
45
- color: 'inherit',
46
- font: 'inherit',
47
- outline: 'inherit',
48
- background: 'transparent',
49
- border: 'none',
50
- padding: 0
51
- });
52
- const CopyButton = ({
53
- value
54
- }) => {
55
- const [copyState, setCopyState] = React__namespace.useState('NoCopy');
56
- return /*#__PURE__*/React__namespace.createElement("button", {
57
- onClick: copyState === 'NoCopy' ? () => {
58
- navigator.clipboard.writeText(SuperJSON.stringify(value)).then(() => {
59
- setCopyState('SuccessCopy');
60
- setTimeout(() => {
61
- setCopyState('NoCopy');
62
- }, 1500);
63
- }, err => {
64
- console.error('Failed to copy: ', err);
65
- setCopyState('ErrorCopy');
66
- setTimeout(() => {
67
- setCopyState('NoCopy');
68
- }, 1500);
69
- });
70
- } : undefined,
71
- style: {
72
- cursor: 'pointer',
73
- color: 'inherit',
74
- font: 'inherit',
75
- outline: 'inherit',
76
- background: 'transparent',
77
- border: 'none',
78
- padding: 0
79
- }
80
- }, copyState === 'NoCopy' ? /*#__PURE__*/React__namespace.createElement(Copier, null) : copyState === 'SuccessCopy' ? /*#__PURE__*/React__namespace.createElement(CopiedCopier, null) : /*#__PURE__*/React__namespace.createElement(ErrorCopier, null));
81
- };
82
- const Value = utils.styled('span', (_props, theme) => ({
83
- color: theme.danger
84
- }));
85
- const SubEntries = utils.styled('div', {
86
- marginLeft: '.1em',
87
- paddingLeft: '1em',
88
- borderLeft: '2px solid rgba(0,0,0,.15)'
89
- });
90
- const Info = utils.styled('span', {
91
- color: 'grey',
92
- fontSize: '.7em'
93
- });
94
- const Expander = ({
95
- expanded,
96
- style = {}
97
- }) => /*#__PURE__*/React__namespace.createElement("span", {
98
- style: {
99
- display: 'inline-block',
100
- transition: 'all .1s ease',
101
- transform: `rotate(${expanded ? 90 : 0}deg) ${style.transform || ''}`,
102
- ...style
103
- }
104
- }, "\u25B6");
105
- const Copier = () => /*#__PURE__*/React__namespace.createElement("span", {
106
- "aria-label": "Copy object to clipboard",
107
- title: "Copy object to clipboard",
108
- style: {
109
- paddingLeft: '1em'
110
- }
111
- }, /*#__PURE__*/React__namespace.createElement("svg", {
112
- height: "12",
113
- viewBox: "0 0 16 12",
114
- width: "10"
115
- }, /*#__PURE__*/React__namespace.createElement("path", {
116
- fill: "currentColor",
117
- d: "M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z"
118
- }), /*#__PURE__*/React__namespace.createElement("path", {
119
- fill: "currentColor",
120
- d: "M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z"
121
- })));
122
- const ErrorCopier = () => /*#__PURE__*/React__namespace.createElement("span", {
123
- "aria-label": "Failed copying to clipboard",
124
- title: "Failed copying to clipboard",
125
- style: {
126
- paddingLeft: '1em',
127
- display: 'flex',
128
- alignItems: 'center'
129
- }
130
- }, /*#__PURE__*/React__namespace.createElement("svg", {
131
- height: "12",
132
- viewBox: "0 0 16 12",
133
- width: "10",
134
- display: "block"
135
- }, /*#__PURE__*/React__namespace.createElement("path", {
136
- fill: "red",
137
- d: "M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"
138
- })), /*#__PURE__*/React__namespace.createElement("span", {
139
- style: {
140
- color: 'red',
141
- fontSize: '12px',
142
- paddingLeft: '4px',
143
- position: 'relative',
144
- top: '2px'
145
- }
146
- }, "See console"));
147
- const CopiedCopier = () => /*#__PURE__*/React__namespace.createElement("span", {
148
- "aria-label": "Object copied to clipboard",
149
- title: "Object copied to clipboard",
150
- style: {
151
- paddingLeft: '1em',
152
- display: 'inline-block',
153
- verticalAlign: 'middle'
154
- }
155
- }, /*#__PURE__*/React__namespace.createElement("svg", {
156
- height: "16",
157
- viewBox: "0 0 16 16",
158
- width: "16",
159
- display: "block"
160
- }, /*#__PURE__*/React__namespace.createElement("path", {
161
- fill: "green",
162
- d: "M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"
163
- })));
164
- /**
165
- * Chunk elements in the array by size
166
- *
167
- * when the array cannot be chunked evenly by size, the last chunk will be
168
- * filled with the remaining elements
169
- *
170
- * @example
171
- * chunkArray(['a','b', 'c', 'd', 'e'], 2) // returns [['a','b'], ['c', 'd'], ['e']]
172
- */
173
- function chunkArray(array, size) {
174
- if (size < 1) return [];
175
- let i = 0;
176
- const result = [];
177
- while (i < array.length) {
178
- result.push(array.slice(i, i + size));
179
- i = i + size;
180
- }
181
- return result;
182
- }
183
- const DefaultRenderer = ({
184
- handleEntry,
185
- label,
186
- value,
187
- subEntries = [],
188
- subEntryPages = [],
189
- type,
190
- expanded = false,
191
- copyable = false,
192
- toggleExpanded,
193
- pageSize
194
- }) => {
195
- const [expandedPages, setExpandedPages] = React__namespace.useState([]);
196
- return /*#__PURE__*/React__namespace.createElement(Entry, {
197
- key: label
198
- }, subEntryPages.length ? /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, /*#__PURE__*/React__namespace.createElement(ExpandButton, {
199
- onClick: () => toggleExpanded()
200
- }, /*#__PURE__*/React__namespace.createElement(Expander, {
201
- expanded: expanded
202
- }), " ", label, ' ', /*#__PURE__*/React__namespace.createElement(Info, null, String(type).toLowerCase() === 'iterable' ? '(Iterable) ' : '', subEntries.length, " ", subEntries.length > 1 ? `items` : `item`)), copyable ? /*#__PURE__*/React__namespace.createElement(CopyButton, {
203
- value: value
204
- }) : null, expanded ? subEntryPages.length === 1 ? /*#__PURE__*/React__namespace.createElement(SubEntries, null, subEntries.map(handleEntry)) : /*#__PURE__*/React__namespace.createElement(SubEntries, null, subEntryPages.map((entries, index) => /*#__PURE__*/React__namespace.createElement("div", {
205
- key: index
206
- }, /*#__PURE__*/React__namespace.createElement(Entry, null, /*#__PURE__*/React__namespace.createElement(LabelButton, {
207
- onClick: () => setExpandedPages(old => old.includes(index) ? old.filter(d => d !== index) : [...old, index])
208
- }, /*#__PURE__*/React__namespace.createElement(Expander, {
209
- expanded: expanded
210
- }), " [", index * pageSize, " ...", ' ', index * pageSize + pageSize - 1, "]"), expandedPages.includes(index) ? /*#__PURE__*/React__namespace.createElement(SubEntries, null, entries.map(handleEntry)) : null)))) : null) : /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, /*#__PURE__*/React__namespace.createElement(Label, null, label, ":"), " ", /*#__PURE__*/React__namespace.createElement(Value, null, utils.displayValue(value))));
211
- };
212
- function isIterable(x) {
213
- return Symbol.iterator in x;
214
- }
215
- function Explorer({
216
- value,
217
- defaultExpanded,
218
- renderer = DefaultRenderer,
219
- pageSize = 100,
220
- copyable = false,
221
- ...rest
222
- }) {
223
- const [expanded, setExpanded] = React__namespace.useState(Boolean(defaultExpanded));
224
- const toggleExpanded = React__namespace.useCallback(() => setExpanded(old => !old), []);
225
- let type = typeof value;
226
- let subEntries = [];
227
- const makeProperty = sub => {
228
- const subDefaultExpanded = defaultExpanded === true ? {
229
- [sub.label]: true
230
- } : defaultExpanded?.[sub.label];
231
- return {
232
- ...sub,
233
- defaultExpanded: subDefaultExpanded
234
- };
235
- };
236
- if (Array.isArray(value)) {
237
- type = 'array';
238
- subEntries = value.map((d, i) => makeProperty({
239
- label: i.toString(),
240
- value: d
241
- }));
242
- } else if (value !== null && typeof value === 'object' && isIterable(value) && typeof value[Symbol.iterator] === 'function') {
243
- type = 'Iterable';
244
- subEntries = Array.from(value, (val, i) => makeProperty({
245
- label: i.toString(),
246
- value: val
247
- }));
248
- } else if (typeof value === 'object' && value !== null) {
249
- type = 'object';
250
- subEntries = Object.entries(value).map(([key, val]) => makeProperty({
251
- label: key,
252
- value: val
253
- }));
254
- }
255
- const subEntryPages = chunkArray(subEntries, pageSize);
256
- return renderer({
257
- handleEntry: entry => /*#__PURE__*/React__namespace.createElement(Explorer, _rollupPluginBabelHelpers.extends({
258
- key: entry.label,
259
- value: value,
260
- renderer: renderer,
261
- copyable: copyable
262
- }, rest, entry)),
263
- type,
264
- subEntries,
265
- subEntryPages,
266
- value,
267
- expanded,
268
- copyable,
269
- toggleExpanded,
270
- pageSize,
271
- ...rest
272
- });
273
- }
274
-
275
- exports.CopyButton = CopyButton;
276
- exports.DefaultRenderer = DefaultRenderer;
277
- exports.Entry = Entry;
278
- exports.ExpandButton = ExpandButton;
279
- exports.Expander = Expander;
280
- exports.Info = Info;
281
- exports.Label = Label;
282
- exports.LabelButton = LabelButton;
283
- exports.SubEntries = SubEntries;
284
- exports.Value = Value;
285
- exports.chunkArray = chunkArray;
286
- exports.default = Explorer;
287
- //# sourceMappingURL=Explorer.js.map