sidakram-bippy 0.2.24

Sign up to get free protection for your applications and to get access to all the features.
@@ -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 };