@harbour-enterprises/superdoc 1.17.0-next.1 → 1.17.0-next.3

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.
@@ -33833,7 +33833,7 @@ var SuperConverter = class SuperConverter {
33833
33833
  static getStoredSuperdocVersion(docx) {
33834
33834
  return SuperConverter.getStoredCustomProperty(docx, "SuperdocVersion");
33835
33835
  }
33836
- static setStoredSuperdocVersion(docx = this.convertedXml, version = "1.17.0-next.1") {
33836
+ static setStoredSuperdocVersion(docx = this.convertedXml, version = "1.17.0-next.3") {
33837
33837
  return SuperConverter.setStoredCustomProperty(docx, "SuperdocVersion", version, false);
33838
33838
  }
33839
33839
  static generateWordTimestamp() {
@@ -33819,7 +33819,7 @@ var SuperConverter = class SuperConverter {
33819
33819
  static getStoredSuperdocVersion(docx) {
33820
33820
  return SuperConverter.getStoredCustomProperty(docx, "SuperdocVersion");
33821
33821
  }
33822
- static setStoredSuperdocVersion(docx = this.convertedXml, version = "1.17.0-next.1") {
33822
+ static setStoredSuperdocVersion(docx = this.convertedXml, version = "1.17.0-next.3") {
33823
33823
  return SuperConverter.setStoredCustomProperty(docx, "SuperdocVersion", version, false);
33824
33824
  }
33825
33825
  static generateWordTimestamp() {
@@ -1,5 +1,5 @@
1
1
  const require_rolldown_runtime = require("./rolldown-runtime-Dp2H1eGw.cjs");
2
- const require_SuperConverter = require("./SuperConverter-BNtgL-OA.cjs");
2
+ const require_SuperConverter = require("./SuperConverter-Blhh4CQ7.cjs");
3
3
  const require_jszip = require("./jszip-DCT9QYaK.cjs");
4
4
  const require_uuid = require("./uuid-CHj_rjgt.cjs");
5
5
  const require_constants = require("./constants-CpniKo9Z.cjs");
@@ -261,7 +261,7 @@ var DEFAULT_ENDPOINT = "https://ingest.superdoc.dev/v1/collect";
261
261
  const COMMUNITY_LICENSE_KEY = "community-and-eval-agplv3";
262
262
  function getSuperdocVersion() {
263
263
  try {
264
- return "1.17.0-next.1";
264
+ return "1.17.0-next.3";
265
265
  } catch {
266
266
  return "unknown";
267
267
  }
@@ -14107,14 +14107,14 @@ var getTrackedChangeText = ({ nodes, mark, trackedChangeType, isDeletionInsertio
14107
14107
  trackedChangeText
14108
14108
  };
14109
14109
  };
14110
- var createOrUpdateTrackedChangeComment = ({ event, marks, deletionNodes, nodes, newEditorState, documentId }) => {
14110
+ var createOrUpdateTrackedChangeComment = ({ event, marks, deletionNodes, nodes, newEditorState, documentId, trackedChangesForId }) => {
14111
14111
  const trackedMark = marks.insertedMark || marks.deletionMark || marks.formatMark;
14112
14112
  const { type, attrs } = trackedMark;
14113
14113
  const { name: trackedChangeType } = type;
14114
14114
  const { author, authorEmail, authorImage, date, importedAuthor } = attrs;
14115
14115
  const id = attrs.id;
14116
14116
  const node = nodes[0];
14117
- const trackedChangesWithId = getTrackChanges(newEditorState, id);
14117
+ const trackedChangesWithId = trackedChangesForId || getTrackChanges(newEditorState, id);
14118
14118
  let isDeletionInsertion = !!(marks.insertedMark && marks.deletionMark);
14119
14119
  if (!isDeletionInsertion) {
14120
14120
  const hasInsertMark = trackedChangesWithId.some(({ mark }) => mark.type.name === require_SuperConverter.TrackInsertMarkName);
@@ -20734,7 +20734,7 @@ const canUseDOM = () => {
20734
20734
  return false;
20735
20735
  }
20736
20736
  };
20737
- var summaryVersion = "1.17.0-next.1";
20737
+ var summaryVersion = "1.17.0-next.3";
20738
20738
  var nodeKeys = [
20739
20739
  "group",
20740
20740
  "content",
@@ -29544,7 +29544,7 @@ var Editor = class Editor extends EventEmitter$1 {
29544
29544
  return migrations.length > 0;
29545
29545
  }
29546
29546
  processCollaborationMigrations() {
29547
- console.debug("[checkVersionMigrations] Current editor version", "1.17.0-next.1");
29547
+ console.debug("[checkVersionMigrations] Current editor version", "1.17.0-next.3");
29548
29548
  if (!this.options.ydoc) return;
29549
29549
  let docVersion = this.options.ydoc.getMap("meta").get("version");
29550
29550
  if (!docVersion) docVersion = "initial";
@@ -40062,6 +40062,28 @@ function shouldRebuildForSdtBoundary(element, boundary) {
40062
40062
  if (startAttr === void 0 || endAttr === void 0) return true;
40063
40063
  return startAttr !== expectedStart || endAttr !== expectedEnd;
40064
40064
  }
40065
+ var DEFAULT_TAB_INTERVAL_PX$2 = 48;
40066
+ const computeTabWidth = (currentPos, justification, tabs, hangingIndent, firstLineIndent, leftIndent) => {
40067
+ const nextDefaultTabStop = currentPos + DEFAULT_TAB_INTERVAL_PX$2 - currentPos % DEFAULT_TAB_INTERVAL_PX$2;
40068
+ let tabWidth;
40069
+ if (justification === "left") {
40070
+ const explicitTabs = [...tabs ?? []];
40071
+ if (hangingIndent && hangingIndent > 0) {
40072
+ explicitTabs.push(leftIndent);
40073
+ explicitTabs.sort((a, b$1) => a - b$1);
40074
+ }
40075
+ let targetTabStop;
40076
+ for (const tab of explicitTabs) if (tab > currentPos) {
40077
+ targetTabStop = tab;
40078
+ break;
40079
+ }
40080
+ if (targetTabStop === void 0) targetTabStop = nextDefaultTabStop;
40081
+ tabWidth = targetTabStop - currentPos;
40082
+ } else if (justification === "right") if (firstLineIndent != null && firstLineIndent > 0) tabWidth = nextDefaultTabStop - currentPos;
40083
+ else tabWidth = hangingIndent ?? 0;
40084
+ else tabWidth = nextDefaultTabStop - currentPos;
40085
+ return tabWidth;
40086
+ };
40065
40087
  var ALLOWED_BORDER_STYLES = new Set([
40066
40088
  "none",
40067
40089
  "single",
@@ -40146,7 +40168,6 @@ const resolveTableCellBorders = (tableBorders, rowIndex, colIndex, totalRows, to
40146
40168
  right: borderValueToSpec(isLastCol ? tableBorders?.right : null)
40147
40169
  };
40148
40170
  };
40149
- var LIST_MARKER_GAP$2 = 8;
40150
40171
  function getCellSegmentCount(cell) {
40151
40172
  if (cell.blocks && cell.blocks.length > 0) {
40152
40173
  let total = 0;
@@ -40210,34 +40231,67 @@ function computeCellVisibleHeight(cell, cellFrom, cellTo) {
40210
40231
  return cellVisHeight;
40211
40232
  }
40212
40233
  function renderListMarker(params$1) {
40213
- const { doc: doc$2, lineEl, markerLayout, markerMeasure, indentLeftPx } = params$1;
40234
+ const { doc: doc$2, lineEl, markerLayout, markerMeasure, indentLeftPx, hangingIndentPx, firstLineIndentPx, tabsPx } = params$1;
40235
+ const anchorPoint = indentLeftPx - hangingIndentPx + firstLineIndentPx;
40214
40236
  const markerJustification = markerLayout?.justification ?? "left";
40215
- const markerBoxWidth = (typeof markerLayout?.markerBoxWidthPx === "number" ? markerLayout.markerBoxWidthPx : void 0) ?? markerMeasure?.markerWidth ?? 0;
40216
- const gutter = (typeof markerLayout?.gutterWidthPx === "number" ? markerLayout.gutterWidthPx : void 0) ?? markerMeasure?.gutterWidth ?? LIST_MARKER_GAP$2;
40217
- const markerStartPos = markerJustification === "left" ? indentLeftPx : (typeof markerLayout?.markerX === "number" ? markerLayout.markerX : void 0) ?? indentLeftPx;
40218
- const markerLeftPos = markerStartPos - markerBoxWidth;
40219
- const lineContainer = doc$2.createElement("div");
40220
- lineContainer.style.position = "relative";
40221
- lineContainer.style.width = "100%";
40237
+ const markerTextWidth = markerMeasure?.markerTextWidth ?? 0;
40238
+ let markerStartPos, currentPos;
40239
+ if (markerJustification === "left") {
40240
+ markerStartPos = anchorPoint;
40241
+ currentPos = markerStartPos + markerTextWidth;
40242
+ } else if (markerJustification === "right") {
40243
+ markerStartPos = anchorPoint - markerTextWidth;
40244
+ currentPos = anchorPoint;
40245
+ } else {
40246
+ markerStartPos = anchorPoint - markerTextWidth / 2;
40247
+ currentPos = markerStartPos + markerTextWidth;
40248
+ }
40249
+ const suffix$1 = markerLayout?.suffix ?? "tab";
40250
+ let listTabWidth = 0;
40251
+ if (suffix$1 === "tab") listTabWidth = computeTabWidth(currentPos, markerJustification, tabsPx, hangingIndentPx, firstLineIndentPx, indentLeftPx);
40252
+ else if (suffix$1 === "space") listTabWidth = 4;
40253
+ lineEl.style.paddingLeft = `${anchorPoint}px`;
40254
+ if (markerLayout?.run?.vanish) return;
40255
+ const markerContainer = doc$2.createElement("span");
40256
+ markerContainer.style.display = "inline-block";
40257
+ markerContainer.style.wordSpacing = "0px";
40222
40258
  const markerEl = doc$2.createElement("span");
40223
40259
  markerEl.classList.add("superdoc-paragraph-marker");
40224
40260
  markerEl.textContent = markerLayout?.markerText ?? "";
40225
- markerEl.style.display = "inline-block";
40261
+ markerEl.style.pointerEvents = "none";
40226
40262
  markerEl.style.fontFamily = toCssFontFamily(markerLayout?.run?.fontFamily) ?? markerLayout?.run?.fontFamily ?? "";
40227
40263
  if (markerLayout?.run?.fontSize != null) markerEl.style.fontSize = `${markerLayout.run.fontSize}px`;
40228
40264
  markerEl.style.fontWeight = markerLayout?.run?.bold ? "bold" : "";
40229
40265
  markerEl.style.fontStyle = markerLayout?.run?.italic ? "italic" : "";
40230
40266
  if (markerLayout?.run?.color) markerEl.style.color = markerLayout.run.color;
40231
40267
  if (markerLayout?.run?.letterSpacing != null) markerEl.style.letterSpacing = `${markerLayout.run.letterSpacing}px`;
40232
- markerEl.style.position = "absolute";
40233
- markerEl.style.left = `${markerLeftPos}px`;
40234
- markerEl.style.width = `${markerBoxWidth}px`;
40235
- markerEl.style.textAlign = markerJustification;
40236
- markerEl.style.paddingRight = `${gutter}px`;
40237
- lineEl.style.paddingLeft = `${markerStartPos}px`;
40238
- lineContainer.appendChild(markerEl);
40239
- lineContainer.appendChild(lineEl);
40240
- return lineContainer;
40268
+ markerContainer.style.position = "relative";
40269
+ if (markerJustification === "right") {
40270
+ markerContainer.style.position = "absolute";
40271
+ markerContainer.style.left = `${markerStartPos}px`;
40272
+ } else if (markerJustification === "center") {
40273
+ markerContainer.style.position = "absolute";
40274
+ markerContainer.style.left = `${markerStartPos - markerTextWidth / 2}px`;
40275
+ lineEl.style.paddingLeft = parseFloat(lineEl.style.paddingLeft) + markerTextWidth / 2 + "px";
40276
+ }
40277
+ markerContainer.appendChild(markerEl);
40278
+ const suffixType = markerLayout?.suffix ?? "tab";
40279
+ if (suffixType === "tab") {
40280
+ const tabEl = doc$2.createElement("span");
40281
+ tabEl.className = "superdoc-tab";
40282
+ tabEl.innerHTML = " ";
40283
+ tabEl.style.display = "inline-block";
40284
+ tabEl.style.wordSpacing = "0px";
40285
+ tabEl.style.width = `${listTabWidth}px`;
40286
+ lineEl.prepend(tabEl);
40287
+ } else if (suffixType === "space") {
40288
+ const spaceEl = doc$2.createElement("span");
40289
+ spaceEl.classList.add("superdoc-marker-suffix-space");
40290
+ spaceEl.style.wordSpacing = "0px";
40291
+ spaceEl.textContent = "\xA0";
40292
+ lineEl.prepend(spaceEl);
40293
+ }
40294
+ lineEl.prepend(markerContainer);
40241
40295
  }
40242
40296
  function applyTableCellLineIndentation(params$1) {
40243
40297
  const { lineEl, line, indent, indentLeftPx, hasListMarkerLayout, lineIndex, localStartLine, suppressFirstLineIndent } = params$1;
@@ -40658,6 +40712,8 @@ const renderTableCell = (deps) => {
40658
40712
  const markerLayout = wordLayout?.marker;
40659
40713
  const markerMeasure = paragraphMeasure.marker;
40660
40714
  const indentLeftPx = markerMeasure?.indentLeft ?? wordLayout?.indentLeftPx ?? (block.attrs?.indent && typeof block.attrs.indent.left === "number" ? block.attrs.indent.left : 0);
40715
+ const hangingIndentPx = block.attrs?.indent && typeof block.attrs.indent.hanging === "number" ? block.attrs.indent.hanging : 0;
40716
+ const firstLineIndentPx = block.attrs?.indent && typeof block.attrs.indent.firstLine === "number" ? block.attrs.indent.firstLine : 0;
40661
40717
  const suppressFirstLineIndent = block.attrs?.suppressFirstLineIndent === true;
40662
40718
  const blockStartGlobal = cumulativeLineCount;
40663
40719
  if (cumulativeLineCount + blockLineCount <= globalFromLine) {
@@ -40693,20 +40749,23 @@ const renderTableCell = (deps) => {
40693
40749
  lineEl.style.paddingLeft = "";
40694
40750
  lineEl.style.paddingRight = "";
40695
40751
  lineEl.style.textIndent = "";
40696
- if (markerLayout && markerMeasure && lineIdx === 0 && localStartLine === 0 && markerMeasure.markerWidth > 0 && !markerLayout.run?.vanish) {
40697
- const lineContainer = renderListMarker({
40752
+ if (markerLayout && markerMeasure && lineIdx === 0 && localStartLine === 0 && markerMeasure.markerWidth > 0) {
40753
+ renderListMarker({
40698
40754
  doc: doc$2,
40699
40755
  lineEl,
40700
40756
  markerLayout,
40701
40757
  markerMeasure,
40702
- indentLeftPx
40758
+ indentLeftPx,
40759
+ hangingIndentPx,
40760
+ firstLineIndentPx,
40761
+ tabsPx: wordLayout?.tabsPx
40703
40762
  });
40704
40763
  renderedLines.push({
40705
- el: lineContainer,
40764
+ el: lineEl,
40706
40765
  top: lineTop,
40707
40766
  height: line.lineHeight
40708
40767
  });
40709
- paraWrapper.appendChild(lineContainer);
40768
+ paraWrapper.appendChild(lineEl);
40710
40769
  } else {
40711
40770
  applyTableCellLineIndentation({
40712
40771
  lineEl,
@@ -41856,7 +41915,6 @@ function collectLineTabsForSnapshot(lineEl) {
41856
41915
  return tabs;
41857
41916
  }
41858
41917
  var LIST_MARKER_GAP$1 = 8;
41859
- var DEFAULT_TAB_INTERVAL_PX$2 = 48;
41860
41918
  var DEFAULT_PAGE_HEIGHT_PX = 1056;
41861
41919
  var DEFAULT_VIRTUALIZED_PAGE_GAP = 72;
41862
41920
  var COMMENT_EXTERNAL_COLOR = "#B1124B";
@@ -45410,33 +45468,6 @@ var resolveRunText = (run, context) => {
45410
45468
  if (runToken === "totalPageCount") return context.totalPages ? String(context.totalPages) : run.text ?? "";
45411
45469
  return run.text ?? "";
45412
45470
  };
45413
- var computeTabWidth = (currentPos, justification, tabs, hangingIndent, firstLineIndent, leftIndent) => {
45414
- const nextDefaultTabStop = currentPos + DEFAULT_TAB_INTERVAL_PX$2 - currentPos % DEFAULT_TAB_INTERVAL_PX$2;
45415
- let tabWidth;
45416
- if ((justification ?? "left") === "left") {
45417
- const explicitTabs = [...tabs ?? []];
45418
- if (hangingIndent && hangingIndent > 0) {
45419
- const implicitTabPos = leftIndent;
45420
- explicitTabs.push(implicitTabPos);
45421
- explicitTabs.sort((a, b$1) => {
45422
- if (typeof a === "number" && typeof b$1 === "number") return a - b$1;
45423
- return 0;
45424
- });
45425
- }
45426
- let targetTabStop;
45427
- if (Array.isArray(explicitTabs) && explicitTabs.length > 0) {
45428
- for (const tab of explicitTabs) if (typeof tab === "number" && tab > currentPos) {
45429
- targetTabStop = tab;
45430
- break;
45431
- }
45432
- }
45433
- if (targetTabStop === void 0) targetTabStop = nextDefaultTabStop;
45434
- tabWidth = targetTabStop - currentPos;
45435
- } else if (justification === "right") if (firstLineIndent != null && firstLineIndent > 0) tabWidth = nextDefaultTabStop - currentPos;
45436
- else tabWidth = hangingIndent ?? 0;
45437
- else tabWidth = nextDefaultTabStop - currentPos;
45438
- return tabWidth;
45439
- };
45440
45471
  function buildImagePmSelector(pmStart) {
45441
45472
  const v = String(pmStart);
45442
45473
  return [
@@ -63649,6 +63680,8 @@ var PresentationEditor = class PresentationEditor extends EventEmitter$1 {
63649
63680
  this.#epochMapper.recordTransaction(transaction);
63650
63681
  this.#selectionSync.setDocEpoch(this.#epochMapper.getCurrentEpoch());
63651
63682
  if ((transaction.getMeta?.(ySyncPluginKey))?.isChangeOrigin && transaction.docChanged) this.#flowBlockCache?.setHasExternalChanges(true);
63683
+ const inputType = transaction.getMeta?.("inputType");
63684
+ if ((inputType === "historyUndo" || inputType === "historyRedo") && transaction.docChanged) this.#flowBlockCache?.setHasExternalChanges(true);
63652
63685
  }
63653
63686
  if (trackedChangesChanged || transaction?.docChanged) {
63654
63687
  this.#pendingDocChange = true;
@@ -95233,6 +95266,12 @@ Object.defineProperty(exports, "createKey", {
95233
95266
  return createKey;
95234
95267
  }
95235
95268
  });
95269
+ Object.defineProperty(exports, "createOrUpdateTrackedChangeComment", {
95270
+ enumerable: true,
95271
+ get: function() {
95272
+ return createOrUpdateTrackedChangeComment;
95273
+ }
95274
+ });
95236
95275
  Object.defineProperty(exports, "createUint8ArrayFromArrayBuffer", {
95237
95276
  enumerable: true,
95238
95277
  get: function() {
@@ -1,5 +1,5 @@
1
1
  import { a as __toCommonJS, n as __esmMin, r as __export, t as __commonJSMin } from "./rolldown-runtime-B2q5OVn9.es.js";
2
- import { $ as TextSelection$1, A as findMark, At as Mark$1, B as defaultBlockAt$1, C as docxNumberingHelpers, Ct as TrackDeleteMarkName, D as posToDOMRect, Dt as DOMParser$1, E as isInTable, Et as carbonCopy, F as isMarkActive, Ft as getExtensionConfigField, G as createDocument, H as getNodeType, I as getMarkRange, J as NodeSelection, K as AllSelection, L as isTextSelection, M as isActive, Mt as Slice, N as isNodeActive, Nt as minMax, O as findChildren$1, Ot as DOMSerializer, P as getSchemaTypeNameByName, Pt as callOrGet, Q as SelectionRange, R as findParentNode, S as getResolvedParagraphProperties, St as getUnderlineCssString, T as CommandService, Tt as TrackInsertMarkName, U as cleanSchemaItem, V as getMarkType, W as getSchemaTypeByName, X as PluginKey, Y as Plugin, Z as Selection, _ as ListHelpers, _t as encodeMarksFromRPr, a as _getReferencedTableStyles, at as Transform, b as isList, bt as resolveRunProperties, c as processContent, ct as dropPoint, d as createCellBorders, dt as replaceStep$1, et as AddMarkStep, f as InputRule, ft as generateDocxRandomId, g as unflattenListsInHtml, gt as encodeCSSFromRPr, h as inputRulesPlugin, ht as encodeCSSFromPPr, it as ReplaceStep, j as getMarksFromSelection, jt as Schema$1, k as getActiveFormatting, kt as Fragment$1, l as createDocFromMarkdown, lt as joinPoint, m as htmlHandler, mt as decodeRPrFromMarks, n as kebabCase$1, nt as RemoveMarkStep, o as helpers_exports, ot as canJoin, p as handleClipboardPaste, pt as generateRandomSigned32BitIntStrId, q as EditorState, r as insertNewRelationship, rt as ReplaceAroundStep$1, s as updateDOMAttributes, st as canSplit, t as SuperConverter, tt as Mapping, u as createDocFromHTML, ut as liftTarget, v as changeListLevel, vt as resolveDocxFontFamily, w as generateOrderedListIndex, wt as TrackFormatMarkName, x as calculateResolvedParagraphProperties, xt as resolveTableCellProperties, y as updateNumberingProperties, yt as resolveParagraphProperties, z as findParentNodeClosestToPos } from "./SuperConverter-K4WSGFuY.es.js";
2
+ import { $ as TextSelection$1, A as findMark, At as Mark$1, B as defaultBlockAt$1, C as docxNumberingHelpers, Ct as TrackDeleteMarkName, D as posToDOMRect, Dt as DOMParser$1, E as isInTable, Et as carbonCopy, F as isMarkActive, Ft as getExtensionConfigField, G as createDocument, H as getNodeType, I as getMarkRange, J as NodeSelection, K as AllSelection, L as isTextSelection, M as isActive, Mt as Slice, N as isNodeActive, Nt as minMax, O as findChildren$1, Ot as DOMSerializer, P as getSchemaTypeNameByName, Pt as callOrGet, Q as SelectionRange, R as findParentNode, S as getResolvedParagraphProperties, St as getUnderlineCssString, T as CommandService, Tt as TrackInsertMarkName, U as cleanSchemaItem, V as getMarkType, W as getSchemaTypeByName, X as PluginKey, Y as Plugin, Z as Selection, _ as ListHelpers, _t as encodeMarksFromRPr, a as _getReferencedTableStyles, at as Transform, b as isList, bt as resolveRunProperties, c as processContent, ct as dropPoint, d as createCellBorders, dt as replaceStep$1, et as AddMarkStep, f as InputRule, ft as generateDocxRandomId, g as unflattenListsInHtml, gt as encodeCSSFromRPr, h as inputRulesPlugin, ht as encodeCSSFromPPr, it as ReplaceStep, j as getMarksFromSelection, jt as Schema$1, k as getActiveFormatting, kt as Fragment$1, l as createDocFromMarkdown, lt as joinPoint, m as htmlHandler, mt as decodeRPrFromMarks, n as kebabCase$1, nt as RemoveMarkStep, o as helpers_exports, ot as canJoin, p as handleClipboardPaste, pt as generateRandomSigned32BitIntStrId, q as EditorState, r as insertNewRelationship, rt as ReplaceAroundStep$1, s as updateDOMAttributes, st as canSplit, t as SuperConverter, tt as Mapping, u as createDocFromHTML, ut as liftTarget, v as changeListLevel, vt as resolveDocxFontFamily, w as generateOrderedListIndex, wt as TrackFormatMarkName, x as calculateResolvedParagraphProperties, xt as resolveTableCellProperties, y as updateNumberingProperties, yt as resolveParagraphProperties, z as findParentNodeClosestToPos } from "./SuperConverter-C4KT4-zR.es.js";
3
3
  import { a as init_dist$2, i as global, n as init_dist, o as Buffer$3, r as process$1, s as init_dist$1 } from "./jszip-ChlR43oI.es.js";
4
4
  import { t as v4_default } from "./uuid-2IzDu5nl.es.js";
5
5
  import { A as resolveOpcTargetPath, E as pixelsToTwips, F as twipsToLines, I as twipsToPixels, P as twipsToInches, _ as halfPointToPoints, c as convertSizeToCSS, k as ptToTwips, p as getArrayBufferFromUrl, t as COMMENT_FILE_BASENAMES, v as inchesToPixels, x as linesToTwips, y as inchesToTwips } from "./constants-DBKi0Amm.es.js";
@@ -260,7 +260,7 @@ var v_click_outside_default = {
260
260
  var DEFAULT_ENDPOINT = "https://ingest.superdoc.dev/v1/collect";
261
261
  function getSuperdocVersion() {
262
262
  try {
263
- return "1.17.0-next.1";
263
+ return "1.17.0-next.3";
264
264
  } catch {
265
265
  return "unknown";
266
266
  }
@@ -14088,14 +14088,14 @@ var getTrackedChangeText = ({ nodes, mark, trackedChangeType, isDeletionInsertio
14088
14088
  trackedChangeText
14089
14089
  };
14090
14090
  };
14091
- var createOrUpdateTrackedChangeComment = ({ event, marks, deletionNodes, nodes, newEditorState, documentId }) => {
14091
+ var createOrUpdateTrackedChangeComment = ({ event, marks, deletionNodes, nodes, newEditorState, documentId, trackedChangesForId }) => {
14092
14092
  const trackedMark = marks.insertedMark || marks.deletionMark || marks.formatMark;
14093
14093
  const { type, attrs } = trackedMark;
14094
14094
  const { name: trackedChangeType } = type;
14095
14095
  const { author, authorEmail, authorImage, date, importedAuthor } = attrs;
14096
14096
  const id = attrs.id;
14097
14097
  const node = nodes[0];
14098
- const trackedChangesWithId = getTrackChanges(newEditorState, id);
14098
+ const trackedChangesWithId = trackedChangesForId || getTrackChanges(newEditorState, id);
14099
14099
  let isDeletionInsertion = !!(marks.insertedMark && marks.deletionMark);
14100
14100
  if (!isDeletionInsertion) {
14101
14101
  const hasInsertMark = trackedChangesWithId.some(({ mark }) => mark.type.name === TrackInsertMarkName);
@@ -20715,7 +20715,7 @@ const canUseDOM = () => {
20715
20715
  return false;
20716
20716
  }
20717
20717
  };
20718
- var summaryVersion = "1.17.0-next.1";
20718
+ var summaryVersion = "1.17.0-next.3";
20719
20719
  var nodeKeys = [
20720
20720
  "group",
20721
20721
  "content",
@@ -29266,7 +29266,7 @@ var Editor = class Editor extends EventEmitter$1 {
29266
29266
  return migrations.length > 0;
29267
29267
  }
29268
29268
  processCollaborationMigrations() {
29269
- console.debug("[checkVersionMigrations] Current editor version", "1.17.0-next.1");
29269
+ console.debug("[checkVersionMigrations] Current editor version", "1.17.0-next.3");
29270
29270
  if (!this.options.ydoc) return;
29271
29271
  let docVersion = this.options.ydoc.getMap("meta").get("version");
29272
29272
  if (!docVersion) docVersion = "initial";
@@ -39773,6 +39773,28 @@ function shouldRebuildForSdtBoundary(element, boundary) {
39773
39773
  if (startAttr === void 0 || endAttr === void 0) return true;
39774
39774
  return startAttr !== expectedStart || endAttr !== expectedEnd;
39775
39775
  }
39776
+ var DEFAULT_TAB_INTERVAL_PX$2 = 48;
39777
+ const computeTabWidth = (currentPos, justification, tabs, hangingIndent, firstLineIndent, leftIndent) => {
39778
+ const nextDefaultTabStop = currentPos + DEFAULT_TAB_INTERVAL_PX$2 - currentPos % DEFAULT_TAB_INTERVAL_PX$2;
39779
+ let tabWidth;
39780
+ if (justification === "left") {
39781
+ const explicitTabs = [...tabs ?? []];
39782
+ if (hangingIndent && hangingIndent > 0) {
39783
+ explicitTabs.push(leftIndent);
39784
+ explicitTabs.sort((a, b$1) => a - b$1);
39785
+ }
39786
+ let targetTabStop;
39787
+ for (const tab of explicitTabs) if (tab > currentPos) {
39788
+ targetTabStop = tab;
39789
+ break;
39790
+ }
39791
+ if (targetTabStop === void 0) targetTabStop = nextDefaultTabStop;
39792
+ tabWidth = targetTabStop - currentPos;
39793
+ } else if (justification === "right") if (firstLineIndent != null && firstLineIndent > 0) tabWidth = nextDefaultTabStop - currentPos;
39794
+ else tabWidth = hangingIndent ?? 0;
39795
+ else tabWidth = nextDefaultTabStop - currentPos;
39796
+ return tabWidth;
39797
+ };
39776
39798
  var ALLOWED_BORDER_STYLES = new Set([
39777
39799
  "none",
39778
39800
  "single",
@@ -39857,7 +39879,6 @@ const resolveTableCellBorders = (tableBorders, rowIndex, colIndex, totalRows, to
39857
39879
  right: borderValueToSpec(isLastCol ? tableBorders?.right : null)
39858
39880
  };
39859
39881
  };
39860
- var LIST_MARKER_GAP$2 = 8;
39861
39882
  function getCellSegmentCount(cell) {
39862
39883
  if (cell.blocks && cell.blocks.length > 0) {
39863
39884
  let total = 0;
@@ -39921,34 +39942,67 @@ function computeCellVisibleHeight(cell, cellFrom, cellTo) {
39921
39942
  return cellVisHeight;
39922
39943
  }
39923
39944
  function renderListMarker(params$1) {
39924
- const { doc: doc$2, lineEl, markerLayout, markerMeasure, indentLeftPx } = params$1;
39945
+ const { doc: doc$2, lineEl, markerLayout, markerMeasure, indentLeftPx, hangingIndentPx, firstLineIndentPx, tabsPx } = params$1;
39946
+ const anchorPoint = indentLeftPx - hangingIndentPx + firstLineIndentPx;
39925
39947
  const markerJustification = markerLayout?.justification ?? "left";
39926
- const markerBoxWidth = (typeof markerLayout?.markerBoxWidthPx === "number" ? markerLayout.markerBoxWidthPx : void 0) ?? markerMeasure?.markerWidth ?? 0;
39927
- const gutter = (typeof markerLayout?.gutterWidthPx === "number" ? markerLayout.gutterWidthPx : void 0) ?? markerMeasure?.gutterWidth ?? LIST_MARKER_GAP$2;
39928
- const markerStartPos = markerJustification === "left" ? indentLeftPx : (typeof markerLayout?.markerX === "number" ? markerLayout.markerX : void 0) ?? indentLeftPx;
39929
- const markerLeftPos = markerStartPos - markerBoxWidth;
39930
- const lineContainer = doc$2.createElement("div");
39931
- lineContainer.style.position = "relative";
39932
- lineContainer.style.width = "100%";
39948
+ const markerTextWidth = markerMeasure?.markerTextWidth ?? 0;
39949
+ let markerStartPos, currentPos;
39950
+ if (markerJustification === "left") {
39951
+ markerStartPos = anchorPoint;
39952
+ currentPos = markerStartPos + markerTextWidth;
39953
+ } else if (markerJustification === "right") {
39954
+ markerStartPos = anchorPoint - markerTextWidth;
39955
+ currentPos = anchorPoint;
39956
+ } else {
39957
+ markerStartPos = anchorPoint - markerTextWidth / 2;
39958
+ currentPos = markerStartPos + markerTextWidth;
39959
+ }
39960
+ const suffix$1 = markerLayout?.suffix ?? "tab";
39961
+ let listTabWidth = 0;
39962
+ if (suffix$1 === "tab") listTabWidth = computeTabWidth(currentPos, markerJustification, tabsPx, hangingIndentPx, firstLineIndentPx, indentLeftPx);
39963
+ else if (suffix$1 === "space") listTabWidth = 4;
39964
+ lineEl.style.paddingLeft = `${anchorPoint}px`;
39965
+ if (markerLayout?.run?.vanish) return;
39966
+ const markerContainer = doc$2.createElement("span");
39967
+ markerContainer.style.display = "inline-block";
39968
+ markerContainer.style.wordSpacing = "0px";
39933
39969
  const markerEl = doc$2.createElement("span");
39934
39970
  markerEl.classList.add("superdoc-paragraph-marker");
39935
39971
  markerEl.textContent = markerLayout?.markerText ?? "";
39936
- markerEl.style.display = "inline-block";
39972
+ markerEl.style.pointerEvents = "none";
39937
39973
  markerEl.style.fontFamily = toCssFontFamily(markerLayout?.run?.fontFamily) ?? markerLayout?.run?.fontFamily ?? "";
39938
39974
  if (markerLayout?.run?.fontSize != null) markerEl.style.fontSize = `${markerLayout.run.fontSize}px`;
39939
39975
  markerEl.style.fontWeight = markerLayout?.run?.bold ? "bold" : "";
39940
39976
  markerEl.style.fontStyle = markerLayout?.run?.italic ? "italic" : "";
39941
39977
  if (markerLayout?.run?.color) markerEl.style.color = markerLayout.run.color;
39942
39978
  if (markerLayout?.run?.letterSpacing != null) markerEl.style.letterSpacing = `${markerLayout.run.letterSpacing}px`;
39943
- markerEl.style.position = "absolute";
39944
- markerEl.style.left = `${markerLeftPos}px`;
39945
- markerEl.style.width = `${markerBoxWidth}px`;
39946
- markerEl.style.textAlign = markerJustification;
39947
- markerEl.style.paddingRight = `${gutter}px`;
39948
- lineEl.style.paddingLeft = `${markerStartPos}px`;
39949
- lineContainer.appendChild(markerEl);
39950
- lineContainer.appendChild(lineEl);
39951
- return lineContainer;
39979
+ markerContainer.style.position = "relative";
39980
+ if (markerJustification === "right") {
39981
+ markerContainer.style.position = "absolute";
39982
+ markerContainer.style.left = `${markerStartPos}px`;
39983
+ } else if (markerJustification === "center") {
39984
+ markerContainer.style.position = "absolute";
39985
+ markerContainer.style.left = `${markerStartPos - markerTextWidth / 2}px`;
39986
+ lineEl.style.paddingLeft = parseFloat(lineEl.style.paddingLeft) + markerTextWidth / 2 + "px";
39987
+ }
39988
+ markerContainer.appendChild(markerEl);
39989
+ const suffixType = markerLayout?.suffix ?? "tab";
39990
+ if (suffixType === "tab") {
39991
+ const tabEl = doc$2.createElement("span");
39992
+ tabEl.className = "superdoc-tab";
39993
+ tabEl.innerHTML = "&nbsp;";
39994
+ tabEl.style.display = "inline-block";
39995
+ tabEl.style.wordSpacing = "0px";
39996
+ tabEl.style.width = `${listTabWidth}px`;
39997
+ lineEl.prepend(tabEl);
39998
+ } else if (suffixType === "space") {
39999
+ const spaceEl = doc$2.createElement("span");
40000
+ spaceEl.classList.add("superdoc-marker-suffix-space");
40001
+ spaceEl.style.wordSpacing = "0px";
40002
+ spaceEl.textContent = "\xA0";
40003
+ lineEl.prepend(spaceEl);
40004
+ }
40005
+ lineEl.prepend(markerContainer);
39952
40006
  }
39953
40007
  function applyTableCellLineIndentation(params$1) {
39954
40008
  const { lineEl, line, indent, indentLeftPx, hasListMarkerLayout, lineIndex, localStartLine, suppressFirstLineIndent } = params$1;
@@ -40369,6 +40423,8 @@ const renderTableCell = (deps) => {
40369
40423
  const markerLayout = wordLayout?.marker;
40370
40424
  const markerMeasure = paragraphMeasure.marker;
40371
40425
  const indentLeftPx = markerMeasure?.indentLeft ?? wordLayout?.indentLeftPx ?? (block.attrs?.indent && typeof block.attrs.indent.left === "number" ? block.attrs.indent.left : 0);
40426
+ const hangingIndentPx = block.attrs?.indent && typeof block.attrs.indent.hanging === "number" ? block.attrs.indent.hanging : 0;
40427
+ const firstLineIndentPx = block.attrs?.indent && typeof block.attrs.indent.firstLine === "number" ? block.attrs.indent.firstLine : 0;
40372
40428
  const suppressFirstLineIndent = block.attrs?.suppressFirstLineIndent === true;
40373
40429
  const blockStartGlobal = cumulativeLineCount;
40374
40430
  if (cumulativeLineCount + blockLineCount <= globalFromLine) {
@@ -40404,20 +40460,23 @@ const renderTableCell = (deps) => {
40404
40460
  lineEl.style.paddingLeft = "";
40405
40461
  lineEl.style.paddingRight = "";
40406
40462
  lineEl.style.textIndent = "";
40407
- if (markerLayout && markerMeasure && lineIdx === 0 && localStartLine === 0 && markerMeasure.markerWidth > 0 && !markerLayout.run?.vanish) {
40408
- const lineContainer = renderListMarker({
40463
+ if (markerLayout && markerMeasure && lineIdx === 0 && localStartLine === 0 && markerMeasure.markerWidth > 0) {
40464
+ renderListMarker({
40409
40465
  doc: doc$2,
40410
40466
  lineEl,
40411
40467
  markerLayout,
40412
40468
  markerMeasure,
40413
- indentLeftPx
40469
+ indentLeftPx,
40470
+ hangingIndentPx,
40471
+ firstLineIndentPx,
40472
+ tabsPx: wordLayout?.tabsPx
40414
40473
  });
40415
40474
  renderedLines.push({
40416
- el: lineContainer,
40475
+ el: lineEl,
40417
40476
  top: lineTop,
40418
40477
  height: line.lineHeight
40419
40478
  });
40420
- paraWrapper.appendChild(lineContainer);
40479
+ paraWrapper.appendChild(lineEl);
40421
40480
  } else {
40422
40481
  applyTableCellLineIndentation({
40423
40482
  lineEl,
@@ -41567,7 +41626,6 @@ function collectLineTabsForSnapshot(lineEl) {
41567
41626
  return tabs;
41568
41627
  }
41569
41628
  var LIST_MARKER_GAP$1 = 8;
41570
- var DEFAULT_TAB_INTERVAL_PX$2 = 48;
41571
41629
  var DEFAULT_PAGE_HEIGHT_PX = 1056;
41572
41630
  var DEFAULT_VIRTUALIZED_PAGE_GAP = 72;
41573
41631
  var COMMENT_EXTERNAL_COLOR = "#B1124B";
@@ -45121,33 +45179,6 @@ var resolveRunText = (run, context) => {
45121
45179
  if (runToken === "totalPageCount") return context.totalPages ? String(context.totalPages) : run.text ?? "";
45122
45180
  return run.text ?? "";
45123
45181
  };
45124
- var computeTabWidth = (currentPos, justification, tabs, hangingIndent, firstLineIndent, leftIndent) => {
45125
- const nextDefaultTabStop = currentPos + DEFAULT_TAB_INTERVAL_PX$2 - currentPos % DEFAULT_TAB_INTERVAL_PX$2;
45126
- let tabWidth;
45127
- if ((justification ?? "left") === "left") {
45128
- const explicitTabs = [...tabs ?? []];
45129
- if (hangingIndent && hangingIndent > 0) {
45130
- const implicitTabPos = leftIndent;
45131
- explicitTabs.push(implicitTabPos);
45132
- explicitTabs.sort((a, b$1) => {
45133
- if (typeof a === "number" && typeof b$1 === "number") return a - b$1;
45134
- return 0;
45135
- });
45136
- }
45137
- let targetTabStop;
45138
- if (Array.isArray(explicitTabs) && explicitTabs.length > 0) {
45139
- for (const tab of explicitTabs) if (typeof tab === "number" && tab > currentPos) {
45140
- targetTabStop = tab;
45141
- break;
45142
- }
45143
- }
45144
- if (targetTabStop === void 0) targetTabStop = nextDefaultTabStop;
45145
- tabWidth = targetTabStop - currentPos;
45146
- } else if (justification === "right") if (firstLineIndent != null && firstLineIndent > 0) tabWidth = nextDefaultTabStop - currentPos;
45147
- else tabWidth = hangingIndent ?? 0;
45148
- else tabWidth = nextDefaultTabStop - currentPos;
45149
- return tabWidth;
45150
- };
45151
45182
  function buildImagePmSelector(pmStart) {
45152
45183
  const v = String(pmStart);
45153
45184
  return [
@@ -63341,6 +63372,8 @@ var PresentationEditor = class PresentationEditor extends EventEmitter$1 {
63341
63372
  this.#epochMapper.recordTransaction(transaction);
63342
63373
  this.#selectionSync.setDocEpoch(this.#epochMapper.getCurrentEpoch());
63343
63374
  if ((transaction.getMeta?.(ySyncPluginKey))?.isChangeOrigin && transaction.docChanged) this.#flowBlockCache?.setHasExternalChanges(true);
63375
+ const inputType = transaction.getMeta?.("inputType");
63376
+ if ((inputType === "historyUndo" || inputType === "historyRedo") && transaction.docChanged) this.#flowBlockCache?.setHasExternalChanges(true);
63344
63377
  }
63345
63378
  if (trackedChangesChanged || transaction?.docChanged) {
63346
63379
  this.#pendingDocChange = true;
@@ -94595,4 +94628,4 @@ var Extensions = {
94595
94628
  Decoration,
94596
94629
  DecorationSet
94597
94630
  };
94598
- export { getAllowedImageDimensions as $, isMounted as A, writeVarUint as At, cNotM as B, isMarkType as Bt, resolveWrappedSlot as C, createDecoder as Ct, warnOnce as D, createEncoder as Dt, throwError as E, readVarUint8Array as Et, changeColor as F, v_click_outside_default as Ft, ellipsis_vertical_solid_default as G, insideModal as H, isNodeType as Ht, c as I, getFileObject as It, comment_solid_default as J, xmark_solid_default as K, cB as L, comments_module_events as Lt, use_memo_default as M, create$2 as Mt, on as N, min$1 as Nt, useSsrAdapter as O, length as Ot, createId as P, pow as Pt, trackChangesHelpers_exports as Q, cE as R, defineMark as Rt, configProviderInjectionKey as S, getUnixTime as St, call as T, readVarUint as Tt, insidePopover as U, createKey as V, assertNodeType as Vt, caret_down_solid_default as W, getRichTextExtensions as X, AIWriter_default as Y, getStarterExtensions as Z, useRtl as _, encodeAwarenessUpdate as _t, BasicUpload_default as a, CommentsPluginKey as at, useThemeClass as b, ObservableV2 as bt, Toolbar_default as c, createUint8ArrayFromArrayBuffer as ct, Dropdown_default as d, isNode as dt, SectionHelpers as et, ConfigProvider_default as f, offChange as ft, _common_default$3 as g, applyAwarenessUpdate as gt, index_cssr_default$5 as h, Awareness as ht, SuperEditor_default as i, AnnotatorHelpers as it, useMergedState as j, writeVarUint8Array as jt, createInjectionKey as k, toUint8Array as kt, messageApiInjectionKey as l, fromBase64 as lt, use_theme_default as m, varStorage as mt, SlashMenu as n, Editor as nt, ContextMenu_default as o, TrackChangesBasePluginKey as ot, light_default as p, onChange as pt, check_solid_default as q, SuperInput_default as r, fieldAnnotationHelpers_exports as rt, SuperToolbar as s, getTrackChanges as st, Extensions as t, PresentationEditor as tt, messageProviderInjectionKey as u, toBase64 as ut, cssrAnchorMetaName as v, removeAwarenessStates as vt, render as w, readVarString as wt, useConfig as x, setIfUndefined as xt, toString_default as y, map$1 as yt, cM as z, defineNode as zt };
94631
+ export { getAllowedImageDimensions as $, isMounted as A, toUint8Array as At, cNotM as B, defineNode as Bt, resolveWrappedSlot as C, getUnixTime as Ct, warnOnce as D, readVarUint8Array as Dt, throwError as E, readVarUint as Et, changeColor as F, pow as Ft, ellipsis_vertical_solid_default as G, insideModal as H, assertNodeType as Ht, c as I, v_click_outside_default as It, comment_solid_default as J, xmark_solid_default as K, cB as L, getFileObject as Lt, use_memo_default as M, writeVarUint8Array as Mt, on as N, create$2 as Nt, useSsrAdapter as O, createEncoder as Ot, createId as P, min$1 as Pt, trackChangesHelpers_exports as Q, cE as R, comments_module_events as Rt, configProviderInjectionKey as S, setIfUndefined as St, call as T, readVarString as Tt, insidePopover as U, isNodeType as Ut, createKey as V, isMarkType as Vt, caret_down_solid_default as W, getRichTextExtensions as X, AIWriter_default as Y, getStarterExtensions as Z, useRtl as _, applyAwarenessUpdate as _t, BasicUpload_default as a, CommentsPluginKey as at, useThemeClass as b, map$1 as bt, Toolbar_default as c, getTrackChanges as ct, Dropdown_default as d, toBase64 as dt, SectionHelpers as et, ConfigProvider_default as f, isNode as ft, _common_default$3 as g, Awareness as gt, index_cssr_default$5 as h, varStorage as ht, SuperEditor_default as i, AnnotatorHelpers as it, useMergedState as j, writeVarUint as jt, createInjectionKey as k, length as kt, messageApiInjectionKey as l, createUint8ArrayFromArrayBuffer as lt, use_theme_default as m, onChange as mt, SlashMenu as n, Editor as nt, ContextMenu_default as o, createOrUpdateTrackedChangeComment as ot, light_default as p, offChange as pt, check_solid_default as q, SuperInput_default as r, fieldAnnotationHelpers_exports as rt, SuperToolbar as s, TrackChangesBasePluginKey as st, Extensions as t, PresentationEditor as tt, messageProviderInjectionKey as u, fromBase64 as ut, cssrAnchorMetaName as v, encodeAwarenessUpdate as vt, render as w, createDecoder as wt, useConfig as x, ObservableV2 as xt, toString_default as y, removeAwarenessStates as yt, cM as z, defineMark as zt };