@superdoc-dev/cli 0.7.0-next.1 → 0.7.0-next.10

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 +352 -102
  2. package/package.json +8 -8
package/dist/index.js CHANGED
@@ -19530,6 +19530,27 @@ function expectOptionalEnvVarName(value, path) {
19530
19530
  }
19531
19531
  return value;
19532
19532
  }
19533
+ function expectOptionalWebSocketParams(value, path) {
19534
+ if (value == null)
19535
+ return;
19536
+ if (!isRecord3(value)) {
19537
+ throw new CliError("VALIDATION_ERROR", `${path} must be an object of string key-value pairs.`);
19538
+ }
19539
+ const result = {};
19540
+ for (const [key, val] of Object.entries(value)) {
19541
+ if (key.trim().length === 0) {
19542
+ throw new CliError("VALIDATION_ERROR", `${path} keys must be non-empty strings.`);
19543
+ }
19544
+ if (RESERVED_WEBSOCKET_PARAM_KEYS.has(key)) {
19545
+ throw new CliError("VALIDATION_ERROR", `${path}.${key} is reserved; the collaboration token is set automatically from tokenEnv.`);
19546
+ }
19547
+ if (typeof val !== "string") {
19548
+ throw new CliError("VALIDATION_ERROR", `${path}.${key} must be a string.`);
19549
+ }
19550
+ result[key] = val;
19551
+ }
19552
+ return result;
19553
+ }
19533
19554
  function parseOnMissing(value) {
19534
19555
  if (value == null)
19535
19556
  return;
@@ -19562,15 +19583,13 @@ function parseWebSocketInput(raw) {
19562
19583
  if ("token" in raw) {
19563
19584
  throw new CliError("VALIDATION_ERROR", "collaboration.token is not supported in v1; use collaboration.tokenEnv.");
19564
19585
  }
19565
- if ("params" in raw) {
19566
- throw new CliError("VALIDATION_ERROR", "collaboration.params is not supported in v1.");
19567
- }
19568
19586
  const providerType = normalizeProviderType(raw.providerType, "collaboration.providerType");
19569
19587
  return {
19570
19588
  providerType,
19571
19589
  url: expectNonEmptyString(raw.url, "collaboration.url").trim(),
19572
19590
  documentId: raw.documentId != null ? expectNonEmptyString(raw.documentId, "collaboration.documentId") : undefined,
19573
19591
  tokenEnv: expectOptionalEnvVarName(raw.tokenEnv, "collaboration.tokenEnv"),
19592
+ params: expectOptionalWebSocketParams(raw.params, "collaboration.params"),
19574
19593
  ...parseSharedFields(raw)
19575
19594
  };
19576
19595
  }
@@ -19588,7 +19607,7 @@ function parseLiveblocksInput(raw) {
19588
19607
  throw new CliError("VALIDATION_ERROR", "collaboration.token is not supported in v1.");
19589
19608
  }
19590
19609
  if ("params" in raw) {
19591
- throw new CliError("VALIDATION_ERROR", "collaboration.params is not supported in v1.");
19610
+ throw new CliError("VALIDATION_ERROR", "collaboration.params is not supported for Liveblocks.");
19592
19611
  }
19593
19612
  if ("headers" in raw) {
19594
19613
  throw new CliError("VALIDATION_ERROR", "collaboration.headers is not supported; use authHeadersEnv for custom auth headers.");
@@ -19647,7 +19666,7 @@ function buildShorthandCollaborationInput(params) {
19647
19666
  ...params
19648
19667
  });
19649
19668
  }
19650
- var DEFAULT_SHORTHAND_COLLABORATION_PROVIDER_TYPE = "y-websocket", WEBSOCKET_ALLOWED_KEYS, LIVEBLOCKS_ALLOWED_KEYS;
19669
+ var DEFAULT_SHORTHAND_COLLABORATION_PROVIDER_TYPE = "y-websocket", WEBSOCKET_ALLOWED_KEYS, RESERVED_WEBSOCKET_PARAM_KEYS, LIVEBLOCKS_ALLOWED_KEYS;
19651
19670
  var init_parse = __esm(() => {
19652
19671
  init_errors();
19653
19672
  init_guards();
@@ -19657,10 +19676,12 @@ var init_parse = __esm(() => {
19657
19676
  "url",
19658
19677
  "documentId",
19659
19678
  "tokenEnv",
19679
+ "params",
19660
19680
  "syncTimeoutMs",
19661
19681
  "onMissing",
19662
19682
  "bootstrapSettlingMs"
19663
19683
  ]);
19684
+ RESERVED_WEBSOCKET_PARAM_KEYS = new Set(["token"]);
19664
19685
  LIVEBLOCKS_ALLOWED_KEYS = new Set([
19665
19686
  "providerType",
19666
19687
  "roomId",
@@ -19680,6 +19701,7 @@ function resolveWebSocketProfile(input, sessionId) {
19680
19701
  url: input.url,
19681
19702
  documentId: input.documentId?.trim() || sessionId,
19682
19703
  tokenEnv: input.tokenEnv,
19704
+ params: input.params,
19683
19705
  syncTimeoutMs: input.syncTimeoutMs,
19684
19706
  onMissing: input.onMissing,
19685
19707
  bootstrapSettlingMs: input.bootstrapSettlingMs
@@ -41219,9 +41241,13 @@ function createWebSocketRuntime(profile) {
41219
41241
  const syncTimeoutMs = profile.syncTimeoutMs ?? DEFAULT_SYNC_TIMEOUT_MS;
41220
41242
  let provider;
41221
41243
  if (profile.providerType === "y-websocket") {
41222
- const providerOptions = {};
41244
+ const params3 = { ...profile.params ?? {} };
41223
41245
  if (token) {
41224
- providerOptions.params = { token };
41246
+ params3.token = token;
41247
+ }
41248
+ const providerOptions = {};
41249
+ if (Object.keys(params3).length > 0) {
41250
+ providerOptions.params = params3;
41225
41251
  }
41226
41252
  provider = new WebsocketProvider(profile.url, profile.documentId, ydoc, providerOptions);
41227
41253
  } else {
@@ -41230,6 +41256,7 @@ function createWebSocketRuntime(profile) {
41230
41256
  document: ydoc,
41231
41257
  name: profile.documentId,
41232
41258
  token: token ?? "",
41259
+ parameters: profile.params,
41233
41260
  preserveConnection: false
41234
41261
  });
41235
41262
  }
@@ -41356,6 +41383,21 @@ function normalizeSharedFields(record) {
41356
41383
  bootstrapSettlingMs: typeof record.bootstrapSettlingMs === "number" ? record.bootstrapSettlingMs : undefined
41357
41384
  };
41358
41385
  }
41386
+ function normalizeWebSocketParams(value) {
41387
+ if (value == null)
41388
+ return;
41389
+ if (!isRecord3(value))
41390
+ return null;
41391
+ const result = {};
41392
+ for (const [key, val] of Object.entries(value)) {
41393
+ if (typeof key !== "string" || key.length === 0)
41394
+ return null;
41395
+ if (typeof val !== "string")
41396
+ return null;
41397
+ result[key] = val;
41398
+ }
41399
+ return result;
41400
+ }
41359
41401
  function normalizeWebSocketProfile(record) {
41360
41402
  const { providerType, url: url2, documentId, tokenEnv } = record;
41361
41403
  if (typeof url2 !== "string" || url2.length === 0)
@@ -41367,11 +41409,15 @@ function normalizeWebSocketProfile(record) {
41367
41409
  const shared = normalizeSharedFields(record);
41368
41410
  if (!shared)
41369
41411
  return;
41412
+ const params3 = normalizeWebSocketParams(record.params);
41413
+ if (params3 === null)
41414
+ return;
41370
41415
  return {
41371
41416
  providerType,
41372
41417
  url: url2,
41373
41418
  documentId,
41374
41419
  tokenEnv: typeof tokenEnv === "string" ? tokenEnv : undefined,
41420
+ params: params3,
41375
41421
  ...shared
41376
41422
  };
41377
41423
  }
@@ -65352,7 +65398,7 @@ var init_remark_gfm_BhnWr3yf_es = __esm(() => {
65352
65398
  emptyOptions2 = {};
65353
65399
  });
65354
65400
 
65355
- // ../../packages/superdoc/dist/chunks/SuperConverter-DWRVjawM.es.js
65401
+ // ../../packages/superdoc/dist/chunks/SuperConverter-CWhofwLf.es.js
65356
65402
  function getExtensionConfigField(extension$1, field, context = { name: "" }) {
65357
65403
  const fieldValue = extension$1.config[field];
65358
65404
  if (typeof fieldValue === "function")
@@ -110976,6 +111022,21 @@ var isRegExp = (value) => {
110976
111022
  const runType = newState.schema.nodes.run;
110977
111023
  if (!runType)
110978
111024
  return null;
111025
+ const removedKeys = /* @__PURE__ */ new Set;
111026
+ transactions.forEach((t) => {
111027
+ t.steps.forEach((step$1) => {
111028
+ const jsonStep = step$1.toJSON?.();
111029
+ if (jsonStep?.stepType !== "removeMark" || !jsonStep.mark?.type)
111030
+ return;
111031
+ if (jsonStep.mark.type === "textStyle")
111032
+ Object.entries(jsonStep.mark.attrs || {}).forEach(([key, value]) => {
111033
+ if (value != null)
111034
+ removedKeys.add(key);
111035
+ });
111036
+ else
111037
+ removedKeys.add(jsonStep.mark.type);
111038
+ });
111039
+ });
110979
111040
  const preservedDerivedKeys = /* @__PURE__ */ new Set;
110980
111041
  const preferExistingKeys = /* @__PURE__ */ new Set;
110981
111042
  transactions.forEach((transaction) => {
@@ -111044,9 +111105,13 @@ var isRegExp = (value) => {
111044
111105
  if (!runProperties)
111045
111106
  runProperties = {};
111046
111107
  lostKeys.forEach((k) => {
111108
+ if (removedKeys.has(k))
111109
+ return;
111047
111110
  if (runNode.attrs?.runProperties?.[k] !== undefined)
111048
111111
  runProperties[k] = runNode.attrs.runProperties[k];
111049
111112
  });
111113
+ if (runProperties && Object.keys(runProperties).length === 0)
111114
+ runProperties = null;
111050
111115
  }
111051
111116
  }
111052
111117
  const { inlineKeys: newInlineKeys, overrideKeys: newOverrideKeys } = computeSegmentKeys(runProperties, segments[0]);
@@ -116990,7 +117055,7 @@ var isRegExp = (value) => {
116990
117055
  if (id2)
116991
117056
  return trackedChanges.filter(({ mark }) => mark.attrs.id === id2);
116992
117057
  return trackedChanges;
116993
- }, 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.25.0", collectRunDefaultProperties = (runProps, { allowOverrideTypeface = true, allowOverrideSize = true, themeResolver, state }) => {
117058
+ }, 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.26.0", collectRunDefaultProperties = (runProps, { allowOverrideTypeface = true, allowOverrideSize = true, themeResolver, state }) => {
116994
117059
  if (!runProps?.elements?.length || !state)
116995
117060
  return;
116996
117061
  const fontsNode = runProps.elements.find((el) => el.name === "w:rFonts");
@@ -117024,7 +117089,7 @@ var isRegExp = (value) => {
117024
117089
  state.kern = kernNode.attributes["w:val"];
117025
117090
  }
117026
117091
  }, SuperConverter;
117027
- var init_SuperConverter_DWRVjawM_es = __esm(() => {
117092
+ var init_SuperConverter_CWhofwLf_es = __esm(() => {
117028
117093
  init_rolldown_runtime_Bg48TavK_es();
117029
117094
  init_jszip_C49i9kUs_es();
117030
117095
  init_xml_js_CqGKpaft_es();
@@ -154220,7 +154285,7 @@ var init_SuperConverter_DWRVjawM_es = __esm(() => {
154220
154285
  };
154221
154286
  });
154222
154287
 
154223
- // ../../packages/superdoc/dist/chunks/create-headless-toolbar-BIMyZsso.es.js
154288
+ // ../../packages/superdoc/dist/chunks/create-headless-toolbar-C2iuH72Y.es.js
154224
154289
  function parseSizeUnit(val = "0") {
154225
154290
  const length3 = val.toString() || "0";
154226
154291
  const value = Number.parseFloat(length3);
@@ -155831,8 +155896,8 @@ var CSS_DIMENSION_REGEX, DOM_SIZE_UNITS, Extension = class Extension2 {
155831
155896
  return false;
155832
155897
  return Boolean(checker(attrs));
155833
155898
  };
155834
- var init_create_headless_toolbar_BIMyZsso_es = __esm(() => {
155835
- init_SuperConverter_DWRVjawM_es();
155899
+ var init_create_headless_toolbar_C2iuH72Y_es = __esm(() => {
155900
+ init_SuperConverter_CWhofwLf_es();
155836
155901
  init_constants_CGhJRd87_es();
155837
155902
  init_dist_B8HfvhaK_es();
155838
155903
  CSS_DIMENSION_REGEX = /[\d-.]+(\w+)$/;
@@ -204270,7 +204335,7 @@ var init_remark_gfm_eZN6yzWQ_es = __esm(() => {
204270
204335
  init_remark_gfm_BhnWr3yf_es();
204271
204336
  });
204272
204337
 
204273
- // ../../packages/superdoc/dist/chunks/src-CGh2gsCt.es.js
204338
+ // ../../packages/superdoc/dist/chunks/src-CZB4kJvn.es.js
204274
204339
  function deleteProps(obj, propOrProps) {
204275
204340
  const props = typeof propOrProps === "string" ? [propOrProps] : propOrProps;
204276
204341
  const removeNested = (target, pathParts, index2 = 0) => {
@@ -204558,6 +204623,16 @@ function shouldApplyJustify(params$1) {
204558
204623
  return false;
204559
204624
  return true;
204560
204625
  }
204626
+ function getFirstLineIndentOffset(indent2, suppressFirstLineIndent) {
204627
+ if (suppressFirstLineIndent)
204628
+ return 0;
204629
+ return (indent2?.firstLine ?? 0) - (indent2?.hanging ?? 0);
204630
+ }
204631
+ function adjustAvailableWidthForTextIndent(availableWidth, textIndentOffset, lineMaxWidth) {
204632
+ if (textIndentOffset !== 0 && (textIndentOffset < 0 || lineMaxWidth == null))
204633
+ return Math.max(0, availableWidth - textIndentOffset);
204634
+ return availableWidth;
204635
+ }
204561
204636
  function calculateJustifySpacing(params$1) {
204562
204637
  const { lineWidth, availableWidth, spaceCount, shouldJustify } = params$1;
204563
204638
  if (!shouldJustify)
@@ -204901,7 +204976,7 @@ function prosemirrorToYXmlFragment(doc$12, xmlFragment) {
204901
204976
  }
204902
204977
  function getSuperdocVersion() {
204903
204978
  try {
204904
- return "1.25.0";
204979
+ return "1.26.0";
204905
204980
  } catch {
204906
204981
  return "unknown";
204907
204982
  }
@@ -245411,6 +245486,18 @@ function classifyMathText(text5) {
245411
245486
  return "mo";
245412
245487
  return "mi";
245413
245488
  }
245489
+ function resolveMathVariant(rPr) {
245490
+ const elements = rPr?.elements ?? [];
245491
+ const sty = elements.find((el) => el.name === "m:sty")?.attributes?.["m:val"];
245492
+ if (sty && STY_TO_VARIANT[sty])
245493
+ return STY_TO_VARIANT[sty];
245494
+ const scr = elements.find((el) => el.name === "m:scr")?.attributes?.["m:val"];
245495
+ if (scr && SCR_TO_VARIANT[scr])
245496
+ return SCR_TO_VARIANT[scr];
245497
+ if (elements.some((el) => el.name === "m:nor"))
245498
+ return "normal";
245499
+ return null;
245500
+ }
245414
245501
  function forceNormalMathVariant(root3) {
245415
245502
  root3.querySelectorAll("mi").forEach((identifier) => {
245416
245503
  identifier.setAttribute("mathvariant", "normal");
@@ -245920,6 +246007,7 @@ function resolveParagraphContent(fragment2, block, measure) {
245920
246007
  if (!hasExplicitSegmentPositioning)
245921
246008
  textIndentPx = firstLineOffset;
245922
246009
  }
246010
+ availableWidth = adjustAvailableWidthForTextIndent(availableWidth, textIndentPx, line.maxWidth);
245923
246011
  const indentLeft = paraIndent?.left ?? 0;
245924
246012
  const firstLine = paraIndent?.firstLine ?? 0;
245925
246013
  const hanging = paraIndent?.hanging ?? 0;
@@ -250900,11 +250988,11 @@ function remeasureParagraph(block, maxWidth, firstLineIndent = 0) {
250900
250988
  const indentRight = Math.max(0, rawIndentRight);
250901
250989
  const indentFirstLine = Math.max(0, indent2?.firstLine ?? 0);
250902
250990
  const indentHanging = Math.max(0, indent2?.hanging ?? 0);
250903
- const baseFirstLineOffset = firstLineIndent || indentFirstLine - indentHanging;
250904
- const rawFirstLineOffset = baseFirstLineOffset;
250991
+ const baseFirstLineOffset = attrs?.suppressFirstLineIndent === true ? 0 : firstLineIndent || indentFirstLine - indentHanging;
250905
250992
  const clampedFirstLineOffset = Math.max(0, baseFirstLineOffset);
250906
- const hasNegativeIndent = rawIndentLeft < 0 || rawIndentRight < 0;
250907
- const effectiveFirstLineOffset = !wordLayout?.marker && !hasNegativeIndent && baseFirstLineOffset < 0 ? baseFirstLineOffset : clampedFirstLineOffset;
250993
+ const hasNegativeLeftIndent = rawIndentLeft < 0;
250994
+ const allowNegativeFirstLineOffset = !wordLayout?.marker && !hasNegativeLeftIndent && baseFirstLineOffset < 0;
250995
+ const effectiveFirstLineOffset = wordLayout?.marker ? 0 : allowNegativeFirstLineOffset ? baseFirstLineOffset : clampedFirstLineOffset;
250908
250996
  const contentWidth = Math.max(1, maxWidth - indentLeft - indentRight);
250909
250997
  const textStartPx = wordLayout?.textStartPx;
250910
250998
  let measuredMarkerTextWidth;
@@ -250926,7 +251014,7 @@ function remeasureParagraph(block, maxWidth, firstLineIndent = 0) {
250926
251014
  while (currentRun < runs2.length) {
250927
251015
  const isFirstLine = lines.length === 0;
250928
251016
  const effectiveMaxWidth = Math.max(1, isFirstLine ? firstLineWidth : contentWidth);
250929
- const effectiveIndent = isFirstLine ? indentLeft + rawFirstLineOffset : indentLeft;
251017
+ const effectiveIndent = isFirstLine ? indentLeft + baseFirstLineOffset : indentLeft;
250930
251018
  const startRun = currentRun;
250931
251019
  const startChar = currentChar;
250932
251020
  let width = 0;
@@ -251104,7 +251192,7 @@ function remeasureParagraph(block, maxWidth, firstLineIndent = 0) {
251104
251192
  const hasTabRun = runs2.some((run2) => run2?.kind === "tab");
251105
251193
  const hasTextTab = runs2.some((run2) => run2?.kind === "text" && typeof run2.text === "string" && run2.text.includes("\t"));
251106
251194
  if (hasTabRun || hasTextTab)
251107
- applyTabLayoutToLines(lines, runs2, tabStops, decimalSeparator, indentLeft, rawFirstLineOffset);
251195
+ applyTabLayoutToLines(lines, runs2, tabStops, decimalSeparator, indentLeft, baseFirstLineOffset);
251108
251196
  const totalHeight = lines.reduce((s2, l) => s2 + l.lineHeight, 0);
251109
251197
  const marker = wordLayout?.marker;
251110
251198
  return {
@@ -252458,10 +252546,16 @@ function clickToPositionGeometry(layout, blocks2, measures, containerPoint, opti
252458
252546
  const indentLeft = typeof block.attrs?.indent?.left === "number" ? block.attrs.indent.left : 0;
252459
252547
  const indentRight = typeof block.attrs?.indent?.right === "number" ? block.attrs.indent.right : 0;
252460
252548
  const totalIndent = (Number.isFinite(indentLeft) ? indentLeft : 0) + (Number.isFinite(indentRight) ? indentRight : 0);
252461
- const availableWidth = Math.max(0, fragment2.width - totalIndent);
252549
+ let availableWidth = Math.max(0, fragment2.width - totalIndent);
252462
252550
  if (totalIndent > fragment2.width)
252463
252551
  console.warn(`[clickToPosition] Paragraph indents (${totalIndent}px) exceed fragment width (${fragment2.width}px) for block ${fragment2.blockId}. This may indicate a layout miscalculation. Available width clamped to 0.`);
252464
252552
  const isListItem$1 = (fragment2.markerWidth ?? measure.marker?.markerWidth ?? 0) > 0;
252553
+ const hasRenderedMarkerText = isListItem$1 && Boolean(fragment2.markerTextWidth);
252554
+ if (lineIndex === 0 && !fragment2.continuesFromPrev && !hasRenderedMarkerText) {
252555
+ const suppressFLI = block.attrs?.suppressFirstLineIndent === true;
252556
+ const firstLineOffset = getFirstLineIndentOffset(block.attrs?.indent, suppressFLI);
252557
+ availableWidth = adjustAvailableWidthForTextIndent(availableWidth, firstLineOffset, line.maxWidth);
252558
+ }
252465
252559
  const isJustified = block.attrs?.alignment === "justify";
252466
252560
  const alignmentOverride = isListItem$1 && !isJustified ? "left" : undefined;
252467
252561
  const pos = mapPointToPm(block, line, pageRelativePoint.x - fragment2.x, isRTL, availableWidth, alignmentOverride);
@@ -252502,10 +252596,17 @@ function clickToPositionGeometry(layout, blocks2, measures, containerPoint, opti
252502
252596
  const indentLeft = typeof cellBlock.attrs?.indent?.left === "number" ? cellBlock.attrs.indent.left : 0;
252503
252597
  const indentRight = typeof cellBlock.attrs?.indent?.right === "number" ? cellBlock.attrs.indent.right : 0;
252504
252598
  const totalIndent = (Number.isFinite(indentLeft) ? indentLeft : 0) + (Number.isFinite(indentRight) ? indentRight : 0);
252505
- const availableWidth = Math.max(0, tableHit.fragment.width - totalIndent);
252599
+ let availableWidth = Math.max(0, tableHit.fragment.width - totalIndent);
252506
252600
  if (totalIndent > tableHit.fragment.width)
252507
252601
  console.warn(`[clickToPosition:table] Paragraph indents (${totalIndent}px) exceed fragment width (${tableHit.fragment.width}px) for block ${tableHit.fragment.blockId}. This may indicate a layout miscalculation. Available width clamped to 0.`);
252508
252602
  const isListItem$1 = (cellMeasure.marker?.markerWidth ?? 0) > 0;
252603
+ const cellLineStart = tableHit.fragment.partialRow?.fromLineByCell?.[tableHit.cellColIndex] ?? 0;
252604
+ const localStartLine = Math.max(0, cellLineStart - tableHit.blockStartGlobal);
252605
+ if (lineIndex === 0 && localStartLine === 0 && !isListItem$1) {
252606
+ const suppressFLI = cellBlock.attrs?.suppressFirstLineIndent === true;
252607
+ const firstLineOffset = getFirstLineIndentOffset(cellBlock.attrs?.indent, suppressFLI);
252608
+ availableWidth = adjustAvailableWidthForTextIndent(availableWidth, firstLineOffset, line.maxWidth);
252609
+ }
252509
252610
  const isJustified = cellBlock.attrs?.alignment === "justify";
252510
252611
  const pos = mapPointToPm(cellBlock, line, localX, isRTL, availableWidth, isListItem$1 && !isJustified ? "left" : undefined);
252511
252612
  if (pos != null)
@@ -252581,15 +252682,17 @@ function selectionToRects(layout, blocks2, measures, from$1, to, geometryHelper)
252581
252682
  const isListItemFlag = isListItem2(markerWidth, block);
252582
252683
  const isJustified = block.attrs?.alignment === "justify";
252583
252684
  const alignmentOverride = isListItemFlag && !isJustified ? "left" : undefined;
252584
- const startX = mapPmToX(block, line, charOffsetFrom, fragment2.width, alignmentOverride);
252585
- const endX = mapPmToX(block, line, charOffsetTo, fragment2.width, alignmentOverride);
252685
+ const isFirstLine = index2 === fragment2.fromLine && !fragment2.continuesFromPrev;
252686
+ const fragmentMarkerTextWidth = fragment2.markerTextWidth ?? measure.marker?.markerTextWidth ?? undefined;
252687
+ const startX = mapPmToX(block, line, charOffsetFrom, fragment2.width, alignmentOverride, isFirstLine, fragmentMarkerTextWidth);
252688
+ const endX = mapPmToX(block, line, charOffsetTo, fragment2.width, alignmentOverride, isFirstLine, fragmentMarkerTextWidth);
252586
252689
  const indent2 = extractParagraphIndent(block.attrs?.indent);
252587
252690
  const wordLayout = getWordLayoutConfig(block);
252588
252691
  const indentAdjust = calculateTextStartIndent({
252589
- isFirstLine: index2 === fragment2.fromLine,
252692
+ isFirstLine,
252590
252693
  isListItem: isListItemFlag,
252591
252694
  markerWidth,
252592
- markerTextWidth: fragment2.markerTextWidth ?? measure.marker?.markerTextWidth ?? undefined,
252695
+ markerTextWidth: fragmentMarkerTextWidth,
252593
252696
  paraIndentLeft: indent2.left,
252594
252697
  firstLineIndent: indent2.firstLine,
252595
252698
  hangingIndent: indent2.hanging,
@@ -252753,13 +252856,15 @@ function selectionToRects(layout, blocks2, measures, from$1, to, geometryHelper)
252753
252856
  const charOffsetFrom = pmPosToCharOffset(info.block, line, sliceFrom);
252754
252857
  const charOffsetTo = pmPosToCharOffset(info.block, line, sliceTo);
252755
252858
  const availableWidth = Math.max(1, cellMeasure.width - padding.left - padding.right);
252756
- const startX = mapPmToX(info.block, line, charOffsetFrom, availableWidth, alignmentOverride);
252757
- const endX = mapPmToX(info.block, line, charOffsetTo, availableWidth, alignmentOverride);
252859
+ const isFirstLine = index2 === 0;
252860
+ const cellMarkerTextWidth = info.measure?.marker?.markerTextWidth ?? undefined;
252861
+ const startX = mapPmToX(info.block, line, charOffsetFrom, availableWidth, alignmentOverride, isFirstLine, cellMarkerTextWidth);
252862
+ const endX = mapPmToX(info.block, line, charOffsetTo, availableWidth, alignmentOverride, isFirstLine, cellMarkerTextWidth);
252758
252863
  const textIndentAdjust = calculateTextStartIndent({
252759
- isFirstLine: index2 === info.startLine,
252864
+ isFirstLine,
252760
252865
  isListItem: cellIsListItem,
252761
252866
  markerWidth: paragraphMarkerWidth,
252762
- markerTextWidth: info.measure?.marker?.markerTextWidth ?? undefined,
252867
+ markerTextWidth: cellMarkerTextWidth,
252763
252868
  paraIndentLeft: cellIndent.left,
252764
252869
  firstLineIndent: cellIndent.firstLine,
252765
252870
  hangingIndent: cellIndent.hanging,
@@ -258842,7 +258947,7 @@ async function measureParagraphBlock(block, maxWidth) {
258842
258947
  const hanging = indent2?.hanging ?? 0;
258843
258948
  const isWordLayoutList = Boolean(wordLayout?.marker);
258844
258949
  const rawFirstLineOffset = block.attrs?.suppressFirstLineIndent === true ? 0 : firstLine - hanging;
258845
- const firstLineOffset = isWordLayoutList ? 0 : !isWordLayoutList && !(indentLeft < 0 || indentRight < 0) && rawFirstLineOffset < 0 ? rawFirstLineOffset : Math.max(0, rawFirstLineOffset);
258950
+ const firstLineOffset = isWordLayoutList ? 0 : !isWordLayoutList && !(indentLeft < 0) && rawFirstLineOffset < 0 ? rawFirstLineOffset : Math.max(0, rawFirstLineOffset);
258846
258951
  const contentWidth = Math.max(1, maxWidth - indentLeft - indentRight);
258847
258952
  const bodyContentWidth = contentWidth;
258848
258953
  let initialAvailableWidth;
@@ -273471,7 +273576,7 @@ var Node$13 = class Node$14 {
273471
273576
  domAvailabilityCache = false;
273472
273577
  return false;
273473
273578
  }
273474
- }, summaryVersion = "1.25.0", nodeKeys, markKeys, transformListsInCopiedContent = (html3) => {
273579
+ }, summaryVersion = "1.26.0", nodeKeys, markKeys, transformListsInCopiedContent = (html3) => {
273475
273580
  const container = document.createElement("div");
273476
273581
  container.innerHTML = html3;
273477
273582
  const result = [];
@@ -273796,7 +273901,7 @@ var Node$13 = class Node$14 {
273796
273901
  console.warn("Failed to initialize developer tools:", error3);
273797
273902
  }
273798
273903
  }
273799
- }, 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, 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, SUPPORTED_DELETE_NODE_TYPES3, REJECTED_DELETE_NODE_TYPES3, TEXT_PREVIEW_MAX_LENGTH = 80, RANGE_DELETE_SAFE_NODE_TYPES, HEADING_PATTERN, FALLBACK_STORE_KEY = "__documentApiComments", REQUIRED_COMMANDS, VALID_CAPABILITY_REASON_CODES, REQUIRED_HELPERS, SCHEMA_NODE_GATES, schemaGatedIds, SUPPORTED_NON_UNIFORM_STRATEGIES, SUPPORTED_SET_MARKS, REGEX_MAX_PATTERN_LENGTH = 1024, STYLES_PART = "word/styles.xml", PROPERTIES_KEY_BY_CHANNEL, XML_PATH_BY_CHANNEL2, UNDERLINE_API_TO_STORAGE, UNDERLINE_STORAGE_TO_API, HEX_SUBKEYS_BY_PROPERTY, PARAGRAPH_NODE_TYPES, TEXT_STYLE_CHARACTER_STYLE_ATTR = "styleId", DIRECT_FORMATTING_MARK_NAMES, ALIGNMENT_TO_JUSTIFICATION, INDENT_PER_LEVEL_TWIPS = 720, HANGING_INDENT_TWIPS = 360, ORDERED_PRESET_CONFIG, BULLET_PRESET_CONFIG, PRESET_TEMPLATES, LevelFormattingHelpers, PRESET_KIND_MAP, NUMBERING_PART = "word/numbering.xml", DEFAULT_PRESET_FOR_KIND, _setValueDelegate, PREVIEW_TEXT_MAX_LENGTH = 2000, BLOCK_PREVIEW_MAX_LENGTH = 200, EDGE_NODE_TYPES$1, POINTS_TO_PIXELS, POINTS_TO_TWIPS = 20, PIXELS_TO_TWIPS, DEFAULT_TABLE_GRID_WIDTH_TWIPS = 1500, SETTINGS_PART$1 = "word/settings.xml", WORD_DEFAULT_TBL_LOOK, FLAG_TO_OOXML_KEY, INVERTED_FLAGS, XML_KEY_TO_STYLE_OPTION, CLEARED_BORDER_OOXML, TABLE_MARGIN_KEY_GROUPS, TABLE_ADAPTER_DISPATCH, ROW_TARGETED_TABLE_OPS, registered = false, STYLES_PART_ID = "word/styles.xml", stylesPartDescriptor, settingsPartDescriptor, RELS_PART_ID2 = "word/_rels/document.xml.rels", RELS_XMLNS2 = "http://schemas.openxmlformats.org/package/2006/relationships", HEADER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", relsPartDescriptor, 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, SETTINGS_PART, SPECIAL_NOTE_TYPES, 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.25.0", PIXELS_PER_INCH2 = 96, MAX_HEIGHT_BUFFER_PX = 50, MAX_WIDTH_BUFFER_PX = 20, cloneExtensionInstance = (extension3) => {
273904
+ }, 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, 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, SUPPORTED_DELETE_NODE_TYPES3, REJECTED_DELETE_NODE_TYPES3, TEXT_PREVIEW_MAX_LENGTH = 80, RANGE_DELETE_SAFE_NODE_TYPES, HEADING_PATTERN, FALLBACK_STORE_KEY = "__documentApiComments", REQUIRED_COMMANDS, VALID_CAPABILITY_REASON_CODES, REQUIRED_HELPERS, SCHEMA_NODE_GATES, schemaGatedIds, SUPPORTED_NON_UNIFORM_STRATEGIES, SUPPORTED_SET_MARKS, REGEX_MAX_PATTERN_LENGTH = 1024, STYLES_PART = "word/styles.xml", PROPERTIES_KEY_BY_CHANNEL, XML_PATH_BY_CHANNEL2, UNDERLINE_API_TO_STORAGE, UNDERLINE_STORAGE_TO_API, HEX_SUBKEYS_BY_PROPERTY, PARAGRAPH_NODE_TYPES, TEXT_STYLE_CHARACTER_STYLE_ATTR = "styleId", DIRECT_FORMATTING_MARK_NAMES, ALIGNMENT_TO_JUSTIFICATION, INDENT_PER_LEVEL_TWIPS = 720, HANGING_INDENT_TWIPS = 360, ORDERED_PRESET_CONFIG, BULLET_PRESET_CONFIG, PRESET_TEMPLATES, LevelFormattingHelpers, PRESET_KIND_MAP, NUMBERING_PART = "word/numbering.xml", DEFAULT_PRESET_FOR_KIND, _setValueDelegate, PREVIEW_TEXT_MAX_LENGTH = 2000, BLOCK_PREVIEW_MAX_LENGTH = 200, EDGE_NODE_TYPES$1, POINTS_TO_PIXELS, POINTS_TO_TWIPS = 20, PIXELS_TO_TWIPS, DEFAULT_TABLE_GRID_WIDTH_TWIPS = 1500, SETTINGS_PART$1 = "word/settings.xml", WORD_DEFAULT_TBL_LOOK, FLAG_TO_OOXML_KEY, INVERTED_FLAGS, XML_KEY_TO_STYLE_OPTION, CLEARED_BORDER_OOXML, TABLE_MARGIN_KEY_GROUPS, TABLE_ADAPTER_DISPATCH, ROW_TARGETED_TABLE_OPS, registered = false, STYLES_PART_ID = "word/styles.xml", stylesPartDescriptor, settingsPartDescriptor, RELS_PART_ID2 = "word/_rels/document.xml.rels", RELS_XMLNS2 = "http://schemas.openxmlformats.org/package/2006/relationships", HEADER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/header", FOOTER_RELATIONSHIP_TYPE$1 = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/footer", relsPartDescriptor, 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, SETTINGS_PART, SPECIAL_NOTE_TYPES, 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.26.0", PIXELS_PER_INCH2 = 96, MAX_HEIGHT_BUFFER_PX = 50, MAX_WIDTH_BUFFER_PX = 20, cloneExtensionInstance = (extension3) => {
273800
273905
  const extensionLike = extension3;
273801
273906
  const config2 = extensionLike?.config;
273802
273907
  const ExtensionCtor = extensionLike?.constructor;
@@ -277134,7 +277239,7 @@ var Node$13 = class Node$14 {
277134
277239
  }
277135
277240
  element3.style.textAlign = resolveTextAlign(attrs?.alignment, rtl);
277136
277241
  return rtl;
277137
- }, shouldUseSegmentPositioning = (hasExplicitPositioning, hasSegments, isRtl) => hasExplicitPositioning && hasSegments && !isRtl, MATHML_NS$9 = "http://www.w3.org/1998/Math/MathML", OPERATOR_CHARS, convertMathRun = (node3, doc$12) => {
277242
+ }, shouldUseSegmentPositioning = (hasExplicitPositioning, hasSegments, isRtl) => hasExplicitPositioning && hasSegments && !isRtl, MATHML_NS$14 = "http://www.w3.org/1998/Math/MathML", OPERATOR_CHARS, STY_TO_VARIANT, SCR_TO_VARIANT, convertMathRun = (node3, doc$12) => {
277138
277243
  const elements = node3.elements ?? [];
277139
277244
  let text5 = "";
277140
277245
  for (const child of elements)
@@ -277146,68 +277251,68 @@ var Node$13 = class Node$14 {
277146
277251
  }
277147
277252
  if (!text5)
277148
277253
  return null;
277149
- const isNormalText = elements.find((el$1) => el$1.name === "m:rPr")?.elements?.some((el$1) => el$1.name === "m:nor") ?? false;
277254
+ const variant = resolveMathVariant(elements.find((el$1) => el$1.name === "m:rPr"));
277150
277255
  const tag = classifyMathText(text5);
277151
- const el = doc$12.createElementNS(MATHML_NS$9, tag);
277256
+ const el = doc$12.createElementNS(MATHML_NS$14, tag);
277152
277257
  el.textContent = text5;
277153
- if (tag === "mi" && isNormalText)
277154
- el.setAttribute("mathvariant", "normal");
277258
+ if (variant)
277259
+ el.setAttribute("mathvariant", variant);
277155
277260
  return el;
277156
- }, MATHML_NS$8 = "http://www.w3.org/1998/Math/MathML", convertFraction = (node3, doc$12, convertChildren) => {
277261
+ }, MATHML_NS$13 = "http://www.w3.org/1998/Math/MathML", convertFraction = (node3, doc$12, convertChildren) => {
277157
277262
  const elements = node3.elements ?? [];
277158
277263
  const num = elements.find((e) => e.name === "m:num");
277159
277264
  const den = elements.find((e) => e.name === "m:den");
277160
- const frac = doc$12.createElementNS(MATHML_NS$8, "mfrac");
277161
- const numRow = doc$12.createElementNS(MATHML_NS$8, "mrow");
277265
+ const frac = doc$12.createElementNS(MATHML_NS$13, "mfrac");
277266
+ const numRow = doc$12.createElementNS(MATHML_NS$13, "mrow");
277162
277267
  numRow.appendChild(convertChildren(num?.elements ?? []));
277163
277268
  frac.appendChild(numRow);
277164
- const denRow = doc$12.createElementNS(MATHML_NS$8, "mrow");
277269
+ const denRow = doc$12.createElementNS(MATHML_NS$13, "mrow");
277165
277270
  denRow.appendChild(convertChildren(den?.elements ?? []));
277166
277271
  frac.appendChild(denRow);
277167
277272
  return frac;
277168
- }, MATHML_NS$7 = "http://www.w3.org/1998/Math/MathML", convertBar = (node3, doc$12, convertChildren) => {
277273
+ }, MATHML_NS$12 = "http://www.w3.org/1998/Math/MathML", convertBar = (node3, doc$12, convertChildren) => {
277169
277274
  const elements = node3.elements ?? [];
277170
277275
  const isUnder = elements.find((e) => e.name === "m:barPr")?.elements?.find((e) => e.name === "m:pos")?.attributes?.["m:val"] !== "top";
277171
277276
  const base5 = elements.find((e) => e.name === "m:e");
277172
- const wrapper = doc$12.createElementNS(MATHML_NS$7, isUnder ? "munder" : "mover");
277277
+ const wrapper = doc$12.createElementNS(MATHML_NS$12, isUnder ? "munder" : "mover");
277173
277278
  const baseContent = convertChildren(base5?.elements ?? []);
277174
- const mrow = doc$12.createElementNS(MATHML_NS$7, "mrow");
277279
+ const mrow = doc$12.createElementNS(MATHML_NS$12, "mrow");
277175
277280
  mrow.appendChild(baseContent);
277176
277281
  wrapper.appendChild(mrow);
277177
- const accent = doc$12.createElementNS(MATHML_NS$7, "mo");
277282
+ const accent = doc$12.createElementNS(MATHML_NS$12, "mo");
277178
277283
  accent.setAttribute("stretchy", "true");
277179
277284
  accent.textContent = "‾";
277180
277285
  wrapper.appendChild(accent);
277181
277286
  return wrapper;
277182
- }, MATHML_NS$6 = "http://www.w3.org/1998/Math/MathML", FUNCTION_APPLY_OPERATOR = "⁡", convertFunction = (node3, doc$12, convertChildren) => {
277287
+ }, MATHML_NS$11 = "http://www.w3.org/1998/Math/MathML", FUNCTION_APPLY_OPERATOR = "⁡", convertFunction = (node3, doc$12, convertChildren) => {
277183
277288
  const elements = node3.elements ?? [];
277184
277289
  const functionName = elements.find((element3) => element3.name === "m:fName");
277185
277290
  const argument = elements.find((element3) => element3.name === "m:e");
277186
- const wrapper = doc$12.createElementNS(MATHML_NS$6, "mrow");
277187
- const functionNameRow = doc$12.createElementNS(MATHML_NS$6, "mrow");
277291
+ const wrapper = doc$12.createElementNS(MATHML_NS$11, "mrow");
277292
+ const functionNameRow = doc$12.createElementNS(MATHML_NS$11, "mrow");
277188
277293
  functionNameRow.appendChild(convertChildren(functionName?.elements ?? []));
277189
277294
  forceNormalMathVariant(functionNameRow);
277190
277295
  if (functionNameRow.childNodes.length > 0)
277191
277296
  wrapper.appendChild(functionNameRow);
277192
- const argumentRow = doc$12.createElementNS(MATHML_NS$6, "mrow");
277297
+ const argumentRow = doc$12.createElementNS(MATHML_NS$11, "mrow");
277193
277298
  argumentRow.appendChild(convertChildren(argument?.elements ?? []));
277194
277299
  if (functionNameRow.childNodes.length > 0 && argumentRow.childNodes.length > 0) {
277195
- const applyOperator = doc$12.createElementNS(MATHML_NS$6, "mo");
277300
+ const applyOperator = doc$12.createElementNS(MATHML_NS$11, "mo");
277196
277301
  applyOperator.textContent = FUNCTION_APPLY_OPERATOR;
277197
277302
  wrapper.appendChild(applyOperator);
277198
277303
  }
277199
277304
  if (argumentRow.childNodes.length > 0)
277200
277305
  wrapper.appendChild(argumentRow);
277201
277306
  return wrapper.childNodes.length > 0 ? wrapper : null;
277202
- }, MATHML_NS$5 = "http://www.w3.org/1998/Math/MathML", DEFAULT_BEGIN_DELIMITER = "(", DEFAULT_END_DELIMITER = ")", DEFAULT_SEPARATOR_DELIMITER = "│", convertDelimiter = (node3, doc$12, convertChildren) => {
277307
+ }, MATHML_NS$10 = "http://www.w3.org/1998/Math/MathML", DEFAULT_BEGIN_DELIMITER = "(", DEFAULT_END_DELIMITER = ")", DEFAULT_SEPARATOR_DELIMITER = "│", convertDelimiter = (node3, doc$12, convertChildren) => {
277203
277308
  const elements = node3.elements ?? [];
277204
277309
  const delimiterProps = elements.find((element3) => element3.name === "m:dPr");
277205
277310
  const expressions = elements.filter((element3) => element3.name === "m:e");
277206
277311
  const beginDelimiter = getDelimiterValue(delimiterProps, "m:begChr", DEFAULT_BEGIN_DELIMITER);
277207
277312
  const endDelimiter = getDelimiterValue(delimiterProps, "m:endChr", DEFAULT_END_DELIMITER);
277208
277313
  const separatorDelimiter = getDelimiterValue(delimiterProps, "m:sepChr", DEFAULT_SEPARATOR_DELIMITER);
277209
- const wrapper = doc$12.createElementNS(MATHML_NS$5, "mrow");
277210
- const begin = doc$12.createElementNS(MATHML_NS$5, "mo");
277314
+ const wrapper = doc$12.createElementNS(MATHML_NS$10, "mrow");
277315
+ const begin = doc$12.createElementNS(MATHML_NS$10, "mo");
277211
277316
  begin.textContent = beginDelimiter;
277212
277317
  wrapper.appendChild(begin);
277213
277318
  let renderedCount = 0;
@@ -277216,81 +277321,170 @@ var Node$13 = class Node$14 {
277216
277321
  if (fragment2.childNodes.length === 0)
277217
277322
  continue;
277218
277323
  if (renderedCount > 0) {
277219
- const separator = doc$12.createElementNS(MATHML_NS$5, "mo");
277324
+ const separator = doc$12.createElementNS(MATHML_NS$10, "mo");
277220
277325
  separator.textContent = separatorDelimiter;
277221
277326
  wrapper.appendChild(separator);
277222
277327
  }
277223
- const group = doc$12.createElementNS(MATHML_NS$5, "mrow");
277328
+ const group = doc$12.createElementNS(MATHML_NS$10, "mrow");
277224
277329
  group.appendChild(fragment2);
277225
277330
  wrapper.appendChild(group);
277226
277331
  renderedCount++;
277227
277332
  }
277228
- const end$1 = doc$12.createElementNS(MATHML_NS$5, "mo");
277333
+ const end$1 = doc$12.createElementNS(MATHML_NS$10, "mo");
277229
277334
  end$1.textContent = endDelimiter;
277230
277335
  wrapper.appendChild(end$1);
277231
277336
  return wrapper;
277232
- }, MATHML_NS$4 = "http://www.w3.org/1998/Math/MathML", convertSubscript = (node3, doc$12, convertChildren) => {
277337
+ }, MATHML_NS$9 = "http://www.w3.org/1998/Math/MathML", convertSubscript = (node3, doc$12, convertChildren) => {
277233
277338
  const elements = node3.elements ?? [];
277234
277339
  const base5 = elements.find((e) => e.name === "m:e");
277235
277340
  const sub = elements.find((e) => e.name === "m:sub");
277236
- const msub = doc$12.createElementNS(MATHML_NS$4, "msub");
277237
- const baseRow = doc$12.createElementNS(MATHML_NS$4, "mrow");
277341
+ const msub = doc$12.createElementNS(MATHML_NS$9, "msub");
277342
+ const baseRow = doc$12.createElementNS(MATHML_NS$9, "mrow");
277238
277343
  baseRow.appendChild(convertChildren(base5?.elements ?? []));
277239
277344
  msub.appendChild(baseRow);
277240
- const subRow = doc$12.createElementNS(MATHML_NS$4, "mrow");
277345
+ const subRow = doc$12.createElementNS(MATHML_NS$9, "mrow");
277241
277346
  subRow.appendChild(convertChildren(sub?.elements ?? []));
277242
277347
  msub.appendChild(subRow);
277243
277348
  return msub;
277244
- }, MATHML_NS$3 = "http://www.w3.org/1998/Math/MathML", convertSuperscript = (node3, doc$12, convertChildren) => {
277349
+ }, MATHML_NS$8 = "http://www.w3.org/1998/Math/MathML", convertSuperscript = (node3, doc$12, convertChildren) => {
277245
277350
  const elements = node3.elements ?? [];
277246
277351
  const base5 = elements.find((e) => e.name === "m:e");
277247
277352
  const sup = elements.find((e) => e.name === "m:sup");
277248
- const msup = doc$12.createElementNS(MATHML_NS$3, "msup");
277249
- const baseRow = doc$12.createElementNS(MATHML_NS$3, "mrow");
277353
+ const msup = doc$12.createElementNS(MATHML_NS$8, "msup");
277354
+ const baseRow = doc$12.createElementNS(MATHML_NS$8, "mrow");
277250
277355
  baseRow.appendChild(convertChildren(base5?.elements ?? []));
277251
277356
  msup.appendChild(baseRow);
277252
- const supRow = doc$12.createElementNS(MATHML_NS$3, "mrow");
277357
+ const supRow = doc$12.createElementNS(MATHML_NS$8, "mrow");
277253
277358
  supRow.appendChild(convertChildren(sup?.elements ?? []));
277254
277359
  msup.appendChild(supRow);
277255
277360
  return msup;
277256
- }, MATHML_NS$2 = "http://www.w3.org/1998/Math/MathML", convertSubSuperscript = (node3, doc$12, convertChildren) => {
277361
+ }, MATHML_NS$7 = "http://www.w3.org/1998/Math/MathML", convertSubSuperscript = (node3, doc$12, convertChildren) => {
277257
277362
  const elements = node3.elements ?? [];
277258
277363
  const base5 = elements.find((e) => e.name === "m:e");
277259
277364
  const sub = elements.find((e) => e.name === "m:sub");
277260
277365
  const sup = elements.find((e) => e.name === "m:sup");
277261
- const msubsup = doc$12.createElementNS(MATHML_NS$2, "msubsup");
277262
- const baseRow = doc$12.createElementNS(MATHML_NS$2, "mrow");
277366
+ const msubsup = doc$12.createElementNS(MATHML_NS$7, "msubsup");
277367
+ const baseRow = doc$12.createElementNS(MATHML_NS$7, "mrow");
277263
277368
  baseRow.appendChild(convertChildren(base5?.elements ?? []));
277264
277369
  msubsup.appendChild(baseRow);
277265
- const subRow = doc$12.createElementNS(MATHML_NS$2, "mrow");
277370
+ const subRow = doc$12.createElementNS(MATHML_NS$7, "mrow");
277266
277371
  subRow.appendChild(convertChildren(sub?.elements ?? []));
277267
277372
  msubsup.appendChild(subRow);
277268
- const supRow = doc$12.createElementNS(MATHML_NS$2, "mrow");
277373
+ const supRow = doc$12.createElementNS(MATHML_NS$7, "mrow");
277269
277374
  supRow.appendChild(convertChildren(sup?.elements ?? []));
277270
277375
  msubsup.appendChild(supRow);
277271
277376
  return msubsup;
277272
- }, MATHML_NS$1 = "http://www.w3.org/1998/Math/MathML", convertRadical = (node3, doc$12, convertChildren) => {
277377
+ }, MATHML_NS$6 = "http://www.w3.org/1998/Math/MathML", DEFAULT_ACCENT_CHAR = "̂", COMBINING_TO_SPACING, convertAccent = (node3, doc$12, convertChildren) => {
277378
+ const elements = node3.elements ?? [];
277379
+ const base5 = elements.find((e) => e.name === "m:e");
277380
+ if (!base5)
277381
+ return null;
277382
+ const chr = elements.find((e) => e.name === "m:accPr")?.elements?.find((e) => e.name === "m:chr");
277383
+ const rawVal = chr?.attributes?.["m:val"];
277384
+ const accentChar = chr === undefined ? DEFAULT_ACCENT_CHAR : rawVal && rawVal.length > 0 ? rawVal : "";
277385
+ const baseRow = doc$12.createElementNS(MATHML_NS$6, "mrow");
277386
+ baseRow.appendChild(convertChildren(base5.elements ?? []));
277387
+ if (!accentChar)
277388
+ return baseRow;
277389
+ const renderChar = COMBINING_TO_SPACING[accentChar] ?? accentChar;
277390
+ const mover = doc$12.createElementNS(MATHML_NS$6, "mover");
277391
+ mover.setAttribute("accent", "true");
277392
+ mover.appendChild(baseRow);
277393
+ const mo = doc$12.createElementNS(MATHML_NS$6, "mo");
277394
+ mo.setAttribute("stretchy", "true");
277395
+ mo.textContent = renderChar;
277396
+ mover.appendChild(mo);
277397
+ return mover;
277398
+ }, MATHML_NS$5 = "http://www.w3.org/1998/Math/MathML", convertPreSubSuperscript = (node3, doc$12, convertChildren) => {
277399
+ const elements = node3.elements ?? [];
277400
+ const base5 = elements.find((e) => e.name === "m:e");
277401
+ const sub = elements.find((e) => e.name === "m:sub");
277402
+ const sup = elements.find((e) => e.name === "m:sup");
277403
+ const mmultiscripts = doc$12.createElementNS(MATHML_NS$5, "mmultiscripts");
277404
+ const baseRow = doc$12.createElementNS(MATHML_NS$5, "mrow");
277405
+ baseRow.appendChild(convertChildren(base5?.elements ?? []));
277406
+ mmultiscripts.appendChild(baseRow);
277407
+ mmultiscripts.appendChild(doc$12.createElementNS(MATHML_NS$5, "mprescripts"));
277408
+ const subRow = doc$12.createElementNS(MATHML_NS$5, "mrow");
277409
+ subRow.appendChild(convertChildren(sub?.elements ?? []));
277410
+ mmultiscripts.appendChild(subRow);
277411
+ const supRow = doc$12.createElementNS(MATHML_NS$5, "mrow");
277412
+ supRow.appendChild(convertChildren(sup?.elements ?? []));
277413
+ mmultiscripts.appendChild(supRow);
277414
+ return mmultiscripts;
277415
+ }, MATHML_NS$4 = "http://www.w3.org/1998/Math/MathML", stripAlignmentMarkers = (nodes) => nodes.map((node3) => {
277416
+ if (node3?.type === "text" && typeof node3.text === "string" && node3.text.includes("&"))
277417
+ return {
277418
+ ...node3,
277419
+ text: node3.text.replace(/&/g, "")
277420
+ };
277421
+ if (node3?.elements)
277422
+ return {
277423
+ ...node3,
277424
+ elements: stripAlignmentMarkers(node3.elements)
277425
+ };
277426
+ return node3;
277427
+ }), convertEquationArray = (node3, doc$12, convertChildren) => {
277428
+ const rows = (node3.elements ?? []).filter((e) => e.name === "m:e");
277429
+ const mtable = doc$12.createElementNS(MATHML_NS$4, "mtable");
277430
+ mtable.setAttribute("columnalign", "left");
277431
+ for (const row2 of rows) {
277432
+ const mtr = doc$12.createElementNS(MATHML_NS$4, "mtr");
277433
+ const mtd = doc$12.createElementNS(MATHML_NS$4, "mtd");
277434
+ const mrow = doc$12.createElementNS(MATHML_NS$4, "mrow");
277435
+ const cleanedChildren = stripAlignmentMarkers(row2.elements ?? []);
277436
+ mrow.appendChild(convertChildren(cleanedChildren));
277437
+ mtd.appendChild(mrow);
277438
+ mtr.appendChild(mtd);
277439
+ mtable.appendChild(mtr);
277440
+ }
277441
+ return mtable.childNodes.length > 0 ? mtable : null;
277442
+ }, MATHML_NS$3 = "http://www.w3.org/1998/Math/MathML", convertRadical = (node3, doc$12, convertChildren) => {
277273
277443
  const elements = node3.elements ?? [];
277274
277444
  const radPr = elements.find((e) => e.name === "m:radPr");
277275
277445
  const deg = elements.find((e) => e.name === "m:deg");
277276
277446
  const radicand = elements.find((e) => e.name === "m:e");
277277
277447
  const degHideEl = radPr?.elements?.find((e) => e.name === "m:degHide");
277278
277448
  const degHideVal = degHideEl?.attributes?.["m:val"];
277279
- if (degHideEl !== undefined && degHideVal !== "0" && degHideVal !== "false" || !deg) {
277280
- const msqrt = doc$12.createElementNS(MATHML_NS$1, "msqrt");
277281
- const radicandRow$1 = doc$12.createElementNS(MATHML_NS$1, "mrow");
277449
+ if (degHideEl !== undefined && degHideVal !== "0" && degHideVal !== "false" && degHideVal !== "off" || !deg || (deg.elements ?? []).length === 0) {
277450
+ const msqrt = doc$12.createElementNS(MATHML_NS$3, "msqrt");
277451
+ const radicandRow$1 = doc$12.createElementNS(MATHML_NS$3, "mrow");
277282
277452
  radicandRow$1.appendChild(convertChildren(radicand?.elements ?? []));
277283
277453
  msqrt.appendChild(radicandRow$1);
277284
277454
  return msqrt;
277285
277455
  }
277286
- const mroot = doc$12.createElementNS(MATHML_NS$1, "mroot");
277287
- const radicandRow = doc$12.createElementNS(MATHML_NS$1, "mrow");
277456
+ const mroot = doc$12.createElementNS(MATHML_NS$3, "mroot");
277457
+ const radicandRow = doc$12.createElementNS(MATHML_NS$3, "mrow");
277288
277458
  radicandRow.appendChild(convertChildren(radicand?.elements ?? []));
277289
277459
  mroot.appendChild(radicandRow);
277290
- const degRow = doc$12.createElementNS(MATHML_NS$1, "mrow");
277460
+ const degRow = doc$12.createElementNS(MATHML_NS$3, "mrow");
277291
277461
  degRow.appendChild(convertChildren(deg?.elements ?? []));
277292
277462
  mroot.appendChild(degRow);
277293
277463
  return mroot;
277464
+ }, MATHML_NS$2 = "http://www.w3.org/1998/Math/MathML", convertLowerLimit = (node3, doc$12, convertChildren) => {
277465
+ const elements = node3.elements ?? [];
277466
+ const base5 = elements.find((e) => e.name === "m:e");
277467
+ const lim = elements.find((e) => e.name === "m:lim");
277468
+ const munder = doc$12.createElementNS(MATHML_NS$2, "munder");
277469
+ const baseRow = doc$12.createElementNS(MATHML_NS$2, "mrow");
277470
+ baseRow.appendChild(convertChildren(base5?.elements ?? []));
277471
+ munder.appendChild(baseRow);
277472
+ const limRow = doc$12.createElementNS(MATHML_NS$2, "mrow");
277473
+ limRow.appendChild(convertChildren(lim?.elements ?? []));
277474
+ munder.appendChild(limRow);
277475
+ return munder;
277476
+ }, MATHML_NS$1 = "http://www.w3.org/1998/Math/MathML", convertUpperLimit = (node3, doc$12, convertChildren) => {
277477
+ const elements = node3.elements ?? [];
277478
+ const base5 = elements.find((e) => e.name === "m:e");
277479
+ const lim = elements.find((e) => e.name === "m:lim");
277480
+ const mover = doc$12.createElementNS(MATHML_NS$1, "mover");
277481
+ const baseRow = doc$12.createElementNS(MATHML_NS$1, "mrow");
277482
+ baseRow.appendChild(convertChildren(base5?.elements ?? []));
277483
+ mover.appendChild(baseRow);
277484
+ const limRow = doc$12.createElementNS(MATHML_NS$1, "mrow");
277485
+ limRow.appendChild(convertChildren(lim?.elements ?? []));
277486
+ mover.appendChild(limRow);
277487
+ return mover;
277294
277488
  }, MATHML_NS = "http://www.w3.org/1998/Math/MathML", MATH_OBJECT_REGISTRY, ARGUMENT_ELEMENTS, LIST_MARKER_GAP$1 = 8, DEFAULT_PAGE_HEIGHT_PX = 1056, DEFAULT_VIRTUALIZED_PAGE_GAP = 72, LINK_DATASET_KEYS, MAX_HREF_LENGTH = 2048, SAFE_ANCHOR_PATTERN, MAX_DATA_URL_LENGTH, VALID_IMAGE_DATA_URL, MAX_RESIZE_MULTIPLIER = 3, FALLBACK_MAX_DIMENSION = 1000, MIN_IMAGE_DIMENSION = 20, AMBIGUOUS_LINK_PATTERNS, linkMetrics, TRACK_CHANGE_BASE_CLASS, TRACK_CHANGE_MODIFIER_CLASS, LINK_TARGET_SET, normalizeAnchor$1 = (value) => {
277295
277489
  if (typeof value !== "string")
277296
277490
  return null;
@@ -280596,6 +280790,7 @@ var Node$13 = class Node$14 {
280596
280790
  const rawMeasures = cellMeasure.blocks ?? (cellMeasure.paragraph ? [cellMeasure.paragraph] : []);
280597
280791
  const cellBlockMeasures = (Array.isArray(rawMeasures) ? rawMeasures : []).filter((m$1) => m$1 != null && typeof m$1 === "object" && ("kind" in m$1));
280598
280792
  let blockStartY = 0;
280793
+ let blockStartGlobalLines = 0;
280599
280794
  const getBlockHeight = (m$1) => {
280600
280795
  if (!m$1)
280601
280796
  return 0;
@@ -280639,10 +280834,12 @@ var Node$13 = class Node$14 {
280639
280834
  cellBlock: paragraphBlock,
280640
280835
  cellMeasure: paragraphMeasure,
280641
280836
  localX: Math.max(0, cellLocalX),
280642
- localY: Math.max(0, localYWithinBlock)
280837
+ localY: Math.max(0, localYWithinBlock),
280838
+ blockStartGlobal: blockStartGlobalLines
280643
280839
  };
280644
280840
  }
280645
280841
  blockStartY = blockEndY;
280842
+ blockStartGlobalLines += paragraphMeasure.lines.length;
280646
280843
  }
280647
280844
  }
280648
280845
  return null;
@@ -280688,29 +280885,38 @@ var Node$13 = class Node$14 {
280688
280885
  for (let i4 = 0;i4 < absoluteLineIndex; i4 += 1)
280689
280886
  height += measure.lines[i4]?.lineHeight ?? 0;
280690
280887
  return height;
280691
- }, mapPmToX = (block, line, offset$1, fragmentWidth, alignmentOverride) => {
280888
+ }, mapPmToX = (block, line, offset$1, fragmentWidth, alignmentOverride, isFirstLine, markerTextWidth) => {
280692
280889
  if (fragmentWidth <= 0 || line.width <= 0)
280693
280890
  return 0;
280694
280891
  let paraIndentLeft = 0;
280695
280892
  let paraIndentRight = 0;
280696
280893
  let effectiveLeft = 0;
280894
+ let isListParagraph = false;
280895
+ let wl;
280697
280896
  if (block.kind === "paragraph") {
280698
280897
  const indentLeft = typeof block.attrs?.indent?.left === "number" ? block.attrs.indent.left : 0;
280699
280898
  const indentRight = typeof block.attrs?.indent?.right === "number" ? block.attrs.indent.right : 0;
280700
280899
  paraIndentLeft = Number.isFinite(indentLeft) ? indentLeft : 0;
280701
280900
  paraIndentRight = Number.isFinite(indentRight) ? indentRight : 0;
280702
280901
  effectiveLeft = paraIndentLeft;
280703
- const wl = getWordLayoutConfig(block);
280704
- if (Boolean(block.attrs?.numberingProperties) || Boolean(wl?.marker)) {
280902
+ wl = getWordLayoutConfig(block);
280903
+ isListParagraph = Boolean(block.attrs?.numberingProperties) || Boolean(wl?.marker);
280904
+ if (isListParagraph) {
280705
280905
  const explicitTextStart = typeof wl?.marker?.textStartX === "number" && Number.isFinite(wl.marker.textStartX) ? wl.marker.textStartX : typeof wl?.textStartPx === "number" && Number.isFinite(wl.textStartPx) ? wl.textStartPx : undefined;
280706
280906
  if (typeof explicitTextStart === "number" && explicitTextStart > paraIndentLeft)
280707
280907
  effectiveLeft = explicitTextStart;
280708
280908
  }
280709
280909
  }
280710
280910
  const totalIndent = effectiveLeft + paraIndentRight;
280711
- const availableWidth = Math.max(0, fragmentWidth - totalIndent);
280911
+ let availableWidth = Math.max(0, fragmentWidth - totalIndent);
280712
280912
  if (totalIndent > fragmentWidth)
280713
280913
  console.warn(`[mapPmToX] Paragraph indents (${totalIndent}px) exceed fragment width (${fragmentWidth}px) for block ${block.id}. This may indicate a layout miscalculation. Available width clamped to 0.`);
280914
+ const hasRenderedMarkerText = isListParagraph && (markerTextWidth ?? 0) > 0;
280915
+ if (isFirstLine && block.kind === "paragraph" && !hasRenderedMarkerText) {
280916
+ const suppressFLI = block.attrs?.suppressFirstLineIndent === true;
280917
+ const firstLineOffset = getFirstLineIndentOffset(block.attrs?.indent, suppressFLI);
280918
+ availableWidth = adjustAvailableWidthForTextIndent(availableWidth, firstLineOffset, line.maxWidth);
280919
+ }
280714
280920
  return measureCharacterX(block, line, offset$1, availableWidth, alignmentOverride);
280715
280921
  }, WORD_CHARACTER_REGEX, EpochPositionMapper = class {
280716
280922
  #currentEpoch = 0;
@@ -287394,12 +287600,12 @@ var Node$13 = class Node$14 {
287394
287600
  return;
287395
287601
  console.log(...args$1);
287396
287602
  }, 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;
287397
- var init_src_CGh2gsCt_es = __esm(() => {
287603
+ var init_src_CZB4kJvn_es = __esm(() => {
287398
287604
  init_rolldown_runtime_Bg48TavK_es();
287399
- init_SuperConverter_DWRVjawM_es();
287605
+ init_SuperConverter_CWhofwLf_es();
287400
287606
  init_jszip_C49i9kUs_es();
287401
287607
  init_uuid_qzgm05fK_es();
287402
- init_create_headless_toolbar_BIMyZsso_es();
287608
+ init_create_headless_toolbar_C2iuH72Y_es();
287403
287609
  init_constants_CGhJRd87_es();
287404
287610
  init_dist_B8HfvhaK_es();
287405
287611
  init_unified_Dsuw2be5_es();
@@ -313132,27 +313338,56 @@ function print() { __p += __j.call(arguments, '') }
313132
313338
  "⊆",
313133
313339
  "⊇"
313134
313340
  ]);
313341
+ STY_TO_VARIANT = {
313342
+ p: "normal",
313343
+ b: "bold",
313344
+ i: "italic",
313345
+ bi: "bold-italic"
313346
+ };
313347
+ SCR_TO_VARIANT = {
313348
+ roman: "normal",
313349
+ script: "script",
313350
+ fraktur: "fraktur",
313351
+ "double-struck": "double-struck",
313352
+ "sans-serif": "sans-serif",
313353
+ monospace: "monospace"
313354
+ };
313355
+ COMBINING_TO_SPACING = {
313356
+ "̀": "`",
313357
+ "́": "´",
313358
+ "̂": "^",
313359
+ "̃": "~",
313360
+ "̄": "¯",
313361
+ "̆": "˘",
313362
+ "̇": "˙",
313363
+ "̈": "¨",
313364
+ "̊": "˚",
313365
+ "̋": "˝",
313366
+ "̌": "ˇ",
313367
+ "⃖": "←",
313368
+ "⃗": "→"
313369
+ };
313135
313370
  MATH_OBJECT_REGISTRY = {
313136
313371
  "m:r": convertMathRun,
313372
+ "m:acc": convertAccent,
313137
313373
  "m:bar": convertBar,
313138
313374
  "m:d": convertDelimiter,
313375
+ "m:eqArr": convertEquationArray,
313139
313376
  "m:f": convertFraction,
313140
313377
  "m:func": convertFunction,
313378
+ "m:limLow": convertLowerLimit,
313379
+ "m:limUpp": convertUpperLimit,
313380
+ "m:rad": convertRadical,
313141
313381
  "m:sSub": convertSubscript,
313142
313382
  "m:sSup": convertSuperscript,
313143
313383
  "m:sSubSup": convertSubSuperscript,
313144
- "m:acc": null,
313384
+ "m:sPre": convertPreSubSuperscript,
313145
313385
  "m:borderBox": null,
313146
313386
  "m:box": null,
313147
- "m:eqArr": null,
313148
313387
  "m:groupChr": null,
313149
- "m:limLow": null,
313150
- "m:limUpp": null,
313151
313388
  "m:m": null,
313152
313389
  "m:nary": null,
313153
- "m:phant": null,
313154
- "m:rad": convertRadical,
313155
- "m:sPre": null
313390
+ "m:phant": null
313156
313391
  };
313157
313392
  ARGUMENT_ELEMENTS = new Set([
313158
313393
  "m:e",
@@ -314570,10 +314805,12 @@ function print() { __p += __j.call(arguments, '') }
314570
314805
  let availableWidthOverride = line.maxWidth != null ? Math.min(line.maxWidth, fallbackAvailableWidth) : fallbackAvailableWidth;
314571
314806
  if (shouldUseResolvedListTextStart)
314572
314807
  availableWidthOverride = fragment2.width - listFirstLineTextStartPx - Math.max(0, paraIndentRight);
314808
+ const isFirstLine = index2 === 0 && !fragment2.continuesFromPrev;
314809
+ const isListFirstLine = Boolean(hasListFirstLineMarker && fragment2.markerTextWidth);
314810
+ if (isFirstLine && !isListFirstLine && !hasExplicitSegmentPositioning)
314811
+ availableWidthOverride = adjustAvailableWidthForTextIndent(availableWidthOverride, firstLineOffset, line.maxWidth);
314573
314812
  const shouldSkipJustifyForLastLine = index2 === lines.length - 1 && !fragment2.continuesOnNext && !paragraphEndsWithLineBreak;
314574
314813
  const lineEl = this.renderLine(block, line, context, availableWidthOverride, fragment2.fromLine + index2, shouldSkipJustifyForLastLine, shouldUseResolvedListTextStart ? listFirstLineTextStartPx : undefined);
314575
- const isListFirstLine = Boolean(hasListFirstLineMarker && fragment2.markerTextWidth);
314576
- const isFirstLine = index2 === 0 && !fragment2.continuesFromPrev;
314577
314814
  if (!isListFirstLine) {
314578
314815
  if (hasExplicitSegmentPositioning) {
314579
314816
  if (isFirstLine && firstLineOffset !== 0) {
@@ -322121,11 +322358,11 @@ var init_zipper_DbkgrypV_es = __esm(() => {
322121
322358
 
322122
322359
  // ../../packages/superdoc/dist/super-editor.es.js
322123
322360
  var init_super_editor_es = __esm(() => {
322124
- init_src_CGh2gsCt_es();
322125
- init_SuperConverter_DWRVjawM_es();
322361
+ init_src_CZB4kJvn_es();
322362
+ init_SuperConverter_CWhofwLf_es();
322126
322363
  init_jszip_C49i9kUs_es();
322127
322364
  init_xml_js_CqGKpaft_es();
322128
- init_create_headless_toolbar_BIMyZsso_es();
322365
+ init_create_headless_toolbar_C2iuH72Y_es();
322129
322366
  init_constants_CGhJRd87_es();
322130
322367
  init_dist_B8HfvhaK_es();
322131
322368
  init_unified_Dsuw2be5_es();
@@ -373875,6 +374112,11 @@ var init_operation_params = __esm(() => {
373875
374112
  description: "Room/document identifier. Defaults to session ID if omitted."
373876
374113
  },
373877
374114
  tokenEnv: { type: "string", description: "Environment variable name containing the auth token." },
374115
+ params: {
374116
+ type: "object",
374117
+ description: "Custom query parameters appended to the WebSocket URL. Values must be strings. Reserved keys: token.",
374118
+ additionalProperties: { type: "string" }
374119
+ },
373878
374120
  syncTimeoutMs: { type: "number", description: "Max time (ms) to wait for initial sync." },
373879
374121
  onMissing: {
373880
374122
  type: "string",
@@ -374751,7 +374993,7 @@ function validateValueAgainstTypeSpec(value2, schema, path2) {
374751
374993
  throw new CliError("VALIDATION_ERROR", `${path2}.${key2} is required.`);
374752
374994
  }
374753
374995
  }
374754
- const propertyEntries = Object.entries(schema.properties);
374996
+ const propertyEntries = schema.properties ? Object.entries(schema.properties) : [];
374755
374997
  const shouldRestrictUnknownKeys = propertyEntries.length > 0 || required.length > 0;
374756
374998
  if (shouldRestrictUnknownKeys) {
374757
374999
  const knownKeys = new Set(propertyEntries.map(([key2]) => key2));
@@ -374824,7 +375066,8 @@ function validateResponseValueAgainstTypeSpec(value2, schema, path2) {
374824
375066
  throw new CliError("VALIDATION_ERROR", `${path2}.${key2} is required.`);
374825
375067
  }
374826
375068
  }
374827
- for (const [key2, propSchema] of Object.entries(schema.properties)) {
375069
+ const properties = schema.properties ?? {};
375070
+ for (const [key2, propSchema] of Object.entries(properties)) {
374828
375071
  if (!Object.prototype.hasOwnProperty.call(value2, key2))
374829
375072
  continue;
374830
375073
  validateResponseValueAgainstTypeSpec(value2[key2], propSchema, `${path2}.${key2}`);
@@ -382569,9 +382812,16 @@ var init_version2 = () => {};
382569
382812
 
382570
382813
  // src/host/session-pool.ts
382571
382814
  import { createHash as createHash4 } from "node:crypto";
382815
+ function stableStringify4(value2) {
382816
+ if (value2 === null || typeof value2 !== "object")
382817
+ return JSON.stringify(value2);
382818
+ if (Array.isArray(value2))
382819
+ return `[${value2.map(stableStringify4).join(",")}]`;
382820
+ const entries3 = Object.keys(value2).sort().map((key2) => `${JSON.stringify(key2)}:${stableStringify4(value2[key2])}`);
382821
+ return `{${entries3.join(",")}}`;
382822
+ }
382572
382823
  function profileToFingerprint(profile) {
382573
- const sortedJson = JSON.stringify(profile, Object.keys(profile).sort());
382574
- return createHash4("sha256").update(sortedJson).digest("hex");
382824
+ return createHash4("sha256").update(stableStringify4(profile)).digest("hex");
382575
382825
  }
382576
382826
  function createSessionLocks() {
382577
382827
  const locks = new Map;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@superdoc-dev/cli",
3
- "version": "0.7.0-next.1",
3
+ "version": "0.7.0-next.10",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "superdoc": "./dist/index.js"
@@ -26,19 +26,19 @@
26
26
  "typescript": "^5.9.2",
27
27
  "@superdoc/document-api": "0.0.1",
28
28
  "@superdoc/pm-adapter": "0.0.0",
29
- "superdoc": "1.25.0",
30
- "@superdoc/super-editor": "0.0.1"
29
+ "@superdoc/super-editor": "0.0.1",
30
+ "superdoc": "1.26.0"
31
31
  },
32
32
  "module": "src/index.ts",
33
33
  "publishConfig": {
34
34
  "access": "public"
35
35
  },
36
36
  "optionalDependencies": {
37
- "@superdoc-dev/cli-darwin-arm64": "0.7.0-next.1",
38
- "@superdoc-dev/cli-darwin-x64": "0.7.0-next.1",
39
- "@superdoc-dev/cli-linux-x64": "0.7.0-next.1",
40
- "@superdoc-dev/cli-linux-arm64": "0.7.0-next.1",
41
- "@superdoc-dev/cli-windows-x64": "0.7.0-next.1"
37
+ "@superdoc-dev/cli-darwin-arm64": "0.7.0-next.10",
38
+ "@superdoc-dev/cli-darwin-x64": "0.7.0-next.10",
39
+ "@superdoc-dev/cli-linux-x64": "0.7.0-next.10",
40
+ "@superdoc-dev/cli-windows-x64": "0.7.0-next.10",
41
+ "@superdoc-dev/cli-linux-arm64": "0.7.0-next.10"
42
42
  },
43
43
  "scripts": {
44
44
  "predev": "node scripts/ensure-superdoc-build.js",