1 | "use strict";
|
---|
2 | var __create = Object.create;
|
---|
3 | var __defProp = Object.defineProperty;
|
---|
4 | var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
---|
5 | var __getOwnPropNames = Object.getOwnPropertyNames;
|
---|
6 | var __getProtoOf = Object.getPrototypeOf;
|
---|
7 | var __hasOwnProp = Object.prototype.hasOwnProperty;
|
---|
8 | var __commonJS = (cb, mod) => function __require() {
|
---|
9 | return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
---|
10 | };
|
---|
11 | var __export = (target, all) => {
|
---|
12 | for (var name in all)
|
---|
13 | __defProp(target, name, { get: all[name], enumerable: true });
|
---|
14 | };
|
---|
15 | var __copyProps = (to, from, except, desc) => {
|
---|
16 | if (from && typeof from === "object" || typeof from === "function") {
|
---|
17 | for (let key of __getOwnPropNames(from))
|
---|
18 | if (!__hasOwnProp.call(to, key) && key !== except)
|
---|
19 | __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
---|
20 | }
|
---|
21 | return to;
|
---|
22 | };
|
---|
23 | var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod));
|
---|
24 | var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
---|
25 |
|
---|
26 | // node_modules/is-object/index.js
|
---|
27 | var require_is_object = __commonJS({
|
---|
28 | "node_modules/is-object/index.js"(exports, module2) {
|
---|
29 | "use strict";
|
---|
30 | module2.exports = function isObject(x) {
|
---|
31 | return typeof x === "object" && x !== null;
|
---|
32 | };
|
---|
33 | }
|
---|
34 | });
|
---|
35 |
|
---|
36 | // node_modules/is-window/index.js
|
---|
37 | var require_is_window = __commonJS({
|
---|
38 | "node_modules/is-window/index.js"(exports, module2) {
|
---|
39 | "use strict";
|
---|
40 | module2.exports = function(obj) {
|
---|
41 | if (obj == null) {
|
---|
42 | return false;
|
---|
43 | }
|
---|
44 | var o = Object(obj);
|
---|
45 | return o === o.window;
|
---|
46 | };
|
---|
47 | }
|
---|
48 | });
|
---|
49 |
|
---|
50 | // node_modules/is-dom/index.js
|
---|
51 | var require_is_dom = __commonJS({
|
---|
52 | "node_modules/is-dom/index.js"(exports, module2) {
|
---|
53 | var isObject = require_is_object();
|
---|
54 | var isWindow = require_is_window();
|
---|
55 | function isNode(val) {
|
---|
56 | if (!isObject(val) || !isWindow(window) || typeof window.Node !== "function") {
|
---|
57 | return false;
|
---|
58 | }
|
---|
59 | return typeof val.nodeType === "number" && typeof val.nodeName === "string";
|
---|
60 | }
|
---|
61 | module2.exports = isNode;
|
---|
62 | }
|
---|
63 | });
|
---|
64 |
|
---|
65 | // src/index.tsx
|
---|
66 | var src_exports = {};
|
---|
67 | __export(src_exports, {
|
---|
68 | Inspector: () => Inspector,
|
---|
69 | ObjectInspector: () => themedObjectInspector,
|
---|
70 | ObjectLabel: () => ObjectLabel,
|
---|
71 | ObjectName: () => ObjectName,
|
---|
72 | ObjectPreview: () => ObjectPreview,
|
---|
73 | ObjectRootLabel: () => ObjectRootLabel,
|
---|
74 | ObjectValue: () => ObjectValue,
|
---|
75 | TableInspector: () => themedTableInspector,
|
---|
76 | chromeDark: () => theme,
|
---|
77 | chromeLight: () => theme2
|
---|
78 | });
|
---|
79 | module.exports = __toCommonJS(src_exports);
|
---|
80 |
|
---|
81 | // src/styles/themes/index.tsx
|
---|
82 | var themes_exports = {};
|
---|
83 | __export(themes_exports, {
|
---|
84 | chromeDark: () => theme,
|
---|
85 | chromeLight: () => theme2
|
---|
86 | });
|
---|
87 |
|
---|
88 | // src/styles/themes/chromeDark.tsx
|
---|
89 | var theme = {
|
---|
90 | BASE_FONT_FAMILY: "Menlo, monospace",
|
---|
91 | BASE_FONT_SIZE: "11px",
|
---|
92 | BASE_LINE_HEIGHT: 1.2,
|
---|
93 | BASE_BACKGROUND_COLOR: "rgb(36, 36, 36)",
|
---|
94 | BASE_COLOR: "rgb(213, 213, 213)",
|
---|
95 | OBJECT_PREVIEW_ARRAY_MAX_PROPERTIES: 10,
|
---|
96 | OBJECT_PREVIEW_OBJECT_MAX_PROPERTIES: 5,
|
---|
97 | OBJECT_NAME_COLOR: "rgb(227, 110, 236)",
|
---|
98 | OBJECT_VALUE_NULL_COLOR: "rgb(127, 127, 127)",
|
---|
99 | OBJECT_VALUE_UNDEFINED_COLOR: "rgb(127, 127, 127)",
|
---|
100 | OBJECT_VALUE_REGEXP_COLOR: "rgb(233, 63, 59)",
|
---|
101 | OBJECT_VALUE_STRING_COLOR: "rgb(233, 63, 59)",
|
---|
102 | OBJECT_VALUE_SYMBOL_COLOR: "rgb(233, 63, 59)",
|
---|
103 | OBJECT_VALUE_NUMBER_COLOR: "hsl(252, 100%, 75%)",
|
---|
104 | OBJECT_VALUE_BOOLEAN_COLOR: "hsl(252, 100%, 75%)",
|
---|
105 | OBJECT_VALUE_FUNCTION_PREFIX_COLOR: "rgb(85, 106, 242)",
|
---|
106 | HTML_TAG_COLOR: "rgb(93, 176, 215)",
|
---|
107 | HTML_TAGNAME_COLOR: "rgb(93, 176, 215)",
|
---|
108 | HTML_TAGNAME_TEXT_TRANSFORM: "lowercase",
|
---|
109 | HTML_ATTRIBUTE_NAME_COLOR: "rgb(155, 187, 220)",
|
---|
110 | HTML_ATTRIBUTE_VALUE_COLOR: "rgb(242, 151, 102)",
|
---|
111 | HTML_COMMENT_COLOR: "rgb(137, 137, 137)",
|
---|
112 | HTML_DOCTYPE_COLOR: "rgb(192, 192, 192)",
|
---|
113 | ARROW_COLOR: "rgb(145, 145, 145)",
|
---|
114 | ARROW_MARGIN_RIGHT: 3,
|
---|
115 | ARROW_FONT_SIZE: 12,
|
---|
116 | ARROW_ANIMATION_DURATION: "0",
|
---|
117 | TREENODE_FONT_FAMILY: "Menlo, monospace",
|
---|
118 | TREENODE_FONT_SIZE: "11px",
|
---|
119 | TREENODE_LINE_HEIGHT: 1.2,
|
---|
120 | TREENODE_PADDING_LEFT: 12,
|
---|
121 | TABLE_BORDER_COLOR: "rgb(85, 85, 85)",
|
---|
122 | TABLE_TH_BACKGROUND_COLOR: "rgb(44, 44, 44)",
|
---|
123 | TABLE_TH_HOVER_COLOR: "rgb(48, 48, 48)",
|
---|
124 | TABLE_SORT_ICON_COLOR: "black",
|
---|
125 | 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))",
|
---|
126 | TABLE_DATA_BACKGROUND_SIZE: "128px 32px"
|
---|
127 | };
|
---|
128 |
|
---|
129 | // src/styles/themes/chromeLight.tsx
|
---|
130 | var theme2 = {
|
---|
131 | BASE_FONT_FAMILY: "Menlo, monospace",
|
---|
132 | BASE_FONT_SIZE: "11px",
|
---|
133 | BASE_LINE_HEIGHT: 1.2,
|
---|
134 | BASE_BACKGROUND_COLOR: "white",
|
---|
135 | BASE_COLOR: "black",
|
---|
136 | OBJECT_PREVIEW_ARRAY_MAX_PROPERTIES: 10,
|
---|
137 | OBJECT_PREVIEW_OBJECT_MAX_PROPERTIES: 5,
|
---|
138 | OBJECT_NAME_COLOR: "rgb(136, 19, 145)",
|
---|
139 | OBJECT_VALUE_NULL_COLOR: "rgb(128, 128, 128)",
|
---|
140 | OBJECT_VALUE_UNDEFINED_COLOR: "rgb(128, 128, 128)",
|
---|
141 | OBJECT_VALUE_REGEXP_COLOR: "rgb(196, 26, 22)",
|
---|
142 | OBJECT_VALUE_STRING_COLOR: "rgb(196, 26, 22)",
|
---|
143 | OBJECT_VALUE_SYMBOL_COLOR: "rgb(196, 26, 22)",
|
---|
144 | OBJECT_VALUE_NUMBER_COLOR: "rgb(28, 0, 207)",
|
---|
145 | OBJECT_VALUE_BOOLEAN_COLOR: "rgb(28, 0, 207)",
|
---|
146 | OBJECT_VALUE_FUNCTION_PREFIX_COLOR: "rgb(13, 34, 170)",
|
---|
147 | HTML_TAG_COLOR: "rgb(168, 148, 166)",
|
---|
148 | HTML_TAGNAME_COLOR: "rgb(136, 18, 128)",
|
---|
149 | HTML_TAGNAME_TEXT_TRANSFORM: "lowercase",
|
---|
150 | HTML_ATTRIBUTE_NAME_COLOR: "rgb(153, 69, 0)",
|
---|
151 | HTML_ATTRIBUTE_VALUE_COLOR: "rgb(26, 26, 166)",
|
---|
152 | HTML_COMMENT_COLOR: "rgb(35, 110, 37)",
|
---|
153 | HTML_DOCTYPE_COLOR: "rgb(192, 192, 192)",
|
---|
154 | ARROW_COLOR: "#6e6e6e",
|
---|
155 | ARROW_MARGIN_RIGHT: 3,
|
---|
156 | ARROW_FONT_SIZE: 12,
|
---|
157 | ARROW_ANIMATION_DURATION: "0",
|
---|
158 | TREENODE_FONT_FAMILY: "Menlo, monospace",
|
---|
159 | TREENODE_FONT_SIZE: "11px",
|
---|
160 | TREENODE_LINE_HEIGHT: 1.2,
|
---|
161 | TREENODE_PADDING_LEFT: 12,
|
---|
162 | TABLE_BORDER_COLOR: "#aaa",
|
---|
163 | TABLE_TH_BACKGROUND_COLOR: "#eee",
|
---|
164 | TABLE_TH_HOVER_COLOR: "hsla(0, 0%, 90%, 1)",
|
---|
165 | TABLE_SORT_ICON_COLOR: "#6e6e6e",
|
---|
166 | TABLE_DATA_BACKGROUND_IMAGE: "linear-gradient(to bottom, white, white 50%, rgb(234, 243, 255) 50%, rgb(234, 243, 255))",
|
---|
167 | TABLE_DATA_BACKGROUND_SIZE: "128px 32px"
|
---|
168 | };
|
---|
169 |
|
---|
170 | // src/object-inspector/ObjectInspector.tsx
|
---|
171 | var import_react10 = __toESM(require("react"));
|
---|
172 |
|
---|
173 | // src/tree-view/TreeView.tsx
|
---|
174 | var import_react4 = __toESM(require("react"));
|
---|
175 |
|
---|
176 | // src/tree-view/ExpandedPathsContext.tsx
|
---|
177 | var import_react = require("react");
|
---|
178 | var ExpandedPathsContext = (0, import_react.createContext)([{}, () => {
|
---|
179 | }]);
|
---|
180 |
|
---|
181 | // src/tree-view/TreeNode.tsx
|
---|
182 | var import_react3 = __toESM(require("react"));
|
---|
183 |
|
---|
184 | // src/styles/styles.tsx
|
---|
185 | var import_react2 = __toESM(require("react"));
|
---|
186 |
|
---|
187 | // src/styles/unselectable.tsx
|
---|
188 | var unselectable = {
|
---|
189 | WebkitTouchCallout: "none",
|
---|
190 | WebkitUserSelect: "none",
|
---|
191 | KhtmlUserSelect: "none",
|
---|
192 | MozUserSelect: "none",
|
---|
193 | msUserSelect: "none",
|
---|
194 | OUserSelect: "none",
|
---|
195 | userSelect: "none"
|
---|
196 | };
|
---|
197 |
|
---|
198 | // src/styles/base.tsx
|
---|
199 | var createTheme = (theme3) => ({
|
---|
200 | DOMNodePreview: {
|
---|
201 | htmlOpenTag: {
|
---|
202 | base: {
|
---|
203 | color: theme3.HTML_TAG_COLOR
|
---|
204 | },
|
---|
205 | tagName: {
|
---|
206 | color: theme3.HTML_TAGNAME_COLOR,
|
---|
207 | textTransform: theme3.HTML_TAGNAME_TEXT_TRANSFORM
|
---|
208 | },
|
---|
209 | htmlAttributeName: {
|
---|
210 | color: theme3.HTML_ATTRIBUTE_NAME_COLOR
|
---|
211 | },
|
---|
212 | htmlAttributeValue: {
|
---|
213 | color: theme3.HTML_ATTRIBUTE_VALUE_COLOR
|
---|
214 | }
|
---|
215 | },
|
---|
216 | htmlCloseTag: {
|
---|
217 | base: {
|
---|
218 | color: theme3.HTML_TAG_COLOR
|
---|
219 | },
|
---|
220 | offsetLeft: {
|
---|
221 | marginLeft: -theme3.TREENODE_PADDING_LEFT
|
---|
222 | },
|
---|
223 | tagName: {
|
---|
224 | color: theme3.HTML_TAGNAME_COLOR,
|
---|
225 | textTransform: theme3.HTML_TAGNAME_TEXT_TRANSFORM
|
---|
226 | }
|
---|
227 | },
|
---|
228 | htmlComment: {
|
---|
229 | color: theme3.HTML_COMMENT_COLOR
|
---|
230 | },
|
---|
231 | htmlDoctype: {
|
---|
232 | color: theme3.HTML_DOCTYPE_COLOR
|
---|
233 | }
|
---|
234 | },
|
---|
235 | ObjectPreview: {
|
---|
236 | objectDescription: {
|
---|
237 | fontStyle: "italic"
|
---|
238 | },
|
---|
239 | preview: {
|
---|
240 | fontStyle: "italic"
|
---|
241 | },
|
---|
242 | arrayMaxProperties: theme3.OBJECT_PREVIEW_ARRAY_MAX_PROPERTIES,
|
---|
243 | objectMaxProperties: theme3.OBJECT_PREVIEW_OBJECT_MAX_PROPERTIES
|
---|
244 | },
|
---|
245 | ObjectName: {
|
---|
246 | base: {
|
---|
247 | color: theme3.OBJECT_NAME_COLOR
|
---|
248 | },
|
---|
249 | dimmed: {
|
---|
250 | opacity: 0.6
|
---|
251 | }
|
---|
252 | },
|
---|
253 | ObjectValue: {
|
---|
254 | objectValueNull: {
|
---|
255 | color: theme3.OBJECT_VALUE_NULL_COLOR
|
---|
256 | },
|
---|
257 | objectValueUndefined: {
|
---|
258 | color: theme3.OBJECT_VALUE_UNDEFINED_COLOR
|
---|
259 | },
|
---|
260 | objectValueRegExp: {
|
---|
261 | color: theme3.OBJECT_VALUE_REGEXP_COLOR
|
---|
262 | },
|
---|
263 | objectValueString: {
|
---|
264 | color: theme3.OBJECT_VALUE_STRING_COLOR
|
---|
265 | },
|
---|
266 | objectValueSymbol: {
|
---|
267 | color: theme3.OBJECT_VALUE_SYMBOL_COLOR
|
---|
268 | },
|
---|
269 | objectValueNumber: {
|
---|
270 | color: theme3.OBJECT_VALUE_NUMBER_COLOR
|
---|
271 | },
|
---|
272 | objectValueBoolean: {
|
---|
273 | color: theme3.OBJECT_VALUE_BOOLEAN_COLOR
|
---|
274 | },
|
---|
275 | objectValueFunctionPrefix: {
|
---|
276 | color: theme3.OBJECT_VALUE_FUNCTION_PREFIX_COLOR,
|
---|
277 | fontStyle: "italic"
|
---|
278 | },
|
---|
279 | objectValueFunctionName: {
|
---|
280 | fontStyle: "italic"
|
---|
281 | }
|
---|
282 | },
|
---|
283 | TreeView: {
|
---|
284 | treeViewOutline: {
|
---|
285 | padding: 0,
|
---|
286 | margin: 0,
|
---|
287 | listStyleType: "none"
|
---|
288 | }
|
---|
289 | },
|
---|
290 | TreeNode: {
|
---|
291 | treeNodeBase: {
|
---|
292 | color: theme3.BASE_COLOR,
|
---|
293 | backgroundColor: theme3.BASE_BACKGROUND_COLOR,
|
---|
294 | lineHeight: theme3.TREENODE_LINE_HEIGHT,
|
---|
295 | cursor: "default",
|
---|
296 | boxSizing: "border-box",
|
---|
297 | listStyle: "none",
|
---|
298 | fontFamily: theme3.TREENODE_FONT_FAMILY,
|
---|
299 | fontSize: theme3.TREENODE_FONT_SIZE
|
---|
300 | },
|
---|
301 | treeNodePreviewContainer: {},
|
---|
302 | treeNodePlaceholder: {
|
---|
303 | whiteSpace: "pre",
|
---|
304 | fontSize: theme3.ARROW_FONT_SIZE,
|
---|
305 | marginRight: theme3.ARROW_MARGIN_RIGHT,
|
---|
306 | ...unselectable
|
---|
307 | },
|
---|
308 | treeNodeArrow: {
|
---|
309 | base: {
|
---|
310 | color: theme3.ARROW_COLOR,
|
---|
311 | display: "inline-block",
|
---|
312 | fontSize: theme3.ARROW_FONT_SIZE,
|
---|
313 | marginRight: theme3.ARROW_MARGIN_RIGHT,
|
---|
314 | ...parseFloat(theme3.ARROW_ANIMATION_DURATION) > 0 ? {
|
---|
315 | transition: `transform ${theme3.ARROW_ANIMATION_DURATION} ease 0s`
|
---|
316 | } : {},
|
---|
317 | ...unselectable
|
---|
318 | },
|
---|
319 | expanded: {
|
---|
320 | WebkitTransform: "rotateZ(90deg)",
|
---|
321 | MozTransform: "rotateZ(90deg)",
|
---|
322 | transform: "rotateZ(90deg)"
|
---|
323 | },
|
---|
324 | collapsed: {
|
---|
325 | WebkitTransform: "rotateZ(0deg)",
|
---|
326 | MozTransform: "rotateZ(0deg)",
|
---|
327 | transform: "rotateZ(0deg)"
|
---|
328 | }
|
---|
329 | },
|
---|
330 | treeNodeChildNodesContainer: {
|
---|
331 | margin: 0,
|
---|
332 | paddingLeft: theme3.TREENODE_PADDING_LEFT
|
---|
333 | }
|
---|
334 | },
|
---|
335 | TableInspector: {
|
---|
336 | base: {
|
---|
337 | color: theme3.BASE_COLOR,
|
---|
338 | position: "relative",
|
---|
339 | border: `1px solid ${theme3.TABLE_BORDER_COLOR}`,
|
---|
340 | fontFamily: theme3.BASE_FONT_FAMILY,
|
---|
341 | fontSize: theme3.BASE_FONT_SIZE,
|
---|
342 | lineHeight: "120%",
|
---|
343 | boxSizing: "border-box",
|
---|
344 | cursor: "default"
|
---|
345 | }
|
---|
346 | },
|
---|
347 | TableInspectorHeaderContainer: {
|
---|
348 | base: {
|
---|
349 | top: 0,
|
---|
350 | height: "17px",
|
---|
351 | left: 0,
|
---|
352 | right: 0,
|
---|
353 | overflowX: "hidden"
|
---|
354 | },
|
---|
355 | table: {
|
---|
356 | tableLayout: "fixed",
|
---|
357 | borderSpacing: 0,
|
---|
358 | borderCollapse: "separate",
|
---|
359 | height: "100%",
|
---|
360 | width: "100%",
|
---|
361 | margin: 0
|
---|
362 | }
|
---|
363 | },
|
---|
364 | TableInspectorDataContainer: {
|
---|
365 | tr: {
|
---|
366 | display: "table-row"
|
---|
367 | },
|
---|
368 | td: {
|
---|
369 | boxSizing: "border-box",
|
---|
370 | border: "none",
|
---|
371 | height: "16px",
|
---|
372 | verticalAlign: "top",
|
---|
373 | padding: "1px 4px",
|
---|
374 | WebkitUserSelect: "text",
|
---|
375 | whiteSpace: "nowrap",
|
---|
376 | textOverflow: "ellipsis",
|
---|
377 | overflow: "hidden",
|
---|
378 | lineHeight: "14px"
|
---|
379 | },
|
---|
380 | div: {
|
---|
381 | position: "static",
|
---|
382 | top: "17px",
|
---|
383 | bottom: 0,
|
---|
384 | overflowY: "overlay",
|
---|
385 | transform: "translateZ(0)",
|
---|
386 | left: 0,
|
---|
387 | right: 0,
|
---|
388 | overflowX: "hidden"
|
---|
389 | },
|
---|
390 | table: {
|
---|
391 | positon: "static",
|
---|
392 | left: 0,
|
---|
393 | top: 0,
|
---|
394 | right: 0,
|
---|
395 | bottom: 0,
|
---|
396 | borderTop: "0 none transparent",
|
---|
397 | margin: 0,
|
---|
398 | backgroundImage: theme3.TABLE_DATA_BACKGROUND_IMAGE,
|
---|
399 | backgroundSize: theme3.TABLE_DATA_BACKGROUND_SIZE,
|
---|
400 | tableLayout: "fixed",
|
---|
401 | borderSpacing: 0,
|
---|
402 | borderCollapse: "separate",
|
---|
403 | width: "100%",
|
---|
404 | fontSize: theme3.BASE_FONT_SIZE,
|
---|
405 | lineHeight: "120%"
|
---|
406 | }
|
---|
407 | },
|
---|
408 | TableInspectorTH: {
|
---|
409 | base: {
|
---|
410 | position: "relative",
|
---|
411 | height: "auto",
|
---|
412 | textAlign: "left",
|
---|
413 | backgroundColor: theme3.TABLE_TH_BACKGROUND_COLOR,
|
---|
414 | borderBottom: `1px solid ${theme3.TABLE_BORDER_COLOR}`,
|
---|
415 | fontWeight: "normal",
|
---|
416 | verticalAlign: "middle",
|
---|
417 | padding: "0 4px",
|
---|
418 | whiteSpace: "nowrap",
|
---|
419 | textOverflow: "ellipsis",
|
---|
420 | overflow: "hidden",
|
---|
421 | lineHeight: "14px",
|
---|
422 | ":hover": {
|
---|
423 | backgroundColor: theme3.TABLE_TH_HOVER_COLOR
|
---|
424 | }
|
---|
425 | },
|
---|
426 | div: {
|
---|
427 | whiteSpace: "nowrap",
|
---|
428 | textOverflow: "ellipsis",
|
---|
429 | overflow: "hidden",
|
---|
430 | fontSize: theme3.BASE_FONT_SIZE,
|
---|
431 | lineHeight: "120%"
|
---|
432 | }
|
---|
433 | },
|
---|
434 | TableInspectorLeftBorder: {
|
---|
435 | none: {
|
---|
436 | borderLeft: "none"
|
---|
437 | },
|
---|
438 | solid: {
|
---|
439 | borderLeft: `1px solid ${theme3.TABLE_BORDER_COLOR}`
|
---|
440 | }
|
---|
441 | },
|
---|
442 | TableInspectorSortIcon: {
|
---|
443 | display: "block",
|
---|
444 | marginRight: 3,
|
---|
445 | width: 8,
|
---|
446 | height: 7,
|
---|
447 | marginTop: -7,
|
---|
448 | color: theme3.TABLE_SORT_ICON_COLOR,
|
---|
449 | fontSize: 12,
|
---|
450 | ...unselectable
|
---|
451 | }
|
---|
452 | });
|
---|
453 |
|
---|
454 | // src/styles/styles.tsx
|
---|
455 | var DEFAULT_THEME_NAME = "chromeLight";
|
---|
456 | var ThemeContext = (0, import_react2.createContext)(createTheme(themes_exports[DEFAULT_THEME_NAME]));
|
---|
457 | var useStyles = (baseStylesKey) => {
|
---|
458 | const themeStyles = (0, import_react2.useContext)(ThemeContext);
|
---|
459 | return themeStyles[baseStylesKey];
|
---|
460 | };
|
---|
461 | var themeAcceptor = (WrappedComponent) => {
|
---|
462 | const ThemeAcceptor = ({ theme: theme3 = DEFAULT_THEME_NAME, ...restProps }) => {
|
---|
463 | const themeStyles = (0, import_react2.useMemo)(() => {
|
---|
464 | switch (Object.prototype.toString.call(theme3)) {
|
---|
465 | case "[object String]":
|
---|
466 | return createTheme(themes_exports[theme3]);
|
---|
467 | case "[object Object]":
|
---|
468 | return createTheme(theme3);
|
---|
469 | default:
|
---|
470 | return createTheme(themes_exports[DEFAULT_THEME_NAME]);
|
---|
471 | }
|
---|
472 | }, [theme3]);
|
---|
473 | return /* @__PURE__ */ import_react2.default.createElement(ThemeContext.Provider, {
|
---|
474 | value: themeStyles
|
---|
475 | }, /* @__PURE__ */ import_react2.default.createElement(WrappedComponent, {
|
---|
476 | ...restProps
|
---|
477 | }));
|
---|
478 | };
|
---|
479 | return ThemeAcceptor;
|
---|
480 | };
|
---|
481 |
|
---|
482 | // src/tree-view/TreeNode.tsx
|
---|
483 | var Arrow = ({ expanded, styles }) => /* @__PURE__ */ import_react3.default.createElement("span", {
|
---|
484 | style: {
|
---|
485 | ...styles.base,
|
---|
486 | ...expanded ? styles.expanded : styles.collapsed
|
---|
487 | }
|
---|
488 | }, "\u25B6");
|
---|
489 | var TreeNode = (0, import_react3.memo)((props) => {
|
---|
490 | props = {
|
---|
491 | expanded: true,
|
---|
492 | nodeRenderer: ({ name }) => /* @__PURE__ */ import_react3.default.createElement("span", null, name),
|
---|
493 | onClick: () => {
|
---|
494 | },
|
---|
495 | shouldShowArrow: false,
|
---|
496 | shouldShowPlaceholder: true,
|
---|
497 | ...props
|
---|
498 | };
|
---|
499 | const { expanded, onClick, children, nodeRenderer, title, shouldShowArrow, shouldShowPlaceholder } = props;
|
---|
500 | const styles = useStyles("TreeNode");
|
---|
501 | const NodeRenderer = nodeRenderer;
|
---|
502 | return /* @__PURE__ */ import_react3.default.createElement("li", {
|
---|
503 | "aria-expanded": expanded,
|
---|
504 | role: "treeitem",
|
---|
505 | style: styles.treeNodeBase,
|
---|
506 | title
|
---|
507 | }, /* @__PURE__ */ import_react3.default.createElement("div", {
|
---|
508 | style: styles.treeNodePreviewContainer,
|
---|
509 | onClick
|
---|
510 | }, shouldShowArrow || import_react3.Children.count(children) > 0 ? /* @__PURE__ */ import_react3.default.createElement(Arrow, {
|
---|
511 | expanded,
|
---|
512 | styles: styles.treeNodeArrow
|
---|
513 | }) : shouldShowPlaceholder && /* @__PURE__ */ import_react3.default.createElement("span", {
|
---|
514 | style: styles.treeNodePlaceholder
|
---|
515 | }, "\xA0"), /* @__PURE__ */ import_react3.default.createElement(NodeRenderer, {
|
---|
516 | ...props
|
---|
517 | })), /* @__PURE__ */ import_react3.default.createElement("ol", {
|
---|
518 | role: "group",
|
---|
519 | style: styles.treeNodeChildNodesContainer
|
---|
520 | }, expanded ? children : void 0));
|
---|
521 | });
|
---|
522 |
|
---|
523 | // src/tree-view/pathUtils.ts
|
---|
524 | var DEFAULT_ROOT_PATH = "$";
|
---|
525 | var WILDCARD = "*";
|
---|
526 | function hasChildNodes(data, dataIterator) {
|
---|
527 | return !dataIterator(data).next().done;
|
---|
528 | }
|
---|
529 | var wildcardPathsFromLevel = (level) => {
|
---|
530 | return Array.from({ length: level }, (_, i) => [DEFAULT_ROOT_PATH].concat(Array.from({ length: i }, () => "*")).join("."));
|
---|
531 | };
|
---|
532 | var getExpandedPaths = (data, dataIterator, expandPaths, expandLevel, prevExpandedPaths) => {
|
---|
533 | const wildcardPaths = [].concat(wildcardPathsFromLevel(expandLevel)).concat(expandPaths).filter((path) => typeof path === "string");
|
---|
534 | const expandedPaths = [];
|
---|
535 | wildcardPaths.forEach((wildcardPath) => {
|
---|
536 | const keyPaths = wildcardPath.split(".");
|
---|
537 | const populatePaths = (curData, curPath, depth) => {
|
---|
538 | if (depth === keyPaths.length) {
|
---|
539 | expandedPaths.push(curPath);
|
---|
540 | return;
|
---|
541 | }
|
---|
542 | const key = keyPaths[depth];
|
---|
543 | if (depth === 0) {
|
---|
544 | if (hasChildNodes(curData, dataIterator) && (key === DEFAULT_ROOT_PATH || key === WILDCARD)) {
|
---|
545 | populatePaths(curData, DEFAULT_ROOT_PATH, depth + 1);
|
---|
546 | }
|
---|
547 | } else {
|
---|
548 | if (key === WILDCARD) {
|
---|
549 | for (const { name, data: data2 } of dataIterator(curData)) {
|
---|
550 | if (hasChildNodes(data2, dataIterator)) {
|
---|
551 | populatePaths(data2, `${curPath}.${name}`, depth + 1);
|
---|
552 | }
|
---|
553 | }
|
---|
554 | } else {
|
---|
555 | const value = curData[key];
|
---|
556 | if (hasChildNodes(value, dataIterator)) {
|
---|
557 | populatePaths(value, `${curPath}.${key}`, depth + 1);
|
---|
558 | }
|
---|
559 | }
|
---|
560 | }
|
---|
561 | };
|
---|
562 | populatePaths(data, "", 0);
|
---|
563 | });
|
---|
564 | return expandedPaths.reduce((obj, path) => {
|
---|
565 | obj[path] = true;
|
---|
566 | return obj;
|
---|
567 | }, { ...prevExpandedPaths });
|
---|
568 | };
|
---|
569 |
|
---|
570 | // src/tree-view/TreeView.tsx
|
---|
571 | var ConnectedTreeNode = (0, import_react4.memo)((props) => {
|
---|
572 | const { data, dataIterator, path, depth, nodeRenderer } = props;
|
---|
573 | const [expandedPaths, setExpandedPaths] = (0, import_react4.useContext)(ExpandedPathsContext);
|
---|
574 | const nodeHasChildNodes = hasChildNodes(data, dataIterator);
|
---|
575 | const expanded = !!expandedPaths[path];
|
---|
576 | const handleClick = (0, import_react4.useCallback)(() => nodeHasChildNodes && setExpandedPaths((prevExpandedPaths) => ({
|
---|
577 | ...prevExpandedPaths,
|
---|
578 | [path]: !expanded
|
---|
579 | })), [nodeHasChildNodes, setExpandedPaths, path, expanded]);
|
---|
580 | return /* @__PURE__ */ import_react4.default.createElement(TreeNode, {
|
---|
581 | expanded,
|
---|
582 | onClick: handleClick,
|
---|
583 | shouldShowArrow: nodeHasChildNodes,
|
---|
584 | shouldShowPlaceholder: depth > 0,
|
---|
585 | nodeRenderer,
|
---|
586 | ...props
|
---|
587 | }, expanded ? [...dataIterator(data)].map(({ name, data: data2, ...renderNodeProps }) => {
|
---|
588 | return /* @__PURE__ */ import_react4.default.createElement(ConnectedTreeNode, {
|
---|
589 | name,
|
---|
590 | data: data2,
|
---|
591 | depth: depth + 1,
|
---|
592 | path: `${path}.${name}`,
|
---|
593 | key: name,
|
---|
594 | dataIterator,
|
---|
595 | nodeRenderer,
|
---|
596 | ...renderNodeProps
|
---|
597 | });
|
---|
598 | }) : null);
|
---|
599 | });
|
---|
600 | var TreeView = (0, import_react4.memo)(({ name, data, dataIterator, nodeRenderer, expandPaths, expandLevel }) => {
|
---|
601 | const styles = useStyles("TreeView");
|
---|
602 | const stateAndSetter = (0, import_react4.useState)({});
|
---|
603 | const [, setExpandedPaths] = stateAndSetter;
|
---|
604 | (0, import_react4.useLayoutEffect)(() => setExpandedPaths((prevExpandedPaths) => getExpandedPaths(data, dataIterator, expandPaths, expandLevel, prevExpandedPaths)), [data, dataIterator, expandPaths, expandLevel]);
|
---|
605 | return /* @__PURE__ */ import_react4.default.createElement(ExpandedPathsContext.Provider, {
|
---|
606 | value: stateAndSetter
|
---|
607 | }, /* @__PURE__ */ import_react4.default.createElement("ol", {
|
---|
608 | role: "tree",
|
---|
609 | style: styles.treeViewOutline
|
---|
610 | }, /* @__PURE__ */ import_react4.default.createElement(ConnectedTreeNode, {
|
---|
611 | name,
|
---|
612 | data,
|
---|
613 | dataIterator,
|
---|
614 | depth: 0,
|
---|
615 | path: DEFAULT_ROOT_PATH,
|
---|
616 | nodeRenderer
|
---|
617 | })));
|
---|
618 | });
|
---|
619 |
|
---|
620 | // src/object-inspector/ObjectRootLabel.tsx
|
---|
621 | var import_react8 = __toESM(require("react"));
|
---|
622 |
|
---|
623 | // src/object/ObjectName.tsx
|
---|
624 | var import_react5 = __toESM(require("react"));
|
---|
625 | var ObjectName = ({ name, dimmed = false, styles = {} }) => {
|
---|
626 | const themeStyles = useStyles("ObjectName");
|
---|
627 | const appliedStyles = {
|
---|
628 | ...themeStyles.base,
|
---|
629 | ...dimmed ? themeStyles["dimmed"] : {},
|
---|
630 | ...styles
|
---|
631 | };
|
---|
632 | return /* @__PURE__ */ import_react5.default.createElement("span", {
|
---|
633 | style: appliedStyles
|
---|
634 | }, name);
|
---|
635 | };
|
---|
636 |
|
---|
637 | // src/object-inspector/ObjectPreview.tsx
|
---|
638 | var import_react7 = __toESM(require("react"));
|
---|
639 |
|
---|
640 | // src/object/ObjectValue.tsx
|
---|
641 | var import_react6 = __toESM(require("react"));
|
---|
642 | var ObjectValue = ({ object, styles }) => {
|
---|
643 | const themeStyles = useStyles("ObjectValue");
|
---|
644 | const mkStyle = (key) => ({ ...themeStyles[key], ...styles });
|
---|
645 | switch (typeof object) {
|
---|
646 | case "bigint":
|
---|
647 | return /* @__PURE__ */ import_react6.default.createElement("span", {
|
---|
648 | style: mkStyle("objectValueNumber")
|
---|
649 | }, String(object), "n");
|
---|
650 | case "number":
|
---|
651 | return /* @__PURE__ */ import_react6.default.createElement("span", {
|
---|
652 | style: mkStyle("objectValueNumber")
|
---|
653 | }, String(object));
|
---|
654 | case "string":
|
---|
655 | return /* @__PURE__ */ import_react6.default.createElement("span", {
|
---|
656 | style: mkStyle("objectValueString")
|
---|
657 | }, '"', object, '"');
|
---|
658 | case "boolean":
|
---|
659 | return /* @__PURE__ */ import_react6.default.createElement("span", {
|
---|
660 | style: mkStyle("objectValueBoolean")
|
---|
661 | }, String(object));
|
---|
662 | case "undefined":
|
---|
663 | return /* @__PURE__ */ import_react6.default.createElement("span", {
|
---|
664 | style: mkStyle("objectValueUndefined")
|
---|
665 | }, "undefined");
|
---|
666 | case "object":
|
---|
667 | if (object === null) {
|
---|
668 | return /* @__PURE__ */ import_react6.default.createElement("span", {
|
---|
669 | style: mkStyle("objectValueNull")
|
---|
670 | }, "null");
|
---|
671 | }
|
---|
672 | if (object instanceof Date) {
|
---|
673 | return /* @__PURE__ */ import_react6.default.createElement("span", null, object.toString());
|
---|
674 | }
|
---|
675 | if (object instanceof RegExp) {
|
---|
676 | return /* @__PURE__ */ import_react6.default.createElement("span", {
|
---|
677 | style: mkStyle("objectValueRegExp")
|
---|
678 | }, object.toString());
|
---|
679 | }
|
---|
680 | if (Array.isArray(object)) {
|
---|
681 | return /* @__PURE__ */ import_react6.default.createElement("span", null, `Array(${object.length})`);
|
---|
682 | }
|
---|
683 | if (!object.constructor) {
|
---|
684 | return /* @__PURE__ */ import_react6.default.createElement("span", null, "Object");
|
---|
685 | }
|
---|
686 | if (typeof object.constructor.isBuffer === "function" && object.constructor.isBuffer(object)) {
|
---|
687 | return /* @__PURE__ */ import_react6.default.createElement("span", null, `Buffer[${object.length}]`);
|
---|
688 | }
|
---|
689 | return /* @__PURE__ */ import_react6.default.createElement("span", null, object.constructor.name);
|
---|
690 | case "function":
|
---|
691 | return /* @__PURE__ */ import_react6.default.createElement("span", null, /* @__PURE__ */ import_react6.default.createElement("span", {
|
---|
692 | style: mkStyle("objectValueFunctionPrefix")
|
---|
693 | }, "\u0192\xA0"), /* @__PURE__ */ import_react6.default.createElement("span", {
|
---|
694 | style: mkStyle("objectValueFunctionName")
|
---|
695 | }, object.name, "()"));
|
---|
696 | case "symbol":
|
---|
697 | return /* @__PURE__ */ import_react6.default.createElement("span", {
|
---|
698 | style: mkStyle("objectValueSymbol")
|
---|
699 | }, object.toString());
|
---|
700 | default:
|
---|
701 | return /* @__PURE__ */ import_react6.default.createElement("span", null);
|
---|
702 | }
|
---|
703 | };
|
---|
704 |
|
---|
705 | // src/utils/objectPrototype.tsx
|
---|
706 | var hasOwnProperty = Object.prototype.hasOwnProperty;
|
---|
707 | var propertyIsEnumerable = Object.prototype.propertyIsEnumerable;
|
---|
708 |
|
---|
709 | // src/utils/propertyUtils.tsx
|
---|
710 | function getPropertyValue(object, propertyName) {
|
---|
711 | const propertyDescriptor = Object.getOwnPropertyDescriptor(object, propertyName);
|
---|
712 | if (propertyDescriptor.get) {
|
---|
713 | try {
|
---|
714 | return propertyDescriptor.get();
|
---|
715 | } catch {
|
---|
716 | return propertyDescriptor.get;
|
---|
717 | }
|
---|
718 | }
|
---|
719 | return object[propertyName];
|
---|
720 | }
|
---|
721 |
|
---|
722 | // src/object-inspector/ObjectPreview.tsx
|
---|
723 | function intersperse(arr, sep) {
|
---|
724 | if (arr.length === 0) {
|
---|
725 | return [];
|
---|
726 | }
|
---|
727 | return arr.slice(1).reduce((xs, x) => xs.concat([sep, x]), [arr[0]]);
|
---|
728 | }
|
---|
729 | var ObjectPreview = ({ data }) => {
|
---|
730 | const styles = useStyles("ObjectPreview");
|
---|
731 | const object = data;
|
---|
732 | if (typeof object !== "object" || object === null || object instanceof Date || object instanceof RegExp) {
|
---|
733 | return /* @__PURE__ */ import_react7.default.createElement(ObjectValue, {
|
---|
734 | object
|
---|
735 | });
|
---|
736 | }
|
---|
737 | if (Array.isArray(object)) {
|
---|
738 | const maxProperties = styles.arrayMaxProperties;
|
---|
739 | const previewArray = object.slice(0, maxProperties).map((element, index) => /* @__PURE__ */ import_react7.default.createElement(ObjectValue, {
|
---|
740 | key: index,
|
---|
741 | object: element
|
---|
742 | }));
|
---|
743 | if (object.length > maxProperties) {
|
---|
744 | previewArray.push(/* @__PURE__ */ import_react7.default.createElement("span", {
|
---|
745 | key: "ellipsis"
|
---|
746 | }, "\u2026"));
|
---|
747 | }
|
---|
748 | const arrayLength = object.length;
|
---|
749 | return /* @__PURE__ */ import_react7.default.createElement(import_react7.default.Fragment, null, /* @__PURE__ */ import_react7.default.createElement("span", {
|
---|
750 | style: styles.objectDescription
|
---|
751 | }, arrayLength === 0 ? `` : `(${arrayLength})\xA0`), /* @__PURE__ */ import_react7.default.createElement("span", {
|
---|
752 | style: styles.preview
|
---|
753 | }, "[", intersperse(previewArray, ", "), "]"));
|
---|
754 | } else {
|
---|
755 | const maxProperties = styles.objectMaxProperties;
|
---|
756 | const propertyNodes = [];
|
---|
757 | for (const propertyName in object) {
|
---|
758 | if (hasOwnProperty.call(object, propertyName)) {
|
---|
759 | let ellipsis;
|
---|
760 | if (propertyNodes.length === maxProperties - 1 && Object.keys(object).length > maxProperties) {
|
---|
761 | ellipsis = /* @__PURE__ */ import_react7.default.createElement("span", {
|
---|
762 | key: "ellipsis"
|
---|
763 | }, "\u2026");
|
---|
764 | }
|
---|
765 | const propertyValue = getPropertyValue(object, propertyName);
|
---|
766 | propertyNodes.push(/* @__PURE__ */ import_react7.default.createElement("span", {
|
---|
767 | key: propertyName
|
---|
768 | }, /* @__PURE__ */ import_react7.default.createElement(ObjectName, {
|
---|
769 | name: propertyName || `""`
|
---|
770 | }), ":\xA0", /* @__PURE__ */ import_react7.default.createElement(ObjectValue, {
|
---|
771 | object: propertyValue
|
---|
772 | }), ellipsis));
|
---|
773 | if (ellipsis)
|
---|
774 | break;
|
---|
775 | }
|
---|
776 | }
|
---|
777 | const objectConstructorName = object.constructor ? object.constructor.name : "Object";
|
---|
778 | return /* @__PURE__ */ import_react7.default.createElement(import_react7.default.Fragment, null, /* @__PURE__ */ import_react7.default.createElement("span", {
|
---|
779 | style: styles.objectDescription
|
---|
780 | }, objectConstructorName === "Object" ? "" : `${objectConstructorName} `), /* @__PURE__ */ import_react7.default.createElement("span", {
|
---|
781 | style: styles.preview
|
---|
782 | }, "{", intersperse(propertyNodes, ", "), "}"));
|
---|
783 | }
|
---|
784 | };
|
---|
785 |
|
---|
786 | // src/object-inspector/ObjectRootLabel.tsx
|
---|
787 | var ObjectRootLabel = ({ name, data }) => {
|
---|
788 | if (typeof name === "string") {
|
---|
789 | return /* @__PURE__ */ import_react8.default.createElement("span", null, /* @__PURE__ */ import_react8.default.createElement(ObjectName, {
|
---|
790 | name
|
---|
791 | }), /* @__PURE__ */ import_react8.default.createElement("span", null, ": "), /* @__PURE__ */ import_react8.default.createElement(ObjectPreview, {
|
---|
792 | data
|
---|
793 | }));
|
---|
794 | } else {
|
---|
795 | return /* @__PURE__ */ import_react8.default.createElement(ObjectPreview, {
|
---|
796 | data
|
---|
797 | });
|
---|
798 | }
|
---|
799 | };
|
---|
800 |
|
---|
801 | // src/object-inspector/ObjectLabel.tsx
|
---|
802 | var import_react9 = __toESM(require("react"));
|
---|
803 | var ObjectLabel = ({ name, data, isNonenumerable = false }) => {
|
---|
804 | const object = data;
|
---|
805 | return /* @__PURE__ */ import_react9.default.createElement("span", null, typeof name === "string" ? /* @__PURE__ */ import_react9.default.createElement(ObjectName, {
|
---|
806 | name,
|
---|
807 | dimmed: isNonenumerable
|
---|
808 | }) : /* @__PURE__ */ import_react9.default.createElement(ObjectPreview, {
|
---|
809 | data: name
|
---|
810 | }), /* @__PURE__ */ import_react9.default.createElement("span", null, ": "), /* @__PURE__ */ import_react9.default.createElement(ObjectValue, {
|
---|
811 | object
|
---|
812 | }));
|
---|
813 | };
|
---|
814 |
|
---|
815 | // src/object-inspector/ObjectInspector.tsx
|
---|
816 | var createIterator = (showNonenumerable, sortObjectKeys) => {
|
---|
817 | const objectIterator = function* (data) {
|
---|
818 | const shouldIterate = typeof data === "object" && data !== null || typeof data === "function";
|
---|
819 | if (!shouldIterate)
|
---|
820 | return;
|
---|
821 | const dataIsArray = Array.isArray(data);
|
---|
822 | if (!dataIsArray && data[Symbol.iterator]) {
|
---|
823 | let i = 0;
|
---|
824 | for (const entry of data) {
|
---|
825 | if (Array.isArray(entry) && entry.length === 2) {
|
---|
826 | const [k, v] = entry;
|
---|
827 | yield {
|
---|
828 | name: k,
|
---|
829 | data: v
|
---|
830 | };
|
---|
831 | } else {
|
---|
832 | yield {
|
---|
833 | name: i.toString(),
|
---|
834 | data: entry
|
---|
835 | };
|
---|
836 | }
|
---|
837 | i++;
|
---|
838 | }
|
---|
839 | } else {
|
---|
840 | const keys = Object.getOwnPropertyNames(data);
|
---|
841 | if (sortObjectKeys === true && !dataIsArray) {
|
---|
842 | keys.sort();
|
---|
843 | } else if (typeof sortObjectKeys === "function") {
|
---|
844 | keys.sort(sortObjectKeys);
|
---|
845 | }
|
---|
846 | for (const propertyName of keys) {
|
---|
847 | if (propertyIsEnumerable.call(data, propertyName)) {
|
---|
848 | const propertyValue = getPropertyValue(data, propertyName);
|
---|
849 | yield {
|
---|
850 | name: propertyName || `""`,
|
---|
851 | data: propertyValue
|
---|
852 | };
|
---|
853 | } else if (showNonenumerable) {
|
---|
854 | let propertyValue;
|
---|
855 | try {
|
---|
856 | propertyValue = getPropertyValue(data, propertyName);
|
---|
857 | } catch (e) {
|
---|
858 | }
|
---|
859 | if (propertyValue !== void 0) {
|
---|
860 | yield {
|
---|
861 | name: propertyName,
|
---|
862 | data: propertyValue,
|
---|
863 | isNonenumerable: true
|
---|
864 | };
|
---|
865 | }
|
---|
866 | }
|
---|
867 | }
|
---|
868 | if (showNonenumerable && data !== Object.prototype) {
|
---|
869 | yield {
|
---|
870 | name: "__proto__",
|
---|
871 | data: Object.getPrototypeOf(data),
|
---|
872 | isNonenumerable: true
|
---|
873 | };
|
---|
874 | }
|
---|
875 | }
|
---|
876 | };
|
---|
877 | return objectIterator;
|
---|
878 | };
|
---|
879 | var defaultNodeRenderer = ({ depth, name, data, isNonenumerable }) => depth === 0 ? /* @__PURE__ */ import_react10.default.createElement(ObjectRootLabel, {
|
---|
880 | name,
|
---|
881 | data
|
---|
882 | }) : /* @__PURE__ */ import_react10.default.createElement(ObjectLabel, {
|
---|
883 | name,
|
---|
884 | data,
|
---|
885 | isNonenumerable
|
---|
886 | });
|
---|
887 | var ObjectInspector = ({ showNonenumerable = false, sortObjectKeys, nodeRenderer, ...treeViewProps }) => {
|
---|
888 | const dataIterator = createIterator(showNonenumerable, sortObjectKeys);
|
---|
889 | const renderer = nodeRenderer ? nodeRenderer : defaultNodeRenderer;
|
---|
890 | return /* @__PURE__ */ import_react10.default.createElement(TreeView, {
|
---|
891 | nodeRenderer: renderer,
|
---|
892 | dataIterator,
|
---|
893 | ...treeViewProps
|
---|
894 | });
|
---|
895 | };
|
---|
896 | var themedObjectInspector = themeAcceptor(ObjectInspector);
|
---|
897 |
|
---|
898 | // src/table-inspector/TableInspector.tsx
|
---|
899 | var import_react14 = __toESM(require("react"));
|
---|
900 |
|
---|
901 | // src/table-inspector/getHeaders.ts
|
---|
902 | function getHeaders(data) {
|
---|
903 | if (typeof data === "object") {
|
---|
904 | let rowHeaders = [];
|
---|
905 | if (Array.isArray(data)) {
|
---|
906 | const nRows = data.length;
|
---|
907 | rowHeaders = [...Array(nRows).keys()];
|
---|
908 | } else if (data !== null) {
|
---|
909 | rowHeaders = Object.keys(data);
|
---|
910 | }
|
---|
911 | const colHeaders = rowHeaders.reduce((colHeaders2, rowHeader) => {
|
---|
912 | const row = data[rowHeader];
|
---|
913 | if (typeof row === "object" && row !== null) {
|
---|
914 | const cols = Object.keys(row);
|
---|
915 | cols.reduce((xs, x) => {
|
---|
916 | if (!xs.includes(x)) {
|
---|
917 | xs.push(x);
|
---|
918 | }
|
---|
919 | return xs;
|
---|
920 | }, colHeaders2);
|
---|
921 | }
|
---|
922 | return colHeaders2;
|
---|
923 | }, []);
|
---|
924 | return {
|
---|
925 | rowHeaders,
|
---|
926 | colHeaders
|
---|
927 | };
|
---|
928 | }
|
---|
929 | return void 0;
|
---|
930 | }
|
---|
931 |
|
---|
932 | // src/table-inspector/DataContainer.tsx
|
---|
933 | var import_react11 = __toESM(require("react"));
|
---|
934 | var DataContainer = ({ rows, columns, rowsData }) => {
|
---|
935 | const styles = useStyles("TableInspectorDataContainer");
|
---|
936 | const borderStyles = useStyles("TableInspectorLeftBorder");
|
---|
937 | return /* @__PURE__ */ import_react11.default.createElement("div", {
|
---|
938 | style: styles.div
|
---|
939 | }, /* @__PURE__ */ import_react11.default.createElement("table", {
|
---|
940 | style: styles.table
|
---|
941 | }, /* @__PURE__ */ import_react11.default.createElement("colgroup", null), /* @__PURE__ */ import_react11.default.createElement("tbody", null, rows.map((row, i) => /* @__PURE__ */ import_react11.default.createElement("tr", {
|
---|
942 | key: row,
|
---|
943 | style: styles.tr
|
---|
944 | }, /* @__PURE__ */ import_react11.default.createElement("td", {
|
---|
945 | style: { ...styles.td, ...borderStyles.none }
|
---|
946 | }, row), columns.map((column) => {
|
---|
947 | const rowData = rowsData[i];
|
---|
948 | if (typeof rowData === "object" && rowData !== null && hasOwnProperty.call(rowData, column)) {
|
---|
949 | return /* @__PURE__ */ import_react11.default.createElement("td", {
|
---|
950 | key: column,
|
---|
951 | style: { ...styles.td, ...borderStyles.solid }
|
---|
952 | }, /* @__PURE__ */ import_react11.default.createElement(ObjectValue, {
|
---|
953 | object: rowData[column]
|
---|
954 | }));
|
---|
955 | } else {
|
---|
956 | return /* @__PURE__ */ import_react11.default.createElement("td", {
|
---|
957 | key: column,
|
---|
958 | style: { ...styles.td, ...borderStyles.solid }
|
---|
959 | });
|
---|
960 | }
|
---|
961 | }))))));
|
---|
962 | };
|
---|
963 |
|
---|
964 | // src/table-inspector/HeaderContainer.tsx
|
---|
965 | var import_react13 = __toESM(require("react"));
|
---|
966 |
|
---|
967 | // src/table-inspector/TH.tsx
|
---|
968 | var import_react12 = __toESM(require("react"));
|
---|
969 | var SortIconContainer = (props) => /* @__PURE__ */ import_react12.default.createElement("div", {
|
---|
970 | style: {
|
---|
971 | position: "absolute",
|
---|
972 | top: 1,
|
---|
973 | right: 0,
|
---|
974 | bottom: 1,
|
---|
975 | display: "flex",
|
---|
976 | alignItems: "center"
|
---|
977 | }
|
---|
978 | }, props.children);
|
---|
979 | var SortIcon = ({ sortAscending }) => {
|
---|
980 | const styles = useStyles("TableInspectorSortIcon");
|
---|
981 | const glyph = sortAscending ? "\u25B2" : "\u25BC";
|
---|
982 | return /* @__PURE__ */ import_react12.default.createElement("div", {
|
---|
983 | style: styles
|
---|
984 | }, glyph);
|
---|
985 | };
|
---|
986 | var TH = ({
|
---|
987 | sortAscending = false,
|
---|
988 | sorted = false,
|
---|
989 | onClick = void 0,
|
---|
990 | borderStyle = {},
|
---|
991 | children,
|
---|
992 | ...thProps
|
---|
993 | }) => {
|
---|
994 | const styles = useStyles("TableInspectorTH");
|
---|
995 | const [hovered, setHovered] = (0, import_react12.useState)(false);
|
---|
996 | const handleMouseEnter = (0, import_react12.useCallback)(() => setHovered(true), []);
|
---|
997 | const handleMouseLeave = (0, import_react12.useCallback)(() => setHovered(false), []);
|
---|
998 | return /* @__PURE__ */ import_react12.default.createElement("th", {
|
---|
999 | ...thProps,
|
---|
1000 | style: {
|
---|
1001 | ...styles.base,
|
---|
1002 | ...borderStyle,
|
---|
1003 | ...hovered ? styles.base[":hover"] : {}
|
---|
1004 | },
|
---|
1005 | onMouseEnter: handleMouseEnter,
|
---|
1006 | onMouseLeave: handleMouseLeave,
|
---|
1007 | onClick
|
---|
1008 | }, /* @__PURE__ */ import_react12.default.createElement("div", {
|
---|
1009 | style: styles.div
|
---|
1010 | }, children), sorted && /* @__PURE__ */ import_react12.default.createElement(SortIconContainer, null, /* @__PURE__ */ import_react12.default.createElement(SortIcon, {
|
---|
1011 | sortAscending
|
---|
1012 | })));
|
---|
1013 | };
|
---|
1014 |
|
---|
1015 | // src/table-inspector/HeaderContainer.tsx
|
---|
1016 | var HeaderContainer = ({
|
---|
1017 | indexColumnText = "(index)",
|
---|
1018 | columns = [],
|
---|
1019 | sorted,
|
---|
1020 | sortIndexColumn,
|
---|
1021 | sortColumn,
|
---|
1022 | sortAscending,
|
---|
1023 | onTHClick,
|
---|
1024 | onIndexTHClick
|
---|
1025 | }) => {
|
---|
1026 | const styles = useStyles("TableInspectorHeaderContainer");
|
---|
1027 | const borderStyles = useStyles("TableInspectorLeftBorder");
|
---|
1028 | return /* @__PURE__ */ import_react13.default.createElement("div", {
|
---|
1029 | style: styles.base
|
---|
1030 | }, /* @__PURE__ */ import_react13.default.createElement("table", {
|
---|
1031 | style: styles.table
|
---|
1032 | }, /* @__PURE__ */ import_react13.default.createElement("tbody", null, /* @__PURE__ */ import_react13.default.createElement("tr", null, /* @__PURE__ */ import_react13.default.createElement(TH, {
|
---|
1033 | borderStyle: borderStyles.none,
|
---|
1034 | sorted: sorted && sortIndexColumn,
|
---|
1035 | sortAscending,
|
---|
1036 | onClick: onIndexTHClick
|
---|
1037 | }, indexColumnText), columns.map((column) => /* @__PURE__ */ import_react13.default.createElement(TH, {
|
---|
1038 | borderStyle: borderStyles.solid,
|
---|
1039 | key: column,
|
---|
1040 | sorted: sorted && sortColumn === column,
|
---|
1041 | sortAscending,
|
---|
1042 | onClick: onTHClick.bind(null, column)
|
---|
1043 | }, column))))));
|
---|
1044 | };
|
---|
1045 |
|
---|
1046 | // src/table-inspector/TableInspector.tsx
|
---|
1047 | var TableInspector = ({
|
---|
1048 | data,
|
---|
1049 | columns
|
---|
1050 | }) => {
|
---|
1051 | const styles = useStyles("TableInspector");
|
---|
1052 | const [{ sorted, sortIndexColumn, sortColumn, sortAscending }, setState] = (0, import_react14.useState)({
|
---|
1053 | sorted: false,
|
---|
1054 | sortIndexColumn: false,
|
---|
1055 | sortColumn: void 0,
|
---|
1056 | sortAscending: false
|
---|
1057 | });
|
---|
1058 | const handleIndexTHClick = (0, import_react14.useCallback)(() => {
|
---|
1059 | setState(({ sortIndexColumn: sortIndexColumn2, sortAscending: sortAscending2 }) => ({
|
---|
1060 | sorted: true,
|
---|
1061 | sortIndexColumn: true,
|
---|
1062 | sortColumn: void 0,
|
---|
1063 | sortAscending: sortIndexColumn2 ? !sortAscending2 : true
|
---|
1064 | }));
|
---|
1065 | }, []);
|
---|
1066 | const handleTHClick = (0, import_react14.useCallback)((col) => {
|
---|
1067 | setState(({ sortColumn: sortColumn2, sortAscending: sortAscending2 }) => ({
|
---|
1068 | sorted: true,
|
---|
1069 | sortIndexColumn: false,
|
---|
1070 | sortColumn: col,
|
---|
1071 | sortAscending: col === sortColumn2 ? !sortAscending2 : true
|
---|
1072 | }));
|
---|
1073 | }, []);
|
---|
1074 | if (typeof data !== "object" || data === null) {
|
---|
1075 | return /* @__PURE__ */ import_react14.default.createElement("div", null);
|
---|
1076 | }
|
---|
1077 | let { rowHeaders, colHeaders } = getHeaders(data);
|
---|
1078 | if (columns !== void 0) {
|
---|
1079 | colHeaders = columns;
|
---|
1080 | }
|
---|
1081 | let rowsData = rowHeaders.map((rowHeader) => data[rowHeader]);
|
---|
1082 | let columnDataWithRowIndexes;
|
---|
1083 | if (sortColumn !== void 0) {
|
---|
1084 | columnDataWithRowIndexes = rowsData.map((rowData, index) => {
|
---|
1085 | if (typeof rowData === "object" && rowData !== null) {
|
---|
1086 | const columnData = rowData[sortColumn];
|
---|
1087 | return [columnData, index];
|
---|
1088 | }
|
---|
1089 | return [void 0, index];
|
---|
1090 | });
|
---|
1091 | } else {
|
---|
1092 | if (sortIndexColumn) {
|
---|
1093 | columnDataWithRowIndexes = rowHeaders.map((rowData, index) => {
|
---|
1094 | const columnData = rowHeaders[index];
|
---|
1095 | return [columnData, index];
|
---|
1096 | });
|
---|
1097 | }
|
---|
1098 | }
|
---|
1099 | if (columnDataWithRowIndexes !== void 0) {
|
---|
1100 | const comparator = (mapper, ascending) => {
|
---|
1101 | return (a, b) => {
|
---|
1102 | const v1 = mapper(a);
|
---|
1103 | const v2 = mapper(b);
|
---|
1104 | const type1 = typeof v1;
|
---|
1105 | const type2 = typeof v2;
|
---|
1106 | const lt = (v12, v22) => {
|
---|
1107 | if (v12 < v22) {
|
---|
1108 | return -1;
|
---|
1109 | } else if (v12 > v22) {
|
---|
1110 | return 1;
|
---|
1111 | } else {
|
---|
1112 | return 0;
|
---|
1113 | }
|
---|
1114 | };
|
---|
1115 | let result;
|
---|
1116 | if (type1 === type2) {
|
---|
1117 | result = lt(v1, v2);
|
---|
1118 | } else {
|
---|
1119 | const order = {
|
---|
1120 | string: 0,
|
---|
1121 | number: 1,
|
---|
1122 | object: 2,
|
---|
1123 | symbol: 3,
|
---|
1124 | boolean: 4,
|
---|
1125 | undefined: 5,
|
---|
1126 | function: 6
|
---|
1127 | };
|
---|
1128 | result = lt(order[type1], order[type2]);
|
---|
1129 | }
|
---|
1130 | if (!ascending)
|
---|
1131 | result = -result;
|
---|
1132 | return result;
|
---|
1133 | };
|
---|
1134 | };
|
---|
1135 | const sortedRowIndexes = columnDataWithRowIndexes.sort(comparator((item) => item[0], sortAscending)).map((item) => item[1]);
|
---|
1136 | rowHeaders = sortedRowIndexes.map((i) => rowHeaders[i]);
|
---|
1137 | rowsData = sortedRowIndexes.map((i) => rowsData[i]);
|
---|
1138 | }
|
---|
1139 | return /* @__PURE__ */ import_react14.default.createElement("div", {
|
---|
1140 | style: styles.base
|
---|
1141 | }, /* @__PURE__ */ import_react14.default.createElement(HeaderContainer, {
|
---|
1142 | columns: colHeaders,
|
---|
1143 | sorted,
|
---|
1144 | sortIndexColumn,
|
---|
1145 | sortColumn,
|
---|
1146 | sortAscending,
|
---|
1147 | onTHClick: handleTHClick,
|
---|
1148 | onIndexTHClick: handleIndexTHClick
|
---|
1149 | }), /* @__PURE__ */ import_react14.default.createElement(DataContainer, {
|
---|
1150 | rows: rowHeaders,
|
---|
1151 | columns: colHeaders,
|
---|
1152 | rowsData
|
---|
1153 | }));
|
---|
1154 | };
|
---|
1155 | var themedTableInspector = themeAcceptor(TableInspector);
|
---|
1156 |
|
---|
1157 | // src/dom-inspector/DOMInspector.tsx
|
---|
1158 | var import_react16 = __toESM(require("react"));
|
---|
1159 |
|
---|
1160 | // src/dom-inspector/DOMNodePreview.tsx
|
---|
1161 | var import_react15 = __toESM(require("react"));
|
---|
1162 |
|
---|
1163 | // src/dom-inspector/shouldInline.tsx
|
---|
1164 | var TEXT_NODE_MAX_INLINE_CHARS = 80;
|
---|
1165 | 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;
|
---|
1166 |
|
---|
1167 | // src/dom-inspector/DOMNodePreview.tsx
|
---|
1168 | var OpenTag = ({ tagName, attributes, styles }) => {
|
---|
1169 | return /* @__PURE__ */ import_react15.default.createElement("span", {
|
---|
1170 | style: styles.base
|
---|
1171 | }, "<", /* @__PURE__ */ import_react15.default.createElement("span", {
|
---|
1172 | style: styles.tagName
|
---|
1173 | }, tagName), (() => {
|
---|
1174 | if (attributes) {
|
---|
1175 | const attributeNodes = [];
|
---|
1176 | for (let i = 0; i < attributes.length; i++) {
|
---|
1177 | const attribute = attributes[i];
|
---|
1178 | attributeNodes.push(/* @__PURE__ */ import_react15.default.createElement("span", {
|
---|
1179 | key: i
|
---|
1180 | }, " ", /* @__PURE__ */ import_react15.default.createElement("span", {
|
---|
1181 | style: styles.htmlAttributeName
|
---|
1182 | }, attribute.name), '="', /* @__PURE__ */ import_react15.default.createElement("span", {
|
---|
1183 | style: styles.htmlAttributeValue
|
---|
1184 | }, attribute.value), '"'));
|
---|
1185 | }
|
---|
1186 | return attributeNodes;
|
---|
1187 | }
|
---|
1188 | })(), ">");
|
---|
1189 | };
|
---|
1190 | var CloseTag = ({ tagName, isChildNode = false, styles }) => /* @__PURE__ */ import_react15.default.createElement("span", {
|
---|
1191 | style: Object.assign({}, styles.base, isChildNode && styles.offsetLeft)
|
---|
1192 | }, "</", /* @__PURE__ */ import_react15.default.createElement("span", {
|
---|
1193 | style: styles.tagName
|
---|
1194 | }, tagName), ">");
|
---|
1195 | var nameByNodeType = {
|
---|
1196 | 1: "ELEMENT_NODE",
|
---|
1197 | 3: "TEXT_NODE",
|
---|
1198 | 7: "PROCESSING_INSTRUCTION_NODE",
|
---|
1199 | 8: "COMMENT_NODE",
|
---|
1200 | 9: "DOCUMENT_NODE",
|
---|
1201 | 10: "DOCUMENT_TYPE_NODE",
|
---|
1202 | 11: "DOCUMENT_FRAGMENT_NODE"
|
---|
1203 | };
|
---|
1204 | var DOMNodePreview = ({ isCloseTag, data, expanded }) => {
|
---|
1205 | const styles = useStyles("DOMNodePreview");
|
---|
1206 | if (isCloseTag) {
|
---|
1207 | return /* @__PURE__ */ import_react15.default.createElement(CloseTag, {
|
---|
1208 | styles: styles.htmlCloseTag,
|
---|
1209 | isChildNode: true,
|
---|
1210 | tagName: data.tagName
|
---|
1211 | });
|
---|
1212 | }
|
---|
1213 | switch (data.nodeType) {
|
---|
1214 | case Node.ELEMENT_NODE:
|
---|
1215 | return /* @__PURE__ */ import_react15.default.createElement("span", null, /* @__PURE__ */ import_react15.default.createElement(OpenTag, {
|
---|
1216 | tagName: data.tagName,
|
---|
1217 | attributes: data.attributes,
|
---|
1218 | styles: styles.htmlOpenTag
|
---|
1219 | }), shouldInline(data) ? data.textContent : !expanded && "\u2026", !expanded && /* @__PURE__ */ import_react15.default.createElement(CloseTag, {
|
---|
1220 | tagName: data.tagName,
|
---|
1221 | styles: styles.htmlCloseTag
|
---|
1222 | }));
|
---|
1223 | case Node.TEXT_NODE:
|
---|
1224 | return /* @__PURE__ */ import_react15.default.createElement("span", null, data.textContent);
|
---|
1225 | case Node.CDATA_SECTION_NODE:
|
---|
1226 | return /* @__PURE__ */ import_react15.default.createElement("span", null, "<![CDATA[" + data.textContent + "]]>");
|
---|
1227 | case Node.COMMENT_NODE:
|
---|
1228 | return /* @__PURE__ */ import_react15.default.createElement("span", {
|
---|
1229 | style: styles.htmlComment
|
---|
1230 | }, "<!--", data.textContent, "-->");
|
---|
1231 | case Node.PROCESSING_INSTRUCTION_NODE:
|
---|
1232 | return /* @__PURE__ */ import_react15.default.createElement("span", null, data.nodeName);
|
---|
1233 | case Node.DOCUMENT_TYPE_NODE:
|
---|
1234 | return /* @__PURE__ */ import_react15.default.createElement("span", {
|
---|
1235 | style: styles.htmlDoctype
|
---|
1236 | }, "<!DOCTYPE ", data.name, data.publicId ? ` PUBLIC "${data.publicId}"` : "", !data.publicId && data.systemId ? " SYSTEM" : "", data.systemId ? ` "${data.systemId}"` : "", ">");
|
---|
1237 | case Node.DOCUMENT_NODE:
|
---|
1238 | return /* @__PURE__ */ import_react15.default.createElement("span", null, data.nodeName);
|
---|
1239 | case Node.DOCUMENT_FRAGMENT_NODE:
|
---|
1240 | return /* @__PURE__ */ import_react15.default.createElement("span", null, data.nodeName);
|
---|
1241 | default:
|
---|
1242 | return /* @__PURE__ */ import_react15.default.createElement("span", null, nameByNodeType[data.nodeType]);
|
---|
1243 | }
|
---|
1244 | };
|
---|
1245 |
|
---|
1246 | // src/dom-inspector/DOMInspector.tsx
|
---|
1247 | var domIterator = function* (data) {
|
---|
1248 | if (data && data.childNodes) {
|
---|
1249 | const textInlined = shouldInline(data);
|
---|
1250 | if (textInlined) {
|
---|
1251 | return;
|
---|
1252 | }
|
---|
1253 | for (let i = 0; i < data.childNodes.length; i++) {
|
---|
1254 | const node = data.childNodes[i];
|
---|
1255 | if (node.nodeType === Node.TEXT_NODE && node.textContent.trim().length === 0)
|
---|
1256 | continue;
|
---|
1257 | yield {
|
---|
1258 | name: `${node.tagName}[${i}]`,
|
---|
1259 | data: node
|
---|
1260 | };
|
---|
1261 | }
|
---|
1262 | if (data.tagName) {
|
---|
1263 | yield {
|
---|
1264 | name: "CLOSE_TAG",
|
---|
1265 | data: {
|
---|
1266 | tagName: data.tagName
|
---|
1267 | },
|
---|
1268 | isCloseTag: true
|
---|
1269 | };
|
---|
1270 | }
|
---|
1271 | }
|
---|
1272 | };
|
---|
1273 | var DOMInspector = (props) => {
|
---|
1274 | return /* @__PURE__ */ import_react16.default.createElement(TreeView, {
|
---|
1275 | nodeRenderer: DOMNodePreview,
|
---|
1276 | dataIterator: domIterator,
|
---|
1277 | ...props
|
---|
1278 | });
|
---|
1279 | };
|
---|
1280 | var themedDOMInspector = themeAcceptor(DOMInspector);
|
---|
1281 |
|
---|
1282 | // src/index.tsx
|
---|
1283 | var import_react17 = __toESM(require("react"));
|
---|
1284 | var import_is_dom = __toESM(require_is_dom());
|
---|
1285 | var Inspector = ({ table = false, data, ...rest }) => {
|
---|
1286 | if (table) {
|
---|
1287 | return /* @__PURE__ */ import_react17.default.createElement(themedTableInspector, {
|
---|
1288 | data,
|
---|
1289 | ...rest
|
---|
1290 | });
|
---|
1291 | }
|
---|
1292 | if ((0, import_is_dom.default)(data))
|
---|
1293 | return /* @__PURE__ */ import_react17.default.createElement(themedDOMInspector, {
|
---|
1294 | data,
|
---|
1295 | ...rest
|
---|
1296 | });
|
---|
1297 | return /* @__PURE__ */ import_react17.default.createElement(themedObjectInspector, {
|
---|
1298 | data,
|
---|
1299 | ...rest
|
---|
1300 | });
|
---|
1301 | };
|
---|
1302 | // Annotate the CommonJS export names for ESM import in node:
|
---|
1303 | 0 && (module.exports = {
|
---|
1304 | Inspector,
|
---|
1305 | ObjectInspector,
|
---|
1306 | ObjectLabel,
|
---|
1307 | ObjectName,
|
---|
1308 | ObjectPreview,
|
---|
1309 | ObjectRootLabel,
|
---|
1310 | ObjectValue,
|
---|
1311 | TableInspector,
|
---|
1312 | chromeDark,
|
---|
1313 | chromeLight
|
---|
1314 | });
|
---|
1315 | //# sourceMappingURL=index.js.map |
---|