@blankdotpage/cake 0.1.12 → 0.1.14
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/runtime.d.ts +4 -1
- package/dist/cake/core/runtime.d.ts.map +1 -1
- package/dist/cake/core/runtime.js +114 -76
- package/dist/cake/editor/cake-editor.d.ts.map +1 -1
- package/dist/cake/editor/cake-editor.js +3 -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/underline/index.d.ts +2 -0
- package/dist/cake/extensions/underline/index.d.ts.map +1 -0
- package/dist/cake/extensions/underline/index.js +1 -0
- package/dist/cake/extensions/underline/underline.d.ts +2 -0
- package/dist/cake/extensions/underline/underline.d.ts.map +1 -0
- package/dist/cake/extensions/underline/underline.js +71 -0
- package/package.json +1 -1
|
@@ -115,7 +115,10 @@ export type CakeExtension = {
|
|
|
115
115
|
*/
|
|
116
116
|
toggleInline?: {
|
|
117
117
|
kind: string;
|
|
118
|
-
markers: string
|
|
118
|
+
markers: Array<string | {
|
|
119
|
+
open: string;
|
|
120
|
+
close: string;
|
|
121
|
+
}>;
|
|
119
122
|
};
|
|
120
123
|
parseBlock?: (source: string, start: number, context: ExtensionContext) => ParseBlockResult;
|
|
121
124
|
parseInline?: (source: string, start: number, end: number, context: ExtensionContext) => ParseInlineResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/cake/core/runtime.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../../src/cake/core/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAY,KAAK,EAAE,GAAG,EAAE,MAAM,EAAkB,SAAS,EAAE,MAAM,SAAS,CAAC;AACvF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAEL,KAAK,eAAe,EACrB,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE,WAAW,CAAC;IACvB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACxD,YAAY,EAAE,MAAM;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC1D,cAAc,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC;IAClD,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK;QACzC,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,CAAC;AAEF,KAAK,gBAAgB,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAC1D,KAAK,iBAAiB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7D,MAAM,MAAM,gBAAgB,GAAG,gBAAgB,GAAG,IAAI,CAAC;AACvD,MAAM,MAAM,iBAAiB,GAAG,iBAAiB,GAAG,IAAI,CAAC;AAEzD,MAAM,MAAM,oBAAoB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,eAAe,CAAA;CAAE,CAAC;AAC5E,MAAM,MAAM,qBAAqB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,eAAe,CAAA;CAAE,CAAC;AAE7E,qBAAqB;AACrB,MAAM,MAAM,aAAa,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7D,0DAA0D;AAC1D,MAAM,MAAM,gBAAgB,GACxB,aAAa,GACb;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,wBAAwB,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,GAC3B;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAE/B,8DAA8D;AAC9D,MAAM,MAAM,qBAAqB,GAC7B,gBAAgB,GAChB;IAAE,IAAI,EAAE,oBAAoB,CAAA;CAAE,CAAC;AAEnC,gDAAgD;AAChD,MAAM,MAAM,eAAe,GACvB,qBAAqB,GACrB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9C,+CAA+C;AAC/C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAC;IAEb,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,gBAAgB,CAAC;AAE7D,4DAA4D;AAC5D,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,WAAW,GACnB,OAAO,IAAI,qBAAqB,CASlC;AAED,6EAA6E;AAC7E,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,WAAW,GACnB,OAAO,IAAI,gBAAgB,CAQ7B;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,WAAW,GAAG,CAAC,CAAC,KAAK,EAAE,YAAY,KAAK,WAAW,GAAG,IAAI,CAAC,CAAC;CACtE,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;IACtE,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,qBAAqB,CAAC;IAC3D,cAAc,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,oBAAoB,CAAC;CACxD,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,qBAAqB,CAAC,EAAE,qBAAqB,EAAE,CAAC;IAChD;;;;OAIG;IACH,YAAY,CAAC,EAAE;QACb,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,KAAK,CAAC,MAAM,GAAG;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAC1D,CAAC;IACF,UAAU,CAAC,EAAE,CACX,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,gBAAgB,KACtB,gBAAgB,CAAC;IACtB,WAAW,CAAC,EAAE,CACZ,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,gBAAgB,KACtB,iBAAiB,CAAC;IACvB,cAAc,CAAC,EAAE,CACf,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,gBAAgB,KACtB,oBAAoB,GAAG,IAAI,CAAC;IACjC,eAAe,CAAC,EAAE,CAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,gBAAgB,KACtB,qBAAqB,GAAG,IAAI,CAAC;IAClC,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,KAAK,GAAG,IAAI,CAAC;IAChD,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACpD,MAAM,CAAC,EAAE,CACP,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,YAAY,KAChB,UAAU,GAAG,WAAW,GAAG,IAAI,CAAC;IACrC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,KAAK,WAAW,GAAG,IAAI,CAAC;IACxE,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,YAAY,CAAC,EAAE,CACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,gBAAgB,KACtB,IAAI,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,CACZ,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,gBAAgB,KACtB,IAAI,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC;IAC1B,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,uBAAuB,KAAK,YAAY,GAAG,IAAI,CAAC;CAC3E,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,CAAC,QAAQ,SAAS,gBAAgB,IAAI,IAAI,CACnE,aAAa,EACb,QAAQ,CACT,GAAG;IACF,MAAM,CAAC,EAAE,CACP,OAAO,EAAE,WAAW,GAAG,QAAQ,EAC/B,KAAK,EAAE,YAAY,KAChB,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,IAAI,CAAC;CACjD,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAAC,QAAQ,SAAS,gBAAgB,EAC/D,SAAS,EAAE,eAAe,CAAC,QAAQ,CAAC,GACnC,aAAa,CAEf;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;IACrB,GAAG,EAAE,eAAe,CAAC;IACrB,GAAG,EAAE,GAAG,CAAC;IACT,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC;IAC3B,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,eAAe,CAAA;KAAE,CAAC;IAC9D,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,YAAY,CAAC;IACjE,eAAe,CACb,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,SAAS,EACpB,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,KAAK,GAAG,UAAU,GAAG,cAAc,CAAA;KAAE,GACvD,YAAY,CAAC;IAChB,kBAAkB,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC;IACtE,wBAAwB,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,GAAG,MAAM,CAAC;IAC5E,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,GAAG,YAAY,CAAC;CACpE,CAAC;AAIF,wBAAgB,aAAa,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,OAAO,CAmlElE"}
|
|
@@ -38,14 +38,17 @@ export function defineExtension(extension) {
|
|
|
38
38
|
}
|
|
39
39
|
const defaultSelection = { start: 0, end: 0, affinity: "forward" };
|
|
40
40
|
export function createRuntime(extensions) {
|
|
41
|
-
const
|
|
41
|
+
const toggleMarkerToSpec = new Map();
|
|
42
42
|
for (const extension of extensions) {
|
|
43
43
|
const toggle = extension.toggleInline;
|
|
44
44
|
if (!toggle) {
|
|
45
45
|
continue;
|
|
46
46
|
}
|
|
47
47
|
for (const marker of toggle.markers) {
|
|
48
|
-
|
|
48
|
+
const spec = typeof marker === "string"
|
|
49
|
+
? { kind: toggle.kind, open: marker, close: marker }
|
|
50
|
+
: { kind: toggle.kind, open: marker.open, close: marker.close };
|
|
51
|
+
toggleMarkerToSpec.set(spec.open, spec);
|
|
49
52
|
}
|
|
50
53
|
}
|
|
51
54
|
const inclusiveAtEndByKind = new Map();
|
|
@@ -1213,53 +1216,56 @@ export function createRuntime(extensions) {
|
|
|
1213
1216
|
const selection = normalizeSelection(state.selection);
|
|
1214
1217
|
const source = state.source;
|
|
1215
1218
|
const map = state.map;
|
|
1219
|
+
const markerSpec = toggleMarkerToSpec.get(marker);
|
|
1220
|
+
if (!markerSpec) {
|
|
1221
|
+
return state;
|
|
1222
|
+
}
|
|
1223
|
+
const { kind: markerKind, open: openMarker, close: closeMarker } = markerSpec;
|
|
1224
|
+
const openLen = openMarker.length;
|
|
1225
|
+
const closeLen = closeMarker.length;
|
|
1216
1226
|
if (selection.start === selection.end) {
|
|
1217
1227
|
const caret = selection.start;
|
|
1218
|
-
const markerLen = marker.length;
|
|
1219
1228
|
// When the caret is at the end boundary of an inline wrapper, toggling the
|
|
1220
1229
|
// wrapper should "exit" it (so the next character types outside). This is
|
|
1221
1230
|
// best expressed in cursor space by flipping affinity to "forward" when we
|
|
1222
1231
|
// are leaving a wrapper of the requested kind.
|
|
1223
|
-
const
|
|
1224
|
-
if (
|
|
1225
|
-
|
|
1226
|
-
|
|
1227
|
-
|
|
1228
|
-
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
const
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
},
|
|
1251
|
-
};
|
|
1252
|
-
}
|
|
1232
|
+
const around = marksAroundCursor(state.doc, caret);
|
|
1233
|
+
if (isMarksPrefix(around.right, around.left) &&
|
|
1234
|
+
around.left.length > around.right.length) {
|
|
1235
|
+
const exiting = around.left.slice(around.right.length);
|
|
1236
|
+
if (exiting.some((mark) => mark.kind === markerKind)) {
|
|
1237
|
+
if (exiting.length > 1) {
|
|
1238
|
+
const placeholder = "\u200B";
|
|
1239
|
+
const insertAtForward = map.cursorToSource(caret, "forward");
|
|
1240
|
+
const insertAtBackward = map.cursorToSource(caret, "backward");
|
|
1241
|
+
const between = source.slice(insertAtBackward, insertAtForward);
|
|
1242
|
+
const markerIndex = between.indexOf(closeMarker);
|
|
1243
|
+
if (markerIndex !== -1) {
|
|
1244
|
+
const insertAt = insertAtBackward + markerIndex + closeLen;
|
|
1245
|
+
const nextSource = source.slice(0, insertAt) +
|
|
1246
|
+
placeholder +
|
|
1247
|
+
source.slice(insertAt);
|
|
1248
|
+
const next = createState(nextSource);
|
|
1249
|
+
const placeholderStart = insertAt;
|
|
1250
|
+
const startCursor = next.map.sourceToCursor(placeholderStart, "forward");
|
|
1251
|
+
return {
|
|
1252
|
+
...next,
|
|
1253
|
+
selection: {
|
|
1254
|
+
start: startCursor.cursorOffset,
|
|
1255
|
+
end: startCursor.cursorOffset,
|
|
1256
|
+
affinity: "forward",
|
|
1257
|
+
},
|
|
1258
|
+
};
|
|
1253
1259
|
}
|
|
1254
|
-
return {
|
|
1255
|
-
...state,
|
|
1256
|
-
selection: {
|
|
1257
|
-
start: caret,
|
|
1258
|
-
end: caret,
|
|
1259
|
-
affinity: "forward",
|
|
1260
|
-
},
|
|
1261
|
-
};
|
|
1262
1260
|
}
|
|
1261
|
+
return {
|
|
1262
|
+
...state,
|
|
1263
|
+
selection: {
|
|
1264
|
+
start: caret,
|
|
1265
|
+
end: caret,
|
|
1266
|
+
affinity: "forward",
|
|
1267
|
+
},
|
|
1268
|
+
};
|
|
1263
1269
|
}
|
|
1264
1270
|
}
|
|
1265
1271
|
// Otherwise, insert an empty marker pair with a zero-width placeholder
|
|
@@ -1287,17 +1293,17 @@ export function createRuntime(extensions) {
|
|
|
1287
1293
|
map.cursorToSource(caret, selection.affinity ?? "forward");
|
|
1288
1294
|
const nextSource = placeholderPos !== null
|
|
1289
1295
|
? source.slice(0, insertAt) +
|
|
1290
|
-
|
|
1296
|
+
openMarker +
|
|
1291
1297
|
placeholder +
|
|
1292
|
-
|
|
1298
|
+
closeMarker +
|
|
1293
1299
|
source.slice(insertAt + placeholder.length)
|
|
1294
1300
|
: source.slice(0, insertAt) +
|
|
1295
|
-
|
|
1301
|
+
openMarker +
|
|
1296
1302
|
placeholder +
|
|
1297
|
-
|
|
1303
|
+
closeMarker +
|
|
1298
1304
|
source.slice(insertAt);
|
|
1299
1305
|
const next = createState(nextSource);
|
|
1300
|
-
const placeholderStart = insertAt +
|
|
1306
|
+
const placeholderStart = insertAt + openLen;
|
|
1301
1307
|
const startCursor = next.map.sourceToCursor(placeholderStart, "forward");
|
|
1302
1308
|
return {
|
|
1303
1309
|
...next,
|
|
@@ -1313,18 +1319,13 @@ export function createRuntime(extensions) {
|
|
|
1313
1319
|
const from = map.cursorToSource(cursorStart, "forward");
|
|
1314
1320
|
const to = map.cursorToSource(cursorEnd, "backward");
|
|
1315
1321
|
const selectedText = source.slice(from, to);
|
|
1316
|
-
const markerLen = marker.length;
|
|
1317
|
-
const markerKind = toggleMarkerToKind.get(marker) ?? null;
|
|
1318
1322
|
const linesForSelection = flattenDocToLines(state.doc);
|
|
1319
|
-
const commonMarks =
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
const hasCommonMark = markerKind !== null && commonMarks.some((mark) => mark.kind === markerKind);
|
|
1323
|
-
const canUnwrap = markerKind ? hasCommonMark : true;
|
|
1323
|
+
const commonMarks = commonMarksAcrossSelection(linesForSelection, cursorStart, cursorEnd, state.doc);
|
|
1324
|
+
const hasCommonMark = commonMarks.some((mark) => mark.kind === markerKind);
|
|
1325
|
+
const canUnwrap = hasCommonMark;
|
|
1324
1326
|
const startLoc = resolveCursorToLine(linesForSelection, cursorStart);
|
|
1325
1327
|
const endLoc = resolveCursorToLine(linesForSelection, cursorEnd);
|
|
1326
|
-
if (
|
|
1327
|
-
(startLoc.lineIndex !== endLoc.lineIndex || selectedText.includes("\n"))) {
|
|
1328
|
+
if (startLoc.lineIndex !== endLoc.lineIndex || selectedText.includes("\n")) {
|
|
1328
1329
|
const edits = [];
|
|
1329
1330
|
const segments = (() => {
|
|
1330
1331
|
if (!selectedText.includes("\n")) {
|
|
@@ -1375,25 +1376,25 @@ export function createRuntime(extensions) {
|
|
|
1375
1376
|
const segmentFrom = segment.from;
|
|
1376
1377
|
const segmentTo = segment.to;
|
|
1377
1378
|
if (canUnwrap) {
|
|
1378
|
-
if (segmentFrom >=
|
|
1379
|
-
source.slice(segmentFrom -
|
|
1379
|
+
if (segmentFrom >= openLen &&
|
|
1380
|
+
source.slice(segmentFrom - openLen, segmentFrom) === openMarker) {
|
|
1380
1381
|
edits.push({
|
|
1381
|
-
from: segmentFrom -
|
|
1382
|
+
from: segmentFrom - openLen,
|
|
1382
1383
|
to: segmentFrom,
|
|
1383
1384
|
insert: "",
|
|
1384
1385
|
});
|
|
1385
1386
|
}
|
|
1386
|
-
if (source.slice(segmentTo, segmentTo +
|
|
1387
|
+
if (source.slice(segmentTo, segmentTo + closeLen) === closeMarker) {
|
|
1387
1388
|
edits.push({
|
|
1388
1389
|
from: segmentTo,
|
|
1389
|
-
to: segmentTo +
|
|
1390
|
+
to: segmentTo + closeLen,
|
|
1390
1391
|
insert: "",
|
|
1391
1392
|
});
|
|
1392
1393
|
}
|
|
1393
1394
|
}
|
|
1394
1395
|
else {
|
|
1395
|
-
edits.push({ from: segmentFrom, to: segmentFrom, insert:
|
|
1396
|
-
edits.push({ from: segmentTo, to: segmentTo, insert:
|
|
1396
|
+
edits.push({ from: segmentFrom, to: segmentFrom, insert: openMarker });
|
|
1397
|
+
edits.push({ from: segmentTo, to: segmentTo, insert: closeMarker });
|
|
1397
1398
|
}
|
|
1398
1399
|
}
|
|
1399
1400
|
if (edits.length === 0) {
|
|
@@ -1417,33 +1418,70 @@ export function createRuntime(extensions) {
|
|
|
1417
1418
|
},
|
|
1418
1419
|
};
|
|
1419
1420
|
}
|
|
1420
|
-
const isSelectionWrappedByAdjacentMarkers =
|
|
1421
|
-
from
|
|
1422
|
-
source.slice(
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
selectedText.
|
|
1426
|
-
selectedText.length >= markerLen * 2;
|
|
1421
|
+
const isSelectionWrappedByAdjacentMarkers = from >= openLen &&
|
|
1422
|
+
source.slice(from - openLen, from) === openMarker &&
|
|
1423
|
+
source.slice(to, to + closeLen) === closeMarker;
|
|
1424
|
+
const isWrappedBySelectionText = selectedText.startsWith(openMarker) &&
|
|
1425
|
+
selectedText.endsWith(closeMarker) &&
|
|
1426
|
+
selectedText.length >= openLen + closeLen;
|
|
1427
1427
|
const isWrapped = canUnwrap &&
|
|
1428
|
-
(isSelectionWrappedByAdjacentMarkers ||
|
|
1429
|
-
(markerKind ? isWrappedBySelectionText : isWrappedBySelectionText));
|
|
1428
|
+
(isSelectionWrappedByAdjacentMarkers || isWrappedBySelectionText);
|
|
1430
1429
|
let newSource;
|
|
1431
|
-
if (isWrapped) {
|
|
1430
|
+
if (canUnwrap && !isWrapped) {
|
|
1431
|
+
const edits = [];
|
|
1432
|
+
const startBackward = map.cursorToSource(cursorStart, "backward");
|
|
1433
|
+
const startForward = map.cursorToSource(cursorStart, "forward");
|
|
1434
|
+
const endBackward = map.cursorToSource(cursorEnd, "backward");
|
|
1435
|
+
const endForward = map.cursorToSource(cursorEnd, "forward");
|
|
1436
|
+
const startGap = source.slice(startBackward, startForward);
|
|
1437
|
+
const openIndex = startGap.lastIndexOf(openMarker);
|
|
1438
|
+
if (openIndex !== -1) {
|
|
1439
|
+
edits.push({
|
|
1440
|
+
from: startBackward + openIndex,
|
|
1441
|
+
to: startBackward + openIndex + openLen,
|
|
1442
|
+
insert: "",
|
|
1443
|
+
});
|
|
1444
|
+
}
|
|
1445
|
+
else {
|
|
1446
|
+
edits.push({ from: startBackward, to: startBackward, insert: closeMarker });
|
|
1447
|
+
}
|
|
1448
|
+
const endGap = source.slice(endBackward, endForward);
|
|
1449
|
+
const closeIndex = endGap.indexOf(closeMarker);
|
|
1450
|
+
if (closeIndex !== -1) {
|
|
1451
|
+
edits.push({
|
|
1452
|
+
from: endBackward + closeIndex,
|
|
1453
|
+
to: endBackward + closeIndex + closeLen,
|
|
1454
|
+
insert: "",
|
|
1455
|
+
});
|
|
1456
|
+
}
|
|
1457
|
+
else {
|
|
1458
|
+
edits.push({ from: endForward, to: endForward, insert: openMarker });
|
|
1459
|
+
}
|
|
1460
|
+
edits.sort((a, b) => b.from - a.from);
|
|
1461
|
+
newSource = source;
|
|
1462
|
+
for (const edit of edits) {
|
|
1463
|
+
newSource =
|
|
1464
|
+
newSource.slice(0, edit.from) +
|
|
1465
|
+
edit.insert +
|
|
1466
|
+
newSource.slice(edit.to);
|
|
1467
|
+
}
|
|
1468
|
+
}
|
|
1469
|
+
else if (isWrapped) {
|
|
1432
1470
|
// Unwrap
|
|
1433
1471
|
if (isSelectionWrappedByAdjacentMarkers) {
|
|
1434
1472
|
newSource =
|
|
1435
|
-
source.slice(0, from -
|
|
1473
|
+
source.slice(0, from - openLen) +
|
|
1436
1474
|
selectedText +
|
|
1437
|
-
source.slice(to +
|
|
1475
|
+
source.slice(to + closeLen);
|
|
1438
1476
|
}
|
|
1439
1477
|
else {
|
|
1440
|
-
const unwrapped = selectedText.slice(
|
|
1478
|
+
const unwrapped = selectedText.slice(openLen, -closeLen);
|
|
1441
1479
|
newSource = source.slice(0, from) + unwrapped + source.slice(to);
|
|
1442
1480
|
}
|
|
1443
1481
|
}
|
|
1444
1482
|
else {
|
|
1445
1483
|
// Wrap
|
|
1446
|
-
const wrapped =
|
|
1484
|
+
const wrapped = openMarker + selectedText + closeMarker;
|
|
1447
1485
|
newSource = source.slice(0, from) + wrapped + source.slice(to);
|
|
1448
1486
|
}
|
|
1449
1487
|
const next = createState(newSource);
|
|
@@ -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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"}
|
|
@@ -3288,11 +3288,12 @@ export class CakeEditor {
|
|
|
3288
3288
|
if (this.readOnly) {
|
|
3289
3289
|
return;
|
|
3290
3290
|
}
|
|
3291
|
-
//
|
|
3291
|
+
// Block browser's native image drop behavior (which inserts <img> into DOM).
|
|
3292
|
+
// Extensions can listen on the container to handle image uploads themselves.
|
|
3292
3293
|
const dataTransfer = event.dataTransfer;
|
|
3293
3294
|
const hasImageFile = this.dataTransferHasImageFile(dataTransfer);
|
|
3294
3295
|
if (hasImageFile) {
|
|
3295
|
-
|
|
3296
|
+
event.preventDefault();
|
|
3296
3297
|
this.textDragState = null;
|
|
3297
3298
|
return;
|
|
3298
3299
|
}
|
|
@@ -8,7 +8,8 @@ import { imageExtension } from "./image/image";
|
|
|
8
8
|
import { plainTextListExtension } from "./list/list";
|
|
9
9
|
import { scrollbarExtension } from "./scrollbar";
|
|
10
10
|
import { strikethroughExtension } from "./strikethrough/strikethrough";
|
|
11
|
-
|
|
11
|
+
import { underlineExtension } from "./underline/underline";
|
|
12
|
+
export { boldExtension, combinedEmphasisExtension, linkExtension, blockquoteExtension, italicExtension, headingExtension, imageExtension, plainTextListExtension, scrollbarExtension, strikethroughExtension, underlineExtension, };
|
|
12
13
|
export declare const bundledExtensionsWithoutImage: import("../..").CakeExtension[];
|
|
13
14
|
export declare const bundledExtensions: import("../..").CakeExtension[];
|
|
14
15
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cake/extensions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cake/extensions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EACL,aAAa,EACb,yBAAyB,EACzB,aAAa,EACb,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,GACnB,CAAC;AAEF,eAAO,MAAM,6BAA6B,iCAUzC,CAAC;AAEF,eAAO,MAAM,iBAAiB,iCAG7B,CAAC"}
|
|
@@ -8,7 +8,8 @@ import { imageExtension } from "./image/image";
|
|
|
8
8
|
import { plainTextListExtension } from "./list/list";
|
|
9
9
|
import { scrollbarExtension } from "./scrollbar";
|
|
10
10
|
import { strikethroughExtension } from "./strikethrough/strikethrough";
|
|
11
|
-
|
|
11
|
+
import { underlineExtension } from "./underline/underline";
|
|
12
|
+
export { boldExtension, combinedEmphasisExtension, linkExtension, blockquoteExtension, italicExtension, headingExtension, imageExtension, plainTextListExtension, scrollbarExtension, strikethroughExtension, underlineExtension, };
|
|
12
13
|
export const bundledExtensionsWithoutImage = [
|
|
13
14
|
blockquoteExtension,
|
|
14
15
|
headingExtension,
|
|
@@ -17,6 +18,7 @@ export const bundledExtensionsWithoutImage = [
|
|
|
17
18
|
boldExtension,
|
|
18
19
|
italicExtension,
|
|
19
20
|
strikethroughExtension,
|
|
21
|
+
underlineExtension,
|
|
20
22
|
linkExtension,
|
|
21
23
|
];
|
|
22
24
|
export const bundledExtensions = [
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cake/extensions/underline/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./underline";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"underline.d.ts","sourceRoot":"","sources":["../../../../src/cake/extensions/underline/underline.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,kBAAkB,kCAyE7B,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { defineExtension, } from "../../core/runtime";
|
|
2
|
+
import { CursorSourceBuilder } from "../../core/mapping/cursor-source-map";
|
|
3
|
+
const UNDERLINE_KIND = "underline";
|
|
4
|
+
export const underlineExtension = defineExtension({
|
|
5
|
+
name: "underline",
|
|
6
|
+
toggleInline: { kind: UNDERLINE_KIND, markers: [{ open: "<u>", close: "</u>" }] },
|
|
7
|
+
keybindings: [
|
|
8
|
+
{ key: "u", meta: true, shift: false, command: { type: "toggle-underline" } },
|
|
9
|
+
{ key: "u", ctrl: true, shift: false, command: { type: "toggle-underline" } },
|
|
10
|
+
],
|
|
11
|
+
inlineWrapperAffinity: [{ kind: UNDERLINE_KIND, inclusive: true }],
|
|
12
|
+
onEdit(command) {
|
|
13
|
+
if (command.type === "toggle-underline") {
|
|
14
|
+
return { type: "toggle-inline", marker: "<u>" };
|
|
15
|
+
}
|
|
16
|
+
return null;
|
|
17
|
+
},
|
|
18
|
+
parseInline(source, start, end, context) {
|
|
19
|
+
if (source.slice(start, start + 3) !== "<u>") {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
const close = source.indexOf("</u>", start + 3);
|
|
23
|
+
if (close === -1 || close >= end) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
const children = context.parseInline(source, start + 3, close);
|
|
27
|
+
return {
|
|
28
|
+
inline: {
|
|
29
|
+
type: "inline-wrapper",
|
|
30
|
+
kind: UNDERLINE_KIND,
|
|
31
|
+
children,
|
|
32
|
+
},
|
|
33
|
+
nextPos: close + 4,
|
|
34
|
+
};
|
|
35
|
+
},
|
|
36
|
+
serializeInline(inline, context) {
|
|
37
|
+
if (inline.type !== "inline-wrapper" || inline.kind !== UNDERLINE_KIND) {
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
const builder = new CursorSourceBuilder();
|
|
41
|
+
builder.appendSourceOnly("<u>");
|
|
42
|
+
for (const child of inline.children) {
|
|
43
|
+
const serialized = context.serializeInline(child);
|
|
44
|
+
builder.appendSerialized(serialized);
|
|
45
|
+
}
|
|
46
|
+
builder.appendSourceOnly("</u>");
|
|
47
|
+
return builder.build();
|
|
48
|
+
},
|
|
49
|
+
normalizeInline(inline) {
|
|
50
|
+
if (inline.type !== "inline-wrapper" || inline.kind !== UNDERLINE_KIND) {
|
|
51
|
+
return inline;
|
|
52
|
+
}
|
|
53
|
+
if (inline.children.length === 0) {
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
return inline;
|
|
57
|
+
},
|
|
58
|
+
renderInline(inline, context) {
|
|
59
|
+
if (inline.type !== "inline-wrapper" || inline.kind !== UNDERLINE_KIND) {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
const element = document.createElement("u");
|
|
63
|
+
element.className = "cake-underline";
|
|
64
|
+
for (const child of inline.children) {
|
|
65
|
+
for (const node of context.renderInline(child)) {
|
|
66
|
+
element.append(node);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return element;
|
|
70
|
+
},
|
|
71
|
+
});
|