phx-react 1.3.1579 → 1.3.1580

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/cjs/components/TextEditorV2/editor.js +1 -13
  2. package/dist/cjs/components/TextEditorV2/editor.js.map +1 -1
  3. package/dist/esm/components/TextEditorV2/editor.js +1 -13
  4. package/dist/esm/components/TextEditorV2/editor.js.map +1 -1
  5. package/package.json +1 -1
  6. package/dist/cjs/components/TextEditorV2/plugins/CodeActionMenuPlugin/components/CopyButton/index.d.ts +0 -8
  7. package/dist/cjs/components/TextEditorV2/plugins/CodeActionMenuPlugin/components/CopyButton/index.js +0 -40
  8. package/dist/cjs/components/TextEditorV2/plugins/CodeActionMenuPlugin/components/CopyButton/index.js.map +0 -1
  9. package/dist/cjs/components/TextEditorV2/plugins/CodeActionMenuPlugin/components/PrettierButton/index.d.ts +0 -10
  10. package/dist/cjs/components/TextEditorV2/plugins/CodeActionMenuPlugin/components/PrettierButton/index.js +0 -109
  11. package/dist/cjs/components/TextEditorV2/plugins/CodeActionMenuPlugin/components/PrettierButton/index.js.map +0 -1
  12. package/dist/cjs/components/TextEditorV2/plugins/CodeActionMenuPlugin/index.d.ts +0 -4
  13. package/dist/cjs/components/TextEditorV2/plugins/CodeActionMenuPlugin/index.js +0 -109
  14. package/dist/cjs/components/TextEditorV2/plugins/CodeActionMenuPlugin/index.js.map +0 -1
  15. package/dist/cjs/components/TextEditorV2/plugins/CodeActionMenuPlugin/utils.d.ts +0 -1
  16. package/dist/cjs/components/TextEditorV2/plugins/CodeActionMenuPlugin/utils.js +0 -15
  17. package/dist/cjs/components/TextEditorV2/plugins/CodeActionMenuPlugin/utils.js.map +0 -1
  18. package/dist/cjs/components/TextEditorV2/plugins/TableActionMenuPlugin/index.d.ts +0 -5
  19. package/dist/cjs/components/TextEditorV2/plugins/TableActionMenuPlugin/index.js +0 -478
  20. package/dist/cjs/components/TextEditorV2/plugins/TableActionMenuPlugin/index.js.map +0 -1
  21. package/dist/esm/components/TextEditorV2/plugins/CodeActionMenuPlugin/components/CopyButton/index.d.ts +0 -8
  22. package/dist/esm/components/TextEditorV2/plugins/CodeActionMenuPlugin/components/CopyButton/index.js +0 -36
  23. package/dist/esm/components/TextEditorV2/plugins/CodeActionMenuPlugin/components/CopyButton/index.js.map +0 -1
  24. package/dist/esm/components/TextEditorV2/plugins/CodeActionMenuPlugin/components/PrettierButton/index.d.ts +0 -10
  25. package/dist/esm/components/TextEditorV2/plugins/CodeActionMenuPlugin/components/PrettierButton/index.js +0 -104
  26. package/dist/esm/components/TextEditorV2/plugins/CodeActionMenuPlugin/components/PrettierButton/index.js.map +0 -1
  27. package/dist/esm/components/TextEditorV2/plugins/CodeActionMenuPlugin/index.d.ts +0 -4
  28. package/dist/esm/components/TextEditorV2/plugins/CodeActionMenuPlugin/index.js +0 -105
  29. package/dist/esm/components/TextEditorV2/plugins/CodeActionMenuPlugin/index.js.map +0 -1
  30. package/dist/esm/components/TextEditorV2/plugins/CodeActionMenuPlugin/utils.d.ts +0 -1
  31. package/dist/esm/components/TextEditorV2/plugins/CodeActionMenuPlugin/utils.js +0 -12
  32. package/dist/esm/components/TextEditorV2/plugins/CodeActionMenuPlugin/utils.js.map +0 -1
  33. package/dist/esm/components/TextEditorV2/plugins/TableActionMenuPlugin/index.d.ts +0 -5
  34. package/dist/esm/components/TextEditorV2/plugins/TableActionMenuPlugin/index.js +0 -474
  35. package/dist/esm/components/TextEditorV2/plugins/TableActionMenuPlugin/index.js.map +0 -1
@@ -1,474 +0,0 @@
1
- import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
2
- import useLexicalEditable from '@lexical/react/useLexicalEditable';
3
- import { $deleteTableColumn__EXPERIMENTAL, $deleteTableRow__EXPERIMENTAL, $getTableCellNodeFromLexicalNode, $getTableColumnIndexFromTableCellNode, $getTableNodeFromLexicalNodeOrThrow, $getTableRowIndexFromTableCellNode, $insertTableColumn__EXPERIMENTAL, $insertTableRow__EXPERIMENTAL, $isTableCellNode, $isTableRowNode, $unmergeCell, getTableSelectionFromTableElement, TableCellHeaderStates, TableCellNode, } from '@lexical/table';
4
- import { $createParagraphNode, $getRoot, $getSelection, $isElementNode, $isParagraphNode, $isRangeSelection, $isTextNode, DEPRECATED_$getNodeTriplet, DEPRECATED_$isGridCellNode, DEPRECATED_$isGridSelection, } from 'lexical';
5
- import * as React from 'react';
6
- import { useCallback, useEffect, useRef, useState } from 'react';
7
- import { createPortal } from 'react-dom';
8
- import useModal from '../../hooks/useModal';
9
- import invariant from '../../shared/invariant';
10
- import ColorPicker from '../../ui/ColorPicker';
11
- function computeSelectionCount(selection) {
12
- const selectionShape = selection.getShape();
13
- return {
14
- columns: selectionShape.toX - selectionShape.fromX + 1,
15
- rows: selectionShape.toY - selectionShape.fromY + 1,
16
- };
17
- }
18
- // This is important when merging cells as there is no good way to re-merge weird shapes (a result
19
- // of selecting merged cells and non-merged)
20
- function isGridSelectionRectangular(selection) {
21
- const nodes = selection.getNodes();
22
- const currentRows = [];
23
- let currentRow = null;
24
- let expectedColumns = null;
25
- let currentColumns = 0;
26
- for (let i = 0; i < nodes.length; i++) {
27
- const node = nodes[i];
28
- if ($isTableCellNode(node)) {
29
- const row = node.getParentOrThrow();
30
- invariant($isTableRowNode(row), 'Expected CellNode to have a RowNode parent');
31
- if (currentRow !== row) {
32
- if (expectedColumns !== null && currentColumns !== expectedColumns) {
33
- return false;
34
- }
35
- if (currentRow !== null) {
36
- expectedColumns = currentColumns;
37
- }
38
- currentRow = row;
39
- currentColumns = 0;
40
- }
41
- const colSpan = node.__colSpan;
42
- for (let j = 0; j < colSpan; j++) {
43
- if (currentRows[currentColumns + j] === undefined) {
44
- currentRows[currentColumns + j] = 0;
45
- }
46
- currentRows[currentColumns + j] += node.__rowSpan;
47
- }
48
- currentColumns += colSpan;
49
- }
50
- }
51
- return ((expectedColumns === null || currentColumns === expectedColumns) && currentRows.every((v) => v === currentRows[0]));
52
- }
53
- function $canUnmerge() {
54
- const selection = $getSelection();
55
- if (($isRangeSelection(selection) && !selection.isCollapsed()) ||
56
- (DEPRECATED_$isGridSelection(selection) && !selection.anchor.is(selection.focus)) ||
57
- (!$isRangeSelection(selection) && !DEPRECATED_$isGridSelection(selection))) {
58
- return false;
59
- }
60
- const [cell] = DEPRECATED_$getNodeTriplet(selection.anchor);
61
- return cell.__colSpan > 1 || cell.__rowSpan > 1;
62
- }
63
- function $cellContainsEmptyParagraph(cell) {
64
- if (cell.getChildrenSize() !== 1) {
65
- return false;
66
- }
67
- const firstChild = cell.getFirstChildOrThrow();
68
- if (!$isParagraphNode(firstChild) || !firstChild.isEmpty()) {
69
- return false;
70
- }
71
- return true;
72
- }
73
- function $selectLastDescendant(node) {
74
- const lastDescendant = node.getLastDescendant();
75
- if ($isTextNode(lastDescendant)) {
76
- lastDescendant.select();
77
- }
78
- else if ($isElementNode(lastDescendant)) {
79
- lastDescendant.selectEnd();
80
- }
81
- else if (lastDescendant !== null) {
82
- lastDescendant.selectNext();
83
- }
84
- }
85
- function currentCellBackgroundColor(editor) {
86
- return editor.getEditorState().read(() => {
87
- const selection = $getSelection();
88
- if ($isRangeSelection(selection) || DEPRECATED_$isGridSelection(selection)) {
89
- const [cell] = DEPRECATED_$getNodeTriplet(selection.anchor);
90
- if ($isTableCellNode(cell)) {
91
- return cell.getBackgroundColor();
92
- }
93
- }
94
- return null;
95
- });
96
- }
97
- function TableActionMenu({ cellMerge, contextRef, onClose, setIsMenuOpen, showColorPickerModal, tableCellNode: _tableCellNode, }) {
98
- const [editor] = useLexicalComposerContext();
99
- const dropDownRef = useRef(null);
100
- const [tableCellNode, updateTableCellNode] = useState(_tableCellNode);
101
- const [selectionCounts, updateSelectionCounts] = useState({
102
- columns: 1,
103
- rows: 1,
104
- });
105
- const [canMergeCells, setCanMergeCells] = useState(false);
106
- const [canUnmergeCell, setCanUnmergeCell] = useState(false);
107
- const [backgroundColor, setBackgroundColor] = useState(() => currentCellBackgroundColor(editor) || '');
108
- useEffect(() => editor.registerMutationListener(TableCellNode, (nodeMutations) => {
109
- const nodeUpdated = nodeMutations.get(tableCellNode.getKey()) === 'updated';
110
- if (nodeUpdated) {
111
- editor.getEditorState().read(() => {
112
- updateTableCellNode(tableCellNode.getLatest());
113
- });
114
- setBackgroundColor(currentCellBackgroundColor(editor) || '');
115
- }
116
- }), [editor, tableCellNode]);
117
- useEffect(() => {
118
- editor.getEditorState().read(() => {
119
- const selection = $getSelection();
120
- // Merge cells
121
- if (DEPRECATED_$isGridSelection(selection)) {
122
- const currentSelectionCounts = computeSelectionCount(selection);
123
- updateSelectionCounts(computeSelectionCount(selection));
124
- setCanMergeCells(isGridSelectionRectangular(selection) &&
125
- (currentSelectionCounts.columns > 1 || currentSelectionCounts.rows > 1));
126
- }
127
- // Unmerge cell
128
- setCanUnmergeCell($canUnmerge());
129
- });
130
- }, [editor]);
131
- useEffect(() => {
132
- const menuButtonElement = contextRef.current;
133
- const dropDownElement = dropDownRef.current;
134
- const rootElement = editor.getRootElement();
135
- if (menuButtonElement != null && dropDownElement != null && rootElement != null) {
136
- const rootEleRect = rootElement.getBoundingClientRect();
137
- const menuButtonRect = menuButtonElement.getBoundingClientRect();
138
- dropDownElement.style.opacity = '1';
139
- const dropDownElementRect = dropDownElement.getBoundingClientRect();
140
- const margin = 5;
141
- let leftPosition = menuButtonRect.right + margin;
142
- if (leftPosition + dropDownElementRect.width > window.innerWidth ||
143
- leftPosition + dropDownElementRect.width > rootEleRect.right) {
144
- const position = menuButtonRect.left - dropDownElementRect.width - margin;
145
- leftPosition = (position < 0 ? margin : position) + window.pageXOffset;
146
- }
147
- dropDownElement.style.left = `${leftPosition + window.pageXOffset}px`;
148
- let topPosition = menuButtonRect.top;
149
- if (topPosition + dropDownElementRect.height > window.innerHeight) {
150
- const position = menuButtonRect.bottom - dropDownElementRect.height;
151
- topPosition = (position < 0 ? margin : position) + window.pageYOffset;
152
- }
153
- dropDownElement.style.top = `${topPosition + +window.pageYOffset}px`;
154
- }
155
- }, [contextRef, dropDownRef, editor]);
156
- useEffect(() => {
157
- function handleClickOutside(event) {
158
- if (dropDownRef.current != null &&
159
- contextRef.current != null &&
160
- !dropDownRef.current.contains(event.target) &&
161
- !contextRef.current.contains(event.target)) {
162
- setIsMenuOpen(false);
163
- }
164
- }
165
- window.addEventListener('click', handleClickOutside);
166
- return () => window.removeEventListener('click', handleClickOutside);
167
- }, [setIsMenuOpen, contextRef]);
168
- const clearTableSelection = useCallback(() => {
169
- editor.update(() => {
170
- if (tableCellNode.isAttached()) {
171
- const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);
172
- const tableElement = editor.getElementByKey(tableNode.getKey());
173
- if (!tableElement) {
174
- throw new Error('Expected to find tableElement in DOM');
175
- }
176
- const tableSelection = getTableSelectionFromTableElement(tableElement);
177
- if (tableSelection !== null) {
178
- tableSelection.clearHighlight();
179
- }
180
- tableNode.markDirty();
181
- updateTableCellNode(tableCellNode.getLatest());
182
- }
183
- const rootNode = $getRoot();
184
- rootNode.selectStart();
185
- });
186
- }, [editor, tableCellNode]);
187
- const mergeTableCellsAtSelection = () => {
188
- editor.update(() => {
189
- const selection = $getSelection();
190
- if (DEPRECATED_$isGridSelection(selection)) {
191
- const { columns, rows } = computeSelectionCount(selection);
192
- const nodes = selection.getNodes();
193
- let firstCell = null;
194
- for (let i = 0; i < nodes.length; i++) {
195
- const node = nodes[i];
196
- if (DEPRECATED_$isGridCellNode(node)) {
197
- if (firstCell === null) {
198
- node.setColSpan(columns).setRowSpan(rows);
199
- firstCell = node;
200
- const isEmpty = $cellContainsEmptyParagraph(node);
201
- let firstChild;
202
- if (isEmpty && $isParagraphNode((firstChild = node.getFirstChild()))) {
203
- firstChild.remove();
204
- }
205
- }
206
- else if (DEPRECATED_$isGridCellNode(firstCell)) {
207
- const isEmpty = $cellContainsEmptyParagraph(node);
208
- if (!isEmpty) {
209
- firstCell.append(...node.getChildren());
210
- }
211
- node.remove();
212
- }
213
- }
214
- }
215
- if (firstCell !== null) {
216
- if (firstCell.getChildrenSize() === 0) {
217
- firstCell.append($createParagraphNode());
218
- }
219
- $selectLastDescendant(firstCell);
220
- }
221
- onClose();
222
- }
223
- });
224
- };
225
- const unmergeTableCellsAtSelection = () => {
226
- editor.update(() => {
227
- $unmergeCell();
228
- });
229
- };
230
- const insertTableRowAtSelection = useCallback((shouldInsertAfter) => {
231
- editor.update(() => {
232
- $insertTableRow__EXPERIMENTAL(shouldInsertAfter);
233
- onClose();
234
- });
235
- }, [editor, onClose]);
236
- const insertTableColumnAtSelection = useCallback((shouldInsertAfter) => {
237
- editor.update(() => {
238
- for (let i = 0; i < selectionCounts.columns; i++) {
239
- $insertTableColumn__EXPERIMENTAL(shouldInsertAfter);
240
- }
241
- onClose();
242
- });
243
- }, [editor, onClose, selectionCounts.columns]);
244
- const deleteTableRowAtSelection = useCallback(() => {
245
- editor.update(() => {
246
- $deleteTableRow__EXPERIMENTAL();
247
- onClose();
248
- });
249
- }, [editor, onClose]);
250
- const deleteTableAtSelection = useCallback(() => {
251
- editor.update(() => {
252
- const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);
253
- tableNode.remove();
254
- clearTableSelection();
255
- onClose();
256
- });
257
- }, [editor, tableCellNode, clearTableSelection, onClose]);
258
- const deleteTableColumnAtSelection = useCallback(() => {
259
- editor.update(() => {
260
- $deleteTableColumn__EXPERIMENTAL();
261
- onClose();
262
- });
263
- }, [editor, onClose]);
264
- const toggleTableRowIsHeader = useCallback(() => {
265
- editor.update(() => {
266
- const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);
267
- const tableRowIndex = $getTableRowIndexFromTableCellNode(tableCellNode);
268
- const tableRows = tableNode.getChildren();
269
- if (tableRowIndex >= tableRows.length || tableRowIndex < 0) {
270
- throw new Error('Expected table cell to be inside of table row.');
271
- }
272
- const tableRow = tableRows[tableRowIndex];
273
- if (!$isTableRowNode(tableRow)) {
274
- throw new Error('Expected table row');
275
- }
276
- tableRow.getChildren().forEach((tableCell) => {
277
- if (!$isTableCellNode(tableCell)) {
278
- throw new Error('Expected table cell');
279
- }
280
- tableCell.toggleHeaderStyle(TableCellHeaderStates.ROW);
281
- });
282
- clearTableSelection();
283
- onClose();
284
- });
285
- }, [editor, tableCellNode, clearTableSelection, onClose]);
286
- const toggleTableColumnIsHeader = useCallback(() => {
287
- editor.update(() => {
288
- const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode);
289
- const tableColumnIndex = $getTableColumnIndexFromTableCellNode(tableCellNode);
290
- const tableRows = tableNode.getChildren();
291
- const maxRowsLength = Math.max(...tableRows.map((row) => row.getChildren().length));
292
- if (tableColumnIndex >= maxRowsLength || tableColumnIndex < 0) {
293
- throw new Error('Expected table cell to be inside of table row.');
294
- }
295
- for (let r = 0; r < tableRows.length; r++) {
296
- const tableRow = tableRows[r];
297
- if (!$isTableRowNode(tableRow)) {
298
- throw new Error('Expected table row');
299
- }
300
- const tableCells = tableRow.getChildren();
301
- if (tableColumnIndex >= tableCells.length) {
302
- // if cell is outside of bounds for the current row (for example various merge cell cases) we shouldn't highlight it
303
- continue;
304
- }
305
- const tableCell = tableCells[tableColumnIndex];
306
- if (!$isTableCellNode(tableCell)) {
307
- throw new Error('Expected table cell');
308
- }
309
- tableCell.toggleHeaderStyle(TableCellHeaderStates.COLUMN);
310
- }
311
- clearTableSelection();
312
- onClose();
313
- });
314
- }, [editor, tableCellNode, clearTableSelection, onClose]);
315
- const handleCellBackgroundColor = useCallback((value) => {
316
- editor.update(() => {
317
- const selection = $getSelection();
318
- if ($isRangeSelection(selection) || DEPRECATED_$isGridSelection(selection)) {
319
- const [cell] = DEPRECATED_$getNodeTriplet(selection.anchor);
320
- if ($isTableCellNode(cell)) {
321
- cell.setBackgroundColor(value);
322
- }
323
- if (DEPRECATED_$isGridSelection(selection)) {
324
- const nodes = selection.getNodes();
325
- for (let i = 0; i < nodes.length; i++) {
326
- const node = nodes[i];
327
- if (DEPRECATED_$isGridCellNode(node)) {
328
- node.setBackgroundColor(value);
329
- }
330
- }
331
- }
332
- }
333
- });
334
- }, [editor]);
335
- let mergeCellButton = null;
336
- if (cellMerge) {
337
- if (canMergeCells) {
338
- mergeCellButton = (React.createElement("button", { className: 'item', "data-test-id": 'table-merge-cells', onClick: () => mergeTableCellsAtSelection(), type: 'button' }, "Merge cells"));
339
- }
340
- else if (canUnmergeCell) {
341
- mergeCellButton = (React.createElement("button", { className: 'item', "data-test-id": 'table-unmerge-cells', onClick: () => unmergeTableCellsAtSelection(), type: 'button' }, "Unmerge cells"));
342
- }
343
- }
344
- return createPortal(React.createElement("div", { ref: dropDownRef, className: 'dropdown', onClick: (e) => {
345
- e.stopPropagation();
346
- } },
347
- mergeCellButton,
348
- React.createElement("button", { className: 'item', "data-test-id": 'table-background-color', onClick: () => showColorPickerModal('Cell background color', () => (React.createElement(ColorPicker, { color: backgroundColor, onChange: handleCellBackgroundColor }))), type: 'button' },
349
- React.createElement("span", { className: 'text' }, "Background color")),
350
- React.createElement("hr", null),
351
- React.createElement("button", { className: 'item', "data-test-id": 'table-insert-row-above', onClick: () => insertTableRowAtSelection(false), type: 'button' },
352
- React.createElement("span", { className: 'text' },
353
- "Insert ",
354
- selectionCounts.rows === 1 ? 'row' : `${selectionCounts.rows} rows`,
355
- " above")),
356
- React.createElement("button", { className: 'item', "data-test-id": 'table-insert-row-below', onClick: () => insertTableRowAtSelection(true), type: 'button' },
357
- React.createElement("span", { className: 'text' },
358
- "Insert ",
359
- selectionCounts.rows === 1 ? 'row' : `${selectionCounts.rows} rows`,
360
- " below")),
361
- React.createElement("hr", null),
362
- React.createElement("button", { className: 'item', "data-test-id": 'table-insert-column-before', onClick: () => insertTableColumnAtSelection(false), type: 'button' },
363
- React.createElement("span", { className: 'text' },
364
- "Insert ",
365
- selectionCounts.columns === 1 ? 'column' : `${selectionCounts.columns} columns`,
366
- " left")),
367
- React.createElement("button", { className: 'item', "data-test-id": 'table-insert-column-after', onClick: () => insertTableColumnAtSelection(true), type: 'button' },
368
- React.createElement("span", { className: 'text' },
369
- "Insert ",
370
- selectionCounts.columns === 1 ? 'column' : `${selectionCounts.columns} columns`,
371
- " right")),
372
- React.createElement("hr", null),
373
- React.createElement("button", { className: 'item', "data-test-id": 'table-delete-columns', onClick: () => deleteTableColumnAtSelection(), type: 'button' },
374
- React.createElement("span", { className: 'text' }, "Delete column")),
375
- React.createElement("button", { className: 'item', "data-test-id": 'table-delete-rows', onClick: () => deleteTableRowAtSelection(), type: 'button' },
376
- React.createElement("span", { className: 'text' }, "Delete row")),
377
- React.createElement("button", { className: 'item', "data-test-id": 'table-delete', onClick: () => deleteTableAtSelection(), type: 'button' },
378
- React.createElement("span", { className: 'text' }, "Delete table")),
379
- React.createElement("hr", null),
380
- React.createElement("button", { className: 'item', onClick: () => toggleTableRowIsHeader(), type: 'button' },
381
- React.createElement("span", { className: 'text' },
382
- (tableCellNode.__headerState & TableCellHeaderStates.ROW) === TableCellHeaderStates.ROW ? 'Remove' : 'Add',
383
- ' ',
384
- "row header")),
385
- React.createElement("button", { className: 'item', "data-test-id": 'table-column-header', onClick: () => toggleTableColumnIsHeader(), type: 'button' },
386
- React.createElement("span", { className: 'text' },
387
- (tableCellNode.__headerState & TableCellHeaderStates.COLUMN) === TableCellHeaderStates.COLUMN
388
- ? 'Remove'
389
- : 'Add',
390
- ' ',
391
- "column header"))), document.body);
392
- }
393
- function TableCellActionMenuContainer({ anchorElem, cellMerge, }) {
394
- const [editor] = useLexicalComposerContext();
395
- const menuButtonRef = useRef(null);
396
- const menuRootRef = useRef(null);
397
- const [isMenuOpen, setIsMenuOpen] = useState(false);
398
- const [tableCellNode, setTableMenuCellNode] = useState(null);
399
- const [colorPickerModal, showColorPickerModal] = useModal();
400
- const moveMenu = useCallback(() => {
401
- const menu = menuButtonRef.current;
402
- const selection = $getSelection();
403
- const nativeSelection = window.getSelection();
404
- const activeElement = document.activeElement;
405
- if (selection == null || menu == null) {
406
- setTableMenuCellNode(null);
407
- return;
408
- }
409
- const rootElement = editor.getRootElement();
410
- if ($isRangeSelection(selection) &&
411
- rootElement !== null &&
412
- nativeSelection !== null &&
413
- rootElement.contains(nativeSelection.anchorNode)) {
414
- const tableCellNodeFromSelection = $getTableCellNodeFromLexicalNode(selection.anchor.getNode());
415
- if (tableCellNodeFromSelection == null) {
416
- setTableMenuCellNode(null);
417
- return;
418
- }
419
- const tableCellParentNodeDOM = editor.getElementByKey(tableCellNodeFromSelection.getKey());
420
- if (tableCellParentNodeDOM == null) {
421
- setTableMenuCellNode(null);
422
- return;
423
- }
424
- setTableMenuCellNode(tableCellNodeFromSelection);
425
- }
426
- else if (!activeElement) {
427
- setTableMenuCellNode(null);
428
- }
429
- }, [editor]);
430
- useEffect(() => editor.registerUpdateListener(() => {
431
- editor.getEditorState().read(() => {
432
- moveMenu();
433
- });
434
- }));
435
- useEffect(() => {
436
- const menuButtonDOM = menuButtonRef.current;
437
- if (menuButtonDOM != null && tableCellNode != null) {
438
- const tableCellNodeDOM = editor.getElementByKey(tableCellNode.getKey());
439
- if (tableCellNodeDOM != null) {
440
- const tableCellRect = tableCellNodeDOM.getBoundingClientRect();
441
- const menuRect = menuButtonDOM.getBoundingClientRect();
442
- const anchorRect = anchorElem.getBoundingClientRect();
443
- const top = tableCellRect.top - anchorRect.top + 4;
444
- const left = tableCellRect.right - menuRect.width - 10 - anchorRect.left;
445
- menuButtonDOM.style.opacity = '1';
446
- menuButtonDOM.style.transform = `translate(${left}px, ${top}px)`;
447
- }
448
- else {
449
- menuButtonDOM.style.opacity = '0';
450
- menuButtonDOM.style.transform = 'translate(-10000px, -10000px)';
451
- }
452
- }
453
- }, [menuButtonRef, tableCellNode, editor, anchorElem]);
454
- const prevTableCellDOM = useRef(tableCellNode);
455
- useEffect(() => {
456
- if (prevTableCellDOM.current !== tableCellNode) {
457
- setIsMenuOpen(false);
458
- }
459
- prevTableCellDOM.current = tableCellNode;
460
- }, [prevTableCellDOM, tableCellNode]);
461
- return (React.createElement("div", { ref: menuButtonRef, className: 'table-cell-action-button-container' }, tableCellNode != null && (React.createElement(React.Fragment, null,
462
- React.createElement("button", { ref: menuRootRef, className: 'table-cell-action-button chevron-down', onClick: (e) => {
463
- e.stopPropagation();
464
- setIsMenuOpen(!isMenuOpen);
465
- }, type: 'button' },
466
- React.createElement("i", { className: 'chevron-down' })),
467
- colorPickerModal,
468
- isMenuOpen && (React.createElement(TableActionMenu, { cellMerge: cellMerge, contextRef: menuRootRef, onClose: () => setIsMenuOpen(false), setIsMenuOpen: setIsMenuOpen, showColorPickerModal: showColorPickerModal, tableCellNode: tableCellNode }))))));
469
- }
470
- export default function TableActionMenuPlugin({ anchorElem = document.body, cellMerge = false, }) {
471
- const isEditable = useLexicalEditable();
472
- return createPortal(isEditable ? React.createElement(TableCellActionMenuContainer, { anchorElem: anchorElem, cellMerge: cellMerge }) : null, anchorElem);
473
- }
474
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/components/TextEditorV2/plugins/TableActionMenuPlugin/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAA;AACjF,OAAO,kBAAkB,MAAM,mCAAmC,CAAA;AAClE,OAAO,EACL,gCAAgC,EAChC,6BAA6B,EAC7B,gCAAgC,EAChC,qCAAqC,EACrC,mCAAmC,EACnC,kCAAkC,EAClC,gCAAgC,EAChC,6BAA6B,EAC7B,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,iCAAiC,EAEjC,qBAAqB,EACrB,aAAa,GACd,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EACL,oBAAoB,EACpB,QAAQ,EACR,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,0BAA0B,EAC1B,0BAA0B,EAC1B,2BAA2B,GAE5B,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAe,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACxC,OAAO,QAAQ,MAAM,sBAAsB,CAAA;AAC3C,OAAO,SAAS,MAAM,wBAAwB,CAAA;AAC9C,OAAO,WAAW,MAAM,sBAAsB,CAAA;AAE9C,SAAS,qBAAqB,CAAC,SAAwB;IAIrD,MAAM,cAAc,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAA;IAC3C,OAAO;QACL,OAAO,EAAE,cAAc,CAAC,GAAG,GAAG,cAAc,CAAC,KAAK,GAAG,CAAC;QACtD,IAAI,EAAE,cAAc,CAAC,GAAG,GAAG,cAAc,CAAC,KAAK,GAAG,CAAC;KACpD,CAAA;AACH,CAAC;AAED,kGAAkG;AAClG,4CAA4C;AAC5C,SAAS,0BAA0B,CAAC,SAAwB;IAC1D,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAA;IAClC,MAAM,WAAW,GAAkB,EAAE,CAAA;IACrC,IAAI,UAAU,GAAG,IAAI,CAAA;IACrB,IAAI,eAAe,GAAG,IAAI,CAAA;IAC1B,IAAI,cAAc,GAAG,CAAC,CAAA;IACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACrB,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAA;YACnC,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,4CAA4C,CAAC,CAAA;YAC7E,IAAI,UAAU,KAAK,GAAG,EAAE,CAAC;gBACvB,IAAI,eAAe,KAAK,IAAI,IAAI,cAAc,KAAK,eAAe,EAAE,CAAC;oBACnE,OAAO,KAAK,CAAA;gBACd,CAAC;gBACD,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;oBACxB,eAAe,GAAG,cAAc,CAAA;gBAClC,CAAC;gBACD,UAAU,GAAG,GAAG,CAAA;gBAChB,cAAc,GAAG,CAAC,CAAA;YACpB,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAA;YAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;gBACjC,IAAI,WAAW,CAAC,cAAc,GAAG,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;oBAClD,WAAW,CAAC,cAAc,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;gBACrC,CAAC;gBACD,WAAW,CAAC,cAAc,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAA;YACnD,CAAC;YACD,cAAc,IAAI,OAAO,CAAA;QAC3B,CAAC;IACH,CAAC;IACD,OAAO,CACL,CAAC,eAAe,KAAK,IAAI,IAAI,cAAc,KAAK,eAAe,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CACnH,CAAA;AACH,CAAC;AAED,SAAS,WAAW;IAClB,MAAM,SAAS,GAAG,aAAa,EAAE,CAAA;IACjC,IACE,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QAC1D,CAAC,2BAA2B,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACjF,CAAC,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,2BAA2B,CAAC,SAAS,CAAC,CAAC,EAC1E,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,GAAG,0BAA0B,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;IAC3D,OAAO,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,CAAA;AACjD,CAAC;AAED,SAAS,2BAA2B,CAAC,IAA6B;IAChE,IAAI,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,KAAK,CAAA;IACd,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAA;IAC9C,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC;QAC3D,OAAO,KAAK,CAAA;IACd,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAiB;IAC9C,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAA;IAC/C,IAAI,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC;QAChC,cAAc,CAAC,MAAM,EAAE,CAAA;IACzB,CAAC;SAAM,IAAI,cAAc,CAAC,cAAc,CAAC,EAAE,CAAC;QAC1C,cAAc,CAAC,SAAS,EAAE,CAAA;IAC5B,CAAC;SAAM,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;QACnC,cAAc,CAAC,UAAU,EAAE,CAAA;IAC7B,CAAC;AACH,CAAC;AAED,SAAS,0BAA0B,CAAC,MAAqB;IACvD,OAAO,MAAM,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;QACvC,MAAM,SAAS,GAAG,aAAa,EAAE,CAAA;QACjC,IAAI,iBAAiB,CAAC,SAAS,CAAC,IAAI,2BAA2B,CAAC,SAAS,CAAC,EAAE,CAAC;YAC3E,MAAM,CAAC,IAAI,CAAC,GAAG,0BAA0B,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;YAC3D,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3B,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAA;YAClC,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC,CAAC,CAAA;AACJ,CAAC;AAWD,SAAS,eAAe,CAAC,EACvB,SAAS,EACT,UAAU,EACV,OAAO,EACP,aAAa,EACb,oBAAoB,EACpB,aAAa,EAAE,cAAc,GACJ;IACzB,MAAM,CAAC,MAAM,CAAC,GAAG,yBAAyB,EAAE,CAAA;IAC5C,MAAM,WAAW,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAA;IACvD,MAAM,CAAC,aAAa,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAA;IACrE,MAAM,CAAC,eAAe,EAAE,qBAAqB,CAAC,GAAG,QAAQ,CAAC;QACxD,OAAO,EAAE,CAAC;QACV,IAAI,EAAE,CAAC;KACR,CAAC,CAAA;IACF,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACzD,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC3D,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,0BAA0B,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;IAEtG,SAAS,CACP,GAAG,EAAE,CACH,MAAM,CAAC,wBAAwB,CAAC,aAAa,EAAE,CAAC,aAAa,EAAE,EAAE;QAC/D,MAAM,WAAW,GAAG,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,KAAK,SAAS,CAAA;QAE3E,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;gBAChC,mBAAmB,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAA;YAChD,CAAC,CAAC,CAAA;YACF,kBAAkB,CAAC,0BAA0B,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;QAC9D,CAAC;IACH,CAAC,CAAC,EACJ,CAAC,MAAM,EAAE,aAAa,CAAC,CACxB,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;YAChC,MAAM,SAAS,GAAG,aAAa,EAAE,CAAA;YACjC,cAAc;YACd,IAAI,2BAA2B,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3C,MAAM,sBAAsB,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAA;gBAC/D,qBAAqB,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAA;gBACvD,gBAAgB,CACd,0BAA0B,CAAC,SAAS,CAAC;oBACnC,CAAC,sBAAsB,CAAC,OAAO,GAAG,CAAC,IAAI,sBAAsB,CAAC,IAAI,GAAG,CAAC,CAAC,CAC1E,CAAA;YACH,CAAC;YACD,eAAe;YACf,iBAAiB,CAAC,WAAW,EAAE,CAAC,CAAA;QAClC,CAAC,CAAC,CAAA;IACJ,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAEZ,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,CAAA;QAC5C,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,CAAA;QAC3C,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,EAAE,CAAA;QAE3C,IAAI,iBAAiB,IAAI,IAAI,IAAI,eAAe,IAAI,IAAI,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;YAChF,MAAM,WAAW,GAAG,WAAW,CAAC,qBAAqB,EAAE,CAAA;YACvD,MAAM,cAAc,GAAG,iBAAiB,CAAC,qBAAqB,EAAE,CAAA;YAChE,eAAe,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAA;YACnC,MAAM,mBAAmB,GAAG,eAAe,CAAC,qBAAqB,EAAE,CAAA;YACnE,MAAM,MAAM,GAAG,CAAC,CAAA;YAChB,IAAI,YAAY,GAAG,cAAc,CAAC,KAAK,GAAG,MAAM,CAAA;YAChD,IACE,YAAY,GAAG,mBAAmB,CAAC,KAAK,GAAG,MAAM,CAAC,UAAU;gBAC5D,YAAY,GAAG,mBAAmB,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,EAC5D,CAAC;gBACD,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,GAAG,mBAAmB,CAAC,KAAK,GAAG,MAAM,CAAA;gBACzE,YAAY,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,WAAW,CAAA;YACxE,CAAC;YACD,eAAe,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG,YAAY,GAAG,MAAM,CAAC,WAAW,IAAI,CAAA;YAErE,IAAI,WAAW,GAAG,cAAc,CAAC,GAAG,CAAA;YACpC,IAAI,WAAW,GAAG,mBAAmB,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;gBAClE,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAA;gBACnE,WAAW,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,WAAW,CAAA;YACvE,CAAC;YACD,eAAe,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,WAAW,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,CAAA;QACtE,CAAC;IACH,CAAC,EAAE,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAA;IAErC,SAAS,CAAC,GAAG,EAAE;QACb,SAAS,kBAAkB,CAAC,KAAiB;YAC3C,IACE,WAAW,CAAC,OAAO,IAAI,IAAI;gBAC3B,UAAU,CAAC,OAAO,IAAI,IAAI;gBAC1B,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC;gBACnD,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC,EAClD,CAAC;gBACD,aAAa,CAAC,KAAK,CAAC,CAAA;YACtB,CAAC;QACH,CAAC;QAED,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAA;QAEpD,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAA;IACtE,CAAC,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,CAAA;IAE/B,MAAM,mBAAmB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC3C,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;YACjB,IAAI,aAAa,CAAC,UAAU,EAAE,EAAE,CAAC;gBAC/B,MAAM,SAAS,GAAG,mCAAmC,CAAC,aAAa,CAAC,CAAA;gBACpE,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,EAAE,CAAgD,CAAA;gBAE9G,IAAI,CAAC,YAAY,EAAE,CAAC;oBAClB,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAA;gBACzD,CAAC;gBAED,MAAM,cAAc,GAAG,iCAAiC,CAAC,YAAY,CAAC,CAAA;gBACtE,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;oBAC5B,cAAc,CAAC,cAAc,EAAE,CAAA;gBACjC,CAAC;gBAED,SAAS,CAAC,SAAS,EAAE,CAAA;gBACrB,mBAAmB,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAA;YAChD,CAAC;YAED,MAAM,QAAQ,GAAG,QAAQ,EAAE,CAAA;YAC3B,QAAQ,CAAC,WAAW,EAAE,CAAA;QACxB,CAAC,CAAC,CAAA;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAA;IAE3B,MAAM,0BAA0B,GAAG,GAAG,EAAE;QACtC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;YACjB,MAAM,SAAS,GAAG,aAAa,EAAE,CAAA;YACjC,IAAI,2BAA2B,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3C,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAA;gBAC1D,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAA;gBAClC,IAAI,SAAS,GAAmC,IAAI,CAAA;gBACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;oBACrB,IAAI,0BAA0B,CAAC,IAAI,CAAC,EAAE,CAAC;wBACrC,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;4BACvB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;4BACzC,SAAS,GAAG,IAAI,CAAA;4BAChB,MAAM,OAAO,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAA;4BACjD,IAAI,UAAU,CAAA;4BACd,IAAI,OAAO,IAAI,gBAAgB,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC;gCACrE,UAAU,CAAC,MAAM,EAAE,CAAA;4BACrB,CAAC;wBACH,CAAC;6BAAM,IAAI,0BAA0B,CAAC,SAAS,CAAC,EAAE,CAAC;4BACjD,MAAM,OAAO,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAA;4BACjD,IAAI,CAAC,OAAO,EAAE,CAAC;gCACb,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;4BACzC,CAAC;4BACD,IAAI,CAAC,MAAM,EAAE,CAAA;wBACf,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;oBACvB,IAAI,SAAS,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC;wBACtC,SAAS,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC,CAAA;oBAC1C,CAAC;oBACD,qBAAqB,CAAC,SAAS,CAAC,CAAA;gBAClC,CAAC;gBACD,OAAO,EAAE,CAAA;YACX,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,MAAM,4BAA4B,GAAG,GAAG,EAAE;QACxC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;YACjB,YAAY,EAAE,CAAA;QAChB,CAAC,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,MAAM,yBAAyB,GAAG,WAAW,CAC3C,CAAC,iBAA0B,EAAE,EAAE;QAC7B,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;YACjB,6BAA6B,CAAC,iBAAiB,CAAC,CAAA;YAChD,OAAO,EAAE,CAAA;QACX,CAAC,CAAC,CAAA;IACJ,CAAC,EACD,CAAC,MAAM,EAAE,OAAO,CAAC,CAClB,CAAA;IAED,MAAM,4BAA4B,GAAG,WAAW,CAC9C,CAAC,iBAA0B,EAAE,EAAE;QAC7B,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;YACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;gBACjD,gCAAgC,CAAC,iBAAiB,CAAC,CAAA;YACrD,CAAC;YACD,OAAO,EAAE,CAAA;QACX,CAAC,CAAC,CAAA;IACJ,CAAC,EACD,CAAC,MAAM,EAAE,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,CAC3C,CAAA;IAED,MAAM,yBAAyB,GAAG,WAAW,CAAC,GAAG,EAAE;QACjD,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;YACjB,6BAA6B,EAAE,CAAA;YAC/B,OAAO,EAAE,CAAA;QACX,CAAC,CAAC,CAAA;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAErB,MAAM,sBAAsB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC9C,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;YACjB,MAAM,SAAS,GAAG,mCAAmC,CAAC,aAAa,CAAC,CAAA;YACpE,SAAS,CAAC,MAAM,EAAE,CAAA;YAElB,mBAAmB,EAAE,CAAA;YACrB,OAAO,EAAE,CAAA;QACX,CAAC,CAAC,CAAA;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,mBAAmB,EAAE,OAAO,CAAC,CAAC,CAAA;IAEzD,MAAM,4BAA4B,GAAG,WAAW,CAAC,GAAG,EAAE;QACpD,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;YACjB,gCAAgC,EAAE,CAAA;YAClC,OAAO,EAAE,CAAA;QACX,CAAC,CAAC,CAAA;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;IAErB,MAAM,sBAAsB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC9C,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;YACjB,MAAM,SAAS,GAAG,mCAAmC,CAAC,aAAa,CAAC,CAAA;YAEpE,MAAM,aAAa,GAAG,kCAAkC,CAAC,aAAa,CAAC,CAAA;YAEvE,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,EAAE,CAAA;YAEzC,IAAI,aAAa,IAAI,SAAS,CAAC,MAAM,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;gBAC3D,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;YACnE,CAAC;YAED,MAAM,QAAQ,GAAG,SAAS,CAAC,aAAa,CAAC,CAAA;YAEzC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/B,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;YACvC,CAAC;YAED,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;gBAC3C,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;oBACjC,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;gBACxC,CAAC;gBAED,SAAS,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAA;YACxD,CAAC,CAAC,CAAA;YAEF,mBAAmB,EAAE,CAAA;YACrB,OAAO,EAAE,CAAA;QACX,CAAC,CAAC,CAAA;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,mBAAmB,EAAE,OAAO,CAAC,CAAC,CAAA;IAEzD,MAAM,yBAAyB,GAAG,WAAW,CAAC,GAAG,EAAE;QACjD,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;YACjB,MAAM,SAAS,GAAG,mCAAmC,CAAC,aAAa,CAAC,CAAA;YAEpE,MAAM,gBAAgB,GAAG,qCAAqC,CAAC,aAAa,CAAC,CAAA;YAE7E,MAAM,SAAS,GAAG,SAAS,CAAC,WAAW,EAAE,CAAA;YACzC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;YAEnF,IAAI,gBAAgB,IAAI,aAAa,IAAI,gBAAgB,GAAG,CAAC,EAAE,CAAC;gBAC9D,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;YACnE,CAAC;YAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC1C,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;gBAE7B,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC/B,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;gBACvC,CAAC;gBAED,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAA;gBACzC,IAAI,gBAAgB,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;oBAC1C,oHAAoH;oBACpH,SAAQ;gBACV,CAAC;gBAED,MAAM,SAAS,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAA;gBAE9C,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;oBACjC,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAA;gBACxC,CAAC;gBAED,SAAS,CAAC,iBAAiB,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAA;YAC3D,CAAC;YAED,mBAAmB,EAAE,CAAA;YACrB,OAAO,EAAE,CAAA;QACX,CAAC,CAAC,CAAA;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,mBAAmB,EAAE,OAAO,CAAC,CAAC,CAAA;IAEzD,MAAM,yBAAyB,GAAG,WAAW,CAC3C,CAAC,KAAa,EAAE,EAAE;QAChB,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE;YACjB,MAAM,SAAS,GAAG,aAAa,EAAE,CAAA;YACjC,IAAI,iBAAiB,CAAC,SAAS,CAAC,IAAI,2BAA2B,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC3E,MAAM,CAAC,IAAI,CAAC,GAAG,0BAA0B,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;gBAC3D,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC3B,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAA;gBAChC,CAAC;gBAED,IAAI,2BAA2B,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC3C,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAA;oBAElC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;wBACrB,IAAI,0BAA0B,CAAC,IAAI,CAAC,EAAE,CAAC;4BACrC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAA;wBAChC,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,EACD,CAAC,MAAM,CAAC,CACT,CAAA;IAED,IAAI,eAAe,GAA6B,IAAI,CAAA;IACpD,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,aAAa,EAAE,CAAC;YAClB,eAAe,GAAG,CAChB,gCACE,SAAS,EAAC,MAAM,kBACH,mBAAmB,EAChC,OAAO,EAAE,GAAG,EAAE,CAAC,0BAA0B,EAAE,EAC3C,IAAI,EAAC,QAAQ,kBAGN,CACV,CAAA;QACH,CAAC;aAAM,IAAI,cAAc,EAAE,CAAC;YAC1B,eAAe,GAAG,CAChB,gCACE,SAAS,EAAC,MAAM,kBACH,qBAAqB,EAClC,OAAO,EAAE,GAAG,EAAE,CAAC,4BAA4B,EAAE,EAC7C,IAAI,EAAC,QAAQ,oBAGN,CACV,CAAA;QACH,CAAC;IACH,CAAC;IAED,OAAO,YAAY,CACjB,6BACE,GAAG,EAAE,WAAW,EAChB,SAAS,EAAC,UAAU,EACpB,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YACb,CAAC,CAAC,eAAe,EAAE,CAAA;QACrB,CAAC;QAEA,eAAe;QAChB,gCACE,SAAS,EAAC,MAAM,kBACH,wBAAwB,EACrC,OAAO,EAAE,GAAG,EAAE,CACZ,oBAAoB,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,CAClD,oBAAC,WAAW,IAAC,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,yBAAyB,GAAI,CAC7E,CAAC,EAEJ,IAAI,EAAC,QAAQ;YAEb,8BAAM,SAAS,EAAC,MAAM,uBAAwB,CACvC;QACT,+BAAM;QACN,gCACE,SAAS,EAAC,MAAM,kBACH,wBAAwB,EACrC,OAAO,EAAE,GAAG,EAAE,CAAC,yBAAyB,CAAC,KAAK,CAAC,EAC/C,IAAI,EAAC,QAAQ;YAEb,8BAAM,SAAS,EAAC,MAAM;;gBAAS,eAAe,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,IAAI,OAAO;yBAAc,CACzG;QACT,gCACE,SAAS,EAAC,MAAM,kBACH,wBAAwB,EACrC,OAAO,EAAE,GAAG,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAC9C,IAAI,EAAC,QAAQ;YAEb,8BAAM,SAAS,EAAC,MAAM;;gBAAS,eAAe,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,IAAI,OAAO;yBAAc,CACzG;QACT,+BAAM;QACN,gCACE,SAAS,EAAC,MAAM,kBACH,4BAA4B,EACzC,OAAO,EAAE,GAAG,EAAE,CAAC,4BAA4B,CAAC,KAAK,CAAC,EAClD,IAAI,EAAC,QAAQ;YAEb,8BAAM,SAAS,EAAC,MAAM;;gBACZ,eAAe,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,OAAO,UAAU;wBAClF,CACA;QACT,gCACE,SAAS,EAAC,MAAM,kBACH,2BAA2B,EACxC,OAAO,EAAE,GAAG,EAAE,CAAC,4BAA4B,CAAC,IAAI,CAAC,EACjD,IAAI,EAAC,QAAQ;YAEb,8BAAM,SAAS,EAAC,MAAM;;gBACZ,eAAe,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,OAAO,UAAU;yBAClF,CACA;QACT,+BAAM;QACN,gCACE,SAAS,EAAC,MAAM,kBACH,sBAAsB,EACnC,OAAO,EAAE,GAAG,EAAE,CAAC,4BAA4B,EAAE,EAC7C,IAAI,EAAC,QAAQ;YAEb,8BAAM,SAAS,EAAC,MAAM,oBAAqB,CACpC;QACT,gCACE,SAAS,EAAC,MAAM,kBACH,mBAAmB,EAChC,OAAO,EAAE,GAAG,EAAE,CAAC,yBAAyB,EAAE,EAC1C,IAAI,EAAC,QAAQ;YAEb,8BAAM,SAAS,EAAC,MAAM,iBAAkB,CACjC;QACT,gCAAQ,SAAS,EAAC,MAAM,kBAAc,cAAc,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,sBAAsB,EAAE,EAAE,IAAI,EAAC,QAAQ;YACzG,8BAAM,SAAS,EAAC,MAAM,mBAAoB,CACnC;QACT,+BAAM;QACN,gCAAQ,SAAS,EAAC,MAAM,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,sBAAsB,EAAE,EAAE,IAAI,EAAC,QAAQ;YAC7E,8BAAM,SAAS,EAAC,MAAM;gBACnB,CAAC,aAAa,CAAC,aAAa,GAAG,qBAAqB,CAAC,GAAG,CAAC,KAAK,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;gBAAE,GAAG;6BAE3G,CACA;QACT,gCACE,SAAS,EAAC,MAAM,kBACH,qBAAqB,EAClC,OAAO,EAAE,GAAG,EAAE,CAAC,yBAAyB,EAAE,EAC1C,IAAI,EAAC,QAAQ;YAEb,8BAAM,SAAS,EAAC,MAAM;gBACnB,CAAC,aAAa,CAAC,aAAa,GAAG,qBAAqB,CAAC,MAAM,CAAC,KAAK,qBAAqB,CAAC,MAAM;oBAC5F,CAAC,CAAC,QAAQ;oBACV,CAAC,CAAC,KAAK;gBAAE,GAAG;gCAET,CACA,CACL,EACN,QAAQ,CAAC,IAAI,CACd,CAAA;AACH,CAAC;AAED,SAAS,4BAA4B,CAAC,EACpC,UAAU,EACV,SAAS,GAIV;IACC,MAAM,CAAC,MAAM,CAAC,GAAG,yBAAyB,EAAE,CAAA;IAE5C,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;IAClC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;IAChC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAEnD,MAAM,CAAC,aAAa,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAuB,IAAI,CAAC,CAAA;IAElF,MAAM,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,EAAE,CAAA;IAE3D,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE;QAChC,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAA;QAClC,MAAM,SAAS,GAAG,aAAa,EAAE,CAAA;QACjC,MAAM,eAAe,GAAG,MAAM,CAAC,YAAY,EAAE,CAAA;QAC7C,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAA;QAE5C,IAAI,SAAS,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;YACtC,oBAAoB,CAAC,IAAI,CAAC,CAAA;YAC1B,OAAM;QACR,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,CAAC,cAAc,EAAE,CAAA;QAE3C,IACE,iBAAiB,CAAC,SAAS,CAAC;YAC5B,WAAW,KAAK,IAAI;YACpB,eAAe,KAAK,IAAI;YACxB,WAAW,CAAC,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC,EAChD,CAAC;YACD,MAAM,0BAA0B,GAAG,gCAAgC,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;YAE/F,IAAI,0BAA0B,IAAI,IAAI,EAAE,CAAC;gBACvC,oBAAoB,CAAC,IAAI,CAAC,CAAA;gBAC1B,OAAM;YACR,CAAC;YAED,MAAM,sBAAsB,GAAG,MAAM,CAAC,eAAe,CAAC,0BAA0B,CAAC,MAAM,EAAE,CAAC,CAAA;YAE1F,IAAI,sBAAsB,IAAI,IAAI,EAAE,CAAC;gBACnC,oBAAoB,CAAC,IAAI,CAAC,CAAA;gBAC1B,OAAM;YACR,CAAC;YAED,oBAAoB,CAAC,0BAA0B,CAAC,CAAA;QAClD,CAAC;aAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAC1B,oBAAoB,CAAC,IAAI,CAAC,CAAA;QAC5B,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAEZ,SAAS,CAAC,GAAG,EAAE,CACb,MAAM,CAAC,sBAAsB,CAAC,GAAG,EAAE;QACjC,MAAM,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;YAChC,QAAQ,EAAE,CAAA;QACZ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CACH,CAAA;IAED,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,aAAa,GAAG,aAAa,CAAC,OAAmC,CAAA;QAEvE,IAAI,aAAa,IAAI,IAAI,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC;YACnD,MAAM,gBAAgB,GAAG,MAAM,CAAC,eAAe,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAA;YAEvE,IAAI,gBAAgB,IAAI,IAAI,EAAE,CAAC;gBAC7B,MAAM,aAAa,GAAG,gBAAgB,CAAC,qBAAqB,EAAE,CAAA;gBAC9D,MAAM,QAAQ,GAAG,aAAa,CAAC,qBAAqB,EAAE,CAAA;gBACtD,MAAM,UAAU,GAAG,UAAU,CAAC,qBAAqB,EAAE,CAAA;gBAErD,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,GAAG,CAAC,CAAA;gBAClD,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,GAAG,EAAE,GAAG,UAAU,CAAC,IAAI,CAAA;gBAExE,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAA;gBACjC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,aAAa,IAAI,OAAO,GAAG,KAAK,CAAA;YAClE,CAAC;iBAAM,CAAC;gBACN,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAA;gBACjC,aAAa,CAAC,KAAK,CAAC,SAAS,GAAG,+BAA+B,CAAA;YACjE,CAAC;QACH,CAAC;IACH,CAAC,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAA;IAEtD,MAAM,gBAAgB,GAAG,MAAM,CAAC,aAAa,CAAC,CAAA;IAE9C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,gBAAgB,CAAC,OAAO,KAAK,aAAa,EAAE,CAAC;YAC/C,aAAa,CAAC,KAAK,CAAC,CAAA;QACtB,CAAC;QAED,gBAAgB,CAAC,OAAO,GAAG,aAAa,CAAA;IAC1C,CAAC,EAAE,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC,CAAA;IAErC,OAAO,CACL,6BAAK,GAAG,EAAE,aAAa,EAAE,SAAS,EAAC,oCAAoC,IACpE,aAAa,IAAI,IAAI,IAAI,CACxB;QACE,gCACE,GAAG,EAAE,WAAW,EAChB,SAAS,EAAC,uCAAuC,EACjD,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;gBACb,CAAC,CAAC,eAAe,EAAE,CAAA;gBACnB,aAAa,CAAC,CAAC,UAAU,CAAC,CAAA;YAC5B,CAAC,EACD,IAAI,EAAC,QAAQ;YAEb,2BAAG,SAAS,EAAC,cAAc,GAAG,CACvB;QACR,gBAAgB;QAChB,UAAU,IAAI,CACb,oBAAC,eAAe,IACd,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,WAAW,EACvB,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EACnC,aAAa,EAAE,aAAa,EAC5B,oBAAoB,EAAE,oBAAoB,EAC1C,aAAa,EAAE,aAAa,GAC5B,CACH,CACA,CACJ,CACG,CACP,CAAA;AACH,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,qBAAqB,CAAC,EAC5C,UAAU,GAAG,QAAQ,CAAC,IAAI,EAC1B,SAAS,GAAG,KAAK,GAIlB;IACC,MAAM,UAAU,GAAG,kBAAkB,EAAE,CAAA;IACvC,OAAO,YAAY,CACjB,UAAU,CAAC,CAAC,CAAC,oBAAC,4BAA4B,IAAC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,GAAI,CAAC,CAAC,CAAC,IAAI,EAClG,UAAU,CACX,CAAA;AACH,CAAC"}