postext 1.22.3 → 1.24.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.
- package/dist/__tests__/bundle/bitmapInfo.test.d.ts +2 -0
- package/dist/__tests__/bundle/bitmapInfo.test.d.ts.map +1 -0
- package/dist/__tests__/bundle/bitmapInfo.test.js +78 -0
- package/dist/__tests__/bundle/bitmapInfo.test.js.map +1 -0
- package/dist/__tests__/bundle/designOverflowPin.test.d.ts +2 -0
- package/dist/__tests__/bundle/designOverflowPin.test.d.ts.map +1 -0
- package/dist/__tests__/bundle/designOverflowPin.test.js +87 -0
- package/dist/__tests__/bundle/designOverflowPin.test.js.map +1 -0
- package/dist/__tests__/bundle.test.js +1 -1
- package/dist/__tests__/bundle.test.js.map +1 -1
- package/dist/__tests__/codeBlocks.test.d.ts +2 -0
- package/dist/__tests__/codeBlocks.test.d.ts.map +1 -0
- package/dist/__tests__/codeBlocks.test.js +550 -0
- package/dist/__tests__/codeBlocks.test.js.map +1 -0
- package/dist/__tests__/design/designTextOverflow.test.d.ts +2 -0
- package/dist/__tests__/design/designTextOverflow.test.d.ts.map +1 -0
- package/dist/__tests__/design/designTextOverflow.test.js +102 -0
- package/dist/__tests__/design/designTextOverflow.test.js.map +1 -0
- package/dist/__tests__/exports.test.js +30 -0
- package/dist/__tests__/exports.test.js.map +1 -1
- package/dist/__tests__/frontmatterInvalid.test.d.ts +2 -0
- package/dist/__tests__/frontmatterInvalid.test.d.ts.map +1 -0
- package/dist/__tests__/frontmatterInvalid.test.js +101 -0
- package/dist/__tests__/frontmatterInvalid.test.js.map +1 -0
- package/dist/__tests__/hardBreaks.test.d.ts +2 -0
- package/dist/__tests__/hardBreaks.test.d.ts.map +1 -0
- package/dist/__tests__/hardBreaks.test.js +226 -0
- package/dist/__tests__/hardBreaks.test.js.map +1 -0
- package/dist/__tests__/headingFirstLineIndent.test.d.ts +2 -0
- package/dist/__tests__/headingFirstLineIndent.test.d.ts.map +1 -0
- package/dist/__tests__/headingFirstLineIndent.test.js +185 -0
- package/dist/__tests__/headingFirstLineIndent.test.js.map +1 -0
- package/dist/__tests__/headingInlineMarks.test.js +1 -1
- package/dist/__tests__/headingInlineMarks.test.js.map +1 -1
- package/dist/__tests__/headingLetterSpacing.test.js +1 -1
- package/dist/__tests__/headingLetterSpacing.test.js.map +1 -1
- package/dist/__tests__/lineNumbers.test.d.ts +2 -0
- package/dist/__tests__/lineNumbers.test.d.ts.map +1 -0
- package/dist/__tests__/lineNumbers.test.js +304 -0
- package/dist/__tests__/lineNumbers.test.js.map +1 -0
- package/dist/__tests__/mathSizeMigration.test.js +2 -2
- package/dist/__tests__/mathSizeMigration.test.js.map +1 -1
- package/dist/__tests__/paragraphDropCap.test.d.ts +2 -0
- package/dist/__tests__/paragraphDropCap.test.d.ts.map +1 -0
- package/dist/__tests__/paragraphDropCap.test.js +442 -0
- package/dist/__tests__/paragraphDropCap.test.js.map +1 -0
- package/dist/__tests__/paragraphStyleIndent.test.js +26 -2
- package/dist/__tests__/paragraphStyleIndent.test.js.map +1 -1
- package/dist/__tests__/pipeline/bitmapResolution.test.d.ts +2 -0
- package/dist/__tests__/pipeline/bitmapResolution.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/bitmapResolution.test.js +139 -0
- package/dist/__tests__/pipeline/bitmapResolution.test.js.map +1 -0
- package/dist/__tests__/pipeline/calloutInlineResourceGap.test.js +1 -1
- package/dist/__tests__/pipeline/calloutInlineResourceGap.test.js.map +1 -1
- package/dist/__tests__/pipeline/calloutSplitMinLinesChild.test.js +1 -1
- package/dist/__tests__/pipeline/calloutSplitMinLinesChild.test.js.map +1 -1
- package/dist/__tests__/pipeline/colonListRoom.test.js +1 -1
- package/dist/__tests__/pipeline/colonListRoom.test.js.map +1 -1
- package/dist/__tests__/pipeline/compoundBreaks.test.js +1 -1
- package/dist/__tests__/pipeline/compoundBreaks.test.js.map +1 -1
- package/dist/__tests__/pipeline/dashBreaks.test.js +1 -1
- package/dist/__tests__/pipeline/dashBreaks.test.js.map +1 -1
- package/dist/__tests__/pipeline/designTextTruncated.test.d.ts +2 -0
- package/dist/__tests__/pipeline/designTextTruncated.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/designTextTruncated.test.js +116 -0
- package/dist/__tests__/pipeline/designTextTruncated.test.js.map +1 -0
- package/dist/__tests__/pipeline/floatPlacement.test.js +3 -3
- package/dist/__tests__/pipeline/floatPlacement.test.js.map +1 -1
- package/dist/__tests__/pipeline/floatShrink.test.d.ts +2 -0
- package/dist/__tests__/pipeline/floatShrink.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/floatShrink.test.js +298 -0
- package/dist/__tests__/pipeline/floatShrink.test.js.map +1 -0
- package/dist/__tests__/pipeline/headingSplitOrphans.test.js +1 -1
- package/dist/__tests__/pipeline/headingSplitOrphans.test.js.map +1 -1
- package/dist/__tests__/pipeline/inlineFigureSpace.test.js +1 -1
- package/dist/__tests__/pipeline/inlineFigureSpace.test.js.map +1 -1
- package/dist/__tests__/pipeline/paragraphContainerTail.test.js +1 -1
- package/dist/__tests__/pipeline/paragraphContainerTail.test.js.map +1 -1
- package/dist/__tests__/pipeline/paragraphStyleFaces.test.js +7 -1
- package/dist/__tests__/pipeline/paragraphStyleFaces.test.js.map +1 -1
- package/dist/__tests__/pipeline/raggedOptimal.test.js +1 -1
- package/dist/__tests__/pipeline/raggedOptimal.test.js.map +1 -1
- package/dist/__tests__/pipeline/textWrap.test.d.ts +2 -0
- package/dist/__tests__/pipeline/textWrap.test.d.ts.map +1 -0
- package/dist/__tests__/pipeline/textWrap.test.js +453 -0
- package/dist/__tests__/pipeline/textWrap.test.js.map +1 -0
- package/dist/__tests__/preflight.test.js +30 -1
- package/dist/__tests__/preflight.test.js.map +1 -1
- package/dist/__tests__/presets/showcaseDesignOverflow.test.d.ts +2 -0
- package/dist/__tests__/presets/showcaseDesignOverflow.test.d.ts.map +1 -0
- package/dist/__tests__/presets/showcaseDesignOverflow.test.js +58 -0
- package/dist/__tests__/presets/showcaseDesignOverflow.test.js.map +1 -0
- package/dist/__tests__/tabStops.test.d.ts +2 -0
- package/dist/__tests__/tabStops.test.d.ts.map +1 -0
- package/dist/__tests__/tabStops.test.js +394 -0
- package/dist/__tests__/tabStops.test.js.map +1 -0
- package/dist/__tests__/table/booktabs.test.d.ts +2 -0
- package/dist/__tests__/table/booktabs.test.d.ts.map +1 -0
- package/dist/__tests__/table/booktabs.test.js +290 -0
- package/dist/__tests__/table/booktabs.test.js.map +1 -0
- package/dist/__tests__/textWrapMeasure.test.d.ts +2 -0
- package/dist/__tests__/textWrapMeasure.test.d.ts.map +1 -0
- package/dist/__tests__/textWrapMeasure.test.js +162 -0
- package/dist/__tests__/textWrapMeasure.test.js.map +1 -0
- package/dist/__tests__/verseLines.test.d.ts +2 -0
- package/dist/__tests__/verseLines.test.d.ts.map +1 -0
- package/dist/__tests__/verseLines.test.js +505 -0
- package/dist/__tests__/verseLines.test.js.map +1 -0
- package/dist/bitmapResolution.d.ts +42 -0
- package/dist/bitmapResolution.d.ts.map +1 -0
- package/dist/bitmapResolution.js +82 -0
- package/dist/bitmapResolution.js.map +1 -0
- package/dist/bundle/codec.d.ts +9 -2
- package/dist/bundle/codec.d.ts.map +1 -1
- package/dist/bundle/codec.js +24 -2
- package/dist/bundle/codec.js.map +1 -1
- package/dist/bundle/configVersion.d.ts +119 -8
- package/dist/bundle/configVersion.d.ts.map +1 -1
- package/dist/bundle/configVersion.js +395 -6
- package/dist/bundle/configVersion.js.map +1 -1
- package/dist/bundle/index.d.ts +3 -3
- package/dist/bundle/index.d.ts.map +1 -1
- package/dist/bundle/index.js +2 -2
- package/dist/bundle/index.js.map +1 -1
- package/dist/bundle/manifest.d.ts +12 -2
- package/dist/bundle/manifest.d.ts.map +1 -1
- package/dist/bundle/manifest.js +132 -6
- package/dist/bundle/manifest.js.map +1 -1
- package/dist/bundle/types.d.ts +28 -2
- package/dist/bundle/types.d.ts.map +1 -1
- package/dist/canvas-backend/blockRender.d.ts.map +1 -1
- package/dist/canvas-backend/blockRender.js +45 -9
- package/dist/canvas-backend/blockRender.js.map +1 -1
- package/dist/canvas-backend/index.d.ts.map +1 -1
- package/dist/canvas-backend/index.js +3 -0
- package/dist/canvas-backend/index.js.map +1 -1
- package/dist/canvas-backend/renderResourceBlock.d.ts.map +1 -1
- package/dist/canvas-backend/renderResourceBlock.js +15 -1
- package/dist/canvas-backend/renderResourceBlock.js.map +1 -1
- package/dist/cjkMarks.js +1 -1
- package/dist/cjkMarks.js.map +1 -1
- package/dist/code/highlight.d.ts +34 -0
- package/dist/code/highlight.d.ts.map +1 -0
- package/dist/code/highlight.js +406 -0
- package/dist/code/highlight.js.map +1 -0
- package/dist/configWarnings.d.ts.map +1 -1
- package/dist/configWarnings.js +220 -4
- package/dist/configWarnings.js.map +1 -1
- package/dist/defaults/bodyText.d.ts.map +1 -1
- package/dist/defaults/bodyText.js +25 -0
- package/dist/defaults/bodyText.js.map +1 -1
- package/dist/defaults/calloutStyles.d.ts.map +1 -1
- package/dist/defaults/calloutStyles.js +7 -0
- package/dist/defaults/calloutStyles.js.map +1 -1
- package/dist/defaults/codeStyle.d.ts +29 -0
- package/dist/defaults/codeStyle.d.ts.map +1 -0
- package/dist/defaults/codeStyle.js +284 -0
- package/dist/defaults/codeStyle.js.map +1 -0
- package/dist/defaults/dropCap.d.ts +49 -0
- package/dist/defaults/dropCap.d.ts.map +1 -0
- package/dist/defaults/dropCap.js +66 -0
- package/dist/defaults/dropCap.js.map +1 -0
- package/dist/defaults/headerFooter.d.ts +21 -6
- package/dist/defaults/headerFooter.d.ts.map +1 -1
- package/dist/defaults/headerFooter.js +37 -14
- package/dist/defaults/headerFooter.js.map +1 -1
- package/dist/defaults/headings.d.ts +5 -4
- package/dist/defaults/headings.d.ts.map +1 -1
- package/dist/defaults/headings.js +26 -4
- package/dist/defaults/headings.js.map +1 -1
- package/dist/defaults/index.d.ts +4 -1
- package/dist/defaults/index.d.ts.map +1 -1
- package/dist/defaults/index.js +20 -1
- package/dist/defaults/index.js.map +1 -1
- package/dist/defaults/layout.d.ts +30 -1
- package/dist/defaults/layout.d.ts.map +1 -1
- package/dist/defaults/layout.js +105 -1
- package/dist/defaults/layout.js.map +1 -1
- package/dist/defaults/lineNumbers.d.ts +19 -0
- package/dist/defaults/lineNumbers.d.ts.map +1 -0
- package/dist/defaults/lineNumbers.js +101 -0
- package/dist/defaults/lineNumbers.js.map +1 -0
- package/dist/defaults/paragraphStyles.d.ts.map +1 -1
- package/dist/defaults/paragraphStyles.js +20 -0
- package/dist/defaults/paragraphStyles.js.map +1 -1
- package/dist/defaults/parts.js +4 -4
- package/dist/defaults/parts.js.map +1 -1
- package/dist/defaults/tabStops.d.ts +29 -0
- package/dist/defaults/tabStops.d.ts.map +1 -0
- package/dist/defaults/tabStops.js +94 -0
- package/dist/defaults/tabStops.js.map +1 -0
- package/dist/defaults/tableStyle.d.ts.map +1 -1
- package/dist/defaults/tableStyle.js +44 -0
- package/dist/defaults/tableStyle.js.map +1 -1
- package/dist/defaults/toc.js +2 -2
- package/dist/defaults/verse.d.ts +11 -0
- package/dist/defaults/verse.d.ts.map +1 -0
- package/dist/defaults/verse.js +57 -0
- package/dist/defaults/verse.js.map +1 -0
- package/dist/design/layout.d.ts +15 -1
- package/dist/design/layout.d.ts.map +1 -1
- package/dist/design/layout.js +28 -4
- package/dist/design/layout.js.map +1 -1
- package/dist/fonts/usage.d.ts +7 -0
- package/dist/fonts/usage.d.ts.map +1 -1
- package/dist/fonts/usage.js +71 -0
- package/dist/fonts/usage.js.map +1 -1
- package/dist/frontmatter.d.ts +20 -0
- package/dist/frontmatter.d.ts.map +1 -1
- package/dist/frontmatter.js +69 -3
- package/dist/frontmatter.js.map +1 -1
- package/dist/html-backend.d.ts.map +1 -1
- package/dist/html-backend.js +107 -15
- package/dist/html-backend.js.map +1 -1
- package/dist/index.d.ts +18 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -4
- package/dist/index.js.map +1 -1
- package/dist/measure/bidiLines.d.ts +4 -3
- package/dist/measure/bidiLines.d.ts.map +1 -1
- package/dist/measure/bidiLines.js +14 -9
- package/dist/measure/bidiLines.js.map +1 -1
- package/dist/measure/cache.js +2 -2
- package/dist/measure/cache.js.map +1 -1
- package/dist/measure/cjkCompose.d.ts.map +1 -1
- package/dist/measure/cjkCompose.js +10 -6
- package/dist/measure/cjkCompose.js.map +1 -1
- package/dist/measure/hardBreaks.d.ts +46 -0
- package/dist/measure/hardBreaks.d.ts.map +1 -0
- package/dist/measure/hardBreaks.js +228 -0
- package/dist/measure/hardBreaks.js.map +1 -0
- package/dist/measure/index.d.ts +4 -3
- package/dist/measure/index.d.ts.map +1 -1
- package/dist/measure/index.js +5 -4
- package/dist/measure/index.js.map +1 -1
- package/dist/measure/leader.d.ts +20 -0
- package/dist/measure/leader.d.ts.map +1 -0
- package/dist/measure/leader.js +46 -0
- package/dist/measure/leader.js.map +1 -0
- package/dist/measure/links.js +1 -1
- package/dist/measure/links.js.map +1 -1
- package/dist/measure/plain.d.ts.map +1 -1
- package/dist/measure/plain.js +23 -26
- package/dist/measure/plain.js.map +1 -1
- package/dist/measure/rich.d.ts +19 -0
- package/dist/measure/rich.d.ts.map +1 -1
- package/dist/measure/rich.js +215 -39
- package/dist/measure/rich.js.map +1 -1
- package/dist/measure/tabs.d.ts +103 -0
- package/dist/measure/tabs.d.ts.map +1 -0
- package/dist/measure/tabs.js +123 -0
- package/dist/measure/tabs.js.map +1 -0
- package/dist/measure/types.d.ts +72 -2
- package/dist/measure/types.d.ts.map +1 -1
- package/dist/measure/types.js +87 -3
- package/dist/measure/types.js.map +1 -1
- package/dist/parse/blockParser.d.ts +13 -6
- package/dist/parse/blockParser.d.ts.map +1 -1
- package/dist/parse/blockParser.js +457 -87
- package/dist/parse/blockParser.js.map +1 -1
- package/dist/parse/codeFence.d.ts +18 -0
- package/dist/parse/codeFence.d.ts.map +1 -0
- package/dist/parse/codeFence.js +52 -0
- package/dist/parse/codeFence.js.map +1 -0
- package/dist/parse/index.d.ts +1 -1
- package/dist/parse/index.d.ts.map +1 -1
- package/dist/parse/index.js.map +1 -1
- package/dist/parse/indexMarks.d.ts +3 -1
- package/dist/parse/indexMarks.d.ts.map +1 -1
- package/dist/parse/indexMarks.js +22 -2
- package/dist/parse/indexMarks.js.map +1 -1
- package/dist/parse/inlineFormatting.d.ts +50 -0
- package/dist/parse/inlineFormatting.d.ts.map +1 -1
- package/dist/parse/inlineFormatting.js +94 -0
- package/dist/parse/inlineFormatting.js.map +1 -1
- package/dist/parse/sourceMapping.d.ts.map +1 -1
- package/dist/parse/sourceMapping.js +65 -1
- package/dist/parse/sourceMapping.js.map +1 -1
- package/dist/parse/types.d.ts +144 -9
- package/dist/parse/types.d.ts.map +1 -1
- package/dist/pipeline/build.d.ts.map +1 -1
- package/dist/pipeline/build.js +629 -47
- package/dist/pipeline/build.js.map +1 -1
- package/dist/pipeline/buildBlockKind.d.ts +5 -0
- package/dist/pipeline/buildBlockKind.d.ts.map +1 -1
- package/dist/pipeline/buildBlockKind.js +74 -2
- package/dist/pipeline/buildBlockKind.js.map +1 -1
- package/dist/pipeline/buildHelpers.d.ts +3 -0
- package/dist/pipeline/buildHelpers.d.ts.map +1 -1
- package/dist/pipeline/buildHelpers.js +7 -2
- package/dist/pipeline/buildHelpers.js.map +1 -1
- package/dist/pipeline/buildMeasurement.js +1 -1
- package/dist/pipeline/buildMeasurement.js.map +1 -1
- package/dist/pipeline/calloutLayout.d.ts.map +1 -1
- package/dist/pipeline/calloutLayout.js +33 -2
- package/dist/pipeline/calloutLayout.js.map +1 -1
- package/dist/pipeline/chips.d.ts.map +1 -1
- package/dist/pipeline/chips.js +4 -0
- package/dist/pipeline/chips.js.map +1 -1
- package/dist/pipeline/codeBlocks.d.ts +38 -0
- package/dist/pipeline/codeBlocks.d.ts.map +1 -0
- package/dist/pipeline/codeBlocks.js +146 -0
- package/dist/pipeline/codeBlocks.js.map +1 -0
- package/dist/pipeline/codeInline.d.ts +22 -0
- package/dist/pipeline/codeInline.d.ts.map +1 -0
- package/dist/pipeline/codeInline.js +93 -0
- package/dist/pipeline/codeInline.js.map +1 -0
- package/dist/pipeline/codeLines.d.ts +91 -0
- package/dist/pipeline/codeLines.d.ts.map +1 -0
- package/dist/pipeline/codeLines.js +399 -0
- package/dist/pipeline/codeLines.js.map +1 -0
- package/dist/pipeline/columnBalancing.d.ts.map +1 -1
- package/dist/pipeline/columnBalancing.js +5 -0
- package/dist/pipeline/columnBalancing.js.map +1 -1
- package/dist/pipeline/config.d.ts.map +1 -1
- package/dist/pipeline/config.js +8 -1
- package/dist/pipeline/config.js.map +1 -1
- package/dist/pipeline/contentWarnings.d.ts +25 -0
- package/dist/pipeline/contentWarnings.d.ts.map +1 -1
- package/dist/pipeline/contentWarnings.js +173 -19
- package/dist/pipeline/contentWarnings.js.map +1 -1
- package/dist/pipeline/continuation.d.ts.map +1 -1
- package/dist/pipeline/continuation.js +9 -2
- package/dist/pipeline/continuation.js.map +1 -1
- package/dist/pipeline/dropCap.d.ts +128 -0
- package/dist/pipeline/dropCap.d.ts.map +1 -0
- package/dist/pipeline/dropCap.js +412 -0
- package/dist/pipeline/dropCap.js.map +1 -0
- package/dist/pipeline/floatPlacement.d.ts +34 -4
- package/dist/pipeline/floatPlacement.d.ts.map +1 -1
- package/dist/pipeline/floatPlacement.js +35 -5
- package/dist/pipeline/floatPlacement.js.map +1 -1
- package/dist/pipeline/floatSlots.d.ts +7 -0
- package/dist/pipeline/floatSlots.d.ts.map +1 -1
- package/dist/pipeline/floatSlots.js.map +1 -1
- package/dist/pipeline/hardBreaks.d.ts +19 -0
- package/dist/pipeline/hardBreaks.d.ts.map +1 -0
- package/dist/pipeline/hardBreaks.js +36 -0
- package/dist/pipeline/hardBreaks.js.map +1 -0
- package/dist/pipeline/headerFooter.d.ts +4 -1
- package/dist/pipeline/headerFooter.d.ts.map +1 -1
- package/dist/pipeline/headerFooter.js +23 -6
- package/dist/pipeline/headerFooter.js.map +1 -1
- package/dist/pipeline/lineNumbers.d.ts +37 -0
- package/dist/pipeline/lineNumbers.d.ts.map +1 -0
- package/dist/pipeline/lineNumbers.js +441 -0
- package/dist/pipeline/lineNumbers.js.map +1 -0
- package/dist/pipeline/measureContentBlock.d.ts +38 -5
- package/dist/pipeline/measureContentBlock.d.ts.map +1 -1
- package/dist/pipeline/measureContentBlock.js +284 -69
- package/dist/pipeline/measureContentBlock.js.map +1 -1
- package/dist/pipeline/partPalette.d.ts +1 -1
- package/dist/pipeline/partPalette.d.ts.map +1 -1
- package/dist/pipeline/partPalette.js +24 -2
- package/dist/pipeline/partPalette.js.map +1 -1
- package/dist/pipeline/placement.d.ts.map +1 -1
- package/dist/pipeline/placement.js +7 -0
- package/dist/pipeline/placement.js.map +1 -1
- package/dist/pipeline/resourceLayout.d.ts +15 -0
- package/dist/pipeline/resourceLayout.d.ts.map +1 -1
- package/dist/pipeline/resourceLayout.js +95 -15
- package/dist/pipeline/resourceLayout.js.map +1 -1
- package/dist/pipeline/styles.d.ts +18 -2
- package/dist/pipeline/styles.d.ts.map +1 -1
- package/dist/pipeline/styles.js +23 -8
- package/dist/pipeline/styles.js.map +1 -1
- package/dist/pipeline/tabs.d.ts +35 -0
- package/dist/pipeline/tabs.d.ts.map +1 -0
- package/dist/pipeline/tabs.js +99 -0
- package/dist/pipeline/tabs.js.map +1 -0
- package/dist/pipeline/textWrap.d.ts +94 -0
- package/dist/pipeline/textWrap.d.ts.map +1 -0
- package/dist/pipeline/textWrap.js +188 -0
- package/dist/pipeline/textWrap.js.map +1 -0
- package/dist/pipeline/toc.d.ts.map +1 -1
- package/dist/pipeline/toc.js +3 -38
- package/dist/pipeline/toc.js.map +1 -1
- package/dist/pipeline/verseLines.d.ts +98 -0
- package/dist/pipeline/verseLines.d.ts.map +1 -0
- package/dist/pipeline/verseLines.js +293 -0
- package/dist/pipeline/verseLines.js.map +1 -0
- package/dist/preflight.d.ts +46 -1
- package/dist/preflight.d.ts.map +1 -1
- package/dist/preflight.js +43 -7
- package/dist/preflight.js.map +1 -1
- package/dist/table/booktabs.d.ts +37 -0
- package/dist/table/booktabs.d.ts.map +1 -0
- package/dist/table/booktabs.js +82 -0
- package/dist/table/booktabs.js.map +1 -0
- package/dist/types.d.ts +787 -12
- package/dist/types.d.ts.map +1 -1
- package/dist/vdt.d.ts +367 -9
- package/dist/vdt.d.ts.map +1 -1
- package/dist/vdt.js +9 -2
- package/dist/vdt.js.map +1 -1
- package/dist/word/docxRead.d.ts.map +1 -1
- package/dist/word/docxRead.js +15 -0
- package/dist/word/docxRead.js.map +1 -1
- package/dist/word/index.d.ts +1 -1
- package/dist/word/index.d.ts.map +1 -1
- package/dist/word/index.js +1 -1
- package/dist/word/index.js.map +1 -1
- package/dist/word/inline.d.ts +6 -1
- package/dist/word/inline.d.ts.map +1 -1
- package/dist/word/inline.js +35 -1
- package/dist/word/inline.js.map +1 -1
- package/dist/word/model.d.ts +14 -0
- package/dist/word/model.d.ts.map +1 -1
- package/dist/word/model.js.map +1 -1
- package/dist/word/template.d.ts +12 -3
- package/dist/word/template.d.ts.map +1 -1
- package/dist/word/template.js +13 -3
- package/dist/word/template.js.map +1 -1
- package/dist/word/toDocx.d.ts.map +1 -1
- package/dist/word/toDocx.js +52 -8
- package/dist/word/toDocx.js.map +1 -1
- package/dist/word/toMarkdown.d.ts +15 -1
- package/dist/word/toMarkdown.d.ts.map +1 -1
- package/dist/word/toMarkdown.js +133 -7
- package/dist/word/toMarkdown.js.map +1 -1
- package/dist/word/word.test.js +124 -2
- package/dist/word/word.test.js.map +1 -1
- package/dist/worker/fonts.d.ts +2 -1
- package/dist/worker/fonts.d.ts.map +1 -1
- package/dist/worker/fonts.js +6 -2
- package/dist/worker/fonts.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,441 @@
|
|
|
1
|
+
// Line numbers in the margin (#621). A pass over the finished layout:
|
|
2
|
+
// once a pass has placed every line and stamped its page labels, the
|
|
3
|
+
// lines are walked in reading order (page by page, column by column, top
|
|
4
|
+
// to bottom), counted, and every Nth one gets its number in a design slot
|
|
5
|
+
// of its page (`VDTPage.lineNumbers`). The numbers are painted where the
|
|
6
|
+
// layout leaves room for them and never move a line, so balancing and
|
|
7
|
+
// re-breaks cannot invalidate them: each pass counts its own layout.
|
|
8
|
+
//
|
|
9
|
+
// What is counted (`lineNumbers.count`):
|
|
10
|
+
// - `'verse'`: the lines of `:::verse` poems, once per line of verse — a
|
|
11
|
+
// turnover (`VDTLine.verseLine.turnover`, the ʿajuz of a staggered
|
|
12
|
+
// bayt) takes no number;
|
|
13
|
+
// - `'all'`: every line of body paragraphs, list items, quotations and
|
|
14
|
+
// verse.
|
|
15
|
+
// Never: headings, captions, tables and pictures, display maths, design
|
|
16
|
+
// text, notes, the contents and the index, and the text of a callout —
|
|
17
|
+
// unless the paragraph style the text is set in says `lineNumbers: true`
|
|
18
|
+
// (a style with `lineNumbers: false` is never counted).
|
|
19
|
+
//
|
|
20
|
+
// The count starts again at `lineNumbers.restart` (a chapter, a section,
|
|
21
|
+
// a page, a poem), at a `:::numbering{lines=N}` directive, and at a poem
|
|
22
|
+
// whose fence sets `lineStart=N`.
|
|
23
|
+
import { createBoundingBox, flowRectToPage, pageIsVertical, } from '../vdt';
|
|
24
|
+
import { buildFontString } from '../measure';
|
|
25
|
+
import { measureTextWidth } from '../measure/canvas';
|
|
26
|
+
import { dimensionToPx } from '../units';
|
|
27
|
+
import { formatNumeral, parseNumberFormat } from '../numbering';
|
|
28
|
+
import { isRtlScriptChar } from '../bidi';
|
|
29
|
+
import { resolvedLocale } from './config';
|
|
30
|
+
/** A whole number ≥ `min` written in a directive attribute. */
|
|
31
|
+
function wholeAttr(value, min) {
|
|
32
|
+
if (value === undefined)
|
|
33
|
+
return undefined;
|
|
34
|
+
const n = Number(value.trim());
|
|
35
|
+
return Number.isInteger(n) && n >= min ? n : undefined;
|
|
36
|
+
}
|
|
37
|
+
/** The numbering a poem's fence asks for. */
|
|
38
|
+
export function poemNumbering(attrs) {
|
|
39
|
+
const numbered = attrs?.numbered?.trim().toLowerCase();
|
|
40
|
+
const interval = wholeAttr(attrs?.interval, 1);
|
|
41
|
+
const lineStart = wholeAttr(attrs?.lineStart, 0);
|
|
42
|
+
return {
|
|
43
|
+
numbered: numbered !== 'false' && numbered !== 'no' && numbered !== '0',
|
|
44
|
+
...(interval !== undefined ? { interval } : {}),
|
|
45
|
+
...(lineStart !== undefined ? { lineStart } : {}),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/** The poem a content block sets, as numbered in the document (bayt
|
|
49
|
+
* poems, one block each, are numbered after their index). */
|
|
50
|
+
function poemKey(block, index) {
|
|
51
|
+
return block.verse?.stanza ? block.verse.stanza.poem : -1 - index;
|
|
52
|
+
}
|
|
53
|
+
/** Whether a content block opens a poem. */
|
|
54
|
+
function opensPoem(block) {
|
|
55
|
+
return block.verse !== undefined && (block.verse.stanza === undefined || block.verse.stanza.index === 0);
|
|
56
|
+
}
|
|
57
|
+
/** The events of `blocks`, by content index. */
|
|
58
|
+
function lineCountEvents(blocks) {
|
|
59
|
+
const events = new Map();
|
|
60
|
+
const push = (i, e) => {
|
|
61
|
+
const list = events.get(i);
|
|
62
|
+
if (list)
|
|
63
|
+
list.push(e);
|
|
64
|
+
else
|
|
65
|
+
events.set(i, [e]);
|
|
66
|
+
};
|
|
67
|
+
blocks.forEach((b, i) => {
|
|
68
|
+
if (b.type === 'heading' && b.level)
|
|
69
|
+
push(i, { kind: 'heading', level: b.level });
|
|
70
|
+
else if (b.type === 'directive' && b.directiveName === 'numbering') {
|
|
71
|
+
const next = wholeAttr(b.directiveAttrs?.lines, 0);
|
|
72
|
+
if (next !== undefined)
|
|
73
|
+
push(i, { kind: 'numbering', next });
|
|
74
|
+
}
|
|
75
|
+
else if (opensPoem(b)) {
|
|
76
|
+
const { lineStart } = poemNumbering(b.verse.attrs);
|
|
77
|
+
push(i, { kind: 'poem', poem: poemKey(b, i), ...(lineStart !== undefined ? { lineStart } : {}) });
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
return events;
|
|
81
|
+
}
|
|
82
|
+
/** The running count: the last number given, whether the next counted
|
|
83
|
+
* line is the first after a restart, and whether the count restarted. */
|
|
84
|
+
class LineCounter {
|
|
85
|
+
cfg;
|
|
86
|
+
value;
|
|
87
|
+
fresh;
|
|
88
|
+
restarted = false;
|
|
89
|
+
constructor(cfg, inherited) {
|
|
90
|
+
this.cfg = cfg;
|
|
91
|
+
const continues = inherited !== undefined && cfg.restart !== 'page' && cfg.restart !== 'poem';
|
|
92
|
+
this.value = continues ? inherited : cfg.startAt - 1;
|
|
93
|
+
this.fresh = !continues;
|
|
94
|
+
if (!continues && inherited !== undefined)
|
|
95
|
+
this.restarted = true;
|
|
96
|
+
}
|
|
97
|
+
/** Start again so that the next line is numbered `next`. */
|
|
98
|
+
restart(next = this.cfg.startAt) {
|
|
99
|
+
this.value = next - 1;
|
|
100
|
+
this.fresh = true;
|
|
101
|
+
this.restarted = true;
|
|
102
|
+
}
|
|
103
|
+
apply(e) {
|
|
104
|
+
if (e.kind === 'numbering')
|
|
105
|
+
this.restart(e.next);
|
|
106
|
+
else if (e.kind === 'heading') {
|
|
107
|
+
if ((this.cfg.restart === 'chapter' && e.level === 1) || (this.cfg.restart === 'section' && e.level <= 2))
|
|
108
|
+
this.restart();
|
|
109
|
+
}
|
|
110
|
+
else if (e.lineStart !== undefined)
|
|
111
|
+
this.restart(e.lineStart);
|
|
112
|
+
else if (this.cfg.restart === 'poem')
|
|
113
|
+
this.restart();
|
|
114
|
+
}
|
|
115
|
+
/** Count one line: its number, and whether it is printed. */
|
|
116
|
+
next(interval) {
|
|
117
|
+
this.value += 1;
|
|
118
|
+
const first = this.fresh;
|
|
119
|
+
this.fresh = false;
|
|
120
|
+
return { n: this.value, printed: this.value % interval === 0 || (first && this.cfg.numberFirst) };
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/** Whether the text of a paragraph style is counted: its own
|
|
124
|
+
* `lineNumbers`, else `fallback`. */
|
|
125
|
+
function styleCounts(resolved, styleId, fallback) {
|
|
126
|
+
if (!styleId)
|
|
127
|
+
return fallback;
|
|
128
|
+
const own = resolved.paragraphStyles.find((s) => s.id === styleId)?.lineNumbers;
|
|
129
|
+
return own ?? fallback;
|
|
130
|
+
}
|
|
131
|
+
/** Blocks whose lines are never counted. */
|
|
132
|
+
function neverCounted(block) {
|
|
133
|
+
return block.type === 'heading' || block.type === 'resource' || block.type === 'mathDisplay' || block.type === 'callout'
|
|
134
|
+
|| block.hidden === true || block.designOverlay !== undefined
|
|
135
|
+
|| block.footnoteNote !== undefined || block.tocEntry !== undefined || block.tocPart !== undefined
|
|
136
|
+
|| block.indexLevel !== undefined || block.bibEntry !== undefined || block.comic !== undefined;
|
|
137
|
+
}
|
|
138
|
+
/** How the lines of `block` are counted: not at all, as verse (a line of
|
|
139
|
+
* verse once, its turnovers not), or line by line (prose). */
|
|
140
|
+
function blockCounting(block, raw, resolved, cfg) {
|
|
141
|
+
if (neverCounted(block))
|
|
142
|
+
return 'none';
|
|
143
|
+
const styleId = block.paragraphStyleId;
|
|
144
|
+
// A box's text is counted only when its style opts in.
|
|
145
|
+
if (block.containerId !== undefined) {
|
|
146
|
+
if (!styleCounts(resolved, styleId, false))
|
|
147
|
+
return 'none';
|
|
148
|
+
return raw?.verse ? 'verse' : 'prose';
|
|
149
|
+
}
|
|
150
|
+
if (raw?.verse) {
|
|
151
|
+
if (!poemNumbering(raw.verse.attrs).numbered)
|
|
152
|
+
return 'none';
|
|
153
|
+
return styleCounts(resolved, styleId, true) ? 'verse' : 'none';
|
|
154
|
+
}
|
|
155
|
+
return styleCounts(resolved, styleId, cfg.count === 'all') ? 'prose' : 'none';
|
|
156
|
+
}
|
|
157
|
+
/** Whether a line of a poem takes a number: a line of verse, not a
|
|
158
|
+
* turnover or the second line of a staggered bayt. */
|
|
159
|
+
function isLineOfVerse(line) {
|
|
160
|
+
if (line.verseLine)
|
|
161
|
+
return !line.verseLine.turnover;
|
|
162
|
+
if (line.verse)
|
|
163
|
+
return line.verse.part !== 'ajuz';
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
/** The overlaps of side-column numbers with floats, per document. */
|
|
167
|
+
const overlapWarnings = new WeakMap();
|
|
168
|
+
/** The `lineNumberOverlap` warnings of the last pass laid out as `doc`. */
|
|
169
|
+
export function lineNumberWarnings(doc) {
|
|
170
|
+
return overlapWarnings.get(doc) ?? [];
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Count the lines of `doc` and set the numbers of the printed ones in
|
|
174
|
+
* `page.lineNumbers` (with `page.lineNumberMarks`), and the last number in
|
|
175
|
+
* `doc.lastLineNumber`. `blocks` are the parsed content blocks the layout
|
|
176
|
+
* was built from (`VDTBlock.contentIndex` points into them);
|
|
177
|
+
* `continuation.lineNumber` is the number the count goes on from. A
|
|
178
|
+
* vertical document gets no numbers.
|
|
179
|
+
*/
|
|
180
|
+
export function buildLineNumbers(doc, blocks, continuation) {
|
|
181
|
+
const resolved = doc.config;
|
|
182
|
+
const cfg = resolved.lineNumbers;
|
|
183
|
+
if (!cfg?.enabled || resolved.layout.writingMode === 'vertical-rl')
|
|
184
|
+
return;
|
|
185
|
+
const dpi = resolved.page.dpi;
|
|
186
|
+
const bodyPx = dimensionToPx(resolved.bodyText.fontSize, dpi);
|
|
187
|
+
const sizePx = dimensionToPx(cfg.fontSize, dpi, bodyPx);
|
|
188
|
+
const gapPx = dimensionToPx(cfg.gap, dpi, sizePx);
|
|
189
|
+
const font = buildFontString(cfg.fontFamily, sizePx, cfg.fontWeight === 400 ? 'normal' : String(cfg.fontWeight), cfg.italic ? 'italic' : 'normal');
|
|
190
|
+
const style = parseNumberFormat(cfg.format, resolvedLocale(resolved)) ?? 'decimal';
|
|
191
|
+
const events = lineCountEvents(blocks);
|
|
192
|
+
const eventIndices = [...events.keys()].sort((a, b) => a - b);
|
|
193
|
+
let nextEvent = 0;
|
|
194
|
+
const counter = new LineCounter(cfg, continuation?.lineNumber);
|
|
195
|
+
const poems = new Map();
|
|
196
|
+
const warnings = [];
|
|
197
|
+
const offset = doc.pageIndexOffset ?? 0;
|
|
198
|
+
for (const page of doc.pages) {
|
|
199
|
+
if (pageIsVertical(page))
|
|
200
|
+
continue;
|
|
201
|
+
if (cfg.restart === 'page')
|
|
202
|
+
counter.restart();
|
|
203
|
+
const pending = [];
|
|
204
|
+
for (const column of page.columns) {
|
|
205
|
+
if (column.kind === 'side')
|
|
206
|
+
continue;
|
|
207
|
+
for (const block of column.blocks) {
|
|
208
|
+
const c = block.contentIndex;
|
|
209
|
+
if (c !== undefined) {
|
|
210
|
+
while (nextEvent < eventIndices.length && eventIndices[nextEvent] <= c) {
|
|
211
|
+
for (const e of events.get(eventIndices[nextEvent]))
|
|
212
|
+
counter.apply(e);
|
|
213
|
+
nextEvent++;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
const raw = c !== undefined ? blocks[c] : undefined;
|
|
217
|
+
const counting = blockCounting(block, raw, resolved, cfg);
|
|
218
|
+
if (counting === 'none')
|
|
219
|
+
continue;
|
|
220
|
+
let interval = cfg.interval;
|
|
221
|
+
if (raw?.verse) {
|
|
222
|
+
const key = poemKey(raw, c);
|
|
223
|
+
let poem = poems.get(key);
|
|
224
|
+
if (!poem) {
|
|
225
|
+
poem = poemNumbering(raw.verse.attrs);
|
|
226
|
+
poems.set(key, poem);
|
|
227
|
+
}
|
|
228
|
+
interval = poem.interval ?? interval;
|
|
229
|
+
}
|
|
230
|
+
block.lines.forEach((line, lineIndex) => {
|
|
231
|
+
if (counting === 'verse' ? !isLineOfVerse(line) : line.text.length === 0 && !line.segments?.length)
|
|
232
|
+
return;
|
|
233
|
+
const { n, printed } = counter.next(interval);
|
|
234
|
+
if (!printed)
|
|
235
|
+
return;
|
|
236
|
+
pending.push({
|
|
237
|
+
mark: { number: n, label: formatNumeral(n, style, resolved.numerals), columnIndex: column.index, blockId: block.id, lineIndex },
|
|
238
|
+
baseline: line.baseline,
|
|
239
|
+
column,
|
|
240
|
+
line,
|
|
241
|
+
block,
|
|
242
|
+
});
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
if (pending.length > 0)
|
|
247
|
+
placeNumbers(page, pending, { cfg, resolved, font, sizePx, gapPx, offset, warnings });
|
|
248
|
+
}
|
|
249
|
+
doc.lastLineNumber = counter.value;
|
|
250
|
+
if (counter.restarted)
|
|
251
|
+
doc.lineNumberRestarted = true;
|
|
252
|
+
if (warnings.length > 0)
|
|
253
|
+
overlapWarnings.set(doc, warnings);
|
|
254
|
+
}
|
|
255
|
+
/** The physical side of a column the numbers of `position` stand on
|
|
256
|
+
* (`'side'` is placed apart). */
|
|
257
|
+
function sideFor(position, page, ctx) {
|
|
258
|
+
const recto = (page.index + ctx.offset) % 2 === 0;
|
|
259
|
+
const outerRight = recto !== (ctx.resolved.page.binding === 'right');
|
|
260
|
+
const rtl = ctx.resolved.direction === 'rtl';
|
|
261
|
+
switch (position) {
|
|
262
|
+
case 'left': return 'left';
|
|
263
|
+
case 'right': return 'right';
|
|
264
|
+
case 'inner': return outerRight ? 'left' : 'right';
|
|
265
|
+
case 'start': return rtl ? 'right' : 'left';
|
|
266
|
+
case 'end': return rtl ? 'left' : 'right';
|
|
267
|
+
default: return outerRight ? 'right' : 'left';
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
/** Set the numbers of one page in its slot. */
|
|
271
|
+
function placeNumbers(page, pending, ctx) {
|
|
272
|
+
const { cfg, font, sizePx, gapPx } = ctx;
|
|
273
|
+
const widths = pending.map((p) => measureTextWidth(p.mark.label, font));
|
|
274
|
+
const widest = Math.max(...widths);
|
|
275
|
+
const ascent = sizePx * 0.8;
|
|
276
|
+
const physical = new Map();
|
|
277
|
+
const rectOf = (col) => {
|
|
278
|
+
let r = physical.get(col);
|
|
279
|
+
if (!r) {
|
|
280
|
+
r = flowRectToPage(page, col.bbox);
|
|
281
|
+
physical.set(col, r);
|
|
282
|
+
}
|
|
283
|
+
return r;
|
|
284
|
+
};
|
|
285
|
+
const sideColumns = page.columns.filter((c) => c.kind === 'side');
|
|
286
|
+
// Text columns side by side in one band.
|
|
287
|
+
const bandColumns = (col) => page.columns
|
|
288
|
+
.filter((c) => (c.kind ?? 'text') === 'text' && (c.band ?? 0) === (col.band ?? 0))
|
|
289
|
+
.sort((a, b) => rectOf(a).x - rectOf(b).x);
|
|
290
|
+
const sideRule = (col) => {
|
|
291
|
+
const base = sideFor(cfg.position === 'side' ? 'outer' : cfg.position, page, ctx);
|
|
292
|
+
if ((col.kind ?? 'text') !== 'text')
|
|
293
|
+
return base;
|
|
294
|
+
const band = bandColumns(col);
|
|
295
|
+
if (band.length < 2)
|
|
296
|
+
return base;
|
|
297
|
+
const at = band.indexOf(col);
|
|
298
|
+
if (cfg.multiColumn === 'gutter')
|
|
299
|
+
return at === 0 ? 'right' : 'left';
|
|
300
|
+
if (cfg.multiColumn === 'outer-edges') {
|
|
301
|
+
if (at === 0)
|
|
302
|
+
return 'left';
|
|
303
|
+
if (at === band.length - 1)
|
|
304
|
+
return 'right';
|
|
305
|
+
}
|
|
306
|
+
return base;
|
|
307
|
+
};
|
|
308
|
+
// The side column beside a text column, when numbers go there.
|
|
309
|
+
const sideColumnOf = (col, baseline) => {
|
|
310
|
+
if (cfg.position !== 'side' || sideColumns.length === 0)
|
|
311
|
+
return undefined;
|
|
312
|
+
return sideColumns.find((s) => {
|
|
313
|
+
const r = rectOf(s);
|
|
314
|
+
return baseline >= r.y && baseline <= r.y + r.height;
|
|
315
|
+
}) ?? sideColumns.find((s) => (s.band ?? 0) === (col.band ?? 0)) ?? sideColumns[0];
|
|
316
|
+
};
|
|
317
|
+
const floats = cfg.position === 'side'
|
|
318
|
+
? [...(page.floats ?? []), ...sideColumns.flatMap((s) => s.blocks)].map((b) => ({ block: b, rect: flowRectToPage(page, b.bbox) }))
|
|
319
|
+
: [];
|
|
320
|
+
const textBlocks = [];
|
|
321
|
+
const marks = [];
|
|
322
|
+
pending.forEach((p, i) => {
|
|
323
|
+
const w = widths[i];
|
|
324
|
+
const col = rectOf(p.column);
|
|
325
|
+
const side = sideColumnOf(p.column, p.baseline);
|
|
326
|
+
let x;
|
|
327
|
+
if (side) {
|
|
328
|
+
const s = rectOf(side);
|
|
329
|
+
if (s.x >= col.x) {
|
|
330
|
+
// The side column on the right: flush with its left edge.
|
|
331
|
+
x = cfg.align === 'right' ? s.x + widest - w : s.x;
|
|
332
|
+
}
|
|
333
|
+
else {
|
|
334
|
+
const edge = s.x + s.width;
|
|
335
|
+
x = cfg.align === 'left' ? edge - widest : edge - w;
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
else if (sideRule(p.column) === 'left') {
|
|
339
|
+
const edge = col.x - gapPx;
|
|
340
|
+
x = cfg.align === 'left' ? edge - widest : edge - w;
|
|
341
|
+
}
|
|
342
|
+
else {
|
|
343
|
+
const edge = col.x + col.width + gapPx;
|
|
344
|
+
x = cfg.align === 'right' ? edge + widest - w : edge;
|
|
345
|
+
}
|
|
346
|
+
const bbox = createBoundingBox(x, p.baseline - ascent, w, sizePx);
|
|
347
|
+
if (side) {
|
|
348
|
+
const hit = floats.find((f) => f.rect.x < bbox.x + bbox.width && bbox.x < f.rect.x + f.rect.width
|
|
349
|
+
&& f.rect.y < bbox.y + bbox.height && bbox.y < f.rect.y + f.rect.height);
|
|
350
|
+
if (hit) {
|
|
351
|
+
const start = p.line.sourceStart ?? p.block.sourceStart;
|
|
352
|
+
const end = p.line.sourceEnd ?? p.block.sourceEnd;
|
|
353
|
+
ctx.warnings.push({
|
|
354
|
+
kind: 'lineNumberOverlap',
|
|
355
|
+
number: p.mark.label,
|
|
356
|
+
pageIndex: page.index,
|
|
357
|
+
...(start !== undefined && end !== undefined ? { sourceStart: start, sourceEnd: end } : {}),
|
|
358
|
+
});
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
const label = p.mark.label;
|
|
362
|
+
const rtl = [...label].some((ch) => isRtlScriptChar(ch.codePointAt(0)));
|
|
363
|
+
textBlocks.push({
|
|
364
|
+
kind: 'text',
|
|
365
|
+
bbox,
|
|
366
|
+
fontString: font,
|
|
367
|
+
color: cfg.color.hex,
|
|
368
|
+
lines: [{
|
|
369
|
+
text: label,
|
|
370
|
+
xOffset: 0,
|
|
371
|
+
baselineY: p.baseline,
|
|
372
|
+
width: w,
|
|
373
|
+
...(rtl ? { runs: [{ text: label, fontString: font, width: w, rtl: true }] } : {}),
|
|
374
|
+
}],
|
|
375
|
+
clip: false,
|
|
376
|
+
artifact: true,
|
|
377
|
+
...(rtl ? { direction: 'rtl' } : {}),
|
|
378
|
+
});
|
|
379
|
+
marks.push(p.mark);
|
|
380
|
+
});
|
|
381
|
+
const left = Math.min(...textBlocks.map((b) => b.bbox.x));
|
|
382
|
+
const top = Math.min(...textBlocks.map((b) => b.bbox.y));
|
|
383
|
+
const right = Math.max(...textBlocks.map((b) => b.bbox.x + b.bbox.width));
|
|
384
|
+
const bottom = Math.max(...textBlocks.map((b) => b.bbox.y + b.bbox.height));
|
|
385
|
+
page.lineNumbers = { bbox: createBoundingBox(left, top, right - left, bottom - top), blocks: textBlocks };
|
|
386
|
+
page.lineNumberMarks = marks;
|
|
387
|
+
}
|
|
388
|
+
/** Recolour the numbers of the pages whose part or section palette
|
|
389
|
+
* overrides the entry `lineNumbers.color` links to. */
|
|
390
|
+
export function recolorLineNumbers(doc, palettes) {
|
|
391
|
+
const linked = doc.config.lineNumbers?.color.paletteId;
|
|
392
|
+
if (!linked)
|
|
393
|
+
return;
|
|
394
|
+
for (const page of doc.pages) {
|
|
395
|
+
const hex = palettes[page.index]?.[linked];
|
|
396
|
+
if (!hex || !page.lineNumbers)
|
|
397
|
+
continue;
|
|
398
|
+
for (const b of page.lineNumbers.blocks)
|
|
399
|
+
if (b.kind === 'text')
|
|
400
|
+
b.color = hex;
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
/**
|
|
404
|
+
* The number of the last line of verse in `blocks` (#621), counted from
|
|
405
|
+
* `before` as the layout counts it, when `lineNumbers` counts verse: a
|
|
406
|
+
* book laid out one chapter at a time hands it on (`continuationAfter`).
|
|
407
|
+
* Undefined when the count does not depend on the text alone (line
|
|
408
|
+
* numbers off, or every line counted, which only the layout knows), so
|
|
409
|
+
* the caller keeps what it had.
|
|
410
|
+
*/
|
|
411
|
+
export function lastVerseLineNumber(blocks, resolved, before) {
|
|
412
|
+
const cfg = resolved.lineNumbers;
|
|
413
|
+
if (!cfg?.enabled || cfg.count !== 'verse' || cfg.restart === 'page' || resolved.layout.writingMode === 'vertical-rl')
|
|
414
|
+
return undefined;
|
|
415
|
+
// Prose styles that opt in are counted line by line: only the layout
|
|
416
|
+
// knows their lines.
|
|
417
|
+
if (resolved.paragraphStyles.some((s) => s.lineNumbers === true))
|
|
418
|
+
return undefined;
|
|
419
|
+
const counter = new LineCounter(cfg, before);
|
|
420
|
+
const events = lineCountEvents(blocks);
|
|
421
|
+
let insideBox = 0;
|
|
422
|
+
blocks.forEach((b, i) => {
|
|
423
|
+
for (const e of events.get(i) ?? [])
|
|
424
|
+
counter.apply(e);
|
|
425
|
+
if (b.type === 'containerStart' && b.containerName === 'callout')
|
|
426
|
+
insideBox++;
|
|
427
|
+
else if (b.type === 'containerEnd' && b.containerName === 'callout')
|
|
428
|
+
insideBox = Math.max(0, insideBox - 1);
|
|
429
|
+
if (!b.verse || !poemNumbering(b.verse.attrs).numbered)
|
|
430
|
+
return;
|
|
431
|
+
// A poem in a box is counted only when its style opts in.
|
|
432
|
+
const styleId = b.verse.attrs.style?.trim();
|
|
433
|
+
if (!styleCounts(resolved, styleId, insideBox === 0))
|
|
434
|
+
return;
|
|
435
|
+
const lines = b.verse.stanza ? b.verse.stanza.lines.length : b.text.split('\n').filter((l) => l.trim().length > 0).length;
|
|
436
|
+
for (let k = 0; k < lines; k++)
|
|
437
|
+
counter.next(1);
|
|
438
|
+
});
|
|
439
|
+
return counter.value;
|
|
440
|
+
}
|
|
441
|
+
//# sourceMappingURL=lineNumbers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lineNumbers.js","sourceRoot":"","sources":["../../src/pipeline/lineNumbers.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,9 @@ import { type BlockKind, type BlockKindContext } from './buildBlockKind';
|
|
|
17
17
|
import { type AnchorRefContext } from './resourceLayout';
|
|
18
18
|
import type { ResourceNumberingMap } from './resourceNumbering';
|
|
19
19
|
import type { CaptionCitations } from './citations';
|
|
20
|
+
import { type MeasuredDropCap } from './dropCap';
|
|
21
|
+
import { type LineInsetStep } from '../measure/types';
|
|
22
|
+
import type { VDTBlock } from '../vdt';
|
|
20
23
|
/** Everything `measureContentBlock` needs that is constant across one
|
|
21
24
|
* placement pass. Built once before the loop; `blockIdx` and the paragraph
|
|
22
25
|
* style override are per-call (see `measureContentBlock` arguments). */
|
|
@@ -52,6 +55,17 @@ export interface BlockMeasureContext extends Omit<BlockKindContext, 'blockIdx' |
|
|
|
52
55
|
* script (Arabic…), which is set without it. The build reports them
|
|
53
56
|
* (`joiningScriptLetterSpacing`). */
|
|
54
57
|
joiningLetterSpacing?: Set<number>;
|
|
58
|
+
/** Filled by the measurement: the content indices of the paragraphs a
|
|
59
|
+
* drop cap was meant to open and could not as configured (#623), and
|
|
60
|
+
* why; the build reports them (`dropCap` content warnings). */
|
|
61
|
+
dropCapNotes?: Map<number, DropCapNote>;
|
|
62
|
+
}
|
|
63
|
+
/** Why a paragraph's drop cap was not set as configured (see
|
|
64
|
+
* `BlockMeasureContext.dropCapNotes`). */
|
|
65
|
+
export interface DropCapNote {
|
|
66
|
+
reason: 'shortParagraph' | 'joiningScript' | 'verticalText' | 'noLetter' | 'split';
|
|
67
|
+
handling?: 'reserve' | 'shrink' | 'skip';
|
|
68
|
+
lines?: number;
|
|
55
69
|
}
|
|
56
70
|
export interface MeasuredContentBlock {
|
|
57
71
|
kind: BlockKind;
|
|
@@ -68,6 +82,15 @@ export interface MeasuredContentBlock {
|
|
|
68
82
|
/** Tracking the text was measured with (px per glyph), when column
|
|
69
83
|
* balancing asked for it — renderers must paint the block with it. */
|
|
70
84
|
letterSpacingPx?: number;
|
|
85
|
+
/** A paragraph a drop cap opens (#623): the letter, relative to the
|
|
86
|
+
* column. Its lines were set short of it. */
|
|
87
|
+
dropCap?: MeasuredDropCap;
|
|
88
|
+
/** A code listing (#624): its language, numbers and fit (see
|
|
89
|
+
* `VDTBlock.code`). */
|
|
90
|
+
code?: NonNullable<VDTBlock['code']>;
|
|
91
|
+
/** A code listing set from the far side of a mirrored frame (#624): its
|
|
92
|
+
* block reads left to right. */
|
|
93
|
+
direction?: 'ltr';
|
|
71
94
|
}
|
|
72
95
|
export interface MeasureContentBlockOptions {
|
|
73
96
|
/** Column-balancing "run a paragraph long" — Knuth-Plass looseness. Left
|
|
@@ -103,11 +126,21 @@ export interface MeasureContentBlockOptions {
|
|
|
103
126
|
fromLine: number;
|
|
104
127
|
columnWidth: number;
|
|
105
128
|
}[];
|
|
129
|
+
/** Lines set short beside a picture that text wraps round (#627, see
|
|
130
|
+
* `MeasureBlockOptions.lineInsets`): `startInsetPx` is the room the
|
|
131
|
+
* picture takes on the column's left in the flow, `endInsetPx` on its
|
|
132
|
+
* right; both add to the block's own indents. Such a measurement is not
|
|
133
|
+
* cached. */
|
|
134
|
+
lineInsets?: readonly LineInsetStep[];
|
|
135
|
+
/** Internal to the drop cap (#623): the paragraph measured again set
|
|
136
|
+
* without it (`skip`), with the initial over `lines` lines (a short
|
|
137
|
+
* paragraph's `'shrink'`), or with a lead-in of `leadInWords` words
|
|
138
|
+
* (the first line's, counted by the first setting). */
|
|
139
|
+
dropCap?: {
|
|
140
|
+
skip?: true;
|
|
141
|
+
lines?: number;
|
|
142
|
+
leadInWords?: number;
|
|
143
|
+
};
|
|
106
144
|
}
|
|
107
|
-
/**
|
|
108
|
-
* Resolve and measure one content block at `columnWidth`. Returns `null` when
|
|
109
|
-
* there is nothing to place inline: empty text, an unknown resource id, or a
|
|
110
|
-
* resource that floats to a page band.
|
|
111
|
-
*/
|
|
112
145
|
export declare function measureContentBlock(rawBlock: ContentBlock, blockIdx: number, columnWidth: number, ctx: BlockMeasureContext, opts?: MeasureContentBlockOptions): MeasuredContentBlock | null;
|
|
113
146
|
//# sourceMappingURL=measureContentBlock.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"measureContentBlock.d.ts","sourceRoot":"","sources":["../../src/pipeline/measureContentBlock.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,KAAK,EAAE,qBAAqB,EAAW,MAAM,QAAQ,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAO3C,OAAO,EAA+C,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"measureContentBlock.d.ts","sourceRoot":"","sources":["../../src/pipeline/measureContentBlock.ts"],"names":[],"mappings":"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"}
|