@harbour-enterprises/superdoc 1.4.0-next.2 → 1.4.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.
@@ -1,6 +1,6 @@
1
1
  import { d as defineComponent, h, T as Transition, p as process$1, w as watchEffect, c as computed, r as ref, f as onMounted, X as onUnmounted, E as createElementBlock, G as openBlock, K as createBaseVNode, M as createCommentVNode, I as createVNode, v as unref } from "./vue-BnBKJwCW.es.js";
2
- import { N as NBaseLoading, u as useSuperdocStore, s as storeToRefs, a as useSelection } from "./index-D246eEeJ.es.js";
3
- import { C as derived, r as c, q as cB, aF as fadeInTransition, y as cM, I as warnOnce, J as useConfig, N as useTheme, aG as pxfy, P as createKey, Q as useThemeClass, aH as useCompitable, ai as _export_sfc } from "./index-dnQEKI-e.es.js";
2
+ import { N as NBaseLoading, u as useSuperdocStore, s as storeToRefs, a as useSelection } from "./index-DbSiW7hc.es.js";
3
+ import { C as derived, r as c, q as cB, aF as fadeInTransition, y as cM, I as warnOnce, J as useConfig, N as useTheme, aG as pxfy, P as createKey, Q as useThemeClass, aH as useCompitable, ai as _export_sfc } from "./index-B6VX2S0H.es.js";
4
4
  function self(vars) {
5
5
  const {
6
6
  opacityDisabled,
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  const vue = require("./vue-De9wkgLl.cjs");
4
- const superdoc = require("./index-DpgrTjYC.cjs");
5
- const index = require("./index-DJuBZura.cjs");
4
+ const superdoc = require("./index-CZ5yJPHg.cjs");
5
+ const index = require("./index-BKXWekME.cjs");
6
6
  function self(vars) {
7
7
  const {
8
8
  opacityDisabled,
@@ -31269,7 +31269,7 @@ class SuperConverter {
31269
31269
  static getStoredSuperdocVersion(docx) {
31270
31270
  return SuperConverter.getStoredCustomProperty(docx, "SuperdocVersion");
31271
31271
  }
31272
- static setStoredSuperdocVersion(docx = this.convertedXml, version = "1.4.0-next.2") {
31272
+ static setStoredSuperdocVersion(docx = this.convertedXml, version = "1.4.0") {
31273
31273
  return SuperConverter.setStoredCustomProperty(docx, "SuperdocVersion", version, false);
31274
31274
  }
31275
31275
  /**
@@ -31268,7 +31268,7 @@ class SuperConverter {
31268
31268
  static getStoredSuperdocVersion(docx) {
31269
31269
  return SuperConverter.getStoredCustomProperty(docx, "SuperdocVersion");
31270
31270
  }
31271
- static setStoredSuperdocVersion(docx = this.convertedXml, version = "1.4.0-next.2") {
31271
+ static setStoredSuperdocVersion(docx = this.convertedXml, version = "1.4.0") {
31272
31272
  return SuperConverter.setStoredCustomProperty(docx, "SuperdocVersion", version, false);
31273
31273
  }
31274
31274
  /**
@@ -1,6 +1,6 @@
1
1
  import { B as Buffer$2 } from "./jszip-B1fkPkPJ.es.js";
2
2
  import { t as twipsToInches, i as inchesToTwips, p as ptToTwips, l as linesToTwips, a as twipsToLines, b as pixelsToTwips, h as halfPointToPoints, c as twipsToPixels$2, d as convertSizeToCSS, e as inchesToPixels } from "./helpers-C8e9wR5l.es.js";
3
- import { g as generateDocxRandomId, T as TextSelection$1, o as objectIncludes, w as wrapTextsInRuns, D as DOMParser$1, c as createDocFromMarkdown, a as createDocFromHTML, b as chainableEditorState, d as convertMarkdownToHTML, f as findParentNode, e as findParentNodeClosestToPos, h as generateRandom32BitHex, i as generateRandomSigned32BitIntStrId, P as PluginKey, j as Plugin, M as Mapping, N as NodeSelection, k as Selection, l as Slice, m as DOMSerializer, F as Fragment, n as Mark$1, p as dropPoint, A as AllSelection, q as Schema$1, s as canSplit, t as resolveRunProperties, u as encodeMarksFromRPr, v as liftTarget, x as canJoin, y as joinPoint, z as replaceStep$1, R as ReplaceAroundStep$1, B as htmlHandler, C as ReplaceStep, E as getResolvedParagraphProperties, G as changeListLevel, H as isList$1, I as updateNumberingProperties, L as ListHelpers, J as inputRulesPlugin, K as TrackDeleteMarkName$1, O as TrackInsertMarkName$1, Q as TrackFormatMarkName$1, U as AddMarkStep, V as RemoveMarkStep, W as CommandService, S as SuperConverter, X as EditorState, Y as unflattenListsInHtml, Z as SelectionRange, _ as Transform, $ as createOoxmlResolver, a0 as translator, a1 as translator$1, a2 as resolveDocxFontFamily, a3 as combineIndentProperties, a4 as _getReferencedTableStyles, a5 as decodeRPrFromMarks, a6 as calculateResolvedParagraphProperties, a7 as encodeCSSFromPPr, a8 as encodeCSSFromRPr, a9 as generateOrderedListIndex, aa as docxNumberingHelpers, ab as InputRule, ac as insertNewRelationship, ad as kebabCase$1, ae as getUnderlineCssString } from "./SuperConverter-DxlpZQZQ.es.js";
3
+ import { g as generateDocxRandomId, T as TextSelection$1, o as objectIncludes, w as wrapTextsInRuns, D as DOMParser$1, c as createDocFromMarkdown, a as createDocFromHTML, b as chainableEditorState, d as convertMarkdownToHTML, f as findParentNode, e as findParentNodeClosestToPos, h as generateRandom32BitHex, i as generateRandomSigned32BitIntStrId, P as PluginKey, j as Plugin, M as Mapping, N as NodeSelection, k as Selection, l as Slice, m as DOMSerializer, F as Fragment, n as Mark$1, p as dropPoint, A as AllSelection, q as Schema$1, s as canSplit, t as resolveRunProperties, u as encodeMarksFromRPr, v as liftTarget, x as canJoin, y as joinPoint, z as replaceStep$1, R as ReplaceAroundStep$1, B as htmlHandler, C as ReplaceStep, E as getResolvedParagraphProperties, G as changeListLevel, H as isList$1, I as updateNumberingProperties, L as ListHelpers, J as inputRulesPlugin, K as TrackDeleteMarkName$1, O as TrackInsertMarkName$1, Q as TrackFormatMarkName$1, U as AddMarkStep, V as RemoveMarkStep, W as CommandService, S as SuperConverter, X as EditorState, Y as unflattenListsInHtml, Z as SelectionRange, _ as Transform, $ as createOoxmlResolver, a0 as translator, a1 as translator$1, a2 as resolveDocxFontFamily, a3 as combineIndentProperties, a4 as _getReferencedTableStyles, a5 as decodeRPrFromMarks, a6 as calculateResolvedParagraphProperties, a7 as encodeCSSFromPPr, a8 as encodeCSSFromRPr, a9 as generateOrderedListIndex, aa as docxNumberingHelpers, ab as InputRule, ac as insertNewRelationship, ad as kebabCase$1, ae as getUnderlineCssString } from "./SuperConverter-DAO7c_d4.es.js";
4
4
  import { p as process$1, r as ref, C as global$1, c as computed, E as createElementBlock, F as Fragment$1, S as renderList, O as withModifiers, G as openBlock, P as normalizeClass, M as createCommentVNode, H as toDisplayString, K as createBaseVNode, U as createApp, f as onMounted, X as onUnmounted, R as withDirectives, v as unref, Y as vModelText, y as nextTick, L as normalizeStyle, u as watch, Z as withKeys, _ as createTextVNode, I as createVNode, h, $ as readonly, s as getCurrentInstance, o as onBeforeUnmount, j as reactive, b as onBeforeMount, i as inject, a0 as onActivated, a1 as onDeactivated, a2 as Comment, d as defineComponent, a as provide, g as Teleport, t as toRef, a3 as renderSlot, a4 as isVNode, D as shallowRef, w as watchEffect, T as Transition, a5 as mergeProps, a6 as vShow, a7 as cloneVNode, a8 as Text$2, m as markRaw, N as createBlock, J as withCtx, a9 as useCssVars, V as resolveDynamicComponent, aa as normalizeProps, ab as guardReactiveProps } from "./vue-BnBKJwCW.es.js";
5
5
  import "./jszip.min-DCl8qkFO.es.js";
6
6
  import { E as EventEmitter$1 } from "./eventemitter3-CwrdEv8r.es.js";
@@ -15440,7 +15440,7 @@ const canUseDOM = () => {
15440
15440
  return false;
15441
15441
  }
15442
15442
  };
15443
- const summaryVersion = "1.4.0-next.2";
15443
+ const summaryVersion = "1.4.0";
15444
15444
  const nodeKeys = ["group", "content", "marks", "inline", "atom", "defining", "code", "tableRole", "summary"];
15445
15445
  const markKeys = ["group", "inclusive", "excludes", "spanning", "code"];
15446
15446
  function mapAttributes(attrs) {
@@ -18072,7 +18072,7 @@ class Editor extends EventEmitter {
18072
18072
  * Process collaboration migrations
18073
18073
  */
18074
18074
  processCollaborationMigrations() {
18075
- console.debug("[checkVersionMigrations] Current editor version", "1.4.0-next.2");
18075
+ console.debug("[checkVersionMigrations] Current editor version", "1.4.0");
18076
18076
  if (!this.options.ydoc) return;
18077
18077
  const metaMap = this.options.ydoc.getMap("meta");
18078
18078
  let docVersion = metaMap.get("version");
@@ -43639,18 +43639,38 @@ const computeParagraphAttrs = (para, styleContext, listCounterContext, converter
43639
43639
  return unwrapped.length > 0 ? unwrapped : void 0;
43640
43640
  };
43641
43641
  const styleNodeAttrs = { ...attrs };
43642
- const attrTabStops = unwrapTabStops(styleNodeAttrs.tabStops ?? styleNodeAttrs.tabs) ?? styleNodeAttrs.tabStops;
43643
- const hydratedTabStops = unwrapTabStops(hydrated?.tabStops) ?? hydrated?.tabStops;
43644
- const paragraphTabStops = unwrapTabStops(paragraphProps.tabStops) ?? paragraphProps.tabStops;
43645
- let tabSource = attrTabStops;
43646
- if (!tabSource && hydratedTabStops) {
43647
- tabSource = hydratedTabStops;
43648
- }
43649
- if (!tabSource && paragraphTabStops) {
43650
- tabSource = paragraphTabStops;
43651
- }
43652
- if (tabSource) {
43653
- styleNodeAttrs.tabStops = tabSource;
43642
+ const asTabStopArray = (value) => {
43643
+ return Array.isArray(value) ? value : void 0;
43644
+ };
43645
+ const attrTabStops = unwrapTabStops(styleNodeAttrs.tabStops ?? styleNodeAttrs.tabs) ?? asTabStopArray(styleNodeAttrs.tabStops);
43646
+ const hydratedTabStops = unwrapTabStops(hydrated?.tabStops) ?? asTabStopArray(hydrated?.tabStops);
43647
+ const paragraphTabStops = unwrapTabStops(paragraphProps.tabStops) ?? asTabStopArray(paragraphProps.tabStops);
43648
+ const TAB_STOP_PX_TO_TWIPS = 15;
43649
+ const TAB_STOP_TWIPS_THRESHOLD = 1e3;
43650
+ const getTabStopPosition = (entry) => {
43651
+ const originalPos = pickNumber(entry.originalPos);
43652
+ if (originalPos != null) return originalPos;
43653
+ const posValue = pickNumber(entry.pos ?? entry.position ?? entry.offset);
43654
+ if (posValue == null) return void 0;
43655
+ return posValue > TAB_STOP_TWIPS_THRESHOLD ? posValue : Math.round(posValue * TAB_STOP_PX_TO_TWIPS);
43656
+ };
43657
+ const mergeTabStopSources = (...sources) => {
43658
+ const merged = /* @__PURE__ */ new Map();
43659
+ for (const source of sources) {
43660
+ if (!Array.isArray(source)) continue;
43661
+ for (const stop of source) {
43662
+ if (!stop || typeof stop !== "object") continue;
43663
+ const position = getTabStopPosition(stop);
43664
+ if (position == null) continue;
43665
+ merged.set(position, { ...stop });
43666
+ }
43667
+ }
43668
+ if (merged.size === 0) return void 0;
43669
+ return Array.from(merged.entries()).sort(([a], [b]) => a - b).map(([, stop]) => stop);
43670
+ };
43671
+ const mergedTabStops = mergeTabStopSources(hydratedTabStops, paragraphTabStops, attrTabStops);
43672
+ if (mergedTabStops) {
43673
+ styleNodeAttrs.tabStops = mergedTabStops;
43654
43674
  if ("tabs" in styleNodeAttrs) {
43655
43675
  delete styleNodeAttrs.tabs;
43656
43676
  }
@@ -43743,6 +43763,11 @@ const computeParagraphAttrs = (para, styleContext, listCounterContext, converter
43743
43763
  }
43744
43764
  if (computed2.paragraph.tabs && computed2.paragraph.tabs.length > 0) {
43745
43765
  paragraphAttrs.tabs = computed2.paragraph.tabs.map((tab) => ({ ...tab }));
43766
+ } else if (mergedTabStops) {
43767
+ const normalizedTabs = normalizeOoxmlTabs(mergedTabStops);
43768
+ if (normalizedTabs) {
43769
+ paragraphAttrs.tabs = normalizedTabs;
43770
+ }
43746
43771
  } else if (hydratedTabStops) {
43747
43772
  const normalizedTabs = normalizeOoxmlTabs(hydratedTabStops);
43748
43773
  if (normalizedTabs) {
@@ -45146,9 +45171,19 @@ const applyInlineRunProperties = (run, runProperties) => {
45146
45171
  run.letterSpacing = twipsToPx$1(runProperties.letterSpacing);
45147
45172
  }
45148
45173
  };
45174
+ const getVanishValue = (runProperties) => {
45175
+ if (!runProperties || typeof runProperties !== "object" || Array.isArray(runProperties)) {
45176
+ return void 0;
45177
+ }
45178
+ if (!Object.prototype.hasOwnProperty.call(runProperties, "vanish")) {
45179
+ return void 0;
45180
+ }
45181
+ return runProperties.vanish === true;
45182
+ };
45149
45183
  function paragraphToFlowBlocks$1(para, nextBlockId, positions, defaultFont, defaultSize, styleContext, listCounterContext, trackedChanges, bookmarks, hyperlinkConfig = DEFAULT_HYPERLINK_CONFIG$1, themeColors, converters, converterContext, enableComments = true) {
45150
45184
  const baseBlockId = nextBlockId("paragraph");
45151
45185
  const paragraphProps = typeof para.attrs?.paragraphProperties === "object" && para.attrs.paragraphProperties !== null ? para.attrs.paragraphProperties : {};
45186
+ const paragraphHiddenByVanish = getVanishValue(paragraphProps.runProperties) === true;
45152
45187
  const paragraphStyleId = typeof para.attrs?.styleId === "string" && para.attrs.styleId.trim() ? para.attrs.styleId : typeof paragraphProps.styleId === "string" && paragraphProps.styleId.trim() ? paragraphProps.styleId : null;
45153
45188
  const paragraphHydration = converterContext ? hydrateParagraphStyleAttrs(para, converterContext) : null;
45154
45189
  let baseRunDefaults = {};
@@ -45247,6 +45282,9 @@ function paragraphToFlowBlocks$1(para, nextBlockId, positions, defaultFont, defa
45247
45282
  });
45248
45283
  }
45249
45284
  if (!para.content || para.content.length === 0) {
45285
+ if (paragraphHiddenByVanish) {
45286
+ return blocks;
45287
+ }
45250
45288
  const paraPos = positions.get(para);
45251
45289
  const emptyRun = {
45252
45290
  text: "",
@@ -45268,6 +45306,7 @@ function paragraphToFlowBlocks$1(para, nextBlockId, positions, defaultFont, defa
45268
45306
  let currentRuns = [];
45269
45307
  let partIndex = 0;
45270
45308
  let tabOrdinal = 0;
45309
+ let suppressedByVanish = false;
45271
45310
  const nextId = () => partIndex === 0 ? baseBlockId : `${baseBlockId}-${partIndex}`;
45272
45311
  const attachAnchorParagraphId = (block, anchorParagraphId) => {
45273
45312
  const applicableKinds = /* @__PURE__ */ new Set(["drawing", "image", "table"]);
@@ -45312,7 +45351,11 @@ function paragraphToFlowBlocks$1(para, nextBlockId, positions, defaultFont, defa
45312
45351
  runStyleId
45313
45352
  });
45314
45353
  };
45315
- const visitNode = (node, inheritedMarks = [], activeSdt, activeRunStyleId = null, activeRunProperties) => {
45354
+ const visitNode = (node, inheritedMarks = [], activeSdt, activeRunStyleId = null, activeRunProperties, activeHidden = false) => {
45355
+ if (activeHidden && node.type !== "run") {
45356
+ suppressedByVanish = true;
45357
+ return;
45358
+ }
45316
45359
  if (node.type === "text" && node.text) {
45317
45360
  const run = textNodeToRun(
45318
45361
  node,
@@ -45343,18 +45386,32 @@ function paragraphToFlowBlocks$1(para, nextBlockId, positions, defaultFont, defa
45343
45386
  if (node.type === "run" && Array.isArray(node.content)) {
45344
45387
  const mergedMarks = [...node.marks ?? [], ...inheritedMarks ?? []];
45345
45388
  const runProperties = typeof node.attrs?.runProperties === "object" && node.attrs.runProperties !== null ? node.attrs.runProperties : null;
45389
+ const runVanish = getVanishValue(runProperties);
45390
+ const nextHidden = runVanish === void 0 ? activeHidden : runVanish;
45391
+ if (nextHidden) {
45392
+ suppressedByVanish = true;
45393
+ return;
45394
+ }
45346
45395
  const nextRunStyleId = extractRunStyleId(runProperties) ?? activeRunStyleId;
45347
45396
  const nextRunProperties = runProperties ?? activeRunProperties;
45348
- node.content.forEach((child) => visitNode(child, mergedMarks, activeSdt, nextRunStyleId, nextRunProperties));
45397
+ node.content.forEach(
45398
+ (child) => visitNode(child, mergedMarks, activeSdt, nextRunStyleId, nextRunProperties, nextHidden)
45399
+ );
45349
45400
  return;
45350
45401
  }
45351
45402
  if (node.type === "structuredContent" && Array.isArray(node.content)) {
45352
45403
  const inlineMetadata = resolveNodeSdtMetadata(node, "structuredContent");
45353
45404
  const nextSdt = inlineMetadata ?? activeSdt;
45354
- node.content.forEach((child) => visitNode(child, inheritedMarks, nextSdt, activeRunStyleId, activeRunProperties));
45405
+ node.content.forEach(
45406
+ (child) => visitNode(child, inheritedMarks, nextSdt, activeRunStyleId, activeRunProperties, activeHidden)
45407
+ );
45355
45408
  return;
45356
45409
  }
45357
45410
  if (node.type === "fieldAnnotation") {
45411
+ if (activeHidden) {
45412
+ suppressedByVanish = true;
45413
+ return;
45414
+ }
45358
45415
  const fieldMetadata = resolveNodeSdtMetadata(node, "fieldAnnotation");
45359
45416
  let contentText;
45360
45417
  if (Array.isArray(node.content) && node.content.length > 0) {
@@ -45373,6 +45430,10 @@ function paragraphToFlowBlocks$1(para, nextBlockId, positions, defaultFont, defa
45373
45430
  return;
45374
45431
  }
45375
45432
  if (node.type === "pageReference") {
45433
+ if (activeHidden) {
45434
+ suppressedByVanish = true;
45435
+ return;
45436
+ }
45376
45437
  const instruction = getNodeInstruction(node) || "";
45377
45438
  const nodeAttrs = typeof node.attrs === "object" && node.attrs !== null ? node.attrs : {};
45378
45439
  const refMarks = Array.isArray(nodeAttrs.marksAsAttrs) ? nodeAttrs.marksAsAttrs : [];
@@ -45506,6 +45567,10 @@ function paragraphToFlowBlocks$1(para, nextBlockId, positions, defaultFont, defa
45506
45567
  return;
45507
45568
  }
45508
45569
  if (node.type === "image") {
45570
+ if (activeHidden) {
45571
+ suppressedByVanish = true;
45572
+ return;
45573
+ }
45509
45574
  const isInline2 = isInlineImage(node);
45510
45575
  if (isInline2) {
45511
45576
  const imageRun = imageNodeToRun(node, positions, activeSdt);
@@ -45531,6 +45596,10 @@ function paragraphToFlowBlocks$1(para, nextBlockId, positions, defaultFont, defa
45531
45596
  return;
45532
45597
  }
45533
45598
  if (node.type === "contentBlock") {
45599
+ if (activeHidden) {
45600
+ suppressedByVanish = true;
45601
+ return;
45602
+ }
45534
45603
  const attrs = node.attrs ?? {};
45535
45604
  if (attrs.horizontalRule === true) {
45536
45605
  const anchorParagraphId = nextId();
@@ -45549,6 +45618,10 @@ function paragraphToFlowBlocks$1(para, nextBlockId, positions, defaultFont, defa
45549
45618
  return;
45550
45619
  }
45551
45620
  if (node.type === "vectorShape") {
45621
+ if (activeHidden) {
45622
+ suppressedByVanish = true;
45623
+ return;
45624
+ }
45552
45625
  const anchorParagraphId = nextId();
45553
45626
  flushParagraph();
45554
45627
  if (converters?.vectorShapeNodeToDrawingBlock) {
@@ -45560,6 +45633,10 @@ function paragraphToFlowBlocks$1(para, nextBlockId, positions, defaultFont, defa
45560
45633
  return;
45561
45634
  }
45562
45635
  if (node.type === "shapeGroup") {
45636
+ if (activeHidden) {
45637
+ suppressedByVanish = true;
45638
+ return;
45639
+ }
45563
45640
  const anchorParagraphId = nextId();
45564
45641
  flushParagraph();
45565
45642
  if (converters?.shapeGroupNodeToDrawingBlock) {
@@ -45571,6 +45648,10 @@ function paragraphToFlowBlocks$1(para, nextBlockId, positions, defaultFont, defa
45571
45648
  return;
45572
45649
  }
45573
45650
  if (node.type === "shapeContainer") {
45651
+ if (activeHidden) {
45652
+ suppressedByVanish = true;
45653
+ return;
45654
+ }
45574
45655
  const anchorParagraphId = nextId();
45575
45656
  flushParagraph();
45576
45657
  if (converters?.shapeContainerNodeToDrawingBlock) {
@@ -45582,6 +45663,10 @@ function paragraphToFlowBlocks$1(para, nextBlockId, positions, defaultFont, defa
45582
45663
  return;
45583
45664
  }
45584
45665
  if (node.type === "shapeTextbox") {
45666
+ if (activeHidden) {
45667
+ suppressedByVanish = true;
45668
+ return;
45669
+ }
45585
45670
  const anchorParagraphId = nextId();
45586
45671
  flushParagraph();
45587
45672
  if (converters?.shapeTextboxNodeToDrawingBlock) {
@@ -45593,6 +45678,10 @@ function paragraphToFlowBlocks$1(para, nextBlockId, positions, defaultFont, defa
45593
45678
  return;
45594
45679
  }
45595
45680
  if (node.type === "table") {
45681
+ if (activeHidden) {
45682
+ suppressedByVanish = true;
45683
+ return;
45684
+ }
45596
45685
  const anchorParagraphId = nextId();
45597
45686
  flushParagraph();
45598
45687
  if (converters?.tableNodeToBlock) {
@@ -45616,6 +45705,10 @@ function paragraphToFlowBlocks$1(para, nextBlockId, positions, defaultFont, defa
45616
45705
  return;
45617
45706
  }
45618
45707
  if (node.type === "hardBreak" || node.type === "lineBreak") {
45708
+ if (activeHidden) {
45709
+ suppressedByVanish = true;
45710
+ return;
45711
+ }
45619
45712
  const attrs = node.attrs ?? {};
45620
45713
  const breakType = attrs.pageBreakType ?? attrs.lineBreakType ?? "line";
45621
45714
  if (breakType === "page") {
@@ -45658,11 +45751,11 @@ function paragraphToFlowBlocks$1(para, nextBlockId, positions, defaultFont, defa
45658
45751
  }
45659
45752
  };
45660
45753
  para.content.forEach((child) => {
45661
- visitNode(child, [], void 0, null);
45754
+ visitNode(child, [], void 0, null, void 0);
45662
45755
  });
45663
45756
  flushParagraph();
45664
45757
  const hasParagraphBlock = blocks.some((block) => block.kind === "paragraph");
45665
- if (!hasParagraphBlock) {
45758
+ if (!hasParagraphBlock && !suppressedByVanish && !paragraphHiddenByVanish) {
45666
45759
  blocks.push({
45667
45760
  kind: "paragraph",
45668
45761
  id: baseBlockId,
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  const jszip = require("./jszip-C8_CqJxM.cjs");
3
3
  const helpers$1 = require("./helpers-nOdwpmwb.cjs");
4
- const superEditor_converter = require("./SuperConverter-Dy4wkQEB.cjs");
4
+ const superEditor_converter = require("./SuperConverter-C4XfNZf6.cjs");
5
5
  const vue = require("./vue-De9wkgLl.cjs");
6
6
  require("./jszip.min-BPh2MMAa.cjs");
7
7
  const eventemitter3 = require("./eventemitter3-BQuRcMPI.cjs");
@@ -15457,7 +15457,7 @@ const canUseDOM = () => {
15457
15457
  return false;
15458
15458
  }
15459
15459
  };
15460
- const summaryVersion = "1.4.0-next.2";
15460
+ const summaryVersion = "1.4.0";
15461
15461
  const nodeKeys = ["group", "content", "marks", "inline", "atom", "defining", "code", "tableRole", "summary"];
15462
15462
  const markKeys = ["group", "inclusive", "excludes", "spanning", "code"];
15463
15463
  function mapAttributes(attrs) {
@@ -18089,7 +18089,7 @@ class Editor extends EventEmitter {
18089
18089
  * Process collaboration migrations
18090
18090
  */
18091
18091
  processCollaborationMigrations() {
18092
- console.debug("[checkVersionMigrations] Current editor version", "1.4.0-next.2");
18092
+ console.debug("[checkVersionMigrations] Current editor version", "1.4.0");
18093
18093
  if (!this.options.ydoc) return;
18094
18094
  const metaMap = this.options.ydoc.getMap("meta");
18095
18095
  let docVersion = metaMap.get("version");
@@ -43656,18 +43656,38 @@ const computeParagraphAttrs = (para, styleContext, listCounterContext, converter
43656
43656
  return unwrapped.length > 0 ? unwrapped : void 0;
43657
43657
  };
43658
43658
  const styleNodeAttrs = { ...attrs };
43659
- const attrTabStops = unwrapTabStops(styleNodeAttrs.tabStops ?? styleNodeAttrs.tabs) ?? styleNodeAttrs.tabStops;
43660
- const hydratedTabStops = unwrapTabStops(hydrated?.tabStops) ?? hydrated?.tabStops;
43661
- const paragraphTabStops = unwrapTabStops(paragraphProps.tabStops) ?? paragraphProps.tabStops;
43662
- let tabSource = attrTabStops;
43663
- if (!tabSource && hydratedTabStops) {
43664
- tabSource = hydratedTabStops;
43665
- }
43666
- if (!tabSource && paragraphTabStops) {
43667
- tabSource = paragraphTabStops;
43668
- }
43669
- if (tabSource) {
43670
- styleNodeAttrs.tabStops = tabSource;
43659
+ const asTabStopArray = (value) => {
43660
+ return Array.isArray(value) ? value : void 0;
43661
+ };
43662
+ const attrTabStops = unwrapTabStops(styleNodeAttrs.tabStops ?? styleNodeAttrs.tabs) ?? asTabStopArray(styleNodeAttrs.tabStops);
43663
+ const hydratedTabStops = unwrapTabStops(hydrated?.tabStops) ?? asTabStopArray(hydrated?.tabStops);
43664
+ const paragraphTabStops = unwrapTabStops(paragraphProps.tabStops) ?? asTabStopArray(paragraphProps.tabStops);
43665
+ const TAB_STOP_PX_TO_TWIPS = 15;
43666
+ const TAB_STOP_TWIPS_THRESHOLD = 1e3;
43667
+ const getTabStopPosition = (entry) => {
43668
+ const originalPos = pickNumber(entry.originalPos);
43669
+ if (originalPos != null) return originalPos;
43670
+ const posValue = pickNumber(entry.pos ?? entry.position ?? entry.offset);
43671
+ if (posValue == null) return void 0;
43672
+ return posValue > TAB_STOP_TWIPS_THRESHOLD ? posValue : Math.round(posValue * TAB_STOP_PX_TO_TWIPS);
43673
+ };
43674
+ const mergeTabStopSources = (...sources) => {
43675
+ const merged = /* @__PURE__ */ new Map();
43676
+ for (const source of sources) {
43677
+ if (!Array.isArray(source)) continue;
43678
+ for (const stop of source) {
43679
+ if (!stop || typeof stop !== "object") continue;
43680
+ const position = getTabStopPosition(stop);
43681
+ if (position == null) continue;
43682
+ merged.set(position, { ...stop });
43683
+ }
43684
+ }
43685
+ if (merged.size === 0) return void 0;
43686
+ return Array.from(merged.entries()).sort(([a], [b]) => a - b).map(([, stop]) => stop);
43687
+ };
43688
+ const mergedTabStops = mergeTabStopSources(hydratedTabStops, paragraphTabStops, attrTabStops);
43689
+ if (mergedTabStops) {
43690
+ styleNodeAttrs.tabStops = mergedTabStops;
43671
43691
  if ("tabs" in styleNodeAttrs) {
43672
43692
  delete styleNodeAttrs.tabs;
43673
43693
  }
@@ -43760,6 +43780,11 @@ const computeParagraphAttrs = (para, styleContext, listCounterContext, converter
43760
43780
  }
43761
43781
  if (computed.paragraph.tabs && computed.paragraph.tabs.length > 0) {
43762
43782
  paragraphAttrs.tabs = computed.paragraph.tabs.map((tab) => ({ ...tab }));
43783
+ } else if (mergedTabStops) {
43784
+ const normalizedTabs = normalizeOoxmlTabs(mergedTabStops);
43785
+ if (normalizedTabs) {
43786
+ paragraphAttrs.tabs = normalizedTabs;
43787
+ }
43763
43788
  } else if (hydratedTabStops) {
43764
43789
  const normalizedTabs = normalizeOoxmlTabs(hydratedTabStops);
43765
43790
  if (normalizedTabs) {
@@ -45163,9 +45188,19 @@ const applyInlineRunProperties = (run, runProperties) => {
45163
45188
  run.letterSpacing = twipsToPx$1(runProperties.letterSpacing);
45164
45189
  }
45165
45190
  };
45191
+ const getVanishValue = (runProperties) => {
45192
+ if (!runProperties || typeof runProperties !== "object" || Array.isArray(runProperties)) {
45193
+ return void 0;
45194
+ }
45195
+ if (!Object.prototype.hasOwnProperty.call(runProperties, "vanish")) {
45196
+ return void 0;
45197
+ }
45198
+ return runProperties.vanish === true;
45199
+ };
45166
45200
  function paragraphToFlowBlocks$1(para, nextBlockId, positions, defaultFont, defaultSize, styleContext, listCounterContext, trackedChanges, bookmarks, hyperlinkConfig = DEFAULT_HYPERLINK_CONFIG$1, themeColors, converters, converterContext, enableComments = true) {
45167
45201
  const baseBlockId = nextBlockId("paragraph");
45168
45202
  const paragraphProps = typeof para.attrs?.paragraphProperties === "object" && para.attrs.paragraphProperties !== null ? para.attrs.paragraphProperties : {};
45203
+ const paragraphHiddenByVanish = getVanishValue(paragraphProps.runProperties) === true;
45169
45204
  const paragraphStyleId = typeof para.attrs?.styleId === "string" && para.attrs.styleId.trim() ? para.attrs.styleId : typeof paragraphProps.styleId === "string" && paragraphProps.styleId.trim() ? paragraphProps.styleId : null;
45170
45205
  const paragraphHydration = converterContext ? hydrateParagraphStyleAttrs(para, converterContext) : null;
45171
45206
  let baseRunDefaults = {};
@@ -45264,6 +45299,9 @@ function paragraphToFlowBlocks$1(para, nextBlockId, positions, defaultFont, defa
45264
45299
  });
45265
45300
  }
45266
45301
  if (!para.content || para.content.length === 0) {
45302
+ if (paragraphHiddenByVanish) {
45303
+ return blocks;
45304
+ }
45267
45305
  const paraPos = positions.get(para);
45268
45306
  const emptyRun = {
45269
45307
  text: "",
@@ -45285,6 +45323,7 @@ function paragraphToFlowBlocks$1(para, nextBlockId, positions, defaultFont, defa
45285
45323
  let currentRuns = [];
45286
45324
  let partIndex = 0;
45287
45325
  let tabOrdinal = 0;
45326
+ let suppressedByVanish = false;
45288
45327
  const nextId = () => partIndex === 0 ? baseBlockId : `${baseBlockId}-${partIndex}`;
45289
45328
  const attachAnchorParagraphId = (block, anchorParagraphId) => {
45290
45329
  const applicableKinds = /* @__PURE__ */ new Set(["drawing", "image", "table"]);
@@ -45329,7 +45368,11 @@ function paragraphToFlowBlocks$1(para, nextBlockId, positions, defaultFont, defa
45329
45368
  runStyleId
45330
45369
  });
45331
45370
  };
45332
- const visitNode = (node, inheritedMarks = [], activeSdt, activeRunStyleId = null, activeRunProperties) => {
45371
+ const visitNode = (node, inheritedMarks = [], activeSdt, activeRunStyleId = null, activeRunProperties, activeHidden = false) => {
45372
+ if (activeHidden && node.type !== "run") {
45373
+ suppressedByVanish = true;
45374
+ return;
45375
+ }
45333
45376
  if (node.type === "text" && node.text) {
45334
45377
  const run = textNodeToRun(
45335
45378
  node,
@@ -45360,18 +45403,32 @@ function paragraphToFlowBlocks$1(para, nextBlockId, positions, defaultFont, defa
45360
45403
  if (node.type === "run" && Array.isArray(node.content)) {
45361
45404
  const mergedMarks = [...node.marks ?? [], ...inheritedMarks ?? []];
45362
45405
  const runProperties = typeof node.attrs?.runProperties === "object" && node.attrs.runProperties !== null ? node.attrs.runProperties : null;
45406
+ const runVanish = getVanishValue(runProperties);
45407
+ const nextHidden = runVanish === void 0 ? activeHidden : runVanish;
45408
+ if (nextHidden) {
45409
+ suppressedByVanish = true;
45410
+ return;
45411
+ }
45363
45412
  const nextRunStyleId = extractRunStyleId(runProperties) ?? activeRunStyleId;
45364
45413
  const nextRunProperties = runProperties ?? activeRunProperties;
45365
- node.content.forEach((child) => visitNode(child, mergedMarks, activeSdt, nextRunStyleId, nextRunProperties));
45414
+ node.content.forEach(
45415
+ (child) => visitNode(child, mergedMarks, activeSdt, nextRunStyleId, nextRunProperties, nextHidden)
45416
+ );
45366
45417
  return;
45367
45418
  }
45368
45419
  if (node.type === "structuredContent" && Array.isArray(node.content)) {
45369
45420
  const inlineMetadata = resolveNodeSdtMetadata(node, "structuredContent");
45370
45421
  const nextSdt = inlineMetadata ?? activeSdt;
45371
- node.content.forEach((child) => visitNode(child, inheritedMarks, nextSdt, activeRunStyleId, activeRunProperties));
45422
+ node.content.forEach(
45423
+ (child) => visitNode(child, inheritedMarks, nextSdt, activeRunStyleId, activeRunProperties, activeHidden)
45424
+ );
45372
45425
  return;
45373
45426
  }
45374
45427
  if (node.type === "fieldAnnotation") {
45428
+ if (activeHidden) {
45429
+ suppressedByVanish = true;
45430
+ return;
45431
+ }
45375
45432
  const fieldMetadata = resolveNodeSdtMetadata(node, "fieldAnnotation");
45376
45433
  let contentText;
45377
45434
  if (Array.isArray(node.content) && node.content.length > 0) {
@@ -45390,6 +45447,10 @@ function paragraphToFlowBlocks$1(para, nextBlockId, positions, defaultFont, defa
45390
45447
  return;
45391
45448
  }
45392
45449
  if (node.type === "pageReference") {
45450
+ if (activeHidden) {
45451
+ suppressedByVanish = true;
45452
+ return;
45453
+ }
45393
45454
  const instruction = getNodeInstruction(node) || "";
45394
45455
  const nodeAttrs = typeof node.attrs === "object" && node.attrs !== null ? node.attrs : {};
45395
45456
  const refMarks = Array.isArray(nodeAttrs.marksAsAttrs) ? nodeAttrs.marksAsAttrs : [];
@@ -45523,6 +45584,10 @@ function paragraphToFlowBlocks$1(para, nextBlockId, positions, defaultFont, defa
45523
45584
  return;
45524
45585
  }
45525
45586
  if (node.type === "image") {
45587
+ if (activeHidden) {
45588
+ suppressedByVanish = true;
45589
+ return;
45590
+ }
45526
45591
  const isInline2 = isInlineImage(node);
45527
45592
  if (isInline2) {
45528
45593
  const imageRun = imageNodeToRun(node, positions, activeSdt);
@@ -45548,6 +45613,10 @@ function paragraphToFlowBlocks$1(para, nextBlockId, positions, defaultFont, defa
45548
45613
  return;
45549
45614
  }
45550
45615
  if (node.type === "contentBlock") {
45616
+ if (activeHidden) {
45617
+ suppressedByVanish = true;
45618
+ return;
45619
+ }
45551
45620
  const attrs = node.attrs ?? {};
45552
45621
  if (attrs.horizontalRule === true) {
45553
45622
  const anchorParagraphId = nextId();
@@ -45566,6 +45635,10 @@ function paragraphToFlowBlocks$1(para, nextBlockId, positions, defaultFont, defa
45566
45635
  return;
45567
45636
  }
45568
45637
  if (node.type === "vectorShape") {
45638
+ if (activeHidden) {
45639
+ suppressedByVanish = true;
45640
+ return;
45641
+ }
45569
45642
  const anchorParagraphId = nextId();
45570
45643
  flushParagraph();
45571
45644
  if (converters?.vectorShapeNodeToDrawingBlock) {
@@ -45577,6 +45650,10 @@ function paragraphToFlowBlocks$1(para, nextBlockId, positions, defaultFont, defa
45577
45650
  return;
45578
45651
  }
45579
45652
  if (node.type === "shapeGroup") {
45653
+ if (activeHidden) {
45654
+ suppressedByVanish = true;
45655
+ return;
45656
+ }
45580
45657
  const anchorParagraphId = nextId();
45581
45658
  flushParagraph();
45582
45659
  if (converters?.shapeGroupNodeToDrawingBlock) {
@@ -45588,6 +45665,10 @@ function paragraphToFlowBlocks$1(para, nextBlockId, positions, defaultFont, defa
45588
45665
  return;
45589
45666
  }
45590
45667
  if (node.type === "shapeContainer") {
45668
+ if (activeHidden) {
45669
+ suppressedByVanish = true;
45670
+ return;
45671
+ }
45591
45672
  const anchorParagraphId = nextId();
45592
45673
  flushParagraph();
45593
45674
  if (converters?.shapeContainerNodeToDrawingBlock) {
@@ -45599,6 +45680,10 @@ function paragraphToFlowBlocks$1(para, nextBlockId, positions, defaultFont, defa
45599
45680
  return;
45600
45681
  }
45601
45682
  if (node.type === "shapeTextbox") {
45683
+ if (activeHidden) {
45684
+ suppressedByVanish = true;
45685
+ return;
45686
+ }
45602
45687
  const anchorParagraphId = nextId();
45603
45688
  flushParagraph();
45604
45689
  if (converters?.shapeTextboxNodeToDrawingBlock) {
@@ -45610,6 +45695,10 @@ function paragraphToFlowBlocks$1(para, nextBlockId, positions, defaultFont, defa
45610
45695
  return;
45611
45696
  }
45612
45697
  if (node.type === "table") {
45698
+ if (activeHidden) {
45699
+ suppressedByVanish = true;
45700
+ return;
45701
+ }
45613
45702
  const anchorParagraphId = nextId();
45614
45703
  flushParagraph();
45615
45704
  if (converters?.tableNodeToBlock) {
@@ -45633,6 +45722,10 @@ function paragraphToFlowBlocks$1(para, nextBlockId, positions, defaultFont, defa
45633
45722
  return;
45634
45723
  }
45635
45724
  if (node.type === "hardBreak" || node.type === "lineBreak") {
45725
+ if (activeHidden) {
45726
+ suppressedByVanish = true;
45727
+ return;
45728
+ }
45636
45729
  const attrs = node.attrs ?? {};
45637
45730
  const breakType = attrs.pageBreakType ?? attrs.lineBreakType ?? "line";
45638
45731
  if (breakType === "page") {
@@ -45675,11 +45768,11 @@ function paragraphToFlowBlocks$1(para, nextBlockId, positions, defaultFont, defa
45675
45768
  }
45676
45769
  };
45677
45770
  para.content.forEach((child) => {
45678
- visitNode(child, [], void 0, null);
45771
+ visitNode(child, [], void 0, null, void 0);
45679
45772
  });
45680
45773
  flushParagraph();
45681
45774
  const hasParagraphBlock = blocks.some((block) => block.kind === "paragraph");
45682
- if (!hasParagraphBlock) {
45775
+ if (!hasParagraphBlock && !suppressedByVanish && !paragraphHiddenByVanish) {
45683
45776
  blocks.push({
45684
45777
  kind: "paragraph",
45685
45778
  id: baseBlockId,
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
- const index = require("./index-DJuBZura.cjs");
3
- require("./SuperConverter-Dy4wkQEB.cjs");
2
+ const index = require("./index-BKXWekME.cjs");
3
+ require("./SuperConverter-C4XfNZf6.cjs");
4
4
  const blankDocx = require("./blank-docx-DfW3Eeh2.cjs");
5
5
  const eventemitter3 = require("./eventemitter3-BQuRcMPI.cjs");
6
6
  const provider = require("@hocuspocus/provider");
@@ -7496,7 +7496,7 @@ const _sfc_main = {
7496
7496
  __name: "SuperDoc",
7497
7497
  emits: ["selection-update"],
7498
7498
  setup(__props, { emit: __emit }) {
7499
- const PdfViewer = vue.defineAsyncComponent(() => Promise.resolve().then(() => require("./PdfViewer-DqN1vOXI.cjs")));
7499
+ const PdfViewer = vue.defineAsyncComponent(() => Promise.resolve().then(() => require("./PdfViewer-Dl9_ocZH.cjs")));
7500
7500
  const superdocStore = useSuperdocStore();
7501
7501
  const commentsStore = useCommentsStore();
7502
7502
  const {
@@ -8450,7 +8450,7 @@ class SuperDoc extends eventemitter3.EventEmitter {
8450
8450
  this.config.colors = shuffleArray(this.config.colors);
8451
8451
  this.userColorMap = /* @__PURE__ */ new Map();
8452
8452
  this.colorIndex = 0;
8453
- this.version = "1.4.0-next.2";
8453
+ this.version = "1.4.0";
8454
8454
  this.#log("🦋 [superdoc] Using SuperDoc version:", this.version);
8455
8455
  this.superdocId = config.superdocId || uuid.v4();
8456
8456
  this.colors = this.config.colors;