superdoc 0.35.3 → 0.36.0

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 (37) hide show
  1. package/dist/chunks/{PdfViewer-cKeULrJD.cjs → PdfViewer-BVjCijQM.cjs} +1 -1
  2. package/dist/chunks/{PdfViewer-C2woiqSD.es.js → PdfViewer-Cw6hrjmI.es.js} +1 -1
  3. package/dist/chunks/{index-BLV0gVBb.cjs → index-C2I7v8Mz.cjs} +15 -5
  4. package/dist/chunks/{index-CUb1VdVb-Dn-WH3X_.cjs → index-C6pGFRDv-DPPxKqzz.cjs} +1 -1
  5. package/dist/chunks/{index-CUb1VdVb-BOiRrEoQ.es.js → index-C6pGFRDv-NmZ85_ZC.es.js} +1 -1
  6. package/dist/chunks/{index-qCXNfgIE.es.js → index-DxVLb2GI.es.js} +15 -5
  7. package/dist/chunks/{super-editor.es-FtM9y9Xi.cjs → super-editor.es-DU7fPHu1.cjs} +115 -50
  8. package/dist/chunks/{super-editor.es-C-FCfUaM.es.js → super-editor.es-wvWKJiSQ.es.js} +115 -50
  9. package/dist/packages/superdoc/src/core/SuperDoc.d.ts +5 -2
  10. package/dist/packages/superdoc/src/core/SuperDoc.d.ts.map +1 -1
  11. package/dist/packages/superdoc/src/core/types/index.d.ts +37 -2
  12. package/dist/packages/superdoc/src/core/types/index.d.ts.map +1 -1
  13. package/dist/style.css +37 -33
  14. package/dist/super-editor/ai-writer.es.js +2 -2
  15. package/dist/super-editor/chunks/{converter-DCcuo33v.js → converter-B_MV8Ifd.js} +1 -1
  16. package/dist/super-editor/chunks/{docx-zipper-BmJ2rJSz.js → docx-zipper-BErVQPhm.js} +1 -1
  17. package/dist/super-editor/chunks/{editor-CyldDVIe.js → editor-DJdDJYe1.js} +88 -17
  18. package/dist/super-editor/chunks/{index-CUb1VdVb.js → index-C6pGFRDv.js} +1 -1
  19. package/dist/super-editor/chunks/{toolbar-CO92tGD-.js → toolbar-C3z7Pv8Z.js} +2 -2
  20. package/dist/super-editor/converter.es.js +1 -1
  21. package/dist/super-editor/docx-zipper.es.js +2 -2
  22. package/dist/super-editor/editor.es.js +3 -3
  23. package/dist/super-editor/file-zipper.es.js +1 -1
  24. package/dist/super-editor/style.css +10 -6
  25. package/dist/super-editor/super-editor/src/core/Editor.d.ts +29 -4
  26. package/dist/super-editor/super-editor/src/core/Editor.d.ts.map +1 -1
  27. package/dist/super-editor/super-editor/src/extensions/track-changes/permission-helpers.d.ts +5 -2
  28. package/dist/super-editor/super-editor/src/extensions/track-changes/permission-helpers.d.ts.map +1 -1
  29. package/dist/super-editor/super-editor.es.js +32 -28
  30. package/dist/super-editor/toolbar.es.js +2 -2
  31. package/dist/super-editor.cjs +1 -1
  32. package/dist/super-editor.es.js +1 -1
  33. package/dist/superdoc.cjs +2 -2
  34. package/dist/superdoc.es.js +2 -2
  35. package/dist/superdoc.umd.js +123 -48
  36. package/dist/superdoc.umd.js.map +1 -1
  37. package/package.json +1 -1
@@ -15124,7 +15124,7 @@
15124
15124
  }
15125
15125
  return content2;
15126
15126
  }
15127
- const PIXELS_PER_INCH = 96;
15127
+ const PIXELS_PER_INCH$1 = 96;
15128
15128
  function inchesToTwips(inches) {
15129
15129
  if (inches == null) return;
15130
15130
  if (typeof inches === "string") inches = parseFloat(inches);
@@ -15147,12 +15147,12 @@
15147
15147
  }
15148
15148
  function inchesToPixels(inches) {
15149
15149
  if (inches == null) return;
15150
- const pixels = inches * PIXELS_PER_INCH;
15150
+ const pixels = inches * PIXELS_PER_INCH$1;
15151
15151
  return Math.round(pixels * 1e3) / 1e3;
15152
15152
  }
15153
15153
  function pixelsToInches(pixels) {
15154
15154
  if (pixels == null) return;
15155
- const inches = Number(pixels) / PIXELS_PER_INCH;
15155
+ const inches = Number(pixels) / PIXELS_PER_INCH$1;
15156
15156
  return inches;
15157
15157
  }
15158
15158
  function twipsToLines(twips) {
@@ -15170,7 +15170,7 @@
15170
15170
  function emuToPixels(emu) {
15171
15171
  if (emu == null) return;
15172
15172
  if (typeof emu === "string") emu = parseFloat(emu);
15173
- const pixels = emu * PIXELS_PER_INCH / 914400;
15173
+ const pixels = emu * PIXELS_PER_INCH$1 / 914400;
15174
15174
  return Math.round(pixels);
15175
15175
  }
15176
15176
  function pixelsToEmu(px) {
@@ -15206,12 +15206,12 @@
15206
15206
  }
15207
15207
  function pixelsToPolygonUnits(pixels) {
15208
15208
  if (pixels == null) return;
15209
- const pu = pixels * PIXELS_PER_INCH;
15209
+ const pu = pixels * PIXELS_PER_INCH$1;
15210
15210
  return Math.round(pu);
15211
15211
  }
15212
15212
  function polygonUnitsToPixels(pu) {
15213
15213
  if (pu == null) return;
15214
- const pixels = Number(pu) / PIXELS_PER_INCH;
15214
+ const pixels = Number(pu) / PIXELS_PER_INCH$1;
15215
15215
  return Math.round(pixels * 1e3) / 1e3;
15216
15216
  }
15217
15217
  function polygonToObj(polygonNode) {
@@ -35804,7 +35804,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
35804
35804
  static getStoredSuperdocVersion(docx) {
35805
35805
  return _SuperConverter2.getStoredCustomProperty(docx, "SuperdocVersion");
35806
35806
  }
35807
- static setStoredSuperdocVersion(docx = this.convertedXml, version2 = "0.35.3") {
35807
+ static setStoredSuperdocVersion(docx = this.convertedXml, version2 = "0.36.0") {
35808
35808
  return _SuperConverter2.setStoredCustomProperty(docx, "SuperdocVersion", version2, false);
35809
35809
  }
35810
35810
  /**
@@ -46741,7 +46741,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
46741
46741
  var __privateAdd$1 = (obj, member, value) => member.has(obj) ? __typeError$1("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
46742
46742
  var __privateSet = (obj, member, value, setter) => (__accessCheck$1(obj, member, "write to private field"), member.set(obj, value), value);
46743
46743
  var __privateMethod$1 = (obj, member, method) => (__accessCheck$1(obj, member, "access private method"), method);
46744
- var _Attribute_static, getGlobalAttributes_fn, getNodeAndMarksAttributes_fn, _Schema_static, createNodesSchema_fn, createMarksSchema_fn, _events, _ExtensionService_instances, setupExtensions_fn, attachEditorEvents_fn, _editor, _stateValidators, _xmlValidators, _requiredNodeTypes, _requiredMarkTypes, _SuperValidator_instances, initializeValidators_fn, collectValidatorRequirements_fn, analyzeDocument_fn, _commandService, _Editor_instances, initContainerElement_fn, init_fn, initRichText_fn, onFocus_fn, checkHeadless_fn, registerCopyHandler_fn, insertNewFileData_fn, createExtensionService_fn, createCommandService_fn, createConverter_fn, initMedia_fn, initFonts_fn, checkFonts_fn, determineUnsupportedFonts_fn, createSchema_fn, generatePmData_fn, createView_fn, onCollaborationReady_fn, initComments_fn, initPagination_fn, dispatchTransaction_fn, handleNodeSelection_fn, prepareDocumentForImport_fn, prepareDocumentForExport_fn, endCollaboration_fn, validateDocumentInit_fn, validateDocumentExport_fn, initDevTools_fn, _DocumentSectionView_instances, init_fn2, addToolTip_fn, _ListItemNodeView_instances, init_fn3, applyIndentStyling_fn, _FieldAnnotationView_instances, createAnnotation_fn, _AutoPageNumberNodeView_instances, renderDom_fn, scheduleUpdateNodeStyle_fn;
46744
+ var _Attribute_static, getGlobalAttributes_fn, getNodeAndMarksAttributes_fn, _Schema_static, createNodesSchema_fn, createMarksSchema_fn, _events, _ExtensionService_instances, setupExtensions_fn, attachEditorEvents_fn, _editor, _stateValidators, _xmlValidators, _requiredNodeTypes, _requiredMarkTypes, _SuperValidator_instances, initializeValidators_fn, collectValidatorRequirements_fn, analyzeDocument_fn, _commandService, _Editor_instances, initContainerElement_fn, init_fn, initRichText_fn, onFocus_fn, checkHeadless_fn, validateLayoutMargins_fn, isResponsiveMode_fn, registerCopyHandler_fn, insertNewFileData_fn, createExtensionService_fn, createCommandService_fn, createConverter_fn, initMedia_fn, initFonts_fn, checkFonts_fn, determineUnsupportedFonts_fn, createSchema_fn, generatePmData_fn, createView_fn, onCollaborationReady_fn, initComments_fn, initPagination_fn, dispatchTransaction_fn, handleNodeSelection_fn, prepareDocumentForImport_fn, prepareDocumentForExport_fn, endCollaboration_fn, validateDocumentInit_fn, validateDocumentExport_fn, initDevTools_fn, _DocumentSectionView_instances, init_fn2, addToolTip_fn, _ListItemNodeView_instances, init_fn3, applyIndentStyling_fn, _FieldAnnotationView_instances, createAnnotation_fn, _AutoPageNumberNodeView_instances, renderDom_fn, scheduleUpdateNodeStyle_fn;
46745
46745
  var GOOD_LEAF_SIZE = 200;
46746
46746
  var RopeSequence = function RopeSequence2() {
46747
46747
  };
@@ -61184,6 +61184,9 @@ Please report this to https://github.com/markedjs/marked.`, e) {
61184
61184
  marks
61185
61185
  };
61186
61186
  }
61187
+ const PIXELS_PER_INCH = 96;
61188
+ const MAX_HEIGHT_BUFFER_PX = 50;
61189
+ const MAX_WIDTH_BUFFER_PX = 20;
61187
61190
  const _Editor = class _Editor2 extends EventEmitter$2 {
61188
61191
  /**
61189
61192
  * Create a new Editor instance
@@ -61237,6 +61240,8 @@ Please report this to https://github.com/markedjs/marked.`, e) {
61237
61240
  lastSelection: null,
61238
61241
  suppressDefaultDocxStyles: false,
61239
61242
  jsonOverride: null,
61243
+ layoutMode: "paginated",
61244
+ layoutMargins: null,
61240
61245
  onBeforeCreate: () => null,
61241
61246
  onCreate: () => null,
61242
61247
  onUpdate: () => null,
@@ -61275,6 +61280,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
61275
61280
  });
61276
61281
  __privateMethod$1(this, _Editor_instances, initContainerElement_fn).call(this, options);
61277
61282
  __privateMethod$1(this, _Editor_instances, checkHeadless_fn).call(this, options);
61283
+ __privateMethod$1(this, _Editor_instances, validateLayoutMargins_fn).call(this, options);
61278
61284
  this.setOptions(options);
61279
61285
  let modes = {
61280
61286
  docx: () => __privateMethod$1(this, _Editor_instances, init_fn).call(this),
@@ -61653,17 +61659,28 @@ Please report this to https://github.com/markedjs/marked.`, e) {
61653
61659
  });
61654
61660
  }
61655
61661
  /**
61656
- * Get the maximum content size
61657
- * @returns {Object} Size object with width and height
61662
+ * Get the maximum content size based on page dimensions and margins
61663
+ * @returns {{width: number, height: number} | {}} Size object with width and height in pixels, or empty object if no page size
61658
61664
  */
61659
61665
  getMaxContentSize() {
61660
61666
  if (!this.converter) return {};
61661
61667
  const { pageSize = {}, pageMargins = {} } = this.converter.pageStyles ?? {};
61668
+ const { layoutMargins } = this.options;
61662
61669
  const { width, height } = pageSize;
61663
- const { top: top2 = 0, bottom: bottom2 = 0, left: left2 = 0, right: right2 = 0 } = pageMargins;
61670
+ const isResponsive = __privateMethod$1(this, _Editor_instances, isResponsiveMode_fn).call(this);
61671
+ const getMarginPx = (side) => {
61672
+ if (isResponsive) {
61673
+ return layoutMargins?.[side] ?? PIXELS_PER_INCH;
61674
+ }
61675
+ return (pageMargins?.[side] ?? 0) * PIXELS_PER_INCH;
61676
+ };
61677
+ const topPx = getMarginPx("top");
61678
+ const bottomPx = getMarginPx("bottom");
61679
+ const leftPx = getMarginPx("left");
61680
+ const rightPx = getMarginPx("right");
61664
61681
  if (!width || !height) return {};
61665
- const maxHeight = height * 96 - top2 * 96 - bottom2 * 96 - 50;
61666
- const maxWidth = width * 96 - left2 * 96 - right2 * 96 - 20;
61682
+ const maxHeight = height * PIXELS_PER_INCH - topPx - bottomPx - MAX_HEIGHT_BUFFER_PX;
61683
+ const maxWidth = width * PIXELS_PER_INCH - leftPx - rightPx - MAX_WIDTH_BUFFER_PX;
61667
61684
  return {
61668
61685
  width: maxWidth,
61669
61686
  height: maxHeight
@@ -61671,9 +61688,15 @@ Please report this to https://github.com/markedjs/marked.`, e) {
61671
61688
  }
61672
61689
  /**
61673
61690
  * Attach styles and attributes to the editor element
61691
+ * @param {HTMLElement} element - The editor container element
61692
+ * @param {HTMLElement} proseMirror - The ProseMirror element
61693
+ * @param {boolean} [hasPaginationEnabled=true] - Whether pagination is enabled
61694
+ * @returns {void}
61674
61695
  */
61675
61696
  updateEditorStyles(element2, proseMirror, hasPaginationEnabled = true) {
61676
61697
  const { pageSize, pageMargins } = this.converter.pageStyles ?? {};
61698
+ const { layoutMargins, pagination } = this.options;
61699
+ const isResponsive = __privateMethod$1(this, _Editor_instances, isResponsiveMode_fn).call(this);
61677
61700
  if (!proseMirror || !element2) {
61678
61701
  return;
61679
61702
  }
@@ -61682,12 +61705,17 @@ Please report this to https://github.com/markedjs/marked.`, e) {
61682
61705
  proseMirror.setAttribute("aria-label", "Main content area, start typing to enter text.");
61683
61706
  proseMirror.setAttribute("aria-description", "");
61684
61707
  proseMirror.classList.remove("view-mode");
61685
- if (pageSize) {
61686
- element2.style.width = pageSize.width + "in";
61687
- element2.style.minWidth = pageSize.width + "in";
61688
- element2.style.minHeight = pageSize.height + "in";
61708
+ if (pageSize?.width != null) {
61709
+ element2.style.width = isResponsive ? "100%" : `${pageSize.width}in`;
61710
+ element2.style.minWidth = isResponsive ? "" : `${pageSize.width}in`;
61689
61711
  }
61690
- if (pageMargins) {
61712
+ if (pageSize?.height != null) {
61713
+ element2.style.minHeight = isResponsive ? "" : `${pageSize.height}in`;
61714
+ }
61715
+ if (isResponsive) {
61716
+ element2.style.paddingLeft = (layoutMargins?.left ?? PIXELS_PER_INCH) + "px";
61717
+ element2.style.paddingRight = (layoutMargins?.right ?? PIXELS_PER_INCH) + "px";
61718
+ } else if (pageMargins) {
61691
61719
  element2.style.paddingLeft = pageMargins.left + "in";
61692
61720
  element2.style.paddingRight = pageMargins.right + "in";
61693
61721
  }
@@ -61710,7 +61738,10 @@ Please report this to https://github.com/markedjs/marked.`, e) {
61710
61738
  element2.style.webkitOverflowScrolling = "touch";
61711
61739
  const defaultLineHeight = 1.2;
61712
61740
  proseMirror.style.lineHeight = defaultLineHeight;
61713
- if (!hasPaginationEnabled) {
61741
+ if (isResponsive) {
61742
+ proseMirror.style.paddingTop = (layoutMargins?.top ?? PIXELS_PER_INCH) + "px";
61743
+ proseMirror.style.paddingBottom = (layoutMargins?.bottom ?? PIXELS_PER_INCH) + "px";
61744
+ } else if (!pagination) {
61714
61745
  proseMirror.style.paddingTop = "1in";
61715
61746
  proseMirror.style.paddingBottom = "1in";
61716
61747
  } else {
@@ -61735,6 +61766,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
61735
61766
  /**
61736
61767
  * Initializes responsive styles for mobile devices.
61737
61768
  * Sets up scaling based on viewport width and handles orientation changes.
61769
+ * Note: Scaling is skipped in responsive layout mode since content reflows naturally.
61738
61770
  *
61739
61771
  * @param {HTMLElement|void} element - The DOM element to apply mobile styles to
61740
61772
  * @returns {void}
@@ -61743,6 +61775,9 @@ Please report this to https://github.com/markedjs/marked.`, e) {
61743
61775
  if (!element2) {
61744
61776
  return;
61745
61777
  }
61778
+ if (__privateMethod$1(this, _Editor_instances, isResponsiveMode_fn).call(this)) {
61779
+ return;
61780
+ }
61746
61781
  const initialWidth = element2.offsetWidth;
61747
61782
  const updateScale = () => {
61748
61783
  const minPageSideMargin = 10;
@@ -61891,7 +61926,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
61891
61926
  { default: remarkStringify2 },
61892
61927
  { default: remarkGfm2 }
61893
61928
  ] = await Promise.all([
61894
- Promise.resolve().then(() => indexCUb1VdVb),
61929
+ Promise.resolve().then(() => indexC6pGFRDv),
61895
61930
  Promise.resolve().then(() => indexDRCvimau),
61896
61931
  Promise.resolve().then(() => indexC_x_N6Uh),
61897
61932
  Promise.resolve().then(() => indexD_sWOSiG),
@@ -62109,7 +62144,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
62109
62144
  * @returns {Object | void} Migration results
62110
62145
  */
62111
62146
  processCollaborationMigrations() {
62112
- console.debug("[checkVersionMigrations] Current editor version", "0.35.3");
62147
+ console.debug("[checkVersionMigrations] Current editor version", "0.36.0");
62113
62148
  if (!this.options.ydoc) return;
62114
62149
  const metaMap = this.options.ydoc.getMap("meta");
62115
62150
  let docVersion = metaMap.get("version");
@@ -62397,6 +62432,29 @@ Please report this to https://github.com/markedjs/marked.`, e) {
62397
62432
  global$3.window = options.mockWindow;
62398
62433
  }
62399
62434
  };
62435
+ validateLayoutMargins_fn = function(options) {
62436
+ if (!options.layoutMargins) return;
62437
+ const margins = options.layoutMargins;
62438
+ const validatedMargins = {};
62439
+ let hasValidValues = false;
62440
+ for (const key2 of ["top", "bottom", "left", "right"]) {
62441
+ if (margins[key2] !== void 0 && margins[key2] !== null) {
62442
+ const value = margins[key2];
62443
+ if (typeof value === "number" && Number.isFinite(value) && value >= 0) {
62444
+ validatedMargins[key2] = value;
62445
+ hasValidValues = true;
62446
+ } else {
62447
+ console.warn(
62448
+ `[SuperDoc] Invalid layoutMargins.${key2}: ${value}. Value must be a positive finite number. Ignoring this property.`
62449
+ );
62450
+ }
62451
+ }
62452
+ }
62453
+ options.layoutMargins = hasValidValues ? validatedMargins : null;
62454
+ };
62455
+ isResponsiveMode_fn = function() {
62456
+ return this.options.layoutMode === "responsive";
62457
+ };
62400
62458
  registerCopyHandler_fn = function() {
62401
62459
  this.view.dom.addEventListener("copy", (event) => {
62402
62460
  const clipboardData = event.clipboardData;
@@ -62614,6 +62672,9 @@ Please report this to https://github.com/markedjs/marked.`, e) {
62614
62672
  if (this.options.isHeadless || !this.extensionService || this.options.isHeaderOrFooter) {
62615
62673
  return;
62616
62674
  }
62675
+ if (__privateMethod$1(this, _Editor_instances, isResponsiveMode_fn).call(this)) {
62676
+ return;
62677
+ }
62617
62678
  const pagination = this.options.extensions.find((e) => e.name === "pagination");
62618
62679
  if (pagination && this.options.pagination) {
62619
62680
  const sectionData = await initPaginationData(this);
@@ -68598,7 +68659,7 @@ Please report this to https://github.com/markedjs/marked.`, e) {
68598
68659
  const pageWidth = toNumber2(pageStyles.pageSize.width);
68599
68660
  const marginLeft = toNumber2(pageStyles.pageMargins?.left);
68600
68661
  const marginRight = toNumber2(pageStyles.pageMargins?.right);
68601
- const pageAvailableWidthPx = Math.max((pageWidth - marginLeft - marginRight) * PIXELS_PER_INCH, 0);
68662
+ const pageAvailableWidthPx = Math.max((pageWidth - marginLeft - marginRight) * PIXELS_PER_INCH$1, 0);
68602
68663
  if (pageAvailableWidthPx > 0) {
68603
68664
  availableWidth = availableWidth ? Math.min(availableWidth, pageAvailableWidthPx) : pageAvailableWidthPx;
68604
68665
  }
@@ -96629,7 +96690,7 @@ ${style2}
96629
96690
  const AlignmentButtons = /* @__PURE__ */ _export_sfc$1(_sfc_main$e$1, [["__scopeId", "data-v-d84f57b6"]]);
96630
96691
  const _hoisted_1$c$1 = ["onClick", "onKeydown"];
96631
96692
  const _hoisted_2$9$1 = { class: "document-mode-column icon-column" };
96632
- const _hoisted_3$7$1 = ["innerHTML"];
96693
+ const _hoisted_3$6$1 = ["innerHTML"];
96633
96694
  const _hoisted_4$3$1 = { class: "document-mode-column text-column" };
96634
96695
  const _hoisted_5$2$1 = { class: "document-mode-type" };
96635
96696
  const _hoisted_6$1$1 = { class: "document-mode-description" };
@@ -96701,7 +96762,7 @@ ${style2}
96701
96762
  createBaseVNode("div", {
96702
96763
  class: "icon-column__icon",
96703
96764
  innerHTML: option.icon
96704
- }, null, 8, _hoisted_3$7$1)
96765
+ }, null, 8, _hoisted_3$6$1)
96705
96766
  ]),
96706
96767
  createBaseVNode("div", _hoisted_4$3$1, [
96707
96768
  createBaseVNode("div", _hoisted_5$2$1, toDisplayString(option.label), 1),
@@ -96803,7 +96864,7 @@ ${style2}
96803
96864
  key: 1,
96804
96865
  class: "link-title"
96805
96866
  };
96806
- const _hoisted_3$6$1 = {
96867
+ const _hoisted_3$5$1 = {
96807
96868
  key: 2,
96808
96869
  class: "link-title"
96809
96870
  };
@@ -96962,7 +97023,7 @@ ${style2}
96962
97023
  return openBlock(), createElementBlock("div", {
96963
97024
  class: normalizeClass(["link-input-ctn", { "high-contrast": unref(isHighContrastMode2) }])
96964
97025
  }, [
96965
- isAnchor.value ? (openBlock(), createElementBlock("div", _hoisted_1$a$1, "Page anchor")) : isEditing.value ? (openBlock(), createElementBlock("div", _hoisted_2$7$1, "Edit link")) : (openBlock(), createElementBlock("div", _hoisted_3$6$1, "Add link")),
97026
+ isAnchor.value ? (openBlock(), createElementBlock("div", _hoisted_1$a$1, "Page anchor")) : isEditing.value ? (openBlock(), createElementBlock("div", _hoisted_2$7$1, "Edit link")) : (openBlock(), createElementBlock("div", _hoisted_3$5$1, "Add link")),
96966
97027
  __props.showInput && !isAnchor.value ? (openBlock(), createElementBlock("div", _hoisted_4$2$1, [
96967
97028
  createBaseVNode("div", _hoisted_5$1$1, [
96968
97029
  _cache[4] || (_cache[4] = createBaseVNode("div", { class: "input-icon text-input-icon" }, "T", -1)),
@@ -97032,7 +97093,7 @@ ${style2}
97032
97093
  const LinkInput = /* @__PURE__ */ _export_sfc$1(_sfc_main$b$1, [["__scopeId", "data-v-ba50627b"]]);
97033
97094
  const _hoisted_1$9$1 = ["aria-label", "onClick", "onKeydown"];
97034
97095
  const _hoisted_2$6$1 = ["innerHTML"];
97035
- const _hoisted_3$5$1 = ["innerHTML"];
97096
+ const _hoisted_3$4$1 = ["innerHTML"];
97036
97097
  const ROW_SIZE$1 = 7;
97037
97098
  const _sfc_main$a$1 = {
97038
97099
  __name: "IconGridRow",
@@ -97159,7 +97220,7 @@ ${style2}
97159
97220
  class: "option__check",
97160
97221
  innerHTML: unref(toolbarIcons).colorOptionCheck,
97161
97222
  style: normalizeStyle(getCheckStyle(option.value, optionIndex))
97162
- }, null, 12, _hoisted_3$5$1)) : createCommentVNode("", true)
97223
+ }, null, 12, _hoisted_3$4$1)) : createCommentVNode("", true)
97163
97224
  ], 40, _hoisted_1$9$1);
97164
97225
  }), 128))
97165
97226
  ]);
@@ -97171,7 +97232,7 @@ ${style2}
97171
97232
  const DropIcon = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M320 512c53.2 0 101.4-21.6 136.1-56.6l-298.3-235C140 257.1 128 292.3 128 320c0 106 86 192 192 192zM505.2 370.7c4.4-16.2 6.8-33.1 6.8-50.7c0-91.2-130.2-262.3-166.6-308.3C339.4 4.2 330.5 0 320.9 0l-1.8 0c-9.6 0-18.5 4.2-24.5 11.7C277.8 33 240.7 81.3 205.8 136L38.8 5.1C28.4-3.1 13.3-1.2 5.1 9.2S-1.2 34.7 9.2 42.9l592 464c10.4 8.2 25.5 6.3 33.7-4.1s6.3-25.5-4.1-33.7L505.2 370.7zM224 336c0 44.2 35.8 80 80 80c8.8 0 16 7.2 16 16s-7.2 16-16 16c-61.9 0-112-50.1-112-112c0-8.8 7.2-16 16-16s16 7.2 16 16z"/></svg>\n';
97172
97233
  const _hoisted_1$8$1 = { class: "options-grid-wrap" };
97173
97234
  const _hoisted_2$5$1 = ["innerHTML"];
97174
- const _hoisted_3$4$1 = { class: "option-grid-ctn" };
97235
+ const _hoisted_3$3$1 = { class: "option-grid-ctn" };
97175
97236
  const _sfc_main$9$1 = {
97176
97237
  __name: "IconGrid",
97177
97238
  props: {
@@ -97213,7 +97274,7 @@ ${style2}
97213
97274
  }, null, 8, _hoisted_2$5$1),
97214
97275
  _cache[1] || (_cache[1] = createTextVNode(" None ", -1))
97215
97276
  ])) : createCommentVNode("", true),
97216
- createBaseVNode("div", _hoisted_3$4$1, [
97277
+ createBaseVNode("div", _hoisted_3$3$1, [
97217
97278
  createVNode(IconGridRow, {
97218
97279
  icons: __props.icons,
97219
97280
  "active-color": __props.activeColor,
@@ -97476,7 +97537,7 @@ ${style2}
97476
97537
  const TableGrid = /* @__PURE__ */ _export_sfc$1(_sfc_main$8$1, [["__scopeId", "data-v-92e8d5fb"]]);
97477
97538
  const _hoisted_1$6$1 = { class: "toolbar-table-actions" };
97478
97539
  const _hoisted_2$3$1 = ["onClick", "data-item", "ariaLabel"];
97479
- const _hoisted_3$3$1 = { class: "toolbar-table-actions__icon" };
97540
+ const _hoisted_3$2$1 = { class: "toolbar-table-actions__icon" };
97480
97541
  const _hoisted_4$1$1 = ["innerHTML"];
97481
97542
  const _hoisted_5$3 = { class: "toolbar-table-actions__label" };
97482
97543
  const _sfc_main$7$1 = {
@@ -97502,7 +97563,7 @@ ${style2}
97502
97563
  ariaLabel: option.props?.ariaLabel,
97503
97564
  role: "menuitem"
97504
97565
  }, [
97505
- createBaseVNode("div", _hoisted_3$3$1, [
97566
+ createBaseVNode("div", _hoisted_3$2$1, [
97506
97567
  createBaseVNode("div", {
97507
97568
  class: "toolbar-table-actions__icon-wrapper",
97508
97569
  innerHTML: option.icon
@@ -97541,7 +97602,7 @@ ${style2}
97541
97602
  const checkIconSvg$1 = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M438.6 105.4c12.5 12.5 12.5 32.8 0 45.3l-256 256c-12.5 12.5-32.8 12.5-45.3 0l-128-128c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0L160 338.7 393.4 105.4c12.5-12.5 32.8-12.5 45.3 0z"/></svg>\n';
97542
97603
  const _hoisted_1$5$1 = { class: "search-input-ctn" };
97543
97604
  const _hoisted_2$2$1 = { class: "row" };
97544
- const _hoisted_3$2$1 = ["onKeydown"];
97605
+ const _hoisted_3$1$1 = ["onKeydown"];
97545
97606
  const _sfc_main$6$1 = {
97546
97607
  __name: "SearchInput",
97547
97608
  props: {
@@ -97567,7 +97628,7 @@ ${style2}
97567
97628
  name: "search",
97568
97629
  placeholder: "Type search string",
97569
97630
  onKeydown: withKeys(withModifiers(handleSubmit, ["stop", "prevent"]), ["enter"])
97570
- }, null, 40, _hoisted_3$2$1), [
97631
+ }, null, 40, _hoisted_3$1$1), [
97571
97632
  [vModelText, searchValue.value]
97572
97633
  ])
97573
97634
  ]),
@@ -100234,7 +100295,7 @@ ${style2}
100234
100295
  class: "slash-menu-divider",
100235
100296
  tabindex: "0"
100236
100297
  };
100237
- const _hoisted_3$1$1 = ["onClick"];
100298
+ const _hoisted_3$8 = ["onClick"];
100238
100299
  const _hoisted_4$5 = ["innerHTML"];
100239
100300
  const _sfc_main$5$1 = {
100240
100301
  __name: "SlashMenu",
@@ -100560,7 +100621,7 @@ ${style2}
100560
100621
  createBaseVNode("span", null, toDisplayString(item.label), 1)
100561
100622
  ], 64)) : createCommentVNode("", true)
100562
100623
  ], 512)
100563
- ], 10, _hoisted_3$1$1);
100624
+ ], 10, _hoisted_3$8);
100564
100625
  }), 128))
100565
100626
  ], 64);
100566
100627
  }), 128))
@@ -100864,12 +100925,11 @@ ${style2}
100864
100925
  };
100865
100926
  const GenericPopover = /* @__PURE__ */ _export_sfc$1(_sfc_main$2$1, [["__scopeId", "data-v-cbddcc0f"]]);
100866
100927
  const BlankDOCX$1 = "data:application/octet-stream;base64,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";
100867
- const _hoisted_1$1$1 = { class: "super-editor-container" };
100868
- const _hoisted_2$a = {
100928
+ const _hoisted_1$1$1 = {
100869
100929
  key: 1,
100870
100930
  class: "placeholder-editor"
100871
100931
  };
100872
- const _hoisted_3$8 = { class: "placeholder-title" };
100932
+ const _hoisted_2$a = { class: "placeholder-title" };
100873
100933
  const DOCX$1 = "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
100874
100934
  const _sfc_main$1$1 = {
100875
100935
  __name: "SuperEditor",
@@ -100900,6 +100960,9 @@ ${style2}
100900
100960
  const editorReady = ref(false);
100901
100961
  const editor = shallowRef(null);
100902
100962
  const message = useMessage();
100963
+ const isResponsiveMode = computed(() => {
100964
+ return props.options.layoutMode === "responsive";
100965
+ });
100903
100966
  const editorWrapper = ref(null);
100904
100967
  const editorElem = ref(null);
100905
100968
  const fileSource = ref(null);
@@ -101091,7 +101154,9 @@ ${style2}
101091
101154
  editor.value = null;
101092
101155
  });
101093
101156
  return (_ctx, _cache) => {
101094
- return openBlock(), createElementBlock("div", _hoisted_1$1$1, [
101157
+ return openBlock(), createElementBlock("div", {
101158
+ class: normalizeClass(["super-editor-container", { "no-min-height": isResponsiveMode.value }])
101159
+ }, [
101095
101160
  __props.options.rulers && !!editor.value ? (openBlock(), createBlock(Ruler, {
101096
101161
  key: 0,
101097
101162
  class: "ruler",
@@ -101120,8 +101185,8 @@ ${style2}
101120
101185
  closePopover
101121
101186
  }, null, 8, ["editor", "popoverControls"])) : createCommentVNode("", true)
101122
101187
  ], 544),
101123
- !editorReady.value ? (openBlock(), createElementBlock("div", _hoisted_2$a, [
101124
- createBaseVNode("div", _hoisted_3$8, [
101188
+ !editorReady.value ? (openBlock(), createElementBlock("div", _hoisted_1$1$1, [
101189
+ createBaseVNode("div", _hoisted_2$a, [
101125
101190
  createVNode(unref(NSkeleton), {
101126
101191
  text: "",
101127
101192
  style: { "width": "60%" }
@@ -101177,11 +101242,11 @@ ${style2}
101177
101242
  ]),
101178
101243
  _: 1
101179
101244
  }, 8, ["editor", "visible", "position"])) : createCommentVNode("", true)
101180
- ]);
101245
+ ], 2);
101181
101246
  };
101182
101247
  }
101183
101248
  };
101184
- const SuperEditor = /* @__PURE__ */ _export_sfc$1(_sfc_main$1$1, [["__scopeId", "data-v-86fdd359"]]);
101249
+ const SuperEditor = /* @__PURE__ */ _export_sfc$1(_sfc_main$1$1, [["__scopeId", "data-v-25b8680d"]]);
101185
101250
  const _hoisted_1$h = ["innerHTML"];
101186
101251
  const _sfc_main$i = {
101187
101252
  __name: "SuperInput",
@@ -118072,6 +118137,8 @@ ${style2}
118072
118137
  suppressDefaultDocxStyles: proxy.$superdoc.config.suppressDefaultDocxStyles,
118073
118138
  disableContextMenu: proxy.$superdoc.config.disableContextMenu,
118074
118139
  jsonOverride: proxy.$superdoc.config.jsonOverride,
118140
+ layoutMode: proxy.$superdoc.config.layoutMode,
118141
+ layoutMargins: proxy.$superdoc.config.layoutMargins,
118075
118142
  permissionResolver: (payload = {}) => proxy.$superdoc.canPerformPermission({
118076
118143
  role: proxy.$superdoc.config.role,
118077
118144
  isInternal: proxy.$superdoc.config.isInternal,
@@ -118445,7 +118512,7 @@ ${style2}
118445
118512
  };
118446
118513
  }
118447
118514
  };
118448
- const App = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-29e35f23"]]);
118515
+ const App = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-5138e8c6"]]);
118449
118516
  const createSuperdocVueApp = () => {
118450
118517
  const app = createApp(App);
118451
118518
  const pinia = createPinia();
@@ -118582,7 +118649,15 @@ ${style2}
118582
118649
  // async (file) => url;
118583
118650
  handleImageUpload: null,
118584
118651
  // Disable context menus (slash and right-click) globally
118585
- disableContextMenu: false
118652
+ disableContextMenu: false,
118653
+ // Document layout mode: 'paginated' (default) or 'responsive'
118654
+ // 'paginated': Fixed page width, shows page breaks like a real document
118655
+ // 'responsive': 100% width, text reflows to fit the container (useful for mobile/accessibility)
118656
+ layoutMode: "paginated",
118657
+ // Custom margins for responsive layout mode (values in pixels)
118658
+ // Only applies when layoutMode is 'responsive'
118659
+ // Example: { top: 48, bottom: 48, left: 48, right: 48 }
118660
+ layoutMargins: null
118586
118661
  };
118587
118662
  /**
118588
118663
  * @param {Config} config
@@ -118615,7 +118690,7 @@ ${style2}
118615
118690
  this.config.colors = shuffleArray(this.config.colors);
118616
118691
  this.userColorMap = /* @__PURE__ */ new Map();
118617
118692
  this.colorIndex = 0;
118618
- this.version = "0.35.3";
118693
+ this.version = "0.36.0";
118619
118694
  this.#log("🦋 [superdoc] Using SuperDoc version:", this.version);
118620
118695
  this.superdocId = config2.superdocId || v4();
118621
118696
  this.colors = this.config.colors;
@@ -121037,7 +121112,7 @@ ${style2}
121037
121112
  value && typeof value === "object" && "byteLength" in value && "byteOffset" in value
121038
121113
  );
121039
121114
  }
121040
- const indexCUb1VdVb = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
121115
+ const indexC6pGFRDv = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
121041
121116
  __proto__: null,
121042
121117
  unified
121043
121118
  }, Symbol.toStringTag, { value: "Module" }));