@cccsaurora/clue-ui 1.0.1-dev.70 → 1.0.2-patch.38

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.
Files changed (184) hide show
  1. package/ActionForm-Sw7D-KOE.js +340 -0
  2. package/AnnotationDetails-BoX61_IF.js +160 -0
  3. package/AnnotationPreview-dYinoSA9.js +140 -0
  4. package/ClueEnrichContext-CvCIPOMC.js +412 -0
  5. package/FlexOne-BXWFOd1T.js +6 -0
  6. package/_Map-DXNg_Z-q.js +54 -0
  7. package/_MapCache-Cu25RRDU.js +129 -0
  8. package/_Uint8Array-DlJCtTvG.js +102 -0
  9. package/_baseAssignValue-CUmzp727.js +20 -0
  10. package/_baseClone-BlMmRXeX.js +208 -0
  11. package/_baseExtremum-P_0akmCi.js +27 -0
  12. package/_baseFlatten-CN7vDNEQ.js +72 -0
  13. package/_baseGet-Dgf6_xCm.js +80 -0
  14. package/_baseIsEqual-Cpjtfb3Q.js +173 -0
  15. package/_baseIteratee-CP1bocOX.js +95 -0
  16. package/_baseSlice-M5RKzt1A.js +10 -0
  17. package/_baseSum-wEbgNeUs.js +10 -0
  18. package/_baseUniq-tMFmk80M.js +61 -0
  19. package/_commonjsHelpers-C6fGbg64.js +6 -0
  20. package/_createAggregator-B4Cav8ZM.js +53 -0
  21. package/_getPrototype-CHAFQYL_.js +5 -0
  22. package/_getTag-BV_UoLYG.js +90 -0
  23. package/cloneDeep-BPVpFBzJ.js +8 -0
  24. package/components/AnnotationBody.js +34 -49
  25. package/components/AnnotationDetailPopover.js +30 -36
  26. package/components/AnnotationDetails.js +6 -6
  27. package/components/AnnotationEntry.js +47 -50
  28. package/components/AnnotationPreview.js +5 -5
  29. package/components/ClassificationChip.js +23 -44
  30. package/components/CountBadge.js +26 -31
  31. package/components/EnrichedCard.js +92 -104
  32. package/components/EnrichedChip.js +109 -134
  33. package/components/EnrichedTypography.js +110 -136
  34. package/components/ErrorBoundary.js +24 -28
  35. package/components/RetryFailedEnrichments.js +9 -10
  36. package/components/SourcePicker.js +49 -57
  37. package/components/actions/ActionForm.js +4 -4
  38. package/components/actions/ExecutePopover.js +50 -64
  39. package/components/actions/ResultModal.js +34 -37
  40. package/components/actions/form/schemaAdapter.js +20 -39
  41. package/components/display/graph/ExpandMoreButton.js +10 -10
  42. package/components/display/graph/elements/NodeCard.js +76 -92
  43. package/components/display/graph/elements/NodeTag.js +13 -15
  44. package/components/display/graph/index.js +200 -258
  45. package/components/display/graph/visualizations/Leaf.js +69 -88
  46. package/components/display/graph/visualizations/cloud/index.js +81 -98
  47. package/components/display/graph/visualizations/icons/BaseIcon.js +21 -26
  48. package/components/display/graph/visualizations/icons/BugIcon.js +12 -12
  49. package/components/display/graph/visualizations/icons/HostIcon.js +12 -12
  50. package/components/display/graph/visualizations/icons/NetworkIcon.js +12 -12
  51. package/components/display/graph/visualizations/icons/ProcessIcon.js +12 -12
  52. package/components/display/graph/visualizations/icons/TargetIcon.js +13 -13
  53. package/components/display/graph/visualizations/icons/index.js +13 -14
  54. package/components/display/graph/visualizations/panels/NodePanel.js +8 -10
  55. package/components/display/graph/visualizations/tree/BundleLine.js +81 -108
  56. package/components/display/graph/visualizations/tree/Triangle.js +13 -13
  57. package/components/display/graph/visualizations/tree/index.js +305 -407
  58. package/components/display/icons/Iconified.js +12 -27
  59. package/components/display/json/index.js +4 -4
  60. package/components/display/markdown/DynamicTabs.js +17 -22
  61. package/components/display/markdown/index.js +5674 -8531
  62. package/components/display/markdown/markdownPlugins/tabs.js +1 -1
  63. package/components/enrichment/EnrichPopover.js +47 -55
  64. package/components/fetchers/Fetcher.js +95 -123
  65. package/components/fetchers/PreviewModal.js +17 -20
  66. package/components/fetchers/StatusChip.js +18 -22
  67. package/components/group/Entry.js +11 -13
  68. package/components/group/Group.js +10 -13
  69. package/components/group/GroupControl.js +65 -76
  70. package/components/stats/QueryStatus.js +28 -37
  71. package/countBy-DOutsa_w.js +8 -0
  72. package/data/event.js +4 -6
  73. package/database/index.js +2 -2
  74. package/debounce-DryYcbJ4.js +56 -0
  75. package/get-Bow1vKwx.js +8 -0
  76. package/groupBy-BheQYl6f.js +8 -0
  77. package/hooks/ClueActionContext.js +6 -6
  78. package/hooks/ClueComponentContext.js +23 -29
  79. package/hooks/ClueConfigProvider.js +12 -14
  80. package/hooks/ClueDatabaseContext.js +13 -19
  81. package/hooks/ClueEnrichContext.js +8 -8
  82. package/hooks/ClueEnrichContextType.d.ts +7 -0
  83. package/hooks/ClueFetcherContext.js +46 -74
  84. package/hooks/ClueGroupContext.js +14 -17
  85. package/hooks/CluePopupContext.js +5 -5
  86. package/hooks/ClueProvider.js +10 -12
  87. package/hooks/selectors.js +11 -22
  88. package/hooks/useAnnotations.js +29 -45
  89. package/hooks/useClue.js +4 -6
  90. package/hooks/useClueActions.js +3 -3
  91. package/hooks/useClueConfig.js +5 -5
  92. package/hooks/useClueTypeConfig.js +3 -3
  93. package/hooks/useComparator.js +435 -722
  94. package/hooks/useErrors.js +18 -22
  95. package/hooks/useMyHighlights.js +36 -66
  96. package/hooks/useMyLocalStorage.js +43 -63
  97. package/iconify-BBckr5AQ.js +1263 -0
  98. package/icons/Action.js +49 -66
  99. package/icons/Assessment.js +68 -84
  100. package/icons/Context.js +61 -75
  101. package/icons/Opinion.js +65 -77
  102. package/icons/iconMap.js +2 -2
  103. package/identity-ByMq8VxU.js +6 -0
  104. package/index-CnaCBNrd.js +358 -0
  105. package/index-E7g8cRyW.js +568 -0
  106. package/index-V7wwd05F.js +975 -0
  107. package/index-p5_wX7q1.js +11729 -0
  108. package/index-pQg5VUAZ.js +12734 -0
  109. package/isEmpty-g47Qir2A.js +21 -0
  110. package/isNil-CjWwlQS3.js +6 -0
  111. package/isObject-B53jY8Qg.js +7 -0
  112. package/isObjectLike-BatpeCIi.js +29 -0
  113. package/isSymbol-C3_SC0Qp.js +8 -0
  114. package/last-7CdUxN0r.js +7 -0
  115. package/main.d.ts +3 -2
  116. package/main.js +62 -58
  117. package/package.json +1 -1
  118. package/sortBy-ITdmD17L.js +79 -0
  119. package/sumBy-DxJUU2E8.js +8 -0
  120. package/tabs-CgADNA57.js +195 -0
  121. package/text/Frequency.js +23 -42
  122. package/toFinite-BMy6GObD.js +14 -0
  123. package/toNumber-YVhnnJv4.js +31 -0
  124. package/types/config.d.ts +4 -1
  125. package/useClueTypeConfig-CneP98N_.js +2260 -0
  126. package/utils/chain.js +64 -91
  127. package/utils/classificationParser.d.ts +8 -8
  128. package/utils/classificationParser.js +257 -520
  129. package/utils/constants.js +10 -35
  130. package/utils/graph.js +45 -72
  131. package/utils/hashUtil.js +7 -7
  132. package/utils/line.js +81 -131
  133. package/utils/loggerUtil.js +3 -5
  134. package/utils/sessionStorage.js +29 -41
  135. package/utils/utils.js +9 -9
  136. package/utils/window.js +10 -21
  137. package/utils-CD0rFIFU.js +2704 -0
  138. package/ActionForm-D4ryHO0M.js +0 -436
  139. package/AnnotationDetails-YAPoqw3R.js +0 -175
  140. package/AnnotationPreview-DiQDjt9s.js +0 -188
  141. package/ClueEnrichContext-DIn6g8tw.js +0 -522
  142. package/FlexOne-BSYAhhtG.js +0 -9
  143. package/_Map-kgDsDYxq.js +0 -64
  144. package/_MapCache-DabaaWfq.js +0 -161
  145. package/_Uint8Array-BlVVH1tp.js +0 -129
  146. package/_baseAssignValue-CNbcU6Nb.js +0 -25
  147. package/_baseClone-D3a8Pa4T.js +0 -284
  148. package/_baseExtremum-B1o1zHjR.js +0 -33
  149. package/_baseFlatten-D4huXoEI.js +0 -92
  150. package/_baseGet-BSK_nnoz.js +0 -109
  151. package/_baseIsEqual-B5xLoweL.js +0 -238
  152. package/_baseIteratee-p6Nj07-n.js +0 -126
  153. package/_baseSlice-GAv_YFTT.js +0 -20
  154. package/_baseSum-D0WC1dN0.js +0 -13
  155. package/_baseUniq-CpupKWcL.js +0 -89
  156. package/_commonjsHelpers-CUmg6egw.js +0 -6
  157. package/_createAggregator-BpVy5xMi.js +0 -63
  158. package/_getPrototype-D1LAdQKO.js +0 -5
  159. package/_getTag-D3ToyefI.js +0 -126
  160. package/cloneDeep-CjP5k9zW.js +0 -8
  161. package/countBy-C69WslUA.js +0 -14
  162. package/debounce-bV0h5FC5.js +0 -92
  163. package/get-D3C3lEU3.js +0 -8
  164. package/groupBy-DC2oOuBN.js +0 -14
  165. package/iconify-CXMreGTg.js +0 -1782
  166. package/identity-CPGTqrE4.js +0 -6
  167. package/index-BDVjGvMI.js +0 -696
  168. package/index-BHPT3qoB.js +0 -1172
  169. package/index-BMxyILVD.js +0 -465
  170. package/index-BbPn6-Mw.js +0 -15750
  171. package/index-Dz1kF2MU.js +0 -17654
  172. package/isEmpty-BQkZubqU.js +0 -29
  173. package/isNil-CIubwp4T.js +0 -6
  174. package/isObject-FTY-5JQX.js +0 -7
  175. package/isObjectLike-OAgjjZye.js +0 -48
  176. package/isSymbol-Xd2FsJyp.js +0 -8
  177. package/last-CUCl67Im.js +0 -7
  178. package/sortBy-B-UKp4GT.js +0 -100
  179. package/sumBy-MYkDPHZL.js +0 -8
  180. package/tabs-xGuUGsJd.js +0 -254
  181. package/toFinite-Bc55msYj.js +0 -16
  182. package/toNumber-DPxy1FBy.js +0 -39
  183. package/useClueTypeConfig-CH-nGq6a.js +0 -3184
  184. package/utils-Dr4wbKBZ.js +0 -4182
package/index-BMxyILVD.js DELETED
@@ -1,465 +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 { jsx, jsxs } from "react/jsx-runtime";
5
- import { ClickAwayListener, TextField, InputAdornment, Popper, Paper, MenuList, MenuItem, ListItemText, useTheme, Stack, Skeleton } from "@mui/material";
6
- import { useRef, useState, useEffect, useMemo, lazy } from "react";
7
- import { r as removeEmpty, s as searchObject, f as flatten } from "./utils-Dr4wbKBZ.js";
8
- import { ClueComponentContext } from "./hooks/ClueComponentContext.js";
9
- import { useMyLocalStorageItem } from "./hooks/useMyLocalStorage.js";
10
- import { StorageKey } from "./utils/constants.js";
11
- import { u as useContextSelector } from "./index-BDVjGvMI.js";
12
- const ENTER = "Enter";
13
- const ESCAPE = "Escape";
14
- const ARROW_LEFT = "ArrowLeft";
15
- const ARROW_UP = "ArrowUp";
16
- const ARROW_RIGHT = "ArrowRight";
17
- const ARROW_DOWN = "ArrowDown";
18
- const BACKSPACE = "Backspace";
19
- const SPACE = " ";
20
- function is(key, check) {
21
- return key === check;
22
- }
23
- function isArrowUp(key) {
24
- return is(key, ARROW_UP);
25
- }
26
- function isArrowDown(key) {
27
- return is(key, ARROW_DOWN);
28
- }
29
- function isArrowLeft(key) {
30
- return is(key, ARROW_LEFT);
31
- }
32
- function isArrowRight(key) {
33
- return is(key, ARROW_RIGHT);
34
- }
35
- function isEscape(key) {
36
- return is(key, ESCAPE);
37
- }
38
- function isEnter(key) {
39
- return is(key, ENTER);
40
- }
41
- function isBackspace(key) {
42
- return is(key, BACKSPACE);
43
- }
44
- function isSpace(key) {
45
- return is(key, SPACE);
46
- }
47
- function parseEvent(event) {
48
- return {
49
- key: event.key,
50
- isCtrl: event.ctrlKey,
51
- isEnter: isEnter(event.key),
52
- isSpace: isSpace(event.key),
53
- isBackspace: isBackspace(event.key),
54
- isEscape: isEscape(event.key),
55
- isArrowLeft: isArrowLeft(event.key),
56
- isArrowRight: isArrowRight(event.key),
57
- isArrowUp: isArrowUp(event.key),
58
- isArrowDown: isArrowDown(event.key)
59
- };
60
- }
61
- class TuiPhraseLexer {
62
- constructor() {
63
- __publicField(this, "_phrase", null);
64
- __publicField(this, "_buffer", null);
65
- __publicField(this, "_tokens", null);
66
- __publicField(this, "_consumers", null);
67
- __publicField(this, "_consumer", null);
68
- __publicField(this, "_startIndex", 0);
69
- __publicField(this, "_endIndex", -1);
70
- }
71
- find(cursor, tokens) {
72
- const index = tokens.findIndex((t) => t.startIndex <= cursor && cursor <= t.endIndex);
73
- const token = tokens.at(index);
74
- return { index, token };
75
- }
76
- parse(phrase, cursor = 0) {
77
- this._phrase = phrase;
78
- this._buffer = [];
79
- this._tokens = [];
80
- this._consumers = this.consumers();
81
- this._consumer = null;
82
- this._startIndex = 0;
83
- this._endIndex = -1;
84
- for (let i = 0; i < this._phrase.length; i++) {
85
- this._endIndex += 1;
86
- const next = this._phrase[i];
87
- this._buffer.push(next);
88
- let newLock = false;
89
- if (!this._consumer) {
90
- this._consumer = this.lock();
91
- if (this._consumer) {
92
- newLock = true;
93
- this._consumer.init(this._buffer, this);
94
- }
95
- }
96
- if (this._consumer) {
97
- if (newLock) {
98
- newLock = false;
99
- } else {
100
- this._consumer.append(next, this);
101
- }
102
- const token = this._consumer.consume(this);
103
- if (token) {
104
- this._tokens.push(token);
105
- this._buffer = [];
106
- this._consumer = null;
107
- this._startIndex = this._endIndex + 1;
108
- }
109
- }
110
- }
111
- this._tokens.push({ type: "eop", startIndex: phrase.length, endIndex: phrase.length, value: "" });
112
- const flatTokens = this._tokens.flatMap((t) => t.children && t.children.length > 0 ? t.children : [t]);
113
- const { token: parent, index: parentIndex } = this.find(cursor, this._tokens);
114
- const { token: current, index: currentIndex } = this.find(cursor, flatTokens);
115
- const filter = cursor === current.startIndex && flatTokens[currentIndex - 1] ? flatTokens[currentIndex - 1] : current;
116
- return {
117
- cursor,
118
- parentIndex,
119
- parent,
120
- currentIndex,
121
- current,
122
- suggest: {
123
- token: filter,
124
- parent: this.find(filter.startIndex, this._tokens).token,
125
- value: filter.value.substring(0, cursor - filter.startIndex)
126
- },
127
- tokens: this._tokens
128
- };
129
- }
130
- lock() {
131
- return this._consumers.find((c) => c.lock(this));
132
- }
133
- buffer() {
134
- return this._buffer;
135
- }
136
- bufferValue() {
137
- return this._buffer.join("");
138
- }
139
- start() {
140
- return this._startIndex;
141
- }
142
- end() {
143
- return this._endIndex;
144
- }
145
- ahead(inc) {
146
- const start = this._endIndex + 1;
147
- if (inc) {
148
- return this._phrase.slice(start, start + inc);
149
- }
150
- return this._phrase.substring(start);
151
- }
152
- behind(inc) {
153
- if (inc) {
154
- return this.bufferValue().slice(-inc);
155
- }
156
- return this.bufferValue();
157
- }
158
- behindEndsWithAny(trim, ...values) {
159
- const behind = trim ? this.behind().trimEnd() : this.behind();
160
- return values.some((v) => behind.endsWith(v));
161
- }
162
- testBehind(regex) {
163
- return regex.test(this.behind());
164
- }
165
- aheadStartsWithAny(trim, ...values) {
166
- const ahead = trim ? this.ahead().trimStart() : this.ahead();
167
- return values.some((v) => ahead.startsWith(v));
168
- }
169
- aheadIsEmpty(trim = false) {
170
- return trim ? this.ahead().trim().length === 0 : this.ahead().length === 0;
171
- }
172
- testAhead(regex) {
173
- return regex.test(this.ahead());
174
- }
175
- }
176
- class TuiPhraseConsumer {
177
- constructor() {
178
- __publicField(this, "_buffer", []);
179
- }
180
- reset() {
181
- this._buffer = [];
182
- }
183
- init(buffer, lexer) {
184
- this._buffer = [...buffer];
185
- }
186
- append(next, lexer) {
187
- this._buffer.push(next);
188
- }
189
- bufferValue() {
190
- return this._buffer.join("");
191
- }
192
- endsWithAny(...values) {
193
- const _bufferValue = this.bufferValue();
194
- return values.some((v) => _bufferValue.endsWith(v));
195
- }
196
- test(regex) {
197
- return regex.test(this.bufferValue());
198
- }
199
- }
200
- class WhitespaceConsumer extends TuiPhraseConsumer {
201
- lock(lexer) {
202
- return lexer.bufferValue().match(/\s/) && lexer.ahead(1) !== " ";
203
- }
204
- consume(lexer) {
205
- if (lexer.ahead(1) !== " ") {
206
- return {
207
- type: "whitespace",
208
- startIndex: lexer.start(),
209
- endIndex: lexer.end(),
210
- value: this._buffer.join("")
211
- };
212
- }
213
- return null;
214
- }
215
- }
216
- class WordConsumer extends TuiPhraseConsumer {
217
- lock(lexer) {
218
- return !lexer.bufferValue().match(/\s/) && (lexer.ahead(1) === " " || lexer.ahead(1) === "");
219
- }
220
- consume(lexer) {
221
- if (lexer.ahead(1) === " " || lexer.aheadIsEmpty(true)) {
222
- return {
223
- type: "word",
224
- startIndex: lexer.start(),
225
- endIndex: lexer.end(),
226
- value: this._buffer.join("")
227
- };
228
- }
229
- return null;
230
- }
231
- }
232
- class WordLexer extends TuiPhraseLexer {
233
- consumers() {
234
- return [new WordConsumer(), new WhitespaceConsumer()];
235
- }
236
- }
237
- class WordSuggestor {
238
- constructor(suggestions) {
239
- this.suggestions = suggestions;
240
- }
241
- suggest(phrase) {
242
- return this.suggestions.filter((s) => s.indexOf(phrase.suggest.value) > -1);
243
- }
244
- }
245
- function TuiPhrase({
246
- value = "",
247
- variant = "outlined",
248
- suggestions = [],
249
- lexer,
250
- suggester,
251
- startAdornment,
252
- endAdornment,
253
- onChange,
254
- onKeyDown,
255
- ...props
256
- }) {
257
- const containerRef = useRef();
258
- const inputRef = useRef();
259
- const menuRef = useRef();
260
- const lexerRef = useRef(lexer || new WordLexer());
261
- const analysisRef = useRef();
262
- const suggesterRef = useRef(suggester || new WordSuggestor(suggestions));
263
- const [optionsOpen, setOptionsOpen] = useState(false);
264
- const [options, setOptions] = useState(suggestions);
265
- useEffect(() => {
266
- suggesterRef.current = suggester || new WordSuggestor(suggestions);
267
- }, [suggester, suggestions]);
268
- const lex = (inputValue, offset = 0) => {
269
- let cursor = inputRef.current.querySelector("input").selectionStart + offset;
270
- cursor = cursor < 0 ? 0 : cursor > inputValue.length ? inputValue.length : cursor;
271
- analysisRef.current = lexerRef.current.parse(inputValue, cursor);
272
- return analysisRef.current;
273
- };
274
- const _suggest = (inputValue, offset = 0) => {
275
- const _suggestions = suggesterRef.current.suggest(lex(inputValue, offset));
276
- setOptions((_suggestions == null ? void 0 : _suggestions.length) > 0 ? _suggestions : [...suggestions]);
277
- };
278
- const _onChange = (event) => {
279
- onChange(event.target.value);
280
- };
281
- const _onInputKeyDown = (event) => {
282
- const parsedEvent = parseEvent(event);
283
- const { isEnter: isEnter2, isCtrl, isSpace: isSpace2, isEscape: isEscape2, isArrowDown: isArrowDown2 } = parsedEvent;
284
- if (isArrowDown2) {
285
- event.preventDefault();
286
- menuRef.current.focus();
287
- } else if (isCtrl && isSpace2) {
288
- setOptionsOpen(true);
289
- _suggest(value);
290
- } else if (isEscape2) {
291
- setOptionsOpen(!optionsOpen);
292
- }
293
- if (isEnter2 && optionsOpen && options.length === 1) {
294
- onWordClick(options[0]);
295
- event.preventDefault();
296
- } else if (onKeyDown) {
297
- onKeyDown(parsedEvent);
298
- }
299
- };
300
- const _onSelectCapture = (event) => {
301
- if (optionsOpen) {
302
- _suggest(event.target.value);
303
- }
304
- };
305
- const _onMenuKeyDown = (event) => {
306
- const { isEscape: isEscape2 } = parseEvent(event);
307
- if (isEscape2) {
308
- inputRef.current.focus();
309
- setOptionsOpen(false);
310
- }
311
- };
312
- const onWordClick = (word) => {
313
- const { suggest } = analysisRef.current;
314
- const inputEl = inputRef.current.querySelector("input");
315
- inputEl.focus();
316
- inputEl.setSelectionRange(suggest.token.startIndex, suggest.token.endIndex + 1);
317
- document.execCommand("insertText", false, word);
318
- setOptionsOpen(false);
319
- };
320
- return /* @__PURE__ */ jsx(ClickAwayListener, { onClickAway: () => setOptionsOpen(false), children: /* @__PURE__ */ jsxs("div", { ref: containerRef, style: { position: "relative" }, children: [
321
- /* @__PURE__ */ jsx(
322
- TextField,
323
- {
324
- ref: inputRef,
325
- ...props,
326
- fullWidth: true,
327
- autoComplete: "off",
328
- value,
329
- variant,
330
- onChange: _onChange,
331
- onKeyDown: _onInputKeyDown,
332
- InputProps: {
333
- ...props.InputProps,
334
- onSelectCapture: _onSelectCapture,
335
- startAdornment: startAdornment && /* @__PURE__ */ jsx(InputAdornment, { position: "start", children: startAdornment }),
336
- endAdornment: endAdornment && /* @__PURE__ */ jsx(InputAdornment, { position: "end", children: endAdornment })
337
- }
338
- }
339
- ),
340
- /* @__PURE__ */ jsx(
341
- Popper,
342
- {
343
- anchorEl: containerRef.current,
344
- style: { width: "100%", zIndex: 100 },
345
- open: optionsOpen && options.length > 0,
346
- disablePortal: true,
347
- children: /* @__PURE__ */ jsx(
348
- Paper,
349
- {
350
- elevation: 2,
351
- sx: { maxHeight: 200, overflow: "auto", borderTopRightRadius: 0, borderTopLeftRadius: 0 },
352
- children: /* @__PURE__ */ jsx(
353
- MenuList,
354
- {
355
- ref: menuRef,
356
- onKeyDown: _onMenuKeyDown,
357
- sx: {
358
- "&:focus": {
359
- outline: "none"
360
- }
361
- },
362
- children: options == null ? void 0 : options.map((o) => /* @__PURE__ */ jsx(MenuItem, { onClick: () => onWordClick(o), children: /* @__PURE__ */ jsx(ListItemText, { children: o }) }, o))
363
- }
364
- )
365
- }
366
- )
367
- }
368
- )
369
- ] }) });
370
- }
371
- const JSONViewer = ({ data, collapse = true, forceCompact = false, slotProps }) => {
372
- var _a, _b, _c;
373
- const theme = useTheme();
374
- const [compact] = useMyLocalStorageItem(StorageKey.COMPACT_JSON);
375
- const [flat] = useMyLocalStorageItem(StorageKey.FLATTEN_JSON);
376
- const _ProvidedReactJson = useContextSelector(ClueComponentContext, (ctx) => ctx == null ? void 0 : ctx.ReactJson);
377
- const { t } = useContextSelector(ClueComponentContext, (ctx) => ctx == null ? void 0 : ctx.i18next);
378
- const [ReactJson, setReactJson] = useState(null);
379
- const [query, setQuery] = useState("");
380
- const isDark = useMemo(() => theme.palette.mode === "dark", [theme]);
381
- const filteredData = useMemo(() => removeEmpty(data, compact || forceCompact), [compact, data, forceCompact]);
382
- const searchedData = useMemo(() => {
383
- const _searchedData = searchObject(filteredData, query);
384
- return flat ? flatten(_searchedData) : _searchedData;
385
- }, [filteredData, flat, query]);
386
- const hasError = useMemo(() => {
387
- try {
388
- new RegExp(query);
389
- return false;
390
- } catch {
391
- return true;
392
- }
393
- }, [query]);
394
- useEffect(() => {
395
- if (_ProvidedReactJson) {
396
- setReactJson(() => _ProvidedReactJson);
397
- } else {
398
- setReactJson(lazy(() => import("@microlink/react-json-view")));
399
- }
400
- }, [_ProvidedReactJson]);
401
- const shouldCollapse = (field) => {
402
- return field.name !== "root" && field.type !== "object" || field.namespace.length > 3;
403
- };
404
- return data ? /* @__PURE__ */ jsxs(
405
- Stack,
406
- {
407
- direction: "column",
408
- spacing: 1,
409
- ...slotProps == null ? void 0 : slotProps.stack,
410
- sx: {
411
- "& > div:first-of-type": { mt: 1, mr: 0.5 },
412
- ...Array.isArray((_a = slotProps == null ? void 0 : slotProps.stack) == null ? void 0 : _a.sx) ? (_b = slotProps == null ? void 0 : slotProps.stack) == null ? void 0 : _b.sx : [(_c = slotProps == null ? void 0 : slotProps.stack) == null ? void 0 : _c.sx]
413
- },
414
- children: [
415
- /* @__PURE__ */ jsx(
416
- TuiPhrase,
417
- {
418
- value: query,
419
- onChange: setQuery,
420
- size: "small",
421
- error: hasError,
422
- label: t("json.viewer.search.label"),
423
- placeholder: t("json.viewer.search.prompt")
424
- }
425
- ),
426
- ReactJson && /* @__PURE__ */ jsx(
427
- ReactJson,
428
- {
429
- src: searchedData,
430
- theme: isDark ? "summerfruit" : "summerfruit:inverted",
431
- indentWidth: 2,
432
- displayDataTypes: !compact && !forceCompact,
433
- displayObjectSize: !compact && !forceCompact,
434
- shouldCollapse: collapse ? shouldCollapse : false,
435
- quotesOnKeys: false,
436
- style: {
437
- flex: 1,
438
- overflow: "auto",
439
- height: "100%",
440
- fontSize: compact || forceCompact ? "small" : "smaller",
441
- borderRadius: theme.shape.borderRadius,
442
- padding: theme.spacing(1)
443
- },
444
- enableClipboard: (_data) => {
445
- if (typeof _data.src === "string") {
446
- navigator.clipboard.writeText(_data.src);
447
- } else {
448
- navigator.clipboard.writeText(JSON.stringify(_data.src));
449
- }
450
- },
451
- ...{
452
- // Type declaration is wrong - this is a valid prop
453
- displayArrayKey: !compact && !forceCompact
454
- },
455
- ...slotProps == null ? void 0 : slotProps.json
456
- }
457
- )
458
- ]
459
- }
460
- ) : /* @__PURE__ */ jsx(Skeleton, { width: "100%", height: "95%", variant: "rounded" });
461
- };
462
- export {
463
- JSONViewer as J,
464
- parseEvent as p
465
- };