sidakram-bippy 0.2.24

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.
@@ -0,0 +1,1721 @@
1
+ import '../chunk-XX7FLNAQ.js';
2
+ import { __spreadValues, __spreadProps, __objRest, getFiberFromHostInstance, getNearestHostFiber, traverseFiber, getFiberStack, getDisplayName, getFiberId, isInstrumentationActive, hasRDTHook, getRDTHook, detectReactBuildType } from '../chunk-7ROEST76.js';
3
+ import React17, { createContext, memo, Children, useContext, useCallback, useState, useLayoutEffect, useEffect, useMemo } from 'react';
4
+ import ReactDOM from 'react-dom';
5
+
6
+ /**
7
+ * @license bippy
8
+ *
9
+ * Copyright (c) Aiden Bai, Million Software, Inc.
10
+ *
11
+ * This source code is licensed under the MIT license found in the
12
+ * LICENSE file in the root directory of this source tree.
13
+ */
14
+ var __create = Object.create;
15
+ var __defProp = Object.defineProperty;
16
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
17
+ var __getOwnPropNames = Object.getOwnPropertyNames;
18
+ var __getProtoOf = Object.getPrototypeOf;
19
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
20
+ var __commonJS = (cb, mod) => function __require() {
21
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
22
+ };
23
+ var __export = (target, all) => {
24
+ for (var name in all)
25
+ __defProp(target, name, { get: all[name], enumerable: true });
26
+ };
27
+ var __copyProps = (to, from, except, desc) => {
28
+ if (from && typeof from === "object" || typeof from === "function") {
29
+ for (let key of __getOwnPropNames(from))
30
+ if (!__hasOwnProp.call(to, key) && key !== except)
31
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
32
+ }
33
+ return to;
34
+ };
35
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(!mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
36
+ var require_is_object = __commonJS({
37
+ "node_modules/is-object/index.js"(exports, module) {
38
+ module.exports = function isObject(x) {
39
+ return typeof x === "object" && x !== null;
40
+ };
41
+ }
42
+ });
43
+ var require_is_window = __commonJS({
44
+ "node_modules/is-window/index.js"(exports, module) {
45
+ module.exports = function(obj) {
46
+ if (obj == null) {
47
+ return false;
48
+ }
49
+ var o = Object(obj);
50
+ return o === o.window;
51
+ };
52
+ }
53
+ });
54
+ var require_is_dom = __commonJS({
55
+ "node_modules/is-dom/index.js"(exports, module) {
56
+ var isObject = require_is_object();
57
+ var isWindow = require_is_window();
58
+ function isNode(val) {
59
+ if (!isObject(val) || !isWindow(window) || typeof window.Node !== "function") {
60
+ return false;
61
+ }
62
+ return typeof val.nodeType === "number" && typeof val.nodeName === "string";
63
+ }
64
+ module.exports = isNode;
65
+ }
66
+ });
67
+ var themes_exports = {};
68
+ __export(themes_exports, {
69
+ chromeDark: () => theme,
70
+ chromeLight: () => theme2
71
+ });
72
+ var theme = {
73
+ BASE_FONT_FAMILY: "Menlo, monospace",
74
+ BASE_FONT_SIZE: "11px",
75
+ BASE_LINE_HEIGHT: 1.2,
76
+ BASE_BACKGROUND_COLOR: "rgb(36, 36, 36)",
77
+ BASE_COLOR: "rgb(213, 213, 213)",
78
+ OBJECT_PREVIEW_ARRAY_MAX_PROPERTIES: 10,
79
+ OBJECT_PREVIEW_OBJECT_MAX_PROPERTIES: 5,
80
+ OBJECT_NAME_COLOR: "rgb(227, 110, 236)",
81
+ OBJECT_VALUE_NULL_COLOR: "rgb(127, 127, 127)",
82
+ OBJECT_VALUE_UNDEFINED_COLOR: "rgb(127, 127, 127)",
83
+ OBJECT_VALUE_REGEXP_COLOR: "rgb(233, 63, 59)",
84
+ OBJECT_VALUE_STRING_COLOR: "rgb(233, 63, 59)",
85
+ OBJECT_VALUE_SYMBOL_COLOR: "rgb(233, 63, 59)",
86
+ OBJECT_VALUE_NUMBER_COLOR: "hsl(252, 100%, 75%)",
87
+ OBJECT_VALUE_BOOLEAN_COLOR: "hsl(252, 100%, 75%)",
88
+ OBJECT_VALUE_FUNCTION_PREFIX_COLOR: "rgb(85, 106, 242)",
89
+ HTML_TAG_COLOR: "rgb(93, 176, 215)",
90
+ HTML_TAGNAME_COLOR: "rgb(93, 176, 215)",
91
+ HTML_TAGNAME_TEXT_TRANSFORM: "lowercase",
92
+ HTML_ATTRIBUTE_NAME_COLOR: "rgb(155, 187, 220)",
93
+ HTML_ATTRIBUTE_VALUE_COLOR: "rgb(242, 151, 102)",
94
+ HTML_COMMENT_COLOR: "rgb(137, 137, 137)",
95
+ HTML_DOCTYPE_COLOR: "rgb(192, 192, 192)",
96
+ ARROW_COLOR: "rgb(145, 145, 145)",
97
+ ARROW_MARGIN_RIGHT: 3,
98
+ ARROW_FONT_SIZE: 12,
99
+ ARROW_ANIMATION_DURATION: "0",
100
+ TREENODE_FONT_FAMILY: "Menlo, monospace",
101
+ TREENODE_FONT_SIZE: "11px",
102
+ TREENODE_LINE_HEIGHT: 1.2,
103
+ TREENODE_PADDING_LEFT: 12,
104
+ TABLE_BORDER_COLOR: "rgb(85, 85, 85)",
105
+ TABLE_TH_BACKGROUND_COLOR: "rgb(44, 44, 44)",
106
+ TABLE_TH_HOVER_COLOR: "rgb(48, 48, 48)",
107
+ TABLE_SORT_ICON_COLOR: "black",
108
+ TABLE_DATA_BACKGROUND_IMAGE: "linear-gradient(rgba(255, 255, 255, 0), rgba(255, 255, 255, 0) 50%, rgba(51, 139, 255, 0.0980392) 50%, rgba(51, 139, 255, 0.0980392))",
109
+ TABLE_DATA_BACKGROUND_SIZE: "128px 32px"
110
+ };
111
+ var theme2 = {
112
+ BASE_FONT_FAMILY: "Menlo, monospace",
113
+ BASE_FONT_SIZE: "11px",
114
+ BASE_LINE_HEIGHT: 1.2,
115
+ BASE_BACKGROUND_COLOR: "white",
116
+ BASE_COLOR: "black",
117
+ OBJECT_PREVIEW_ARRAY_MAX_PROPERTIES: 10,
118
+ OBJECT_PREVIEW_OBJECT_MAX_PROPERTIES: 5,
119
+ OBJECT_NAME_COLOR: "rgb(136, 19, 145)",
120
+ OBJECT_VALUE_NULL_COLOR: "rgb(128, 128, 128)",
121
+ OBJECT_VALUE_UNDEFINED_COLOR: "rgb(128, 128, 128)",
122
+ OBJECT_VALUE_REGEXP_COLOR: "rgb(196, 26, 22)",
123
+ OBJECT_VALUE_STRING_COLOR: "rgb(196, 26, 22)",
124
+ OBJECT_VALUE_SYMBOL_COLOR: "rgb(196, 26, 22)",
125
+ OBJECT_VALUE_NUMBER_COLOR: "rgb(28, 0, 207)",
126
+ OBJECT_VALUE_BOOLEAN_COLOR: "rgb(28, 0, 207)",
127
+ OBJECT_VALUE_FUNCTION_PREFIX_COLOR: "rgb(13, 34, 170)",
128
+ HTML_TAG_COLOR: "rgb(168, 148, 166)",
129
+ HTML_TAGNAME_COLOR: "rgb(136, 18, 128)",
130
+ HTML_TAGNAME_TEXT_TRANSFORM: "lowercase",
131
+ HTML_ATTRIBUTE_NAME_COLOR: "rgb(153, 69, 0)",
132
+ HTML_ATTRIBUTE_VALUE_COLOR: "rgb(26, 26, 166)",
133
+ HTML_COMMENT_COLOR: "rgb(35, 110, 37)",
134
+ HTML_DOCTYPE_COLOR: "rgb(192, 192, 192)",
135
+ ARROW_COLOR: "#6e6e6e",
136
+ ARROW_MARGIN_RIGHT: 3,
137
+ ARROW_FONT_SIZE: 12,
138
+ ARROW_ANIMATION_DURATION: "0",
139
+ TREENODE_FONT_FAMILY: "Menlo, monospace",
140
+ TREENODE_FONT_SIZE: "11px",
141
+ TREENODE_LINE_HEIGHT: 1.2,
142
+ TREENODE_PADDING_LEFT: 12,
143
+ TABLE_BORDER_COLOR: "#aaa",
144
+ TABLE_TH_BACKGROUND_COLOR: "#eee",
145
+ TABLE_TH_HOVER_COLOR: "hsla(0, 0%, 90%, 1)",
146
+ TABLE_SORT_ICON_COLOR: "#6e6e6e",
147
+ TABLE_DATA_BACKGROUND_IMAGE: "linear-gradient(to bottom, white, white 50%, rgb(234, 243, 255) 50%, rgb(234, 243, 255))",
148
+ TABLE_DATA_BACKGROUND_SIZE: "128px 32px"
149
+ };
150
+ var ExpandedPathsContext = createContext([{}, () => {
151
+ }]);
152
+ var unselectable = {
153
+ WebkitTouchCallout: "none",
154
+ WebkitUserSelect: "none",
155
+ KhtmlUserSelect: "none",
156
+ MozUserSelect: "none",
157
+ msUserSelect: "none",
158
+ OUserSelect: "none",
159
+ userSelect: "none"
160
+ };
161
+ var createTheme = (theme32) => ({
162
+ DOMNodePreview: {
163
+ htmlOpenTag: {
164
+ base: {
165
+ color: theme32.HTML_TAG_COLOR
166
+ },
167
+ tagName: {
168
+ color: theme32.HTML_TAGNAME_COLOR,
169
+ textTransform: theme32.HTML_TAGNAME_TEXT_TRANSFORM
170
+ },
171
+ htmlAttributeName: {
172
+ color: theme32.HTML_ATTRIBUTE_NAME_COLOR
173
+ },
174
+ htmlAttributeValue: {
175
+ color: theme32.HTML_ATTRIBUTE_VALUE_COLOR
176
+ }
177
+ },
178
+ htmlCloseTag: {
179
+ base: {
180
+ color: theme32.HTML_TAG_COLOR
181
+ },
182
+ offsetLeft: {
183
+ marginLeft: -theme32.TREENODE_PADDING_LEFT
184
+ },
185
+ tagName: {
186
+ color: theme32.HTML_TAGNAME_COLOR,
187
+ textTransform: theme32.HTML_TAGNAME_TEXT_TRANSFORM
188
+ }
189
+ },
190
+ htmlComment: {
191
+ color: theme32.HTML_COMMENT_COLOR
192
+ },
193
+ htmlDoctype: {
194
+ color: theme32.HTML_DOCTYPE_COLOR
195
+ }
196
+ },
197
+ ObjectPreview: {
198
+ objectDescription: {
199
+ fontStyle: "italic"
200
+ },
201
+ preview: {
202
+ fontStyle: "italic"
203
+ },
204
+ arrayMaxProperties: theme32.OBJECT_PREVIEW_ARRAY_MAX_PROPERTIES,
205
+ objectMaxProperties: theme32.OBJECT_PREVIEW_OBJECT_MAX_PROPERTIES
206
+ },
207
+ ObjectName: {
208
+ base: {
209
+ color: theme32.OBJECT_NAME_COLOR
210
+ },
211
+ dimmed: {
212
+ opacity: 0.6
213
+ }
214
+ },
215
+ ObjectValue: {
216
+ objectValueNull: {
217
+ color: theme32.OBJECT_VALUE_NULL_COLOR
218
+ },
219
+ objectValueUndefined: {
220
+ color: theme32.OBJECT_VALUE_UNDEFINED_COLOR
221
+ },
222
+ objectValueRegExp: {
223
+ color: theme32.OBJECT_VALUE_REGEXP_COLOR
224
+ },
225
+ objectValueString: {
226
+ color: theme32.OBJECT_VALUE_STRING_COLOR
227
+ },
228
+ objectValueSymbol: {
229
+ color: theme32.OBJECT_VALUE_SYMBOL_COLOR
230
+ },
231
+ objectValueNumber: {
232
+ color: theme32.OBJECT_VALUE_NUMBER_COLOR
233
+ },
234
+ objectValueBoolean: {
235
+ color: theme32.OBJECT_VALUE_BOOLEAN_COLOR
236
+ },
237
+ objectValueFunctionPrefix: {
238
+ color: theme32.OBJECT_VALUE_FUNCTION_PREFIX_COLOR,
239
+ fontStyle: "italic"
240
+ },
241
+ objectValueFunctionName: {
242
+ fontStyle: "italic"
243
+ }
244
+ },
245
+ TreeView: {
246
+ treeViewOutline: {
247
+ padding: 0,
248
+ margin: 0,
249
+ listStyleType: "none"
250
+ }
251
+ },
252
+ TreeNode: {
253
+ treeNodeBase: {
254
+ color: theme32.BASE_COLOR,
255
+ backgroundColor: theme32.BASE_BACKGROUND_COLOR,
256
+ lineHeight: theme32.TREENODE_LINE_HEIGHT,
257
+ cursor: "default",
258
+ boxSizing: "border-box",
259
+ listStyle: "none",
260
+ fontFamily: theme32.TREENODE_FONT_FAMILY,
261
+ fontSize: theme32.TREENODE_FONT_SIZE
262
+ },
263
+ treeNodePreviewContainer: {},
264
+ treeNodePlaceholder: __spreadValues({
265
+ whiteSpace: "pre",
266
+ fontSize: theme32.ARROW_FONT_SIZE,
267
+ marginRight: theme32.ARROW_MARGIN_RIGHT
268
+ }, unselectable),
269
+ treeNodeArrow: {
270
+ base: __spreadValues(__spreadValues({
271
+ color: theme32.ARROW_COLOR,
272
+ display: "inline-block",
273
+ fontSize: theme32.ARROW_FONT_SIZE,
274
+ marginRight: theme32.ARROW_MARGIN_RIGHT
275
+ }, parseFloat(theme32.ARROW_ANIMATION_DURATION) > 0 ? {
276
+ transition: `transform ${theme32.ARROW_ANIMATION_DURATION} ease 0s`
277
+ } : {}), unselectable),
278
+ expanded: {
279
+ WebkitTransform: "rotateZ(90deg)",
280
+ MozTransform: "rotateZ(90deg)",
281
+ transform: "rotateZ(90deg)"
282
+ },
283
+ collapsed: {
284
+ WebkitTransform: "rotateZ(0deg)",
285
+ MozTransform: "rotateZ(0deg)",
286
+ transform: "rotateZ(0deg)"
287
+ }
288
+ },
289
+ treeNodeChildNodesContainer: {
290
+ margin: 0,
291
+ paddingLeft: theme32.TREENODE_PADDING_LEFT
292
+ }
293
+ },
294
+ TableInspector: {
295
+ base: {
296
+ color: theme32.BASE_COLOR,
297
+ position: "relative",
298
+ border: `1px solid ${theme32.TABLE_BORDER_COLOR}`,
299
+ fontFamily: theme32.BASE_FONT_FAMILY,
300
+ fontSize: theme32.BASE_FONT_SIZE,
301
+ lineHeight: "120%",
302
+ boxSizing: "border-box",
303
+ cursor: "default"
304
+ }
305
+ },
306
+ TableInspectorHeaderContainer: {
307
+ base: {
308
+ top: 0,
309
+ height: "17px",
310
+ left: 0,
311
+ right: 0,
312
+ overflowX: "hidden"
313
+ },
314
+ table: {
315
+ tableLayout: "fixed",
316
+ borderSpacing: 0,
317
+ borderCollapse: "separate",
318
+ height: "100%",
319
+ width: "100%",
320
+ margin: 0
321
+ }
322
+ },
323
+ TableInspectorDataContainer: {
324
+ tr: {
325
+ display: "table-row"
326
+ },
327
+ td: {
328
+ boxSizing: "border-box",
329
+ border: "none",
330
+ height: "16px",
331
+ verticalAlign: "top",
332
+ padding: "1px 4px",
333
+ WebkitUserSelect: "text",
334
+ whiteSpace: "nowrap",
335
+ textOverflow: "ellipsis",
336
+ overflow: "hidden",
337
+ lineHeight: "14px"
338
+ },
339
+ div: {
340
+ position: "static",
341
+ top: "17px",
342
+ bottom: 0,
343
+ overflowY: "overlay",
344
+ transform: "translateZ(0)",
345
+ left: 0,
346
+ right: 0,
347
+ overflowX: "hidden"
348
+ },
349
+ table: {
350
+ positon: "static",
351
+ left: 0,
352
+ top: 0,
353
+ right: 0,
354
+ bottom: 0,
355
+ borderTop: "0 none transparent",
356
+ margin: 0,
357
+ backgroundImage: theme32.TABLE_DATA_BACKGROUND_IMAGE,
358
+ backgroundSize: theme32.TABLE_DATA_BACKGROUND_SIZE,
359
+ tableLayout: "fixed",
360
+ borderSpacing: 0,
361
+ borderCollapse: "separate",
362
+ width: "100%",
363
+ fontSize: theme32.BASE_FONT_SIZE,
364
+ lineHeight: "120%"
365
+ }
366
+ },
367
+ TableInspectorTH: {
368
+ base: {
369
+ position: "relative",
370
+ height: "auto",
371
+ textAlign: "left",
372
+ backgroundColor: theme32.TABLE_TH_BACKGROUND_COLOR,
373
+ borderBottom: `1px solid ${theme32.TABLE_BORDER_COLOR}`,
374
+ fontWeight: "normal",
375
+ verticalAlign: "middle",
376
+ padding: "0 4px",
377
+ whiteSpace: "nowrap",
378
+ textOverflow: "ellipsis",
379
+ overflow: "hidden",
380
+ lineHeight: "14px",
381
+ ":hover": {
382
+ backgroundColor: theme32.TABLE_TH_HOVER_COLOR
383
+ }
384
+ },
385
+ div: {
386
+ whiteSpace: "nowrap",
387
+ textOverflow: "ellipsis",
388
+ overflow: "hidden",
389
+ fontSize: theme32.BASE_FONT_SIZE,
390
+ lineHeight: "120%"
391
+ }
392
+ },
393
+ TableInspectorLeftBorder: {
394
+ none: {
395
+ borderLeft: "none"
396
+ },
397
+ solid: {
398
+ borderLeft: `1px solid ${theme32.TABLE_BORDER_COLOR}`
399
+ }
400
+ },
401
+ TableInspectorSortIcon: __spreadValues({
402
+ display: "block",
403
+ marginRight: 3,
404
+ width: 8,
405
+ height: 7,
406
+ marginTop: -7,
407
+ color: theme32.TABLE_SORT_ICON_COLOR,
408
+ fontSize: 12
409
+ }, unselectable)
410
+ });
411
+ var DEFAULT_THEME_NAME = "chromeLight";
412
+ var ThemeContext = createContext(createTheme(themes_exports[DEFAULT_THEME_NAME]));
413
+ var useStyles = (baseStylesKey) => {
414
+ const themeStyles = useContext(ThemeContext);
415
+ return themeStyles[baseStylesKey];
416
+ };
417
+ var themeAcceptor = (WrappedComponent) => {
418
+ const ThemeAcceptor = (_a) => {
419
+ var _b = _a, { theme: theme32 = DEFAULT_THEME_NAME } = _b, restProps = __objRest(_b, ["theme"]);
420
+ const themeStyles = useMemo(() => {
421
+ switch (Object.prototype.toString.call(theme32)) {
422
+ case "[object String]":
423
+ return createTheme(themes_exports[theme32]);
424
+ case "[object Object]":
425
+ return createTheme(theme32);
426
+ default:
427
+ return createTheme(themes_exports[DEFAULT_THEME_NAME]);
428
+ }
429
+ }, [theme32]);
430
+ return /* @__PURE__ */ React17.createElement(ThemeContext.Provider, {
431
+ value: themeStyles
432
+ }, /* @__PURE__ */ React17.createElement(WrappedComponent, __spreadValues({}, restProps)));
433
+ };
434
+ return ThemeAcceptor;
435
+ };
436
+ var Arrow = ({ expanded, styles }) => /* @__PURE__ */ React17.createElement("span", {
437
+ style: __spreadValues(__spreadValues({}, styles.base), expanded ? styles.expanded : styles.collapsed)
438
+ }, "\u25B6");
439
+ var TreeNode = memo((props) => {
440
+ props = __spreadValues({
441
+ expanded: true,
442
+ nodeRenderer: ({ name }) => /* @__PURE__ */ React17.createElement("span", null, name),
443
+ onClick: () => {
444
+ },
445
+ shouldShowArrow: false,
446
+ shouldShowPlaceholder: true
447
+ }, props);
448
+ const { expanded, onClick, children, nodeRenderer, title, shouldShowArrow, shouldShowPlaceholder } = props;
449
+ const styles = useStyles("TreeNode");
450
+ const NodeRenderer = nodeRenderer;
451
+ return /* @__PURE__ */ React17.createElement("li", {
452
+ "aria-expanded": expanded,
453
+ role: "treeitem",
454
+ style: styles.treeNodeBase,
455
+ title
456
+ }, /* @__PURE__ */ React17.createElement("div", {
457
+ style: styles.treeNodePreviewContainer,
458
+ onClick
459
+ }, shouldShowArrow || Children.count(children) > 0 ? /* @__PURE__ */ React17.createElement(Arrow, {
460
+ expanded,
461
+ styles: styles.treeNodeArrow
462
+ }) : shouldShowPlaceholder && /* @__PURE__ */ React17.createElement("span", {
463
+ style: styles.treeNodePlaceholder
464
+ }, "\xA0"), /* @__PURE__ */ React17.createElement(NodeRenderer, __spreadValues({}, props))), /* @__PURE__ */ React17.createElement("ol", {
465
+ role: "group",
466
+ style: styles.treeNodeChildNodesContainer
467
+ }, expanded ? children : void 0));
468
+ });
469
+ var DEFAULT_ROOT_PATH = "$";
470
+ var WILDCARD = "*";
471
+ function hasChildNodes(data, dataIterator) {
472
+ return !dataIterator(data).next().done;
473
+ }
474
+ var wildcardPathsFromLevel = (level) => {
475
+ return Array.from({ length: level }, (_, i) => [DEFAULT_ROOT_PATH].concat(Array.from({ length: i }, () => "*")).join("."));
476
+ };
477
+ var getExpandedPaths = (data, dataIterator, expandPaths, expandLevel, prevExpandedPaths) => {
478
+ const wildcardPaths = [].concat(wildcardPathsFromLevel(expandLevel)).concat(expandPaths).filter((path) => typeof path === "string");
479
+ const expandedPaths = [];
480
+ wildcardPaths.forEach((wildcardPath) => {
481
+ const keyPaths = wildcardPath.split(".");
482
+ const populatePaths = (curData, curPath, depth) => {
483
+ if (depth === keyPaths.length) {
484
+ expandedPaths.push(curPath);
485
+ return;
486
+ }
487
+ const key = keyPaths[depth];
488
+ if (depth === 0) {
489
+ if (hasChildNodes(curData, dataIterator) && (key === DEFAULT_ROOT_PATH || key === WILDCARD)) {
490
+ populatePaths(curData, DEFAULT_ROOT_PATH, depth + 1);
491
+ }
492
+ } else {
493
+ if (key === WILDCARD) {
494
+ for (const { name, data: data2 } of dataIterator(curData)) {
495
+ if (hasChildNodes(data2, dataIterator)) {
496
+ populatePaths(data2, `${curPath}.${name}`, depth + 1);
497
+ }
498
+ }
499
+ } else {
500
+ const value = curData[key];
501
+ if (hasChildNodes(value, dataIterator)) {
502
+ populatePaths(value, `${curPath}.${key}`, depth + 1);
503
+ }
504
+ }
505
+ }
506
+ };
507
+ populatePaths(data, "", 0);
508
+ });
509
+ return expandedPaths.reduce((obj, path) => {
510
+ obj[path] = true;
511
+ return obj;
512
+ }, __spreadValues({}, prevExpandedPaths));
513
+ };
514
+ var ConnectedTreeNode = memo((props) => {
515
+ const { data, dataIterator, path, depth, nodeRenderer } = props;
516
+ const [expandedPaths, setExpandedPaths] = useContext(ExpandedPathsContext);
517
+ const nodeHasChildNodes = hasChildNodes(data, dataIterator);
518
+ const expanded = !!expandedPaths[path];
519
+ const handleClick = useCallback(() => nodeHasChildNodes && setExpandedPaths((prevExpandedPaths) => __spreadProps(__spreadValues({}, prevExpandedPaths), {
520
+ [path]: !expanded
521
+ })), [nodeHasChildNodes, setExpandedPaths, path, expanded]);
522
+ return /* @__PURE__ */ React17.createElement(TreeNode, __spreadValues({
523
+ expanded,
524
+ onClick: handleClick,
525
+ shouldShowArrow: nodeHasChildNodes,
526
+ shouldShowPlaceholder: depth > 0,
527
+ nodeRenderer
528
+ }, props), expanded ? [...dataIterator(data)].map((_a) => {
529
+ var _b = _a, { name, data: data2 } = _b, renderNodeProps = __objRest(_b, ["name", "data"]);
530
+ return /* @__PURE__ */ React17.createElement(ConnectedTreeNode, __spreadValues({
531
+ name,
532
+ data: data2,
533
+ depth: depth + 1,
534
+ path: `${path}.${name}`,
535
+ key: name,
536
+ dataIterator,
537
+ nodeRenderer
538
+ }, renderNodeProps));
539
+ }) : null);
540
+ });
541
+ var TreeView = memo(({ name, data, dataIterator, nodeRenderer, expandPaths, expandLevel }) => {
542
+ const styles = useStyles("TreeView");
543
+ const stateAndSetter = useState({});
544
+ const [, setExpandedPaths] = stateAndSetter;
545
+ useLayoutEffect(() => setExpandedPaths((prevExpandedPaths) => getExpandedPaths(data, dataIterator, expandPaths, expandLevel, prevExpandedPaths)), [data, dataIterator, expandPaths, expandLevel]);
546
+ return /* @__PURE__ */ React17.createElement(ExpandedPathsContext.Provider, {
547
+ value: stateAndSetter
548
+ }, /* @__PURE__ */ React17.createElement("ol", {
549
+ role: "tree",
550
+ style: styles.treeViewOutline
551
+ }, /* @__PURE__ */ React17.createElement(ConnectedTreeNode, {
552
+ name,
553
+ data,
554
+ dataIterator,
555
+ depth: 0,
556
+ path: DEFAULT_ROOT_PATH,
557
+ nodeRenderer
558
+ })));
559
+ });
560
+ var ObjectName = ({ name, dimmed = false, styles = {} }) => {
561
+ const themeStyles = useStyles("ObjectName");
562
+ const appliedStyles = __spreadValues(__spreadValues(__spreadValues({}, themeStyles.base), dimmed ? themeStyles["dimmed"] : {}), styles);
563
+ return /* @__PURE__ */ React17.createElement("span", {
564
+ style: appliedStyles
565
+ }, name);
566
+ };
567
+ var ObjectValue = ({ object, styles }) => {
568
+ const themeStyles = useStyles("ObjectValue");
569
+ const mkStyle = (key) => __spreadValues(__spreadValues({}, themeStyles[key]), styles);
570
+ switch (typeof object) {
571
+ case "bigint":
572
+ return /* @__PURE__ */ React17.createElement("span", {
573
+ style: mkStyle("objectValueNumber")
574
+ }, String(object), "n");
575
+ case "number":
576
+ return /* @__PURE__ */ React17.createElement("span", {
577
+ style: mkStyle("objectValueNumber")
578
+ }, String(object));
579
+ case "string":
580
+ return /* @__PURE__ */ React17.createElement("span", {
581
+ style: mkStyle("objectValueString")
582
+ }, '"', object, '"');
583
+ case "boolean":
584
+ return /* @__PURE__ */ React17.createElement("span", {
585
+ style: mkStyle("objectValueBoolean")
586
+ }, String(object));
587
+ case "undefined":
588
+ return /* @__PURE__ */ React17.createElement("span", {
589
+ style: mkStyle("objectValueUndefined")
590
+ }, "undefined");
591
+ case "object":
592
+ if (object === null) {
593
+ return /* @__PURE__ */ React17.createElement("span", {
594
+ style: mkStyle("objectValueNull")
595
+ }, "null");
596
+ }
597
+ if (object instanceof Date) {
598
+ return /* @__PURE__ */ React17.createElement("span", null, object.toString());
599
+ }
600
+ if (object instanceof RegExp) {
601
+ return /* @__PURE__ */ React17.createElement("span", {
602
+ style: mkStyle("objectValueRegExp")
603
+ }, object.toString());
604
+ }
605
+ if (Array.isArray(object)) {
606
+ return /* @__PURE__ */ React17.createElement("span", null, `Array(${object.length})`);
607
+ }
608
+ if (!object.constructor) {
609
+ return /* @__PURE__ */ React17.createElement("span", null, "Object");
610
+ }
611
+ if (typeof object.constructor.isBuffer === "function" && object.constructor.isBuffer(object)) {
612
+ return /* @__PURE__ */ React17.createElement("span", null, `Buffer[${object.length}]`);
613
+ }
614
+ return /* @__PURE__ */ React17.createElement("span", null, object.constructor.name);
615
+ case "function":
616
+ return /* @__PURE__ */ React17.createElement("span", null, /* @__PURE__ */ React17.createElement("span", {
617
+ style: mkStyle("objectValueFunctionPrefix")
618
+ }, "\u0192\xA0"), /* @__PURE__ */ React17.createElement("span", {
619
+ style: mkStyle("objectValueFunctionName")
620
+ }, object.name, "()"));
621
+ case "symbol":
622
+ return /* @__PURE__ */ React17.createElement("span", {
623
+ style: mkStyle("objectValueSymbol")
624
+ }, object.toString());
625
+ default:
626
+ return /* @__PURE__ */ React17.createElement("span", null);
627
+ }
628
+ };
629
+ var hasOwnProperty = Object.prototype.hasOwnProperty;
630
+ var propertyIsEnumerable = Object.prototype.propertyIsEnumerable;
631
+ function getPropertyValue(object, propertyName) {
632
+ const propertyDescriptor = Object.getOwnPropertyDescriptor(object, propertyName);
633
+ if (propertyDescriptor.get) {
634
+ try {
635
+ return propertyDescriptor.get();
636
+ } catch (e) {
637
+ return propertyDescriptor.get;
638
+ }
639
+ }
640
+ return object[propertyName];
641
+ }
642
+ function intersperse(arr, sep) {
643
+ if (arr.length === 0) {
644
+ return [];
645
+ }
646
+ return arr.slice(1).reduce((xs, x) => xs.concat([sep, x]), [arr[0]]);
647
+ }
648
+ var ObjectPreview = ({ data }) => {
649
+ const styles = useStyles("ObjectPreview");
650
+ const object = data;
651
+ if (typeof object !== "object" || object === null || object instanceof Date || object instanceof RegExp) {
652
+ return /* @__PURE__ */ React17.createElement(ObjectValue, {
653
+ object
654
+ });
655
+ }
656
+ if (Array.isArray(object)) {
657
+ const maxProperties = styles.arrayMaxProperties;
658
+ const previewArray = object.slice(0, maxProperties).map((element, index) => /* @__PURE__ */ React17.createElement(ObjectValue, {
659
+ key: index,
660
+ object: element
661
+ }));
662
+ if (object.length > maxProperties) {
663
+ previewArray.push(/* @__PURE__ */ React17.createElement("span", {
664
+ key: "ellipsis"
665
+ }, "\u2026"));
666
+ }
667
+ const arrayLength = object.length;
668
+ return /* @__PURE__ */ React17.createElement(React17.Fragment, null, /* @__PURE__ */ React17.createElement("span", {
669
+ style: styles.objectDescription
670
+ }, arrayLength === 0 ? `` : `(${arrayLength})\xA0`), /* @__PURE__ */ React17.createElement("span", {
671
+ style: styles.preview
672
+ }, "[", intersperse(previewArray, ", "), "]"));
673
+ } else {
674
+ const maxProperties = styles.objectMaxProperties;
675
+ const propertyNodes = [];
676
+ for (const propertyName in object) {
677
+ if (hasOwnProperty.call(object, propertyName)) {
678
+ let ellipsis;
679
+ if (propertyNodes.length === maxProperties - 1 && Object.keys(object).length > maxProperties) {
680
+ ellipsis = /* @__PURE__ */ React17.createElement("span", {
681
+ key: "ellipsis"
682
+ }, "\u2026");
683
+ }
684
+ const propertyValue = getPropertyValue(object, propertyName);
685
+ propertyNodes.push(/* @__PURE__ */ React17.createElement("span", {
686
+ key: propertyName
687
+ }, /* @__PURE__ */ React17.createElement(ObjectName, {
688
+ name: propertyName || `""`
689
+ }), ":\xA0", /* @__PURE__ */ React17.createElement(ObjectValue, {
690
+ object: propertyValue
691
+ }), ellipsis));
692
+ if (ellipsis)
693
+ break;
694
+ }
695
+ }
696
+ const objectConstructorName = object.constructor ? object.constructor.name : "Object";
697
+ return /* @__PURE__ */ React17.createElement(React17.Fragment, null, /* @__PURE__ */ React17.createElement("span", {
698
+ style: styles.objectDescription
699
+ }, objectConstructorName === "Object" ? "" : `${objectConstructorName} `), /* @__PURE__ */ React17.createElement("span", {
700
+ style: styles.preview
701
+ }, "{", intersperse(propertyNodes, ", "), "}"));
702
+ }
703
+ };
704
+ var ObjectRootLabel = ({ name, data }) => {
705
+ if (typeof name === "string") {
706
+ return /* @__PURE__ */ React17.createElement("span", null, /* @__PURE__ */ React17.createElement(ObjectName, {
707
+ name
708
+ }), /* @__PURE__ */ React17.createElement("span", null, ": "), /* @__PURE__ */ React17.createElement(ObjectPreview, {
709
+ data
710
+ }));
711
+ } else {
712
+ return /* @__PURE__ */ React17.createElement(ObjectPreview, {
713
+ data
714
+ });
715
+ }
716
+ };
717
+ var ObjectLabel = ({ name, data, isNonenumerable = false }) => {
718
+ const object = data;
719
+ return /* @__PURE__ */ React17.createElement("span", null, typeof name === "string" ? /* @__PURE__ */ React17.createElement(ObjectName, {
720
+ name,
721
+ dimmed: isNonenumerable
722
+ }) : /* @__PURE__ */ React17.createElement(ObjectPreview, {
723
+ data: name
724
+ }), /* @__PURE__ */ React17.createElement("span", null, ": "), /* @__PURE__ */ React17.createElement(ObjectValue, {
725
+ object
726
+ }));
727
+ };
728
+ var createIterator = (showNonenumerable, sortObjectKeys) => {
729
+ const objectIterator = function* (data) {
730
+ const shouldIterate = typeof data === "object" && data !== null || typeof data === "function";
731
+ if (!shouldIterate)
732
+ return;
733
+ const dataIsArray = Array.isArray(data);
734
+ if (!dataIsArray && data[Symbol.iterator]) {
735
+ let i = 0;
736
+ for (const entry of data) {
737
+ if (Array.isArray(entry) && entry.length === 2) {
738
+ const [k, v] = entry;
739
+ yield {
740
+ name: k,
741
+ data: v
742
+ };
743
+ } else {
744
+ yield {
745
+ name: i.toString(),
746
+ data: entry
747
+ };
748
+ }
749
+ i++;
750
+ }
751
+ } else {
752
+ const keys = Object.getOwnPropertyNames(data);
753
+ if (sortObjectKeys === true && !dataIsArray) {
754
+ keys.sort();
755
+ } else if (typeof sortObjectKeys === "function") {
756
+ keys.sort(sortObjectKeys);
757
+ }
758
+ for (const propertyName of keys) {
759
+ if (propertyIsEnumerable.call(data, propertyName)) {
760
+ const propertyValue = getPropertyValue(data, propertyName);
761
+ yield {
762
+ name: propertyName || `""`,
763
+ data: propertyValue
764
+ };
765
+ } else if (showNonenumerable) {
766
+ let propertyValue;
767
+ try {
768
+ propertyValue = getPropertyValue(data, propertyName);
769
+ } catch (e) {
770
+ }
771
+ if (propertyValue !== void 0) {
772
+ yield {
773
+ name: propertyName,
774
+ data: propertyValue,
775
+ isNonenumerable: true
776
+ };
777
+ }
778
+ }
779
+ }
780
+ if (showNonenumerable && data !== Object.prototype) {
781
+ yield {
782
+ name: "__proto__",
783
+ data: Object.getPrototypeOf(data),
784
+ isNonenumerable: true
785
+ };
786
+ }
787
+ }
788
+ };
789
+ return objectIterator;
790
+ };
791
+ var defaultNodeRenderer = ({ depth, name, data, isNonenumerable }) => depth === 0 ? /* @__PURE__ */ React17.createElement(ObjectRootLabel, {
792
+ name,
793
+ data
794
+ }) : /* @__PURE__ */ React17.createElement(ObjectLabel, {
795
+ name,
796
+ data,
797
+ isNonenumerable
798
+ });
799
+ var ObjectInspector = (_a) => {
800
+ var _b = _a, { showNonenumerable = false, sortObjectKeys, nodeRenderer } = _b, treeViewProps = __objRest(_b, ["showNonenumerable", "sortObjectKeys", "nodeRenderer"]);
801
+ const dataIterator = createIterator(showNonenumerable, sortObjectKeys);
802
+ const renderer = nodeRenderer ? nodeRenderer : defaultNodeRenderer;
803
+ return /* @__PURE__ */ React17.createElement(TreeView, __spreadValues({
804
+ nodeRenderer: renderer,
805
+ dataIterator
806
+ }, treeViewProps));
807
+ };
808
+ var themedObjectInspector = themeAcceptor(ObjectInspector);
809
+ function getHeaders(data) {
810
+ if (typeof data === "object") {
811
+ let rowHeaders = [];
812
+ if (Array.isArray(data)) {
813
+ const nRows = data.length;
814
+ rowHeaders = [...Array(nRows).keys()];
815
+ } else if (data !== null) {
816
+ rowHeaders = Object.keys(data);
817
+ }
818
+ const colHeaders = rowHeaders.reduce((colHeaders2, rowHeader) => {
819
+ const row = data[rowHeader];
820
+ if (typeof row === "object" && row !== null) {
821
+ const cols = Object.keys(row);
822
+ cols.reduce((xs, x) => {
823
+ if (!xs.includes(x)) {
824
+ xs.push(x);
825
+ }
826
+ return xs;
827
+ }, colHeaders2);
828
+ }
829
+ return colHeaders2;
830
+ }, []);
831
+ return {
832
+ rowHeaders,
833
+ colHeaders
834
+ };
835
+ }
836
+ return void 0;
837
+ }
838
+ var DataContainer = ({ rows, columns, rowsData }) => {
839
+ const styles = useStyles("TableInspectorDataContainer");
840
+ const borderStyles = useStyles("TableInspectorLeftBorder");
841
+ return /* @__PURE__ */ React17.createElement("div", {
842
+ style: styles.div
843
+ }, /* @__PURE__ */ React17.createElement("table", {
844
+ style: styles.table
845
+ }, /* @__PURE__ */ React17.createElement("colgroup", null), /* @__PURE__ */ React17.createElement("tbody", null, rows.map((row, i) => /* @__PURE__ */ React17.createElement("tr", {
846
+ key: row,
847
+ style: styles.tr
848
+ }, /* @__PURE__ */ React17.createElement("td", {
849
+ style: __spreadValues(__spreadValues({}, styles.td), borderStyles.none)
850
+ }, row), columns.map((column) => {
851
+ const rowData = rowsData[i];
852
+ if (typeof rowData === "object" && rowData !== null && hasOwnProperty.call(rowData, column)) {
853
+ return /* @__PURE__ */ React17.createElement("td", {
854
+ key: column,
855
+ style: __spreadValues(__spreadValues({}, styles.td), borderStyles.solid)
856
+ }, /* @__PURE__ */ React17.createElement(ObjectValue, {
857
+ object: rowData[column]
858
+ }));
859
+ } else {
860
+ return /* @__PURE__ */ React17.createElement("td", {
861
+ key: column,
862
+ style: __spreadValues(__spreadValues({}, styles.td), borderStyles.solid)
863
+ });
864
+ }
865
+ }))))));
866
+ };
867
+ var SortIconContainer = (props) => /* @__PURE__ */ React17.createElement("div", {
868
+ style: {
869
+ position: "absolute",
870
+ top: 1,
871
+ right: 0,
872
+ bottom: 1,
873
+ display: "flex",
874
+ alignItems: "center"
875
+ }
876
+ }, props.children);
877
+ var SortIcon = ({ sortAscending }) => {
878
+ const styles = useStyles("TableInspectorSortIcon");
879
+ const glyph = sortAscending ? "\u25B2" : "\u25BC";
880
+ return /* @__PURE__ */ React17.createElement("div", {
881
+ style: styles
882
+ }, glyph);
883
+ };
884
+ var TH = (_a) => {
885
+ var _b = _a, {
886
+ sortAscending = false,
887
+ sorted = false,
888
+ onClick = void 0,
889
+ borderStyle = {},
890
+ children
891
+ } = _b, thProps = __objRest(_b, [
892
+ "sortAscending",
893
+ "sorted",
894
+ "onClick",
895
+ "borderStyle",
896
+ "children"
897
+ ]);
898
+ const styles = useStyles("TableInspectorTH");
899
+ const [hovered, setHovered] = useState(false);
900
+ const handleMouseEnter = useCallback(() => setHovered(true), []);
901
+ const handleMouseLeave = useCallback(() => setHovered(false), []);
902
+ return /* @__PURE__ */ React17.createElement("th", __spreadProps(__spreadValues({}, thProps), {
903
+ style: __spreadValues(__spreadValues(__spreadValues({}, styles.base), borderStyle), hovered ? styles.base[":hover"] : {}),
904
+ onMouseEnter: handleMouseEnter,
905
+ onMouseLeave: handleMouseLeave,
906
+ onClick
907
+ }), /* @__PURE__ */ React17.createElement("div", {
908
+ style: styles.div
909
+ }, children), sorted && /* @__PURE__ */ React17.createElement(SortIconContainer, null, /* @__PURE__ */ React17.createElement(SortIcon, {
910
+ sortAscending
911
+ })));
912
+ };
913
+ var HeaderContainer = ({
914
+ indexColumnText = "(index)",
915
+ columns = [],
916
+ sorted,
917
+ sortIndexColumn,
918
+ sortColumn,
919
+ sortAscending,
920
+ onTHClick,
921
+ onIndexTHClick
922
+ }) => {
923
+ const styles = useStyles("TableInspectorHeaderContainer");
924
+ const borderStyles = useStyles("TableInspectorLeftBorder");
925
+ return /* @__PURE__ */ React17.createElement("div", {
926
+ style: styles.base
927
+ }, /* @__PURE__ */ React17.createElement("table", {
928
+ style: styles.table
929
+ }, /* @__PURE__ */ React17.createElement("tbody", null, /* @__PURE__ */ React17.createElement("tr", null, /* @__PURE__ */ React17.createElement(TH, {
930
+ borderStyle: borderStyles.none,
931
+ sorted: sorted && sortIndexColumn,
932
+ sortAscending,
933
+ onClick: onIndexTHClick
934
+ }, indexColumnText), columns.map((column) => /* @__PURE__ */ React17.createElement(TH, {
935
+ borderStyle: borderStyles.solid,
936
+ key: column,
937
+ sorted: sorted && sortColumn === column,
938
+ sortAscending,
939
+ onClick: onTHClick.bind(null, column)
940
+ }, column))))));
941
+ };
942
+ var TableInspector = ({
943
+ data,
944
+ columns
945
+ }) => {
946
+ const styles = useStyles("TableInspector");
947
+ const [{ sorted, sortIndexColumn, sortColumn, sortAscending }, setState] = useState({
948
+ sorted: false,
949
+ sortIndexColumn: false,
950
+ sortColumn: void 0,
951
+ sortAscending: false
952
+ });
953
+ const handleIndexTHClick = useCallback(() => {
954
+ setState(({ sortIndexColumn: sortIndexColumn2, sortAscending: sortAscending2 }) => ({
955
+ sorted: true,
956
+ sortIndexColumn: true,
957
+ sortColumn: void 0,
958
+ sortAscending: sortIndexColumn2 ? !sortAscending2 : true
959
+ }));
960
+ }, []);
961
+ const handleTHClick = useCallback((col) => {
962
+ setState(({ sortColumn: sortColumn2, sortAscending: sortAscending2 }) => ({
963
+ sorted: true,
964
+ sortIndexColumn: false,
965
+ sortColumn: col,
966
+ sortAscending: col === sortColumn2 ? !sortAscending2 : true
967
+ }));
968
+ }, []);
969
+ if (typeof data !== "object" || data === null) {
970
+ return /* @__PURE__ */ React17.createElement("div", null);
971
+ }
972
+ let { rowHeaders, colHeaders } = getHeaders(data);
973
+ if (columns !== void 0) {
974
+ colHeaders = columns;
975
+ }
976
+ let rowsData = rowHeaders.map((rowHeader) => data[rowHeader]);
977
+ let columnDataWithRowIndexes;
978
+ if (sortColumn !== void 0) {
979
+ columnDataWithRowIndexes = rowsData.map((rowData, index) => {
980
+ if (typeof rowData === "object" && rowData !== null) {
981
+ const columnData = rowData[sortColumn];
982
+ return [columnData, index];
983
+ }
984
+ return [void 0, index];
985
+ });
986
+ } else {
987
+ if (sortIndexColumn) {
988
+ columnDataWithRowIndexes = rowHeaders.map((rowData, index) => {
989
+ const columnData = rowHeaders[index];
990
+ return [columnData, index];
991
+ });
992
+ }
993
+ }
994
+ if (columnDataWithRowIndexes !== void 0) {
995
+ const comparator = (mapper, ascending) => {
996
+ return (a, b) => {
997
+ const v1 = mapper(a);
998
+ const v2 = mapper(b);
999
+ const type1 = typeof v1;
1000
+ const type2 = typeof v2;
1001
+ const lt = (v12, v22) => {
1002
+ if (v12 < v22) {
1003
+ return -1;
1004
+ } else if (v12 > v22) {
1005
+ return 1;
1006
+ } else {
1007
+ return 0;
1008
+ }
1009
+ };
1010
+ let result;
1011
+ if (type1 === type2) {
1012
+ result = lt(v1, v2);
1013
+ } else {
1014
+ const order = {
1015
+ string: 0,
1016
+ number: 1,
1017
+ object: 2,
1018
+ symbol: 3,
1019
+ boolean: 4,
1020
+ undefined: 5,
1021
+ function: 6
1022
+ };
1023
+ result = lt(order[type1], order[type2]);
1024
+ }
1025
+ if (!ascending)
1026
+ result = -result;
1027
+ return result;
1028
+ };
1029
+ };
1030
+ const sortedRowIndexes = columnDataWithRowIndexes.sort(comparator((item) => item[0], sortAscending)).map((item) => item[1]);
1031
+ rowHeaders = sortedRowIndexes.map((i) => rowHeaders[i]);
1032
+ rowsData = sortedRowIndexes.map((i) => rowsData[i]);
1033
+ }
1034
+ return /* @__PURE__ */ React17.createElement("div", {
1035
+ style: styles.base
1036
+ }, /* @__PURE__ */ React17.createElement(HeaderContainer, {
1037
+ columns: colHeaders,
1038
+ sorted,
1039
+ sortIndexColumn,
1040
+ sortColumn,
1041
+ sortAscending,
1042
+ onTHClick: handleTHClick,
1043
+ onIndexTHClick: handleIndexTHClick
1044
+ }), /* @__PURE__ */ React17.createElement(DataContainer, {
1045
+ rows: rowHeaders,
1046
+ columns: colHeaders,
1047
+ rowsData
1048
+ }));
1049
+ };
1050
+ var themedTableInspector = themeAcceptor(TableInspector);
1051
+ var TEXT_NODE_MAX_INLINE_CHARS = 80;
1052
+ var shouldInline = (data) => data.childNodes.length === 0 || data.childNodes.length === 1 && data.childNodes[0].nodeType === Node.TEXT_NODE && data.textContent.length < TEXT_NODE_MAX_INLINE_CHARS;
1053
+ var OpenTag = ({ tagName, attributes, styles }) => {
1054
+ return /* @__PURE__ */ React17.createElement("span", {
1055
+ style: styles.base
1056
+ }, "<", /* @__PURE__ */ React17.createElement("span", {
1057
+ style: styles.tagName
1058
+ }, tagName), (() => {
1059
+ if (attributes) {
1060
+ const attributeNodes = [];
1061
+ for (let i = 0; i < attributes.length; i++) {
1062
+ const attribute = attributes[i];
1063
+ attributeNodes.push(/* @__PURE__ */ React17.createElement("span", {
1064
+ key: i
1065
+ }, " ", /* @__PURE__ */ React17.createElement("span", {
1066
+ style: styles.htmlAttributeName
1067
+ }, attribute.name), '="', /* @__PURE__ */ React17.createElement("span", {
1068
+ style: styles.htmlAttributeValue
1069
+ }, attribute.value), '"'));
1070
+ }
1071
+ return attributeNodes;
1072
+ }
1073
+ })(), ">");
1074
+ };
1075
+ var CloseTag = ({ tagName, isChildNode = false, styles }) => /* @__PURE__ */ React17.createElement("span", {
1076
+ style: Object.assign({}, styles.base, isChildNode && styles.offsetLeft)
1077
+ }, "</", /* @__PURE__ */ React17.createElement("span", {
1078
+ style: styles.tagName
1079
+ }, tagName), ">");
1080
+ var nameByNodeType = {
1081
+ 1: "ELEMENT_NODE",
1082
+ 3: "TEXT_NODE",
1083
+ 7: "PROCESSING_INSTRUCTION_NODE",
1084
+ 8: "COMMENT_NODE",
1085
+ 9: "DOCUMENT_NODE",
1086
+ 10: "DOCUMENT_TYPE_NODE",
1087
+ 11: "DOCUMENT_FRAGMENT_NODE"
1088
+ };
1089
+ var DOMNodePreview = ({ isCloseTag, data, expanded }) => {
1090
+ const styles = useStyles("DOMNodePreview");
1091
+ if (isCloseTag) {
1092
+ return /* @__PURE__ */ React17.createElement(CloseTag, {
1093
+ styles: styles.htmlCloseTag,
1094
+ isChildNode: true,
1095
+ tagName: data.tagName
1096
+ });
1097
+ }
1098
+ switch (data.nodeType) {
1099
+ case Node.ELEMENT_NODE:
1100
+ return /* @__PURE__ */ React17.createElement("span", null, /* @__PURE__ */ React17.createElement(OpenTag, {
1101
+ tagName: data.tagName,
1102
+ attributes: data.attributes,
1103
+ styles: styles.htmlOpenTag
1104
+ }), shouldInline(data) ? data.textContent : !expanded && "\u2026", !expanded && /* @__PURE__ */ React17.createElement(CloseTag, {
1105
+ tagName: data.tagName,
1106
+ styles: styles.htmlCloseTag
1107
+ }));
1108
+ case Node.TEXT_NODE:
1109
+ return /* @__PURE__ */ React17.createElement("span", null, data.textContent);
1110
+ case Node.CDATA_SECTION_NODE:
1111
+ return /* @__PURE__ */ React17.createElement("span", null, "<![CDATA[" + data.textContent + "]]>");
1112
+ case Node.COMMENT_NODE:
1113
+ return /* @__PURE__ */ React17.createElement("span", {
1114
+ style: styles.htmlComment
1115
+ }, "<!--", data.textContent, "-->");
1116
+ case Node.PROCESSING_INSTRUCTION_NODE:
1117
+ return /* @__PURE__ */ React17.createElement("span", null, data.nodeName);
1118
+ case Node.DOCUMENT_TYPE_NODE:
1119
+ return /* @__PURE__ */ React17.createElement("span", {
1120
+ style: styles.htmlDoctype
1121
+ }, "<!DOCTYPE ", data.name, data.publicId ? ` PUBLIC "${data.publicId}"` : "", !data.publicId && data.systemId ? " SYSTEM" : "", data.systemId ? ` "${data.systemId}"` : "", ">");
1122
+ case Node.DOCUMENT_NODE:
1123
+ return /* @__PURE__ */ React17.createElement("span", null, data.nodeName);
1124
+ case Node.DOCUMENT_FRAGMENT_NODE:
1125
+ return /* @__PURE__ */ React17.createElement("span", null, data.nodeName);
1126
+ default:
1127
+ return /* @__PURE__ */ React17.createElement("span", null, nameByNodeType[data.nodeType]);
1128
+ }
1129
+ };
1130
+ var domIterator = function* (data) {
1131
+ if (data && data.childNodes) {
1132
+ const textInlined = shouldInline(data);
1133
+ if (textInlined) {
1134
+ return;
1135
+ }
1136
+ for (let i = 0; i < data.childNodes.length; i++) {
1137
+ const node = data.childNodes[i];
1138
+ if (node.nodeType === Node.TEXT_NODE && node.textContent.trim().length === 0)
1139
+ continue;
1140
+ yield {
1141
+ name: `${node.tagName}[${i}]`,
1142
+ data: node
1143
+ };
1144
+ }
1145
+ if (data.tagName) {
1146
+ yield {
1147
+ name: "CLOSE_TAG",
1148
+ data: {
1149
+ tagName: data.tagName
1150
+ },
1151
+ isCloseTag: true
1152
+ };
1153
+ }
1154
+ }
1155
+ };
1156
+ var DOMInspector = (props) => {
1157
+ return /* @__PURE__ */ React17.createElement(TreeView, __spreadValues({
1158
+ nodeRenderer: DOMNodePreview,
1159
+ dataIterator: domIterator
1160
+ }, props));
1161
+ };
1162
+ var themedDOMInspector = themeAcceptor(DOMInspector);
1163
+ var import_is_dom = __toESM(require_is_dom());
1164
+ var Inspector = (_a) => {
1165
+ var _b = _a, { table = false, data } = _b, rest = __objRest(_b, ["table", "data"]);
1166
+ if (table) {
1167
+ return /* @__PURE__ */ React17.createElement(themedTableInspector, __spreadValues({
1168
+ data
1169
+ }, rest));
1170
+ }
1171
+ if ((0, import_is_dom.default)(data))
1172
+ return /* @__PURE__ */ React17.createElement(themedDOMInspector, __spreadValues({
1173
+ data
1174
+ }, rest));
1175
+ return /* @__PURE__ */ React17.createElement(themedObjectInspector, __spreadValues({
1176
+ data
1177
+ }, rest));
1178
+ };
1179
+ var FIBER_PROP_EXPLANATIONS = {
1180
+ tag: "Numeric type identifier for this fiber (e.g. 1=FunctionComponent, 5=HostComponent)",
1181
+ elementType: "The original function/class/element type",
1182
+ type: "The resolved function/class after going through any HOCs",
1183
+ stateNode: "Reference to the actual instance (DOM node, class instance, etc)",
1184
+ return: "Parent fiber",
1185
+ child: "First child fiber",
1186
+ sibling: "Next sibling fiber",
1187
+ index: "Position among siblings",
1188
+ ref: "Ref object or function",
1189
+ pendingProps: "Props that are about to be applied",
1190
+ memoizedProps: "Props from the last render",
1191
+ memoizedState: "State from the last render",
1192
+ dependencies: "Context and other dependencies this fiber subscribes to",
1193
+ flags: "Side-effects flags (e.g. needs update, deletion)",
1194
+ lanes: "Priority lanes for updates",
1195
+ childLanes: "Priority lanes for child updates"
1196
+ };
1197
+ var throttle = (fn, wait) => {
1198
+ let timeout = null;
1199
+ return function() {
1200
+ if (!timeout) {
1201
+ timeout = setTimeout(() => {
1202
+ fn.apply(this, arguments);
1203
+ timeout = null;
1204
+ }, wait);
1205
+ }
1206
+ };
1207
+ };
1208
+ var isMac = typeof navigator !== "undefined" && navigator.platform.toLowerCase().includes("mac");
1209
+ var theme3 = {
1210
+ BASE_FONT_FAMILY: "Menlo, monospace",
1211
+ BASE_FONT_SIZE: "12px",
1212
+ BASE_LINE_HEIGHT: 1.2,
1213
+ BASE_BACKGROUND_COLOR: "none",
1214
+ BASE_COLOR: "#FFF",
1215
+ OBJECT_PREVIEW_ARRAY_MAX_PROPERTIES: 10,
1216
+ OBJECT_PREVIEW_OBJECT_MAX_PROPERTIES: 5,
1217
+ OBJECT_NAME_COLOR: "#FFC799",
1218
+ OBJECT_VALUE_NULL_COLOR: "#A0A0A0",
1219
+ OBJECT_VALUE_UNDEFINED_COLOR: "#A0A0A0",
1220
+ OBJECT_VALUE_REGEXP_COLOR: "#FF8080",
1221
+ OBJECT_VALUE_STRING_COLOR: "#99FFE4",
1222
+ OBJECT_VALUE_SYMBOL_COLOR: "#FFC799",
1223
+ OBJECT_VALUE_NUMBER_COLOR: "#FFC799",
1224
+ OBJECT_VALUE_BOOLEAN_COLOR: "#FFC799",
1225
+ OBJECT_VALUE_FUNCTION_PREFIX_COLOR: "#FFC799",
1226
+ HTML_TAG_COLOR: "#FFC799",
1227
+ HTML_TAGNAME_COLOR: "#FFC799",
1228
+ HTML_TAGNAME_TEXT_TRANSFORM: "lowercase",
1229
+ HTML_ATTRIBUTE_NAME_COLOR: "#A0A0A0",
1230
+ HTML_ATTRIBUTE_VALUE_COLOR: "#99FFE4",
1231
+ HTML_COMMENT_COLOR: "#8b8b8b94",
1232
+ HTML_DOCTYPE_COLOR: "#A0A0A0",
1233
+ ARROW_COLOR: "#A0A0A0",
1234
+ ARROW_MARGIN_RIGHT: 3,
1235
+ ARROW_FONT_SIZE: 12,
1236
+ ARROW_ANIMATION_DURATION: "0",
1237
+ TREENODE_FONT_FAMILY: "Menlo, monospace",
1238
+ TREENODE_FONT_SIZE: "11px",
1239
+ TREENODE_LINE_HEIGHT: 1.2,
1240
+ TREENODE_PADDING_LEFT: 12,
1241
+ TABLE_BORDER_COLOR: "#282828",
1242
+ TABLE_TH_BACKGROUND_COLOR: "#161616",
1243
+ TABLE_TH_HOVER_COLOR: "#232323",
1244
+ TABLE_SORT_ICON_COLOR: "#A0A0A0",
1245
+ TABLE_DATA_BACKGROUND_IMAGE: "none",
1246
+ TABLE_DATA_BACKGROUND_SIZE: "0"
1247
+ };
1248
+ var BackButton = React17.memo(({ onClick }) => /* @__PURE__ */ React17.createElement(
1249
+ "button",
1250
+ {
1251
+ type: "button",
1252
+ onClick,
1253
+ style: {
1254
+ padding: "0.5ch 1ch",
1255
+ background: "#161616",
1256
+ border: "1px solid #282828",
1257
+ color: "#FFF",
1258
+ borderRadius: "0.25rem",
1259
+ cursor: "pointer",
1260
+ fontSize: "0.875rem",
1261
+ opacity: 0.8,
1262
+ transition: "opacity 150ms"
1263
+ },
1264
+ onMouseEnter: (e) => {
1265
+ e.currentTarget.style.opacity = "1";
1266
+ },
1267
+ onMouseLeave: (e) => {
1268
+ e.currentTarget.style.opacity = "0.8";
1269
+ }
1270
+ },
1271
+ "\u2190 Back"
1272
+ ));
1273
+ var BreadcrumbButton = React17.memo(
1274
+ ({
1275
+ name,
1276
+ onClick,
1277
+ onKeyDown
1278
+ }) => /* @__PURE__ */ React17.createElement(
1279
+ "button",
1280
+ {
1281
+ type: "button",
1282
+ onClick,
1283
+ onKeyDown,
1284
+ style: {
1285
+ cursor: "pointer",
1286
+ textDecoration: "underline",
1287
+ color: "#A0A0A0",
1288
+ background: "none",
1289
+ border: "none",
1290
+ padding: 0,
1291
+ font: "inherit"
1292
+ },
1293
+ onMouseEnter: (e) => {
1294
+ e.currentTarget.style.backgroundColor = "#232323";
1295
+ e.currentTarget.style.color = "#FFF";
1296
+ },
1297
+ onMouseLeave: (e) => {
1298
+ e.currentTarget.style.backgroundColor = "";
1299
+ e.currentTarget.style.color = "#A0A0A0";
1300
+ }
1301
+ },
1302
+ name
1303
+ )
1304
+ );
1305
+ var CloseButton = React17.memo(({ onClick }) => /* @__PURE__ */ React17.createElement(
1306
+ "button",
1307
+ {
1308
+ type: "button",
1309
+ onClick,
1310
+ style: {
1311
+ border: "none",
1312
+ background: "none",
1313
+ cursor: "pointer",
1314
+ padding: "0.5ch",
1315
+ fontSize: "2ch",
1316
+ opacity: 0.5,
1317
+ color: "#FFF"
1318
+ }
1319
+ },
1320
+ "\xD7"
1321
+ ));
1322
+ var RawInspector = React17.memo(
1323
+ ({ enabled = true, dangerouslyRunInProduction = false }) => {
1324
+ const [element, setElement] = useState(null);
1325
+ const [rect, setRect] = useState(null);
1326
+ const [isActive, setIsActive] = useState(true);
1327
+ const [isDialogMode, setIsDialogMode] = useState(false);
1328
+ const [tooltip, setTooltip] = useState(null);
1329
+ const [selectedFiber, setSelectedFiber] = useState(null);
1330
+ const [position, setPosition] = useState({
1331
+ top: 0,
1332
+ left: 0
1333
+ });
1334
+ const [fiberHistory, setFiberHistory] = useState([]);
1335
+ const getFiberForDisplay = useCallback(() => {
1336
+ if (selectedFiber) return selectedFiber;
1337
+ const fiber2 = getFiberFromHostInstance(element);
1338
+ return fiber2;
1339
+ }, [selectedFiber, element]);
1340
+ const handlePropertyHover = (_e, propName) => {
1341
+ if (!isDialogMode) return;
1342
+ const explanation = FIBER_PROP_EXPLANATIONS[propName];
1343
+ setTooltip(explanation || null);
1344
+ };
1345
+ const handlePropertyLeave = () => {
1346
+ setTooltip(null);
1347
+ };
1348
+ const handleClose = useCallback(() => {
1349
+ setIsDialogMode(false);
1350
+ setFiberHistory([]);
1351
+ setTooltip(null);
1352
+ setSelectedFiber(null);
1353
+ setElement(null);
1354
+ setRect(null);
1355
+ }, []);
1356
+ useEffect(() => {
1357
+ const handleKeyDown = (e) => {
1358
+ if (e.key === "o" && (e.metaKey || e.ctrlKey) && rect) {
1359
+ e.preventDefault();
1360
+ const currentFiber = getFiberForDisplay();
1361
+ if (currentFiber) {
1362
+ setFiberHistory([currentFiber]);
1363
+ }
1364
+ setIsDialogMode(true);
1365
+ } else if (e.key === "Escape") {
1366
+ handleClose();
1367
+ }
1368
+ };
1369
+ window.addEventListener("keydown", handleKeyDown);
1370
+ return () => window.removeEventListener("keydown", handleKeyDown);
1371
+ }, [rect, getFiberForDisplay, handleClose]);
1372
+ useEffect(() => {
1373
+ if (!isDialogMode) {
1374
+ setTooltip(null);
1375
+ setFiberHistory([]);
1376
+ setSelectedFiber(null);
1377
+ setElement(null);
1378
+ setRect(null);
1379
+ }
1380
+ }, [isDialogMode]);
1381
+ useEffect(() => {
1382
+ const handleMouseMove = (event) => {
1383
+ if (isDialogMode) return;
1384
+ const isActive2 = isInstrumentationActive() || hasRDTHook();
1385
+ if (!isActive2) {
1386
+ setIsActive(false);
1387
+ return;
1388
+ }
1389
+ if (!dangerouslyRunInProduction) {
1390
+ const rdtHook = getRDTHook();
1391
+ for (const renderer of rdtHook.renderers.values()) {
1392
+ const buildType = detectReactBuildType(renderer);
1393
+ if (buildType === "production") {
1394
+ setIsActive(false);
1395
+ return;
1396
+ }
1397
+ }
1398
+ }
1399
+ if (!enabled) {
1400
+ setElement(null);
1401
+ setRect(null);
1402
+ setSelectedFiber(null);
1403
+ return;
1404
+ }
1405
+ if (!isDialogMode) {
1406
+ const element2 = document.elementFromPoint(
1407
+ event.clientX,
1408
+ event.clientY
1409
+ );
1410
+ if (!element2) return;
1411
+ setElement(element2);
1412
+ setRect(element2.getBoundingClientRect());
1413
+ setSelectedFiber(null);
1414
+ }
1415
+ };
1416
+ const throttledMouseMove = throttle(handleMouseMove, 16);
1417
+ document.addEventListener("mousemove", throttledMouseMove);
1418
+ return () => {
1419
+ document.removeEventListener("mousemove", throttledMouseMove);
1420
+ };
1421
+ }, [enabled, isDialogMode, dangerouslyRunInProduction]);
1422
+ useEffect(() => {
1423
+ if (!rect) return;
1424
+ const padding = 10;
1425
+ const inspectorWidth = 400;
1426
+ const inspectorHeight = 320;
1427
+ let left = rect.left + rect.width + padding;
1428
+ let top = rect.top;
1429
+ if (left + inspectorWidth > window.innerWidth) {
1430
+ left = Math.max(padding, rect.left - inspectorWidth - padding);
1431
+ }
1432
+ if (top >= rect.top && top <= rect.bottom) {
1433
+ if (rect.bottom + inspectorHeight + padding <= window.innerHeight) {
1434
+ top = rect.bottom + padding;
1435
+ } else if (rect.top - inspectorHeight - padding >= 0) {
1436
+ top = rect.top - inspectorHeight - padding;
1437
+ } else {
1438
+ top = window.innerHeight - inspectorHeight - padding;
1439
+ }
1440
+ }
1441
+ top = Math.max(
1442
+ padding,
1443
+ Math.min(top, window.innerHeight - inspectorHeight - padding)
1444
+ );
1445
+ left = Math.max(
1446
+ padding,
1447
+ Math.min(left, window.innerWidth - inspectorWidth - padding)
1448
+ );
1449
+ setPosition({ top, left });
1450
+ }, [rect]);
1451
+ useEffect(() => {
1452
+ var _a;
1453
+ if (selectedFiber) {
1454
+ const element2 = (_a = getNearestHostFiber(selectedFiber)) == null ? void 0 : _a.stateNode;
1455
+ if (element2) {
1456
+ setElement(element2);
1457
+ setRect(element2.getBoundingClientRect());
1458
+ }
1459
+ }
1460
+ }, [selectedFiber]);
1461
+ const handleBack = () => {
1462
+ const previousFiber = fiberHistory[fiberHistory.length - 1];
1463
+ if (previousFiber) {
1464
+ setFiberHistory((prev) => prev.slice(0, -1));
1465
+ setSelectedFiber(previousFiber);
1466
+ }
1467
+ };
1468
+ if (!rect || !isActive) return null;
1469
+ const fiber = getFiberForDisplay();
1470
+ if (!fiber) return null;
1471
+ let foundInspect = false;
1472
+ traverseFiber(
1473
+ fiber,
1474
+ (innerFiber) => {
1475
+ if (innerFiber.type === Inspector2) {
1476
+ foundInspect = true;
1477
+ return true;
1478
+ }
1479
+ },
1480
+ true
1481
+ );
1482
+ if (foundInspect) return null;
1483
+ const dialogStyle = isDialogMode ? {
1484
+ position: "fixed",
1485
+ top: "50%",
1486
+ left: "50%",
1487
+ transform: "translate(-50%, -50%)",
1488
+ width: "80vw",
1489
+ height: "80vh",
1490
+ maxWidth: "none",
1491
+ maxHeight: "none",
1492
+ padding: "2ch",
1493
+ boxShadow: "0 0 0 5px rgba(0, 0, 0, 0.3)",
1494
+ backgroundColor: "#1a1a1a",
1495
+ border: "1px solid #333",
1496
+ zIndex: 1e3
1497
+ } : {};
1498
+ const overlayStyle = isDialogMode ? {
1499
+ position: "fixed",
1500
+ top: 0,
1501
+ left: 0,
1502
+ right: 0,
1503
+ bottom: 0,
1504
+ backgroundColor: "rgba(0, 0, 0, 0.7)",
1505
+ zIndex: 999
1506
+ } : {};
1507
+ const fiberStack = fiber ? getFiberStack(fiber) : [];
1508
+ return /* @__PURE__ */ React17.createElement(React17.Fragment, null, isDialogMode && /* @__PURE__ */ React17.createElement(
1509
+ "div",
1510
+ {
1511
+ style: overlayStyle,
1512
+ onClick: handleClose,
1513
+ onKeyDown: (e) => {
1514
+ if (e.key === "Escape") {
1515
+ handleClose();
1516
+ }
1517
+ },
1518
+ role: "button",
1519
+ tabIndex: 0
1520
+ }
1521
+ ), /* @__PURE__ */ React17.createElement(
1522
+ "div",
1523
+ {
1524
+ style: __spreadValues({
1525
+ position: "fixed",
1526
+ backgroundColor: "#101010",
1527
+ color: "#FFF",
1528
+ zIndex: 50,
1529
+ padding: "1ch",
1530
+ width: "50ch",
1531
+ height: isDialogMode ? "80ch" : "40ch",
1532
+ transition: "all 150ms, z-index 0ms",
1533
+ overflow: "visible",
1534
+ boxShadow: "0 1px 3px 0 rgb(0 0 0 / 0.3)",
1535
+ border: "1px solid #282828",
1536
+ top: position.top,
1537
+ left: position.left,
1538
+ opacity: rect ? 1 : 0,
1539
+ transform: rect ? "translateY(0)" : "translateY(10px)",
1540
+ pointerEvents: rect ? "auto" : "none",
1541
+ display: "flex",
1542
+ flexDirection: "column"
1543
+ }, dialogStyle)
1544
+ },
1545
+ /* @__PURE__ */ React17.createElement(
1546
+ "div",
1547
+ {
1548
+ style: {
1549
+ display: "flex",
1550
+ justifyContent: "space-between",
1551
+ alignItems: "center"
1552
+ }
1553
+ },
1554
+ /* @__PURE__ */ React17.createElement("div", { style: { display: "flex", alignItems: "center", gap: "1ch" } }, fiberHistory.length > 0 && /* @__PURE__ */ React17.createElement(BackButton, { onClick: handleBack }), /* @__PURE__ */ React17.createElement(
1555
+ "h3",
1556
+ {
1557
+ style: {
1558
+ fontSize: "0.875rem",
1559
+ backgroundColor: "#161616",
1560
+ color: "#FFF",
1561
+ padding: "0 0.5ch",
1562
+ borderRadius: "0.125rem",
1563
+ width: "fit-content",
1564
+ margin: 0
1565
+ }
1566
+ },
1567
+ `<${typeof fiber.type === "string" ? fiber.type : getDisplayName(fiber.type) || "unknown"}>`,
1568
+ !isDialogMode && /* @__PURE__ */ React17.createElement(
1569
+ "span",
1570
+ {
1571
+ style: {
1572
+ marginLeft: "1ch",
1573
+ opacity: 0.5,
1574
+ fontSize: "0.75rem"
1575
+ }
1576
+ },
1577
+ `Press ${isMac ? "\u2318" : "ctrl"}O to expand`
1578
+ )
1579
+ )),
1580
+ isDialogMode && /* @__PURE__ */ React17.createElement(CloseButton, { onClick: handleClose })
1581
+ ),
1582
+ isDialogMode && /* @__PURE__ */ React17.createElement(
1583
+ "div",
1584
+ {
1585
+ style: {
1586
+ borderTop: "1px solid #282828",
1587
+ padding: "0.5ch 0",
1588
+ fontSize: "0.75rem",
1589
+ color: "#A0A0A0",
1590
+ whiteSpace: "nowrap",
1591
+ overflow: "hidden",
1592
+ textOverflow: "ellipsis"
1593
+ }
1594
+ },
1595
+ fiberStack.reverse().map((f, i, arr) => {
1596
+ const name = typeof f.type === "string" ? f.type : getDisplayName(f.type) || "unknown";
1597
+ if (!name) return null;
1598
+ return /* @__PURE__ */ React17.createElement(React17.Fragment, { key: getFiberId(f) }, /* @__PURE__ */ React17.createElement(
1599
+ BreadcrumbButton,
1600
+ {
1601
+ name,
1602
+ onClick: () => {
1603
+ var _a;
1604
+ if (selectedFiber) {
1605
+ setFiberHistory((prev) => [...prev, selectedFiber]);
1606
+ }
1607
+ setSelectedFiber(f);
1608
+ const element2 = (_a = getNearestHostFiber(f)) == null ? void 0 : _a.stateNode;
1609
+ if (element2) {
1610
+ setElement(element2);
1611
+ setRect(element2.getBoundingClientRect());
1612
+ }
1613
+ },
1614
+ onKeyDown: (e) => {
1615
+ var _a;
1616
+ if (e.key === "Enter" || e.key === " ") {
1617
+ if (selectedFiber) {
1618
+ setFiberHistory((prev) => [...prev, selectedFiber]);
1619
+ }
1620
+ setSelectedFiber(f);
1621
+ const element2 = (_a = getNearestHostFiber(f)) == null ? void 0 : _a.stateNode;
1622
+ if (element2) {
1623
+ setElement(element2);
1624
+ setRect(element2.getBoundingClientRect());
1625
+ }
1626
+ }
1627
+ }
1628
+ }
1629
+ ), i < arr.length - 1 && " > ");
1630
+ })
1631
+ ),
1632
+ /* @__PURE__ */ React17.createElement("div", { style: { flex: 1, overflow: "auto" } }, fiber && /* @__PURE__ */ React17.createElement(
1633
+ Inspector,
1634
+ {
1635
+ theme: theme3,
1636
+ data: fiber,
1637
+ expandLevel: 1,
1638
+ table: false,
1639
+ nodeRenderer: (props) => {
1640
+ const Component = props.depth === 0 ? ObjectRootLabel : ObjectLabel;
1641
+ return /* @__PURE__ */ React17.createElement(
1642
+ "span",
1643
+ {
1644
+ onMouseEnter: (e) => handlePropertyHover(e, props.name),
1645
+ onMouseLeave: handlePropertyLeave,
1646
+ style: {
1647
+ cursor: FIBER_PROP_EXPLANATIONS[props.name] ? "help" : "default",
1648
+ padding: "1px 0",
1649
+ display: "inline-block",
1650
+ fontWeight: FIBER_PROP_EXPLANATIONS[props.name] ? 500 : "normal"
1651
+ }
1652
+ },
1653
+ /* @__PURE__ */ React17.createElement(
1654
+ Component,
1655
+ {
1656
+ name: props.name,
1657
+ data: props.data,
1658
+ isNonenumerable: props.isNonenumerable
1659
+ }
1660
+ )
1661
+ );
1662
+ }
1663
+ }
1664
+ )),
1665
+ tooltip && /* @__PURE__ */ React17.createElement(
1666
+ "div",
1667
+ {
1668
+ style: {
1669
+ position: "absolute",
1670
+ zIndex: 1001,
1671
+ backgroundColor: "#161616",
1672
+ color: "#FFF",
1673
+ bottom: "2ch",
1674
+ right: "2ch",
1675
+ pointerEvents: "none",
1676
+ overflowY: "auto",
1677
+ padding: "1ch",
1678
+ fontSize: "1ch",
1679
+ border: "1px solid #282828",
1680
+ borderRadius: "0.25ch"
1681
+ }
1682
+ },
1683
+ tooltip
1684
+ )
1685
+ ), !isDialogMode && /* @__PURE__ */ React17.createElement(
1686
+ "div",
1687
+ {
1688
+ style: {
1689
+ position: "fixed",
1690
+ zIndex: 40,
1691
+ pointerEvents: "none",
1692
+ transition: "all 150ms",
1693
+ border: "1px dashed #505050",
1694
+ left: rect.left,
1695
+ top: rect.top,
1696
+ width: rect.width,
1697
+ height: rect.height,
1698
+ opacity: rect ? 1 : 0
1699
+ }
1700
+ }
1701
+ ));
1702
+ }
1703
+ );
1704
+ var Inspector2 = React17.memo((_a) => {
1705
+ var props = __objRest(_a, []);
1706
+ const [root, setRoot] = useState(null);
1707
+ useEffect(() => {
1708
+ const div = document.createElement("div");
1709
+ document.body.appendChild(div);
1710
+ const shadowRoot = div.attachShadow({ mode: "open" });
1711
+ setRoot(shadowRoot);
1712
+ return () => {
1713
+ document.body.removeChild(div);
1714
+ };
1715
+ }, []);
1716
+ if (!root) return null;
1717
+ return ReactDOM.createPortal(/* @__PURE__ */ React17.createElement(RawInspector, __spreadValues({}, props)), root);
1718
+ });
1719
+ var inspect_default = Inspector2;
1720
+
1721
+ export { Inspector2 as Inspector, RawInspector, inspect_default as default };