@blankdotpage/cake 0.1.76 → 0.1.77
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/clipboard.d.ts.map +1 -1
- package/dist/cake/clipboard.js +29 -0
- package/dist/cake/core/runtime.d.ts +32 -1
- package/dist/cake/core/runtime.d.ts.map +1 -1
- package/dist/cake/core/runtime.js +58 -81
- package/dist/cake/editor/cake-editor.d.ts +5 -1
- package/dist/cake/editor/cake-editor.d.ts.map +1 -1
- package/dist/cake/editor/cake-editor.js +12 -0
- package/dist/cake/extensions/blockquote/blockquote.d.ts.map +1 -1
- package/dist/cake/extensions/blockquote/blockquote.js +9 -0
- package/dist/cake/extensions/bold/bold.d.ts.map +1 -1
- package/dist/cake/extensions/bold/bold.js +6 -0
- package/dist/cake/extensions/heading/heading.d.ts.map +1 -1
- package/dist/cake/extensions/heading/heading.js +10 -0
- package/dist/cake/extensions/italic/italic.d.ts.map +1 -1
- package/dist/cake/extensions/italic/italic.js +6 -0
- package/dist/cake/extensions/link/link.d.ts.map +1 -1
- package/dist/cake/extensions/link/link.js +7 -0
- package/dist/cake/extensions/list/list.d.ts.map +1 -1
- package/dist/cake/extensions/list/list.js +52 -0
- package/dist/cake/extensions/strikethrough/strikethrough.d.ts.map +1 -1
- package/dist/cake/extensions/strikethrough/strikethrough.js +6 -0
- package/dist/cake/extensions/underline/underline.d.ts.map +1 -1
- package/dist/cake/extensions/underline/underline.js +6 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../src/cake/clipboard.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../src/cake/clipboard.ts"],"names":[],"mappings":"AAmgBA,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAYzE"}
|
package/dist/cake/clipboard.js
CHANGED
|
@@ -229,6 +229,34 @@ function processTextNodes(element) {
|
|
|
229
229
|
span.parentNode?.replaceChild(textNode, span);
|
|
230
230
|
});
|
|
231
231
|
}
|
|
232
|
+
function collapseCopiedLineBlockDivs(body) {
|
|
233
|
+
if (body.children.length !== 1) {
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
const wrapper = body.firstElementChild;
|
|
237
|
+
if (!(wrapper instanceof HTMLDivElement)) {
|
|
238
|
+
return;
|
|
239
|
+
}
|
|
240
|
+
const childElements = Array.from(wrapper.children);
|
|
241
|
+
if (childElements.length < 2 ||
|
|
242
|
+
childElements.some((child) => !(child instanceof HTMLDivElement))) {
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
const nestedBlockSelector = "div,p,ul,ol,li,blockquote,table,pre,hr,h1,h2,h3,h4,h5,h6";
|
|
246
|
+
if (childElements.some((child) => child.querySelector(nestedBlockSelector))) {
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
const normalized = document.createElement("div");
|
|
250
|
+
childElements.forEach((child, index) => {
|
|
251
|
+
while (child.firstChild) {
|
|
252
|
+
normalized.append(child.firstChild);
|
|
253
|
+
}
|
|
254
|
+
if (index < childElements.length - 1) {
|
|
255
|
+
normalized.append(document.createElement("br"));
|
|
256
|
+
}
|
|
257
|
+
});
|
|
258
|
+
wrapper.replaceWith(normalized);
|
|
259
|
+
}
|
|
232
260
|
function detectSourceApp(html) {
|
|
233
261
|
const detectionPatterns = {
|
|
234
262
|
notion: ["notion-", "notranslate"],
|
|
@@ -305,6 +333,7 @@ function preprocessHtml(html) {
|
|
|
305
333
|
const doc = parser.parseFromString(processedHtml, "text/html");
|
|
306
334
|
if (doc.body) {
|
|
307
335
|
processTextNodes(doc.body);
|
|
336
|
+
collapseCopiedLineBlockDivs(doc.body);
|
|
308
337
|
processedHtml = doc.body.innerHTML;
|
|
309
338
|
}
|
|
310
339
|
return processedHtml
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import type { Block, Doc, Inline, Selection } from "./types";
|
|
1
|
+
import type { Block, Doc, Inline, ParagraphBlock, Selection } from "./types";
|
|
2
2
|
import type { CakeExtension } from "../editor/extension-types";
|
|
3
3
|
export type { CakeExtension, CakeUIComponent } from "../editor/extension-types";
|
|
4
4
|
import { type CursorSourceMap } from "./mapping/cursor-source-map";
|
|
5
5
|
import type { DomRenderContext } from "../dom/types";
|
|
6
|
+
import { type StructuralLineInfo } from "../editor/internal/editor-text-model";
|
|
6
7
|
type BlockParseResult = {
|
|
7
8
|
block: Block;
|
|
8
9
|
nextPos: number;
|
|
@@ -98,6 +99,34 @@ export type ToggleInlineSpec = {
|
|
|
98
99
|
close: string;
|
|
99
100
|
}>;
|
|
100
101
|
};
|
|
102
|
+
export type InlineHtmlMark = {
|
|
103
|
+
kind: string;
|
|
104
|
+
data?: Record<string, unknown>;
|
|
105
|
+
};
|
|
106
|
+
export type InlineHtmlSerializer = (mark: InlineHtmlMark, content: string, context: {
|
|
107
|
+
escapeHtml: (text: string) => string;
|
|
108
|
+
}) => string | null;
|
|
109
|
+
export type SelectionHtmlGroup = {
|
|
110
|
+
key: string;
|
|
111
|
+
open: string;
|
|
112
|
+
close: string;
|
|
113
|
+
};
|
|
114
|
+
export type SerializeSelectionLineToHtmlContext = {
|
|
115
|
+
state: RuntimeState;
|
|
116
|
+
line: StructuralLineInfo;
|
|
117
|
+
block: ParagraphBlock;
|
|
118
|
+
wrapperBlock: Block | null;
|
|
119
|
+
lineText: string;
|
|
120
|
+
startInLine: number;
|
|
121
|
+
endInLine: number;
|
|
122
|
+
lineCursorLength: number;
|
|
123
|
+
selectedHtml: string;
|
|
124
|
+
};
|
|
125
|
+
export type SerializeSelectionLineToHtmlResult = {
|
|
126
|
+
html: string;
|
|
127
|
+
group?: SelectionHtmlGroup;
|
|
128
|
+
};
|
|
129
|
+
export type SerializeSelectionLineToHtml = (context: SerializeSelectionLineToHtmlContext) => SerializeSelectionLineToHtmlResult | null;
|
|
101
130
|
export type RuntimeState = {
|
|
102
131
|
source: string;
|
|
103
132
|
selection: Selection;
|
|
@@ -145,5 +174,7 @@ export declare function createRuntimeFromRegistry(registry: {
|
|
|
145
174
|
structuralReparsePolicies: StructuralReparsePolicy[];
|
|
146
175
|
domInlineRenderers: DomInlineRenderer[];
|
|
147
176
|
domBlockRenderers: DomBlockRenderer[];
|
|
177
|
+
inlineHtmlSerializers: InlineHtmlSerializer[];
|
|
178
|
+
serializeSelectionLineToHtmlFns: SerializeSelectionLineToHtml[];
|
|
148
179
|
}): Runtime;
|
|
149
180
|
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/cake/core/runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,6 +40,8 @@ export function createRuntimeForTests(extensions) {
|
|
|
40
40
|
const structuralReparsePolicies = [];
|
|
41
41
|
const domInlineRenderers = [];
|
|
42
42
|
const domBlockRenderers = [];
|
|
43
|
+
const inlineHtmlSerializers = [];
|
|
44
|
+
const serializeSelectionLineToHtmlFns = [];
|
|
43
45
|
const editor = {
|
|
44
46
|
registerInlineWrapperAffinity: (specs) => {
|
|
45
47
|
for (const spec of specs) {
|
|
@@ -125,6 +127,14 @@ export function createRuntimeForTests(extensions) {
|
|
|
125
127
|
domBlockRenderers.push(fn);
|
|
126
128
|
return () => removeFromArray(domBlockRenderers, fn);
|
|
127
129
|
},
|
|
130
|
+
registerInlineHtmlSerializer: (fn) => {
|
|
131
|
+
inlineHtmlSerializers.push(fn);
|
|
132
|
+
return () => removeFromArray(inlineHtmlSerializers, fn);
|
|
133
|
+
},
|
|
134
|
+
registerSerializeSelectionLineToHtml: (fn) => {
|
|
135
|
+
serializeSelectionLineToHtmlFns.push(fn);
|
|
136
|
+
return () => removeFromArray(serializeSelectionLineToHtmlFns, fn);
|
|
137
|
+
},
|
|
128
138
|
registerUI: () => {
|
|
129
139
|
return () => { };
|
|
130
140
|
},
|
|
@@ -145,11 +155,13 @@ export function createRuntimeForTests(extensions) {
|
|
|
145
155
|
structuralReparsePolicies,
|
|
146
156
|
domInlineRenderers,
|
|
147
157
|
domBlockRenderers,
|
|
158
|
+
inlineHtmlSerializers,
|
|
159
|
+
serializeSelectionLineToHtmlFns,
|
|
148
160
|
});
|
|
149
161
|
return runtime;
|
|
150
162
|
}
|
|
151
163
|
export function createRuntimeFromRegistry(registry) {
|
|
152
|
-
const { toggleMarkerToSpec, inclusiveAtEndByKind, parseBlockFns, parseInlineFns, serializeBlockFns, serializeInlineFns, normalizeBlockFns, normalizeInlineFns, onEditFns, structuralReparsePolicies, domInlineRenderers, domBlockRenderers, } = registry;
|
|
164
|
+
const { toggleMarkerToSpec, inclusiveAtEndByKind, parseBlockFns, parseInlineFns, serializeBlockFns, serializeInlineFns, normalizeBlockFns, normalizeInlineFns, onEditFns, structuralReparsePolicies, domInlineRenderers, domBlockRenderers, inlineHtmlSerializers, serializeSelectionLineToHtmlFns, } = registry;
|
|
153
165
|
const isInclusiveAtEnd = (kind) => inclusiveAtEndByKind.get(kind) ?? true;
|
|
154
166
|
const removedBlockSentinel = Symbol("removed-block");
|
|
155
167
|
const removedInlineSentinel = Symbol("removed-inline");
|
|
@@ -2310,18 +2322,12 @@ export function createRuntimeFromRegistry(registry) {
|
|
|
2310
2322
|
// Apply marks in reverse order so outer marks wrap inner marks
|
|
2311
2323
|
const sortedMarks = [...run.marks].reverse();
|
|
2312
2324
|
for (const mark of sortedMarks) {
|
|
2313
|
-
|
|
2314
|
-
|
|
2315
|
-
|
|
2316
|
-
|
|
2317
|
-
|
|
2318
|
-
|
|
2319
|
-
else if (mark.kind === "strikethrough") {
|
|
2320
|
-
content = `<s>${content}</s>`;
|
|
2321
|
-
}
|
|
2322
|
-
else if (mark.kind === "link") {
|
|
2323
|
-
const url = mark.data?.url ?? "";
|
|
2324
|
-
content = `<a href="${escapeHtml(url)}">${content}</a>`;
|
|
2325
|
+
for (const serializeMarkToHtml of inlineHtmlSerializers) {
|
|
2326
|
+
const next = serializeMarkToHtml({ kind: mark.kind, data: mark.data }, content, { escapeHtml });
|
|
2327
|
+
if (next !== null) {
|
|
2328
|
+
content = next;
|
|
2329
|
+
break;
|
|
2330
|
+
}
|
|
2325
2331
|
}
|
|
2326
2332
|
}
|
|
2327
2333
|
html += content;
|
|
@@ -2341,22 +2347,13 @@ export function createRuntimeFromRegistry(registry) {
|
|
|
2341
2347
|
const startLoc = textModel.resolveOffsetToLine(cursorStart);
|
|
2342
2348
|
const endLoc = textModel.resolveOffsetToLine(cursorEnd);
|
|
2343
2349
|
let html = "";
|
|
2344
|
-
let
|
|
2345
|
-
const
|
|
2346
|
-
if (
|
|
2347
|
-
html += `</${activeList.type}>`;
|
|
2348
|
-
activeList = null;
|
|
2349
|
-
}
|
|
2350
|
-
};
|
|
2351
|
-
const openList = (type, indent) => {
|
|
2352
|
-
if (activeList &&
|
|
2353
|
-
activeList.type === type &&
|
|
2354
|
-
activeList.indent === indent) {
|
|
2350
|
+
let activeGroup = null;
|
|
2351
|
+
const closeGroup = () => {
|
|
2352
|
+
if (!activeGroup) {
|
|
2355
2353
|
return;
|
|
2356
2354
|
}
|
|
2357
|
-
|
|
2358
|
-
|
|
2359
|
-
activeList = { type, indent };
|
|
2355
|
+
html += activeGroup.close;
|
|
2356
|
+
activeGroup = null;
|
|
2360
2357
|
};
|
|
2361
2358
|
for (let lineIndex = startLoc.lineIndex; lineIndex <= endLoc.lineIndex; lineIndex += 1) {
|
|
2362
2359
|
const line = lines[lineIndex];
|
|
@@ -2373,66 +2370,46 @@ export function createRuntimeFromRegistry(registry) {
|
|
|
2373
2370
|
? endLoc.offsetInLine
|
|
2374
2371
|
: line.cursorLength;
|
|
2375
2372
|
const selectedRuns = sliceRuns(runs, startInLine, endInLine).selected;
|
|
2376
|
-
|
|
2377
|
-
|
|
2378
|
-
|
|
2373
|
+
const lineHtml = runsToHtml(normalizeRuns(selectedRuns));
|
|
2374
|
+
const lineText = runs
|
|
2375
|
+
.map((r) => (r.type === "text" ? r.text : " "))
|
|
2376
|
+
.join("");
|
|
2377
|
+
let wrapperBlock = null;
|
|
2379
2378
|
if (line.path.length > 1) {
|
|
2380
2379
|
const wrapperPath = line.path.slice(0, -1);
|
|
2381
2380
|
const wrapper = getBlockAtPath(state.doc.blocks, wrapperPath);
|
|
2382
2381
|
if (wrapper && wrapper.type === "block-wrapper") {
|
|
2383
|
-
|
|
2384
|
-
wrapperData = wrapper.data;
|
|
2382
|
+
wrapperBlock = wrapper;
|
|
2385
2383
|
}
|
|
2386
2384
|
}
|
|
2387
|
-
|
|
2388
|
-
const
|
|
2389
|
-
|
|
2390
|
-
|
|
2391
|
-
|
|
2392
|
-
|
|
2393
|
-
|
|
2394
|
-
|
|
2395
|
-
|
|
2396
|
-
|
|
2397
|
-
|
|
2398
|
-
|
|
2399
|
-
|
|
2400
|
-
|
|
2401
|
-
|
|
2402
|
-
|
|
2403
|
-
|
|
2404
|
-
|
|
2405
|
-
|
|
2406
|
-
|
|
2407
|
-
|
|
2408
|
-
|
|
2409
|
-
|
|
2410
|
-
|
|
2411
|
-
|
|
2412
|
-
|
|
2413
|
-
|
|
2414
|
-
|
|
2415
|
-
else if (wrapperKind === "numbered-list") {
|
|
2416
|
-
openList("ol", 0);
|
|
2417
|
-
html += `<li>${lineHtml}</li>`;
|
|
2418
|
-
}
|
|
2419
|
-
else if (wrapperKind === "blockquote") {
|
|
2420
|
-
closeList();
|
|
2421
|
-
html += `<blockquote>${lineHtml}</blockquote>`;
|
|
2422
|
-
}
|
|
2423
|
-
else if (listMatch) {
|
|
2424
|
-
// Plain paragraph with list markers (cake v3 list model)
|
|
2425
|
-
const isNumbered = /^\d+\.$/.test(listMatch[2]);
|
|
2426
|
-
const indent = Math.floor(listMatch[1].length / 2);
|
|
2427
|
-
openList(isNumbered ? "ol" : "ul", indent);
|
|
2428
|
-
html += `<li>${lineHtml}</li>`;
|
|
2429
|
-
}
|
|
2430
|
-
else {
|
|
2431
|
-
closeList();
|
|
2432
|
-
html += `<div>${lineHtml}</div>`;
|
|
2433
|
-
}
|
|
2434
|
-
}
|
|
2435
|
-
closeList();
|
|
2385
|
+
let lineResult = null;
|
|
2386
|
+
for (const serializeLineToHtml of serializeSelectionLineToHtmlFns) {
|
|
2387
|
+
lineResult = serializeLineToHtml({
|
|
2388
|
+
state,
|
|
2389
|
+
line,
|
|
2390
|
+
block,
|
|
2391
|
+
wrapperBlock,
|
|
2392
|
+
lineText,
|
|
2393
|
+
startInLine,
|
|
2394
|
+
endInLine,
|
|
2395
|
+
lineCursorLength: line.cursorLength,
|
|
2396
|
+
selectedHtml: lineHtml,
|
|
2397
|
+
});
|
|
2398
|
+
if (lineResult) {
|
|
2399
|
+
break;
|
|
2400
|
+
}
|
|
2401
|
+
}
|
|
2402
|
+
const group = lineResult?.group ?? null;
|
|
2403
|
+
if (!group || !activeGroup || activeGroup.key !== group.key) {
|
|
2404
|
+
closeGroup();
|
|
2405
|
+
if (group) {
|
|
2406
|
+
html += group.open;
|
|
2407
|
+
activeGroup = group;
|
|
2408
|
+
}
|
|
2409
|
+
}
|
|
2410
|
+
html += lineResult?.html ?? `<div>${lineHtml}</div>`;
|
|
2411
|
+
}
|
|
2412
|
+
closeGroup();
|
|
2436
2413
|
if (!html) {
|
|
2437
2414
|
return "";
|
|
2438
2415
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Block, Inline, Selection } from "../core/types";
|
|
2
|
-
import { type EditCommand, type KeyBinding, type ParseBlockResult, type ParseInlineResult, type SerializeBlockResult, type SerializeInlineResult, type RuntimeState, type StructuralReparsePolicy, type ToggleInlineSpec, type DomBlockRenderer, type DomInlineRenderer, type ExtensionContext, type InlineWrapperAffinity, type EditResult } from "../core/runtime";
|
|
2
|
+
import { type EditCommand, type KeyBinding, type ParseBlockResult, type ParseInlineResult, type SerializeBlockResult, type SerializeInlineResult, type RuntimeState, type StructuralReparsePolicy, type ToggleInlineSpec, type DomBlockRenderer, type DomInlineRenderer, type ExtensionContext, type InlineWrapperAffinity, type InlineHtmlSerializer, type SerializeSelectionLineToHtml, type EditResult } from "../core/runtime";
|
|
3
3
|
import type { CakeExtension, CakeUIComponent } from "./extension-types";
|
|
4
4
|
import type { SelectionRect } from "./selection/selection-geometry";
|
|
5
5
|
import { type LineInfo } from "./internal/editor-text-model";
|
|
@@ -48,6 +48,8 @@ export declare class CakeEditor {
|
|
|
48
48
|
private activeMarksResolvers;
|
|
49
49
|
private domInlineRenderers;
|
|
50
50
|
private domBlockRenderers;
|
|
51
|
+
private inlineHtmlSerializers;
|
|
52
|
+
private serializeSelectionLineToHtmlFns;
|
|
51
53
|
private uiComponents;
|
|
52
54
|
private extensionDisposers;
|
|
53
55
|
private textModel;
|
|
@@ -165,6 +167,8 @@ export declare class CakeEditor {
|
|
|
165
167
|
suppressNextBeforeInput(): void;
|
|
166
168
|
registerInlineRenderer(fn: DomInlineRenderer): () => void;
|
|
167
169
|
registerBlockRenderer(fn: DomBlockRenderer): () => void;
|
|
170
|
+
registerInlineHtmlSerializer(fn: InlineHtmlSerializer): () => void;
|
|
171
|
+
registerSerializeSelectionLineToHtml(fn: SerializeSelectionLineToHtml): () => void;
|
|
168
172
|
registerUI(component: CakeUIComponent): () => void;
|
|
169
173
|
destroy(): void;
|
|
170
174
|
setReadOnly(readOnly: boolean): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cake-editor.d.ts","sourceRoot":"","sources":["../../../src/cake/editor/cake-editor.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cake-editor.d.ts","sourceRoot":"","sources":["../../../src/cake/editor/cake-editor.ts"],"names":[],"mappings":"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"}
|
|
@@ -120,6 +120,8 @@ export class CakeEditor {
|
|
|
120
120
|
this.activeMarksResolvers = [];
|
|
121
121
|
this.domInlineRenderers = [];
|
|
122
122
|
this.domBlockRenderers = [];
|
|
123
|
+
this.inlineHtmlSerializers = [];
|
|
124
|
+
this.serializeSelectionLineToHtmlFns = [];
|
|
123
125
|
this.uiComponents = [];
|
|
124
126
|
this.extensionDisposers = [];
|
|
125
127
|
this.textModel = new EditorTextModel();
|
|
@@ -256,6 +258,8 @@ export class CakeEditor {
|
|
|
256
258
|
structuralReparsePolicies: this.structuralReparsePolicies,
|
|
257
259
|
domInlineRenderers: this.domInlineRenderers,
|
|
258
260
|
domBlockRenderers: this.domBlockRenderers,
|
|
261
|
+
inlineHtmlSerializers: this.inlineHtmlSerializers,
|
|
262
|
+
serializeSelectionLineToHtmlFns: this.serializeSelectionLineToHtmlFns,
|
|
259
263
|
});
|
|
260
264
|
this.installExtensions(options.extensions ?? bundledExtensions);
|
|
261
265
|
this.state = this.runtime.createState(options.value, options.selection ?? defaultSelection);
|
|
@@ -381,6 +385,14 @@ export class CakeEditor {
|
|
|
381
385
|
this.domBlockRenderers.push(fn);
|
|
382
386
|
return () => removeFromArray(this.domBlockRenderers, fn);
|
|
383
387
|
}
|
|
388
|
+
registerInlineHtmlSerializer(fn) {
|
|
389
|
+
this.inlineHtmlSerializers.push(fn);
|
|
390
|
+
return () => removeFromArray(this.inlineHtmlSerializers, fn);
|
|
391
|
+
}
|
|
392
|
+
registerSerializeSelectionLineToHtml(fn) {
|
|
393
|
+
this.serializeSelectionLineToHtmlFns.push(fn);
|
|
394
|
+
return () => removeFromArray(this.serializeSelectionLineToHtmlFns, fn);
|
|
395
|
+
}
|
|
384
396
|
registerUI(component) {
|
|
385
397
|
this.uiComponents.push(component);
|
|
386
398
|
return () => removeFromArray(this.uiComponents, component);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blockquote.d.ts","sourceRoot":"","sources":["../../../../src/cake/extensions/blockquote/blockquote.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAKnB,MAAM,oBAAoB,CAAC;AAgI5B,eAAO,MAAM,mBAAmB,EAAE,
|
|
1
|
+
{"version":3,"file":"blockquote.d.ts","sourceRoot":"","sources":["../../../../src/cake/extensions/blockquote/blockquote.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAKnB,MAAM,oBAAoB,CAAC;AAgI5B,eAAO,MAAM,mBAAmB,EAAE,aAiIjC,CAAC"}
|
|
@@ -173,6 +173,15 @@ export const blockquoteExtension = (editor) => {
|
|
|
173
173
|
}
|
|
174
174
|
return element;
|
|
175
175
|
}));
|
|
176
|
+
disposers.push(editor.registerSerializeSelectionLineToHtml((context) => {
|
|
177
|
+
if (context.wrapperBlock?.type !== "block-wrapper" ||
|
|
178
|
+
context.wrapperBlock.kind !== BLOCKQUOTE_KIND) {
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
return {
|
|
182
|
+
html: `<blockquote>${context.selectedHtml}</blockquote>`,
|
|
183
|
+
};
|
|
184
|
+
}));
|
|
176
185
|
return () => disposers
|
|
177
186
|
.splice(0)
|
|
178
187
|
.reverse()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bold.d.ts","sourceRoot":"","sources":["../../../../src/cake/extensions/bold/bold.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAInB,MAAM,oBAAoB,CAAC;AAU5B,eAAO,MAAM,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"bold.d.ts","sourceRoot":"","sources":["../../../../src/cake/extensions/bold/bold.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAInB,MAAM,oBAAoB,CAAC;AAU5B,eAAO,MAAM,aAAa,EAAE,aA0J3B,CAAC"}
|
|
@@ -107,6 +107,12 @@ export const boldExtension = (editor) => {
|
|
|
107
107
|
}
|
|
108
108
|
return element;
|
|
109
109
|
}));
|
|
110
|
+
disposers.push(editor.registerInlineHtmlSerializer((mark, content) => {
|
|
111
|
+
if (mark.kind !== BOLD_KIND) {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
return `<strong>${content}</strong>`;
|
|
115
|
+
}));
|
|
110
116
|
return () => {
|
|
111
117
|
disposers
|
|
112
118
|
.splice(0)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"heading.d.ts","sourceRoot":"","sources":["../../../../src/cake/extensions/heading/heading.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAKnB,MAAM,oBAAoB,CAAC;AAwa5B,eAAO,MAAM,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"heading.d.ts","sourceRoot":"","sources":["../../../../src/cake/extensions/heading/heading.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAKnB,MAAM,oBAAoB,CAAC;AAwa5B,eAAO,MAAM,gBAAgB,EAAE,aA8N9B,CAAC"}
|
|
@@ -458,6 +458,16 @@ export const headingExtension = (editor) => {
|
|
|
458
458
|
}
|
|
459
459
|
return lineElement;
|
|
460
460
|
}));
|
|
461
|
+
disposers.push(editor.registerSerializeSelectionLineToHtml((context) => {
|
|
462
|
+
if (context.wrapperBlock?.type !== "block-wrapper" ||
|
|
463
|
+
context.wrapperBlock.kind !== HEADING_KIND) {
|
|
464
|
+
return null;
|
|
465
|
+
}
|
|
466
|
+
const level = Math.min(context.wrapperBlock.data?.level ?? 1, 6);
|
|
467
|
+
return {
|
|
468
|
+
html: `<h${level} style="margin:0">${context.selectedHtml}</h${level}>`,
|
|
469
|
+
};
|
|
470
|
+
}));
|
|
461
471
|
return () => disposers
|
|
462
472
|
.splice(0)
|
|
463
473
|
.reverse()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"italic.d.ts","sourceRoot":"","sources":["../../../../src/cake/extensions/italic/italic.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAIlB,KAAK,qBAAqB,EAC3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAS,MAAM,EAAE,MAAM,kBAAkB,CAAC;AA+BtD,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,EAC3C,OAAO,EAAE;IACP,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,qBAAqB,CAAC;CAC5D,EACD,MAAM,EAAE,GAAG,GAAG,GAAG,GAChB,qBAAqB,CAGvB;AAmGD,eAAO,MAAM,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"italic.d.ts","sourceRoot":"","sources":["../../../../src/cake/extensions/italic/italic.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAIlB,KAAK,qBAAqB,EAC3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAS,MAAM,EAAE,MAAM,kBAAkB,CAAC;AA+BtD,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,EAC3C,OAAO,EAAE;IACP,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,qBAAqB,CAAC;CAC5D,EACD,MAAM,EAAE,GAAG,GAAG,GAAG,GAChB,qBAAqB,CAGvB;AAmGD,eAAO,MAAM,eAAe,EAAE,aA8J7B,CAAC"}
|
|
@@ -183,6 +183,12 @@ export const italicExtension = (editor) => {
|
|
|
183
183
|
}
|
|
184
184
|
return element;
|
|
185
185
|
}));
|
|
186
|
+
disposers.push(editor.registerInlineHtmlSerializer((mark, content) => {
|
|
187
|
+
if (mark.kind !== ITALIC_KIND) {
|
|
188
|
+
return null;
|
|
189
|
+
}
|
|
190
|
+
return `<em>${content}</em>`;
|
|
191
|
+
}));
|
|
186
192
|
return () => disposers
|
|
187
193
|
.splice(0)
|
|
188
194
|
.reverse()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../../../src/cake/extensions/link/link.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAGnB,MAAM,oBAAoB,CAAC;AAK5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAwJ3D,8CAA8C;AAC9C,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,wCAAwC;AACxC,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,qDAAqD;AACrD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,kCAAkC;AAClC,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,aAAa,GAAG,iBAAiB,CAAC;AAE9E,MAAM,MAAM,kBAAkB,GAAG,CAC/B,MAAM,EAAE,UAAU,KACf,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAAC;AAEnD,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,MAAM,CAAC,EAAE,mBAAmB,CAAC;CAC9B,CAAC;
|
|
1
|
+
{"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../../../../src/cake/extensions/link/link.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAGnB,MAAM,oBAAoB,CAAC;AAK5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAwJ3D,8CAA8C;AAC9C,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,wCAAwC;AACxC,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,qDAAqD;AACrD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,kCAAkC;AAClC,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,aAAa,GAAG,iBAAiB,CAAC;AAE9E,MAAM,MAAM,kBAAkB,GAAG,CAC/B,MAAM,EAAE,UAAU,KACf,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CAAC;AAEnD,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,MAAM,CAAC,EAAE,mBAAmB,CAAC;CAC9B,CAAC;AAwaF,wBAAgB,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;AACvE,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,aAAa,CAAC"}
|
|
@@ -422,6 +422,13 @@ function installLinkExtension(editor, options) {
|
|
|
422
422
|
}
|
|
423
423
|
return element;
|
|
424
424
|
}));
|
|
425
|
+
disposers.push(editor.registerInlineHtmlSerializer((mark, content, context) => {
|
|
426
|
+
if (mark.kind !== LINK_KIND) {
|
|
427
|
+
return null;
|
|
428
|
+
}
|
|
429
|
+
const url = mark.data?.url ?? "";
|
|
430
|
+
return `<a href="${context.escapeHtml(url)}">${content}</a>`;
|
|
431
|
+
}));
|
|
425
432
|
const LinkPopoverUI = ({ editor }) => (_jsx(CakeLinkPopover, { editor: editor, styles: options.styles }));
|
|
426
433
|
disposers.push(editor.registerUI(LinkPopoverUI));
|
|
427
434
|
return () => disposers
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../src/cake/extensions/list/list.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAGnB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../../src/cake/extensions/list/list.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAGnB,MAAM,oBAAoB,CAAC;AA2qC5B,+CAA+C;AAC/C,MAAM,MAAM,uBAAuB,GAAG;IAAE,IAAI,EAAE,oBAAoB,CAAA;CAAE,CAAC;AAErE,iDAAiD;AACjD,MAAM,MAAM,yBAAyB,GAAG;IAAE,IAAI,EAAE,sBAAsB,CAAA;CAAE,CAAC;AAEzE,kCAAkC;AAClC,MAAM,MAAM,WAAW,GAAG,uBAAuB,GAAG,yBAAyB,CAAC;AAE9E,eAAO,MAAM,sBAAsB,EAAE,aA6LpC,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { mergeInlineForRender } from "../../dom/render";
|
|
2
2
|
import { parseListRange, serializeListRange, convertToPlainText, getLineInfo, getListPrefixLength, isListLine, parseListItem, countNumberedItemsBefore, } from "./list-ast";
|
|
3
3
|
import { getLineBlockContent } from "../shared/line-content";
|
|
4
|
+
import { graphemeSegments } from "../../shared/segmenter";
|
|
4
5
|
// Match list lines - capture exactly one space after marker, rest goes to content
|
|
5
6
|
const LIST_LINE_REGEX = /^(\s*)([-*+]|\d+\.)( )(.*)$/;
|
|
6
7
|
function matchListLine(line) {
|
|
@@ -937,6 +938,57 @@ export const plainTextListExtension = (editor) => {
|
|
|
937
938
|
}
|
|
938
939
|
return null;
|
|
939
940
|
}));
|
|
941
|
+
disposers.push(editor.registerSerializeSelectionLineToHtml((context) => {
|
|
942
|
+
const { wrapperBlock, lineText, startInLine, endInLine, lineCursorLength } = context;
|
|
943
|
+
const listMatch = matchListLine(lineText);
|
|
944
|
+
const prefixLength = listMatch
|
|
945
|
+
? Array.from(graphemeSegments(listMatch.prefix)).length
|
|
946
|
+
: 0;
|
|
947
|
+
const selectsEntirePlainListItem = !wrapperBlock &&
|
|
948
|
+
Boolean(listMatch) &&
|
|
949
|
+
startInLine === 0 &&
|
|
950
|
+
endInLine >= lineCursorLength;
|
|
951
|
+
if (wrapperBlock?.type === "block-wrapper" &&
|
|
952
|
+
(wrapperBlock.kind === "bullet-list" ||
|
|
953
|
+
wrapperBlock.kind === "numbered-list") &&
|
|
954
|
+
startInLine === 0 &&
|
|
955
|
+
endInLine >= lineCursorLength) {
|
|
956
|
+
const type = wrapperBlock.kind === "numbered-list" ? "ol" : "ul";
|
|
957
|
+
return {
|
|
958
|
+
html: `<li>${context.selectedHtml}</li>`,
|
|
959
|
+
group: {
|
|
960
|
+
key: `${type}:0`,
|
|
961
|
+
open: `<${type}>`,
|
|
962
|
+
close: `</${type}>`,
|
|
963
|
+
},
|
|
964
|
+
};
|
|
965
|
+
}
|
|
966
|
+
if (!selectsEntirePlainListItem || !listMatch) {
|
|
967
|
+
return null;
|
|
968
|
+
}
|
|
969
|
+
const contentStart = Math.min(prefixLength, lineCursorLength);
|
|
970
|
+
const contentHtml = startInLine <= contentStart && endInLine >= lineCursorLength
|
|
971
|
+
? context.state.runtime
|
|
972
|
+
.serializeSelectionToHtml(context.state, {
|
|
973
|
+
start: context.line.lineStartOffset +
|
|
974
|
+
Math.min(contentStart, context.lineCursorLength),
|
|
975
|
+
end: context.line.lineStartOffset + lineCursorLength,
|
|
976
|
+
affinity: "forward",
|
|
977
|
+
})
|
|
978
|
+
.replace(/^<div><div>/, "")
|
|
979
|
+
.replace(/<\/div><\/div>$/, "")
|
|
980
|
+
: context.selectedHtml;
|
|
981
|
+
const type = listMatch.number === null ? "ul" : "ol";
|
|
982
|
+
const indent = Math.floor(listMatch.indent.length / 2);
|
|
983
|
+
return {
|
|
984
|
+
html: `<li>${contentHtml}</li>`,
|
|
985
|
+
group: {
|
|
986
|
+
key: `${type}:${indent}`,
|
|
987
|
+
open: `<${type}>`,
|
|
988
|
+
close: `</${type}>`,
|
|
989
|
+
},
|
|
990
|
+
};
|
|
991
|
+
}));
|
|
940
992
|
disposers.push(editor.registerBlockRenderer((block, context) => {
|
|
941
993
|
if (block.type !== "paragraph") {
|
|
942
994
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strikethrough.d.ts","sourceRoot":"","sources":["../../../../src/cake/extensions/strikethrough/strikethrough.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAInB,MAAM,oBAAoB,CAAC;AAS5B,eAAO,MAAM,sBAAsB,EAAE,
|
|
1
|
+
{"version":3,"file":"strikethrough.d.ts","sourceRoot":"","sources":["../../../../src/cake/extensions/strikethrough/strikethrough.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAInB,MAAM,oBAAoB,CAAC;AAS5B,eAAO,MAAM,sBAAsB,EAAE,aA4HpC,CAAC"}
|
|
@@ -82,6 +82,12 @@ export const strikethroughExtension = (editor) => {
|
|
|
82
82
|
}
|
|
83
83
|
return element;
|
|
84
84
|
}));
|
|
85
|
+
disposers.push(editor.registerInlineHtmlSerializer((mark, content) => {
|
|
86
|
+
if (mark.kind !== STRIKE_KIND) {
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
return `<s>${content}</s>`;
|
|
90
|
+
}));
|
|
85
91
|
return () => disposers
|
|
86
92
|
.splice(0)
|
|
87
93
|
.reverse()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"underline.d.ts","sourceRoot":"","sources":["../../../../src/cake/extensions/underline/underline.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAInB,MAAM,oBAAoB,CAAC;AAS5B,eAAO,MAAM,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"underline.d.ts","sourceRoot":"","sources":["../../../../src/cake/extensions/underline/underline.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,aAAa,EAInB,MAAM,oBAAoB,CAAC;AAS5B,eAAO,MAAM,kBAAkB,EAAE,aA8HhC,CAAC"}
|
|
@@ -83,6 +83,12 @@ export const underlineExtension = (editor) => {
|
|
|
83
83
|
}
|
|
84
84
|
return element;
|
|
85
85
|
}));
|
|
86
|
+
disposers.push(editor.registerInlineHtmlSerializer((mark, content) => {
|
|
87
|
+
if (mark.kind !== UNDERLINE_KIND) {
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
90
|
+
return `<u>${content}</u>`;
|
|
91
|
+
}));
|
|
86
92
|
return () => disposers
|
|
87
93
|
.splice(0)
|
|
88
94
|
.reverse()
|