@blankdotpage/cake 0.1.67 → 0.1.69
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/cake/core/mapping/cursor-source-map.d.ts +11 -0
- package/dist/cake/core/mapping/cursor-source-map.d.ts.map +1 -1
- package/dist/cake/core/mapping/cursor-source-map.js +159 -21
- package/dist/cake/core/runtime.d.ts +6 -0
- package/dist/cake/core/runtime.d.ts.map +1 -1
- package/dist/cake/core/runtime.js +344 -221
- package/dist/cake/dom/render.d.ts +32 -2
- package/dist/cake/dom/render.d.ts.map +1 -1
- package/dist/cake/dom/render.js +401 -118
- package/dist/cake/editor/cake-editor.d.ts +11 -2
- package/dist/cake/editor/cake-editor.d.ts.map +1 -1
- package/dist/cake/editor/cake-editor.js +178 -100
- package/dist/cake/editor/internal/editor-text-model.d.ts +49 -0
- package/dist/cake/editor/internal/editor-text-model.d.ts.map +1 -0
- package/dist/cake/editor/internal/editor-text-model.js +284 -0
- package/dist/cake/editor/selection/selection-geometry-dom.d.ts +5 -1
- package/dist/cake/editor/selection/selection-geometry-dom.d.ts.map +1 -1
- package/dist/cake/editor/selection/selection-geometry-dom.js +4 -5
- package/dist/cake/editor/selection/selection-layout-dom.d.ts.map +1 -1
- package/dist/cake/editor/selection/selection-layout-dom.js +2 -5
- package/dist/cake/editor/selection/selection-layout.d.ts +2 -15
- package/dist/cake/editor/selection/selection-layout.d.ts.map +1 -1
- package/dist/cake/editor/selection/selection-layout.js +1 -99
- package/dist/cake/editor/selection/selection-navigation.d.ts +4 -0
- package/dist/cake/editor/selection/selection-navigation.d.ts.map +1 -1
- package/dist/cake/editor/selection/selection-navigation.js +1 -2
- package/dist/cake/extensions/index.d.ts +2 -1
- package/dist/cake/extensions/index.d.ts.map +1 -1
- package/dist/cake/extensions/index.js +3 -1
- package/dist/cake/extensions/link/link.d.ts.map +1 -1
- package/dist/cake/extensions/link/link.js +1 -7
- package/dist/cake/extensions/shared/structural-reparse-policy.d.ts +7 -0
- package/dist/cake/extensions/shared/structural-reparse-policy.d.ts.map +1 -0
- package/dist/cake/extensions/shared/structural-reparse-policy.js +16 -0
- package/package.json +5 -2
- package/dist/cake/editor/selection/visible-text.d.ts +0 -5
- package/dist/cake/editor/selection/visible-text.d.ts.map +0 -1
- package/dist/cake/editor/selection/visible-text.js +0 -66
- package/dist/cake/engine/cake-engine.d.ts +0 -230
- package/dist/cake/engine/cake-engine.d.ts.map +0 -1
- package/dist/cake/engine/cake-engine.js +0 -3589
- package/dist/cake/engine/selection/selection-geometry-dom.d.ts +0 -24
- package/dist/cake/engine/selection/selection-geometry-dom.d.ts.map +0 -1
- package/dist/cake/engine/selection/selection-geometry-dom.js +0 -302
- package/dist/cake/engine/selection/selection-geometry.d.ts +0 -22
- package/dist/cake/engine/selection/selection-geometry.d.ts.map +0 -1
- package/dist/cake/engine/selection/selection-geometry.js +0 -158
- package/dist/cake/engine/selection/selection-layout-dom.d.ts +0 -50
- package/dist/cake/engine/selection/selection-layout-dom.d.ts.map +0 -1
- package/dist/cake/engine/selection/selection-layout-dom.js +0 -781
- package/dist/cake/engine/selection/selection-layout.d.ts +0 -55
- package/dist/cake/engine/selection/selection-layout.d.ts.map +0 -1
- package/dist/cake/engine/selection/selection-layout.js +0 -128
- package/dist/cake/engine/selection/selection-navigation.d.ts +0 -22
- package/dist/cake/engine/selection/selection-navigation.d.ts.map +0 -1
- package/dist/cake/engine/selection/selection-navigation.js +0 -229
- package/dist/cake/engine/selection/visible-text.d.ts +0 -5
- package/dist/cake/engine/selection/visible-text.d.ts.map +0 -1
- package/dist/cake/engine/selection/visible-text.js +0 -66
- package/dist/cake/react/CakeEditor.d.ts +0 -58
- package/dist/cake/react/CakeEditor.d.ts.map +0 -1
- package/dist/cake/react/CakeEditor.js +0 -225
|
@@ -13,6 +13,17 @@ export type CursorSourceMap = {
|
|
|
13
13
|
};
|
|
14
14
|
};
|
|
15
15
|
export declare function createCursorSourceMap(boundaries: CursorBoundary[], cursorLength: number): CursorSourceMap;
|
|
16
|
+
export type CompositeCursorSourceSegment = {
|
|
17
|
+
map: CursorSourceMap;
|
|
18
|
+
cursorLength: number;
|
|
19
|
+
sourceLength: number;
|
|
20
|
+
};
|
|
21
|
+
export declare function createCompositeCursorSourceMap(params: {
|
|
22
|
+
segments: CompositeCursorSourceSegment[];
|
|
23
|
+
cursorStarts: number[];
|
|
24
|
+
sourceStarts: number[];
|
|
25
|
+
cursorLength: number;
|
|
26
|
+
}): CursorSourceMap;
|
|
16
27
|
export declare class CursorSourceBuilder {
|
|
17
28
|
private sourceParts;
|
|
18
29
|
private boundaries;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cursor-source-map.d.ts","sourceRoot":"","sources":["../../../../src/cake/core/mapping/cursor-source-map.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,MAAM,cAAc,GAAG;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC;IACjE,cAAc,CACZ,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,QAAQ,GACb;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,QAAQ,CAAA;KAAE,CAAC;CACjD,CAAC;AAEF,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,cAAc,EAAE,EAC5B,YAAY,EAAE,MAAM,GACnB,eAAe,
|
|
1
|
+
{"version":3,"file":"cursor-source-map.d.ts","sourceRoot":"","sources":["../../../../src/cake/core/mapping/cursor-source-map.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,MAAM,cAAc,GAAG;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC;IACjE,cAAc,CACZ,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,QAAQ,GACb;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,QAAQ,CAAA;KAAE,CAAC;CACjD,CAAC;AAEF,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,cAAc,EAAE,EAC5B,YAAY,EAAE,MAAM,GACnB,eAAe,CAuEjB;AAED,MAAM,MAAM,4BAA4B,GAAG;IACzC,GAAG,EAAE,eAAe,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,wBAAgB,8BAA8B,CAAC,MAAM,EAAE;IACrD,QAAQ,EAAE,4BAA4B,EAAE,CAAC;IACzC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,eAAe,CA0JlB;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,UAAU,CAEhB;IACF,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,iBAAiB,CAAK;IAE9B,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAWpC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IA0C9B,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,SAAI,GAAG,IAAI;IAiB3D,gBAAgB,CAAC,UAAU,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,eAAe,CAAA;KAAE,GAAG,IAAI;IA2B5E,KAAK,IAAI;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,eAAe,CAAA;KAAE;CAOlD"}
|
|
@@ -29,35 +29,173 @@ export function createCursorSourceMap(boundaries, cursorLength) {
|
|
|
29
29
|
}
|
|
30
30
|
return { cursorOffset: lastIndex, affinity: bias };
|
|
31
31
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
let lo = 0;
|
|
33
|
+
let hi = lastIndex;
|
|
34
|
+
let candidate = lastIndex;
|
|
35
|
+
while (lo <= hi) {
|
|
36
|
+
const mid = Math.floor((lo + hi) / 2);
|
|
37
|
+
const boundary = boundaries[mid];
|
|
38
|
+
if (sourceOffset <= boundary.sourceForward) {
|
|
39
|
+
candidate = mid;
|
|
40
|
+
hi = mid - 1;
|
|
36
41
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
42
|
+
else {
|
|
43
|
+
lo = mid + 1;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
const boundary = boundaries[candidate];
|
|
47
|
+
if (sourceOffset < boundary.sourceBackward) {
|
|
48
|
+
if (bias === "forward") {
|
|
49
|
+
return { cursorOffset: candidate, affinity: "forward" };
|
|
43
50
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
+
const prevIndex = Math.max(0, candidate - 1);
|
|
52
|
+
return { cursorOffset: prevIndex, affinity: "backward" };
|
|
53
|
+
}
|
|
54
|
+
// If the source offset lands exactly on one side of a source-only span
|
|
55
|
+
// (e.g. markdown markers that don't take cursor units), preserve which
|
|
56
|
+
// side of the boundary it came from. This prevents caret drift when
|
|
57
|
+
// marker characters become source-only after reparsing.
|
|
58
|
+
if (boundary.sourceBackward !== boundary.sourceForward) {
|
|
59
|
+
if (sourceOffset === boundary.sourceBackward) {
|
|
60
|
+
return { cursorOffset: candidate, affinity: "backward" };
|
|
61
|
+
}
|
|
62
|
+
if (sourceOffset === boundary.sourceForward) {
|
|
63
|
+
return { cursorOffset: candidate, affinity: "forward" };
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return { cursorOffset: candidate, affinity: bias };
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
export function createCompositeCursorSourceMap(params) {
|
|
71
|
+
const { segments, cursorStarts, sourceStarts, cursorLength } = params;
|
|
72
|
+
if (segments.length === 0) {
|
|
73
|
+
return createCursorSourceMap([{ sourceBackward: 0, sourceForward: 0 }], cursorLength);
|
|
74
|
+
}
|
|
75
|
+
let boundariesCache = null;
|
|
76
|
+
const findSegmentIndexForCursor = (cursorOffset) => {
|
|
77
|
+
let lo = 0;
|
|
78
|
+
let hi = cursorStarts.length - 1;
|
|
79
|
+
let candidate = 0;
|
|
80
|
+
while (lo <= hi) {
|
|
81
|
+
const mid = Math.floor((lo + hi) / 2);
|
|
82
|
+
const start = cursorStarts[mid];
|
|
83
|
+
if (start <= cursorOffset) {
|
|
84
|
+
candidate = mid;
|
|
85
|
+
lo = mid + 1;
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
hi = mid - 1;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return candidate;
|
|
92
|
+
};
|
|
93
|
+
const toAbsoluteBoundary = (segmentIndex, localCursorOffset) => {
|
|
94
|
+
const segment = segments[segmentIndex];
|
|
95
|
+
if (!segment) {
|
|
96
|
+
throw new Error(`Segment index out of bounds: ${segmentIndex}`);
|
|
97
|
+
}
|
|
98
|
+
const localBoundary = segment.map.boundaries[localCursorOffset];
|
|
99
|
+
if (!localBoundary) {
|
|
100
|
+
throw new Error(`Local cursor offset out of bounds: ${localCursorOffset} for segment ${segmentIndex}`);
|
|
101
|
+
}
|
|
102
|
+
const sourceBase = sourceStarts[segmentIndex] ?? 0;
|
|
103
|
+
return {
|
|
104
|
+
sourceBackward: sourceBase + localBoundary.sourceBackward,
|
|
105
|
+
sourceForward: sourceBase + localBoundary.sourceForward,
|
|
106
|
+
};
|
|
107
|
+
};
|
|
108
|
+
const boundaryAt = (cursorOffset) => {
|
|
109
|
+
if (cursorOffset < 0 || cursorOffset > cursorLength) {
|
|
110
|
+
throw new Error(`Cursor offset out of bounds: ${cursorOffset}`);
|
|
111
|
+
}
|
|
112
|
+
const segmentIndex = findSegmentIndexForCursor(cursorOffset);
|
|
113
|
+
const segment = segments[segmentIndex];
|
|
114
|
+
if (!segment) {
|
|
115
|
+
throw new Error(`Segment not found for cursor offset: ${cursorOffset}`);
|
|
116
|
+
}
|
|
117
|
+
const segmentStart = cursorStarts[segmentIndex] ?? 0;
|
|
118
|
+
const local = cursorOffset - segmentStart;
|
|
119
|
+
if (local <= segment.cursorLength) {
|
|
120
|
+
return toAbsoluteBoundary(segmentIndex, local);
|
|
121
|
+
}
|
|
122
|
+
// This is the separator boundary between top-level blocks. It is represented
|
|
123
|
+
// by the next block's local boundary 0.
|
|
124
|
+
const nextIndex = segmentIndex + 1;
|
|
125
|
+
return toAbsoluteBoundary(nextIndex, 0);
|
|
126
|
+
};
|
|
127
|
+
const composite = {
|
|
128
|
+
cursorLength,
|
|
129
|
+
boundaries: [],
|
|
130
|
+
cursorToSource(cursorOffset, affinity) {
|
|
131
|
+
const boundary = boundaryAt(cursorOffset);
|
|
132
|
+
return affinity === "backward"
|
|
133
|
+
? boundary.sourceBackward
|
|
134
|
+
: boundary.sourceForward;
|
|
135
|
+
},
|
|
136
|
+
sourceToCursor(sourceOffset, bias) {
|
|
137
|
+
if (sourceOffset <= 0) {
|
|
138
|
+
return { cursorOffset: 0, affinity: bias };
|
|
139
|
+
}
|
|
140
|
+
const lastIndex = cursorLength;
|
|
141
|
+
const lastBoundary = boundaryAt(lastIndex);
|
|
142
|
+
if (sourceOffset >= lastBoundary.sourceForward) {
|
|
143
|
+
if (lastBoundary.sourceBackward !== lastBoundary.sourceForward) {
|
|
144
|
+
if (sourceOffset === lastBoundary.sourceBackward) {
|
|
145
|
+
return { cursorOffset: lastIndex, affinity: "backward" };
|
|
51
146
|
}
|
|
52
|
-
if (sourceOffset ===
|
|
53
|
-
return { cursorOffset:
|
|
147
|
+
if (sourceOffset === lastBoundary.sourceForward) {
|
|
148
|
+
return { cursorOffset: lastIndex, affinity: "forward" };
|
|
54
149
|
}
|
|
55
150
|
}
|
|
56
|
-
return { cursorOffset:
|
|
151
|
+
return { cursorOffset: lastIndex, affinity: bias };
|
|
152
|
+
}
|
|
153
|
+
let lo = 0;
|
|
154
|
+
let hi = lastIndex;
|
|
155
|
+
let candidate = lastIndex;
|
|
156
|
+
while (lo <= hi) {
|
|
157
|
+
const mid = Math.floor((lo + hi) / 2);
|
|
158
|
+
const boundary = boundaryAt(mid);
|
|
159
|
+
if (sourceOffset <= boundary.sourceForward) {
|
|
160
|
+
candidate = mid;
|
|
161
|
+
hi = mid - 1;
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
lo = mid + 1;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
const boundary = boundaryAt(candidate);
|
|
168
|
+
if (sourceOffset < boundary.sourceBackward) {
|
|
169
|
+
if (bias === "forward") {
|
|
170
|
+
return { cursorOffset: candidate, affinity: "forward" };
|
|
171
|
+
}
|
|
172
|
+
const prevIndex = Math.max(0, candidate - 1);
|
|
173
|
+
return { cursorOffset: prevIndex, affinity: "backward" };
|
|
57
174
|
}
|
|
58
|
-
|
|
175
|
+
if (boundary.sourceBackward !== boundary.sourceForward) {
|
|
176
|
+
if (sourceOffset === boundary.sourceBackward) {
|
|
177
|
+
return { cursorOffset: candidate, affinity: "backward" };
|
|
178
|
+
}
|
|
179
|
+
if (sourceOffset === boundary.sourceForward) {
|
|
180
|
+
return { cursorOffset: candidate, affinity: "forward" };
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return { cursorOffset: candidate, affinity: bias };
|
|
59
184
|
},
|
|
60
185
|
};
|
|
186
|
+
Object.defineProperty(composite, "boundaries", {
|
|
187
|
+
enumerable: true,
|
|
188
|
+
get() {
|
|
189
|
+
if (!boundariesCache) {
|
|
190
|
+
boundariesCache = [];
|
|
191
|
+
for (let i = 0; i <= cursorLength; i += 1) {
|
|
192
|
+
boundariesCache.push(boundaryAt(i));
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
return boundariesCache;
|
|
196
|
+
},
|
|
197
|
+
});
|
|
198
|
+
return composite;
|
|
61
199
|
}
|
|
62
200
|
export class CursorSourceBuilder {
|
|
63
201
|
constructor() {
|
|
@@ -40,6 +40,7 @@ export type ApplyEditCommand = InsertCommand | {
|
|
|
40
40
|
export type StructuralEditCommand = ApplyEditCommand | {
|
|
41
41
|
type: "exit-block-wrapper";
|
|
42
42
|
};
|
|
43
|
+
export type StructuralReparsePolicy = (command: StructuralEditCommand) => boolean;
|
|
43
44
|
/** Core edit commands handled by the runtime */
|
|
44
45
|
export type CoreEditCommand = StructuralEditCommand | {
|
|
45
46
|
type: "indent";
|
|
@@ -115,6 +116,10 @@ export type Runtime = {
|
|
|
115
116
|
map: CursorSourceMap;
|
|
116
117
|
};
|
|
117
118
|
createState(source: string, selection?: Selection): RuntimeState;
|
|
119
|
+
createStateFromDoc(doc: Doc, selection?: Selection, options?: {
|
|
120
|
+
previousState?: RuntimeState;
|
|
121
|
+
mode?: "incremental" | "full";
|
|
122
|
+
}): RuntimeState;
|
|
118
123
|
updateSelection(state: RuntimeState, selection: Selection, options?: {
|
|
119
124
|
kind?: "dom" | "keyboard" | "programmatic";
|
|
120
125
|
}): RuntimeState;
|
|
@@ -137,6 +142,7 @@ export declare function createRuntimeFromRegistry(registry: {
|
|
|
137
142
|
normalizeBlockFns: Array<(block: Block) => Block | null>;
|
|
138
143
|
normalizeInlineFns: Array<(inline: Inline) => Inline | null>;
|
|
139
144
|
onEditFns: Array<(command: EditCommand, state: RuntimeState) => EditResult | EditCommand | null>;
|
|
145
|
+
structuralReparsePolicies: StructuralReparsePolicy[];
|
|
140
146
|
domInlineRenderers: DomInlineRenderer[];
|
|
141
147
|
domBlockRenderers: DomBlockRenderer[];
|
|
142
148
|
}): Runtime;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/cake/core/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,KAAK,EACL,GAAG,EACH,MAAM,EAEN,SAAS,EACV,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAE/D,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/cake/core/runtime.ts"],"names":[],"mappings":"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"}
|