@blankdotpage/cake 0.1.13 → 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.
@@ -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":"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"}
@@ -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 toggleMarkerToKind = new Map();
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
- toggleMarkerToKind.set(marker, toggle.kind);
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 markerKind = toggleMarkerToKind.get(marker) ?? null;
1224
- if (markerKind) {
1225
- const around = marksAroundCursor(state.doc, caret);
1226
- if (isMarksPrefix(around.right, around.left) &&
1227
- around.left.length > around.right.length) {
1228
- const exiting = around.left.slice(around.right.length);
1229
- if (exiting.some((mark) => mark.kind === markerKind)) {
1230
- if (exiting.length > 1) {
1231
- const placeholder = "\u200B";
1232
- const insertAtForward = map.cursorToSource(caret, "forward");
1233
- const insertAtBackward = map.cursorToSource(caret, "backward");
1234
- const between = source.slice(insertAtBackward, insertAtForward);
1235
- const markerIndex = between.indexOf(marker);
1236
- if (markerIndex !== -1) {
1237
- const insertAt = insertAtBackward + markerIndex + markerLen;
1238
- const nextSource = source.slice(0, insertAt) +
1239
- placeholder +
1240
- source.slice(insertAt);
1241
- const next = createState(nextSource);
1242
- const placeholderStart = insertAt;
1243
- const startCursor = next.map.sourceToCursor(placeholderStart, "forward");
1244
- return {
1245
- ...next,
1246
- selection: {
1247
- start: startCursor.cursorOffset,
1248
- end: startCursor.cursorOffset,
1249
- affinity: "forward",
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
- marker +
1296
+ openMarker +
1291
1297
  placeholder +
1292
- marker +
1298
+ closeMarker +
1293
1299
  source.slice(insertAt + placeholder.length)
1294
1300
  : source.slice(0, insertAt) +
1295
- marker +
1301
+ openMarker +
1296
1302
  placeholder +
1297
- marker +
1303
+ closeMarker +
1298
1304
  source.slice(insertAt);
1299
1305
  const next = createState(nextSource);
1300
- const placeholderStart = insertAt + markerLen;
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 = markerKind
1320
- ? commonMarksAcrossSelection(linesForSelection, cursorStart, cursorEnd, state.doc)
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 (markerKind &&
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 >= markerLen &&
1379
- source.slice(segmentFrom - markerLen, segmentFrom) === marker) {
1379
+ if (segmentFrom >= openLen &&
1380
+ source.slice(segmentFrom - openLen, segmentFrom) === openMarker) {
1380
1381
  edits.push({
1381
- from: segmentFrom - markerLen,
1382
+ from: segmentFrom - openLen,
1382
1383
  to: segmentFrom,
1383
1384
  insert: "",
1384
1385
  });
1385
1386
  }
1386
- if (source.slice(segmentTo, segmentTo + markerLen) === marker) {
1387
+ if (source.slice(segmentTo, segmentTo + closeLen) === closeMarker) {
1387
1388
  edits.push({
1388
1389
  from: segmentTo,
1389
- to: segmentTo + markerLen,
1390
+ to: segmentTo + closeLen,
1390
1391
  insert: "",
1391
1392
  });
1392
1393
  }
1393
1394
  }
1394
1395
  else {
1395
- edits.push({ from: segmentFrom, to: segmentFrom, insert: marker });
1396
- edits.push({ from: segmentTo, to: segmentTo, insert: marker });
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 = markerLen > 0 &&
1421
- from >= markerLen &&
1422
- source.slice(from - markerLen, from) === marker &&
1423
- source.slice(to, to + markerLen) === marker;
1424
- const isWrappedBySelectionText = selectedText.startsWith(marker) &&
1425
- selectedText.endsWith(marker) &&
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 - markerLen) +
1473
+ source.slice(0, from - openLen) +
1436
1474
  selectedText +
1437
- source.slice(to + markerLen);
1475
+ source.slice(to + closeLen);
1438
1476
  }
1439
1477
  else {
1440
- const unwrapped = selectedText.slice(markerLen, -markerLen);
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 = marker + selectedText + marker;
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);
@@ -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
- export { boldExtension, combinedEmphasisExtension, linkExtension, blockquoteExtension, italicExtension, headingExtension, imageExtension, plainTextListExtension, scrollbarExtension, strikethroughExtension, };
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;AAEvE,OAAO,EACL,aAAa,EACb,yBAAyB,EACzB,aAAa,EACb,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,GACvB,CAAC;AAEF,eAAO,MAAM,6BAA6B,iCASzC,CAAC;AAEF,eAAO,MAAM,iBAAiB,iCAG7B,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
- export { boldExtension, combinedEmphasisExtension, linkExtension, blockquoteExtension, italicExtension, headingExtension, imageExtension, plainTextListExtension, scrollbarExtension, strikethroughExtension, };
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,2 @@
1
+ export * from "./underline";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -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,2 @@
1
+ export declare const underlineExtension: import("../../..").CakeExtension;
2
+ //# sourceMappingURL=underline.d.ts.map
@@ -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
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blankdotpage/cake",
3
- "version": "0.1.13",
3
+ "version": "0.1.14",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",