@tanstack/devtools-ui 0.3.3 → 0.3.5
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/esm/components/main-panel.js +1 -3
- package/dist/esm/components/main-panel.js.map +1 -1
- package/dist/esm/components/theme.d.ts +12 -0
- package/dist/esm/components/theme.js +30 -0
- package/dist/esm/components/theme.js.map +1 -0
- package/dist/esm/components/tree.d.ts +1 -0
- package/dist/esm/components/tree.js +244 -179
- package/dist/esm/components/tree.js.map +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +4 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/styles/use-styles.d.ts +1 -2
- package/dist/esm/styles/use-styles.js +80 -72
- package/dist/esm/styles/use-styles.js.map +1 -1
- package/package.json +1 -1
- package/src/components/main-panel.tsx +6 -3
- package/src/components/theme.tsx +34 -0
- package/src/components/tree.tsx +178 -97
- package/src/index.ts +1 -0
- package/src/styles/use-styles.ts +84 -73
|
@@ -3,7 +3,7 @@ import { createSignal, Show, For, Switch, Match } from "solid-js";
|
|
|
3
3
|
import clsx from "clsx";
|
|
4
4
|
import { useStyles, css } from "../styles/use-styles.js";
|
|
5
5
|
import { Copier, CopiedCopier, ErrorCopier } from "./icons.js";
|
|
6
|
-
var _tmpl$ = /* @__PURE__ */ template(`<
|
|
6
|
+
var _tmpl$ = /* @__PURE__ */ template(`<span>`), _tmpl$2 = /* @__PURE__ */ template(`<span>"<!>": `), _tmpl$3 = /* @__PURE__ */ template(`<span>"<!>"`), _tmpl$4 = /* @__PURE__ */ template(`<span>null`), _tmpl$5 = /* @__PURE__ */ template(`<span>undefined`), _tmpl$6 = /* @__PURE__ */ template(`<div>`), _tmpl$7 = /* @__PURE__ */ template(`<span>,`), _tmpl$8 = /* @__PURE__ */ template(`<span><span>[]`), _tmpl$9 = /* @__PURE__ */ template(`<span>...`), _tmpl$0 = /* @__PURE__ */ template(`<span><span>[</span><span>]`), _tmpl$1 = /* @__PURE__ */ template(`<span>"<!>": <span> items`), _tmpl$10 = /* @__PURE__ */ template(`<span><span>{}`), _tmpl$11 = /* @__PURE__ */ template(`<span><span>{</span><span>}`), _tmpl$12 = /* @__PURE__ */ template(`<button title="Copy object to clipboard">`), _tmpl$13 = /* @__PURE__ */ template(`<span><svg width=16 height=16 viewBox="0 0 16 16"fill=none xmlns=http://www.w3.org/2000/svg><path d="M6 12L10 8L6 4"stroke-width=2 stroke-linecap=round stroke-linejoin=round>`);
|
|
7
7
|
function JsonTree(props) {
|
|
8
8
|
return createComponent(JsonValue, {
|
|
9
9
|
isRoot: true,
|
|
@@ -12,153 +12,88 @@ function JsonTree(props) {
|
|
|
12
12
|
},
|
|
13
13
|
get copyable() {
|
|
14
14
|
return props.copyable;
|
|
15
|
+
},
|
|
16
|
+
depth: 0,
|
|
17
|
+
get defaultExpansionDepth() {
|
|
18
|
+
return props.defaultExpansionDepth ?? 1;
|
|
15
19
|
}
|
|
16
20
|
});
|
|
17
21
|
}
|
|
18
|
-
const CopyButton = (props) => {
|
|
19
|
-
const styles = useStyles();
|
|
20
|
-
const [copyState, setCopyState] = createSignal("NoCopy");
|
|
21
|
-
return (() => {
|
|
22
|
-
var _el$ = _tmpl$();
|
|
23
|
-
addEventListener(_el$, "click", copyState() === "NoCopy" ? () => {
|
|
24
|
-
navigator.clipboard.writeText(JSON.stringify(props.value, null, 2)).then(() => {
|
|
25
|
-
setCopyState("SuccessCopy");
|
|
26
|
-
setTimeout(() => {
|
|
27
|
-
setCopyState("NoCopy");
|
|
28
|
-
}, 1500);
|
|
29
|
-
}, (err) => {
|
|
30
|
-
console.error("Failed to copy: ", err);
|
|
31
|
-
setCopyState("ErrorCopy");
|
|
32
|
-
setTimeout(() => {
|
|
33
|
-
setCopyState("NoCopy");
|
|
34
|
-
}, 1500);
|
|
35
|
-
});
|
|
36
|
-
} : void 0, true);
|
|
37
|
-
insert(_el$, createComponent(Switch, {
|
|
38
|
-
get children() {
|
|
39
|
-
return [createComponent(Match, {
|
|
40
|
-
get when() {
|
|
41
|
-
return copyState() === "NoCopy";
|
|
42
|
-
},
|
|
43
|
-
get children() {
|
|
44
|
-
return createComponent(Copier, {});
|
|
45
|
-
}
|
|
46
|
-
}), createComponent(Match, {
|
|
47
|
-
get when() {
|
|
48
|
-
return copyState() === "SuccessCopy";
|
|
49
|
-
},
|
|
50
|
-
get children() {
|
|
51
|
-
return createComponent(CopiedCopier, {
|
|
52
|
-
theme: "dark"
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
}), createComponent(Match, {
|
|
56
|
-
get when() {
|
|
57
|
-
return copyState() === "ErrorCopy";
|
|
58
|
-
},
|
|
59
|
-
get children() {
|
|
60
|
-
return createComponent(ErrorCopier, {});
|
|
61
|
-
}
|
|
62
|
-
})];
|
|
63
|
-
}
|
|
64
|
-
}));
|
|
65
|
-
effect((_p$) => {
|
|
66
|
-
var _v$ = styles().tree.actionButton, _v$2 = `${copyState() === "NoCopy" ? "Copy object to clipboard" : copyState() === "SuccessCopy" ? "Object copied to clipboard" : "Error copying object to clipboard"}`;
|
|
67
|
-
_v$ !== _p$.e && className(_el$, _p$.e = _v$);
|
|
68
|
-
_v$2 !== _p$.t && setAttribute(_el$, "aria-label", _p$.t = _v$2);
|
|
69
|
-
return _p$;
|
|
70
|
-
}, {
|
|
71
|
-
e: void 0,
|
|
72
|
-
t: void 0
|
|
73
|
-
});
|
|
74
|
-
return _el$;
|
|
75
|
-
})();
|
|
76
|
-
};
|
|
77
|
-
const Expander = (props) => {
|
|
78
|
-
const styles = useStyles();
|
|
79
|
-
return (() => {
|
|
80
|
-
var _el$2 = _tmpl$2();
|
|
81
|
-
effect(() => className(_el$2, clsx(styles().tree.expander, css`
|
|
82
|
-
transform: rotate(${props.expanded ? 90 : 0}deg);
|
|
83
|
-
`, props.expanded && css`
|
|
84
|
-
& svg {
|
|
85
|
-
top: -1px;
|
|
86
|
-
}
|
|
87
|
-
`)));
|
|
88
|
-
return _el$2;
|
|
89
|
-
})();
|
|
90
|
-
};
|
|
91
22
|
function JsonValue(props) {
|
|
92
23
|
const {
|
|
93
24
|
value,
|
|
94
25
|
keyName,
|
|
95
26
|
isRoot = false,
|
|
96
27
|
isLastKey,
|
|
97
|
-
copyable
|
|
28
|
+
copyable,
|
|
29
|
+
defaultExpansionDepth,
|
|
30
|
+
depth
|
|
98
31
|
} = props;
|
|
99
32
|
const styles = useStyles();
|
|
100
33
|
return (() => {
|
|
101
|
-
var _el$
|
|
102
|
-
insert(_el
|
|
34
|
+
var _el$ = _tmpl$();
|
|
35
|
+
insert(_el$, (() => {
|
|
103
36
|
var _c$ = memo(() => !!(keyName && typeof value !== "object" && !Array.isArray(value)));
|
|
104
37
|
return () => _c$() && (() => {
|
|
105
|
-
var _el$
|
|
106
|
-
_el$
|
|
107
|
-
insert(_el$
|
|
108
|
-
effect(() => className(_el$
|
|
109
|
-
return _el$
|
|
38
|
+
var _el$2 = _tmpl$2(), _el$3 = _el$2.firstChild, _el$5 = _el$3.nextSibling;
|
|
39
|
+
_el$5.nextSibling;
|
|
40
|
+
insert(_el$2, keyName, _el$5);
|
|
41
|
+
effect(() => className(_el$2, styles().tree.valueKey));
|
|
42
|
+
return _el$2;
|
|
110
43
|
})();
|
|
111
44
|
})(), null);
|
|
112
|
-
insert(_el
|
|
45
|
+
insert(_el$, () => {
|
|
113
46
|
if (typeof value === "string") {
|
|
114
47
|
return (() => {
|
|
115
|
-
var _el$
|
|
116
|
-
_el$
|
|
117
|
-
insert(_el$
|
|
118
|
-
effect(() => className(_el$
|
|
119
|
-
return _el$
|
|
48
|
+
var _el$6 = _tmpl$3(), _el$7 = _el$6.firstChild, _el$9 = _el$7.nextSibling;
|
|
49
|
+
_el$9.nextSibling;
|
|
50
|
+
insert(_el$6, value, _el$9);
|
|
51
|
+
effect(() => className(_el$6, styles().tree.valueString));
|
|
52
|
+
return _el$6;
|
|
120
53
|
})();
|
|
121
54
|
}
|
|
122
55
|
if (typeof value === "number") {
|
|
123
56
|
return (() => {
|
|
124
|
-
var _el$
|
|
125
|
-
insert(_el$
|
|
126
|
-
effect(() => className(_el$
|
|
127
|
-
return _el$
|
|
57
|
+
var _el$0 = _tmpl$();
|
|
58
|
+
insert(_el$0, value);
|
|
59
|
+
effect(() => className(_el$0, styles().tree.valueNumber));
|
|
60
|
+
return _el$0;
|
|
128
61
|
})();
|
|
129
62
|
}
|
|
130
63
|
if (typeof value === "boolean") {
|
|
131
64
|
return (() => {
|
|
132
|
-
var _el$
|
|
133
|
-
insert(_el$
|
|
134
|
-
effect(() => className(_el$
|
|
135
|
-
return _el$
|
|
65
|
+
var _el$1 = _tmpl$();
|
|
66
|
+
insert(_el$1, () => String(value));
|
|
67
|
+
effect(() => className(_el$1, styles().tree.valueBoolean));
|
|
68
|
+
return _el$1;
|
|
136
69
|
})();
|
|
137
70
|
}
|
|
138
71
|
if (value === null) {
|
|
139
72
|
return (() => {
|
|
140
|
-
var _el$
|
|
141
|
-
effect(() => className(_el$
|
|
142
|
-
return _el$
|
|
73
|
+
var _el$10 = _tmpl$4();
|
|
74
|
+
effect(() => className(_el$10, styles().tree.valueNull));
|
|
75
|
+
return _el$10;
|
|
143
76
|
})();
|
|
144
77
|
}
|
|
145
78
|
if (value === void 0) {
|
|
146
79
|
return (() => {
|
|
147
|
-
var _el$
|
|
148
|
-
effect(() => className(_el$
|
|
149
|
-
return _el$
|
|
80
|
+
var _el$11 = _tmpl$5();
|
|
81
|
+
effect(() => className(_el$11, styles().tree.valueNull));
|
|
82
|
+
return _el$11;
|
|
150
83
|
})();
|
|
151
84
|
}
|
|
152
85
|
if (typeof value === "function") {
|
|
153
86
|
return (() => {
|
|
154
|
-
var _el$
|
|
155
|
-
insert(_el$
|
|
156
|
-
effect(() => className(_el$
|
|
157
|
-
return _el$
|
|
87
|
+
var _el$12 = _tmpl$();
|
|
88
|
+
insert(_el$12, () => String(value));
|
|
89
|
+
effect(() => className(_el$12, styles().tree.valueFunction));
|
|
90
|
+
return _el$12;
|
|
158
91
|
})();
|
|
159
92
|
}
|
|
160
93
|
if (Array.isArray(value)) {
|
|
161
94
|
return createComponent(ArrayValue, {
|
|
95
|
+
defaultExpansionDepth,
|
|
96
|
+
depth,
|
|
162
97
|
copyable,
|
|
163
98
|
keyName,
|
|
164
99
|
value
|
|
@@ -166,153 +101,207 @@ function JsonValue(props) {
|
|
|
166
101
|
}
|
|
167
102
|
if (typeof value === "object") {
|
|
168
103
|
return createComponent(ObjectValue, {
|
|
104
|
+
defaultExpansionDepth,
|
|
105
|
+
depth,
|
|
169
106
|
copyable,
|
|
170
107
|
keyName,
|
|
171
108
|
value
|
|
172
109
|
});
|
|
173
110
|
}
|
|
174
|
-
return _tmpl$
|
|
111
|
+
return _tmpl$();
|
|
175
112
|
}, null);
|
|
176
|
-
insert(_el
|
|
177
|
-
var _el$
|
|
178
|
-
insert(_el$
|
|
113
|
+
insert(_el$, copyable && (() => {
|
|
114
|
+
var _el$14 = _tmpl$6();
|
|
115
|
+
insert(_el$14, createComponent(CopyButton, {
|
|
179
116
|
value
|
|
180
117
|
}));
|
|
181
|
-
effect(() => className(_el$
|
|
182
|
-
return _el$
|
|
118
|
+
effect(() => className(_el$14, clsx(styles().tree.actions, "actions")));
|
|
119
|
+
return _el$14;
|
|
183
120
|
})(), null);
|
|
184
|
-
insert(_el
|
|
185
|
-
effect(() => className(_el
|
|
186
|
-
return _el
|
|
121
|
+
insert(_el$, isLastKey || isRoot ? "" : _tmpl$7(), null);
|
|
122
|
+
effect(() => className(_el$, styles().tree.valueContainer(isRoot)));
|
|
123
|
+
return _el$;
|
|
187
124
|
})();
|
|
188
125
|
}
|
|
189
126
|
const ArrayValue = ({
|
|
190
127
|
value,
|
|
191
128
|
keyName,
|
|
192
|
-
copyable
|
|
129
|
+
copyable,
|
|
130
|
+
defaultExpansionDepth,
|
|
131
|
+
depth
|
|
193
132
|
}) => {
|
|
194
133
|
const styles = useStyles();
|
|
195
|
-
const [expanded, setExpanded] = createSignal(
|
|
134
|
+
const [expanded, setExpanded] = createSignal(depth <= defaultExpansionDepth);
|
|
135
|
+
if (value.length === 0) {
|
|
136
|
+
return (() => {
|
|
137
|
+
var _el$16 = _tmpl$8(), _el$17 = _el$16.firstChild;
|
|
138
|
+
insert(_el$16, keyName && (() => {
|
|
139
|
+
var _el$18 = _tmpl$2(), _el$19 = _el$18.firstChild, _el$21 = _el$19.nextSibling;
|
|
140
|
+
_el$21.nextSibling;
|
|
141
|
+
insert(_el$18, keyName, _el$21);
|
|
142
|
+
effect(() => className(_el$18, clsx(styles().tree.valueKey, styles().tree.collapsible)));
|
|
143
|
+
return _el$18;
|
|
144
|
+
})(), _el$17);
|
|
145
|
+
effect((_p$) => {
|
|
146
|
+
var _v$ = styles().tree.expanderContainer, _v$2 = styles().tree.valueBraces;
|
|
147
|
+
_v$ !== _p$.e && className(_el$16, _p$.e = _v$);
|
|
148
|
+
_v$2 !== _p$.t && className(_el$17, _p$.t = _v$2);
|
|
149
|
+
return _p$;
|
|
150
|
+
}, {
|
|
151
|
+
e: void 0,
|
|
152
|
+
t: void 0
|
|
153
|
+
});
|
|
154
|
+
return _el$16;
|
|
155
|
+
})();
|
|
156
|
+
}
|
|
196
157
|
return (() => {
|
|
197
|
-
var _el$
|
|
198
|
-
insert(_el$
|
|
158
|
+
var _el$22 = _tmpl$0(), _el$23 = _el$22.firstChild, _el$26 = _el$23.nextSibling;
|
|
159
|
+
insert(_el$22, createComponent(Expander, {
|
|
160
|
+
onClick: () => setExpanded(!expanded()),
|
|
199
161
|
get expanded() {
|
|
200
162
|
return expanded();
|
|
201
163
|
}
|
|
202
|
-
}), _el$
|
|
203
|
-
insert(_el$
|
|
204
|
-
var _el$
|
|
205
|
-
_el$
|
|
164
|
+
}), _el$23);
|
|
165
|
+
insert(_el$22, keyName && (() => {
|
|
166
|
+
var _el$27 = _tmpl$1(), _el$28 = _el$27.firstChild, _el$33 = _el$28.nextSibling, _el$29 = _el$33.nextSibling, _el$31 = _el$29.nextSibling, _el$32 = _el$31.firstChild;
|
|
167
|
+
_el$27.$$click = (e) => {
|
|
206
168
|
e.stopPropagation();
|
|
207
169
|
e.stopImmediatePropagation();
|
|
208
170
|
setExpanded(!expanded());
|
|
209
171
|
};
|
|
210
|
-
insert(_el$
|
|
211
|
-
insert(_el$
|
|
172
|
+
insert(_el$27, keyName, _el$33);
|
|
173
|
+
insert(_el$31, () => value.length, _el$32);
|
|
212
174
|
effect((_p$) => {
|
|
213
175
|
var _v$6 = clsx(styles().tree.valueKey, styles().tree.collapsible), _v$7 = styles().tree.info;
|
|
214
|
-
_v$6 !== _p$.e && className(_el$
|
|
215
|
-
_v$7 !== _p$.t && className(_el$
|
|
176
|
+
_v$6 !== _p$.e && className(_el$27, _p$.e = _v$6);
|
|
177
|
+
_v$7 !== _p$.t && className(_el$31, _p$.t = _v$7);
|
|
216
178
|
return _p$;
|
|
217
179
|
}, {
|
|
218
180
|
e: void 0,
|
|
219
181
|
t: void 0
|
|
220
182
|
});
|
|
221
|
-
return _el$
|
|
222
|
-
})(), _el$
|
|
223
|
-
insert(_el$
|
|
183
|
+
return _el$27;
|
|
184
|
+
})(), _el$23);
|
|
185
|
+
insert(_el$22, createComponent(Show, {
|
|
224
186
|
get when() {
|
|
225
187
|
return expanded();
|
|
226
188
|
},
|
|
227
189
|
get children() {
|
|
228
|
-
var _el$
|
|
229
|
-
insert(_el$
|
|
190
|
+
var _el$24 = _tmpl$();
|
|
191
|
+
insert(_el$24, createComponent(For, {
|
|
230
192
|
each: value,
|
|
231
193
|
children: (item, i) => {
|
|
232
194
|
const isLastKey = i() === value.length - 1;
|
|
233
195
|
return createComponent(JsonValue, {
|
|
234
196
|
copyable,
|
|
235
197
|
value: item,
|
|
236
|
-
isLastKey
|
|
198
|
+
isLastKey,
|
|
199
|
+
defaultExpansionDepth,
|
|
200
|
+
depth: depth + 1
|
|
237
201
|
});
|
|
238
202
|
}
|
|
239
203
|
}));
|
|
240
|
-
effect(() => className(_el$
|
|
241
|
-
return _el$
|
|
204
|
+
effect(() => className(_el$24, styles().tree.expandedLine(Boolean(keyName))));
|
|
205
|
+
return _el$24;
|
|
242
206
|
}
|
|
243
|
-
}), _el$
|
|
244
|
-
insert(_el$
|
|
207
|
+
}), _el$26);
|
|
208
|
+
insert(_el$22, createComponent(Show, {
|
|
245
209
|
get when() {
|
|
246
210
|
return !expanded();
|
|
247
211
|
},
|
|
248
212
|
get children() {
|
|
249
|
-
var _el$
|
|
250
|
-
_el$
|
|
213
|
+
var _el$25 = _tmpl$9();
|
|
214
|
+
_el$25.$$click = (e) => {
|
|
251
215
|
e.stopPropagation();
|
|
252
216
|
e.stopImmediatePropagation();
|
|
253
217
|
setExpanded(!expanded());
|
|
254
218
|
};
|
|
255
|
-
effect(() => className(_el$
|
|
256
|
-
return _el$
|
|
219
|
+
effect(() => className(_el$25, clsx(styles().tree.valueKey, styles().tree.collapsible)));
|
|
220
|
+
return _el$25;
|
|
257
221
|
}
|
|
258
|
-
}), _el$
|
|
222
|
+
}), _el$26);
|
|
259
223
|
effect((_p$) => {
|
|
260
224
|
var _v$3 = styles().tree.expanderContainer, _v$4 = styles().tree.valueBraces, _v$5 = styles().tree.valueBraces;
|
|
261
|
-
_v$3 !== _p$.e && className(_el$
|
|
262
|
-
_v$4 !== _p$.t && className(_el$
|
|
263
|
-
_v$5 !== _p$.a && className(_el$
|
|
225
|
+
_v$3 !== _p$.e && className(_el$22, _p$.e = _v$3);
|
|
226
|
+
_v$4 !== _p$.t && className(_el$23, _p$.t = _v$4);
|
|
227
|
+
_v$5 !== _p$.a && className(_el$26, _p$.a = _v$5);
|
|
264
228
|
return _p$;
|
|
265
229
|
}, {
|
|
266
230
|
e: void 0,
|
|
267
231
|
t: void 0,
|
|
268
232
|
a: void 0
|
|
269
233
|
});
|
|
270
|
-
return _el$
|
|
234
|
+
return _el$22;
|
|
271
235
|
})();
|
|
272
236
|
};
|
|
273
237
|
const ObjectValue = ({
|
|
274
238
|
value,
|
|
275
239
|
keyName,
|
|
276
|
-
copyable
|
|
240
|
+
copyable,
|
|
241
|
+
defaultExpansionDepth,
|
|
242
|
+
depth
|
|
277
243
|
}) => {
|
|
278
244
|
const styles = useStyles();
|
|
279
|
-
const [expanded, setExpanded] = createSignal(
|
|
245
|
+
const [expanded, setExpanded] = createSignal(depth <= defaultExpansionDepth);
|
|
280
246
|
const keys = Object.keys(value);
|
|
281
247
|
const lastKeyName = keys[keys.length - 1];
|
|
248
|
+
if (keys.length === 0) {
|
|
249
|
+
return (() => {
|
|
250
|
+
var _el$34 = _tmpl$10(), _el$35 = _el$34.firstChild;
|
|
251
|
+
insert(_el$34, keyName && (() => {
|
|
252
|
+
var _el$36 = _tmpl$2(), _el$37 = _el$36.firstChild, _el$39 = _el$37.nextSibling;
|
|
253
|
+
_el$39.nextSibling;
|
|
254
|
+
insert(_el$36, keyName, _el$39);
|
|
255
|
+
effect(() => className(_el$36, clsx(styles().tree.valueKey, styles().tree.collapsible)));
|
|
256
|
+
return _el$36;
|
|
257
|
+
})(), _el$35);
|
|
258
|
+
effect((_p$) => {
|
|
259
|
+
var _v$8 = styles().tree.expanderContainer, _v$9 = styles().tree.valueBraces;
|
|
260
|
+
_v$8 !== _p$.e && className(_el$34, _p$.e = _v$8);
|
|
261
|
+
_v$9 !== _p$.t && className(_el$35, _p$.t = _v$9);
|
|
262
|
+
return _p$;
|
|
263
|
+
}, {
|
|
264
|
+
e: void 0,
|
|
265
|
+
t: void 0
|
|
266
|
+
});
|
|
267
|
+
return _el$34;
|
|
268
|
+
})();
|
|
269
|
+
}
|
|
282
270
|
return (() => {
|
|
283
|
-
var _el$
|
|
284
|
-
insert(_el$
|
|
271
|
+
var _el$40 = _tmpl$11(), _el$41 = _el$40.firstChild, _el$44 = _el$41.nextSibling;
|
|
272
|
+
insert(_el$40, keyName && createComponent(Expander, {
|
|
273
|
+
onClick: () => setExpanded(!expanded()),
|
|
285
274
|
get expanded() {
|
|
286
275
|
return expanded();
|
|
287
276
|
}
|
|
288
|
-
}), _el$
|
|
289
|
-
insert(_el$
|
|
290
|
-
var _el$
|
|
291
|
-
_el$
|
|
277
|
+
}), _el$41);
|
|
278
|
+
insert(_el$40, keyName && (() => {
|
|
279
|
+
var _el$45 = _tmpl$1(), _el$46 = _el$45.firstChild, _el$51 = _el$46.nextSibling, _el$47 = _el$51.nextSibling, _el$49 = _el$47.nextSibling, _el$50 = _el$49.firstChild;
|
|
280
|
+
_el$45.$$click = (e) => {
|
|
292
281
|
e.stopPropagation();
|
|
293
282
|
e.stopImmediatePropagation();
|
|
294
283
|
setExpanded(!expanded());
|
|
295
284
|
};
|
|
296
|
-
insert(_el$
|
|
297
|
-
insert(_el$
|
|
285
|
+
insert(_el$45, keyName, _el$51);
|
|
286
|
+
insert(_el$49, () => keys.length, _el$50);
|
|
298
287
|
effect((_p$) => {
|
|
299
|
-
var _v$
|
|
300
|
-
_v$
|
|
301
|
-
_v$
|
|
288
|
+
var _v$11 = clsx(styles().tree.valueKey, styles().tree.collapsible), _v$12 = styles().tree.info;
|
|
289
|
+
_v$11 !== _p$.e && className(_el$45, _p$.e = _v$11);
|
|
290
|
+
_v$12 !== _p$.t && className(_el$49, _p$.t = _v$12);
|
|
302
291
|
return _p$;
|
|
303
292
|
}, {
|
|
304
293
|
e: void 0,
|
|
305
294
|
t: void 0
|
|
306
295
|
});
|
|
307
|
-
return _el$
|
|
308
|
-
})(), _el$
|
|
309
|
-
insert(_el$
|
|
296
|
+
return _el$45;
|
|
297
|
+
})(), _el$41);
|
|
298
|
+
insert(_el$40, createComponent(Show, {
|
|
310
299
|
get when() {
|
|
311
300
|
return expanded();
|
|
312
301
|
},
|
|
313
302
|
get children() {
|
|
314
|
-
var _el$
|
|
315
|
-
insert(_el$
|
|
303
|
+
var _el$42 = _tmpl$();
|
|
304
|
+
insert(_el$42, createComponent(For, {
|
|
316
305
|
each: keys,
|
|
317
306
|
children: (k) => createComponent(JsonValue, {
|
|
318
307
|
get value() {
|
|
@@ -320,40 +309,116 @@ const ObjectValue = ({
|
|
|
320
309
|
},
|
|
321
310
|
keyName: k,
|
|
322
311
|
isLastKey: lastKeyName === k,
|
|
323
|
-
copyable
|
|
312
|
+
copyable,
|
|
313
|
+
defaultExpansionDepth,
|
|
314
|
+
depth: depth + 1
|
|
324
315
|
})
|
|
325
316
|
}));
|
|
326
|
-
effect(() => className(_el$
|
|
327
|
-
return _el$
|
|
317
|
+
effect(() => className(_el$42, styles().tree.expandedLine(Boolean(keyName))));
|
|
318
|
+
return _el$42;
|
|
328
319
|
}
|
|
329
|
-
}), _el$
|
|
330
|
-
insert(_el$
|
|
320
|
+
}), _el$44);
|
|
321
|
+
insert(_el$40, createComponent(Show, {
|
|
331
322
|
get when() {
|
|
332
323
|
return !expanded();
|
|
333
324
|
},
|
|
334
325
|
get children() {
|
|
335
|
-
var _el$
|
|
336
|
-
_el$
|
|
326
|
+
var _el$43 = _tmpl$9();
|
|
327
|
+
_el$43.$$click = (e) => {
|
|
337
328
|
e.stopPropagation();
|
|
338
329
|
e.stopImmediatePropagation();
|
|
339
330
|
setExpanded(!expanded());
|
|
340
331
|
};
|
|
341
|
-
effect(() => className(_el$
|
|
342
|
-
return _el$
|
|
332
|
+
effect(() => className(_el$43, clsx(styles().tree.valueKey, styles().tree.collapsible)));
|
|
333
|
+
return _el$43;
|
|
343
334
|
}
|
|
344
|
-
}), _el$
|
|
335
|
+
}), _el$44);
|
|
345
336
|
effect((_p$) => {
|
|
346
|
-
var _v$
|
|
347
|
-
_v$
|
|
348
|
-
_v$
|
|
349
|
-
_v$
|
|
337
|
+
var _v$0 = styles().tree.expanderContainer, _v$1 = styles().tree.valueBraces, _v$10 = styles().tree.valueBraces;
|
|
338
|
+
_v$0 !== _p$.e && className(_el$40, _p$.e = _v$0);
|
|
339
|
+
_v$1 !== _p$.t && className(_el$41, _p$.t = _v$1);
|
|
340
|
+
_v$10 !== _p$.a && className(_el$44, _p$.a = _v$10);
|
|
350
341
|
return _p$;
|
|
351
342
|
}, {
|
|
352
343
|
e: void 0,
|
|
353
344
|
t: void 0,
|
|
354
345
|
a: void 0
|
|
355
346
|
});
|
|
356
|
-
return _el$
|
|
347
|
+
return _el$40;
|
|
348
|
+
})();
|
|
349
|
+
};
|
|
350
|
+
const CopyButton = (props) => {
|
|
351
|
+
const styles = useStyles();
|
|
352
|
+
const [copyState, setCopyState] = createSignal("NoCopy");
|
|
353
|
+
return (() => {
|
|
354
|
+
var _el$52 = _tmpl$12();
|
|
355
|
+
addEventListener(_el$52, "click", copyState() === "NoCopy" ? () => {
|
|
356
|
+
navigator.clipboard.writeText(JSON.stringify(props.value, null, 2)).then(() => {
|
|
357
|
+
setCopyState("SuccessCopy");
|
|
358
|
+
setTimeout(() => {
|
|
359
|
+
setCopyState("NoCopy");
|
|
360
|
+
}, 1500);
|
|
361
|
+
}, (err) => {
|
|
362
|
+
console.error("Failed to copy: ", err);
|
|
363
|
+
setCopyState("ErrorCopy");
|
|
364
|
+
setTimeout(() => {
|
|
365
|
+
setCopyState("NoCopy");
|
|
366
|
+
}, 1500);
|
|
367
|
+
});
|
|
368
|
+
} : void 0, true);
|
|
369
|
+
insert(_el$52, createComponent(Switch, {
|
|
370
|
+
get children() {
|
|
371
|
+
return [createComponent(Match, {
|
|
372
|
+
get when() {
|
|
373
|
+
return copyState() === "NoCopy";
|
|
374
|
+
},
|
|
375
|
+
get children() {
|
|
376
|
+
return createComponent(Copier, {});
|
|
377
|
+
}
|
|
378
|
+
}), createComponent(Match, {
|
|
379
|
+
get when() {
|
|
380
|
+
return copyState() === "SuccessCopy";
|
|
381
|
+
},
|
|
382
|
+
get children() {
|
|
383
|
+
return createComponent(CopiedCopier, {
|
|
384
|
+
theme: "dark"
|
|
385
|
+
});
|
|
386
|
+
}
|
|
387
|
+
}), createComponent(Match, {
|
|
388
|
+
get when() {
|
|
389
|
+
return copyState() === "ErrorCopy";
|
|
390
|
+
},
|
|
391
|
+
get children() {
|
|
392
|
+
return createComponent(ErrorCopier, {});
|
|
393
|
+
}
|
|
394
|
+
})];
|
|
395
|
+
}
|
|
396
|
+
}));
|
|
397
|
+
effect((_p$) => {
|
|
398
|
+
var _v$13 = styles().tree.actionButton, _v$14 = `${copyState() === "NoCopy" ? "Copy object to clipboard" : copyState() === "SuccessCopy" ? "Object copied to clipboard" : "Error copying object to clipboard"}`;
|
|
399
|
+
_v$13 !== _p$.e && className(_el$52, _p$.e = _v$13);
|
|
400
|
+
_v$14 !== _p$.t && setAttribute(_el$52, "aria-label", _p$.t = _v$14);
|
|
401
|
+
return _p$;
|
|
402
|
+
}, {
|
|
403
|
+
e: void 0,
|
|
404
|
+
t: void 0
|
|
405
|
+
});
|
|
406
|
+
return _el$52;
|
|
407
|
+
})();
|
|
408
|
+
};
|
|
409
|
+
const Expander = (props) => {
|
|
410
|
+
const styles = useStyles();
|
|
411
|
+
return (() => {
|
|
412
|
+
var _el$53 = _tmpl$13();
|
|
413
|
+
addEventListener(_el$53, "click", props.onClick, true);
|
|
414
|
+
effect(() => className(_el$53, clsx(styles().tree.expander, css`
|
|
415
|
+
transform: rotate(${props.expanded ? 90 : 0}deg);
|
|
416
|
+
`, props.expanded && css`
|
|
417
|
+
& svg {
|
|
418
|
+
top: -1px;
|
|
419
|
+
}
|
|
420
|
+
`)));
|
|
421
|
+
return _el$53;
|
|
357
422
|
})();
|
|
358
423
|
};
|
|
359
424
|
delegateEvents(["click"]);
|