@stll/folio-core 0.29.0 → 0.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/dist/controller/folioEditor.d.ts +28 -1
  2. package/dist/controller/folioEditor.js +37 -26
  3. package/dist/controller/fontReadiness.js +28 -24
  4. package/dist/controller/hiddenEditorManager.d.ts +2 -7
  5. package/dist/controller/layoutPipeline.js +33 -3
  6. package/dist/controller/noteEditorManager.d.ts +3 -6
  7. package/dist/docx/metafileSvg.d.ts +12 -0
  8. package/dist/docx/metafileSvg.js +462 -0
  9. package/dist/docx/paragraphTextBoxEnrichment.js +55 -4
  10. package/dist/docx/parser.d.ts +2 -2
  11. package/dist/docx/parser.js +26 -0
  12. package/dist/docx/runParser.js +2 -1
  13. package/dist/docx/serializer/runSerializer.js +14 -2
  14. package/dist/docx/server/createBilingualDocument.d.ts +20 -3
  15. package/dist/docx/server/createBilingualDocument.js +153 -22
  16. package/dist/docx/styleParser.js +2 -1
  17. package/dist/docx/textBoxParser.js +14 -0
  18. package/dist/docx/vmlImageParser.js +72 -152
  19. package/dist/docx/vmlPreview.d.ts +31 -0
  20. package/dist/docx/vmlPreview.js +535 -0
  21. package/dist/docx/wrapTypes.d.ts +2 -36
  22. package/dist/docx/wrapTypes.js +1 -39
  23. package/dist/fonts/fontAlternates.d.ts +8 -0
  24. package/dist/fonts/fontAlternates.js +16 -0
  25. package/dist/layout-bridge/convert/footnoteLayout.d.ts +1 -0
  26. package/dist/layout-bridge/convert/footnoteLayout.js +34 -3
  27. package/dist/layout-bridge/convert/headerFooterLayout.d.ts +1 -0
  28. package/dist/layout-bridge/convert/headerFooterLayout.js +5 -0
  29. package/dist/layout-bridge/convert/toFlowBlocks.d.ts +3 -0
  30. package/dist/layout-bridge/convert/toFlowBlocks.js +78 -28
  31. package/dist/layout-bridge/dom/noteStoryDom.d.ts +1 -1
  32. package/dist/layout-bridge/engine/selectionRects.js +3 -1
  33. package/dist/layout-engine/index.js +65 -32
  34. package/dist/layout-engine/justifiedLineFit.d.ts +7 -0
  35. package/dist/layout-engine/justifiedLineFit.js +6 -0
  36. package/dist/layout-engine/keep-together.js +15 -10
  37. package/dist/layout-engine/measure/complexScriptFormatting.d.ts +6 -1
  38. package/dist/layout-engine/measure/complexScriptFormatting.js +11 -2
  39. package/dist/layout-engine/measure/floatingTablePosition.d.ts +16 -1
  40. package/dist/layout-engine/measure/floatingTablePosition.js +29 -6
  41. package/dist/layout-engine/measure/lineBreakProvider.js +67 -8
  42. package/dist/layout-engine/measure/listMarkerWidth.d.ts +1 -0
  43. package/dist/layout-engine/measure/listMarkerWidth.js +23 -10
  44. package/dist/layout-engine/measure/measureBlocks.d.ts +15 -0
  45. package/dist/layout-engine/measure/measureBlocks.js +197 -30
  46. package/dist/layout-engine/measure/measureContainer.js +20 -24
  47. package/dist/layout-engine/measure/measureHelpers.d.ts +1 -1
  48. package/dist/layout-engine/measure/measureHelpers.js +14 -8
  49. package/dist/layout-engine/measure/measureParagraph.js +111 -37
  50. package/dist/layout-engine/measure/measureTypes.d.ts +3 -0
  51. package/dist/layout-engine/measure/tabCalculator.d.ts +123 -0
  52. package/dist/layout-engine/measure/tabCalculator.js +144 -0
  53. package/dist/layout-engine/measure/tableCellFlow.d.ts +21 -1
  54. package/dist/layout-engine/measure/tableCellFlow.js +45 -8
  55. package/dist/layout-engine/measure/tableInlinePlacement.d.ts +10 -2
  56. package/dist/layout-engine/measure/tableInlinePlacement.js +17 -15
  57. package/dist/layout-engine/paginator.d.ts +26 -2
  58. package/dist/layout-engine/paginator.js +76 -14
  59. package/dist/layout-engine/paragraphSpacing.d.ts +3 -1
  60. package/dist/layout-engine/paragraphSpacing.js +4 -3
  61. package/dist/layout-engine/renderedBreakReconciliation.d.ts +14 -3
  62. package/dist/layout-engine/renderedBreakReconciliation.js +45 -14
  63. package/dist/layout-engine/section-breaks.d.ts +3 -1
  64. package/dist/layout-engine/section-breaks.js +6 -2
  65. package/dist/layout-engine/types.d.ts +18 -1
  66. package/dist/layout-engine/types.js +1 -1
  67. package/dist/layout-painter/imageLayout.d.ts +1 -1
  68. package/dist/layout-painter/renderPage.js +6 -1
  69. package/dist/layout-painter/renderParagraph.js +169 -82
  70. package/dist/layout-painter/renderTable.d.ts +1 -1
  71. package/dist/layout-painter/renderTable.js +18 -7
  72. package/dist/layout-painter/renderTextBox.d.ts +1 -1
  73. package/dist/layout-painter/renderTextBox.js +6 -1
  74. package/dist/model.d.ts +3 -3
  75. package/dist/model.js +2 -2
  76. package/dist/paged-layout/sectionBlockWidths.d.ts +14 -0
  77. package/dist/paged-layout/sectionBlockWidths.js +103 -14
  78. package/dist/prosemirror/attrs/index.js +12 -1
  79. package/dist/prosemirror/conversion/fromProseDoc.js +6 -2
  80. package/dist/prosemirror/conversion/toProseDoc.js +10 -3
  81. package/dist/prosemirror/extensions/marks/CharacterSpacingExtension.js +9 -5
  82. package/dist/prosemirror/extensions/nodes/TableExtension.js +2 -0
  83. package/dist/prosemirror/extensions/nodes/TextBoxExtension.js +6 -2
  84. package/dist/prosemirror/schema/nodes.d.ts +4 -0
  85. package/dist/prosemirror/utils/tabCalculator.d.ts +2 -123
  86. package/dist/prosemirror/utils/tabCalculator.js +1 -140
  87. package/dist/render-dom/RemoteSelectionOverlay.d.ts +4 -4
  88. package/dist/server.d.ts +2 -2
  89. package/dist/server.js +2 -2
  90. package/dist/types/documentEnumValues.d.ts +4 -1
  91. package/dist/types/documentEnumValues.js +12 -1
  92. package/dist/types/editor-story.d.ts +8 -0
  93. package/dist/types/editor-story.js +0 -0
  94. package/dist/types/remote-selection.d.ts +11 -0
  95. package/dist/types/remote-selection.js +0 -0
  96. package/dist/types/wrap.d.ts +36 -0
  97. package/dist/types/wrap.js +40 -0
  98. package/dist/utils/fontResolver.d.ts +1 -1
  99. package/dist/utils/fontResolver.js +42 -2
  100. package/dist/utils/formatToStyle.js +4 -2
  101. package/dist/utils/horizontalScale.d.ts +28 -0
  102. package/dist/utils/horizontalScale.js +42 -0
  103. package/package.json +2 -2
@@ -0,0 +1,28 @@
1
+ //#region src/utils/horizontalScale.d.ts
2
+ /**
3
+ * Normalize OOXML `w:w` horizontal text scale percentages.
4
+ *
5
+ * The OOXML value is bounded from 0% through 600%. Missing or malformed
6
+ * values use the document default (100%) and stay absent in the model.
7
+ */
8
+ declare function normalizeHorizontalScalePercent(horizontalScale: number | null | undefined): number | undefined;
9
+ /**
10
+ * Parse the lexical forms accepted by OOXML `ST_TextScale`.
11
+ *
12
+ * Decimal values use the XML Schema integer grammar; percent values use the
13
+ * unsigned decimal grammar defined by `ST_TextScalePercent`. Surrounding
14
+ * whitespace is ignored, but an empty value or partial numeric prefix is not.
15
+ */
16
+ declare function parseHorizontalScalePercent(horizontalScale: string | null | undefined): number | undefined;
17
+ declare function getHorizontalScaleFactor(horizontalScale: number | null | undefined): number;
18
+ /**
19
+ * Quantize an in-range model value for OOXML's integer-only representation.
20
+ *
21
+ * Imported documents use strict integer normalization. Serialization also
22
+ * tolerates finite floating-point residue produced by editing calculations,
23
+ * preserving the existing integer-attribute contract without emitting an
24
+ * invalid fractional value.
25
+ */
26
+ declare function roundHorizontalScalePercentForSerialization(horizontalScale: number | null | undefined): number | undefined;
27
+ //#endregion
28
+ export { getHorizontalScaleFactor, normalizeHorizontalScalePercent, parseHorizontalScalePercent, roundHorizontalScalePercentForSerialization };
@@ -0,0 +1,42 @@
1
+ //#region src/utils/horizontalScale.ts
2
+ /**
3
+ * Normalize OOXML `w:w` horizontal text scale percentages.
4
+ *
5
+ * The OOXML value is bounded from 0% through 600%. Missing or malformed
6
+ * values use the document default (100%) and stay absent in the model.
7
+ */
8
+ function normalizeHorizontalScalePercent(horizontalScale) {
9
+ if (horizontalScale === null || horizontalScale === void 0 || !Number.isFinite(horizontalScale) || !Number.isInteger(horizontalScale) || horizontalScale < 0 || horizontalScale > 600) return;
10
+ return horizontalScale;
11
+ }
12
+ /**
13
+ * Parse the lexical forms accepted by OOXML `ST_TextScale`.
14
+ *
15
+ * Decimal values use the XML Schema integer grammar; percent values use the
16
+ * unsigned decimal grammar defined by `ST_TextScalePercent`. Surrounding
17
+ * whitespace is ignored, but an empty value or partial numeric prefix is not.
18
+ */
19
+ function parseHorizontalScalePercent(horizontalScale) {
20
+ if (horizontalScale === null || horizontalScale === void 0) return;
21
+ const lexicalValue = horizontalScale.trim();
22
+ if (!/^(?:[+-]?\d+|\d+%)$/u.test(lexicalValue)) return;
23
+ const numericValue = lexicalValue.endsWith("%") ? lexicalValue.slice(0, -1) : lexicalValue;
24
+ return normalizeHorizontalScalePercent(Number(numericValue));
25
+ }
26
+ function getHorizontalScaleFactor(horizontalScale) {
27
+ return (normalizeHorizontalScalePercent(horizontalScale) ?? 100) / 100;
28
+ }
29
+ /**
30
+ * Quantize an in-range model value for OOXML's integer-only representation.
31
+ *
32
+ * Imported documents use strict integer normalization. Serialization also
33
+ * tolerates finite floating-point residue produced by editing calculations,
34
+ * preserving the existing integer-attribute contract without emitting an
35
+ * invalid fractional value.
36
+ */
37
+ function roundHorizontalScalePercentForSerialization(horizontalScale) {
38
+ if (horizontalScale === null || horizontalScale === void 0 || !Number.isFinite(horizontalScale) || horizontalScale < 0 || horizontalScale > 600) return;
39
+ return Math.round(horizontalScale);
40
+ }
41
+ //#endregion
42
+ export { getHorizontalScaleFactor, normalizeHorizontalScalePercent, parseHorizontalScalePercent, roundHorizontalScalePercentForSerialization };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stll/folio-core",
3
- "version": "0.29.0",
3
+ "version": "0.31.0",
4
4
  "description": "Headless, framework-neutral core of folio: the OOXML (.docx) parser, document model, ProseMirror integration, and page-layout engine. No React.",
5
5
  "keywords": [
6
6
  "document-model",
@@ -113,7 +113,7 @@
113
113
  "perf": "bun scripts/profile-editor.ts"
114
114
  },
115
115
  "dependencies": {
116
- "@stll/docx-core": "^0.17.2",
116
+ "@stll/docx-core": "^0.17.3",
117
117
  "@stll/docx-utils": "^0.1.0",
118
118
  "@stll/template-conditions": "^0.1.0",
119
119
  "better-result": "3.0.1",