@stll/folio-core 0.15.1 → 0.15.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/dist/ai-edits/apply.js +2 -2
  2. package/dist/ai-edits/blockRange.js +1 -1
  3. package/dist/ai-edits/headless.js +9 -9
  4. package/dist/ai-edits/index.js +5 -5
  5. package/dist/ai-edits/read.js +1 -1
  6. package/dist/ai-edits/table-cell-mutations.js +2 -2
  7. package/dist/compat/eigenpal.js +19 -19
  8. package/dist/content-controls/mutateContentControls.js +1 -1
  9. package/dist/controller/contentControlWidgetController.js +1 -1
  10. package/dist/controller/headerFooterEditorManager.js +5 -5
  11. package/dist/controller/hiddenEditorManager.js +5 -5
  12. package/dist/controller/layoutPipeline.js +10 -10
  13. package/dist/controller/noteEditorManager.js +5 -5
  14. package/dist/docx/blockContentParser.js +4 -4
  15. package/dist/docx/commentParser.js +30 -2
  16. package/dist/docx/documentParser.js +27 -3
  17. package/dist/docx/drawingIdNormalization.d.ts +5 -0
  18. package/dist/docx/drawingIdNormalization.js +35 -0
  19. package/dist/docx/drawingUtils.d.ts +1 -1
  20. package/dist/docx/drawingUtils.js +111 -27
  21. package/dist/docx/encryption/agileDecryption.js +1 -1
  22. package/dist/docx/encryption/encryptionInfo.js +1 -1
  23. package/dist/docx/encryption/index.js +1 -1
  24. package/dist/docx/encryption/openEncryptedDocx.js +3 -3
  25. package/dist/docx/fieldParser.js +1 -1
  26. package/dist/docx/footnoteParser.js +2 -2
  27. package/dist/docx/groupDrawingParser.js +1 -1
  28. package/dist/docx/headerFooterParser.js +3 -3
  29. package/dist/docx/headerFooterVerbatim.d.ts +2 -1
  30. package/dist/docx/headerFooterVerbatim.js +6 -1
  31. package/dist/docx/hyperlinkParser.js +1 -1
  32. package/dist/docx/imageParser.js +3 -3
  33. package/dist/docx/index.js +1 -1
  34. package/dist/docx/paragraphParser.js +8 -5
  35. package/dist/docx/paragraphTextBoxEnrichment.js +4 -4
  36. package/dist/docx/paragraphTraversal.d.ts +5 -3
  37. package/dist/docx/paragraphTraversal.js +20 -13
  38. package/dist/docx/parser.js +17 -7
  39. package/dist/docx/parserEnums.d.ts +4 -1
  40. package/dist/docx/parserEnums.js +5 -2
  41. package/dist/docx/rezip.js +9 -9
  42. package/dist/docx/runConsolidator.js +0 -1
  43. package/dist/docx/runParser.js +22 -6
  44. package/dist/docx/sectionParser.js +2 -2
  45. package/dist/docx/selectiveSave.js +7 -7
  46. package/dist/docx/serializer/commentSerializer.js +13 -8
  47. package/dist/docx/serializer/documentSerializer.js +7 -3
  48. package/dist/docx/serializer/headerFooterSerializer.js +3 -3
  49. package/dist/docx/serializer/noteSerializer.js +2 -2
  50. package/dist/docx/serializer/numberingSerializer.js +1 -1
  51. package/dist/docx/serializer/paragraphSerializer.js +2 -2
  52. package/dist/docx/serializer/runSerializer.js +19 -13
  53. package/dist/docx/serializer/sectionPropertiesSerializer.js +4 -3
  54. package/dist/docx/serializer/stylesSerializer.js +3 -3
  55. package/dist/docx/serializer/tableSerializer.js +1 -1
  56. package/dist/docx/server/docxToMarkdown.js +1 -1
  57. package/dist/docx/server/evaluateDocxXmlPatchProposal.js +1 -1
  58. package/dist/docx/server/extractDocxText.js +1 -1
  59. package/dist/docx/server/validateDocxConformance.js +3 -3
  60. package/dist/docx/shapeParser.js +5 -113
  61. package/dist/docx/styleParser.js +3 -3
  62. package/dist/docx/tableParser.js +11 -9
  63. package/dist/docx/textBoxParser.js +2 -2
  64. package/dist/docx/vmlImageParser.js +2 -2
  65. package/dist/fonts/embeddedFonts.js +2 -2
  66. package/dist/index.js +18 -18
  67. package/dist/layout-bridge/convert/footnoteLayout.js +2 -2
  68. package/dist/layout-bridge/convert/headerFooterLayout.js +2 -2
  69. package/dist/layout-bridge/convert/paragraphFrames.js +2 -2
  70. package/dist/layout-bridge/convert/toFlowBlocks.js +10 -10
  71. package/dist/layout-bridge/engine/clickToPosition.js +2 -2
  72. package/dist/layout-bridge/engine/hitTest.js +1 -1
  73. package/dist/layout-bridge/engine/measuring/index.js +6 -6
  74. package/dist/layout-bridge/engine/selectionRects.js +5 -5
  75. package/dist/layout-engine/index.js +6 -6
  76. package/dist/layout-engine/measure/cache.js +2 -2
  77. package/dist/layout-engine/measure/index.js +6 -6
  78. package/dist/layout-engine/measure/lineBreaks.js +1 -1
  79. package/dist/layout-engine/measure/listMarkerWidth.js +1 -1
  80. package/dist/layout-engine/measure/measureBlocks.js +7 -7
  81. package/dist/layout-engine/measure/measureContainer.js +3 -3
  82. package/dist/layout-engine/measure/measureHelpers.js +1 -1
  83. package/dist/layout-engine/measure/measureParagraph.js +7 -7
  84. package/dist/layout-engine/measure/tableCellFlow.js +1 -1
  85. package/dist/layout-engine/paginator.js +1 -1
  86. package/dist/layout-engine/tableRowBreak.js +2 -2
  87. package/dist/layout-painter/index.js +5 -5
  88. package/dist/layout-painter/registry/modules/textBox.js +1 -1
  89. package/dist/layout-painter/renderImage.js +1 -1
  90. package/dist/layout-painter/renderPage.js +7 -7
  91. package/dist/layout-painter/renderParagraph.js +13 -13
  92. package/dist/layout-painter/renderTable.js +6 -6
  93. package/dist/layout-painter/renderTextBox.js +1 -1
  94. package/dist/managers/DocumentLoaderManager.js +3 -3
  95. package/dist/managers/TableSelectionManager.js +1 -1
  96. package/dist/managers/editorShortcuts.js +1 -1
  97. package/dist/markdown/fromMarkdown.js +1 -1
  98. package/dist/markdown/index.js +1 -1
  99. package/dist/markdown/renderRuns.js +1 -1
  100. package/dist/markdown/renderTable.js +1 -1
  101. package/dist/model.d.ts +3 -3
  102. package/dist/model.js +3 -3
  103. package/dist/prosemirror/attrs/index.d.ts +4 -2
  104. package/dist/prosemirror/attrs/index.js +17 -2
  105. package/dist/prosemirror/commands/comments.js +3 -3
  106. package/dist/prosemirror/commands/contentControls.js +1 -1
  107. package/dist/prosemirror/commands/contentControlsBlockFill.js +1 -1
  108. package/dist/prosemirror/commands/formatting.js +1 -1
  109. package/dist/prosemirror/commands/hyperlink.js +1 -1
  110. package/dist/prosemirror/commands/image.js +2 -2
  111. package/dist/prosemirror/commands/index.js +6 -6
  112. package/dist/prosemirror/commands/propertyChangeScope.js +1 -1
  113. package/dist/prosemirror/commands/tableCellMergeResolution.js +1 -1
  114. package/dist/prosemirror/commentOps.js +1 -1
  115. package/dist/prosemirror/conversion/fromProseDoc.js +13 -9
  116. package/dist/prosemirror/conversion/index.js +1 -1
  117. package/dist/prosemirror/conversion/toProseDoc.js +9 -9
  118. package/dist/prosemirror/extensions/StarterKit.js +4 -4
  119. package/dist/prosemirror/extensions/core/ParagraphExtension.js +4 -4
  120. package/dist/prosemirror/extensions/features/AutoBidiDetectionExtension.js +2 -2
  121. package/dist/prosemirror/extensions/features/BaseKeymapExtension.js +3 -3
  122. package/dist/prosemirror/extensions/features/BidiShortcutExtension.js +2 -2
  123. package/dist/prosemirror/extensions/features/ContentControlWidgetsExtension.js +1 -1
  124. package/dist/prosemirror/extensions/features/ImagePasteExtension.js +2 -2
  125. package/dist/prosemirror/extensions/features/ListExtension.js +3 -3
  126. package/dist/prosemirror/extensions/features/ParaIdAllocatorExtension.js +1 -1
  127. package/dist/prosemirror/extensions/features/PasteCleanupExtension.js +2 -2
  128. package/dist/prosemirror/extensions/features/PasteStyleInlinerExtension.js +1 -1
  129. package/dist/prosemirror/extensions/features/SelectionTrackerExtension.js +1 -1
  130. package/dist/prosemirror/extensions/marks/CharacterSpacingExtension.js +1 -1
  131. package/dist/prosemirror/extensions/marks/HighlightExtension.js +1 -1
  132. package/dist/prosemirror/extensions/marks/HyperlinkExtension.js +1 -1
  133. package/dist/prosemirror/extensions/marks/RunShadingExtension.js +1 -1
  134. package/dist/prosemirror/extensions/marks/TextColorExtension.js +1 -1
  135. package/dist/prosemirror/extensions/marks/TrackedChangeExtensions.js +1 -1
  136. package/dist/prosemirror/extensions/nodes/FieldExtension.js +1 -1
  137. package/dist/prosemirror/extensions/nodes/TabExtension.js +32 -9
  138. package/dist/prosemirror/extensions/nodes/TableExtension.js +1 -1
  139. package/dist/prosemirror/index.js +15 -15
  140. package/dist/prosemirror/insertOperations.js +3 -3
  141. package/dist/prosemirror/plugins/templateDirectives.js +1 -1
  142. package/dist/prosemirror/schema/index.d.ts +2 -2
  143. package/dist/prosemirror/schema/nodes.d.ts +4 -1
  144. package/dist/prosemirror/styles/styleResolver.js +1 -1
  145. package/dist/prosemirror/validation.js +5 -3
  146. package/dist/redline.js +1 -1
  147. package/dist/render-dom/BodySelectionOverlay.js +2 -2
  148. package/dist/server.js +15 -15
  149. package/dist/style-sets/extract.js +1 -1
  150. package/dist/types/content.d.ts +2 -2
  151. package/dist/types/documentEnumValues.d.ts +4 -1
  152. package/dist/types/documentEnumValues.js +14 -1
  153. package/dist/types/index.d.ts +2 -1
  154. package/dist/utils/formatToStyle.js +1 -1
  155. package/dist/version-comparison.js +2 -2
  156. package/package.json +2 -2
package/dist/index.js CHANGED
@@ -1,31 +1,31 @@
1
- import { getGoogleFontsEnabled, setEmbeddedFontFamilyMap, setGoogleFontsEnabled } from "./utils/fontResolver.js";
2
- import { deriveBlockId, getFolioParaIdFromBlockId, isFolioBlockId, isSequentialFolioBlockId } from "./types/block-id.js";
1
+ import { applyFolioAIEditOperations } from "./ai-edits/apply.js";
3
2
  import { createFolioAIEditSnapshot, hashFolioAIBlockText, normalizeFolioAIBlockText } from "./ai-edits/snapshot.js";
4
3
  import { diffWordSegments } from "./ai-edits/word-diff.js";
5
- import { applyFolioAIEditOperations } from "./ai-edits/apply.js";
4
+ import { applySuggestions } from "./ai-suggestions/apply.js";
5
+ import { isSuggestionStale, resolveSuggestionAnchor } from "./ai-suggestions/conflict.js";
6
+ import { buildPositionalText } from "./ai-suggestions/text-positions.js";
7
+ import { DEFAULT_AI_SUGGESTION_PRESETS } from "./ai-suggestions/types.js";
6
8
  import { FOLIO_DOCUMENT_OPERATION_BATCH_MODES, FOLIO_DOCUMENT_OPERATION_CONTRACT_VERSION, FOLIO_DOCUMENT_OPERATION_MODES, FOLIO_DOCUMENT_OPERATION_MODES_BY_TYPE, FOLIO_DOCUMENT_OPERATION_PRECONDITIONS, FOLIO_DOCUMENT_OPERATION_STORIES, FOLIO_DOCUMENT_OPERATION_TYPES, InvalidFolioDocumentOperationBatchError, UnsupportedFolioDocumentOperationVersionError, applyFolioDocumentOperations, assertSupportedFolioDocumentOperationVersion, getFolioDocumentOperationCapabilities, getFolioDocumentOperationIssues, getFolioDocumentOperationReceipts, isFolioDocumentOperationModeSupported, isSupportedFolioDocumentOperationVersion, parseFolioDocumentOperationBatch } from "./document-operations.js";
7
- import { DOCUMENT_PRESET_VERSION, DOCUMENT_STYLE_SET_VERSION } from "./style-sets/types.js";
8
- import { createEmptyDocument } from "./utils/createDocument.js";
9
- import { mergeDocumentContent } from "./utils/mergeDocumentContent.js";
10
- import { extractDocumentStyleSet, extractDocumentStyleSetFromDocx, inspectDocumentStyles, inspectDocumentStylesFromDocx } from "./style-sets/extract.js";
11
- import { STELLA_STYLE_SET_NAME, createStellaStyleDocumentPreset, createStellaStyleSet } from "./style-sets/stellaStyle.js";
12
- import { createDocx } from "./docx/rezip.js";
13
9
  import { inspectDocxCompatibility } from "./docx/compatibility.js";
14
- import { DEFAULT_AI_SUGGESTION_PRESETS } from "./ai-suggestions/types.js";
15
- import { buildPositionalText } from "./ai-suggestions/text-positions.js";
16
- import { isSuggestionStale, resolveSuggestionAnchor } from "./ai-suggestions/conflict.js";
17
- import { applySuggestions } from "./ai-suggestions/apply.js";
18
- import { setAISuggestionsMeta, setFocusedSuggestionMeta } from "./prosemirror/plugins/aiSuggestionDecorations.js";
10
+ import { createDocx } from "./docx/rezip.js";
11
+ import { buildEmbeddedFontFamilyMap, extractEmbeddedFonts, getEmbeddedFontFaces, scopeEmbeddedFontFamily } from "./fonts/embeddedFonts.js";
12
+ import { fromMarkdown } from "./markdown/fromMarkdown.js";
13
+ import { toMarkdown, toMarkdownResult } from "./markdown/index.js";
19
14
  import { scrollFolioPositionIntoView } from "./paged-layout/scrollToPmPosition.js";
20
15
  import { getFolioCaretViewportRect, getFolioSelectionViewportRect } from "./paged-layout/selectionViewportRect.js";
21
16
  import { createAICitationDecorationsPlugin, setAICitationsMeta, setActiveCitationMeta } from "./prosemirror/plugins/aiCitationDecorations.js";
17
+ import { setAISuggestionsMeta, setFocusedSuggestionMeta } from "./prosemirror/plugins/aiSuggestionDecorations.js";
22
18
  import { anonymizationDecorationsKey, getAnonymizationMatches, setAnonymizationTermsMeta } from "./prosemirror/plugins/anonymizationDecorations.js";
19
+ import { DEFAULT_AUTOCOMPLETE_DEAD_ZONE_NODES, acceptAutocompleteSuggestion, acceptAutocompleteWord, appendAutocompleteToken, autocompleteSuggestionKey, autocompleteSuggestionPlugin, clearAutocompleteSuggestion, finishAutocompleteSuggestion, getAutocompleteSuggestion, shouldTriggerAutocomplete, startAutocompleteSuggestion } from "./prosemirror/plugins/autocompleteSuggestion.js";
23
20
  import { getTemplateDirectives, scanDirectives } from "./prosemirror/plugins/templateDirectives.js";
24
21
  import { setTemplatePreviewValues } from "./prosemirror/plugins/templatePreviewValues.js";
25
22
  import { clearTemplateSlashMenu, consumeTemplateSlashQuery, getTemplateSlashMenu, resetTemplateSlashQuery, templateSlashMenuKey } from "./prosemirror/plugins/templateSlashMenu.js";
26
- import { DEFAULT_AUTOCOMPLETE_DEAD_ZONE_NODES, acceptAutocompleteSuggestion, acceptAutocompleteWord, appendAutocompleteToken, autocompleteSuggestionKey, autocompleteSuggestionPlugin, clearAutocompleteSuggestion, finishAutocompleteSuggestion, getAutocompleteSuggestion, shouldTriggerAutocomplete, startAutocompleteSuggestion } from "./prosemirror/plugins/autocompleteSuggestion.js";
27
- import { fromMarkdown } from "./markdown/fromMarkdown.js";
28
- import { toMarkdown, toMarkdownResult } from "./markdown/index.js";
29
- import { buildEmbeddedFontFamilyMap, extractEmbeddedFonts, getEmbeddedFontFaces, scopeEmbeddedFontFamily } from "./fonts/embeddedFonts.js";
23
+ import { extractDocumentStyleSet, extractDocumentStyleSetFromDocx, inspectDocumentStyles, inspectDocumentStylesFromDocx } from "./style-sets/extract.js";
24
+ import { STELLA_STYLE_SET_NAME, createStellaStyleDocumentPreset, createStellaStyleSet } from "./style-sets/stellaStyle.js";
25
+ import { DOCUMENT_PRESET_VERSION, DOCUMENT_STYLE_SET_VERSION } from "./style-sets/types.js";
26
+ import { deriveBlockId, getFolioParaIdFromBlockId, isFolioBlockId, isSequentialFolioBlockId } from "./types/block-id.js";
27
+ import { createEmptyDocument } from "./utils/createDocument.js";
28
+ import { getGoogleFontsEnabled, setEmbeddedFontFamilyMap, setGoogleFontsEnabled } from "./utils/fontResolver.js";
29
+ import { mergeDocumentContent } from "./utils/mergeDocumentContent.js";
30
30
  import { DOCX_CONFORMANCE_CLASSES } from "@stll/docx-core/model";
31
31
  export { DEFAULT_AI_SUGGESTION_PRESETS, DEFAULT_AUTOCOMPLETE_DEAD_ZONE_NODES, DOCUMENT_PRESET_VERSION, DOCUMENT_STYLE_SET_VERSION, DOCX_CONFORMANCE_CLASSES, FOLIO_DOCUMENT_OPERATION_BATCH_MODES, FOLIO_DOCUMENT_OPERATION_CONTRACT_VERSION, FOLIO_DOCUMENT_OPERATION_MODES, FOLIO_DOCUMENT_OPERATION_MODES_BY_TYPE, FOLIO_DOCUMENT_OPERATION_PRECONDITIONS, FOLIO_DOCUMENT_OPERATION_STORIES, FOLIO_DOCUMENT_OPERATION_TYPES, InvalidFolioDocumentOperationBatchError, STELLA_STYLE_SET_NAME, UnsupportedFolioDocumentOperationVersionError, acceptAutocompleteSuggestion, acceptAutocompleteWord, anonymizationDecorationsKey, appendAutocompleteToken, applyFolioAIEditOperations, applyFolioDocumentOperations, applySuggestions, assertSupportedFolioDocumentOperationVersion, autocompleteSuggestionKey, autocompleteSuggestionPlugin, buildEmbeddedFontFamilyMap, buildPositionalText, clearAutocompleteSuggestion, clearTemplateSlashMenu, consumeTemplateSlashQuery, createAICitationDecorationsPlugin, createDocx, createEmptyDocument, createFolioAIEditSnapshot, createStellaStyleDocumentPreset, createStellaStyleSet, deriveBlockId, diffWordSegments, extractDocumentStyleSet, extractDocumentStyleSetFromDocx, extractEmbeddedFonts, finishAutocompleteSuggestion, fromMarkdown, getAnonymizationMatches, getAutocompleteSuggestion, getEmbeddedFontFaces, getFolioCaretViewportRect, getFolioDocumentOperationCapabilities, getFolioDocumentOperationIssues, getFolioDocumentOperationReceipts, getFolioParaIdFromBlockId, getFolioSelectionViewportRect, getGoogleFontsEnabled, getTemplateDirectives, getTemplateSlashMenu, hashFolioAIBlockText, inspectDocumentStyles, inspectDocumentStylesFromDocx, inspectDocxCompatibility, isFolioBlockId, isFolioDocumentOperationModeSupported, isSequentialFolioBlockId, isSuggestionStale, isSupportedFolioDocumentOperationVersion, mergeDocumentContent, normalizeFolioAIBlockText, parseFolioDocumentOperationBatch, resetTemplateSlashQuery, resolveSuggestionAnchor, scanDirectives, scopeEmbeddedFontFamily, scrollFolioPositionIntoView, setAICitationsMeta, setAISuggestionsMeta, setActiveCitationMeta, setAnonymizationTermsMeta, setEmbeddedFontFamilyMap, setFocusedSuggestionMeta, setGoogleFontsEnabled, setTemplatePreviewValues, shouldTriggerAutocomplete, startAutocompleteSuggestion, templateSlashMenuKey, toMarkdown, toMarkdownResult };
@@ -1,7 +1,7 @@
1
- import { footnoteToProseDoc } from "../../prosemirror/conversion/toProseDoc.js";
2
- import { DEFAULT_TEXTBOX_MARGINS, FOOTNOTE_ENTRY_MARGIN_BOTTOM, FOOTNOTE_FALLBACK_LINE_HEIGHT, FOOTNOTE_SEPARATOR_HEIGHT } from "../../layout-engine/types.js";
3
1
  import { measureParagraph } from "../../layout-engine/measure/measureParagraph.js";
4
2
  import { layoutTextBoxContent } from "../../layout-engine/measure/textBoxParagraphLayout.js";
3
+ import { DEFAULT_TEXTBOX_MARGINS, FOOTNOTE_ENTRY_MARGIN_BOTTOM, FOOTNOTE_FALLBACK_LINE_HEIGHT, FOOTNOTE_SEPARATOR_HEIGHT } from "../../layout-engine/types.js";
4
+ import { footnoteToProseDoc } from "../../prosemirror/conversion/toProseDoc.js";
5
5
  import { toFlowBlocks } from "./toFlowBlocks.js";
6
6
  //#region src/layout-bridge/convert/footnoteLayout.ts
7
7
  /** Default footnote font size in points */
@@ -1,6 +1,6 @@
1
- import { emuToPixels } from "../../utils/units.js";
2
- import { headerFooterToProseDoc } from "../../prosemirror/conversion/toProseDoc.js";
3
1
  import { isFloatingImageRun, isFloatingTextBoxBlock } from "../../layout-engine/types.js";
2
+ import { headerFooterToProseDoc } from "../../prosemirror/conversion/toProseDoc.js";
3
+ import { emuToPixels } from "../../utils/units.js";
4
4
  import { toFlowBlocks } from "./toFlowBlocks.js";
5
5
  //#region src/layout-bridge/convert/headerFooterLayout.ts
6
6
  function isAnchoredImageRun(run) {
@@ -1,6 +1,6 @@
1
- import { pixelsToEmu } from "../../utils/units.js";
2
- import { setTextBoxGroupId } from "../../layout-engine/textBoxGroup.js";
3
1
  import { getParagraphFrame, markParagraphFrameTextBox } from "../../layout-engine/paragraphFrame.js";
2
+ import { setTextBoxGroupId } from "../../layout-engine/textBoxGroup.js";
3
+ import { pixelsToEmu } from "../../utils/units.js";
4
4
  //#region src/layout-bridge/convert/paragraphFrames.ts
5
5
  const FRAME_PROPERTIES = [
6
6
  "width",
@@ -1,19 +1,19 @@
1
- import { NUMBER_FORMAT_VALUES } from "../../types/documentEnumValues.js";
2
- import { directionIsRtl } from "../../prosemirror/paragraphDirection.js";
3
- import { expectBlockSdtAttrs, expectCharacterSpacingMarkAttrs, expectCommentMarkAttrs, expectEmphasisMarkAttrs, expectFieldAttrs, expectFontFamilyMarkAttrs, expectFontSizeMarkAttrs, expectFootnoteRefMarkAttrs, expectHardBreakAttrs, expectHighlightMarkAttrs, expectHyperlinkMarkAttrs, expectImageAttrs, expectLanguageMarkAttrs, expectMathAttrs, expectParagraphAttrs, expectRunFormattingOverrideMarkAttrs, expectRunShadingMarkAttrs, expectTableAttrs, expectTableCellAttrs, expectTableRowAttrs, expectTextBoxAttrs, expectTextColorMarkAttrs, expectTextEffectMarkAttrs, expectTrackedChangeMarkAttrs, expectUnderlineMarkAttrs } from "../../prosemirror/attrs/index.js";
1
+ import { convertBulletToUnicode } from "../../docx/bulletMarkers.js";
2
+ import { resolveDocumentGridLinePitch } from "../../docx/documentGrid.js";
4
3
  import { padDecimal } from "../../docx/numberingParser.js";
5
- import { AUTO_PARAGRAPH_SPACING_PX, halfPointsToPixels, halfPointsToPoints, pointsToPixels } from "../../utils/units.js";
4
+ import { setParagraphFrame } from "../../layout-engine/paragraphFrame.js";
5
+ import { setTextBoxGroupId } from "../../layout-engine/textBoxGroup.js";
6
+ import { DEFAULT_TEXTBOX_MARGINS } from "../../layout-engine/types.js";
7
+ import { expectBlockSdtAttrs, expectCharacterSpacingMarkAttrs, expectCommentMarkAttrs, expectEmphasisMarkAttrs, expectFieldAttrs, expectFontFamilyMarkAttrs, expectFontSizeMarkAttrs, expectFootnoteRefMarkAttrs, expectHardBreakAttrs, expectHighlightMarkAttrs, expectHyperlinkMarkAttrs, expectImageAttrs, expectLanguageMarkAttrs, expectMathAttrs, expectParagraphAttrs, expectRunFormattingOverrideMarkAttrs, expectRunShadingMarkAttrs, expectTableAttrs, expectTableCellAttrs, expectTableRowAttrs, expectTextBoxAttrs, expectTextColorMarkAttrs, expectTextEffectMarkAttrs, expectTrackedChangeMarkAttrs, expectUnderlineMarkAttrs } from "../../prosemirror/attrs/index.js";
6
8
  import { autospacingMatchesBase } from "../../prosemirror/autospacingBase.js";
7
- import { assertValidProseMirrorDocument } from "../../prosemirror/validation.js";
8
9
  import { runShadingAttrsToShading } from "../../prosemirror/conversion/runShadingMark.js";
10
+ import { directionIsRtl } from "../../prosemirror/paragraphDirection.js";
11
+ import { assertValidProseMirrorDocument } from "../../prosemirror/validation.js";
12
+ import { NUMBER_FORMAT_VALUES } from "../../types/documentEnumValues.js";
9
13
  import { resolveColor, resolveHighlightToCss } from "../../utils/colorResolver.js";
10
14
  import { resolveThemeFont } from "../../utils/fontResolver.js";
11
15
  import { resolveShadingFill } from "../../utils/formatToStyle.js";
12
- import { convertBulletToUnicode } from "../../docx/bulletMarkers.js";
13
- import { DEFAULT_TEXTBOX_MARGINS } from "../../layout-engine/types.js";
14
- import { resolveDocumentGridLinePitch } from "../../docx/documentGrid.js";
15
- import { setTextBoxGroupId } from "../../layout-engine/textBoxGroup.js";
16
- import { setParagraphFrame } from "../../layout-engine/paragraphFrame.js";
16
+ import { AUTO_PARAGRAPH_SPACING_PX, halfPointsToPixels, halfPointsToPoints, pointsToPixels } from "../../utils/units.js";
17
17
  import { getColumns } from "../sectionColumns.js";
18
18
  import { groupParagraphFrames } from "./paragraphFrames.js";
19
19
  //#region src/layout-bridge/convert/toFlowBlocks.ts
@@ -1,7 +1,7 @@
1
- import { measureRun } from "../../layout-engine/measure/measureProvider.js";
1
+ import { measuredLineAdvance, measuredLineContentOffset } from "../../layout-engine/lineFlow.js";
2
2
  import { buildRunFontStyle, findCharacterAtX } from "../../layout-engine/measure/measureHelpers.js";
3
+ import { measureRun } from "../../layout-engine/measure/measureProvider.js";
3
4
  import { inlineImageBoundingBox } from "../../utils/rotationBoundingBox.js";
4
- import { measuredLineAdvance, measuredLineContentOffset } from "../../layout-engine/lineFlow.js";
5
5
  //#region src/layout-bridge/engine/clickToPosition.ts
6
6
  /**
7
7
  * Click-to-Position Mapping
@@ -1,6 +1,6 @@
1
+ import { getHeaderRowsHeight } from "../../layout-engine/index.js";
1
2
  import { measuredLineRangeHeight } from "../../layout-engine/lineFlow.js";
2
3
  import { getTableRowLeadingWidth } from "../../layout-engine/types.js";
3
- import { getHeaderRowsHeight } from "../../layout-engine/index.js";
4
4
  //#region src/layout-bridge/engine/hitTest.ts
5
5
  /**
6
6
  * Hit Testing Utilities
@@ -1,10 +1,10 @@
1
- import { getFontMetrics, measureRun, measureText, measureTextWidth } from "../../../layout-engine/measure/measureProvider.js";
2
- import { buildFontString, findCharacterAtX, getXForCharacter, halfPtToPx, ptToPx, pxToHalfPt, pxToPt, pxToTwips, twipsToPx } from "../../../layout-engine/measure/measureHelpers.js";
3
- import { defaultLineBreakProvider, getLineBreakProvider, getLineBreakProviderGeneration, resetLineBreakProvider, setLineBreakProvider } from "../../../layout-engine/measure/lineBreakProvider.js";
4
- import { clampFloatingWrapMargins } from "../../../layout-engine/measure/clampFloatingWrapMargins.js";
5
- import { getFloatingAvailableWidth, getFloatingMargins, rectsToFloatingZones } from "../../../layout-engine/measure/floatingZones.js";
6
- import { MIN_WRAP_SEGMENT_WIDTH, findClearLineY, getRunCharWidths, measureParagraph, measureParagraphs } from "../../../layout-engine/measure/measureParagraph.js";
7
1
  import { clearAllCaches, clearFontMetricsCache, clearParagraphMeasureCache, clearTextWidthCache, getCachedFontMetrics, getCachedParagraphMeasure, getCachedTextWidth, getFontCacheSize, getParagraphCacheSize, getTextCacheSize, getTotalCacheSize, hashParagraphBlock, setCachedFontMetrics, setCachedParagraphMeasure, setCachedTextWidth, setFontCacheSize, setParagraphCacheSize, setTextCacheSize } from "../../../layout-engine/measure/cache.js";
2
+ import { clampFloatingWrapMargins } from "../../../layout-engine/measure/clampFloatingWrapMargins.js";
8
3
  import { isWorkerFontMetricsEnabled, setFolioMeasurementFlags } from "../../../layout-engine/measure/featureFlags.js";
4
+ import { getFloatingAvailableWidth, getFloatingMargins, rectsToFloatingZones } from "../../../layout-engine/measure/floatingZones.js";
5
+ import { defaultLineBreakProvider, getLineBreakProvider, getLineBreakProviderGeneration, resetLineBreakProvider, setLineBreakProvider } from "../../../layout-engine/measure/lineBreakProvider.js";
9
6
  import { getCanvasContext, resetCanvasContext } from "../../../layout-engine/measure/measureContainer.js";
7
+ import { buildFontString, findCharacterAtX, getXForCharacter, halfPtToPx, ptToPx, pxToHalfPt, pxToPt, pxToTwips, twipsToPx } from "../../../layout-engine/measure/measureHelpers.js";
8
+ import { MIN_WRAP_SEGMENT_WIDTH, findClearLineY, getRunCharWidths, measureParagraph, measureParagraphs } from "../../../layout-engine/measure/measureParagraph.js";
9
+ import { getFontMetrics, measureRun, measureText, measureTextWidth } from "../../../layout-engine/measure/measureProvider.js";
10
10
  export { MIN_WRAP_SEGMENT_WIDTH, buildFontString, clampFloatingWrapMargins, clearAllCaches, clearFontMetricsCache, clearParagraphMeasureCache, clearTextWidthCache, defaultLineBreakProvider, findCharacterAtX, findClearLineY, getCachedFontMetrics, getCachedParagraphMeasure, getCachedTextWidth, getCanvasContext, getFloatingAvailableWidth, getFloatingMargins, getFontCacheSize, getFontMetrics, getLineBreakProvider, getLineBreakProviderGeneration, getParagraphCacheSize, getRunCharWidths, getTextCacheSize, getTotalCacheSize, getXForCharacter, halfPtToPx, hashParagraphBlock, isWorkerFontMetricsEnabled, measureParagraph, measureParagraphs, measureRun, measureText, measureTextWidth, ptToPx, pxToHalfPt, pxToPt, pxToTwips, rectsToFloatingZones, resetCanvasContext, resetLineBreakProvider, setCachedFontMetrics, setCachedParagraphMeasure, setCachedTextWidth, setFolioMeasurementFlags, setFontCacheSize, setLineBreakProvider, setParagraphCacheSize, setTextCacheSize, twipsToPx };
@@ -1,11 +1,11 @@
1
- import { measureRun } from "../../layout-engine/measure/measureProvider.js";
2
- import { buildRunFontStyle } from "../../layout-engine/measure/measureHelpers.js";
3
- import { inlineImageBoundingBox } from "../../utils/rotationBoundingBox.js";
1
+ import { getHeaderRowsHeight } from "../../layout-engine/index.js";
4
2
  import { measuredLineContentOffset } from "../../layout-engine/lineFlow.js";
5
- import { getTableRowLeadingWidth } from "../../layout-engine/types.js";
3
+ import { buildRunFontStyle } from "../../layout-engine/measure/measureHelpers.js";
6
4
  import { measureParagraph } from "../../layout-engine/measure/measureParagraph.js";
5
+ import { measureRun } from "../../layout-engine/measure/measureProvider.js";
7
6
  import { buildTableCellFloatingZones, getTableCellContentWidth, getTableCellFloatingImages } from "../../layout-engine/measure/tableCellFloating.js";
8
- import { getHeaderRowsHeight } from "../../layout-engine/index.js";
7
+ import { getTableRowLeadingWidth } from "../../layout-engine/types.js";
8
+ import { inlineImageBoundingBox } from "../../utils/rotationBoundingBox.js";
9
9
  import { getPageTop } from "./hitTest.js";
10
10
  //#region src/layout-bridge/engine/selectionRects.ts
11
11
  /**
@@ -1,17 +1,17 @@
1
1
  import { emuToPixels } from "../utils/units.js";
2
+ import { resolveSectionHeaderFooterRefs } from "./headerFooterRefs.js";
3
+ import { calculateChainHeight, computeKeepNextChains, getMidChainIndices, hasKeepLines, hasPageBreakBefore } from "./keep-together.js";
2
4
  import { measuredLineAdvance } from "./lineFlow.js";
3
- import { DEFAULT_TEXTBOX_MARGINS, DEFAULT_TEXTBOX_WIDTH, FOOTNOTE_ENTRY_MARGIN_BOTTOM, FOOTNOTE_FALLBACK_LINE_HEIGHT, FOOTNOTE_SEPARATOR_HEIGHT, floatingTextBoxReservesBand, floatingTextBoxWrapsText, getTableRowLeadingWidth, isFloatingImageRun, isFloatingTextBoxBlock, isTextWrappingFloatingImageRun, tableColumnsArePinned } from "./types.js";
4
5
  import { resolveFloatingTableX } from "./measure/floatingTablePosition.js";
5
- import { collapseParagraphSpacing, getParagraphSpacingAfter, getParagraphSpacingBefore, paragraphsShareStyle, resolveEffectiveParagraphSpacingTree } from "./paragraphSpacing.js";
6
- import { calculateChainHeight, computeKeepNextChains, getMidChainIndices, hasKeepLines, hasPageBreakBefore } from "./keep-together.js";
7
6
  import { createPaginator } from "./paginator.js";
8
7
  import { getParagraphFragmentPmRange } from "./paragraphFragmentRange.js";
8
+ import { collapseParagraphSpacing, getParagraphSpacingAfter, getParagraphSpacingBefore, paragraphsShareStyle, resolveEffectiveParagraphSpacingTree } from "./paragraphSpacing.js";
9
+ import { assertExhaustiveFlowBlock, findPageIndexContainingPmPos } from "./pmPageIndex.js";
9
10
  import { INITIAL_RENDERED_BREAK_STATE, reconcileAfterBlock, reconcileBreakBeforeBlock, recordReflowBoundary } from "./renderedBreakReconciliation.js";
11
+ import { applyPendingToActive, createInitialSectionState, getEffectiveColumns, getEffectiveMargins, getEffectivePageSize, scheduleSectionBreak } from "./section-breaks.js";
10
12
  import { buildTableRowBreakInfo, getRowContinuationSkip, snapRowBreak } from "./tableRowBreak.js";
11
13
  import { bandFragmentX, bandTopContentY, isPageFrameRelativeAnchor } from "./textBoxFlow.js";
12
- import { resolveSectionHeaderFooterRefs } from "./headerFooterRefs.js";
13
- import { applyPendingToActive, createInitialSectionState, getEffectiveColumns, getEffectiveMargins, getEffectivePageSize, scheduleSectionBreak } from "./section-breaks.js";
14
- import { assertExhaustiveFlowBlock, findPageIndexContainingPmPos } from "./pmPageIndex.js";
14
+ import { DEFAULT_TEXTBOX_MARGINS, DEFAULT_TEXTBOX_WIDTH, FOOTNOTE_ENTRY_MARGIN_BOTTOM, FOOTNOTE_FALLBACK_LINE_HEIGHT, FOOTNOTE_SEPARATOR_HEIGHT, floatingTextBoxReservesBand, floatingTextBoxWrapsText, getTableRowLeadingWidth, isFloatingImageRun, isFloatingTextBoxBlock, isTextWrappingFloatingImageRun, tableColumnsArePinned } from "./types.js";
15
15
  import { panic } from "better-result";
16
16
  //#region src/layout-engine/index.ts
17
17
  /**
@@ -1,6 +1,6 @@
1
- import { clearFontResolvedCache } from "./measureHelpers.js";
2
- import { getLineBreakProviderGeneration } from "./lineBreakProvider.js";
3
1
  import { lineBreakPolicyCacheParts } from "./effectiveLineBreakPolicy.js";
2
+ import { getLineBreakProviderGeneration } from "./lineBreakProvider.js";
3
+ import { clearFontResolvedCache } from "./measureHelpers.js";
4
4
  //#region src/layout-engine/measure/cache.ts
5
5
  /**
6
6
  * Default max entries for text width cache
@@ -1,10 +1,10 @@
1
- import { getFontMetrics, getMeasureProvider, measureRun, measureText, measureTextWidth, resetMeasureProvider, setMeasureProvider } from "./measureProvider.js";
2
- import { buildFontString, findCharacterAtX, getXForCharacter, halfPtToPx, ptToPx, pxToHalfPt, pxToPt, pxToTwips, twipsToPx } from "./measureHelpers.js";
3
- import { defaultLineBreakProvider, getLineBreakProvider, getLineBreakProviderGeneration, resetLineBreakProvider, setLineBreakProvider } from "./lineBreakProvider.js";
1
+ import { clearAllCaches, clearFontMetricsCache, clearParagraphMeasureCache, clearTextWidthCache, getCachedFontMetrics, getCachedParagraphMeasure, getCachedTextWidth, getFontCacheSize, getParagraphCacheSize, getTextCacheSize, getTotalCacheSize, hashParagraphBlock, setCachedFontMetrics, setCachedParagraphMeasure, setCachedTextWidth, setFontCacheSize, setParagraphCacheSize, setTextCacheSize } from "./cache.js";
4
2
  import { clampFloatingWrapMargins } from "./clampFloatingWrapMargins.js";
3
+ import { isWorkerFontMetricsEnabled, setFolioMeasurementFlags } from "./featureFlags.js";
4
+ import { resolveFloatingTableX } from "./floatingTablePosition.js";
5
5
  import { getFloatingAvailableWidth, getFloatingMargins, rectsToFloatingZones } from "./floatingZones.js";
6
+ import { defaultLineBreakProvider, getLineBreakProvider, getLineBreakProviderGeneration, resetLineBreakProvider, setLineBreakProvider } from "./lineBreakProvider.js";
7
+ import { buildFontString, findCharacterAtX, getXForCharacter, halfPtToPx, ptToPx, pxToHalfPt, pxToPt, pxToTwips, twipsToPx } from "./measureHelpers.js";
6
8
  import { getRunCharWidths, measureParagraph, measureParagraphs } from "./measureParagraph.js";
7
- import { resolveFloatingTableX } from "./floatingTablePosition.js";
8
- import { clearAllCaches, clearFontMetricsCache, clearParagraphMeasureCache, clearTextWidthCache, getCachedFontMetrics, getCachedParagraphMeasure, getCachedTextWidth, getFontCacheSize, getParagraphCacheSize, getTextCacheSize, getTotalCacheSize, hashParagraphBlock, setCachedFontMetrics, setCachedParagraphMeasure, setCachedTextWidth, setFontCacheSize, setParagraphCacheSize, setTextCacheSize } from "./cache.js";
9
- import { isWorkerFontMetricsEnabled, setFolioMeasurementFlags } from "./featureFlags.js";
9
+ import { getFontMetrics, getMeasureProvider, measureRun, measureText, measureTextWidth, resetMeasureProvider, setMeasureProvider } from "./measureProvider.js";
10
10
  export { buildFontString, clampFloatingWrapMargins, clearAllCaches, clearFontMetricsCache, clearParagraphMeasureCache, clearTextWidthCache, defaultLineBreakProvider, findCharacterAtX, getCachedFontMetrics, getCachedParagraphMeasure, getCachedTextWidth, getFloatingAvailableWidth, getFloatingMargins, getFontCacheSize, getFontMetrics, getLineBreakProvider, getLineBreakProviderGeneration, getMeasureProvider, getParagraphCacheSize, getRunCharWidths, getTextCacheSize, getTotalCacheSize, getXForCharacter, halfPtToPx, hashParagraphBlock, isWorkerFontMetricsEnabled, measureParagraph, measureParagraphs, measureRun, measureText, measureTextWidth, ptToPx, pxToHalfPt, pxToPt, pxToTwips, rectsToFloatingZones, resetLineBreakProvider, resetMeasureProvider, resolveFloatingTableX, setCachedFontMetrics, setCachedParagraphMeasure, setCachedTextWidth, setFolioMeasurementFlags, setFontCacheSize, setLineBreakProvider, setMeasureProvider, setParagraphCacheSize, setTextCacheSize, twipsToPx };
@@ -1,5 +1,5 @@
1
- import { defaultLineBreakProvider, getLineBreakProvider } from "./lineBreakProvider.js";
2
1
  import { isCjkCodePoint } from "../../utils/scriptSegments.js";
2
+ import { defaultLineBreakProvider, getLineBreakProvider } from "./lineBreakProvider.js";
3
3
  //#region src/layout-engine/measure/lineBreaks.ts
4
4
  /**
5
5
  * Indices in `text` where a line may end. Latin text breaks after
@@ -1,5 +1,5 @@
1
- import { measureTextWidth } from "./measureProvider.js";
2
1
  import { ptToPx } from "./measureHelpers.js";
2
+ import { measureTextWidth } from "./measureProvider.js";
3
3
  //#region src/layout-engine/measure/listMarkerWidth.ts
4
4
  const DEFAULT_FONT_FAMILY = "Calibri";
5
5
  const DEFAULT_FONT_SIZE = 11;
@@ -1,14 +1,14 @@
1
+ import { recordMeasureBlock, recordMeasureBlockError } from "../layoutInstrumentation.js";
2
+ import { isParagraphFrameTextBox } from "../paragraphFrame.js";
3
+ import { bandFragmentX, bandTopContentY, isPageFrameRelativeAnchor } from "../textBoxFlow.js";
4
+ import { getTextBoxGroupId } from "../textBoxGroup.js";
1
5
  import { DEFAULT_TEXTBOX_MARGINS, floatingTextBoxReservesBand, floatingTextBoxWrapsText, tableColumnsArePinned } from "../types.js";
2
- import { findClearLineY, measureParagraph } from "./measureParagraph.js";
3
- import { resolveFloatingTableX } from "./floatingTablePosition.js";
4
6
  import { getCachedParagraphMeasure, setCachedParagraphMeasure } from "./cache.js";
7
+ import { resolveFloatingTableX } from "./floatingTablePosition.js";
8
+ import { findClearLineY, measureParagraph } from "./measureParagraph.js";
5
9
  import { createTableCellFlowState, finishTableCellFlow, placeTableCellBlock } from "./tableCellFlow.js";
6
- import { layoutTextBoxContent } from "./textBoxParagraphLayout.js";
7
- import { getTextBoxGroupId } from "../textBoxGroup.js";
8
- import { isParagraphFrameTextBox } from "../paragraphFrame.js";
9
- import { recordMeasureBlock, recordMeasureBlockError } from "../layoutInstrumentation.js";
10
- import { bandFragmentX, bandTopContentY, isPageFrameRelativeAnchor } from "../textBoxFlow.js";
11
10
  import { buildTableCellGrid, getFirstAvailableColumn, getTableCellVerticalBorderHeight } from "./tableCellGrid.js";
11
+ import { layoutTextBoxContent } from "./textBoxParagraphLayout.js";
12
12
  //#region src/layout-engine/measure/measureBlocks.ts
13
13
  /**
14
14
  * Pseudo-infinite measurement width (px) used for `w:noWrap` table cells so
@@ -1,10 +1,10 @@
1
- import { getFontKerningMode } from "./textMeasurementPolicy.js";
2
- import { setMeasureProvider } from "./measureProvider.js";
3
- import { buildFontString, getResolvedData, ptToPx } from "./measureHelpers.js";
4
1
  import { hasCjk, isCjkCodePoint, segmentByScript } from "../../utils/scriptSegments.js";
5
2
  import { getCachedFontMetrics, getCachedTextWidth, getTextWidthCacheGeneration, setCachedFontMetrics, setCachedTextWidth } from "./cache.js";
3
+ import { buildFontString, getResolvedData, ptToPx } from "./measureHelpers.js";
4
+ import { setMeasureProvider } from "./measureProvider.js";
6
5
  import { canPrefetchMeasurement, prefetchMeasurement } from "./measureWorker.js";
7
6
  import { WORKER_FONT_FINGERPRINT_TEXT, countCodePoints } from "./measureWorkerProtocol.js";
7
+ import { getFontKerningMode } from "./textMeasurementPolicy.js";
8
8
  import { panic } from "better-result";
9
9
  //#region src/layout-engine/measure/measureContainer.ts
10
10
  /**
@@ -1,6 +1,6 @@
1
1
  import { resolveFontFamily } from "../../utils/fontResolver.js";
2
- import { FONT_KERNING_MODE, getRunFontKerningMode } from "./textMeasurementPolicy.js";
3
2
  import "../../utils/fontWeights.js";
3
+ import { FONT_KERNING_MODE, getRunFontKerningMode } from "./textMeasurementPolicy.js";
4
4
  //#region src/layout-engine/measure/measureHelpers.ts
5
5
  /**
6
6
  * Pure measurement helpers — no canvas, no DOM, no worker.
@@ -1,18 +1,18 @@
1
- import { CJK_FALLBACK_FONT_FAMILY, isCjkFont } from "../../utils/fontResolver.js";
2
- import { countCompressibleSpaces } from "./textMeasurementPolicy.js";
3
- import { getFontMetrics, measureRun, measureTextWidth } from "./measureProvider.js";
4
- import { buildRunFontStyle, ptToPx, twipsToPx } from "./measureHelpers.js";
5
- import { defaultLineBreakProvider, getLineBreakProvider } from "./lineBreakProvider.js";
6
1
  import { calculateTabWidth, pixelsToTwips } from "../../prosemirror/utils/tabCalculator.js";
2
+ import { CJK_FALLBACK_FONT_FAMILY, isCjkFont } from "../../utils/fontResolver.js";
7
3
  import { inlineImageBoundingBox } from "../../utils/rotationBoundingBox.js";
8
4
  import { hasCjk } from "../../utils/scriptSegments.js";
9
5
  import { measuredLineAdvance } from "../lineFlow.js";
10
6
  import { isFloatingImageRun } from "../types.js";
11
- import { resolveEffectiveLineBreakPolicy } from "./effectiveLineBreakPolicy.js";
12
7
  import { clampFloatingWrapMargins } from "./clampFloatingWrapMargins.js";
8
+ import { resolveEffectiveLineBreakPolicy } from "./effectiveLineBreakPolicy.js";
13
9
  import { getFloatingAvailableWidth, getFloatingMargins } from "./floatingZones.js";
14
- import { getListMarkerInlineWidth } from "./listMarkerWidth.js";
10
+ import { defaultLineBreakProvider, getLineBreakProvider } from "./lineBreakProvider.js";
15
11
  import { findGraphemeBreaks, findHyphenationBreaks, findWordBreaks, isBreakChar, isHangingPunctuation } from "./lineBreaks.js";
12
+ import { getListMarkerInlineWidth } from "./listMarkerWidth.js";
13
+ import { buildRunFontStyle, ptToPx, twipsToPx } from "./measureHelpers.js";
14
+ import { getFontMetrics, measureRun, measureTextWidth } from "./measureProvider.js";
15
+ import { countCompressibleSpaces } from "./textMeasurementPolicy.js";
16
16
  //#region src/layout-engine/measure/measureParagraph.ts
17
17
  /**
18
18
  * Paragraph measurement module
@@ -1,6 +1,6 @@
1
1
  import { measuredLineRangeHeight } from "../lineFlow.js";
2
- import { isFloatingTextBoxBlock } from "../types.js";
3
2
  import { collapseParagraphSpacing, getParagraphSpacingAfter, getParagraphSpacingBefore, isEmptyParagraph } from "../paragraphSpacing.js";
3
+ import { isFloatingTextBoxBlock } from "../types.js";
4
4
  //#region src/layout-engine/measure/tableCellFlow.ts
5
5
  const createTableCellFlowState = () => ({
6
6
  height: 0,
@@ -1,5 +1,5 @@
1
- import { FOOTNOTE_SEPARATOR_HEIGHT } from "./types.js";
2
1
  import { collapseParagraphSpacing } from "./paragraphSpacing.js";
2
+ import { FOOTNOTE_SEPARATOR_HEIGHT } from "./types.js";
3
3
  import { panic } from "better-result";
4
4
  //#region src/layout-engine/paginator.ts
5
5
  /**
@@ -1,7 +1,7 @@
1
1
  import { measureParagraph } from "./measure/measureParagraph.js";
2
- import { isEmptyParagraph } from "./paragraphSpacing.js";
3
- import { createTableCellFlowState, placeTableCellBlock } from "./measure/tableCellFlow.js";
4
2
  import { buildTableCellFloatingZones, getTableCellContentWidth, getTableCellFloatingImages } from "./measure/tableCellFloating.js";
3
+ import { createTableCellFlowState, placeTableCellBlock } from "./measure/tableCellFlow.js";
4
+ import { isEmptyParagraph } from "./paragraphSpacing.js";
5
5
  //#region src/layout-engine/tableRowBreak.ts
6
6
  /**
7
7
  * Table row-break geometry. Ported from eigenpal/docx-editor#698 (folio subset).
@@ -1,12 +1,12 @@
1
+ import { prefersReducedMotionBehavior } from "../paged-layout/scrollNavigation.js";
2
+ import { createDefaultRegistry } from "./registry/modules.js";
3
+ import { createFeatureRegistry } from "./registry/registry.js";
1
4
  import { FRAGMENT_CLASS_NAMES, renderFragment } from "./renderFragment.js";
2
5
  import { IMAGE_CLASS_NAMES, renderImageFragment } from "./renderImage.js";
6
+ import { renderPage, renderPages } from "./renderPage.js";
3
7
  import { renderLine, renderParagraphFragment, sliceRunsForLine } from "./renderParagraph.js";
4
- import { TEXTBOX_CLASS_NAMES, renderTextBoxFragment } from "./renderTextBox.js";
5
8
  import { TABLE_CLASS_NAMES, renderTableFragment } from "./renderTable.js";
6
- import { renderPage, renderPages } from "./renderPage.js";
7
- import { prefersReducedMotionBehavior } from "../paged-layout/scrollNavigation.js";
8
- import { createFeatureRegistry } from "./registry/registry.js";
9
- import { createDefaultRegistry } from "./registry/modules.js";
9
+ import { TEXTBOX_CLASS_NAMES, renderTextBoxFragment } from "./renderTextBox.js";
10
10
  import { panic } from "better-result";
11
11
  //#region src/layout-painter/index.ts
12
12
  /**
@@ -1,5 +1,5 @@
1
- import { renderTextBoxFragment } from "../../renderTextBox.js";
2
1
  import { renderNestedTable } from "../../renderTable.js";
2
+ import { renderTextBoxFragment } from "../../renderTextBox.js";
3
3
  //#region src/layout-painter/registry/modules/textBox.ts
4
4
  /**
5
5
  * Text-box feature module — renders `TextBoxFragment`.
@@ -1,5 +1,5 @@
1
- import { sanitizeExternalUrl } from "../utils/urlSecurity.js";
2
1
  import { applySanitizedImageSrc } from "../utils/sanitizeImageSrc.js";
2
+ import { sanitizeExternalUrl } from "../utils/urlSecurity.js";
3
3
  //#region src/layout-painter/renderImage.ts
4
4
  /**
5
5
  * CSS class names for image elements
@@ -1,18 +1,18 @@
1
- import { eighthsToPixels, pointsToPixels } from "../utils/units.js";
1
+ import { resolveFloatingTableX } from "../layout-engine/measure/floatingTablePosition.js";
2
+ import { rectsToFloatingZones } from "../layout-engine/measure/floatingZones.js";
3
+ import { measureParagraph } from "../layout-engine/measure/measureParagraph.js";
4
+ import { floatingTextBoxReservesBand, floatingTextBoxWrapsText, isFloatingImageRun, isFloatingTextBoxBlock, isTextWrappingFloatingImageRun } from "../layout-engine/types.js";
2
5
  import { resolveFontFamily } from "../utils/fontResolver.js";
3
6
  import { borderToStyle } from "../utils/formatToStyle.js";
4
7
  import { applySanitizedImageSrc } from "../utils/sanitizeImageSrc.js";
5
- import { floatingTextBoxReservesBand, floatingTextBoxWrapsText, isFloatingImageRun, isFloatingTextBoxBlock, isTextWrappingFloatingImageRun } from "../layout-engine/types.js";
6
- import { rectsToFloatingZones } from "../layout-engine/measure/floatingZones.js";
7
- import { measureParagraph } from "../layout-engine/measure/measureParagraph.js";
8
- import { resolveFloatingTableX } from "../layout-engine/measure/floatingTablePosition.js";
9
- import { emuToPixels } from "./renderUtils.js";
8
+ import { eighthsToPixels, pointsToPixels } from "../utils/units.js";
10
9
  import { resolveAnchoredImagePosition as resolveAnchoredImagePosition$1 } from "./anchoredImagePosition.js";
11
10
  import { renderFragment } from "./renderFragment.js";
12
11
  import { applyImageVisualAttrs, hasImageVisualAttrs, renderImageFragment } from "./renderImage.js";
13
12
  import { renderParagraphFragment } from "./renderParagraph.js";
14
- import { renderTextBoxFragment } from "./renderTextBox.js";
15
13
  import { renderNestedTable, renderTableFragment } from "./renderTable.js";
14
+ import { renderTextBoxFragment } from "./renderTextBox.js";
15
+ import { emuToPixels } from "./renderUtils.js";
16
16
  import { renderWatermarkLayer } from "./renderWatermark.js";
17
17
  import { panic } from "better-result";
18
18
  //#region src/layout-painter/renderPage.ts
@@ -1,23 +1,23 @@
1
+ import { ommlToMathml } from "../docx/mathToMathml.js";
1
2
  import { parseXmlDocument } from "../docx/xmlParser.js";
2
- import { resolveFontFamily } from "../utils/fontResolver.js";
3
- import { detectBaseDirection } from "../utils/baseDirection.js";
4
- import { applySanitizedImageSrc } from "../utils/sanitizeImageSrc.js";
5
- import { AUTHOR_COLORS, getAuthorColorIdx } from "../utils/authorColors.js";
6
- import { FONT_KERNING_MODE, countCompressibleSpaces, getFontKerningMode, getRunFontKerningMode, toPaintedText } from "../layout-engine/measure/textMeasurementPolicy.js";
7
- import "../utils/fontWeights.js";
3
+ import { evaluateFieldInstruction } from "../fields/evaluateField.js";
4
+ import { getListMarkerInlineWidth, getListMarkerVisualOffset } from "../layout-engine/measure/listMarkerWidth.js";
8
5
  import "../layout-engine/measure/measureHelpers.js";
6
+ import { FONT_KERNING_MODE, countCompressibleSpaces, getFontKerningMode, getRunFontKerningMode, toPaintedText } from "../layout-engine/measure/textMeasurementPolicy.js";
7
+ import { isFloatingImageRun } from "../layout-engine/types.js";
9
8
  import { calculateTabWidth } from "../prosemirror/utils/tabCalculator.js";
9
+ import { AUTHOR_COLORS, getAuthorColorIdx } from "../utils/authorColors.js";
10
+ import { detectBaseDirection } from "../utils/baseDirection.js";
11
+ import { resolveFontFamily } from "../utils/fontResolver.js";
12
+ import "../utils/fontWeights.js";
10
13
  import { inlineImageBoundingBox, parseRotationDegrees, rotatedBoundingBox } from "../utils/rotationBoundingBox.js";
14
+ import { applySanitizedImageSrc } from "../utils/sanitizeImageSrc.js";
11
15
  import { hasCjk, segmentByScript } from "../utils/scriptSegments.js";
12
- import { isFloatingImageRun } from "../layout-engine/types.js";
13
- import { getListMarkerInlineWidth, getListMarkerVisualOffset } from "../layout-engine/measure/listMarkerWidth.js";
14
- import { resolveImageLineAlign } from "./renderUtils.js";
15
- import { applySdtDataAttrs } from "./sdtBoundary.js";
16
- import { applyImageBorder, applyImageVisualAttrs, hasImageCrop, hasImageVisualAttrs, wrapImageWithCrop } from "./renderImage.js";
17
- import { ommlToMathml } from "../docx/mathToMathml.js";
18
- import { evaluateFieldInstruction } from "../fields/evaluateField.js";
19
16
  import { borderStrokeToCss, resolveParagraphBorderHorizontalOutsets } from "./borderStroke.js";
20
17
  import { getAutomaticTextColorForBackground } from "./documentColors.js";
18
+ import { applyImageBorder, applyImageVisualAttrs, hasImageCrop, hasImageVisualAttrs, wrapImageWithCrop } from "./renderImage.js";
19
+ import { resolveImageLineAlign } from "./renderUtils.js";
20
+ import { applySdtDataAttrs } from "./sdtBoundary.js";
21
21
  //#region src/layout-painter/renderParagraph.ts
22
22
  /**
23
23
  * Paragraph Fragment Renderer
@@ -1,14 +1,14 @@
1
- import { emuToPixels } from "../utils/units.js";
2
- import { applySanitizedImageSrc } from "../utils/sanitizeImageSrc.js";
3
- import { getTableRowLeadingWidth, isFloatingImageRun, isFloatingTextBoxBlock, tableColumnsArePinned } from "../layout-engine/types.js";
4
1
  import { measureParagraph } from "../layout-engine/measure/measureParagraph.js";
2
+ import { buildTableCellFloatingZones, getTableCellContentWidth, getTableCellFloatingImages } from "../layout-engine/measure/tableCellFloating.js";
3
+ import { createTableCellFlowState, finishTableCellFlow, placeTableCellBlock } from "../layout-engine/measure/tableCellFlow.js";
4
+ import { getTableRowLeadingWidth, isFloatingImageRun, isFloatingTextBoxBlock, tableColumnsArePinned } from "../layout-engine/types.js";
5
+ import { applySanitizedImageSrc } from "../utils/sanitizeImageSrc.js";
6
+ import { emuToPixels } from "../utils/units.js";
5
7
  import { resolveAnchoredImagePosition } from "./anchoredImagePosition.js";
6
- import { applyImageVisualAttrs, hasImageCrop, hasImageVisualAttrs } from "./renderImage.js";
7
8
  import { borderStrokeToCss, resolveCssBorderStroke } from "./borderStroke.js";
8
9
  import { getAutomaticTextColorForBackground } from "./documentColors.js";
10
+ import { applyImageVisualAttrs, hasImageCrop, hasImageVisualAttrs } from "./renderImage.js";
9
11
  import { renderParagraphFragment } from "./renderParagraph.js";
10
- import { createTableCellFlowState, finishTableCellFlow, placeTableCellBlock } from "../layout-engine/measure/tableCellFlow.js";
11
- import { buildTableCellFloatingZones, getTableCellContentWidth, getTableCellFloatingImages } from "../layout-engine/measure/tableCellFloating.js";
12
12
  import { renderTextBoxFragment } from "./renderTextBox.js";
13
13
  //#region src/layout-painter/renderTable.ts
14
14
  /**
@@ -1,6 +1,6 @@
1
+ import { layoutTextBoxContent } from "../layout-engine/measure/textBoxParagraphLayout.js";
1
2
  import { DEFAULT_TEXTBOX_MARGINS } from "../layout-engine/types.js";
2
3
  import { renderParagraphFragment } from "./renderParagraph.js";
3
- import { layoutTextBoxContent } from "../layout-engine/measure/textBoxParagraphLayout.js";
4
4
  import { panic } from "better-result";
5
5
  //#region src/layout-painter/renderTextBox.ts
6
6
  /**
@@ -1,8 +1,8 @@
1
- import { resetAuthorColors } from "../utils/authorColors.js";
2
- import { loadFontsWithMapping } from "../utils/fontLoader.js";
3
- import { parseDocx } from "../docx/parser.js";
4
1
  import { inspectDocxCompatibility } from "../docx/compatibility.js";
2
+ import { parseDocx } from "../docx/parser.js";
5
3
  import { recordDocumentLoadPhase } from "../layout-engine/layoutInstrumentation.js";
4
+ import { resetAuthorColors } from "../utils/authorColors.js";
5
+ import { loadFontsWithMapping } from "../utils/fontLoader.js";
6
6
  //#region src/managers/DocumentLoaderManager.ts
7
7
  /**
8
8
  * DocumentLoaderManager
@@ -1,5 +1,5 @@
1
- import { Subscribable } from "./Subscribable.js";
2
1
  import { addColumn, addRow, createTableContext, deleteColumn, deleteRow, getColumnCount, mergeCells, splitCell } from "../utils/tableOperations.js";
2
+ import { Subscribable } from "./Subscribable.js";
3
3
  //#region src/managers/TableSelectionManager.ts
4
4
  /** Data attributes for table elements in the rendered DOM */
5
5
  const TABLE_DATA_ATTRIBUTES = {
@@ -1,5 +1,5 @@
1
- import { getTableContext } from "../prosemirror/extensions/nodes/TableExtension.js";
2
1
  import { deleteTable } from "../prosemirror/commands/table.js";
2
+ import { getTableContext } from "../prosemirror/extensions/nodes/TableExtension.js";
3
3
  //#region src/managers/editorShortcuts.ts
4
4
  function isMacPlatform() {
5
5
  if (typeof navigator === "undefined") return false;
@@ -1,5 +1,5 @@
1
- import { sanitizeExternalUrl } from "../utils/urlSecurity.js";
2
1
  import { createEmptyDocument } from "../utils/createDocument.js";
2
+ import { sanitizeExternalUrl } from "../utils/urlSecurity.js";
3
3
  import { marked } from "marked";
4
4
  //#region src/markdown/fromMarkdown.ts
5
5
  /**
@@ -1,7 +1,7 @@
1
+ import { fromMarkdown } from "./fromMarkdown.js";
1
2
  import { newContext } from "./internals.js";
2
3
  import { renderBlocks } from "./renderBlock.js";
3
4
  import { appendTrailers } from "./trailers.js";
4
- import { fromMarkdown } from "./fromMarkdown.js";
5
5
  //#region src/markdown/index.ts
6
6
  /**
7
7
  * Convert a parsed `Document` to a markdown string. Synchronous; pre-parse the
@@ -1,7 +1,7 @@
1
- import { pushWarning } from "./internals.js";
2
1
  import { wrapComment, wrapDeletion, wrapInsertion, wrapMoveFrom, wrapMoveTo } from "./annotations.js";
3
2
  import { escapeAltText, escapeInline, escapeLinkUrl } from "./escape.js";
4
3
  import { registerImage } from "./images.js";
4
+ import { pushWarning } from "./internals.js";
5
5
  //#region src/markdown/renderRuns.ts
6
6
  const MARK_DELIMS = {
7
7
  bold: "**",
@@ -1,6 +1,6 @@
1
- import { pushWarning } from "./internals.js";
2
1
  import { escapeTableCell } from "./escape.js";
3
2
  import { registerImage } from "./images.js";
3
+ import { pushWarning } from "./internals.js";
4
4
  import { renderParagraph } from "./renderParagraph.js";
5
5
  //#region src/markdown/renderTable.ts
6
6
  /** Render a `Table` as markdown. Picks GFM vs HTML based on cell features. */