@openleaf-editor/core 0.1.0-beta.2 → 0.1.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. package/README.md +115 -0
  2. package/dist/autolink.d.ts.map +1 -1
  3. package/dist/autolink.js +45 -7
  4. package/dist/autolink.js.map +1 -1
  5. package/dist/command-helpers.d.ts +8 -0
  6. package/dist/command-helpers.d.ts.map +1 -0
  7. package/dist/command-helpers.js +36 -0
  8. package/dist/command-helpers.js.map +1 -0
  9. package/dist/commands.d.ts +15 -61
  10. package/dist/commands.d.ts.map +1 -1
  11. package/dist/commands.js +295 -343
  12. package/dist/commands.js.map +1 -1
  13. package/dist/css.d.ts +1 -175
  14. package/dist/css.d.ts.map +1 -1
  15. package/dist/css.js +1 -516
  16. package/dist/css.js.map +1 -1
  17. package/dist/disclosure.d.ts +21 -0
  18. package/dist/disclosure.d.ts.map +1 -0
  19. package/dist/disclosure.js +144 -0
  20. package/dist/disclosure.js.map +1 -0
  21. package/dist/elements.d.ts +2 -0
  22. package/dist/elements.d.ts.map +1 -0
  23. package/dist/elements.js +2 -0
  24. package/dist/elements.js.map +1 -0
  25. package/dist/embed.d.ts +1 -51
  26. package/dist/embed.d.ts.map +1 -1
  27. package/dist/embed.js +1 -115
  28. package/dist/embed.js.map +1 -1
  29. package/dist/errors.d.ts +38 -0
  30. package/dist/errors.d.ts.map +1 -0
  31. package/dist/errors.js +40 -0
  32. package/dist/errors.js.map +1 -0
  33. package/dist/extensions.d.ts +46 -5
  34. package/dist/extensions.d.ts.map +1 -1
  35. package/dist/extensions.js +272 -52
  36. package/dist/extensions.js.map +1 -1
  37. package/dist/formats.d.ts.map +1 -1
  38. package/dist/formats.js +19 -7
  39. package/dist/formats.js.map +1 -1
  40. package/dist/html.d.ts +32 -2
  41. package/dist/html.d.ts.map +1 -1
  42. package/dist/html.js +185 -31
  43. package/dist/html.js.map +1 -1
  44. package/dist/index.d.ts +21 -6
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +32 -6
  47. package/dist/index.js.map +1 -1
  48. package/dist/insert-commands.d.ts +172 -0
  49. package/dist/insert-commands.d.ts.map +1 -0
  50. package/dist/insert-commands.js +560 -0
  51. package/dist/insert-commands.js.map +1 -0
  52. package/dist/isolating-selection.d.ts +41 -0
  53. package/dist/isolating-selection.d.ts.map +1 -0
  54. package/dist/isolating-selection.js +162 -0
  55. package/dist/isolating-selection.js.map +1 -0
  56. package/dist/noneditable.d.ts.map +1 -1
  57. package/dist/noneditable.js +18 -4
  58. package/dist/noneditable.js.map +1 -1
  59. package/dist/plugins.d.ts +20 -2
  60. package/dist/plugins.d.ts.map +1 -1
  61. package/dist/plugins.js +27 -2
  62. package/dist/plugins.js.map +1 -1
  63. package/dist/preserve.d.ts +48 -17
  64. package/dist/preserve.d.ts.map +1 -1
  65. package/dist/preserve.js +214 -43
  66. package/dist/preserve.js.map +1 -1
  67. package/dist/schema.d.ts +15 -0
  68. package/dist/schema.d.ts.map +1 -1
  69. package/dist/schema.js +157 -28
  70. package/dist/schema.js.map +1 -1
  71. package/dist/structure.d.ts +32 -0
  72. package/dist/structure.d.ts.map +1 -1
  73. package/dist/structure.js +53 -10
  74. package/dist/structure.js.map +1 -1
  75. package/dist/tables.d.ts +47 -1
  76. package/dist/tables.d.ts.map +1 -1
  77. package/dist/tables.js +417 -40
  78. package/dist/tables.js.map +1 -1
  79. package/dist/testing.d.ts +3 -0
  80. package/dist/testing.d.ts.map +1 -0
  81. package/dist/testing.js +3 -0
  82. package/dist/testing.js.map +1 -0
  83. package/dist/tokens.d.ts +8 -0
  84. package/dist/tokens.d.ts.map +1 -1
  85. package/dist/tokens.js +54 -6
  86. package/dist/tokens.js.map +1 -1
  87. package/dist/url.d.ts +1 -25
  88. package/dist/url.d.ts.map +1 -1
  89. package/dist/url.js +1 -77
  90. package/dist/url.js.map +1 -1
  91. package/dist/visual-aids.d.ts +11 -1
  92. package/dist/visual-aids.d.ts.map +1 -1
  93. package/dist/visual-aids.js +124 -36
  94. package/dist/visual-aids.js.map +1 -1
  95. package/package.json +15 -1
@@ -39,10 +39,14 @@
39
39
  * documents in its shape. `replaces` is the explicit opt-in.
40
40
  */
41
41
  import OrderedMap from 'orderedmap';
42
- import { Schema, } from 'prosemirror-model';
43
- import { MODELLED_PROPERTIES, applyStyleAttribute, indentLevels, parseDeclarations, serializeDeclarations, } from './css.js';
44
- import { coreMarks, coreNodes } from './schema.js';
45
- import { URL_ATTRIBUTES, isEventHandlerAttribute, isSafeUrl } from './url.js';
42
+ import { DOMSerializer, Schema, } from 'prosemirror-model';
43
+ import { INLINE_STYLE_PROPERTIES, MODELLED_PROPERTIES, applyStyleAttribute, indentLevels, parseDeclarations, serializeDeclarations, } from './css.js';
44
+ import { OpenLeafError } from './errors.js';
45
+ import { serializationTarget } from './preserve.js';
46
+ import { coreMarks, coreNodes, listStart } from './schema.js';
47
+ import { CARRIED_STYLE_SCRUBS } from './tables.js';
48
+ import { isWritableAttributeName, safeId } from './tokens.js';
49
+ import { URL_ATTRIBUTES, isEventHandlerAttribute, isNeverCarriedAttribute, isSafeUrl, } from './url.js';
46
50
  /** Where carried attributes live. Underscored: it is not for plugin authors. */
47
51
  export const CARRIED_ATTR = '__openleafCarried';
48
52
  /* ------------------------------------------------------------------ *
@@ -74,6 +78,11 @@ export function registerSchemaExtension(extension) {
74
78
  'The second registration was ignored.');
75
79
  return () => undefined;
76
80
  }
81
+ // Build the schema this registration would produce, and throw here if it does
82
+ // not build. Without this the collision still threw -- but on some later,
83
+ // unrelated `coreSchema()` call, with a stack pointing at whichever editor
84
+ // happened to be constructed next rather than at the extension that clashed.
85
+ createSchema([...extensions.values(), extension]);
77
86
  extensions.set(extension.id, extension);
78
87
  notify();
79
88
  return () => {
@@ -104,15 +113,21 @@ function isPlainObject(value) {
104
113
  return typeof value === 'object' && value !== null && !Array.isArray(value);
105
114
  }
106
115
  /**
107
- * Residue a spec has already encoded into a modelled attribute, and so must not
108
- * carry a second copy of.
116
+ * Put an attribute back into the residue when the spec's validator refused it.
109
117
  *
110
- * `code_block` reads `language-js` from either `<pre>` or `<code>` and re-emits
111
- * it on `<code>` -- read both, write one. Carrying the `<pre>`'s class verbatim
112
- * writes it twice, so the language token is dropped from the residue while any
113
- * other class the author put there is kept. Keyed by node name because the
114
- * overlap is a property of the spec, not of the attribute.
118
+ * `accepted` is asked rather than assumed, because the two outcomes need
119
+ * opposite treatment and only the validator can tell them apart. A value the
120
+ * spec took is re-emitted from the modelled attribute and must NOT also sit in
121
+ * the residue, or it goes out twice. A value the spec refused is not re-emitted
122
+ * at all, and carrying it is the difference between "we would not store that as
123
+ * an id" -- which is our business -- and "so we deleted it", which is not.
115
124
  */
125
+ function carryRejected(carried, dom, name, accepted) {
126
+ const value = dom.getAttribute(name);
127
+ if (value === null || accepted(value))
128
+ return;
129
+ carried[name] = value;
130
+ }
116
131
  const CARRY_SCRUB = {
117
132
  code_block(carried) {
118
133
  const cls = carried['class'];
@@ -125,9 +140,23 @@ const CARRY_SCRUB = {
125
140
  delete carried['class'];
126
141
  },
127
142
  paragraph: scrubModelledStyle,
128
- heading: scrubModelledStyle,
143
+ heading(carried, dom) {
144
+ scrubModelledStyle(carried);
145
+ carryRejected(carried, dom, 'id', (value) => safeId(value) !== null);
146
+ },
129
147
  bullet_list: scrubModelledStyle,
130
- ordered_list: scrubModelledStyle,
148
+ ordered_list(carried, dom) {
149
+ scrubModelledStyle(carried);
150
+ carryRejected(carried, dom, 'start', (value) => listStart(value) !== null);
151
+ },
152
+ link(carried, dom) {
153
+ carryRejected(carried, dom, 'id', (value) => safeId(value) !== null);
154
+ },
155
+ // Tables model a handful of declarations out of a `style` attribute they also
156
+ // declare as an attribute of their own. The scrubs are defined next to the
157
+ // validator that decides what "modelled" means for them, so the two cannot
158
+ // drift into either dropping a declaration twice or keeping it twice.
159
+ ...CARRIED_STYLE_SCRUBS,
131
160
  };
132
161
  /**
133
162
  * Drop the declarations a text block now models from its carried residue.
@@ -147,6 +176,7 @@ function scrubModelledStyle(carried) {
147
176
  if (style === undefined)
148
177
  return;
149
178
  const declarations = parseDeclarations(style);
179
+ const before = declarations.size;
150
180
  for (const name of MODELLED_PROPERTIES)
151
181
  declarations.delete(name);
152
182
  // Indent aliases consumed into the `indent` attribute. Only dropped when they
@@ -156,12 +186,50 @@ function scrubModelledStyle(carried) {
156
186
  if (value !== undefined && indentLevels(value) !== null)
157
187
  declarations.delete(name);
158
188
  }
189
+ // Nothing was consumed, so there is nothing to rewrite. Re-serializing anyway
190
+ // would re-spell a declaration the schema does not model, which is the thing
191
+ // this whole mechanism exists to avoid: `letter-spacing: 0.08em;` is the
192
+ // author's, and `letter-spacing:0.08em` is ours.
193
+ if (declarations.size === before)
194
+ return;
159
195
  const rest = serializeDeclarations(declarations);
160
196
  if (rest !== null)
161
197
  carried['style'] = rest;
162
198
  else
163
199
  delete carried['style'];
164
200
  }
201
+ /**
202
+ * Word's `mso-*` properties, removed from residue on the way in.
203
+ *
204
+ * These are the one exception to "carry every declaration the schema does not
205
+ * model", and it needs arguing because the default is so strongly the other way.
206
+ * `mso-list:l0 level1 lfo1` is not CSS: it is Microsoft Office document-format
207
+ * metadata that happens to travel in a `style` attribute, and no engine renders
208
+ * it. Carrying it would mean the editor re-emitting Word debris it used to
209
+ * clean, on every save, forever -- "pasting a wall of vendor styling into the
210
+ * document" is the failure the paste pipeline exists to prevent, and the schema
211
+ * should not reintroduce it from behind.
212
+ *
213
+ * It used to be removed by accident: a spec array's `style` went out through
214
+ * `dom.style.cssText`, and the CSSOM silently discards any property it cannot
215
+ * parse. That filter was never intentional and was never safe -- it also
216
+ * discarded valid CSS that a given engine did not happen to know -- so it is
217
+ * gone (see the array branch of `withCarriedAttributes`), and what was worth
218
+ * keeping about it is stated here instead, narrowly and on purpose.
219
+ *
220
+ * Returns the string unchanged when there is nothing to remove, so a residue
221
+ * with no Office metadata in it keeps the author's exact spelling.
222
+ */
223
+ function withoutOfficeMetadata(style) {
224
+ if (!/(?:^|[;\s])mso-/i.test(style))
225
+ return style;
226
+ const declarations = parseDeclarations(style);
227
+ for (const name of [...declarations.keys()]) {
228
+ if (name.startsWith('mso-'))
229
+ declarations.delete(name);
230
+ }
231
+ return serializeDeclarations(declarations);
232
+ }
165
233
  /**
166
234
  * Merge carried residue with the attributes a spec produced.
167
235
  *
@@ -186,12 +254,21 @@ function scrubModelledStyle(carried) {
186
254
  function applyCarriedToElement(el, carried) {
187
255
  for (const [name, value] of Object.entries(carried)) {
188
256
  if (name === 'style') {
257
+ const own = parseDeclarations(el.getAttribute('style'));
258
+ // Nothing of the spec's own to merge with, so the residue goes out exactly
259
+ // as it was stored. Round-tripping it through the declaration parser would
260
+ // re-spell CSS the schema does not model, for no gain -- and the whole
261
+ // reason this branch exists rather than letting the serializer do it is to
262
+ // stop the author's spelling being rewritten.
263
+ if (own.size === 0) {
264
+ applyStyleAttribute(el, value);
265
+ continue;
266
+ }
189
267
  const declarations = parseDeclarations(value);
190
268
  // Residue first, then what the spec wrote, so a modelled declaration wins
191
269
  // over a stale copy of itself while everything else survives.
192
- for (const [property, css] of parseDeclarations(el.getAttribute('style'))) {
270
+ for (const [property, css] of own)
193
271
  declarations.set(property, css);
194
- }
195
272
  const style = serializeDeclarations(declarations);
196
273
  if (style !== null)
197
274
  applyStyleAttribute(el, style);
@@ -203,57 +280,132 @@ function applyCarriedToElement(el, carried) {
203
280
  }
204
281
  }
205
282
  function mergeCarried(carried, modelled) {
206
- const merged = { ...carried, ...modelled };
207
- const before = carried['style'];
208
- const after = modelled['style'];
209
- if (typeof before === 'string' && typeof after === 'string') {
210
- const declarations = parseDeclarations(before);
211
- for (const [name, value] of parseDeclarations(after))
212
- declarations.set(name, value);
213
- const style = serializeDeclarations(declarations);
214
- if (style !== null)
215
- merged['style'] = style;
216
- else
217
- delete merged['style'];
283
+ // Modelled names first so `<a href>` stays `href` then `class`, not the
284
+ // reverse -- residue used to be spread first and HTML attribute order is
285
+ // load-bearing for byte-identical round trips.
286
+ const merged = { ...modelled };
287
+ for (const [name, value] of Object.entries(carried)) {
288
+ if (name === 'style' && typeof merged['style'] === 'string') {
289
+ const declarations = parseDeclarations(value);
290
+ for (const [property, css] of parseDeclarations(merged['style'])) {
291
+ declarations.set(property, css);
292
+ }
293
+ const style = serializeDeclarations(declarations);
294
+ if (style !== null)
295
+ merged['style'] = style;
296
+ else
297
+ delete merged['style'];
298
+ continue;
299
+ }
300
+ if (!(name in modelled))
301
+ merged[name] = value;
218
302
  }
219
303
  return merged;
220
304
  }
221
305
  /**
222
- * Wrap a node spec so attributes it does not model survive the round trip.
306
+ * Wrap a spec so attributes it does not model survive the round trip.
307
+ *
308
+ * Applied to extension nodes and marks unless they opt out: they only ever
309
+ * claim markup the preservation layer previously kept in full, so carrying the
310
+ * residue is a pure improvement over the alternative of silently dropping it.
223
311
  *
224
- * Applied to extension nodes unconditionally: they only ever claim markup the
225
- * preservation layer previously kept in full, so carrying the residue is a pure
226
- * improvement over the alternative of silently dropping it.
312
+ * Style parse rules are left alone. They match a declaration, not an element,
313
+ * so there is no attribute list to harvest -- and wrapping them would pass a
314
+ * CSS string into a collector that expects `HTMLElement.attributes`.
227
315
  */
228
- function withCarriedAttributes(name, spec) {
316
+ function isTagParseRule(rule) {
317
+ return typeof rule.tag === 'string';
318
+ }
319
+ function withCarriedAttributes(name, spec, kind) {
229
320
  const modelled = new Set(Object.keys(spec.attrs ?? {}));
230
321
  const attrs = { ...(spec.attrs ?? {}), [CARRIED_ATTR]: { default: null } };
231
- // A node's parse rules are always tag rules -- only marks may match styles --
232
- // so the narrower type is the accurate one and keeps the map total.
233
322
  const parseDOM = (spec.parseDOM ?? []).map((rule) => {
323
+ if (!isTagParseRule(rule))
324
+ return rule;
234
325
  const original = rule.getAttrs;
235
326
  return {
236
327
  ...rule,
237
328
  getAttrs(dom) {
238
329
  const base = original ? original.call(rule, dom) : (rule.attrs ?? {});
239
- if (base === false || base === null || base === undefined)
240
- return base;
330
+ /*
331
+ * Only `false` is a decline.
332
+ *
333
+ * `null` and `undefined` are ProseMirror's "this rule matches, with the
334
+ * type's default attributes" -- a very different statement, and treating
335
+ * them as a decline meant the wrapper handed the element straight back
336
+ * with no residue at all. `<hr class="page-rule" id="sep">` came back as
337
+ * a bare `<hr>`, because `horizontal_rule`'s rule returns `null` for
338
+ * every rule that is not a page break. Every attribute on the element,
339
+ * gone, from a branch that reads like a guard.
340
+ */
341
+ if (base === false)
342
+ return false;
241
343
  const carried = {};
242
344
  for (const attr of Array.from(dom.attributes ?? [])) {
243
- if (modelled.has(attr.name))
345
+ // `style` is never treated as modelled, even by a spec that declares
346
+ // an attribute of that name. It is the one COMPOSITE attribute in
347
+ // HTML: a node models individual declarations, not the whole string,
348
+ // so "the spec claimed it" is not the same statement it is for `class`
349
+ // or `colspan`. Table cells declare `style` and keep two properties
350
+ // out of it, and the skip below therefore threw away everything else
351
+ // with no residue at all -- `<td style="border:1px solid red">` came
352
+ // back as `<td>`, and `border` and `border-collapse` are how fifteen
353
+ // years of CMS tables are styled. The declarations a spec really did
354
+ // consume are removed by that node's CARRY_SCRUB instead, which is
355
+ // already how `<p style="text-align:center">` avoids being emitted
356
+ // twice.
357
+ // Before every other test, because it is the only one about whether
358
+ // the attribute can exist at all. The HTML parser accepts names
359
+ // `setAttribute` refuses -- `<p ="v">` parses to an attribute named
360
+ // `="v"` -- and carrying one meant the throw landed later, in the
361
+ // middle of rendering the document, from a name no author wrote.
362
+ if (!isWritableAttributeName(attr.name))
363
+ continue;
364
+ if (attr.name !== 'style' && modelled.has(attr.name))
244
365
  continue;
245
366
  // Same scrub as the preservation layer: carrying `onclick` or a
246
367
  // `javascript:` URL would reintroduce exactly the executable content
247
368
  // core promises to drop.
248
369
  if (isEventHandlerAttribute(attr.name))
249
370
  continue;
371
+ // Markup-bearing attributes are refused outright rather than
372
+ // scheme-checked. This path never reaches scrub(): the iframe node
373
+ // claims an allowlisted player, and `srcdoc` -- which the HTML spec
374
+ // gives precedence over `src` -- rode in here as residue, so the
375
+ // frame rendered the attacker's document and never fetched YouTube.
376
+ if (isNeverCarriedAttribute(attr.name))
377
+ continue;
250
378
  if (URL_ATTRIBUTES.has(attr.name.toLowerCase()) && !isSafeUrl(attr.value))
251
379
  continue;
380
+ // Google Docs wraps a paste in `<b id="docs-internal-guid-...">`.
381
+ // The paste pipeline strips that id; this is the schema-level
382
+ // backstop on the `strong` mark that claims that wrapper -- not on
383
+ // every node, or `<p id="docs-internal-guidelines">` would lose a
384
+ // legitimate id.
385
+ if (kind === 'mark' &&
386
+ name === 'strong' &&
387
+ attr.name === 'id' &&
388
+ /^docs-internal-guid/i.test(attr.value)) {
389
+ continue;
390
+ }
391
+ if (attr.name === 'style') {
392
+ let css = withoutOfficeMetadata(attr.value);
393
+ if (css !== null && kind === 'mark') {
394
+ const declarations = parseDeclarations(css);
395
+ for (const property of INLINE_STYLE_PROPERTIES) {
396
+ declarations.delete(property);
397
+ }
398
+ css = serializeDeclarations(declarations);
399
+ }
400
+ if (css !== null)
401
+ carried['style'] = css;
402
+ continue;
403
+ }
252
404
  carried[attr.name] = attr.value;
253
405
  }
254
- CARRY_SCRUB[name]?.(carried);
406
+ CARRY_SCRUB[name]?.(carried, dom);
255
407
  return {
256
- ...base,
408
+ ...(base ?? {}),
257
409
  [CARRIED_ATTR]: Object.keys(carried).length > 0 ? carried : null,
258
410
  };
259
411
  },
@@ -261,9 +413,9 @@ function withCarriedAttributes(name, spec) {
261
413
  });
262
414
  const originalToDOM = spec.toDOM;
263
415
  const toDOM = originalToDOM
264
- ? (node) => {
265
- const out = originalToDOM(node);
266
- const carried = node.attrs[CARRIED_ATTR];
416
+ ? (first, ...rest) => {
417
+ const out = originalToDOM(first, ...rest);
418
+ const carried = first.attrs[CARRIED_ATTR];
267
419
  if (!carried)
268
420
  return out;
269
421
  if (!Array.isArray(out)) {
@@ -274,6 +426,29 @@ function withCarriedAttributes(name, spec) {
274
426
  applyCarriedToElement(dom, carried);
275
427
  return out;
276
428
  }
429
+ /*
430
+ * Residue holding CSS cannot go out on a spec array.
431
+ *
432
+ * prosemirror-model writes a spec array's `style` with
433
+ * `dom.style.cssText = value`, which is a CSSOM parse and therefore a
434
+ * rewrite: `margin-bottom:0` comes back `margin-bottom: 0px`. `0` to
435
+ * `0px` is a change to the VALUE, not just the spelling, and it happens
436
+ * to every paragraph carrying an unmodelled declaration on its first
437
+ * save. css.ts argues at length that silently rewriting an archive's CSS
438
+ * is not a diff this project gets to put in a revision history;
439
+ * `applyStyleAttribute` exists to prevent exactly this and was reachable
440
+ * only from the element path.
441
+ *
442
+ * So when -- and only when -- there is CSS to carry, the array is
443
+ * rendered here and the residue applied to the real element, which is
444
+ * the same route `elementWithStyle` in schema.ts already takes. Specs
445
+ * with no CSS residue keep the cheaper array path.
446
+ */
447
+ if (typeof carried['style'] === 'string') {
448
+ const rendered = DOMSerializer.renderSpec(serializationTarget(), out);
449
+ applyCarriedToElement(rendered.dom, carried);
450
+ return (rendered.contentDOM ? rendered : rendered.dom);
451
+ }
277
452
  const result = [...out];
278
453
  if (isPlainObject(result[1])) {
279
454
  result[1] = mergeCarried(carried, result[1]);
@@ -292,7 +467,7 @@ function withCarriedAttributes(name, spec) {
292
467
  function assertRulePriorities(extensionId, name, spec) {
293
468
  for (const rule of (spec.parseDOM ?? [])) {
294
469
  if (rule.priority !== undefined && rule.priority <= 1) {
295
- throw new Error(`@openleaf-editor/core: extension "${extensionId}" gives "${name}" a parse rule at ` +
470
+ throw new OpenLeafError('invalid-argument', `@openleaf-editor/core: extension "${extensionId}" gives "${name}" a parse rule at ` +
296
471
  `priority ${rule.priority}. The preservation layer's catch-all rules sit at ` +
297
472
  'priority 0 and 1, so this rule would tie with them and the winner would be ' +
298
473
  'decided by insertion order. Remove the priority: the default already wins.');
@@ -303,13 +478,13 @@ function claim(claimed, kind, name, extension, existsInCore) {
303
478
  const replaces = new Set(extension.replaces ?? []);
304
479
  const previous = claimed.get(`${kind}:${name}`);
305
480
  if (previous && !replaces.has(name)) {
306
- throw new Error(`@openleaf-editor/core: extensions "${previous}" and "${extension.id}" both define the ` +
481
+ throw new OpenLeafError('schema-conflict', `@openleaf-editor/core: extensions "${previous}" and "${extension.id}" both define the ` +
307
482
  `${kind} "${name}". A ${kind} type is a storage format, not a preference: two ` +
308
483
  'definitions mean two serializations of the same content chosen by load order. ' +
309
484
  `If replacing it is intended, declare replaces: ['${name}'].`);
310
485
  }
311
486
  if (existsInCore && !replaces.has(name)) {
312
- throw new Error(`@openleaf-editor/core: extension "${extension.id}" defines the ${kind} "${name}", which ` +
487
+ throw new OpenLeafError('schema-conflict', `@openleaf-editor/core: extension "${extension.id}" defines the ${kind} "${name}", which ` +
313
488
  `already exists in the base schema. If replacing it is intended, declare ` +
314
489
  `replaces: ['${name}'].`);
315
490
  }
@@ -334,13 +509,23 @@ function coreNodesWithCarriedAttributes() {
334
509
  // it is how `<p class="lead">` became `<p>` on the first save.
335
510
  let nodes = OrderedMap.from({});
336
511
  for (const [name, spec] of Object.entries(coreNodes)) {
337
- nodes = nodes.addToEnd(name, SKIP_CARRY.has(name) ? spec : withCarriedAttributes(name, spec));
512
+ nodes = nodes.addToEnd(name, SKIP_CARRY.has(name) ? spec : withCarriedAttributes(name, spec, 'node'));
338
513
  }
339
514
  return nodes;
340
515
  }
516
+ function coreMarksWithCarriedAttributes() {
517
+ // The same hole as core nodes, on the other half of the schema: `<strong
518
+ // class="brand-name">` became `<strong>` because a mark spec kept the tag and
519
+ // nothing else, and the carry wrapper never ran.
520
+ let marks = OrderedMap.from({});
521
+ for (const [name, spec] of Object.entries(coreMarks)) {
522
+ marks = marks.addToEnd(name, withCarriedAttributes(name, spec, 'mark'));
523
+ }
524
+ return marks;
525
+ }
341
526
  export function createSchema(list = []) {
342
527
  let nodes = coreNodesWithCarriedAttributes();
343
- let marks = OrderedMap.from(coreMarks);
528
+ let marks = coreMarksWithCarriedAttributes();
344
529
  const claimed = new Map();
345
530
  for (const extension of list) {
346
531
  for (const [name, spec] of Object.entries(extension.nodes ?? {})) {
@@ -348,7 +533,7 @@ export function createSchema(list = []) {
348
533
  claim(claimed, 'node', name, extension, Object.hasOwn(coreNodes, name));
349
534
  const prepared = extension.carryUnknownAttributes === false
350
535
  ? spec
351
- : withCarriedAttributes(name, spec);
536
+ : withCarriedAttributes(name, spec, 'node');
352
537
  // addToEnd, never prepend: a leading block node becomes the document's
353
538
  // defaultType and every new document would start with it.
354
539
  nodes = nodes.remove(name).addToEnd(name, prepared);
@@ -356,12 +541,16 @@ export function createSchema(list = []) {
356
541
  for (const [name, spec] of Object.entries(extension.marks ?? {})) {
357
542
  assertRulePriorities(extension.id, name, spec);
358
543
  claim(claimed, 'mark', name, extension, Object.hasOwn(coreMarks, name));
359
- marks = marks.remove(name).addToEnd(name, spec);
544
+ const prepared = extension.carryUnknownAttributes === false
545
+ ? spec
546
+ : withCarriedAttributes(name, spec, 'mark');
547
+ marks = marks.remove(name).addToEnd(name, prepared);
360
548
  }
361
549
  }
362
550
  return new Schema({ nodes, marks });
363
551
  }
364
552
  let cached = null;
553
+ let subscribed = false;
365
554
  /**
366
555
  * The schema for the currently registered extensions.
367
556
  *
@@ -369,13 +558,44 @@ let cached = null;
369
558
  * "bind to this" and would be captured at import by every consumer, which is
370
559
  * exactly what made the schema impossible to extend. Memoized, and invalidated
371
560
  * whenever the registry changes.
561
+ *
562
+ * ## Why the subscription is in here and not at module scope
563
+ *
564
+ * This package declares `"sideEffects": false`, which is a literal promise that
565
+ * evaluating a module for its own sake changes nothing observable. The bare
566
+ * top-level `onSchemaExtensionsChange(() => { cached = null })` that used to sit
567
+ * below this function broke that promise: it mutates the listener set in the
568
+ * registry above, which is observable by anything that calls `notify()`.
569
+ *
570
+ * What it did *not* do, measured rather than assumed, is actually get dropped.
571
+ * Both rollup 4 (`treeshake.moduleSideEffects: false`) and webpack 5
572
+ * (`optimization.sideEffects`) keep the statement, because the arrow function
573
+ * writes `cached` and `cached` is read by this function -- so the tree-shaker
574
+ * can see the statement contributes to a live export and retains it. A probe
575
+ * that warms the memo, registers an extension and re-reads the schema returns
576
+ * the plugin's node type under both bundlers, before and after this change.
577
+ *
578
+ * It is moved anyway, because the retention depended entirely on that linkage
579
+ * being visible. It is not a property of the invalidator; it is a property of
580
+ * this particular pair of statements, and it would quietly stop holding the
581
+ * moment the memo is refactored -- at which point the failure is silent and
582
+ * total, since `coreSchema()` would keep handing back a schema built before the
583
+ * first `registerSchemaExtension` call. Registering on the first call costs a
584
+ * boolean and makes the flag true instead of true-by-luck.
585
+ *
586
+ * There is no window in which the invalidator is missing: the subscription is
587
+ * installed before the value it guards ever exists, and nothing can reach the
588
+ * memo except through here.
372
589
  */
373
590
  export function coreSchema() {
591
+ if (!subscribed) {
592
+ subscribed = true;
593
+ onSchemaExtensionsChange(() => {
594
+ cached = null;
595
+ });
596
+ }
374
597
  if (!cached)
375
598
  cached = createSchema(registeredSchemaExtensions());
376
599
  return cached;
377
600
  }
378
- onSchemaExtensionsChange(() => {
379
- cached = null;
380
- });
381
601
  //# sourceMappingURL=extensions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"extensions.js","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extensions.js","sourceRoot":"","sources":["../src/extensions.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"formats.d.ts","sourceRoot":"","sources":["../src/formats.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAG7D,MAAM,WAAW,UAAU;IACzB,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAA;IACb,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAA;CACd;AAED,iFAAiF;AACjF,MAAM,WAAW,WAAW;IAC1B,kEAAkE;IAClE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,iFAAiF;IACjF,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CACzB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CActD;AAED,2DAA2D;AAC3D,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,UAAU,EAAE,CAgB9E;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIxD;AAaD,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAMlE;AAYD,iEAAiE;AACjE,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAa/D"}
1
+ {"version":3,"file":"formats.d.ts","sourceRoot":"","sources":["../src/formats.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,mBAAmB,CAAA;AACvD,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAG7D,MAAM,WAAW,UAAU;IACzB,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAA;IACb,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAA;CACd;AAED,iFAAiF;AACjF,MAAM,WAAW,WAAW;IAC1B,kEAAkE;IAClE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,iFAAiF;IACjF,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CACzB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CActD;AAED,2DAA2D;AAC3D,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,UAAU,EAAE,CAgB9E;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIxD;AAyBD,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAMlE;AAYD,iEAAiE;AACjE,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAa/D"}
package/dist/formats.js CHANGED
@@ -61,15 +61,27 @@ export function carriedClass(node) {
61
61
  const value = carried?.['class'];
62
62
  return value && value.trim() !== '' ? value : null;
63
63
  }
64
+ /**
65
+ * Every text block in the selection, over every selected RANGE.
66
+ *
67
+ * `selection.from`/`to` are one range's bounds, so a table column selection --
68
+ * which is one range per cell -- reported a single cell's paragraph and the
69
+ * format was applied to just that one. See `selectedRanges` in commands.ts.
70
+ */
64
71
  function textBlocks(state) {
65
72
  const found = [];
66
- const { from, to } = state.selection;
67
- state.doc.nodesBetween(from, to, (node, pos) => {
68
- if (!node.isTextblock)
69
- return true;
70
- found.push({ pos, node });
71
- return false;
72
- });
73
+ const seen = new Set();
74
+ for (const range of state.selection.ranges) {
75
+ state.doc.nodesBetween(range.$from.pos, range.$to.pos, (node, pos) => {
76
+ if (!node.isTextblock)
77
+ return true;
78
+ if (!seen.has(pos)) {
79
+ seen.add(pos);
80
+ found.push({ pos, node });
81
+ }
82
+ return false;
83
+ });
84
+ }
73
85
  return found;
74
86
  }
75
87
  /** The class shared by every selected text block, or null if mixed or absent. */
@@ -1 +1 @@
1
- {"version":3,"file":"formats.js","sourceRoot":"","sources":["../src/formats.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"formats.js","sourceRoot":"","sources":["../src/formats.ts"],"names":[],"mappings":"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"}