@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,32 @@
|
|
|
1
|
+
import type { Document } from '../../document/Document';
|
|
2
|
+
import type { PreparedStyle } from '../../rendering/subtitle/PreparedStyle';
|
|
3
|
+
import type { AnimationProbe } from '../../rendering/subtitle/AnimationProbe';
|
|
4
|
+
import type { BatchPlan } from '../../rendering/subtitle/BatchPlan';
|
|
5
|
+
/**
|
|
6
|
+
* Plans one batch: for each timestamp, finds the active prepared
|
|
7
|
+
* styles, groups timestamps by their disjoint kind sets so each
|
|
8
|
+
* rendered sprite carries only the asset payload its tiles need, and
|
|
9
|
+
* deduplicates timestamps that resolve to the same visual state into
|
|
10
|
+
* a single tile inside their group.
|
|
11
|
+
*/
|
|
12
|
+
export declare class BatchPlanner {
|
|
13
|
+
private readonly doc;
|
|
14
|
+
private readonly styles;
|
|
15
|
+
private readonly animationProbe;
|
|
16
|
+
constructor(doc: Document, styles: Readonly<Record<string, PreparedStyle>>, animationProbe: AnimationProbe);
|
|
17
|
+
plan(timestamps: ReadonlyArray<number>): BatchPlan;
|
|
18
|
+
private assignTile;
|
|
19
|
+
private itemsAt;
|
|
20
|
+
private computeAssetKey;
|
|
21
|
+
private computeStateKey;
|
|
22
|
+
/**
|
|
23
|
+
* Captures every time-varying CSS class the segment subtree
|
|
24
|
+
* exposes (segment, lines, words) so two timestamps that resolve
|
|
25
|
+
* to the same computed style — and therefore the same rendered
|
|
26
|
+
* frame outside active animation windows — share a tile, while two
|
|
27
|
+
* timestamps with different class states stay distinct.
|
|
28
|
+
*/
|
|
29
|
+
private fingerprintSegmentState;
|
|
30
|
+
private fingerprintLineState;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=BatchPlanner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BatchPlanner.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/subtitle/BatchPlanner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAG3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAC/E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAEjF,OAAO,KAAK,EAAE,SAAS,EAA0C,MAAM,uCAAuC,CAAC;AAG/G;;;;;;GAMG;AACH,qBAAa,YAAY;IAGrB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,cAAc;gBAFd,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,EAC/C,cAAc,EAAE,cAAc;IAGjD,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS;IAalD,OAAO,CAAC,UAAU;IAgBlB,OAAO,CAAC,OAAO;IAmBf,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,eAAe;IAOvB;;;;;;OAMG;IACH,OAAO,CAAC,uBAAuB;IAM/B,OAAO,CAAC,oBAAoB;CAK7B"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { AssetGroupBuilder } from '../../rendering/subtitle/AssetGroupBuilder';
|
|
2
|
+
import { profiler } from '../../profiling/Profiler';
|
|
3
|
+
/**
|
|
4
|
+
* Plans one batch: for each timestamp, finds the active prepared
|
|
5
|
+
* styles, groups timestamps by their disjoint kind sets so each
|
|
6
|
+
* rendered sprite carries only the asset payload its tiles need, and
|
|
7
|
+
* deduplicates timestamps that resolve to the same visual state into
|
|
8
|
+
* a single tile inside their group.
|
|
9
|
+
*/
|
|
10
|
+
export class BatchPlanner {
|
|
11
|
+
doc;
|
|
12
|
+
styles;
|
|
13
|
+
animationProbe;
|
|
14
|
+
constructor(doc, styles, animationProbe) {
|
|
15
|
+
this.doc = doc;
|
|
16
|
+
this.styles = styles;
|
|
17
|
+
this.animationProbe = animationProbe;
|
|
18
|
+
}
|
|
19
|
+
plan(timestamps) {
|
|
20
|
+
const builders = new Map();
|
|
21
|
+
const assignments = profiler.time('BatchPlanner.assignTiles', () => timestamps.map((t) => this.assignTile(t, builders)));
|
|
22
|
+
const groups = new Map();
|
|
23
|
+
for (const builder of builders.values()) {
|
|
24
|
+
groups.set(builder.assetKey, builder.build());
|
|
25
|
+
}
|
|
26
|
+
return { groups, assignments };
|
|
27
|
+
}
|
|
28
|
+
assignTile(t, builders) {
|
|
29
|
+
const items = profiler.time('BatchPlanner.itemsAt', () => this.itemsAt(t));
|
|
30
|
+
if (items.length === 0)
|
|
31
|
+
return null;
|
|
32
|
+
const assetKey = this.computeAssetKey(items);
|
|
33
|
+
let builder = builders.get(assetKey);
|
|
34
|
+
if (!builder) {
|
|
35
|
+
builder = new AssetGroupBuilder(assetKey);
|
|
36
|
+
builders.set(assetKey, builder);
|
|
37
|
+
}
|
|
38
|
+
const stateKey = profiler.time('BatchPlanner.computeStateKey', () => this.computeStateKey(items, t));
|
|
39
|
+
const tile = builder.upsertTile(stateKey, items);
|
|
40
|
+
return { assetKey, tileIndex: tile.tileIndex };
|
|
41
|
+
}
|
|
42
|
+
itemsAt(t) {
|
|
43
|
+
const items = [];
|
|
44
|
+
for (const section of this.doc.sections) {
|
|
45
|
+
const style = this.styles[section.kind];
|
|
46
|
+
if (!style)
|
|
47
|
+
continue;
|
|
48
|
+
for (let indexInSection = 0; indexInSection < section.segments.length; indexInSection++) {
|
|
49
|
+
const seg = section.segments[indexInSection];
|
|
50
|
+
if (!seg.time.contains(t))
|
|
51
|
+
continue;
|
|
52
|
+
items.push({ seg, style, t, indexInSection });
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
items.sort((a, b) => {
|
|
56
|
+
const ds = a.seg.time.start - b.seg.time.start;
|
|
57
|
+
if (ds !== 0)
|
|
58
|
+
return ds;
|
|
59
|
+
return a.seg.time.end - b.seg.time.end;
|
|
60
|
+
});
|
|
61
|
+
return items;
|
|
62
|
+
}
|
|
63
|
+
computeAssetKey(items) {
|
|
64
|
+
const kinds = new Set();
|
|
65
|
+
for (const it of items)
|
|
66
|
+
kinds.add(it.style.kind);
|
|
67
|
+
return [...kinds].sort().join(',');
|
|
68
|
+
}
|
|
69
|
+
computeStateKey(items, t) {
|
|
70
|
+
return items.map(({ seg, style }) => {
|
|
71
|
+
const base = `${style.kind}:${seg.id}:${this.fingerprintSegmentState(seg, t)}`;
|
|
72
|
+
return this.animationProbe.isItemAnimating(style, seg, t) ? `${base}:${t.toFixed(3)}` : base;
|
|
73
|
+
}).join('|');
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Captures every time-varying CSS class the segment subtree
|
|
77
|
+
* exposes (segment, lines, words) so two timestamps that resolve
|
|
78
|
+
* to the same computed style — and therefore the same rendered
|
|
79
|
+
* frame outside active animation windows — share a tile, while two
|
|
80
|
+
* timestamps with different class states stay distinct.
|
|
81
|
+
*/
|
|
82
|
+
fingerprintSegmentState(seg, t) {
|
|
83
|
+
const segClasses = seg.getCssClasses(t).join(',');
|
|
84
|
+
const lineFingerprints = [...seg.lines].map((line) => this.fingerprintLineState(line, t));
|
|
85
|
+
return `${segClasses}|{${lineFingerprints.join(';')}}`;
|
|
86
|
+
}
|
|
87
|
+
fingerprintLineState(line, t) {
|
|
88
|
+
const lineClasses = line.getCssClasses(t).join(',');
|
|
89
|
+
const wordClasses = [...line.words].map((w) => w.getCssClasses(t).join(',')).join('|');
|
|
90
|
+
return `${lineClasses}[${wordClasses}]`;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=BatchPlanner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BatchPlanner.js","sourceRoot":"","sources":["../../../../src/modules/rendering/subtitle/BatchPlanner.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAElF,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD;;;;;;GAMG;AACH,MAAM,OAAO,YAAY;IAGJ;IACA;IACA;IAHnB,YACmB,GAAa,EACb,MAA+C,EAC/C,cAA8B;QAF9B,QAAG,GAAH,GAAG,CAAU;QACb,WAAM,GAAN,MAAM,CAAyC;QAC/C,mBAAc,GAAd,cAAc,CAAgB;IAC9C,CAAC;IAEJ,IAAI,CAAC,UAAiC;QACpC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA6B,CAAC;QACtD,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,0BAA0B,EAAE,GAAG,EAAE,CACjE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CACpD,CAAC;QAEF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAsB,CAAC;QAC7C,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACxC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAChD,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACjC,CAAC;IAEO,UAAU,CAAC,CAAS,EAAE,QAAwC;QACpE,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAEpC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC7C,IAAI,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,IAAI,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAC1C,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAClC,CAAC;QAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;QACrG,MAAM,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACjD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IACjD,CAAC;IAEO,OAAO,CAAC,CAAS;QACvB,MAAM,KAAK,GAAiB,EAAE,CAAC;QAC/B,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,CAAC,KAAK;gBAAE,SAAS;YACrB,KAAK,IAAI,cAAc,GAAG,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,CAAC;gBACxF,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAE,CAAC;gBAC9C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAAE,SAAS;gBACpC,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAClB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;YAC/C,IAAI,EAAE,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;YACxB,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;QACzC,CAAC,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,eAAe,CAAC,KAAgC;QACtD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;QAChC,KAAK,MAAM,EAAE,IAAI,KAAK;YAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAEO,eAAe,CAAC,KAAgC,EAAE,CAAS;QACjE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE;YAClC,MAAM,IAAI,GAAG,GAAG,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;YAC/E,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/F,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IAED;;;;;;OAMG;IACK,uBAAuB,CAAC,GAAY,EAAE,CAAS;QACrD,MAAM,UAAU,GAAG,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClD,MAAM,gBAAgB,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC1F,OAAO,GAAG,UAAU,KAAK,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IACzD,CAAC;IAEO,oBAAoB,CAAC,IAAU,EAAE,CAAS;QAChD,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACpD,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvF,OAAO,GAAG,WAAW,IAAI,WAAW,GAAG,CAAC;IAC1C,CAAC;CACF"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { AlignmentConfig } from '../../rendering/types/AlignmentConfig';
|
|
2
|
+
import type { DecorationPlacementSide } from '../../rendering/types/DecorationPlacementSide';
|
|
3
|
+
import type { ElementRenderOverrides } from '../../rendering/types/ElementRenderOverrides';
|
|
4
|
+
import type { InlineStyleMap } from '../../rendering/types/InlineStyleMap';
|
|
5
|
+
import type { RenderingConfig } from '../../rendering/types/RenderingConfig';
|
|
6
|
+
import type { SvgFilterBundle } from '../../svg-filter/SvgFilterBundle';
|
|
7
|
+
import type { InlineStyleEmitter } from '../../rendering/styles/InlineStyleEmitter';
|
|
8
|
+
import type { BaselineNeeds } from '../../rendering/styles/BaselineCssComposer';
|
|
9
|
+
/**
|
|
10
|
+
* A `SubtitleStyle` after preparation: CSS minified, embedded, and
|
|
11
|
+
* scoped to a unique class; the probe `<style>` and probe container
|
|
12
|
+
* mounted in the host document; baseline needs computed; per-style
|
|
13
|
+
* `InlineStyleEmitter` wired to filter unused CSS custom properties
|
|
14
|
+
* from inline `style` attributes. Consumers tear the prepared style
|
|
15
|
+
* down by removing `probeStyleElement` and `probeContainer` from the
|
|
16
|
+
* document.
|
|
17
|
+
*/
|
|
18
|
+
export interface PreparedStyle {
|
|
19
|
+
kind: string;
|
|
20
|
+
scopedCss: string;
|
|
21
|
+
filters: SvgFilterBundle;
|
|
22
|
+
inlineStyles: InlineStyleMap;
|
|
23
|
+
alignment: AlignmentConfig;
|
|
24
|
+
rendering: RenderingConfig;
|
|
25
|
+
wordOverrides: ElementRenderOverrides;
|
|
26
|
+
segmentOverrides: ElementRenderOverrides;
|
|
27
|
+
decorationPlacements: ReadonlyMap<string, DecorationPlacementSide>;
|
|
28
|
+
addressableElementIds: ReadonlySet<string>;
|
|
29
|
+
probeStyleElement: HTMLStyleElement;
|
|
30
|
+
probeContainer: HTMLElement;
|
|
31
|
+
scopeClass: string;
|
|
32
|
+
inlineStyleEmitter: InlineStyleEmitter;
|
|
33
|
+
baselineNeeds: BaselineNeeds;
|
|
34
|
+
baselineCss: string;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=PreparedStyle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PreparedStyle.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/subtitle/PreparedStyle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kDAAkD,CAAC;AAChG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;AAC9F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;AACvF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AAEnF;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,eAAe,CAAC;IACzB,YAAY,EAAE,cAAc,CAAC;IAC7B,SAAS,EAAE,eAAe,CAAC;IAC3B,SAAS,EAAE,eAAe,CAAC;IAC3B,aAAa,EAAE,sBAAsB,CAAC;IACtC,gBAAgB,EAAE,sBAAsB,CAAC;IACzC,oBAAoB,EAAE,WAAW,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;IACnE,qBAAqB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3C,iBAAiB,EAAE,gBAAgB,CAAC;IACpC,cAAc,EAAE,WAAW,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,aAAa,EAAE,aAAa,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;CACrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PreparedStyle.js","sourceRoot":"","sources":["../../../../src/modules/rendering/subtitle/PreparedStyle.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Document } from '../../document/Document';
|
|
2
|
+
import type { SubtitleStyle } from '../../rendering/SubtitleFrameRenderer';
|
|
3
|
+
import type { CssResourceEmbedder } from '../../css/CssResourceEmbedder';
|
|
4
|
+
import type { CssScoper } from '../../css/CssScoper';
|
|
5
|
+
import type { CssMinifier } from '../../css/CssMinifier';
|
|
6
|
+
import type { CssVarReferenceScanner } from '../../css/CssVarReferenceScanner';
|
|
7
|
+
import type { BaselineCssComposer } from '../../rendering/styles/BaselineCssComposer';
|
|
8
|
+
import type { SvgFilterScoper } from '../../svg-filter/SvgFilterScoper';
|
|
9
|
+
import type { SegmentPaddingCssRuleBuilder } from '../../rendering/styles/SegmentPaddingCssRuleBuilder';
|
|
10
|
+
import type { PreparedStyle } from '../../rendering/subtitle/PreparedStyle';
|
|
11
|
+
/**
|
|
12
|
+
* Prepares a `SubtitleStyle` for downstream rendering: minifies and
|
|
13
|
+
* embeds the CSS, scopes it to a unique class, mounts a probe
|
|
14
|
+
* container in the host document, computes the baseline needs, and
|
|
15
|
+
* wires the per-style `InlineStyleEmitter` that filters unused CSS
|
|
16
|
+
* custom properties from inline styles.
|
|
17
|
+
*/
|
|
18
|
+
export declare class PreparedStyleFactory {
|
|
19
|
+
private readonly cssEmbedder;
|
|
20
|
+
private readonly cssScoper;
|
|
21
|
+
private readonly cssMinifier;
|
|
22
|
+
private readonly cssVarReferenceScanner;
|
|
23
|
+
private readonly baselineCssComposer;
|
|
24
|
+
private readonly svgFilterScoper;
|
|
25
|
+
private readonly segmentPaddingCssRuleBuilder;
|
|
26
|
+
constructor(cssEmbedder: CssResourceEmbedder, cssScoper: CssScoper, cssMinifier: CssMinifier, cssVarReferenceScanner: CssVarReferenceScanner, baselineCssComposer: BaselineCssComposer, svgFilterScoper: SvgFilterScoper, segmentPaddingCssRuleBuilder: SegmentPaddingCssRuleBuilder);
|
|
27
|
+
create(kind: string, style: SubtitleStyle, doc: Document): Promise<PreparedStyle>;
|
|
28
|
+
private prependSegmentPaddingRule;
|
|
29
|
+
private hasDecorationsForKind;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=PreparedStyleFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PreparedStyleFactory.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/subtitle/PreparedStyleFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAC9E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAClF,OAAO,KAAK,EAAE,mBAAmB,EAAiB,MAAM,+CAA+C,CAAC;AACxG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,wDAAwD,CAAC;AAO3G,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAE/E;;;;;;GAMG;AACH,qBAAa,oBAAoB;IAG7B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,4BAA4B;gBAN5B,WAAW,EAAE,mBAAmB,EAChC,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW,EACxB,sBAAsB,EAAE,sBAAsB,EAC9C,mBAAmB,EAAE,mBAAmB,EACxC,eAAe,EAAE,eAAe,EAChC,4BAA4B,EAAE,4BAA4B;IAGvE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC;IAoDvF,OAAO,CAAC,yBAAyB;IAKjC,OAAO,CAAC,qBAAqB;CAS9B"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { SvgFilterBundle } from '../../svg-filter/SvgFilterBundle';
|
|
2
|
+
import { SvgFilterScope } from '../../svg-filter/SvgFilterScope';
|
|
3
|
+
import { ElementRenderOverrides } from '../../rendering/types/ElementRenderOverrides';
|
|
4
|
+
import { InlineStyleEmitter } from '../../rendering/styles/InlineStyleEmitter';
|
|
5
|
+
/**
|
|
6
|
+
* Prepares a `SubtitleStyle` for downstream rendering: minifies and
|
|
7
|
+
* embeds the CSS, scopes it to a unique class, mounts a probe
|
|
8
|
+
* container in the host document, computes the baseline needs, and
|
|
9
|
+
* wires the per-style `InlineStyleEmitter` that filters unused CSS
|
|
10
|
+
* custom properties from inline styles.
|
|
11
|
+
*/
|
|
12
|
+
export class PreparedStyleFactory {
|
|
13
|
+
cssEmbedder;
|
|
14
|
+
cssScoper;
|
|
15
|
+
cssMinifier;
|
|
16
|
+
cssVarReferenceScanner;
|
|
17
|
+
baselineCssComposer;
|
|
18
|
+
svgFilterScoper;
|
|
19
|
+
segmentPaddingCssRuleBuilder;
|
|
20
|
+
constructor(cssEmbedder, cssScoper, cssMinifier, cssVarReferenceScanner, baselineCssComposer, svgFilterScoper, segmentPaddingCssRuleBuilder) {
|
|
21
|
+
this.cssEmbedder = cssEmbedder;
|
|
22
|
+
this.cssScoper = cssScoper;
|
|
23
|
+
this.cssMinifier = cssMinifier;
|
|
24
|
+
this.cssVarReferenceScanner = cssVarReferenceScanner;
|
|
25
|
+
this.baselineCssComposer = baselineCssComposer;
|
|
26
|
+
this.svgFilterScoper = svgFilterScoper;
|
|
27
|
+
this.segmentPaddingCssRuleBuilder = segmentPaddingCssRuleBuilder;
|
|
28
|
+
}
|
|
29
|
+
async create(kind, style, doc) {
|
|
30
|
+
const cssWithPadding = this.prependSegmentPaddingRule(style.css, style.rendering);
|
|
31
|
+
const minified = this.cssMinifier.minify(cssWithPadding);
|
|
32
|
+
const embedded = await this.cssEmbedder.embed(minified);
|
|
33
|
+
const scopeClass = `tscaps-render-${kind}-${Math.random().toString(36).slice(2, 8)}`;
|
|
34
|
+
const { css: cssWithIndirectFilters } = this.svgFilterScoper.rewriteCss(embedded);
|
|
35
|
+
const scopedCss = this.cssScoper.scope(cssWithIndirectFilters, `.${scopeClass}`);
|
|
36
|
+
const baselineNeeds = {
|
|
37
|
+
decorations: this.hasDecorationsForKind(doc, kind),
|
|
38
|
+
videoFrame: style.rendering.videoFrame.required,
|
|
39
|
+
};
|
|
40
|
+
const baselineCss = this.baselineCssComposer.compose(baselineNeeds);
|
|
41
|
+
// Probe styles live in `document.head` while a render is open;
|
|
42
|
+
// without the scopeClass guard, any `.word`/`.line`/etc on the
|
|
43
|
+
// host page would inherit them.
|
|
44
|
+
const scopedBaseline = this.cssScoper.scope(baselineCss, `.${scopeClass}`);
|
|
45
|
+
const probeStyleEl = document.createElement('style');
|
|
46
|
+
probeStyleEl.textContent = scopedBaseline + scopedCss;
|
|
47
|
+
document.head.appendChild(probeStyleEl);
|
|
48
|
+
const probeContainer = document.createElement('div');
|
|
49
|
+
probeContainer.className = scopeClass;
|
|
50
|
+
probeContainer.style.cssText = 'position:fixed;left:-99999px;visibility:hidden;pointer-events:none;';
|
|
51
|
+
document.body.appendChild(probeContainer);
|
|
52
|
+
const usedCssVars = this.cssVarReferenceScanner.scan(baselineCss + scopedCss);
|
|
53
|
+
return {
|
|
54
|
+
kind,
|
|
55
|
+
scopedCss,
|
|
56
|
+
filters: style.svgFilters ?? SvgFilterBundle.empty({
|
|
57
|
+
scopeAt: () => SvgFilterScope.empty(),
|
|
58
|
+
lengthFactorsAt: () => ({ pxPerEm: 0, pxPerCqh: 0 }),
|
|
59
|
+
}),
|
|
60
|
+
inlineStyles: style.inlineStyles,
|
|
61
|
+
alignment: style.alignment,
|
|
62
|
+
rendering: style.rendering,
|
|
63
|
+
wordOverrides: style.wordOverrides ?? ElementRenderOverrides.empty(),
|
|
64
|
+
segmentOverrides: style.segmentOverrides ?? ElementRenderOverrides.empty(),
|
|
65
|
+
decorationPlacements: style.decorationPlacements ?? new Map(),
|
|
66
|
+
addressableElementIds: style.addressableElementIds ?? new Set(),
|
|
67
|
+
probeStyleElement: probeStyleEl,
|
|
68
|
+
probeContainer,
|
|
69
|
+
scopeClass,
|
|
70
|
+
inlineStyleEmitter: new InlineStyleEmitter(usedCssVars),
|
|
71
|
+
baselineNeeds,
|
|
72
|
+
baselineCss,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
prependSegmentPaddingRule(css, rendering) {
|
|
76
|
+
const rule = this.segmentPaddingCssRuleBuilder.build(rendering.padding);
|
|
77
|
+
return rule ? `${rule}\n${css}` : css;
|
|
78
|
+
}
|
|
79
|
+
hasDecorationsForKind(doc, kind) {
|
|
80
|
+
for (const section of doc.sections) {
|
|
81
|
+
if (section.kind !== kind)
|
|
82
|
+
continue;
|
|
83
|
+
for (const word of section.getWords()) {
|
|
84
|
+
if (word.decoration)
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=PreparedStyleFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PreparedStyleFactory.js","sourceRoot":"","sources":["../../../../src/modules/rendering/subtitle/PreparedStyleFactory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { VideoFrameRegion } from '../../rendering/types/VideoFrameSource';
|
|
2
|
+
/**
|
|
3
|
+
* Cache of segment paint regions keyed by `(kind, segmentId)`. Looks
|
|
4
|
+
* up an entry or computes and stores one in a single call. `clear`
|
|
5
|
+
* drops every entry.
|
|
6
|
+
*/
|
|
7
|
+
export declare class SegmentPaintRegionCache {
|
|
8
|
+
private readonly regionByKey;
|
|
9
|
+
getOrCompute(kind: string, segmentId: string, compute: () => VideoFrameRegion): VideoFrameRegion;
|
|
10
|
+
clear(): void;
|
|
11
|
+
private composeKey;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=SegmentPaintRegionCache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SegmentPaintRegionCache.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/subtitle/SegmentPaintRegionCache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAElF;;;;GAIG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuC;IAEnE,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,gBAAgB,GAAG,gBAAgB;IAUhG,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,UAAU;CAGnB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cache of segment paint regions keyed by `(kind, segmentId)`. Looks
|
|
3
|
+
* up an entry or computes and stores one in a single call. `clear`
|
|
4
|
+
* drops every entry.
|
|
5
|
+
*/
|
|
6
|
+
export class SegmentPaintRegionCache {
|
|
7
|
+
regionByKey = new Map();
|
|
8
|
+
getOrCompute(kind, segmentId, compute) {
|
|
9
|
+
const key = this.composeKey(kind, segmentId);
|
|
10
|
+
let region = this.regionByKey.get(key);
|
|
11
|
+
if (!region) {
|
|
12
|
+
region = compute();
|
|
13
|
+
this.regionByKey.set(key, region);
|
|
14
|
+
}
|
|
15
|
+
return region;
|
|
16
|
+
}
|
|
17
|
+
clear() {
|
|
18
|
+
this.regionByKey.clear();
|
|
19
|
+
}
|
|
20
|
+
composeKey(kind, segmentId) {
|
|
21
|
+
return `${kind}:${segmentId}`;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=SegmentPaintRegionCache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SegmentPaintRegionCache.js","sourceRoot":"","sources":["../../../../src/modules/rendering/subtitle/SegmentPaintRegionCache.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,OAAO,uBAAuB;IACjB,WAAW,GAAG,IAAI,GAAG,EAA4B,CAAC;IAEnE,YAAY,CAAC,IAAY,EAAE,SAAiB,EAAE,OAA+B;QAC3E,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAC7C,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,OAAO,EAAE,CAAC;YACnB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAEO,UAAU,CAAC,IAAY,EAAE,SAAiB;QAChD,OAAO,GAAG,IAAI,IAAI,SAAS,EAAE,CAAC;IAChC,CAAC;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { VideoFrameRegion } from '
|
|
1
|
+
import type { VideoFrameRegion } from '../../rendering/types/VideoFrameSource';
|
|
2
2
|
/**
|
|
3
3
|
* Anchor placement of a wrapper element within the viewport: the
|
|
4
4
|
* absolute point its anchor edge lands on (in viewport pixels) and
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SegmentPaintRegionResolver.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/subtitle/SegmentPaintRegionResolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAGlF;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,iFAAiF;IACjF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,oGAAoG;IACpG,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC;IACrC,8CAA8C;IAC9C,QAAQ,CAAC,SAAS,EAAE,sBAAsB,CAAC;IAC3C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,sGAAsG;IACtG,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED;;;;;;;GAOG;AACH,qBAAa,0BAA0B;IAErC,OAAO,CAAC,KAAK,EAAE,uBAAuB,GAAG,gBAAgB;IAiBzD,OAAO,CAAC,aAAa;CAuBtB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { profiler } from '../../profiling/Profiler';
|
|
1
2
|
/**
|
|
2
3
|
* Computes the viewport-pixel sub-rectangle a rendered segment
|
|
3
4
|
* subtree paints into. The consumer supplies the HTML, the
|
|
@@ -12,11 +13,13 @@ export class SegmentPaintRegionResolver {
|
|
|
12
13
|
host.style.cssText = `container-type: size; width: ${input.viewportWidth}px; height: ${input.viewportHeight}px;`;
|
|
13
14
|
const inner = document.createElement('div');
|
|
14
15
|
inner.style.cssText = 'display:inline-block;';
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
profiler.time('SegmentPaintRegionResolver.mount', () => {
|
|
17
|
+
inner.innerHTML = input.segmentHtml;
|
|
18
|
+
host.appendChild(inner);
|
|
19
|
+
input.probeContainer.appendChild(host);
|
|
20
|
+
});
|
|
18
21
|
try {
|
|
19
|
-
return this.composeRegion(inner, input);
|
|
22
|
+
return profiler.time('SegmentPaintRegionResolver.measure', () => this.composeRegion(inner, input));
|
|
20
23
|
}
|
|
21
24
|
finally {
|
|
22
25
|
input.probeContainer.removeChild(host);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SegmentPaintRegionResolver.js","sourceRoot":"","sources":["../../../../src/modules/rendering/subtitle/SegmentPaintRegionResolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { Segment } from '../../document/Segment';
|
|
2
|
+
import type { Line } from '../../document/Line';
|
|
3
|
+
import type { Word } from '../../document/Word';
|
|
4
|
+
import type { Decoration } from '../../document/Decoration';
|
|
5
|
+
import type { ElementRenderOverrides } from '../../rendering/types/ElementRenderOverrides';
|
|
6
|
+
/** A word the segment subtree pulls out of line flow because its id carries an alignment override. */
|
|
7
|
+
export interface PositionedSubtreeWord {
|
|
8
|
+
readonly word: Word;
|
|
9
|
+
readonly line: Line;
|
|
10
|
+
readonly indexInLine: number;
|
|
11
|
+
}
|
|
12
|
+
/** A decoration the segment subtree pulls out of line flow because its id carries an alignment override. */
|
|
13
|
+
export interface PositionedSubtreeDecoration {
|
|
14
|
+
readonly word: Word;
|
|
15
|
+
readonly line: Line;
|
|
16
|
+
readonly indexInLine: number;
|
|
17
|
+
readonly decoration: Decoration;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* The breakdown of a segment into the subtrees a consumer needs to
|
|
21
|
+
* render: the words that move to their own anchor, the decorations
|
|
22
|
+
* that move to their own anchor, the set of word ids the main subtree
|
|
23
|
+
* skips, and whether every word in the segment has been positioned
|
|
24
|
+
* (in which case the main subtree is skipped entirely so its
|
|
25
|
+
* background chrome doesn't paint as an empty shell).
|
|
26
|
+
*/
|
|
27
|
+
export interface SegmentSubtreeDecomposition {
|
|
28
|
+
readonly positionedWords: ReadonlyArray<PositionedSubtreeWord>;
|
|
29
|
+
readonly positionedDecorations: ReadonlyArray<PositionedSubtreeDecoration>;
|
|
30
|
+
readonly excludedWordIds: ReadonlySet<string>;
|
|
31
|
+
readonly everyWordIsPositioned: boolean;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Pure policy: given the segment and its style's word-level alignment
|
|
35
|
+
* overrides, decides which words and decorations leave the main flow
|
|
36
|
+
* and what the main subtree must skip. Stateless, DOM-free, side-
|
|
37
|
+
* effect free.
|
|
38
|
+
*/
|
|
39
|
+
export declare class SegmentSubtreeDecomposer {
|
|
40
|
+
decompose(segment: Segment, wordOverrides: ElementRenderOverrides): SegmentSubtreeDecomposition;
|
|
41
|
+
private collectPositionedWords;
|
|
42
|
+
private collectPositionedDecorations;
|
|
43
|
+
private allWordsExcluded;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=SegmentSubtreeDecomposer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SegmentSubtreeDecomposer.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/subtitle/SegmentSubtreeDecomposer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;AAE9F,sGAAsG;AACtG,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED,4GAA4G;AAC5G,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC;CACjC;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,eAAe,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAC/D,QAAQ,CAAC,qBAAqB,EAAE,aAAa,CAAC,2BAA2B,CAAC,CAAC;IAC3E,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC9C,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;CACzC;AAED;;;;;GAKG;AACH,qBAAa,wBAAwB;IAEnC,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,sBAAsB,GAAG,2BAA2B;IAQ/F,OAAO,CAAC,sBAAsB;IAW9B,OAAO,CAAC,4BAA4B;IAapC,OAAO,CAAC,gBAAgB;CAQzB"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure policy: given the segment and its style's word-level alignment
|
|
3
|
+
* overrides, decides which words and decorations leave the main flow
|
|
4
|
+
* and what the main subtree must skip. Stateless, DOM-free, side-
|
|
5
|
+
* effect free.
|
|
6
|
+
*/
|
|
7
|
+
export class SegmentSubtreeDecomposer {
|
|
8
|
+
decompose(segment, wordOverrides) {
|
|
9
|
+
const positionedWords = this.collectPositionedWords(segment, wordOverrides);
|
|
10
|
+
const positionedDecorations = this.collectPositionedDecorations(segment, wordOverrides);
|
|
11
|
+
const excludedWordIds = new Set(positionedWords.map((p) => p.word.id));
|
|
12
|
+
const everyWordIsPositioned = this.allWordsExcluded(segment, excludedWordIds);
|
|
13
|
+
return { positionedWords, positionedDecorations, excludedWordIds, everyWordIsPositioned };
|
|
14
|
+
}
|
|
15
|
+
collectPositionedWords(segment, wordOverrides) {
|
|
16
|
+
const out = [];
|
|
17
|
+
for (const line of segment.lines) {
|
|
18
|
+
for (let indexInLine = 0; indexInLine < line.words.length; indexInLine++) {
|
|
19
|
+
const word = line.words[indexInLine];
|
|
20
|
+
if (wordOverrides.get(word.id)?.alignment)
|
|
21
|
+
out.push({ word, line, indexInLine });
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return out;
|
|
25
|
+
}
|
|
26
|
+
collectPositionedDecorations(segment, wordOverrides) {
|
|
27
|
+
const out = [];
|
|
28
|
+
for (const line of segment.lines) {
|
|
29
|
+
for (let indexInLine = 0; indexInLine < line.words.length; indexInLine++) {
|
|
30
|
+
const word = line.words[indexInLine];
|
|
31
|
+
const decoration = word.decoration;
|
|
32
|
+
if (!decoration)
|
|
33
|
+
continue;
|
|
34
|
+
if (wordOverrides.get(decoration.id)?.alignment)
|
|
35
|
+
out.push({ word, line, indexInLine, decoration });
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return out;
|
|
39
|
+
}
|
|
40
|
+
allWordsExcluded(segment, excludedWordIds) {
|
|
41
|
+
for (const line of segment.lines) {
|
|
42
|
+
for (const word of line.words) {
|
|
43
|
+
if (!excludedWordIds.has(word.id))
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=SegmentSubtreeDecomposer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SegmentSubtreeDecomposer.js","sourceRoot":"","sources":["../../../../src/modules/rendering/subtitle/SegmentSubtreeDecomposer.ts"],"names":[],"mappings":"AAoCA;;;;;GAKG;AACH,MAAM,OAAO,wBAAwB;IAEnC,SAAS,CAAC,OAAgB,EAAE,aAAqC;QAC/D,MAAM,eAAe,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAC5E,MAAM,qBAAqB,GAAG,IAAI,CAAC,4BAA4B,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACxF,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACvE,MAAM,qBAAqB,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAC9E,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,eAAe,EAAE,qBAAqB,EAAE,CAAC;IAC5F,CAAC;IAEO,sBAAsB,CAAC,OAAgB,EAAE,aAAqC;QACpF,MAAM,GAAG,GAA4B,EAAE,CAAC;QACxC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACjC,KAAK,IAAI,WAAW,GAAG,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC;gBACzE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAE,CAAC;gBACtC,IAAI,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,SAAS;oBAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;YACnF,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,4BAA4B,CAAC,OAAgB,EAAE,aAAqC;QAC1F,MAAM,GAAG,GAAkC,EAAE,CAAC;QAC9C,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACjC,KAAK,IAAI,WAAW,GAAG,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC;gBACzE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAE,CAAC;gBACtC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;gBACnC,IAAI,CAAC,UAAU;oBAAE,SAAS;gBAC1B,IAAI,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,SAAS;oBAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC;YACrG,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,gBAAgB,CAAC,OAAgB,EAAE,eAAoC;QAC7E,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACjC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC9B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;oBAAE,OAAO,KAAK,CAAC;YAClD,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import type { Segment } from '../../document/Segment';
|
|
2
|
+
import type { Line } from '../../document/Line';
|
|
3
|
+
import type { Word } from '../../document/Word';
|
|
4
|
+
import type { InlineStyleMap } from '../../rendering/types/InlineStyleMap';
|
|
5
|
+
import type { InlineStyleEmitter } from '../../rendering/styles/InlineStyleEmitter';
|
|
6
|
+
import type { ElementRenderOverrides } from '../../rendering/types/ElementRenderOverrides';
|
|
7
|
+
import type { DecorationPlacementSide } from '../../rendering/types/DecorationPlacementSide';
|
|
8
|
+
import type { WordSplitter } from '../../splitting/WordSplitter';
|
|
9
|
+
import type { TextDirection } from '../../bidi/TextDirection';
|
|
10
|
+
import type { WordFragmenter } from '../../bidi/WordFragmenter';
|
|
11
|
+
/**
|
|
12
|
+
* Per-style inputs every build call needs. `inlineStyleEmitter`
|
|
13
|
+
* encapsulates inline-style serialization so the builder stays free
|
|
14
|
+
* of CSS-variable filtering and escaping concerns.
|
|
15
|
+
*/
|
|
16
|
+
export interface SegmentSubtreeStyleInput {
|
|
17
|
+
readonly scopeClass: string;
|
|
18
|
+
readonly baseInlineStyles: InlineStyleMap;
|
|
19
|
+
readonly wordOverrides: ElementRenderOverrides;
|
|
20
|
+
readonly splitWordsIntoLetters: boolean;
|
|
21
|
+
readonly includeVideoFrameLayer: boolean;
|
|
22
|
+
readonly extraWrapperStyles: InlineStyleMap;
|
|
23
|
+
/** Classes appended to the `.segment` element's class list, after the structural ones. */
|
|
24
|
+
readonly extraSegmentClasses: ReadonlyArray<string>;
|
|
25
|
+
/** Decorations lifted out of line flow, keyed by decoration id. Absent ids render inline next to their host word. */
|
|
26
|
+
readonly decorationPlacements: ReadonlyMap<string, DecorationPlacementSide>;
|
|
27
|
+
readonly inlineStyleEmitter: InlineStyleEmitter;
|
|
28
|
+
/** Paragraph direction every line is resolved against. */
|
|
29
|
+
readonly textDirection: TextDirection;
|
|
30
|
+
/**
|
|
31
|
+
* Ids of elements the stylesheet addresses individually. Each such
|
|
32
|
+
* element is stamped with {@link DataAttribute.ELEMENT_ID}; the rest
|
|
33
|
+
* carry no id, because the markup is serialized once per frame and
|
|
34
|
+
* stamping everything grows it by roughly a quarter.
|
|
35
|
+
*/
|
|
36
|
+
readonly addressableElementIds: ReadonlySet<string>;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Builds the `wrapper → segment → lines → words/letters` HTML
|
|
40
|
+
* subtree for a segment at a given time, applying the segment's
|
|
41
|
+
* classes, time-driven CSS variables, base typography styles, and
|
|
42
|
+
* per-word overrides consistently. The output is the same HTML
|
|
43
|
+
* shape every consumer embeds (an SVG `<foreignObject>`, a
|
|
44
|
+
* measurement probe, etc.).
|
|
45
|
+
*
|
|
46
|
+
* Stateless — all per-style inputs arrive on every call through
|
|
47
|
+
* {@link SegmentSubtreeStyleInput}.
|
|
48
|
+
*/
|
|
49
|
+
export declare class SegmentSubtreeHtmlBuilder {
|
|
50
|
+
private readonly wordSplitter;
|
|
51
|
+
private readonly wordFragmenter;
|
|
52
|
+
constructor(wordSplitter: WordSplitter, wordFragmenter: WordFragmenter);
|
|
53
|
+
/**
|
|
54
|
+
* Builds the wrapper + segment subtree containing every line and
|
|
55
|
+
* word of the segment. Words whose ids appear in `excludedWordIds`
|
|
56
|
+
* are skipped entirely — they are not rendered in the line, so
|
|
57
|
+
* neighbours reflow into the freed slot.
|
|
58
|
+
*
|
|
59
|
+
* `indexInSection` is the segment's zero-based position inside its
|
|
60
|
+
* owning section; published as `--segment-index` on the segment node.
|
|
61
|
+
*/
|
|
62
|
+
buildSegmentSubtree(style: SegmentSubtreeStyleInput, seg: Segment, t: number, excludedWordIds: ReadonlySet<string>, indexInSection: number): string;
|
|
63
|
+
/**
|
|
64
|
+
* Builds the wrapper + segment subtree containing a single
|
|
65
|
+
* line-and-word chain around `word`. Used for synthesizing the
|
|
66
|
+
* minimum context a word needs when it has been promoted out of
|
|
67
|
+
* the main flow by a per-word alignment override.
|
|
68
|
+
*
|
|
69
|
+
* `indexInSection` / `indexInLine` keep the published timing /
|
|
70
|
+
* structural variables (`--segment-index`, `--word-index`) consistent
|
|
71
|
+
* with the original tree position.
|
|
72
|
+
*/
|
|
73
|
+
buildSingleWordSubtree(style: SegmentSubtreeStyleInput, seg: Segment, line: Line, word: Word, t: number, indexInSection: number, indexInLine: number): string;
|
|
74
|
+
/**
|
|
75
|
+
* Builds the wrapper + segment subtree containing only the
|
|
76
|
+
* decoration glyph attached to `word`. Used when a per-decoration
|
|
77
|
+
* alignment override paints the glyph at its own anchor instead of
|
|
78
|
+
* inline next to its host word.
|
|
79
|
+
*/
|
|
80
|
+
buildSingleDecorationSubtree(style: SegmentSubtreeStyleInput, seg: Segment, line: Line, word: Word, t: number, indexInSection: number): string;
|
|
81
|
+
private wrapInScope;
|
|
82
|
+
private composeWrapperStyle;
|
|
83
|
+
private composeSegmentHtml;
|
|
84
|
+
private buildLineWrapperHtml;
|
|
85
|
+
private buildLineHtml;
|
|
86
|
+
/**
|
|
87
|
+
* Emits the words of one line as `<span>`s already ordered the way they
|
|
88
|
+
* paint. The words are fragmented together rather than one at a time,
|
|
89
|
+
* because the direction the algorithm resolves for a word depends on
|
|
90
|
+
* the words beside it.
|
|
91
|
+
*/
|
|
92
|
+
private buildWordsHtml;
|
|
93
|
+
private buildGapStyle;
|
|
94
|
+
private maybeVideoFrameLayerHtml;
|
|
95
|
+
private buildWordFragmentHtml;
|
|
96
|
+
private buildDirectionStyle;
|
|
97
|
+
private shouldEmitInlineDecoration;
|
|
98
|
+
private buildPromotedDecorationsContainerHtml;
|
|
99
|
+
private collectPromotedDecorationsHtml;
|
|
100
|
+
private buildDecorationSpanHtml;
|
|
101
|
+
/**
|
|
102
|
+
* The id attribute for an element the stylesheet addresses, or an
|
|
103
|
+
* empty string for one it does not.
|
|
104
|
+
*/
|
|
105
|
+
private elementIdAttr;
|
|
106
|
+
private escapeHtml;
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=SegmentSubtreeHtmlBuilder.d.ts.map
|