@tscaps/engine 0.1.1 → 0.3.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/README.md +48 -10
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/modules/bidi/BidiAnalyzer.d.ts +23 -0
- package/dist/modules/bidi/BidiAnalyzer.d.ts.map +1 -0
- package/dist/modules/bidi/BidiAnalyzer.js +2 -0
- package/dist/modules/bidi/BidiAnalyzer.js.map +1 -0
- package/dist/modules/bidi/BidiCharacterClassifier.d.ts +13 -0
- package/dist/modules/bidi/BidiCharacterClassifier.d.ts.map +1 -0
- package/dist/modules/bidi/BidiCharacterClassifier.js +2 -0
- package/dist/modules/bidi/BidiCharacterClassifier.js.map +1 -0
- package/dist/modules/bidi/BidiJsAnalyzer.d.ts +14 -0
- package/dist/modules/bidi/BidiJsAnalyzer.d.ts.map +1 -0
- package/dist/modules/bidi/BidiJsAnalyzer.js +19 -0
- package/dist/modules/bidi/BidiJsAnalyzer.js.map +1 -0
- package/dist/modules/bidi/BidiJsCharacterClassifier.d.ts +8 -0
- package/dist/modules/bidi/BidiJsCharacterClassifier.d.ts.map +1 -0
- package/dist/modules/bidi/BidiJsCharacterClassifier.js +19 -0
- package/dist/modules/bidi/BidiJsCharacterClassifier.js.map +1 -0
- package/dist/modules/bidi/CursiveScriptDetector.d.ts +12 -0
- package/dist/modules/bidi/CursiveScriptDetector.d.ts.map +1 -0
- package/dist/modules/bidi/CursiveScriptDetector.js +20 -0
- package/dist/modules/bidi/CursiveScriptDetector.js.map +1 -0
- package/dist/modules/bidi/HorizontalSide.d.ts +18 -0
- package/dist/modules/bidi/HorizontalSide.d.ts.map +1 -0
- package/dist/modules/bidi/HorizontalSide.js +3 -0
- package/dist/modules/bidi/HorizontalSide.js.map +1 -0
- package/dist/modules/bidi/HorizontalSideResolver.d.ts +21 -0
- package/dist/modules/bidi/HorizontalSideResolver.d.ts.map +1 -0
- package/dist/modules/bidi/HorizontalSideResolver.js +27 -0
- package/dist/modules/bidi/HorizontalSideResolver.js.map +1 -0
- package/dist/modules/bidi/StrongCharacterMajorityTextDirectionDetector.d.ts +24 -0
- package/dist/modules/bidi/StrongCharacterMajorityTextDirectionDetector.d.ts.map +1 -0
- package/dist/modules/bidi/StrongCharacterMajorityTextDirectionDetector.js +34 -0
- package/dist/modules/bidi/StrongCharacterMajorityTextDirectionDetector.js.map +1 -0
- package/dist/modules/bidi/TextDirection.d.ts +9 -0
- package/dist/modules/bidi/TextDirection.d.ts.map +1 -0
- package/dist/modules/bidi/TextDirection.js +2 -0
- package/dist/modules/bidi/TextDirection.js.map +1 -0
- package/dist/modules/bidi/TextDirectionDetector.d.ts +12 -0
- package/dist/modules/bidi/TextDirectionDetector.d.ts.map +1 -0
- package/dist/modules/bidi/TextDirectionDetector.js +2 -0
- package/dist/modules/bidi/TextDirectionDetector.js.map +1 -0
- package/dist/modules/bidi/WordFragment.d.ts +34 -0
- package/dist/modules/bidi/WordFragment.d.ts.map +1 -0
- package/dist/modules/bidi/WordFragment.js +2 -0
- package/dist/modules/bidi/WordFragment.js.map +1 -0
- package/dist/modules/bidi/WordFragmenter.d.ts +43 -0
- package/dist/modules/bidi/WordFragmenter.d.ts.map +1 -0
- package/dist/modules/bidi/WordFragmenter.js +112 -0
- package/dist/modules/bidi/WordFragmenter.js.map +1 -0
- package/dist/modules/bidi/index.d.ts +14 -0
- package/dist/modules/bidi/index.d.ts.map +1 -0
- package/dist/modules/bidi/index.js +8 -0
- package/dist/modules/bidi/index.js.map +1 -0
- package/dist/modules/css/CssBlockSealer.d.ts +30 -0
- package/dist/modules/css/CssBlockSealer.d.ts.map +1 -0
- package/dist/modules/css/CssBlockSealer.js +64 -0
- package/dist/modules/css/CssBlockSealer.js.map +1 -0
- package/dist/modules/css/CssCustomPropertyDefinitionScanner.d.ts +13 -0
- package/dist/modules/css/CssCustomPropertyDefinitionScanner.d.ts.map +1 -0
- package/dist/modules/css/CssCustomPropertyDefinitionScanner.js +24 -0
- package/dist/modules/css/CssCustomPropertyDefinitionScanner.js.map +1 -0
- package/dist/modules/css/CssFilterReferenceScanner.d.ts +15 -0
- package/dist/modules/css/CssFilterReferenceScanner.d.ts.map +1 -0
- package/dist/modules/css/CssFilterReferenceScanner.js +22 -0
- package/dist/modules/css/CssFilterReferenceScanner.js.map +1 -0
- package/dist/modules/css/CssFragmentParser.d.ts +53 -0
- package/dist/modules/css/CssFragmentParser.d.ts.map +1 -0
- package/dist/modules/css/CssFragmentParser.js +127 -0
- package/dist/modules/css/CssFragmentParser.js.map +1 -0
- package/dist/modules/css/CssKeyframeNamespacer.d.ts +21 -0
- package/dist/modules/css/CssKeyframeNamespacer.d.ts.map +1 -0
- package/dist/modules/css/CssKeyframeNamespacer.js +48 -0
- package/dist/modules/css/CssKeyframeNamespacer.js.map +1 -0
- package/dist/modules/css/CssKeyframesScanner.d.ts +29 -0
- package/dist/modules/css/CssKeyframesScanner.d.ts.map +1 -0
- package/dist/modules/css/CssKeyframesScanner.js +102 -0
- package/dist/modules/css/CssKeyframesScanner.js.map +1 -0
- package/dist/modules/css/CssLayer.d.ts +20 -0
- package/dist/modules/css/CssLayer.d.ts.map +1 -0
- package/dist/modules/css/CssLayer.js +21 -0
- package/dist/modules/css/CssLayer.js.map +1 -0
- package/dist/modules/css/CssScoper.d.ts +31 -2
- package/dist/modules/css/CssScoper.d.ts.map +1 -1
- package/dist/modules/css/CssScoper.js +168 -79
- package/dist/modules/css/CssScoper.js.map +1 -1
- package/dist/modules/css/CssSelectorClassScanner.d.ts +25 -0
- package/dist/modules/css/CssSelectorClassScanner.d.ts.map +1 -0
- package/dist/modules/css/CssSelectorClassScanner.js +91 -0
- package/dist/modules/css/CssSelectorClassScanner.js.map +1 -0
- package/dist/modules/css/CssVarReferenceScanner.d.ts +16 -0
- package/dist/modules/css/CssVarReferenceScanner.d.ts.map +1 -0
- package/dist/modules/css/CssVarReferenceScanner.js +27 -0
- package/dist/modules/css/CssVarReferenceScanner.js.map +1 -0
- package/dist/modules/css/index.d.ts +9 -0
- package/dist/modules/css/index.d.ts.map +1 -1
- package/dist/modules/css/index.js +9 -0
- package/dist/modules/css/index.js.map +1 -1
- package/dist/modules/document/CssClass.d.ts +20 -0
- package/dist/modules/document/CssClass.d.ts.map +1 -0
- package/dist/modules/document/CssClass.js +21 -0
- package/dist/modules/document/CssClass.js.map +1 -0
- package/dist/modules/document/CssVariable.d.ts +21 -6
- package/dist/modules/document/CssVariable.d.ts.map +1 -1
- package/dist/modules/document/CssVariable.js +27 -5
- package/dist/modules/document/CssVariable.js.map +1 -1
- package/dist/modules/document/DataAttribute.d.ts +26 -0
- package/dist/modules/document/DataAttribute.d.ts.map +1 -0
- package/dist/modules/document/DataAttribute.js +27 -0
- package/dist/modules/document/DataAttribute.js.map +1 -0
- package/dist/modules/document/Decoration.d.ts +42 -0
- package/dist/modules/document/Decoration.d.ts.map +1 -0
- package/dist/modules/document/Decoration.js +52 -0
- package/dist/modules/document/Decoration.js.map +1 -0
- package/dist/modules/document/Document.d.ts.map +1 -1
- package/dist/modules/document/Document.js +0 -3
- package/dist/modules/document/Document.js.map +1 -1
- package/dist/modules/document/DocumentEditor.d.ts +51 -9
- package/dist/modules/document/DocumentEditor.d.ts.map +1 -1
- package/dist/modules/document/DocumentEditor.js +118 -26
- package/dist/modules/document/DocumentEditor.js.map +1 -1
- package/dist/modules/document/DocumentNodeId.d.ts +23 -0
- package/dist/modules/document/DocumentNodeId.d.ts.map +1 -0
- package/dist/modules/document/DocumentNodeId.js +31 -0
- package/dist/modules/document/DocumentNodeId.js.map +1 -0
- package/dist/modules/document/Line.d.ts +10 -7
- package/dist/modules/document/Line.d.ts.map +1 -1
- package/dist/modules/document/Line.js +13 -25
- package/dist/modules/document/Line.js.map +1 -1
- package/dist/modules/document/Section.d.ts +1 -8
- package/dist/modules/document/Section.d.ts.map +1 -1
- package/dist/modules/document/Section.js +4 -35
- package/dist/modules/document/Section.js.map +1 -1
- package/dist/modules/document/Segment.d.ts +24 -14
- package/dist/modules/document/Segment.d.ts.map +1 -1
- package/dist/modules/document/Segment.js +41 -23
- package/dist/modules/document/Segment.js.map +1 -1
- package/dist/modules/document/Word.d.ts +21 -8
- package/dist/modules/document/Word.d.ts.map +1 -1
- package/dist/modules/document/Word.js +34 -35
- package/dist/modules/document/Word.js.map +1 -1
- package/dist/modules/document/index.d.ts +5 -2
- package/dist/modules/document/index.d.ts.map +1 -1
- package/dist/modules/document/index.js +4 -1
- package/dist/modules/document/index.js.map +1 -1
- package/dist/modules/effect/CarryQuotesEffect.d.ts +1 -7
- package/dist/modules/effect/CarryQuotesEffect.d.ts.map +1 -1
- package/dist/modules/effect/CarryQuotesEffect.js +17 -30
- package/dist/modules/effect/CarryQuotesEffect.js.map +1 -1
- package/dist/modules/effect/GapFreeEffect.d.ts +15 -0
- package/dist/modules/effect/GapFreeEffect.d.ts.map +1 -1
- package/dist/modules/effect/GapFreeEffect.js +29 -4
- package/dist/modules/effect/GapFreeEffect.js.map +1 -1
- package/dist/modules/effect/RemovePunctuationEffect.d.ts +10 -2
- package/dist/modules/effect/RemovePunctuationEffect.d.ts.map +1 -1
- package/dist/modules/effect/RemovePunctuationEffect.js +26 -6
- package/dist/modules/effect/RemovePunctuationEffect.js.map +1 -1
- package/dist/modules/effect/SmartLowercaseEffect.d.ts +7 -6
- package/dist/modules/effect/SmartLowercaseEffect.d.ts.map +1 -1
- package/dist/modules/effect/SmartLowercaseEffect.js +11 -7
- package/dist/modules/effect/SmartLowercaseEffect.js.map +1 -1
- package/dist/modules/pipeline/RenderPipelineBuilder.d.ts +3 -3
- package/dist/modules/pipeline/RenderPipelineBuilder.d.ts.map +1 -1
- package/dist/modules/pipeline/RenderPipelineBuilder.js +13 -8
- package/dist/modules/pipeline/RenderPipelineBuilder.js.map +1 -1
- package/dist/modules/rendering/BrowserSubtitleFrameRenderer.d.ts +19 -25
- package/dist/modules/rendering/BrowserSubtitleFrameRenderer.d.ts.map +1 -1
- package/dist/modules/rendering/BrowserSubtitleFrameRenderer.js +43 -717
- package/dist/modules/rendering/BrowserSubtitleFrameRenderer.js.map +1 -1
- package/dist/modules/rendering/HorizontalPlacementResolver.d.ts +27 -0
- package/dist/modules/rendering/HorizontalPlacementResolver.d.ts.map +1 -0
- package/dist/modules/rendering/HorizontalPlacementResolver.js +31 -0
- package/dist/modules/rendering/HorizontalPlacementResolver.js.map +1 -0
- package/dist/modules/rendering/SubtitleFrameRenderer.d.ts +10 -5
- package/dist/modules/rendering/SubtitleFrameRenderer.d.ts.map +1 -1
- package/dist/modules/rendering/index.d.ts +16 -8
- package/dist/modules/rendering/index.d.ts.map +1 -1
- package/dist/modules/rendering/index.js +8 -2
- package/dist/modules/rendering/index.js.map +1 -1
- package/dist/modules/rendering/styles/BaselineCssComposer.d.ts +41 -0
- package/dist/modules/rendering/styles/BaselineCssComposer.d.ts.map +1 -0
- package/dist/modules/rendering/styles/BaselineCssComposer.js +64 -0
- package/dist/modules/rendering/styles/BaselineCssComposer.js.map +1 -0
- package/dist/modules/rendering/styles/DecorationContainerBaselineCss.d.ts +7 -0
- package/dist/modules/rendering/styles/DecorationContainerBaselineCss.d.ts.map +1 -0
- package/dist/modules/rendering/styles/DecorationContainerBaselineCss.js +35 -0
- package/dist/modules/rendering/styles/DecorationContainerBaselineCss.js.map +1 -0
- package/dist/modules/rendering/styles/FrozenFrameCss.d.ts +28 -0
- package/dist/modules/rendering/styles/FrozenFrameCss.d.ts.map +1 -0
- package/dist/modules/rendering/styles/FrozenFrameCss.js +28 -0
- package/dist/modules/rendering/styles/FrozenFrameCss.js.map +1 -0
- package/dist/modules/rendering/styles/InlineStyleEmitter.d.ts +20 -0
- package/dist/modules/rendering/styles/InlineStyleEmitter.d.ts.map +1 -0
- package/dist/modules/rendering/styles/InlineStyleEmitter.js +44 -0
- package/dist/modules/rendering/styles/InlineStyleEmitter.js.map +1 -0
- package/dist/modules/rendering/styles/SegmentPaddingCssRuleBuilder.d.ts +15 -0
- package/dist/modules/rendering/styles/SegmentPaddingCssRuleBuilder.d.ts.map +1 -0
- package/dist/modules/rendering/styles/SegmentPaddingCssRuleBuilder.js +33 -0
- package/dist/modules/rendering/styles/SegmentPaddingCssRuleBuilder.js.map +1 -0
- package/dist/modules/rendering/{VideoFrameLayerClass.d.ts → styles/VideoFrameLayerBaselineCss.d.ts} +3 -10
- package/dist/modules/rendering/styles/VideoFrameLayerBaselineCss.d.ts.map +1 -0
- package/dist/modules/rendering/styles/VideoFrameLayerBaselineCss.js +15 -0
- package/dist/modules/rendering/styles/VideoFrameLayerBaselineCss.js.map +1 -0
- package/dist/modules/rendering/subtitle/AbstractAnim.d.ts +13 -0
- package/dist/modules/rendering/subtitle/AbstractAnim.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/AbstractAnim.js +2 -0
- package/dist/modules/rendering/subtitle/AbstractAnim.js.map +1 -0
- package/dist/modules/rendering/subtitle/ActiveRenderSession.d.ts +20 -0
- package/dist/modules/rendering/subtitle/ActiveRenderSession.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/ActiveRenderSession.js +31 -0
- package/dist/modules/rendering/subtitle/ActiveRenderSession.js.map +1 -0
- package/dist/modules/rendering/subtitle/ActiveRenderSessionFactory.d.ts +21 -0
- package/dist/modules/rendering/subtitle/ActiveRenderSessionFactory.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/ActiveRenderSessionFactory.js +46 -0
- package/dist/modules/rendering/subtitle/ActiveRenderSessionFactory.js.map +1 -0
- package/dist/modules/rendering/subtitle/AnimationProbe.d.ts +39 -0
- package/dist/modules/rendering/subtitle/AnimationProbe.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/AnimationProbe.js +203 -0
- package/dist/modules/rendering/subtitle/AnimationProbe.js.map +1 -0
- package/dist/modules/rendering/subtitle/AssetGroupBuilder.d.ts +15 -0
- package/dist/modules/rendering/subtitle/AssetGroupBuilder.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/AssetGroupBuilder.js +26 -0
- package/dist/modules/rendering/subtitle/AssetGroupBuilder.js.map +1 -0
- package/dist/modules/rendering/subtitle/BatchPlan.d.ts +32 -0
- package/dist/modules/rendering/subtitle/BatchPlan.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/BatchPlan.js +2 -0
- package/dist/modules/rendering/subtitle/BatchPlan.js.map +1 -0
- package/dist/modules/rendering/subtitle/BatchPlanner.d.ts +32 -0
- package/dist/modules/rendering/subtitle/BatchPlanner.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/BatchPlanner.js +93 -0
- package/dist/modules/rendering/subtitle/BatchPlanner.js.map +1 -0
- package/dist/modules/rendering/subtitle/PreparedStyle.d.ts +36 -0
- package/dist/modules/rendering/subtitle/PreparedStyle.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/PreparedStyle.js +2 -0
- package/dist/modules/rendering/subtitle/PreparedStyle.js.map +1 -0
- package/dist/modules/rendering/subtitle/PreparedStyleFactory.d.ts +31 -0
- package/dist/modules/rendering/subtitle/PreparedStyleFactory.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/PreparedStyleFactory.js +91 -0
- package/dist/modules/rendering/subtitle/PreparedStyleFactory.js.map +1 -0
- package/dist/modules/rendering/subtitle/SegmentPaintRegionCache.d.ts +13 -0
- package/dist/modules/rendering/subtitle/SegmentPaintRegionCache.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/SegmentPaintRegionCache.js +24 -0
- package/dist/modules/rendering/subtitle/SegmentPaintRegionCache.js.map +1 -0
- package/dist/modules/rendering/{SegmentPaintRegionResolver.d.ts → subtitle/SegmentPaintRegionResolver.d.ts} +1 -1
- package/dist/modules/rendering/subtitle/SegmentPaintRegionResolver.d.ts.map +1 -0
- package/dist/modules/rendering/{SegmentPaintRegionResolver.js → subtitle/SegmentPaintRegionResolver.js} +7 -4
- package/dist/modules/rendering/subtitle/SegmentPaintRegionResolver.js.map +1 -0
- package/dist/modules/rendering/subtitle/SegmentSubtreeDecomposer.d.ts +45 -0
- package/dist/modules/rendering/subtitle/SegmentSubtreeDecomposer.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/SegmentSubtreeDecomposer.js +50 -0
- package/dist/modules/rendering/subtitle/SegmentSubtreeDecomposer.js.map +1 -0
- package/dist/modules/rendering/subtitle/SegmentSubtreeHtmlBuilder.d.ts +108 -0
- package/dist/modules/rendering/subtitle/SegmentSubtreeHtmlBuilder.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/SegmentSubtreeHtmlBuilder.js +246 -0
- package/dist/modules/rendering/subtitle/SegmentSubtreeHtmlBuilder.js.map +1 -0
- package/dist/modules/rendering/subtitle/SegmentWrapperRenderer.d.ts +40 -0
- package/dist/modules/rendering/subtitle/SegmentWrapperRenderer.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/SegmentWrapperRenderer.js +132 -0
- package/dist/modules/rendering/subtitle/SegmentWrapperRenderer.js.map +1 -0
- package/dist/modules/rendering/subtitle/SpriteSheetCompositor.d.ts +48 -0
- package/dist/modules/rendering/subtitle/SpriteSheetCompositor.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/SpriteSheetCompositor.js +143 -0
- package/dist/modules/rendering/subtitle/SpriteSheetCompositor.js.map +1 -0
- package/dist/modules/rendering/subtitle/SpriteSheetSizeProber.d.ts +17 -0
- package/dist/modules/rendering/subtitle/SpriteSheetSizeProber.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/SpriteSheetSizeProber.js +58 -0
- package/dist/modules/rendering/subtitle/SpriteSheetSizeProber.js.map +1 -0
- package/dist/modules/rendering/subtitle/SvgFilterMaterializer.d.ts +20 -0
- package/dist/modules/rendering/subtitle/SvgFilterMaterializer.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/SvgFilterMaterializer.js +30 -0
- package/dist/modules/rendering/subtitle/SvgFilterMaterializer.js.map +1 -0
- package/dist/modules/rendering/subtitle/VideoFrameVarsBuilder.d.ts +42 -0
- package/dist/modules/rendering/subtitle/VideoFrameVarsBuilder.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/VideoFrameVarsBuilder.js +121 -0
- package/dist/modules/rendering/subtitle/VideoFrameVarsBuilder.js.map +1 -0
- package/dist/modules/rendering/types/AlignmentConfig.d.ts +33 -0
- package/dist/modules/rendering/types/AlignmentConfig.d.ts.map +1 -0
- package/dist/modules/rendering/types/AlignmentConfig.js +3 -0
- package/dist/modules/rendering/types/AlignmentConfig.js.map +1 -0
- package/dist/modules/rendering/types/BoxEdges.d.ts.map +1 -0
- package/dist/modules/rendering/types/BoxEdges.js.map +1 -0
- package/dist/modules/rendering/types/DecorationPlacementSide.d.ts +8 -0
- package/dist/modules/rendering/types/DecorationPlacementSide.d.ts.map +1 -0
- package/dist/modules/rendering/types/DecorationPlacementSide.js +2 -0
- package/dist/modules/rendering/types/DecorationPlacementSide.js.map +1 -0
- package/dist/modules/rendering/types/ElementRenderOverrides.d.ts +23 -0
- package/dist/modules/rendering/types/ElementRenderOverrides.d.ts.map +1 -0
- package/dist/modules/rendering/types/ElementRenderOverrides.js +52 -0
- package/dist/modules/rendering/types/ElementRenderOverrides.js.map +1 -0
- package/dist/modules/rendering/types/InlineStyleMap.d.ts.map +1 -0
- package/dist/modules/rendering/types/InlineStyleMap.js.map +1 -0
- package/dist/modules/rendering/{RenderingConfig.d.ts → types/RenderingConfig.d.ts} +8 -1
- package/dist/modules/rendering/types/RenderingConfig.d.ts.map +1 -0
- package/dist/modules/rendering/types/RenderingConfig.js.map +1 -0
- package/dist/modules/rendering/types/ScopedRenderOverride.d.ts +24 -0
- package/dist/modules/rendering/types/ScopedRenderOverride.d.ts.map +1 -0
- package/dist/modules/rendering/types/ScopedRenderOverride.js.map +1 -0
- package/dist/modules/rendering/types/VideoFrameSource.d.ts.map +1 -0
- package/dist/modules/rendering/types/VideoFrameSource.js.map +1 -0
- package/dist/modules/splitting/BoundaryScoreLimitByCharsSegmentSplitter.d.ts +33 -0
- package/dist/modules/splitting/BoundaryScoreLimitByCharsSegmentSplitter.d.ts.map +1 -0
- package/dist/modules/splitting/BoundaryScoreLimitByCharsSegmentSplitter.js +100 -0
- package/dist/modules/splitting/BoundaryScoreLimitByCharsSegmentSplitter.js.map +1 -0
- package/dist/modules/splitting/FixedTailLineSplitter.d.ts +29 -0
- package/dist/modules/splitting/FixedTailLineSplitter.d.ts.map +1 -0
- package/dist/modules/splitting/FixedTailLineSplitter.js +43 -0
- package/dist/modules/splitting/FixedTailLineSplitter.js.map +1 -0
- package/dist/modules/splitting/index.d.ts +4 -0
- package/dist/modules/splitting/index.d.ts.map +1 -1
- package/dist/modules/splitting/index.js +2 -0
- package/dist/modules/splitting/index.js.map +1 -1
- package/dist/modules/subtitle-file/AssSubtitleFileSerializer.d.ts +53 -0
- package/dist/modules/subtitle-file/AssSubtitleFileSerializer.d.ts.map +1 -0
- package/dist/modules/subtitle-file/AssSubtitleFileSerializer.js +133 -0
- package/dist/modules/subtitle-file/AssSubtitleFileSerializer.js.map +1 -0
- package/dist/modules/subtitle-file/SbvSubtitleFileSerializer.d.ts +20 -0
- package/dist/modules/subtitle-file/SbvSubtitleFileSerializer.d.ts.map +1 -0
- package/dist/modules/subtitle-file/SbvSubtitleFileSerializer.js +31 -0
- package/dist/modules/subtitle-file/SbvSubtitleFileSerializer.js.map +1 -0
- package/dist/modules/subtitle-file/SrtSubtitleFileSerializer.d.ts +21 -0
- package/dist/modules/subtitle-file/SrtSubtitleFileSerializer.d.ts.map +1 -0
- package/dist/modules/subtitle-file/SrtSubtitleFileSerializer.js +33 -0
- package/dist/modules/subtitle-file/SrtSubtitleFileSerializer.js.map +1 -0
- package/dist/modules/subtitle-file/SubtitleCue.d.ts +18 -0
- package/dist/modules/subtitle-file/SubtitleCue.d.ts.map +1 -0
- package/dist/modules/subtitle-file/SubtitleCue.js +20 -0
- package/dist/modules/subtitle-file/SubtitleCue.js.map +1 -0
- package/dist/modules/subtitle-file/SubtitleCueBuilder.d.ts +38 -0
- package/dist/modules/subtitle-file/SubtitleCueBuilder.d.ts.map +1 -0
- package/dist/modules/subtitle-file/SubtitleCueBuilder.js +106 -0
- package/dist/modules/subtitle-file/SubtitleCueBuilder.js.map +1 -0
- package/dist/modules/subtitle-file/SubtitleFileJob.d.ts +17 -0
- package/dist/modules/subtitle-file/SubtitleFileJob.d.ts.map +1 -0
- package/dist/modules/subtitle-file/SubtitleFileJob.js +2 -0
- package/dist/modules/subtitle-file/SubtitleFileJob.js.map +1 -0
- package/dist/modules/subtitle-file/SubtitleFileSerializer.d.ts +36 -0
- package/dist/modules/subtitle-file/SubtitleFileSerializer.d.ts.map +1 -0
- package/dist/modules/subtitle-file/SubtitleFileSerializer.js +44 -0
- package/dist/modules/subtitle-file/SubtitleFileSerializer.js.map +1 -0
- package/dist/modules/subtitle-file/SubtitleGranularity.d.ts +11 -0
- package/dist/modules/subtitle-file/SubtitleGranularity.d.ts.map +1 -0
- package/dist/modules/subtitle-file/SubtitleGranularity.js +2 -0
- package/dist/modules/subtitle-file/SubtitleGranularity.js.map +1 -0
- package/dist/modules/subtitle-file/SubtitleRow.d.ts +11 -0
- package/dist/modules/subtitle-file/SubtitleRow.d.ts.map +1 -0
- package/dist/modules/subtitle-file/SubtitleRow.js +14 -0
- package/dist/modules/subtitle-file/SubtitleRow.js.map +1 -0
- package/dist/modules/subtitle-file/SubtitleToken.d.ts +13 -0
- package/dist/modules/subtitle-file/SubtitleToken.d.ts.map +1 -0
- package/dist/modules/subtitle-file/SubtitleToken.js +15 -0
- package/dist/modules/subtitle-file/SubtitleToken.js.map +1 -0
- package/dist/modules/subtitle-file/TextSubtitleFileSerializer.d.ts +19 -0
- package/dist/modules/subtitle-file/TextSubtitleFileSerializer.d.ts.map +1 -0
- package/dist/modules/subtitle-file/TextSubtitleFileSerializer.js +24 -0
- package/dist/modules/subtitle-file/TextSubtitleFileSerializer.js.map +1 -0
- package/dist/modules/subtitle-file/Timecode.d.ts +20 -0
- package/dist/modules/subtitle-file/Timecode.d.ts.map +1 -0
- package/dist/modules/subtitle-file/Timecode.js +32 -0
- package/dist/modules/subtitle-file/Timecode.js.map +1 -0
- package/dist/modules/subtitle-file/TtmlSubtitleFileSerializer.d.ts +22 -0
- package/dist/modules/subtitle-file/TtmlSubtitleFileSerializer.d.ts.map +1 -0
- package/dist/modules/subtitle-file/TtmlSubtitleFileSerializer.js +57 -0
- package/dist/modules/subtitle-file/TtmlSubtitleFileSerializer.js.map +1 -0
- package/dist/modules/subtitle-file/VttSubtitleFileSerializer.d.ts +21 -0
- package/dist/modules/subtitle-file/VttSubtitleFileSerializer.d.ts.map +1 -0
- package/dist/modules/subtitle-file/VttSubtitleFileSerializer.js +39 -0
- package/dist/modules/subtitle-file/VttSubtitleFileSerializer.js.map +1 -0
- package/dist/modules/subtitle-file/index.d.ts +10 -0
- package/dist/modules/subtitle-file/index.d.ts.map +1 -0
- package/dist/modules/subtitle-file/index.js +8 -0
- package/dist/modules/subtitle-file/index.js.map +1 -0
- package/dist/modules/svg-filter/SvgFilter.d.ts +8 -1
- package/dist/modules/svg-filter/SvgFilter.d.ts.map +1 -1
- package/dist/modules/svg-filter/SvgFilter.js +9 -1
- package/dist/modules/svg-filter/SvgFilter.js.map +1 -1
- package/dist/modules/svg-filter/SvgFilterDefinitionsParser.d.ts +1 -0
- package/dist/modules/svg-filter/SvgFilterDefinitionsParser.d.ts.map +1 -1
- package/dist/modules/svg-filter/SvgFilterDefinitionsParser.js +9 -1
- package/dist/modules/svg-filter/SvgFilterDefinitionsParser.js.map +1 -1
- package/dist/modules/svg-filter/SvgFilterDefsRenderer.d.ts +44 -0
- package/dist/modules/svg-filter/SvgFilterDefsRenderer.d.ts.map +1 -0
- package/dist/modules/svg-filter/SvgFilterDefsRenderer.js +47 -0
- package/dist/modules/svg-filter/SvgFilterDefsRenderer.js.map +1 -0
- package/dist/modules/svg-filter/index.d.ts +2 -0
- package/dist/modules/svg-filter/index.d.ts.map +1 -1
- package/dist/modules/svg-filter/index.js +1 -0
- package/dist/modules/svg-filter/index.js.map +1 -1
- package/dist/modules/tagging/PauseTagger.d.ts +24 -0
- package/dist/modules/tagging/PauseTagger.d.ts.map +1 -0
- package/dist/modules/tagging/PauseTagger.js +42 -0
- package/dist/modules/tagging/PauseTagger.js.map +1 -0
- package/dist/modules/tagging/RegexTagger.js +1 -1
- package/dist/modules/tagging/RegexTagger.js.map +1 -1
- package/dist/modules/tagging/SpanTagger.js +1 -1
- package/dist/modules/tagging/SpanTagger.js.map +1 -1
- package/dist/modules/tagging/StructureTagger.d.ts +1 -2
- package/dist/modules/tagging/StructureTagger.d.ts.map +1 -1
- package/dist/modules/tagging/StructureTagger.js +12 -11
- package/dist/modules/tagging/StructureTagger.js.map +1 -1
- package/dist/modules/tagging/WordlistTagger.js +1 -1
- package/dist/modules/tagging/WordlistTagger.js.map +1 -1
- package/dist/modules/tagging/index.d.ts +2 -0
- package/dist/modules/tagging/index.d.ts.map +1 -1
- package/dist/modules/tagging/index.js +1 -0
- package/dist/modules/tagging/index.js.map +1 -1
- package/dist/modules/tags/AndTagCondition.d.ts +10 -0
- package/dist/modules/tags/AndTagCondition.d.ts.map +1 -0
- package/dist/modules/tags/AndTagCondition.js +14 -0
- package/dist/modules/tags/AndTagCondition.js.map +1 -0
- package/dist/modules/tags/HasTagCondition.d.ts +10 -0
- package/dist/modules/tags/HasTagCondition.d.ts.map +1 -0
- package/dist/modules/tags/HasTagCondition.js +18 -0
- package/dist/modules/tags/HasTagCondition.js.map +1 -0
- package/dist/modules/tags/NotTagCondition.d.ts +10 -0
- package/dist/modules/tags/NotTagCondition.d.ts.map +1 -0
- package/dist/modules/tags/NotTagCondition.js +14 -0
- package/dist/modules/tags/NotTagCondition.js.map +1 -0
- package/dist/modules/tags/OrTagCondition.d.ts +10 -0
- package/dist/modules/tags/OrTagCondition.d.ts.map +1 -0
- package/dist/modules/tags/OrTagCondition.js +14 -0
- package/dist/modules/tags/OrTagCondition.js.map +1 -0
- package/dist/modules/{document/Tag.d.ts → tags/StructureTag.d.ts} +4 -10
- package/dist/modules/tags/StructureTag.d.ts.map +1 -0
- package/dist/modules/{document/Tag.js → tags/StructureTag.js} +4 -19
- package/dist/modules/tags/StructureTag.js.map +1 -0
- package/dist/modules/tags/Tag.d.ts +8 -0
- package/dist/modules/tags/Tag.d.ts.map +1 -0
- package/dist/modules/tags/Tag.js +16 -0
- package/dist/modules/tags/Tag.js.map +1 -0
- package/dist/modules/tags/TagCondition.d.ts +12 -0
- package/dist/modules/tags/TagCondition.d.ts.map +1 -0
- package/dist/modules/tags/TagCondition.js +2 -0
- package/dist/modules/tags/TagCondition.js.map +1 -0
- package/dist/modules/tags/TagConditionParser.d.ts +21 -0
- package/dist/modules/tags/TagConditionParser.d.ts.map +1 -0
- package/dist/modules/tags/TagConditionParser.js +75 -0
- package/dist/modules/tags/TagConditionParser.js.map +1 -0
- package/dist/modules/tags/index.d.ts +9 -0
- package/dist/modules/tags/index.d.ts.map +1 -0
- package/dist/modules/tags/index.js +8 -0
- package/dist/modules/tags/index.js.map +1 -0
- package/dist/modules/transcription/AudioDecoder.d.ts +9 -4
- package/dist/modules/transcription/AudioDecoder.d.ts.map +1 -1
- package/dist/modules/transcription/BatchedMonoResampler.d.ts +45 -0
- package/dist/modules/transcription/BatchedMonoResampler.d.ts.map +1 -0
- package/dist/modules/transcription/BatchedMonoResampler.js +116 -0
- package/dist/modules/transcription/BatchedMonoResampler.js.map +1 -0
- package/dist/modules/transcription/CacheStorageModelFileCache.d.ts +38 -0
- package/dist/modules/transcription/CacheStorageModelFileCache.d.ts.map +1 -0
- package/dist/modules/transcription/CacheStorageModelFileCache.js +86 -0
- package/dist/modules/transcription/CacheStorageModelFileCache.js.map +1 -0
- package/dist/modules/transcription/CueDocumentBuilder.d.ts +40 -0
- package/dist/modules/transcription/CueDocumentBuilder.d.ts.map +1 -0
- package/dist/modules/transcription/CueDocumentBuilder.js +77 -0
- package/dist/modules/transcription/CueDocumentBuilder.js.map +1 -0
- package/dist/modules/transcription/CueParseResult.d.ts +16 -0
- package/dist/modules/transcription/CueParseResult.d.ts.map +1 -0
- package/dist/modules/transcription/CueParseResult.js +2 -0
- package/dist/modules/transcription/CueParseResult.js.map +1 -0
- package/dist/modules/transcription/CueTextTokenizer.d.ts +10 -0
- package/dist/modules/transcription/CueTextTokenizer.d.ts.map +1 -0
- package/dist/modules/transcription/CueTextTokenizer.js +21 -0
- package/dist/modules/transcription/CueTextTokenizer.js.map +1 -0
- package/dist/modules/transcription/CueTimecodeReader.d.ts +19 -0
- package/dist/modules/transcription/CueTimecodeReader.d.ts.map +1 -0
- package/dist/modules/transcription/CueTimecodeReader.js +45 -0
- package/dist/modules/transcription/CueTimecodeReader.js.map +1 -0
- package/dist/modules/transcription/CueWordReader.d.ts +12 -0
- package/dist/modules/transcription/CueWordReader.d.ts.map +1 -0
- package/dist/modules/transcription/CueWordReader.js +2 -0
- package/dist/modules/transcription/CueWordReader.js.map +1 -0
- package/dist/modules/transcription/EstimatedCueWordReader.d.ts +16 -0
- package/dist/modules/transcription/EstimatedCueWordReader.d.ts.map +1 -0
- package/dist/modules/transcription/EstimatedCueWordReader.js +17 -0
- package/dist/modules/transcription/EstimatedCueWordReader.js.map +1 -0
- package/dist/modules/transcription/LogitsProcessorListFactory.d.ts +43 -0
- package/dist/modules/transcription/LogitsProcessorListFactory.d.ts.map +1 -0
- package/dist/modules/transcription/LogitsProcessorListFactory.js +72 -0
- package/dist/modules/transcription/LogitsProcessorListFactory.js.map +1 -0
- package/dist/modules/transcription/MediaBunnyAudioDecoder.d.ts +27 -0
- package/dist/modules/transcription/MediaBunnyAudioDecoder.d.ts.map +1 -0
- package/dist/modules/transcription/MediaBunnyAudioDecoder.js +76 -0
- package/dist/modules/transcription/MediaBunnyAudioDecoder.js.map +1 -0
- package/dist/modules/transcription/ModelFileCache.d.ts +20 -0
- package/dist/modules/transcription/ModelFileCache.d.ts.map +1 -0
- package/dist/modules/transcription/ModelFileCache.js +2 -0
- package/dist/modules/transcription/ModelFileCache.js.map +1 -0
- package/dist/modules/transcription/ModelFileCacheUnavailableError.d.ts +18 -0
- package/dist/modules/transcription/ModelFileCacheUnavailableError.d.ts.map +1 -0
- package/dist/modules/transcription/ModelFileCacheUnavailableError.js +18 -0
- package/dist/modules/transcription/ModelFileCacheUnavailableError.js.map +1 -0
- package/dist/modules/transcription/SrtTranscriber.d.ts +24 -15
- package/dist/modules/transcription/SrtTranscriber.d.ts.map +1 -1
- package/dist/modules/transcription/SrtTranscriber.js +32 -90
- package/dist/modules/transcription/SrtTranscriber.js.map +1 -1
- package/dist/modules/transcription/SubtitleFileUnreadableError.d.ts +22 -0
- package/dist/modules/transcription/SubtitleFileUnreadableError.d.ts.map +1 -0
- package/dist/modules/transcription/SubtitleFileUnreadableError.js +22 -0
- package/dist/modules/transcription/SubtitleFileUnreadableError.js.map +1 -0
- package/dist/modules/transcription/TimestampedCueWordReader.d.ts +27 -0
- package/dist/modules/transcription/TimestampedCueWordReader.d.ts.map +1 -0
- package/dist/modules/transcription/TimestampedCueWordReader.js +52 -0
- package/dist/modules/transcription/TimestampedCueWordReader.js.map +1 -0
- package/dist/modules/transcription/Transcriber.d.ts +13 -0
- package/dist/modules/transcription/Transcriber.d.ts.map +1 -1
- package/dist/modules/transcription/TransformersRuntime.d.ts +50 -0
- package/dist/modules/transcription/TransformersRuntime.d.ts.map +1 -0
- package/dist/modules/transcription/TransformersRuntime.js +79 -0
- package/dist/modules/transcription/TransformersRuntime.js.map +1 -0
- package/dist/modules/transcription/VttTranscriber.d.ts +46 -0
- package/dist/modules/transcription/VttTranscriber.d.ts.map +1 -0
- package/dist/modules/transcription/VttTranscriber.js +80 -0
- package/dist/modules/transcription/VttTranscriber.js.map +1 -0
- package/dist/modules/transcription/WhisperChunkStitcher.d.ts +51 -0
- package/dist/modules/transcription/WhisperChunkStitcher.d.ts.map +1 -0
- package/dist/modules/transcription/WhisperChunkStitcher.js +101 -0
- package/dist/modules/transcription/WhisperChunkStitcher.js.map +1 -0
- package/dist/modules/transcription/WhisperDeviceUnavailableError.d.ts +16 -0
- package/dist/modules/transcription/WhisperDeviceUnavailableError.d.ts.map +1 -0
- package/dist/modules/transcription/WhisperDeviceUnavailableError.js +16 -0
- package/dist/modules/transcription/WhisperDeviceUnavailableError.js.map +1 -0
- package/dist/modules/transcription/WhisperInferenceFailedError.d.ts +16 -0
- package/dist/modules/transcription/WhisperInferenceFailedError.d.ts.map +1 -0
- package/dist/modules/transcription/WhisperInferenceFailedError.js +16 -0
- package/dist/modules/transcription/WhisperInferenceFailedError.js.map +1 -0
- package/dist/modules/transcription/WhisperInferenceProgressTracker.d.ts +61 -0
- package/dist/modules/transcription/WhisperInferenceProgressTracker.d.ts.map +1 -0
- package/dist/modules/transcription/WhisperInferenceProgressTracker.js +102 -0
- package/dist/modules/transcription/WhisperInferenceProgressTracker.js.map +1 -0
- package/dist/modules/transcription/WhisperLoopAbortLogitsProcessor.d.ts +38 -0
- package/dist/modules/transcription/WhisperLoopAbortLogitsProcessor.d.ts.map +1 -0
- package/dist/modules/transcription/WhisperLoopAbortLogitsProcessor.js +94 -0
- package/dist/modules/transcription/WhisperLoopAbortLogitsProcessor.js.map +1 -0
- package/dist/modules/transcription/WhisperModelLoadFailedError.d.ts +15 -0
- package/dist/modules/transcription/WhisperModelLoadFailedError.d.ts.map +1 -0
- package/dist/modules/transcription/WhisperModelLoadFailedError.js +15 -0
- package/dist/modules/transcription/WhisperModelLoadFailedError.js.map +1 -0
- package/dist/modules/transcription/WhisperTranscriber.d.ts +106 -7
- package/dist/modules/transcription/WhisperTranscriber.d.ts.map +1 -1
- package/dist/modules/transcription/WhisperTranscriber.js +312 -25
- package/dist/modules/transcription/WhisperTranscriber.js.map +1 -1
- package/dist/modules/transcription/WhisperWindowCoverage.d.ts +79 -0
- package/dist/modules/transcription/WhisperWindowCoverage.d.ts.map +1 -0
- package/dist/modules/transcription/WhisperWindowCoverage.js +129 -0
- package/dist/modules/transcription/WhisperWindowCoverage.js.map +1 -0
- package/dist/modules/transcription/WordTimingEstimator.d.ts +14 -0
- package/dist/modules/transcription/WordTimingEstimator.d.ts.map +1 -0
- package/dist/modules/transcription/WordTimingEstimator.js +33 -0
- package/dist/modules/transcription/WordTimingEstimator.js.map +1 -0
- package/dist/modules/transcription/index.d.ts +9 -2
- package/dist/modules/transcription/index.d.ts.map +1 -1
- package/dist/modules/transcription/index.js +6 -1
- package/dist/modules/transcription/index.js.map +1 -1
- package/dist/modules/video/RenderJob.d.ts +17 -0
- package/dist/modules/video/RenderJob.d.ts.map +1 -1
- package/dist/modules/video/RenderTimeMap.d.ts +50 -0
- package/dist/modules/video/RenderTimeMap.d.ts.map +1 -0
- package/dist/modules/video/RenderTimeMap.js +90 -0
- package/dist/modules/video/RenderTimeMap.js.map +1 -0
- package/dist/modules/video/index.d.ts +8 -1
- package/dist/modules/video/index.d.ts.map +1 -1
- package/dist/modules/video/index.js +4 -0
- package/dist/modules/video/index.js.map +1 -1
- package/dist/modules/video/mediabunny/MediaBunnyTranscodeCoordinator.d.ts +102 -0
- package/dist/modules/video/mediabunny/MediaBunnyTranscodeCoordinator.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/MediaBunnyTranscodeCoordinator.js +207 -0
- package/dist/modules/video/mediabunny/MediaBunnyTranscodeCoordinator.js.map +1 -0
- package/dist/modules/video/mediabunny/MediaBunnyVideoRenderer.d.ts +12 -52
- package/dist/modules/video/mediabunny/MediaBunnyVideoRenderer.d.ts.map +1 -1
- package/dist/modules/video/mediabunny/MediaBunnyVideoRenderer.js +25 -190
- package/dist/modules/video/mediabunny/MediaBunnyVideoRenderer.js.map +1 -1
- package/dist/modules/video/mediabunny/audio/AudioTrackBridgeFactory.d.ts +7 -0
- package/dist/modules/video/mediabunny/audio/AudioTrackBridgeFactory.d.ts.map +1 -1
- package/dist/modules/video/mediabunny/audio/DefaultAudioTrackBridgeFactory.js +2 -2
- package/dist/modules/video/mediabunny/audio/DefaultAudioTrackBridgeFactory.js.map +1 -1
- package/dist/modules/video/mediabunny/audio/PassthroughAudioTrackBridge.d.ts +2 -0
- package/dist/modules/video/mediabunny/audio/PassthroughAudioTrackBridge.d.ts.map +1 -1
- package/dist/modules/video/mediabunny/audio/PassthroughAudioTrackBridge.js +8 -2
- package/dist/modules/video/mediabunny/audio/PassthroughAudioTrackBridge.js.map +1 -1
- package/dist/modules/video/mediabunny/audio/TranscodeAudioTrackBridge.d.ts +3 -0
- package/dist/modules/video/mediabunny/audio/TranscodeAudioTrackBridge.d.ts.map +1 -1
- package/dist/modules/video/mediabunny/audio/TranscodeAudioTrackBridge.js +9 -2
- package/dist/modules/video/mediabunny/audio/TranscodeAudioTrackBridge.js.map +1 -1
- package/dist/modules/video/mediabunny/codec/CodecPolicy.d.ts +7 -0
- package/dist/modules/video/mediabunny/codec/CodecPolicy.d.ts.map +1 -1
- package/dist/modules/video/mediabunny/frame/CurrentFrameVideoSource.d.ts +4 -2
- package/dist/modules/video/mediabunny/frame/CurrentFrameVideoSource.d.ts.map +1 -1
- package/dist/modules/video/mediabunny/frame/CurrentFrameVideoSource.js +33 -23
- package/dist/modules/video/mediabunny/frame/CurrentFrameVideoSource.js.map +1 -1
- package/dist/modules/video/mediabunny/frame/FrameCompositor.d.ts +9 -2
- package/dist/modules/video/mediabunny/frame/FrameCompositor.d.ts.map +1 -1
- package/dist/modules/video/mediabunny/frame/LayeredFrameCompositor.d.ts +5 -2
- package/dist/modules/video/mediabunny/frame/LayeredFrameCompositor.d.ts.map +1 -1
- package/dist/modules/video/mediabunny/frame/LayeredFrameCompositor.js +8 -2
- package/dist/modules/video/mediabunny/frame/LayeredFrameCompositor.js.map +1 -1
- package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainter.d.ts +35 -0
- package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainter.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainter.js +69 -0
- package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainter.js.map +1 -0
- package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainterFactory.d.ts +23 -0
- package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainterFactory.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainterFactory.js +23 -0
- package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainterFactory.js.map +1 -0
- package/dist/modules/video/mediabunny/painter/FramePainter.d.ts +46 -0
- package/dist/modules/video/mediabunny/painter/FramePainter.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/painter/FramePainter.js +2 -0
- package/dist/modules/video/mediabunny/painter/FramePainter.js.map +1 -0
- package/dist/modules/video/mediabunny/painter/TopLayerSource.d.ts +24 -0
- package/dist/modules/video/mediabunny/painter/TopLayerSource.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/painter/TopLayerSource.js +2 -0
- package/dist/modules/video/mediabunny/painter/TopLayerSource.js.map +1 -0
- package/package.json +13 -10
- package/dist/modules/document/Tag.d.ts.map +0 -1
- package/dist/modules/document/Tag.js.map +0 -1
- package/dist/modules/rendering/AlignmentConfig.d.ts +0 -21
- package/dist/modules/rendering/AlignmentConfig.d.ts.map +0 -1
- package/dist/modules/rendering/AlignmentConfig.js +0 -2
- package/dist/modules/rendering/AlignmentConfig.js.map +0 -1
- package/dist/modules/rendering/BoxEdges.d.ts.map +0 -1
- package/dist/modules/rendering/BoxEdges.js.map +0 -1
- package/dist/modules/rendering/ElementRenderOverrides.d.ts +0 -15
- package/dist/modules/rendering/ElementRenderOverrides.d.ts.map +0 -1
- package/dist/modules/rendering/ElementRenderOverrides.js +0 -24
- package/dist/modules/rendering/ElementRenderOverrides.js.map +0 -1
- package/dist/modules/rendering/InlineStyleMap.d.ts.map +0 -1
- package/dist/modules/rendering/InlineStyleMap.js.map +0 -1
- package/dist/modules/rendering/RenderingConfig.d.ts.map +0 -1
- package/dist/modules/rendering/RenderingConfig.js.map +0 -1
- package/dist/modules/rendering/ScopedRenderOverride.d.ts +0 -19
- package/dist/modules/rendering/ScopedRenderOverride.d.ts.map +0 -1
- package/dist/modules/rendering/ScopedRenderOverride.js.map +0 -1
- package/dist/modules/rendering/SegmentPaintRegionResolver.d.ts.map +0 -1
- package/dist/modules/rendering/SegmentPaintRegionResolver.js.map +0 -1
- package/dist/modules/rendering/SegmentSubtreeHtmlBuilder.d.ts +0 -58
- package/dist/modules/rendering/SegmentSubtreeHtmlBuilder.d.ts.map +0 -1
- package/dist/modules/rendering/SegmentSubtreeHtmlBuilder.js +0 -132
- package/dist/modules/rendering/SegmentSubtreeHtmlBuilder.js.map +0 -1
- package/dist/modules/rendering/VideoFrameLayerClass.d.ts.map +0 -1
- package/dist/modules/rendering/VideoFrameLayerClass.js +0 -21
- package/dist/modules/rendering/VideoFrameLayerClass.js.map +0 -1
- package/dist/modules/rendering/VideoFrameSource.d.ts.map +0 -1
- package/dist/modules/rendering/VideoFrameSource.js.map +0 -1
- package/dist/modules/transcription/BrowserAudioDecoder.d.ts +0 -13
- package/dist/modules/transcription/BrowserAudioDecoder.d.ts.map +0 -1
- package/dist/modules/transcription/BrowserAudioDecoder.js +0 -34
- package/dist/modules/transcription/BrowserAudioDecoder.js.map +0 -1
- /package/dist/modules/rendering/{BoxEdges.d.ts → types/BoxEdges.d.ts} +0 -0
- /package/dist/modules/rendering/{BoxEdges.js → types/BoxEdges.js} +0 -0
- /package/dist/modules/rendering/{InlineStyleMap.d.ts → types/InlineStyleMap.d.ts} +0 -0
- /package/dist/modules/rendering/{InlineStyleMap.js → types/InlineStyleMap.js} +0 -0
- /package/dist/modules/rendering/{RenderingConfig.js → types/RenderingConfig.js} +0 -0
- /package/dist/modules/rendering/{ScopedRenderOverride.js → types/ScopedRenderOverride.js} +0 -0
- /package/dist/modules/rendering/{VideoFrameSource.d.ts → types/VideoFrameSource.d.ts} +0 -0
- /package/dist/modules/rendering/{VideoFrameSource.js → types/VideoFrameSource.js} +0 -0
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { profiler } from '../../profiling/Profiler';
|
|
2
|
+
/**
|
|
3
|
+
* Composes a sprite sheet per asset group: stacks unique tiles along
|
|
4
|
+
* the smaller dimension axis, emits the SVG holding one
|
|
5
|
+
* `foreignObject` per tile, decodes it through an `<img>` so the
|
|
6
|
+
* bitmap paints into any 2D context without tainting the canvas,
|
|
7
|
+
* and produces draw callbacks that slice the sheet by tile index.
|
|
8
|
+
*/
|
|
9
|
+
export class SpriteSheetCompositor {
|
|
10
|
+
styles;
|
|
11
|
+
wrapperRenderer;
|
|
12
|
+
baselineCssComposer;
|
|
13
|
+
width;
|
|
14
|
+
height;
|
|
15
|
+
constructor(styles, wrapperRenderer, baselineCssComposer, width, height) {
|
|
16
|
+
this.styles = styles;
|
|
17
|
+
this.wrapperRenderer = wrapperRenderer;
|
|
18
|
+
this.baselineCssComposer = baselineCssComposer;
|
|
19
|
+
this.width = width;
|
|
20
|
+
this.height = height;
|
|
21
|
+
}
|
|
22
|
+
async renderGroups(groups) {
|
|
23
|
+
const sprites = new Map();
|
|
24
|
+
for (const group of groups.values()) {
|
|
25
|
+
const img = await this.renderSpriteSheet(group.uniqueTiles);
|
|
26
|
+
sprites.set(group.assetKey, img);
|
|
27
|
+
}
|
|
28
|
+
return sprites;
|
|
29
|
+
}
|
|
30
|
+
buildFrames(assignments, sprites) {
|
|
31
|
+
const isPortrait = this.width < this.height;
|
|
32
|
+
return assignments.map((assn) => {
|
|
33
|
+
if (!assn)
|
|
34
|
+
return null;
|
|
35
|
+
const img = sprites.get(assn.assetKey);
|
|
36
|
+
const sx = isPortrait ? assn.tileIndex * this.width : 0;
|
|
37
|
+
const sy = isPortrait ? 0 : assn.tileIndex * this.height;
|
|
38
|
+
return {
|
|
39
|
+
draw: (ctx, dx, dy, dw, dh) => ctx.drawImage(img, sx, sy, this.width, this.height, dx, dy, dw, dh),
|
|
40
|
+
};
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
async renderSpriteSheet(tiles) {
|
|
44
|
+
const isPortrait = this.width < this.height;
|
|
45
|
+
const sheetW = isPortrait ? tiles.length * this.width : this.width;
|
|
46
|
+
const sheetH = isPortrait ? this.height : tiles.length * this.height;
|
|
47
|
+
const content = await profiler.time('SpriteSheetCompositor.buildTiles', () => this.buildTiles(tiles, isPortrait));
|
|
48
|
+
const styleBlock = profiler.time('SpriteSheetCompositor.composeStyleSheet', () => this.composeStyleSheet(tiles));
|
|
49
|
+
const defsBlock = content.defs ? `<defs>${content.defs}</defs>` : '';
|
|
50
|
+
const svg = `<svg xmlns="http://www.w3.org/2000/svg" width="${sheetW}" height="${sheetH}">${defsBlock}${styleBlock}${content.html}</svg>`;
|
|
51
|
+
return this.decodeSvg(svg, tiles, sheetW, sheetH);
|
|
52
|
+
}
|
|
53
|
+
async buildTiles(tiles, isPortrait) {
|
|
54
|
+
let itemUid = 0;
|
|
55
|
+
const results = await Promise.all(tiles.map((tile, i) => this.buildTileHtml(tile, i, isPortrait, () => itemUid++)));
|
|
56
|
+
return {
|
|
57
|
+
html: results.map((r) => r.html).join(''),
|
|
58
|
+
defs: results.map((r) => r.defs).filter(Boolean).join(''),
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
composeStyleSheet(tiles) {
|
|
62
|
+
const activeKinds = this.collectActiveKinds(tiles);
|
|
63
|
+
const sectionCss = this.joinByKind(activeKinds, (style) => style.scopedCss);
|
|
64
|
+
const baselineCss = this.composeBaselineCssForKinds(activeKinds);
|
|
65
|
+
return this.composeStyleBlock(baselineCss + sectionCss);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Wraps the stylesheet in a `<![CDATA[...]]>` section so the XML
|
|
69
|
+
* parser that decodes the data-URL SVG ignores any `<` / `>` inside
|
|
70
|
+
* CSS string values (e.g. `@property syntax: '<integer>'`) instead
|
|
71
|
+
* of treating them as malformed tags. `]]>` inside the CSS would
|
|
72
|
+
* close the CDATA early — splitting around it terminates and
|
|
73
|
+
* re-opens the section cleanly. */
|
|
74
|
+
composeStyleBlock(css) {
|
|
75
|
+
const safe = css.split(']]>').join(']]]]><![CDATA[>');
|
|
76
|
+
return `<style><![CDATA[${safe}]]></style>`;
|
|
77
|
+
}
|
|
78
|
+
async buildTileHtml(tile, i, isPortrait, nextUid) {
|
|
79
|
+
const tx = isPortrait ? i * this.width : 0;
|
|
80
|
+
const ty = isPortrait ? 0 : i * this.height;
|
|
81
|
+
const wrapperResults = await Promise.all(tile.items.map(({ style, seg, t, indexInSection }) => this.wrapperRenderer.buildWrapperHtml(style, seg, t, indexInSection, nextUid)));
|
|
82
|
+
const wrappers = wrapperResults.map((r) => r.html).join('');
|
|
83
|
+
const defs = wrapperResults.map((r) => r.defs).filter(Boolean).join('');
|
|
84
|
+
const html = `<foreignObject x="${tx}" y="${ty}" width="${this.width}" height="${this.height}"><div xmlns="http://www.w3.org/1999/xhtml" style="position:relative;width:${this.width}px;height:${this.height}px;overflow:hidden;container-type:size;">${wrappers}</div></foreignObject>`;
|
|
85
|
+
return { html, defs };
|
|
86
|
+
}
|
|
87
|
+
composeBaselineCssForKinds(kinds) {
|
|
88
|
+
const perStyle = [...kinds].map((kind) => this.styles[kind].baselineNeeds);
|
|
89
|
+
return this.baselineCssComposer.composeUnion(perStyle);
|
|
90
|
+
}
|
|
91
|
+
collectActiveKinds(tiles) {
|
|
92
|
+
const kinds = new Set();
|
|
93
|
+
for (const tile of tiles)
|
|
94
|
+
for (const item of tile.items)
|
|
95
|
+
kinds.add(item.style.kind);
|
|
96
|
+
return kinds;
|
|
97
|
+
}
|
|
98
|
+
joinByKind(kinds, pick) {
|
|
99
|
+
return [...kinds].map((kind) => pick(this.styles[kind])).filter(Boolean).join('\n');
|
|
100
|
+
}
|
|
101
|
+
async decodeSvg(svg, tiles, sheetW, sheetH) {
|
|
102
|
+
const img = new Image();
|
|
103
|
+
img.src = profiler.time('SpriteSheetCompositor.encodeDataUrl', () => `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svg)}`);
|
|
104
|
+
// `onload` can fire before custom fonts have finished applying,
|
|
105
|
+
// producing visually-laggy captures with foreignObject + @font-face.
|
|
106
|
+
// `decode()` only resolves once the image is fully paint-ready.
|
|
107
|
+
try {
|
|
108
|
+
await profiler.time('SpriteSheetCompositor.decodeImage', () => img.decode());
|
|
109
|
+
}
|
|
110
|
+
catch (e) {
|
|
111
|
+
const kinds = new Set();
|
|
112
|
+
for (const tile of tiles)
|
|
113
|
+
for (const item of tile.items)
|
|
114
|
+
kinds.add(item.style.kind);
|
|
115
|
+
console.error('[tscaps] subtitle SVG decode failed', {
|
|
116
|
+
error: e instanceof Error ? e.message : String(e),
|
|
117
|
+
xmlParseError: this.extractXmlParseError(svg),
|
|
118
|
+
kinds: [...kinds],
|
|
119
|
+
tiles: tiles.length,
|
|
120
|
+
sheetW,
|
|
121
|
+
sheetH,
|
|
122
|
+
svgLength: svg.length,
|
|
123
|
+
svgHead: svg.slice(0, 400),
|
|
124
|
+
});
|
|
125
|
+
throw new Error(`Subtitle render failed: ${e instanceof Error ? e.message : String(e)}`, { cause: e });
|
|
126
|
+
}
|
|
127
|
+
return img;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Re-parses the SVG through `DOMParser` to recover the XML-level
|
|
131
|
+
* error message browsers hide behind the opaque "source image cannot
|
|
132
|
+
* be decoded" image-decode failure. Returns the parser's error
|
|
133
|
+
* description, or `null` when the SVG parses cleanly (in which case
|
|
134
|
+
* the decode failed for a different reason — font loading, security,
|
|
135
|
+
* raster size cap, etc.).
|
|
136
|
+
*/
|
|
137
|
+
extractXmlParseError(svg) {
|
|
138
|
+
const parsed = new DOMParser().parseFromString(svg, 'image/svg+xml');
|
|
139
|
+
const parseError = parsed.querySelector('parsererror');
|
|
140
|
+
return parseError ? parseError.textContent ?? 'unknown XML parse error' : null;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=SpriteSheetCompositor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpriteSheetCompositor.js","sourceRoot":"","sources":["../../../../src/modules/rendering/subtitle/SpriteSheetCompositor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Empirically probes the maximum number of subtitle tiles that fit
|
|
3
|
+
* into a single sprite sheet at the given output dimensions without
|
|
4
|
+
* blowing past the host's 2D-canvas raster cap or the configured
|
|
5
|
+
* pixel budget. No public browser API surfaces the raster cap
|
|
6
|
+
* directly, and the reported WebGL limits bear no stable relation to
|
|
7
|
+
* what `img.decode` / `drawImage` accept. Some hosts decode oversize
|
|
8
|
+
* SVGs but blank the far edges of the raster; the probe reads back a
|
|
9
|
+
* corner pixel to detect that.
|
|
10
|
+
*/
|
|
11
|
+
export declare class SpriteSheetSizeProber {
|
|
12
|
+
private readonly maxBufferPixels;
|
|
13
|
+
constructor(maxBufferPixels?: number);
|
|
14
|
+
probe(width: number, height: number): Promise<number>;
|
|
15
|
+
private testTileSize;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=SpriteSheetSizeProber.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpriteSheetSizeProber.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/subtitle/SpriteSheetSizeProber.ts"],"names":[],"mappings":"AAMA;;;;;;;;;GASG;AACH,qBAAa,qBAAqB;IAEpB,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAAf,eAAe,GAAE,MAAkC;IAE1E,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAiB7C,YAAY;CAgB3B"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
const NUMBER_OF_TILES_TO_TEST = [1, 2, 4, 6, 8, 10, 12, 15, 18, 21, 25, 30];
|
|
2
|
+
// 10 frames at 1080×1920 ≈ 80 MB of pixel buffer.
|
|
3
|
+
// At 4K the same budget admits only ~2 tiles per batch.
|
|
4
|
+
const DEFAULT_MAX_BUFFER_PIXELS = 10 * 1080 * 1920;
|
|
5
|
+
/**
|
|
6
|
+
* Empirically probes the maximum number of subtitle tiles that fit
|
|
7
|
+
* into a single sprite sheet at the given output dimensions without
|
|
8
|
+
* blowing past the host's 2D-canvas raster cap or the configured
|
|
9
|
+
* pixel budget. No public browser API surfaces the raster cap
|
|
10
|
+
* directly, and the reported WebGL limits bear no stable relation to
|
|
11
|
+
* what `img.decode` / `drawImage` accept. Some hosts decode oversize
|
|
12
|
+
* SVGs but blank the far edges of the raster; the probe reads back a
|
|
13
|
+
* corner pixel to detect that.
|
|
14
|
+
*/
|
|
15
|
+
export class SpriteSheetSizeProber {
|
|
16
|
+
maxBufferPixels;
|
|
17
|
+
constructor(maxBufferPixels = DEFAULT_MAX_BUFFER_PIXELS) {
|
|
18
|
+
this.maxBufferPixels = maxBufferPixels;
|
|
19
|
+
}
|
|
20
|
+
async probe(width, height) {
|
|
21
|
+
try {
|
|
22
|
+
let lastPassing = 1;
|
|
23
|
+
for (const numberOfTiles of NUMBER_OF_TILES_TO_TEST) {
|
|
24
|
+
const isPortrait = width < height;
|
|
25
|
+
const scaledWidth = isPortrait ? width * numberOfTiles : width;
|
|
26
|
+
const scaledHeight = isPortrait ? height : height * numberOfTiles;
|
|
27
|
+
if (scaledWidth * scaledHeight > this.maxBufferPixels)
|
|
28
|
+
return lastPassing;
|
|
29
|
+
if (!(await this.testTileSize(scaledWidth, scaledHeight)))
|
|
30
|
+
return lastPassing;
|
|
31
|
+
lastPassing = numberOfTiles;
|
|
32
|
+
}
|
|
33
|
+
return lastPassing;
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return 1;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
async testTileSize(width, height) {
|
|
40
|
+
const svg = `<svg xmlns="http://www.w3.org/2000/svg" width="${width}" height="${height}"><rect width="100%" height="100%" fill="green"/><rect x="${width - 2}" y="${height - 2}" width="2" height="2" fill="red"/></svg>`;
|
|
41
|
+
const img = new Image();
|
|
42
|
+
img.src = `data:image/svg+xml;charset=utf-8,${encodeURIComponent(svg)}`;
|
|
43
|
+
try {
|
|
44
|
+
await img.decode();
|
|
45
|
+
const canvas = new OffscreenCanvas(width, height);
|
|
46
|
+
const ctx = canvas.getContext('2d');
|
|
47
|
+
if (!ctx)
|
|
48
|
+
return false;
|
|
49
|
+
ctx.drawImage(img, 0, 0);
|
|
50
|
+
const px = ctx.getImageData(width - 1, height - 1, 1, 1).data;
|
|
51
|
+
return px[0] > 200 && px[1] < 80 && px[2] < 80 && px[3] > 200;
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=SpriteSheetSizeProber.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SpriteSheetSizeProber.js","sourceRoot":"","sources":["../../../../src/modules/rendering/subtitle/SpriteSheetSizeProber.ts"],"names":[],"mappings":"AAAA,MAAM,uBAAuB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAE5E,kDAAkD;AAClD,wDAAwD;AACxD,MAAM,yBAAyB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAEnD;;;;;;;;;GASG;AACH,MAAM,OAAO,qBAAqB;IAEH;IAA7B,YAA6B,kBAA0B,yBAAyB;QAAnD,oBAAe,GAAf,eAAe,CAAoC;IAAG,CAAC;IAEpF,KAAK,CAAC,KAAK,CAAC,KAAa,EAAE,MAAc;QACvC,IAAI,CAAC;YACH,IAAI,WAAW,GAAG,CAAC,CAAC;YACpB,KAAK,MAAM,aAAa,IAAI,uBAAuB,EAAE,CAAC;gBACpD,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,CAAC;gBAClC,MAAM,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC/D,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,aAAa,CAAC;gBAClE,IAAI,WAAW,GAAG,YAAY,GAAG,IAAI,CAAC,eAAe;oBAAE,OAAO,WAAW,CAAC;gBAC1E,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;oBAAE,OAAO,WAAW,CAAC;gBAC9E,WAAW,GAAG,aAAa,CAAC;YAC9B,CAAC;YACD,OAAO,WAAW,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,KAAa,EAAE,MAAc;QACtD,MAAM,GAAG,GAAG,kDAAkD,KAAK,aAAa,MAAM,6DAA6D,KAAK,GAAG,CAAC,QAAQ,MAAM,GAAG,CAAC,2CAA2C,CAAC;QAC1N,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;QACxB,GAAG,CAAC,GAAG,GAAG,oCAAoC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;QACxE,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAClD,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,CAAC,GAAG;gBAAE,OAAO,KAAK,CAAC;YACvB,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACzB,MAAM,EAAE,GAAG,GAAG,CAAC,YAAY,CAAC,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9D,OAAO,EAAE,CAAC,CAAC,CAAE,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAE,GAAG,GAAG,CAAC;QACpE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { InlineStyleMap } from '../../rendering/types/InlineStyleMap';
|
|
2
|
+
import type { SvgFilterDefs, SvgFilterDefsRenderer } from '../../svg-filter/SvgFilterDefsRenderer';
|
|
3
|
+
import type { PreparedStyle } from '../../rendering/subtitle/PreparedStyle';
|
|
4
|
+
/**
|
|
5
|
+
* Materializes the SVG `<filter>` defs declared by a style's filter
|
|
6
|
+
* bundle for one render tile. Layers the engine-injected vars onto the
|
|
7
|
+
* consumer's scope and hands the result to the defs renderer under an
|
|
8
|
+
* id scope unique to the tile, so two tiles using the same source
|
|
9
|
+
* filter don't collide in the sprite-sheet SVG.
|
|
10
|
+
*
|
|
11
|
+
* Returns empty defs and empty bindings when the style declares no
|
|
12
|
+
* filters.
|
|
13
|
+
*/
|
|
14
|
+
export declare class SvgFilterMaterializer {
|
|
15
|
+
private readonly defsRenderer;
|
|
16
|
+
private readonly renderHeightPx;
|
|
17
|
+
constructor(defsRenderer: SvgFilterDefsRenderer, renderHeightPx: number);
|
|
18
|
+
materialize(style: PreparedStyle, t: number, engineVars: InlineStyleMap, nextUid: () => number): SvgFilterDefs;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=SvgFilterMaterializer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SvgFilterMaterializer.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/subtitle/SvgFilterMaterializer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAE9E,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AACtG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAI/E;;;;;;;;;GASG;AACH,qBAAa,qBAAqB;IAG9B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,cAAc;gBADd,YAAY,EAAE,qBAAqB,EACnC,cAAc,EAAE,MAAM;IAGzC,WAAW,CACT,KAAK,EAAE,aAAa,EACpB,CAAC,EAAE,MAAM,EACT,UAAU,EAAE,cAAc,EAC1B,OAAO,EAAE,MAAM,MAAM,GACpB,aAAa;CAajB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { SvgFilterScope } from '../../svg-filter/SvgFilterScope';
|
|
2
|
+
const EMPTY_DEFS = { defs: '', bindings: new Map() };
|
|
3
|
+
/**
|
|
4
|
+
* Materializes the SVG `<filter>` defs declared by a style's filter
|
|
5
|
+
* bundle for one render tile. Layers the engine-injected vars onto the
|
|
6
|
+
* consumer's scope and hands the result to the defs renderer under an
|
|
7
|
+
* id scope unique to the tile, so two tiles using the same source
|
|
8
|
+
* filter don't collide in the sprite-sheet SVG.
|
|
9
|
+
*
|
|
10
|
+
* Returns empty defs and empty bindings when the style declares no
|
|
11
|
+
* filters.
|
|
12
|
+
*/
|
|
13
|
+
export class SvgFilterMaterializer {
|
|
14
|
+
defsRenderer;
|
|
15
|
+
renderHeightPx;
|
|
16
|
+
constructor(defsRenderer, renderHeightPx) {
|
|
17
|
+
this.defsRenderer = defsRenderer;
|
|
18
|
+
this.renderHeightPx = renderHeightPx;
|
|
19
|
+
}
|
|
20
|
+
materialize(style, t, engineVars, nextUid) {
|
|
21
|
+
const definitions = style.filters.definitions;
|
|
22
|
+
if (definitions.isEmpty())
|
|
23
|
+
return EMPTY_DEFS;
|
|
24
|
+
const context = { currentTime: t, renderHeightPx: this.renderHeightPx };
|
|
25
|
+
const consumerScope = style.filters.scopeProvider.scopeAt(context);
|
|
26
|
+
const scope = consumerScope.with(SvgFilterScope.fromEntries(Object.entries(engineVars)));
|
|
27
|
+
return this.defsRenderer.render(definitions, scope, style.filters.scopeProvider.lengthFactorsAt(context), `${style.scopeClass}-${nextUid()}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=SvgFilterMaterializer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SvgFilterMaterializer.js","sourceRoot":"","sources":["../../../../src/modules/rendering/subtitle/SvgFilterMaterializer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAIpE,MAAM,UAAU,GAAkB,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;AAEpE;;;;;;;;;GASG;AACH,MAAM,OAAO,qBAAqB;IAGb;IACA;IAFnB,YACmB,YAAmC,EACnC,cAAsB;QADtB,iBAAY,GAAZ,YAAY,CAAuB;QACnC,mBAAc,GAAd,cAAc,CAAQ;IACtC,CAAC;IAEJ,WAAW,CACT,KAAoB,EACpB,CAAS,EACT,UAA0B,EAC1B,OAAqB;QAErB,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;QAC9C,IAAI,WAAW,CAAC,OAAO,EAAE;YAAE,OAAO,UAAU,CAAC;QAC7C,MAAM,OAAO,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;QACxE,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACnE,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACzF,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAC7B,WAAW,EACX,KAAK,EACL,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,OAAO,CAAC,EACpD,GAAG,KAAK,CAAC,UAAU,IAAI,OAAO,EAAE,EAAE,CACnC,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { Segment } from '../../document/Segment';
|
|
2
|
+
import type { InlineStyleMap } from '../../rendering/types/InlineStyleMap';
|
|
3
|
+
import type { VideoFrameSource } from '../../rendering/types/VideoFrameSource';
|
|
4
|
+
import type { SegmentSubtreeHtmlBuilder } from '../../rendering/subtitle/SegmentSubtreeHtmlBuilder';
|
|
5
|
+
import type { SegmentPaintRegionResolver, SegmentAnchorPlacement } from '../../rendering/subtitle/SegmentPaintRegionResolver';
|
|
6
|
+
import type { SegmentPaintRegionCache } from '../../rendering/subtitle/SegmentPaintRegionCache';
|
|
7
|
+
import type { PreparedStyle } from '../../rendering/subtitle/PreparedStyle';
|
|
8
|
+
/**
|
|
9
|
+
* Builds the inline-style map driving the video-frame backdrop for
|
|
10
|
+
* one segment: the JPEG data URL holding the painted region of the
|
|
11
|
+
* underlying frame, plus the region's pixel size and offset within
|
|
12
|
+
* the segment's anchor box. Caches paint regions per
|
|
13
|
+
* `(kind, segmentId)` so the JPEG crop is only measured once per
|
|
14
|
+
* segment.
|
|
15
|
+
*
|
|
16
|
+
* Returns an empty map for styles that don't consume the video
|
|
17
|
+
* frame.
|
|
18
|
+
*/
|
|
19
|
+
export declare class VideoFrameVarsBuilder {
|
|
20
|
+
private readonly subtreeBuilder;
|
|
21
|
+
private readonly paintRegionResolver;
|
|
22
|
+
private readonly paintRegionCache;
|
|
23
|
+
private readonly width;
|
|
24
|
+
private readonly height;
|
|
25
|
+
private readonly videoFrameSource;
|
|
26
|
+
constructor(subtreeBuilder: SegmentSubtreeHtmlBuilder, paintRegionResolver: SegmentPaintRegionResolver, paintRegionCache: SegmentPaintRegionCache, width: number, height: number, videoFrameSource: VideoFrameSource | null);
|
|
27
|
+
build(style: PreparedStyle, seg: Segment, placement: SegmentAnchorPlacement, t: number): Promise<InlineStyleMap>;
|
|
28
|
+
/**
|
|
29
|
+
* The tight-crop optimization assumes every word stays inside the
|
|
30
|
+
* segment's in-flow bounding box. As soon as a word is
|
|
31
|
+
* repositioned outside that bbox, the same crop leaves its
|
|
32
|
+
* video-frame backdrop sampling pixels that aren't in the JPEG
|
|
33
|
+
* payload. Falling back to the full viewport for those segments
|
|
34
|
+
* restores correctness; the optimization recovers automatically
|
|
35
|
+
* the moment the override is reset.
|
|
36
|
+
*/
|
|
37
|
+
private resolvePaintRegion;
|
|
38
|
+
private measureSegmentPaintRegion;
|
|
39
|
+
private hasPositionedWord;
|
|
40
|
+
private hasPositionedDecoration;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=VideoFrameVarsBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VideoFrameVarsBuilder.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/subtitle/VideoFrameVarsBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAE9E,OAAO,KAAK,EAAE,gBAAgB,EAAoB,MAAM,2CAA2C,CAAC;AACpG,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uDAAuD,CAAC;AACvG,OAAO,KAAK,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,MAAM,wDAAwD,CAAC;AACjI,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qDAAqD,CAAC;AACnG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAU/E;;;;;;;;;;GAUG;AACH,qBAAa,qBAAqB;IAG9B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBALhB,cAAc,EAAE,yBAAyB,EACzC,mBAAmB,EAAE,0BAA0B,EAC/C,gBAAgB,EAAE,uBAAuB,EACzC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,gBAAgB,GAAG,IAAI;IAGtD,KAAK,CACT,KAAK,EAAE,aAAa,EACpB,GAAG,EAAE,OAAO,EACZ,SAAS,EAAE,sBAAsB,EACjC,CAAC,EAAE,MAAM,GACR,OAAO,CAAC,cAAc,CAAC;IAsB1B;;;;;;;;OAQG;IACH,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,yBAAyB;IA4CjC,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,uBAAuB;CAShC"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { CssVariable } from '../../document/CssVariable';
|
|
2
|
+
import { profiler } from '../../profiling/Profiler';
|
|
3
|
+
const NO_EXCLUDED_WORDS = new Set();
|
|
4
|
+
// Safety bleed applied to the painted region for video-frame styles
|
|
5
|
+
// that don't declare a `rendering.padding`. 0.25em ≈ enough to cover
|
|
6
|
+
// a typical text-shadow, kept narrow so the crop still pays off.
|
|
7
|
+
const UNDECLARED_PADDING_SAFETY_EM = 0.25;
|
|
8
|
+
/**
|
|
9
|
+
* Builds the inline-style map driving the video-frame backdrop for
|
|
10
|
+
* one segment: the JPEG data URL holding the painted region of the
|
|
11
|
+
* underlying frame, plus the region's pixel size and offset within
|
|
12
|
+
* the segment's anchor box. Caches paint regions per
|
|
13
|
+
* `(kind, segmentId)` so the JPEG crop is only measured once per
|
|
14
|
+
* segment.
|
|
15
|
+
*
|
|
16
|
+
* Returns an empty map for styles that don't consume the video
|
|
17
|
+
* frame.
|
|
18
|
+
*/
|
|
19
|
+
export class VideoFrameVarsBuilder {
|
|
20
|
+
subtreeBuilder;
|
|
21
|
+
paintRegionResolver;
|
|
22
|
+
paintRegionCache;
|
|
23
|
+
width;
|
|
24
|
+
height;
|
|
25
|
+
videoFrameSource;
|
|
26
|
+
constructor(subtreeBuilder, paintRegionResolver, paintRegionCache, width, height, videoFrameSource) {
|
|
27
|
+
this.subtreeBuilder = subtreeBuilder;
|
|
28
|
+
this.paintRegionResolver = paintRegionResolver;
|
|
29
|
+
this.paintRegionCache = paintRegionCache;
|
|
30
|
+
this.width = width;
|
|
31
|
+
this.height = height;
|
|
32
|
+
this.videoFrameSource = videoFrameSource;
|
|
33
|
+
}
|
|
34
|
+
async build(style, seg, placement, t) {
|
|
35
|
+
if (!style.rendering.videoFrame.required)
|
|
36
|
+
return {};
|
|
37
|
+
const region = profiler.time('VideoFrameVarsBuilder.paintRegion', () => this.resolvePaintRegion(style, seg, placement));
|
|
38
|
+
const frameUrl = await profiler.time('VideoFrameVarsBuilder.frameUrl', () => this.videoFrameSource.getFrameAt(t, style.rendering.videoFrame.jpegQuality, region));
|
|
39
|
+
// Offset vars assume the consuming element is a direct child of
|
|
40
|
+
// the wrapper: `%` resolves against the wrapper. The region.x/y
|
|
41
|
+
// bias positions the layer so the cropped frame's (0,0) lands on
|
|
42
|
+
// viewport (region.x, region.y); when no crop applies the bias
|
|
43
|
+
// is zero and the layer covers the full viewport.
|
|
44
|
+
return {
|
|
45
|
+
[CssVariable.VIDEO_FRAME]: `url("${frameUrl}")`,
|
|
46
|
+
[CssVariable.SUBTITLE_REGION_WIDTH]: `${region.width}px`,
|
|
47
|
+
[CssVariable.SUBTITLE_REGION_HEIGHT]: `${region.height}px`,
|
|
48
|
+
[CssVariable.SUBTITLE_REGION_X]: `calc(${placement.hAnchorPct}% - ${placement.xPx - region.x}px)`,
|
|
49
|
+
[CssVariable.SUBTITLE_REGION_Y]: `calc(${placement.vAnchorPct}% - ${placement.yPx - region.y}px)`,
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* The tight-crop optimization assumes every word stays inside the
|
|
54
|
+
* segment's in-flow bounding box. As soon as a word is
|
|
55
|
+
* repositioned outside that bbox, the same crop leaves its
|
|
56
|
+
* video-frame backdrop sampling pixels that aren't in the JPEG
|
|
57
|
+
* payload. Falling back to the full viewport for those segments
|
|
58
|
+
* restores correctness; the optimization recovers automatically
|
|
59
|
+
* the moment the override is reset.
|
|
60
|
+
*/
|
|
61
|
+
resolvePaintRegion(style, seg, placement) {
|
|
62
|
+
return this.paintRegionCache.getOrCompute(style.kind, seg.id, () => this.hasPositionedWord(seg, style.wordOverrides) || this.hasPositionedDecoration(seg, style)
|
|
63
|
+
? { x: 0, y: 0, width: this.width, height: this.height }
|
|
64
|
+
: this.measureSegmentPaintRegion(style, seg, placement));
|
|
65
|
+
}
|
|
66
|
+
measureSegmentPaintRegion(style, seg, placement) {
|
|
67
|
+
const segmentOverride = style.segmentOverrides.get(seg.id);
|
|
68
|
+
const segmentInlineStylesOverride = segmentOverride?.inlineStyles;
|
|
69
|
+
const baseInlineStyles = segmentInlineStylesOverride
|
|
70
|
+
? { ...style.inlineStyles, ...segmentInlineStylesOverride }
|
|
71
|
+
: style.inlineStyles;
|
|
72
|
+
const segmentHtml = this.subtreeBuilder.buildSegmentSubtree({
|
|
73
|
+
scopeClass: style.scopeClass,
|
|
74
|
+
baseInlineStyles,
|
|
75
|
+
wordOverrides: style.wordOverrides,
|
|
76
|
+
splitWordsIntoLetters: style.rendering.splitWordsIntoLetters,
|
|
77
|
+
includeVideoFrameLayer: style.rendering.videoFrame.required,
|
|
78
|
+
textDirection: style.rendering.textDirection,
|
|
79
|
+
extraWrapperStyles: {},
|
|
80
|
+
extraSegmentClasses: segmentOverride?.classes ?? [],
|
|
81
|
+
decorationPlacements: style.decorationPlacements,
|
|
82
|
+
// The probe measures geometry, so it has to carry the ids the
|
|
83
|
+
// stylesheet addresses: a rule targeting one element can change
|
|
84
|
+
// its box, and a region measured without it would be wrong.
|
|
85
|
+
addressableElementIds: style.addressableElementIds,
|
|
86
|
+
inlineStyleEmitter: style.inlineStyleEmitter,
|
|
87
|
+
}, seg, seg.time.start, NO_EXCLUDED_WORDS,
|
|
88
|
+
// Paint-region measurement renders the segment in isolation; the
|
|
89
|
+
// index inside the section doesn't affect layout, so any value works.
|
|
90
|
+
0);
|
|
91
|
+
return this.paintRegionResolver.resolve({
|
|
92
|
+
segmentHtml,
|
|
93
|
+
probeContainer: style.probeContainer,
|
|
94
|
+
placement,
|
|
95
|
+
viewportWidth: this.width,
|
|
96
|
+
viewportHeight: this.height,
|
|
97
|
+
safetyBleedEm: style.rendering.padding === null ? UNDECLARED_PADDING_SAFETY_EM : 0,
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
hasPositionedWord(seg, wordOverrides) {
|
|
101
|
+
for (const line of seg.lines) {
|
|
102
|
+
for (const word of line.words) {
|
|
103
|
+
if (wordOverrides.get(word.id)?.alignment)
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
109
|
+
hasPositionedDecoration(seg, style) {
|
|
110
|
+
for (const line of seg.lines) {
|
|
111
|
+
for (const word of line.words) {
|
|
112
|
+
if (!word.decoration)
|
|
113
|
+
continue;
|
|
114
|
+
if (style.wordOverrides.get(word.decoration.id)?.alignment)
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=VideoFrameVarsBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VideoFrameVarsBuilder.js","sourceRoot":"","sources":["../../../../src/modules/rendering/subtitle/VideoFrameVarsBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { HorizontalSide } from '../../bidi/HorizontalSide';
|
|
2
|
+
export type VerticalAlign = 'top' | 'center' | 'bottom';
|
|
3
|
+
/** Every vertical anchor, for reading one back off something that was stored. */
|
|
4
|
+
export declare const VERTICAL_ALIGNS: ReadonlyArray<VerticalAlign>;
|
|
5
|
+
export type HorizontalAlign = HorizontalSide;
|
|
6
|
+
/**
|
|
7
|
+
* Symmetric box-anchor positioning. `*Offset` is the absolute position of
|
|
8
|
+
* the anchor point as a fraction of the video's dimensions; `*Align`
|
|
9
|
+
* decides which edge of the caption box lands on that point:
|
|
10
|
+
* top/left/start → 0% of own size
|
|
11
|
+
* center → 50%
|
|
12
|
+
* bottom/right/end → 100%
|
|
13
|
+
*
|
|
14
|
+
* E.g. `verticalOffset: 1, verticalAlign: 'bottom'` pins the box's bottom
|
|
15
|
+
* edge to the video's bottom edge. `horizontalOffset: 0.5,
|
|
16
|
+
* horizontalAlign: 'center'` centers the box horizontally.
|
|
17
|
+
*
|
|
18
|
+
* `horizontalAlign` decides how the whole horizontal axis is read: with a
|
|
19
|
+
* screen side, `horizontalOffset` counts from the video's left edge; with a
|
|
20
|
+
* reading side, it counts from the edge where reading begins. The two are
|
|
21
|
+
* never mixed, so `start` at `0.06` sits six percent in from the left in
|
|
22
|
+
* left-to-right text and six percent in from the right in right-to-left
|
|
23
|
+
* text, while `left` at `0.06` stays put in both. `center` is treated as a
|
|
24
|
+
* screen side: it names the same place either way, and leaving its offset
|
|
25
|
+
* alone keeps a caption the reader positioned by hand where they put it.
|
|
26
|
+
*/
|
|
27
|
+
export interface AlignmentConfig {
|
|
28
|
+
verticalAlign: VerticalAlign;
|
|
29
|
+
verticalOffset: number;
|
|
30
|
+
horizontalAlign: HorizontalAlign;
|
|
31
|
+
horizontalOffset: number;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=AlignmentConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AlignmentConfig.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/types/AlignmentConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAEnE,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAExD,iFAAiF;AACjF,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,aAAa,CAA+B,CAAC;AACzF,MAAM,MAAM,eAAe,GAAG,cAAc,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,aAAa,CAAC;IAE7B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,eAAe,CAAC;IAEjC,gBAAgB,EAAE,MAAM,CAAC;CAC1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AlignmentConfig.js","sourceRoot":"","sources":["../../../../src/modules/rendering/types/AlignmentConfig.ts"],"names":[],"mappings":"AAIA,iFAAiF;AACjF,MAAM,CAAC,MAAM,eAAe,GAAiC,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BoxEdges.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/types/BoxEdges.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BoxEdges.js","sourceRoot":"","sources":["../../../../src/modules/rendering/types/BoxEdges.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which side of the segment a decoration glyph should be lifted to
|
|
3
|
+
* when the host sheet's effect config takes it out of line flow. When
|
|
4
|
+
* a decoration id is absent from the placement map, the glyph stays
|
|
5
|
+
* inline next to its host word.
|
|
6
|
+
*/
|
|
7
|
+
export type DecorationPlacementSide = 'above' | 'below';
|
|
8
|
+
//# sourceMappingURL=DecorationPlacementSide.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DecorationPlacementSide.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/types/DecorationPlacementSide.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,uBAAuB,GAAG,OAAO,GAAG,OAAO,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DecorationPlacementSide.js","sourceRoot":"","sources":["../../../../src/modules/rendering/types/DecorationPlacementSide.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ScopedRenderOverride } from '../../rendering/types/ScopedRenderOverride';
|
|
2
|
+
/**
|
|
3
|
+
* Render-time overrides indexed by element id.
|
|
4
|
+
* The bitmap renderer looks up each element by
|
|
5
|
+
* id and layers the resolved override over the style's root defaults.
|
|
6
|
+
*/
|
|
7
|
+
export declare class ElementRenderOverrides {
|
|
8
|
+
private readonly entries;
|
|
9
|
+
static empty(): ElementRenderOverrides;
|
|
10
|
+
static fromEntries(entries: ReadonlyArray<readonly [string, ScopedRenderOverride]>): ElementRenderOverrides;
|
|
11
|
+
private constructor();
|
|
12
|
+
isEmpty(): boolean;
|
|
13
|
+
get(elementId: string): ScopedRenderOverride | undefined;
|
|
14
|
+
/**
|
|
15
|
+
* A new instance layering `other` over this one: elements present in
|
|
16
|
+
* only one side keep their entry; for elements present in both,
|
|
17
|
+
* `other`'s inline styles merge key-by-key over this one's, and its
|
|
18
|
+
* alignment and classes replace them when present.
|
|
19
|
+
*/
|
|
20
|
+
mergedWith(other: ElementRenderOverrides): ElementRenderOverrides;
|
|
21
|
+
private mergeOverride;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=ElementRenderOverrides.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ElementRenderOverrides.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/types/ElementRenderOverrides.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AAE1F;;;;GAIG;AACH,qBAAa,sBAAsB;IAY/B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAX1B,MAAM,CAAC,KAAK,IAAI,sBAAsB;IAItC,MAAM,CAAC,WAAW,CAChB,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,GAC9D,sBAAsB;IAIzB,OAAO;IAIP,OAAO,IAAI,OAAO;IAIlB,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;IAIxD;;;;;OAKG;IACH,UAAU,CAAC,KAAK,EAAE,sBAAsB,GAAG,sBAAsB;IAWjE,OAAO,CAAC,aAAa;CAUtB"}
|