@eightyfourthousand/lib-editing 2026.6.0 → 2026.6.2

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 (89) hide show
  1. package/lib/components/editor/EditorProvider.js +1 -1
  2. package/lib/components/editor/EditorProvider.js.map +1 -1
  3. package/lib/components/editor/TranslationEditor.js +2 -1
  4. package/lib/components/editor/TranslationEditor.js.map +1 -1
  5. package/lib/components/editor/extensions/EndNoteLink/EndNoteLinkMark.js +2 -1
  6. package/lib/components/editor/extensions/EndNoteLink/EndNoteLinkMark.js.map +1 -1
  7. package/lib/components/editor/extensions/GlossaryInstance/GlossaryInstanceNode.js +4 -1
  8. package/lib/components/editor/extensions/GlossaryInstance/GlossaryInstanceNode.js.map +1 -1
  9. package/lib/components/editor/extensions/GlossaryInstance/GlossaryInstanceNode.ssr.js +3 -1
  10. package/lib/components/editor/extensions/GlossaryInstance/GlossaryInstanceNode.ssr.js.map +1 -1
  11. package/lib/components/editor/extensions/InternalLink/InternalLink.js +4 -1
  12. package/lib/components/editor/extensions/InternalLink/InternalLink.js.map +1 -1
  13. package/lib/components/editor/extensions/InternalLink/InternalLink.ssr.js +3 -1
  14. package/lib/components/editor/extensions/InternalLink/InternalLink.ssr.js.map +1 -1
  15. package/lib/components/editor/extensions/Mention/Mention.d.ts +0 -10
  16. package/lib/components/editor/extensions/Mention/Mention.js +3 -0
  17. package/lib/components/editor/extensions/Mention/Mention.js.map +1 -1
  18. package/lib/components/editor/extensions/Mention/Mention.ssr.d.ts +11 -0
  19. package/lib/components/editor/extensions/Mention/Mention.ssr.js +18 -4
  20. package/lib/components/editor/extensions/Mention/Mention.ssr.js.map +1 -1
  21. package/lib/components/editor/extensions/Passage/EditLabel.d.ts +5 -2
  22. package/lib/components/editor/extensions/Passage/EditLabel.js +5 -5
  23. package/lib/components/editor/extensions/Passage/EditLabel.js.map +1 -1
  24. package/lib/components/editor/extensions/Passage/EditorOptions.d.ts +2 -2
  25. package/lib/components/editor/extensions/Passage/EditorOptions.js +4 -6
  26. package/lib/components/editor/extensions/Passage/EditorOptions.js.map +1 -1
  27. package/lib/components/editor/extensions/Passage/PassageMenuOverlay.d.ts +13 -0
  28. package/lib/components/editor/extensions/Passage/PassageMenuOverlay.js +150 -0
  29. package/lib/components/editor/extensions/Passage/PassageMenuOverlay.js.map +1 -0
  30. package/lib/components/editor/extensions/Passage/PassageNode.d.ts +33 -2
  31. package/lib/components/editor/extensions/Passage/PassageNode.js +294 -107
  32. package/lib/components/editor/extensions/Passage/PassageNode.js.map +1 -1
  33. package/lib/components/editor/extensions/Passage/PassageNode.ssr.js +70 -8
  34. package/lib/components/editor/extensions/Passage/PassageNode.ssr.js.map +1 -1
  35. package/lib/components/editor/extensions/Passage/ReaderOptions.d.ts +2 -2
  36. package/lib/components/editor/extensions/Passage/ReaderOptions.js +4 -7
  37. package/lib/components/editor/extensions/Passage/ReaderOptions.js.map +1 -1
  38. package/lib/components/editor/extensions/Passage/ShowAnnotations.d.ts +7 -2
  39. package/lib/components/editor/extensions/Passage/ShowAnnotations.js +10 -7
  40. package/lib/components/editor/extensions/Passage/ShowAnnotations.js.map +1 -1
  41. package/lib/components/editor/extensions/WordBreak.d.ts +41 -0
  42. package/lib/components/editor/extensions/WordBreak.js +59 -0
  43. package/lib/components/editor/extensions/WordBreak.js.map +1 -0
  44. package/lib/components/editor/extensions/translationSSRExtensions.js +4 -0
  45. package/lib/components/editor/extensions/translationSSRExtensions.js.map +1 -1
  46. package/lib/components/editor/hooks/useDefaultExtensions.d.ts +1 -1
  47. package/lib/components/editor/hooks/useDefaultExtensions.js +2 -0
  48. package/lib/components/editor/hooks/useDefaultExtensions.js.map +1 -1
  49. package/lib/components/editor/hooks/useTranslationExtensions.d.ts +1 -1
  50. package/lib/components/editor/hooks/useTranslationExtensions.js +2 -0
  51. package/lib/components/editor/hooks/useTranslationExtensions.js.map +1 -1
  52. package/lib/components/editor/menus/MainBubbleMenu.js +17 -4
  53. package/lib/components/editor/menus/MainBubbleMenu.js.map +1 -1
  54. package/lib/components/editor/menus/TranslationBubbleMenu.js +3 -2
  55. package/lib/components/editor/menus/TranslationBubbleMenu.js.map +1 -1
  56. package/lib/components/editor/menus/selectors/TextAlignSelector.d.ts +1 -1
  57. package/lib/components/editor/menus/selectors/TextAlignSelector.js +33 -24
  58. package/lib/components/editor/menus/selectors/TextAlignSelector.js.map +1 -1
  59. package/lib/components/editor/menus/selectors/TranslationNodeSelector.js +1 -1
  60. package/lib/components/editor/menus/selectors/TranslationNodeSelector.js.map +1 -1
  61. package/lib/components/editor/menus/selectors/WordBreakSelector.d.ts +4 -0
  62. package/lib/components/editor/menus/selectors/WordBreakSelector.js +38 -0
  63. package/lib/components/editor/menus/selectors/WordBreakSelector.js.map +1 -0
  64. package/lib/components/editor/menus/selectors/index.d.ts +1 -0
  65. package/lib/components/editor/menus/selectors/index.js +1 -0
  66. package/lib/components/editor/menus/selectors/index.js.map +1 -1
  67. package/lib/components/reader/TranslationSSRContent.js +3 -1
  68. package/lib/components/reader/TranslationSSRContent.js.map +1 -1
  69. package/lib/components/shared/LeftPanel.js +1 -1
  70. package/lib/components/shared/LeftPanel.js.map +1 -1
  71. package/lib/components/shared/SourceReader.js +1 -1
  72. package/lib/components/shared/SourceReader.js.map +1 -1
  73. package/lib/components/shared/hooks/useTohToggle.d.ts +2 -3
  74. package/lib/components/shared/hooks/useTohToggle.js +31 -30
  75. package/lib/components/shared/hooks/useTohToggle.js.map +1 -1
  76. package/lib/exporters/heading.js +3 -0
  77. package/lib/exporters/heading.js.map +1 -1
  78. package/lib/exporters/paragraph.js +5 -0
  79. package/lib/exporters/paragraph.js.map +1 -1
  80. package/lib/transformers/heading.js +2 -0
  81. package/lib/transformers/heading.js.map +1 -1
  82. package/lib/transformers/mention.js +2 -1
  83. package/lib/transformers/mention.js.map +1 -1
  84. package/lib/transformers/paragraph.js +3 -1
  85. package/lib/transformers/paragraph.js.map +1 -1
  86. package/package.json +7 -7
  87. package/lib/components/editor/extensions/Passage/Passage.d.ts +0 -3
  88. package/lib/components/editor/extensions/Passage/Passage.js +0 -86
  89. package/lib/components/editor/extensions/Passage/Passage.js.map +0 -1
@@ -1,9 +1,9 @@
1
- import { Node } from '@tiptap/core';
2
- import { ReactNodeViewRenderer, mergeAttributes } from '@tiptap/react';
3
- import { Passage } from './Passage';
4
1
  import { Plugin, PluginKey, Selection, TextSelection } from '@tiptap/pm/state';
5
2
  import { Fragment } from '@tiptap/pm/model';
6
3
  import { incrementLabel } from './label';
4
+ import { PassageNodeSSR } from './PassageNode.ssr';
5
+ import { PASSAGE_CONTENT_CLASS, PASSAGE_INNER_CLASS, PASSAGE_LABEL_CLASS, PASSAGE_REFERENCES_CLASS, PASSAGE_WRAPPER_CLASS, } from './classes';
6
+ const BOOKMARK_SVG = '<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="currentColor" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="text-accent size-3"><path d="M19 21l-7-5-7 5V5a2 2 0 0 1 2-2h10a2 2 0 0 1 2 2z"></path></svg>';
7
7
  const currentPassageDepth = ($from) => {
8
8
  let passageDepth = null;
9
9
  for (let i = $from.depth; i >= 0; i--) {
@@ -29,97 +29,206 @@ const selectionInCompareSource = () => {
29
29
  // calling preventDefault), so the browser's native clipboard behavior runs and
30
30
  // copies the selected Tibetan text.
31
31
  const handleCompareSourceClipboard = () => selectionInCompareSource();
32
- export const PassageNode = Node.create({
33
- name: 'passage',
34
- group: 'block',
35
- content: 'block+',
36
- parseHTML() {
37
- return [
38
- {
39
- tag: 'passage',
40
- },
41
- ];
42
- },
43
- addAttributes() {
32
+ const compareLeadingSpaceClass = (node) => {
33
+ const firstChild = node.content.firstChild;
34
+ if (firstChild?.attrs.hasLeadingSpace)
35
+ return 'md:mt-5';
36
+ if (['lineGroup', 'list'].includes(firstChild?.type.name || '')) {
37
+ return 'md:mt-2';
38
+ }
39
+ return 'md:mt-1';
40
+ };
41
+ // Imperatively populates the per-passage chrome (compare-mode Tibetan source and
42
+ // the reader bookmark icon) that lives outside ProseMirror's editable content.
43
+ // Driven by editor.storage.passage.chrome, refreshed on transactions and on
44
+ // explicit navigation changes (via refreshChrome).
45
+ const syncPassageChrome = (view, editor, force = false) => {
46
+ const chrome = editor.storage.passage?.chrome;
47
+ const toh = chrome?.toh;
48
+ const isCompare = !!chrome?.isCompare;
49
+ const bookmarked = chrome?.bookmarkedUuids ?? new Set();
50
+ const editable = editor.isEditable;
51
+ const needsWork = isCompare || (!editable && bookmarked.size > 0);
52
+ if (!needsWork && !force)
53
+ return;
54
+ view.state.doc.descendants((node, pos) => {
55
+ if (node.type.name !== 'passage')
56
+ return true;
57
+ const dom = view.nodeDOM(pos);
58
+ if (!dom || dom.nodeType !== 1)
59
+ return false;
60
+ const el = dom;
61
+ // Writes here mutate the node's DOM, which ProseMirror's mutation observer
62
+ // watches — so only touch the DOM when the desired state actually differs,
63
+ // otherwise redundant writes trigger an update→mutate→update feedback loop.
64
+ const csDiv = el.querySelector(':scope > .passage-compare-source');
65
+ const csText = csDiv?.querySelector('.passage-compare-text');
66
+ if (csDiv && csText) {
67
+ const alignment = node.attrs.alignments?.[toh ?? ''];
68
+ const tibetan = isCompare && toh ? (alignment?.tibetan ?? '').trim() : '';
69
+ if (csText.textContent !== tibetan)
70
+ csText.textContent = tibetan;
71
+ const shouldHide = !tibetan;
72
+ if (csDiv.classList.contains('hidden') !== shouldHide) {
73
+ csDiv.classList.toggle('hidden', shouldHide);
74
+ }
75
+ const leading = tibetan ? compareLeadingSpaceClass(node) : 'md:mt-1';
76
+ for (const cls of ['md:mt-1', 'md:mt-2', 'md:mt-5']) {
77
+ const want = cls === leading;
78
+ if (csDiv.classList.contains(cls) !== want) {
79
+ csDiv.classList.toggle(cls, want);
80
+ }
81
+ }
82
+ }
83
+ const bm = el.querySelector(':scope .passage-bookmark');
84
+ if (bm) {
85
+ const uuid = node.attrs.uuid;
86
+ const show = !editable && !!uuid && bookmarked.has(uuid);
87
+ if (bm.classList.contains('hidden') === show) {
88
+ bm.classList.toggle('hidden', !show);
89
+ }
90
+ }
91
+ return false;
92
+ });
93
+ };
94
+ export const PassageNode = PassageNodeSSR.extend({
95
+ addStorage() {
44
96
  return {
45
- label: {
46
- default: null,
47
- parseHTML: (element) => element.getAttribute('label'),
48
- renderHTML: (attributes) => {
49
- return mergeAttributes(attributes, {
50
- label: attributes.label,
51
- });
52
- },
53
- },
54
- sort: {
55
- default: 0,
56
- parseHTML: (element) => element.getAttribute('sort'),
57
- renderHTML: (attributes) => {
58
- return mergeAttributes(attributes, {
59
- sort: attributes.sort,
60
- });
61
- },
62
- },
63
- alignments: {
64
- default: {},
65
- },
66
- references: {
67
- default: [],
68
- },
97
+ openMenu: undefined,
98
+ navigateRef: undefined,
99
+ chrome: undefined,
100
+ refreshChrome: undefined,
69
101
  };
70
102
  },
71
- renderHTML({ HTMLAttributes }) {
72
- return ['passage', mergeAttributes(HTMLAttributes), 0];
73
- },
103
+ // A plain DOM node view (no React) — so interacting with a passage never
104
+ // remounts a React tree the way the old ReactNodeViewRenderer did. The
105
+ // interactive menu/dialogs live in the stable PassageMenuOverlay; the
106
+ // compare-source / bookmark chrome is built here and populated by the view
107
+ // plugin in addProseMirrorPlugins. ignoreMutation shields that chrome from
108
+ // ProseMirror's mutation observer so syncing it never triggers a reparse loop.
74
109
  addNodeView() {
75
- return ReactNodeViewRenderer(Passage, {
76
- ignoreMutation: ({ mutation }) => {
77
- const target = mutation.target;
78
- // nodeType 3 === text node; resolve to its parent element so we can
79
- // match against the surrounding DOM.
80
- const el = target.nodeType === 3
81
- ? target.parentElement
82
- : target;
83
- // The read-only Tibetan source shown in compare mode lives outside the
84
- // content DOM. Let the browser keep its native selection there (and
85
- // ignore React-driven DOM updates in that region) so the text can be
86
- // selected and copied; ProseMirror otherwise resets the selection back
87
- // into the editable content.
88
- if (el?.closest('[data-compare-source]')) {
110
+ return ({ node }) => {
111
+ let current = node;
112
+ const wrapper = document.createElement('div');
113
+ wrapper.className = PASSAGE_WRAPPER_CLASS;
114
+ const applyWrapperAttrs = (n) => {
115
+ if (n.attrs.uuid)
116
+ wrapper.id = n.attrs.uuid;
117
+ if (n.attrs.toh)
118
+ wrapper.setAttribute('data-toh', n.attrs.toh);
119
+ else
120
+ wrapper.removeAttribute('data-toh');
121
+ if (n.attrs.type)
122
+ wrapper.setAttribute('data-passage-type', n.attrs.type);
123
+ else
124
+ wrapper.removeAttribute('data-passage-type');
125
+ if (n.attrs.invalid)
126
+ wrapper.setAttribute('data-invalid', 'true');
127
+ else
128
+ wrapper.removeAttribute('data-invalid');
129
+ };
130
+ applyWrapperAttrs(node);
131
+ const column = document.createElement('div');
132
+ column.className = 'w-full';
133
+ const inner = document.createElement('div');
134
+ inner.className = PASSAGE_INNER_CLASS;
135
+ // Label doubles as the dropdown trigger (handled by the click plugin).
136
+ const label = document.createElement('div');
137
+ label.className = PASSAGE_LABEL_CLASS;
138
+ label.setAttribute('contenteditable', 'false');
139
+ label.setAttribute('data-passage-label', '');
140
+ if (node.attrs.uuid)
141
+ label.setAttribute('data-uuid', node.attrs.uuid);
142
+ label.textContent = node.attrs.label || '';
143
+ const bookmark = document.createElement('div');
144
+ bookmark.className =
145
+ 'passage-bookmark hidden absolute -left-15.75 top-6 w-16 flex justify-end';
146
+ bookmark.setAttribute('contenteditable', 'false');
147
+ bookmark.innerHTML = BOOKMARK_SVG;
148
+ const content = document.createElement('div');
149
+ content.className = PASSAGE_CONTENT_CLASS;
150
+ inner.append(label, bookmark, content);
151
+ const buildReferences = (n) => {
152
+ const references = (n.attrs.references ?? []);
153
+ if (!references.length)
154
+ return null;
155
+ const div = document.createElement('div');
156
+ div.className = PASSAGE_REFERENCES_CLASS;
157
+ div.setAttribute('contenteditable', 'false');
158
+ references.forEach((ref, index) => {
159
+ if (index > 0)
160
+ div.append(document.createTextNode(', '));
161
+ const a = document.createElement('a');
162
+ a.href = `#${ref.uuid}`;
163
+ a.setAttribute('data-passage-reference', '');
164
+ a.setAttribute('data-ref-uuid', ref.uuid);
165
+ a.setAttribute('data-ref-type', ref.type);
166
+ a.textContent = ref.label || ref.uuid.slice(0, 6);
167
+ div.append(a);
168
+ });
169
+ return div;
170
+ };
171
+ let referencesEl = buildReferences(node);
172
+ if (referencesEl)
173
+ inner.append(referencesEl);
174
+ column.append(inner);
175
+ // Second flex column: compare-mode Tibetan source (hidden until synced).
176
+ const compare = document.createElement('div');
177
+ compare.className = 'passage-compare-source w-full hidden md:mt-1';
178
+ compare.setAttribute('contenteditable', 'false');
179
+ compare.setAttribute('data-compare-source', '');
180
+ const compareInner = document.createElement('div');
181
+ compareInner.className = 'passage pl-6 @c/sidebar:pl-4';
182
+ const compareText = document.createElement('div');
183
+ compareText.className =
184
+ 'passage-compare-text leading-7 font-tibetan text-lg whitespace-normal mt-1.5 pb-4 md:pb-2';
185
+ compareInner.append(compareText);
186
+ compare.append(compareInner);
187
+ wrapper.append(column, compare);
188
+ return {
189
+ dom: wrapper,
190
+ contentDOM: content,
191
+ update: (updated) => {
192
+ if (updated.type.name !== 'passage')
193
+ return false;
194
+ applyWrapperAttrs(updated);
195
+ const nextLabel = updated.attrs.label || '';
196
+ if (label.textContent !== nextLabel)
197
+ label.textContent = nextLabel;
198
+ const nextUuid = updated.attrs.uuid || '';
199
+ if (label.getAttribute('data-uuid') !== nextUuid) {
200
+ label.setAttribute('data-uuid', nextUuid);
201
+ }
202
+ const prevRefs = JSON.stringify(current.attrs.references ?? []);
203
+ const nextRefs = JSON.stringify(updated.attrs.references ?? []);
204
+ if (prevRefs !== nextRefs) {
205
+ referencesEl?.remove();
206
+ referencesEl = buildReferences(updated);
207
+ if (referencesEl)
208
+ inner.append(referencesEl);
209
+ }
210
+ current = updated;
89
211
  return true;
90
- }
91
- // Defer to ProseMirror for everything inside the editable content.
92
- return false;
93
- },
94
- });
95
- },
96
- addProseMirrorPlugins() {
97
- return [
98
- new Plugin({
99
- key: new PluginKey('passageCompareSourceClipboard'),
100
- props: {
101
- handleDOMEvents: {
102
- // The Tibetan source in compare mode lives outside the document
103
- // (it is not part of ProseMirror's content). ProseMirror's built-in
104
- // copy/cut handler would otherwise overwrite the clipboard with the
105
- // serialized document selection. When the native selection sits
106
- // inside the compare source, return true so ProseMirror skips its
107
- // handler without preventing default — letting the browser perform
108
- // its native copy of the selected Tibetan text.
109
- copy: handleCompareSourceClipboard,
110
- cut: handleCompareSourceClipboard,
111
- },
112
212
  },
113
- }),
114
- ];
213
+ // Ignore everything in the non-editable chrome (label/bookmark/compare
214
+ // source) and defer to ProseMirror only for the editable content hole.
215
+ // This must include selection-type records: ignoring them leaves the
216
+ // browser's native selection in place so the Tibetan compare source can
217
+ // be selected/copied, instead of ProseMirror pulling the selection back
218
+ // into the editable content. It also keeps the view plugin's chrome
219
+ // writes from triggering a mutation→reparse loop.
220
+ ignoreMutation: (mutation) => {
221
+ const target = mutation.target;
222
+ return !target || !content.contains(target);
223
+ },
224
+ };
225
+ };
115
226
  },
116
227
  addCommands() {
117
228
  return {
118
229
  normalizeLabelsAfter: () => ({ dispatch, tr }) => {
119
230
  if (!dispatch)
120
231
  return true;
121
- // Use tr.selection so this works correctly when chained after commands
122
- // like joinBackward that have already modified the document.
123
232
  const { $from } = tr.selection;
124
233
  const passageDepth = currentPassageDepth($from);
125
234
  if (passageDepth === null)
@@ -153,16 +262,15 @@ export const PassageNode = Node.create({
153
262
  }
154
263
  const targetParts = targetLabel.split('.');
155
264
  if (targetParts.length < numParts)
156
- break; // shallower → out of scope
265
+ break;
157
266
  if (targetParts.length > numParts) {
158
- // deeper → skip sub-passage
159
267
  pos += child.nodeSize;
160
268
  continue;
161
269
  }
162
270
  if (!targetLabel.startsWith(currentPrefixWithDot))
163
- break; // different prefix
271
+ break;
164
272
  if (targetLabel === expectedNext)
165
- break; // already contiguous
273
+ break;
166
274
  tr.setNodeMarkup(pos, null, {
167
275
  ...child.attrs,
168
276
  label: expectedNext,
@@ -178,26 +286,21 @@ export const PassageNode = Node.create({
178
286
  splitPassage: () => ({ state, dispatch }) => {
179
287
  const { selection } = state;
180
288
  const { $from } = selection;
181
- // Find the passage node that contains the current selection
182
289
  const passageDepth = currentPassageDepth($from);
183
290
  if (passageDepth === null) {
184
291
  return false;
185
292
  }
186
293
  const passageNode = $from.node(passageDepth);
187
- const passageStart = $from.start(passageDepth) - 1; // -1 to include the passage node itself
188
- const passageEnd = $from.end(passageDepth) + 1; // +1 to include the passage node itself
189
- // Get the position within the passage content
294
+ const passageStart = $from.start(passageDepth) - 1;
295
+ const passageEnd = $from.end(passageDepth) + 1;
190
296
  const posInPassage = $from.pos - $from.start(passageDepth);
191
- // Split the passage content
192
297
  const beforeContent = passageNode.content.cut(0, posInPassage);
193
298
  const afterContent = passageNode.content.cut(posInPassage);
194
299
  if (!dispatch)
195
300
  return true;
196
301
  const tr = state.tr;
197
- // Replace current passage with first part
198
302
  tr.replaceWith(passageStart, passageEnd, state.schema.nodes.passage.create(passageNode.attrs, beforeContent));
199
- // Calculate where to insert the new passage
200
- const newPassagePos = passageStart + beforeContent.size + 2; // +2 for passage wrapper
303
+ const newPassagePos = passageStart + beforeContent.size + 2;
201
304
  const oldAttrs = passageNode.attrs;
202
305
  const attrs = {
203
306
  ...oldAttrs,
@@ -205,9 +308,7 @@ export const PassageNode = Node.create({
205
308
  sort: oldAttrs.sort + 1,
206
309
  label: incrementLabel(oldAttrs.label),
207
310
  };
208
- // Insert new passage with remaining content
209
311
  tr.insert(newPassagePos, state.schema.nodes.passage.create(attrs, afterContent));
210
- // move the cursor to the new paragraph
211
312
  const $pos = tr.doc.resolve(newPassagePos + 1);
212
313
  const newSelection = TextSelection.findFrom($pos, 1, true) || Selection.near($pos, 1);
213
314
  if (newSelection) {
@@ -216,14 +317,109 @@ export const PassageNode = Node.create({
216
317
  dispatch(tr);
217
318
  return true;
218
319
  },
320
+ setPassageLabel: (uuid, label) => ({ tr, state, dispatch }) => {
321
+ let target;
322
+ state.doc.descendants((node, pos) => {
323
+ if (target)
324
+ return false;
325
+ if (node.type.name === 'passage' && node.attrs.uuid === uuid) {
326
+ target = { pos, node };
327
+ return false;
328
+ }
329
+ return true;
330
+ });
331
+ if (!target)
332
+ return false;
333
+ if (!dispatch)
334
+ return true;
335
+ tr.setNodeMarkup(target.pos, undefined, {
336
+ ...target.node.attrs,
337
+ label,
338
+ });
339
+ dispatch(tr);
340
+ return true;
341
+ },
219
342
  };
220
343
  },
344
+ addProseMirrorPlugins() {
345
+ const editor = this.editor;
346
+ return [
347
+ new Plugin({
348
+ key: new PluginKey('passageCompareSourceClipboard'),
349
+ props: {
350
+ handleDOMEvents: {
351
+ copy: handleCompareSourceClipboard,
352
+ cut: handleCompareSourceClipboard,
353
+ },
354
+ },
355
+ }),
356
+ // Opens the stable menu overlay when a passage label is pressed, and
357
+ // routes reference-link clicks to navigation — without letting
358
+ // ProseMirror move the selection (which previously remounted the view).
359
+ new Plugin({
360
+ key: new PluginKey('passageMenuClick'),
361
+ props: {
362
+ handleDOMEvents: {
363
+ mousedown: (_view, event) => {
364
+ const target = event.target;
365
+ if (!target)
366
+ return false;
367
+ const refEl = target.closest('[data-passage-reference]');
368
+ if (refEl) {
369
+ event.preventDefault();
370
+ editor.storage.passage?.navigateRef?.({
371
+ uuid: refEl.getAttribute('data-ref-uuid') || '',
372
+ type: refEl.getAttribute('data-ref-type') || '',
373
+ });
374
+ return true;
375
+ }
376
+ const labelEl = target.closest('[data-passage-label]');
377
+ if (labelEl) {
378
+ event.preventDefault();
379
+ const rect = labelEl.getBoundingClientRect();
380
+ editor.storage.passage?.openMenu?.({
381
+ uuid: labelEl.getAttribute('data-uuid') || '',
382
+ rect: {
383
+ top: rect.top,
384
+ left: rect.left,
385
+ bottom: rect.bottom,
386
+ right: rect.right,
387
+ width: rect.width,
388
+ height: rect.height,
389
+ },
390
+ });
391
+ return true;
392
+ }
393
+ return false;
394
+ },
395
+ },
396
+ },
397
+ }),
398
+ // Syncs the compare-source text and bookmark icon (chrome that lives
399
+ // outside the editable content) from navigation state.
400
+ new Plugin({
401
+ key: new PluginKey('passageChrome'),
402
+ view: (editorView) => {
403
+ const run = (force) => syncPassageChrome(editorView, editor, force);
404
+ run(true);
405
+ editor.storage.passage.refreshChrome = () => run(true);
406
+ return {
407
+ update: () => run(false),
408
+ destroy: () => {
409
+ if (editor.storage.passage) {
410
+ editor.storage.passage.refreshChrome = undefined;
411
+ }
412
+ },
413
+ };
414
+ },
415
+ }),
416
+ ];
417
+ },
221
418
  addKeyboardShortcuts() {
222
419
  return {
223
420
  Backspace: () => this.editor.commands.first(({ commands }) => [
224
421
  () => commands.undoInputRule(),
225
422
  () => {
226
- // Only intercept at the very start of a passage's content
227
423
  const { $from } = this.editor.state.selection;
228
424
  const passageDepth = currentPassageDepth($from);
229
425
  if (passageDepth === null)
@@ -237,10 +433,6 @@ export const PassageNode = Node.create({
237
433
  return joined;
238
434
  },
239
435
  ]),
240
- // Enter in an empty textblock that is a direct child of a passage
241
- // splits the passage at that block's boundary, dropping the empty
242
- // block, so pressing Enter twice at the end of a passage creates a
243
- // new one without leaving an empty paragraph behind.
244
436
  Enter: () => {
245
437
  const { state, view } = this.editor;
246
438
  const { selection, schema } = state;
@@ -250,15 +442,11 @@ export const PassageNode = Node.create({
250
442
  const passageDepth = currentPassageDepth($from);
251
443
  if (passageDepth === null)
252
444
  return false;
253
- // Only trigger when the cursor's parent textblock is a direct child
254
- // of the passage — not nested inside a list, line group, table, etc.
255
445
  if ($from.depth !== passageDepth + 1)
256
446
  return false;
257
447
  if ($from.parent.content.size !== 0)
258
448
  return false;
259
449
  const passageNode = $from.node(passageDepth);
260
- // If the empty block is the only child, splitting would just produce
261
- // two empty passages — defer to default behavior.
262
450
  if (passageNode.childCount <= 1)
263
451
  return false;
264
452
  const passageStart = $from.start(passageDepth) - 1;
@@ -280,8 +468,6 @@ export const PassageNode = Node.create({
280
468
  sort: oldAttrs.sort + 1,
281
469
  label: incrementLabel(oldAttrs.label),
282
470
  };
283
- // createAndFill auto-fills missing required content (e.g. an empty
284
- // afterContent gets a default paragraph) so the new passage is valid.
285
471
  const firstPassage = passageType.createAndFill(oldAttrs, Fragment.fromArray(beforeChildren));
286
472
  const secondPassage = passageType.createAndFill(newAttrs, Fragment.fromArray(afterChildren));
287
473
  if (!firstPassage || !secondPassage)
@@ -302,4 +488,5 @@ export const PassageNode = Node.create({
302
488
  };
303
489
  },
304
490
  });
491
+ export default PassageNode;
305
492
  //# sourceMappingURL=PassageNode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PassageNode.js","sourceRoot":"","sources":["../../../../../../../../libs/lib-editing/src/lib/components/editor/extensions/Passage/PassageNode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PassageNode.js","sourceRoot":"","sources":["../../../../../../../../libs/lib-editing/src/lib/components/editor/extensions/Passage/PassageNode.ts"],"names":[],"mappings":"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"}