@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.
Files changed (45) hide show
  1. package/README.md +68 -1
  2. package/dist/cake/editor/cake-editor.d.ts +230 -0
  3. package/dist/cake/editor/cake-editor.d.ts.map +1 -0
  4. package/dist/cake/editor/cake-editor.js +3598 -0
  5. package/dist/cake/editor/selection/selection-geometry-dom.d.ts +24 -0
  6. package/dist/cake/editor/selection/selection-geometry-dom.d.ts.map +1 -0
  7. package/dist/cake/editor/selection/selection-geometry-dom.js +302 -0
  8. package/dist/cake/editor/selection/selection-geometry.d.ts +22 -0
  9. package/dist/cake/editor/selection/selection-geometry.d.ts.map +1 -0
  10. package/dist/cake/editor/selection/selection-geometry.js +158 -0
  11. package/dist/cake/editor/selection/selection-layout-dom.d.ts +50 -0
  12. package/dist/cake/editor/selection/selection-layout-dom.d.ts.map +1 -0
  13. package/dist/cake/editor/selection/selection-layout-dom.js +781 -0
  14. package/dist/cake/editor/selection/selection-layout.d.ts +55 -0
  15. package/dist/cake/editor/selection/selection-layout.d.ts.map +1 -0
  16. package/dist/cake/editor/selection/selection-layout.js +128 -0
  17. package/dist/cake/editor/selection/selection-navigation.d.ts +22 -0
  18. package/dist/cake/editor/selection/selection-navigation.d.ts.map +1 -0
  19. package/dist/cake/editor/selection/selection-navigation.js +229 -0
  20. package/dist/cake/editor/selection/visible-text.d.ts +5 -0
  21. package/dist/cake/editor/selection/visible-text.d.ts.map +1 -0
  22. package/dist/cake/editor/selection/visible-text.js +66 -0
  23. package/dist/cake/extensions/bundles.js +2 -2
  24. package/dist/cake/extensions/index.d.ts +2 -2
  25. package/dist/cake/extensions/index.d.ts.map +1 -1
  26. package/dist/cake/extensions/index.js +3 -3
  27. package/dist/cake/extensions/link/link.js +2 -2
  28. package/dist/cake/extensions/list/list.d.ts +1 -1
  29. package/dist/cake/extensions/list/list.d.ts.map +1 -1
  30. package/dist/cake/extensions/list/list.js +2 -2
  31. package/dist/cake/index.d.ts +0 -2
  32. package/dist/cake/index.d.ts.map +1 -1
  33. package/dist/cake/index.js +1 -1
  34. package/dist/cake/react/CakeEditor.d.ts +1 -2
  35. package/dist/cake/react/CakeEditor.d.ts.map +1 -1
  36. package/dist/cake/react/CakeEditor.js +4 -12
  37. package/dist/cake/react/index.d.ts +58 -0
  38. package/dist/cake/react/index.d.ts.map +1 -0
  39. package/dist/cake/react/index.js +225 -0
  40. package/dist/cake/test/harness.d.ts +2 -2
  41. package/dist/cake/test/harness.js +3 -3
  42. package/dist/index.d.ts +1 -3
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +1 -2
  45. 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, defaultEditorSettings } from "@blankdotpage/cake";
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 (`![alt](url)`)
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":"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"}