@blankdotpage/cake 0.1.10 → 0.1.12
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/README.md +68 -1
- package/dist/cake/editor/cake-editor.d.ts +230 -0
- package/dist/cake/editor/cake-editor.d.ts.map +1 -0
- package/dist/cake/editor/cake-editor.js +3598 -0
- package/dist/cake/editor/selection/selection-geometry-dom.d.ts +24 -0
- package/dist/cake/editor/selection/selection-geometry-dom.d.ts.map +1 -0
- package/dist/cake/editor/selection/selection-geometry-dom.js +302 -0
- package/dist/cake/editor/selection/selection-geometry.d.ts +22 -0
- package/dist/cake/editor/selection/selection-geometry.d.ts.map +1 -0
- package/dist/cake/editor/selection/selection-geometry.js +158 -0
- package/dist/cake/editor/selection/selection-layout-dom.d.ts +50 -0
- package/dist/cake/editor/selection/selection-layout-dom.d.ts.map +1 -0
- package/dist/cake/editor/selection/selection-layout-dom.js +781 -0
- package/dist/cake/editor/selection/selection-layout.d.ts +55 -0
- package/dist/cake/editor/selection/selection-layout.d.ts.map +1 -0
- package/dist/cake/editor/selection/selection-layout.js +128 -0
- package/dist/cake/editor/selection/selection-navigation.d.ts +22 -0
- package/dist/cake/editor/selection/selection-navigation.d.ts.map +1 -0
- package/dist/cake/editor/selection/selection-navigation.js +229 -0
- package/dist/cake/editor/selection/visible-text.d.ts +5 -0
- package/dist/cake/editor/selection/visible-text.d.ts.map +1 -0
- package/dist/cake/editor/selection/visible-text.js +66 -0
- package/dist/cake/extensions/bundles.js +2 -2
- package/dist/cake/extensions/index.d.ts +2 -2
- package/dist/cake/extensions/index.d.ts.map +1 -1
- package/dist/cake/extensions/index.js +3 -3
- package/dist/cake/extensions/link/link.js +2 -2
- package/dist/cake/extensions/list/list.d.ts +1 -1
- package/dist/cake/extensions/list/list.d.ts.map +1 -1
- package/dist/cake/extensions/list/list.js +2 -2
- package/dist/cake/index.d.ts +0 -2
- package/dist/cake/index.d.ts.map +1 -1
- package/dist/cake/index.js +1 -1
- package/dist/cake/react/CakeEditor.d.ts +1 -2
- package/dist/cake/react/CakeEditor.d.ts.map +1 -1
- package/dist/cake/react/CakeEditor.js +4 -12
- package/dist/cake/react/index.d.ts +58 -0
- package/dist/cake/react/index.d.ts.map +1 -0
- package/dist/cake/react/index.js +225 -0
- package/dist/cake/test/harness.d.ts +2 -2
- package/dist/cake/test/harness.js +3 -3
- package/dist/index.d.ts +1 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -2
- package/package.json +5 -1
package/README.md
CHANGED
|
@@ -49,6 +49,73 @@ npm run demo
|
|
|
49
49
|
|
|
50
50
|
## Library usage
|
|
51
51
|
|
|
52
|
+
### With React
|
|
53
|
+
|
|
52
54
|
```tsx
|
|
53
|
-
import { CakeEditor
|
|
55
|
+
import { CakeEditor } from "@blankdotpage/cake/react";
|
|
56
|
+
import { boldExtension } from "@blankdotpage/cake/extensions/bold";
|
|
57
|
+
import { italicExtension } from "@blankdotpage/cake/extensions/italic";
|
|
58
|
+
import { linkExtension } from "@blankdotpage/cake/extensions/link";
|
|
59
|
+
import { headingExtension } from "@blankdotpage/cake/extensions/heading";
|
|
60
|
+
import { plainTextListExtension } from "@blankdotpage/cake/extensions/list";
|
|
61
|
+
|
|
62
|
+
const extensions = [
|
|
63
|
+
headingExtension,
|
|
64
|
+
plainTextListExtension,
|
|
65
|
+
boldExtension,
|
|
66
|
+
italicExtension,
|
|
67
|
+
linkExtension,
|
|
68
|
+
];
|
|
69
|
+
|
|
70
|
+
function MyEditor() {
|
|
71
|
+
const [value, setValue] = useState("");
|
|
72
|
+
|
|
73
|
+
return (
|
|
74
|
+
<CakeEditor
|
|
75
|
+
value={value}
|
|
76
|
+
onChange={setValue}
|
|
77
|
+
extensions={extensions}
|
|
78
|
+
placeholder="Start typing..."
|
|
79
|
+
/>
|
|
80
|
+
);
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Without React
|
|
85
|
+
|
|
86
|
+
```ts
|
|
87
|
+
import { CakeEditor } from "@blankdotpage/cake";
|
|
88
|
+
import { boldExtension } from "@blankdotpage/cake/extensions/bold";
|
|
89
|
+
import { italicExtension } from "@blankdotpage/cake/extensions/italic";
|
|
90
|
+
import { linkExtension } from "@blankdotpage/cake/extensions/link";
|
|
91
|
+
|
|
92
|
+
const container = document.getElementById("editor");
|
|
93
|
+
|
|
94
|
+
const engine = new CakeEditor({
|
|
95
|
+
container,
|
|
96
|
+
value: "Hello **world**",
|
|
97
|
+
extensions: [boldExtension, italicExtension, linkExtension],
|
|
98
|
+
onChange: (value, selection) => {
|
|
99
|
+
console.log("Content changed:", value);
|
|
100
|
+
},
|
|
101
|
+
onSelectionChange: (selection) => {
|
|
102
|
+
console.log("Selection:", selection);
|
|
103
|
+
},
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
// Later: clean up
|
|
107
|
+
engine.destroy();
|
|
54
108
|
```
|
|
109
|
+
|
|
110
|
+
### Available extensions
|
|
111
|
+
|
|
112
|
+
- `blockquoteExtension` - Block quotes (`>`)
|
|
113
|
+
- `boldExtension` - Bold text (`**text**`)
|
|
114
|
+
- `combinedEmphasisExtension` - Combined bold/italic (`***text***`)
|
|
115
|
+
- `headingExtension` - Headings (`#`, `##`, etc.)
|
|
116
|
+
- `imageExtension` - Images (``)
|
|
117
|
+
- `italicExtension` - Italic text (`*text*`)
|
|
118
|
+
- `linkExtension` - Links (`[text](url)`)
|
|
119
|
+
- `plainTextListExtension` - Ordered and unordered lists
|
|
120
|
+
- `scrollbarExtension` - Custom scrollbar styling
|
|
121
|
+
- `strikethroughExtension` - Strikethrough (`~~text~~`)
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
import type { Selection } from "../core/types";
|
|
2
|
+
import { type CakeExtension, type EditCommand } from "../core/runtime";
|
|
3
|
+
import type { SelectionRect } from "./selection/selection-geometry";
|
|
4
|
+
type EngineOptions = {
|
|
5
|
+
container: HTMLElement;
|
|
6
|
+
contentRoot?: HTMLElement;
|
|
7
|
+
value: string;
|
|
8
|
+
selection?: Selection;
|
|
9
|
+
extensions?: CakeExtension[];
|
|
10
|
+
onChange?: (value: string, selection: Selection) => void;
|
|
11
|
+
onSelectionChange?: (selection: Selection) => void;
|
|
12
|
+
readOnly?: boolean;
|
|
13
|
+
spellCheckEnabled?: boolean;
|
|
14
|
+
};
|
|
15
|
+
export type RenderPerf = {
|
|
16
|
+
totalMs: number;
|
|
17
|
+
renderAndMapMs: number;
|
|
18
|
+
applySelectionMs: number;
|
|
19
|
+
didUpdateDom: boolean;
|
|
20
|
+
blockCount: number;
|
|
21
|
+
runCount: number;
|
|
22
|
+
};
|
|
23
|
+
export declare class CakeEditor {
|
|
24
|
+
private container;
|
|
25
|
+
private runtime;
|
|
26
|
+
private extensions;
|
|
27
|
+
private _state;
|
|
28
|
+
private get state();
|
|
29
|
+
private set state(value);
|
|
30
|
+
private contentRoot;
|
|
31
|
+
private domMap;
|
|
32
|
+
private isApplyingSelection;
|
|
33
|
+
private isComposing;
|
|
34
|
+
private beforeInputHandled;
|
|
35
|
+
private beforeInputResetId;
|
|
36
|
+
private keydownHandledBeforeInput;
|
|
37
|
+
private suppressSelectionChange;
|
|
38
|
+
private suppressSelectionChangeResetId;
|
|
39
|
+
private ignoreTouchNativeSelectionUntil;
|
|
40
|
+
private blockTrustedTextDrag;
|
|
41
|
+
private selectedAtomicLineIndex;
|
|
42
|
+
private lastAppliedSelection;
|
|
43
|
+
private compositionCommit;
|
|
44
|
+
private compositionCommitTimeoutId;
|
|
45
|
+
private overlayRoot;
|
|
46
|
+
private caretElement;
|
|
47
|
+
private caretBlinkTimeoutId;
|
|
48
|
+
private overlayUpdateId;
|
|
49
|
+
private scrollCaretIntoViewId;
|
|
50
|
+
private selectionRectElements;
|
|
51
|
+
private lastSelectionRects;
|
|
52
|
+
private onChange?;
|
|
53
|
+
private onSelectionChange?;
|
|
54
|
+
private readOnly;
|
|
55
|
+
private spellCheckEnabled;
|
|
56
|
+
private extensionsRoot;
|
|
57
|
+
private placeholderRoot;
|
|
58
|
+
private resizeObserver;
|
|
59
|
+
private lastFocusRect;
|
|
60
|
+
private verticalNavGoalX;
|
|
61
|
+
private lastRenderPerf;
|
|
62
|
+
private history;
|
|
63
|
+
private pendingClickHit;
|
|
64
|
+
getLastRenderPerf(): RenderPerf | null;
|
|
65
|
+
private isEventTargetInContentRoot;
|
|
66
|
+
private handleBeforeInputBound;
|
|
67
|
+
private handleInputBound;
|
|
68
|
+
private handleCompositionStartBound;
|
|
69
|
+
private handleCompositionEndBound;
|
|
70
|
+
private handleSelectionChangeBound;
|
|
71
|
+
private handleFocusInBound;
|
|
72
|
+
private handleFocusOutBound;
|
|
73
|
+
private handleScrollBound;
|
|
74
|
+
private handleResizeBound;
|
|
75
|
+
private handleClickBound;
|
|
76
|
+
private handleKeyDownBound;
|
|
77
|
+
private handlePasteBound;
|
|
78
|
+
private handleCopyBound;
|
|
79
|
+
private handleCutBound;
|
|
80
|
+
private handlePointerDownBound;
|
|
81
|
+
private handlePointerMoveBound;
|
|
82
|
+
private handlePointerUpBound;
|
|
83
|
+
private handleDragStartBound;
|
|
84
|
+
private handleDragOverBound;
|
|
85
|
+
private handleDropBound;
|
|
86
|
+
private handleDragEndBound;
|
|
87
|
+
private dragState;
|
|
88
|
+
private dropIndicator;
|
|
89
|
+
private textDragState;
|
|
90
|
+
private selectionDragState;
|
|
91
|
+
private pointerDownPosition;
|
|
92
|
+
private hasMovedSincePointerDown;
|
|
93
|
+
private lastTouchTime;
|
|
94
|
+
private isTouchDevice;
|
|
95
|
+
constructor(options: EngineOptions);
|
|
96
|
+
destroy(): void;
|
|
97
|
+
setReadOnly(readOnly: boolean): void;
|
|
98
|
+
setSpellCheckEnabled(enabled: boolean): void;
|
|
99
|
+
getValue(): string;
|
|
100
|
+
getSelection(): Selection;
|
|
101
|
+
getCursorLength(): number;
|
|
102
|
+
getFocusRect(): SelectionRect | null;
|
|
103
|
+
getContainer(): HTMLElement;
|
|
104
|
+
getContentRoot(): HTMLElement | null;
|
|
105
|
+
getLines(): import("./selection/selection-layout").LineInfo[];
|
|
106
|
+
getOverlayRoot(): HTMLDivElement;
|
|
107
|
+
syncPlaceholder(): void;
|
|
108
|
+
insertText(text: string): void;
|
|
109
|
+
replaceText(oldText: string, newText: string): void;
|
|
110
|
+
setSelection(selection: Selection): void;
|
|
111
|
+
setValue({ value, selection }: {
|
|
112
|
+
value: string;
|
|
113
|
+
selection?: Selection;
|
|
114
|
+
}): void;
|
|
115
|
+
focus(selection?: Selection): void;
|
|
116
|
+
blur(): void;
|
|
117
|
+
hasFocus(): boolean;
|
|
118
|
+
selectAll(): void;
|
|
119
|
+
undo(): void;
|
|
120
|
+
redo(): void;
|
|
121
|
+
canUndo(): boolean;
|
|
122
|
+
canRedo(): boolean;
|
|
123
|
+
executeCommand(command: EditCommand, options?: {
|
|
124
|
+
restoreFocus?: boolean;
|
|
125
|
+
}): boolean;
|
|
126
|
+
private attachListeners;
|
|
127
|
+
private attachDragListeners;
|
|
128
|
+
private detachDragListeners;
|
|
129
|
+
private detachListeners;
|
|
130
|
+
private handleFocusIn;
|
|
131
|
+
private handleFocusOut;
|
|
132
|
+
private render;
|
|
133
|
+
private isEmptyParagraphDoc;
|
|
134
|
+
private updatePlaceholder;
|
|
135
|
+
private syncPlaceholderPosition;
|
|
136
|
+
private updateContentRootAttributes;
|
|
137
|
+
private applySelection;
|
|
138
|
+
private handleSelectionChange;
|
|
139
|
+
private syncSelectionFromDom;
|
|
140
|
+
private adjustSelectionForAtomicBlocks;
|
|
141
|
+
private getAtomicBlockSelectionFromClick;
|
|
142
|
+
private handleClick;
|
|
143
|
+
private handleKeyDown;
|
|
144
|
+
private resolveExtensionKeybinding;
|
|
145
|
+
private handleCopy;
|
|
146
|
+
private handleCut;
|
|
147
|
+
private handlePaste;
|
|
148
|
+
private handleBeforeInput;
|
|
149
|
+
private applyInputIntent;
|
|
150
|
+
private handleInput;
|
|
151
|
+
private handleCompositionStart;
|
|
152
|
+
private handleCompositionEnd;
|
|
153
|
+
private resolveBeforeInputIntent;
|
|
154
|
+
private selectionFromTargetRangesWithStatus;
|
|
155
|
+
private cursorFromDom;
|
|
156
|
+
private applyEdit;
|
|
157
|
+
private handleDeleteAtomicBlockSelection;
|
|
158
|
+
private handleBackspaceAfterAtomicBlock;
|
|
159
|
+
private recordHistory;
|
|
160
|
+
private applySelectionUpdate;
|
|
161
|
+
private getLayoutForNavigation;
|
|
162
|
+
private moveSelectionByChar;
|
|
163
|
+
private moveOffsetByChar;
|
|
164
|
+
private moveSelectionVertically;
|
|
165
|
+
private moveSelectionToVisualRowStart;
|
|
166
|
+
private moveSelectionToVisualRowEnd;
|
|
167
|
+
private extendSelectionToVisualRowStart;
|
|
168
|
+
private extendSelectionToVisualRowEnd;
|
|
169
|
+
private extendSelectionToDocumentStart;
|
|
170
|
+
private extendSelectionToDocumentEnd;
|
|
171
|
+
private extendFullLineSelectionByLine;
|
|
172
|
+
private moveSelectionByWord;
|
|
173
|
+
private extendSelectionByWord;
|
|
174
|
+
private moveOffsetByWord;
|
|
175
|
+
private deleteToVisualRowStart;
|
|
176
|
+
private handleIndent;
|
|
177
|
+
private handleOutdent;
|
|
178
|
+
private readDomText;
|
|
179
|
+
/**
|
|
180
|
+
* Reconcile DOM text changes with the model while preserving formatting markers.
|
|
181
|
+
* Used when external agents (IME, Grammarly) modify the DOM directly.
|
|
182
|
+
*
|
|
183
|
+
* Strategy:
|
|
184
|
+
* 1. Get visible text from DOM (what was modified)
|
|
185
|
+
* 2. Get visible text from model (what we had)
|
|
186
|
+
* 3. Find the minimal diff (common prefix/suffix)
|
|
187
|
+
* 4. Map the changed region from cursor space to source space
|
|
188
|
+
* 5. Replace the corresponding source region, preserving markers
|
|
189
|
+
*/
|
|
190
|
+
private reconcileDomChanges;
|
|
191
|
+
private resolveCollapsedReconcileAffinity;
|
|
192
|
+
private markBeforeInputHandled;
|
|
193
|
+
private suppressSelectionChangeForTick;
|
|
194
|
+
private markCompositionCommit;
|
|
195
|
+
private clearCompositionCommit;
|
|
196
|
+
private handleScroll;
|
|
197
|
+
private handleResize;
|
|
198
|
+
private openLinkPopoverForSelection;
|
|
199
|
+
private scheduleOverlayUpdate;
|
|
200
|
+
private flushOverlayUpdate;
|
|
201
|
+
private ensureOverlayRoot;
|
|
202
|
+
private selectionRectsEqual;
|
|
203
|
+
private ensureExtensionsRoot;
|
|
204
|
+
private updateExtensionsOverlayPosition;
|
|
205
|
+
private updateSelectionOverlay;
|
|
206
|
+
private syncSelectionRects;
|
|
207
|
+
private updateCaret;
|
|
208
|
+
private markCaretActive;
|
|
209
|
+
private stopCaretBlink;
|
|
210
|
+
private clearCaretBlinkTimer;
|
|
211
|
+
private scheduleScrollCaretIntoView;
|
|
212
|
+
private scrollCaretIntoView;
|
|
213
|
+
private hitTestFromClientPoint;
|
|
214
|
+
private handlePointerDown;
|
|
215
|
+
private handlePointerMove;
|
|
216
|
+
private handlePointerUp;
|
|
217
|
+
private showDropIndicator;
|
|
218
|
+
private hideDropIndicator;
|
|
219
|
+
private findClosestLineByY;
|
|
220
|
+
private calculateDropLineIndex;
|
|
221
|
+
private detectFullLineSelection;
|
|
222
|
+
private moveLines;
|
|
223
|
+
private handleDragStart;
|
|
224
|
+
private handleDragOver;
|
|
225
|
+
private handleDrop;
|
|
226
|
+
private handleDragEnd;
|
|
227
|
+
private dataTransferHasImageFile;
|
|
228
|
+
}
|
|
229
|
+
export {};
|
|
230
|
+
//# sourceMappingURL=cake-editor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cake-editor.d.ts","sourceRoot":"","sources":["../../../src/cake/editor/cake-editor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAY,SAAS,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAIL,KAAK,aAAa,EAClB,KAAK,WAAW,EAGjB,MAAM,iBAAiB,CAAC;AAmBzB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAcpE,KAAK,aAAa,GAAG;IACnB,SAAS,EAAE,WAAW,CAAC;IACvB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,KAAK,IAAI,CAAC;IACzD,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,CAAC;IACnD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AA6BF,qBAAa,UAAU;IACrB,OAAO,CAAC,SAAS,CAAc;IAC/B,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,MAAM,CAAgB;IAE9B,OAAO,KAAK,KAAK,GAEhB;IAED,OAAO,KAAK,KAAK,QAEhB;IACD,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,kBAAkB,CAAuB;IACjD,OAAO,CAAC,yBAAyB,CAAS;IAC1C,OAAO,CAAC,uBAAuB,CAAS;IACxC,OAAO,CAAC,8BAA8B,CAAuB;IAC7D,OAAO,CAAC,+BAA+B,CAAuB;IAC9D,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,uBAAuB,CAAuB;IACtD,OAAO,CAAC,oBAAoB,CAA0B;IACtD,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,0BAA0B,CAAuB;IACzD,OAAO,CAAC,WAAW,CAA+B;IAClD,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,qBAAqB,CAAuB;IACpD,OAAO,CAAC,qBAAqB,CAAwB;IACrD,OAAO,CAAC,kBAAkB,CAAgC;IAC1D,OAAO,CAAC,QAAQ,CAAC,CAA4B;IAC7C,OAAO,CAAC,iBAAiB,CAAC,CAAqC;IAC/D,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,iBAAiB,CAAU;IACnC,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,eAAe,CAA+B;IACtD,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,cAAc,CAA2B;IACjD,OAAO,CAAC,OAAO,CAKb;IAIF,OAAO,CAAC,eAAe,CAGP;IAEhB,iBAAiB,IAAI,UAAU,GAAG,IAAI;IAItC,OAAO,CAAC,0BAA0B;IAiBlC,OAAO,CAAC,sBAAsB,CAAqC;IACnE,OAAO,CAAC,gBAAgB,CAA+B;IACvD,OAAO,CAAC,2BAA2B,CAA0C;IAC7E,OAAO,CAAC,yBAAyB,CAAwC;IACzE,OAAO,CAAC,0BAA0B,CAAyC;IAC3E,OAAO,CAAC,kBAAkB,CAAiC;IAC3D,OAAO,CAAC,mBAAmB,CAAkC;IAC7D,OAAO,CAAC,iBAAiB,CAAgC;IACzD,OAAO,CAAC,iBAAiB,CAAgC;IACzD,OAAO,CAAC,gBAAgB,CAA+B;IACvD,OAAO,CAAC,kBAAkB,CAAiC;IAC3D,OAAO,CAAC,gBAAgB,CAA+B;IACvD,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,cAAc,CAA6B;IACnD,OAAO,CAAC,sBAAsB,CAAqC;IACnE,OAAO,CAAC,sBAAsB,CAAqC;IACnE,OAAO,CAAC,oBAAoB,CAAmC;IAC/D,OAAO,CAAC,oBAAoB,CAAmC;IAC/D,OAAO,CAAC,mBAAmB,CAAkC;IAC7D,OAAO,CAAC,eAAe,CAA8B;IACrD,OAAO,CAAC,kBAAkB,CAAiC;IAG3D,OAAO,CAAC,SAAS,CAMD;IAChB,OAAO,CAAC,aAAa,CAA+B;IAGpD,OAAO,CAAC,aAAa,CAIL;IAEhB,OAAO,CAAC,kBAAkB,CAGV;IAMhB,OAAO,CAAC,mBAAmB,CAAyC;IACpE,OAAO,CAAC,wBAAwB,CAAS;IAIzC,OAAO,CAAC,aAAa,CAAK;IAI1B,OAAO,CAAC,aAAa;gBAOT,OAAO,EAAE,aAAa;IAkBlC,OAAO;IAaP,WAAW,CAAC,QAAQ,EAAE,OAAO;IAK7B,oBAAoB,CAAC,OAAO,EAAE,OAAO;IAKrC,QAAQ;IAIR,YAAY;IAIZ,eAAe;IAIf,YAAY;IAIZ,YAAY;IAIZ,cAAc;IAId,QAAQ;IAIR,cAAc;IAOd,eAAe;IAIf,UAAU,CAAC,IAAI,EAAE,MAAM;IAUvB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAyB5C,YAAY,CAAC,SAAS,EAAE,SAAS;IAUjC,QAAQ,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,SAAS,CAAA;KAAE;IAiBvE,KAAK,CAAC,SAAS,CAAC,EAAE,SAAS;IAU3B,IAAI;IAIJ,QAAQ;IAWR,SAAS;IAKT,IAAI;IAgBJ,IAAI;IAeJ,OAAO,IAAI,OAAO;IAIlB,OAAO,IAAI,OAAO;IAIlB,cAAc,CACZ,OAAO,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAA;KAAE,GACnC,OAAO;IAgCV,OAAO,CAAC,eAAe;IAkCvB,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,eAAe;IAyCvB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,MAAM;IA2Gd,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,iBAAiB;IA0BzB,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,2BAA2B;IAQnC,OAAO,CAAC,cAAc;IAiBtB,OAAO,CAAC,qBAAqB;IAwF7B,OAAO,CAAC,oBAAoB;IAqB5B,OAAO,CAAC,8BAA8B;IA4CtC,OAAO,CAAC,gCAAgC;IA8CxC,OAAO,CAAC,WAAW;IA4KnB,OAAO,CAAC,aAAa;IAyQrB,OAAO,CAAC,0BAA0B;IAsClC,OAAO,CAAC,UAAU;IA8BlB,OAAO,CAAC,SAAS;IAcjB,OAAO,CAAC,WAAW;IA6CnB,OAAO,CAAC,iBAAiB;IA2BzB,OAAO,CAAC,gBAAgB;IAsCxB,OAAO,CAAC,WAAW;IA0CnB,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,oBAAoB;IAkB5B,OAAO,CAAC,wBAAwB;IAuGhC,OAAO,CAAC,mCAAmC;IA0C3C,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,SAAS;IAyCjB,OAAO,CAAC,gCAAgC;IAoDxC,OAAO,CAAC,+BAA+B;IAqEvC,OAAO,CAAC,aAAa;IAsBrB,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,sBAAsB;IAgB9B,OAAO,CAAC,mBAAmB;IA6E3B,OAAO,CAAC,gBAAgB;IAsCxB,OAAO,CAAC,uBAAuB;IAgG/B,OAAO,CAAC,6BAA6B;IA+BrC,OAAO,CAAC,2BAA2B;IA+BnC,OAAO,CAAC,+BAA+B;IA4BvC,OAAO,CAAC,6BAA6B;IAgCrC,OAAO,CAAC,8BAA8B;IAKtC,OAAO,CAAC,4BAA4B;IAKpC,OAAO,CAAC,6BAA6B;IAkDrC,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,sBAAsB;IAyD9B,OAAO,CAAC,YAAY;IAiGpB,OAAO,CAAC,aAAa;IA+FrB,OAAO,CAAC,WAAW;IAcnB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,mBAAmB;IAsG3B,OAAO,CAAC,iCAAiC;IA6BzC,OAAO,CAAC,sBAAsB;IAW9B,OAAO,CAAC,8BAA8B;IAWtC,OAAO,CAAC,qBAAqB;IAU7B,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,2BAA2B;IA2BnC,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,kBAAkB;IAW1B,OAAO,CAAC,iBAAiB;IA0BzB,OAAO,CAAC,mBAAmB;IA4B3B,OAAO,CAAC,oBAAoB;IAqB5B,OAAO,CAAC,+BAA+B;IAcvC,OAAO,CAAC,sBAAsB;IA8C9B,OAAO,CAAC,kBAAkB;IAqC1B,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,oBAAoB;IAO5B,OAAO,CAAC,2BAA2B;IAanC,OAAO,CAAC,mBAAmB;IA4C3B,OAAO,CAAC,sBAAsB;IAyB9B,OAAO,CAAC,iBAAiB;IAkQzB,OAAO,CAAC,iBAAiB;IAiDzB,OAAO,CAAC,eAAe;IAqFvB,OAAO,CAAC,iBAAiB;IAiDzB,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,kBAAkB;IA2B1B,OAAO,CAAC,sBAAsB;IA8B9B,OAAO,CAAC,uBAAuB;IAkD/B,OAAO,CAAC,SAAS;IA0EjB,OAAO,CAAC,eAAe;IAqDvB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,UAAU;IAgKlB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,wBAAwB;CAsBjC"}
|