@superdoc-dev/cli 0.8.0-next.89 → 0.8.0-next.90

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 +958 -471
  2. package/package.json +9 -9
package/dist/index.js CHANGED
@@ -66095,7 +66095,7 @@ var init_remark_gfm_BhnWr3yf_es = __esm(() => {
66095
66095
  emptyOptions2 = {};
66096
66096
  });
66097
66097
 
66098
- // ../../packages/superdoc/dist/chunks/SuperConverter-BecdrRIX.es.js
66098
+ // ../../packages/superdoc/dist/chunks/SuperConverter-CcvDw1Yc.es.js
66099
66099
  function getExtensionConfigField(extension$1, field, context = { name: "" }) {
66100
66100
  const fieldValue = extension$1.config[field];
66101
66101
  if (typeof fieldValue === "function")
@@ -78653,12 +78653,11 @@ function preProcessPageRefInstruction(nodesToCombine, instrText) {
78653
78653
  elements: nodesToCombine
78654
78654
  }];
78655
78655
  }
78656
- function preProcessHyperlinkInstruction(nodesToCombine, instruction, docx) {
78656
+ function resolveHyperlinkAttributes(instruction, docx) {
78657
78657
  const urlMatch = instruction.match(/HYPERLINK\s+"([^"]+)"/);
78658
- let linkAttributes;
78659
78658
  if (urlMatch && urlMatch.length >= 2) {
78660
78659
  const url2 = urlMatch[1];
78661
- const relationships = docx["word/_rels/document.xml.rels"]?.elements.find((el) => el.name === "Relationships");
78660
+ const relationships = docx?.["word/_rels/document.xml.rels"]?.elements?.find((el) => el.name === "Relationships");
78662
78661
  if (relationships) {
78663
78662
  const rId = "rId" + generateDocxRandomId();
78664
78663
  relationships.elements.push({
@@ -78671,32 +78670,35 @@ function preProcessHyperlinkInstruction(nodesToCombine, instruction, docx) {
78671
78670
  TargetMode: "External"
78672
78671
  }
78673
78672
  });
78674
- linkAttributes = { "r:id": rId };
78675
- } else
78676
- linkAttributes = { "w:anchor": url2 };
78677
- } else {
78678
- const availableSwitches = {
78679
- "w:anchor": /(?:\\)?l "(?<value>[^"]+)"/,
78680
- new_window: /(?:\\n|\n)/,
78681
- "w:tgtFrame": /(?:\\t|\t) "(?<value>[^"]+)"/,
78682
- "w:tooltip": /(?:\\)?o "(?<value>[^"]+)"/
78683
- };
78684
- const parsedSwitches = {};
78685
- for (const [key, pattern] of Object.entries(availableSwitches)) {
78686
- const match = instruction.match(pattern);
78687
- if (match)
78688
- parsedSwitches[key] = match.groups?.value || true;
78689
- }
78690
- if (parsedSwitches.new_window) {
78691
- parsedSwitches["w:tgtFrame"] = "_blank";
78692
- delete parsedSwitches.new_window;
78673
+ return { "r:id": rId };
78693
78674
  }
78694
- linkAttributes = { ...parsedSwitches };
78675
+ return { "w:anchor": url2 };
78676
+ }
78677
+ const availableSwitches = {
78678
+ "w:anchor": /(?:\\)?l "(?<value>[^"]+)"/,
78679
+ new_window: /(?:\\n|\n)/,
78680
+ "w:tgtFrame": /(?:\\t|\t) "(?<value>[^"]+)"/,
78681
+ "w:tooltip": /(?:\\)?o "(?<value>[^"]+)"/
78682
+ };
78683
+ const parsedSwitches = {};
78684
+ for (const [key, pattern] of Object.entries(availableSwitches)) {
78685
+ const match = instruction.match(pattern);
78686
+ if (match)
78687
+ parsedSwitches[key] = match.groups?.value || true;
78688
+ }
78689
+ if (parsedSwitches.new_window) {
78690
+ parsedSwitches["w:tgtFrame"] = "_blank";
78691
+ delete parsedSwitches.new_window;
78695
78692
  }
78693
+ if (Object.keys(parsedSwitches).length === 0)
78694
+ return null;
78695
+ return { ...parsedSwitches };
78696
+ }
78697
+ function preProcessHyperlinkInstruction(nodesToCombine, instruction, docx) {
78696
78698
  return [{
78697
78699
  name: "w:hyperlink",
78698
78700
  type: "element",
78699
- attributes: linkAttributes,
78701
+ attributes: resolveHyperlinkAttributes(instruction, docx) ?? {},
78700
78702
  elements: nodesToCombine
78701
78703
  }];
78702
78704
  }
@@ -79622,6 +79624,29 @@ function extractTextFromTextBox(textBoxContent, bodyPr, params3 = {}) {
79622
79624
  } else if (el.name === "sd:totalPageNumber") {
79623
79625
  hasText = true;
79624
79626
  appendFieldPart("NUMPAGES", el, paragraphProperties);
79627
+ } else if (el.name === "w:drawing") {
79628
+ const inline = el.elements?.find((child) => child?.name === "wp:inline");
79629
+ if (inline) {
79630
+ const imagePm = handleImageNode(inline, {
79631
+ ...params3,
79632
+ nodes: [el]
79633
+ }, false);
79634
+ if (imagePm?.attrs?.src && imagePm.attrs.hidden !== true) {
79635
+ hasText = true;
79636
+ const sizeAttr = imagePm.attrs.size || imagePm.attrs;
79637
+ textParts.push({
79638
+ text: "",
79639
+ formatting,
79640
+ kind: "image",
79641
+ src: imagePm.attrs.src,
79642
+ extension: imagePm.attrs.extension,
79643
+ rId: imagePm.attrs.rId,
79644
+ width: typeof sizeAttr?.width === "number" ? sizeAttr.width : undefined,
79645
+ height: typeof sizeAttr?.height === "number" ? sizeAttr.height : undefined,
79646
+ alt: imagePm.attrs.alt || ""
79647
+ });
79648
+ }
79649
+ }
79625
79650
  }
79626
79651
  });
79627
79652
  return hasText;
@@ -85751,7 +85776,7 @@ function handlePlainTextUrlPaste(editor, view, plainText, detected) {
85751
85776
  rId
85752
85777
  }));
85753
85778
  if (underlineMarkType)
85754
- tr = tr.addMark(from5, to, underlineMarkType.create());
85779
+ tr = tr.addMark(from5, to, underlineMarkType.create({ autoAdded: true }));
85755
85780
  view.dispatch(tr.scrollIntoView());
85756
85781
  return true;
85757
85782
  }
@@ -87611,7 +87636,9 @@ function handleHtmlPaste(html2, editor, source) {
87611
87636
  const { node: paragraphNode } = findParagraphAncestor($from);
87612
87637
  const isInParagraph = paragraphNode !== null;
87613
87638
  const isSingleParagraph = doc$2.childCount === 1 && doc$2.firstChild.type.name === "paragraph";
87614
- if (isInParagraph && isSingleParagraph) {
87639
+ const sourceStyleId = isSingleParagraph ? doc$2.firstChild.attrs?.paragraphProperties?.styleId ?? null : null;
87640
+ const sourceIsHeading = typeof sourceStyleId === "string" && /^Heading[1-9]$/i.test(sourceStyleId);
87641
+ if (isInParagraph && isSingleParagraph && !sourceIsHeading) {
87615
87642
  const paragraphContent = doc$2.firstChild.content;
87616
87643
  const tr = state.tr.replaceSelectionWith(paragraphContent, false);
87617
87644
  normalizePastedLinks(tr, editor);
@@ -110368,7 +110395,7 @@ var isRegExp = (value) => {
110368
110395
  default:
110369
110396
  return null;
110370
110397
  }
110371
- }, TRACK_CHANGE_ELEMENT_NAMES, TRANSLATED_TRACK_CHANGE_ELEMENT_NAMES, isTrackChangeElement = (node3) => TRACK_CHANGE_ELEMENT_NAMES.has(node3?.name), isTranslatedTrackChangeElement = (node3) => TRANSLATED_TRACK_CHANGE_ELEMENT_NAMES.has(node3?.name), SKIP_FIELD_PROCESSING_NODE_NAMES$1, shouldSkipFieldProcessing$1 = (node3) => SKIP_FIELD_PROCESSING_NODE_NAMES$1.has(node3?.name), preProcessNodesForFldChar = (nodes = [], docx) => {
110398
+ }, TRACK_CHANGE_ELEMENT_NAMES, TRANSLATED_TRACK_CHANGE_ELEMENT_NAMES, CONSTRUCTIVE_TRACK_CHANGE_ELEMENT_NAMES, isTrackChangeElement = (node3) => TRACK_CHANGE_ELEMENT_NAMES.has(node3?.name), isTranslatedTrackChangeElement = (node3) => TRANSLATED_TRACK_CHANGE_ELEMENT_NAMES.has(node3?.name), isConstructiveTrackChangeElement = (node3) => CONSTRUCTIVE_TRACK_CHANGE_ELEMENT_NAMES.has(node3?.name), SKIP_FIELD_PROCESSING_NODE_NAMES$1, shouldSkipFieldProcessing$1 = (node3) => SKIP_FIELD_PROCESSING_NODE_NAMES$1.has(node3?.name), preProcessNodesForFldChar = (nodes = [], docx) => {
110372
110399
  const processedNodes = [];
110373
110400
  let collectedNodesStack = [];
110374
110401
  let rawCollectedNodesStack = [];
@@ -110388,7 +110415,8 @@ var isRegExp = (value) => {
110388
110415
  if (!currentField.preserveRaw) {
110389
110416
  const combinedResult = _processCombinedNodesForFldChar(collectedNodes, currentField.instrText.trim(), docx, currentField.instructionTokens, fieldRunRPr);
110390
110417
  outputNodes = combinedResult.handled ? combinedResult.nodes : rawCollectedNodes;
110391
- }
110418
+ } else if (currentField.preserveRawConstructive)
110419
+ applyConstructiveFieldInterpretation(outputNodes, currentField.instrText.trim(), docx);
110392
110420
  if (collectedNodesStack.length === 0)
110393
110421
  processedNodes.push(...outputNodes);
110394
110422
  else {
@@ -110499,6 +110527,8 @@ var isRegExp = (value) => {
110499
110527
  const fieldInfo = { ...pendingField.fieldInfo };
110500
110528
  if (fieldInfo.preserveRaw || isTrackChangeElement(node3))
110501
110529
  fieldInfo.preserveRaw = true;
110530
+ if (isConstructiveTrackChangeElement(node3))
110531
+ fieldInfo.preserveRawConstructive = true;
110502
110532
  currentFieldStack.push(fieldInfo);
110503
110533
  collectedNodesStack.push([node3]);
110504
110534
  const rawStack = [rawNode];
@@ -110517,6 +110547,8 @@ var isRegExp = (value) => {
110517
110547
  }
110518
110548
  if (shouldPreserveRaw)
110519
110549
  currentFieldStack[currentFieldStack.length - 1].preserveRaw = true;
110550
+ if (isConstructiveTrackChangeElement(node3))
110551
+ currentFieldStack[currentFieldStack.length - 1].preserveRawConstructive = true;
110520
110552
  collectedNodesStack[collectedNodesStack.length - 1].push(node3);
110521
110553
  captureRawNodeForCurrentField(rawNode, capturedRawNodes, rawSourceToken);
110522
110554
  finalizeField();
@@ -110570,6 +110602,80 @@ var isRegExp = (value) => {
110570
110602
  nodes: nodesToCombine,
110571
110603
  handled: false
110572
110604
  };
110605
+ }, applyConstructiveFieldInterpretation = (rawNodes, instrText, docx) => {
110606
+ if (instrText.split(" ")[0] !== "HYPERLINK")
110607
+ return;
110608
+ const linkAttributes = resolveHyperlinkAttributes(instrText, docx);
110609
+ if (!linkAttributes)
110610
+ return;
110611
+ let visible = false;
110612
+ const walk = (parent) => {
110613
+ if (!parent || !Array.isArray(parent.elements))
110614
+ return;
110615
+ const next = [];
110616
+ let pendingHyperlinkRuns = null;
110617
+ const flushHyperlink = () => {
110618
+ if (!pendingHyperlinkRuns || pendingHyperlinkRuns.length === 0) {
110619
+ pendingHyperlinkRuns = null;
110620
+ return;
110621
+ }
110622
+ next.push({
110623
+ type: "element",
110624
+ name: "w:hyperlink",
110625
+ attributes: linkAttributes,
110626
+ elements: pendingHyperlinkRuns
110627
+ });
110628
+ pendingHyperlinkRuns = null;
110629
+ };
110630
+ for (const child of parent.elements) {
110631
+ if (!child)
110632
+ continue;
110633
+ if (child.name === "w:p" || child.name === "w:ins" || child.name === "w:moveTo") {
110634
+ flushHyperlink();
110635
+ walk(child);
110636
+ next.push(child);
110637
+ continue;
110638
+ }
110639
+ if (child.name === "w:r") {
110640
+ const fldType = child.elements?.find((el) => el?.name === "w:fldChar")?.attributes?.["w:fldCharType"];
110641
+ if (fldType === "separate") {
110642
+ flushHyperlink();
110643
+ visible = true;
110644
+ next.push(child);
110645
+ continue;
110646
+ }
110647
+ if (fldType === "end") {
110648
+ flushHyperlink();
110649
+ visible = false;
110650
+ next.push(child);
110651
+ continue;
110652
+ }
110653
+ if (fldType === "begin") {
110654
+ flushHyperlink();
110655
+ next.push(child);
110656
+ continue;
110657
+ }
110658
+ if (child.elements?.some((el) => el?.name === "w:instrText")) {
110659
+ flushHyperlink();
110660
+ next.push(child);
110661
+ continue;
110662
+ }
110663
+ if (visible) {
110664
+ if (!pendingHyperlinkRuns)
110665
+ pendingHyperlinkRuns = [];
110666
+ pendingHyperlinkRuns.push(child);
110667
+ continue;
110668
+ }
110669
+ next.push(child);
110670
+ continue;
110671
+ }
110672
+ flushHyperlink();
110673
+ next.push(child);
110674
+ }
110675
+ flushHyperlink();
110676
+ parent.elements = next;
110677
+ };
110678
+ rawNodes.forEach(walk);
110573
110679
  }, extractFieldRunRPr = (node3) => {
110574
110680
  const rPrNode = node3?.elements?.find((el) => el.name === "w:rPr");
110575
110681
  if (!rPrNode?.elements?.length)
@@ -119140,7 +119246,7 @@ var isRegExp = (value) => {
119140
119246
  if (id2)
119141
119247
  return trackedChanges.filter(({ mark }) => mark.attrs.id === id2);
119142
119248
  return trackedChanges;
119143
- }, DERIVED_ID_LENGTH = 24, groupedCache, SDT_NODE_NAMES, SDT_BLOCK_NAME = "structuredContentBlock", 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.31.0", collectRunDefaultProperties = (runProps, { allowOverrideTypeface = true, allowOverrideSize = true, themeResolver, state }) => {
119249
+ }, DERIVED_ID_LENGTH = 24, groupedCache, SDT_NODE_NAMES, SDT_BLOCK_NAME = "structuredContentBlock", 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.32.0", collectRunDefaultProperties = (runProps, { allowOverrideTypeface = true, allowOverrideSize = true, themeResolver, state }) => {
119144
119250
  if (!runProps?.elements?.length || !state)
119145
119251
  return;
119146
119252
  const fontsNode = runProps.elements.find((el) => el.name === "w:rFonts");
@@ -119174,7 +119280,7 @@ var isRegExp = (value) => {
119174
119280
  state.kern = kernNode.attributes["w:val"];
119175
119281
  }
119176
119282
  }, SuperConverter;
119177
- var init_SuperConverter_BecdrRIX_es = __esm(() => {
119283
+ var init_SuperConverter_CcvDw1Yc_es = __esm(() => {
119178
119284
  init_rolldown_runtime_Bg48TavK_es();
119179
119285
  init_jszip_C49i9kUs_es();
119180
119286
  init_xml_js_CqGKpaft_es();
@@ -147318,6 +147424,7 @@ var init_SuperConverter_BecdrRIX_es = __esm(() => {
147318
147424
  "w:moveTo"
147319
147425
  ]);
147320
147426
  TRANSLATED_TRACK_CHANGE_ELEMENT_NAMES = new Set(["w:del", "w:ins"]);
147427
+ CONSTRUCTIVE_TRACK_CHANGE_ELEMENT_NAMES = new Set(["w:ins", "w:moveTo"]);
147321
147428
  SKIP_FIELD_PROCESSING_NODE_NAMES$1 = new Set(["w:drawing", "w:pict"]);
147322
147429
  FIELD_CONTROL_ELEMENT_NAMES = new Set(["w:fldChar"]);
147323
147430
  INSTRUCTION_ELEMENT_NAMES = new Set(["w:instrText", "w:tab"]);
@@ -157042,7 +157149,7 @@ var init_SuperConverter_BecdrRIX_es = __esm(() => {
157042
157149
  };
157043
157150
  });
157044
157151
 
157045
- // ../../packages/superdoc/dist/chunks/create-headless-toolbar-DCeIAH_W.es.js
157152
+ // ../../packages/superdoc/dist/chunks/create-headless-toolbar-D5yv7LyN.es.js
157046
157153
  function parseSizeUnit(val = "0") {
157047
157154
  const length3 = val.toString() || "0";
157048
157155
  const value = Number.parseFloat(length3);
@@ -159709,8 +159816,8 @@ var CSS_DIMENSION_REGEX, DOM_SIZE_UNITS, Extension = class Extension2 {
159709
159816
  }
159710
159817
  };
159711
159818
  };
159712
- var init_create_headless_toolbar_DCeIAH_W_es = __esm(() => {
159713
- init_SuperConverter_BecdrRIX_es();
159819
+ var init_create_headless_toolbar_D5yv7LyN_es = __esm(() => {
159820
+ init_SuperConverter_CcvDw1Yc_es();
159714
159821
  init_constants_DrU4EASo_es();
159715
159822
  init_dist_B8HfvhaK_es();
159716
159823
  CSS_DIMENSION_REGEX = /[\d-.]+(\w+)$/;
@@ -208407,7 +208514,7 @@ var init_remark_gfm_eZN6yzWQ_es = __esm(() => {
208407
208514
  init_remark_gfm_BhnWr3yf_es();
208408
208515
  });
208409
208516
 
208410
- // ../../packages/superdoc/dist/chunks/src-BLxaw1d3.es.js
208517
+ // ../../packages/superdoc/dist/chunks/src-BpYr_7Wm.es.js
208411
208518
  function deleteProps(obj, propOrProps) {
208412
208519
  const props = typeof propOrProps === "string" ? [propOrProps] : propOrProps;
208413
208520
  const removeNested = (target, pathParts, index2 = 0) => {
@@ -209170,7 +209277,7 @@ function prosemirrorToYXmlFragment(doc$12, xmlFragment) {
209170
209277
  }
209171
209278
  function getSuperdocVersion() {
209172
209279
  try {
209173
- return "1.31.0";
209280
+ return "1.32.0";
209174
209281
  } catch {
209175
209282
  return "unknown";
209176
209283
  }
@@ -210279,13 +210386,37 @@ function createStructuredContentLockPlugin() {
210279
210386
  const sdtNodes = STRUCTURED_CONTENT_LOCK_KEY.getState(state);
210280
210387
  if (sdtNodes.length === 0)
210281
210388
  return false;
210389
+ if (from$1 !== to && !(selection instanceof NodeSelection)) {
210390
+ const exactContentSDT = sdtNodes.find((s2) => from$1 === s2.pos + 1 && to === s2.end - 1);
210391
+ if (exactContentSDT) {
210392
+ if (!(exactContentSDT.lockMode === "sdtLocked" || exactContentSDT.lockMode === "sdtContentLocked")) {
210393
+ const tr = state.tr.setSelection(NodeSelection.create(state.doc, exactContentSDT.pos));
210394
+ view.dispatch(tr);
210395
+ if (isCut)
210396
+ return false;
210397
+ event.preventDefault();
210398
+ return true;
210399
+ }
210400
+ }
210401
+ }
210282
210402
  let affectedFrom = from$1;
210283
210403
  let affectedTo = to;
210284
210404
  if (from$1 === to) {
210285
- if (isBackspace && from$1 > 0)
210405
+ if (isBackspace && from$1 > 0) {
210286
210406
  affectedFrom = from$1 - 1;
210287
- else if (isDelete && to < state.doc.content.size)
210407
+ const adjacentSDT = sdtNodes.find((s2) => s2.end === from$1);
210408
+ if (adjacentSDT) {
210409
+ affectedFrom = adjacentSDT.pos;
210410
+ affectedTo = adjacentSDT.end;
210411
+ }
210412
+ } else if (isDelete && to < state.doc.content.size) {
210288
210413
  affectedTo = to + 1;
210414
+ const adjacentSDT = sdtNodes.find((s2) => s2.pos === to);
210415
+ if (adjacentSDT) {
210416
+ affectedFrom = adjacentSDT.pos;
210417
+ affectedTo = adjacentSDT.end;
210418
+ }
210419
+ }
210289
210420
  }
210290
210421
  if (checkLockViolation(sdtNodes, affectedFrom, affectedTo).blocked) {
210291
210422
  event.preventDefault();
@@ -211207,8 +211338,8 @@ function findNearestParagraphWithSectPr(doc$12, pos) {
211207
211338
  });
211208
211339
  return target;
211209
211340
  }
211210
- function calculateNewIndentation(node3, delta) {
211211
- let { indent: indent2 } = getResolvedParagraphProperties(node3);
211341
+ function calculateNewIndentation(node3, delta, resolvedProps) {
211342
+ let { indent: indent2 } = resolvedProps ?? {};
211212
211343
  let { left: left$1 } = indent2 || {};
211213
211344
  const increment2 = ptToTwips(delta * defaultIncrementPoints);
211214
211345
  if (!left$1)
@@ -211219,14 +211350,14 @@ function calculateNewIndentation(node3, delta) {
211219
211350
  left$1 = null;
211220
211351
  return left$1;
211221
211352
  }
211222
- function modifyIndentation(calcFunc) {
211223
- return ({ state, dispatch }) => {
211353
+ function modifyIndentation(calcFunc, { resolveProps = false } = {}) {
211354
+ return ({ editor, state, dispatch }) => {
211224
211355
  const tr = state.tr;
211225
211356
  const { from: from$1, to } = state.selection;
211226
211357
  const results = [];
211227
211358
  state.doc.nodesBetween(from$1, to, (node3, pos) => {
211228
211359
  if (node3.type.name === "paragraph") {
211229
- let left$1 = calcFunc(node3);
211360
+ let left$1 = calcFunc(node3, resolveProps ? getResolvedParagraphProperties(node3) || calculateResolvedParagraphProperties(editor ?? {}, node3, state.doc.resolve(pos)) : undefined);
211230
211361
  if (Number.isNaN(left$1)) {
211231
211362
  results.push(false);
211232
211363
  return false;
@@ -214690,6 +214821,301 @@ function extractFieldType$1(instruction) {
214690
214821
  const firstSpace = trimmed.indexOf(" ");
214691
214822
  return firstSpace > 0 ? trimmed.slice(0, firstSpace).toUpperCase() : trimmed.toUpperCase();
214692
214823
  }
214824
+ function parseLevelRange(value) {
214825
+ const match$1 = value.match(/^(\d+)-(\d+)$/);
214826
+ if (!match$1)
214827
+ return;
214828
+ return {
214829
+ from: parseInt(match$1[1], 10),
214830
+ to: parseInt(match$1[2], 10)
214831
+ };
214832
+ }
214833
+ function parseCustomStyles(value) {
214834
+ const entries2 = [];
214835
+ const parts = value.split(",");
214836
+ for (let i4 = 0;i4 < parts.length - 1; i4 += 2) {
214837
+ const styleName = parts[i4].trim();
214838
+ const level = parseInt(parts[i4 + 1].trim(), 10);
214839
+ if (styleName && !isNaN(level))
214840
+ entries2.push({
214841
+ styleName,
214842
+ level
214843
+ });
214844
+ }
214845
+ return entries2;
214846
+ }
214847
+ function deriveIncludePageNumbers(omitRange, outlineLevels) {
214848
+ if (!omitRange)
214849
+ return true;
214850
+ const effectiveRange = outlineLevels ?? {
214851
+ from: 1,
214852
+ to: 9
214853
+ };
214854
+ return !(omitRange.from <= effectiveRange.from && omitRange.to >= effectiveRange.to);
214855
+ }
214856
+ function deriveTabLeader(separator) {
214857
+ if (separator === undefined)
214858
+ return;
214859
+ if (separator === "")
214860
+ return "none";
214861
+ return SEPARATOR_TO_TAB_LEADER[separator];
214862
+ }
214863
+ function parseTocInstruction(instruction) {
214864
+ const source = {};
214865
+ const display = {};
214866
+ const preserved = {};
214867
+ const rawExtensions = [];
214868
+ let match$1;
214869
+ SWITCH_PATTERN$1.lastIndex = 0;
214870
+ while ((match$1 = SWITCH_PATTERN$1.exec(instruction)) !== null) {
214871
+ const switchChar = match$1[1].toLowerCase();
214872
+ const rawArg = match$1[2];
214873
+ const arg = rawArg ?? "";
214874
+ switch (switchChar) {
214875
+ case "o": {
214876
+ const range = parseLevelRange(arg);
214877
+ if (range)
214878
+ source.outlineLevels = range;
214879
+ break;
214880
+ }
214881
+ case "u":
214882
+ source.useAppliedOutlineLevel = true;
214883
+ break;
214884
+ case "f":
214885
+ if (arg)
214886
+ source.tcFieldIdentifier = arg;
214887
+ break;
214888
+ case "l": {
214889
+ const range = parseLevelRange(arg);
214890
+ if (range)
214891
+ source.tcFieldLevels = range;
214892
+ break;
214893
+ }
214894
+ case "h":
214895
+ display.hyperlinks = true;
214896
+ break;
214897
+ case "z":
214898
+ display.hideInWebView = true;
214899
+ break;
214900
+ case "n": {
214901
+ const range = parseLevelRange(arg);
214902
+ if (range)
214903
+ display.omitPageNumberLevels = range;
214904
+ break;
214905
+ }
214906
+ case "p":
214907
+ if (rawArg !== undefined)
214908
+ display.separator = rawArg;
214909
+ break;
214910
+ case "t":
214911
+ if (arg)
214912
+ preserved.customStyles = parseCustomStyles(arg);
214913
+ break;
214914
+ case "b":
214915
+ if (arg)
214916
+ preserved.bookmarkName = arg;
214917
+ break;
214918
+ case "a":
214919
+ if (arg)
214920
+ preserved.captionType = arg;
214921
+ break;
214922
+ case "c":
214923
+ if (arg)
214924
+ preserved.seqFieldIdentifier = arg;
214925
+ break;
214926
+ case "d":
214927
+ if (arg)
214928
+ preserved.chapterSeparator = arg;
214929
+ break;
214930
+ case "s":
214931
+ if (arg)
214932
+ preserved.chapterNumberSource = arg;
214933
+ break;
214934
+ case "w":
214935
+ preserved.preserveTabEntries = true;
214936
+ break;
214937
+ default:
214938
+ rawExtensions.push(arg ? `\\${switchChar} "${arg}"` : `\\${switchChar}`);
214939
+ break;
214940
+ }
214941
+ }
214942
+ if (rawExtensions.length > 0)
214943
+ preserved.rawExtensions = rawExtensions;
214944
+ display.includePageNumbers = deriveIncludePageNumbers(display.omitPageNumberLevels, source.outlineLevels);
214945
+ const tabLeader = deriveTabLeader(display.separator);
214946
+ if (tabLeader !== undefined)
214947
+ display.tabLeader = tabLeader;
214948
+ return {
214949
+ source,
214950
+ display,
214951
+ preserved
214952
+ };
214953
+ }
214954
+ function serializeTocInstruction(config2) {
214955
+ const parts = ["TOC"];
214956
+ const { source, display, preserved } = config2;
214957
+ if (source.outlineLevels)
214958
+ parts.push(`\\o "${source.outlineLevels.from}-${source.outlineLevels.to}"`);
214959
+ if (source.useAppliedOutlineLevel)
214960
+ parts.push("\\u");
214961
+ if (source.tcFieldIdentifier)
214962
+ parts.push(`\\f "${source.tcFieldIdentifier}"`);
214963
+ if (source.tcFieldLevels)
214964
+ parts.push(`\\l "${source.tcFieldLevels.from}-${source.tcFieldLevels.to}"`);
214965
+ if (preserved.customStyles?.length) {
214966
+ const pairs = preserved.customStyles.map((s2) => `${s2.styleName},${s2.level}`).join(",");
214967
+ parts.push(`\\t "${pairs}"`);
214968
+ }
214969
+ if (display.hyperlinks)
214970
+ parts.push("\\h");
214971
+ if (display.hideInWebView)
214972
+ parts.push("\\z");
214973
+ if (display.omitPageNumberLevels)
214974
+ parts.push(`\\n "${display.omitPageNumberLevels.from}-${display.omitPageNumberLevels.to}"`);
214975
+ if (display.separator !== undefined)
214976
+ parts.push(`\\p "${display.separator}"`);
214977
+ if (preserved.captionType)
214978
+ parts.push(`\\a "${preserved.captionType}"`);
214979
+ if (preserved.bookmarkName)
214980
+ parts.push(`\\b "${preserved.bookmarkName}"`);
214981
+ if (preserved.seqFieldIdentifier)
214982
+ parts.push(`\\c "${preserved.seqFieldIdentifier}"`);
214983
+ if (preserved.chapterSeparator)
214984
+ parts.push(`\\d "${preserved.chapterSeparator}"`);
214985
+ if (preserved.chapterNumberSource)
214986
+ parts.push(`\\s "${preserved.chapterNumberSource}"`);
214987
+ if (preserved.preserveTabEntries)
214988
+ parts.push("\\w");
214989
+ if (preserved.rawExtensions?.length)
214990
+ parts.push(...preserved.rawExtensions);
214991
+ return parts.join(" ");
214992
+ }
214993
+ function computeOmitPageNumberRange(source) {
214994
+ return source.outlineLevels ?? {
214995
+ from: 1,
214996
+ to: 9
214997
+ };
214998
+ }
214999
+ function applyTocPatch(existing, patch3) {
215000
+ if (patch3.tabLeader !== undefined && patch3.separator !== undefined)
215001
+ throw new Error("INVALID_INPUT: cannot set both tabLeader and separator in the same patch");
215002
+ if (patch3.includePageNumbers !== undefined && patch3.omitPageNumberLevels !== undefined)
215003
+ throw new Error("INVALID_INPUT: cannot set both includePageNumbers and omitPageNumberLevels in the same patch");
215004
+ const newSource = {
215005
+ ...existing.source,
215006
+ ...patch3.outlineLevels !== undefined && { outlineLevels: patch3.outlineLevels },
215007
+ ...patch3.useAppliedOutlineLevel !== undefined && { useAppliedOutlineLevel: patch3.useAppliedOutlineLevel },
215008
+ ...patch3.tcFieldIdentifier !== undefined && { tcFieldIdentifier: patch3.tcFieldIdentifier },
215009
+ ...patch3.tcFieldLevels !== undefined && { tcFieldLevels: patch3.tcFieldLevels }
215010
+ };
215011
+ const newDisplay = {
215012
+ ...existing.display,
215013
+ ...patch3.hyperlinks !== undefined && { hyperlinks: patch3.hyperlinks },
215014
+ ...patch3.hideInWebView !== undefined && { hideInWebView: patch3.hideInWebView }
215015
+ };
215016
+ if (patch3.includePageNumbers !== undefined) {
215017
+ if (patch3.includePageNumbers)
215018
+ delete newDisplay.omitPageNumberLevels;
215019
+ else
215020
+ newDisplay.omitPageNumberLevels = computeOmitPageNumberRange(newSource);
215021
+ newDisplay.includePageNumbers = patch3.includePageNumbers;
215022
+ } else if (patch3.omitPageNumberLevels !== undefined) {
215023
+ newDisplay.omitPageNumberLevels = patch3.omitPageNumberLevels;
215024
+ newDisplay.includePageNumbers = deriveIncludePageNumbers(patch3.omitPageNumberLevels, newSource.outlineLevels);
215025
+ }
215026
+ if (patch3.tabLeader !== undefined) {
215027
+ if (patch3.tabLeader === "none")
215028
+ newDisplay.separator = "";
215029
+ else
215030
+ newDisplay.separator = TAB_LEADER_TO_SEPARATOR[patch3.tabLeader];
215031
+ newDisplay.tabLeader = patch3.tabLeader;
215032
+ } else if (patch3.separator !== undefined) {
215033
+ newDisplay.separator = patch3.separator;
215034
+ const derived = deriveTabLeader(patch3.separator);
215035
+ if (derived !== undefined)
215036
+ newDisplay.tabLeader = derived;
215037
+ else
215038
+ delete newDisplay.tabLeader;
215039
+ }
215040
+ return {
215041
+ source: newSource,
215042
+ display: newDisplay,
215043
+ preserved: { ...existing.preserved }
215044
+ };
215045
+ }
215046
+ function areTocConfigsEqual(a2, b$1) {
215047
+ return serializeTocInstruction(a2) === serializeTocInstruction(b$1);
215048
+ }
215049
+ function findAllTocNodes(doc$12) {
215050
+ const results = [];
215051
+ doc$12.descendants((node3, pos) => {
215052
+ if (node3.type.name === "tableOfContents") {
215053
+ const sdBlockId = node3.attrs?.sdBlockId;
215054
+ const nodeId = resolvePublicTocNodeId(node3, pos);
215055
+ const commandNodeId = sdBlockId;
215056
+ results.push({
215057
+ node: node3,
215058
+ pos,
215059
+ nodeId,
215060
+ commandNodeId
215061
+ });
215062
+ return false;
215063
+ }
215064
+ return true;
215065
+ });
215066
+ return results;
215067
+ }
215068
+ function resolveTocTarget(doc$12, target) {
215069
+ const found2 = findAllTocNodes(doc$12).find((t) => t.nodeId === target.nodeId || t.commandNodeId === target.nodeId);
215070
+ if (!found2)
215071
+ throw new DocumentApiAdapterError("TARGET_NOT_FOUND", `Table of contents with nodeId "${target.nodeId}" not found.`);
215072
+ return found2;
215073
+ }
215074
+ function resolvePostMutationTocId(doc$12, sdBlockId) {
215075
+ return findAllTocNodes(doc$12).find((t) => t.commandNodeId === sdBlockId)?.nodeId ?? sdBlockId;
215076
+ }
215077
+ function extractTocInfo(node3) {
215078
+ const instruction = node3.attrs?.instruction ?? "";
215079
+ const config2 = parseTocInstruction(instruction);
215080
+ const rightAlign = node3.attrs?.rightAlignPageNumbers;
215081
+ return {
215082
+ nodeType: "tableOfContents",
215083
+ kind: "block",
215084
+ properties: {
215085
+ instruction,
215086
+ sourceConfig: config2.source,
215087
+ displayConfig: {
215088
+ ...config2.display,
215089
+ ...rightAlign !== undefined && { rightAlignPageNumbers: rightAlign }
215090
+ },
215091
+ preservedSwitches: config2.preserved,
215092
+ entryCount: node3.childCount
215093
+ }
215094
+ };
215095
+ }
215096
+ function buildTocDiscoveryItem(resolved, evaluatedRevision) {
215097
+ const instruction = resolved.node.attrs?.instruction ?? "";
215098
+ const config2 = parseTocInstruction(instruction);
215099
+ const address2 = {
215100
+ kind: "block",
215101
+ nodeType: "tableOfContents",
215102
+ nodeId: resolved.nodeId
215103
+ };
215104
+ const handle3 = buildResolvedHandle(resolved.nodeId, "stable", "tableOfContents");
215105
+ const rightAlign = resolved.node.attrs?.rightAlignPageNumbers;
215106
+ const domain2 = {
215107
+ address: address2,
215108
+ instruction,
215109
+ sourceConfig: config2.source,
215110
+ displayConfig: {
215111
+ ...config2.display,
215112
+ ...rightAlign !== undefined && { rightAlignPageNumbers: rightAlign }
215113
+ },
215114
+ preserved: config2.preserved,
215115
+ entryCount: resolved.node.childCount
215116
+ };
215117
+ return buildDiscoveryItem(`toc:${resolved.nodeId}:${evaluatedRevision}`, handle3, domain2);
215118
+ }
214693
215119
  function createCascadeToggleCommands({ markName, setCommand, unsetCommand, toggleCommand, negationAttrs, isNegation, extendEmptyMarkRange } = {}) {
214694
215120
  if (!markName)
214695
215121
  throw new Error("createCascadeToggleCommands requires a markName");
@@ -221277,6 +221703,40 @@ function buildSchemaSummary(schema, schemaVersion) {
221277
221703
  function getFirstElementChild(node3) {
221278
221704
  return Array.from(node3.childNodes).find((n) => n.nodeType === Node.ELEMENT_NODE) || null;
221279
221705
  }
221706
+ function wrapHeadingSelectionAsParagraph(slice2, state) {
221707
+ const firstChild = slice2.content.firstChild;
221708
+ if (!firstChild || firstChild.type.name === "paragraph")
221709
+ return slice2;
221710
+ const $from = state.selection.$from;
221711
+ const $to = state.selection.$to;
221712
+ if (!$from || !$to)
221713
+ return slice2;
221714
+ let parentParagraph = null;
221715
+ let parentDepth = -1;
221716
+ for (let depth = $from.depth;depth >= 0; depth--) {
221717
+ const node3 = $from.node(depth);
221718
+ if (node3?.type?.name === "paragraph") {
221719
+ if ($to.depth >= depth && $to.node(depth) === node3) {
221720
+ parentParagraph = node3;
221721
+ parentDepth = depth;
221722
+ }
221723
+ break;
221724
+ }
221725
+ }
221726
+ if (!parentParagraph)
221727
+ return slice2;
221728
+ const startOffset = $from.parentOffset;
221729
+ const endOffset = $to.parentOffset;
221730
+ if (startOffset !== 0 || endOffset !== parentParagraph.content.size)
221731
+ return slice2;
221732
+ if ($from.depth !== parentDepth || $to.depth !== parentDepth)
221733
+ return slice2;
221734
+ const styleId = parentParagraph.attrs?.paragraphProperties?.styleId;
221735
+ if (typeof styleId !== "string" || !HEADING_STYLE_RE.test(styleId))
221736
+ return slice2;
221737
+ const wrapped = parentParagraph.type.create(parentParagraph.attrs, slice2.content, parentParagraph.marks);
221738
+ return new Slice(Fragment.from(wrapped), 0, 0);
221739
+ }
221280
221740
  function closestCopyBlock(node3, root3) {
221281
221741
  let current = node3;
221282
221742
  while (current && current !== root3) {
@@ -221499,228 +221959,6 @@ function buildSelectionClipboardHtml(view, editor) {
221499
221959
  annotateCopiedSectionMetadata(container, view);
221500
221960
  return serializeSelectionAsWordHtml(container) || container.innerHTML || null;
221501
221961
  }
221502
- function parseLevelRange(value) {
221503
- const match$1 = value.match(/^(\d+)-(\d+)$/);
221504
- if (!match$1)
221505
- return;
221506
- return {
221507
- from: parseInt(match$1[1], 10),
221508
- to: parseInt(match$1[2], 10)
221509
- };
221510
- }
221511
- function parseCustomStyles(value) {
221512
- const entries2 = [];
221513
- const parts = value.split(",");
221514
- for (let i4 = 0;i4 < parts.length - 1; i4 += 2) {
221515
- const styleName = parts[i4].trim();
221516
- const level = parseInt(parts[i4 + 1].trim(), 10);
221517
- if (styleName && !isNaN(level))
221518
- entries2.push({
221519
- styleName,
221520
- level
221521
- });
221522
- }
221523
- return entries2;
221524
- }
221525
- function deriveIncludePageNumbers(omitRange, outlineLevels) {
221526
- if (!omitRange)
221527
- return true;
221528
- const effectiveRange = outlineLevels ?? {
221529
- from: 1,
221530
- to: 9
221531
- };
221532
- return !(omitRange.from <= effectiveRange.from && omitRange.to >= effectiveRange.to);
221533
- }
221534
- function deriveTabLeader(separator) {
221535
- if (!separator)
221536
- return "none";
221537
- return SEPARATOR_TO_TAB_LEADER[separator];
221538
- }
221539
- function parseTocInstruction(instruction) {
221540
- const source = {};
221541
- const display = {};
221542
- const preserved = {};
221543
- const rawExtensions = [];
221544
- let match$1;
221545
- SWITCH_PATTERN$1.lastIndex = 0;
221546
- while ((match$1 = SWITCH_PATTERN$1.exec(instruction)) !== null) {
221547
- const switchChar = match$1[1].toLowerCase();
221548
- const arg = match$1[2] ?? "";
221549
- switch (switchChar) {
221550
- case "o": {
221551
- const range = parseLevelRange(arg);
221552
- if (range)
221553
- source.outlineLevels = range;
221554
- break;
221555
- }
221556
- case "u":
221557
- source.useAppliedOutlineLevel = true;
221558
- break;
221559
- case "f":
221560
- if (arg)
221561
- source.tcFieldIdentifier = arg;
221562
- break;
221563
- case "l": {
221564
- const range = parseLevelRange(arg);
221565
- if (range)
221566
- source.tcFieldLevels = range;
221567
- break;
221568
- }
221569
- case "h":
221570
- display.hyperlinks = true;
221571
- break;
221572
- case "z":
221573
- display.hideInWebView = true;
221574
- break;
221575
- case "n": {
221576
- const range = parseLevelRange(arg);
221577
- if (range)
221578
- display.omitPageNumberLevels = range;
221579
- break;
221580
- }
221581
- case "p":
221582
- if (arg)
221583
- display.separator = arg;
221584
- break;
221585
- case "t":
221586
- if (arg)
221587
- preserved.customStyles = parseCustomStyles(arg);
221588
- break;
221589
- case "b":
221590
- if (arg)
221591
- preserved.bookmarkName = arg;
221592
- break;
221593
- case "a":
221594
- if (arg)
221595
- preserved.captionType = arg;
221596
- break;
221597
- case "c":
221598
- if (arg)
221599
- preserved.seqFieldIdentifier = arg;
221600
- break;
221601
- case "d":
221602
- if (arg)
221603
- preserved.chapterSeparator = arg;
221604
- break;
221605
- case "s":
221606
- if (arg)
221607
- preserved.chapterNumberSource = arg;
221608
- break;
221609
- case "w":
221610
- preserved.preserveTabEntries = true;
221611
- break;
221612
- default:
221613
- rawExtensions.push(arg ? `\\${switchChar} "${arg}"` : `\\${switchChar}`);
221614
- break;
221615
- }
221616
- }
221617
- if (rawExtensions.length > 0)
221618
- preserved.rawExtensions = rawExtensions;
221619
- display.includePageNumbers = deriveIncludePageNumbers(display.omitPageNumberLevels, source.outlineLevels);
221620
- const tabLeader = deriveTabLeader(display.separator);
221621
- if (tabLeader !== undefined)
221622
- display.tabLeader = tabLeader;
221623
- return {
221624
- source,
221625
- display,
221626
- preserved
221627
- };
221628
- }
221629
- function serializeTocInstruction(config2) {
221630
- const parts = ["TOC"];
221631
- const { source, display, preserved } = config2;
221632
- if (source.outlineLevels)
221633
- parts.push(`\\o "${source.outlineLevels.from}-${source.outlineLevels.to}"`);
221634
- if (source.useAppliedOutlineLevel)
221635
- parts.push("\\u");
221636
- if (source.tcFieldIdentifier)
221637
- parts.push(`\\f "${source.tcFieldIdentifier}"`);
221638
- if (source.tcFieldLevels)
221639
- parts.push(`\\l "${source.tcFieldLevels.from}-${source.tcFieldLevels.to}"`);
221640
- if (preserved.customStyles?.length) {
221641
- const pairs = preserved.customStyles.map((s2) => `${s2.styleName},${s2.level}`).join(",");
221642
- parts.push(`\\t "${pairs}"`);
221643
- }
221644
- if (display.hyperlinks)
221645
- parts.push("\\h");
221646
- if (display.hideInWebView)
221647
- parts.push("\\z");
221648
- if (display.omitPageNumberLevels)
221649
- parts.push(`\\n "${display.omitPageNumberLevels.from}-${display.omitPageNumberLevels.to}"`);
221650
- if (display.separator)
221651
- parts.push(`\\p "${display.separator}"`);
221652
- if (preserved.captionType)
221653
- parts.push(`\\a "${preserved.captionType}"`);
221654
- if (preserved.bookmarkName)
221655
- parts.push(`\\b "${preserved.bookmarkName}"`);
221656
- if (preserved.seqFieldIdentifier)
221657
- parts.push(`\\c "${preserved.seqFieldIdentifier}"`);
221658
- if (preserved.chapterSeparator)
221659
- parts.push(`\\d "${preserved.chapterSeparator}"`);
221660
- if (preserved.chapterNumberSource)
221661
- parts.push(`\\s "${preserved.chapterNumberSource}"`);
221662
- if (preserved.preserveTabEntries)
221663
- parts.push("\\w");
221664
- if (preserved.rawExtensions?.length)
221665
- parts.push(...preserved.rawExtensions);
221666
- return parts.join(" ");
221667
- }
221668
- function computeOmitPageNumberRange(source) {
221669
- return source.outlineLevels ?? {
221670
- from: 1,
221671
- to: 9
221672
- };
221673
- }
221674
- function applyTocPatch(existing, patch3) {
221675
- if (patch3.tabLeader !== undefined && patch3.separator !== undefined)
221676
- throw new Error("INVALID_INPUT: cannot set both tabLeader and separator in the same patch");
221677
- if (patch3.includePageNumbers !== undefined && patch3.omitPageNumberLevels !== undefined)
221678
- throw new Error("INVALID_INPUT: cannot set both includePageNumbers and omitPageNumberLevels in the same patch");
221679
- const newSource = {
221680
- ...existing.source,
221681
- ...patch3.outlineLevels !== undefined && { outlineLevels: patch3.outlineLevels },
221682
- ...patch3.useAppliedOutlineLevel !== undefined && { useAppliedOutlineLevel: patch3.useAppliedOutlineLevel },
221683
- ...patch3.tcFieldIdentifier !== undefined && { tcFieldIdentifier: patch3.tcFieldIdentifier },
221684
- ...patch3.tcFieldLevels !== undefined && { tcFieldLevels: patch3.tcFieldLevels }
221685
- };
221686
- const newDisplay = {
221687
- ...existing.display,
221688
- ...patch3.hyperlinks !== undefined && { hyperlinks: patch3.hyperlinks },
221689
- ...patch3.hideInWebView !== undefined && { hideInWebView: patch3.hideInWebView }
221690
- };
221691
- if (patch3.includePageNumbers !== undefined) {
221692
- if (patch3.includePageNumbers)
221693
- delete newDisplay.omitPageNumberLevels;
221694
- else
221695
- newDisplay.omitPageNumberLevels = computeOmitPageNumberRange(newSource);
221696
- newDisplay.includePageNumbers = patch3.includePageNumbers;
221697
- } else if (patch3.omitPageNumberLevels !== undefined) {
221698
- newDisplay.omitPageNumberLevels = patch3.omitPageNumberLevels;
221699
- newDisplay.includePageNumbers = deriveIncludePageNumbers(patch3.omitPageNumberLevels, newSource.outlineLevels);
221700
- }
221701
- if (patch3.tabLeader !== undefined) {
221702
- if (patch3.tabLeader === "none")
221703
- delete newDisplay.separator;
221704
- else
221705
- newDisplay.separator = TAB_LEADER_TO_SEPARATOR[patch3.tabLeader];
221706
- newDisplay.tabLeader = patch3.tabLeader;
221707
- } else if (patch3.separator !== undefined) {
221708
- newDisplay.separator = patch3.separator;
221709
- const derived = deriveTabLeader(patch3.separator);
221710
- if (derived !== undefined)
221711
- newDisplay.tabLeader = derived;
221712
- else
221713
- delete newDisplay.tabLeader;
221714
- }
221715
- return {
221716
- source: newSource,
221717
- display: newDisplay,
221718
- preserved: { ...existing.preserved }
221719
- };
221720
- }
221721
- function areTocConfigsEqual(a2, b$1) {
221722
- return serializeTocInstruction(a2) === serializeTocInstruction(b$1);
221723
- }
221724
221962
  function projectContentNode(pmNode) {
221725
221963
  return projectBlock(pmNode);
221726
221964
  }
@@ -223543,11 +223781,11 @@ function checkUniformity(runs2) {
223543
223781
  return true;
223544
223782
  const reference$1 = runs2[0].marks;
223545
223783
  for (let i4 = 1;i4 < runs2.length; i4++)
223546
- if (!marksEqual$1(reference$1, runs2[i4].marks))
223784
+ if (!marksEqual$2(reference$1, runs2[i4].marks))
223547
223785
  return false;
223548
223786
  return true;
223549
223787
  }
223550
- function marksEqual$1(a2, b$1) {
223788
+ function marksEqual$2(a2, b$1) {
223551
223789
  if (a2.length !== b$1.length)
223552
223790
  return false;
223553
223791
  for (let i4 = 0;i4 < a2.length; i4++)
@@ -223823,7 +224061,7 @@ function buildInlineRpr(marks) {
223823
224061
  }
223824
224062
  return rpr;
223825
224063
  }
223826
- function marksEqual(a2, b$1) {
224064
+ function marksEqual$1(a2, b$1) {
223827
224065
  if (a2.length !== b$1.length)
223828
224066
  return false;
223829
224067
  for (let i4 = 0;i4 < a2.length; i4++)
@@ -223846,7 +224084,7 @@ function coalesceRuns(runs2) {
223846
224084
  const next2 = sorted[i4];
223847
224085
  if (next2.from >= next2.to)
223848
224086
  continue;
223849
- if (next2.from === current.to && marksEqual(current.marks, next2.marks))
224087
+ if (next2.from === current.to && marksEqual$1(current.marks, next2.marks))
223850
224088
  current = {
223851
224089
  from: current.from,
223852
224090
  to: next2.to,
@@ -240971,76 +241209,6 @@ function wrapServiceCall(fn2) {
240971
241209
  throw error3;
240972
241210
  }
240973
241211
  }
240974
- function findAllTocNodes(doc$12) {
240975
- const results = [];
240976
- doc$12.descendants((node3, pos) => {
240977
- if (node3.type.name === "tableOfContents") {
240978
- const sdBlockId = node3.attrs?.sdBlockId;
240979
- const nodeId = resolvePublicTocNodeId(node3, pos);
240980
- const commandNodeId = sdBlockId;
240981
- results.push({
240982
- node: node3,
240983
- pos,
240984
- nodeId,
240985
- commandNodeId
240986
- });
240987
- return false;
240988
- }
240989
- return true;
240990
- });
240991
- return results;
240992
- }
240993
- function resolveTocTarget(doc$12, target) {
240994
- const found2 = findAllTocNodes(doc$12).find((t) => t.nodeId === target.nodeId || t.commandNodeId === target.nodeId);
240995
- if (!found2)
240996
- throw new DocumentApiAdapterError("TARGET_NOT_FOUND", `Table of contents with nodeId "${target.nodeId}" not found.`);
240997
- return found2;
240998
- }
240999
- function resolvePostMutationTocId(doc$12, sdBlockId) {
241000
- return findAllTocNodes(doc$12).find((t) => t.commandNodeId === sdBlockId)?.nodeId ?? sdBlockId;
241001
- }
241002
- function extractTocInfo(node3) {
241003
- const instruction = node3.attrs?.instruction ?? "";
241004
- const config2 = parseTocInstruction(instruction);
241005
- const rightAlign = node3.attrs?.rightAlignPageNumbers;
241006
- return {
241007
- nodeType: "tableOfContents",
241008
- kind: "block",
241009
- properties: {
241010
- instruction,
241011
- sourceConfig: config2.source,
241012
- displayConfig: {
241013
- ...config2.display,
241014
- ...rightAlign !== undefined && { rightAlignPageNumbers: rightAlign }
241015
- },
241016
- preservedSwitches: config2.preserved,
241017
- entryCount: node3.childCount
241018
- }
241019
- };
241020
- }
241021
- function buildTocDiscoveryItem(resolved, evaluatedRevision) {
241022
- const instruction = resolved.node.attrs?.instruction ?? "";
241023
- const config2 = parseTocInstruction(instruction);
241024
- const address2 = {
241025
- kind: "block",
241026
- nodeType: "tableOfContents",
241027
- nodeId: resolved.nodeId
241028
- };
241029
- const handle3 = buildResolvedHandle(resolved.nodeId, "stable", "tableOfContents");
241030
- const rightAlign = resolved.node.attrs?.rightAlignPageNumbers;
241031
- const domain2 = {
241032
- address: address2,
241033
- instruction,
241034
- sourceConfig: config2.source,
241035
- displayConfig: {
241036
- ...config2.display,
241037
- ...rightAlign !== undefined && { rightAlignPageNumbers: rightAlign }
241038
- },
241039
- preserved: config2.preserved,
241040
- entryCount: resolved.node.childCount
241041
- };
241042
- return buildDiscoveryItem(`toc:${resolved.nodeId}:${evaluatedRevision}`, handle3, domain2);
241043
- }
241044
241212
  function extractEntryText(instruction) {
241045
241213
  const withoutPrefix = instruction.replace(/^TC\s+/i, "");
241046
241214
  const quoteMatch = withoutPrefix.match(/^"([^"]*)"/);
@@ -241249,28 +241417,53 @@ function dispatchTransaction$2(editor, tr) {
241249
241417
  else if (typeof editor.view?.dispatch === "function")
241250
241418
  editor.view.dispatch(tr);
241251
241419
  }
241420
+ function sanitizeSourceMark(mark2) {
241421
+ if (!mark2?.type)
241422
+ return null;
241423
+ if (mark2.type === "textStyle") {
241424
+ const attrs = mark2.attrs ?? {};
241425
+ const kept = {};
241426
+ for (const key2 of Object.keys(attrs))
241427
+ if (TEXT_STYLE_ALLOWED_ATTRS.has(key2) && attrs[key2] != null)
241428
+ kept[key2] = attrs[key2];
241429
+ return Object.keys(kept).length > 0 ? {
241430
+ type: "textStyle",
241431
+ attrs: kept
241432
+ } : null;
241433
+ }
241434
+ if (!ALLOWED_SOURCE_MARK_TYPES.has(mark2.type))
241435
+ return null;
241436
+ return mark2.attrs && Object.keys(mark2.attrs).length > 0 ? {
241437
+ type: mark2.type,
241438
+ attrs: { ...mark2.attrs }
241439
+ } : { type: mark2.type };
241440
+ }
241252
241441
  function collectTocSources(doc$12, config2) {
241253
241442
  const sources = [];
241254
241443
  const { outlineLevels, useAppliedOutlineLevel, tcFieldIdentifier, tcFieldLevels } = config2.source;
241255
241444
  const useApplied = useAppliedOutlineLevel ?? false;
241256
241445
  const collectTcFields = tcFieldIdentifier !== undefined || tcFieldLevels !== undefined;
241257
241446
  let currentParagraphSdBlockId;
241258
- doc$12.descendants((node3, _pos) => {
241447
+ doc$12.descendants((node3, pos) => {
241259
241448
  if (node3.type.name === "tableOfContents")
241260
241449
  return false;
241261
241450
  if (node3.type.name === "paragraph") {
241262
241451
  const attrs = node3.attrs;
241263
241452
  const paragraphProps = attrs?.paragraphProperties;
241264
241453
  const styleId = paragraphProps?.styleId;
241265
- const sdBlockId = attrs?.sdBlockId ?? attrs?.paraId;
241454
+ const sdBlockId = attrs?.sdBlockId ?? attrs?.paraId ?? buildFallbackBlockNodeId("paragraph", pos);
241266
241455
  currentParagraphSdBlockId = sdBlockId;
241267
241456
  if (!sdBlockId)
241268
241457
  return true;
241458
+ const text5 = flattenText(node3);
241459
+ if (text5.trim().length === 0)
241460
+ return true;
241269
241461
  if (outlineLevels) {
241270
241462
  const headingLevel = getHeadingLevel(styleId);
241271
241463
  if (headingLevel != null && headingLevel >= outlineLevels.from && headingLevel <= outlineLevels.to) {
241272
241464
  sources.push({
241273
- text: flattenText(node3),
241465
+ text: text5,
241466
+ segments: extractTextSegments(node3),
241274
241467
  level: headingLevel,
241275
241468
  sdBlockId,
241276
241469
  kind: "heading"
@@ -241288,7 +241481,8 @@ function collectTocSources(doc$12, config2) {
241288
241481
  const tocLevel = rawOutlineLevel + 1;
241289
241482
  if (tocLevel >= effectiveLevels.from && tocLevel <= effectiveLevels.to) {
241290
241483
  sources.push({
241291
- text: flattenText(node3),
241484
+ text: text5,
241485
+ segments: extractTextSegments(node3),
241292
241486
  level: tocLevel,
241293
241487
  sdBlockId,
241294
241488
  kind: "appliedOutline"
@@ -241329,50 +241523,91 @@ function flattenText(node3) {
241329
241523
  });
241330
241524
  return text5;
241331
241525
  }
241332
- function buildTocEntryParagraphs(sources, config2) {
241333
- return sources.map((source) => buildEntryParagraph(source, config2));
241526
+ function extractTextSegments(node3) {
241527
+ const segments = [];
241528
+ node3.descendants((child) => {
241529
+ if (!child.isText || !child.text)
241530
+ return true;
241531
+ const marks = [];
241532
+ for (const mark2 of child.marks ?? []) {
241533
+ const raw = { type: mark2.type?.name ?? "" };
241534
+ if (mark2.attrs && Object.keys(mark2.attrs).length > 0)
241535
+ raw.attrs = { ...mark2.attrs };
241536
+ const sanitized = sanitizeSourceMark(raw);
241537
+ if (sanitized)
241538
+ marks.push(sanitized);
241539
+ }
241540
+ const last2 = segments[segments.length - 1];
241541
+ if (last2 && marksEqual(last2.marks, marks))
241542
+ last2.text += child.text;
241543
+ else
241544
+ segments.push(marks.length > 0 ? {
241545
+ text: child.text,
241546
+ marks
241547
+ } : { text: child.text });
241548
+ return true;
241549
+ });
241550
+ return segments;
241334
241551
  }
241335
- function buildEntryParagraph(source, config2) {
241336
- const { display } = config2;
241337
- const content3 = [];
241338
- const textNode = {
241339
- type: "text",
241340
- text: source.text || " "
241552
+ function marksEqual(a2, b$1) {
241553
+ const aLen = a2?.length ?? 0;
241554
+ if (aLen !== (b$1?.length ?? 0))
241555
+ return false;
241556
+ if (aLen === 0)
241557
+ return true;
241558
+ return JSON.stringify(a2) === JSON.stringify(b$1);
241559
+ }
241560
+ function buildTocEntryParagraphs(sources, config2, options = {}) {
241561
+ return sources.map((source) => buildEntryParagraph(source, config2, options));
241562
+ }
241563
+ function asRun(children) {
241564
+ return {
241565
+ type: "run",
241566
+ content: children
241341
241567
  };
241342
- if (display.hyperlinks)
241343
- textNode.marks = [{
241344
- type: "link",
241345
- attrs: {
241346
- anchor: generateTocBookmarkName(source.sdBlockId),
241347
- rId: null,
241348
- history: true
241349
- }
241350
- }];
241351
- content3.push(textNode);
241568
+ }
241569
+ function buildEntryParagraph(source, config2, options = {}) {
241570
+ const { display } = config2;
241571
+ const linkMark = display.hyperlinks ? {
241572
+ type: "link",
241573
+ attrs: {
241574
+ anchor: generateTocBookmarkName(source.sdBlockId),
241575
+ rId: null,
241576
+ history: true
241577
+ }
241578
+ } : undefined;
241579
+ const content3 = [asRun((source.segments && source.segments.length > 0 ? source.segments : [{ text: source.text || " " }]).map((segment) => {
241580
+ const marks = [...(segment.marks ?? []).map((m$1) => sanitizeSourceMark(m$1)).filter((m$1) => m$1 !== null)];
241581
+ if (linkMark)
241582
+ marks.push(linkMark);
241583
+ const node3 = {
241584
+ type: "text",
241585
+ text: segment.text || " "
241586
+ };
241587
+ if (marks.length > 0)
241588
+ node3.marks = marks;
241589
+ return node3;
241590
+ }))];
241352
241591
  const omitRange = display.omitPageNumberLevels;
241353
- const levelOmitted = omitRange && source.level >= omitRange.from && source.level <= omitRange.to;
241354
- const entryOmitted = source.omitPageNumber;
241355
- const omitPageNumber = levelOmitted || entryOmitted;
241592
+ const omitPageNumber = Boolean(omitRange && source.level >= omitRange.from && source.level <= omitRange.to || source.omitPageNumber);
241356
241593
  if (!omitPageNumber) {
241357
- if (display.separator)
241358
- content3.push({
241359
- type: "text",
241360
- text: display.separator
241361
- });
241362
- else
241363
- content3.push({ type: "tab" });
241364
- content3.push({
241594
+ content3.push(asRun([display.separator ? {
241365
241595
  type: "text",
241366
- text: "0",
241596
+ text: display.separator
241597
+ } : { type: "tab" }]));
241598
+ const resolvedPage = options.pageMap?.get(source.sdBlockId);
241599
+ content3.push(asRun([{
241600
+ type: "text",
241601
+ text: resolvedPage != null ? String(resolvedPage) : "0",
241367
241602
  marks: [{ type: "tocPageNumber" }]
241368
- });
241603
+ }]));
241369
241604
  }
241370
241605
  const paragraphProperties = { styleId: `TOC${source.level}` };
241371
241606
  if (display.rightAlignPageNumbers !== false && !omitPageNumber) {
241372
- const leader = display.tabLeader && display.tabLeader !== "none" ? TAB_LEADER_MAP[display.tabLeader] ?? undefined : undefined;
241607
+ const leader = display.tabLeader === "none" ? undefined : display.tabLeader && TAB_LEADER_MAP[display.tabLeader] || "dot";
241373
241608
  paragraphProperties.tabStops = [{ tab: {
241374
241609
  tabType: "right",
241375
- pos: DEFAULT_RIGHT_TAB_POS,
241610
+ pos: options.tabPos ?? DEFAULT_RIGHT_TAB_POS,
241376
241611
  ...leader ? { leader } : {}
241377
241612
  } }];
241378
241613
  }
@@ -241507,6 +241742,50 @@ function withRightAlign(config2, rightAlignPageNumbers) {
241507
241742
  }
241508
241743
  };
241509
241744
  }
241745
+ function stripTocPageNumberFromNode(node3) {
241746
+ if (!node3 || typeof node3 !== "object")
241747
+ return {
241748
+ node: node3,
241749
+ changed: false
241750
+ };
241751
+ const typedNode = node3;
241752
+ let changed = false;
241753
+ let next2 = typedNode;
241754
+ if (Array.isArray(typedNode.marks)) {
241755
+ const filtered = typedNode.marks.filter((mark2) => mark2?.type !== "tocPageNumber");
241756
+ if (filtered.length !== typedNode.marks.length) {
241757
+ changed = true;
241758
+ if (filtered.length === 0) {
241759
+ const { marks: _removed, ...rest } = next2;
241760
+ next2 = rest;
241761
+ } else
241762
+ next2 = {
241763
+ ...next2,
241764
+ marks: filtered
241765
+ };
241766
+ }
241767
+ }
241768
+ if (Array.isArray(typedNode.content)) {
241769
+ let childChanged = false;
241770
+ const nextChildren = typedNode.content.map((child) => {
241771
+ const result = stripTocPageNumberFromNode(child);
241772
+ if (result.changed)
241773
+ childChanged = true;
241774
+ return result.node;
241775
+ });
241776
+ if (childChanged) {
241777
+ changed = true;
241778
+ next2 = {
241779
+ ...next2,
241780
+ content: nextChildren
241781
+ };
241782
+ }
241783
+ }
241784
+ return {
241785
+ node: next2,
241786
+ changed
241787
+ };
241788
+ }
241510
241789
  function sanitizeTocContentForSchema(content3, editor) {
241511
241790
  if (editor.state.schema?.marks?.tocPageNumber)
241512
241791
  return content3;
@@ -241516,24 +241795,10 @@ function sanitizeTocContentForSchema(content3, editor) {
241516
241795
  return paragraph2;
241517
241796
  let changed = false;
241518
241797
  const sanitizedContent = paragraphContent.map((node3) => {
241519
- if (!node3 || typeof node3 !== "object")
241520
- return node3;
241521
- const typedNode = node3;
241522
- const marks = typedNode.marks;
241523
- if (!Array.isArray(marks))
241524
- return node3;
241525
- const filteredMarks = marks.filter((mark2) => mark2?.type !== "tocPageNumber");
241526
- if (filteredMarks.length === marks.length)
241527
- return node3;
241528
- changed = true;
241529
- if (filteredMarks.length === 0) {
241530
- const { marks: _removed, ...rest } = typedNode;
241531
- return rest;
241532
- }
241533
- return {
241534
- ...typedNode,
241535
- marks: filteredMarks
241536
- };
241798
+ const result = stripTocPageNumberFromNode(node3);
241799
+ if (result.changed)
241800
+ changed = true;
241801
+ return result.node;
241537
241802
  });
241538
241803
  return changed ? {
241539
241804
  ...paragraph2,
@@ -241541,14 +241806,50 @@ function sanitizeTocContentForSchema(content3, editor) {
241541
241806
  } : paragraph2;
241542
241807
  });
241543
241808
  }
241544
- function materializeTocContent(doc$12, config2, editor) {
241809
+ function materializeTocContent(doc$12, config2, editor, options = {}) {
241545
241810
  const sources = collectTocSources(doc$12, config2);
241546
- const entryParagraphs = buildTocEntryParagraphs(sources, config2);
241811
+ const entryParagraphs = buildTocEntryParagraphs(sources, config2, options);
241547
241812
  return {
241548
241813
  content: sanitizeTocContentForSchema(entryParagraphs.length > 0 ? entryParagraphs : NO_ENTRIES_PLACEHOLDER, editor),
241549
241814
  sources
241550
241815
  };
241551
241816
  }
241817
+ function findFirstTocEntryParagraph(node3) {
241818
+ let entry;
241819
+ node3.forEach((paragraph2) => {
241820
+ if (entry || paragraph2.type.name !== "paragraph")
241821
+ return;
241822
+ const styleId = paragraph2.attrs?.paragraphProperties?.styleId;
241823
+ if (styleId && TOC_ENTRY_STYLE_RE.test(styleId))
241824
+ entry = paragraph2;
241825
+ });
241826
+ return entry;
241827
+ }
241828
+ function readExistingTocTabPos(node3) {
241829
+ const pos = (findFirstTocEntryParagraph(node3) ?? node3.firstChild ?? undefined)?.attrs?.paragraphProperties?.tabStops?.find((t) => t?.tab?.tabType === "right")?.tab?.pos;
241830
+ return typeof pos === "number" ? pos : undefined;
241831
+ }
241832
+ function readExistingTocTrailingParagraph(node3) {
241833
+ const last2 = node3.lastChild;
241834
+ if (!last2 || last2.type.name !== "paragraph")
241835
+ return;
241836
+ const styleId = last2.attrs?.paragraphProperties?.styleId;
241837
+ if (styleId && TOC_ENTRY_STYLE_RE.test(styleId))
241838
+ return;
241839
+ let hasPrecedingEntry = false;
241840
+ node3.forEach((child) => {
241841
+ if (hasPrecedingEntry || child === last2)
241842
+ return;
241843
+ if (child.type.name !== "paragraph")
241844
+ return;
241845
+ const childStyleId = child.attrs?.paragraphProperties?.styleId;
241846
+ if (childStyleId && TOC_ENTRY_STYLE_RE.test(childStyleId))
241847
+ hasPrecedingEntry = true;
241848
+ });
241849
+ if (!hasPrecedingEntry)
241850
+ return;
241851
+ return typeof last2.toJSON === "function" ? last2.toJSON() : undefined;
241852
+ }
241552
241853
  function tocConfigureWrapper(editor, input2, options) {
241553
241854
  rejectTrackedMode("toc.configure", options);
241554
241855
  const resolved = resolveTocTarget(editor.state.doc, input2.target);
@@ -241557,7 +241858,12 @@ function tocConfigureWrapper(editor, input2, options) {
241557
241858
  const instruction = serializeTocInstruction(patched);
241558
241859
  const rightAlignChanged = input2.patch.rightAlignPageNumbers !== undefined && input2.patch.rightAlignPageNumbers !== resolved.node.attrs?.rightAlignPageNumbers;
241559
241860
  const effectiveRightAlign = input2.patch.rightAlignPageNumbers ?? resolved.node.attrs?.rightAlignPageNumbers;
241560
- const { content: nextContent, sources } = materializeTocContent(editor.state.doc, withRightAlign(patched, effectiveRightAlign), editor);
241861
+ const { content: rebuiltEntries, sources } = materializeTocContent(editor.state.doc, withRightAlign(patched, effectiveRightAlign), editor, {
241862
+ pageMap: getPageMap(editor) ?? undefined,
241863
+ tabPos: readExistingTocTabPos(resolved.node)
241864
+ });
241865
+ const trailing = readExistingTocTrailingParagraph(resolved.node);
241866
+ const nextContent = trailing ? [...rebuiltEntries, trailing] : rebuiltEntries;
241561
241867
  if (areTocConfigsEqual(currentConfig, patched) && !rightAlignChanged)
241562
241868
  return tocFailure("NO_OP", "Configuration patch produced no change.");
241563
241869
  if (options?.dryRun)
@@ -241603,7 +241909,12 @@ function tocUpdateAll(editor, input2, options) {
241603
241909
  const resolved = resolveTocTarget(editor.state.doc, input2.target);
241604
241910
  const config2 = parseTocInstruction(resolved.node.attrs?.instruction ?? "");
241605
241911
  const rightAlign = resolved.node.attrs?.rightAlignPageNumbers;
241606
- const { content: content3, sources } = materializeTocContent(editor.state.doc, withRightAlign(config2, rightAlign), editor);
241912
+ const { content: rebuiltEntries, sources } = materializeTocContent(editor.state.doc, withRightAlign(config2, rightAlign), editor, {
241913
+ pageMap: getPageMap(editor) ?? undefined,
241914
+ tabPos: readExistingTocTabPos(resolved.node)
241915
+ });
241916
+ const trailing = readExistingTocTrailingParagraph(resolved.node);
241917
+ const content3 = trailing ? [...rebuiltEntries, trailing] : rebuiltEntries;
241607
241918
  if (isTocContentUnchanged(resolved.node, content3))
241608
241919
  return tocFailure("NO_OP", "TOC update produced no change.");
241609
241920
  if (options?.dryRun)
@@ -241682,25 +241993,33 @@ function buildPageNumberUpdatedContent(tocNode, pageMap) {
241682
241993
  }
241683
241994
  const tocSourceId = child.attrs?.tocSourceId;
241684
241995
  const childJson = child.toJSON();
241685
- const content3 = childJson.content ?? [];
241686
241996
  let paragraphChanged = false;
241687
- const updatedContentArray = content3.map((node3) => {
241688
- if (!node3.marks?.some((m$1) => m$1.type === "tocPageNumber"))
241689
- return node3;
241690
- hasPageNumberMarks = true;
241691
- if (!tocSourceId)
241997
+ const visit2 = (node3) => {
241998
+ if (node3.marks?.some((m$1) => m$1.type === "tocPageNumber")) {
241999
+ hasPageNumberMarks = true;
242000
+ if (!tocSourceId)
242001
+ return node3;
242002
+ const pageNumber = pageMap.get(tocSourceId);
242003
+ const newText = pageNumber !== undefined ? String(pageNumber) : "??";
242004
+ if (node3.text !== newText) {
242005
+ paragraphChanged = true;
242006
+ return {
242007
+ ...node3,
242008
+ text: newText
242009
+ };
242010
+ }
241692
242011
  return node3;
241693
- const pageNumber = pageMap.get(tocSourceId);
241694
- const newText = pageNumber !== undefined ? String(pageNumber) : "??";
241695
- if (node3.text !== newText) {
241696
- paragraphChanged = true;
241697
- return {
241698
- ...node3,
241699
- text: newText
241700
- };
241701
242012
  }
241702
- return node3;
241703
- });
242013
+ const nested = node3.content;
242014
+ if (!Array.isArray(nested) || nested.length === 0)
242015
+ return node3;
242016
+ const visited = nested.map(visit2);
242017
+ return visited.some((next2, idx) => next2 !== nested[idx]) ? {
242018
+ ...node3,
242019
+ content: visited
242020
+ } : node3;
242021
+ };
242022
+ const updatedContentArray = (childJson.content ?? []).map(visit2);
241704
242023
  if (paragraphChanged) {
241705
242024
  anyChanged = true;
241706
242025
  updatedContent.push({
@@ -262703,6 +263022,36 @@ function hydrateImageBlocks(blocks2, mediaFiles) {
262703
263022
  }
262704
263023
  if (blk.kind === "drawing") {
262705
263024
  const drawingBlock = blk;
263025
+ if (drawingBlock.drawingKind === "vectorShape") {
263026
+ const parts = drawingBlock.textContent?.parts;
263027
+ if (!parts || parts.length === 0)
263028
+ return blk;
263029
+ let partsChanged = false;
263030
+ const hydratedParts = parts.map((part) => {
263031
+ if (part?.kind !== "image" || !part.src || part.src.startsWith("data:"))
263032
+ return part;
263033
+ const resolvedSrc = resolveImageSrc(part.src, part.rId, undefined, part.extension);
263034
+ if (resolvedSrc) {
263035
+ partsChanged = true;
263036
+ return {
263037
+ ...part,
263038
+ src: resolvedSrc
263039
+ };
263040
+ }
263041
+ return part;
263042
+ });
263043
+ if (partsChanged) {
263044
+ const vectorShapeBlock = drawingBlock;
263045
+ return {
263046
+ ...vectorShapeBlock,
263047
+ textContent: {
263048
+ ...vectorShapeBlock.textContent,
263049
+ parts: hydratedParts
263050
+ }
263051
+ };
263052
+ }
263053
+ return blk;
263054
+ }
262706
263055
  if (drawingBlock.drawingKind !== "shapeGroup")
262707
263056
  return blk;
262708
263057
  const shapeGroupBlock = drawingBlock;
@@ -275549,7 +275898,7 @@ var Node$13 = class Node$14 {
275549
275898
  };
275550
275899
  tr.setNodeMarkup(paraPos, undefined, nextAttrs, paragraph2.marks);
275551
275900
  return true;
275552
- }, defaultIncrementPoints = 36, increaseTextIndent = () => modifyIndentation((node3) => calculateNewIndentation(node3, 1)), decreaseTextIndent = () => modifyIndentation((node3) => calculateNewIndentation(node3, -1)), setTextIndentation = (points) => modifyIndentation(() => ptToTwips(points)), unsetTextIndentation = () => modifyIndentation(() => null), setLineHeight = (lineHeight) => ({ commands: commands$1 }) => {
275901
+ }, defaultIncrementPoints = 36, increaseTextIndent = () => modifyIndentation((node3, resolvedProps) => calculateNewIndentation(node3, 1, resolvedProps), { resolveProps: true }), decreaseTextIndent = () => modifyIndentation((node3, resolvedProps) => calculateNewIndentation(node3, -1, resolvedProps), { resolveProps: true }), setTextIndentation = (points) => modifyIndentation(() => ptToTwips(points)), unsetTextIndentation = () => modifyIndentation(() => null), setLineHeight = (lineHeight) => ({ commands: commands$1 }) => {
275553
275902
  if (!lineHeight)
275554
275903
  return false;
275555
275904
  return commands$1.updateAttributes("paragraph", {
@@ -280069,7 +280418,7 @@ var Node$13 = class Node$14 {
280069
280418
  }), hiddenRender = (type) => ["sd-passthrough", {
280070
280419
  "data-sd-passthrough": type,
280071
280420
  style: "display: none;"
280072
- }], PassthroughBlock, PassthroughInline, IndexEntry, TableOfContentsEntry, CrossReference, SequenceField, DocumentStatField, FIELD_NODE_TYPES, SYNTHETIC_FIELD_NODE_TYPES, UPDATABLE_FIELD_TYPES, FieldUpdate, Citation, Bibliography, AuthorityEntry, TableOfAuthorities, hasExplicitPosition = (position4) => {
280421
+ }], PassthroughBlock, PassthroughInline, IndexEntry, TableOfContentsEntry, CrossReference, SequenceField, DocumentStatField, FIELD_NODE_TYPES, SYNTHETIC_FIELD_NODE_TYPES, TAB_LEADER_TO_SEPARATOR, SEPARATOR_TO_TAB_LEADER, DEFAULT_TOC_CONFIG, SWITCH_PATTERN$1, UPDATABLE_FIELD_TYPES, FieldUpdate, Citation, Bibliography, AuthorityEntry, TableOfAuthorities, hasExplicitPosition = (position4) => {
280073
280422
  if (typeof position4 !== "string")
280074
280423
  return false;
280075
280424
  return normalizeBaselineShift(parseFloat(position4)) != null;
@@ -284872,7 +285221,7 @@ var Node$13 = class Node$14 {
284872
285221
  domAvailabilityCache = false;
284873
285222
  return false;
284874
285223
  }
284875
- }, summaryVersion = "1.31.0", nodeKeys, markKeys, transformListsInCopiedContent = (html3) => {
285224
+ }, summaryVersion = "1.32.0", nodeKeys, markKeys, transformListsInCopiedContent = (html3) => {
284876
285225
  const container = document.createElement("div");
284877
285226
  container.innerHTML = html3;
284878
285227
  const result = [];
@@ -284945,7 +285294,7 @@ var Node$13 = class Node$14 {
284945
285294
  }, getLevel = (node3) => {
284946
285295
  const lvl = node3.getAttribute("data-level");
284947
285296
  return lvl ? parseInt(lvl, 10) : 0;
284948
- }, DEFAULT_FALLBACK_MARGIN_INCHES = 1, MIN_MOBILE_SIDE_MARGIN_PX = 10, RESIZE_DEBOUNCE_MS = 150, DEFAULT_LINE_HEIGHT = 1.2, HEADER_FOOTER_LINE_HEIGHT = 1, RUNTIME_COPY_STRIP_SELECTOR, PARAGRAPH_CONTENT_SELECTOR = "span.sd-paragraph-content", BLOCK_COPY_CONTEXT_SELECTOR = "p, div, h1, h2, h3, h4, h5, h6, blockquote, table", WORD_HTML_META = '<meta name="Generator" content="Microsoft Word">', WORD_NUM_FMT_BY_LIST_FMT, ProseMirrorRenderer = class {
285297
+ }, HEADING_STYLE_RE, DEFAULT_FALLBACK_MARGIN_INCHES = 1, MIN_MOBILE_SIDE_MARGIN_PX = 10, RESIZE_DEBOUNCE_MS = 150, DEFAULT_LINE_HEIGHT = 1.2, HEADER_FOOTER_LINE_HEIGHT = 1, RUNTIME_COPY_STRIP_SELECTOR, PARAGRAPH_CONTENT_SELECTOR = "span.sd-paragraph-content", BLOCK_COPY_CONTEXT_SELECTOR = "p, div, h1, h2, h3, h4, h5, h6, blockquote, table", WORD_HTML_META = '<meta name="Generator" content="Microsoft Word">', WORD_NUM_FMT_BY_LIST_FMT, ProseMirrorRenderer = class {
284949
285298
  constructor() {
284950
285299
  this.view = null;
284951
285300
  this.eventListenerCleanups = [];
@@ -285152,7 +285501,7 @@ var Node$13 = class Node$14 {
285152
285501
  let sliceJson = "";
285153
285502
  let mediaJson = "";
285154
285503
  if (from$1 !== to) {
285155
- const slice2 = this.view.state.doc.slice(from$1, to);
285504
+ const slice2 = wrapHeadingSelectionAsParagraph(this.view.state.doc.slice(from$1, to), this.view.state);
285156
285505
  sliceJson = JSON.stringify(slice2.toJSON());
285157
285506
  clipboardData.setData("application/x-superdoc-slice", sliceJson);
285158
285507
  mediaJson = collectReferencedImageMediaForClipboard(sliceJson, editor);
@@ -285198,7 +285547,7 @@ var Node$13 = class Node$14 {
285198
285547
  console.warn("Failed to initialize developer tools:", error3);
285199
285548
  }
285200
285549
  }
285201
- }, BLANK_DOCX_BASE64 = `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`, BLANK_DOCX_DATA_URI, TAB_LEADER_TO_SEPARATOR, SEPARATOR_TO_TAB_LEADER, DEFAULT_TOC_CONFIG, SWITCH_PATTERN$1, BULLET_FORMATS$1, LOCK_MODE_TO_SDT_LOCK, SNIPPET_PADDING = 30, DUAL_KIND_TYPES, KNOWN_BLOCK_PM_NODE_TYPES, KNOWN_INLINE_PM_NODE_TYPES, MAX_PATTERN_LENGTH = 1024, TOGGLE_MARK_SPECS, CORE_MARK_NAMES, METADATA_MARK_NAMES, CSS_NAMED_COLORS, V3_PREFIX = "text:", V4_PREFIX = "text:v4:", HEADING_STYLE_DEPTH, BULLET_FORMATS, MARK_PRIORITY, remarkProcessor, DEFAULT_UNFLATTEN_LISTS = true, HEADING_STYLE_PATTERN, registry, VALID_CREATE_POSITIONS, REF_HANDLERS, STEP_INTERACTION_MATRIX, MATRIX_EXEMPT_OPS, PARAGRAPH_NODE_TYPES, TEXT_STYLE_CHARACTER_STYLE_ATTR = "styleId", DIRECT_FORMATTING_MARK_NAMES, ALIGNMENT_TO_JUSTIFICATION, DEFAULT_INLINE_POLICY, CORE_SET_MARK_KEYS, DEBUG_TEXT_REWRITE, BOOLEAN_INLINE_MARK_KEYS, TEXT_STYLE_KEYS, PRESERVE_RUN_PROPERTIES_META_KEY = "sdPreserveRunPropertiesKeys", CONTENT_CAPABILITIES, INLINE_CAPABILITIES, SDT_LOCK_TO_LOCK_MODE, BODY_LOCATOR2, STUB_WHERE, EMPTY_RESOLUTION, CONTAINER_NODE_TYPES, VALID_EDGE_NODE_TYPES3, FALLBACK_STORE_KEY = "__documentApiComments", TRACKED_CHANGE_ANCHOR_KEY_PREFIX = "tc::", COMMENT_ANCHOR_KEY_PREFIX = "comment::", indexByHost, TrackedChangeIndexImpl = class {
285550
+ }, BLANK_DOCX_BASE64 = `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`, BLANK_DOCX_DATA_URI, BULLET_FORMATS$1, LOCK_MODE_TO_SDT_LOCK, SNIPPET_PADDING = 30, DUAL_KIND_TYPES, KNOWN_BLOCK_PM_NODE_TYPES, KNOWN_INLINE_PM_NODE_TYPES, MAX_PATTERN_LENGTH = 1024, TOGGLE_MARK_SPECS, CORE_MARK_NAMES, METADATA_MARK_NAMES, CSS_NAMED_COLORS, V3_PREFIX = "text:", V4_PREFIX = "text:v4:", HEADING_STYLE_DEPTH, BULLET_FORMATS, MARK_PRIORITY, remarkProcessor, DEFAULT_UNFLATTEN_LISTS = true, HEADING_STYLE_PATTERN, registry, VALID_CREATE_POSITIONS, REF_HANDLERS, STEP_INTERACTION_MATRIX, MATRIX_EXEMPT_OPS, PARAGRAPH_NODE_TYPES, TEXT_STYLE_CHARACTER_STYLE_ATTR = "styleId", DIRECT_FORMATTING_MARK_NAMES, ALIGNMENT_TO_JUSTIFICATION, DEFAULT_INLINE_POLICY, CORE_SET_MARK_KEYS, DEBUG_TEXT_REWRITE, BOOLEAN_INLINE_MARK_KEYS, TEXT_STYLE_KEYS, PRESERVE_RUN_PROPERTIES_META_KEY = "sdPreserveRunPropertiesKeys", CONTENT_CAPABILITIES, INLINE_CAPABILITIES, SDT_LOCK_TO_LOCK_MODE, BODY_LOCATOR2, STUB_WHERE, EMPTY_RESOLUTION, CONTAINER_NODE_TYPES, VALID_EDGE_NODE_TYPES3, FALLBACK_STORE_KEY = "__documentApiComments", TRACKED_CHANGE_ANCHOR_KEY_PREFIX = "tc::", COMMENT_ANCHOR_KEY_PREFIX = "comment::", indexByHost, TrackedChangeIndexImpl = class {
285202
285551
  #hostEditor;
285203
285552
  #snapshots = /* @__PURE__ */ new Map;
285204
285553
  #aggregated = null;
@@ -286047,7 +286396,7 @@ var Node$13 = class Node$14 {
286047
286396
  return () => {};
286048
286397
  const handle3 = setInterval(callback, intervalMs);
286049
286398
  return () => clearInterval(handle3);
286050
- }, HISTORY_UNSAFE_OPS, CANONICAL_COMMENT_IGNORED_KEYS, INITIAL_HASH, ROUND_CONSTANTS, V1_COVERAGE, V2_COVERAGE, SNAPSHOT_VERSION_V2 = "sd-diff-snapshot/v2", PAYLOAD_VERSION_V1 = "sd-diff-payload/v1", PAYLOAD_VERSION_V2 = "sd-diff-payload/v2", ENGINE_ID = "super-editor", STAGED_CONVERTER_KEYS, DiffServiceError, DEFAULT_LEVEL = 1, SWITCH_PATTERN, TOC_BOOKMARK_PREFIX = "_Toc", DEFAULT_RIGHT_TAB_POS = 9350, TAB_LEADER_MAP, NO_ENTRIES_PLACEHOLDER, TC_LEVEL_MIN = 1, TC_LEVEL_MAX = 9, ALLOWED_WRAP_ATTRS, WRAP_TYPES_SUPPORTING_SIDE, WRAP_TYPES_SUPPORTING_DISTANCES, RELATIVE_HEIGHT_MIN = 0, RELATIVE_HEIGHT_MAX = 4294967295, FORBIDDEN_RAW_PATCH_NAMES, CONTROL_TYPE_SDT_PR_ELEMENTS, DEFAULT_CHECKBOX_SYMBOL_FONT2 = "MS Gothic", DEFAULT_CHECKBOX_CHECKED_HEX2 = "2612", DEFAULT_CHECKBOX_UNCHECKED_HEX2 = "2610", VARIANT_ORDER, KIND_ORDER, HEADER_RELATIONSHIP_TYPE3 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE3 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", DOCUMENT_RELS_PATH2 = "word/_rels/document.xml.rels", HEADER_FILE_PATTERN2, FOOTER_FILE_PATTERN2, SPECIAL_NOTE_TYPES, BOOKMARK_SCAN_REVISION_PREFIX = "bookmark-scan:", SETTINGS_PART, RESTART_POLICY_TO_OOXML, VALID_DISPLAYS, REFERENCE_BLOCK_PREFIX, CAPTION_STYLE_NAMES, CAPTION_PARAGRAPH_STYLE_ID = "Caption", CAPTION_FORMAT_TO_OOXML, DOCUMENT_STAT_FIELD_TYPES, TOA_LEADER_REVERSE_MAP, EDGE_NODE_TYPES, CONTENT_TYPES_PART_ID = "[Content_Types].xml", CONTENT_TYPES_NS = "http://schemas.openxmlformats.org/package/2006/content-types", contentTypesPartDescriptor, empty_exports, init_empty, CURRENT_APP_VERSION2 = "1.31.0", PIXELS_PER_INCH2 = 96, MAX_HEIGHT_BUFFER_PX = 50, MAX_WIDTH_BUFFER_PX = 20, cloneExtensionInstance = (extension3) => {
286399
+ }, HISTORY_UNSAFE_OPS, CANONICAL_COMMENT_IGNORED_KEYS, INITIAL_HASH, ROUND_CONSTANTS, V1_COVERAGE, V2_COVERAGE, SNAPSHOT_VERSION_V2 = "sd-diff-snapshot/v2", PAYLOAD_VERSION_V1 = "sd-diff-payload/v1", PAYLOAD_VERSION_V2 = "sd-diff-payload/v2", ENGINE_ID = "super-editor", STAGED_CONVERTER_KEYS, DiffServiceError, DEFAULT_LEVEL = 1, SWITCH_PATTERN, TOC_BOOKMARK_PREFIX = "_Toc", ALLOWED_SOURCE_MARK_TYPES, TEXT_STYLE_ALLOWED_ATTRS, DEFAULT_RIGHT_TAB_POS = 9350, TAB_LEADER_MAP, NO_ENTRIES_PLACEHOLDER, TOC_ENTRY_STYLE_RE, TC_LEVEL_MIN = 1, TC_LEVEL_MAX = 9, ALLOWED_WRAP_ATTRS, WRAP_TYPES_SUPPORTING_SIDE, WRAP_TYPES_SUPPORTING_DISTANCES, RELATIVE_HEIGHT_MIN = 0, RELATIVE_HEIGHT_MAX = 4294967295, FORBIDDEN_RAW_PATCH_NAMES, CONTROL_TYPE_SDT_PR_ELEMENTS, DEFAULT_CHECKBOX_SYMBOL_FONT2 = "MS Gothic", DEFAULT_CHECKBOX_CHECKED_HEX2 = "2612", DEFAULT_CHECKBOX_UNCHECKED_HEX2 = "2610", VARIANT_ORDER, KIND_ORDER, HEADER_RELATIONSHIP_TYPE3 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE3 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", DOCUMENT_RELS_PATH2 = "word/_rels/document.xml.rels", HEADER_FILE_PATTERN2, FOOTER_FILE_PATTERN2, SPECIAL_NOTE_TYPES, BOOKMARK_SCAN_REVISION_PREFIX = "bookmark-scan:", SETTINGS_PART, RESTART_POLICY_TO_OOXML, VALID_DISPLAYS, REFERENCE_BLOCK_PREFIX, CAPTION_STYLE_NAMES, CAPTION_PARAGRAPH_STYLE_ID = "Caption", CAPTION_FORMAT_TO_OOXML, DOCUMENT_STAT_FIELD_TYPES, TOA_LEADER_REVERSE_MAP, EDGE_NODE_TYPES, CONTENT_TYPES_PART_ID = "[Content_Types].xml", CONTENT_TYPES_NS = "http://schemas.openxmlformats.org/package/2006/content-types", contentTypesPartDescriptor, empty_exports, init_empty, CURRENT_APP_VERSION2 = "1.32.0", PIXELS_PER_INCH2 = 96, MAX_HEIGHT_BUFFER_PX = 50, MAX_WIDTH_BUFFER_PX = 20, cloneExtensionInstance = (extension3) => {
286051
286400
  const extensionLike = extension3;
286052
286401
  const config2 = extensionLike?.config;
286053
286402
  const ExtensionCtor = extensionLike?.constructor;
@@ -301718,12 +302067,12 @@ menclose::after {
301718
302067
  return;
301719
302068
  console.log(...args$1);
301720
302069
  }, 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;
301721
- var init_src_BLxaw1d3_es = __esm(() => {
302070
+ var init_src_BpYr_7Wm_es = __esm(() => {
301722
302071
  init_rolldown_runtime_Bg48TavK_es();
301723
- init_SuperConverter_BecdrRIX_es();
302072
+ init_SuperConverter_CcvDw1Yc_es();
301724
302073
  init_jszip_C49i9kUs_es();
301725
302074
  init_uuid_qzgm05fK_es();
301726
- init_create_headless_toolbar_DCeIAH_W_es();
302075
+ init_create_headless_toolbar_D5yv7LyN_es();
301727
302076
  init_constants_DrU4EASo_es();
301728
302077
  init_dist_B8HfvhaK_es();
301729
302078
  init_unified_Dsuw2be5_es();
@@ -308948,10 +309297,10 @@ ${err.toString()}`);
308948
309297
  addOptions() {
308949
309298
  return { htmlAttributes: {} };
308950
309299
  },
308951
- parseHTML() {
309300
+ parseDOM() {
308952
309301
  return [{ tag: "span[data-toc-page-number]" }];
308953
309302
  },
308954
- renderHTML() {
309303
+ renderDOM() {
308955
309304
  return [
308956
309305
  "span",
308957
309306
  { "data-toc-page-number": "" },
@@ -312244,6 +312593,33 @@ ${err.toString()}`);
312244
312593
  fieldType: "NUMPAGES",
312245
312594
  instruction: "NUMPAGES"
312246
312595
  } };
312596
+ TAB_LEADER_TO_SEPARATOR = {
312597
+ dot: ".",
312598
+ hyphen: "-",
312599
+ underscore: "_",
312600
+ middleDot: "·"
312601
+ };
312602
+ SEPARATOR_TO_TAB_LEADER = {
312603
+ ".": "dot",
312604
+ "-": "hyphen",
312605
+ _: "underscore",
312606
+ "·": "middleDot"
312607
+ };
312608
+ DEFAULT_TOC_CONFIG = {
312609
+ source: {
312610
+ outlineLevels: {
312611
+ from: 1,
312612
+ to: 3
312613
+ },
312614
+ useAppliedOutlineLevel: true
312615
+ },
312616
+ display: {
312617
+ hyperlinks: true,
312618
+ hideInWebView: true
312619
+ },
312620
+ preserved: {}
312621
+ };
312622
+ SWITCH_PATTERN$1 = /\\([a-z])\s*(?:"([^"]*)")?/gi;
312247
312623
  UPDATABLE_FIELD_TYPES = new Set([
312248
312624
  "NUMWORDS",
312249
312625
  "NUMCHARS",
@@ -312252,11 +312628,41 @@ ${err.toString()}`);
312252
312628
  FieldUpdate = Extension.create({
312253
312629
  name: "fieldUpdate",
312254
312630
  addCommands() {
312255
- return { updateFieldsInSelection: () => ({ editor, state, dispatch }) => {
312631
+ return { updateFieldsInSelection: () => ({ editor, state, tr: outerTr, dispatch }) => {
312256
312632
  const { from: from$1, to } = state.selection;
312633
+ let tocPathRan = false;
312634
+ if (editor?.doc?.toc?.update) {
312635
+ const tocTargets = findAllTocNodes(state.doc).map((toc) => toc.commandNodeId).filter((id2) => typeof id2 === "string" && id2);
312636
+ if (tocTargets.length > 0) {
312637
+ if (!dispatch)
312638
+ return true;
312639
+ const tocStorage = editor.storage?.tableOfContents;
312640
+ const cachedPageMap = tocStorage?.pageMap ?? null;
312641
+ for (const sdBlockId of tocTargets) {
312642
+ if (tocStorage && cachedPageMap) {
312643
+ tocStorage.pageMap = cachedPageMap;
312644
+ tocStorage.pageMapDoc = editor.state.doc;
312645
+ }
312646
+ try {
312647
+ editor.doc.toc.update({
312648
+ target: {
312649
+ kind: "block",
312650
+ nodeType: "tableOfContents",
312651
+ nodeId: sdBlockId
312652
+ },
312653
+ mode: "all"
312654
+ });
312655
+ } catch (error3) {
312656
+ console.warn("[FieldUpdate] toc.update failed for", sdBlockId, error3);
312657
+ }
312658
+ }
312659
+ outerTr?.setMeta?.("preventDispatch", true);
312660
+ tocPathRan = true;
312661
+ }
312662
+ }
312257
312663
  const updatable = findFieldsInRange(state.doc, from$1, to).filter((f2) => UPDATABLE_FIELD_TYPES.has(f2.fieldType));
312258
312664
  if (updatable.length === 0)
312259
- return false;
312665
+ return tocPathRan;
312260
312666
  const stats = getWordStatistics(resolveMainBodyEditor(editor));
312261
312667
  const tr = state.tr;
312262
312668
  let changed = false;
@@ -312287,7 +312693,7 @@ ${err.toString()}`);
312287
312693
  }
312288
312694
  }
312289
312695
  if (!changed)
312290
- return false;
312696
+ return tocPathRan;
312291
312697
  if (dispatch)
312292
312698
  dispatch(tr);
312293
312699
  return true;
@@ -312747,7 +313153,11 @@ ${err.toString()}`);
312747
313153
  underlineColor: { default: null },
312748
313154
  underlineThemeColor: { default: null },
312749
313155
  underlineThemeTint: { default: null },
312750
- underlineThemeShade: { default: null }
313156
+ underlineThemeShade: { default: null },
313157
+ autoAdded: {
313158
+ default: false,
313159
+ rendered: false
313160
+ }
312751
313161
  };
312752
313162
  },
312753
313163
  addCommands() {
@@ -312994,10 +313404,26 @@ ${err.toString()}`);
312994
313404
  }
312995
313405
  if (linkMarkType)
312996
313406
  tr = tr.removeMark(from$1, to, linkMarkType);
312997
- if (underlineMarkType)
312998
- tr = tr.removeMark(from$1, to, underlineMarkType);
312999
- if (underlineMarkType)
313000
- tr = tr.addMark(from$1, to, underlineMarkType.create());
313407
+ if (underlineMarkType) {
313408
+ const rangesMissingUnderline = [];
313409
+ tr.doc.nodesBetween(from$1, to, (node3, pos) => {
313410
+ if (!node3.isText || node3.nodeSize <= 0)
313411
+ return;
313412
+ if (node3.marks.some((mark2) => mark2.type === underlineMarkType))
313413
+ return;
313414
+ const rangeFrom = Math.max(pos, from$1);
313415
+ const rangeTo = Math.min(pos + node3.nodeSize, to);
313416
+ if (rangeFrom >= rangeTo)
313417
+ return;
313418
+ rangesMissingUnderline.push({
313419
+ from: rangeFrom,
313420
+ to: rangeTo
313421
+ });
313422
+ });
313423
+ rangesMissingUnderline.forEach((range) => {
313424
+ tr = tr.addMark(range.from, range.to, underlineMarkType.create({ autoAdded: true }));
313425
+ });
313426
+ }
313001
313427
  let rId = null;
313002
313428
  if (editor.options.mode === "docx") {
313003
313429
  const id2 = addLinkRelationship({
@@ -313018,8 +313444,72 @@ ${err.toString()}`);
313018
313444
  dispatch(tr.scrollIntoView());
313019
313445
  return true;
313020
313446
  },
313021
- unsetLink: () => ({ chain }) => {
313022
- return chain().unsetMark("underline", { extendEmptyMarkRange: true }).unsetColor().unsetMark("link", { extendEmptyMarkRange: true }).run();
313447
+ unsetLink: () => ({ chain, state, editor }) => {
313448
+ const { selection } = state;
313449
+ const linkMarkType = editor.schema.marks.link;
313450
+ const underlineMarkType = editor.schema.marks.underline;
313451
+ let { from: from$1, to } = selection;
313452
+ if (selection.empty && linkMarkType) {
313453
+ const range = getMarkRange(selection.$from, linkMarkType);
313454
+ if (range) {
313455
+ from$1 = range.from;
313456
+ to = range.to;
313457
+ }
313458
+ }
313459
+ return chain().unsetColor().unsetMark("link", { extendEmptyMarkRange: true }).command(({ tr }) => {
313460
+ if (underlineMarkType)
313461
+ tr.doc.nodesBetween(from$1, to, (node3, pos) => {
313462
+ if (!node3.isText)
313463
+ return;
313464
+ node3.marks.forEach((mark2) => {
313465
+ if (mark2.type !== underlineMarkType)
313466
+ return;
313467
+ if (mark2.attrs?.autoAdded !== true)
313468
+ return;
313469
+ tr.removeMark(pos, pos + node3.nodeSize, mark2);
313470
+ });
313471
+ });
313472
+ const textStyleMarkType = tr.doc.type.schema.marks.textStyle;
313473
+ if (textStyleMarkType)
313474
+ tr.doc.nodesBetween(from$1, to, (node3, pos) => {
313475
+ if (!node3.isText)
313476
+ return;
313477
+ node3.marks.forEach((mark2) => {
313478
+ if (mark2.type !== textStyleMarkType)
313479
+ return;
313480
+ if (!TRANSIENT_HYPERLINK_STYLE_IDS.has(mark2.attrs?.styleId))
313481
+ return;
313482
+ const clearedAttrs = {
313483
+ ...mark2.attrs,
313484
+ styleId: null
313485
+ };
313486
+ tr.removeMark(pos, pos + node3.nodeSize, mark2);
313487
+ tr.addMark(pos, pos + node3.nodeSize, textStyleMarkType.create(clearedAttrs));
313488
+ });
313489
+ });
313490
+ const runNodesToUpdate = [];
313491
+ tr.doc.nodesBetween(from$1, to, (node3, pos) => {
313492
+ if (node3.type.name !== "run")
313493
+ return;
313494
+ if (!TRANSIENT_HYPERLINK_STYLE_IDS.has(node3.attrs?.runProperties?.styleId))
313495
+ return;
313496
+ runNodesToUpdate.push({
313497
+ node: node3,
313498
+ pos
313499
+ });
313500
+ });
313501
+ runNodesToUpdate.sort((a2, b$1) => b$1.pos - a2.pos).forEach(({ node: node3, pos }) => {
313502
+ const mappedPos = tr.mapping.map(pos);
313503
+ tr.setNodeMarkup(mappedPos, node3.type, {
313504
+ ...node3.attrs,
313505
+ runProperties: {
313506
+ ...node3.attrs.runProperties,
313507
+ styleId: null
313508
+ }
313509
+ }, node3.marks);
313510
+ });
313511
+ return true;
313512
+ }).run();
313023
313513
  },
313024
313514
  toggleLink: ({ href, text: text5 } = {}) => ({ commands: commands$1 }) => {
313025
313515
  if (!href)
@@ -324194,6 +324684,7 @@ function print() { __p += __j.call(arguments, '') }
324194
324684
  "spanning",
324195
324685
  "code"
324196
324686
  ];
324687
+ HEADING_STYLE_RE = /^Heading[1-9]$/i;
324197
324688
  RUNTIME_COPY_STRIP_SELECTOR = [
324198
324689
  ".list-marker",
324199
324690
  ".sd-editor-tab",
@@ -324208,33 +324699,6 @@ function print() { __p += __j.call(arguments, '') }
324208
324699
  ["bullet", "bullet"]
324209
324700
  ]);
324210
324701
  BLANK_DOCX_DATA_URI = `data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,${BLANK_DOCX_BASE64}`;
324211
- TAB_LEADER_TO_SEPARATOR = {
324212
- dot: ".",
324213
- hyphen: "-",
324214
- underscore: "_",
324215
- middleDot: "·"
324216
- };
324217
- SEPARATOR_TO_TAB_LEADER = {
324218
- ".": "dot",
324219
- "-": "hyphen",
324220
- _: "underscore",
324221
- "·": "middleDot"
324222
- };
324223
- DEFAULT_TOC_CONFIG = {
324224
- source: {
324225
- outlineLevels: {
324226
- from: 1,
324227
- to: 3
324228
- },
324229
- useAppliedOutlineLevel: true
324230
- },
324231
- display: {
324232
- hyperlinks: true,
324233
- hideInWebView: true
324234
- },
324235
- preserved: {}
324236
- };
324237
- SWITCH_PATTERN$1 = /\\([a-z])\s*(?:"([^"]*)")?/gi;
324238
324702
  BULLET_FORMATS$1 = new Set(["bullet"]);
324239
324703
  LOCK_MODE_TO_SDT_LOCK = {
324240
324704
  unlocked: "none",
@@ -325777,6 +326241,15 @@ function print() { __p += __j.call(arguments, '') }
325777
326241
  }
325778
326242
  };
325779
326243
  SWITCH_PATTERN = /\\([a-z])(?:\s*(?:"([^"]*)"|([^\s\\]+)))?/gi;
326244
+ ALLOWED_SOURCE_MARK_TYPES = new Set([
326245
+ "bold",
326246
+ "italic",
326247
+ "underline",
326248
+ "color",
326249
+ "highlight",
326250
+ "fontFamily"
326251
+ ]);
326252
+ TEXT_STYLE_ALLOWED_ATTRS = new Set(["fontFamily"]);
325780
326253
  TAB_LEADER_MAP = {
325781
326254
  dot: "dot",
325782
326255
  hyphen: "hyphen",
@@ -325791,6 +326264,7 @@ function print() { __p += __j.call(arguments, '') }
325791
326264
  text: "No table of contents entries found."
325792
326265
  }]
325793
326266
  }];
326267
+ TOC_ENTRY_STYLE_RE = /^TOC[1-9]$/;
325794
326268
  ALLOWED_WRAP_ATTRS = {
325795
326269
  None: ["behindDoc"],
325796
326270
  Square: [
@@ -330434,6 +330908,17 @@ function print() { __p += __j.call(arguments, '') }
330434
330908
  currentParagraph.style.whiteSpace = "normal";
330435
330909
  if (part.isEmptyParagraph)
330436
330910
  currentParagraph.style.minHeight = "1em";
330911
+ } else if (part.kind === "image" && part.src) {
330912
+ const img2 = this.doc.createElement("img");
330913
+ img2.src = part.src;
330914
+ img2.alt = part.alt ?? "";
330915
+ if (typeof part.width === "number")
330916
+ img2.style.width = `${part.width}px`;
330917
+ if (typeof part.height === "number")
330918
+ img2.style.height = `${part.height}px`;
330919
+ img2.style.display = "inline-block";
330920
+ img2.style.verticalAlign = "bottom";
330921
+ currentParagraph.appendChild(img2);
330437
330922
  } else {
330438
330923
  const span = this.doc.createElement("span");
330439
330924
  span.textContent = this.resolveShapeTextPartText(part, context);
@@ -339426,6 +339911,7 @@ function print() { __p += __j.call(arguments, '') }
339426
339911
  trackChangesAccept: check_solid_default,
339427
339912
  trackChangesReject: xmark_solid_default,
339428
339913
  cellBackground: paint_roller_solid_default,
339914
+ updateTableOfContents: rotate_right_solid_default,
339429
339915
  listRestartNumbering: list_ol_solid_default,
339430
339916
  listContinueNumbering: list_ol_solid_default,
339431
339917
  listDecreaseIndent: outdent_solid_default,
@@ -339456,6 +339942,7 @@ function print() { __p += __j.call(arguments, '') }
339456
339942
  trackChangesAccept: "Accept change",
339457
339943
  trackChangesReject: "Reject change",
339458
339944
  cellBackground: "Cell background",
339945
+ updateTableOfContents: "Update table of contents",
339459
339946
  listRestartNumbering: "Restart numbering",
339460
339947
  listContinueNumbering: "Continue numbering",
339461
339948
  listDecreaseIndent: "Decrease indent",
@@ -339566,11 +340053,11 @@ function print() { __p += __j.call(arguments, '') }
339566
340053
  ];
339567
340054
  });
339568
340055
 
339569
- // ../../packages/superdoc/dist/chunks/create-super-doc-ui-fxrCn5X_.es.js
340056
+ // ../../packages/superdoc/dist/chunks/create-super-doc-ui-CEK13syX.es.js
339570
340057
  var 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;
339571
- var init_create_super_doc_ui_fxrCn5X__es = __esm(() => {
339572
- init_SuperConverter_BecdrRIX_es();
339573
- init_create_headless_toolbar_DCeIAH_W_es();
340058
+ var init_create_super_doc_ui_CEK13syX_es = __esm(() => {
340059
+ init_SuperConverter_CcvDw1Yc_es();
340060
+ init_create_headless_toolbar_D5yv7LyN_es();
339574
340061
  MOD_ALIASES = new Set([
339575
340062
  "Mod",
339576
340063
  "Meta",
@@ -339612,16 +340099,16 @@ var init_zipper_BxRAi0_5_es = __esm(() => {
339612
340099
 
339613
340100
  // ../../packages/superdoc/dist/super-editor.es.js
339614
340101
  var init_super_editor_es = __esm(() => {
339615
- init_src_BLxaw1d3_es();
339616
- init_SuperConverter_BecdrRIX_es();
340102
+ init_src_BpYr_7Wm_es();
340103
+ init_SuperConverter_CcvDw1Yc_es();
339617
340104
  init_jszip_C49i9kUs_es();
339618
340105
  init_xml_js_CqGKpaft_es();
339619
- init_create_headless_toolbar_DCeIAH_W_es();
340106
+ init_create_headless_toolbar_D5yv7LyN_es();
339620
340107
  init_constants_DrU4EASo_es();
339621
340108
  init_dist_B8HfvhaK_es();
339622
340109
  init_unified_Dsuw2be5_es();
339623
340110
  init_DocxZipper_Dh4RtvcE_es();
339624
- init_create_super_doc_ui_fxrCn5X__es();
340111
+ init_create_super_doc_ui_CEK13syX_es();
339625
340112
  init_ui_CGB3qmy3_es();
339626
340113
  init_eventemitter3_UwU_CLPU_es();
339627
340114
  init_errors_C_DoKMoN_es();