@uipath/apollo-react 6.40.0 → 6.42.0
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/dist/canvas/components/JsonTree/JsonTree.cjs +97 -3
- package/dist/canvas/components/JsonTree/JsonTree.d.ts +3 -1
- package/dist/canvas/components/JsonTree/JsonTree.d.ts.map +1 -1
- package/dist/canvas/components/JsonTree/JsonTree.js +99 -5
- package/dist/canvas/components/JsonTree/JsonTreeRow.cjs +6 -2
- package/dist/canvas/components/JsonTree/JsonTreeRow.d.ts +1 -0
- package/dist/canvas/components/JsonTree/JsonTreeRow.d.ts.map +1 -1
- package/dist/canvas/components/JsonTree/JsonTreeRow.js +2 -1
- package/dist/canvas/components/NodeIOView/NodeIOView.cjs +2 -1
- package/dist/canvas/components/NodeIOView/NodeIOView.d.ts +1 -1
- package/dist/canvas/components/NodeIOView/NodeIOView.d.ts.map +1 -1
- package/dist/canvas/components/NodeIOView/NodeIOView.js +2 -1
- package/dist/canvas/components/NodeIOView/NodeIOView.types.d.ts +1 -0
- package/dist/canvas/components/NodeIOView/NodeIOView.types.d.ts.map +1 -1
- package/dist/canvas/styles/tailwind.canvas.css +1 -1
- package/package.json +2 -2
|
@@ -27,14 +27,91 @@ __webpack_require__.d(__webpack_exports__, {
|
|
|
27
27
|
JsonTree: ()=>JsonTree
|
|
28
28
|
});
|
|
29
29
|
const jsx_runtime_namespaceObject = require("react/jsx-runtime");
|
|
30
|
+
const react_virtual_namespaceObject = require("@tanstack/react-virtual");
|
|
30
31
|
const apollo_wind_namespaceObject = require("@uipath/apollo-wind");
|
|
31
32
|
const tooltip_namespaceObject = require("@uipath/apollo-wind/components/ui/tooltip");
|
|
32
33
|
const external_react_namespaceObject = require("react");
|
|
33
34
|
const index_cjs_namespaceObject = require("../../../i18n/index.cjs");
|
|
35
|
+
const useIsomorphicLayoutEffect_cjs_namespaceObject = require("../../hooks/useIsomorphicLayoutEffect.cjs");
|
|
34
36
|
const external_CanvasTooltip_cjs_namespaceObject = require("../CanvasTooltip.cjs");
|
|
35
37
|
const external_buildJsonTree_cjs_namespaceObject = require("./buildJsonTree.cjs");
|
|
36
38
|
const external_clipboard_cjs_namespaceObject = require("./clipboard.cjs");
|
|
37
39
|
const external_JsonTreeRow_cjs_namespaceObject = require("./JsonTreeRow.cjs");
|
|
40
|
+
const VIRTUAL_OVERSCAN = 10;
|
|
41
|
+
function scrollMarginOf(element, scrollElement) {
|
|
42
|
+
return Math.round(element.getBoundingClientRect().top - scrollElement.getBoundingClientRect().top + scrollElement.scrollTop);
|
|
43
|
+
}
|
|
44
|
+
function VirtualRows({ rows, containerRef, scrollElement, pinnedPaths }) {
|
|
45
|
+
const [scrollMargin, setScrollMargin] = (0, external_react_namespaceObject.useState)(0);
|
|
46
|
+
const getItemKey = (0, external_react_namespaceObject.useCallback)((index)=>rows[index]?.node.path ?? index, [
|
|
47
|
+
rows
|
|
48
|
+
]);
|
|
49
|
+
const virtualizer = (0, react_virtual_namespaceObject.useVirtualizer)({
|
|
50
|
+
count: rows.length,
|
|
51
|
+
getScrollElement: ()=>scrollElement ?? containerRef.current,
|
|
52
|
+
estimateSize: ()=>external_JsonTreeRow_cjs_namespaceObject.ROW_MIN_HEIGHT_PX,
|
|
53
|
+
getItemKey,
|
|
54
|
+
overscan: VIRTUAL_OVERSCAN,
|
|
55
|
+
scrollMargin
|
|
56
|
+
});
|
|
57
|
+
(0, useIsomorphicLayoutEffect_cjs_namespaceObject.useIsomorphicLayoutEffect)(()=>{
|
|
58
|
+
const container = containerRef.current;
|
|
59
|
+
if (!container || !scrollElement) {
|
|
60
|
+
if (0 !== scrollMargin) setScrollMargin(0);
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
if (virtualizer.isScrolling) return;
|
|
64
|
+
const next = scrollMarginOf(container, scrollElement);
|
|
65
|
+
if (next !== scrollMargin) setScrollMargin(next);
|
|
66
|
+
});
|
|
67
|
+
const isPinning = pinnedPaths.length > 0;
|
|
68
|
+
const indexByPath = (0, external_react_namespaceObject.useMemo)(()=>{
|
|
69
|
+
if (!isPinning) return;
|
|
70
|
+
const byPath = new Map();
|
|
71
|
+
rows.forEach((row, index)=>byPath.set(row.node.path, index));
|
|
72
|
+
return byPath;
|
|
73
|
+
}, [
|
|
74
|
+
isPinning,
|
|
75
|
+
rows
|
|
76
|
+
]);
|
|
77
|
+
const items = virtualizer.getVirtualItems();
|
|
78
|
+
const firstWindowed = items[0]?.index ?? -1;
|
|
79
|
+
const lastWindowed = items[items.length - 1]?.index ?? -2;
|
|
80
|
+
const pinnedItems = [];
|
|
81
|
+
if (indexByPath) for (const path of pinnedPaths){
|
|
82
|
+
const index = indexByPath.get(path);
|
|
83
|
+
if (void 0 === index || index >= firstWindowed && index <= lastWindowed) continue;
|
|
84
|
+
const measurement = virtualizer.measurementsCache[index];
|
|
85
|
+
if (measurement) pinnedItems.push(measurement);
|
|
86
|
+
}
|
|
87
|
+
const rendered = 0 === pinnedItems.length ? items : [
|
|
88
|
+
...pinnedItems.filter((item)=>item.index < firstWindowed),
|
|
89
|
+
...items,
|
|
90
|
+
...pinnedItems.filter((item)=>item.index > lastWindowed)
|
|
91
|
+
];
|
|
92
|
+
return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
|
|
93
|
+
className: "relative",
|
|
94
|
+
style: {
|
|
95
|
+
height: virtualizer.getTotalSize()
|
|
96
|
+
},
|
|
97
|
+
children: rendered.map((item)=>{
|
|
98
|
+
const row = rows[item.index];
|
|
99
|
+
if (!row) return null;
|
|
100
|
+
return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("div", {
|
|
101
|
+
"data-index": item.index,
|
|
102
|
+
ref: virtualizer.measureElement,
|
|
103
|
+
className: "absolute top-0 left-0 w-full",
|
|
104
|
+
style: {
|
|
105
|
+
transform: `translateY(${item.start - virtualizer.options.scrollMargin}px)`
|
|
106
|
+
},
|
|
107
|
+
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_JsonTreeRow_cjs_namespaceObject.JsonTreeRow, {
|
|
108
|
+
node: row.node,
|
|
109
|
+
depth: row.depth
|
|
110
|
+
})
|
|
111
|
+
}, item.key);
|
|
112
|
+
})
|
|
113
|
+
});
|
|
114
|
+
}
|
|
38
115
|
function valueAsText(node) {
|
|
39
116
|
if ('string' == typeof node.value) return node.value;
|
|
40
117
|
if (void 0 === node.value) return 'null';
|
|
@@ -46,12 +123,23 @@ const DefaultRowWrapper = ({ className, style, onClick, children })=>/*#__PURE__
|
|
|
46
123
|
onClick: onClick,
|
|
47
124
|
children: children
|
|
48
125
|
});
|
|
49
|
-
function JsonTree({ nodes, collapsed = {}, onToggleCollapsed, query, filterPredicate, readOnly = false, onEdit, rowWrapper, decorateNode, deriveTypeIcon, renderValue, nodeActions, maxInlineActions = 3, renderCodeEditor, pathForCopy, onCopy, emptyMessage, className }) {
|
|
126
|
+
function JsonTree({ nodes, collapsed = {}, onToggleCollapsed, query, filterPredicate, readOnly = false, onEdit, rowWrapper, decorateNode, deriveTypeIcon, renderValue, nodeActions, maxInlineActions = 3, renderCodeEditor, pathForCopy, onCopy, virtualized = false, scrollElement, emptyMessage, className }) {
|
|
50
127
|
const { _ } = (0, index_cjs_namespaceObject.useSafeLingui)();
|
|
128
|
+
const containerRef = (0, external_react_namespaceObject.useRef)(null);
|
|
129
|
+
const usesAncestorScroller = virtualized && !!scrollElement;
|
|
51
130
|
const RowWrapper = rowWrapper ?? DefaultRowWrapper;
|
|
52
131
|
const [editingPath, setEditingPath] = (0, external_react_namespaceObject.useState)(null);
|
|
53
132
|
const [jsonEditingPath, setJsonEditingPath] = (0, external_react_namespaceObject.useState)(null);
|
|
54
133
|
const [wrappedPaths, setWrappedPaths] = (0, external_react_namespaceObject.useState)({});
|
|
134
|
+
const pinnedPaths = (0, external_react_namespaceObject.useMemo)(()=>[
|
|
135
|
+
...new Set([
|
|
136
|
+
editingPath,
|
|
137
|
+
jsonEditingPath
|
|
138
|
+
].filter((path)=>null !== path))
|
|
139
|
+
], [
|
|
140
|
+
editingPath,
|
|
141
|
+
jsonEditingPath
|
|
142
|
+
]);
|
|
55
143
|
const [copied, setCopied] = (0, external_react_namespaceObject.useState)(null);
|
|
56
144
|
const copyTimerRef = (0, external_react_namespaceObject.useRef)(null);
|
|
57
145
|
(0, external_react_namespaceObject.useEffect)(()=>()=>{
|
|
@@ -140,9 +228,15 @@ function JsonTree({ nodes, collapsed = {}, onToggleCollapsed, query, filterPredi
|
|
|
140
228
|
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_JsonTreeRow_cjs_namespaceObject.JsonTreeRowContextProvider, {
|
|
141
229
|
value: rowContext,
|
|
142
230
|
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)("div", {
|
|
143
|
-
|
|
231
|
+
ref: containerRef,
|
|
232
|
+
className: (0, apollo_wind_namespaceObject.cn)(usesAncestorScroller ? 'overflow-x-clip' : 'h-full overflow-y-auto overflow-x-hidden', virtualized && !usesAncestorScroller && 'max-h-screen', virtualized && '[overflow-anchor:none]', className),
|
|
144
233
|
children: [
|
|
145
|
-
|
|
234
|
+
virtualized ? /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(VirtualRows, {
|
|
235
|
+
rows: rows,
|
|
236
|
+
containerRef: containerRef,
|
|
237
|
+
scrollElement: scrollElement,
|
|
238
|
+
pinnedPaths: pinnedPaths
|
|
239
|
+
}) : rows.map(({ node, depth })=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_JsonTreeRow_cjs_namespaceObject.JsonTreeRow, {
|
|
146
240
|
node: node,
|
|
147
241
|
depth: depth
|
|
148
242
|
}, node.path)),
|
|
@@ -16,8 +16,10 @@ export interface JsonTreeProps {
|
|
|
16
16
|
renderCodeEditor?: RenderCodeEditor;
|
|
17
17
|
pathForCopy?: (path: string) => string;
|
|
18
18
|
onCopy?: (event: CopyEvent) => void;
|
|
19
|
+
virtualized?: boolean;
|
|
20
|
+
scrollElement?: HTMLElement | null;
|
|
19
21
|
emptyMessage?: string;
|
|
20
22
|
className?: string;
|
|
21
23
|
}
|
|
22
|
-
export declare function JsonTree({ nodes, collapsed, onToggleCollapsed, query, filterPredicate, readOnly, onEdit, rowWrapper, decorateNode, deriveTypeIcon, renderValue, nodeActions, maxInlineActions, renderCodeEditor, pathForCopy, onCopy, emptyMessage, className, }: JsonTreeProps): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
export declare function JsonTree({ nodes, collapsed, onToggleCollapsed, query, filterPredicate, readOnly, onEdit, rowWrapper, decorateNode, deriveTypeIcon, renderValue, nodeActions, maxInlineActions, renderCodeEditor, pathForCopy, onCopy, virtualized, scrollElement, emptyMessage, className, }: JsonTreeProps): import("react/jsx-runtime").JSX.Element;
|
|
23
25
|
//# sourceMappingURL=JsonTree.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonTree.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/JsonTree/JsonTree.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"JsonTree.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/JsonTree/JsonTree.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,SAAS,EACT,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAQ1B,MAAM,WAAW,aAAa;IAE5B,KAAK,EAAE,YAAY,EAAE,CAAC;IAEtB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAE3C,KAAK,CAAC,EAAE,MAAM,CAAC;IAKf,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,OAAO,CAAC;IAElD,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,GAAG,SAAS,KAAK,IAAI,CAAC;IAMpE,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAEhC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,cAAc,GAAG,SAAS,CAAC;IAElE,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC,WAAW,CAAC,EAAE,eAAe,CAAC;IAM9B,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAKlC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAEpC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAEvC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IAQpC,WAAW,CAAC,EAAE,OAAO,CAAC;IAQtB,aAAa,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA+ID,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,SAAc,EACd,iBAAiB,EACjB,KAAK,EACL,eAAe,EACf,QAAgB,EAChB,MAAM,EACN,UAAU,EACV,YAAY,EACZ,cAAc,EACd,WAAW,EACX,WAAW,EACX,gBAAoB,EACpB,gBAAgB,EAChB,WAAW,EACX,MAAM,EACN,WAAmB,EACnB,aAAa,EACb,YAAY,EACZ,SAAS,GACV,EAAE,aAAa,2CA4Jf"}
|
|
@@ -1,12 +1,89 @@
|
|
|
1
1
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useVirtualizer } from "@tanstack/react-virtual";
|
|
2
3
|
import { cn } from "@uipath/apollo-wind";
|
|
3
4
|
import { TooltipProvider } from "@uipath/apollo-wind/components/ui/tooltip";
|
|
4
|
-
import { useEffect, useMemo, useRef, useState } from "react";
|
|
5
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
5
6
|
import { useSafeLingui } from "../../../i18n/index.js";
|
|
7
|
+
import { useIsomorphicLayoutEffect } from "../../hooks/useIsomorphicLayoutEffect.js";
|
|
6
8
|
import { CanvasTooltipProviderMarker } from "../CanvasTooltip.js";
|
|
7
9
|
import { flattenJsonTree } from "./buildJsonTree.js";
|
|
8
10
|
import { copyTextToClipboard } from "./clipboard.js";
|
|
9
|
-
import { JsonTreeRow, JsonTreeRowContextProvider } from "./JsonTreeRow.js";
|
|
11
|
+
import { JsonTreeRow, JsonTreeRowContextProvider, ROW_MIN_HEIGHT_PX } from "./JsonTreeRow.js";
|
|
12
|
+
const VIRTUAL_OVERSCAN = 10;
|
|
13
|
+
function scrollMarginOf(element, scrollElement) {
|
|
14
|
+
return Math.round(element.getBoundingClientRect().top - scrollElement.getBoundingClientRect().top + scrollElement.scrollTop);
|
|
15
|
+
}
|
|
16
|
+
function VirtualRows({ rows, containerRef, scrollElement, pinnedPaths }) {
|
|
17
|
+
const [scrollMargin, setScrollMargin] = useState(0);
|
|
18
|
+
const getItemKey = useCallback((index)=>rows[index]?.node.path ?? index, [
|
|
19
|
+
rows
|
|
20
|
+
]);
|
|
21
|
+
const virtualizer = useVirtualizer({
|
|
22
|
+
count: rows.length,
|
|
23
|
+
getScrollElement: ()=>scrollElement ?? containerRef.current,
|
|
24
|
+
estimateSize: ()=>ROW_MIN_HEIGHT_PX,
|
|
25
|
+
getItemKey,
|
|
26
|
+
overscan: VIRTUAL_OVERSCAN,
|
|
27
|
+
scrollMargin
|
|
28
|
+
});
|
|
29
|
+
useIsomorphicLayoutEffect(()=>{
|
|
30
|
+
const container = containerRef.current;
|
|
31
|
+
if (!container || !scrollElement) {
|
|
32
|
+
if (0 !== scrollMargin) setScrollMargin(0);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (virtualizer.isScrolling) return;
|
|
36
|
+
const next = scrollMarginOf(container, scrollElement);
|
|
37
|
+
if (next !== scrollMargin) setScrollMargin(next);
|
|
38
|
+
});
|
|
39
|
+
const isPinning = pinnedPaths.length > 0;
|
|
40
|
+
const indexByPath = useMemo(()=>{
|
|
41
|
+
if (!isPinning) return;
|
|
42
|
+
const byPath = new Map();
|
|
43
|
+
rows.forEach((row, index)=>byPath.set(row.node.path, index));
|
|
44
|
+
return byPath;
|
|
45
|
+
}, [
|
|
46
|
+
isPinning,
|
|
47
|
+
rows
|
|
48
|
+
]);
|
|
49
|
+
const items = virtualizer.getVirtualItems();
|
|
50
|
+
const firstWindowed = items[0]?.index ?? -1;
|
|
51
|
+
const lastWindowed = items[items.length - 1]?.index ?? -2;
|
|
52
|
+
const pinnedItems = [];
|
|
53
|
+
if (indexByPath) for (const path of pinnedPaths){
|
|
54
|
+
const index = indexByPath.get(path);
|
|
55
|
+
if (void 0 === index || index >= firstWindowed && index <= lastWindowed) continue;
|
|
56
|
+
const measurement = virtualizer.measurementsCache[index];
|
|
57
|
+
if (measurement) pinnedItems.push(measurement);
|
|
58
|
+
}
|
|
59
|
+
const rendered = 0 === pinnedItems.length ? items : [
|
|
60
|
+
...pinnedItems.filter((item)=>item.index < firstWindowed),
|
|
61
|
+
...items,
|
|
62
|
+
...pinnedItems.filter((item)=>item.index > lastWindowed)
|
|
63
|
+
];
|
|
64
|
+
return /*#__PURE__*/ jsx("div", {
|
|
65
|
+
className: "relative",
|
|
66
|
+
style: {
|
|
67
|
+
height: virtualizer.getTotalSize()
|
|
68
|
+
},
|
|
69
|
+
children: rendered.map((item)=>{
|
|
70
|
+
const row = rows[item.index];
|
|
71
|
+
if (!row) return null;
|
|
72
|
+
return /*#__PURE__*/ jsx("div", {
|
|
73
|
+
"data-index": item.index,
|
|
74
|
+
ref: virtualizer.measureElement,
|
|
75
|
+
className: "absolute top-0 left-0 w-full",
|
|
76
|
+
style: {
|
|
77
|
+
transform: `translateY(${item.start - virtualizer.options.scrollMargin}px)`
|
|
78
|
+
},
|
|
79
|
+
children: /*#__PURE__*/ jsx(JsonTreeRow, {
|
|
80
|
+
node: row.node,
|
|
81
|
+
depth: row.depth
|
|
82
|
+
})
|
|
83
|
+
}, item.key);
|
|
84
|
+
})
|
|
85
|
+
});
|
|
86
|
+
}
|
|
10
87
|
function valueAsText(node) {
|
|
11
88
|
if ('string' == typeof node.value) return node.value;
|
|
12
89
|
if (void 0 === node.value) return 'null';
|
|
@@ -18,12 +95,23 @@ const DefaultRowWrapper = ({ className, style, onClick, children })=>/*#__PURE__
|
|
|
18
95
|
onClick: onClick,
|
|
19
96
|
children: children
|
|
20
97
|
});
|
|
21
|
-
function JsonTree({ nodes, collapsed = {}, onToggleCollapsed, query, filterPredicate, readOnly = false, onEdit, rowWrapper, decorateNode, deriveTypeIcon, renderValue, nodeActions, maxInlineActions = 3, renderCodeEditor, pathForCopy, onCopy, emptyMessage, className }) {
|
|
98
|
+
function JsonTree({ nodes, collapsed = {}, onToggleCollapsed, query, filterPredicate, readOnly = false, onEdit, rowWrapper, decorateNode, deriveTypeIcon, renderValue, nodeActions, maxInlineActions = 3, renderCodeEditor, pathForCopy, onCopy, virtualized = false, scrollElement, emptyMessage, className }) {
|
|
22
99
|
const { _ } = useSafeLingui();
|
|
100
|
+
const containerRef = useRef(null);
|
|
101
|
+
const usesAncestorScroller = virtualized && !!scrollElement;
|
|
23
102
|
const RowWrapper = rowWrapper ?? DefaultRowWrapper;
|
|
24
103
|
const [editingPath, setEditingPath] = useState(null);
|
|
25
104
|
const [jsonEditingPath, setJsonEditingPath] = useState(null);
|
|
26
105
|
const [wrappedPaths, setWrappedPaths] = useState({});
|
|
106
|
+
const pinnedPaths = useMemo(()=>[
|
|
107
|
+
...new Set([
|
|
108
|
+
editingPath,
|
|
109
|
+
jsonEditingPath
|
|
110
|
+
].filter((path)=>null !== path))
|
|
111
|
+
], [
|
|
112
|
+
editingPath,
|
|
113
|
+
jsonEditingPath
|
|
114
|
+
]);
|
|
27
115
|
const [copied, setCopied] = useState(null);
|
|
28
116
|
const copyTimerRef = useRef(null);
|
|
29
117
|
useEffect(()=>()=>{
|
|
@@ -112,9 +200,15 @@ function JsonTree({ nodes, collapsed = {}, onToggleCollapsed, query, filterPredi
|
|
|
112
200
|
children: /*#__PURE__*/ jsx(JsonTreeRowContextProvider, {
|
|
113
201
|
value: rowContext,
|
|
114
202
|
children: /*#__PURE__*/ jsxs("div", {
|
|
115
|
-
|
|
203
|
+
ref: containerRef,
|
|
204
|
+
className: cn(usesAncestorScroller ? 'overflow-x-clip' : 'h-full overflow-y-auto overflow-x-hidden', virtualized && !usesAncestorScroller && 'max-h-screen', virtualized && '[overflow-anchor:none]', className),
|
|
116
205
|
children: [
|
|
117
|
-
|
|
206
|
+
virtualized ? /*#__PURE__*/ jsx(VirtualRows, {
|
|
207
|
+
rows: rows,
|
|
208
|
+
containerRef: containerRef,
|
|
209
|
+
scrollElement: scrollElement,
|
|
210
|
+
pinnedPaths: pinnedPaths
|
|
211
|
+
}) : rows.map(({ node, depth })=>/*#__PURE__*/ jsx(JsonTreeRow, {
|
|
118
212
|
node: node,
|
|
119
213
|
depth: depth
|
|
120
214
|
}, node.path)),
|
|
@@ -25,7 +25,8 @@ var __webpack_exports__ = {};
|
|
|
25
25
|
__webpack_require__.r(__webpack_exports__);
|
|
26
26
|
__webpack_require__.d(__webpack_exports__, {
|
|
27
27
|
JsonTreeRowContextProvider: ()=>JsonTreeRowContextProvider,
|
|
28
|
-
JsonTreeRow: ()=>JsonTreeRow
|
|
28
|
+
JsonTreeRow: ()=>JsonTreeRow,
|
|
29
|
+
ROW_MIN_HEIGHT_PX: ()=>ROW_MIN_HEIGHT_PX
|
|
29
30
|
});
|
|
30
31
|
const jsx_runtime_namespaceObject = require("react/jsx-runtime");
|
|
31
32
|
const apollo_wind_namespaceObject = require("@uipath/apollo-wind");
|
|
@@ -41,6 +42,7 @@ const external_NodeKey_cjs_namespaceObject = require("./NodeKey.cjs");
|
|
|
41
42
|
const external_RowActions_cjs_namespaceObject = require("./RowActions.cjs");
|
|
42
43
|
const external_ScalarValueCell_cjs_namespaceObject = require("./ScalarValueCell.cjs");
|
|
43
44
|
const ROW_CLASS = 'group flex min-h-7 cursor-default items-center gap-1.5 py-1 pr-1 transition hover:bg-surface-overlay';
|
|
45
|
+
const ROW_MIN_HEIGHT_PX = 28;
|
|
44
46
|
const VALUE_CELL_CLASS = 'flex min-w-8 flex-1 items-center';
|
|
45
47
|
function rowIndent(depth, extra = 0) {
|
|
46
48
|
return {
|
|
@@ -345,9 +347,11 @@ function JsonTreeRow({ node, depth }) {
|
|
|
345
347
|
}
|
|
346
348
|
exports.JsonTreeRow = __webpack_exports__.JsonTreeRow;
|
|
347
349
|
exports.JsonTreeRowContextProvider = __webpack_exports__.JsonTreeRowContextProvider;
|
|
350
|
+
exports.ROW_MIN_HEIGHT_PX = __webpack_exports__.ROW_MIN_HEIGHT_PX;
|
|
348
351
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
349
352
|
"JsonTreeRow",
|
|
350
|
-
"JsonTreeRowContextProvider"
|
|
353
|
+
"JsonTreeRowContextProvider",
|
|
354
|
+
"ROW_MIN_HEIGHT_PX"
|
|
351
355
|
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
352
356
|
Object.defineProperty(exports, '__esModule', {
|
|
353
357
|
value: true
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { CopyEvent, DeriveTypeIcon, JsonTreeNode, JsonTreeRowWrapper, JsonValue, NodeActionsResolver, NodeDecoration, RenderCodeEditor, RenderValueCell } from './JsonTree.types';
|
|
2
|
+
export declare const ROW_MIN_HEIGHT_PX = 28;
|
|
2
3
|
export interface JsonTreeRowContextValue {
|
|
3
4
|
collapsed: Record<string, boolean>;
|
|
4
5
|
onToggleCollapsed?: (path: string) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonTreeRow.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/JsonTree/JsonTreeRow.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,SAAS,EAET,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,eAAe,EAChB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"JsonTreeRow.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/JsonTree/JsonTreeRow.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,SAAS,EAET,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAa1B,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAqBpC,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,cAAc,GAAG,SAAS,CAAC;IAClE,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAEvC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,kBAAkB,CAAC;IAE/B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;KAAE,GAAG,IAAI,CAAC;IACzD,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC9C,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAClD,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACvC,SAAS,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC,aAAa,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IAC5C,UAAU,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,GAAG,SAAS,KAAK,IAAI,CAAC;CACxE;AAID,eAAO,MAAM,0BAA0B,0DAA8B,CAAC;AAgBtE,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,2CA6WjF"}
|
|
@@ -12,6 +12,7 @@ import { NodeKey } from "./NodeKey.js";
|
|
|
12
12
|
import { RowActions } from "./RowActions.js";
|
|
13
13
|
import { ScalarValueCell, valueColorClass } from "./ScalarValueCell.js";
|
|
14
14
|
const ROW_CLASS = 'group flex min-h-7 cursor-default items-center gap-1.5 py-1 pr-1 transition hover:bg-surface-overlay';
|
|
15
|
+
const ROW_MIN_HEIGHT_PX = 28;
|
|
15
16
|
const VALUE_CELL_CLASS = 'flex min-w-8 flex-1 items-center';
|
|
16
17
|
function rowIndent(depth, extra = 0) {
|
|
17
18
|
return {
|
|
@@ -314,4 +315,4 @@ function JsonTreeRow({ node, depth }) {
|
|
|
314
315
|
]
|
|
315
316
|
});
|
|
316
317
|
}
|
|
317
|
-
export { JsonTreeRow, JsonTreeRowContextProvider };
|
|
318
|
+
export { JsonTreeRow, JsonTreeRowContextProvider, ROW_MIN_HEIGHT_PX };
|
|
@@ -35,7 +35,7 @@ const external_JsonTree_index_cjs_namespaceObject = require("../JsonTree/index.c
|
|
|
35
35
|
const external_PanelTitleBar_cjs_namespaceObject = require("./PanelTitleBar.cjs");
|
|
36
36
|
const TAB_LIST_CLASS = 'h-auto justify-start gap-0.5 rounded-lg bg-transparent p-0 text-muted-foreground';
|
|
37
37
|
const TAB_TRIGGER_CLASS = 'inline-flex h-6 shrink-0 items-center whitespace-nowrap rounded-md px-2.5 text-xs font-medium text-muted-foreground shadow-none transition-colors hover:text-foreground data-[state=active]:bg-surface-overlay data-[state=active]:text-foreground data-[state=active]:shadow-sm';
|
|
38
|
-
function NodeIOView({ schema, value, onValueChange, basePath, readOnly = false, title, titleIcon, titleBadge, titleTrailing, searchPlaceholder, emptyMessage, jsonView, extraTabs, defaultTab, onTabChange, beforeContent, rowWrapper, filters, decorateNode, deriveTypeIcon, renderValue, nodeActions, maxInlineActions, renderCodeEditor, pathForCopy, onCopy, defaultCollapsedDepth = 2, className }) {
|
|
38
|
+
function NodeIOView({ schema, value, onValueChange, basePath, readOnly = false, title, titleIcon, titleBadge, titleTrailing, searchPlaceholder, emptyMessage, jsonView, extraTabs, defaultTab, onTabChange, beforeContent, rowWrapper, filters, decorateNode, deriveTypeIcon, renderValue, nodeActions, maxInlineActions, renderCodeEditor, pathForCopy, onCopy, virtualized = false, defaultCollapsedDepth = 2, className }) {
|
|
39
39
|
const { _ } = (0, index_cjs_namespaceObject.useSafeLingui)();
|
|
40
40
|
const nodes = (0, external_react_namespaceObject.useMemo)(()=>(0, external_JsonTree_index_cjs_namespaceObject.buildJsonTree)({
|
|
41
41
|
schema,
|
|
@@ -220,6 +220,7 @@ function NodeIOView({ schema, value, onValueChange, basePath, readOnly = false,
|
|
|
220
220
|
renderCodeEditor: renderCodeEditor,
|
|
221
221
|
pathForCopy: pathForCopy,
|
|
222
222
|
onCopy: onCopy,
|
|
223
|
+
virtualized: virtualized,
|
|
223
224
|
emptyMessage: emptyMessage
|
|
224
225
|
})
|
|
225
226
|
})
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { NodeIOViewProps } from './NodeIOView.types';
|
|
2
|
-
export declare function NodeIOView({ schema, value, onValueChange, basePath, readOnly, title, titleIcon, titleBadge, titleTrailing, searchPlaceholder, emptyMessage, jsonView, extraTabs, defaultTab, onTabChange, beforeContent, rowWrapper, filters, decorateNode, deriveTypeIcon, renderValue, nodeActions, maxInlineActions, renderCodeEditor, pathForCopy, onCopy, defaultCollapsedDepth, className, }: NodeIOViewProps): import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare function NodeIOView({ schema, value, onValueChange, basePath, readOnly, title, titleIcon, titleBadge, titleTrailing, searchPlaceholder, emptyMessage, jsonView, extraTabs, defaultTab, onTabChange, beforeContent, rowWrapper, filters, decorateNode, deriveTypeIcon, renderValue, nodeActions, maxInlineActions, renderCodeEditor, pathForCopy, onCopy, virtualized, defaultCollapsedDepth, className, }: NodeIOViewProps): import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
//# sourceMappingURL=NodeIOView.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeIOView.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/NodeIOView/NodeIOView.tsx"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAyC1D,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,KAAK,EACL,aAAa,EACb,QAAQ,EACR,QAAgB,EAChB,KAAK,EACL,SAAS,EACT,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,UAAU,EACV,WAAW,EACX,aAAa,EACb,UAAU,EACV,OAAO,EACP,YAAY,EACZ,cAAc,EACd,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,MAAM,EACN,qBAAyB,EACzB,SAAS,GACV,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"NodeIOView.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/NodeIOView/NodeIOView.tsx"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAyC1D,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,KAAK,EACL,aAAa,EACb,QAAQ,EACR,QAAgB,EAChB,KAAK,EACL,SAAS,EACT,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,UAAU,EACV,WAAW,EACX,aAAa,EACb,UAAU,EACV,OAAO,EACP,YAAY,EACZ,cAAc,EACd,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,MAAM,EACN,WAAmB,EACnB,qBAAyB,EACzB,SAAS,GACV,EAAE,eAAe,2CAsMjB"}
|
|
@@ -7,7 +7,7 @@ import { JsonTree, JsonTreeToolbar, buildJsonTree, collectContainerPaths, remove
|
|
|
7
7
|
import { PanelTitleBar } from "./PanelTitleBar.js";
|
|
8
8
|
const TAB_LIST_CLASS = 'h-auto justify-start gap-0.5 rounded-lg bg-transparent p-0 text-muted-foreground';
|
|
9
9
|
const TAB_TRIGGER_CLASS = 'inline-flex h-6 shrink-0 items-center whitespace-nowrap rounded-md px-2.5 text-xs font-medium text-muted-foreground shadow-none transition-colors hover:text-foreground data-[state=active]:bg-surface-overlay data-[state=active]:text-foreground data-[state=active]:shadow-sm';
|
|
10
|
-
function NodeIOView({ schema, value, onValueChange, basePath, readOnly = false, title, titleIcon, titleBadge, titleTrailing, searchPlaceholder, emptyMessage, jsonView, extraTabs, defaultTab, onTabChange, beforeContent, rowWrapper, filters, decorateNode, deriveTypeIcon, renderValue, nodeActions, maxInlineActions, renderCodeEditor, pathForCopy, onCopy, defaultCollapsedDepth = 2, className }) {
|
|
10
|
+
function NodeIOView({ schema, value, onValueChange, basePath, readOnly = false, title, titleIcon, titleBadge, titleTrailing, searchPlaceholder, emptyMessage, jsonView, extraTabs, defaultTab, onTabChange, beforeContent, rowWrapper, filters, decorateNode, deriveTypeIcon, renderValue, nodeActions, maxInlineActions, renderCodeEditor, pathForCopy, onCopy, virtualized = false, defaultCollapsedDepth = 2, className }) {
|
|
11
11
|
const { _ } = useSafeLingui();
|
|
12
12
|
const nodes = useMemo(()=>buildJsonTree({
|
|
13
13
|
schema,
|
|
@@ -192,6 +192,7 @@ function NodeIOView({ schema, value, onValueChange, basePath, readOnly = false,
|
|
|
192
192
|
renderCodeEditor: renderCodeEditor,
|
|
193
193
|
pathForCopy: pathForCopy,
|
|
194
194
|
onCopy: onCopy,
|
|
195
|
+
virtualized: virtualized,
|
|
195
196
|
emptyMessage: emptyMessage
|
|
196
197
|
})
|
|
197
198
|
})
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeIOView.types.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/NodeIOView/NodeIOView.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACd,aAAa,EACb,UAAU,EACV,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,eAAe,EAChB,MAAM,4BAA4B,CAAC;AAGpC,MAAM,WAAW,aAAa;IAE5B,EAAE,EAAE,MAAM,CAAC;IAEX,KAAK,EAAE,MAAM,CAAC;IAEd,OAAO,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAE9B,MAAM,CAAC,EAAE,UAAU,CAAC;IAEpB,KAAK,CAAC,EAAE,aAAa,CAAC;IAEtB,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IAOtE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,aAAa,CAAC,EAAE,SAAS,CAAC;IAE1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,EAAE,SAAS,CAAC;IAKrB,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;IAE5B,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAKtC,aAAa,CAAC,EAAE,SAAS,CAAC;IAM1B,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAEhC,OAAO,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAEjC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,cAAc,GAAG,SAAS,CAAC;IAElE,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC,WAAW,CAAC,EAAE,eAAe,CAAC;IAM9B,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAElC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAKpC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAEvC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IAEpC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
|
|
1
|
+
{"version":3,"file":"NodeIOView.types.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/NodeIOView/NodeIOView.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACd,aAAa,EACb,UAAU,EACV,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,eAAe,EAChB,MAAM,4BAA4B,CAAC;AAGpC,MAAM,WAAW,aAAa;IAE5B,EAAE,EAAE,MAAM,CAAC;IAEX,KAAK,EAAE,MAAM,CAAC;IAEd,OAAO,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAE9B,MAAM,CAAC,EAAE,UAAU,CAAC;IAEpB,KAAK,CAAC,EAAE,aAAa,CAAC;IAEtB,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IAOtE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,aAAa,CAAC,EAAE,SAAS,CAAC;IAE1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,QAAQ,CAAC,EAAE,SAAS,CAAC;IAKrB,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;IAE5B,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAKtC,aAAa,CAAC,EAAE,SAAS,CAAC;IAM1B,UAAU,CAAC,EAAE,kBAAkB,CAAC;IAEhC,OAAO,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAEjC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,cAAc,GAAG,SAAS,CAAC;IAElE,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC,WAAW,CAAC,EAAE,eAAe,CAAC;IAM9B,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAElC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAKpC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAEvC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IAEpC,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
|