@tscaps/engine 0.1.1 → 0.2.1
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 +2 -4
- package/dist/modules/css/CssScoper.d.ts +21 -1
- package/dist/modules/css/CssScoper.d.ts.map +1 -1
- package/dist/modules/css/CssScoper.js +129 -56
- package/dist/modules/css/CssScoper.js.map +1 -1
- package/dist/modules/css/CssVarReferenceScanner.d.ts +13 -0
- package/dist/modules/css/CssVarReferenceScanner.d.ts.map +1 -0
- package/dist/modules/css/CssVarReferenceScanner.js +20 -0
- package/dist/modules/css/CssVarReferenceScanner.js.map +1 -0
- package/dist/modules/css/index.d.ts +1 -0
- package/dist/modules/css/index.d.ts.map +1 -1
- package/dist/modules/css/index.js +1 -0
- package/dist/modules/css/index.js.map +1 -1
- package/dist/modules/document/CssVariable.d.ts +24 -3
- package/dist/modules/document/CssVariable.d.ts.map +1 -1
- package/dist/modules/document/CssVariable.js +30 -2
- package/dist/modules/document/CssVariable.js.map +1 -1
- 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 +11 -0
- package/dist/modules/document/DocumentEditor.d.ts.map +1 -1
- package/dist/modules/document/DocumentEditor.js +49 -9
- package/dist/modules/document/DocumentEditor.js.map +1 -1
- package/dist/modules/document/Line.d.ts +9 -6
- package/dist/modules/document/Line.d.ts.map +1 -1
- package/dist/modules/document/Line.js +11 -24
- package/dist/modules/document/Line.js.map +1 -1
- package/dist/modules/document/Section.d.ts +0 -4
- package/dist/modules/document/Section.d.ts.map +1 -1
- package/dist/modules/document/Section.js +2 -18
- package/dist/modules/document/Section.js.map +1 -1
- package/dist/modules/document/Segment.d.ts +10 -7
- package/dist/modules/document/Segment.d.ts.map +1 -1
- package/dist/modules/document/Segment.js +15 -22
- package/dist/modules/document/Segment.js.map +1 -1
- package/dist/modules/document/Tag.d.ts +3 -0
- package/dist/modules/document/Tag.d.ts.map +1 -1
- package/dist/modules/document/Tag.js +3 -0
- package/dist/modules/document/Tag.js.map +1 -1
- package/dist/modules/document/Word.d.ts +20 -7
- package/dist/modules/document/Word.d.ts.map +1 -1
- package/dist/modules/document/Word.js +32 -34
- package/dist/modules/document/Word.js.map +1 -1
- package/dist/modules/document/index.d.ts +1 -0
- package/dist/modules/document/index.d.ts.map +1 -1
- package/dist/modules/document/index.js +1 -0
- 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/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 +11 -6
- 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 +40 -717
- package/dist/modules/rendering/BrowserSubtitleFrameRenderer.js.map +1 -1
- package/dist/modules/rendering/SubtitleFrameRenderer.d.ts +8 -5
- package/dist/modules/rendering/SubtitleFrameRenderer.d.ts.map +1 -1
- package/dist/modules/rendering/index.d.ts +13 -8
- package/dist/modules/rendering/index.d.ts.map +1 -1
- package/dist/modules/rendering/index.js +5 -2
- package/dist/modules/rendering/index.js.map +1 -1
- package/dist/modules/rendering/styles/BaselineCssComposer.d.ts +23 -0
- package/dist/modules/rendering/styles/BaselineCssComposer.d.ts.map +1 -0
- package/dist/modules/rendering/styles/BaselineCssComposer.js +40 -0
- package/dist/modules/rendering/styles/BaselineCssComposer.js.map +1 -0
- package/dist/modules/rendering/styles/BehindActorBaselineCss.d.ts +19 -0
- package/dist/modules/rendering/styles/BehindActorBaselineCss.d.ts.map +1 -0
- package/dist/modules/rendering/styles/BehindActorBaselineCss.js +19 -0
- package/dist/modules/rendering/styles/BehindActorBaselineCss.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 +34 -0
- package/dist/modules/rendering/styles/DecorationContainerBaselineCss.js.map +1 -0
- package/dist/modules/rendering/styles/InlineStyleEmitter.d.ts +27 -0
- package/dist/modules/rendering/styles/InlineStyleEmitter.d.ts.map +1 -0
- package/dist/modules/rendering/styles/InlineStyleEmitter.js +53 -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/styles/VideoFrameLayerClass.d.ts.map +1 -0
- package/dist/modules/rendering/styles/VideoFrameLayerClass.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 +19 -0
- package/dist/modules/rendering/subtitle/ActiveRenderSessionFactory.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/ActiveRenderSessionFactory.js +41 -0
- package/dist/modules/rendering/subtitle/ActiveRenderSessionFactory.js.map +1 -0
- package/dist/modules/rendering/subtitle/AnimationProbe.d.ts +25 -0
- package/dist/modules/rendering/subtitle/AnimationProbe.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/AnimationProbe.js +198 -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 +31 -0
- package/dist/modules/rendering/subtitle/BatchPlanner.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/BatchPlanner.js +91 -0
- package/dist/modules/rendering/subtitle/BatchPlanner.js.map +1 -0
- package/dist/modules/rendering/subtitle/PreparedStyle.d.ts +35 -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/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 +80 -0
- package/dist/modules/rendering/subtitle/SegmentSubtreeHtmlBuilder.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/SegmentSubtreeHtmlBuilder.js +188 -0
- package/dist/modules/rendering/subtitle/SegmentSubtreeHtmlBuilder.js.map +1 -0
- package/dist/modules/rendering/subtitle/SegmentWrapperRenderer.d.ts +45 -0
- package/dist/modules/rendering/subtitle/SegmentWrapperRenderer.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/SegmentWrapperRenderer.js +141 -0
- package/dist/modules/rendering/subtitle/SegmentWrapperRenderer.js.map +1 -0
- package/dist/modules/rendering/subtitle/SpriteSheetCompositor.d.ts +46 -0
- package/dist/modules/rendering/subtitle/SpriteSheetCompositor.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/SpriteSheetCompositor.js +134 -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 +27 -0
- package/dist/modules/rendering/subtitle/SvgFilterMaterializer.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/SvgFilterMaterializer.js +40 -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 +112 -0
- package/dist/modules/rendering/subtitle/VideoFrameVarsBuilder.js.map +1 -0
- package/dist/modules/rendering/types/AlignmentConfig.d.ts.map +1 -0
- package/dist/modules/rendering/types/AlignmentConfig.js.map +1 -0
- package/dist/modules/rendering/types/BehindActorRequirement.d.ts +12 -0
- package/dist/modules/rendering/types/BehindActorRequirement.d.ts.map +1 -0
- package/dist/modules/rendering/types/BehindActorRequirement.js +2 -0
- package/dist/modules/rendering/types/BehindActorRequirement.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/{ElementRenderOverrides.d.ts → types/ElementRenderOverrides.d.ts} +1 -1
- package/dist/modules/rendering/types/ElementRenderOverrides.d.ts.map +1 -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} +3 -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/{ScopedRenderOverride.d.ts → types/ScopedRenderOverride.d.ts} +2 -2
- 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/tagging/PauseTagger.d.ts +24 -0
- package/dist/modules/tagging/PauseTagger.d.ts.map +1 -0
- package/dist/modules/tagging/PauseTagger.js +41 -0
- package/dist/modules/tagging/PauseTagger.js.map +1 -0
- package/dist/modules/tagging/StructureTagger.d.ts +1 -1
- package/dist/modules/tagging/StructureTagger.d.ts.map +1 -1
- package/dist/modules/tagging/StructureTagger.js +11 -5
- package/dist/modules/tagging/StructureTagger.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/transcription/VttTranscriber.d.ts +28 -0
- package/dist/modules/transcription/VttTranscriber.d.ts.map +1 -0
- package/dist/modules/transcription/VttTranscriber.js +59 -0
- package/dist/modules/transcription/VttTranscriber.js.map +1 -0
- package/dist/modules/transcription/index.d.ts +1 -0
- package/dist/modules/transcription/index.d.ts.map +1 -1
- package/dist/modules/transcription/index.js +1 -0
- 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 +199 -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 +1 -1
- package/dist/modules/video/mediabunny/frame/CurrentFrameVideoSource.d.ts.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 +25 -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 +1 -1
- package/dist/modules/rendering/AlignmentConfig.d.ts.map +0 -1
- 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.map +0 -1
- 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.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.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/rendering/{VideoFrameLayerClass.d.ts → styles/VideoFrameLayerClass.d.ts} +0 -0
- /package/dist/modules/rendering/{VideoFrameLayerClass.js → styles/VideoFrameLayerClass.js} +0 -0
- /package/dist/modules/rendering/{SegmentPaintRegionResolver.js → subtitle/SegmentPaintRegionResolver.js} +0 -0
- /package/dist/modules/rendering/{AlignmentConfig.d.ts → types/AlignmentConfig.d.ts} +0 -0
- /package/dist/modules/rendering/{AlignmentConfig.js → types/AlignmentConfig.js} +0 -0
- /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/{ElementRenderOverrides.js → types/ElementRenderOverrides.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,19 @@
|
|
|
1
|
+
import type { Document } from '../../document/Document';
|
|
2
|
+
import type { WordSplitter } from '../../splitting/WordSplitter';
|
|
3
|
+
import type { VideoFrameSource } from '../../rendering/types/VideoFrameSource';
|
|
4
|
+
import type { BaselineCssComposer } from '../../rendering/styles/BaselineCssComposer';
|
|
5
|
+
import { ActiveRenderSession } from '../../rendering/subtitle/ActiveRenderSession';
|
|
6
|
+
import type { PreparedStyle } from '../../rendering/subtitle/PreparedStyle';
|
|
7
|
+
/**
|
|
8
|
+
* Assembles an `ActiveRenderSession` and its per-session collaborator
|
|
9
|
+
* graph: animation probe, segment paint-region cache, video-frame
|
|
10
|
+
* vars builder, segment wrapper renderer, batch planner, and sprite
|
|
11
|
+
* sheet compositor.
|
|
12
|
+
*/
|
|
13
|
+
export declare class ActiveRenderSessionFactory {
|
|
14
|
+
private readonly wordSplitter;
|
|
15
|
+
private readonly baselineCssComposer;
|
|
16
|
+
constructor(wordSplitter: WordSplitter, baselineCssComposer: BaselineCssComposer);
|
|
17
|
+
create(doc: Document, styles: Readonly<Record<string, PreparedStyle>>, width: number, height: number, videoFrameSource: VideoFrameSource | null): ActiveRenderSession;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=ActiveRenderSessionFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActiveRenderSessionFactory.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/subtitle/ActiveRenderSessionFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AAazF,OAAO,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AACtF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAE/E;;;;;GAKG;AACH,qBAAa,0BAA0B;IAGnC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,mBAAmB;gBADnB,YAAY,EAAE,YAAY,EAC1B,mBAAmB,EAAE,mBAAmB;IAG3D,MAAM,CACJ,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,EAC/C,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,GACxC,mBAAmB;CA0CvB"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { SvgFilterScoper } from '../../svg-filter/SvgFilterScoper';
|
|
2
|
+
import { SvgFilterLengthResolver } from '../../svg-filter/SvgFilterLengthResolver';
|
|
3
|
+
import { SegmentSubtreeHtmlBuilder } from '../../rendering/subtitle/SegmentSubtreeHtmlBuilder';
|
|
4
|
+
import { SegmentSubtreeDecomposer } from '../../rendering/subtitle/SegmentSubtreeDecomposer';
|
|
5
|
+
import { SegmentPaintRegionResolver } from '../../rendering/subtitle/SegmentPaintRegionResolver';
|
|
6
|
+
import { SegmentPaintRegionCache } from '../../rendering/subtitle/SegmentPaintRegionCache';
|
|
7
|
+
import { VideoFrameVarsBuilder } from '../../rendering/subtitle/VideoFrameVarsBuilder';
|
|
8
|
+
import { SvgFilterMaterializer } from '../../rendering/subtitle/SvgFilterMaterializer';
|
|
9
|
+
import { SegmentWrapperRenderer } from '../../rendering/subtitle/SegmentWrapperRenderer';
|
|
10
|
+
import { AnimationProbe } from '../../rendering/subtitle/AnimationProbe';
|
|
11
|
+
import { BatchPlanner } from '../../rendering/subtitle/BatchPlanner';
|
|
12
|
+
import { SpriteSheetCompositor } from '../../rendering/subtitle/SpriteSheetCompositor';
|
|
13
|
+
import { ActiveRenderSession } from '../../rendering/subtitle/ActiveRenderSession';
|
|
14
|
+
/**
|
|
15
|
+
* Assembles an `ActiveRenderSession` and its per-session collaborator
|
|
16
|
+
* graph: animation probe, segment paint-region cache, video-frame
|
|
17
|
+
* vars builder, segment wrapper renderer, batch planner, and sprite
|
|
18
|
+
* sheet compositor.
|
|
19
|
+
*/
|
|
20
|
+
export class ActiveRenderSessionFactory {
|
|
21
|
+
wordSplitter;
|
|
22
|
+
baselineCssComposer;
|
|
23
|
+
constructor(wordSplitter, baselineCssComposer) {
|
|
24
|
+
this.wordSplitter = wordSplitter;
|
|
25
|
+
this.baselineCssComposer = baselineCssComposer;
|
|
26
|
+
}
|
|
27
|
+
create(doc, styles, width, height, videoFrameSource) {
|
|
28
|
+
const subtreeBuilder = new SegmentSubtreeHtmlBuilder(this.wordSplitter);
|
|
29
|
+
const subtreeDecomposer = new SegmentSubtreeDecomposer();
|
|
30
|
+
const paintRegionResolver = new SegmentPaintRegionResolver();
|
|
31
|
+
const paintRegionCache = new SegmentPaintRegionCache();
|
|
32
|
+
const filterMaterializer = new SvgFilterMaterializer(new SvgFilterScoper(), new SvgFilterLengthResolver(), height);
|
|
33
|
+
const videoFrameVarsBuilder = new VideoFrameVarsBuilder(subtreeBuilder, paintRegionResolver, paintRegionCache, width, height, videoFrameSource);
|
|
34
|
+
const wrapperRenderer = new SegmentWrapperRenderer(subtreeBuilder, subtreeDecomposer, filterMaterializer, videoFrameVarsBuilder, width, height);
|
|
35
|
+
const animationProbe = new AnimationProbe();
|
|
36
|
+
const batchPlanner = new BatchPlanner(doc, styles, animationProbe);
|
|
37
|
+
const spriteSheetCompositor = new SpriteSheetCompositor(styles, wrapperRenderer, this.baselineCssComposer, width, height);
|
|
38
|
+
return new ActiveRenderSession(batchPlanner, spriteSheetCompositor, animationProbe, paintRegionCache);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=ActiveRenderSessionFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ActiveRenderSessionFactory.js","sourceRoot":"","sources":["../../../../src/modules/rendering/subtitle/ActiveRenderSessionFactory.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AACtF,OAAO,EAAE,yBAAyB,EAAE,MAAM,uDAAuD,CAAC;AAClG,OAAO,EAAE,wBAAwB,EAAE,MAAM,sDAAsD,CAAC;AAChG,OAAO,EAAE,0BAA0B,EAAE,MAAM,wDAAwD,CAAC;AACpG,OAAO,EAAE,uBAAuB,EAAE,MAAM,qDAAqD,CAAC;AAC9F,OAAO,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAC1F,OAAO,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAC1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,oDAAoD,CAAC;AAC5F,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAC1F,OAAO,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AAGtF;;;;;GAKG;AACH,MAAM,OAAO,0BAA0B;IAGlB;IACA;IAFnB,YACmB,YAA0B,EAC1B,mBAAwC;QADxC,iBAAY,GAAZ,YAAY,CAAc;QAC1B,wBAAmB,GAAnB,mBAAmB,CAAqB;IACxD,CAAC;IAEJ,MAAM,CACJ,GAAa,EACb,MAA+C,EAC/C,KAAa,EACb,MAAc,EACd,gBAAyC;QAEzC,MAAM,cAAc,GAAG,IAAI,yBAAyB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxE,MAAM,iBAAiB,GAAG,IAAI,wBAAwB,EAAE,CAAC;QACzD,MAAM,mBAAmB,GAAG,IAAI,0BAA0B,EAAE,CAAC;QAC7D,MAAM,gBAAgB,GAAG,IAAI,uBAAuB,EAAE,CAAC;QACvD,MAAM,kBAAkB,GAAG,IAAI,qBAAqB,CAClD,IAAI,eAAe,EAAE,EACrB,IAAI,uBAAuB,EAAE,EAC7B,MAAM,CACP,CAAC;QACF,MAAM,qBAAqB,GAAG,IAAI,qBAAqB,CACrD,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,EACL,MAAM,EACN,gBAAgB,CACjB,CAAC;QACF,MAAM,eAAe,GAAG,IAAI,sBAAsB,CAChD,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,KAAK,EACL,MAAM,CACP,CAAC;QACF,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;QAC5C,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;QACnE,MAAM,qBAAqB,GAAG,IAAI,qBAAqB,CACrD,MAAM,EACN,eAAe,EACf,IAAI,CAAC,mBAAmB,EACxB,KAAK,EACL,MAAM,CACP,CAAC;QACF,OAAO,IAAI,mBAAmB,CAC5B,YAAY,EACZ,qBAAqB,EACrB,cAAc,EACd,gBAAgB,CACjB,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { Segment } from '../../document/Segment';
|
|
2
|
+
import type { PreparedStyle } from '../../rendering/subtitle/PreparedStyle';
|
|
3
|
+
/**
|
|
4
|
+
* Decides whether a render item should redraw every frame: builds
|
|
5
|
+
* throw-away DOM chains matching the CSS classes the engine emits,
|
|
6
|
+
* reads back resolved `animation-duration` / `animation-delay` from
|
|
7
|
+
* `getComputedStyle`, and decodes each timing back to the CSS
|
|
8
|
+
* variable that anchored its window. Caches per `(style, class
|
|
9
|
+
* chain)` so the same chain is probed at most once. `clear` empties
|
|
10
|
+
* the cache.
|
|
11
|
+
*/
|
|
12
|
+
export declare class AnimationProbe {
|
|
13
|
+
private readonly timingByKey;
|
|
14
|
+
isItemAnimating(style: PreparedStyle, seg: Segment, t: number): boolean;
|
|
15
|
+
clear(): void;
|
|
16
|
+
private wordTiming;
|
|
17
|
+
private lineTiming;
|
|
18
|
+
private segmentTiming;
|
|
19
|
+
private injectProbeMagic;
|
|
20
|
+
private getOrProbeTiming;
|
|
21
|
+
private readAnimTimings;
|
|
22
|
+
private parseDurationsS;
|
|
23
|
+
private evalAnims;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=AnimationProbe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnimationProbe.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/subtitle/AnimationProbe.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAK/E;;;;;;;;GAQG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqC;IAEjE,eAAe,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;IA2BvE,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,eAAe;IAwBvB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,SAAS;CA+BlB"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { CssVariable } from '../../document/CssVariable';
|
|
2
|
+
const FINGERPRINT_BASE_S = 10000;
|
|
3
|
+
/**
|
|
4
|
+
* Decides whether a render item should redraw every frame: builds
|
|
5
|
+
* throw-away DOM chains matching the CSS classes the engine emits,
|
|
6
|
+
* reads back resolved `animation-duration` / `animation-delay` from
|
|
7
|
+
* `getComputedStyle`, and decodes each timing back to the CSS
|
|
8
|
+
* variable that anchored its window. Caches per `(style, class
|
|
9
|
+
* chain)` so the same chain is probed at most once. `clear` empties
|
|
10
|
+
* the cache.
|
|
11
|
+
*/
|
|
12
|
+
export class AnimationProbe {
|
|
13
|
+
timingByKey = new Map();
|
|
14
|
+
isItemAnimating(style, seg, t) {
|
|
15
|
+
// Letter-level CSS typically combines time vars via calc(), which
|
|
16
|
+
// destroys the fingerprint-based probe; treat the segment as
|
|
17
|
+
// always animating in that mode and redraw every frame.
|
|
18
|
+
if (style.rendering.splitWordsIntoLetters)
|
|
19
|
+
return true;
|
|
20
|
+
// Styles that bake the underlying video frame into their visuals
|
|
21
|
+
// change every tick by definition — no two timestamps share state.
|
|
22
|
+
if (style.rendering.videoFrame.required)
|
|
23
|
+
return true;
|
|
24
|
+
// Filter definitions whose materialized output can vary with
|
|
25
|
+
// `currentTime` likewise force per-frame redraw; conservatively
|
|
26
|
+
// treat any non-empty filter set as time-varying.
|
|
27
|
+
if (!style.filters.definitions.isEmpty())
|
|
28
|
+
return true;
|
|
29
|
+
const segClasses = seg.getCssClasses(t);
|
|
30
|
+
if (this.evalAnims(this.segmentTiming(style, segClasses), t, seg.time.start, seg.time.end))
|
|
31
|
+
return true;
|
|
32
|
+
return [...seg.lines].some((line) => {
|
|
33
|
+
const lineClasses = line.getCssClasses(t);
|
|
34
|
+
if (this.evalAnims(this.lineTiming(style, lineClasses, segClasses), t, seg.time.start, seg.time.end, line.time.start, line.time.end))
|
|
35
|
+
return true;
|
|
36
|
+
return [...line.words].some((word) => {
|
|
37
|
+
const wordClasses = word.getCssClasses(t);
|
|
38
|
+
return this.evalAnims(this.wordTiming(style, wordClasses, lineClasses, segClasses), t, seg.time.start, seg.time.end, line.time.start, line.time.end, word.time.start, word.time.end);
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
clear() {
|
|
43
|
+
this.timingByKey.clear();
|
|
44
|
+
}
|
|
45
|
+
wordTiming(style, wordClasses, lineClasses, segClasses) {
|
|
46
|
+
const key = `${style.kind}|w:${wordClasses.join(' ')}|l:${lineClasses.join(' ')}|s:${segClasses.join(' ')}`;
|
|
47
|
+
return this.getOrProbeTiming(key, () => {
|
|
48
|
+
const seg = document.createElement('div');
|
|
49
|
+
seg.className = segClasses.join(' ');
|
|
50
|
+
const line = document.createElement('div');
|
|
51
|
+
line.className = lineClasses.join(' ');
|
|
52
|
+
const word = document.createElement('span');
|
|
53
|
+
word.className = wordClasses.join(' ');
|
|
54
|
+
this.injectProbeMagic(word);
|
|
55
|
+
line.appendChild(word);
|
|
56
|
+
seg.appendChild(line);
|
|
57
|
+
style.probeContainer.appendChild(seg);
|
|
58
|
+
const timing = this.readAnimTimings(word);
|
|
59
|
+
style.probeContainer.removeChild(seg);
|
|
60
|
+
return timing;
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
lineTiming(style, lineClasses, segClasses) {
|
|
64
|
+
const key = `${style.kind}|l:${lineClasses.join(' ')}|s:${segClasses.join(' ')}`;
|
|
65
|
+
return this.getOrProbeTiming(key, () => {
|
|
66
|
+
const seg = document.createElement('div');
|
|
67
|
+
seg.className = segClasses.join(' ');
|
|
68
|
+
const line = document.createElement('div');
|
|
69
|
+
line.className = lineClasses.join(' ');
|
|
70
|
+
this.injectProbeMagic(line);
|
|
71
|
+
seg.appendChild(line);
|
|
72
|
+
style.probeContainer.appendChild(seg);
|
|
73
|
+
const timing = this.readAnimTimings(line);
|
|
74
|
+
style.probeContainer.removeChild(seg);
|
|
75
|
+
return timing;
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
segmentTiming(style, segClasses) {
|
|
79
|
+
const key = `${style.kind}|s:${segClasses.join(' ')}`;
|
|
80
|
+
return this.getOrProbeTiming(key, () => {
|
|
81
|
+
const seg = document.createElement('div');
|
|
82
|
+
seg.className = segClasses.join(' ');
|
|
83
|
+
this.injectProbeMagic(seg);
|
|
84
|
+
style.probeContainer.appendChild(seg);
|
|
85
|
+
const timing = this.readAnimTimings(seg);
|
|
86
|
+
style.probeContainer.removeChild(seg);
|
|
87
|
+
return timing;
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
// Each CssVariable gets a fingerprint-shaped duration value so the
|
|
91
|
+
// computed `animation-delay` on a probed element identifies which
|
|
92
|
+
// variable a rule consumed.
|
|
93
|
+
injectProbeMagic(el) {
|
|
94
|
+
Object.values(CssVariable).forEach((cssVar, index) => {
|
|
95
|
+
el.style.setProperty(cssVar, `${(index + 1) * FINGERPRINT_BASE_S}s`);
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
getOrProbeTiming(key, probe) {
|
|
99
|
+
let timing = this.timingByKey.get(key);
|
|
100
|
+
if (!timing) {
|
|
101
|
+
timing = probe();
|
|
102
|
+
this.timingByKey.set(key, timing);
|
|
103
|
+
}
|
|
104
|
+
return timing;
|
|
105
|
+
}
|
|
106
|
+
readAnimTimings(el) {
|
|
107
|
+
const computed = window.getComputedStyle(el);
|
|
108
|
+
const durations = this.parseDurationsS(computed.animationDuration);
|
|
109
|
+
const delays = this.parseDurationsS(computed.animationDelay);
|
|
110
|
+
const iterations = computed.animationIterationCount.split(',').map((s) => s.trim());
|
|
111
|
+
if (durations.every((d) => d === 0))
|
|
112
|
+
return [];
|
|
113
|
+
const anims = [];
|
|
114
|
+
const variables = Object.values(CssVariable);
|
|
115
|
+
for (let i = 0; i < durations.length; i++) {
|
|
116
|
+
const d = durations[i] ?? 0;
|
|
117
|
+
if (d === 0)
|
|
118
|
+
continue;
|
|
119
|
+
const dl = delays[i] ?? 0;
|
|
120
|
+
const fingerprintIndex = (dl / FINGERPRINT_BASE_S) - 1;
|
|
121
|
+
const cssVar = variables[fingerprintIndex];
|
|
122
|
+
if (!cssVar)
|
|
123
|
+
continue;
|
|
124
|
+
const isInfinite = (iterations[i] ?? '1') === 'infinite';
|
|
125
|
+
anims.push({ cssVar, durationS: isInfinite ? Infinity : d + 0.05 });
|
|
126
|
+
}
|
|
127
|
+
return anims;
|
|
128
|
+
}
|
|
129
|
+
parseDurationsS(value) {
|
|
130
|
+
if (!value)
|
|
131
|
+
return [0];
|
|
132
|
+
return value.split(',').map((s) => {
|
|
133
|
+
s = s.trim();
|
|
134
|
+
if (s.endsWith('ms'))
|
|
135
|
+
return parseFloat(s) / 1000;
|
|
136
|
+
if (s.endsWith('s'))
|
|
137
|
+
return parseFloat(s);
|
|
138
|
+
return 0;
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
evalAnims(anims, t, segStart, segEnd, lineStart, lineEnd, wordStart, wordEnd) {
|
|
142
|
+
return anims.some((a) => {
|
|
143
|
+
let startT;
|
|
144
|
+
switch (a.cssVar) {
|
|
145
|
+
case CssVariable.SECTION_STARTS:
|
|
146
|
+
case CssVariable.SECTION_ENDS:
|
|
147
|
+
// Section-level animations are not yet wired into per-frame
|
|
148
|
+
// timing — treat them as never active.
|
|
149
|
+
return false;
|
|
150
|
+
case CssVariable.SEGMENT_STARTS:
|
|
151
|
+
startT = segStart;
|
|
152
|
+
break;
|
|
153
|
+
case CssVariable.SEGMENT_ENDS:
|
|
154
|
+
startT = segEnd;
|
|
155
|
+
break;
|
|
156
|
+
case CssVariable.LINE_NOT_NARRATED_YET_STARTS:
|
|
157
|
+
startT = segStart;
|
|
158
|
+
break;
|
|
159
|
+
case CssVariable.LINE_NOT_NARRATED_YET_ENDS:
|
|
160
|
+
startT = lineStart ?? segStart;
|
|
161
|
+
break;
|
|
162
|
+
case CssVariable.LINE_BEING_NARRATED_STARTS:
|
|
163
|
+
startT = lineStart ?? segStart;
|
|
164
|
+
break;
|
|
165
|
+
case CssVariable.LINE_BEING_NARRATED_ENDS:
|
|
166
|
+
startT = lineEnd ?? segEnd;
|
|
167
|
+
break;
|
|
168
|
+
case CssVariable.LINE_ALREADY_NARRATED_STARTS:
|
|
169
|
+
startT = lineEnd ?? segEnd;
|
|
170
|
+
break;
|
|
171
|
+
case CssVariable.LINE_ALREADY_NARRATED_ENDS:
|
|
172
|
+
startT = segEnd;
|
|
173
|
+
break;
|
|
174
|
+
case CssVariable.WORD_NOT_NARRATED_YET_STARTS:
|
|
175
|
+
startT = segStart;
|
|
176
|
+
break;
|
|
177
|
+
case CssVariable.WORD_NOT_NARRATED_YET_ENDS:
|
|
178
|
+
startT = wordStart ?? segStart;
|
|
179
|
+
break;
|
|
180
|
+
case CssVariable.WORD_BEING_NARRATED_STARTS:
|
|
181
|
+
startT = wordStart ?? segStart;
|
|
182
|
+
break;
|
|
183
|
+
case CssVariable.WORD_BEING_NARRATED_ENDS:
|
|
184
|
+
startT = wordEnd ?? segEnd;
|
|
185
|
+
break;
|
|
186
|
+
case CssVariable.WORD_ALREADY_NARRATED_STARTS:
|
|
187
|
+
startT = wordEnd ?? segEnd;
|
|
188
|
+
break;
|
|
189
|
+
case CssVariable.WORD_ALREADY_NARRATED_ENDS:
|
|
190
|
+
startT = segEnd;
|
|
191
|
+
break;
|
|
192
|
+
default: return false;
|
|
193
|
+
}
|
|
194
|
+
return t >= startT && t < startT + a.durationS;
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=AnimationProbe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AnimationProbe.js","sourceRoot":"","sources":["../../../../src/modules/rendering/subtitle/AnimationProbe.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { RenderItem, UniqueTile, AssetGroup } from '../../rendering/subtitle/BatchPlan';
|
|
2
|
+
/**
|
|
3
|
+
* Builds one asset group: tracks the unique tiles accumulated for an
|
|
4
|
+
* asset key, deduplicates new arrivals by state key, and finalizes
|
|
5
|
+
* into an {@link AssetGroup}.
|
|
6
|
+
*/
|
|
7
|
+
export declare class AssetGroupBuilder {
|
|
8
|
+
readonly assetKey: string;
|
|
9
|
+
private readonly tiles;
|
|
10
|
+
private readonly tileByStateKey;
|
|
11
|
+
constructor(assetKey: string);
|
|
12
|
+
upsertTile(stateKey: string, items: RenderItem[]): UniqueTile;
|
|
13
|
+
build(): AssetGroup;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=AssetGroupBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssetGroupBuilder.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/subtitle/AssetGroupBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAEhG;;;;GAIG;AACH,qBAAa,iBAAiB;IAIhB,QAAQ,CAAC,QAAQ,EAAE,MAAM;IAHrC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoB;IAC1C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiC;gBAE3C,QAAQ,EAAE,MAAM;IAErC,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,UAAU;IAU7D,KAAK,IAAI,UAAU;CAGpB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builds one asset group: tracks the unique tiles accumulated for an
|
|
3
|
+
* asset key, deduplicates new arrivals by state key, and finalizes
|
|
4
|
+
* into an {@link AssetGroup}.
|
|
5
|
+
*/
|
|
6
|
+
export class AssetGroupBuilder {
|
|
7
|
+
assetKey;
|
|
8
|
+
tiles = [];
|
|
9
|
+
tileByStateKey = new Map();
|
|
10
|
+
constructor(assetKey) {
|
|
11
|
+
this.assetKey = assetKey;
|
|
12
|
+
}
|
|
13
|
+
upsertTile(stateKey, items) {
|
|
14
|
+
let tile = this.tileByStateKey.get(stateKey);
|
|
15
|
+
if (!tile) {
|
|
16
|
+
tile = { items, tileIndex: this.tiles.length };
|
|
17
|
+
this.tiles.push(tile);
|
|
18
|
+
this.tileByStateKey.set(stateKey, tile);
|
|
19
|
+
}
|
|
20
|
+
return tile;
|
|
21
|
+
}
|
|
22
|
+
build() {
|
|
23
|
+
return { assetKey: this.assetKey, uniqueTiles: this.tiles };
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=AssetGroupBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssetGroupBuilder.js","sourceRoot":"","sources":["../../../../src/modules/rendering/subtitle/AssetGroupBuilder.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,OAAO,iBAAiB;IAIP;IAHJ,KAAK,GAAiB,EAAE,CAAC;IACzB,cAAc,GAAG,IAAI,GAAG,EAAsB,CAAC;IAEhE,YAAqB,QAAgB;QAAhB,aAAQ,GAAR,QAAQ,CAAQ;IAAG,CAAC;IAEzC,UAAU,CAAC,QAAgB,EAAE,KAAmB;QAC9C,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,GAAG,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAC/C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IAC9D,CAAC;CACF"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { Segment } from '../../document/Segment';
|
|
2
|
+
import type { PreparedStyle } from '../../rendering/subtitle/PreparedStyle';
|
|
3
|
+
export interface RenderItem {
|
|
4
|
+
seg: Segment;
|
|
5
|
+
style: PreparedStyle;
|
|
6
|
+
t: number;
|
|
7
|
+
/** Zero-based position of `seg` inside its owning section, propagated to the subtree builder for `--segment-index`. */
|
|
8
|
+
indexInSection: number;
|
|
9
|
+
}
|
|
10
|
+
export interface UniqueTile {
|
|
11
|
+
items: RenderItem[];
|
|
12
|
+
tileIndex: number;
|
|
13
|
+
}
|
|
14
|
+
export interface AssetGroup {
|
|
15
|
+
assetKey: string;
|
|
16
|
+
uniqueTiles: UniqueTile[];
|
|
17
|
+
}
|
|
18
|
+
export interface TileAssignment {
|
|
19
|
+
assetKey: string;
|
|
20
|
+
tileIndex: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Output of the batch planner: one asset group per disjoint kind
|
|
24
|
+
* combination at the timestamps in this batch, plus a per-timestamp
|
|
25
|
+
* assignment naming the group and the tile within it. A `null`
|
|
26
|
+
* assignment marks a timestamp with no active segment.
|
|
27
|
+
*/
|
|
28
|
+
export interface BatchPlan {
|
|
29
|
+
groups: Map<string, AssetGroup>;
|
|
30
|
+
assignments: Array<TileAssignment | null>;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=BatchPlan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BatchPlan.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/subtitle/BatchPlan.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAE/E,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,EAAE,aAAa,CAAC;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,uHAAuH;IACvH,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,UAAU,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAChC,WAAW,EAAE,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;CAC3C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BatchPlan.js","sourceRoot":"","sources":["../../../../src/modules/rendering/subtitle/BatchPlan.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,31 @@
|
|
|
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 itemsAt;
|
|
19
|
+
private computeAssetKey;
|
|
20
|
+
private computeStateKey;
|
|
21
|
+
/**
|
|
22
|
+
* Captures every time-varying CSS class the segment subtree
|
|
23
|
+
* exposes (segment, lines, words) so two timestamps that resolve
|
|
24
|
+
* to the same computed style — and therefore the same rendered
|
|
25
|
+
* frame outside active animation windows — share a tile, while two
|
|
26
|
+
* timestamps with different class states stay distinct.
|
|
27
|
+
*/
|
|
28
|
+
private fingerprintSegmentState;
|
|
29
|
+
private fingerprintLineState;
|
|
30
|
+
}
|
|
31
|
+
//# 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;AAE/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;IA0BlD,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,91 @@
|
|
|
1
|
+
import { AssetGroupBuilder } from '../../rendering/subtitle/AssetGroupBuilder';
|
|
2
|
+
/**
|
|
3
|
+
* Plans one batch: for each timestamp, finds the active prepared
|
|
4
|
+
* styles, groups timestamps by their disjoint kind sets so each
|
|
5
|
+
* rendered sprite carries only the asset payload its tiles need, and
|
|
6
|
+
* deduplicates timestamps that resolve to the same visual state into
|
|
7
|
+
* a single tile inside their group.
|
|
8
|
+
*/
|
|
9
|
+
export class BatchPlanner {
|
|
10
|
+
doc;
|
|
11
|
+
styles;
|
|
12
|
+
animationProbe;
|
|
13
|
+
constructor(doc, styles, animationProbe) {
|
|
14
|
+
this.doc = doc;
|
|
15
|
+
this.styles = styles;
|
|
16
|
+
this.animationProbe = animationProbe;
|
|
17
|
+
}
|
|
18
|
+
plan(timestamps) {
|
|
19
|
+
const builders = new Map();
|
|
20
|
+
const assignments = timestamps.map((t) => {
|
|
21
|
+
const items = this.itemsAt(t);
|
|
22
|
+
if (items.length === 0)
|
|
23
|
+
return null;
|
|
24
|
+
const assetKey = this.computeAssetKey(items);
|
|
25
|
+
let builder = builders.get(assetKey);
|
|
26
|
+
if (!builder) {
|
|
27
|
+
builder = new AssetGroupBuilder(assetKey);
|
|
28
|
+
builders.set(assetKey, builder);
|
|
29
|
+
}
|
|
30
|
+
const stateKey = this.computeStateKey(items, t);
|
|
31
|
+
const tile = builder.upsertTile(stateKey, items);
|
|
32
|
+
return { assetKey, tileIndex: tile.tileIndex };
|
|
33
|
+
});
|
|
34
|
+
const groups = new Map();
|
|
35
|
+
for (const builder of builders.values()) {
|
|
36
|
+
groups.set(builder.assetKey, builder.build());
|
|
37
|
+
}
|
|
38
|
+
return { groups, assignments };
|
|
39
|
+
}
|
|
40
|
+
itemsAt(t) {
|
|
41
|
+
const items = [];
|
|
42
|
+
for (const section of this.doc.sections) {
|
|
43
|
+
const style = this.styles[section.kind];
|
|
44
|
+
if (!style)
|
|
45
|
+
continue;
|
|
46
|
+
for (let indexInSection = 0; indexInSection < section.segments.length; indexInSection++) {
|
|
47
|
+
const seg = section.segments[indexInSection];
|
|
48
|
+
if (!seg.time.contains(t))
|
|
49
|
+
continue;
|
|
50
|
+
items.push({ seg, style, t, indexInSection });
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
items.sort((a, b) => {
|
|
54
|
+
const ds = a.seg.time.start - b.seg.time.start;
|
|
55
|
+
if (ds !== 0)
|
|
56
|
+
return ds;
|
|
57
|
+
return a.seg.time.end - b.seg.time.end;
|
|
58
|
+
});
|
|
59
|
+
return items;
|
|
60
|
+
}
|
|
61
|
+
computeAssetKey(items) {
|
|
62
|
+
const kinds = new Set();
|
|
63
|
+
for (const it of items)
|
|
64
|
+
kinds.add(it.style.kind);
|
|
65
|
+
return [...kinds].sort().join(',');
|
|
66
|
+
}
|
|
67
|
+
computeStateKey(items, t) {
|
|
68
|
+
return items.map(({ seg, style }) => {
|
|
69
|
+
const base = `${style.kind}:${seg.id}:${this.fingerprintSegmentState(seg, t)}`;
|
|
70
|
+
return this.animationProbe.isItemAnimating(style, seg, t) ? `${base}:${t.toFixed(3)}` : base;
|
|
71
|
+
}).join('|');
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Captures every time-varying CSS class the segment subtree
|
|
75
|
+
* exposes (segment, lines, words) so two timestamps that resolve
|
|
76
|
+
* to the same computed style — and therefore the same rendered
|
|
77
|
+
* frame outside active animation windows — share a tile, while two
|
|
78
|
+
* timestamps with different class states stay distinct.
|
|
79
|
+
*/
|
|
80
|
+
fingerprintSegmentState(seg, t) {
|
|
81
|
+
const segClasses = seg.getCssClasses(t).join(',');
|
|
82
|
+
const lineFingerprints = [...seg.lines].map((line) => this.fingerprintLineState(line, t));
|
|
83
|
+
return `${segClasses}|{${lineFingerprints.join(';')}}`;
|
|
84
|
+
}
|
|
85
|
+
fingerprintLineState(line, t) {
|
|
86
|
+
const lineClasses = line.getCssClasses(t).join(',');
|
|
87
|
+
const wordClasses = [...line.words].map((w) => w.getCssClasses(t).join(',')).join('|');
|
|
88
|
+
return `${lineClasses}[${wordClasses}]`;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=BatchPlanner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BatchPlanner.js","sourceRoot":"","sources":["../../../../src/modules/rendering/subtitle/BatchPlanner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
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
|
+
probeStyleElement: HTMLStyleElement;
|
|
29
|
+
probeContainer: HTMLElement;
|
|
30
|
+
scopeClass: string;
|
|
31
|
+
inlineStyleEmitter: InlineStyleEmitter;
|
|
32
|
+
baselineNeeds: BaselineNeeds;
|
|
33
|
+
baselineCss: string;
|
|
34
|
+
}
|
|
35
|
+
//# 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,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"}
|