superdoc 2.25.0-next.3 → 2.25.0-next.4

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 (44) hide show
  1. package/dist/chunks/{create-super-doc-ui-D8ss5E0J.cjs → create-super-doc-ui-C-oN_R2a.cjs} +19 -0
  2. package/dist/chunks/{create-super-doc-ui-3habU4hL.es.js → create-super-doc-ui-D5waZHl3.es.js} +19 -0
  3. package/dist/collaboration-upgrade-engine.cjs +1 -1
  4. package/dist/collaboration-upgrade-engine.es.js +1 -1
  5. package/dist/document-api/src/contract/operation-definitions.d.ts +1 -1
  6. package/dist/document-api/src/index.d.ts +1 -0
  7. package/dist/document-api/src/permission-ranges/permission-ranges.d.ts +9 -1
  8. package/dist/document-api/src/permission-ranges/permission-ranges.types.d.ts +17 -0
  9. package/dist/document-api/src/protection/protection.types.d.ts +2 -2
  10. package/dist/layout-engine/contracts/src/incremental-dependency.d.ts +2 -2
  11. package/dist/layout-engine/contracts/src/index.d.ts +4 -0
  12. package/dist/layout-engine/layout-bridge/src/font-metrics-cache.d.ts +2 -23
  13. package/dist/layout-engine/layout-bridge/src/incrementalLayout.d.ts +11 -4
  14. package/dist/layout-engine/layout-bridge/src/index.d.ts +2 -2
  15. package/dist/layout-engine/layout-bridge/src/measurement-environment.d.ts +12 -0
  16. package/dist/layout-engine/layout-bridge/src/resolveLiveCrossReferences.d.ts +1 -1
  17. package/dist/layout-engine/painters/dom/src/index.d.ts +4 -0
  18. package/dist/layout-engine/painters/dom/src/runs/text-run.d.ts +2 -17
  19. package/dist/layout-engine/painters/dom/src/runs/text-style-facts.d.ts +9 -0
  20. package/dist/layout-engine/painters/dom/src/runs/tracked-changes.d.ts +6 -9
  21. package/dist/layout-engine/painters/dom/src/styles.d.ts +21 -0
  22. package/dist/public/ui-react.cjs +1 -1
  23. package/dist/public/ui-react.es.js +1 -1
  24. package/dist/public/ui-vue.cjs +1 -1
  25. package/dist/public/ui-vue.es.js +1 -1
  26. package/dist/public/ui.cjs +1 -1
  27. package/dist/public/ui.es.js +1 -1
  28. package/dist/shared/font-system/src/registry.d.ts +5 -1
  29. package/dist/shared/font-system/src/resolver.d.ts +2 -0
  30. package/dist/style.css +27 -27
  31. package/dist/style.layered.css +27 -27
  32. package/dist/superdoc/src/core/types/index.d.ts +1 -1
  33. package/dist/superdoc/src/index.d.cts +2 -0
  34. package/dist/superdoc/src/index.d.ts +1 -0
  35. package/dist/superdoc/src/public/index.d.cts +8 -0
  36. package/dist/superdoc/src/public/index.d.ts +2 -0
  37. package/dist/superdoc/src/stores/comments-store.d.ts +7 -4
  38. package/dist/superdoc/src/stores/superdoc-store.d.ts +21 -12
  39. package/dist/superdoc.cjs +160 -14
  40. package/dist/superdoc.es.js +159 -15
  41. package/dist-cdn/style.layered.css +1 -1
  42. package/dist-cdn/superdoc.min.css +1 -1
  43. package/dist-cdn/superdoc.min.js +42 -42
  44. package/package.json +2 -2
@@ -37,6 +37,7 @@ export const useSuperdocStore: import('pinia').StoreDefinition<"superdoc", Pick<
37
37
  hasInitializedLocations: import('vue').Ref<boolean, boolean>;
38
38
  isCommentHighlighted: import('vue').Ref<boolean, boolean>;
39
39
  floatingCommentsOffset: import('vue').Ref<number, number>;
40
+ committedReviewPresentations: import('vue').ShallowRef<{}, {}>;
40
41
  sortedConversations: import('vue').Ref<never[], never[]>;
41
42
  visibleConversations: import('vue').Ref<never[], never[]>;
42
43
  skipSelectionUpdate: import('vue').Ref<boolean, boolean>;
@@ -207,7 +208,7 @@ export const useSuperdocStore: import('pinia').StoreDefinition<"superdoc", Pick<
207
208
  v2CommentsAdapter: import('vue').ShallowRef<null, null>;
208
209
  setV2CommentsAdapter: (adapter: any) => void;
209
210
  getV2CommentsAdapter: (superdoc: any) => any;
210
- applyReviewWindowFromV2: ({ superdoc, commentsAdapter, trackedChangesAdapter, documentId, commentItems, trackedChangeItems, requestedCommentIds, requestedTrackedChangeIds, unresolvedCommentIds, trackedList, sourceCoverageRevision, evaluatedRevision, patch, }?: {}) => any;
211
+ applyReviewWindowFromV2: ({ superdoc, commentsAdapter, trackedChangesAdapter, documentId, commentItems, trackedChangeItems, preparedReview, requestedCommentIds, requestedTrackedChangeIds, unresolvedCommentIds, trackedList, sourceCoverageRevision, evaluatedRevision, patch, }?: {}) => any;
211
212
  reconcileCommentsFromV2: ({ superdoc, adapter, documentId, items, preparedInputs, pruneStale, hydrationGeneration, }?: {
212
213
  preparedInputs?: null | undefined;
213
214
  pruneStale?: boolean | undefined;
@@ -282,7 +283,7 @@ export const useSuperdocStore: import('pinia').StoreDefinition<"superdoc", Pick<
282
283
  liveAnchorKeys?: null | undefined;
283
284
  }) => any;
284
285
  remapTrackedChangeIdentities: (pairs?: any[], { documentId }?: {}) => void;
285
- }, "suppressInternalExternal" | "activeComment" | "activeFloatingCommentInstanceId" | "floatingCommentsOffset" | "pendingComment" | "currentCommentText" | "currentCommentMentions" | "isDebugging" | "editingCommentId" | "editorCommentPositions" | "isCommentHighlighted" | "v2CommentsAdapter" | "COMMENT_EVENTS" | "hasInitializedComments" | "hasSyncedCollaborationComments" | "commentDialogs" | "overlappingComments" | "overlappedIds" | "commentsList" | "reviewDirectoryList" | "isCommentsListVisible" | "isReviewDirectoryActive" | "isReviewDirectoryLoading" | "generalCommentIds" | "editorCommentIds" | "commentsParentElement" | "hasInitializedLocations" | "sortedConversations" | "visibleConversations" | "skipSelectionUpdate" | "isFloatingCommentsReady" | "instantSidebarAlignmentTargetY" | "instantSidebarAlignmentThreadId" | "instantSidebarAlignmentInstanceId" | "viewingVisibility" | "v2TrackedChangesAdapter">, Pick<{
286
+ }, "suppressInternalExternal" | "activeComment" | "activeFloatingCommentInstanceId" | "floatingCommentsOffset" | "pendingComment" | "currentCommentText" | "currentCommentMentions" | "isDebugging" | "editingCommentId" | "editorCommentPositions" | "isCommentHighlighted" | "v2CommentsAdapter" | "COMMENT_EVENTS" | "hasInitializedComments" | "hasSyncedCollaborationComments" | "commentDialogs" | "overlappingComments" | "overlappedIds" | "commentsList" | "reviewDirectoryList" | "isCommentsListVisible" | "isReviewDirectoryActive" | "isReviewDirectoryLoading" | "generalCommentIds" | "editorCommentIds" | "commentsParentElement" | "hasInitializedLocations" | "committedReviewPresentations" | "sortedConversations" | "visibleConversations" | "skipSelectionUpdate" | "isFloatingCommentsReady" | "instantSidebarAlignmentTargetY" | "instantSidebarAlignmentThreadId" | "instantSidebarAlignmentInstanceId" | "viewingVisibility" | "v2TrackedChangesAdapter">, Pick<{
286
287
  COMMENT_EVENTS: {
287
288
  readonly RESOLVED: "resolved";
288
289
  readonly NEW: "new";
@@ -320,6 +321,7 @@ export const useSuperdocStore: import('pinia').StoreDefinition<"superdoc", Pick<
320
321
  hasInitializedLocations: import('vue').Ref<boolean, boolean>;
321
322
  isCommentHighlighted: import('vue').Ref<boolean, boolean>;
322
323
  floatingCommentsOffset: import('vue').Ref<number, number>;
324
+ committedReviewPresentations: import('vue').ShallowRef<{}, {}>;
323
325
  sortedConversations: import('vue').Ref<never[], never[]>;
324
326
  visibleConversations: import('vue').Ref<never[], never[]>;
325
327
  skipSelectionUpdate: import('vue').Ref<boolean, boolean>;
@@ -490,7 +492,7 @@ export const useSuperdocStore: import('pinia').StoreDefinition<"superdoc", Pick<
490
492
  v2CommentsAdapter: import('vue').ShallowRef<null, null>;
491
493
  setV2CommentsAdapter: (adapter: any) => void;
492
494
  getV2CommentsAdapter: (superdoc: any) => any;
493
- applyReviewWindowFromV2: ({ superdoc, commentsAdapter, trackedChangesAdapter, documentId, commentItems, trackedChangeItems, requestedCommentIds, requestedTrackedChangeIds, unresolvedCommentIds, trackedList, sourceCoverageRevision, evaluatedRevision, patch, }?: {}) => any;
495
+ applyReviewWindowFromV2: ({ superdoc, commentsAdapter, trackedChangesAdapter, documentId, commentItems, trackedChangeItems, preparedReview, requestedCommentIds, requestedTrackedChangeIds, unresolvedCommentIds, trackedList, sourceCoverageRevision, evaluatedRevision, patch, }?: {}) => any;
494
496
  reconcileCommentsFromV2: ({ superdoc, adapter, documentId, items, preparedInputs, pruneStale, hydrationGeneration, }?: {
495
497
  preparedInputs?: null | undefined;
496
498
  pruneStale?: boolean | undefined;
@@ -603,6 +605,7 @@ export const useSuperdocStore: import('pinia').StoreDefinition<"superdoc", Pick<
603
605
  hasInitializedLocations: import('vue').Ref<boolean, boolean>;
604
606
  isCommentHighlighted: import('vue').Ref<boolean, boolean>;
605
607
  floatingCommentsOffset: import('vue').Ref<number, number>;
608
+ committedReviewPresentations: import('vue').ShallowRef<{}, {}>;
606
609
  sortedConversations: import('vue').Ref<never[], never[]>;
607
610
  visibleConversations: import('vue').Ref<never[], never[]>;
608
611
  skipSelectionUpdate: import('vue').Ref<boolean, boolean>;
@@ -773,7 +776,7 @@ export const useSuperdocStore: import('pinia').StoreDefinition<"superdoc", Pick<
773
776
  v2CommentsAdapter: import('vue').ShallowRef<null, null>;
774
777
  setV2CommentsAdapter: (adapter: any) => void;
775
778
  getV2CommentsAdapter: (superdoc: any) => any;
776
- applyReviewWindowFromV2: ({ superdoc, commentsAdapter, trackedChangesAdapter, documentId, commentItems, trackedChangeItems, requestedCommentIds, requestedTrackedChangeIds, unresolvedCommentIds, trackedList, sourceCoverageRevision, evaluatedRevision, patch, }?: {}) => any;
779
+ applyReviewWindowFromV2: ({ superdoc, commentsAdapter, trackedChangesAdapter, documentId, commentItems, trackedChangeItems, preparedReview, requestedCommentIds, requestedTrackedChangeIds, unresolvedCommentIds, trackedList, sourceCoverageRevision, evaluatedRevision, patch, }?: {}) => any;
777
780
  reconcileCommentsFromV2: ({ superdoc, adapter, documentId, items, preparedInputs, pruneStale, hydrationGeneration, }?: {
778
781
  preparedInputs?: null | undefined;
779
782
  pruneStale?: boolean | undefined;
@@ -938,6 +941,7 @@ export const useSuperdocStore: import('pinia').StoreDefinition<"superdoc", Pick<
938
941
  hasInitializedLocations: import('vue').Ref<boolean, boolean>;
939
942
  isCommentHighlighted: import('vue').Ref<boolean, boolean>;
940
943
  floatingCommentsOffset: import('vue').Ref<number, number>;
944
+ committedReviewPresentations: import('vue').ShallowRef<{}, {}>;
941
945
  sortedConversations: import('vue').Ref<never[], never[]>;
942
946
  visibleConversations: import('vue').Ref<never[], never[]>;
943
947
  skipSelectionUpdate: import('vue').Ref<boolean, boolean>;
@@ -1108,7 +1112,7 @@ export const useSuperdocStore: import('pinia').StoreDefinition<"superdoc", Pick<
1108
1112
  v2CommentsAdapter: import('vue').ShallowRef<null, null>;
1109
1113
  setV2CommentsAdapter: (adapter: any) => void;
1110
1114
  getV2CommentsAdapter: (superdoc: any) => any;
1111
- applyReviewWindowFromV2: ({ superdoc, commentsAdapter, trackedChangesAdapter, documentId, commentItems, trackedChangeItems, requestedCommentIds, requestedTrackedChangeIds, unresolvedCommentIds, trackedList, sourceCoverageRevision, evaluatedRevision, patch, }?: {}) => any;
1115
+ applyReviewWindowFromV2: ({ superdoc, commentsAdapter, trackedChangesAdapter, documentId, commentItems, trackedChangeItems, preparedReview, requestedCommentIds, requestedTrackedChangeIds, unresolvedCommentIds, trackedList, sourceCoverageRevision, evaluatedRevision, patch, }?: {}) => any;
1112
1116
  reconcileCommentsFromV2: ({ superdoc, adapter, documentId, items, preparedInputs, pruneStale, hydrationGeneration, }?: {
1113
1117
  preparedInputs?: null | undefined;
1114
1118
  pruneStale?: boolean | undefined;
@@ -1183,7 +1187,7 @@ export const useSuperdocStore: import('pinia').StoreDefinition<"superdoc", Pick<
1183
1187
  liveAnchorKeys?: null | undefined;
1184
1188
  }) => any;
1185
1189
  remapTrackedChangeIdentities: (pairs?: any[], { documentId }?: {}) => void;
1186
- }, "suppressInternalExternal" | "activeComment" | "activeFloatingCommentInstanceId" | "floatingCommentsOffset" | "pendingComment" | "currentCommentText" | "currentCommentMentions" | "isDebugging" | "editingCommentId" | "editorCommentPositions" | "isCommentHighlighted" | "v2CommentsAdapter" | "COMMENT_EVENTS" | "hasInitializedComments" | "hasSyncedCollaborationComments" | "commentDialogs" | "overlappingComments" | "overlappedIds" | "commentsList" | "reviewDirectoryList" | "isCommentsListVisible" | "isReviewDirectoryActive" | "isReviewDirectoryLoading" | "generalCommentIds" | "editorCommentIds" | "commentsParentElement" | "hasInitializedLocations" | "sortedConversations" | "visibleConversations" | "skipSelectionUpdate" | "isFloatingCommentsReady" | "instantSidebarAlignmentTargetY" | "instantSidebarAlignmentThreadId" | "instantSidebarAlignmentInstanceId" | "viewingVisibility" | "v2TrackedChangesAdapter">, Pick<{
1190
+ }, "suppressInternalExternal" | "activeComment" | "activeFloatingCommentInstanceId" | "floatingCommentsOffset" | "pendingComment" | "currentCommentText" | "currentCommentMentions" | "isDebugging" | "editingCommentId" | "editorCommentPositions" | "isCommentHighlighted" | "v2CommentsAdapter" | "COMMENT_EVENTS" | "hasInitializedComments" | "hasSyncedCollaborationComments" | "commentDialogs" | "overlappingComments" | "overlappedIds" | "commentsList" | "reviewDirectoryList" | "isCommentsListVisible" | "isReviewDirectoryActive" | "isReviewDirectoryLoading" | "generalCommentIds" | "editorCommentIds" | "commentsParentElement" | "hasInitializedLocations" | "committedReviewPresentations" | "sortedConversations" | "visibleConversations" | "skipSelectionUpdate" | "isFloatingCommentsReady" | "instantSidebarAlignmentTargetY" | "instantSidebarAlignmentThreadId" | "instantSidebarAlignmentInstanceId" | "viewingVisibility" | "v2TrackedChangesAdapter">, Pick<{
1187
1191
  COMMENT_EVENTS: {
1188
1192
  readonly RESOLVED: "resolved";
1189
1193
  readonly NEW: "new";
@@ -1221,6 +1225,7 @@ export const useSuperdocStore: import('pinia').StoreDefinition<"superdoc", Pick<
1221
1225
  hasInitializedLocations: import('vue').Ref<boolean, boolean>;
1222
1226
  isCommentHighlighted: import('vue').Ref<boolean, boolean>;
1223
1227
  floatingCommentsOffset: import('vue').Ref<number, number>;
1228
+ committedReviewPresentations: import('vue').ShallowRef<{}, {}>;
1224
1229
  sortedConversations: import('vue').Ref<never[], never[]>;
1225
1230
  visibleConversations: import('vue').Ref<never[], never[]>;
1226
1231
  skipSelectionUpdate: import('vue').Ref<boolean, boolean>;
@@ -1391,7 +1396,7 @@ export const useSuperdocStore: import('pinia').StoreDefinition<"superdoc", Pick<
1391
1396
  v2CommentsAdapter: import('vue').ShallowRef<null, null>;
1392
1397
  setV2CommentsAdapter: (adapter: any) => void;
1393
1398
  getV2CommentsAdapter: (superdoc: any) => any;
1394
- applyReviewWindowFromV2: ({ superdoc, commentsAdapter, trackedChangesAdapter, documentId, commentItems, trackedChangeItems, requestedCommentIds, requestedTrackedChangeIds, unresolvedCommentIds, trackedList, sourceCoverageRevision, evaluatedRevision, patch, }?: {}) => any;
1399
+ applyReviewWindowFromV2: ({ superdoc, commentsAdapter, trackedChangesAdapter, documentId, commentItems, trackedChangeItems, preparedReview, requestedCommentIds, requestedTrackedChangeIds, unresolvedCommentIds, trackedList, sourceCoverageRevision, evaluatedRevision, patch, }?: {}) => any;
1395
1400
  reconcileCommentsFromV2: ({ superdoc, adapter, documentId, items, preparedInputs, pruneStale, hydrationGeneration, }?: {
1396
1401
  preparedInputs?: null | undefined;
1397
1402
  pruneStale?: boolean | undefined;
@@ -1504,6 +1509,7 @@ export const useSuperdocStore: import('pinia').StoreDefinition<"superdoc", Pick<
1504
1509
  hasInitializedLocations: import('vue').Ref<boolean, boolean>;
1505
1510
  isCommentHighlighted: import('vue').Ref<boolean, boolean>;
1506
1511
  floatingCommentsOffset: import('vue').Ref<number, number>;
1512
+ committedReviewPresentations: import('vue').ShallowRef<{}, {}>;
1507
1513
  sortedConversations: import('vue').Ref<never[], never[]>;
1508
1514
  visibleConversations: import('vue').Ref<never[], never[]>;
1509
1515
  skipSelectionUpdate: import('vue').Ref<boolean, boolean>;
@@ -1674,7 +1680,7 @@ export const useSuperdocStore: import('pinia').StoreDefinition<"superdoc", Pick<
1674
1680
  v2CommentsAdapter: import('vue').ShallowRef<null, null>;
1675
1681
  setV2CommentsAdapter: (adapter: any) => void;
1676
1682
  getV2CommentsAdapter: (superdoc: any) => any;
1677
- applyReviewWindowFromV2: ({ superdoc, commentsAdapter, trackedChangesAdapter, documentId, commentItems, trackedChangeItems, requestedCommentIds, requestedTrackedChangeIds, unresolvedCommentIds, trackedList, sourceCoverageRevision, evaluatedRevision, patch, }?: {}) => any;
1683
+ applyReviewWindowFromV2: ({ superdoc, commentsAdapter, trackedChangesAdapter, documentId, commentItems, trackedChangeItems, preparedReview, requestedCommentIds, requestedTrackedChangeIds, unresolvedCommentIds, trackedList, sourceCoverageRevision, evaluatedRevision, patch, }?: {}) => any;
1678
1684
  reconcileCommentsFromV2: ({ superdoc, adapter, documentId, items, preparedInputs, pruneStale, hydrationGeneration, }?: {
1679
1685
  preparedInputs?: null | undefined;
1680
1686
  pruneStale?: boolean | undefined;
@@ -1839,6 +1845,7 @@ export const useSuperdocStore: import('pinia').StoreDefinition<"superdoc", Pick<
1839
1845
  hasInitializedLocations: import('vue').Ref<boolean, boolean>;
1840
1846
  isCommentHighlighted: import('vue').Ref<boolean, boolean>;
1841
1847
  floatingCommentsOffset: import('vue').Ref<number, number>;
1848
+ committedReviewPresentations: import('vue').ShallowRef<{}, {}>;
1842
1849
  sortedConversations: import('vue').Ref<never[], never[]>;
1843
1850
  visibleConversations: import('vue').Ref<never[], never[]>;
1844
1851
  skipSelectionUpdate: import('vue').Ref<boolean, boolean>;
@@ -2009,7 +2016,7 @@ export const useSuperdocStore: import('pinia').StoreDefinition<"superdoc", Pick<
2009
2016
  v2CommentsAdapter: import('vue').ShallowRef<null, null>;
2010
2017
  setV2CommentsAdapter: (adapter: any) => void;
2011
2018
  getV2CommentsAdapter: (superdoc: any) => any;
2012
- applyReviewWindowFromV2: ({ superdoc, commentsAdapter, trackedChangesAdapter, documentId, commentItems, trackedChangeItems, requestedCommentIds, requestedTrackedChangeIds, unresolvedCommentIds, trackedList, sourceCoverageRevision, evaluatedRevision, patch, }?: {}) => any;
2019
+ applyReviewWindowFromV2: ({ superdoc, commentsAdapter, trackedChangesAdapter, documentId, commentItems, trackedChangeItems, preparedReview, requestedCommentIds, requestedTrackedChangeIds, unresolvedCommentIds, trackedList, sourceCoverageRevision, evaluatedRevision, patch, }?: {}) => any;
2013
2020
  reconcileCommentsFromV2: ({ superdoc, adapter, documentId, items, preparedInputs, pruneStale, hydrationGeneration, }?: {
2014
2021
  preparedInputs?: null | undefined;
2015
2022
  pruneStale?: boolean | undefined;
@@ -2084,7 +2091,7 @@ export const useSuperdocStore: import('pinia').StoreDefinition<"superdoc", Pick<
2084
2091
  liveAnchorKeys?: null | undefined;
2085
2092
  }) => any;
2086
2093
  remapTrackedChangeIdentities: (pairs?: any[], { documentId }?: {}) => void;
2087
- }, "suppressInternalExternal" | "activeComment" | "activeFloatingCommentInstanceId" | "floatingCommentsOffset" | "pendingComment" | "currentCommentText" | "currentCommentMentions" | "isDebugging" | "editingCommentId" | "editorCommentPositions" | "isCommentHighlighted" | "v2CommentsAdapter" | "COMMENT_EVENTS" | "hasInitializedComments" | "hasSyncedCollaborationComments" | "commentDialogs" | "overlappingComments" | "overlappedIds" | "commentsList" | "reviewDirectoryList" | "isCommentsListVisible" | "isReviewDirectoryActive" | "isReviewDirectoryLoading" | "generalCommentIds" | "editorCommentIds" | "commentsParentElement" | "hasInitializedLocations" | "sortedConversations" | "visibleConversations" | "skipSelectionUpdate" | "isFloatingCommentsReady" | "instantSidebarAlignmentTargetY" | "instantSidebarAlignmentThreadId" | "instantSidebarAlignmentInstanceId" | "viewingVisibility" | "v2TrackedChangesAdapter">, Pick<{
2094
+ }, "suppressInternalExternal" | "activeComment" | "activeFloatingCommentInstanceId" | "floatingCommentsOffset" | "pendingComment" | "currentCommentText" | "currentCommentMentions" | "isDebugging" | "editingCommentId" | "editorCommentPositions" | "isCommentHighlighted" | "v2CommentsAdapter" | "COMMENT_EVENTS" | "hasInitializedComments" | "hasSyncedCollaborationComments" | "commentDialogs" | "overlappingComments" | "overlappedIds" | "commentsList" | "reviewDirectoryList" | "isCommentsListVisible" | "isReviewDirectoryActive" | "isReviewDirectoryLoading" | "generalCommentIds" | "editorCommentIds" | "commentsParentElement" | "hasInitializedLocations" | "committedReviewPresentations" | "sortedConversations" | "visibleConversations" | "skipSelectionUpdate" | "isFloatingCommentsReady" | "instantSidebarAlignmentTargetY" | "instantSidebarAlignmentThreadId" | "instantSidebarAlignmentInstanceId" | "viewingVisibility" | "v2TrackedChangesAdapter">, Pick<{
2088
2095
  COMMENT_EVENTS: {
2089
2096
  readonly RESOLVED: "resolved";
2090
2097
  readonly NEW: "new";
@@ -2122,6 +2129,7 @@ export const useSuperdocStore: import('pinia').StoreDefinition<"superdoc", Pick<
2122
2129
  hasInitializedLocations: import('vue').Ref<boolean, boolean>;
2123
2130
  isCommentHighlighted: import('vue').Ref<boolean, boolean>;
2124
2131
  floatingCommentsOffset: import('vue').Ref<number, number>;
2132
+ committedReviewPresentations: import('vue').ShallowRef<{}, {}>;
2125
2133
  sortedConversations: import('vue').Ref<never[], never[]>;
2126
2134
  visibleConversations: import('vue').Ref<never[], never[]>;
2127
2135
  skipSelectionUpdate: import('vue').Ref<boolean, boolean>;
@@ -2292,7 +2300,7 @@ export const useSuperdocStore: import('pinia').StoreDefinition<"superdoc", Pick<
2292
2300
  v2CommentsAdapter: import('vue').ShallowRef<null, null>;
2293
2301
  setV2CommentsAdapter: (adapter: any) => void;
2294
2302
  getV2CommentsAdapter: (superdoc: any) => any;
2295
- applyReviewWindowFromV2: ({ superdoc, commentsAdapter, trackedChangesAdapter, documentId, commentItems, trackedChangeItems, requestedCommentIds, requestedTrackedChangeIds, unresolvedCommentIds, trackedList, sourceCoverageRevision, evaluatedRevision, patch, }?: {}) => any;
2303
+ applyReviewWindowFromV2: ({ superdoc, commentsAdapter, trackedChangesAdapter, documentId, commentItems, trackedChangeItems, preparedReview, requestedCommentIds, requestedTrackedChangeIds, unresolvedCommentIds, trackedList, sourceCoverageRevision, evaluatedRevision, patch, }?: {}) => any;
2296
2304
  reconcileCommentsFromV2: ({ superdoc, adapter, documentId, items, preparedInputs, pruneStale, hydrationGeneration, }?: {
2297
2305
  preparedInputs?: null | undefined;
2298
2306
  pruneStale?: boolean | undefined;
@@ -2405,6 +2413,7 @@ export const useSuperdocStore: import('pinia').StoreDefinition<"superdoc", Pick<
2405
2413
  hasInitializedLocations: import('vue').Ref<boolean, boolean>;
2406
2414
  isCommentHighlighted: import('vue').Ref<boolean, boolean>;
2407
2415
  floatingCommentsOffset: import('vue').Ref<number, number>;
2416
+ committedReviewPresentations: import('vue').ShallowRef<{}, {}>;
2408
2417
  sortedConversations: import('vue').Ref<never[], never[]>;
2409
2418
  visibleConversations: import('vue').Ref<never[], never[]>;
2410
2419
  skipSelectionUpdate: import('vue').Ref<boolean, boolean>;
@@ -2575,7 +2584,7 @@ export const useSuperdocStore: import('pinia').StoreDefinition<"superdoc", Pick<
2575
2584
  v2CommentsAdapter: import('vue').ShallowRef<null, null>;
2576
2585
  setV2CommentsAdapter: (adapter: any) => void;
2577
2586
  getV2CommentsAdapter: (superdoc: any) => any;
2578
- applyReviewWindowFromV2: ({ superdoc, commentsAdapter, trackedChangesAdapter, documentId, commentItems, trackedChangeItems, requestedCommentIds, requestedTrackedChangeIds, unresolvedCommentIds, trackedList, sourceCoverageRevision, evaluatedRevision, patch, }?: {}) => any;
2587
+ applyReviewWindowFromV2: ({ superdoc, commentsAdapter, trackedChangesAdapter, documentId, commentItems, trackedChangeItems, preparedReview, requestedCommentIds, requestedTrackedChangeIds, unresolvedCommentIds, trackedList, sourceCoverageRevision, evaluatedRevision, patch, }?: {}) => any;
2579
2588
  reconcileCommentsFromV2: ({ superdoc, adapter, documentId, items, preparedInputs, pruneStale, hydrationGeneration, }?: {
2580
2589
  preparedInputs?: null | undefined;
2581
2590
  pruneStale?: boolean | undefined;
package/dist/superdoc.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_rolldown_runtime = require("./chunks/rolldown-runtime-74VwNCz7.cjs");
3
3
  const require_blank_docx = require("./chunks/blank-docx-BuFAbRjs.cjs");
4
- const require_create_super_doc_ui = require("./chunks/create-super-doc-ui-D8ss5E0J.cjs");
4
+ const require_create_super_doc_ui = require("./chunks/create-super-doc-ui-C-oN_R2a.cjs");
5
5
  const require_eventemitter3 = require("./chunks/eventemitter3-C_TAnXOl.cjs");
6
6
  const require_uuid = require("./chunks/uuid-BhG0ngwk.cjs");
7
7
  const require__plugin_vue_export_helper = require("./chunks/_plugin-vue_export-helper-BUdjGKyl.cjs");
@@ -304,7 +304,7 @@ var awarenessStatesToArray = (context, states) => {
304
304
  var DEFAULT_ENDPOINT = "https://ingest.superdoc.dev/v1/collect";
305
305
  function getSuperdocVersion() {
306
306
  try {
307
- return "2.25.0-next.3";
307
+ return "2.25.0-next.4";
308
308
  } catch {
309
309
  return "unknown";
310
310
  }
@@ -7847,6 +7847,7 @@ var useCommentsStore = defineStore("comments", () => {
7847
7847
  const editorCommentPositions = require__plugin_vue_export_helper.ref({});
7848
7848
  const isCommentHighlighted = require__plugin_vue_export_helper.ref(false);
7849
7849
  const floatingCommentsOffset = require__plugin_vue_export_helper.ref(0);
7850
+ const committedReviewPresentations = require__plugin_vue_export_helper.shallowRef({});
7850
7851
  const sortedConversations = require__plugin_vue_export_helper.ref([]);
7851
7852
  const visibleConversations = require__plugin_vue_export_helper.ref([]);
7852
7853
  const skipSelectionUpdate = require__plugin_vue_export_helper.ref(false);
@@ -8862,7 +8863,17 @@ var useCommentsStore = defineStore("comments", () => {
8862
8863
  resolvedComments: resolvedComments.sort(sorter)
8863
8864
  };
8864
8865
  };
8865
- const buildGroupedComments = (sorter) => buildGroupedCommentsFrom(commentsList.value, sorter);
8866
+ const buildGroupedComments = (sorter) => {
8867
+ const presentations = committedReviewPresentations.value;
8868
+ if (!Object.keys(presentations).length) return buildGroupedCommentsFrom(commentsList.value, sorter);
8869
+ const rows = new Map(commentsList.value.map((row) => [JSON.stringify([String(row.fileId), String(row.commentId)]), row]));
8870
+ const legacy = buildGroupedCommentsFrom(commentsList.value.filter((row) => !presentations[String(row.fileId)]), sorter);
8871
+ for (const [documentId, presentation] of Object.entries(presentations)) {
8872
+ legacy.parentComments.push(...presentation.groupOrder.open.map((id) => rows.get(JSON.stringify([documentId, String(id)]))).filter((row) => row && isThreadVisible(row)));
8873
+ legacy.resolvedComments.push(...presentation.groupOrder.resolved.map((id) => rows.get(JSON.stringify([documentId, String(id)]))).filter((row) => row && isThreadVisible(row)));
8874
+ }
8875
+ return legacy;
8876
+ };
8866
8877
  /** @type {import('vue').ComputedRef<{parentComments: Array, resolvedComments: Array}>} Comments grouped and sorted by creation time */
8867
8878
  const getGroupedComments = require__plugin_vue_export_helper.computed(() => buildGroupedComments(compareByCreatedTime));
8868
8879
  const getGroupedReviewDirectory = require__plugin_vue_export_helper.computed(() => buildGroupedCommentsFrom(reviewDirectoryList.value, compareByCreatedTime));
@@ -9835,7 +9846,7 @@ var useCommentsStore = defineStore("comments", () => {
9835
9846
  * wraps this action in one Pinia `$patch`; all fallible mapping completes
9836
9847
  * before either row family mutates.
9837
9848
  */
9838
- const applyReviewWindowFromV2 = ({ superdoc, commentsAdapter, trackedChangesAdapter, documentId, commentItems, trackedChangeItems, requestedCommentIds, requestedTrackedChangeIds, unresolvedCommentIds, trackedList, sourceCoverageRevision, evaluatedRevision, patch } = {}) => withInteractionSpan("store.reviewWindow.apply", "store-reconciliation", {
9849
+ const applyReviewWindowFromV2 = ({ superdoc, commentsAdapter, trackedChangesAdapter, documentId, commentItems, trackedChangeItems, preparedReview, requestedCommentIds, requestedTrackedChangeIds, unresolvedCommentIds, trackedList, sourceCoverageRevision, evaluatedRevision, patch } = {}) => withInteractionSpan("store.reviewWindow.apply", "store-reconciliation", {
9839
9850
  commentItemCount: Array.isArray(commentItems) ? commentItems.length : null,
9840
9851
  trackedItemCount: Array.isArray(trackedChangeItems) ? trackedChangeItems.length : null
9841
9852
  }, () => {
@@ -9861,6 +9872,10 @@ var useCommentsStore = defineStore("comments", () => {
9861
9872
  ok: false,
9862
9873
  reason: "document-mismatch"
9863
9874
  };
9875
+ if (preparedReview && (!Array.isArray(preparedReview.comments) || !Array.isArray(preparedReview.trackedChanges) || preparedReview.comments.length > 4096 || preparedReview.trackedChanges.length > 4096)) return {
9876
+ ok: false,
9877
+ reason: "items-invalid"
9878
+ };
9864
9879
  if (!Array.isArray(commentItems) || !Array.isArray(trackedChangeItems)) return {
9865
9880
  ok: false,
9866
9881
  reason: "items-invalid"
@@ -9874,7 +9889,7 @@ var useCommentsStore = defineStore("comments", () => {
9874
9889
  reason: "adapter-mapper-missing"
9875
9890
  };
9876
9891
  let effectiveCommentItems = commentItems;
9877
- if (typeof commentsAdapter.seedReviewCatalog === "function") {
9892
+ if (!preparedReview && typeof commentsAdapter.seedReviewCatalog === "function") {
9878
9893
  const seeded = commentsAdapter.seedReviewCatalog(commentItems, {
9879
9894
  sourceCoverageRevision,
9880
9895
  evaluatedRevision
@@ -9890,11 +9905,22 @@ var useCommentsStore = defineStore("comments", () => {
9890
9905
  let preparedInputs;
9891
9906
  let preparedParams;
9892
9907
  try {
9893
- preparedInputs = effectiveCommentItems.filter((item) => !isSyntheticTrackedChangeCommentLaneItem(item)).map((item) => commentsAdapter.mapV2CommentToUseCommentInput(item, {
9908
+ preparedInputs = preparedReview ? preparedReview.comments.map((input) => ({
9909
+ ...input,
9910
+ fileId: normalizedDocumentId,
9911
+ fileType,
9912
+ selection: {
9913
+ ...input.selection,
9914
+ documentId: normalizedDocumentId
9915
+ }
9916
+ })) : effectiveCommentItems.filter((item) => !isSyntheticTrackedChangeCommentLaneItem(item)).map((item) => commentsAdapter.mapV2CommentToUseCommentInput(item, {
9894
9917
  fileId: normalizedDocumentId,
9895
9918
  fileType
9896
9919
  })).filter(Boolean);
9897
- preparedParams = trackedChangeItems.map((item) => trackedChangesAdapter.mapV2TrackedChangeToCommentParams(item)).filter(Boolean);
9920
+ preparedParams = preparedReview ? preparedReview.trackedChanges.map((params) => ({
9921
+ ...params,
9922
+ documentId: normalizedDocumentId
9923
+ })) : trackedChangeItems.map((item) => trackedChangesAdapter.mapV2TrackedChangeToCommentParams(item)).filter(Boolean);
9898
9924
  } catch (error) {
9899
9925
  return {
9900
9926
  ok: false,
@@ -9929,6 +9955,10 @@ var useCommentsStore = defineStore("comments", () => {
9929
9955
  ])
9930
9956
  ].map((value) => normalizeCommentId(value)).filter(Boolean));
9931
9957
  patch(() => {
9958
+ if (preparedReview?.presentation) committedReviewPresentations.value = {
9959
+ ...committedReviewPresentations.value,
9960
+ [normalizedDocumentId]: preparedReview.presentation
9961
+ };
9932
9962
  reconcileTrackedChangesFromV2({
9933
9963
  superdoc,
9934
9964
  adapter: trackedChangesAdapter,
@@ -10331,6 +10361,11 @@ var useCommentsStore = defineStore("comments", () => {
10331
10361
  function removeCommentsForDocument(documentId) {
10332
10362
  const activeDocumentId = documentId != null ? String(documentId) : null;
10333
10363
  if (!activeDocumentId) return;
10364
+ if (committedReviewPresentations.value[activeDocumentId]) {
10365
+ const next = { ...committedReviewPresentations.value };
10366
+ delete next[activeDocumentId];
10367
+ committedReviewPresentations.value = next;
10368
+ }
10334
10369
  cancelImportedTrackedChangeBootstrap(activeDocumentId);
10335
10370
  const removedComments = commentsList.value.filter((comment) => belongsToDocument(comment, activeDocumentId, { allowSingleDocumentMismatch: true }));
10336
10371
  if (!removedComments.length) return;
@@ -11990,6 +12025,7 @@ var useCommentsStore = defineStore("comments", () => {
11990
12025
  hasInitializedLocations,
11991
12026
  isCommentHighlighted,
11992
12027
  floatingCommentsOffset,
12028
+ committedReviewPresentations,
11993
12029
  sortedConversations,
11994
12030
  visibleConversations,
11995
12031
  skipSelectionUpdate,
@@ -15258,6 +15294,50 @@ var composeAuthorColorResolver = (config) => {
15258
15294
  };
15259
15295
  };
15260
15296
  //#endregion
15297
+ //#region ../document-api/src/permission-ranges/permission-ranges.ts
15298
+ function editorKey(editor) {
15299
+ return editor.id?.trim() ? editor.id : editor.email?.trim() || void 0;
15300
+ }
15301
+ function editorMatches(editor, id) {
15302
+ return Boolean(id.trim()) && (editor.id === id || Boolean(editor.email?.trim() && editor.email.trim().toLowerCase() === id.toLowerCase()));
15303
+ }
15304
+ /**
15305
+ * Resolve a host ID or imported Word email against an explicitly supplied roster.
15306
+ * Word receives the email when available; opaque IDs remain host-specific.
15307
+ * Duplicate IDs/emails are ambiguous. This does not authenticate a user.
15308
+ */
15309
+ function resolvePermissionRangeEditor(editors, id) {
15310
+ const matches = editors.filter((editor) => editorMatches(editor, id));
15311
+ if (matches.length === 0) return {
15312
+ status: "unknown",
15313
+ id
15314
+ };
15315
+ if (matches.length !== 1) return {
15316
+ status: "ambiguous",
15317
+ id
15318
+ };
15319
+ const editor = matches[0];
15320
+ const wordId = editor.email?.trim() || editor.id;
15321
+ if (editors.filter((candidate) => editorMatches(candidate, wordId)).length !== 1) return {
15322
+ status: "ambiguous",
15323
+ id
15324
+ };
15325
+ return {
15326
+ status: "resolved",
15327
+ id,
15328
+ editor: { ...editor },
15329
+ principal: {
15330
+ kind: "editor",
15331
+ id: wordId
15332
+ }
15333
+ };
15334
+ }
15335
+ /** Enumerate the host roster for an editor picker, including ambiguous entries. */
15336
+ function listPermissionRangeEditors(editors) {
15337
+ const ids = new Set(editors.map(editorKey).filter((id) => id !== void 0));
15338
+ return Array.from(ids, (id) => resolvePermissionRangeEditor(editors, id));
15339
+ }
15340
+ //#endregion
15261
15341
  //#region src/core/superdoc-ui-owner.js
15262
15342
  var ownerIds = /* @__PURE__ */ new WeakMap();
15263
15343
  function getSuperDocUiOwnerId(superdoc) {
@@ -15379,7 +15459,22 @@ var _sfc_main$31 = {
15379
15459
  const { clearInstantSidebarAlignment } = commentsStore;
15380
15460
  const { activeComment, activeFloatingCommentInstanceId, editorCommentPositions, pendingComment, editingCommentId, instantSidebarAlignmentTargetY, instantSidebarAlignmentThreadId, instantSidebarAlignmentInstanceId } = storeToRefs(commentsStore);
15381
15461
  const { activeZoom } = storeToRefs(superdocStore);
15462
+ const committedPresentation = require__plugin_vue_export_helper.computed(() => commentsStore.committedReviewPresentations?.[String(props.currentDocument?.id)] ?? null);
15463
+ const committedInstances = require__plugin_vue_export_helper.computed(() => {
15464
+ const presentation = committedPresentation.value;
15465
+ if (!presentation) return null;
15466
+ const rows = new Map(commentsStore.commentsList.filter((row) => String(row.fileId) === String(props.currentDocument?.id)).map((row) => [String(row.commentId), row]));
15467
+ return presentation.instances.flatMap((instance) => {
15468
+ const comment = instance.rowId === "pending" ? pendingComment.value : rows.get(instance.rowId);
15469
+ return comment ? [{
15470
+ ...instance,
15471
+ comment,
15472
+ rowVersion: presentation.rowVersions[instance.rowId] ?? 0
15473
+ }] : [];
15474
+ });
15475
+ });
15382
15476
  const floatingCommentInstances = require__plugin_vue_export_helper.computed(() => {
15477
+ if (committedInstances.value) return committedInstances.value.filter((instance) => instance.rowId !== "pending");
15383
15478
  const currentFloatingCommentInstances = commentsStore.getFloatingCommentInstances;
15384
15479
  if (!Array.isArray(currentFloatingCommentInstances)) return [];
15385
15480
  const documentId = props.currentDocument?.id;
@@ -15497,7 +15592,7 @@ var _sfc_main$31 = {
15497
15592
  const shouldRenderDialog = (position) => {
15498
15593
  return shouldMountFloatingCommentDialog({
15499
15594
  id: position?.id,
15500
- visibleIds: visibleIds.value,
15595
+ visibleIds: committedPresentation.value ? new Set(allPositions.value.filter((item) => item.instanceRef?.mount).map((item) => item.id)) : visibleIds.value,
15501
15596
  activeCommentInstanceId: activeCommentInstanceId.value,
15502
15597
  comment: position?.commentRef
15503
15598
  });
@@ -15543,6 +15638,19 @@ var _sfc_main$31 = {
15543
15638
  });
15544
15639
  const allPositions = require__plugin_vue_export_helper.computed(() => {
15545
15640
  viewportRevision.value;
15641
+ if (committedInstances.value) return committedInstances.value.map((instance) => ({
15642
+ id: instance.id,
15643
+ threadId: instance.threadId,
15644
+ pageIndex: instance.pageIndex,
15645
+ anchorTop: instance.anchorTop,
15646
+ anchorBottom: instance.anchorBottom,
15647
+ top: instance.top,
15648
+ height: instance.height,
15649
+ hasAnchorGeometry: instance.positionEntry != null || instance.rowId === "pending",
15650
+ isOffscreenReviewCard: instance.isOffscreenReviewCard,
15651
+ commentRef: instance.comment,
15652
+ instanceRef: instance
15653
+ }));
15546
15654
  const positionedInstances = geometryBearingInstances.value;
15547
15655
  const hasPending = pendingComment.value && pendingComment.value.fileId === props.currentDocument.id;
15548
15656
  if (!positionedInstances.length && !floatingCommentInstances.value.length && !hasPending) return [];
@@ -15641,6 +15749,43 @@ var _sfc_main$31 = {
15641
15749
  resolveCollisions(collisionPositions, activeIndex, 15);
15642
15750
  return positions;
15643
15751
  });
15752
+ require__plugin_vue_export_helper.watch(() => {
15753
+ const presentation = committedPresentation.value, container = floatingCommentsContainer.value;
15754
+ if (!presentation || !container) return null;
15755
+ viewportRevision.value;
15756
+ const viewport = getFloatingViewportRange();
15757
+ if (!viewport) return null;
15758
+ const rail = container.getBoundingClientRect(), stage = props.parent?.getBoundingClientRect?.();
15759
+ const instances = committedInstances.value ?? [];
15760
+ return {
15761
+ activeThreadId: activeComment.value == null ? null : String(activeComment.value),
15762
+ activeInstanceId: activeCommentInstanceId.value == null ? null : String(activeCommentInstanceId.value),
15763
+ editingRowId: editingCommentId.value == null ? null : String(editingCommentId.value),
15764
+ retainedThreadIds: [],
15765
+ visibility: {
15766
+ comments: commentsStore.viewingVisibility?.documentMode !== "viewing" || commentsStore.viewingVisibility?.commentsVisible === true,
15767
+ trackedChanges: commentsStore.viewingVisibility?.documentMode !== "viewing" || commentsStore.viewingVisibility?.trackChangesVisible === true
15768
+ },
15769
+ viewport: {
15770
+ ...viewport,
15771
+ width: Math.max(1, rail.width),
15772
+ scale: 1,
15773
+ stageOffsetX: (stage?.left ?? rail.left) - rail.left,
15774
+ stageOffsetY: (stage?.top ?? rail.top) - rail.top
15775
+ },
15776
+ pending: pendingComment.value?.fileId === props.currentDocument.id && getPendingAnchorTop() != null ? {
15777
+ anchorTop: getPendingAnchorTop(),
15778
+ height: measuredHeights.value.pending || ESTIMATED_HEIGHT
15779
+ } : null,
15780
+ measurements: instances.filter((instance) => measuredHeights.value[instance.id] > 0).map((instance) => ({
15781
+ instanceId: instance.id,
15782
+ rowVersion: instance.rowVersion,
15783
+ height: measuredHeights.value[instance.id]
15784
+ }))
15785
+ };
15786
+ }, (input) => {
15787
+ if (input) committedPresentation.value?.updateContext(input);
15788
+ }, { immediate: true });
15644
15789
  const wrapperMinHeight = require__plugin_vue_export_helper.computed(() => {
15645
15790
  viewportRevision.value;
15646
15791
  return Math.max(0, props.parent?.clientHeight || 0, props.parent?.scrollHeight || 0);
@@ -16156,7 +16301,7 @@ var _sfc_main$31 = {
16156
16301
  }, [require__plugin_vue_export_helper.createElementVNode("div", {
16157
16302
  class: "sidebar-container",
16158
16303
  style: require__plugin_vue_export_helper.normalizeStyle({
16159
- transform: `translateY(${sidebarOffsetY.value}px)`,
16304
+ transform: `translateY(${committedPresentation.value ? 0 : sidebarOffsetY.value}px)`,
16160
16305
  transition: disableInstantLayoutTransitions.value ? "none" : void 0
16161
16306
  })
16162
16307
  }, [(require__plugin_vue_export_helper.openBlock(true), require__plugin_vue_export_helper.createElementBlock(require__plugin_vue_export_helper.Fragment, null, require__plugin_vue_export_helper.renderList(allPositions.value, (pos) => {
@@ -16199,7 +16344,7 @@ var _sfc_main$31 = {
16199
16344
  };
16200
16345
  }
16201
16346
  };
16202
- var FloatingComments_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$31, [["__scopeId", "data-v-15b59a51"]]);
16347
+ var FloatingComments_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_vue_export_helper_default(_sfc_main$31, [["__scopeId", "data-v-f0b1fd79"]]);
16203
16348
  //#endregion
16204
16349
  //#region src/components/CommentsLayer/PdfCommentsLayer.vue
16205
16350
  var _hoisted_1$23 = {
@@ -22587,6 +22732,7 @@ var SuperDoc_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_v
22587
22732
  documentId: ctx?.documentId,
22588
22733
  commentItems: result?.comments?.items,
22589
22734
  trackedChangeItems: result?.trackedChanges?.items,
22735
+ preparedReview: result?.preparedReview,
22590
22736
  requestedCommentIds: result?.comments?.requestedIds,
22591
22737
  requestedTrackedChangeIds: result?.trackedChanges?.requestedIds,
22592
22738
  unresolvedCommentIds: result?.comments?.unresolvedCommentIds,
@@ -23705,7 +23851,6 @@ var SuperDoc_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_v
23705
23851
  const onFontsResolvedFn = proxy.$superdoc.listeners?.("fonts-resolved")?.length > 0 ? proxy.$superdoc.listeners("fonts-resolved")[0] : null;
23706
23852
  const useLayoutEngine = proxy.$superdoc.config.useLayoutEngine !== false;
23707
23853
  const isNewFile = doc.isNewFile;
23708
- const benchmarkExecutionMode = proxy.$superdoc.config?.benchmarkExecutionMode;
23709
23854
  const benchmarkTraceEnabled = proxy.$superdoc.config?.benchmarkTraceEnabled === true;
23710
23855
  const collaborationResolution = resolveDocumentV2Collaboration(doc);
23711
23856
  const v2Collaboration = collaborationResolution.state === "valid" ? collaborationResolution.config : null;
@@ -23722,7 +23867,6 @@ var SuperDoc_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_v
23722
23867
  html: doc.html,
23723
23868
  markdown: doc.markdown,
23724
23869
  documentMode: proxy.$superdoc.config.documentMode,
23725
- ...benchmarkExecutionMode ? { benchmarkExecutionMode } : {},
23726
23870
  ...benchmarkTraceEnabled ? { benchmarkTraceEnabled: true } : {},
23727
23871
  allowSelectionInViewMode: proxy.$superdoc.config.allowSelectionInViewMode,
23728
23872
  rulers: doc.rulers,
@@ -24834,7 +24978,7 @@ var SuperDoc_default = /*#__PURE__*/ require__plugin_vue_export_helper._plugin_v
24834
24978
  ], 46, _hoisted_1$17);
24835
24979
  };
24836
24980
  }
24837
- }, [["__scopeId", "data-v-e8f59dd7"]]);
24981
+ }, [["__scopeId", "data-v-c57da6ae"]]);
24838
24982
  //#endregion
24839
24983
  //#region src/core/create-app.js
24840
24984
  var PINIA_DEVTOOLS_SETUP_EVENT = "devtools-plugin:setup";
@@ -46649,7 +46793,7 @@ var SuperDoc = class extends require_eventemitter3.import_eventemitter3.default
46649
46793
  }
46650
46794
  this.userColorMap = /* @__PURE__ */ new Map();
46651
46795
  this.colorIndex = 0;
46652
- this.version = "2.25.0-next.3";
46796
+ this.version = "2.25.0-next.4";
46653
46797
  this.#log("🦋 [superdoc] Using SuperDoc version:", this.version);
46654
46798
  this.superdocId = config.superdocId || require_uuid.v4();
46655
46799
  this.colors = this.config.colors ?? [];
@@ -49243,3 +49387,5 @@ exports.compareVersions = compareVersions;
49243
49387
  exports.createTheme = createTheme;
49244
49388
  exports.defineSuperDocExtension = defineSuperDocExtension;
49245
49389
  exports.getFileObject = getFileObject;
49390
+ exports.listPermissionRangeEditors = listPermissionRangeEditors;
49391
+ exports.resolvePermissionRangeEditor = resolvePermissionRangeEditor;