@uipath/apollo-react 6.26.0 → 6.27.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/AgentCanvas/AgentFlow.cjs +4 -3
- package/dist/canvas/components/AgentCanvas/AgentFlow.d.ts.map +1 -1
- package/dist/canvas/components/AgentCanvas/AgentFlow.js +4 -3
- package/dist/canvas/components/AgentCanvas/nodes/AgentNode.cjs +13 -9
- package/dist/canvas/components/AgentCanvas/nodes/AgentNode.d.ts.map +1 -1
- package/dist/canvas/components/AgentCanvas/nodes/AgentNode.js +13 -9
- package/dist/canvas/components/AgentCanvas/nodes/AgentNode.styles.cjs +1 -1
- package/dist/canvas/components/AgentCanvas/nodes/AgentNode.styles.d.ts +2 -0
- package/dist/canvas/components/AgentCanvas/nodes/AgentNode.styles.d.ts.map +1 -1
- package/dist/canvas/components/AgentCanvas/nodes/AgentNode.styles.js +1 -1
- package/dist/canvas/components/BaseCanvas/BaseCanvas.types.d.ts.map +1 -1
- package/dist/canvas/components/BaseNode/BaseNode.cjs +2 -14
- package/dist/canvas/components/BaseNode/BaseNode.d.ts.map +1 -1
- package/dist/canvas/components/BaseNode/BaseNode.js +2 -14
- package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvas.cjs +2 -1
- package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvas.d.ts +1 -0
- package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvas.d.ts.map +1 -1
- package/dist/canvas/components/HierarchicalCanvas/HierarchicalCanvas.js +2 -1
- package/dist/canvas/components/LoopNode/LoopNode.cjs +13 -5
- package/dist/canvas/components/LoopNode/LoopNode.d.ts.map +1 -1
- package/dist/canvas/components/LoopNode/LoopNode.js +13 -5
- package/dist/canvas/components/StageNode/StageNode.cjs +15 -11
- package/dist/canvas/components/StageNode/StageNode.d.ts.map +1 -1
- package/dist/canvas/components/StageNode/StageNode.js +15 -11
- package/dist/canvas/components/StickyNoteNode/StickyNoteNode.cjs +29 -6
- package/dist/canvas/components/StickyNoteNode/StickyNoteNode.d.ts.map +1 -1
- package/dist/canvas/components/StickyNoteNode/StickyNoteNode.js +29 -6
- package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.utils.cjs +18 -2
- package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.utils.d.ts +2 -0
- package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.utils.d.ts.map +1 -1
- package/dist/canvas/components/Toolbar/NodeToolbar/NodeToolbar.utils.js +14 -1
- package/dist/canvas/storybook-utils/components/StoryPage.d.ts +15 -1
- package/dist/canvas/storybook-utils/components/StoryPage.d.ts.map +1 -1
- package/dist/canvas/styles/tailwind.canvas.css +1 -1
- package/dist/canvas/types.d.ts +1 -0
- package/dist/canvas/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -31,6 +31,7 @@ const apollo_core_namespaceObject = require("@uipath/apollo-core");
|
|
|
31
31
|
const index_cjs_namespaceObject = require("../../layouts/index.cjs");
|
|
32
32
|
const external_react_namespaceObject = require("react");
|
|
33
33
|
const nodePropsEqual_cjs_namespaceObject = require("../../utils/nodePropsEqual.cjs");
|
|
34
|
+
const ReadOnlyNodesContext_cjs_namespaceObject = require("../BaseCanvas/ReadOnlyNodesContext.cjs");
|
|
34
35
|
const external_FloatingCanvasPanel_index_cjs_namespaceObject = require("../FloatingCanvasPanel/index.cjs");
|
|
35
36
|
const external_NodeContextMenu_index_cjs_namespaceObject = require("../NodeContextMenu/index.cjs");
|
|
36
37
|
const hooks_index_cjs_namespaceObject = require("../NodePropertiesPanel/hooks/index.cjs");
|
|
@@ -51,7 +52,7 @@ const StageNodeInner = (props)=>{
|
|
|
51
52
|
stageDetails?.tasks
|
|
52
53
|
]);
|
|
53
54
|
const isException = stageDetails?.isException;
|
|
54
|
-
const isReadOnly = !!stageDetails?.isReadOnly;
|
|
55
|
+
const isReadOnly = (0, ReadOnlyNodesContext_cjs_namespaceObject.useIsNodeReadOnly)(id) || !!stageDetails?.isReadOnly;
|
|
55
56
|
const selectedTaskId = stageDetails?.selectedTaskId;
|
|
56
57
|
const status = execution?.stageStatus?.status;
|
|
57
58
|
const [isHovered, setIsHovered] = (0, external_react_namespaceObject.useState)(false);
|
|
@@ -65,7 +66,7 @@ const StageNodeInner = (props)=>{
|
|
|
65
66
|
const [isAddingTask, setIsAddingTask] = (0, external_react_namespaceObject.useState)(false);
|
|
66
67
|
const [isReplacingTask, setIsReplacingTask] = (0, external_react_namespaceObject.useState)(false);
|
|
67
68
|
(0, external_react_namespaceObject.useEffect)(()=>{
|
|
68
|
-
if (pendingReplaceTask) {
|
|
69
|
+
if (pendingReplaceTask && !isReadOnly) {
|
|
69
70
|
const match = allTasks.flatMap((group, gi)=>group.map((task, ti)=>({
|
|
70
71
|
task,
|
|
71
72
|
groupIndex: gi,
|
|
@@ -83,21 +84,22 @@ const StageNodeInner = (props)=>{
|
|
|
83
84
|
}, [
|
|
84
85
|
pendingReplaceTask,
|
|
85
86
|
selectedTaskId,
|
|
86
|
-
allTasks
|
|
87
|
+
allTasks,
|
|
88
|
+
isReadOnly
|
|
87
89
|
]);
|
|
88
90
|
(0, external_react_namespaceObject.useEffect)(()=>{
|
|
89
|
-
if (false === selected) {
|
|
91
|
+
if (false === selected || isReadOnly) {
|
|
90
92
|
setIsAddingTask(false);
|
|
91
93
|
setIsReplacingTask(false);
|
|
92
94
|
}
|
|
93
95
|
}, [
|
|
94
|
-
selected
|
|
96
|
+
selected,
|
|
97
|
+
isReadOnly
|
|
95
98
|
]);
|
|
96
|
-
const shouldShowMenu = (0, external_react_namespaceObject.useMemo)(()=>menuItems && menuItems.length > 0 && (selected || isHovered)
|
|
99
|
+
const shouldShowMenu = (0, external_react_namespaceObject.useMemo)(()=>menuItems && menuItems.length > 0 && (selected || isHovered), [
|
|
97
100
|
menuItems,
|
|
98
101
|
selected,
|
|
99
|
-
isHovered
|
|
100
|
-
isReadOnly
|
|
102
|
+
isHovered
|
|
101
103
|
]);
|
|
102
104
|
const { setSelectedNodeId } = (0, hooks_index_cjs_namespaceObject.useSetNodeSelection)();
|
|
103
105
|
const handleStageClick = (0, external_react_namespaceObject.useCallback)(()=>{
|
|
@@ -107,6 +109,7 @@ const StageNodeInner = (props)=>{
|
|
|
107
109
|
]);
|
|
108
110
|
const handleTaskAddClick = (0, external_react_namespaceObject.useCallback)((event)=>{
|
|
109
111
|
event.stopPropagation();
|
|
112
|
+
if (isReadOnly) return;
|
|
110
113
|
if (onTaskAdd) onTaskAdd();
|
|
111
114
|
else if (onAddTaskFromToolbox) setIsAddingTask(true);
|
|
112
115
|
setSelectedNodeId(id);
|
|
@@ -114,7 +117,8 @@ const StageNodeInner = (props)=>{
|
|
|
114
117
|
onTaskAdd,
|
|
115
118
|
onAddTaskFromToolbox,
|
|
116
119
|
setSelectedNodeId,
|
|
117
|
-
id
|
|
120
|
+
id,
|
|
121
|
+
isReadOnly
|
|
118
122
|
]);
|
|
119
123
|
const handleAddTaskToolboxItemSelected = (0, external_react_namespaceObject.useCallback)((item)=>{
|
|
120
124
|
onAddTaskFromToolbox?.(item);
|
|
@@ -190,7 +194,7 @@ const StageNodeInner = (props)=>{
|
|
|
190
194
|
})
|
|
191
195
|
]
|
|
192
196
|
}),
|
|
193
|
-
onAddTaskFromToolbox && isAddingTask && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_FloatingCanvasPanel_index_cjs_namespaceObject.FloatingCanvasPanel, {
|
|
197
|
+
onAddTaskFromToolbox && isAddingTask && !isReadOnly && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_FloatingCanvasPanel_index_cjs_namespaceObject.FloatingCanvasPanel, {
|
|
194
198
|
nodeId: id,
|
|
195
199
|
offset: 15,
|
|
196
200
|
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_Toolbox_index_cjs_namespaceObject.Toolbox, {
|
|
@@ -201,7 +205,7 @@ const StageNodeInner = (props)=>{
|
|
|
201
205
|
onSearch: onTaskToolboxSearch
|
|
202
206
|
})
|
|
203
207
|
}),
|
|
204
|
-
onReplaceTaskFromToolbox && isReplacingTask && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_FloatingCanvasPanel_index_cjs_namespaceObject.FloatingCanvasPanel, {
|
|
208
|
+
onReplaceTaskFromToolbox && isReplacingTask && !isReadOnly && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_FloatingCanvasPanel_index_cjs_namespaceObject.FloatingCanvasPanel, {
|
|
205
209
|
nodeId: id,
|
|
206
210
|
offset: 15,
|
|
207
211
|
children: /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_Toolbox_index_cjs_namespaceObject.Toolbox, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StageNode.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/StageNode/StageNode.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"StageNode.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/StageNode/StageNode.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,cAAc,EAAsB,MAAM,mBAAmB,CAAC;AAiN5E,eAAO,MAAM,SAAS,8CA3MS,cAAc,6CA2MmC,CAAC"}
|
|
@@ -3,6 +3,7 @@ import { Spacing } from "@uipath/apollo-core";
|
|
|
3
3
|
import { Column } from "../../layouts/index.js";
|
|
4
4
|
import { memo, useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
5
5
|
import { areNodePropsEqualIgnoringPosition } from "../../utils/nodePropsEqual.js";
|
|
6
|
+
import { useIsNodeReadOnly } from "../BaseCanvas/ReadOnlyNodesContext.js";
|
|
6
7
|
import { FloatingCanvasPanel } from "../FloatingCanvasPanel/index.js";
|
|
7
8
|
import { NodeContextMenu } from "../NodeContextMenu/index.js";
|
|
8
9
|
import { useSetNodeSelection } from "../NodePropertiesPanel/hooks/index.js";
|
|
@@ -23,7 +24,7 @@ const StageNodeInner = (props)=>{
|
|
|
23
24
|
stageDetails?.tasks
|
|
24
25
|
]);
|
|
25
26
|
const isException = stageDetails?.isException;
|
|
26
|
-
const isReadOnly = !!stageDetails?.isReadOnly;
|
|
27
|
+
const isReadOnly = useIsNodeReadOnly(id) || !!stageDetails?.isReadOnly;
|
|
27
28
|
const selectedTaskId = stageDetails?.selectedTaskId;
|
|
28
29
|
const status = execution?.stageStatus?.status;
|
|
29
30
|
const [isHovered, setIsHovered] = useState(false);
|
|
@@ -37,7 +38,7 @@ const StageNodeInner = (props)=>{
|
|
|
37
38
|
const [isAddingTask, setIsAddingTask] = useState(false);
|
|
38
39
|
const [isReplacingTask, setIsReplacingTask] = useState(false);
|
|
39
40
|
useEffect(()=>{
|
|
40
|
-
if (pendingReplaceTask) {
|
|
41
|
+
if (pendingReplaceTask && !isReadOnly) {
|
|
41
42
|
const match = allTasks.flatMap((group, gi)=>group.map((task, ti)=>({
|
|
42
43
|
task,
|
|
43
44
|
groupIndex: gi,
|
|
@@ -55,21 +56,22 @@ const StageNodeInner = (props)=>{
|
|
|
55
56
|
}, [
|
|
56
57
|
pendingReplaceTask,
|
|
57
58
|
selectedTaskId,
|
|
58
|
-
allTasks
|
|
59
|
+
allTasks,
|
|
60
|
+
isReadOnly
|
|
59
61
|
]);
|
|
60
62
|
useEffect(()=>{
|
|
61
|
-
if (false === selected) {
|
|
63
|
+
if (false === selected || isReadOnly) {
|
|
62
64
|
setIsAddingTask(false);
|
|
63
65
|
setIsReplacingTask(false);
|
|
64
66
|
}
|
|
65
67
|
}, [
|
|
66
|
-
selected
|
|
68
|
+
selected,
|
|
69
|
+
isReadOnly
|
|
67
70
|
]);
|
|
68
|
-
const shouldShowMenu = useMemo(()=>menuItems && menuItems.length > 0 && (selected || isHovered)
|
|
71
|
+
const shouldShowMenu = useMemo(()=>menuItems && menuItems.length > 0 && (selected || isHovered), [
|
|
69
72
|
menuItems,
|
|
70
73
|
selected,
|
|
71
|
-
isHovered
|
|
72
|
-
isReadOnly
|
|
74
|
+
isHovered
|
|
73
75
|
]);
|
|
74
76
|
const { setSelectedNodeId } = useSetNodeSelection();
|
|
75
77
|
const handleStageClick = useCallback(()=>{
|
|
@@ -79,6 +81,7 @@ const StageNodeInner = (props)=>{
|
|
|
79
81
|
]);
|
|
80
82
|
const handleTaskAddClick = useCallback((event)=>{
|
|
81
83
|
event.stopPropagation();
|
|
84
|
+
if (isReadOnly) return;
|
|
82
85
|
if (onTaskAdd) onTaskAdd();
|
|
83
86
|
else if (onAddTaskFromToolbox) setIsAddingTask(true);
|
|
84
87
|
setSelectedNodeId(id);
|
|
@@ -86,7 +89,8 @@ const StageNodeInner = (props)=>{
|
|
|
86
89
|
onTaskAdd,
|
|
87
90
|
onAddTaskFromToolbox,
|
|
88
91
|
setSelectedNodeId,
|
|
89
|
-
id
|
|
92
|
+
id,
|
|
93
|
+
isReadOnly
|
|
90
94
|
]);
|
|
91
95
|
const handleAddTaskToolboxItemSelected = useCallback((item)=>{
|
|
92
96
|
onAddTaskFromToolbox?.(item);
|
|
@@ -162,7 +166,7 @@ const StageNodeInner = (props)=>{
|
|
|
162
166
|
})
|
|
163
167
|
]
|
|
164
168
|
}),
|
|
165
|
-
onAddTaskFromToolbox && isAddingTask && /*#__PURE__*/ jsx(FloatingCanvasPanel, {
|
|
169
|
+
onAddTaskFromToolbox && isAddingTask && !isReadOnly && /*#__PURE__*/ jsx(FloatingCanvasPanel, {
|
|
166
170
|
nodeId: id,
|
|
167
171
|
offset: 15,
|
|
168
172
|
children: /*#__PURE__*/ jsx(Toolbox, {
|
|
@@ -173,7 +177,7 @@ const StageNodeInner = (props)=>{
|
|
|
173
177
|
onSearch: onTaskToolboxSearch
|
|
174
178
|
})
|
|
175
179
|
}),
|
|
176
|
-
onReplaceTaskFromToolbox && isReplacingTask && /*#__PURE__*/ jsx(FloatingCanvasPanel, {
|
|
180
|
+
onReplaceTaskFromToolbox && isReplacingTask && !isReadOnly && /*#__PURE__*/ jsx(FloatingCanvasPanel, {
|
|
177
181
|
nodeId: id,
|
|
178
182
|
offset: 15,
|
|
179
183
|
children: /*#__PURE__*/ jsx(Toolbox, {
|
|
@@ -52,9 +52,11 @@ const index_cjs_namespaceObject = require("../../../i18n/index.cjs");
|
|
|
52
52
|
const external_constants_cjs_namespaceObject = require("../../constants.cjs");
|
|
53
53
|
const useLatestRef_cjs_namespaceObject = require("../../hooks/useLatestRef.cjs");
|
|
54
54
|
const nodePropsEqual_cjs_namespaceObject = require("../../utils/nodePropsEqual.cjs");
|
|
55
|
+
const ReadOnlyNodesContext_cjs_namespaceObject = require("../BaseCanvas/ReadOnlyNodesContext.cjs");
|
|
55
56
|
const SelectionStateContext_cjs_namespaceObject = require("../BaseCanvas/SelectionStateContext.cjs");
|
|
56
57
|
const external_NodeViewportOverlay_cjs_namespaceObject = require("../NodeViewportOverlay.cjs");
|
|
57
58
|
const external_Toolbar_index_cjs_namespaceObject = require("../Toolbar/index.cjs");
|
|
59
|
+
const NodeToolbar_utils_cjs_namespaceObject = require("../Toolbar/NodeToolbar/NodeToolbar.utils.cjs");
|
|
58
60
|
const external_FormattingToolbar_cjs_namespaceObject = require("./FormattingToolbar.cjs");
|
|
59
61
|
const external_markdown_formatting_index_cjs_namespaceObject = require("./markdown-formatting/index.cjs");
|
|
60
62
|
const external_StickyNoteCanvasOptionsContext_cjs_namespaceObject = require("./StickyNoteCanvasOptionsContext.cjs");
|
|
@@ -71,7 +73,9 @@ const minHeight = 8 * external_constants_cjs_namespaceObject.GRID_SPACING;
|
|
|
71
73
|
const StickyNoteNodeComponent = ({ id, data, selected, dragging, placeholder = 'Add text', renderPlaceholderOnSelect = false, readOnly: readOnlyProp, onContentChange, onColorChange, onResize, onResizeStart, onResizeEnd, enableMediaEmbedding: enableMediaEmbeddingProp, formattingActions, markdownComponents: customMarkdownComponents })=>{
|
|
72
74
|
const { _ } = (0, index_cjs_namespaceObject.useSafeLingui)();
|
|
73
75
|
const canvasOptions = (0, external_StickyNoteCanvasOptionsContext_cjs_namespaceObject.useStickyNoteCanvasOptions)();
|
|
74
|
-
const
|
|
76
|
+
const isNodeReadOnly = (0, ReadOnlyNodesContext_cjs_namespaceObject.useIsNodeReadOnly)(id);
|
|
77
|
+
const stickyNoteReadOnly = readOnlyProp ?? canvasOptions.readOnly;
|
|
78
|
+
const readOnly = isNodeReadOnly || stickyNoteReadOnly;
|
|
75
79
|
const enableMediaEmbedding = enableMediaEmbeddingProp ?? canvasOptions.enableMediaEmbedding;
|
|
76
80
|
const { updateNodeData, deleteElements } = (0, react_cjs_namespaceObject.useReactFlow)();
|
|
77
81
|
const { multipleNodesSelected } = (0, SelectionStateContext_cjs_namespaceObject.useSelectionState)();
|
|
@@ -85,6 +89,7 @@ const StickyNoteNodeComponent = ({ id, data, selected, dragging, placeholder = '
|
|
|
85
89
|
const formattingToolbarRef = (0, external_react_namespaceObject.useRef)(null);
|
|
86
90
|
const skipBlurRef = (0, external_react_namespaceObject.useRef)(null);
|
|
87
91
|
const resizeActiveRef = (0, external_react_namespaceObject.useRef)(false);
|
|
92
|
+
const readOnlyRef = (0, useLatestRef_cjs_namespaceObject.useLatestRef)(readOnly);
|
|
88
93
|
const resizeLifecycle = {
|
|
89
94
|
content: data.content,
|
|
90
95
|
id,
|
|
@@ -155,6 +160,7 @@ const StickyNoteNodeComponent = ({ id, data, selected, dragging, placeholder = '
|
|
|
155
160
|
(0, external_react_namespaceObject.useEffect)(()=>{
|
|
156
161
|
if (readOnly) {
|
|
157
162
|
setIsEditing(false);
|
|
163
|
+
setIsColorPickerOpen(false);
|
|
158
164
|
updateLocalContent(data.content || '');
|
|
159
165
|
}
|
|
160
166
|
}, [
|
|
@@ -224,6 +230,7 @@ const StickyNoteNodeComponent = ({ id, data, selected, dragging, placeholder = '
|
|
|
224
230
|
skipBlurRef.current = selection.value;
|
|
225
231
|
let completed = false;
|
|
226
232
|
const restoreSelection = (next)=>{
|
|
233
|
+
if (readOnlyRef.current) return;
|
|
227
234
|
setIsEditing(true);
|
|
228
235
|
requestAnimationFrame(()=>{
|
|
229
236
|
const currentTextarea = textAreaRef.current;
|
|
@@ -237,6 +244,10 @@ const StickyNoteNodeComponent = ({ id, data, selected, dragging, placeholder = '
|
|
|
237
244
|
const complete = (next, shouldPersist)=>{
|
|
238
245
|
if (completed) return;
|
|
239
246
|
completed = true;
|
|
247
|
+
if (readOnlyRef.current) {
|
|
248
|
+
skipBlurRef.current = null;
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
240
251
|
skipBlurRef.current = shouldPersist ? next.value : null;
|
|
241
252
|
setActiveFormats((0, external_markdown_formatting_index_cjs_namespaceObject.detectActiveFormats)(next));
|
|
242
253
|
if (shouldPersist) {
|
|
@@ -273,6 +284,7 @@ const StickyNoteNodeComponent = ({ id, data, selected, dragging, placeholder = '
|
|
|
273
284
|
}, [
|
|
274
285
|
id,
|
|
275
286
|
onContentChange,
|
|
287
|
+
readOnlyRef,
|
|
276
288
|
updateLocalContent,
|
|
277
289
|
updateNodeData
|
|
278
290
|
]);
|
|
@@ -437,6 +449,7 @@ const StickyNoteNodeComponent = ({ id, data, selected, dragging, placeholder = '
|
|
|
437
449
|
resizeLifecycleRef
|
|
438
450
|
]);
|
|
439
451
|
const handleColorChange = (0, external_react_namespaceObject.useCallback)((newColor)=>{
|
|
452
|
+
if (readOnly) return;
|
|
440
453
|
onColorChange?.(newColor);
|
|
441
454
|
updateNodeData(id, {
|
|
442
455
|
color: newColor
|
|
@@ -445,11 +458,15 @@ const StickyNoteNodeComponent = ({ id, data, selected, dragging, placeholder = '
|
|
|
445
458
|
}, [
|
|
446
459
|
id,
|
|
447
460
|
updateNodeData,
|
|
448
|
-
onColorChange
|
|
461
|
+
onColorChange,
|
|
462
|
+
readOnly
|
|
449
463
|
]);
|
|
450
464
|
const handleToggleColorPicker = (0, external_react_namespaceObject.useCallback)(()=>{
|
|
465
|
+
if (readOnly) return;
|
|
451
466
|
setIsColorPickerOpen((prev)=>!prev);
|
|
452
|
-
}, [
|
|
467
|
+
}, [
|
|
468
|
+
readOnly
|
|
469
|
+
]);
|
|
453
470
|
const handleEditClick = (0, external_react_namespaceObject.useCallback)(()=>{
|
|
454
471
|
if (readOnly) return;
|
|
455
472
|
setIsEditing(true);
|
|
@@ -463,6 +480,7 @@ const StickyNoteNodeComponent = ({ id, data, selected, dragging, placeholder = '
|
|
|
463
480
|
readOnly
|
|
464
481
|
]);
|
|
465
482
|
const handleDelete = (0, external_react_namespaceObject.useCallback)(()=>{
|
|
483
|
+
if (readOnly) return;
|
|
466
484
|
deleteElements({
|
|
467
485
|
nodes: [
|
|
468
486
|
{
|
|
@@ -472,7 +490,8 @@ const StickyNoteNodeComponent = ({ id, data, selected, dragging, placeholder = '
|
|
|
472
490
|
});
|
|
473
491
|
}, [
|
|
474
492
|
id,
|
|
475
|
-
deleteElements
|
|
493
|
+
deleteElements,
|
|
494
|
+
readOnly
|
|
476
495
|
]);
|
|
477
496
|
const builtInMarkdownComponents = (0, external_react_namespaceObject.useMemo)(()=>({
|
|
478
497
|
a: ({ node: _node, href, children, ...props })=>/*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)("a", {
|
|
@@ -580,7 +599,11 @@ const StickyNoteNodeComponent = ({ id, data, selected, dragging, placeholder = '
|
|
|
580
599
|
color,
|
|
581
600
|
handleDelete
|
|
582
601
|
]);
|
|
583
|
-
const
|
|
602
|
+
const effectiveToolbarConfig = (0, external_react_namespaceObject.useMemo)(()=>isNodeReadOnly ? (0, NodeToolbar_utils_cjs_namespaceObject.lockToolbarConfig)(toolbarConfig) : toolbarConfig, [
|
|
603
|
+
isNodeReadOnly,
|
|
604
|
+
toolbarConfig
|
|
605
|
+
]);
|
|
606
|
+
const shouldRenderToolbarOverlay = !stickyNoteReadOnly && selected && !dragging && !isResizing && !multipleNodesSelected;
|
|
584
607
|
const shouldRenderResizeControls = !readOnly || isResizing;
|
|
585
608
|
return /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsxs)(jsx_runtime_namespaceObject.Fragment, {
|
|
586
609
|
children: [
|
|
@@ -727,7 +750,7 @@ const StickyNoteNodeComponent = ({ id, data, selected, dragging, placeholder = '
|
|
|
727
750
|
}),
|
|
728
751
|
shouldRenderToolbarOverlay && /*#__PURE__*/ (0, jsx_runtime_namespaceObject.jsx)(external_Toolbar_index_cjs_namespaceObject.NodeToolbar, {
|
|
729
752
|
nodeId: id,
|
|
730
|
-
config:
|
|
753
|
+
config: effectiveToolbarConfig,
|
|
731
754
|
expanded: true,
|
|
732
755
|
portalToNodeOverlay: true
|
|
733
756
|
}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StickyNoteNode.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/StickyNoteNode/StickyNoteNode.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAC;AAM1E,OAAsB,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"StickyNoteNode.d.ts","sourceRoot":"","sources":["../../../../src/canvas/components/StickyNoteNode/StickyNoteNode.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAC;AAM1E,OAAsB,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAiDhE,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EAEd,0BAA0B,EAE3B,MAAM,wBAAwB,CAAC;AAMhC,MAAM,WAAW,mBAAoB,SAAQ,SAAS;IACpD,IAAI,EAAE,cAAc,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IACjD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACnD,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IAEzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,iBAAiB,CAAC,EAAE,SAAS,0BAA0B,EAAE,CAAC;IAC1D,kBAAkB,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;CAC5C;AAsvBD,eAAO,MAAM,cAAc,iUAztBxB,mBAAmB,6CAytBwE,CAAC"}
|
|
@@ -12,9 +12,11 @@ import { useSafeLingui } from "../../../i18n/index.js";
|
|
|
12
12
|
import { GRID_SPACING } from "../../constants.js";
|
|
13
13
|
import { useLatestRef } from "../../hooks/useLatestRef.js";
|
|
14
14
|
import { areNodePropsEqualIgnoringPosition } from "../../utils/nodePropsEqual.js";
|
|
15
|
+
import { useIsNodeReadOnly } from "../BaseCanvas/ReadOnlyNodesContext.js";
|
|
15
16
|
import { useSelectionState } from "../BaseCanvas/SelectionStateContext.js";
|
|
16
17
|
import { NodeViewportOverlay } from "../NodeViewportOverlay.js";
|
|
17
18
|
import { NodeToolbar } from "../Toolbar/index.js";
|
|
19
|
+
import { lockToolbarConfig } from "../Toolbar/NodeToolbar/NodeToolbar.utils.js";
|
|
18
20
|
import { FormattingToolbar } from "./FormattingToolbar.js";
|
|
19
21
|
import { activeFormatsEqual, continueListOnEnter, detectActiveFormats } from "./markdown-formatting/index.js";
|
|
20
22
|
import { useStickyNoteCanvasOptions } from "./StickyNoteCanvasOptionsContext.js";
|
|
@@ -31,7 +33,9 @@ const minHeight = 8 * GRID_SPACING;
|
|
|
31
33
|
const StickyNoteNodeComponent = ({ id, data, selected, dragging, placeholder = 'Add text', renderPlaceholderOnSelect = false, readOnly: readOnlyProp, onContentChange, onColorChange, onResize, onResizeStart, onResizeEnd, enableMediaEmbedding: enableMediaEmbeddingProp, formattingActions, markdownComponents: customMarkdownComponents })=>{
|
|
32
34
|
const { _ } = useSafeLingui();
|
|
33
35
|
const canvasOptions = useStickyNoteCanvasOptions();
|
|
34
|
-
const
|
|
36
|
+
const isNodeReadOnly = useIsNodeReadOnly(id);
|
|
37
|
+
const stickyNoteReadOnly = readOnlyProp ?? canvasOptions.readOnly;
|
|
38
|
+
const readOnly = isNodeReadOnly || stickyNoteReadOnly;
|
|
35
39
|
const enableMediaEmbedding = enableMediaEmbeddingProp ?? canvasOptions.enableMediaEmbedding;
|
|
36
40
|
const { updateNodeData, deleteElements } = useReactFlow();
|
|
37
41
|
const { multipleNodesSelected } = useSelectionState();
|
|
@@ -45,6 +49,7 @@ const StickyNoteNodeComponent = ({ id, data, selected, dragging, placeholder = '
|
|
|
45
49
|
const formattingToolbarRef = useRef(null);
|
|
46
50
|
const skipBlurRef = useRef(null);
|
|
47
51
|
const resizeActiveRef = useRef(false);
|
|
52
|
+
const readOnlyRef = useLatestRef(readOnly);
|
|
48
53
|
const resizeLifecycle = {
|
|
49
54
|
content: data.content,
|
|
50
55
|
id,
|
|
@@ -115,6 +120,7 @@ const StickyNoteNodeComponent = ({ id, data, selected, dragging, placeholder = '
|
|
|
115
120
|
useEffect(()=>{
|
|
116
121
|
if (readOnly) {
|
|
117
122
|
setIsEditing(false);
|
|
123
|
+
setIsColorPickerOpen(false);
|
|
118
124
|
updateLocalContent(data.content || '');
|
|
119
125
|
}
|
|
120
126
|
}, [
|
|
@@ -184,6 +190,7 @@ const StickyNoteNodeComponent = ({ id, data, selected, dragging, placeholder = '
|
|
|
184
190
|
skipBlurRef.current = selection.value;
|
|
185
191
|
let completed = false;
|
|
186
192
|
const restoreSelection = (next)=>{
|
|
193
|
+
if (readOnlyRef.current) return;
|
|
187
194
|
setIsEditing(true);
|
|
188
195
|
requestAnimationFrame(()=>{
|
|
189
196
|
const currentTextarea = textAreaRef.current;
|
|
@@ -197,6 +204,10 @@ const StickyNoteNodeComponent = ({ id, data, selected, dragging, placeholder = '
|
|
|
197
204
|
const complete = (next, shouldPersist)=>{
|
|
198
205
|
if (completed) return;
|
|
199
206
|
completed = true;
|
|
207
|
+
if (readOnlyRef.current) {
|
|
208
|
+
skipBlurRef.current = null;
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
200
211
|
skipBlurRef.current = shouldPersist ? next.value : null;
|
|
201
212
|
setActiveFormats(detectActiveFormats(next));
|
|
202
213
|
if (shouldPersist) {
|
|
@@ -233,6 +244,7 @@ const StickyNoteNodeComponent = ({ id, data, selected, dragging, placeholder = '
|
|
|
233
244
|
}, [
|
|
234
245
|
id,
|
|
235
246
|
onContentChange,
|
|
247
|
+
readOnlyRef,
|
|
236
248
|
updateLocalContent,
|
|
237
249
|
updateNodeData
|
|
238
250
|
]);
|
|
@@ -397,6 +409,7 @@ const StickyNoteNodeComponent = ({ id, data, selected, dragging, placeholder = '
|
|
|
397
409
|
resizeLifecycleRef
|
|
398
410
|
]);
|
|
399
411
|
const handleColorChange = useCallback((newColor)=>{
|
|
412
|
+
if (readOnly) return;
|
|
400
413
|
onColorChange?.(newColor);
|
|
401
414
|
updateNodeData(id, {
|
|
402
415
|
color: newColor
|
|
@@ -405,11 +418,15 @@ const StickyNoteNodeComponent = ({ id, data, selected, dragging, placeholder = '
|
|
|
405
418
|
}, [
|
|
406
419
|
id,
|
|
407
420
|
updateNodeData,
|
|
408
|
-
onColorChange
|
|
421
|
+
onColorChange,
|
|
422
|
+
readOnly
|
|
409
423
|
]);
|
|
410
424
|
const handleToggleColorPicker = useCallback(()=>{
|
|
425
|
+
if (readOnly) return;
|
|
411
426
|
setIsColorPickerOpen((prev)=>!prev);
|
|
412
|
-
}, [
|
|
427
|
+
}, [
|
|
428
|
+
readOnly
|
|
429
|
+
]);
|
|
413
430
|
const handleEditClick = useCallback(()=>{
|
|
414
431
|
if (readOnly) return;
|
|
415
432
|
setIsEditing(true);
|
|
@@ -423,6 +440,7 @@ const StickyNoteNodeComponent = ({ id, data, selected, dragging, placeholder = '
|
|
|
423
440
|
readOnly
|
|
424
441
|
]);
|
|
425
442
|
const handleDelete = useCallback(()=>{
|
|
443
|
+
if (readOnly) return;
|
|
426
444
|
deleteElements({
|
|
427
445
|
nodes: [
|
|
428
446
|
{
|
|
@@ -432,7 +450,8 @@ const StickyNoteNodeComponent = ({ id, data, selected, dragging, placeholder = '
|
|
|
432
450
|
});
|
|
433
451
|
}, [
|
|
434
452
|
id,
|
|
435
|
-
deleteElements
|
|
453
|
+
deleteElements,
|
|
454
|
+
readOnly
|
|
436
455
|
]);
|
|
437
456
|
const builtInMarkdownComponents = useMemo(()=>({
|
|
438
457
|
a: ({ node: _node, href, children, ...props })=>/*#__PURE__*/ jsx("a", {
|
|
@@ -540,7 +559,11 @@ const StickyNoteNodeComponent = ({ id, data, selected, dragging, placeholder = '
|
|
|
540
559
|
color,
|
|
541
560
|
handleDelete
|
|
542
561
|
]);
|
|
543
|
-
const
|
|
562
|
+
const effectiveToolbarConfig = useMemo(()=>isNodeReadOnly ? lockToolbarConfig(toolbarConfig) : toolbarConfig, [
|
|
563
|
+
isNodeReadOnly,
|
|
564
|
+
toolbarConfig
|
|
565
|
+
]);
|
|
566
|
+
const shouldRenderToolbarOverlay = !stickyNoteReadOnly && selected && !dragging && !isResizing && !multipleNodesSelected;
|
|
544
567
|
const shouldRenderResizeControls = !readOnly || isResizing;
|
|
545
568
|
return /*#__PURE__*/ jsxs(Fragment, {
|
|
546
569
|
children: [
|
|
@@ -687,7 +710,7 @@ const StickyNoteNodeComponent = ({ id, data, selected, dragging, placeholder = '
|
|
|
687
710
|
}),
|
|
688
711
|
shouldRenderToolbarOverlay && /*#__PURE__*/ jsx(NodeToolbar, {
|
|
689
712
|
nodeId: id,
|
|
690
|
-
config:
|
|
713
|
+
config: effectiveToolbarConfig,
|
|
691
714
|
expanded: true,
|
|
692
715
|
portalToNodeOverlay: true
|
|
693
716
|
}),
|
|
@@ -24,14 +24,30 @@ var __webpack_require__ = {};
|
|
|
24
24
|
var __webpack_exports__ = {};
|
|
25
25
|
__webpack_require__.r(__webpack_exports__);
|
|
26
26
|
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
-
isSeparator: ()=>isSeparator
|
|
27
|
+
isSeparator: ()=>isSeparator,
|
|
28
|
+
lockToolbarConfig: ()=>lockToolbarConfig
|
|
28
29
|
});
|
|
29
30
|
function isSeparator(item) {
|
|
30
31
|
return 'separator' === item.id;
|
|
31
32
|
}
|
|
33
|
+
function lockToolbarConfig(config) {
|
|
34
|
+
return {
|
|
35
|
+
...config,
|
|
36
|
+
actions: disableActions(config.actions),
|
|
37
|
+
...config.overflowActions && {
|
|
38
|
+
overflowActions: disableActions(config.overflowActions)
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
const disableActions = (actions)=>actions.map((action)=>'separator' === action.id ? action : {
|
|
43
|
+
...action,
|
|
44
|
+
disabled: true
|
|
45
|
+
});
|
|
32
46
|
exports.isSeparator = __webpack_exports__.isSeparator;
|
|
47
|
+
exports.lockToolbarConfig = __webpack_exports__.lockToolbarConfig;
|
|
33
48
|
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
34
|
-
"isSeparator"
|
|
49
|
+
"isSeparator",
|
|
50
|
+
"lockToolbarConfig"
|
|
35
51
|
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
36
52
|
Object.defineProperty(exports, '__esModule', {
|
|
37
53
|
value: true
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { ExtendedToolbarAction, ToolbarSeparator } from '../shared';
|
|
2
|
+
import type { NodeToolbarConfig } from './NodeToolbar.types';
|
|
2
3
|
export type ProcessedToolbarItem = ExtendedToolbarAction | ToolbarSeparator;
|
|
3
4
|
export declare function isSeparator(item: ProcessedToolbarItem): item is ToolbarSeparator;
|
|
5
|
+
export declare function lockToolbarConfig(config: NodeToolbarConfig): NodeToolbarConfig;
|
|
4
6
|
//# sourceMappingURL=NodeToolbar.utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeToolbar.utils.d.ts","sourceRoot":"","sources":["../../../../../src/canvas/components/Toolbar/NodeToolbar/NodeToolbar.utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,
|
|
1
|
+
{"version":3,"file":"NodeToolbar.utils.d.ts","sourceRoot":"","sources":["../../../../../src/canvas/components/Toolbar/NodeToolbar/NodeToolbar.utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAiB,gBAAgB,EAAE,MAAM,WAAW,CAAC;AACxF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,MAAM,MAAM,oBAAoB,GAAG,qBAAqB,GAAG,gBAAgB,CAAC;AAE5E,wBAAgB,WAAW,CAAC,IAAI,EAAE,oBAAoB,GAAG,IAAI,IAAI,gBAAgB,CAEhF;AASD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,iBAAiB,CAM9E"}
|
|
@@ -1,4 +1,17 @@
|
|
|
1
1
|
function isSeparator(item) {
|
|
2
2
|
return 'separator' === item.id;
|
|
3
3
|
}
|
|
4
|
-
|
|
4
|
+
function lockToolbarConfig(config) {
|
|
5
|
+
return {
|
|
6
|
+
...config,
|
|
7
|
+
actions: disableActions(config.actions),
|
|
8
|
+
...config.overflowActions && {
|
|
9
|
+
overflowActions: disableActions(config.overflowActions)
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
const disableActions = (actions)=>actions.map((action)=>'separator' === action.id ? action : {
|
|
14
|
+
...action,
|
|
15
|
+
disabled: true
|
|
16
|
+
});
|
|
17
|
+
export { isSeparator, lockToolbarConfig };
|
|
@@ -25,8 +25,22 @@ export interface StoryCardProps {
|
|
|
25
25
|
title: string;
|
|
26
26
|
code?: string;
|
|
27
27
|
description: ReactNode;
|
|
28
|
+
previewClassName?: string;
|
|
28
29
|
}
|
|
29
|
-
export declare function StoryCard({ preview, title, code, description }: StoryCardProps): import("react/jsx-runtime").JSX.Element;
|
|
30
|
+
export declare function StoryCard({ preview, title, code, description, previewClassName }: StoryCardProps): import("react/jsx-runtime").JSX.Element;
|
|
31
|
+
export declare function StoryWideContent({ children }: {
|
|
32
|
+
children?: ReactNode;
|
|
33
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
34
|
+
export interface StoryTab {
|
|
35
|
+
value: string;
|
|
36
|
+
label: string;
|
|
37
|
+
content: ReactNode;
|
|
38
|
+
}
|
|
39
|
+
export interface StoryTabsProps {
|
|
40
|
+
tabs: readonly StoryTab[];
|
|
41
|
+
label?: string;
|
|
42
|
+
}
|
|
43
|
+
export declare function StoryTabs({ tabs, label }: StoryTabsProps): import("react/jsx-runtime").JSX.Element | null;
|
|
30
44
|
export declare function StoryCode({ children }: {
|
|
31
45
|
children: ReactNode;
|
|
32
46
|
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StoryPage.d.ts","sourceRoot":"","sources":["../../../../src/canvas/storybook-utils/components/StoryPage.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAwBvC,MAAM,WAAW,cAAc;IAE7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IAEd,WAAW,CAAC,EAAE,SAAS,CAAC;IAExB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,cAAc,2CAWhF;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAGD,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAc,EAAE,EAAE,iBAAiB,2CAS/F;AAED,MAAM,WAAW,4BAA4B;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAOD,wBAAgB,uBAAuB,CAAC,EACtC,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,QAAQ,GACT,EAAE,4BAA4B,2CAiB9B;AAED,MAAM,WAAW,cAAc;IAE7B,OAAO,EAAE,SAAS,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IAEd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"StoryPage.d.ts","sourceRoot":"","sources":["../../../../src/canvas/storybook-utils/components/StoryPage.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAwBvC,MAAM,WAAW,cAAc;IAE7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IAEd,WAAW,CAAC,EAAE,SAAS,CAAC;IAExB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,cAAc,2CAWhF;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAGD,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAc,EAAE,EAAE,iBAAiB,2CAS/F;AAED,MAAM,WAAW,4BAA4B;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAOD,wBAAgB,uBAAuB,CAAC,EACtC,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,QAAQ,GACT,EAAE,4BAA4B,2CAiB9B;AAED,MAAM,WAAW,cAAc;IAE7B,OAAO,EAAE,SAAS,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IAEd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,SAAS,CAAC;IAEvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAGD,wBAAgB,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,gBAAgB,EAAE,EAAE,cAAc,2CAahG;AAGD,wBAAgB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,2CAMtE;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,SAAS,QAAQ,EAAE,CAAC;IAE1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAGD,wBAAgB,SAAS,CAAC,EAAE,IAAI,EAAE,KAAqB,EAAE,EAAE,cAAc,kDA2BxE;AAGD,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAE9D;AAGD,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,SAAS,CAAA;CAAE,2CAMnE"}
|