@eightyfourthousand/lib-editing 2026.4.3 → 2026.5.0

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 (69) hide show
  1. package/lib/components/editor/EditorProvider.d.ts +2 -1
  2. package/lib/components/editor/EditorProvider.js +181 -112
  3. package/lib/components/editor/EditorProvider.js.map +1 -1
  4. package/lib/components/editor/PaginationProvider.js +28 -4
  5. package/lib/components/editor/PaginationProvider.js.map +1 -1
  6. package/lib/components/editor/TranslationBuilder.js +15 -2
  7. package/lib/components/editor/TranslationBuilder.js.map +1 -1
  8. package/lib/components/editor/extensions/EndNoteLink/EndNoteLinkHoverContent.d.ts +3 -1
  9. package/lib/components/editor/extensions/EndNoteLink/EndNoteLinkHoverContent.js +5 -7
  10. package/lib/components/editor/extensions/EndNoteLink/EndNoteLinkHoverContent.js.map +1 -1
  11. package/lib/components/editor/extensions/GlossaryInstance/GlossaryInstance.d.ts +3 -1
  12. package/lib/components/editor/extensions/GlossaryInstance/GlossaryInstance.js +39 -25
  13. package/lib/components/editor/extensions/GlossaryInstance/GlossaryInstance.js.map +1 -1
  14. package/lib/components/editor/extensions/GlossaryInstance/GlossaryInstanceNode.d.ts +4 -1
  15. package/lib/components/editor/extensions/GlossaryInstance/GlossaryInstanceNode.js +8 -6
  16. package/lib/components/editor/extensions/GlossaryInstance/GlossaryInstanceNode.js.map +1 -1
  17. package/lib/components/editor/extensions/GlossaryInstance/GlossarySearch.d.ts +11 -0
  18. package/lib/components/editor/extensions/GlossaryInstance/GlossarySearch.js +59 -0
  19. package/lib/components/editor/extensions/GlossaryInstance/GlossarySearch.js.map +1 -0
  20. package/lib/components/editor/extensions/InternalLink/InternalLink.js +5 -4
  21. package/lib/components/editor/extensions/InternalLink/InternalLink.js.map +1 -1
  22. package/lib/components/editor/extensions/InternalLink/InternalLinkHoverContent.d.ts +3 -1
  23. package/lib/components/editor/extensions/InternalLink/InternalLinkHoverContent.js +3 -5
  24. package/lib/components/editor/extensions/InternalLink/InternalLinkHoverContent.js.map +1 -1
  25. package/lib/components/editor/extensions/Link/LinkHoverContent.d.ts +3 -1
  26. package/lib/components/editor/extensions/Link/LinkHoverContent.js +3 -5
  27. package/lib/components/editor/extensions/Link/LinkHoverContent.js.map +1 -1
  28. package/lib/components/editor/extensions/Mention/MentionHoverContent.d.ts +3 -1
  29. package/lib/components/editor/extensions/Mention/MentionHoverContent.js +3 -5
  30. package/lib/components/editor/extensions/Mention/MentionHoverContent.js.map +1 -1
  31. package/lib/components/editor/extensions/Passage/EditorOptions.d.ts +4 -1
  32. package/lib/components/editor/extensions/Passage/EditorOptions.js +16 -4
  33. package/lib/components/editor/extensions/Passage/EditorOptions.js.map +1 -1
  34. package/lib/components/editor/extensions/Passage/Passage.js +10 -2
  35. package/lib/components/editor/extensions/Passage/Passage.js.map +1 -1
  36. package/lib/components/editor/extensions/Passage/PassageNode.js +63 -0
  37. package/lib/components/editor/extensions/Passage/PassageNode.js.map +1 -1
  38. package/lib/components/editor/extensions/Passage/ReaderOptions.js +6 -6
  39. package/lib/components/editor/extensions/Passage/ReaderOptions.js.map +1 -1
  40. package/lib/components/editor/menus/selectors/GlossarySelector.js +13 -9
  41. package/lib/components/editor/menus/selectors/GlossarySelector.js.map +1 -1
  42. package/lib/components/editor/save-filter.d.ts +4 -7
  43. package/lib/components/editor/save-filter.js +27 -11
  44. package/lib/components/editor/save-filter.js.map +1 -1
  45. package/lib/components/shared/HoverCardProvider.d.ts +2 -16
  46. package/lib/components/shared/HoverCardProvider.js +35 -52
  47. package/lib/components/shared/HoverCardProvider.js.map +1 -1
  48. package/lib/components/shared/LabeledElement.d.ts +3 -1
  49. package/lib/components/shared/LabeledElement.js +6 -4
  50. package/lib/components/shared/LabeledElement.js.map +1 -1
  51. package/lib/components/shared/NavigationProvider.js +1 -1
  52. package/lib/components/shared/NavigationProvider.js.map +1 -1
  53. package/lib/components/shared/SearchReplacePanel.js +5 -2
  54. package/lib/components/shared/SearchReplacePanel.js.map +1 -1
  55. package/lib/components/shared/SourceReader.js +1 -1
  56. package/lib/components/shared/SourceReader.js.map +1 -1
  57. package/lib/components/shared/bibliography/BibliographyBody.js +4 -1
  58. package/lib/components/shared/bibliography/BibliographyBody.js.map +1 -1
  59. package/lib/components/shared/bibliography/BibliographyList.js +1 -1
  60. package/lib/components/shared/bibliography/BibliographyList.js.map +1 -1
  61. package/lib/components/shared/glossary/GlossaryTermList.js +1 -1
  62. package/lib/components/shared/glossary/GlossaryTermList.js.map +1 -1
  63. package/lib/passage.d.ts +4 -1
  64. package/lib/passage.js +28 -1
  65. package/lib/passage.js.map +1 -1
  66. package/package.json +7 -7
  67. package/lib/components/editor/extensions/GlossaryInstance/GlossaryInput.d.ts +0 -4
  68. package/lib/components/editor/extensions/GlossaryInstance/GlossaryInput.js +0 -22
  69. package/lib/components/editor/extensions/GlossaryInstance/GlossaryInput.js.map +0 -1
@@ -14,10 +14,11 @@ interface EditorContextState {
14
14
  setDoc: (doc: Doc) => void;
15
15
  getEditor: (key: string) => Editor | undefined;
16
16
  setEditor: (key: string, editor?: Editor) => void;
17
+ refreshEditorBaseline: (key: string) => void;
17
18
  save: () => Promise<void>;
18
19
  startObserving: (builder: string) => void;
19
20
  stopObserving: (builder: string) => void;
20
- setNavigating: (navigating: boolean, resetKnownUuids?: boolean, fragment?: XmlFragment) => void;
21
+ setNavigating: (navigating: boolean, resetLastObservedUuids?: boolean, fragment?: XmlFragment) => void;
21
22
  isNavigating: () => boolean;
22
23
  }
23
24
  export declare const EditorContext: React.Context<EditorContextState>;
@@ -1,8 +1,10 @@
1
1
  'use client';
2
- import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  import React, { createContext, useCallback, useContext, useRef } from 'react';
4
+ import { CircleAlertIcon, CircleCheckIcon, TriangleAlertIcon, } from 'lucide-react';
4
5
  import { Doc, XmlElement, XmlFragment } from 'yjs';
5
6
  import { createGraphQLClient, hasPermission, savePassages, } from '@eightyfourthousand/client-graphql';
7
+ import { Toaster, toast } from '@eightyfourthousand/design-system';
6
8
  import { passagesFromNodes, ensureUuids } from '../../passage';
7
9
  import { NavigationProvider } from '../shared';
8
10
  import { useDirtyStore } from './hooks/useDirtyStore';
@@ -43,9 +45,14 @@ export const EditorContext = createContext({
43
45
  setEditor: () => {
44
46
  throw Error('Not implemented');
45
47
  },
46
- save: async () => {
48
+ refreshEditorBaseline: () => {
47
49
  // No-op when outside provider
48
50
  },
51
+ save: async () => {
52
+ toast('Unable to save.', {
53
+ icon: _jsx(TriangleAlertIcon, { className: "size-4 text-warning" }),
54
+ });
55
+ },
49
56
  startObserving: () => {
50
57
  throw Error('Not implemented');
51
58
  },
@@ -62,10 +69,12 @@ export const EditorContextProvider = ({ work, doc: initialDoc, children, }) => {
62
69
  const [doc, setDoc] = React.useState(initialDoc || new Doc());
63
70
  // Use ref for immediate tracking to avoid state updates on every keystroke
64
71
  const dirtyUuidsRef = useRef(new Set());
65
- const deletedUuidsRef = useRef(new Set());
66
72
  const isNavigatingRef = useRef(false);
73
+ const isNormalizingForSaveRef = useRef(false);
67
74
  const clearedFragmentRef = useRef(null);
68
- const knownUuidsRef = useRef(new Map());
75
+ const lastObservedUuidsByFragmentRef = useRef(new Map());
76
+ const savedBaselineUuidsByEditorRef = useRef({});
77
+ const observedFragmentsByBuilderRef = useRef({});
69
78
  // Store for dirty state with subscription support
70
79
  const dirtyStore = useDirtyStore();
71
80
  const editorCache = useRef({});
@@ -75,6 +84,7 @@ export const EditorContextProvider = ({ work, doc: initialDoc, children, }) => {
75
84
  const setEditor = useCallback((key, editor) => {
76
85
  if (!editor && editorCache.current[key]) {
77
86
  delete editorCache.current[key];
87
+ delete savedBaselineUuidsByEditorRef.current[key];
78
88
  }
79
89
  else if (editor) {
80
90
  editorCache.current[key] = editor;
@@ -83,72 +93,56 @@ export const EditorContextProvider = ({ work, doc: initialDoc, children, }) => {
83
93
  const getFragment = useCallback((builder) => {
84
94
  return doc?.getXmlFragment(builder);
85
95
  }, [doc]);
86
- const save = useCallback(async () => {
87
- const editors = Object.values(editorCache.current);
88
- if (!editors.length) {
89
- console.warn('No editor instance found, cannot save.');
90
- return;
96
+ const getFragmentUuids = useCallback((fragment) => {
97
+ const uuids = new Set();
98
+ for (let i = 0; i < fragment.length; i++) {
99
+ const child = fragment.get(i);
100
+ if (child instanceof XmlElement && child.nodeName === 'passage') {
101
+ const uuid = child.getAttribute('uuid');
102
+ if (uuid) {
103
+ uuids.add(uuid);
104
+ }
105
+ }
91
106
  }
92
- // Use the ref directly for the most up-to-date dirty/deleted UUIDs
93
- const { uuidsToSave, uuidsToDelete: deletedUuids, hasChanges, } = computeSavePayload({
94
- dirtyUuids: dirtyUuidsRef.current,
95
- deletedUuids: deletedUuidsRef.current,
107
+ return uuids;
108
+ }, []);
109
+ const getEditorUuids = useCallback((editor) => {
110
+ const uuids = new Set();
111
+ editor.state.doc.descendants((node) => {
112
+ if (node.type.name !== 'passage' || !node.attrs.uuid) {
113
+ return true;
114
+ }
115
+ uuids.add(node.attrs.uuid);
116
+ return false;
96
117
  });
97
- if (!hasChanges) {
98
- console.log('No changes to save.');
118
+ return uuids;
119
+ }, []);
120
+ const refreshEditorBaseline = useCallback((key) => {
121
+ const editor = editorCache.current[key];
122
+ if (!editor || editor.isDestroyed) {
99
123
  return;
100
124
  }
101
- const passages = [];
102
- if (uuidsToSave.length) {
103
- editors.forEach((editor) => {
104
- // Skip editors whose DOM view has been unmounted (e.g. inactive tabs).
105
- // Calling blur()/focus() on a destroyed editor throws a TipTap error
106
- // about view['hasFocus'] not being accessible.
107
- if (editor.isDestroyed)
108
- return;
109
- // Ensure all nodes have unique, non-null UUIDs before reading them.
110
- // New paragraph nodes created by splitting (e.g. pressing Enter) have
111
- // uuid: null until the NodeView mount cycle runs validateAttrs. If we
112
- // read the document before that cycle completes, annotationExportsFromNode
113
- // silently drops any annotation whose node.attrs.uuid is falsy, producing
114
- // missing paragraph annotations. ensureUuids fixes this synchronously.
115
- ensureUuids(editor);
116
- editor.commands.blur();
117
- passages.push(...passagesFromNodes({
118
- uuids: uuidsToSave,
119
- workUuid: work.uuid,
120
- editor,
121
- }));
122
- editor.commands.focus();
123
- });
124
- }
125
- const result = await savePassages({
126
- client,
127
- passages,
128
- deletedUuids: deletedUuids.length > 0 ? deletedUuids : undefined,
129
- });
130
- if (!result?.success) {
131
- console.error('Save failed:', result?.error ?? 'unknown error');
132
- return;
125
+ savedBaselineUuidsByEditorRef.current[key] = getEditorUuids(editor);
126
+ const fragment = getFragment(key);
127
+ if (fragment) {
128
+ lastObservedUuidsByFragmentRef.current.set(fragment, getFragmentUuids(fragment));
133
129
  }
134
- console.log('Document state saved.');
135
- // Clear both ref and state
136
- dirtyUuidsRef.current.clear();
137
- deletedUuidsRef.current.clear();
138
- dirtyStore.setDirty(false);
139
- }, [editorCache, client, work.uuid]);
130
+ }, [getEditorUuids, getFragment, getFragmentUuids]);
140
131
  const observerFunction = useCallback((evts, txn) => {
141
132
  if (!txn.local) {
142
133
  return;
143
134
  }
144
- // Detect passage deletions by diffing known UUIDs against current fragment state.
135
+ // Detect passage deletions by diffing the last observed UUIDs against
136
+ // the current fragment state.
145
137
  // We walk up from any event target to find the observed XmlFragment rather than
146
138
  // checking each event's target, because merge operations may only produce events
147
139
  // targeting passage-level XmlElements (not the fragment itself).
148
140
  // We intentionally avoid using Yjs `changes.deleted` because operations like
149
141
  // splitPassage (replaceWith + insert) cause the binding to delete and re-create
150
142
  // XmlElements internally, producing false positives.
151
- if (!isNavigatingRef.current && evts.length > 0) {
143
+ if (!isNavigatingRef.current &&
144
+ !isNormalizingForSaveRef.current &&
145
+ evts.length > 0) {
152
146
  let fragment = null;
153
147
  let current = evts[0].target;
154
148
  while (current) {
@@ -160,38 +154,38 @@ export const EditorContextProvider = ({ work, doc: initialDoc, children, }) => {
160
154
  current = current.parent;
161
155
  }
162
156
  if (fragment) {
163
- const currentUuids = new Set();
157
+ const liveUuids = new Set();
164
158
  for (let i = 0; i < fragment.length; i++) {
165
159
  const child = fragment.get(i);
166
160
  if (child instanceof XmlElement && child.nodeName === 'passage') {
167
161
  const uuid = child.getAttribute('uuid');
168
162
  if (uuid) {
169
- currentUuids.add(uuid);
163
+ liveUuids.add(uuid);
170
164
  }
171
165
  }
172
166
  }
173
- const knownForFragment = knownUuidsRef.current.get(fragment);
174
- if (knownForFragment && knownForFragment.size > 0) {
175
- // Detect deletions: UUIDs in known set but not in current
176
- knownForFragment.forEach((uuid) => {
177
- if (!currentUuids.has(uuid)) {
178
- deletedUuidsRef.current.add(uuid);
179
- }
180
- });
181
- // Detect new passages: UUIDs in current but not in known.
167
+ const lastObservedUuidsForFragment = lastObservedUuidsByFragmentRef.current.get(fragment);
168
+ if (lastObservedUuidsForFragment &&
169
+ lastObservedUuidsForFragment.size > 0) {
170
+ const hasDeleted = Array.from(lastObservedUuidsForFragment).some((uuid) => !liveUuids.has(uuid));
171
+ // Detect new passages: UUIDs in the current fragment but not in
172
+ // the last observed fragment state.
182
173
  // This catches passages created by splitPassage, where the Yjs
183
174
  // binding creates XmlElements with attributes set during construction
184
175
  // (pre-integration), so txn.changed never includes them.
185
- currentUuids.forEach((uuid) => {
186
- if (!knownForFragment.has(uuid)) {
176
+ liveUuids.forEach((uuid) => {
177
+ if (!lastObservedUuidsForFragment.has(uuid)) {
187
178
  dirtyUuidsRef.current.add(uuid);
188
179
  }
189
180
  });
181
+ if (hasDeleted && !dirtyStore.isDirty) {
182
+ dirtyStore.setDirty(true);
183
+ }
190
184
  }
191
- knownUuidsRef.current.set(fragment, currentUuids);
185
+ lastObservedUuidsByFragmentRef.current.set(fragment, liveUuids);
192
186
  }
193
187
  }
194
- if (!isNavigatingRef.current) {
188
+ if (!isNavigatingRef.current && !isNormalizingForSaveRef.current) {
195
189
  txn.changed.forEach((_change, key) => {
196
190
  // Start from key itself (not key.parent) so that structural changes
197
191
  // directly on a passage XmlElement (e.g. children moved during merge)
@@ -213,42 +207,42 @@ export const EditorContextProvider = ({ work, doc: initialDoc, children, }) => {
213
207
  }
214
208
  });
215
209
  }
216
- // Mark dirty if there are deletions
217
- if (deletedUuidsRef.current.size > 0 && !dirtyStore.isDirty) {
218
- dirtyStore.setDirty(true);
219
- }
220
- }, []);
210
+ }, [dirtyStore, getFragmentUuids]);
221
211
  const startObserving = useCallback((builder) => {
222
212
  const fragment = getFragment(builder);
223
213
  if (fragment) {
224
- // Pre-populate knownUuidsRef so the diff-based deletion detection
225
- // has a baseline from the very first observer event. Without this,
226
- // a merge that happens before any other edit would not be detected
227
- // because knownUuidsRef would be empty and the diff would be skipped.
228
- const uuids = new Set();
229
- for (let i = 0; i < fragment.length; i++) {
230
- const child = fragment.get(i);
231
- if (child instanceof XmlElement && child.nodeName === 'passage') {
232
- const uuid = child.getAttribute('uuid');
233
- if (uuid) {
234
- uuids.add(uuid);
235
- }
236
- }
214
+ const observedFragment = observedFragmentsByBuilderRef.current[builder];
215
+ if (observedFragment === fragment) {
216
+ refreshEditorBaseline(builder);
217
+ return;
237
218
  }
238
- knownUuidsRef.current.set(fragment, uuids);
219
+ if (observedFragment) {
220
+ observedFragment.unobserveDeep(observerFunction);
221
+ lastObservedUuidsByFragmentRef.current.delete(observedFragment);
222
+ }
223
+ // Pre-populate lastObservedUuidsByFragmentRef so the diff-based
224
+ // deletion detection has a baseline from the very first observer event.
225
+ // Without this, a merge that happens before any other edit would not be
226
+ // detected because the ref would be empty and the diff would be skipped.
227
+ lastObservedUuidsByFragmentRef.current.set(fragment, getFragmentUuids(fragment));
239
228
  fragment.observeDeep(observerFunction);
229
+ observedFragmentsByBuilderRef.current[builder] = fragment;
230
+ refreshEditorBaseline(builder);
240
231
  }
241
- }, [getFragment, observerFunction]);
232
+ }, [getFragment, getFragmentUuids, observerFunction, refreshEditorBaseline]);
242
233
  const stopObserving = useCallback((builder) => {
243
- const fragment = getFragment(builder);
244
- if (fragment && observerFunction) {
245
- fragment.unobserveDeep(observerFunction);
234
+ const observedFragment = observedFragmentsByBuilderRef.current[builder];
235
+ if (observedFragment) {
236
+ observedFragment.unobserveDeep(observerFunction);
237
+ lastObservedUuidsByFragmentRef.current.delete(observedFragment);
238
+ delete observedFragmentsByBuilderRef.current[builder];
246
239
  }
247
- }, [getFragment, observerFunction]);
248
- const setNavigating = useCallback((navigating, resetKnownUuids = false, fragment) => {
240
+ delete savedBaselineUuidsByEditorRef.current[builder];
241
+ }, [observerFunction]);
242
+ const setNavigating = useCallback((navigating, resetLastObservedUuids = false, fragment) => {
249
243
  isNavigatingRef.current = navigating;
250
- if (navigating && resetKnownUuids) {
251
- // Clear known UUIDs so the first observer call after navigation
244
+ if (navigating && resetLastObservedUuids) {
245
+ // Clear last observed UUIDs so the first observer call after navigation
252
246
  // repopulates without diffing against the stale pre-navigation set.
253
247
  // Only done for full navigation (clearContent + setContent), not for
254
248
  // load-more which only adds passages and needs to keep its baseline.
@@ -256,11 +250,11 @@ export const EditorContextProvider = ({ work, doc: initialDoc, children, }) => {
256
250
  // entry so other editors (e.g. endnotes) retain their baseline and
257
251
  // can still detect deletions.
258
252
  if (fragment) {
259
- knownUuidsRef.current.delete(fragment);
253
+ lastObservedUuidsByFragmentRef.current.delete(fragment);
260
254
  clearedFragmentRef.current = fragment;
261
255
  }
262
256
  else {
263
- knownUuidsRef.current.clear();
257
+ lastObservedUuidsByFragmentRef.current.clear();
264
258
  }
265
259
  }
266
260
  // When navigation ends, repopulate the baseline for any fragment that
@@ -269,18 +263,9 @@ export const EditorContextProvider = ({ work, doc: initialDoc, children, }) => {
269
263
  if (!navigating && clearedFragmentRef.current) {
270
264
  const f = clearedFragmentRef.current;
271
265
  clearedFragmentRef.current = null;
272
- const uuids = new Set();
273
- for (let i = 0; i < f.length; i++) {
274
- const child = f.get(i);
275
- if (child instanceof XmlElement && child.nodeName === 'passage') {
276
- const uuid = child.getAttribute('uuid');
277
- if (uuid)
278
- uuids.add(uuid);
279
- }
280
- }
281
- knownUuidsRef.current.set(f, uuids);
266
+ lastObservedUuidsByFragmentRef.current.set(f, getFragmentUuids(f));
282
267
  }
283
- }, []);
268
+ }, [getFragmentUuids]);
284
269
  const isNavigating = useCallback(() => isNavigatingRef.current, []);
285
270
  const canEdit = useCallback(async () => {
286
271
  return await hasPermission({ client, permission: 'EDITOR_EDIT' });
@@ -329,7 +314,90 @@ export const EditorContextProvider = ({ work, doc: initialDoc, children, }) => {
329
314
  setNavigating(false);
330
315
  }
331
316
  }, [setNavigating]);
332
- return (_jsx(EditorContext.Provider, { value: {
317
+ const save = useCallback(async () => {
318
+ const editorEntries = Object.entries(editorCache.current).filter(([, editor]) => !editor.isDestroyed);
319
+ if (!editorEntries.length) {
320
+ console.warn('No editor instance found, cannot save.');
321
+ return;
322
+ }
323
+ const liveUuidsByEditor = {};
324
+ editorEntries.forEach(([key, editor]) => {
325
+ liveUuidsByEditor[key] = getEditorUuids(editor);
326
+ });
327
+ const savedBaselineUuidsByEditor = Object.fromEntries(Object.keys(liveUuidsByEditor)
328
+ .map((key) => [key, savedBaselineUuidsByEditorRef.current[key]])
329
+ .filter((entry) => Boolean(entry[1])));
330
+ const { uuidsToSave, uuidsToDelete: deletedUuids, hasChanges, } = computeSavePayload({
331
+ dirtyUuids: dirtyUuidsRef.current,
332
+ baseline: savedBaselineUuidsByEditor,
333
+ current: liveUuidsByEditor,
334
+ });
335
+ if (!hasChanges) {
336
+ console.log('No changes to save.');
337
+ return;
338
+ }
339
+ const passages = [];
340
+ if (uuidsToSave.length) {
341
+ const uuidsToSaveSet = new Set(uuidsToSave);
342
+ isNormalizingForSaveRef.current = true;
343
+ try {
344
+ editorEntries.forEach(([, editor]) => {
345
+ const editorUuids = Array.from(getEditorUuids(editor)).filter((uuid) => uuidsToSaveSet.has(uuid));
346
+ if (editorUuids.length === 0) {
347
+ return;
348
+ }
349
+ ensureUuids(editor, { passageUuids: new Set(editorUuids) });
350
+ });
351
+ }
352
+ finally {
353
+ isNormalizingForSaveRef.current = false;
354
+ }
355
+ editorEntries.forEach(([, editor]) => {
356
+ const editorUuids = Array.from(getEditorUuids(editor)).filter((uuid) => uuidsToSaveSet.has(uuid));
357
+ if (editorUuids.length === 0) {
358
+ return;
359
+ }
360
+ editor.commands.blur();
361
+ passages.push(...passagesFromNodes({
362
+ uuids: editorUuids,
363
+ workUuid: work.uuid,
364
+ editor,
365
+ }));
366
+ editor.commands.focus();
367
+ });
368
+ }
369
+ const result = await savePassages({
370
+ client,
371
+ passages,
372
+ deletedUuids: deletedUuids.length > 0 ? deletedUuids : undefined,
373
+ });
374
+ if (!result?.success) {
375
+ console.error('Save failed:', result?.error ?? 'unknown error');
376
+ toast('Error saving content.', {
377
+ icon: _jsx(CircleAlertIcon, { className: "size-4 text-error" }),
378
+ });
379
+ return;
380
+ }
381
+ console.log('Document state saved.');
382
+ toast('Content saved', {
383
+ icon: _jsx(CircleCheckIcon, { className: "size-4 text-success" }),
384
+ });
385
+ if (result.passages?.length) {
386
+ await applyReplacedPassages(result.passages);
387
+ }
388
+ // Clear both ref and state
389
+ dirtyUuidsRef.current.clear();
390
+ editorEntries.forEach(([key]) => refreshEditorBaseline(key));
391
+ dirtyStore.setDirty(false);
392
+ }, [
393
+ client,
394
+ work.uuid,
395
+ getEditorUuids,
396
+ applyReplacedPassages,
397
+ refreshEditorBaseline,
398
+ dirtyStore,
399
+ ]);
400
+ return (_jsxs(EditorContext.Provider, { value: {
333
401
  work,
334
402
  doc,
335
403
  dirtyStore,
@@ -339,12 +407,13 @@ export const EditorContextProvider = ({ work, doc: initialDoc, children, }) => {
339
407
  setDoc,
340
408
  getEditor,
341
409
  setEditor,
410
+ refreshEditorBaseline,
342
411
  save,
343
412
  startObserving,
344
413
  stopObserving,
345
414
  setNavigating,
346
415
  isNavigating,
347
- }, children: _jsx(NavigationProvider, { uuid: work.uuid, children: children }) }));
416
+ }, children: [_jsx(NavigationProvider, { uuid: work.uuid, children: children }), _jsx(Toaster, {})] }));
348
417
  };
349
418
  export const useEditorState = () => useContext(EditorContext);
350
419
  //# sourceMappingURL=EditorProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EditorProvider.js","sourceRoot":"","sources":["../../../../../../libs/lib-editing/src/lib/components/editor/EditorProvider.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EditorProvider.js","sourceRoot":"","sources":["../../../../../../libs/lib-editing/src/lib/components/editor/EditorProvider.tsx"],"names":[],"mappings":"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"}
@@ -4,9 +4,9 @@ import { createContext, useContext, useRef, useState, useEffect, useMemo, } from
4
4
  import { useBlockEditor, useTranslationExtensions } from './hooks';
5
5
  import { createGraphQLClient, getTranslationBlocks, getTranslationBlocksAround, } from '@eightyfourthousand/client-graphql';
6
6
  import { PassageSkeleton } from '../shared/PassageSkeleton';
7
- import { isUuid, scrollToElement, useIsMobile } from '@eightyfourthousand/lib-utils';
7
+ import { isUuid, scrollToElement, useIsMobile, } from '@eightyfourthousand/lib-utils';
8
8
  import { useNavigation } from '../shared';
9
- import { LotusPond, SHEET_ANIMATION_DURATION } from '@eightyfourthousand/design-system';
9
+ import { LotusPond, SHEET_ANIMATION_DURATION, } from '@eightyfourthousand/design-system';
10
10
  import { useEditorState } from './EditorProvider';
11
11
  import { usePaginationLoadTriggers } from '../shared/hooks/usePaginationLoadTriggers';
12
12
  const LOADING_SKELETONS_COUNT = 3;
@@ -36,7 +36,7 @@ export const PaginationProvider = ({ uuid, filter, panel, tab, content, fragment
36
36
  const initialEndCursor = Array.isArray(content)
37
37
  ? content.at(-1)?.attrs?.uuid
38
38
  : content?.attrs?.uuid;
39
- const { setNavigating } = useEditorState();
39
+ const { refreshEditorBaseline, setNavigating } = useEditorState();
40
40
  const [startCursor, setStartCursor] = useState();
41
41
  const [endCursor, setEndCursor] = useState(initialEndCursor || undefined);
42
42
  const [navCursor, setNavCursor] = useState();
@@ -56,7 +56,9 @@ export const PaginationProvider = ({ uuid, filter, panel, tab, content, fragment
56
56
  // When a `tab` is specified, only accept the hash when the panel's active tab
57
57
  // matches — this prevents a PaginationProvider for one tab (e.g. endnotes)
58
58
  // from reacting to hashes set by a different tab (e.g. glossary).
59
- const panelHash = !tab || panels[panel]?.tab === tab || (tab === 'translation' && panels[panel]?.tab === 'compare')
59
+ const panelHash = !tab ||
60
+ panels[panel]?.tab === tab ||
61
+ (tab === 'translation' && panels[panel]?.tab === 'compare')
60
62
  ? panels[panel]?.hash
61
63
  : undefined;
62
64
  const { extensions } = useTranslationExtensions({
@@ -135,6 +137,9 @@ export const PaginationProvider = ({ uuid, filter, panel, tab, content, fragment
135
137
  });
136
138
  setStartCursor(hasMoreBefore && prevCursor ? prevCursor : undefined);
137
139
  setEndCursor(hasMoreAfter && nextCursor ? nextCursor : undefined);
140
+ if (tab) {
141
+ refreshEditorBaseline(tab);
142
+ }
138
143
  // Wait for React to re-render and update the DOM (remove/add skeletons)
139
144
  // by waiting until the element's position stabilizes
140
145
  await new Promise((resolve) => {
@@ -195,6 +200,10 @@ export const PaginationProvider = ({ uuid, filter, panel, tab, content, fragment
195
200
  dataClient,
196
201
  updatePanel,
197
202
  isMobile,
203
+ refreshEditorBaseline,
204
+ setNavigating,
205
+ tab,
206
+ fragment,
198
207
  ]);
199
208
  useEffect(() => {
200
209
  return () => {
@@ -223,6 +232,9 @@ export const PaginationProvider = ({ uuid, filter, panel, tab, content, fragment
223
232
  setNavigating(true);
224
233
  await insertContentChunked(editor, pos, blocks);
225
234
  setNavigating(false);
235
+ if (tab) {
236
+ refreshEditorBaseline(tab);
237
+ }
226
238
  }
227
239
  setEndCursor(hasMore && nextCursor ? nextCursor : undefined);
228
240
  setEndIsLoading(false);
@@ -235,6 +247,9 @@ export const PaginationProvider = ({ uuid, filter, panel, tab, content, fragment
235
247
  endCursor,
236
248
  dataClient,
237
249
  endLoadRequest,
250
+ refreshEditorBaseline,
251
+ setNavigating,
252
+ tab,
238
253
  ]);
239
254
  useEffect(() => {
240
255
  if (startLoadRequest === 0 ||
@@ -265,6 +280,9 @@ export const PaginationProvider = ({ uuid, filter, panel, tab, content, fragment
265
280
  setNavigating(true);
266
281
  editor.commands.insertContentAt(pos, blocks);
267
282
  setNavigating(false);
283
+ if (tab) {
284
+ refreshEditorBaseline(tab);
285
+ }
268
286
  requestAnimationFrame(() => {
269
287
  const newScrollHeight = scrollContainer?.scrollHeight || 0;
270
288
  const deltaHeight = newScrollHeight - previousScrollHeight;
@@ -278,6 +296,9 @@ export const PaginationProvider = ({ uuid, filter, panel, tab, content, fragment
278
296
  setNavigating(true);
279
297
  editor.commands.insertContentAt(pos, blocks);
280
298
  setNavigating(false);
299
+ if (tab) {
300
+ refreshEditorBaseline(tab);
301
+ }
281
302
  }
282
303
  setStartCursor(hasMoreBefore && prevCursor ? prevCursor : undefined);
283
304
  setStartIsLoading(false);
@@ -290,6 +311,9 @@ export const PaginationProvider = ({ uuid, filter, panel, tab, content, fragment
290
311
  startCursor,
291
312
  dataClient,
292
313
  startLoadRequest,
314
+ refreshEditorBaseline,
315
+ setNavigating,
316
+ tab,
293
317
  ]);
294
318
  return (_jsxs(PaginationContext.Provider, { value: {
295
319
  startCursor,