@superdoc-dev/cli 0.17.0-next.44 → 0.17.0-next.46

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 (2) hide show
  1. package/dist/index.js +579 -76
  2. package/package.json +7 -7
package/dist/index.js CHANGED
@@ -2055,7 +2055,7 @@ More content with **bold** and *italic*.`
2055
2055
  },
2056
2056
  "blocks.list": {
2057
2057
  memberPath: "blocks.list",
2058
- description: "List top-level blocks in document order with IDs, types, text previews, and optional full text when includeText:true. Supports pagination via offset/limit, optional nodeType filtering, and single-story scoping via `in: <StoryLocator>`.",
2058
+ description: "List top-level blocks in document order with IDs, types, text previews, and optional full text when includeText:true. Text, previews, lengths, and formatting hints use the VISIBLE model: pending tracked deletions are excluded (matching how edit refs resolve), and inline atoms render as a single placeholder character. Supports pagination via offset/limit, optional nodeType filtering, and single-story scoping via `in: <StoryLocator>`.",
2059
2059
  expectedResult: "Returns a BlocksListResult with total block count, an ordered array of block entries (ordinal, nodeId, nodeType, textPreview, optional text, isEmpty), and the current document revision.",
2060
2060
  requiresDocumentContext: true,
2061
2061
  metadata: readOperation({
@@ -2899,13 +2899,13 @@ More content with **bold** and *italic*.`
2899
2899
  },
2900
2900
  "lists.attach": {
2901
2901
  memberPath: "lists.attach",
2902
- description: "Convert non-list paragraphs to list items under an existing list sequence.",
2902
+ description: 'Convert non-list paragraphs to list items under an existing list sequence. With changeMode:"tracked" the former (unnumbered) paragraph properties are recorded as a w:pPrChange so a reviewer can accept/reject the numbering.',
2903
2903
  expectedResult: "Returns a ListsMutateItemResult confirming attachment.",
2904
2904
  requiresDocumentContext: true,
2905
2905
  metadata: mutationOperation({
2906
2906
  idempotency: "conditional",
2907
2907
  supportsDryRun: true,
2908
- supportsTrackedMode: false,
2908
+ supportsTrackedMode: true,
2909
2909
  possibleFailureCodes: ["INVALID_TARGET", "NO_OP"],
2910
2910
  throws: [...T_NOT_FOUND_CAPABLE, "INVALID_TARGET"]
2911
2911
  }),
@@ -11013,6 +11013,27 @@ var init_schemas = __esm(() => {
11013
11013
  },
11014
11014
  additionalProperties: false
11015
11015
  },
11016
+ numbering: {
11017
+ type: "object",
11018
+ description: 'Computed numbering rendering (marker/path/kind) for numbered list items and numbered headings — e.g. the rendered clause label "2.3.". Absent for non-numbered blocks.',
11019
+ properties: {
11020
+ marker: { oneOf: [{ type: "string" }, { type: "null" }] },
11021
+ path: { oneOf: [{ type: "array", items: { type: "number" } }, { type: "null" }] },
11022
+ kind: { oneOf: [{ type: "string" }, { type: "null" }] }
11023
+ },
11024
+ additionalProperties: false
11025
+ },
11026
+ indent: {
11027
+ type: "object",
11028
+ description: "Direct paragraph indentation in twips (only non-zero fields present).",
11029
+ properties: {
11030
+ left: { type: "number" },
11031
+ right: { type: "number" },
11032
+ firstLine: { type: "number" },
11033
+ hanging: { type: "number" }
11034
+ },
11035
+ additionalProperties: false
11036
+ },
11016
11037
  ref: {
11017
11038
  type: "string",
11018
11039
  description: "Ref handle for this block. Pass directly to superdoc_format or superdoc_edit ref param. Only present for non-empty blocks."
@@ -12524,6 +12545,10 @@ var init_schemas = __esm(() => {
12524
12545
  moveRole: {
12525
12546
  enum: ["pair", "source", "destination"],
12526
12547
  description: "Optional move pairing assertion. 'pair' requires the resolved tracked change to be a paired move; 'source' / 'destination' further narrow to a specific half. When the assertion does not hold the decide adapter fails closed."
12548
+ },
12549
+ side: {
12550
+ enum: ["inserted", "deleted"],
12551
+ description: "Optional replacement side. When the id resolves to a paired replacement, decides only the 'inserted' or 'deleted' half, leaving the other half as a standalone pending change."
12527
12552
  }
12528
12553
  }, ["kind", "id"]),
12529
12554
  objectSchema({
@@ -12560,6 +12585,10 @@ var init_schemas = __esm(() => {
12560
12585
  moveRole: {
12561
12586
  enum: ["pair", "source", "destination"],
12562
12587
  description: "Optional move pairing assertion. 'pair' requires the resolved tracked change to be a paired move; 'source' / 'destination' further narrow to a specific half. When the assertion does not hold the decide adapter fails closed."
12588
+ },
12589
+ side: {
12590
+ enum: ["inserted", "deleted"],
12591
+ description: "Optional replacement side. When the id resolves to a paired replacement, decides only the 'inserted' or 'deleted' half."
12563
12592
  }
12564
12593
  }, ["id"]),
12565
12594
  objectSchema({
@@ -17601,10 +17630,11 @@ function executeTrackChangesDecide(adapter, rawInput, options) {
17601
17630
  return adapter.rejectAll(input, revisionOptions);
17602
17631
  }
17603
17632
  const { id, story } = canonical.target;
17633
+ const side = canonical.target.side;
17604
17634
  if (canonical.decision === "accept") {
17605
- return adapter.accept({ id, ...story ? { story } : {} }, revisionOptions);
17635
+ return adapter.accept({ id, ...story ? { story } : {}, ...side ? { side } : {} }, revisionOptions);
17606
17636
  }
17607
- return adapter.reject({ id, ...story ? { story } : {} }, revisionOptions);
17637
+ return adapter.reject({ id, ...story ? { story } : {}, ...side ? { side } : {} }, revisionOptions);
17608
17638
  }
17609
17639
  function isValidLegacyPartialIdRangeTarget(input) {
17610
17640
  if (typeof input !== "object" || input == null)
@@ -17650,11 +17680,13 @@ function normalizeReviewDecideTarget(target) {
17650
17680
  }
17651
17681
  const story = readOptionalStory(target, "target.story", false);
17652
17682
  const moveRole = readOptionalMoveRole(target);
17683
+ const side = readOptionalReplacementSide(target);
17653
17684
  return {
17654
17685
  kind: "id",
17655
17686
  id,
17656
17687
  ...story ? { story } : {},
17657
- ...moveRole ? { moveRole } : {}
17688
+ ...moveRole ? { moveRole } : {},
17689
+ ...side ? { side } : {}
17658
17690
  };
17659
17691
  }
17660
17692
  if (kind === "range") {
@@ -17729,11 +17761,13 @@ function normalizeReviewDecideTarget(target) {
17729
17761
  if (typeof target.id === "string" && target.id.length > 0) {
17730
17762
  const story = readOptionalStory(target, "target.story", false);
17731
17763
  const moveRole = readOptionalMoveRole(target);
17764
+ const side = readOptionalReplacementSide(target);
17732
17765
  return {
17733
17766
  kind: "id",
17734
17767
  id: target.id,
17735
17768
  ...story ? { story } : {},
17736
- ...moveRole ? { moveRole } : {}
17769
+ ...moveRole ? { moveRole } : {},
17770
+ ...side ? { side } : {}
17737
17771
  };
17738
17772
  }
17739
17773
  }
@@ -17850,6 +17884,18 @@ function readOptionalMoveRole(target) {
17850
17884
  }
17851
17885
  return moveRole;
17852
17886
  }
17887
+ function readOptionalReplacementSide(target) {
17888
+ if (!("side" in target))
17889
+ return;
17890
+ const side = target.side;
17891
+ if (side === undefined || side === null)
17892
+ return;
17893
+ if (side === "inserted")
17894
+ return "inserted";
17895
+ if (side === "deleted")
17896
+ return "deleted";
17897
+ throw new DocumentApiValidationError("INVALID_TARGET", 'trackChanges.decide id target.side must be "inserted" or "deleted" when provided.', { field: "target.side", value: side });
17898
+ }
17853
17899
  function validateRangeTargetSide(side) {
17854
17900
  if (side === "insert" || side === "inserted" || side === "delete" || side === "deleted" || side === "source" || side === "destination") {
17855
17901
  return;
@@ -68164,7 +68210,7 @@ var init_remark_gfm_BUJjZJLy_es = __esm(() => {
68164
68210
  emptyOptions2 = {};
68165
68211
  });
68166
68212
 
68167
- // ../../packages/superdoc/dist/chunks/SuperConverter-Ed3nFN54.es.js
68213
+ // ../../packages/superdoc/dist/chunks/SuperConverter-DlrS7cQT.es.js
68168
68214
  function getExtensionConfigField(extension$1, field, context = { name: "" }) {
68169
68215
  const fieldValue = extension$1.config[field];
68170
68216
  if (typeof fieldValue === "function")
@@ -71946,14 +71992,17 @@ function executeTrackChangesDecide2(adapter, rawInput, options) {
71946
71992
  return adapter.rejectAll(input, revisionOptions);
71947
71993
  }
71948
71994
  const { id: id2, story } = canonical.target;
71995
+ const side = canonical.target.side;
71949
71996
  if (canonical.decision === "accept")
71950
71997
  return adapter.accept({
71951
71998
  id: id2,
71952
- ...story ? { story } : {}
71999
+ ...story ? { story } : {},
72000
+ ...side ? { side } : {}
71953
72001
  }, revisionOptions);
71954
72002
  return adapter.reject({
71955
72003
  id: id2,
71956
- ...story ? { story } : {}
72004
+ ...story ? { story } : {},
72005
+ ...side ? { side } : {}
71957
72006
  }, revisionOptions);
71958
72007
  }
71959
72008
  function isValidLegacyPartialIdRangeTarget2(input) {
@@ -72004,11 +72053,13 @@ function normalizeReviewDecideTarget2(target) {
72004
72053
  });
72005
72054
  const story = readOptionalStory2(target, "target.story", false);
72006
72055
  const moveRole = readOptionalMoveRole2(target);
72056
+ const side = readOptionalReplacementSide2(target);
72007
72057
  return {
72008
72058
  kind: "id",
72009
72059
  id: id2,
72010
72060
  ...story ? { story } : {},
72011
- ...moveRole ? { moveRole } : {}
72061
+ ...moveRole ? { moveRole } : {},
72062
+ ...side ? { side } : {}
72012
72063
  };
72013
72064
  }
72014
72065
  if (kind === "range") {
@@ -72099,11 +72150,13 @@ function normalizeReviewDecideTarget2(target) {
72099
72150
  if (typeof target.id === "string" && target.id.length > 0) {
72100
72151
  const story = readOptionalStory2(target, "target.story", false);
72101
72152
  const moveRole = readOptionalMoveRole2(target);
72153
+ const side = readOptionalReplacementSide2(target);
72102
72154
  return {
72103
72155
  kind: "id",
72104
72156
  id: target.id,
72105
72157
  ...story ? { story } : {},
72106
- ...moveRole ? { moveRole } : {}
72158
+ ...moveRole ? { moveRole } : {},
72159
+ ...side ? { side } : {}
72107
72160
  };
72108
72161
  }
72109
72162
  }
@@ -72259,6 +72312,21 @@ function readOptionalMoveRole2(target) {
72259
72312
  });
72260
72313
  return moveRole;
72261
72314
  }
72315
+ function readOptionalReplacementSide2(target) {
72316
+ if (!("side" in target))
72317
+ return;
72318
+ const side = target.side;
72319
+ if (side === undefined || side === null)
72320
+ return;
72321
+ if (side === "inserted")
72322
+ return "inserted";
72323
+ if (side === "deleted")
72324
+ return "deleted";
72325
+ throw new DocumentApiValidationError2("INVALID_TARGET", 'trackChanges.decide id target.side must be "inserted" or "deleted" when provided.', {
72326
+ field: "target.side",
72327
+ value: side
72328
+ });
72329
+ }
72262
72330
  function validateRangeTargetSide2(side) {
72263
72331
  if (side === "insert" || side === "inserted" || side === "delete" || side === "deleted" || side === "source" || side === "destination")
72264
72332
  return;
@@ -80436,6 +80504,31 @@ function hasValidDrawingContent(drawingContent) {
80436
80504
  return false;
80437
80505
  return drawingChildren.some((child) => child && typeof child === "object" && (child.name === "wp:inline" || child.name === "wp:anchor"));
80438
80506
  }
80507
+ function resolvePprChangeWordId(params3, change) {
80508
+ const idStr = String(change?.id ?? "");
80509
+ const allocator = params3?.converter?.wordIdAllocator;
80510
+ if (allocator) {
80511
+ const partPath = params3?.currentPartPath || "word/document.xml";
80512
+ const sourceId = /^\d+$/.test(idStr) ? idStr : undefined;
80513
+ return String(allocator.allocate({
80514
+ partPath,
80515
+ sourceId,
80516
+ logicalId: idStr
80517
+ }));
80518
+ }
80519
+ return toDecimalWordId(change?.id);
80520
+ }
80521
+ function toDecimalWordId(id2) {
80522
+ const str = String(id2);
80523
+ if (/^\d+$/.test(str))
80524
+ return str;
80525
+ let hash = 2166136261;
80526
+ for (let i$1 = 0;i$1 < str.length; i$1++) {
80527
+ hash ^= str.charCodeAt(i$1);
80528
+ hash = Math.imul(hash, 16777619);
80529
+ }
80530
+ return String(1e6 + (hash >>> 0) % 1e9);
80531
+ }
80439
80532
  function getSectPr(pPrNode) {
80440
80533
  const sectPr = pPrNode?.elements?.find((el) => el.name === "w:sectPr");
80441
80534
  return sectPr ? carbonCopy(sectPr) : undefined;
@@ -80605,6 +80698,8 @@ function generateParagraphProperties(params3) {
80605
80698
  const { node: node3 } = params3;
80606
80699
  const { attrs = {} } = node3;
80607
80700
  const paragraphProperties = carbonCopy(attrs.paragraphProperties || {});
80701
+ if (params3?.isFinalDoc && paragraphProperties.change)
80702
+ delete paragraphProperties.change;
80608
80703
  const inlineKeys = paragraphProperties.runPropertiesInlineKeys;
80609
80704
  delete paragraphProperties.runPropertiesInlineKeys;
80610
80705
  if (Array.isArray(inlineKeys) && inlineKeys.length === 0)
@@ -80621,10 +80716,14 @@ function generateParagraphProperties(params3) {
80621
80716
  wordIdAllocator: params3?.converter?.wordIdAllocator || null,
80622
80717
  partPath: resolveExportPartPath$1(params3)
80623
80718
  } : null;
80624
- let pPr = translator$129.decode({ node: {
80625
- ...node3,
80626
- attrs: { paragraphProperties }
80627
- } });
80719
+ let pPr = translator$129.decode({
80720
+ node: {
80721
+ ...node3,
80722
+ attrs: { paragraphProperties }
80723
+ },
80724
+ converter: params3?.converter,
80725
+ currentPartPath: resolveExportPartPath$1(params3)
80726
+ });
80628
80727
  if (!params3?.isFinalDoc && paragraphSplitTrackFormatMark) {
80629
80728
  const insertionElement = createParagraphSplitInsertionElement(paragraphSplitTrackFormatMark, paragraphSplitWordIdOptions);
80630
80729
  if (insertionElement)
@@ -91331,11 +91430,24 @@ function getDefinitionForLevel(data, level) {
91331
91430
  return cachedLevels.get(parsedLevel);
91332
91431
  return data?.elements?.find((item) => Number(item.attributes?.["w:ilvl"]) === parsedLevel);
91333
91432
  }
91334
- function updateNumberingProperties(newNumberingProperties, paragraphNode, pos, editor, tr) {
91433
+ function updateNumberingProperties(newNumberingProperties, paragraphNode, pos, editor, tr, options = {}) {
91434
+ const formerProperties = { ...paragraphNode.attrs.paragraphProperties || {} };
91335
91435
  const newProperties = {
91336
- ...paragraphNode.attrs.paragraphProperties || {},
91436
+ ...formerProperties,
91337
91437
  numberingProperties: newNumberingProperties ? { ...newNumberingProperties } : null
91338
91438
  };
91439
+ if (options.trackChange && newNumberingProperties && !formerProperties.change) {
91440
+ const former = { ...formerProperties };
91441
+ delete former.change;
91442
+ const user = editor?.options?.user || {};
91443
+ newProperties.change = {
91444
+ id: v4_default(),
91445
+ author: user.name || "",
91446
+ authorEmail: user.email || "",
91447
+ date: (/* @__PURE__ */ new Date()).toISOString(),
91448
+ paragraphProperties: former
91449
+ };
91450
+ }
91339
91451
  if (!newNumberingProperties && paragraphNode.attrs.paragraphProperties?.styleId === "ListParagraph")
91340
91452
  newProperties.styleId = null;
91341
91453
  if (newProperties.indent)
@@ -113364,6 +113476,28 @@ function groupTrackedChanges(editor) {
113364
113476
  wordRevisionIds: structural.sourceId ? structural.side === "insertion" ? { insert: structural.sourceId } : { delete: structural.sourceId } : undefined
113365
113477
  });
113366
113478
  }
113479
+ const pprChanges = enumeratePprChanges(editor.state);
113480
+ for (const ppr of pprChanges) {
113481
+ const excerpt = normalizeExcerpt(editor.state.doc.textBetween(ppr.from, ppr.to, " ", ""));
113482
+ grouped.push({
113483
+ rawId: ppr.id,
113484
+ commandRawId: ppr.id,
113485
+ id: ppr.id,
113486
+ from: ppr.from,
113487
+ to: ppr.to,
113488
+ hasInsert: false,
113489
+ hasDelete: false,
113490
+ hasFormat: true,
113491
+ attrs: {
113492
+ id: ppr.id,
113493
+ author: ppr.author || undefined,
113494
+ authorEmail: ppr.authorEmail || undefined,
113495
+ authorImage: ppr.authorImage || undefined,
113496
+ date: ppr.date || undefined
113497
+ },
113498
+ excerpt
113499
+ });
113500
+ }
113367
113501
  grouped.sort((a, b) => {
113368
113502
  if (a.from !== b.from)
113369
113503
  return a.from - b.from;
@@ -113836,7 +113970,7 @@ function applyPagination(items, opts) {
113836
113970
  };
113837
113971
  }
113838
113972
  function resolveBlock(editor, nodeId) {
113839
- const matches$1 = getBlockIndex(editor).candidates.filter((c$1) => c$1.nodeId === nodeId && (c$1.nodeType === "paragraph" || c$1.nodeType === "listItem"));
113973
+ const matches$1 = getBlockIndex(editor).candidates.filter((c$1) => c$1.nodeId === nodeId && (c$1.nodeType === "paragraph" || c$1.nodeType === "listItem" || c$1.nodeType === "heading"));
113840
113974
  if (matches$1.length === 0)
113841
113975
  throw new DocumentApiAdapterError("TARGET_NOT_FOUND", "Block target was not found.", { nodeId });
113842
113976
  if (matches$1.length > 1)
@@ -113854,7 +113988,7 @@ function resolveBlocksInRange(editor, fromId, toId$1) {
113854
113988
  from: fromId,
113855
113989
  to: toId$1
113856
113990
  });
113857
- return getBlockIndex(editor).candidates.filter((c$1) => (c$1.nodeType === "paragraph" || c$1.nodeType === "listItem") && c$1.pos >= from5.pos && c$1.pos <= to.pos);
113991
+ return getBlockIndex(editor).candidates.filter((c$1) => (c$1.nodeType === "paragraph" || c$1.nodeType === "listItem" || c$1.nodeType === "heading") && c$1.pos >= from5.pos && c$1.pos <= to.pos);
113858
113992
  }
113859
113993
  function getAbstractNumId(editor, numId) {
113860
113994
  const definitions = editor.converter?.numbering?.definitions;
@@ -114089,7 +114223,15 @@ function getListText(candidate) {
114089
114223
  }
114090
114224
  function projectListItemCandidate(editor, candidate) {
114091
114225
  const attrs = candidate.node.attrs ?? {};
114092
- const { numId, level } = getNumberingProperties(candidate.node);
114226
+ let { numId, level } = getNumberingProperties(candidate.node);
114227
+ if (numId == null)
114228
+ try {
114229
+ const effective = calculateResolvedParagraphProperties(editor, candidate.node, editor.state.doc.resolve(candidate.pos))?.numberingProperties;
114230
+ if (effective) {
114231
+ numId = toFiniteNumber(effective.numId);
114232
+ level = toFiniteNumber(effective.ilvl) ?? level ?? 0;
114233
+ }
114234
+ } catch {}
114093
114235
  const listRendering = getListRendering(attrs.listRendering);
114094
114236
  const path2 = listRendering?.path;
114095
114237
  const ordinal = getListOrdinalFromPath(path2);
@@ -114201,8 +114343,17 @@ function listListItems(editor, query2) {
114201
114343
  }
114202
114344
  });
114203
114345
  }
114346
+ function hasNumberingMetadata(candidate) {
114347
+ const { numId } = getNumberingProperties(candidate.node);
114348
+ if (numId != null)
114349
+ return true;
114350
+ return getListRendering((candidate.node.attrs ?? {}).listRendering) != null;
114351
+ }
114204
114352
  function resolveListItem(editor, address2) {
114205
- const matches$1 = getBlockIndex(editor).candidates.filter((candidate) => candidate.nodeType === "listItem" && candidate.nodeId === address2.nodeId);
114353
+ const index2 = getBlockIndex(editor);
114354
+ let matches$1 = index2.candidates.filter((candidate) => candidate.nodeType === "listItem" && candidate.nodeId === address2.nodeId);
114355
+ if (matches$1.length === 0)
114356
+ matches$1 = index2.candidates.filter((candidate) => candidate.nodeId === address2.nodeId && hasNumberingMetadata(candidate));
114206
114357
  if (matches$1.length === 0)
114207
114358
  throw new DocumentApiAdapterError("TARGET_NOT_FOUND", "List item target was not found.", { target: address2 });
114208
114359
  if (matches$1.length > 1)
@@ -136603,7 +136754,34 @@ Docs: https://docs.superdoc.dev/getting-started/fonts`);
136603
136754
  "data-track-change-date": change.date || ""
136604
136755
  }));
136605
136756
  }
136606
- }, NOTE_REFERENCE_NODE_TYPES, storeByEditor, liveSessionsByHost, cacheByHost, hostStoreSyncedKeys, BODY_LOCATOR, groupedCache, SDT_NODE_NAMES, SDT_BLOCK_NAME = "structuredContentBlock", SDT_INLINE_NAME = "structuredContent", SDT_NODE_TYPES, VALID_CONTROL_TYPES, VALID_LOCK_MODES2, VALID_APPEARANCES, FIELD_LIKE_SDT_TYPES, liveDocumentCountsCache, BIBLIOGRAPHY_NAMESPACE_URI = "http://schemas.openxmlformats.org/officeDocument/2006/bibliography", CUSTOM_XML_RELATIONSHIP_TYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml", CUSTOM_XML_PROPS_RELATIONSHIP_TYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXmlProps", DEFAULT_SELECTED_STYLE = "/APA.XSL", DEFAULT_STYLE_NAME = "APA", DEFAULT_VERSION = "6", API_TO_OOXML_SOURCE_TYPE, OOXML_TO_API_SOURCE_TYPE, SIMPLE_FIELD_TO_XML_TAG, XML_TAG_TO_SIMPLE_FIELD, import_lib2, FONT_FAMILY_FALLBACKS, DEFAULT_GENERIC_FALLBACK = "sans-serif", DEFAULT_FONT_SIZE_PT = 10, CURRENT_APP_VERSION = "1.43.1", SUPERDOC_DOCUMENT_ORIGIN_PROPERTY = "SuperdocDocumentOrigin", STORED_DOCUMENT_ORIGINS, collectRunDefaultProperties = (runProps, { allowOverrideTypeface = true, allowOverrideSize = true, themeResolver, state }) => {
136757
+ }, NOTE_REFERENCE_NODE_TYPES, storeByEditor, liveSessionsByHost, cacheByHost, hostStoreSyncedKeys, BODY_LOCATOR, enumeratePprChanges = (state) => {
136758
+ const doc$2 = state?.doc;
136759
+ if (!doc$2)
136760
+ return [];
136761
+ const out = [];
136762
+ try {
136763
+ doc$2.descendants((node3, pos) => {
136764
+ if (node3.isText)
136765
+ return false;
136766
+ const change = node3?.attrs?.paragraphProperties?.change;
136767
+ if (change && typeof change.id === "string" && change.id && change.paragraphProperties)
136768
+ out.push({
136769
+ id: change.id,
136770
+ from: pos,
136771
+ to: pos + node3.nodeSize,
136772
+ author: change.author || "",
136773
+ authorEmail: change.authorEmail || "",
136774
+ authorImage: change.authorImage || "",
136775
+ date: change.date || "",
136776
+ formerProperties: change.paragraphProperties || {},
136777
+ subtype: "paragraph-format"
136778
+ });
136779
+ });
136780
+ } catch {
136781
+ return out;
136782
+ }
136783
+ return out;
136784
+ }, groupedCache, SDT_NODE_NAMES, SDT_BLOCK_NAME = "structuredContentBlock", SDT_INLINE_NAME = "structuredContent", SDT_NODE_TYPES, VALID_CONTROL_TYPES, VALID_LOCK_MODES2, VALID_APPEARANCES, FIELD_LIKE_SDT_TYPES, liveDocumentCountsCache, BIBLIOGRAPHY_NAMESPACE_URI = "http://schemas.openxmlformats.org/officeDocument/2006/bibliography", CUSTOM_XML_RELATIONSHIP_TYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml", CUSTOM_XML_PROPS_RELATIONSHIP_TYPE = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXmlProps", DEFAULT_SELECTED_STYLE = "/APA.XSL", DEFAULT_STYLE_NAME = "APA", DEFAULT_VERSION = "6", API_TO_OOXML_SOURCE_TYPE, OOXML_TO_API_SOURCE_TYPE, SIMPLE_FIELD_TO_XML_TAG, XML_TAG_TO_SIMPLE_FIELD, import_lib2, FONT_FAMILY_FALLBACKS, DEFAULT_GENERIC_FALLBACK = "sans-serif", DEFAULT_FONT_SIZE_PT = 10, CURRENT_APP_VERSION = "1.43.1", SUPERDOC_DOCUMENT_ORIGIN_PROPERTY = "SuperdocDocumentOrigin", STORED_DOCUMENT_ORIGINS, collectRunDefaultProperties = (runProps, { allowOverrideTypeface = true, allowOverrideSize = true, themeResolver, state }) => {
136607
136785
  if (!runProps?.elements?.length || !state)
136608
136786
  return;
136609
136787
  const fontsNode = runProps.elements.find((el) => el.name === "w:rFonts");
@@ -136637,7 +136815,7 @@ Docs: https://docs.superdoc.dev/getting-started/fonts`);
136637
136815
  state.kern = kernNode.attributes["w:val"];
136638
136816
  }
136639
136817
  }, SuperConverter;
136640
- var init_SuperConverter_Ed3nFN54_es = __esm(() => {
136818
+ var init_SuperConverter_DlrS7cQT_es = __esm(() => {
136641
136819
  init_rolldown_runtime_Bg48TavK_es();
136642
136820
  init_jszip_C49i9kUs_es();
136643
136821
  init_xml_js_CqGKpaft_es();
@@ -141515,6 +141693,8 @@ var init_SuperConverter_Ed3nFN54_es = __esm(() => {
141515
141693
  ...params3.node,
141516
141694
  attrs: change
141517
141695
  } });
141696
+ if (decodedAttrs["w:id"] != null)
141697
+ decodedAttrs["w:id"] = resolvePprChangeWordId(params3, change);
141518
141698
  const hasParagraphProperties$1 = Object.prototype.hasOwnProperty.call(change, "paragraphProperties");
141519
141699
  const paragraphProperties = hasParagraphProperties$1 ? change.paragraphProperties : undefined;
141520
141700
  let pPrNode = paragraphProperties && typeof paragraphProperties === "object" ? pPrTranslator.decode({
@@ -165253,7 +165433,15 @@ var init_SuperConverter_Ed3nFN54_es = __esm(() => {
165253
165433
  }
165254
165434
  async exportToDocx(jsonData, editorSchema, documentMedia, isFinalDoc = false, commentsExportType, comments = [], editor, exportJsonOnly = false, fieldsHighlightColor, preserveSdtWrappers = false) {
165255
165435
  this.exportWarnings = [];
165256
- const exportableComments = comments.filter((c$1) => !c$1.trackedChange);
165436
+ const isSyntheticTrackedChangeRow = (c$1) => {
165437
+ const linkId = c$1.trackedChangeLink?.trackedChangeId;
165438
+ if (!c$1.trackedChange || !linkId)
165439
+ return false;
165440
+ const identity = c$1.commentId ?? c$1.id;
165441
+ return identity != null && String(identity) === String(linkId);
165442
+ };
165443
+ const hasCommentBody = (c$1) => Boolean(typeof c$1.commentText === "string" && c$1.commentText.length > 0 || c$1.commentJSON || Array.isArray(c$1.elements) && c$1.elements.length || typeof c$1.text === "string" && c$1.text.length > 0);
165444
+ const exportableComments = comments.filter((c$1) => !isSyntheticTrackedChangeRow(c$1) && !(c$1.trackedChange && !hasCommentBody(c$1)));
165257
165445
  const commentsWithParaIds = exportableComments.map((c$1) => prepareCommentParaIds(c$1));
165258
165446
  const commentDefinitions = commentsWithParaIds.map((c$1, index2) => getCommentDefinition(c$1, index2, commentsWithParaIds, editor));
165259
165447
  let statFieldCacheMap;
@@ -165643,7 +165831,7 @@ var init_SuperConverter_Ed3nFN54_es = __esm(() => {
165643
165831
  };
165644
165832
  });
165645
165833
 
165646
- // ../../packages/superdoc/dist/chunks/create-headless-toolbar-PSeH6IV5.es.js
165834
+ // ../../packages/superdoc/dist/chunks/create-headless-toolbar-0mIJ8-xU.es.js
165647
165835
  function parseSizeUnit(val = "0") {
165648
165836
  const length3 = val.toString() || "0";
165649
165837
  const value = Number.parseFloat(length3);
@@ -170076,7 +170264,25 @@ function executeTextDelete(_editor, tr, target, _step, mapping) {
170076
170264
  tr.delete(absFrom, absTo);
170077
170265
  return { changed: true };
170078
170266
  }
170079
- function applyAlignmentToRange(editor, tr, absFrom, absTo, alignment) {
170267
+ function withTrackedParagraphPropertyChange(editor, existing, nextParagraphProperties, changeMode) {
170268
+ if (changeMode !== "tracked")
170269
+ return nextParagraphProperties;
170270
+ if (existing?.change)
170271
+ return nextParagraphProperties;
170272
+ const { change: _existingChange, ...formerProperties } = existing ?? {};
170273
+ const user = editor?.options?.user ?? {};
170274
+ return {
170275
+ ...nextParagraphProperties,
170276
+ change: {
170277
+ id: v4_default(),
170278
+ author: user.name || "",
170279
+ authorEmail: user.email || "",
170280
+ date: (/* @__PURE__ */ new Date()).toISOString(),
170281
+ paragraphProperties: formerProperties
170282
+ }
170283
+ };
170284
+ }
170285
+ function applyAlignmentToRange(editor, tr, absFrom, absTo, alignment, changeMode) {
170080
170286
  if (!alignment)
170081
170287
  return false;
170082
170288
  let changed = false;
@@ -170087,10 +170293,10 @@ function applyAlignmentToRange(editor, tr, absFrom, absTo, alignment) {
170087
170293
  const justification = mapAlignmentToJustificationForParagraph(alignment, calculateResolvedParagraphProperties(editor, node3, typeof tr.doc.resolve === "function" ? tr.doc.resolve(pos) : null)?.rightToLeft === true);
170088
170294
  if (existing?.justification === justification)
170089
170295
  return;
170090
- const updated = {
170296
+ const updated = withTrackedParagraphPropertyChange(editor, existing, {
170091
170297
  ...existing ?? {},
170092
170298
  justification
170093
- };
170299
+ }, changeMode);
170094
170300
  tr.setNodeMarkup(pos, undefined, {
170095
170301
  ...node3.attrs,
170096
170302
  paragraphProperties: updated
@@ -170115,7 +170321,7 @@ function expandToBlockBoundaries$1(doc2, from5, to) {
170115
170321
  to: expandedTo
170116
170322
  };
170117
170323
  }
170118
- function executeStyleApply3(editor, tr, target, step$1, mapping) {
170324
+ function executeStyleApply3(editor, tr, target, step$1, mapping, changeMode) {
170119
170325
  let absFrom = mapping.map(target.absFrom);
170120
170326
  let absTo = mapping.map(target.absTo);
170121
170327
  if (step$1.args.scope === "block") {
@@ -170127,7 +170333,7 @@ function executeStyleApply3(editor, tr, target, step$1, mapping) {
170127
170333
  if (step$1.args.inline)
170128
170334
  changed = applyInlinePatchToRange(editor, tr, absFrom, absTo, step$1.args.inline) || changed;
170129
170335
  if (step$1.args.alignment)
170130
- changed = applyAlignmentToRange(editor, tr, absFrom, absTo, step$1.args.alignment) || changed;
170336
+ changed = applyAlignmentToRange(editor, tr, absFrom, absTo, step$1.args.alignment, changeMode) || changed;
170131
170337
  return { changed };
170132
170338
  }
170133
170339
  function validateMappedSpanContiguity(target, mapping, stepId) {
@@ -170198,7 +170404,7 @@ function executeSpanTextDelete(_editor, tr, target, step$1, mapping) {
170198
170404
  tr.delete(absFrom, absTo);
170199
170405
  return { changed: true };
170200
170406
  }
170201
- function executeSpanStyleApply(editor, tr, target, step$1, mapping) {
170407
+ function executeSpanStyleApply(editor, tr, target, step$1, mapping, changeMode) {
170202
170408
  validateMappedSpanContiguity(target, mapping, step$1.id);
170203
170409
  const firstSeg = target.segments[0];
170204
170410
  const lastSeg = target.segments[target.segments.length - 1];
@@ -170213,7 +170419,7 @@ function executeSpanStyleApply(editor, tr, target, step$1, mapping) {
170213
170419
  if (step$1.args.inline)
170214
170420
  changed = applyInlinePatchToRange(editor, tr, absFrom, absTo, step$1.args.inline) || changed;
170215
170421
  if (step$1.args.alignment)
170216
- changed = applyAlignmentToRange(editor, tr, absFrom, absTo, step$1.args.alignment) || changed;
170422
+ changed = applyAlignmentToRange(editor, tr, absFrom, absTo, step$1.args.alignment, changeMode) || changed;
170217
170423
  return { changed };
170218
170424
  }
170219
170425
  function getReplacementText(replacement) {
@@ -174831,7 +175037,7 @@ var CSS_DIMENSION_REGEX, DOM_SIZE_UNITS, MARK_KEYS, STEP_OP_CATALOG_UNFROZEN2, P
174831
175037
  init() {
174832
175038
  if (!editor.converter || editor.options.mode !== "docx")
174833
175039
  return {};
174834
- if (editor.presentationEditor)
175040
+ if (editor.presentationEditor || editor.options?.isHeadless)
174835
175041
  return {
174836
175042
  styles: editor.converter?.linkedStyles || [],
174837
175043
  decorations: DecorationSet.empty
@@ -174845,7 +175051,7 @@ var CSS_DIMENSION_REGEX, DOM_SIZE_UNITS, MARK_KEYS, STEP_OP_CATALOG_UNFROZEN2, P
174845
175051
  apply(tr, prev, oldEditorState, newEditorState) {
174846
175052
  if (!editor.converter || editor.options.mode !== "docx")
174847
175053
  return { ...prev };
174848
- if (editor.presentationEditor)
175054
+ if (editor.presentationEditor || editor.options?.isHeadless)
174849
175055
  return {
174850
175056
  ...prev,
174851
175057
  decorations: DecorationSet.empty
@@ -176446,9 +176652,9 @@ var CSS_DIMENSION_REGEX, DOM_SIZE_UNITS, MARK_KEYS, STEP_OP_CATALOG_UNFROZEN2, P
176446
176652
  }
176447
176653
  };
176448
176654
  };
176449
- var init_create_headless_toolbar_PSeH6IV5_es = __esm(() => {
176655
+ var init_create_headless_toolbar_0mIJ8_xU_es = __esm(() => {
176450
176656
  init_rolldown_runtime_Bg48TavK_es();
176451
- init_SuperConverter_Ed3nFN54_es();
176657
+ init_SuperConverter_DlrS7cQT_es();
176452
176658
  init_jszip_C49i9kUs_es();
176453
176659
  init_uuid_B2wVPhPi_es();
176454
176660
  init_constants_D9qj59G2_es();
@@ -226541,7 +226747,7 @@ var init_remark_gfm_DCND_V_3_es = __esm(() => {
226541
226747
  init_remark_gfm_BUJjZJLy_es();
226542
226748
  });
226543
226749
 
226544
- // ../../packages/superdoc/dist/chunks/src-bMRzO9Kl.es.js
226750
+ // ../../packages/superdoc/dist/chunks/src-Dra6R0wc.es.js
226545
226751
  function deleteProps(obj, propOrProps) {
226546
226752
  const props = typeof propOrProps === "string" ? [propOrProps] : propOrProps;
226547
226753
  const removeNested = (target, pathParts, index2 = 0) => {
@@ -244573,7 +244779,7 @@ function trackChangesGetWrapper(editor, input2) {
244573
244779
  imported: Boolean(toNonEmptyString(resolved.change.attrs.sourceId))
244574
244780
  };
244575
244781
  }
244576
- function decideSingle(hostEditor, decision, id2, story, options) {
244782
+ function decideSingle(hostEditor, decision, id2, story, options, side) {
244577
244783
  const resolved = resolveTrackedChangeInStory(hostEditor, {
244578
244784
  kind: "entity",
244579
244785
  entityType: "trackedChange",
@@ -244591,7 +244797,7 @@ function decideSingle(hostEditor, decision, id2, story, options) {
244591
244797
  throw new DocumentApiAdapterError("CAPABILITY_UNAVAILABLE", `${decision === "accept" ? "Accept" : "Reject"} tracked change command is not available on the story editor.`, { reason: "missing_command" });
244592
244798
  checkRevision(hostEditor, options?.expectedRevision);
244593
244799
  const commandRawId = resolved.change.commandRawId ?? resolved.change.rawId;
244594
- if (executeDomainCommand(resolved.editor, () => Boolean(command$1(commandRawId))).steps[0]?.effect !== "changed")
244800
+ if (executeDomainCommand(resolved.editor, () => Boolean(command$1(commandRawId, side ? { side } : undefined))).steps[0]?.effect !== "changed")
244595
244801
  return decisionFailureReceipt(resolved.editor, `${decision === "accept" ? "Accept" : "Reject"} tracked change "${id2}" produced no change.`, {
244596
244802
  id: id2,
244597
244803
  story
@@ -244603,10 +244809,10 @@ function decideSingle(hostEditor, decision, id2, story, options) {
244603
244809
  return { success: true };
244604
244810
  }
244605
244811
  function trackChangesAcceptWrapper(editor, input2, options) {
244606
- return decideSingle(editor, "accept", input2.id, input2.story, options);
244812
+ return decideSingle(editor, "accept", input2.id, input2.story, options, input2.side);
244607
244813
  }
244608
244814
  function trackChangesRejectWrapper(editor, input2, options) {
244609
- return decideSingle(editor, "reject", input2.id, input2.story, options);
244815
+ return decideSingle(editor, "reject", input2.id, input2.story, options, input2.side);
244610
244816
  }
244611
244817
  function decideAll(editor, decision, input2, options) {
244612
244818
  const index2 = getTrackedChangeIndex(editor);
@@ -245672,6 +245878,7 @@ function replyToCommentHandler(editor, input2, options) {
245672
245878
  };
245673
245879
  if (trackedPayload && inheritedTrackedFields)
245674
245880
  emitCommentLifecycleUpdate(editor, "update", trackedPayload);
245881
+ incrementRevision(editor);
245675
245882
  return {
245676
245883
  success: true,
245677
245884
  id: replyId,
@@ -248308,7 +248515,7 @@ function createHeadingWrapper(editor, input2, options) {
248308
248515
  function extractTextPreview(node3) {
248309
248516
  if (!node3.isTextblock)
248310
248517
  return null;
248311
- const text5 = node3.textContent;
248518
+ const text5 = textContentInBlock(node3, { textModel: "visible" });
248312
248519
  if (text5.length <= TEXT_PREVIEW_MAX_LENGTH)
248313
248520
  return text5;
248314
248521
  return text5.slice(0, TEXT_PREVIEW_MAX_LENGTH);
@@ -248316,7 +248523,7 @@ function extractTextPreview(node3) {
248316
248523
  function extractBlockText$1(node3) {
248317
248524
  if (!node3.isTextblock)
248318
248525
  return null;
248319
- return node3.textContent;
248526
+ return textContentInBlock(node3, { textModel: "visible" });
248320
248527
  }
248321
248528
  function buildStyleContext(editor) {
248322
248529
  const styleProps = readTranslatedLinkedStyles(editor);
@@ -248367,6 +248574,13 @@ function extractBlockNumbering(node3) {
248367
248574
  function extractBlockFormatting(node3, styleCtx) {
248368
248575
  const pProps = node3.attrs.paragraphProperties;
248369
248576
  const styleId$1 = pProps?.styleId ?? null;
248577
+ const rawIndent = pProps?.indent;
248578
+ const indent2 = rawIndent && typeof rawIndent === "object" ? Object.fromEntries([
248579
+ "left",
248580
+ "right",
248581
+ "firstLine",
248582
+ "hanging"
248583
+ ].filter((k$1) => typeof rawIndent[k$1] === "number" && rawIndent[k$1] !== 0).map((k$1) => [k$1, rawIndent[k$1]])) : undefined;
248370
248584
  let fontFamily;
248371
248585
  let fontSize;
248372
248586
  let bold2;
@@ -248378,6 +248592,8 @@ function extractBlockFormatting(node3, styleCtx) {
248378
248592
  const marks = child.marks ?? [];
248379
248593
  if (!child.isText || marks.length === 0)
248380
248594
  return;
248595
+ if (marks.some((mark2) => mark2.type.name === "trackDelete"))
248596
+ return;
248381
248597
  for (const mark2 of marks) {
248382
248598
  const markName = mark2.type.name;
248383
248599
  const attrs = mark2.attrs;
@@ -248415,6 +248631,7 @@ function extractBlockFormatting(node3, styleCtx) {
248415
248631
  ...underline ? { underline } : {},
248416
248632
  ...color2 ? { color: color2 } : {},
248417
248633
  ...pProps?.justification ? { alignment: pProps.justification } : {},
248634
+ ...indent2 && Object.keys(indent2).length > 0 ? { indent: indent2 } : {},
248418
248635
  ...headingLevel ? { headingLevel } : {}
248419
248636
  };
248420
248637
  }
@@ -248486,7 +248703,7 @@ function blocksListWrapper(editor, input2) {
248486
248703
  return {
248487
248704
  total,
248488
248705
  blocks: paged.map((candidate, i3) => {
248489
- const textLength = computeTextContentLength(candidate.node);
248706
+ const textLength = computeTextContentLength(candidate.node, { textModel: "visible" });
248490
248707
  const fullText = input2?.includeText ? extractBlockText$1(candidate.node) : undefined;
248491
248708
  const numbering = extractBlockNumbering(candidate.node);
248492
248709
  const ref$1 = textLength > 0 ? encodeV4Ref({
@@ -248502,6 +248719,7 @@ function blocksListWrapper(editor, input2) {
248502
248719
  }],
248503
248720
  blockIndex: offset$1 + i3
248504
248721
  }) : undefined;
248722
+ const listRendering = candidate.node.attrs?.listRendering;
248505
248723
  return {
248506
248724
  ordinal: offset$1 + i3,
248507
248725
  nodeId: candidate.nodeId,
@@ -248510,6 +248728,11 @@ function blocksListWrapper(editor, input2) {
248510
248728
  ...fullText !== undefined ? { text: fullText } : {},
248511
248729
  isEmpty: textLength === 0,
248512
248730
  ...extractBlockFormatting(candidate.node, styleCtx),
248731
+ ...listRendering ? { numbering: {
248732
+ marker: listRendering.markerText ?? null,
248733
+ path: listRendering.path ?? null,
248734
+ kind: listRendering.numberingType ?? null
248735
+ } } : {},
248513
248736
  ...numbering ? { paragraphNumbering: numbering } : {},
248514
248737
  ...ref$1 ? { ref: ref$1 } : {}
248515
248738
  };
@@ -249842,7 +250065,9 @@ function listsCreateWrapper(editor, input2, options) {
249842
250065
  };
249843
250066
  }
249844
250067
  function listsAttachWrapper(editor, input2, options) {
249845
- rejectTrackedMode("lists.attach", options);
250068
+ const trackChange = (options?.changeMode ?? "direct") === "tracked";
250069
+ if (trackChange)
250070
+ ensureTrackedCapability(editor, { operation: "lists.attach" });
249846
250071
  const attachTo = resolveListItem(editor, input2.attachTo);
249847
250072
  if (attachTo.numId == null)
249848
250073
  return toListsFailure$1("INVALID_TARGET", "attachTo target must be a list item with numbering metadata.", { attachTo: input2.attachTo });
@@ -249869,7 +250094,7 @@ function listsAttachWrapper(editor, input2, options) {
249869
250094
  updateNumberingProperties({
249870
250095
  numId,
249871
250096
  ilvl: level
249872
- }, block.node, block.pos, editor, tr);
250097
+ }, block.node, block.pos, editor, tr, { trackChange });
249873
250098
  dispatchEditorTransaction$1(editor, tr);
249874
250099
  clearIndexCache(editor);
249875
250100
  return true;
@@ -254212,11 +254437,17 @@ function tablesSetShadingAdapter(editor, input2, options) {
254212
254437
  color: "auto"
254213
254438
  };
254214
254439
  const syncAttrs = resolved.scope === "table" ? syncExtractedTableAttrs(currentProps) : {};
254215
- tr.setNodeMarkup(resolved.pos, null, {
254440
+ const nextAttrs = {
254216
254441
  ...currentAttrs,
254217
254442
  [propsKey]: currentProps,
254218
254443
  ...syncAttrs
254219
- });
254444
+ };
254445
+ if (resolved.scope === "cell")
254446
+ if (normalizedColor === "auto")
254447
+ delete nextAttrs.background;
254448
+ else
254449
+ nextAttrs.background = { color: normalizedColor };
254450
+ tr.setNodeMarkup(resolved.pos, null, nextAttrs);
254220
254451
  if (resolved.scope === "table")
254221
254452
  applyShadingToCells(tr, resolved.node, resolved.pos + 1, normalizedColor);
254222
254453
  applyDirectMutationMeta(tr);
@@ -254243,11 +254474,14 @@ function tablesClearShadingAdapter(editor, input2, options) {
254243
254474
  const currentProps = { ...currentAttrs[propsKey] ?? {} };
254244
254475
  delete currentProps.shading;
254245
254476
  const syncAttrs = resolved.scope === "table" ? syncExtractedTableAttrs(currentProps) : {};
254246
- tr.setNodeMarkup(resolved.pos, null, {
254477
+ const nextAttrs = {
254247
254478
  ...currentAttrs,
254248
254479
  [propsKey]: currentProps,
254249
254480
  ...syncAttrs
254250
- });
254481
+ };
254482
+ if (resolved.scope === "cell")
254483
+ delete nextAttrs.background;
254484
+ tr.setNodeMarkup(resolved.pos, null, nextAttrs);
254251
254485
  if (resolved.scope === "table") {
254252
254486
  const tableNode = resolved.node;
254253
254487
  const tableStart = resolved.pos + 1;
@@ -255290,7 +255524,7 @@ function registerBuiltInExecutors() {
255290
255524
  registerStepExecutor("text.delete", { execute: (ctx$1, targets, step3) => executeTextStep(ctx$1, targets, step3, (e, tr, t, s2, m$1) => executeTextDelete(e, tr, t, s2, m$1), (e, tr, t, s2, m$1) => executeSpanTextDelete(e, tr, t, s2, m$1)) });
255291
255525
  registerStepExecutor("format.apply", { execute: (ctx$1, targets, step3) => {
255292
255526
  ensureFormatStepCapabilities(ctx$1, step3);
255293
- return executeTextStep(ctx$1, targets, step3, (e, tr, t, s2, m$1) => executeStyleApply3(e, tr, t, s2, m$1), (e, tr, t, s2, m$1) => executeSpanStyleApply(e, tr, t, s2, m$1));
255527
+ return executeTextStep(ctx$1, targets, step3, (e, tr, t, s2, m$1) => executeStyleApply3(e, tr, t, s2, m$1, ctx$1.changeMode), (e, tr, t, s2, m$1) => executeSpanStyleApply(e, tr, t, s2, m$1, ctx$1.changeMode));
255294
255528
  } });
255295
255529
  registerStepExecutor("create.paragraph", { execute: (ctx$1, targets, step3) => executeCreateStep(ctx$1.editor, ctx$1.tr, step3, targets, ctx$1.mapping) });
255296
255530
  registerStepExecutor("create.heading", { execute: (ctx$1, targets, step3) => executeCreateStep(ctx$1.editor, ctx$1.tr, step3, targets, ctx$1.mapping) });
@@ -296991,11 +297225,12 @@ var Node$13 = class Node$14 {
296991
297225
  return buildGraphFromSpans({
296992
297226
  spans: enumerateTrackedMarkSpans(state),
296993
297227
  structuralChanges: enumerateStructuralRowChanges(state),
297228
+ pprChanges: enumeratePprChanges(state),
296994
297229
  doc: state?.doc ?? null,
296995
297230
  story,
296996
297231
  replacementsMode
296997
297232
  });
296998
- }, buildGraphFromSpans = ({ spans, structuralChanges = [], doc: doc$12, story, replacementsMode }) => {
297233
+ }, buildGraphFromSpans = ({ spans, structuralChanges = [], pprChanges = [], doc: doc$12, story, replacementsMode }) => {
296999
297234
  const mergedSegments = mergeAdjacentSpans(spans.map((span) => ({
297000
297235
  attrs: readTrackedAttrs(span.mark, span.mark.type.name),
297001
297236
  span
@@ -297073,6 +297308,22 @@ var Node$13 = class Node$14 {
297073
297308
  mergedSegments.push(...logical.segments);
297074
297309
  appendToMap(byRevisionGroupId, logical.revisionGroupId, logical.id);
297075
297310
  }
297311
+ for (const ppr of pprChanges) {
297312
+ const logical = buildPprLogicalChange({
297313
+ ppr,
297314
+ doc: doc$12,
297315
+ story
297316
+ });
297317
+ if (!logical)
297318
+ continue;
297319
+ const internalKey = `pprchange:${ppr.from}`;
297320
+ if (changes.has(internalKey))
297321
+ continue;
297322
+ changes.set(internalKey, logical);
297323
+ if (logical.id && logical.id !== internalKey && !changes.has(logical.id))
297324
+ changes.set(logical.id, logical);
297325
+ appendToMap(byRevisionGroupId, logical.revisionGroupId, logical.id);
297326
+ }
297076
297327
  const segments = mergedSegments.slice().sort((a2, b$1) => a2.from - b$1.from || a2.to - b$1.to);
297077
297328
  const graph = {
297078
297329
  changes,
@@ -297185,6 +297436,12 @@ var Node$13 = class Node$14 {
297185
297436
  type = CanonicalChangeType.Formatting;
297186
297437
  else
297187
297438
  type = "";
297439
+ if (type === CanonicalChangeType.Replacement && !(inserted.length && deleted.length)) {
297440
+ if (inserted.length)
297441
+ type = CanonicalChangeType.Insertion;
297442
+ else if (deleted.length)
297443
+ type = CanonicalChangeType.Deletion;
297444
+ }
297188
297445
  const subtype = subtypeFromChangeType(type) ?? "";
297189
297446
  const primary = segments[0]?.attrs ?? null;
297190
297447
  let replacement = null;
@@ -297321,6 +297578,90 @@ var Node$13 = class Node$14 {
297321
297578
  enumerable: false
297322
297579
  });
297323
297580
  return logical;
297581
+ }, buildPprLogicalChange = ({ ppr, doc: doc$12, story }) => {
297582
+ const from$1 = ppr.from;
297583
+ const to = ppr.to;
297584
+ if (!(from$1 < to))
297585
+ return null;
297586
+ const side = SegmentSide.Formatting;
297587
+ const attrs = {
297588
+ id: ppr.id,
297589
+ revisionGroupId: ppr.id,
297590
+ splitFromId: "",
297591
+ changeType: CanonicalChangeType.Formatting,
297592
+ replacementGroupId: "",
297593
+ replacementSideId: "",
297594
+ overlapParentId: "",
297595
+ sourceIds: {},
297596
+ sourceId: "",
297597
+ importedAuthor: "",
297598
+ origin: "",
297599
+ author: ppr.author,
297600
+ authorId: "",
297601
+ authorEmail: ppr.authorEmail,
297602
+ authorImage: ppr.authorImage,
297603
+ date: ppr.date,
297604
+ markType: "",
297605
+ side,
297606
+ subtype: ppr.subtype,
297607
+ explicitChangeType: CanonicalChangeType.Formatting,
297608
+ hasReviewMetadata: true
297609
+ };
297610
+ const segment = {
297611
+ segmentId: `${ppr.id}:pprchange:${from$1}:${to}:0`,
297612
+ changeId: ppr.id,
297613
+ markType: "",
297614
+ side,
297615
+ from: from$1,
297616
+ to,
297617
+ text: "",
297618
+ mark: null,
297619
+ markRuns: [],
297620
+ attrs,
297621
+ parentId: "",
297622
+ parentSide: "",
297623
+ overlapRole: "standalone",
297624
+ pprChange: true
297625
+ };
297626
+ if (doc$12)
297627
+ try {
297628
+ segment.text = doc$12.textBetween(from$1, to, " ", "");
297629
+ } catch {
297630
+ segment.text = "";
297631
+ }
297632
+ const segments = [segment];
297633
+ const logical = {
297634
+ id: ppr.id,
297635
+ type: CanonicalChangeType.Formatting,
297636
+ subtype: ppr.subtype,
297637
+ state: "open",
297638
+ segments,
297639
+ coverageSegments: [...segments],
297640
+ insertedSegments: [],
297641
+ deletedSegments: [],
297642
+ formattingSegments: [...segments],
297643
+ replacement: null,
297644
+ author: ppr.author,
297645
+ authorId: "",
297646
+ authorEmail: ppr.authorEmail,
297647
+ authorImage: ppr.authorImage,
297648
+ date: ppr.date,
297649
+ sourceIds: {},
297650
+ revisionGroupId: ppr.id,
297651
+ splitFromId: "",
297652
+ sourcePlatform: "",
297653
+ story,
297654
+ parent: null,
297655
+ children: [],
297656
+ before: [],
297657
+ after: [],
297658
+ excerpt: segment.text.length > 200 ? `${segment.text.slice(0, 200)}…` : segment.text
297659
+ };
297660
+ Object.defineProperty(logical, "pprChange", {
297661
+ value: ppr,
297662
+ enumerable: false
297663
+ });
297664
+ return logical;
297324
297665
  }, aggregateSourceIds = (segments) => {
297325
297666
  const out = {};
297326
297667
  const sorted = [...segments].sort((a2, b$1) => {
@@ -300035,6 +300376,10 @@ var Node$13 = class Node$14 {
300035
300376
  touchedChangeIds: applyResult.touchedChangeIds,
300036
300377
  diagnostics: plan.diagnostics
300037
300378
  };
300379
+ }, normalizeReplacementSide = (value) => {
300380
+ if (value === SegmentSide.Inserted || value === SegmentSide.Deleted)
300381
+ return value;
300382
+ return null;
300038
300383
  }, normalizeDecisionTarget = (target) => {
300039
300384
  if (!target || typeof target !== "object")
300040
300385
  return {
@@ -300048,11 +300393,18 @@ var Node$13 = class Node$14 {
300048
300393
  ok: false,
300049
300394
  failure: failure$3("INVALID_TARGET", 'target.kind = "id" requires a non-empty id.')
300050
300395
  };
300396
+ const side = normalizeReplacementSide(t.side);
300397
+ if (t.side != null && !side)
300398
+ return {
300399
+ ok: false,
300400
+ failure: failure$3("INVALID_TARGET", 'target.side must be "inserted" or "deleted" when provided.')
300401
+ };
300051
300402
  return {
300052
300403
  ok: true,
300053
300404
  value: {
300054
300405
  kind: "id",
300055
- id: t.id
300406
+ id: t.id,
300407
+ ...side ? { side } : {}
300056
300408
  }
300057
300409
  };
300058
300410
  }
@@ -300156,7 +300508,8 @@ var Node$13 = class Node$14 {
300156
300508
  ranges: change.segments.map((s2) => ({
300157
300509
  from: s2.from,
300158
300510
  to: s2.to
300159
- }))
300511
+ })),
300512
+ ...normalized.side ? { side: normalized.side } : {}
300160
300513
  }]
300161
300514
  };
300162
300515
  }
@@ -300399,7 +300752,7 @@ var Node$13 = class Node$14 {
300399
300752
  suppressedInsideTable.add(change.id);
300400
300753
  continue;
300401
300754
  }
300402
- if (isInsideStayingTable(change)) {
300755
+ if (!change.pprChange && isInsideStayingTable(change)) {
300403
300756
  const failureResult = planContainedInlineChild(change);
300404
300757
  if (failureResult)
300405
300758
  return {
@@ -300408,6 +300761,36 @@ var Node$13 = class Node$14 {
300408
300761
  };
300409
300762
  continue;
300410
300763
  }
300764
+ if (change.type === CanonicalChangeType.Replacement && selection.side) {
300765
+ touched.add(change.id);
300766
+ const sideResult = planReplacementSideDecision({
300767
+ ops,
300768
+ change,
300769
+ decision,
300770
+ side: selection.side,
300771
+ removedRanges,
300772
+ retired,
300773
+ resolvedRanges
300774
+ });
300775
+ if (!sideResult.ok)
300776
+ return {
300777
+ ok: false,
300778
+ failure: sideResult.failure
300779
+ };
300780
+ continue;
300781
+ }
300782
+ if (selection.side) {
300783
+ const standaloneSide = change.type === CanonicalChangeType.Insertion ? "inserted" : change.type === CanonicalChangeType.Deletion ? "deleted" : null;
300784
+ if (standaloneSide !== selection.side)
300785
+ return {
300786
+ ok: false,
300787
+ failure: failure$3("INVALID_TARGET", `target.side "${selection.side}" does not apply: this change is not a paired replacement${standaloneSide ? ` (its only side is "${standaloneSide}")` : ""}. The targeted side may have already been resolved.`, { details: {
300788
+ changeId: change.id,
300789
+ requestedSide: selection.side,
300790
+ currentSide: standaloneSide
300791
+ } })
300792
+ };
300793
+ }
300411
300794
  const isFull = selection.coverage === "full";
300412
300795
  if (!isFull) {
300413
300796
  if (change.type === CanonicalChangeType.Structural)
@@ -300430,14 +300813,26 @@ var Node$13 = class Node$14 {
300430
300813
  };
300431
300814
  }
300432
300815
  touched.add(change.id);
300433
- if (isFull)
300816
+ if (isFull && !change.pprChange)
300434
300817
  for (const segment of change.segments)
300435
300818
  resolvedRanges.push({
300436
300819
  from: segment.from,
300437
300820
  to: segment.to,
300438
300821
  cause: `${decision}:${change.id}`
300439
300822
  });
300440
- if (change.type === CanonicalChangeType.Structural) {
300823
+ if (change.pprChange) {
300824
+ const pprResult = planPprDecision({
300825
+ ops,
300826
+ change,
300827
+ decision,
300828
+ retired
300829
+ });
300830
+ if (!pprResult.ok)
300831
+ return {
300832
+ ok: false,
300833
+ failure: pprResult.failure
300834
+ };
300835
+ } else if (change.type === CanonicalChangeType.Structural) {
300441
300836
  const structuralResult = planStructuralDecision({
300442
300837
  ops,
300443
300838
  change,
@@ -300522,6 +300917,22 @@ var Node$13 = class Node$14 {
300522
300917
  continue;
300523
300918
  if (!isInsideStayingTable(change))
300524
300919
  continue;
300920
+ if (change.pprChange) {
300921
+ cascadedInsideStayingTable.add(change.id);
300922
+ touched.add(change.id);
300923
+ const pprResult = planPprDecision({
300924
+ ops,
300925
+ change,
300926
+ decision,
300927
+ retired
300928
+ });
300929
+ if (!pprResult.ok)
300930
+ return {
300931
+ ok: false,
300932
+ failure: pprResult.failure
300933
+ };
300934
+ continue;
300935
+ }
300525
300936
  const failureResult = planContainedInlineChild(change);
300526
300937
  if (failureResult)
300527
300938
  return {
@@ -300706,6 +301117,22 @@ var Node$13 = class Node$14 {
300706
301117
  });
300707
301118
  retired.add(change.id);
300708
301119
  return { ok: true };
301120
+ }, planPprDecision = ({ ops, change, decision, retired }) => {
301121
+ const ppr = change.pprChange;
301122
+ if (!ppr)
301123
+ return {
301124
+ ok: false,
301125
+ failure: failure$3("CAPABILITY_UNAVAILABLE", `change "${change.id}" is not a paragraph-property change.`)
301126
+ };
301127
+ ops.push({
301128
+ kind: "resolvePprChange",
301129
+ from: ppr.from,
301130
+ changeId: change.id,
301131
+ decision,
301132
+ formerProperties: ppr.formerProperties
301133
+ });
301134
+ retired.add(change.id);
301135
+ return { ok: true };
300709
301136
  }, planReplacementDecision = ({ ops, graph, change, decision, removedRanges, retired }) => {
300710
301137
  const inserted = change.insertedSegments;
300711
301138
  const deleted = change.deletedSegments;
@@ -300790,6 +301217,55 @@ var Node$13 = class Node$14 {
300790
301217
  }
300791
301218
  retired.add(change.id);
300792
301219
  return { ok: true };
301220
+ }, planReplacementSideDecision = ({ ops, change, decision, side, removedRanges, resolvedRanges }) => {
301221
+ const inserted = change.insertedSegments;
301222
+ const deleted = change.deletedSegments;
301223
+ if (!inserted.length || !deleted.length)
301224
+ return {
301225
+ ok: false,
301226
+ failure: failure$3("PRECONDITION_FAILED", `replacement "${change.id}" missing inserted or deleted side.`)
301227
+ };
301228
+ const segments = side === SegmentSide.Inserted ? inserted : deleted;
301229
+ for (const seg of segments)
301230
+ resolvedRanges.push({
301231
+ from: seg.from,
301232
+ to: seg.to,
301233
+ cause: `${decision}-replacement-${side}:${change.id}`
301234
+ });
301235
+ const removeContent = (seg, cause) => {
301236
+ ops.push({
301237
+ kind: "removeContent",
301238
+ from: seg.from,
301239
+ to: seg.to,
301240
+ changeId: change.id,
301241
+ side
301242
+ });
301243
+ removedRanges.push({
301244
+ from: seg.from,
301245
+ to: seg.to,
301246
+ cause: `${cause}:${change.id}`
301247
+ });
301248
+ };
301249
+ const dropMark = (seg) => pushRemoveMarkOpsForSegment({
301250
+ ops,
301251
+ segment: seg,
301252
+ changeId: change.id,
301253
+ side
301254
+ });
301255
+ if (side === SegmentSide.Deleted)
301256
+ if (decision === "accept")
301257
+ for (const seg of deleted)
301258
+ removeContent(seg, "accept-replacement-deleted-side");
301259
+ else
301260
+ for (const seg of deleted)
301261
+ dropMark(seg);
301262
+ else if (decision === "accept")
301263
+ for (const seg of inserted)
301264
+ dropMark(seg);
301265
+ else
301266
+ for (const seg of inserted)
301267
+ removeContent(seg, "reject-replacement-inserted-side");
301268
+ return { ok: true };
300793
301269
  }, getParentRestoreContext = ({ graph, change }) => {
300794
301270
  const explicit = getExplicitParentRestoreContext({
300795
301271
  graph,
@@ -301158,6 +301634,31 @@ var Node$13 = class Node$14 {
301158
301634
  });
301159
301635
  continue;
301160
301636
  }
301637
+ if (op.kind === "resolvePprChange") {
301638
+ const mappedFrom = tr.mapping.map(op.from, 1);
301639
+ const node3 = tr.doc.nodeAt(mappedFrom);
301640
+ const pp = node3?.attrs?.paragraphProperties;
301641
+ if (node3 && pp && pp.change)
301642
+ if (op.decision === "accept") {
301643
+ const kept = { ...pp };
301644
+ delete kept.change;
301645
+ tr.setNodeMarkup(mappedFrom, undefined, {
301646
+ ...node3.attrs,
301647
+ paragraphProperties: kept
301648
+ });
301649
+ } else {
301650
+ const former = { ...op.formerProperties || {} };
301651
+ const nextAttrs = {
301652
+ ...node3.attrs,
301653
+ paragraphProperties: former,
301654
+ numberingProperties: former.numberingProperties ?? null
301655
+ };
301656
+ if (!former.numberingProperties)
301657
+ nextAttrs.listRendering = null;
301658
+ tr.setNodeMarkup(mappedFrom, undefined, nextAttrs);
301659
+ }
301660
+ continue;
301661
+ }
301161
301662
  }
301162
301663
  for (const op of contentOps)
301163
301664
  tr.step(new ReplaceStep(op.from, op.to, Slice.empty));
@@ -327366,13 +327867,13 @@ menclose::after {
327366
327867
  return;
327367
327868
  console.log(...args$1);
327368
327869
  }, HEADER_FOOTER_INIT_BUDGET_MS = 200, MAX_ZOOM_WARNING_THRESHOLD = 10, MAX_SELECTION_RECTS_PER_USER = 100, SEMANTIC_RESIZE_DEBOUNCE_MS = 120, MIN_SEMANTIC_CONTENT_WIDTH_PX = 1, GLOBAL_PERFORMANCE, PresentationEditor, ICONS, TEXTS, tableActionsOptions, TRACKED_MARK_NAMES;
327369
- var init_src_bMRzO9Kl_es = __esm(() => {
327870
+ var init_src_Dra6R0wc_es = __esm(() => {
327370
327871
  init_rolldown_runtime_Bg48TavK_es();
327371
- init_SuperConverter_Ed3nFN54_es();
327872
+ init_SuperConverter_DlrS7cQT_es();
327372
327873
  init_jszip_C49i9kUs_es();
327373
327874
  init_xml_js_CqGKpaft_es();
327374
327875
  init_uuid_B2wVPhPi_es();
327375
- init_create_headless_toolbar_PSeH6IV5_es();
327876
+ init_create_headless_toolbar_0mIJ8_xU_es();
327376
327877
  init_constants_D9qj59G2_es();
327377
327878
  init_unified_BDuVPlMu_es();
327378
327879
  init_remark_gfm_BUJjZJLy_es();
@@ -327801,7 +328302,7 @@ var init_src_bMRzO9Kl_es = __esm(() => {
327801
328302
  },
327802
328303
  "blocks.list": {
327803
328304
  memberPath: "blocks.list",
327804
- description: "List top-level blocks in document order with IDs, types, text previews, and optional full text when includeText:true. Supports pagination via offset/limit, optional nodeType filtering, and single-story scoping via `in: <StoryLocator>`.",
328305
+ description: "List top-level blocks in document order with IDs, types, text previews, and optional full text when includeText:true. Text, previews, lengths, and formatting hints use the VISIBLE model: pending tracked deletions are excluded (matching how edit refs resolve), and inline atoms render as a single placeholder character. Supports pagination via offset/limit, optional nodeType filtering, and single-story scoping via `in: <StoryLocator>`.",
327805
328306
  expectedResult: "Returns a BlocksListResult with total block count, an ordered array of block entries (ordinal, nodeId, nodeType, textPreview, optional text, isEmpty), and the current document revision.",
327806
328307
  requiresDocumentContext: true,
327807
328308
  metadata: readOperation2({ throws: ["INVALID_INPUT", ...T_STORY2] }),
@@ -328740,13 +329241,13 @@ var init_src_bMRzO9Kl_es = __esm(() => {
328740
329241
  },
328741
329242
  "lists.attach": {
328742
329243
  memberPath: "lists.attach",
328743
- description: "Convert non-list paragraphs to list items under an existing list sequence.",
329244
+ description: 'Convert non-list paragraphs to list items under an existing list sequence. With changeMode:"tracked" the former (unnumbered) paragraph properties are recorded as a w:pPrChange so a reviewer can accept/reject the numbering.',
328744
329245
  expectedResult: "Returns a ListsMutateItemResult confirming attachment.",
328745
329246
  requiresDocumentContext: true,
328746
329247
  metadata: mutationOperation2({
328747
329248
  idempotency: "conditional",
328748
329249
  supportsDryRun: true,
328749
- supportsTrackedMode: false,
329250
+ supportsTrackedMode: true,
328750
329251
  possibleFailureCodes: ["INVALID_TARGET", "NO_OP"],
328751
329252
  throws: [...T_NOT_FOUND_CAPABLE2, "INVALID_TARGET"]
328752
329253
  }),
@@ -351346,7 +351847,7 @@ function print() { __p += __j.call(arguments, '') }
351346
351847
  })
351347
351848
  });
351348
351849
  },
351349
- acceptTrackedChangeById: (id2) => ({ state, dispatch, editor }) => {
351850
+ acceptTrackedChangeById: (id2, options = {}) => ({ state, dispatch, editor }) => {
351350
351851
  return dispatchReviewDecision({
351351
351852
  editor,
351352
351853
  state,
@@ -351354,7 +351855,8 @@ function print() { __p += __j.call(arguments, '') }
351354
351855
  decision: "accept",
351355
351856
  target: {
351356
351857
  kind: "id",
351357
- id: id2
351858
+ id: id2,
351859
+ ...options.side ? { side: options.side } : {}
351358
351860
  }
351359
351861
  }).applied;
351360
351862
  },
@@ -351367,7 +351869,7 @@ function print() { __p += __j.call(arguments, '') }
351367
351869
  target: { kind: "all" }
351368
351870
  }).applied;
351369
351871
  },
351370
- rejectTrackedChangeById: (id2) => ({ state, dispatch, editor }) => {
351872
+ rejectTrackedChangeById: (id2, options = {}) => ({ state, dispatch, editor }) => {
351371
351873
  return dispatchReviewDecision({
351372
351874
  editor,
351373
351875
  state,
@@ -351375,7 +351877,8 @@ function print() { __p += __j.call(arguments, '') }
351375
351877
  decision: "reject",
351376
351878
  target: {
351377
351879
  kind: "id",
351378
- id: id2
351880
+ id: id2,
351881
+ ...options.side ? { side: options.side } : {}
351379
351882
  }
351380
351883
  }).applied;
351381
351884
  },
@@ -370677,11 +371180,11 @@ function print() { __p += __j.call(arguments, '') }
370677
371180
  ]);
370678
371181
  });
370679
371182
 
370680
- // ../../packages/superdoc/dist/chunks/create-super-doc-ui-DNNbMZCp.es.js
371183
+ // ../../packages/superdoc/dist/chunks/create-super-doc-ui-BNkolmSw.es.js
370681
371184
  var DEFAULT_TEXT_ALIGN_OPTIONS, DEFAULT_LINE_HEIGHT_OPTIONS, DEFAULT_ZOOM_OPTIONS, DEFAULT_DOCUMENT_MODE_OPTIONS, DEFAULT_FONT_SIZE_OPTIONS, headlessToolbarConstants, MOD_ALIASES, ALT_ALIASES, CTRL_ALIASES, SHIFT_ALIASES, BUILTIN_CONTEXT_MENU_GROUPS, BUILTIN_GROUP_ORDER, RESERVED_PROXY_PROPERTY_NAMES, ALL_TOOLBAR_COMMAND_IDS, EMPTY_ACTIVE_IDS, FONT_SIZE_OPTIONS;
370682
- var init_create_super_doc_ui_DNNbMZCp_es = __esm(() => {
370683
- init_SuperConverter_Ed3nFN54_es();
370684
- init_create_headless_toolbar_PSeH6IV5_es();
371185
+ var init_create_super_doc_ui_BNkolmSw_es = __esm(() => {
371186
+ init_SuperConverter_DlrS7cQT_es();
371187
+ init_create_headless_toolbar_0mIJ8_xU_es();
370685
371188
  DEFAULT_TEXT_ALIGN_OPTIONS = [
370686
371189
  {
370687
371190
  label: "Left",
@@ -370972,15 +371475,15 @@ var init_zipper_BxRAi0_5_es = __esm(() => {
370972
371475
 
370973
371476
  // ../../packages/superdoc/dist/super-editor.es.js
370974
371477
  var init_super_editor_es = __esm(() => {
370975
- init_src_bMRzO9Kl_es();
370976
- init_SuperConverter_Ed3nFN54_es();
371478
+ init_src_Dra6R0wc_es();
371479
+ init_SuperConverter_DlrS7cQT_es();
370977
371480
  init_jszip_C49i9kUs_es();
370978
371481
  init_xml_js_CqGKpaft_es();
370979
- init_create_headless_toolbar_PSeH6IV5_es();
371482
+ init_create_headless_toolbar_0mIJ8_xU_es();
370980
371483
  init_constants_D9qj59G2_es();
370981
371484
  init_unified_BDuVPlMu_es();
370982
371485
  init_DocxZipper_BzS208BW_es();
370983
- init_create_super_doc_ui_DNNbMZCp_es();
371486
+ init_create_super_doc_ui_BNkolmSw_es();
370984
371487
  init_ui_CGB3qmy3_es();
370985
371488
  init_eventemitter3_UwU_CLPU_es();
370986
371489
  init_errors_C_DoKMoN_es();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@superdoc-dev/cli",
3
- "version": "0.17.0-next.44",
3
+ "version": "0.17.0-next.46",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "superdoc": "./dist/index.js"
@@ -26,8 +26,8 @@
26
26
  "lib0": "^0.2.114",
27
27
  "typescript": "^5.9.2",
28
28
  "y-protocols": "^1.0.6",
29
- "@superdoc/document-api": "0.1.0-alpha.0",
30
29
  "@superdoc/super-editor": "0.0.1",
30
+ "@superdoc/document-api": "0.1.0-alpha.0",
31
31
  "superdoc": "1.43.1"
32
32
  },
33
33
  "module": "src/index.ts",
@@ -35,11 +35,11 @@
35
35
  "access": "public"
36
36
  },
37
37
  "optionalDependencies": {
38
- "@superdoc-dev/cli-darwin-arm64": "0.17.0-next.44",
39
- "@superdoc-dev/cli-darwin-x64": "0.17.0-next.44",
40
- "@superdoc-dev/cli-linux-x64": "0.17.0-next.44",
41
- "@superdoc-dev/cli-linux-arm64": "0.17.0-next.44",
42
- "@superdoc-dev/cli-windows-x64": "0.17.0-next.44"
38
+ "@superdoc-dev/cli-darwin-arm64": "0.17.0-next.46",
39
+ "@superdoc-dev/cli-darwin-x64": "0.17.0-next.46",
40
+ "@superdoc-dev/cli-linux-x64": "0.17.0-next.46",
41
+ "@superdoc-dev/cli-linux-arm64": "0.17.0-next.46",
42
+ "@superdoc-dev/cli-windows-x64": "0.17.0-next.46"
43
43
  },
44
44
  "scripts": {
45
45
  "predev": "node scripts/ensure-superdoc-build.js",