@uipath/apollo-react 6.41.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.
@@ -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
- className: (0, apollo_wind_namespaceObject.cn)('h-full overflow-y-auto overflow-x-hidden', className),
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
- rows.map(({ node, depth })=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_JsonTreeRow_cjs_namespaceObject.JsonTreeRow, {
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":"AAOA,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,SAAS,EACT,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAO1B,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;IACpC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAoBD,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,YAAY,EACZ,SAAS,GACV,EAAE,aAAa,2CA4Hf"}
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
- className: cn('h-full overflow-y-auto overflow-x-hidden', className),
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
- rows.map(({ node, depth })=>/*#__PURE__*/ jsx(JsonTreeRow, {
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;AA+B1B,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"}
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,2CAqMjB"}
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
  })
@@ -32,6 +32,7 @@ export interface NodeIOViewProps {
32
32
  renderCodeEditor?: RenderCodeEditor;
33
33
  pathForCopy?: (path: string) => string;
34
34
  onCopy?: (event: CopyEvent) => void;
35
+ virtualized?: boolean;
35
36
  defaultCollapsedDepth?: number;
36
37
  className?: string;
37
38
  }
@@ -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"}