@superblocksteam/library 2.0.34 → 2.0.35-next.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/build-manifest-BNJahcH4.js +6 -0
- package/dist/build-manifest-BNJahcH4.js.map +1 -0
- package/dist/devtools-consolidated-BJ2tPWBk.js +212 -0
- package/dist/devtools-consolidated-BJ2tPWBk.js.map +1 -0
- package/dist/early-console-buffer-DWTLgla0.js +109 -0
- package/dist/early-console-buffer-DWTLgla0.js.map +1 -0
- package/dist/index.css +16 -34148
- package/dist/index.css.map +1 -0
- package/dist/index.d.ts +1388 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11414 -185
- package/dist/index.js.map +1 -1
- package/dist/logs-ivxzrJPP.js +31 -0
- package/dist/logs-ivxzrJPP.js.map +1 -0
- package/dist/root-store-OkumbU1B.js +4564 -0
- package/dist/root-store-OkumbU1B.js.map +1 -0
- package/dist/root-store-Z42RSY5l.js +4 -0
- package/dist/utils-BCrSLIhM.js +3 -0
- package/dist/utils-CCBWAYIM.js +45 -0
- package/dist/utils-CCBWAYIM.js.map +1 -0
- package/package.json +15 -28
- package/dist/allPaths-BiumKu08.js +0 -17
- package/dist/allPaths-BiumKu08.js.map +0 -1
- package/dist/allPaths-DVZye-qX.js +0 -17
- package/dist/allPaths-DVZye-qX.js.map +0 -1
- package/dist/allPathsLoader-BmHfoSD_.js +0 -22
- package/dist/allPathsLoader-BmHfoSD_.js.map +0 -1
- package/dist/allPathsLoader-DRmGASlD.js +0 -22
- package/dist/allPathsLoader-DRmGASlD.js.map +0 -1
- package/dist/devtools-consolidated-C22ZSOdp.js +0 -590
- package/dist/devtools-consolidated-C22ZSOdp.js.map +0 -1
- package/dist/icons-BPtVE6ue.js +0 -58
- package/dist/icons-BPtVE6ue.js.map +0 -1
- package/dist/index-BxzKdlqH.js +0 -1353
- package/dist/index-BxzKdlqH.js.map +0 -1
- package/dist/index-CdXfIz8N.js +0 -216319
- package/dist/index-CdXfIz8N.js.map +0 -1
- package/dist/index-DIJYif9G.js +0 -1341
- package/dist/index-DIJYif9G.js.map +0 -1
- package/dist/index-DIn-fanT.js +0 -1353
- package/dist/index-DIn-fanT.js.map +0 -1
- package/dist/index-LHtbj0-V.js +0 -1341
- package/dist/index-LHtbj0-V.js.map +0 -1
- package/dist/logs-BfdjooW0.js +0 -1475
- package/dist/logs-BfdjooW0.js.map +0 -1
- package/dist/splitPathsBySizeLoader-De1h8uYk.js +0 -34
- package/dist/splitPathsBySizeLoader-De1h8uYk.js.map +0 -1
- package/dist/splitPathsBySizeLoader-Df5pOIDq.js +0 -34
- package/dist/splitPathsBySizeLoader-Df5pOIDq.js.map +0 -1
|
@@ -1,590 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
|
-
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
|
-
import { e as toJS, o as observer, j as jsxRuntimeExports, m as makeAutoObservable } from "./index-CdXfIz8N.js";
|
|
5
|
-
import { useRef, createElement, useState, useEffect, useId, useCallback } from "react";
|
|
6
|
-
import { createPortal } from "react-dom";
|
|
7
|
-
const isBoolean = (data) => {
|
|
8
|
-
return typeof data === "boolean" || data instanceof Boolean;
|
|
9
|
-
};
|
|
10
|
-
const isNumber = (data) => {
|
|
11
|
-
return typeof data === "number" || data instanceof Number;
|
|
12
|
-
};
|
|
13
|
-
const isBigInt = (data) => {
|
|
14
|
-
return typeof data === "bigint" || data instanceof BigInt;
|
|
15
|
-
};
|
|
16
|
-
const isDate = (data) => {
|
|
17
|
-
return !!data && data instanceof Date;
|
|
18
|
-
};
|
|
19
|
-
const isString = (data) => {
|
|
20
|
-
return typeof data === "string" || data instanceof String;
|
|
21
|
-
};
|
|
22
|
-
const isArray = (data) => {
|
|
23
|
-
return Array.isArray(data);
|
|
24
|
-
};
|
|
25
|
-
const isObject = (data) => {
|
|
26
|
-
return typeof data === "object" && data !== null;
|
|
27
|
-
};
|
|
28
|
-
const isFunction = (data) => {
|
|
29
|
-
return !!data && data instanceof Object && typeof data === "function";
|
|
30
|
-
};
|
|
31
|
-
function quoteString(value, quoted) {
|
|
32
|
-
if (quoted === void 0) {
|
|
33
|
-
quoted = false;
|
|
34
|
-
}
|
|
35
|
-
return !value || quoted ? `"${value}"` : value;
|
|
36
|
-
}
|
|
37
|
-
function quoteStringValue(value, quoted, stringify) {
|
|
38
|
-
if (stringify) {
|
|
39
|
-
return JSON.stringify(value);
|
|
40
|
-
}
|
|
41
|
-
return quoted ? `"${value}"` : value;
|
|
42
|
-
}
|
|
43
|
-
function ExpandableObject(_ref) {
|
|
44
|
-
let {
|
|
45
|
-
field,
|
|
46
|
-
value,
|
|
47
|
-
data,
|
|
48
|
-
lastElement,
|
|
49
|
-
openBracket,
|
|
50
|
-
closeBracket,
|
|
51
|
-
level,
|
|
52
|
-
style,
|
|
53
|
-
shouldExpandNode,
|
|
54
|
-
clickToExpandNode,
|
|
55
|
-
outerRef,
|
|
56
|
-
beforeExpandChange
|
|
57
|
-
} = _ref;
|
|
58
|
-
const shouldExpandNodeCalledRef = useRef(false);
|
|
59
|
-
const [expanded, setExpanded] = useState(() => shouldExpandNode(level, value, field));
|
|
60
|
-
const expanderButtonRef = useRef(null);
|
|
61
|
-
useEffect(() => {
|
|
62
|
-
if (!shouldExpandNodeCalledRef.current) {
|
|
63
|
-
shouldExpandNodeCalledRef.current = true;
|
|
64
|
-
} else {
|
|
65
|
-
setExpanded(shouldExpandNode(level, value, field));
|
|
66
|
-
}
|
|
67
|
-
}, [shouldExpandNode]);
|
|
68
|
-
const contentsId = useId();
|
|
69
|
-
if (data.length === 0) {
|
|
70
|
-
return EmptyObject({
|
|
71
|
-
field,
|
|
72
|
-
openBracket,
|
|
73
|
-
closeBracket,
|
|
74
|
-
lastElement,
|
|
75
|
-
style
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
const expanderIconStyle = expanded ? style.collapseIcon : style.expandIcon;
|
|
79
|
-
const ariaLabel = expanded ? style.ariaLables.collapseJson : style.ariaLables.expandJson;
|
|
80
|
-
const childLevel = level + 1;
|
|
81
|
-
const lastIndex = data.length - 1;
|
|
82
|
-
const setExpandWithCallback = (newExpandValue) => {
|
|
83
|
-
if (expanded !== newExpandValue && (!beforeExpandChange || beforeExpandChange({
|
|
84
|
-
level,
|
|
85
|
-
value,
|
|
86
|
-
field,
|
|
87
|
-
newExpandValue
|
|
88
|
-
}))) {
|
|
89
|
-
setExpanded(newExpandValue);
|
|
90
|
-
}
|
|
91
|
-
};
|
|
92
|
-
const onKeyDown = (e) => {
|
|
93
|
-
if (e.key === "ArrowRight" || e.key === "ArrowLeft") {
|
|
94
|
-
e.preventDefault();
|
|
95
|
-
setExpandWithCallback(e.key === "ArrowRight");
|
|
96
|
-
} else if (e.key === "ArrowUp" || e.key === "ArrowDown") {
|
|
97
|
-
e.preventDefault();
|
|
98
|
-
const direction = e.key === "ArrowUp" ? -1 : 1;
|
|
99
|
-
if (!outerRef.current) return;
|
|
100
|
-
const buttonElements = outerRef.current.querySelectorAll("[role=button]");
|
|
101
|
-
let currentIndex = -1;
|
|
102
|
-
for (let i = 0; i < buttonElements.length; i++) {
|
|
103
|
-
if (buttonElements[i].tabIndex === 0) {
|
|
104
|
-
currentIndex = i;
|
|
105
|
-
break;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
if (currentIndex < 0) {
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
|
-
const nextIndex = (currentIndex + direction + buttonElements.length) % buttonElements.length;
|
|
112
|
-
buttonElements[currentIndex].tabIndex = -1;
|
|
113
|
-
buttonElements[nextIndex].tabIndex = 0;
|
|
114
|
-
buttonElements[nextIndex].focus();
|
|
115
|
-
}
|
|
116
|
-
};
|
|
117
|
-
const onClick = () => {
|
|
118
|
-
var _outerRef$current;
|
|
119
|
-
setExpandWithCallback(!expanded);
|
|
120
|
-
const buttonElement = expanderButtonRef.current;
|
|
121
|
-
if (!buttonElement) return;
|
|
122
|
-
const prevButtonElement = (_outerRef$current = outerRef.current) === null || _outerRef$current === void 0 ? void 0 : _outerRef$current.querySelector('[role=button][tabindex="0"]');
|
|
123
|
-
if (prevButtonElement) {
|
|
124
|
-
prevButtonElement.tabIndex = -1;
|
|
125
|
-
}
|
|
126
|
-
buttonElement.tabIndex = 0;
|
|
127
|
-
buttonElement.focus();
|
|
128
|
-
};
|
|
129
|
-
return /* @__PURE__ */ createElement("div", {
|
|
130
|
-
className: style.basicChildStyle,
|
|
131
|
-
role: "treeitem",
|
|
132
|
-
"aria-expanded": expanded,
|
|
133
|
-
"aria-selected": void 0
|
|
134
|
-
}, /* @__PURE__ */ createElement("span", {
|
|
135
|
-
className: expanderIconStyle,
|
|
136
|
-
onClick,
|
|
137
|
-
onKeyDown,
|
|
138
|
-
role: "button",
|
|
139
|
-
"aria-label": ariaLabel,
|
|
140
|
-
"aria-expanded": expanded,
|
|
141
|
-
"aria-controls": expanded ? contentsId : void 0,
|
|
142
|
-
ref: expanderButtonRef,
|
|
143
|
-
tabIndex: level === 0 ? 0 : -1
|
|
144
|
-
}), (field || field === "") && (clickToExpandNode ? /* @__PURE__ */ createElement("span", {
|
|
145
|
-
className: style.clickableLabel,
|
|
146
|
-
onClick,
|
|
147
|
-
onKeyDown
|
|
148
|
-
}, quoteString(field, style.quotesForFieldNames), ":") : /* @__PURE__ */ createElement("span", {
|
|
149
|
-
className: style.label
|
|
150
|
-
}, quoteString(field, style.quotesForFieldNames), ":")), /* @__PURE__ */ createElement("span", {
|
|
151
|
-
className: style.punctuation
|
|
152
|
-
}, openBracket), expanded ? /* @__PURE__ */ createElement("ul", {
|
|
153
|
-
id: contentsId,
|
|
154
|
-
role: "group",
|
|
155
|
-
className: style.childFieldsContainer
|
|
156
|
-
}, data.map((dataElement, index) => /* @__PURE__ */ createElement(DataRender, {
|
|
157
|
-
key: dataElement[0] || index,
|
|
158
|
-
field: dataElement[0],
|
|
159
|
-
value: dataElement[1],
|
|
160
|
-
style,
|
|
161
|
-
lastElement: index === lastIndex,
|
|
162
|
-
level: childLevel,
|
|
163
|
-
shouldExpandNode,
|
|
164
|
-
clickToExpandNode,
|
|
165
|
-
outerRef
|
|
166
|
-
}))) : /* @__PURE__ */ createElement("span", {
|
|
167
|
-
className: style.collapsedContent,
|
|
168
|
-
onClick,
|
|
169
|
-
onKeyDown
|
|
170
|
-
}), /* @__PURE__ */ createElement("span", {
|
|
171
|
-
className: style.punctuation
|
|
172
|
-
}, closeBracket), !lastElement && /* @__PURE__ */ createElement("span", {
|
|
173
|
-
className: style.punctuation
|
|
174
|
-
}, ","));
|
|
175
|
-
}
|
|
176
|
-
function EmptyObject(_ref2) {
|
|
177
|
-
let {
|
|
178
|
-
field,
|
|
179
|
-
openBracket,
|
|
180
|
-
closeBracket,
|
|
181
|
-
lastElement,
|
|
182
|
-
style
|
|
183
|
-
} = _ref2;
|
|
184
|
-
return /* @__PURE__ */ createElement("div", {
|
|
185
|
-
className: style.basicChildStyle,
|
|
186
|
-
role: "treeitem",
|
|
187
|
-
"aria-selected": void 0
|
|
188
|
-
}, (field || field === "") && /* @__PURE__ */ createElement("span", {
|
|
189
|
-
className: style.label
|
|
190
|
-
}, quoteString(field, style.quotesForFieldNames), ":"), /* @__PURE__ */ createElement("span", {
|
|
191
|
-
className: style.punctuation
|
|
192
|
-
}, openBracket), /* @__PURE__ */ createElement("span", {
|
|
193
|
-
className: style.punctuation
|
|
194
|
-
}, closeBracket), !lastElement && /* @__PURE__ */ createElement("span", {
|
|
195
|
-
className: style.punctuation
|
|
196
|
-
}, ","));
|
|
197
|
-
}
|
|
198
|
-
function JsonObject(_ref3) {
|
|
199
|
-
let {
|
|
200
|
-
field,
|
|
201
|
-
value,
|
|
202
|
-
style,
|
|
203
|
-
lastElement,
|
|
204
|
-
shouldExpandNode,
|
|
205
|
-
clickToExpandNode,
|
|
206
|
-
level,
|
|
207
|
-
outerRef,
|
|
208
|
-
beforeExpandChange
|
|
209
|
-
} = _ref3;
|
|
210
|
-
return ExpandableObject({
|
|
211
|
-
field,
|
|
212
|
-
value,
|
|
213
|
-
lastElement: lastElement || false,
|
|
214
|
-
level,
|
|
215
|
-
openBracket: "{",
|
|
216
|
-
closeBracket: "}",
|
|
217
|
-
style,
|
|
218
|
-
shouldExpandNode,
|
|
219
|
-
clickToExpandNode,
|
|
220
|
-
data: Object.keys(value).map((key) => [key, value[key]]),
|
|
221
|
-
outerRef,
|
|
222
|
-
beforeExpandChange
|
|
223
|
-
});
|
|
224
|
-
}
|
|
225
|
-
function JsonArray(_ref4) {
|
|
226
|
-
let {
|
|
227
|
-
field,
|
|
228
|
-
value,
|
|
229
|
-
style,
|
|
230
|
-
lastElement,
|
|
231
|
-
level,
|
|
232
|
-
shouldExpandNode,
|
|
233
|
-
clickToExpandNode,
|
|
234
|
-
outerRef,
|
|
235
|
-
beforeExpandChange
|
|
236
|
-
} = _ref4;
|
|
237
|
-
return ExpandableObject({
|
|
238
|
-
field,
|
|
239
|
-
value,
|
|
240
|
-
lastElement: lastElement || false,
|
|
241
|
-
level,
|
|
242
|
-
openBracket: "[",
|
|
243
|
-
closeBracket: "]",
|
|
244
|
-
style,
|
|
245
|
-
shouldExpandNode,
|
|
246
|
-
clickToExpandNode,
|
|
247
|
-
data: value.map((element) => [void 0, element]),
|
|
248
|
-
outerRef,
|
|
249
|
-
beforeExpandChange
|
|
250
|
-
});
|
|
251
|
-
}
|
|
252
|
-
function JsonPrimitiveValue(_ref5) {
|
|
253
|
-
let {
|
|
254
|
-
field,
|
|
255
|
-
value,
|
|
256
|
-
style,
|
|
257
|
-
lastElement
|
|
258
|
-
} = _ref5;
|
|
259
|
-
let stringValue;
|
|
260
|
-
let valueStyle = style.otherValue;
|
|
261
|
-
if (value === null) {
|
|
262
|
-
stringValue = "null";
|
|
263
|
-
valueStyle = style.nullValue;
|
|
264
|
-
} else if (value === void 0) {
|
|
265
|
-
stringValue = "undefined";
|
|
266
|
-
valueStyle = style.undefinedValue;
|
|
267
|
-
} else if (isString(value)) {
|
|
268
|
-
stringValue = quoteStringValue(value, !style.noQuotesForStringValues, style.stringifyStringValues);
|
|
269
|
-
valueStyle = style.stringValue;
|
|
270
|
-
} else if (isBoolean(value)) {
|
|
271
|
-
stringValue = value ? "true" : "false";
|
|
272
|
-
valueStyle = style.booleanValue;
|
|
273
|
-
} else if (isNumber(value)) {
|
|
274
|
-
stringValue = value.toString();
|
|
275
|
-
valueStyle = style.numberValue;
|
|
276
|
-
} else if (isBigInt(value)) {
|
|
277
|
-
stringValue = `${value.toString()}n`;
|
|
278
|
-
valueStyle = style.numberValue;
|
|
279
|
-
} else if (isDate(value)) {
|
|
280
|
-
stringValue = value.toISOString();
|
|
281
|
-
} else if (isFunction(value)) {
|
|
282
|
-
stringValue = "function() { }";
|
|
283
|
-
} else {
|
|
284
|
-
stringValue = value.toString();
|
|
285
|
-
}
|
|
286
|
-
return /* @__PURE__ */ createElement("div", {
|
|
287
|
-
className: style.basicChildStyle,
|
|
288
|
-
role: "treeitem",
|
|
289
|
-
"aria-selected": void 0
|
|
290
|
-
}, (field || field === "") && /* @__PURE__ */ createElement("span", {
|
|
291
|
-
className: style.label
|
|
292
|
-
}, quoteString(field, style.quotesForFieldNames), ":"), /* @__PURE__ */ createElement("span", {
|
|
293
|
-
className: valueStyle
|
|
294
|
-
}, stringValue), !lastElement && /* @__PURE__ */ createElement("span", {
|
|
295
|
-
className: style.punctuation
|
|
296
|
-
}, ","));
|
|
297
|
-
}
|
|
298
|
-
function DataRender(props) {
|
|
299
|
-
const value = props.value;
|
|
300
|
-
if (isArray(value)) {
|
|
301
|
-
return /* @__PURE__ */ createElement(JsonArray, Object.assign({}, props));
|
|
302
|
-
}
|
|
303
|
-
if (isObject(value) && !isDate(value) && !isFunction(value)) {
|
|
304
|
-
return /* @__PURE__ */ createElement(JsonObject, Object.assign({}, props));
|
|
305
|
-
}
|
|
306
|
-
return /* @__PURE__ */ createElement(JsonPrimitiveValue, Object.assign({}, props));
|
|
307
|
-
}
|
|
308
|
-
var styles = { "container-light": "_2IvMF _GzYRV", "basic-element-style": "_2bkNM", "child-fields-container": "_1BXBN", "label-light": "_1MGIk", "clickable-label-light": "_2YKJg _1MGIk _1MFti", "punctuation-light": "_3uHL6 _3eOF8", "value-null-light": "_2T6PJ", "value-undefined-light": "_1Gho6", "value-string-light": "_vGjyY", "value-number-light": "_1bQdo", "value-boolean-light": "_3zQKs", "value-other-light": "_1xvuR", "collapse-icon-light": "_oLqym _f10Tu _1MFti _1LId0", "expand-icon-light": "_2AXVT _f10Tu _1MFti _1UmXx", "collapsed-content-light": "_2KJWg _1pNG9 _1MFti" };
|
|
309
|
-
const defaultAriaLables = {
|
|
310
|
-
collapseJson: "collapse JSON",
|
|
311
|
-
expandJson: "expand JSON"
|
|
312
|
-
};
|
|
313
|
-
const defaultStyles = {
|
|
314
|
-
container: styles["container-light"],
|
|
315
|
-
basicChildStyle: styles["basic-element-style"],
|
|
316
|
-
childFieldsContainer: styles["child-fields-container"],
|
|
317
|
-
label: styles["label-light"],
|
|
318
|
-
clickableLabel: styles["clickable-label-light"],
|
|
319
|
-
nullValue: styles["value-null-light"],
|
|
320
|
-
undefinedValue: styles["value-undefined-light"],
|
|
321
|
-
stringValue: styles["value-string-light"],
|
|
322
|
-
booleanValue: styles["value-boolean-light"],
|
|
323
|
-
numberValue: styles["value-number-light"],
|
|
324
|
-
otherValue: styles["value-other-light"],
|
|
325
|
-
punctuation: styles["punctuation-light"],
|
|
326
|
-
collapseIcon: styles["collapse-icon-light"],
|
|
327
|
-
expandIcon: styles["expand-icon-light"],
|
|
328
|
-
collapsedContent: styles["collapsed-content-light"],
|
|
329
|
-
noQuotesForStringValues: false,
|
|
330
|
-
quotesForFieldNames: false,
|
|
331
|
-
ariaLables: defaultAriaLables,
|
|
332
|
-
stringifyStringValues: false
|
|
333
|
-
};
|
|
334
|
-
const allExpanded = () => true;
|
|
335
|
-
const JsonView = (_ref) => {
|
|
336
|
-
let {
|
|
337
|
-
data,
|
|
338
|
-
style = defaultStyles,
|
|
339
|
-
shouldExpandNode = allExpanded,
|
|
340
|
-
clickToExpandNode = false,
|
|
341
|
-
beforeExpandChange,
|
|
342
|
-
...ariaAttrs
|
|
343
|
-
} = _ref;
|
|
344
|
-
const outerRef = useRef(null);
|
|
345
|
-
return /* @__PURE__ */ createElement("div", Object.assign({
|
|
346
|
-
"aria-label": "JSON view"
|
|
347
|
-
}, ariaAttrs, {
|
|
348
|
-
className: style.container,
|
|
349
|
-
ref: outerRef,
|
|
350
|
-
role: "tree"
|
|
351
|
-
}), /* @__PURE__ */ createElement(DataRender, {
|
|
352
|
-
value: data,
|
|
353
|
-
style: {
|
|
354
|
-
...defaultStyles,
|
|
355
|
-
...style
|
|
356
|
-
},
|
|
357
|
-
lastElement: true,
|
|
358
|
-
level: 0,
|
|
359
|
-
shouldExpandNode,
|
|
360
|
-
clickToExpandNode,
|
|
361
|
-
outerRef,
|
|
362
|
-
beforeExpandChange
|
|
363
|
-
}));
|
|
364
|
-
};
|
|
365
|
-
function serializeStoreData(stores_) {
|
|
366
|
-
try {
|
|
367
|
-
let serialize = function(obj) {
|
|
368
|
-
if (obj === null || typeof obj !== "object") {
|
|
369
|
-
return obj;
|
|
370
|
-
}
|
|
371
|
-
if (seen.has(obj)) {
|
|
372
|
-
return "[Already Seen]";
|
|
373
|
-
}
|
|
374
|
-
seen.add(obj);
|
|
375
|
-
if (Array.isArray(obj)) {
|
|
376
|
-
return obj.map(serialize);
|
|
377
|
-
}
|
|
378
|
-
const result = {};
|
|
379
|
-
for (const key of Object.keys(obj)) {
|
|
380
|
-
if (typeof obj[key] === "function") {
|
|
381
|
-
result[key] = "[Function]";
|
|
382
|
-
}
|
|
383
|
-
try {
|
|
384
|
-
const descriptor = Object.getOwnPropertyDescriptor(obj, key);
|
|
385
|
-
if (descriptor && descriptor.get) {
|
|
386
|
-
try {
|
|
387
|
-
result[key] = serialize(obj[key]);
|
|
388
|
-
} catch {
|
|
389
|
-
result[key] = "[Getter Error]";
|
|
390
|
-
}
|
|
391
|
-
} else {
|
|
392
|
-
result[key] = serialize(obj[key]);
|
|
393
|
-
}
|
|
394
|
-
} catch {
|
|
395
|
-
result[key] = "[Access Error]";
|
|
396
|
-
}
|
|
397
|
-
}
|
|
398
|
-
if (obj.constructor && obj.constructor.name !== "Object") {
|
|
399
|
-
result.__type__ = obj.constructor.name;
|
|
400
|
-
}
|
|
401
|
-
return result;
|
|
402
|
-
};
|
|
403
|
-
const stores = toJS(stores_);
|
|
404
|
-
const seen = /* @__PURE__ */ new Set();
|
|
405
|
-
return serialize(stores);
|
|
406
|
-
} catch (error) {
|
|
407
|
-
return {
|
|
408
|
-
error: `Error serializing data: ${error instanceof Error ? error.message : "Unknown error"}`
|
|
409
|
-
};
|
|
410
|
-
}
|
|
411
|
-
}
|
|
412
|
-
class DevToolsState {
|
|
413
|
-
constructor() {
|
|
414
|
-
__publicField(this, "isVisible", false);
|
|
415
|
-
makeAutoObservable(this);
|
|
416
|
-
}
|
|
417
|
-
show() {
|
|
418
|
-
this.isVisible = true;
|
|
419
|
-
}
|
|
420
|
-
hide() {
|
|
421
|
-
this.isVisible = false;
|
|
422
|
-
}
|
|
423
|
-
toggle() {
|
|
424
|
-
this.isVisible = !this.isVisible;
|
|
425
|
-
}
|
|
426
|
-
}
|
|
427
|
-
const devToolsState = new DevToolsState();
|
|
428
|
-
class KeyboardShortcutManager {
|
|
429
|
-
constructor() {
|
|
430
|
-
__publicField(this, "isListening", false);
|
|
431
|
-
__publicField(this, "shortcutKeys", {
|
|
432
|
-
key: "KeyD",
|
|
433
|
-
ctrlKey: true,
|
|
434
|
-
shiftKey: true,
|
|
435
|
-
altKey: false
|
|
436
|
-
});
|
|
437
|
-
__publicField(this, "handleEscapeKey", (event) => {
|
|
438
|
-
if (event.key === "Escape" && devToolsState.isVisible) {
|
|
439
|
-
event.preventDefault();
|
|
440
|
-
devToolsState.hide();
|
|
441
|
-
}
|
|
442
|
-
});
|
|
443
|
-
this.handleKeyDown = this.handleKeyDown.bind(this);
|
|
444
|
-
}
|
|
445
|
-
handleKeyDown(event) {
|
|
446
|
-
const { ctrlKey, shiftKey, altKey, metaKey } = event;
|
|
447
|
-
const isModifierMatch = (ctrlKey || metaKey) && shiftKey && !altKey;
|
|
448
|
-
const isKeyMatch = event.code === this.shortcutKeys.key;
|
|
449
|
-
if (isModifierMatch && isKeyMatch) {
|
|
450
|
-
event.preventDefault();
|
|
451
|
-
event.stopPropagation();
|
|
452
|
-
devToolsState.toggle();
|
|
453
|
-
}
|
|
454
|
-
}
|
|
455
|
-
startListening() {
|
|
456
|
-
if (this.isListening) return;
|
|
457
|
-
this.isListening = true;
|
|
458
|
-
document.addEventListener("keydown", this.handleKeyDown, true);
|
|
459
|
-
document.addEventListener("keydown", this.handleEscapeKey, true);
|
|
460
|
-
}
|
|
461
|
-
stopListening() {
|
|
462
|
-
if (!this.isListening) return;
|
|
463
|
-
this.isListening = false;
|
|
464
|
-
document.removeEventListener("keydown", this.handleKeyDown, true);
|
|
465
|
-
document.removeEventListener("keydown", this.handleEscapeKey, true);
|
|
466
|
-
}
|
|
467
|
-
updateShortcut(options) {
|
|
468
|
-
this.shortcutKeys = { ...this.shortcutKeys, ...options };
|
|
469
|
-
}
|
|
470
|
-
}
|
|
471
|
-
const keyboardShortcutManager = new KeyboardShortcutManager();
|
|
472
|
-
let registeredStores = {};
|
|
473
|
-
function setRegisteredStores(stores) {
|
|
474
|
-
registeredStores = stores;
|
|
475
|
-
}
|
|
476
|
-
function getRegisteredStores() {
|
|
477
|
-
return registeredStores;
|
|
478
|
-
}
|
|
479
|
-
const overlayStyles = {
|
|
480
|
-
position: "fixed",
|
|
481
|
-
top: 0,
|
|
482
|
-
left: 0,
|
|
483
|
-
right: 0,
|
|
484
|
-
bottom: 0,
|
|
485
|
-
backgroundColor: "rgba(0, 0, 0, 0.5)",
|
|
486
|
-
zIndex: 9999
|
|
487
|
-
};
|
|
488
|
-
const panelStyles = {
|
|
489
|
-
position: "fixed",
|
|
490
|
-
top: "50%",
|
|
491
|
-
left: "50%",
|
|
492
|
-
transform: "translate(-50%, -50%)",
|
|
493
|
-
width: "90vw",
|
|
494
|
-
height: "90vh",
|
|
495
|
-
backgroundColor: "#fff",
|
|
496
|
-
zIndex: 1e4,
|
|
497
|
-
display: "flex",
|
|
498
|
-
flexDirection: "column",
|
|
499
|
-
borderRadius: 12
|
|
500
|
-
};
|
|
501
|
-
const headerStyles = {
|
|
502
|
-
padding: 12,
|
|
503
|
-
borderBottom: "1px solid #ccc",
|
|
504
|
-
display: "flex",
|
|
505
|
-
justifyContent: "space-between",
|
|
506
|
-
alignItems: "center"
|
|
507
|
-
};
|
|
508
|
-
const closeButtonStyles = {
|
|
509
|
-
background: "none",
|
|
510
|
-
border: "none",
|
|
511
|
-
cursor: "pointer"
|
|
512
|
-
};
|
|
513
|
-
const contentStyles = {
|
|
514
|
-
padding: 8,
|
|
515
|
-
display: "flex",
|
|
516
|
-
flex: 1,
|
|
517
|
-
overflow: "auto",
|
|
518
|
-
flexDirection: "column"
|
|
519
|
-
};
|
|
520
|
-
const DevToolsPanelContent = observer(() => {
|
|
521
|
-
const stores = getRegisteredStores();
|
|
522
|
-
const storeNames = Object.keys(stores);
|
|
523
|
-
const serializedData = serializeStoreData(stores);
|
|
524
|
-
const onClose = useCallback(() => {
|
|
525
|
-
devToolsState.hide();
|
|
526
|
-
}, []);
|
|
527
|
-
return createPortal(
|
|
528
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
529
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: overlayStyles, onClick: onClose }),
|
|
530
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: panelStyles, children: [
|
|
531
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { style: headerStyles, children: [
|
|
532
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("h3", { children: [
|
|
533
|
-
"MobX DevTools (",
|
|
534
|
-
storeNames.length,
|
|
535
|
-
" store",
|
|
536
|
-
storeNames.length !== 1 ? "s" : "",
|
|
537
|
-
")"
|
|
538
|
-
] }),
|
|
539
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
540
|
-
"button",
|
|
541
|
-
{
|
|
542
|
-
style: closeButtonStyles,
|
|
543
|
-
onClick: onClose,
|
|
544
|
-
title: "Close (ESC)",
|
|
545
|
-
children: "×"
|
|
546
|
-
}
|
|
547
|
-
)
|
|
548
|
-
] }),
|
|
549
|
-
storeNames.length === 0 ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { children: "No stores registered yet." }) : /* @__PURE__ */ jsxRuntimeExports.jsx("div", { style: contentStyles, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
550
|
-
JsonView,
|
|
551
|
-
{
|
|
552
|
-
data: serializedData,
|
|
553
|
-
clickToExpandNode: true,
|
|
554
|
-
shouldExpandNode: (level) => level < 2
|
|
555
|
-
}
|
|
556
|
-
) })
|
|
557
|
-
] })
|
|
558
|
-
] }),
|
|
559
|
-
document.body
|
|
560
|
-
);
|
|
561
|
-
});
|
|
562
|
-
const CustomDevTools = observer(() => {
|
|
563
|
-
useEffect(() => {
|
|
564
|
-
if (devToolsState.isVisible) {
|
|
565
|
-
const handleEscape = (event) => {
|
|
566
|
-
if (event.key === "Escape") {
|
|
567
|
-
devToolsState.hide();
|
|
568
|
-
}
|
|
569
|
-
};
|
|
570
|
-
document.addEventListener("keydown", handleEscape);
|
|
571
|
-
return () => document.removeEventListener("keydown", handleEscape);
|
|
572
|
-
}
|
|
573
|
-
}, []);
|
|
574
|
-
if (!devToolsState.isVisible) {
|
|
575
|
-
return null;
|
|
576
|
-
}
|
|
577
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(DevToolsPanelContent, {});
|
|
578
|
-
});
|
|
579
|
-
function initializeCustomDevTools() {
|
|
580
|
-
keyboardShortcutManager.startListening();
|
|
581
|
-
console.log(
|
|
582
|
-
"[CustomDevTools] Initialized - Press Ctrl+Shift+D (or Cmd+Shift+D) to open"
|
|
583
|
-
);
|
|
584
|
-
}
|
|
585
|
-
export {
|
|
586
|
-
CustomDevTools,
|
|
587
|
-
initializeCustomDevTools,
|
|
588
|
-
setRegisteredStores
|
|
589
|
-
};
|
|
590
|
-
//# sourceMappingURL=devtools-consolidated-C22ZSOdp.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"devtools-consolidated-C22ZSOdp.js","sources":["../../../node_modules/.pnpm/react-json-view-lite@2.4.1_react@18.3.1/node_modules/react-json-view-lite/dist/index.modern.js","../src/lib/internal-details/lib/devtools/serialize-store-data.tsx","../src/lib/internal-details/lib/devtools/devtools-consolidated.tsx"],"sourcesContent":["import { createElement, useRef, useState, useEffect, useId } from 'react';\n\nconst isBoolean = data => {\n return typeof data === 'boolean' || data instanceof Boolean;\n};\nconst isNumber = data => {\n return typeof data === 'number' || data instanceof Number;\n};\nconst isBigInt = data => {\n return typeof data === 'bigint' || data instanceof BigInt;\n};\nconst isDate = data => {\n return !!data && data instanceof Date;\n};\nconst isString = data => {\n return typeof data === 'string' || data instanceof String;\n};\nconst isArray = data => {\n return Array.isArray(data);\n};\nconst isObject = data => {\n return typeof data === 'object' && data !== null;\n};\nconst isFunction = data => {\n return !!data && data instanceof Object && typeof data === 'function';\n};\n\nfunction quoteString(value, quoted) {\n if (quoted === void 0) {\n quoted = false;\n }\n return !value || quoted ? `\"${value}\"` : value;\n}\nfunction quoteStringValue(value, quoted, stringify) {\n if (stringify) {\n return JSON.stringify(value);\n }\n return quoted ? `\"${value}\"` : value;\n}\nfunction ExpandableObject(_ref) {\n let {\n field,\n value,\n data,\n lastElement,\n openBracket,\n closeBracket,\n level,\n style,\n shouldExpandNode,\n clickToExpandNode,\n outerRef,\n beforeExpandChange\n } = _ref;\n const shouldExpandNodeCalledRef = useRef(false);\n const [expanded, setExpanded] = useState(() => shouldExpandNode(level, value, field));\n const expanderButtonRef = useRef(null);\n useEffect(() => {\n if (!shouldExpandNodeCalledRef.current) {\n shouldExpandNodeCalledRef.current = true;\n } else {\n setExpanded(shouldExpandNode(level, value, field));\n }\n }, [shouldExpandNode]);\n const contentsId = useId();\n if (data.length === 0) {\n return EmptyObject({\n field,\n openBracket,\n closeBracket,\n lastElement,\n style\n });\n }\n const expanderIconStyle = expanded ? style.collapseIcon : style.expandIcon;\n const ariaLabel = expanded ? style.ariaLables.collapseJson : style.ariaLables.expandJson;\n const childLevel = level + 1;\n const lastIndex = data.length - 1;\n const setExpandWithCallback = newExpandValue => {\n if (expanded !== newExpandValue && (!beforeExpandChange || beforeExpandChange({\n level,\n value,\n field,\n newExpandValue\n }))) {\n setExpanded(newExpandValue);\n }\n };\n const onKeyDown = e => {\n if (e.key === 'ArrowRight' || e.key === 'ArrowLeft') {\n e.preventDefault();\n setExpandWithCallback(e.key === 'ArrowRight');\n } else if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n const direction = e.key === 'ArrowUp' ? -1 : 1;\n if (!outerRef.current) return;\n const buttonElements = outerRef.current.querySelectorAll('[role=button]');\n let currentIndex = -1;\n for (let i = 0; i < buttonElements.length; i++) {\n if (buttonElements[i].tabIndex === 0) {\n currentIndex = i;\n break;\n }\n }\n if (currentIndex < 0) {\n return;\n }\n const nextIndex = (currentIndex + direction + buttonElements.length) % buttonElements.length;\n buttonElements[currentIndex].tabIndex = -1;\n buttonElements[nextIndex].tabIndex = 0;\n buttonElements[nextIndex].focus();\n }\n };\n const onClick = () => {\n var _outerRef$current;\n setExpandWithCallback(!expanded);\n const buttonElement = expanderButtonRef.current;\n if (!buttonElement) return;\n const prevButtonElement = (_outerRef$current = outerRef.current) === null || _outerRef$current === void 0 ? void 0 : _outerRef$current.querySelector('[role=button][tabindex=\"0\"]');\n if (prevButtonElement) {\n prevButtonElement.tabIndex = -1;\n }\n buttonElement.tabIndex = 0;\n buttonElement.focus();\n };\n return /*#__PURE__*/createElement(\"div\", {\n className: style.basicChildStyle,\n role: 'treeitem',\n \"aria-expanded\": expanded,\n \"aria-selected\": undefined\n }, /*#__PURE__*/createElement(\"span\", {\n className: expanderIconStyle,\n onClick: onClick,\n onKeyDown: onKeyDown,\n role: 'button',\n \"aria-label\": ariaLabel,\n \"aria-expanded\": expanded,\n \"aria-controls\": expanded ? contentsId : undefined,\n ref: expanderButtonRef,\n tabIndex: level === 0 ? 0 : -1\n }), (field || field === '') && (clickToExpandNode ? (\n /*#__PURE__*/\n createElement(\"span\", {\n className: style.clickableLabel,\n onClick: onClick,\n onKeyDown: onKeyDown\n }, quoteString(field, style.quotesForFieldNames), \":\")) : (/*#__PURE__*/createElement(\"span\", {\n className: style.label\n }, quoteString(field, style.quotesForFieldNames), \":\"))), /*#__PURE__*/createElement(\"span\", {\n className: style.punctuation\n }, openBracket), expanded ? (/*#__PURE__*/createElement(\"ul\", {\n id: contentsId,\n role: 'group',\n className: style.childFieldsContainer\n }, data.map((dataElement, index) => (/*#__PURE__*/createElement(DataRender, {\n key: dataElement[0] || index,\n field: dataElement[0],\n value: dataElement[1],\n style: style,\n lastElement: index === lastIndex,\n level: childLevel,\n shouldExpandNode: shouldExpandNode,\n clickToExpandNode: clickToExpandNode,\n outerRef: outerRef\n }))))) : (\n /*#__PURE__*/\n createElement(\"span\", {\n className: style.collapsedContent,\n onClick: onClick,\n onKeyDown: onKeyDown\n })), /*#__PURE__*/createElement(\"span\", {\n className: style.punctuation\n }, closeBracket), !lastElement && /*#__PURE__*/createElement(\"span\", {\n className: style.punctuation\n }, \",\"));\n}\nfunction EmptyObject(_ref2) {\n let {\n field,\n openBracket,\n closeBracket,\n lastElement,\n style\n } = _ref2;\n return /*#__PURE__*/createElement(\"div\", {\n className: style.basicChildStyle,\n role: 'treeitem',\n \"aria-selected\": undefined\n }, (field || field === '') && (/*#__PURE__*/createElement(\"span\", {\n className: style.label\n }, quoteString(field, style.quotesForFieldNames), \":\")), /*#__PURE__*/createElement(\"span\", {\n className: style.punctuation\n }, openBracket), /*#__PURE__*/createElement(\"span\", {\n className: style.punctuation\n }, closeBracket), !lastElement && /*#__PURE__*/createElement(\"span\", {\n className: style.punctuation\n }, \",\"));\n}\nfunction JsonObject(_ref3) {\n let {\n field,\n value,\n style,\n lastElement,\n shouldExpandNode,\n clickToExpandNode,\n level,\n outerRef,\n beforeExpandChange\n } = _ref3;\n return ExpandableObject({\n field,\n value,\n lastElement: lastElement || false,\n level,\n openBracket: '{',\n closeBracket: '}',\n style,\n shouldExpandNode,\n clickToExpandNode,\n data: Object.keys(value).map(key => [key, value[key]]),\n outerRef,\n beforeExpandChange\n });\n}\nfunction JsonArray(_ref4) {\n let {\n field,\n value,\n style,\n lastElement,\n level,\n shouldExpandNode,\n clickToExpandNode,\n outerRef,\n beforeExpandChange\n } = _ref4;\n return ExpandableObject({\n field,\n value,\n lastElement: lastElement || false,\n level,\n openBracket: '[',\n closeBracket: ']',\n style,\n shouldExpandNode,\n clickToExpandNode,\n data: value.map(element => [undefined, element]),\n outerRef,\n beforeExpandChange\n });\n}\nfunction JsonPrimitiveValue(_ref5) {\n let {\n field,\n value,\n style,\n lastElement\n } = _ref5;\n let stringValue;\n let valueStyle = style.otherValue;\n if (value === null) {\n stringValue = 'null';\n valueStyle = style.nullValue;\n } else if (value === undefined) {\n stringValue = 'undefined';\n valueStyle = style.undefinedValue;\n } else if (isString(value)) {\n stringValue = quoteStringValue(value, !style.noQuotesForStringValues, style.stringifyStringValues);\n valueStyle = style.stringValue;\n } else if (isBoolean(value)) {\n stringValue = value ? 'true' : 'false';\n valueStyle = style.booleanValue;\n } else if (isNumber(value)) {\n stringValue = value.toString();\n valueStyle = style.numberValue;\n } else if (isBigInt(value)) {\n stringValue = `${value.toString()}n`;\n valueStyle = style.numberValue;\n } else if (isDate(value)) {\n stringValue = value.toISOString();\n } else if (isFunction(value)) {\n stringValue = 'function() { }';\n } else {\n stringValue = value.toString();\n }\n return /*#__PURE__*/createElement(\"div\", {\n className: style.basicChildStyle,\n role: 'treeitem',\n \"aria-selected\": undefined\n }, (field || field === '') && (/*#__PURE__*/createElement(\"span\", {\n className: style.label\n }, quoteString(field, style.quotesForFieldNames), \":\")), /*#__PURE__*/createElement(\"span\", {\n className: valueStyle\n }, stringValue), !lastElement && /*#__PURE__*/createElement(\"span\", {\n className: style.punctuation\n }, \",\"));\n}\nfunction DataRender(props) {\n const value = props.value;\n if (isArray(value)) {\n return /*#__PURE__*/createElement(JsonArray, Object.assign({}, props));\n }\n if (isObject(value) && !isDate(value) && !isFunction(value)) {\n return /*#__PURE__*/createElement(JsonObject, Object.assign({}, props));\n }\n return /*#__PURE__*/createElement(JsonPrimitiveValue, Object.assign({}, props));\n}\n\nvar styles = {\"container-base\":\"_GzYRV\",\"punctuation-base\":\"_3eOF8\",\"pointer\":\"_1MFti\",\"expander-base\":\"_f10Tu _1MFti\",\"expand-icon\":\"_1UmXx\",\"collapse-icon\":\"_1LId0\",\"collapsed-content-base\":\"_1pNG9 _1MFti\",\"container-light\":\"_2IvMF _GzYRV\",\"basic-element-style\":\"_2bkNM\",\"child-fields-container\":\"_1BXBN\",\"label-light\":\"_1MGIk\",\"clickable-label-light\":\"_2YKJg _1MGIk _1MFti\",\"punctuation-light\":\"_3uHL6 _3eOF8\",\"value-null-light\":\"_2T6PJ\",\"value-undefined-light\":\"_1Gho6\",\"value-string-light\":\"_vGjyY\",\"value-number-light\":\"_1bQdo\",\"value-boolean-light\":\"_3zQKs\",\"value-other-light\":\"_1xvuR\",\"collapse-icon-light\":\"_oLqym _f10Tu _1MFti _1LId0\",\"expand-icon-light\":\"_2AXVT _f10Tu _1MFti _1UmXx\",\"collapsed-content-light\":\"_2KJWg _1pNG9 _1MFti\",\"container-dark\":\"_11RoI _GzYRV\",\"expand-icon-dark\":\"_17H2C _f10Tu _1MFti _1UmXx\",\"collapse-icon-dark\":\"_3QHg2 _f10Tu _1MFti _1LId0\",\"collapsed-content-dark\":\"_3fDAz _1pNG9 _1MFti\",\"label-dark\":\"_2bSDX\",\"clickable-label-dark\":\"_1RQEj _2bSDX _1MFti\",\"punctuation-dark\":\"_gsbQL _3eOF8\",\"value-null-dark\":\"_LaAZe\",\"value-undefined-dark\":\"_GTKgm\",\"value-string-dark\":\"_Chy1W\",\"value-number-dark\":\"_2bveF\",\"value-boolean-dark\":\"_2vRm-\",\"value-other-dark\":\"_1prJR\"};\n\nconst defaultAriaLables = {\n collapseJson: 'collapse JSON',\n expandJson: 'expand JSON'\n};\nconst defaultStyles = {\n container: styles['container-light'],\n basicChildStyle: styles['basic-element-style'],\n childFieldsContainer: styles['child-fields-container'],\n label: styles['label-light'],\n clickableLabel: styles['clickable-label-light'],\n nullValue: styles['value-null-light'],\n undefinedValue: styles['value-undefined-light'],\n stringValue: styles['value-string-light'],\n booleanValue: styles['value-boolean-light'],\n numberValue: styles['value-number-light'],\n otherValue: styles['value-other-light'],\n punctuation: styles['punctuation-light'],\n collapseIcon: styles['collapse-icon-light'],\n expandIcon: styles['expand-icon-light'],\n collapsedContent: styles['collapsed-content-light'],\n noQuotesForStringValues: false,\n quotesForFieldNames: false,\n ariaLables: defaultAriaLables,\n stringifyStringValues: false\n};\nconst darkStyles = {\n container: styles['container-dark'],\n basicChildStyle: styles['basic-element-style'],\n childFieldsContainer: styles['child-fields-container'],\n label: styles['label-dark'],\n clickableLabel: styles['clickable-label-dark'],\n nullValue: styles['value-null-dark'],\n undefinedValue: styles['value-undefined-dark'],\n stringValue: styles['value-string-dark'],\n booleanValue: styles['value-boolean-dark'],\n numberValue: styles['value-number-dark'],\n otherValue: styles['value-other-dark'],\n punctuation: styles['punctuation-dark'],\n collapseIcon: styles['collapse-icon-dark'],\n expandIcon: styles['expand-icon-dark'],\n collapsedContent: styles['collapsed-content-dark'],\n noQuotesForStringValues: false,\n quotesForFieldNames: false,\n ariaLables: defaultAriaLables,\n stringifyStringValues: false\n};\nconst allExpanded = () => true;\nconst collapseAllNested = level => level < 1;\nconst JsonView = _ref => {\n let {\n data,\n style = defaultStyles,\n shouldExpandNode = allExpanded,\n clickToExpandNode = false,\n beforeExpandChange,\n ...ariaAttrs\n } = _ref;\n const outerRef = useRef(null);\n return /*#__PURE__*/createElement(\"div\", Object.assign({\n \"aria-label\": 'JSON view'\n }, ariaAttrs, {\n className: style.container,\n ref: outerRef,\n role: 'tree'\n }), /*#__PURE__*/createElement(DataRender, {\n value: data,\n style: {\n ...defaultStyles,\n ...style\n },\n lastElement: true,\n level: 0,\n shouldExpandNode: shouldExpandNode,\n clickToExpandNode: clickToExpandNode,\n outerRef: outerRef,\n beforeExpandChange: beforeExpandChange\n }));\n};\n\nexport { JsonView, allExpanded, collapseAllNested, darkStyles, defaultStyles };\n//# sourceMappingURL=index.modern.js.map\n","import { toJS } from \"mobx\";\n\nexport function serializeStoreData(\n stores_: Record<string, any>,\n): Record<string, any> {\n try {\n const stores = toJS(stores_);\n const seen = new Set();\n function serialize(obj: any): any {\n if (obj === null || typeof obj !== \"object\") {\n return obj;\n }\n\n if (seen.has(obj)) {\n return \"[Already Seen]\";\n }\n\n // Create new path for this branch of recursion\n seen.add(obj);\n\n if (Array.isArray(obj)) {\n return obj.map(serialize);\n }\n\n const result: any = {};\n\n for (const key of Object.keys(obj)) {\n if (typeof obj[key] === \"function\") {\n result[key] = \"[Function]\";\n }\n\n try {\n const descriptor = Object.getOwnPropertyDescriptor(obj, key);\n if (descriptor && descriptor.get) {\n try {\n result[key] = serialize(obj[key]);\n } catch {\n result[key] = \"[Getter Error]\";\n }\n } else {\n result[key] = serialize(obj[key]);\n }\n } catch {\n result[key] = \"[Access Error]\";\n }\n }\n\n // Add type information\n if (obj.constructor && obj.constructor.name !== \"Object\") {\n result.__type__ = obj.constructor.name;\n }\n\n return result;\n }\n\n return serialize(stores);\n } catch (error) {\n return {\n error: `Error serializing data: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n };\n }\n}\n","import { makeAutoObservable } from \"mobx\";\nimport { observer } from \"mobx-react-lite\";\nimport React, { useCallback, useEffect } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { JsonView } from \"react-json-view-lite\";\nimport \"react-json-view-lite/dist/index.css\";\nimport { serializeStoreData } from \"./serialize-store-data.js\";\n\n// ============================================================================\n// STATE MANAGEMENT\n// ============================================================================\n\nclass DevToolsState {\n isVisible = false;\n\n constructor() {\n makeAutoObservable(this);\n }\n\n show() {\n this.isVisible = true;\n }\n\n hide() {\n this.isVisible = false;\n }\n\n toggle() {\n this.isVisible = !this.isVisible;\n }\n}\n\nconst devToolsState = new DevToolsState();\n\n// ============================================================================\n// KEYBOARD SHORTCUT MANAGER\n// ============================================================================\n\nclass KeyboardShortcutManager {\n private isListening = false;\n private shortcutKeys = {\n key: \"KeyD\",\n ctrlKey: true,\n shiftKey: true,\n altKey: false,\n };\n\n constructor() {\n this.handleKeyDown = this.handleKeyDown.bind(this);\n }\n\n private handleKeyDown(event: KeyboardEvent) {\n const { ctrlKey, shiftKey, altKey, metaKey } = event;\n const isModifierMatch = (ctrlKey || metaKey) && shiftKey && !altKey;\n const isKeyMatch = event.code === this.shortcutKeys.key;\n if (isModifierMatch && isKeyMatch) {\n event.preventDefault();\n event.stopPropagation();\n devToolsState.toggle();\n }\n }\n\n private handleEscapeKey = (event: KeyboardEvent) => {\n if (event.key === \"Escape\" && devToolsState.isVisible) {\n event.preventDefault();\n devToolsState.hide();\n }\n };\n\n startListening() {\n if (this.isListening) return;\n\n this.isListening = true;\n document.addEventListener(\"keydown\", this.handleKeyDown, true);\n document.addEventListener(\"keydown\", this.handleEscapeKey, true);\n }\n\n stopListening() {\n if (!this.isListening) return;\n\n this.isListening = false;\n document.removeEventListener(\"keydown\", this.handleKeyDown, true);\n document.removeEventListener(\"keydown\", this.handleEscapeKey, true);\n }\n\n updateShortcut(options: Partial<typeof this.shortcutKeys>) {\n this.shortcutKeys = { ...this.shortcutKeys, ...options };\n }\n}\n\nconst keyboardShortcutManager = new KeyboardShortcutManager();\n\n// ============================================================================\n// STORE ACCESS\n// ============================================================================\n\n// This will be populated by the registerStores function\nlet registeredStores: Record<string, any> = {};\n\nexport function setRegisteredStores(stores: Record<string, any>) {\n registeredStores = stores;\n}\n\nfunction getRegisteredStores() {\n return registeredStores;\n}\n\n// ============================================================================\n// DEVTOOLS PANEL COMPONENT\n// ============================================================================\n\nconst overlayStyles: React.CSSProperties = {\n position: \"fixed\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: \"rgba(0, 0, 0, 0.5)\",\n zIndex: 9999,\n};\n\nconst panelStyles: React.CSSProperties = {\n position: \"fixed\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n width: \"90vw\",\n height: \"90vh\",\n backgroundColor: \"#fff\",\n zIndex: 10000,\n display: \"flex\",\n flexDirection: \"column\",\n borderRadius: 12,\n};\n\nconst headerStyles: React.CSSProperties = {\n padding: 12,\n borderBottom: \"1px solid #ccc\",\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n};\n\nconst closeButtonStyles: React.CSSProperties = {\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n};\n\nconst contentStyles: React.CSSProperties = {\n padding: 8,\n display: \"flex\",\n flex: 1,\n overflow: \"auto\",\n flexDirection: \"column\",\n};\n\nconst DevToolsPanelContent: React.FC = observer(() => {\n const stores = getRegisteredStores();\n const storeNames = Object.keys(stores);\n\n const serializedData = serializeStoreData(stores);\n const onClose = useCallback(() => {\n devToolsState.hide();\n }, []);\n\n return createPortal(\n <>\n <div style={overlayStyles} onClick={onClose} />\n <div style={panelStyles}>\n <div style={headerStyles}>\n <h3>\n MobX DevTools ({storeNames.length} store\n {storeNames.length !== 1 ? \"s\" : \"\"})\n </h3>\n <button\n style={closeButtonStyles}\n onClick={onClose}\n title=\"Close (ESC)\"\n >\n ×\n </button>\n </div>\n {storeNames.length === 0 ? (\n <div>No stores registered yet.</div>\n ) : (\n <div style={contentStyles}>\n <JsonView\n data={serializedData}\n clickToExpandNode={true}\n shouldExpandNode={(level) => level < 2}\n />\n </div>\n )}\n </div>\n </>,\n document.body,\n );\n});\n\n// ============================================================================\n// PROVIDER COMPONENT\n// ============================================================================\n\nexport const CustomDevTools: React.FC = observer(() => {\n useEffect(() => {\n if (devToolsState.isVisible) {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n devToolsState.hide();\n }\n };\n document.addEventListener(\"keydown\", handleEscape);\n return () => document.removeEventListener(\"keydown\", handleEscape);\n }\n }, []);\n\n if (!devToolsState.isVisible) {\n return null;\n }\n\n return <DevToolsPanelContent />;\n});\n\n// ============================================================================\n// INITIALIZATION\n// ============================================================================\n\nexport function initializeCustomDevTools() {\n keyboardShortcutManager.startListening();\n console.log(\n \"[CustomDevTools] Initialized - Press Ctrl+Shift+D (or Cmd+Shift+D) to open\",\n );\n}\n"],"names":["jsxs","Fragment","jsx"],"mappings":"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","x_google_ignoreList":[0]}
|