@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.
@@ -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(`<button title="Copy object to clipboard">`), _tmpl$2 = /* @__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>`), _tmpl$3 = /* @__PURE__ */ template(`<span>`), _tmpl$4 = /* @__PURE__ */ template(`<span>&quot;<!>&quot;: `), _tmpl$5 = /* @__PURE__ */ template(`<span>&quot;<!>&quot;`), _tmpl$6 = /* @__PURE__ */ template(`<span>null`), _tmpl$7 = /* @__PURE__ */ template(`<span>undefined`), _tmpl$8 = /* @__PURE__ */ template(`<div>`), _tmpl$9 = /* @__PURE__ */ template(`<span>,`), _tmpl$0 = /* @__PURE__ */ template(`<span>...`), _tmpl$1 = /* @__PURE__ */ template(`<span><span>[</span><span>]`), _tmpl$10 = /* @__PURE__ */ template(`<span>&quot;<!>&quot;: <span> items`), _tmpl$11 = /* @__PURE__ */ template(`<span><span>{</span><span>}`);
6
+ var _tmpl$ = /* @__PURE__ */ template(`<span>`), _tmpl$2 = /* @__PURE__ */ template(`<span>&quot;<!>&quot;: `), _tmpl$3 = /* @__PURE__ */ template(`<span>&quot;<!>&quot;`), _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>&quot;<!>&quot;: <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$3 = _tmpl$3();
102
- insert(_el$3, (() => {
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$4 = _tmpl$4(), _el$5 = _el$4.firstChild, _el$7 = _el$5.nextSibling;
106
- _el$7.nextSibling;
107
- insert(_el$4, keyName, _el$7);
108
- effect(() => className(_el$4, styles().tree.valueKey));
109
- return _el$4;
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$3, () => {
45
+ insert(_el$, () => {
113
46
  if (typeof value === "string") {
114
47
  return (() => {
115
- var _el$8 = _tmpl$5(), _el$9 = _el$8.firstChild, _el$1 = _el$9.nextSibling;
116
- _el$1.nextSibling;
117
- insert(_el$8, value, _el$1);
118
- effect(() => className(_el$8, styles().tree.valueString));
119
- return _el$8;
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$10 = _tmpl$3();
125
- insert(_el$10, value);
126
- effect(() => className(_el$10, styles().tree.valueNumber));
127
- return _el$10;
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$11 = _tmpl$3();
133
- insert(_el$11, () => String(value));
134
- effect(() => className(_el$11, styles().tree.valueBoolean));
135
- return _el$11;
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$12 = _tmpl$6();
141
- effect(() => className(_el$12, styles().tree.valueNull));
142
- return _el$12;
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$13 = _tmpl$7();
148
- effect(() => className(_el$13, styles().tree.valueNull));
149
- return _el$13;
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$14 = _tmpl$3();
155
- insert(_el$14, () => String(value));
156
- effect(() => className(_el$14, styles().tree.valueFunction));
157
- return _el$14;
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$3();
111
+ return _tmpl$();
175
112
  }, null);
176
- insert(_el$3, copyable && (() => {
177
- var _el$16 = _tmpl$8();
178
- insert(_el$16, createComponent(CopyButton, {
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$16, clsx(styles().tree.actions, "actions")));
182
- return _el$16;
118
+ effect(() => className(_el$14, clsx(styles().tree.actions, "actions")));
119
+ return _el$14;
183
120
  })(), null);
184
- insert(_el$3, isLastKey || isRoot ? "" : _tmpl$9(), null);
185
- effect(() => className(_el$3, styles().tree.valueContainer(isRoot)));
186
- return _el$3;
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(true);
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$18 = _tmpl$1(), _el$19 = _el$18.firstChild, _el$22 = _el$19.nextSibling;
198
- insert(_el$18, createComponent(Expander, {
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$19);
203
- insert(_el$18, keyName && (() => {
204
- var _el$23 = _tmpl$10(), _el$24 = _el$23.firstChild, _el$29 = _el$24.nextSibling, _el$25 = _el$29.nextSibling, _el$27 = _el$25.nextSibling, _el$28 = _el$27.firstChild;
205
- _el$23.$$click = (e) => {
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$23, keyName, _el$29);
211
- insert(_el$27, () => value.length, _el$28);
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$23, _p$.e = _v$6);
215
- _v$7 !== _p$.t && className(_el$27, _p$.t = _v$7);
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$23;
222
- })(), _el$19);
223
- insert(_el$18, createComponent(Show, {
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$20 = _tmpl$3();
229
- insert(_el$20, createComponent(For, {
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$20, styles().tree.expandedLine(Boolean(keyName))));
241
- return _el$20;
204
+ effect(() => className(_el$24, styles().tree.expandedLine(Boolean(keyName))));
205
+ return _el$24;
242
206
  }
243
- }), _el$22);
244
- insert(_el$18, createComponent(Show, {
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$21 = _tmpl$0();
250
- _el$21.$$click = (e) => {
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$21, clsx(styles().tree.valueKey, styles().tree.collapsible)));
256
- return _el$21;
219
+ effect(() => className(_el$25, clsx(styles().tree.valueKey, styles().tree.collapsible)));
220
+ return _el$25;
257
221
  }
258
- }), _el$22);
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$18, _p$.e = _v$3);
262
- _v$4 !== _p$.t && className(_el$19, _p$.t = _v$4);
263
- _v$5 !== _p$.a && className(_el$22, _p$.a = _v$5);
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$18;
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(true);
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$30 = _tmpl$11(), _el$31 = _el$30.firstChild, _el$34 = _el$31.nextSibling;
284
- insert(_el$30, keyName && createComponent(Expander, {
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$31);
289
- insert(_el$30, keyName && (() => {
290
- var _el$35 = _tmpl$10(), _el$36 = _el$35.firstChild, _el$41 = _el$36.nextSibling, _el$37 = _el$41.nextSibling, _el$39 = _el$37.nextSibling, _el$40 = _el$39.firstChild;
291
- _el$35.$$click = (e) => {
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$35, keyName, _el$41);
297
- insert(_el$39, () => keys.length, _el$40);
285
+ insert(_el$45, keyName, _el$51);
286
+ insert(_el$49, () => keys.length, _el$50);
298
287
  effect((_p$) => {
299
- var _v$1 = clsx(styles().tree.valueKey, styles().tree.collapsible), _v$10 = styles().tree.info;
300
- _v$1 !== _p$.e && className(_el$35, _p$.e = _v$1);
301
- _v$10 !== _p$.t && className(_el$39, _p$.t = _v$10);
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$35;
308
- })(), _el$31);
309
- insert(_el$30, createComponent(Show, {
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$32 = _tmpl$3();
315
- insert(_el$32, createComponent(For, {
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$32, styles().tree.expandedLine(Boolean(keyName))));
327
- return _el$32;
317
+ effect(() => className(_el$42, styles().tree.expandedLine(Boolean(keyName))));
318
+ return _el$42;
328
319
  }
329
- }), _el$34);
330
- insert(_el$30, createComponent(Show, {
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$33 = _tmpl$0();
336
- _el$33.$$click = (e) => {
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$33, clsx(styles().tree.valueKey, styles().tree.collapsible)));
342
- return _el$33;
332
+ effect(() => className(_el$43, clsx(styles().tree.valueKey, styles().tree.collapsible)));
333
+ return _el$43;
343
334
  }
344
- }), _el$34);
335
+ }), _el$44);
345
336
  effect((_p$) => {
346
- var _v$8 = styles().tree.expanderContainer, _v$9 = styles().tree.valueBraces, _v$0 = styles().tree.valueBraces;
347
- _v$8 !== _p$.e && className(_el$30, _p$.e = _v$8);
348
- _v$9 !== _p$.t && className(_el$31, _p$.t = _v$9);
349
- _v$0 !== _p$.a && className(_el$34, _p$.a = _v$0);
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$30;
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"]);