superdoc 2.28.0 → 2.29.0-next.1

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 (56) hide show
  1. package/dist/chunks/{PdfViewer-JHXZQZ9x.es.js → PdfViewer-D4lVeOJu.es.js} +3 -2
  2. package/dist/chunks/{PdfViewer-Cg072l5d.cjs → PdfViewer-boENOZdF.cjs} +3 -2
  3. package/dist/chunks/{create-super-doc-ui-BfgYblyI.cjs → create-super-doc-ui-0OA8hCNb.cjs} +201 -23
  4. package/dist/chunks/{create-super-doc-ui-BbjHD1ul.es.js → create-super-doc-ui-Duf65d0b.es.js} +180 -20
  5. package/dist/chunks/is-finite-number-BEXgTRgc.cjs +11 -0
  6. package/dist/chunks/is-finite-number-BpL4F38c.es.js +6 -0
  7. package/dist/collaboration-upgrade-engine.cjs +1 -1
  8. package/dist/collaboration-upgrade-engine.es.js +1 -1
  9. package/dist/document-api/src/capabilities/html-markdown-support.d.ts +3 -3
  10. package/dist/document-api/src/index.d.ts +1 -1
  11. package/dist/document-api/src/lists/lists.d.ts +79 -79
  12. package/dist/document-api/src/write/write.d.ts +10 -9
  13. package/dist/layout-engine/painters/dom/src/page-content.d.ts +1 -1
  14. package/dist/layout-engine/painters/dom/src/persistent-page-surface.d.ts +2 -0
  15. package/dist/public/ui-react.cjs +1 -1
  16. package/dist/public/ui-react.es.js +1 -1
  17. package/dist/public/ui-vue.cjs +1 -1
  18. package/dist/public/ui-vue.es.js +1 -1
  19. package/dist/public/ui.cjs +1 -1
  20. package/dist/public/ui.es.js +1 -1
  21. package/dist/style.css +1 -1
  22. package/dist/style.layered.css +1 -1
  23. package/dist/superdoc/src/SuperDoc.vue.d.ts +5 -3
  24. package/dist/superdoc/src/components/CommentsLayer/CommentDialog.vue.d.ts +1670 -24
  25. package/dist/superdoc/src/components/CommentsLayer/CommentHeader.vue.d.ts +2 -2
  26. package/dist/superdoc/src/components/CommentsLayer/CommentInput.vue.d.ts +2 -2
  27. package/dist/superdoc/src/components/CommentsLayer/FloatingComments.vue.d.ts +21 -8
  28. package/dist/superdoc/src/components/general/Avatar.vue.d.ts +7 -0
  29. package/dist/superdoc/src/components/surfaces/SurfaceDialog.vue.d.ts +27 -9
  30. package/dist/superdoc/src/components/surfaces/SurfaceExternalMount.vue.d.ts +53 -16
  31. package/dist/superdoc/src/composables/use-link-popover.d.ts +3 -3
  32. package/dist/superdoc/src/composables/use-superdoc-instance.d.ts +4 -1
  33. package/dist/superdoc/src/core/SuperDoc.d.ts +1 -1
  34. package/dist/superdoc/src/core/collaboration/permissions.d.ts +1 -0
  35. package/dist/superdoc/src/core/types/index.d.ts +9 -4
  36. package/dist/superdoc/src/helpers/is-finite-number.d.ts +1 -0
  37. package/dist/superdoc/src/internal/diagnostics/diagnostic-dedupe.d.ts +2 -2
  38. package/dist/superdoc/src/internal/toolbar/built-in/AIWriter.vue.d.ts +2 -2
  39. package/dist/superdoc/src/internal/toolbar/built-in/LinkInput.vue.d.ts +181 -36
  40. package/dist/superdoc/src/internal/toolbar/built-in/LinkedStyle.vue.d.ts +39 -10
  41. package/dist/superdoc/src/internal/toolbar/built-in/PageNumberMenu.vue.d.ts +133 -22
  42. package/dist/superdoc/src/internal/toolbar/built-in/SdTooltip.vue.d.ts +62 -23
  43. package/dist/superdoc/src/internal/toolbar/built-in/ToolbarButton.vue.d.ts +101 -16
  44. package/dist/superdoc/src/internal/toolbar/built-in/ToolbarButtonIcon.vue.d.ts +31 -10
  45. package/dist/superdoc/src/internal/toolbar/built-in/ToolbarComboBox.vue.d.ts +82 -11
  46. package/dist/superdoc/src/internal/toolbar/built-in/ToolbarDropdown.vue.d.ts +122 -33
  47. package/dist/superdoc/src/internal/toolbar/built-in/use-toolbar-item.d.ts +0 -1
  48. package/dist/superdoc/src/stores/comments-store.d.ts +151 -28
  49. package/dist/superdoc/src/stores/superdoc-store.d.ts +454 -85
  50. package/dist/superdoc.cjs +319 -401
  51. package/dist/superdoc.es.js +247 -330
  52. package/dist-cdn/style.layered.css +1 -1
  53. package/dist-cdn/superdoc.min.css +1 -1
  54. package/dist-cdn/superdoc.min.js +42 -42
  55. package/package.json +2 -2
  56. package/dist/superdoc/src/internal/toolbar/built-in/OverflowMenu.vue.d.ts +0 -104
@@ -1,4 +1,5 @@
1
1
  import { B as renderList, D as normalizeClass, E as nextTick, F as openBlock, G as toDisplayString, N as onMounted, W as shallowRef, Y as unref, a as computed, at as withModifiers, c as createCommentVNode, f as createTextVNode, h as defineComponent, j as onBeforeUnmount, l as createElementBlock, n as Fragment, t as _plugin_vue_export_helper_default, tt as watch, u as createElementVNode, z as ref } from "./_plugin-vue_export-helper-CsJQtMvr.es.js";
2
+ import { t as isFiniteNumber } from "./is-finite-number-BpL4F38c.es.js";
2
3
  //#region src/internal/diagnostics/workflow-recording.ts
3
4
  var fields$1 = /* @__PURE__ */ new Set([
4
5
  "documentId",
@@ -1096,6 +1097,163 @@ function isPlainObject(value) {
1096
1097
  return typeof value === "object" && value !== null && !Array.isArray(value);
1097
1098
  }
1098
1099
  //#endregion
1100
+ //#region src/core/collaboration/permissions.js
1101
+ var PERMISSIONS = Object.freeze({
1102
+ RESOLVE_OWN: "RESOLVE_OWN",
1103
+ RESOLVE_OTHER: "RESOLVE_OTHER",
1104
+ REJECT_OWN: "REJECT_OWN",
1105
+ REJECT_OTHER: "REJECT_OTHER",
1106
+ COMMENTS_OVERFLOW_OWN: "COMMENTS_OVERFLOW",
1107
+ COMMENTS_OVERFLOW_OTHER: "COMMENTS_OVERFLOW_OTHER",
1108
+ COMMENTS_DELETE_OWN: "COMMENTS_DELETE_OWN",
1109
+ COMMENTS_DELETE_OTHER: "COMMENTS_DELETE_OTHER",
1110
+ UPLOAD_VERSION: "UPLOAD_VERSION",
1111
+ VERSION_HISTORY: "VERSION_HISTORY"
1112
+ });
1113
+ var ROLES = Object.freeze({
1114
+ EDITOR: "editor",
1115
+ SUGGESTER: "suggester",
1116
+ VIEWER: "viewer"
1117
+ });
1118
+ var PERMISSION_MATRIX = Object.freeze({
1119
+ [PERMISSIONS.RESOLVE_OWN]: {
1120
+ internal: [ROLES.EDITOR],
1121
+ external: [ROLES.EDITOR]
1122
+ },
1123
+ [PERMISSIONS.RESOLVE_OTHER]: {
1124
+ internal: [ROLES.EDITOR],
1125
+ external: [ROLES.EDITOR]
1126
+ },
1127
+ [PERMISSIONS.REJECT_OWN]: {
1128
+ internal: [ROLES.EDITOR, ROLES.SUGGESTER],
1129
+ external: [ROLES.EDITOR, ROLES.SUGGESTER]
1130
+ },
1131
+ [PERMISSIONS.REJECT_OTHER]: {
1132
+ internal: [ROLES.EDITOR],
1133
+ external: [ROLES.EDITOR]
1134
+ },
1135
+ [PERMISSIONS.COMMENTS_OVERFLOW_OWN]: {
1136
+ internal: [ROLES.EDITOR, ROLES.SUGGESTER],
1137
+ external: [ROLES.EDITOR, ROLES.SUGGESTER]
1138
+ },
1139
+ [PERMISSIONS.COMMENTS_OVERFLOW_OTHER]: {
1140
+ internal: [ROLES.EDITOR],
1141
+ external: [ROLES.EDITOR]
1142
+ },
1143
+ [PERMISSIONS.COMMENTS_DELETE_OWN]: {
1144
+ internal: [ROLES.EDITOR, ROLES.SUGGESTER],
1145
+ external: [ROLES.EDITOR, ROLES.SUGGESTER]
1146
+ },
1147
+ [PERMISSIONS.COMMENTS_DELETE_OTHER]: {
1148
+ internal: [ROLES.EDITOR],
1149
+ external: [ROLES.EDITOR]
1150
+ },
1151
+ [PERMISSIONS.UPLOAD_VERSION]: {
1152
+ internal: [ROLES.EDITOR],
1153
+ external: []
1154
+ },
1155
+ [PERMISSIONS.VERSION_HISTORY]: {
1156
+ internal: [ROLES.EDITOR],
1157
+ external: []
1158
+ }
1159
+ });
1160
+ var pickResolver = (context = {}) => {
1161
+ if (typeof context.permissionResolver === "function") return context.permissionResolver;
1162
+ if (typeof context.superdoc?.config?.permissionResolver === "function") return context.superdoc.config.permissionResolver;
1163
+ const deprecatedResolver = context.superdoc?.config?.modules?.comments?.permissionResolver;
1164
+ if (typeof deprecatedResolver === "function") return deprecatedResolver;
1165
+ return null;
1166
+ };
1167
+ var BUILT_IN_PERMISSION_METHOD = Symbol.for("superdoc.internal.permission-method.builtin");
1168
+ var BUILT_IN_PERMISSION_RESOLVER = Symbol.for("superdoc.internal.permission-resolver.builtin");
1169
+ /** Create the shell's internal, live tracked-change permission shim. */
1170
+ var createTrackedChangePermissionResolver = (superdoc) => {
1171
+ const isBuiltInPolicy = () => superdoc.canPerformPermission?.[BUILT_IN_PERMISSION_METHOD] === true && pickResolver({ superdoc }) === null;
1172
+ const resolver = (payload = {}) => isBuiltInPolicy() ? defaultDecisionFor(payload.permission, superdoc.config.role, superdoc.config.isInternal) : superdoc.canPerformPermission({
1173
+ ...payload,
1174
+ role: superdoc.config.role,
1175
+ isInternal: superdoc.config.isInternal
1176
+ });
1177
+ Object.defineProperty(resolver, BUILT_IN_PERMISSION_RESOLVER, { value: isBuiltInPolicy });
1178
+ return resolver;
1179
+ };
1180
+ var defaultDecisionFor = (permission, role, isInternal) => {
1181
+ const internalExternal = isInternal ? "internal" : "external";
1182
+ return PERMISSION_MATRIX[permission]?.[internalExternal]?.includes(role) ?? false;
1183
+ };
1184
+ var NON_DATA_PERMISSION_PROPERTY = Symbol();
1185
+ var readPermissionDataProperty = (source, key) => {
1186
+ if (source == null) return void 0;
1187
+ if (typeof source !== "object" && typeof source !== "function") return NON_DATA_PERMISSION_PROPERTY;
1188
+ for (let owner = source; owner !== null; owner = Object.getPrototypeOf(owner)) {
1189
+ const descriptor = Object.getOwnPropertyDescriptor(owner, key);
1190
+ if (descriptor) return "value" in descriptor ? descriptor.value : NON_DATA_PERMISSION_PROPERTY;
1191
+ }
1192
+ };
1193
+ var readBuiltInTrackedChangePermissionDecision = (superdoc, canPerform, permission, trackedChange) => {
1194
+ try {
1195
+ if (readPermissionDataProperty(superdoc, "canPerformPermission") !== canPerform || readPermissionDataProperty(canPerform, BUILT_IN_PERMISSION_METHOD) !== true) return null;
1196
+ const config = readPermissionDataProperty(superdoc, "config");
1197
+ if (!config || typeof config !== "object") return null;
1198
+ const role = readPermissionDataProperty(config, "role");
1199
+ const isInternal = readPermissionDataProperty(config, "isInternal");
1200
+ const user = readPermissionDataProperty(config, "user");
1201
+ const resolver = readPermissionDataProperty(config, "permissionResolver");
1202
+ const modules = readPermissionDataProperty(config, "modules");
1203
+ const comments = readPermissionDataProperty(modules, "comments");
1204
+ const deprecatedResolver = readPermissionDataProperty(comments, "permissionResolver");
1205
+ const commentsStore = readPermissionDataProperty(superdoc, "commentsStore");
1206
+ if ([
1207
+ role,
1208
+ isInternal,
1209
+ user,
1210
+ resolver,
1211
+ modules,
1212
+ comments,
1213
+ deprecatedResolver,
1214
+ commentsStore,
1215
+ readPermissionDataProperty(commentsStore, "getComment"),
1216
+ readPermissionDataProperty(trackedChange, "comment"),
1217
+ readPermissionDataProperty(trackedChange, "commentId"),
1218
+ readPermissionDataProperty(trackedChange, "id")
1219
+ ].includes(NON_DATA_PERMISSION_PROPERTY) || typeof resolver === "function" || typeof deprecatedResolver === "function") return null;
1220
+ return defaultDecisionFor(permission, role, isInternal);
1221
+ } catch {
1222
+ return null;
1223
+ }
1224
+ };
1225
+ /**
1226
+ * Resolve a client-side permission through the built-in matrix and optional
1227
+ * resolver.
1228
+ *
1229
+ * @param {string} permission The permission to check
1230
+ * @param {string} role The role to check
1231
+ * @param {boolean} isInternal The internal/external flag
1232
+ * @param {object} [context] Context passed to the permission resolver
1233
+ * @param {object | null} [context.comment] The comment/tracked change being evaluated
1234
+ * @param {object | null} [context.superdoc] The SuperDoc instance
1235
+ * @param {object | null} [context.currentUser] The active user object performing the action
1236
+ * @param {Function} [context.permissionResolver] Explicit resolver override
1237
+ * @param {object | null} [context.trackedChange] Tracked change metadata (for tracked-change permissions)
1238
+ * @returns {boolean} Whether the permission is allowed
1239
+ */
1240
+ var isAllowed = (permission, role, isInternal, context = {}) => {
1241
+ const defaultDecision = defaultDecisionFor(permission, role, isInternal);
1242
+ const resolver = pickResolver(context);
1243
+ if (typeof resolver !== "function") return defaultDecision;
1244
+ const decision = resolver({
1245
+ permission,
1246
+ role,
1247
+ isInternal,
1248
+ defaultDecision,
1249
+ comment: context.comment ?? null,
1250
+ currentUser: context.currentUser ?? context.superdoc?.config?.user ?? null,
1251
+ superdoc: context.superdoc ?? null,
1252
+ trackedChange: context.trackedChange ?? null
1253
+ });
1254
+ return typeof decision === "boolean" ? decision : defaultDecision;
1255
+ };
1256
+ //#endregion
1099
1257
  //#region src/public/ui/viewport-batch.ts
1100
1258
  /** No rendering or scrolling: read only geometry already acknowledged by the host. */
1101
1259
  async function readViewportBatch(input, read, generation, disposed) {
@@ -2495,7 +2653,7 @@ function toStyleValue(key, value) {
2495
2653
  case "italic": return value === true;
2496
2654
  case "underline": return underlineValue(value);
2497
2655
  case "color": return typeof value === "string" && value.length > 0 ? { val: value.replace(/^#/, "") } : null;
2498
- case "fontSize": return typeof value === "number" && Number.isFinite(value) ? Math.round(value * 2) : null;
2656
+ case "fontSize": return isFiniteNumber(value) ? Math.round(value * 2) : null;
2499
2657
  case "rFonts": return fontsValue(value);
2500
2658
  default: return null;
2501
2659
  }
@@ -2987,7 +3145,7 @@ function normalizeZoomPayload(payload) {
2987
3145
  if (!Number.isFinite(parsed)) return payload;
2988
3146
  return normalizeNumber(parsed, isPercent);
2989
3147
  }
2990
- if (typeof payload === "number" && Number.isFinite(payload)) return normalizeNumber(payload, false);
3148
+ if (isFiniteNumber(payload)) return normalizeNumber(payload, false);
2991
3149
  return payload;
2992
3150
  }
2993
3151
  /**
@@ -5357,9 +5515,6 @@ var PARAGRAPH_INDENT_STEP_TWIPS = 720;
5357
5515
  function pointsToTwips(value) {
5358
5516
  return Math.round(value * 20);
5359
5517
  }
5360
- function isFiniteNumber(value) {
5361
- return typeof value === "number" && Number.isFinite(value);
5362
- }
5363
5518
  function readParagraphIndentationFromResult(result) {
5364
5519
  if (!result || typeof result !== "object") return null;
5365
5520
  const node = result.node;
@@ -5663,7 +5818,7 @@ function normalizeLayoutFontFamily(value) {
5663
5818
  }
5664
5819
  /** Convert a resolved run font size in CSS px to the toolbar's point value (SD-3652). */
5665
5820
  function normalizeLayoutFontSizePt(value) {
5666
- if (typeof value !== "number" || !Number.isFinite(value) || value <= 0) return void 0;
5821
+ if (!isFiniteNumber(value) || value <= 0) return void 0;
5667
5822
  const pt = Math.round(value * .75 * 2) / 2;
5668
5823
  if (pt <= 0) return void 0;
5669
5824
  return String(pt);
@@ -6401,7 +6556,7 @@ function createSuperDocUI(options) {
6401
6556
  if (!pending || !(method in pending)) return void 0;
6402
6557
  const value = pending[method];
6403
6558
  if (typeof value === "string" && value !== "") return value;
6404
- if (typeof value === "number" && Number.isFinite(value)) return String(value);
6559
+ if (isFiniteNumber(value)) return String(value);
6405
6560
  };
6406
6561
  /** Record / clear the stored inline mark for a collapsed-caret pick (SD-3654/SD-3652). */
6407
6562
  const setPendingInlineFormatOnHost = (method, value) => {
@@ -8799,9 +8954,10 @@ function createSuperDocUI(options) {
8799
8954
  for (const candidate of permissions) {
8800
8955
  let allowed;
8801
8956
  try {
8802
- allowed = canPerform.call(superdoc, {
8957
+ const permissionChange = trackedChange ?? { id };
8958
+ allowed = readBuiltInTrackedChangePermissionDecision(superdoc, canPerform, candidate, permissionChange) ?? canPerform.call(superdoc, {
8803
8959
  permission: candidate,
8804
- trackedChange: trackedChange ?? { id },
8960
+ trackedChange: permissionChange,
8805
8961
  comment: null
8806
8962
  });
8807
8963
  } catch {
@@ -9694,7 +9850,7 @@ function createSuperDocUI(options) {
9694
9850
  };
9695
9851
  /** Validate normalized payloads before invoking public SuperDoc-instance methods. */
9696
9852
  const instanceCommandPayloadIsValid = (descriptor, payload) => {
9697
- if (descriptor.id === "zoom") return typeof payload === "number" && Number.isFinite(payload) && payload > 0;
9853
+ if (descriptor.id === "zoom") return isFiniteNumber(payload) && payload > 0;
9698
9854
  if (descriptor.id === "document-mode") return payload === "editing" || payload === "suggesting" || payload === "viewing";
9699
9855
  if (descriptor.id === "measurement-unit") return payload === "in" || payload === "cm";
9700
9856
  return true;
@@ -10082,7 +10238,7 @@ function createSuperDocUI(options) {
10082
10238
  const familyValue = state.toolbar.commands["font-family"]?.value;
10083
10239
  const sizeValue = state.toolbar.commands["font-size"]?.value;
10084
10240
  const hadFamily = typeof familyValue === "string" && familyValue.length > 0;
10085
- const hadSize = typeof sizeValue === "string" && sizeValue.length > 0 || typeof sizeValue === "number" && Number.isFinite(sizeValue);
10241
+ const hadSize = typeof sizeValue === "string" && sizeValue.length > 0 || isFiniteNumber(sizeValue);
10086
10242
  return hadFamily && projected.fontFamily === void 0 || hadSize && projected.fontSize === void 0;
10087
10243
  };
10088
10244
  const syncHostSelectionSubscription = () => {
@@ -12276,12 +12432,6 @@ function createSuperDocUI(options) {
12276
12432
  keys: [...EFFECTIVE_INLINE_UNIFORMITY_KEYS, "highlight"],
12277
12433
  includeCaret: true
12278
12434
  } : null);
12279
- if (effective?.fontFamily?.state === "mixed") {
12280
- delete inlinePatch.fontFamily;
12281
- delete inlinePatch.rFonts;
12282
- mixedInlineKeys.add("fontFamily");
12283
- mixedInlineKeys.add("rFonts");
12284
- }
12285
12435
  for (const [markName, patchKey] of Object.entries(MARK_TO_PATCH)) {
12286
12436
  const entry = effective?.[markName];
12287
12437
  if (!entry) continue;
@@ -12293,6 +12443,16 @@ function createSuperDocUI(options) {
12293
12443
  mixedInlineKeys.add(patchKey);
12294
12444
  }
12295
12445
  }
12446
+ const fontFamily = effective?.fontFamily;
12447
+ if (fontFamily?.state === "uniform" && typeof fontFamily.value === "string") {
12448
+ inlinePatch.fontFamily = fontFamily.value;
12449
+ mixedInlineKeys.delete("fontFamily");
12450
+ } else if (fontFamily) {
12451
+ delete inlinePatch.fontFamily;
12452
+ delete inlinePatch.rFonts;
12453
+ mixedInlineKeys.add("fontFamily");
12454
+ mixedInlineKeys.add("rFonts");
12455
+ }
12296
12456
  const highlight = effective?.highlight;
12297
12457
  if (highlight?.state === "uniform") {
12298
12458
  inlinePatch.highlight = highlight.value;
@@ -13914,7 +14074,7 @@ function createSuperDocUI(options) {
13914
14074
  return null;
13915
14075
  };
13916
14076
  const pointHitElements = (x, y) => {
13917
- if (typeof x !== "number" || typeof y !== "number" || !Number.isFinite(x) || !Number.isFinite(y)) return null;
14077
+ if (!isFiniteNumber(x) || !isFiniteNumber(y)) return null;
13918
14078
  const dom = globalThis.document;
13919
14079
  if (!dom || typeof dom.elementFromPoint !== "function") return null;
13920
14080
  const container = resolveVisibleHost();
@@ -14692,7 +14852,7 @@ function createSuperDocUI(options) {
14692
14852
  const record = result && typeof result === "object" ? result : null;
14693
14853
  if (!record) return null;
14694
14854
  const matches = Array.isArray(record.matches) ? record.matches : [];
14695
- const total = typeof record.total === "number" && Number.isFinite(record.total) ? record.total : matches.length;
14855
+ const total = isFiniteNumber(record.total) ? record.total : matches.length;
14696
14856
  const activeIndex = typeof record.activeMatchIndex === "number" ? record.activeMatchIndex : typeof record.activeIndex === "number" ? record.activeIndex : -1;
14697
14857
  const canReplace = record.canReplace === true || fallbackCanReplace;
14698
14858
  return {
@@ -15716,4 +15876,4 @@ function commandIsActive(descriptor, selection) {
15716
15876
  return descriptor.activeMark ? selection.activeMarks.includes(descriptor.activeMark) : false;
15717
15877
  }
15718
15878
  //#endregion
15719
- export { recordInteraction as S, DOM_CLASS_NAMES as _, registerFirstPartyCommandMutation as a, getWorkflowRecording as b, getCommandDescriptor as c, mutationCommittedEventChangedDocument as d, createImageFilePicker as f, isSyntheticTrackedChangeCommentLaneItem as g, isPlainObject as h, readFirstPartyPageNumbers as i, applyV2CommentInvalidationFromMutation as l, shallowEqual as m, executeFirstPartyCommandAsync as n, isRecord as o, resolveImageSrc as p, executeFirstPartyShortcutAsync as r, BUILT_IN_COMMAND_IDS as s, createSuperDocUI as t, getV2TrackedChangeMutationImpact as u, closeInteractionHistory as v, isWorkflowRecordingEnabled as x, createInteractionHistory as y };
15879
+ export { getWorkflowRecording as C, createInteractionHistory as S, recordInteraction as T, isAllowed as _, registerFirstPartyCommandMutation as a, DOM_CLASS_NAMES as b, getCommandDescriptor as c, mutationCommittedEventChangedDocument as d, createImageFilePicker as f, createTrackedChangePermissionResolver as g, PERMISSIONS as h, readFirstPartyPageNumbers as i, applyV2CommentInvalidationFromMutation as l, shallowEqual as m, executeFirstPartyCommandAsync as n, isRecord as o, resolveImageSrc as p, executeFirstPartyShortcutAsync as r, BUILT_IN_COMMAND_IDS as s, createSuperDocUI as t, getV2TrackedChangeMutationImpact as u, isPlainObject as v, isWorkflowRecordingEnabled as w, closeInteractionHistory as x, isSyntheticTrackedChangeCommentLaneItem as y };
@@ -0,0 +1,11 @@
1
+ //#region src/helpers/is-finite-number.ts
2
+ function isFiniteNumber(value) {
3
+ return typeof value === "number" && Number.isFinite(value);
4
+ }
5
+ //#endregion
6
+ Object.defineProperty(exports, "isFiniteNumber", {
7
+ enumerable: true,
8
+ get: function() {
9
+ return isFiniteNumber;
10
+ }
11
+ });
@@ -0,0 +1,6 @@
1
+ //#region src/helpers/is-finite-number.ts
2
+ function isFiniteNumber(value) {
3
+ return typeof value === "number" && Number.isFinite(value);
4
+ }
5
+ //#endregion
6
+ export { isFiniteNumber as t };
@@ -19,7 +19,7 @@ var COLLABORATION_UPGRADE_ENGINE_MINIMUM_NODE_MAJOR = 20;
19
19
  var PRIVATE_ENGINE_INFO = (0, _superdoc_docx_engine_collaboration_upgrade_engine.getCollaborationUpgradeEngineInfo)();
20
20
  var ENGINE_INFO = Object.freeze({
21
21
  ...PRIVATE_ENGINE_INFO,
22
- superdocVersion: "2.28.0",
22
+ superdocVersion: "2.29.0-next.1",
23
23
  roomSchemaVersion: Object.freeze({ ...PRIVATE_ENGINE_INFO.roomSchemaVersion }),
24
24
  supportedBundleVersions: SUPPORTED_COLLABORATION_UPGRADE_BUNDLE_VERSIONS,
25
25
  supportedV1ReaderContractVersions: SUPPORTED_V1_READER_CONTRACT_VERSIONS
@@ -18,7 +18,7 @@ var COLLABORATION_UPGRADE_ENGINE_MINIMUM_NODE_MAJOR = 20;
18
18
  var PRIVATE_ENGINE_INFO = getCollaborationUpgradeEngineInfo$1();
19
19
  var ENGINE_INFO = Object.freeze({
20
20
  ...PRIVATE_ENGINE_INFO,
21
- superdocVersion: "2.28.0",
21
+ superdocVersion: "2.29.0-next.1",
22
22
  roomSchemaVersion: Object.freeze({ ...PRIVATE_ENGINE_INFO.roomSchemaVersion }),
23
23
  supportedBundleVersions: SUPPORTED_COLLABORATION_UPGRADE_BUNDLE_VERSIONS,
24
24
  supportedV1ReaderContractVersions: SUPPORTED_V1_READER_CONTRACT_VERSIONS
@@ -1,6 +1,6 @@
1
1
  import { RichContentInsertInput } from '../insert/insert.js';
2
2
  import { RichContentReplaceInput, ReplaceMutationOptions } from '../replace/replace.js';
3
- import { ChangeMode } from '../write/write.js';
3
+ import { ChangeMode, TrackedAttribution } from '../write/write.js';
4
4
  import { ProjectHtmlInput, ProjectMarkdownInput, SDContentProjectionResult, SDProjectionReviewMode, SDResolvedProjectionScope } from '../types/content-projection.js';
5
5
  import { SDFragment } from '../types/fragment.js';
6
6
  import { SDError, SDHtmlMarkdownOutcome, SDMutationConversionReport, SDMutationReceipt } from '../types/sd-contract.js';
@@ -17,11 +17,11 @@ export type SDHtmlMarkdownSupportCheckInput = {
17
17
  input: RichContentInsertInput;
18
18
  options?: {
19
19
  changeMode?: ChangeMode;
20
- };
20
+ } & TrackedAttribution;
21
21
  } | {
22
22
  operation: 'replace';
23
23
  input: RichContentReplaceInput;
24
- options?: Pick<ReplaceMutationOptions, 'changeMode' | 'replaceMode' | 'expectedSnapshotId'>;
24
+ options?: Pick<ReplaceMutationOptions, 'changeMode' | 'replaceMode' | 'expectedSnapshotId'> & TrackedAttribution;
25
25
  } | {
26
26
  operation: 'projectHtml';
27
27
  input?: ProjectHtmlInput;
@@ -109,7 +109,7 @@ export type { GetMarkdownAdapter, GetMarkdownInput } from './get-markdown/get-ma
109
109
  export type { GetHtmlAdapter, GetHtmlInput } from './get-html/get-html.js';
110
110
  export type { InfoAdapter, InfoInput } from './info/info.js';
111
111
  export type { ExtractAdapter, ExtractInput } from './extract/extract.js';
112
- export type { WriteAdapter, WriteRequest, RichContentMutationOptions, TrackedTextMutationOptions, TextMutationOptions, } from './write/write.js';
112
+ export type { WriteAdapter, WriteRequest, RichContentMutationOptions, TrackedAttribution, TrackedTextMutationOptions, TextMutationOptions, } from './write/write.js';
113
113
  export type { OperationCancellation, OperationCancellationCode } from './write/operation-cancellation.js';
114
114
  export { OperationCancellationError, assertOperationCanStart, indeterminateOperation, splitOperationCancellation, } from './write/operation-cancellation.js';
115
115
  export type { FormatInlineAliasApi, FormatInlineAliasInput, FormatBoldInput, FormatItalicInput, FormatRangeInput, FormatUnderlineInput, FormatStrikethroughInput, StyleApplyInput, StyleApplyOptions, } from './format/format.js';
@@ -1,100 +1,100 @@
1
- import { MutationOptions } from '../write/write.js';
1
+ import { TextMutationOptions } from '../write/write.js';
2
2
  import { ListInsertInput, ListsGetInput, ListsInsertResult, ListsListQuery, ListsListResult, ListsMutateItemResult, ListTargetInput, ListItemInfo, ListsCreateInput, ListsCreateResult, ListsAttachInput, ListsDetachInput, ListsDetachResult, ListsDeleteInput, ListsDeleteResult, ListsJoinInput, ListsJoinResult, ListsCanJoinInput, ListsCanJoinResult, ListsSeparateInput, ListsSeparateResult, ListsMergeInput, ListsMergeResult, ListsSplitInput, ListsSplitResult, ListsSetLevelInput, ListsSetValueInput, ListsContinuePreviousInput, ListsCanContinuePreviousInput, ListsCanContinuePreviousResult, ListsSetLevelRestartInput, ListsConvertToTextInput, ListsConvertToTextResult, ListsApplyTemplateInput, ListsApplyPresetInput, ListsCaptureTemplateInput, ListsCaptureTemplateResult, ListsSetLevelNumberingInput, ListsSetLevelBulletInput, ListsSetLevelPictureBulletInput, ListsSetLevelAlignmentInput, ListsSetLevelIndentsInput, ListsSetLevelTrailingCharacterInput, ListsSetLevelMarkerFontInput, ListsClearLevelOverridesInput, ListsSetTypeInput, ListsGetStyleInput, ListsGetStyleResult, ListsApplyStyleInput, ListsRestartAtInput, ListsSetLevelNumberStyleInput, ListsSetLevelTextInput, ListsSetLevelStartInput, ListsSetLevelLayoutInput, ListsGetStateInput, ListsGetStateResult, ListsApplyInput, ListsContinueV2Input, ListsRestartV2Input, ListsRemoveV2Input } from './lists.types.js';
3
3
  export type { ListInsertInput, ListsGetInput, ListsInsertResult, ListsListQuery, ListsListResult, ListsMutateItemResult, ListTargetInput, ListItemInfo, ListsCreateInput, ListsCreateResult, ListsAttachInput, ListsDetachInput, ListsDetachResult, ListsDeleteInput, ListsDeleteResult, ListsJoinInput, ListsJoinResult, ListsCanJoinInput, ListsCanJoinResult, ListsSeparateInput, ListsSeparateResult, ListsMergeInput, ListsMergeResult, ListsSplitInput, ListsSplitResult, ListsSetLevelInput, ListsSetValueInput, ListsContinuePreviousInput, ListsCanContinuePreviousInput, ListsCanContinuePreviousResult, ListsSetLevelRestartInput, ListsConvertToTextInput, ListsConvertToTextResult, ListsApplyTemplateInput, ListsApplyPresetInput, ListsCaptureTemplateInput, ListsCaptureTemplateResult, ListsSetLevelNumberingInput, ListsSetLevelBulletInput, ListsSetLevelPictureBulletInput, ListsSetLevelAlignmentInput, ListsSetLevelIndentsInput, ListsSetLevelTrailingCharacterInput, ListsSetLevelMarkerFontInput, ListsClearLevelOverridesInput, ListsSetTypeInput, ListsGetStyleInput, ListsGetStyleResult, ListsApplyStyleInput, ListsRestartAtInput, ListsSetLevelNumberStyleInput, ListsSetLevelTextInput, ListsSetLevelStartInput, ListsSetLevelLayoutInput, ListsBlockTarget, ListsGetStateInput, ListsGetStateResult, ListsApplyInput, ListsContinueV2Input, ListsRestartV2Input, ListsRemoveV2Input, } from './lists.types.js';
4
4
  export interface ListsAdapter {
5
5
  list(query?: ListsListQuery): ListsListResult;
6
6
  get(input: ListsGetInput): ListItemInfo;
7
- insert(input: ListInsertInput, options?: MutationOptions): ListsInsertResult;
8
- indent(input: ListTargetInput, options?: MutationOptions): ListsMutateItemResult;
9
- outdent(input: ListTargetInput, options?: MutationOptions): ListsMutateItemResult;
10
- create(input: ListsCreateInput, options?: MutationOptions): ListsCreateResult;
11
- attach(input: ListsAttachInput, options?: MutationOptions): ListsMutateItemResult;
12
- detach(input: ListsDetachInput, options?: MutationOptions): ListsDetachResult;
13
- delete(input: ListsDeleteInput, options?: MutationOptions): ListsDeleteResult;
14
- join(input: ListsJoinInput, options?: MutationOptions): ListsJoinResult;
7
+ insert(input: ListInsertInput, options?: TextMutationOptions): ListsInsertResult;
8
+ indent(input: ListTargetInput, options?: TextMutationOptions): ListsMutateItemResult;
9
+ outdent(input: ListTargetInput, options?: TextMutationOptions): ListsMutateItemResult;
10
+ create(input: ListsCreateInput, options?: TextMutationOptions): ListsCreateResult;
11
+ attach(input: ListsAttachInput, options?: TextMutationOptions): ListsMutateItemResult;
12
+ detach(input: ListsDetachInput, options?: TextMutationOptions): ListsDetachResult;
13
+ delete(input: ListsDeleteInput, options?: TextMutationOptions): ListsDeleteResult;
14
+ join(input: ListsJoinInput, options?: TextMutationOptions): ListsJoinResult;
15
15
  canJoin(input: ListsCanJoinInput): ListsCanJoinResult;
16
- separate(input: ListsSeparateInput, options?: MutationOptions): ListsSeparateResult;
17
- merge(input: ListsMergeInput, options?: MutationOptions): ListsMergeResult;
18
- split(input: ListsSplitInput, options?: MutationOptions): ListsSplitResult;
19
- setLevel(input: ListsSetLevelInput, options?: MutationOptions): ListsMutateItemResult;
20
- setValue(input: ListsSetValueInput, options?: MutationOptions): ListsMutateItemResult;
21
- continuePrevious(input: ListsContinuePreviousInput, options?: MutationOptions): ListsMutateItemResult;
16
+ separate(input: ListsSeparateInput, options?: TextMutationOptions): ListsSeparateResult;
17
+ merge(input: ListsMergeInput, options?: TextMutationOptions): ListsMergeResult;
18
+ split(input: ListsSplitInput, options?: TextMutationOptions): ListsSplitResult;
19
+ setLevel(input: ListsSetLevelInput, options?: TextMutationOptions): ListsMutateItemResult;
20
+ setValue(input: ListsSetValueInput, options?: TextMutationOptions): ListsMutateItemResult;
21
+ continuePrevious(input: ListsContinuePreviousInput, options?: TextMutationOptions): ListsMutateItemResult;
22
22
  canContinuePrevious(input: ListsCanContinuePreviousInput): ListsCanContinuePreviousResult;
23
- setLevelRestart(input: ListsSetLevelRestartInput, options?: MutationOptions): ListsMutateItemResult;
24
- convertToText(input: ListsConvertToTextInput, options?: MutationOptions): ListsConvertToTextResult;
25
- applyTemplate(input: ListsApplyTemplateInput, options?: MutationOptions): ListsMutateItemResult;
26
- applyPreset(input: ListsApplyPresetInput, options?: MutationOptions): ListsMutateItemResult;
23
+ setLevelRestart(input: ListsSetLevelRestartInput, options?: TextMutationOptions): ListsMutateItemResult;
24
+ convertToText(input: ListsConvertToTextInput, options?: TextMutationOptions): ListsConvertToTextResult;
25
+ applyTemplate(input: ListsApplyTemplateInput, options?: TextMutationOptions): ListsMutateItemResult;
26
+ applyPreset(input: ListsApplyPresetInput, options?: TextMutationOptions): ListsMutateItemResult;
27
27
  captureTemplate(input: ListsCaptureTemplateInput): ListsCaptureTemplateResult;
28
- setLevelNumbering(input: ListsSetLevelNumberingInput, options?: MutationOptions): ListsMutateItemResult;
29
- setLevelBullet(input: ListsSetLevelBulletInput, options?: MutationOptions): ListsMutateItemResult;
30
- setLevelPictureBullet(input: ListsSetLevelPictureBulletInput, options?: MutationOptions): ListsMutateItemResult;
31
- setLevelAlignment(input: ListsSetLevelAlignmentInput, options?: MutationOptions): ListsMutateItemResult;
32
- setLevelIndents(input: ListsSetLevelIndentsInput, options?: MutationOptions): ListsMutateItemResult;
33
- setLevelTrailingCharacter(input: ListsSetLevelTrailingCharacterInput, options?: MutationOptions): ListsMutateItemResult;
34
- setLevelMarkerFont(input: ListsSetLevelMarkerFontInput, options?: MutationOptions): ListsMutateItemResult;
35
- clearLevelOverrides(input: ListsClearLevelOverridesInput, options?: MutationOptions): ListsMutateItemResult;
36
- setType(input: ListsSetTypeInput, options?: MutationOptions): ListsMutateItemResult;
28
+ setLevelNumbering(input: ListsSetLevelNumberingInput, options?: TextMutationOptions): ListsMutateItemResult;
29
+ setLevelBullet(input: ListsSetLevelBulletInput, options?: TextMutationOptions): ListsMutateItemResult;
30
+ setLevelPictureBullet(input: ListsSetLevelPictureBulletInput, options?: TextMutationOptions): ListsMutateItemResult;
31
+ setLevelAlignment(input: ListsSetLevelAlignmentInput, options?: TextMutationOptions): ListsMutateItemResult;
32
+ setLevelIndents(input: ListsSetLevelIndentsInput, options?: TextMutationOptions): ListsMutateItemResult;
33
+ setLevelTrailingCharacter(input: ListsSetLevelTrailingCharacterInput, options?: TextMutationOptions): ListsMutateItemResult;
34
+ setLevelMarkerFont(input: ListsSetLevelMarkerFontInput, options?: TextMutationOptions): ListsMutateItemResult;
35
+ clearLevelOverrides(input: ListsClearLevelOverridesInput, options?: TextMutationOptions): ListsMutateItemResult;
36
+ setType(input: ListsSetTypeInput, options?: TextMutationOptions): ListsMutateItemResult;
37
37
  getStyle(input: ListsGetStyleInput): ListsGetStyleResult;
38
- applyStyle(input: ListsApplyStyleInput, options?: MutationOptions): ListsMutateItemResult;
39
- restartAt(input: ListsRestartAtInput, options?: MutationOptions): ListsMutateItemResult;
40
- setLevelNumberStyle(input: ListsSetLevelNumberStyleInput, options?: MutationOptions): ListsMutateItemResult;
41
- setLevelText(input: ListsSetLevelTextInput, options?: MutationOptions): ListsMutateItemResult;
42
- setLevelStart(input: ListsSetLevelStartInput, options?: MutationOptions): ListsMutateItemResult;
43
- setLevelLayout(input: ListsSetLevelLayoutInput, options?: MutationOptions): ListsMutateItemResult;
38
+ applyStyle(input: ListsApplyStyleInput, options?: TextMutationOptions): ListsMutateItemResult;
39
+ restartAt(input: ListsRestartAtInput, options?: TextMutationOptions): ListsMutateItemResult;
40
+ setLevelNumberStyle(input: ListsSetLevelNumberStyleInput, options?: TextMutationOptions): ListsMutateItemResult;
41
+ setLevelText(input: ListsSetLevelTextInput, options?: TextMutationOptions): ListsMutateItemResult;
42
+ setLevelStart(input: ListsSetLevelStartInput, options?: TextMutationOptions): ListsMutateItemResult;
43
+ setLevelLayout(input: ListsSetLevelLayoutInput, options?: TextMutationOptions): ListsMutateItemResult;
44
44
  getState?(input: ListsGetStateInput): ListsGetStateResult;
45
- apply?(input: ListsApplyInput, options?: MutationOptions): ListsMutateItemResult;
46
- continue?(input: ListsContinueV2Input, options?: MutationOptions): ListsMutateItemResult;
47
- restart?(input: ListsRestartV2Input, options?: MutationOptions): ListsMutateItemResult;
48
- remove?(input: ListsRemoveV2Input, options?: MutationOptions): ListsMutateItemResult;
45
+ apply?(input: ListsApplyInput, options?: TextMutationOptions): ListsMutateItemResult;
46
+ continue?(input: ListsContinueV2Input, options?: TextMutationOptions): ListsMutateItemResult;
47
+ restart?(input: ListsRestartV2Input, options?: TextMutationOptions): ListsMutateItemResult;
48
+ remove?(input: ListsRemoveV2Input, options?: TextMutationOptions): ListsMutateItemResult;
49
49
  }
50
50
  export interface ListsApi extends ListsAdapter {
51
51
  getState(input: ListsGetStateInput): ListsGetStateResult;
52
- apply(input: ListsApplyInput, options?: MutationOptions): ListsMutateItemResult;
53
- continue(input: ListsContinueV2Input, options?: MutationOptions): ListsMutateItemResult;
54
- restart(input: ListsRestartV2Input, options?: MutationOptions): ListsMutateItemResult;
55
- remove(input: ListsRemoveV2Input, options?: MutationOptions): ListsMutateItemResult;
52
+ apply(input: ListsApplyInput, options?: TextMutationOptions): ListsMutateItemResult;
53
+ continue(input: ListsContinueV2Input, options?: TextMutationOptions): ListsMutateItemResult;
54
+ restart(input: ListsRestartV2Input, options?: TextMutationOptions): ListsMutateItemResult;
55
+ remove(input: ListsRemoveV2Input, options?: TextMutationOptions): ListsMutateItemResult;
56
56
  }
57
57
  export declare function executeListsList(adapter: ListsAdapter, query?: ListsListQuery): ListsListResult;
58
58
  export declare function executeListsGet(adapter: ListsAdapter, input: ListsGetInput): ListItemInfo;
59
- export declare function executeListsInsert(adapter: ListsAdapter, input: ListInsertInput, options?: MutationOptions): ListsInsertResult;
60
- export declare function executeListsIndent(adapter: ListsAdapter, input: ListTargetInput, options?: MutationOptions): ListsMutateItemResult;
61
- export declare function executeListsOutdent(adapter: ListsAdapter, input: ListTargetInput, options?: MutationOptions): ListsMutateItemResult;
62
- export declare function executeListsCreate(adapter: ListsAdapter, input: ListsCreateInput, options?: MutationOptions): ListsCreateResult;
63
- export declare function executeListsAttach(adapter: ListsAdapter, input: ListsAttachInput, options?: MutationOptions): ListsMutateItemResult;
64
- export declare function executeListsDetach(adapter: ListsAdapter, input: ListsDetachInput, options?: MutationOptions): ListsDetachResult;
65
- export declare function executeListsDelete(adapter: ListsAdapter, input: ListsDeleteInput, options?: MutationOptions): ListsDeleteResult;
66
- export declare function executeListsJoin(adapter: ListsAdapter, input: ListsJoinInput, options?: MutationOptions): ListsJoinResult;
59
+ export declare function executeListsInsert(adapter: ListsAdapter, input: ListInsertInput, options?: TextMutationOptions): ListsInsertResult;
60
+ export declare function executeListsIndent(adapter: ListsAdapter, input: ListTargetInput, options?: TextMutationOptions): ListsMutateItemResult;
61
+ export declare function executeListsOutdent(adapter: ListsAdapter, input: ListTargetInput, options?: TextMutationOptions): ListsMutateItemResult;
62
+ export declare function executeListsCreate(adapter: ListsAdapter, input: ListsCreateInput, options?: TextMutationOptions): ListsCreateResult;
63
+ export declare function executeListsAttach(adapter: ListsAdapter, input: ListsAttachInput, options?: TextMutationOptions): ListsMutateItemResult;
64
+ export declare function executeListsDetach(adapter: ListsAdapter, input: ListsDetachInput, options?: TextMutationOptions): ListsDetachResult;
65
+ export declare function executeListsDelete(adapter: ListsAdapter, input: ListsDeleteInput, options?: TextMutationOptions): ListsDeleteResult;
66
+ export declare function executeListsJoin(adapter: ListsAdapter, input: ListsJoinInput, options?: TextMutationOptions): ListsJoinResult;
67
67
  export declare function executeListsCanJoin(adapter: ListsAdapter, input: ListsCanJoinInput): ListsCanJoinResult;
68
- export declare function executeListsSeparate(adapter: ListsAdapter, input: ListsSeparateInput, options?: MutationOptions): ListsSeparateResult;
69
- export declare function executeListsMerge(adapter: ListsAdapter, input: ListsMergeInput, options?: MutationOptions): ListsMergeResult;
70
- export declare function executeListsSplit(adapter: ListsAdapter, input: ListsSplitInput, options?: MutationOptions): ListsSplitResult;
71
- export declare function executeListsSetLevel(adapter: ListsAdapter, input: ListsSetLevelInput, options?: MutationOptions): ListsMutateItemResult;
72
- export declare function executeListsSetValue(adapter: ListsAdapter, input: ListsSetValueInput, options?: MutationOptions): ListsMutateItemResult;
73
- export declare function executeListsContinuePrevious(adapter: ListsAdapter, input: ListsContinuePreviousInput, options?: MutationOptions): ListsMutateItemResult;
68
+ export declare function executeListsSeparate(adapter: ListsAdapter, input: ListsSeparateInput, options?: TextMutationOptions): ListsSeparateResult;
69
+ export declare function executeListsMerge(adapter: ListsAdapter, input: ListsMergeInput, options?: TextMutationOptions): ListsMergeResult;
70
+ export declare function executeListsSplit(adapter: ListsAdapter, input: ListsSplitInput, options?: TextMutationOptions): ListsSplitResult;
71
+ export declare function executeListsSetLevel(adapter: ListsAdapter, input: ListsSetLevelInput, options?: TextMutationOptions): ListsMutateItemResult;
72
+ export declare function executeListsSetValue(adapter: ListsAdapter, input: ListsSetValueInput, options?: TextMutationOptions): ListsMutateItemResult;
73
+ export declare function executeListsContinuePrevious(adapter: ListsAdapter, input: ListsContinuePreviousInput, options?: TextMutationOptions): ListsMutateItemResult;
74
74
  export declare function executeListsCanContinuePrevious(adapter: ListsAdapter, input: ListsCanContinuePreviousInput): ListsCanContinuePreviousResult;
75
- export declare function executeListsSetLevelRestart(adapter: ListsAdapter, input: ListsSetLevelRestartInput, options?: MutationOptions): ListsMutateItemResult;
76
- export declare function executeListsConvertToText(adapter: ListsAdapter, input: ListsConvertToTextInput, options?: MutationOptions): ListsConvertToTextResult;
77
- export declare function executeListsApplyTemplate(adapter: ListsAdapter, input: ListsApplyTemplateInput, options?: MutationOptions): ListsMutateItemResult;
78
- export declare function executeListsApplyPreset(adapter: ListsAdapter, input: ListsApplyPresetInput, options?: MutationOptions): ListsMutateItemResult;
75
+ export declare function executeListsSetLevelRestart(adapter: ListsAdapter, input: ListsSetLevelRestartInput, options?: TextMutationOptions): ListsMutateItemResult;
76
+ export declare function executeListsConvertToText(adapter: ListsAdapter, input: ListsConvertToTextInput, options?: TextMutationOptions): ListsConvertToTextResult;
77
+ export declare function executeListsApplyTemplate(adapter: ListsAdapter, input: ListsApplyTemplateInput, options?: TextMutationOptions): ListsMutateItemResult;
78
+ export declare function executeListsApplyPreset(adapter: ListsAdapter, input: ListsApplyPresetInput, options?: TextMutationOptions): ListsMutateItemResult;
79
79
  export declare function executeListsCaptureTemplate(adapter: ListsAdapter, input: ListsCaptureTemplateInput): ListsCaptureTemplateResult;
80
- export declare function executeListsSetLevelNumbering(adapter: ListsAdapter, input: ListsSetLevelNumberingInput, options?: MutationOptions): ListsMutateItemResult;
81
- export declare function executeListsSetLevelBullet(adapter: ListsAdapter, input: ListsSetLevelBulletInput, options?: MutationOptions): ListsMutateItemResult;
82
- export declare function executeListsSetLevelPictureBullet(adapter: ListsAdapter, input: ListsSetLevelPictureBulletInput, options?: MutationOptions): ListsMutateItemResult;
83
- export declare function executeListsSetLevelAlignment(adapter: ListsAdapter, input: ListsSetLevelAlignmentInput, options?: MutationOptions): ListsMutateItemResult;
84
- export declare function executeListsSetLevelIndents(adapter: ListsAdapter, input: ListsSetLevelIndentsInput, options?: MutationOptions): ListsMutateItemResult;
85
- export declare function executeListsSetLevelTrailingCharacter(adapter: ListsAdapter, input: ListsSetLevelTrailingCharacterInput, options?: MutationOptions): ListsMutateItemResult;
86
- export declare function executeListsSetLevelMarkerFont(adapter: ListsAdapter, input: ListsSetLevelMarkerFontInput, options?: MutationOptions): ListsMutateItemResult;
87
- export declare function executeListsClearLevelOverrides(adapter: ListsAdapter, input: ListsClearLevelOverridesInput, options?: MutationOptions): ListsMutateItemResult;
88
- export declare function executeListsSetType(adapter: ListsAdapter, input: ListsSetTypeInput, options?: MutationOptions): ListsMutateItemResult;
80
+ export declare function executeListsSetLevelNumbering(adapter: ListsAdapter, input: ListsSetLevelNumberingInput, options?: TextMutationOptions): ListsMutateItemResult;
81
+ export declare function executeListsSetLevelBullet(adapter: ListsAdapter, input: ListsSetLevelBulletInput, options?: TextMutationOptions): ListsMutateItemResult;
82
+ export declare function executeListsSetLevelPictureBullet(adapter: ListsAdapter, input: ListsSetLevelPictureBulletInput, options?: TextMutationOptions): ListsMutateItemResult;
83
+ export declare function executeListsSetLevelAlignment(adapter: ListsAdapter, input: ListsSetLevelAlignmentInput, options?: TextMutationOptions): ListsMutateItemResult;
84
+ export declare function executeListsSetLevelIndents(adapter: ListsAdapter, input: ListsSetLevelIndentsInput, options?: TextMutationOptions): ListsMutateItemResult;
85
+ export declare function executeListsSetLevelTrailingCharacter(adapter: ListsAdapter, input: ListsSetLevelTrailingCharacterInput, options?: TextMutationOptions): ListsMutateItemResult;
86
+ export declare function executeListsSetLevelMarkerFont(adapter: ListsAdapter, input: ListsSetLevelMarkerFontInput, options?: TextMutationOptions): ListsMutateItemResult;
87
+ export declare function executeListsClearLevelOverrides(adapter: ListsAdapter, input: ListsClearLevelOverridesInput, options?: TextMutationOptions): ListsMutateItemResult;
88
+ export declare function executeListsSetType(adapter: ListsAdapter, input: ListsSetTypeInput, options?: TextMutationOptions): ListsMutateItemResult;
89
89
  export declare function executeListsGetStyle(adapter: ListsAdapter, input: ListsGetStyleInput): ListsGetStyleResult;
90
- export declare function executeListsApplyStyle(adapter: ListsAdapter, input: ListsApplyStyleInput, options?: MutationOptions): ListsMutateItemResult;
91
- export declare function executeListsRestartAt(adapter: ListsAdapter, input: ListsRestartAtInput, options?: MutationOptions): ListsMutateItemResult;
92
- export declare function executeListsSetLevelNumberStyle(adapter: ListsAdapter, input: ListsSetLevelNumberStyleInput, options?: MutationOptions): ListsMutateItemResult;
93
- export declare function executeListsSetLevelText(adapter: ListsAdapter, input: ListsSetLevelTextInput, options?: MutationOptions): ListsMutateItemResult;
94
- export declare function executeListsSetLevelStart(adapter: ListsAdapter, input: ListsSetLevelStartInput, options?: MutationOptions): ListsMutateItemResult;
95
- export declare function executeListsSetLevelLayout(adapter: ListsAdapter, input: ListsSetLevelLayoutInput, options?: MutationOptions): ListsMutateItemResult;
90
+ export declare function executeListsApplyStyle(adapter: ListsAdapter, input: ListsApplyStyleInput, options?: TextMutationOptions): ListsMutateItemResult;
91
+ export declare function executeListsRestartAt(adapter: ListsAdapter, input: ListsRestartAtInput, options?: TextMutationOptions): ListsMutateItemResult;
92
+ export declare function executeListsSetLevelNumberStyle(adapter: ListsAdapter, input: ListsSetLevelNumberStyleInput, options?: TextMutationOptions): ListsMutateItemResult;
93
+ export declare function executeListsSetLevelText(adapter: ListsAdapter, input: ListsSetLevelTextInput, options?: TextMutationOptions): ListsMutateItemResult;
94
+ export declare function executeListsSetLevelStart(adapter: ListsAdapter, input: ListsSetLevelStartInput, options?: TextMutationOptions): ListsMutateItemResult;
95
+ export declare function executeListsSetLevelLayout(adapter: ListsAdapter, input: ListsSetLevelLayoutInput, options?: TextMutationOptions): ListsMutateItemResult;
96
96
  export declare function executeListsGetState(adapter: ListsAdapter, input: ListsGetStateInput): ListsGetStateResult;
97
- export declare function executeListsApply(adapter: ListsAdapter, input: ListsApplyInput, options?: MutationOptions): ListsMutateItemResult;
98
- export declare function executeListsContinueV2(adapter: ListsAdapter, input: ListsContinueV2Input, options?: MutationOptions): ListsMutateItemResult;
99
- export declare function executeListsRestartV2(adapter: ListsAdapter, input: ListsRestartV2Input, options?: MutationOptions): ListsMutateItemResult;
100
- export declare function executeListsRemoveV2(adapter: ListsAdapter, input: ListsRemoveV2Input, options?: MutationOptions): ListsMutateItemResult;
97
+ export declare function executeListsApply(adapter: ListsAdapter, input: ListsApplyInput, options?: TextMutationOptions): ListsMutateItemResult;
98
+ export declare function executeListsContinueV2(adapter: ListsAdapter, input: ListsContinueV2Input, options?: TextMutationOptions): ListsMutateItemResult;
99
+ export declare function executeListsRestartV2(adapter: ListsAdapter, input: ListsRestartV2Input, options?: TextMutationOptions): ListsMutateItemResult;
100
+ export declare function executeListsRemoveV2(adapter: ListsAdapter, input: ListsRemoveV2Input, options?: TextMutationOptions): ListsMutateItemResult;
@@ -42,23 +42,24 @@ export interface MutationOptions extends RevisionGuardOptions {
42
42
  */
43
43
  dryRun?: boolean;
44
44
  }
45
- export interface RichContentMutationOptions extends MutationOptions {
46
- author?: never;
47
- date?: never;
48
- /** Guard returned by `doc.capabilities.check` for an exact rich write. */
49
- supportCheck?: SDHtmlMarkdownCheckGuard;
50
- }
51
- /** Display-only attribution for one tracked plain-text or inline-format mutation. */
52
- export interface TrackedTextMutationOptions extends MutationOptions {
53
- changeMode: 'tracked';
45
+ /** Display-only attribution for one tracked mutation. */
46
+ export interface TrackedAttribution {
54
47
  author?: {
55
48
  name: string;
56
49
  };
57
50
  /** ISO 8601 UTC revision timestamp. Omitted values use the transaction time. */
58
51
  date?: string;
59
52
  }
53
+ export interface RichContentMutationOptions extends MutationOptions, TrackedAttribution {
54
+ /** Guard returned by `doc.capabilities.check` for an exact rich write. */
55
+ supportCheck?: SDHtmlMarkdownCheckGuard;
56
+ }
57
+ export interface TrackedTextMutationOptions extends MutationOptions, TrackedAttribution {
58
+ changeMode: 'tracked';
59
+ }
60
60
  export type TextMutationOptions = MutationOptions | TrackedTextMutationOptions;
61
61
  export declare function normalizeTextMutationOptions(options?: RichContentMutationOptions | TextMutationOptions): RichContentMutationOptions | TrackedTextMutationOptions;
62
+ export declare function normalizeRichMutationOptions(options: (MutationOptions & TrackedAttribution & Partial<RichContentMutationOptions>) | undefined, supportCheckOperation?: 'insert' | 'replace'): RichContentMutationOptions;
62
63
  /**
63
64
  * Text insertion request: target-less insert at document end.
64
65
  *
@@ -5,7 +5,7 @@ import { BetweenBorderInfo } from './paragraph/borders/index.js';
5
5
  import { PageStyles } from './styles.js';
6
6
  import { TableFragmentPatchResult } from './table/renderTableFragment.js';
7
7
  import { DerivedRunTextPlane } from './derived-run-text-plane.js';
8
- export declare function refreshPageBreakReviewPlacements(state: PageDomState, page: ResolvedPage, recordChangedRoot?: (root: HTMLElement) => void): void;
8
+ export declare function refreshPageBreakReviewPlacements(state: PageDomState, page: ResolvedPage, recordChangedRoot?: (root: HTMLElement) => void, beforePlacementChange?: () => void): void;
9
9
  export type FragmentDomState = {
10
10
  key: string;
11
11
  signature: string;
@@ -72,6 +72,8 @@ export type DomPainterPersistentPageInput = {
72
72
  documentBackground?: DocumentBackground | null;
73
73
  derivedRunTextPlane?: DerivedRunTextPlane | null;
74
74
  captureSnapshot?: boolean;
75
+ beforePageContentChange?: (pageIndex: number) => void;
76
+ onPageContentRetained?: (pageIndex: number) => void;
75
77
  };
76
78
  /** Shell registry entry: the persistent page root and its geometry/style reuse key. */
77
79
  export type PersistentShellEntry = {