superdoc 1.0.0-beta.3 → 1.0.0-beta.4

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-CKzs9Ct5.es.js → PdfViewer-DUns3s8O.es.js} +1 -1
  2. package/dist/chunks/{PdfViewer-CxHbcDGx.cjs → PdfViewer-ZtwLhE_8.cjs} +1 -1
  3. package/dist/chunks/{index-CJUy3fVi-D8zt9F3Z.es.js → index-BNGaD3Up-CQuoo1EF.es.js} +1 -1
  4. package/dist/chunks/{index-CJUy3fVi-BGLfCP5B.cjs → index-BNGaD3Up-D2cRHMMk.cjs} +1 -1
  5. package/dist/chunks/{index-Dp3rVMnX.cjs → index-BW38mdZF.cjs} +3 -3
  6. package/dist/chunks/{index-DukSDI8_.es.js → index-DIccWgYh.es.js} +3 -3
  7. package/dist/chunks/{super-editor.es-CDiTp9Fe.cjs → super-editor.es-C06-V-Iy.cjs} +155 -27
  8. package/dist/chunks/{super-editor.es-BRKZG90h.es.js → super-editor.es-CtCHBIPE.es.js} +155 -27
  9. package/dist/super-editor/ai-writer.es.js +2 -2
  10. package/dist/super-editor/chunks/{converter-B9YfBdcc.js → converter-ZJiSHoiq.js} +1 -1
  11. package/dist/super-editor/chunks/{docx-zipper-V16OzZ7a.js → docx-zipper-B7FStorN.js} +1 -1
  12. package/dist/super-editor/chunks/{editor-DlvlVSbc.js → editor-DvepAjbe.js} +156 -28
  13. package/dist/super-editor/chunks/{index-CJUy3fVi.js → index-BNGaD3Up.js} +1 -1
  14. package/dist/super-editor/chunks/{toolbar-cNDvtryE.js → toolbar-CKXXbIQO.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 +157 -29
  26. package/dist/superdoc.umd.js.map +1 -1
  27. package/package.json +1 -1
@@ -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-B9YfBdcc.js";
3
- import { _ as _export_sfc } from "./chunks/editor-DlvlVSbc.js";
2
+ import { T as TextSelection } from "./chunks/converter-ZJiSHoiq.js";
3
+ import { _ as _export_sfc } from "./chunks/editor-DvepAjbe.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 = {}) {
@@ -35844,7 +35844,7 @@ const _SuperConverter = class _SuperConverter {
35844
35844
  static getStoredSuperdocVersion(docx) {
35845
35845
  return _SuperConverter.getStoredCustomProperty(docx, "SuperdocVersion");
35846
35846
  }
35847
- static setStoredSuperdocVersion(docx = this.convertedXml, version = "1.0.0-beta.3") {
35847
+ static setStoredSuperdocVersion(docx = this.convertedXml, version = "1.0.0-beta.4") {
35848
35848
  return _SuperConverter.setStoredCustomProperty(docx, "SuperdocVersion", version, false);
35849
35849
  }
35850
35850
  /**
@@ -1,4 +1,4 @@
1
- import { p as process$1, aI as commonjsGlobal, B as Buffer, aJ as getDefaultExportFromCjs, aK as getContentTypesFromXml, aL as xmljs } from "./converter-B9YfBdcc.js";
1
+ import { p as process$1, aI as commonjsGlobal, B as Buffer, aJ as getDefaultExportFromCjs, aK as getContentTypesFromXml, aL as xmljs } from "./converter-ZJiSHoiq.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 _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, _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, _instances, _options, _editor3, _visibleHost, _viewportHost, _painterHost, _selectionOverlay, _hiddenHost, _layoutOptions, _layoutState, _domPainter, _layoutError, _layoutErrorState, _errorBanner, _errorBannerMessage, _telemetryEmitter, _renderScheduled, _pendingDocChange, _isRerendering, _selectionUpdateScheduled, _remoteCursorUpdateScheduled, _rafHandle, _editorListeners, _sectionMetadata, _documentMode, _inputBridge, _trackedChangesMode, _trackedChangesEnabled, _trackedChangesOverrides, _headerFooterManager, _headerFooterAdapter, _headerFooterIdentifier, _headerLayoutResults, _footerLayoutResults, _headerDecorationProvider, _footerDecorationProvider, _headerFooterManagerCleanups, _headerRegions, _footerRegions, _session, _activeHeaderFooterEditor, _hoverOverlay, _hoverTooltip, _modeBanner, _ariaLiveRegion, _hoverRegion, _clickCount, _lastClickTime, _lastClickPosition, _remoteCursorState, _remoteCursorDirty, _remoteCursorOverlay, _localSelectionLayer, _awarenessCleanup, _scrollCleanup, _remoteCursorRafHandle, _scrollTimeout, _PresentationEditor_instances, aggregateLayoutBounds_fn, safeCleanup_fn, setupEditorListeners_fn, setupCollaborationCursors_fn, normalizeAwarenessStates_fn, getFallbackColor_fn, getValidatedColor_fn, scheduleRemoteCursorUpdate_fn, scheduleRemoteCursorReRender_fn, updateRemoteCursors_fn, renderRemoteCursors_fn, renderRemoteCaret_fn, renderRemoteCursorLabel_fn, renderRemoteSelection_fn, setupPointerHandlers_fn, setupInputBridge_fn, initHeaderFooterRegistry_fn, _handlePointerDown, getFirstTextPosition_fn, registerPointerClick_fn, selectWordAt_fn, selectParagraphAt_fn, isWordCharacter_fn, _handlePointerMove, _handlePointerLeave, _handleDoubleClick, _handleKeyDown, focusHeaderFooterShortcut_fn, scheduleRerender_fn, flushRerenderQueue_fn, rerender_fn, ensurePainter_fn, scheduleSelectionUpdate_fn, updateSelection_fn, resolveLayoutOptions_fn, buildHeaderFooterInput_fn, computeHeaderFooterConstraints_fn, updateDecorationProviders_fn, createDecorationProvider_fn, computeDecorationBox_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, validateHeaderFooterEditPermission_fn, emitHeaderFooterEditBlocked_fn, resolveDescriptorForRegion_fn, getBodyPageHeight_fn, getHeaderFooterPageHeight_fn, renderSelectionRects_fn, renderHoverRegion_fn, clearHoverRegion_fn, renderCaretOverlay_fn, getHeaderFooterContext_fn, computeHeaderFooterSelectionRects_fn, computeHeaderFooterCaretRect_fn, syncTrackedChangesPreferences_fn, deriveTrackedChangesMode_fn, deriveTrackedChangesEnabled_fn, getTrackChangesPluginState_fn, computeDefaultLayoutDefaults_fn, parseColumns_fn, inchesToPx_fn, applyZoom_fn, createLayoutMetrics_fn, convertPageLocalToOverlayCoords_fn, normalizeClientPoint_fn, computeCaretLayoutRect_fn, findLineContainingPos_fn, lineHeightBeforeIndex_fn, getCurrentPageIndex_fn, findRegionForPage_fn, handleLayoutError_fn, decorateError_fn, showLayoutErrorBanner_fn, dismissErrorBanner_fn, createHiddenHost_fn, _windowRoot, _visibleHost2, _getTargetDom, _onTargetChanged, _listeners, _currentTarget, _destroyed, _PresentationInputBridge_instances, addListener_fn, dispatchToTarget_fn, forwardKeyboardEvent_fn, forwardTextEvent_fn, forwardCompositionEvent_fn, forwardContextMenu_fn, isEventOnActiveTarget_fn, _DocumentSectionView_instances, init_fn2, addToolTip_fn, _ParagraphNodeView_instances, updateHTMLAttributes_fn, updateDOMStyles_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;
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$1, 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 ListHelpers, O as updateNumberingProperties, Q as changeListLevel, U as findParentNode, V as isList, W as isMacOS, X as isIOS, Y as getSchemaTypeByName, Z as inputRulesPlugin, _ as TrackDeleteMarkName, $ as TrackInsertMarkName, a0 as v4, a1 as TrackFormatMarkName, 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 resolveParagraphProperties, ak as _getReferencedTableStyles, al as parseSizeUnit, am as minMax, an as updateDOMAttributes, ao as findChildren$5, ap as generateRandomSigned32BitIntStrId, aq as calculateResolvedParagraphProperties, ar as encodeCSSFromPPr, as as twipsToPixels$2, at as resolveRunProperties, au as encodeCSSFromRPr, av as generateOrderedListIndex, aw as docxNumberingHelpers, ax as InputRule, ay as convertSizeToCSS, az as SelectionRange, aA as Transform, aB as findParentNodeClosestToPos, aC as isInTable$1, aD as generateDocxRandomId, aE as insertNewRelationship, aF as inchesToPixels, aG as kebabCase, aH as getUnderlineCssString } from "./converter-B9YfBdcc.js";
16
- import { D as DocxZipper } from "./docx-zipper-V16OzZ7a.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$1, 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 ListHelpers, O as updateNumberingProperties, Q as changeListLevel, U as findParentNode, V as isList, W as isMacOS, X as isIOS, Y as getSchemaTypeByName, Z as inputRulesPlugin, _ as TrackDeleteMarkName, $ as TrackInsertMarkName, a0 as v4, a1 as TrackFormatMarkName, 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 resolveParagraphProperties, ak as _getReferencedTableStyles, al as parseSizeUnit, am as minMax, an as updateDOMAttributes, ao as findChildren$5, ap as generateRandomSigned32BitIntStrId, aq as calculateResolvedParagraphProperties, ar as encodeCSSFromPPr, as as twipsToPixels$2, at as resolveRunProperties, au as encodeCSSFromRPr, av as generateOrderedListIndex, aw as docxNumberingHelpers, ax as InputRule, ay as convertSizeToCSS, az as SelectionRange, aA as Transform, aB as findParentNodeClosestToPos, aC as isInTable$1, aD as generateDocxRandomId, aE as insertNewRelationship, aF as inchesToPixels, aG as kebabCase, aH as getUnderlineCssString } from "./converter-ZJiSHoiq.js";
16
+ import { D as DocxZipper } from "./docx-zipper-B7FStorN.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() {
@@ -13553,7 +13553,7 @@ const isHeadless = (editor) => {
13553
13553
  const shouldSkipNodeView = (editor) => {
13554
13554
  return isHeadless(editor);
13555
13555
  };
13556
- const summaryVersion = "1.0.0-beta.3";
13556
+ const summaryVersion = "1.0.0-beta.4";
13557
13557
  const nodeKeys = ["group", "content", "marks", "inline", "atom", "defining", "code", "tableRole", "summary"];
13558
13558
  const markKeys = ["group", "inclusive", "excludes", "spanning", "code"];
13559
13559
  function mapAttributes(attrs) {
@@ -14335,7 +14335,7 @@ const _Editor = class _Editor extends EventEmitter {
14335
14335
  { default: remarkStringify },
14336
14336
  { default: remarkGfm }
14337
14337
  ] = await Promise.all([
14338
- import("./index-CJUy3fVi.js"),
14338
+ import("./index-BNGaD3Up.js"),
14339
14339
  import("./index-DRCvimau.js"),
14340
14340
  import("./index-C_x_N6Uh.js"),
14341
14341
  import("./index-D_sWOSiG.js"),
@@ -14540,7 +14540,7 @@ const _Editor = class _Editor extends EventEmitter {
14540
14540
  * Process collaboration migrations
14541
14541
  */
14542
14542
  processCollaborationMigrations() {
14543
- console.debug("[checkVersionMigrations] Current editor version", "1.0.0-beta.3");
14543
+ console.debug("[checkVersionMigrations] Current editor version", "1.0.0-beta.4");
14544
14544
  if (!this.options.ydoc) return;
14545
14545
  const metaMap = this.options.ydoc.getMap("meta");
14546
14546
  let docVersion = metaMap.get("version");
@@ -16459,6 +16459,19 @@ const sanitizeFontFamily = (fontFamily) => {
16459
16459
  }
16460
16460
  return sanitized;
16461
16461
  };
16462
+ const normalizeFontSizePx = (value) => {
16463
+ if (isFiniteNumber(value)) return value;
16464
+ if (typeof value !== "string") return void 0;
16465
+ const trimmed = value.trim();
16466
+ if (!trimmed) return void 0;
16467
+ const numeric = Number.parseFloat(trimmed);
16468
+ if (!Number.isFinite(numeric)) return void 0;
16469
+ const unit = trimmed.match(/[a-zA-Z%]+$/)?.[0]?.toLowerCase();
16470
+ if (unit === "pt") {
16471
+ return ptToPx(numeric);
16472
+ }
16473
+ return numeric;
16474
+ };
16462
16475
  const applyTextStyleMark = (run, attrs, themeColors) => {
16463
16476
  const resolvedColor = resolveColorFromAttributes(attrs, themeColors);
16464
16477
  if (resolvedColor) {
@@ -16470,9 +16483,9 @@ const applyTextStyleMark = (run, attrs, themeColors) => {
16470
16483
  run.fontFamily = sanitized;
16471
16484
  }
16472
16485
  }
16473
- const fontSizeValue = pickNumber(attrs.fontSize);
16474
- if (fontSizeValue !== void 0 && fontSizeValue >= 1 && fontSizeValue <= 1e3) {
16475
- run.fontSize = fontSizeValue;
16486
+ const fontSizePx = normalizeFontSizePx(attrs.fontSize);
16487
+ if (fontSizePx !== void 0 && fontSizePx >= 1 && fontSizePx <= 1e3) {
16488
+ run.fontSize = fontSizePx;
16476
16489
  }
16477
16490
  if (isFiniteNumber(attrs.letterSpacing)) {
16478
16491
  const spacing = Number(attrs.letterSpacing);
@@ -26732,8 +26745,59 @@ const _DomPainter = class _DomPainter {
26732
26745
  this.headerProvider = header;
26733
26746
  this.footerProvider = footer;
26734
26747
  }
26735
- setData(blocks, measures) {
26748
+ /**
26749
+ * Updates the painter's block and measure data.
26750
+ *
26751
+ * @param blocks - Main document blocks
26752
+ * @param measures - Measures corresponding to main document blocks
26753
+ * @param headerBlocks - Optional header blocks from header/footer layout results
26754
+ * @param headerMeasures - Optional measures corresponding to header blocks
26755
+ * @param footerBlocks - Optional footer blocks from header/footer layout results
26756
+ * @param footerMeasures - Optional measures corresponding to footer blocks
26757
+ */
26758
+ setData(blocks, measures, headerBlocks, headerMeasures, footerBlocks, footerMeasures) {
26759
+ if (blocks.length !== measures.length) {
26760
+ throw new Error(
26761
+ `setData: blocks and measures arrays must have the same length. Got blocks.length=${blocks.length}, measures.length=${measures.length}`
26762
+ );
26763
+ }
26764
+ const hasHeaderBlocks = headerBlocks !== void 0;
26765
+ const hasHeaderMeasures = headerMeasures !== void 0;
26766
+ if (hasHeaderBlocks !== hasHeaderMeasures) {
26767
+ throw new Error(
26768
+ `setData: headerBlocks and headerMeasures must both be provided or both be omitted. Got headerBlocks=${hasHeaderBlocks ? "provided" : "omitted"}, headerMeasures=${hasHeaderMeasures ? "provided" : "omitted"}`
26769
+ );
26770
+ }
26771
+ if (hasHeaderBlocks && hasHeaderMeasures && headerBlocks.length !== headerMeasures.length) {
26772
+ throw new Error(
26773
+ `setData: headerBlocks and headerMeasures arrays must have the same length. Got headerBlocks.length=${headerBlocks.length}, headerMeasures.length=${headerMeasures.length}`
26774
+ );
26775
+ }
26776
+ const hasFooterBlocks = footerBlocks !== void 0;
26777
+ const hasFooterMeasures = footerMeasures !== void 0;
26778
+ if (hasFooterBlocks !== hasFooterMeasures) {
26779
+ throw new Error(
26780
+ `setData: footerBlocks and footerMeasures must both be provided or both be omitted. Got footerBlocks=${hasFooterBlocks ? "provided" : "omitted"}, footerMeasures=${hasFooterMeasures ? "provided" : "omitted"}`
26781
+ );
26782
+ }
26783
+ if (hasFooterBlocks && hasFooterMeasures && footerBlocks.length !== footerMeasures.length) {
26784
+ throw new Error(
26785
+ `setData: footerBlocks and footerMeasures arrays must have the same length. Got footerBlocks.length=${footerBlocks.length}, footerMeasures.length=${footerMeasures.length}`
26786
+ );
26787
+ }
26736
26788
  const nextLookup = this.buildBlockLookup(blocks, measures);
26789
+ if (headerBlocks && headerMeasures) {
26790
+ const headerLookup = this.buildBlockLookup(headerBlocks, headerMeasures);
26791
+ headerLookup.forEach((entry, id) => {
26792
+ nextLookup.set(id, entry);
26793
+ });
26794
+ }
26795
+ if (footerBlocks && footerMeasures) {
26796
+ const footerLookup = this.buildBlockLookup(footerBlocks, footerMeasures);
26797
+ footerLookup.forEach((entry, id) => {
26798
+ nextLookup.set(id, entry);
26799
+ });
26800
+ }
26737
26801
  const changed = /* @__PURE__ */ new Set();
26738
26802
  nextLookup.forEach((entry, id) => {
26739
26803
  const previous = this.blockLookup.get(id);
@@ -27056,6 +27120,14 @@ const _DomPainter = class _DomPainter {
27056
27120
  container.style.height = `${data.height}px`;
27057
27121
  container.style.top = `${Math.max(0, offset2)}px`;
27058
27122
  container.style.zIndex = "1";
27123
+ let footerYOffset = 0;
27124
+ if (kind === "footer" && data.fragments.length > 0) {
27125
+ const contentHeight = typeof data.contentHeight === "number" ? data.contentHeight : data.fragments.reduce((max2, f2) => {
27126
+ const fragHeight = "height" in f2 && typeof f2.height === "number" ? f2.height : this.estimateFragmentHeight(f2);
27127
+ return Math.max(max2, f2.y + Math.max(0, fragHeight));
27128
+ }, 0);
27129
+ footerYOffset = Math.max(0, data.height - contentHeight);
27130
+ }
27059
27131
  const context = {
27060
27132
  pageNumber: page.number,
27061
27133
  totalPages: this.totalPages,
@@ -27064,6 +27136,10 @@ const _DomPainter = class _DomPainter {
27064
27136
  };
27065
27137
  data.fragments.forEach((fragment) => {
27066
27138
  const fragEl = this.renderFragment(fragment, context);
27139
+ if (footerYOffset > 0) {
27140
+ const currentTop = parseFloat(fragEl.style.top) || fragment.y;
27141
+ fragEl.style.top = `${currentTop + footerYOffset}px`;
27142
+ }
27067
27143
  container.appendChild(fragEl);
27068
27144
  });
27069
27145
  if (!existing) {
@@ -27375,13 +27451,13 @@ const _DomPainter = class _DomPainter {
27375
27451
  const markerEl = this.doc.createElement("span");
27376
27452
  markerEl.classList.add("superdoc-list-marker");
27377
27453
  const wordLayout = item.paragraph.attrs?.wordLayout;
27378
- if (wordLayout?.marker) {
27379
- const marker = wordLayout.marker;
27380
- markerEl.textContent = marker.markerText;
27454
+ const marker = wordLayout?.marker;
27455
+ if (marker) {
27456
+ markerEl.textContent = marker.markerText ?? null;
27381
27457
  markerEl.style.display = "inline-block";
27382
27458
  markerEl.style.width = `${Math.max(0, fragment.markerWidth - LIST_MARKER_GAP$1)}px`;
27383
27459
  markerEl.style.paddingRight = `${LIST_MARKER_GAP$1}px`;
27384
- markerEl.style.textAlign = marker.justification;
27460
+ markerEl.style.textAlign = marker.justification ?? "";
27385
27461
  markerEl.style.fontFamily = marker.run.fontFamily;
27386
27462
  markerEl.style.fontSize = `${marker.run.fontSize}px`;
27387
27463
  if (marker.run.bold) markerEl.style.fontWeight = "bold";
@@ -28130,6 +28206,33 @@ const _DomPainter = class _DomPainter {
28130
28206
  }
28131
28207
  }
28132
28208
  }
28209
+ /**
28210
+ * Estimates the height of a fragment when explicit height is not available.
28211
+ *
28212
+ * This method provides fallback height calculations for footer bottom-alignment
28213
+ * by consulting measure data for paragraphs and list items, or using the
28214
+ * fragment's height property for tables, images, and drawings.
28215
+ *
28216
+ * @param fragment - The fragment to estimate height for
28217
+ * @returns Estimated height in pixels, or 0 if height cannot be determined
28218
+ */
28219
+ estimateFragmentHeight(fragment) {
28220
+ const lookup = this.blockLookup.get(fragment.blockId);
28221
+ const measure = lookup?.measure;
28222
+ if (fragment.kind === "para" && measure?.kind === "paragraph") {
28223
+ return measure.totalHeight;
28224
+ }
28225
+ if (fragment.kind === "list-item" && measure?.kind === "list") {
28226
+ return measure.totalHeight;
28227
+ }
28228
+ if (fragment.kind === "table") {
28229
+ return fragment.height;
28230
+ }
28231
+ if (fragment.kind === "image" || fragment.kind === "drawing") {
28232
+ return fragment.height;
28233
+ }
28234
+ return 0;
28235
+ }
28133
28236
  buildBlockLookup(blocks, measures) {
28134
28237
  if (blocks.length !== measures.length) {
28135
28238
  throw new Error("DomPainter requires the same number of blocks and measures");
@@ -28598,8 +28701,8 @@ const createDomPainter = (options) => {
28598
28701
  paint(layout, mount) {
28599
28702
  painter.paint(layout, mount);
28600
28703
  },
28601
- setData(blocks, measures) {
28602
- painter.setData(blocks, measures);
28704
+ setData(blocks, measures, headerBlocks, headerMeasures, footerBlocks, footerMeasures) {
28705
+ painter.setData(blocks, measures, headerBlocks, headerMeasures, footerBlocks, footerMeasures);
28603
28706
  },
28604
28707
  // Non-standard extension for demo app to avoid re-instantiating on provider changes
28605
28708
  setProviders(header, footer) {
@@ -32235,7 +32338,30 @@ rerender_fn = async function() {
32235
32338
  if (typeof painter.setProviders === "function") {
32236
32339
  painter.setProviders(__privateGet(this, _headerDecorationProvider), __privateGet(this, _footerDecorationProvider));
32237
32340
  }
32238
- painter.setData?.(blocks, measures);
32341
+ const headerBlocks = [];
32342
+ const headerMeasures = [];
32343
+ if (headerLayouts) {
32344
+ for (const headerResult of headerLayouts) {
32345
+ headerBlocks.push(...headerResult.blocks);
32346
+ headerMeasures.push(...headerResult.measures);
32347
+ }
32348
+ }
32349
+ const footerBlocks = [];
32350
+ const footerMeasures = [];
32351
+ if (footerLayouts) {
32352
+ for (const footerResult of footerLayouts) {
32353
+ footerBlocks.push(...footerResult.blocks);
32354
+ footerMeasures.push(...footerResult.measures);
32355
+ }
32356
+ }
32357
+ painter.setData?.(
32358
+ blocks,
32359
+ measures,
32360
+ headerBlocks.length > 0 ? headerBlocks : void 0,
32361
+ headerMeasures.length > 0 ? headerMeasures : void 0,
32362
+ footerBlocks.length > 0 ? footerBlocks : void 0,
32363
+ footerMeasures.length > 0 ? footerMeasures : void 0
32364
+ );
32239
32365
  painter.paint(layout, __privateGet(this, _painterHost));
32240
32366
  __privateSet(this, _layoutError, null);
32241
32367
  __privateSet(this, _layoutErrorState, "healthy");
@@ -32405,7 +32531,8 @@ createDecorationProvider_fn = function(kind, layout) {
32405
32531
  const finalHeaderId = headerId ?? fallbackId ?? void 0;
32406
32532
  return {
32407
32533
  fragments: slotPage.fragments,
32408
- height: variant.layout.height ?? box.height,
32534
+ height: box.height,
32535
+ contentHeight: variant.layout.height ?? box.height,
32409
32536
  offset: box.offset,
32410
32537
  marginLeft: box.x,
32411
32538
  contentWidth: box.width,
@@ -32432,18 +32559,19 @@ computeDecorationBox_fn = function(kind, pageMargins, pageHeight) {
32432
32559
  const left2 = margins.left ?? DEFAULT_MARGINS.left;
32433
32560
  const right2 = margins.right ?? DEFAULT_MARGINS.right;
32434
32561
  const width = Math.max(pageSize.w - (left2 + right2), 1);
32435
- const defaultHeight = kind === "header" ? margins.top ?? DEFAULT_MARGINS.top : margins.bottom ?? DEFAULT_MARGINS.bottom;
32436
- const { headerSpace, footerSpace } = extractHeaderFooterSpace(margins);
32437
- const target = kind === "header" ? headerSpace : footerSpace;
32438
- const height = Math.max(target || defaultHeight || 1, 1);
32439
32562
  const totalHeight = pageHeight ?? pageSize.h;
32440
- const offset2 = kind === "header" ? 0 : Math.max(0, totalHeight - height);
32441
- return {
32442
- x: left2,
32443
- width,
32444
- height,
32445
- offset: offset2
32446
- };
32563
+ if (kind === "header") {
32564
+ const headerMargin = margins.header ?? 0;
32565
+ const topMargin = margins.top ?? DEFAULT_MARGINS.top ?? 0;
32566
+ const height = Math.max(topMargin - headerMargin, 1);
32567
+ return { x: left2, width, height, offset: headerMargin };
32568
+ } else {
32569
+ const footerMargin = margins.footer ?? 0;
32570
+ const bottomMargin = margins.bottom ?? DEFAULT_MARGINS.bottom ?? 0;
32571
+ const height = Math.max(bottomMargin - footerMargin, 1);
32572
+ const offset2 = Math.max(0, totalHeight - footerMargin - height);
32573
+ return { x: left2, width, height, offset: offset2 };
32574
+ }
32447
32575
  };
32448
32576
  rebuildHeaderFooterRegions_fn = function(layout) {
32449
32577
  __privateGet(this, _headerRegions).clear();
@@ -1,4 +1,4 @@
1
- import { aJ as getDefaultExportFromCjs } from "./converter-B9YfBdcc.js";
1
+ import { aJ as getDefaultExportFromCjs } from "./converter-ZJiSHoiq.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 { computed, createElementBlock, openBlock, createElementVNode, createCommentVNode, normalizeClass, normalizeStyle, ref, withKeys, unref, withModifiers, createBlock, toDisplayString, withDirectives, vModelText, nextTick, getCurrentInstance, createVNode, readonly, watch, onMounted, onBeforeUnmount, reactive, onBeforeMount, inject, onActivated, onDeactivated, createTextVNode, Fragment, Comment, defineComponent, provide, h, Teleport, toRef, renderSlot, isVNode, shallowRef, watchEffect, mergeProps, Transition, vShow, cloneVNode, Text, renderList, withCtx } from "vue";
2
- import { p as process$1 } from "./converter-B9YfBdcc.js";
3
- import { _ as _export_sfc, u as useHighContrastMode, g as global$1 } from "./editor-DlvlVSbc.js";
2
+ import { p as process$1 } from "./converter-ZJiSHoiq.js";
3
+ import { _ as _export_sfc, u as useHighContrastMode, g as global$1 } from "./editor-DvepAjbe.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-B9YfBdcc.js";
1
+ import { ac } from "./chunks/converter-ZJiSHoiq.js";
2
2
  export {
3
3
  ac as SuperConverter
4
4
  };
@@ -1,5 +1,5 @@
1
- import "./chunks/converter-B9YfBdcc.js";
2
- import { D } from "./chunks/docx-zipper-V16OzZ7a.js";
1
+ import "./chunks/converter-ZJiSHoiq.js";
2
+ import { D } from "./chunks/docx-zipper-B7FStorN.js";
3
3
  export {
4
4
  D as default
5
5
  };
@@ -1,6 +1,6 @@
1
- import { E } from "./chunks/editor-DlvlVSbc.js";
2
- import "./chunks/converter-B9YfBdcc.js";
3
- import "./chunks/docx-zipper-V16OzZ7a.js";
1
+ import { E } from "./chunks/editor-DvepAjbe.js";
2
+ import "./chunks/converter-ZJiSHoiq.js";
3
+ import "./chunks/docx-zipper-B7FStorN.js";
4
4
  export {
5
5
  E as Editor
6
6
  };
@@ -1,4 +1,4 @@
1
- import { J as JSZip } from "./chunks/docx-zipper-V16OzZ7a.js";
1
+ import { J as JSZip } from "./chunks/docx-zipper-B7FStorN.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 { aJ as getDefaultExportFromCjs, a0 as v4, T as TextSelection$1, v as getMarkRange, aM as vClickOutside, aN as getActiveFormatting, aC as isInTable, U as findParentNode, aq as calculateResolvedParagraphProperties, a7 as twipsToLines, V as isList, al as parseSizeUnit, a8 as pixelsToTwips, aO as getFileObject, aP as translator, aQ as translator$1, aR as translator$2, aS as translator$3, aT as translator$4, aU as translator$5, aV as translator$6, aW as translator$7, aX as translator$8, aY as translator$9, aZ as translator$a, a_ as translator$b, a$ as translator$c, b0 as translator$d, b1 as translator$e, b2 as commentRangeEndTranslator, b3 as commentRangeStartTranslator, b4 as translator$f, b5 as translator$g, b6 as translator$h, b7 as translator$i, b8 as translator$j, b9 as translator$k, ba as translator$l, bb as translator$m, bc as translator$n, bd as translator$o, be as translator$p, bf as translator$q, bg as translator$r, bh as translator$s, bi as translator$t, bj as translator$u, bk as translator$v, bl as translator$w, bm as translator$x, bn as translator$y, bo as translator$z, bp as translator$A, bq as translator$B, br as translator$C, bs as translator$D, bt as translator$E, bu as translator$F, bv as translator$G, bw as translator$H, bx as translator$I, by as translator$J, bz as translator$K, bA as translator$L, bB as translator$M, bC as translator$N, bD as translator$O, bE as translator$P, bF as translator$Q, bG as translator$R, bH as translator$S, bI as translator$T, bJ as translator$U, bK as translator$V, bL as translator$W, bM as translator$X, bN as translator$Y, bO as translator$Z, bP as translator$_, bQ as translator$$, bR as translator$10, bS as translator$11, bT as translator$12, bU as translator$13, bV as translator$14, bW as translator$15, bX as translator$16, bY as translator$17, bZ as translator$18, b_ as translator$19, b$ as translator$1a, c0 as translator$1b, c1 as translator$1c, c2 as translator$1d, c3 as translator$1e, c4 as translator$1f, c5 as translator$1g, c6 as translator$1h, c7 as translator$1i, c8 as translator$1j, P as PluginKey, a as Plugin } from "./chunks/converter-B9YfBdcc.js";
13
- import { ac, i, a9 } from "./chunks/converter-B9YfBdcc.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 shouldBypassContextMenu, S as SlashMenuPluginKey, m as measureCache, n as isHeadless, E as Editor, o as getStarterExtensions, P as PresentationEditor, p as Placeholder, q as getRichTextExtensions, D as DecorationSet, t as Decoration, M as Mark, v as Extension, A as Attribute, N as Node } from "./chunks/editor-DlvlVSbc.js";
15
- import { z, F, B, T, w, C, x } from "./chunks/editor-DlvlVSbc.js";
12
+ import { aJ as getDefaultExportFromCjs, a0 as v4, T as TextSelection$1, v as getMarkRange, aM as vClickOutside, aN as getActiveFormatting, aC as isInTable, U as findParentNode, aq as calculateResolvedParagraphProperties, a7 as twipsToLines, V as isList, al as parseSizeUnit, a8 as pixelsToTwips, aO as getFileObject, aP as translator, aQ as translator$1, aR as translator$2, aS as translator$3, aT as translator$4, aU as translator$5, aV as translator$6, aW as translator$7, aX as translator$8, aY as translator$9, aZ as translator$a, a_ as translator$b, a$ as translator$c, b0 as translator$d, b1 as translator$e, b2 as commentRangeEndTranslator, b3 as commentRangeStartTranslator, b4 as translator$f, b5 as translator$g, b6 as translator$h, b7 as translator$i, b8 as translator$j, b9 as translator$k, ba as translator$l, bb as translator$m, bc as translator$n, bd as translator$o, be as translator$p, bf as translator$q, bg as translator$r, bh as translator$s, bi as translator$t, bj as translator$u, bk as translator$v, bl as translator$w, bm as translator$x, bn as translator$y, bo as translator$z, bp as translator$A, bq as translator$B, br as translator$C, bs as translator$D, bt as translator$E, bu as translator$F, bv as translator$G, bw as translator$H, bx as translator$I, by as translator$J, bz as translator$K, bA as translator$L, bB as translator$M, bC as translator$N, bD as translator$O, bE as translator$P, bF as translator$Q, bG as translator$R, bH as translator$S, bI as translator$T, bJ as translator$U, bK as translator$V, bL as translator$W, bM as translator$X, bN as translator$Y, bO as translator$Z, bP as translator$_, bQ as translator$$, bR as translator$10, bS as translator$11, bT as translator$12, bU as translator$13, bV as translator$14, bW as translator$15, bX as translator$16, bY as translator$17, bZ as translator$18, b_ as translator$19, b$ as translator$1a, c0 as translator$1b, c1 as translator$1c, c2 as translator$1d, c3 as translator$1e, c4 as translator$1f, c5 as translator$1g, c6 as translator$1h, c7 as translator$1i, c8 as translator$1j, P as PluginKey, a as Plugin } from "./chunks/converter-ZJiSHoiq.js";
13
+ import { ac, i, a9 } from "./chunks/converter-ZJiSHoiq.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 shouldBypassContextMenu, S as SlashMenuPluginKey, m as measureCache, n as isHeadless, E as Editor, o as getStarterExtensions, P as PresentationEditor, p as Placeholder, q as getRichTextExtensions, D as DecorationSet, t as Decoration, M as Mark, v as Extension, A as Attribute, N as Node } from "./chunks/editor-DvepAjbe.js";
15
+ import { z, F, B, T, w, C, x } from "./chunks/editor-DvepAjbe.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, shallowRef, createBlock, 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-cNDvtryE.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-CKXXbIQO.js";
18
18
  import AIWriter from "./ai-writer.es.js";
19
- import { D } from "./chunks/docx-zipper-V16OzZ7a.js";
19
+ import { D } from "./chunks/docx-zipper-B7FStorN.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-cNDvtryE.js";
3
- import "./chunks/editor-DlvlVSbc.js";
2
+ import { T } from "./chunks/toolbar-CKXXbIQO.js";
3
+ import "./chunks/editor-DvepAjbe.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-CDiTp9Fe.cjs");
3
+ const superEditor_es = require("./chunks/super-editor.es-C06-V-Iy.cjs");
4
4
  require("./chunks/vue-ARQSyfaw.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-BRKZG90h.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-CtCHBIPE.es.js";
2
2
  import "./chunks/vue-CztqUvm1.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-CDiTp9Fe.cjs");
4
- const superdoc = require("./chunks/index-Dp3rVMnX.cjs");
3
+ const superEditor_es = require("./chunks/super-editor.es-C06-V-Iy.cjs");
4
+ const superdoc = require("./chunks/index-BW38mdZF.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;
@@ -1,5 +1,5 @@
1
- import { a, E, b, S, d, i, j, n, r, p, q } from "./chunks/super-editor.es-BRKZG90h.es.js";
2
- import { D, H, P, S as S2, m, l } from "./chunks/index-DukSDI8_.es.js";
1
+ import { a, E, b, S, d, i, j, n, r, p, q } from "./chunks/super-editor.es-CtCHBIPE.es.js";
2
+ import { D, H, P, S as S2, m, l } from "./chunks/index-DIccWgYh.es.js";
3
3
  import { B } from "./chunks/blank-docx-ABm6XYAA.es.js";
4
4
  export {
5
5
  a as AnnotatorHelpers,