@harbour-enterprises/superdoc 2.0.0-next.7 → 2.0.0-next.9

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 (27) hide show
  1. package/dist/chunks/{PdfViewer-DJcF4vHT.es.js → PdfViewer-CNPSrXlj.es.js} +1 -1
  2. package/dist/chunks/{PdfViewer-FweBhk9D.cjs → PdfViewer-DsT_w4-X.cjs} +1 -1
  3. package/dist/chunks/{index-DaCKjOwK.es.js → index-BDVCqES7.es.js} +3 -3
  4. package/dist/chunks/{index-CxQTFiXW-O-lOD6-A.es.js → index-DGXC37hB-B7UYG5g_.es.js} +1 -1
  5. package/dist/chunks/{index-CxQTFiXW-7XoegSE2.cjs → index-DGXC37hB-BZN6aZyV.cjs} +1 -1
  6. package/dist/chunks/{index-D68il1se.cjs → index-Xx6AaBZS.cjs} +3 -3
  7. package/dist/chunks/{super-editor.es-Bd6B_Npe.cjs → super-editor.es-BFOdLp_R.cjs} +53 -8
  8. package/dist/chunks/{super-editor.es-UkB3ld-_.es.js → super-editor.es-bATnck82.es.js} +53 -8
  9. package/dist/super-editor/ai-writer.es.js +2 -2
  10. package/dist/super-editor/chunks/{converter-Dtu-msFQ.js → converter-L2w5yBfC.js} +45 -3
  11. package/dist/super-editor/chunks/{docx-zipper-D2uP_64-.js → docx-zipper-DNw1qYEn.js} +1 -1
  12. package/dist/super-editor/chunks/{editor-CkPpri9l.js → editor-DnidDUVK.js} +10 -7
  13. package/dist/super-editor/chunks/{index-CxQTFiXW.js → index-DGXC37hB.js} +1 -1
  14. package/dist/super-editor/chunks/{toolbar-CNpHAKgS.js → toolbar-C2AE--wJ.js} +2 -2
  15. package/dist/super-editor/converter.es.js +1 -1
  16. package/dist/super-editor/docx-zipper.es.js +2 -2
  17. package/dist/super-editor/editor.es.js +3 -3
  18. package/dist/super-editor/file-zipper.es.js +1 -1
  19. package/dist/super-editor/super-editor.es.js +6 -6
  20. package/dist/super-editor/toolbar.es.js +2 -2
  21. package/dist/super-editor.cjs +1 -1
  22. package/dist/super-editor.es.js +1 -1
  23. package/dist/superdoc.cjs +2 -2
  24. package/dist/superdoc.es.js +2 -2
  25. package/dist/superdoc.umd.js +55 -10
  26. package/dist/superdoc.umd.js.map +1 -1
  27. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  import { y as defineComponent, A as h, P as Transition, a0 as process$1, K as watchEffect, a as computed, r as ref, j as onMounted, X as onUnmounted, b as createElementBlock, o as openBlock, f as createBaseVNode, e as createCommentVNode, s as createVNode, x as unref } from "./vue-CLFbn_1r.es.js";
2
- import { d as derived, c, a as cB, f as fadeInTransition, b as cM, N as NBaseLoading, w as warnOnce, u as useConfig, e as useTheme, p as pxfy, g as createKey, h as useThemeClass, i as useCompitable, _ as _export_sfc, j as useSuperdocStore, s as storeToRefs, k as useSelection } from "./index-DaCKjOwK.es.js";
2
+ import { d as derived, c, a as cB, f as fadeInTransition, b as cM, N as NBaseLoading, w as warnOnce, u as useConfig, e as useTheme, p as pxfy, g as createKey, h as useThemeClass, i as useCompitable, _ as _export_sfc, j as useSuperdocStore, s as storeToRefs, k as useSelection } from "./index-BDVCqES7.es.js";
3
3
  function self(vars) {
4
4
  const {
5
5
  opacityDisabled,
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const vue = require("./vue-gvuFr0vx.cjs");
4
- const superdoc = require("./index-D68il1se.cjs");
4
+ const superdoc = require("./index-Xx6AaBZS.cjs");
5
5
  function self(vars) {
6
6
  const {
7
7
  opacityDisabled,
@@ -1,4 +1,4 @@
1
- import { q as index, C as CommentsPluginKey, h as TrackChangesBasePluginKey, E as Editor, n as getRichTextExtensions, f as SuperInput, P as PresentationEditor, e as SuperEditor, A as AIWriter, g as SuperToolbar, i as createZip } from "./super-editor.es-UkB3ld-_.es.js";
1
+ import { q as index, C as CommentsPluginKey, h as TrackChangesBasePluginKey, E as Editor, n as getRichTextExtensions, f as SuperInput, P as PresentationEditor, e as SuperEditor, A as AIWriter, g as SuperToolbar, i as createZip } from "./super-editor.es-bATnck82.es.js";
2
2
  import { B as BlankDOCX } from "./blank-docx-ABm6XYAA.es.js";
3
3
  import { E as EventEmitter } from "./eventemitter3-D_2kqkfV.es.js";
4
4
  import { HocuspocusProvider, HocuspocusProviderWebsocket } from "@hocuspocus/provider";
@@ -17470,7 +17470,7 @@ const _sfc_main = {
17470
17470
  __name: "SuperDoc",
17471
17471
  emits: ["selection-update"],
17472
17472
  setup(__props, { emit: __emit }) {
17473
- const PdfViewer = defineAsyncComponent(() => import("./PdfViewer-DJcF4vHT.es.js"));
17473
+ const PdfViewer = defineAsyncComponent(() => import("./PdfViewer-CNPSrXlj.es.js"));
17474
17474
  const superdocStore = useSuperdocStore();
17475
17475
  const commentsStore = useCommentsStore();
17476
17476
  const {
@@ -18374,7 +18374,7 @@ class SuperDoc extends EventEmitter {
18374
18374
  this.config.colors = shuffleArray(this.config.colors);
18375
18375
  this.userColorMap = /* @__PURE__ */ new Map();
18376
18376
  this.colorIndex = 0;
18377
- this.version = "2.0.0-next.7";
18377
+ this.version = "2.0.0-next.9";
18378
18378
  this.#log("🦋 [superdoc] Using SuperDoc version:", this.version);
18379
18379
  this.superdocId = config.superdocId || v4();
18380
18380
  this.colors = this.config.colors;
@@ -1,4 +1,4 @@
1
- import { s as getDefaultExportFromCjs$2 } from "./super-editor.es-UkB3ld-_.es.js";
1
+ import { s as getDefaultExportFromCjs$2 } from "./super-editor.es-bATnck82.es.js";
2
2
  import { V as VFile } from "./index-CvBqQJbG-CvBqQJbG.es.js";
3
3
  function bail(error) {
4
4
  if (error) {
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const superEditor_es = require("./super-editor.es-Bd6B_Npe.cjs");
3
+ const superEditor_es = require("./super-editor.es-BFOdLp_R.cjs");
4
4
  const indexCvBqQJbG = require("./index-CvBqQJbG-Dwm0THD7.cjs");
5
5
  function bail(error) {
6
6
  if (error) {
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- const superEditor_es = require("./super-editor.es-Bd6B_Npe.cjs");
2
+ const superEditor_es = require("./super-editor.es-BFOdLp_R.cjs");
3
3
  const blankDocx = require("./blank-docx-DfW3Eeh2.cjs");
4
4
  const eventemitter3 = require("./eventemitter3-DIclNhoR.cjs");
5
5
  const provider = require("@hocuspocus/provider");
@@ -17487,7 +17487,7 @@ const _sfc_main = {
17487
17487
  __name: "SuperDoc",
17488
17488
  emits: ["selection-update"],
17489
17489
  setup(__props, { emit: __emit }) {
17490
- const PdfViewer = vue.defineAsyncComponent(() => Promise.resolve().then(() => require("./PdfViewer-FweBhk9D.cjs")));
17490
+ const PdfViewer = vue.defineAsyncComponent(() => Promise.resolve().then(() => require("./PdfViewer-DsT_w4-X.cjs")));
17491
17491
  const superdocStore = useSuperdocStore();
17492
17492
  const commentsStore = useCommentsStore();
17493
17493
  const {
@@ -18391,7 +18391,7 @@ class SuperDoc extends eventemitter3.EventEmitter {
18391
18391
  this.config.colors = shuffleArray(this.config.colors);
18392
18392
  this.userColorMap = /* @__PURE__ */ new Map();
18393
18393
  this.colorIndex = 0;
18394
- this.version = "2.0.0-next.7";
18394
+ this.version = "2.0.0-next.9";
18395
18395
  this.#log("🦋 [superdoc] Using SuperDoc version:", this.version);
18396
18396
  this.superdocId = config.superdocId || uuid.v4();
18397
18397
  this.colors = this.config.colors;
@@ -39216,11 +39216,15 @@ const encode$1 = (params2, encodedAttrs = {}) => {
39216
39216
  }
39217
39217
  if (elements.length === 1) {
39218
39218
  text = elements[0].text;
39219
- const xmlSpace = encodedAttrs.xmlSpace ?? elements[0]?.attributes?.["xml:space"];
39219
+ const docXmlSpace = params2.converter?.documentAttributes?.["xml:space"];
39220
+ const xmlSpace = encodedAttrs.xmlSpace ?? attributes?.["xml:space"] ?? elements[0]?.attributes?.["xml:space"] ?? docXmlSpace;
39220
39221
  if (xmlSpace !== "preserve" && typeof text === "string") {
39221
39222
  text = text.replace(/^[ \t\n\r]+/, "").replace(/[ \t\n\r]+$/, "");
39222
39223
  }
39223
39224
  text = text.replace(/\[\[sdspace\]\]/g, "");
39225
+ if (xmlSpace !== "preserve" && typeof text === "string" && !text.trim()) {
39226
+ return null;
39227
+ }
39224
39228
  } else if (!elements.length && encodedAttrs.xmlSpace === "preserve") {
39225
39229
  text = " ";
39226
39230
  } else return null;
@@ -42203,8 +42207,46 @@ const _SuperConverter = class _SuperConverter2 {
42203
42207
  this.declaration = this.initialJSON?.declaration;
42204
42208
  this.resolveDocumentGuid();
42205
42209
  }
42210
+ /**
42211
+ * Parses XML content into JSON format while preserving whitespace-only text runs.
42212
+ *
42213
+ * This method wraps xml-js's xml2json parser with additional preprocessing to prevent
42214
+ * the parser from dropping whitespace-only content in <w:t> and <w:delText> elements.
42215
+ * This is critical for correctly handling documents that rely on document-level
42216
+ * xml:space="preserve" rather than per-element attributes, which is common in
42217
+ * PDF-to-DOCX converted documents.
42218
+ *
42219
+ * The whitespace preservation strategy:
42220
+ * 1. Before parsing, wraps whitespace-only content with [[sdspace]] placeholders
42221
+ * 2. xml-js parser preserves the placeholder-wrapped text
42222
+ * 3. During text node processing (t-translator.js), placeholders are removed
42223
+ *
42224
+ * @param {string} xml - The XML string to parse
42225
+ * @returns {Object} The parsed JSON representation of the XML document
42226
+ *
42227
+ * @example
42228
+ * // Handles whitespace-only text runs
42229
+ * const xml = '<w:t> </w:t>';
42230
+ * const result = parseXmlToJson(xml);
42231
+ * // Result preserves the space: { elements: [{ text: '[[sdspace]] [[sdspace]]' }] }
42232
+ *
42233
+ * @example
42234
+ * // Handles elements with attributes
42235
+ * const xml = '<w:t xml:space="preserve"> text </w:t>';
42236
+ * const result = parseXmlToJson(xml);
42237
+ * // Preserves content and attributes
42238
+ *
42239
+ * @example
42240
+ * // Handles both w:t and w:delText elements
42241
+ * const xml = '<w:delText> </w:delText>';
42242
+ * const result = parseXmlToJson(xml);
42243
+ * // Preserves whitespace in deleted text
42244
+ */
42206
42245
  parseXmlToJson(xml) {
42207
- const newXml = xml.replace(/(<w:t xml:space="preserve">)(\s+)(<\/w:t>)/g, "$1[[sdspace]]$2[[sdspace]]$3");
42246
+ const newXml = xml.replace(
42247
+ /(<w:(?:t|delText)(?:\s[^>]*)?>)(\s+)(<\/w:(?:t|delText)>)/g,
42248
+ "$1[[sdspace]]$2[[sdspace]]$3"
42249
+ );
42208
42250
  return JSON.parse(xmljs.xml2json(newXml, null, 2));
42209
42251
  }
42210
42252
  /**
@@ -42427,7 +42469,7 @@ const _SuperConverter = class _SuperConverter2 {
42427
42469
  static getStoredSuperdocVersion(docx) {
42428
42470
  return _SuperConverter2.getStoredCustomProperty(docx, "SuperdocVersion");
42429
42471
  }
42430
- static setStoredSuperdocVersion(docx = this.convertedXml, version2 = "2.0.0-next.7") {
42472
+ static setStoredSuperdocVersion(docx = this.convertedXml, version2 = "2.0.0-next.9") {
42431
42473
  return _SuperConverter2.setStoredCustomProperty(docx, "SuperdocVersion", version2, false);
42432
42474
  }
42433
42475
  /**
@@ -60508,7 +60550,7 @@ const isHeadless = (editor) => {
60508
60550
  const shouldSkipNodeView = (editor) => {
60509
60551
  return isHeadless(editor);
60510
60552
  };
60511
- const summaryVersion = "2.0.0-next.7";
60553
+ const summaryVersion = "2.0.0-next.9";
60512
60554
  const nodeKeys = ["group", "content", "marks", "inline", "atom", "defining", "code", "tableRole", "summary"];
60513
60555
  const markKeys = ["group", "inclusive", "excludes", "spanning", "code"];
60514
60556
  function mapAttributes(attrs) {
@@ -61297,7 +61339,7 @@ const _Editor = class _Editor2 extends EventEmitter$1 {
61297
61339
  { default: remarkStringify },
61298
61340
  { default: remarkGfm }
61299
61341
  ] = await Promise.all([
61300
- Promise.resolve().then(() => require("./index-CxQTFiXW-7XoegSE2.cjs")),
61342
+ Promise.resolve().then(() => require("./index-DGXC37hB-BZN6aZyV.cjs")),
61301
61343
  Promise.resolve().then(() => require("./index-DRCvimau-H4Ck3S9a.cjs")),
61302
61344
  Promise.resolve().then(() => require("./index-C_x_N6Uh-Db3CUJMX.cjs")),
61303
61345
  Promise.resolve().then(() => require("./index-D_sWOSiG-BtDZzJ6I.cjs")),
@@ -61502,7 +61544,7 @@ const _Editor = class _Editor2 extends EventEmitter$1 {
61502
61544
  * Process collaboration migrations
61503
61545
  */
61504
61546
  processCollaborationMigrations() {
61505
- console.debug("[checkVersionMigrations] Current editor version", "2.0.0-next.7");
61547
+ console.debug("[checkVersionMigrations] Current editor version", "2.0.0-next.9");
61506
61548
  if (!this.options.ydoc) return;
61507
61549
  const metaMap = this.options.ydoc.getMap("meta");
61508
61550
  let docVersion = metaMap.get("version");
@@ -86372,7 +86414,10 @@ const hydrateParagraphStyleAttrs = (para, context, preResolved) => {
86372
86414
  tabStops: cloneIfObject(resolvedExtended.tabStops),
86373
86415
  keepLines: resolvedExtended.keepLines,
86374
86416
  keepNext: resolvedExtended.keepNext,
86375
- numberingProperties: cloneIfObject(resolvedAsRecord.numberingProperties)
86417
+ numberingProperties: cloneIfObject(resolvedAsRecord.numberingProperties),
86418
+ // Extract contextualSpacing from style resolution - this is a sibling to spacing in OOXML,
86419
+ // not nested within it. When true, suppresses spacing between paragraphs of the same style.
86420
+ contextualSpacing: resolvedExtended.contextualSpacing
86376
86421
  };
86377
86422
  return hydrated;
86378
86423
  };
@@ -87107,7 +87152,7 @@ const computeParagraphAttrs = (para, styleContext, listCounterContext, converter
87107
87152
  paragraphAttrs.spacing.afterAutospacing = normalizedSpacing.afterAutospacing;
87108
87153
  }
87109
87154
  }
87110
- const contextualSpacingValue = normalizedSpacing?.contextualSpacing ?? safeGetProperty(paragraphProps, "contextualSpacing") ?? safeGetProperty(attrs, "contextualSpacing");
87155
+ const contextualSpacingValue = normalizedSpacing?.contextualSpacing ?? safeGetProperty(paragraphProps, "contextualSpacing") ?? safeGetProperty(attrs, "contextualSpacing") ?? hydrated?.contextualSpacing;
87111
87156
  if (contextualSpacingValue != null) {
87112
87157
  paragraphAttrs.contextualSpacing = isTruthy(contextualSpacingValue);
87113
87158
  }
@@ -39199,11 +39199,15 @@ const encode$1 = (params2, encodedAttrs = {}) => {
39199
39199
  }
39200
39200
  if (elements.length === 1) {
39201
39201
  text = elements[0].text;
39202
- const xmlSpace = encodedAttrs.xmlSpace ?? elements[0]?.attributes?.["xml:space"];
39202
+ const docXmlSpace = params2.converter?.documentAttributes?.["xml:space"];
39203
+ const xmlSpace = encodedAttrs.xmlSpace ?? attributes?.["xml:space"] ?? elements[0]?.attributes?.["xml:space"] ?? docXmlSpace;
39203
39204
  if (xmlSpace !== "preserve" && typeof text === "string") {
39204
39205
  text = text.replace(/^[ \t\n\r]+/, "").replace(/[ \t\n\r]+$/, "");
39205
39206
  }
39206
39207
  text = text.replace(/\[\[sdspace\]\]/g, "");
39208
+ if (xmlSpace !== "preserve" && typeof text === "string" && !text.trim()) {
39209
+ return null;
39210
+ }
39207
39211
  } else if (!elements.length && encodedAttrs.xmlSpace === "preserve") {
39208
39212
  text = " ";
39209
39213
  } else return null;
@@ -42186,8 +42190,46 @@ const _SuperConverter = class _SuperConverter2 {
42186
42190
  this.declaration = this.initialJSON?.declaration;
42187
42191
  this.resolveDocumentGuid();
42188
42192
  }
42193
+ /**
42194
+ * Parses XML content into JSON format while preserving whitespace-only text runs.
42195
+ *
42196
+ * This method wraps xml-js's xml2json parser with additional preprocessing to prevent
42197
+ * the parser from dropping whitespace-only content in <w:t> and <w:delText> elements.
42198
+ * This is critical for correctly handling documents that rely on document-level
42199
+ * xml:space="preserve" rather than per-element attributes, which is common in
42200
+ * PDF-to-DOCX converted documents.
42201
+ *
42202
+ * The whitespace preservation strategy:
42203
+ * 1. Before parsing, wraps whitespace-only content with [[sdspace]] placeholders
42204
+ * 2. xml-js parser preserves the placeholder-wrapped text
42205
+ * 3. During text node processing (t-translator.js), placeholders are removed
42206
+ *
42207
+ * @param {string} xml - The XML string to parse
42208
+ * @returns {Object} The parsed JSON representation of the XML document
42209
+ *
42210
+ * @example
42211
+ * // Handles whitespace-only text runs
42212
+ * const xml = '<w:t> </w:t>';
42213
+ * const result = parseXmlToJson(xml);
42214
+ * // Result preserves the space: { elements: [{ text: '[[sdspace]] [[sdspace]]' }] }
42215
+ *
42216
+ * @example
42217
+ * // Handles elements with attributes
42218
+ * const xml = '<w:t xml:space="preserve"> text </w:t>';
42219
+ * const result = parseXmlToJson(xml);
42220
+ * // Preserves content and attributes
42221
+ *
42222
+ * @example
42223
+ * // Handles both w:t and w:delText elements
42224
+ * const xml = '<w:delText> </w:delText>';
42225
+ * const result = parseXmlToJson(xml);
42226
+ * // Preserves whitespace in deleted text
42227
+ */
42189
42228
  parseXmlToJson(xml) {
42190
- const newXml = xml.replace(/(<w:t xml:space="preserve">)(\s+)(<\/w:t>)/g, "$1[[sdspace]]$2[[sdspace]]$3");
42229
+ const newXml = xml.replace(
42230
+ /(<w:(?:t|delText)(?:\s[^>]*)?>)(\s+)(<\/w:(?:t|delText)>)/g,
42231
+ "$1[[sdspace]]$2[[sdspace]]$3"
42232
+ );
42191
42233
  return JSON.parse(xmljs.xml2json(newXml, null, 2));
42192
42234
  }
42193
42235
  /**
@@ -42410,7 +42452,7 @@ const _SuperConverter = class _SuperConverter2 {
42410
42452
  static getStoredSuperdocVersion(docx) {
42411
42453
  return _SuperConverter2.getStoredCustomProperty(docx, "SuperdocVersion");
42412
42454
  }
42413
- static setStoredSuperdocVersion(docx = this.convertedXml, version2 = "2.0.0-next.7") {
42455
+ static setStoredSuperdocVersion(docx = this.convertedXml, version2 = "2.0.0-next.9") {
42414
42456
  return _SuperConverter2.setStoredCustomProperty(docx, "SuperdocVersion", version2, false);
42415
42457
  }
42416
42458
  /**
@@ -60491,7 +60533,7 @@ const isHeadless = (editor) => {
60491
60533
  const shouldSkipNodeView = (editor) => {
60492
60534
  return isHeadless(editor);
60493
60535
  };
60494
- const summaryVersion = "2.0.0-next.7";
60536
+ const summaryVersion = "2.0.0-next.9";
60495
60537
  const nodeKeys = ["group", "content", "marks", "inline", "atom", "defining", "code", "tableRole", "summary"];
60496
60538
  const markKeys = ["group", "inclusive", "excludes", "spanning", "code"];
60497
60539
  function mapAttributes(attrs) {
@@ -61280,7 +61322,7 @@ const _Editor = class _Editor2 extends EventEmitter$1 {
61280
61322
  { default: remarkStringify },
61281
61323
  { default: remarkGfm }
61282
61324
  ] = await Promise.all([
61283
- import("./index-CxQTFiXW-O-lOD6-A.es.js"),
61325
+ import("./index-DGXC37hB-B7UYG5g_.es.js"),
61284
61326
  import("./index-DRCvimau-Cw339678.es.js"),
61285
61327
  import("./index-C_x_N6Uh-DJn8hIEt.es.js"),
61286
61328
  import("./index-D_sWOSiG-DE96TaT5.es.js"),
@@ -61485,7 +61527,7 @@ const _Editor = class _Editor2 extends EventEmitter$1 {
61485
61527
  * Process collaboration migrations
61486
61528
  */
61487
61529
  processCollaborationMigrations() {
61488
- console.debug("[checkVersionMigrations] Current editor version", "2.0.0-next.7");
61530
+ console.debug("[checkVersionMigrations] Current editor version", "2.0.0-next.9");
61489
61531
  if (!this.options.ydoc) return;
61490
61532
  const metaMap = this.options.ydoc.getMap("meta");
61491
61533
  let docVersion = metaMap.get("version");
@@ -86355,7 +86397,10 @@ const hydrateParagraphStyleAttrs = (para, context, preResolved) => {
86355
86397
  tabStops: cloneIfObject(resolvedExtended.tabStops),
86356
86398
  keepLines: resolvedExtended.keepLines,
86357
86399
  keepNext: resolvedExtended.keepNext,
86358
- numberingProperties: cloneIfObject(resolvedAsRecord.numberingProperties)
86400
+ numberingProperties: cloneIfObject(resolvedAsRecord.numberingProperties),
86401
+ // Extract contextualSpacing from style resolution - this is a sibling to spacing in OOXML,
86402
+ // not nested within it. When true, suppresses spacing between paragraphs of the same style.
86403
+ contextualSpacing: resolvedExtended.contextualSpacing
86359
86404
  };
86360
86405
  return hydrated;
86361
86406
  };
@@ -87090,7 +87135,7 @@ const computeParagraphAttrs = (para, styleContext, listCounterContext, converter
87090
87135
  paragraphAttrs.spacing.afterAutospacing = normalizedSpacing.afterAutospacing;
87091
87136
  }
87092
87137
  }
87093
- const contextualSpacingValue = normalizedSpacing?.contextualSpacing ?? safeGetProperty(paragraphProps, "contextualSpacing") ?? safeGetProperty(attrs, "contextualSpacing");
87138
+ const contextualSpacingValue = normalizedSpacing?.contextualSpacing ?? safeGetProperty(paragraphProps, "contextualSpacing") ?? safeGetProperty(attrs, "contextualSpacing") ?? hydrated?.contextualSpacing;
87094
87139
  if (contextualSpacingValue != null) {
87095
87140
  paragraphAttrs.contextualSpacing = isTruthy(contextualSpacingValue);
87096
87141
  }
@@ -1,6 +1,6 @@
1
1
  import { ref, onMounted, onUnmounted, computed, createElementBlock, openBlock, withModifiers, createElementVNode, withDirectives, unref, vModelText, createCommentVNode, nextTick } from "vue";
2
- import { T as TextSelection } from "./chunks/converter-Dtu-msFQ.js";
3
- import { _ as _export_sfc } from "./chunks/editor-CkPpri9l.js";
2
+ import { T as TextSelection } from "./chunks/converter-L2w5yBfC.js";
3
+ import { _ as _export_sfc } from "./chunks/editor-DnidDUVK.js";
4
4
  const DEFAULT_API_ENDPOINT = "https://sd-dev-express-gateway-i6xtm.ondigitalocean.app/insights";
5
5
  const SYSTEM_PROMPT = "You are an expert copywriter and you are immersed in a document editor. You are to provide document related text responses based on the user prompts. Only write what is asked for. Do not provide explanations. Try to keep placeholders as short as possible. Do not output your prompt. Your instructions are: ";
6
6
  async function baseInsightsFetch(payload, options = {}) {
@@ -39205,11 +39205,15 @@ const encode$1 = (params, encodedAttrs = {}) => {
39205
39205
  }
39206
39206
  if (elements.length === 1) {
39207
39207
  text = elements[0].text;
39208
- const xmlSpace = encodedAttrs.xmlSpace ?? elements[0]?.attributes?.["xml:space"];
39208
+ const docXmlSpace = params.converter?.documentAttributes?.["xml:space"];
39209
+ const xmlSpace = encodedAttrs.xmlSpace ?? attributes?.["xml:space"] ?? elements[0]?.attributes?.["xml:space"] ?? docXmlSpace;
39209
39210
  if (xmlSpace !== "preserve" && typeof text === "string") {
39210
39211
  text = text.replace(/^[ \t\n\r]+/, "").replace(/[ \t\n\r]+$/, "");
39211
39212
  }
39212
39213
  text = text.replace(/\[\[sdspace\]\]/g, "");
39214
+ if (xmlSpace !== "preserve" && typeof text === "string" && !text.trim()) {
39215
+ return null;
39216
+ }
39213
39217
  } else if (!elements.length && encodedAttrs.xmlSpace === "preserve") {
39214
39218
  text = " ";
39215
39219
  } else return null;
@@ -42503,8 +42507,46 @@ const _SuperConverter = class _SuperConverter {
42503
42507
  this.declaration = this.initialJSON?.declaration;
42504
42508
  this.resolveDocumentGuid();
42505
42509
  }
42510
+ /**
42511
+ * Parses XML content into JSON format while preserving whitespace-only text runs.
42512
+ *
42513
+ * This method wraps xml-js's xml2json parser with additional preprocessing to prevent
42514
+ * the parser from dropping whitespace-only content in <w:t> and <w:delText> elements.
42515
+ * This is critical for correctly handling documents that rely on document-level
42516
+ * xml:space="preserve" rather than per-element attributes, which is common in
42517
+ * PDF-to-DOCX converted documents.
42518
+ *
42519
+ * The whitespace preservation strategy:
42520
+ * 1. Before parsing, wraps whitespace-only content with [[sdspace]] placeholders
42521
+ * 2. xml-js parser preserves the placeholder-wrapped text
42522
+ * 3. During text node processing (t-translator.js), placeholders are removed
42523
+ *
42524
+ * @param {string} xml - The XML string to parse
42525
+ * @returns {Object} The parsed JSON representation of the XML document
42526
+ *
42527
+ * @example
42528
+ * // Handles whitespace-only text runs
42529
+ * const xml = '<w:t> </w:t>';
42530
+ * const result = parseXmlToJson(xml);
42531
+ * // Result preserves the space: { elements: [{ text: '[[sdspace]] [[sdspace]]' }] }
42532
+ *
42533
+ * @example
42534
+ * // Handles elements with attributes
42535
+ * const xml = '<w:t xml:space="preserve"> text </w:t>';
42536
+ * const result = parseXmlToJson(xml);
42537
+ * // Preserves content and attributes
42538
+ *
42539
+ * @example
42540
+ * // Handles both w:t and w:delText elements
42541
+ * const xml = '<w:delText> </w:delText>';
42542
+ * const result = parseXmlToJson(xml);
42543
+ * // Preserves whitespace in deleted text
42544
+ */
42506
42545
  parseXmlToJson(xml) {
42507
- const newXml = xml.replace(/(<w:t xml:space="preserve">)(\s+)(<\/w:t>)/g, "$1[[sdspace]]$2[[sdspace]]$3");
42546
+ const newXml = xml.replace(
42547
+ /(<w:(?:t|delText)(?:\s[^>]*)?>)(\s+)(<\/w:(?:t|delText)>)/g,
42548
+ "$1[[sdspace]]$2[[sdspace]]$3"
42549
+ );
42508
42550
  return JSON.parse(xmljs.xml2json(newXml, null, 2));
42509
42551
  }
42510
42552
  /**
@@ -42727,7 +42769,7 @@ const _SuperConverter = class _SuperConverter {
42727
42769
  static getStoredSuperdocVersion(docx) {
42728
42770
  return _SuperConverter.getStoredCustomProperty(docx, "SuperdocVersion");
42729
42771
  }
42730
- static setStoredSuperdocVersion(docx = this.convertedXml, version = "2.0.0-next.7") {
42772
+ static setStoredSuperdocVersion(docx = this.convertedXml, version = "2.0.0-next.9") {
42731
42773
  return _SuperConverter.setStoredCustomProperty(docx, "SuperdocVersion", version, false);
42732
42774
  }
42733
42775
  /**
@@ -1,4 +1,4 @@
1
- import { p as process$1, aJ as commonjsGlobal, B as Buffer, aK as getDefaultExportFromCjs, aL as getContentTypesFromXml, aM as xmljs } from "./converter-Dtu-msFQ.js";
1
+ import { p as process$1, aJ as commonjsGlobal, B as Buffer, aK as getDefaultExportFromCjs, aL as getContentTypesFromXml, aM as xmljs } from "./converter-L2w5yBfC.js";
2
2
  function commonjsRequire(path) {
3
3
  throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');
4
4
  }
@@ -12,8 +12,8 @@ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "acce
12
12
  var _a, _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, dispatchWithFallback_fn, _commandService, _Editor_instances, initContainerElement_fn, init_fn, initRichText_fn, onFocus_fn, checkHeadless_fn, registerCopyHandler_fn, insertNewFileData_fn, getPluginKeyName_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, dispatchTransaction_fn, handleNodeSelection_fn, prepareDocumentForImport_fn, prepareDocumentForExport_fn, endCollaboration_fn, validateDocumentInit_fn, validateDocumentExport_fn, initDevTools_fn, _currentEpoch, _mapsByFromEpoch, _maxEpochsToKeep, _EpochPositionMapper_instances, pruneByCurrentEpoch_fn, _entries, _windowRoot, _getPainterHost, _onRebuild, _observer, _rebuildScheduled, _rebuildRafId, _docEpoch, _layoutEpoch, _layoutUpdating, _pending, _scheduled, _rafHandle, _scheduler, _SelectionSyncCoordinator_instances, isSafeToRender_fn, maybeSchedule_fn, cancelScheduledRender_fn, _windowRoot2, _layoutSurfaces, _getTargetDom, _isEditable, _onTargetChanged, _listeners, _currentTarget, _destroyed, _useWindowFallback, _PresentationInputBridge_instances, addListener_fn, dispatchToTarget_fn, forwardKeyboardEvent_fn, forwardTextEvent_fn, forwardCompositionEvent_fn, forwardContextMenu_fn, isEventOnActiveTarget_fn, shouldSkipSurface_fn, isInLayoutSurface_fn, getListenerTargets_fn, isPlainCharacterKey_fn, _map, _editor2, _descriptors, _collections, _editorEntries, _maxCachedEditors, _editorAccessOrder, _pendingCreations, _cacheHits, _cacheMisses, _evictions, _HeaderFooterEditorManager_instances, hasConverter_fn, extractCollections_fn, collectDescriptors_fn, teardownMissingEditors_fn, teardownEditors_fn, createEditor_fn, createEditorContainer_fn, registerConverterEditor_fn, unregisterConverterEditor_fn, updateAccessOrder_fn, enforceCacheSizeLimit_fn, _manager, _mediaFiles, _blockCache, _HeaderFooterLayoutAdapter_instances, getBlocks_fn, getConverterContext_fn, _selectionOverlay, _activeEditorHost, _activeDecorationContainer, _activeRegion, _borderLine, _dimmingOverlay, _EditorOverlayManager_instances, findDecorationContainer_fn, ensureEditorHost_fn, positionEditorHost_fn, hideDimmingOverlay_fn, showHeaderFooterBorder_fn, hideHeaderFooterBorder_fn, _instances, _options, _editor3, _visibleHost, _viewportHost, _painterHost, _selectionOverlay2, _hiddenHost, _layoutOptions, _layoutState, _domPainter, _pageGeometryHelper, _dragHandlerCleanup, _layoutError, _layoutErrorState, _errorBanner, _errorBannerMessage, _telemetryEmitter, _renderScheduled, _pendingDocChange, _isRerendering, _selectionSync, _remoteCursorUpdateScheduled, _epochMapper, _layoutEpoch2, _domPositionIndex, _domIndexObserverManager, _debugLastPointer, _debugLastHit, _pendingMarginClick, _rafHandle2, _editorListeners, _sectionMetadata, _documentMode, _inputBridge, _trackedChangesMode, _trackedChangesEnabled, _trackedChangesOverrides, _headerFooterManager, _headerFooterAdapter, _headerFooterIdentifier, _multiSectionIdentifier, _headerLayoutResults, _footerLayoutResults, _headerLayoutsByRId, _footerLayoutsByRId, _headerDecorationProvider, _footerDecorationProvider, _headerFooterManagerCleanups, _headerRegions, _footerRegions, _session, _activeHeaderFooterEditor, _overlayManager, _hoverOverlay, _hoverTooltip, _modeBanner, _ariaLiveRegion, _a11ySelectionAnnounceTimeout, _a11yLastAnnouncedSelectionKey, _hoverRegion, _clickCount, _lastClickTime, _lastClickPosition, _lastSelectedImageBlockId, _dragAnchor, _dragAnchorPageIndex, _isDragging, _dragExtensionMode, _dragLastPointer, _dragLastRawHit, _dragUsedPageNotMountedFallback, _cellAnchor, _cellDragMode, _remoteCursorState, _remoteCursorElements, _remoteCursorDirty, _remoteCursorOverlay, _localSelectionLayer, _awarenessCleanup, _scrollCleanup, _scrollTimeout, _lastRemoteCursorRenderTime, _remoteCursorThrottleTimeout, _PresentationEditor_instances, wrapHiddenEditorFocus_fn, collectCommentPositions_fn, updateSelectionDebugHud_fn, computePendingMarginClick_fn, aggregateLayoutBounds_fn, rebuildDomPositionIndex_fn, setupEditorListeners_fn, setupCollaborationCursors_fn, updateLocalAwarenessCursor_fn, scheduleRemoteCursorUpdate_fn, scheduleRemoteCursorReRender_fn, updateRemoteCursors_fn, renderRemoteCursors_fn, setupPointerHandlers_fn, setupDragHandlers_fn, focusEditorAfterImageSelection_fn, setupInputBridge_fn, initHeaderFooterRegistry_fn, _handlePointerDown, getFirstTextPosition_fn, registerPointerClick_fn, getCellPosFromTableHit_fn, getTablePosFromHit_fn, shouldUseCellSelection_fn, setCellAnchor_fn, clearCellAnchor_fn, hitTestTable_fn, selectWordAt_fn, selectParagraphAt_fn, calculateExtendedSelection_fn, _handlePointerMove, _handlePointerLeave, _handleVisibleHostFocusIn, _handlePointerUp, _handleDragOver, _handleDrop, _handleDoubleClick, _handleKeyDown, focusHeaderFooterShortcut_fn, scheduleRerender_fn, flushRerenderQueue_fn, rerender_fn, ensurePainter_fn, scheduleSelectionUpdate_fn, updateSelection_fn, resolveLayoutOptions_fn, buildHeaderFooterInput_fn, computeHeaderFooterConstraints_fn, layoutPerRIdHeaderFooters_fn, updateDecorationProviders_fn, createDecorationProvider_fn, findHeaderFooterPageForPageNumber_fn, computeDecorationBox_fn, computeExpectedSectionType_fn, rebuildHeaderFooterRegions_fn, hitTestHeaderFooterRegion_fn, pointInRegion_fn, activateHeaderFooterRegion_fn, enterHeaderFooterMode_fn, exitHeaderFooterMode_fn, getActiveDomTarget_fn, emitHeaderFooterModeChanged_fn, emitHeaderFooterEditingContext_fn, updateAwarenessSession_fn, updateModeBanner_fn, announce_fn, syncHiddenEditorA11yAttributes_fn, scheduleA11ySelectionAnnouncement_fn, announceSelectionNow_fn, validateHeaderFooterEditPermission_fn, emitHeaderFooterEditBlocked_fn, resolveDescriptorForRegion_fn, createDefaultHeaderFooter_fn, getPageElement_fn, isSelectionAwareVirtualizationEnabled_fn, updateSelectionVirtualizationPins_fn, finalizeDragSelectionWithDom_fn, scrollPageIntoView_fn, waitForPageMount_fn, getEffectivePageGap_fn, getBodyPageHeight_fn, getHeaderFooterPageHeight_fn, renderCellSelectionOverlay_fn, renderHoverRegion_fn, clearHoverRegion_fn, getHeaderFooterContext_fn, computeHeaderFooterSelectionRects_fn, syncTrackedChangesPreferences_fn, deriveTrackedChangesMode_fn, deriveTrackedChangesEnabled_fn, getTrackChangesPluginState_fn, computeDefaultLayoutDefaults_fn, applyZoom_fn, getPageOffsetX_fn, convertPageLocalToOverlayCoords_fn, computeSelectionRectsFromDom_fn, computeDomCaretPageLocal_fn, normalizeClientPoint_fn, computeCaretLayoutRectGeometry_fn, computeCaretLayoutRect_fn, getCurrentPageIndex_fn, findRegionForPage_fn, handleLayoutError_fn, decorateError_fn, showLayoutErrorBanner_fn, dismissErrorBanner_fn, _DocumentSectionView_instances, init_fn2, addToolTip_fn, _ParagraphNodeView_instances, checkShouldUpdate_fn, updateHTMLAttributes_fn, updateDOMStyles_fn, resolveNeighborParagraphProperties_fn, updateListStyles_fn, initList_fn, checkIsList_fn, createMarker_fn, createSeparator_fn, calculateTabSeparatorStyle_fn, calculateMarkerStyle_fn, removeList_fn, getParagraphContext_fn, scheduleAnimation_fn, cancelScheduledAnimation_fn, _FieldAnnotationView_instances, createAnnotation_fn, _AutoPageNumberNodeView_instances, renderDom_fn, scheduleUpdateNodeStyle_fn, _VectorShapeView_instances, ensureParentPositioned_fn, _ShapeGroupView_instances, ensureParentPositioned_fn2;
13
13
  import * as Y from "yjs";
14
14
  import { UndoManager, Item as Item$1, ContentType, Text as Text$1, XmlElement, encodeStateAsUpdate } from "yjs";
15
- import { P as PluginKey, a as Plugin, M as Mapping, N as NodeSelection, S as Selection, T as TextSelection, b as Slice, D as DOMSerializer, F as Fragment, c as DOMParser$1, d as Mark$1, e as dropPoint, A as AllSelection, p as process$1, B as Buffer2, f as callOrGet, g as getExtensionConfigField, h as getMarkType, i as getMarksFromSelection, j as getNodeType, k as getSchemaTypeNameByName, l as Schema$2, m as cleanSchemaItem, n as canSplit, o as defaultBlockAt$1, q as liftTarget, r as canJoin, s as joinPoint, t as replaceStep$1, R as ReplaceAroundStep$1, u as isTextSelection, v as getMarkRange, w as isMarkActive, x as isNodeActive, y as deleteProps, z as processContent, C as htmlHandler, E as ReplaceStep, G as twipsToInches, H as inchesToTwips, I as ptToTwips, J as getResolvedParagraphProperties, K as linesToTwips, L as changeListLevel, O as findParentNode, Q as isList, U as updateNumberingProperties, V as ListHelpers, W as isMacOS, X as isIOS, Y as getSchemaTypeByName, Z as inputRulesPlugin, _ as TrackDeleteMarkName$1, $ as TrackInsertMarkName$1, a0 as v4, a1 as TrackFormatMarkName$1, a2 as comments_module_events, a3 as findMark, a4 as objectIncludes, a5 as AddMarkStep, a6 as RemoveMarkStep, a7 as twipsToLines, a8 as pixelsToTwips, a9 as helpers, aa as posToDOMRect, ab as CommandService, ac as SuperConverter, ad as createDocument, ae as createDocFromMarkdown, af as createDocFromHTML, ag as EditorState, ah as isActive, ai as unflattenListsInHtml, aj as SelectionRange, ak as Transform, al as resolveParagraphProperties, am as _getReferencedTableStyles, an as parseSizeUnit, ao as minMax, ap as updateDOMAttributes, aq as findChildren$5, ar as generateRandomSigned32BitIntStrId, as as decodeRPrFromMarks, at as calculateResolvedParagraphProperties, au as resolveRunProperties, av as encodeCSSFromPPr, aw as twipsToPixels$2, ax as encodeCSSFromRPr, ay as generateOrderedListIndex, az as docxNumberingHelpers, aA as InputRule, aB as convertSizeToCSS, aC as findParentNodeClosestToPos, aD as isInTable$1, aE as generateDocxRandomId, aF as insertNewRelationship, aG as inchesToPixels, aH as kebabCase, aI as getUnderlineCssString } from "./converter-Dtu-msFQ.js";
16
- import { D as DocxZipper } from "./docx-zipper-D2uP_64-.js";
15
+ import { P as PluginKey, a as Plugin, M as Mapping, N as NodeSelection, S as Selection, T as TextSelection, b as Slice, D as DOMSerializer, F as Fragment, c as DOMParser$1, d as Mark$1, e as dropPoint, A as AllSelection, p as process$1, B as Buffer2, f as callOrGet, g as getExtensionConfigField, h as getMarkType, i as getMarksFromSelection, j as getNodeType, k as getSchemaTypeNameByName, l as Schema$2, m as cleanSchemaItem, n as canSplit, o as defaultBlockAt$1, q as liftTarget, r as canJoin, s as joinPoint, t as replaceStep$1, R as ReplaceAroundStep$1, u as isTextSelection, v as getMarkRange, w as isMarkActive, x as isNodeActive, y as deleteProps, z as processContent, C as htmlHandler, E as ReplaceStep, G as twipsToInches, H as inchesToTwips, I as ptToTwips, J as getResolvedParagraphProperties, K as linesToTwips, L as changeListLevel, O as findParentNode, Q as isList, U as updateNumberingProperties, V as ListHelpers, W as isMacOS, X as isIOS, Y as getSchemaTypeByName, Z as inputRulesPlugin, _ as TrackDeleteMarkName$1, $ as TrackInsertMarkName$1, a0 as v4, a1 as TrackFormatMarkName$1, a2 as comments_module_events, a3 as findMark, a4 as objectIncludes, a5 as AddMarkStep, a6 as RemoveMarkStep, a7 as twipsToLines, a8 as pixelsToTwips, a9 as helpers, aa as posToDOMRect, ab as CommandService, ac as SuperConverter, ad as createDocument, ae as createDocFromMarkdown, af as createDocFromHTML, ag as EditorState, ah as isActive, ai as unflattenListsInHtml, aj as SelectionRange, ak as Transform, al as resolveParagraphProperties, am as _getReferencedTableStyles, an as parseSizeUnit, ao as minMax, ap as updateDOMAttributes, aq as findChildren$5, ar as generateRandomSigned32BitIntStrId, as as decodeRPrFromMarks, at as calculateResolvedParagraphProperties, au as resolveRunProperties, av as encodeCSSFromPPr, aw as twipsToPixels$2, ax as encodeCSSFromRPr, ay as generateOrderedListIndex, az as docxNumberingHelpers, aA as InputRule, aB as convertSizeToCSS, aC as findParentNodeClosestToPos, aD as isInTable$1, aE as generateDocxRandomId, aF as insertNewRelationship, aG as inchesToPixels, aH as kebabCase, aI as getUnderlineCssString } from "./converter-L2w5yBfC.js";
16
+ import { D as DocxZipper } from "./docx-zipper-DNw1qYEn.js";
17
17
  import { ref, computed, createElementBlock, openBlock, withModifiers, Fragment as Fragment$1, renderList, normalizeClass, createCommentVNode, toDisplayString, createElementVNode, createApp } from "vue";
18
18
  var GOOD_LEAF_SIZE = 200;
19
19
  var RopeSequence = function RopeSequence2() {
@@ -14815,7 +14815,7 @@ const isHeadless = (editor) => {
14815
14815
  const shouldSkipNodeView = (editor) => {
14816
14816
  return isHeadless(editor);
14817
14817
  };
14818
- const summaryVersion = "2.0.0-next.7";
14818
+ const summaryVersion = "2.0.0-next.9";
14819
14819
  const nodeKeys = ["group", "content", "marks", "inline", "atom", "defining", "code", "tableRole", "summary"];
14820
14820
  const markKeys = ["group", "inclusive", "excludes", "spanning", "code"];
14821
14821
  function mapAttributes(attrs) {
@@ -15607,7 +15607,7 @@ const _Editor = class _Editor extends EventEmitter {
15607
15607
  { default: remarkStringify },
15608
15608
  { default: remarkGfm }
15609
15609
  ] = await Promise.all([
15610
- import("./index-CxQTFiXW.js"),
15610
+ import("./index-DGXC37hB.js"),
15611
15611
  import("./index-DRCvimau.js"),
15612
15612
  import("./index-C_x_N6Uh.js"),
15613
15613
  import("./index-D_sWOSiG.js"),
@@ -15812,7 +15812,7 @@ const _Editor = class _Editor extends EventEmitter {
15812
15812
  * Process collaboration migrations
15813
15813
  */
15814
15814
  processCollaborationMigrations() {
15815
- console.debug("[checkVersionMigrations] Current editor version", "2.0.0-next.7");
15815
+ console.debug("[checkVersionMigrations] Current editor version", "2.0.0-next.9");
15816
15816
  if (!this.options.ydoc) return;
15817
15817
  const metaMap = this.options.ydoc.getMap("meta");
15818
15818
  let docVersion = metaMap.get("version");
@@ -40839,7 +40839,10 @@ const hydrateParagraphStyleAttrs = (para, context, preResolved) => {
40839
40839
  tabStops: cloneIfObject(resolvedExtended.tabStops),
40840
40840
  keepLines: resolvedExtended.keepLines,
40841
40841
  keepNext: resolvedExtended.keepNext,
40842
- numberingProperties: cloneIfObject(resolvedAsRecord.numberingProperties)
40842
+ numberingProperties: cloneIfObject(resolvedAsRecord.numberingProperties),
40843
+ // Extract contextualSpacing from style resolution - this is a sibling to spacing in OOXML,
40844
+ // not nested within it. When true, suppresses spacing between paragraphs of the same style.
40845
+ contextualSpacing: resolvedExtended.contextualSpacing
40843
40846
  };
40844
40847
  return hydrated;
40845
40848
  };
@@ -41574,7 +41577,7 @@ const computeParagraphAttrs = (para, styleContext, listCounterContext, converter
41574
41577
  paragraphAttrs.spacing.afterAutospacing = normalizedSpacing.afterAutospacing;
41575
41578
  }
41576
41579
  }
41577
- const contextualSpacingValue = normalizedSpacing?.contextualSpacing ?? safeGetProperty(paragraphProps, "contextualSpacing") ?? safeGetProperty(attrs, "contextualSpacing");
41580
+ const contextualSpacingValue = normalizedSpacing?.contextualSpacing ?? safeGetProperty(paragraphProps, "contextualSpacing") ?? safeGetProperty(attrs, "contextualSpacing") ?? hydrated?.contextualSpacing;
41578
41581
  if (contextualSpacingValue != null) {
41579
41582
  paragraphAttrs.contextualSpacing = isTruthy(contextualSpacingValue);
41580
41583
  }
@@ -1,4 +1,4 @@
1
- import { aK as getDefaultExportFromCjs } from "./converter-Dtu-msFQ.js";
1
+ import { aK as getDefaultExportFromCjs } from "./converter-L2w5yBfC.js";
2
2
  import { V as VFile } from "./index-CvBqQJbG.js";
3
3
  function bail(error) {
4
4
  if (error) {
@@ -1,6 +1,6 @@
1
1
  import { ref, readonly, watch, computed, getCurrentInstance, onMounted, onBeforeUnmount, reactive, onBeforeMount, inject, onActivated, onDeactivated, createTextVNode, Fragment, Comment, defineComponent, provide, withDirectives, h, Teleport, toRef, nextTick, renderSlot, isVNode, shallowRef, watchEffect, mergeProps, Transition, vShow, cloneVNode, Text, markRaw, createElementBlock, openBlock, createElementVNode, createCommentVNode, normalizeClass, normalizeStyle, withKeys, unref, withModifiers, createBlock, toDisplayString, vModelText, createVNode, renderList, withCtx } from "vue";
2
- import { p as process$1 } from "./converter-Dtu-msFQ.js";
3
- import { g as global$1, _ as _export_sfc, u as useHighContrastMode } from "./editor-CkPpri9l.js";
2
+ import { p as process$1 } from "./converter-L2w5yBfC.js";
3
+ import { g as global$1, _ as _export_sfc, u as useHighContrastMode } from "./editor-DnidDUVK.js";
4
4
  const sanitizeNumber = (value, defaultNumber) => {
5
5
  let sanitized = value.replace(/[^0-9.]/g, "");
6
6
  sanitized = parseFloat(sanitized);
@@ -1,4 +1,4 @@
1
- import { ac } from "./chunks/converter-Dtu-msFQ.js";
1
+ import { ac } from "./chunks/converter-L2w5yBfC.js";
2
2
  export {
3
3
  ac as SuperConverter
4
4
  };
@@ -1,5 +1,5 @@
1
- import "./chunks/converter-Dtu-msFQ.js";
2
- import { D } from "./chunks/docx-zipper-D2uP_64-.js";
1
+ import "./chunks/converter-L2w5yBfC.js";
2
+ import { D } from "./chunks/docx-zipper-DNw1qYEn.js";
3
3
  export {
4
4
  D as default
5
5
  };
@@ -1,6 +1,6 @@
1
- import { E } from "./chunks/editor-CkPpri9l.js";
2
- import "./chunks/converter-Dtu-msFQ.js";
3
- import "./chunks/docx-zipper-D2uP_64-.js";
1
+ import { E } from "./chunks/editor-DnidDUVK.js";
2
+ import "./chunks/converter-L2w5yBfC.js";
3
+ import "./chunks/docx-zipper-DNw1qYEn.js";
4
4
  export {
5
5
  E as Editor
6
6
  };
@@ -1,4 +1,4 @@
1
- import { J as JSZip } from "./chunks/docx-zipper-D2uP_64-.js";
1
+ import { J as JSZip } from "./chunks/docx-zipper-DNw1qYEn.js";
2
2
  async function createZip(blobs, fileNames) {
3
3
  const zip = new JSZip();
4
4
  blobs.forEach((blob, index) => {
@@ -9,14 +9,14 @@ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read fr
9
9
  var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
10
10
  var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
11
11
  var _MARK_TOGGLE_NAMES, _SuperToolbar_instances, initToolbarGroups_fn, _interceptedCommands, makeToolbarItems_fn, initDefaultFonts_fn, updateHighlightColors_fn, deactivateAll_fn, updateToolbarHistory_fn, enrichTrackedChanges_fn, runCommandWithArgumentOnly_fn, syncStickyMarksFromState_fn, restoreStickyMarksIfNeeded_fn, ensureStoredMarksForMarkToggle_fn;
12
- import { aK as getDefaultExportFromCjs, a0 as v4, T as TextSelection$1, v as getMarkRange, aN as vClickOutside, aO as getActiveFormatting, aD as isInTable, O as findParentNode, at as calculateResolvedParagraphProperties, a7 as twipsToLines, Q as isList, an as parseSizeUnit, W as isMacOS, a8 as pixelsToTwips, aP as getFileObject, P as PluginKey, a as Plugin } from "./chunks/converter-Dtu-msFQ.js";
13
- import { ac, i, a9, aQ } from "./chunks/converter-Dtu-msFQ.js";
14
- import { _ as _export_sfc, u as useHighContrastMode, a as getQuickFormatList, b as generateLinkedStyleString, c as getFileOpener, d as checkAndProcessImage, r as replaceSelectionWithImagePlaceholder, e as uploadAndInsertImage, f as collectTrackedChanges, i as isTrackedChangeActionAllowed, y as yUndoPluginKey, h as undoDepth, j as redoDepth, k as getEditorSurfaceElement, l as collectTrackedChangesForContext, S as SLASH_MENU_HANDLED_FLAG, m as SlashMenuPluginKey, s as shouldBypassContextMenu, n as generateRulerDefinition, o as clampHandlePosition, p as calculateMarginFromHandle, q as measureCache, t as isHeadless, E as Editor, v as getStarterExtensions, P as PresentationEditor, w as Placeholder, x as getRichTextExtensions, D as DecorationSet, z as Decoration, M as Mark, A as Extension, B as Attribute, N as Node } from "./chunks/editor-CkPpri9l.js";
15
- import { G, J, H, T, C, I, F } from "./chunks/editor-CkPpri9l.js";
12
+ import { aK as getDefaultExportFromCjs, a0 as v4, T as TextSelection$1, v as getMarkRange, aN as vClickOutside, aO as getActiveFormatting, aD as isInTable, O as findParentNode, at as calculateResolvedParagraphProperties, a7 as twipsToLines, Q as isList, an as parseSizeUnit, W as isMacOS, a8 as pixelsToTwips, aP as getFileObject, P as PluginKey, a as Plugin } from "./chunks/converter-L2w5yBfC.js";
13
+ import { ac, i, a9, aQ } from "./chunks/converter-L2w5yBfC.js";
14
+ import { _ as _export_sfc, u as useHighContrastMode, a as getQuickFormatList, b as generateLinkedStyleString, c as getFileOpener, d as checkAndProcessImage, r as replaceSelectionWithImagePlaceholder, e as uploadAndInsertImage, f as collectTrackedChanges, i as isTrackedChangeActionAllowed, y as yUndoPluginKey, h as undoDepth, j as redoDepth, k as getEditorSurfaceElement, l as collectTrackedChangesForContext, S as SLASH_MENU_HANDLED_FLAG, m as SlashMenuPluginKey, s as shouldBypassContextMenu, n as generateRulerDefinition, o as clampHandlePosition, p as calculateMarginFromHandle, q as measureCache, t as isHeadless, E as Editor, v as getStarterExtensions, P as PresentationEditor, w as Placeholder, x as getRichTextExtensions, D as DecorationSet, z as Decoration, M as Mark, A as Extension, B as Attribute, N as Node } from "./chunks/editor-DnidDUVK.js";
15
+ import { G, J, H, T, C, I, F } from "./chunks/editor-DnidDUVK.js";
16
16
  import { ref, onMounted, createElementBlock, openBlock, normalizeClass, unref, Fragment, renderList, createElementVNode, withModifiers, toDisplayString, createCommentVNode, normalizeStyle, computed, watch, withDirectives, withKeys, vModelText, createTextVNode, createVNode, h, createApp, markRaw, nextTick, onBeforeUnmount, defineComponent, reactive, onUnmounted, renderSlot, useCssVars, shallowRef, createBlock, Teleport, withCtx, resolveDynamicComponent, normalizeProps, guardReactiveProps } from "vue";
17
- import { t as toolbarIcons, s as sanitizeNumber, T as Toolbar, p as plusIconSvg, a as trashIconSvg, b as borderNoneIconSvg, c as arrowsToDotIconSvg, d as arrowsLeftRightIconSvg, w as wrenchIconSvg, m as magicWandIcon, e as checkIconSvg$1, x as xMarkIconSvg, l as linkIconSvg, f as tableIconSvg, g as scissorsIconSvg, h as copyIconSvg, i as pasteIconSvg, u as useMessage, N as NSkeleton } from "./chunks/toolbar-CNpHAKgS.js";
17
+ import { t as toolbarIcons, s as sanitizeNumber, T as Toolbar, p as plusIconSvg, a as trashIconSvg, b as borderNoneIconSvg, c as arrowsToDotIconSvg, d as arrowsLeftRightIconSvg, w as wrenchIconSvg, m as magicWandIcon, e as checkIconSvg$1, x as xMarkIconSvg, l as linkIconSvg, f as tableIconSvg, g as scissorsIconSvg, h as copyIconSvg, i as pasteIconSvg, u as useMessage, N as NSkeleton } from "./chunks/toolbar-C2AE--wJ.js";
18
18
  import AIWriter from "./ai-writer.es.js";
19
- import { D } from "./chunks/docx-zipper-D2uP_64-.js";
19
+ import { D } from "./chunks/docx-zipper-DNw1qYEn.js";
20
20
  import { createZip } from "./file-zipper.es.js";
21
21
  var eventemitter3 = { exports: {} };
22
22
  var hasRequiredEventemitter3;
@@ -1,6 +1,6 @@
1
1
  import "vue";
2
- import { T } from "./chunks/toolbar-CNpHAKgS.js";
3
- import "./chunks/editor-CkPpri9l.js";
2
+ import { T } from "./chunks/toolbar-C2AE--wJ.js";
3
+ import "./chunks/editor-DnidDUVK.js";
4
4
  export {
5
5
  T as default
6
6
  };
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const superEditor_es = require("./chunks/super-editor.es-Bd6B_Npe.cjs");
3
+ const superEditor_es = require("./chunks/super-editor.es-BFOdLp_R.cjs");
4
4
  require("./chunks/vue-gvuFr0vx.cjs");
5
5
  exports.AIWriter = superEditor_es.AIWriter;
6
6
  exports.AnnotatorHelpers = superEditor_es.AnnotatorHelpers;
@@ -1,4 +1,4 @@
1
- import { A, a, _, C, D, E, b, P, S, c, d, e, f, g, T, h, i, j, k, l, m, n, o, p, r, q } from "./chunks/super-editor.es-UkB3ld-_.es.js";
1
+ import { A, a, _, C, D, E, b, P, S, c, d, e, f, g, T, h, i, j, k, l, m, n, o, p, r, q } from "./chunks/super-editor.es-bATnck82.es.js";
2
2
  import "./chunks/vue-CLFbn_1r.es.js";
3
3
  export {
4
4
  A as AIWriter,
package/dist/superdoc.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const superEditor_es = require("./chunks/super-editor.es-Bd6B_Npe.cjs");
4
- const superdoc = require("./chunks/index-D68il1se.cjs");
3
+ const superEditor_es = require("./chunks/super-editor.es-BFOdLp_R.cjs");
4
+ const superdoc = require("./chunks/index-Xx6AaBZS.cjs");
5
5
  const blankDocx = require("./chunks/blank-docx-DfW3Eeh2.cjs");
6
6
  exports.AnnotatorHelpers = superEditor_es.AnnotatorHelpers;
7
7
  exports.Editor = superEditor_es.Editor;