@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,112 @@
|
|
|
1
|
+
import { CssVariable } from '../../document/CssVariable';
|
|
2
|
+
const NO_EXCLUDED_WORDS = new Set();
|
|
3
|
+
// Safety bleed applied to the painted region for video-frame styles
|
|
4
|
+
// that don't declare a `rendering.padding`. 0.25em ≈ enough to cover
|
|
5
|
+
// a typical text-shadow, kept narrow so the crop still pays off.
|
|
6
|
+
const UNDECLARED_PADDING_SAFETY_EM = 0.25;
|
|
7
|
+
/**
|
|
8
|
+
* Builds the inline-style map driving the video-frame backdrop for
|
|
9
|
+
* one segment: the JPEG data URL holding the painted region of the
|
|
10
|
+
* underlying frame, plus the region's pixel size and offset within
|
|
11
|
+
* the segment's anchor box. Caches paint regions per
|
|
12
|
+
* `(kind, segmentId)` so the JPEG crop is only measured once per
|
|
13
|
+
* segment.
|
|
14
|
+
*
|
|
15
|
+
* Returns an empty map for styles that don't consume the video
|
|
16
|
+
* frame.
|
|
17
|
+
*/
|
|
18
|
+
export class VideoFrameVarsBuilder {
|
|
19
|
+
subtreeBuilder;
|
|
20
|
+
paintRegionResolver;
|
|
21
|
+
paintRegionCache;
|
|
22
|
+
width;
|
|
23
|
+
height;
|
|
24
|
+
videoFrameSource;
|
|
25
|
+
constructor(subtreeBuilder, paintRegionResolver, paintRegionCache, width, height, videoFrameSource) {
|
|
26
|
+
this.subtreeBuilder = subtreeBuilder;
|
|
27
|
+
this.paintRegionResolver = paintRegionResolver;
|
|
28
|
+
this.paintRegionCache = paintRegionCache;
|
|
29
|
+
this.width = width;
|
|
30
|
+
this.height = height;
|
|
31
|
+
this.videoFrameSource = videoFrameSource;
|
|
32
|
+
}
|
|
33
|
+
async build(style, seg, placement, t) {
|
|
34
|
+
if (!style.rendering.videoFrame.required)
|
|
35
|
+
return {};
|
|
36
|
+
const region = this.resolvePaintRegion(style, seg, placement);
|
|
37
|
+
// Offset vars assume the consuming element is a direct child of
|
|
38
|
+
// the wrapper: `%` resolves against the wrapper. The region.x/y
|
|
39
|
+
// bias positions the layer so the cropped frame's (0,0) lands on
|
|
40
|
+
// viewport (region.x, region.y); when no crop applies the bias
|
|
41
|
+
// is zero and the layer covers the full viewport.
|
|
42
|
+
return {
|
|
43
|
+
[CssVariable.VIDEO_FRAME]: `url("${await this.videoFrameSource.getFrameAt(t, style.rendering.videoFrame.jpegQuality, region)}")`,
|
|
44
|
+
[CssVariable.SUBTITLE_REGION_WIDTH]: `${region.width}px`,
|
|
45
|
+
[CssVariable.SUBTITLE_REGION_HEIGHT]: `${region.height}px`,
|
|
46
|
+
[CssVariable.SUBTITLE_REGION_X]: `calc(${placement.hAnchorPct}% - ${placement.xPx - region.x}px)`,
|
|
47
|
+
[CssVariable.SUBTITLE_REGION_Y]: `calc(${placement.vAnchorPct}% - ${placement.yPx - region.y}px)`,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* The tight-crop optimization assumes every word stays inside the
|
|
52
|
+
* segment's in-flow bounding box. As soon as a word is
|
|
53
|
+
* repositioned outside that bbox, the same crop leaves its
|
|
54
|
+
* video-frame backdrop sampling pixels that aren't in the JPEG
|
|
55
|
+
* payload. Falling back to the full viewport for those segments
|
|
56
|
+
* restores correctness; the optimization recovers automatically
|
|
57
|
+
* the moment the override is reset.
|
|
58
|
+
*/
|
|
59
|
+
resolvePaintRegion(style, seg, placement) {
|
|
60
|
+
return this.paintRegionCache.getOrCompute(style.kind, seg.id, () => this.hasPositionedWord(seg, style.wordOverrides) || this.hasPositionedDecoration(seg, style)
|
|
61
|
+
? { x: 0, y: 0, width: this.width, height: this.height }
|
|
62
|
+
: this.measureSegmentPaintRegion(style, seg, placement));
|
|
63
|
+
}
|
|
64
|
+
measureSegmentPaintRegion(style, seg, placement) {
|
|
65
|
+
const segmentInlineStylesOverride = style.segmentOverrides.get(seg.id)?.inlineStyles;
|
|
66
|
+
const baseInlineStyles = segmentInlineStylesOverride
|
|
67
|
+
? { ...style.inlineStyles, ...segmentInlineStylesOverride }
|
|
68
|
+
: style.inlineStyles;
|
|
69
|
+
const segmentHtml = this.subtreeBuilder.buildSegmentSubtree({
|
|
70
|
+
scopeClass: style.scopeClass,
|
|
71
|
+
baseInlineStyles,
|
|
72
|
+
wordOverrides: style.wordOverrides,
|
|
73
|
+
splitWordsIntoLetters: style.rendering.splitWordsIntoLetters,
|
|
74
|
+
includeVideoFrameLayer: style.rendering.videoFrame.required,
|
|
75
|
+
extraWrapperStyles: {},
|
|
76
|
+
decorationPlacements: style.decorationPlacements,
|
|
77
|
+
inlineStyleEmitter: style.inlineStyleEmitter,
|
|
78
|
+
}, seg, seg.time.start, NO_EXCLUDED_WORDS,
|
|
79
|
+
// Paint-region measurement renders the segment in isolation; the
|
|
80
|
+
// index inside the section doesn't affect layout, so any value works.
|
|
81
|
+
0);
|
|
82
|
+
return this.paintRegionResolver.resolve({
|
|
83
|
+
segmentHtml,
|
|
84
|
+
probeContainer: style.probeContainer,
|
|
85
|
+
placement,
|
|
86
|
+
viewportWidth: this.width,
|
|
87
|
+
viewportHeight: this.height,
|
|
88
|
+
safetyBleedEm: style.rendering.padding === null ? UNDECLARED_PADDING_SAFETY_EM : 0,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
hasPositionedWord(seg, wordOverrides) {
|
|
92
|
+
for (const line of seg.lines) {
|
|
93
|
+
for (const word of line.words) {
|
|
94
|
+
if (wordOverrides.get(word.id)?.alignment)
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return false;
|
|
99
|
+
}
|
|
100
|
+
hasPositionedDecoration(seg, style) {
|
|
101
|
+
for (const line of seg.lines) {
|
|
102
|
+
for (const word of line.words) {
|
|
103
|
+
if (!word.decoration)
|
|
104
|
+
continue;
|
|
105
|
+
if (style.wordOverrides.get(word.decoration.id)?.alignment)
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=VideoFrameVarsBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VideoFrameVarsBuilder.js","sourceRoot":"","sources":["../../../../src/modules/rendering/subtitle/VideoFrameVarsBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AlignmentConfig.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/types/AlignmentConfig.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;AACxD,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE1D;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,aAAa,CAAC;IAE7B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,eAAe,CAAC;IAEjC,gBAAgB,EAAE,MAAM,CAAC;CAC1B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AlignmentConfig.js","sourceRoot":"","sources":["../../../../src/modules/rendering/types/AlignmentConfig.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether a style participates in the "text-behind-actor" rendering
|
|
3
|
+
* primitive: the caption is rasterised as usual, and the consumer paints
|
|
4
|
+
* an actor cutout layer on top at composition time so the actor visually
|
|
5
|
+
* covers the caption. The engine exposes the state variables and the
|
|
6
|
+
* baseline CSS that resolves the final `--behind-actor-active` decision;
|
|
7
|
+
* the consumer supplies the cutout pixels outside the caption HTML.
|
|
8
|
+
*/
|
|
9
|
+
export interface BehindActorRequirement {
|
|
10
|
+
readonly required: boolean;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=BehindActorRequirement.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BehindActorRequirement.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/types/BehindActorRequirement.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BehindActorRequirement.js","sourceRoot":"","sources":["../../../../src/modules/rendering/types/BehindActorRequirement.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BoxEdges.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/types/BoxEdges.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BoxEdges.js","sourceRoot":"","sources":["../../../../src/modules/rendering/types/BoxEdges.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which side of the segment a decoration glyph should be lifted to
|
|
3
|
+
* when the host sheet's effect config takes it out of line flow. When
|
|
4
|
+
* a decoration id is absent from the placement map, the glyph stays
|
|
5
|
+
* inline next to its host word.
|
|
6
|
+
*/
|
|
7
|
+
export type DecorationPlacementSide = 'above' | 'below';
|
|
8
|
+
//# sourceMappingURL=DecorationPlacementSide.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DecorationPlacementSide.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/types/DecorationPlacementSide.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,uBAAuB,GAAG,OAAO,GAAG,OAAO,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DecorationPlacementSide.js","sourceRoot":"","sources":["../../../../src/modules/rendering/types/DecorationPlacementSide.ts"],"names":[],"mappings":""}
|
package/dist/modules/rendering/{ElementRenderOverrides.d.ts → types/ElementRenderOverrides.d.ts}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ScopedRenderOverride } from '
|
|
1
|
+
import type { ScopedRenderOverride } from '../../rendering/types/ScopedRenderOverride';
|
|
2
2
|
/**
|
|
3
3
|
* Render-time overrides indexed by element id.
|
|
4
4
|
* The bitmap renderer looks up each element by
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ElementRenderOverrides.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/types/ElementRenderOverrides.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AAE1F;;;;GAIG;AACH,qBAAa,sBAAsB;IAY/B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAX1B,MAAM,CAAC,KAAK,IAAI,sBAAsB;IAItC,MAAM,CAAC,WAAW,CAChB,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,GAC9D,sBAAsB;IAIzB,OAAO;IAIP,OAAO,IAAI,OAAO;IAIlB,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;CAGzD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ElementRenderOverrides.js","sourceRoot":"","sources":["../../../../src/modules/rendering/types/ElementRenderOverrides.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,OAAO,sBAAsB;IAYd;IAXnB,MAAM,CAAC,KAAK;QACV,OAAO,IAAI,sBAAsB,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,CAAC,WAAW,CAChB,OAA+D;QAE/D,OAAO,IAAI,sBAAsB,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,YACmB,OAAkD;QAAlD,YAAO,GAAP,OAAO,CAA2C;IAClE,CAAC;IAEJ,OAAO;QACL,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,GAAG,CAAC,SAAiB;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InlineStyleMap.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/types/InlineStyleMap.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InlineStyleMap.js","sourceRoot":"","sources":["../../../../src/modules/rendering/types/InlineStyleMap.ts"],"names":[],"mappings":""}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { BoxEdges } from '
|
|
1
|
+
import type { BoxEdges } from '../../rendering/types/BoxEdges';
|
|
2
|
+
import type { BehindActorRequirement } from '../../rendering/types/BehindActorRequirement';
|
|
2
3
|
/**
|
|
3
4
|
* Whether a style consumes the underlying video frame as part of
|
|
4
5
|
* its visuals, and — when it does — at what JPEG quality the frame
|
|
@@ -18,5 +19,6 @@ export interface RenderingConfig {
|
|
|
18
19
|
readonly videoFrame: VideoFrameRequirement;
|
|
19
20
|
/** Extra space around the segment box, per side. `null` when not declared. */
|
|
20
21
|
readonly padding: BoxEdges | null;
|
|
22
|
+
readonly behindActor: BehindActorRequirement;
|
|
21
23
|
}
|
|
22
24
|
//# sourceMappingURL=RenderingConfig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RenderingConfig.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/types/RenderingConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;AAE9F;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,wEAAwE;IACxE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,qBAAqB,CAAC;IAC3C,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,sBAAsB,CAAC;CAC9C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RenderingConfig.js","sourceRoot":"","sources":["../../../../src/modules/rendering/types/RenderingConfig.ts"],"names":[],"mappings":""}
|
package/dist/modules/rendering/{ScopedRenderOverride.d.ts → types/ScopedRenderOverride.d.ts}
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { AlignmentConfig } from '
|
|
2
|
-
import type { InlineStyleMap } from '
|
|
1
|
+
import type { AlignmentConfig } from '../../rendering/types/AlignmentConfig';
|
|
2
|
+
import type { InlineStyleMap } from '../../rendering/types/InlineStyleMap';
|
|
3
3
|
/**
|
|
4
4
|
* Render-time overrides for one element (segment or word), layered on
|
|
5
5
|
* top of the style's root-level defaults. Both fields are independent
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScopedRenderOverride.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/types/ScopedRenderOverride.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAE9E;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,YAAY,CAAC,EAAE,cAAc,CAAC;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;CAC/C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScopedRenderOverride.js","sourceRoot":"","sources":["../../../../src/modules/rendering/types/ScopedRenderOverride.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VideoFrameSource.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/types/VideoFrameSource.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;OASG;IACH,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAClG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VideoFrameSource.js","sourceRoot":"","sources":["../../../../src/modules/rendering/types/VideoFrameSource.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { SegmentSplitter } from '../splitting/SegmentSplitter';
|
|
2
|
+
import { Segment } from '../document/Segment';
|
|
3
|
+
export interface BoundaryScoreLimitByCharsConfig {
|
|
4
|
+
maxChars: number;
|
|
5
|
+
minChars: number;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Splits segments by character count, keeping each chunk between
|
|
9
|
+
* `minChars` and `maxChars` when possible. Among the cut positions
|
|
10
|
+
* that satisfy both bounds, the one after the word with the highest
|
|
11
|
+
* `boundaryScore` wins — cuts land where an external scorer marked a
|
|
12
|
+
* strong boundary. When no word in the valid range carries a score,
|
|
13
|
+
* the splitter falls back to the greedy behaviour: grow the chunk to
|
|
14
|
+
* the maximum and retreat only enough to keep the tail above
|
|
15
|
+
* `minChars`.
|
|
16
|
+
*
|
|
17
|
+
* When the residual tail is too short to satisfy both bounds on its
|
|
18
|
+
* own, its words are absorbed into the current chunk as a last
|
|
19
|
+
* resort.
|
|
20
|
+
*/
|
|
21
|
+
export declare class BoundaryScoreLimitByCharsSegmentSplitter implements SegmentSplitter {
|
|
22
|
+
private readonly _config;
|
|
23
|
+
constructor(_config: BoundaryScoreLimitByCharsConfig);
|
|
24
|
+
split(segments: ReadonlyArray<Segment>): Segment[];
|
|
25
|
+
private splitSegment;
|
|
26
|
+
private pickCut;
|
|
27
|
+
private largestCutWithinMax;
|
|
28
|
+
private smallestCutMeetingMin;
|
|
29
|
+
private cutsPreservingTail;
|
|
30
|
+
private highestScoredCut;
|
|
31
|
+
private weight;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=BoundaryScoreLimitByCharsSegmentSplitter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BoundaryScoreLimitByCharsSegmentSplitter.d.ts","sourceRoot":"","sources":["../../../src/modules/splitting/BoundaryScoreLimitByCharsSegmentSplitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAIpD,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,wCAAyC,YAAW,eAAe;IAClE,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,+BAA+B;IAErE,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,OAAO,EAAE;IAIlD,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,OAAO;IAcf,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,gBAAgB;IAcxB,OAAO,CAAC,MAAM;CAMf"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { Segment } from '../document/Segment';
|
|
2
|
+
import { Line } from '../document/Line';
|
|
3
|
+
/**
|
|
4
|
+
* Splits segments by character count, keeping each chunk between
|
|
5
|
+
* `minChars` and `maxChars` when possible. Among the cut positions
|
|
6
|
+
* that satisfy both bounds, the one after the word with the highest
|
|
7
|
+
* `boundaryScore` wins — cuts land where an external scorer marked a
|
|
8
|
+
* strong boundary. When no word in the valid range carries a score,
|
|
9
|
+
* the splitter falls back to the greedy behaviour: grow the chunk to
|
|
10
|
+
* the maximum and retreat only enough to keep the tail above
|
|
11
|
+
* `minChars`.
|
|
12
|
+
*
|
|
13
|
+
* When the residual tail is too short to satisfy both bounds on its
|
|
14
|
+
* own, its words are absorbed into the current chunk as a last
|
|
15
|
+
* resort.
|
|
16
|
+
*/
|
|
17
|
+
export class BoundaryScoreLimitByCharsSegmentSplitter {
|
|
18
|
+
_config;
|
|
19
|
+
constructor(_config) {
|
|
20
|
+
this._config = _config;
|
|
21
|
+
}
|
|
22
|
+
split(segments) {
|
|
23
|
+
return segments.flatMap((segment) => this.splitSegment(segment));
|
|
24
|
+
}
|
|
25
|
+
splitSegment(segment) {
|
|
26
|
+
const words = segment.getWords();
|
|
27
|
+
const n = words.length;
|
|
28
|
+
if (n === 0)
|
|
29
|
+
return [];
|
|
30
|
+
const result = [];
|
|
31
|
+
let start = 0;
|
|
32
|
+
while (start < n) {
|
|
33
|
+
const end = this.pickCut(words, start);
|
|
34
|
+
result.push(new Segment({ lines: [new Line({ words: words.slice(start, end) })] }));
|
|
35
|
+
start = end;
|
|
36
|
+
}
|
|
37
|
+
return result;
|
|
38
|
+
}
|
|
39
|
+
pickCut(words, start) {
|
|
40
|
+
const n = words.length;
|
|
41
|
+
const kHigh = this.largestCutWithinMax(words, start);
|
|
42
|
+
if (kHigh === n)
|
|
43
|
+
return n;
|
|
44
|
+
const kLow = this.smallestCutMeetingMin(words, start, kHigh);
|
|
45
|
+
if (kLow > kHigh)
|
|
46
|
+
return kHigh;
|
|
47
|
+
const candidates = this.cutsPreservingTail(words, kLow, kHigh);
|
|
48
|
+
if (candidates.length === 0)
|
|
49
|
+
return n;
|
|
50
|
+
return this.highestScoredCut(words, candidates);
|
|
51
|
+
}
|
|
52
|
+
largestCutWithinMax(words, start) {
|
|
53
|
+
const { maxChars } = this._config;
|
|
54
|
+
const n = words.length;
|
|
55
|
+
let end = start + 1;
|
|
56
|
+
while (end < n && this.weight(words, start, end + 1) <= maxChars)
|
|
57
|
+
end++;
|
|
58
|
+
return end;
|
|
59
|
+
}
|
|
60
|
+
smallestCutMeetingMin(words, start, upperBound) {
|
|
61
|
+
const { minChars } = this._config;
|
|
62
|
+
let k = start + 1;
|
|
63
|
+
while (k <= upperBound && this.weight(words, start, k) < minChars)
|
|
64
|
+
k++;
|
|
65
|
+
return k;
|
|
66
|
+
}
|
|
67
|
+
cutsPreservingTail(words, kLow, kHigh) {
|
|
68
|
+
const { minChars } = this._config;
|
|
69
|
+
const n = words.length;
|
|
70
|
+
const candidates = [];
|
|
71
|
+
for (let k = kLow; k <= kHigh; k++) {
|
|
72
|
+
if (this.weight(words, k, n) >= minChars)
|
|
73
|
+
candidates.push(k);
|
|
74
|
+
}
|
|
75
|
+
return candidates;
|
|
76
|
+
}
|
|
77
|
+
highestScoredCut(words, candidates) {
|
|
78
|
+
let best = candidates[candidates.length - 1];
|
|
79
|
+
let bestScore = -Infinity;
|
|
80
|
+
for (const k of candidates) {
|
|
81
|
+
const score = words[k - 1].boundaryScore;
|
|
82
|
+
if (score === null)
|
|
83
|
+
continue;
|
|
84
|
+
if (score > bestScore || (score === bestScore && k > best)) {
|
|
85
|
+
bestScore = score;
|
|
86
|
+
best = k;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return best;
|
|
90
|
+
}
|
|
91
|
+
weight(words, from, to) {
|
|
92
|
+
if (to <= from)
|
|
93
|
+
return 0;
|
|
94
|
+
let chars = to - from - 1;
|
|
95
|
+
for (let k = from; k < to; k++)
|
|
96
|
+
chars += words[k].text.length;
|
|
97
|
+
return chars;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=BoundaryScoreLimitByCharsSegmentSplitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BoundaryScoreLimitByCharsSegmentSplitter.js","sourceRoot":"","sources":["../../../src/modules/splitting/BoundaryScoreLimitByCharsSegmentSplitter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { LineSplitter } from '../splitting/LineSplitter';
|
|
2
|
+
import { Segment } from '../document/Segment';
|
|
3
|
+
export interface FixedTailLineSplitterConfig {
|
|
4
|
+
/**
|
|
5
|
+
* Word count reserved for the second (tail) line. Honored only when the
|
|
6
|
+
* segment carries strictly more words than this value; otherwise the
|
|
7
|
+
* splitter falls back to a one-word head and a tail with the rest, so
|
|
8
|
+
* neither line is empty.
|
|
9
|
+
*/
|
|
10
|
+
readonly tailWordCount: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Splits each segment into exactly two lines when possible: the head line
|
|
14
|
+
* receives every word except the last `tailWordCount`, and the tail line
|
|
15
|
+
* receives those final words. Segments with one or two words stay on a
|
|
16
|
+
* single line; segments with three or more words but fewer than
|
|
17
|
+
* `tailWordCount + 1` fall back to one word on the head and the remainder
|
|
18
|
+
* on the tail, so neither line ends up empty.
|
|
19
|
+
*/
|
|
20
|
+
export declare class FixedTailLineSplitter implements LineSplitter {
|
|
21
|
+
private readonly _config;
|
|
22
|
+
private static readonly MIN_WORDS_TO_SPLIT;
|
|
23
|
+
constructor(_config: FixedTailLineSplitterConfig);
|
|
24
|
+
split(segments: ReadonlyArray<Segment>): Segment[];
|
|
25
|
+
private splitSegment;
|
|
26
|
+
private buildLines;
|
|
27
|
+
private headSize;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=FixedTailLineSplitter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FixedTailLineSplitter.d.ts","sourceRoot":"","sources":["../../../src/modules/splitting/FixedTailLineSplitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAIpD,MAAM,WAAW,2BAA2B;IAC1C;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED;;;;;;;GAOG;AACH,qBAAa,qBAAsB,YAAW,YAAY;IAG5C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAK;gBAElB,OAAO,EAAE,2BAA2B;IAEjE,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,OAAO,EAAE;IAIlD,OAAO,CAAC,YAAY;IAOpB,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,QAAQ;CAMjB"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Line } from '../document/Line';
|
|
2
|
+
/**
|
|
3
|
+
* Splits each segment into exactly two lines when possible: the head line
|
|
4
|
+
* receives every word except the last `tailWordCount`, and the tail line
|
|
5
|
+
* receives those final words. Segments with one or two words stay on a
|
|
6
|
+
* single line; segments with three or more words but fewer than
|
|
7
|
+
* `tailWordCount + 1` fall back to one word on the head and the remainder
|
|
8
|
+
* on the tail, so neither line ends up empty.
|
|
9
|
+
*/
|
|
10
|
+
export class FixedTailLineSplitter {
|
|
11
|
+
_config;
|
|
12
|
+
static MIN_WORDS_TO_SPLIT = 3;
|
|
13
|
+
constructor(_config) {
|
|
14
|
+
this._config = _config;
|
|
15
|
+
}
|
|
16
|
+
split(segments) {
|
|
17
|
+
return segments.map((segment) => this.splitSegment(segment));
|
|
18
|
+
}
|
|
19
|
+
splitSegment(segment) {
|
|
20
|
+
const words = segment.getWords();
|
|
21
|
+
if (words.length === 0)
|
|
22
|
+
return segment;
|
|
23
|
+
const lines = this.buildLines(words);
|
|
24
|
+
return segment.with({ lines });
|
|
25
|
+
}
|
|
26
|
+
buildLines(words) {
|
|
27
|
+
if (words.length < FixedTailLineSplitter.MIN_WORDS_TO_SPLIT) {
|
|
28
|
+
return [new Line({ words })];
|
|
29
|
+
}
|
|
30
|
+
const splitAt = this.headSize(words.length);
|
|
31
|
+
return [
|
|
32
|
+
new Line({ words: words.slice(0, splitAt) }),
|
|
33
|
+
new Line({ words: words.slice(splitAt) }),
|
|
34
|
+
];
|
|
35
|
+
}
|
|
36
|
+
headSize(totalWords) {
|
|
37
|
+
if (totalWords > this._config.tailWordCount) {
|
|
38
|
+
return totalWords - this._config.tailWordCount;
|
|
39
|
+
}
|
|
40
|
+
return 1;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=FixedTailLineSplitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FixedTailLineSplitter.js","sourceRoot":"","sources":["../../../src/modules/splitting/FixedTailLineSplitter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAa9C;;;;;;;GAOG;AACH,MAAM,OAAO,qBAAqB;IAGH;IAFrB,MAAM,CAAU,kBAAkB,GAAG,CAAC,CAAC;IAE/C,YAA6B,OAAoC;QAApC,YAAO,GAAP,OAAO,CAA6B;IAAG,CAAC;IAErE,KAAK,CAAC,QAAgC;QACpC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/D,CAAC;IAEO,YAAY,CAAC,OAAgB;QACnC,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QACjC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACrC,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IACjC,CAAC;IAEO,UAAU,CAAC,KAAa;QAC9B,IAAI,KAAK,CAAC,MAAM,GAAG,qBAAqB,CAAC,kBAAkB,EAAE,CAAC;YAC5D,OAAO,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAC/B,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5C,OAAO;YACL,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC;YAC5C,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;SAC1C,CAAC;IACJ,CAAC;IAEO,QAAQ,CAAC,UAAkB;QACjC,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YAC5C,OAAO,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;QACjD,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC"}
|
|
@@ -6,6 +6,8 @@ export { LimitByCharsSegmentSplitter } from '../splitting/LimitByCharsSegmentSpl
|
|
|
6
6
|
export type { LimitByCharsConfig } from '../splitting/LimitByCharsSegmentSplitter';
|
|
7
7
|
export { LimitByScaledCharsSegmentSplitter } from '../splitting/LimitByScaledCharsSegmentSplitter';
|
|
8
8
|
export type { LimitByScaledCharsConfig } from '../splitting/LimitByScaledCharsSegmentSplitter';
|
|
9
|
+
export { BoundaryScoreLimitByCharsSegmentSplitter } from '../splitting/BoundaryScoreLimitByCharsSegmentSplitter';
|
|
10
|
+
export type { BoundaryScoreLimitByCharsConfig } from '../splitting/BoundaryScoreLimitByCharsSegmentSplitter';
|
|
9
11
|
export { BoundarySegmentSplitter } from '../splitting/BoundarySegmentSplitter';
|
|
10
12
|
export type { BoundaryConfig } from '../splitting/BoundarySegmentSplitter';
|
|
11
13
|
export { PauseBasedSegmentSplitter } from '../splitting/PauseBasedSegmentSplitter';
|
|
@@ -16,6 +18,8 @@ export { BalancedLineSplitter } from '../splitting/BalancedLineSplitter';
|
|
|
16
18
|
export type { BalancedLineSplitterConfig } from '../splitting/BalancedLineSplitter';
|
|
17
19
|
export { BalancedPixelWidthLineSplitter } from '../splitting/BalancedPixelWidthLineSplitter';
|
|
18
20
|
export type { BalancedPixelWidthLineSplitterConfig } from '../splitting/BalancedPixelWidthLineSplitter';
|
|
21
|
+
export { FixedTailLineSplitter } from '../splitting/FixedTailLineSplitter';
|
|
22
|
+
export type { FixedTailLineSplitterConfig } from '../splitting/FixedTailLineSplitter';
|
|
19
23
|
export type { TextMeasurer } from '../splitting/TextMeasurer';
|
|
20
24
|
export { DomProbeCanvasTextMeasurer } from '../splitting/DomProbeCanvasTextMeasurer';
|
|
21
25
|
export type { DomProbeCanvasTextMeasurerParams } from '../splitting/DomProbeCanvasTextMeasurer';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/splitting/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AACvF,OAAO,EAAE,2BAA2B,EAAE,MAAM,gDAAgD,CAAC;AAC7F,YAAY,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AACzF,OAAO,EAAE,2BAA2B,EAAE,MAAM,gDAAgD,CAAC;AAC7F,YAAY,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AACzF,OAAO,EAAE,iCAAiC,EAAE,MAAM,sDAAsD,CAAC;AACzG,YAAY,EAAE,wBAAwB,EAAE,MAAM,sDAAsD,CAAC;AACrG,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AACrF,YAAY,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAC;AACzF,YAAY,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,EAAE,4BAA4B,EAAE,MAAM,iDAAiD,CAAC;AAC/F,YAAY,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,YAAY,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AAC1F,OAAO,EAAE,8BAA8B,EAAE,MAAM,mDAAmD,CAAC;AACnG,YAAY,EAAE,oCAAoC,EAAE,MAAM,mDAAmD,CAAC;AAC9G,YAAY,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,+CAA+C,CAAC;AAC3F,YAAY,EAAE,gCAAgC,EAAE,MAAM,+CAA+C,CAAC;AACtG,YAAY,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/splitting/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AACvF,OAAO,EAAE,2BAA2B,EAAE,MAAM,gDAAgD,CAAC;AAC7F,YAAY,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AACzF,OAAO,EAAE,2BAA2B,EAAE,MAAM,gDAAgD,CAAC;AAC7F,YAAY,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AACzF,OAAO,EAAE,iCAAiC,EAAE,MAAM,sDAAsD,CAAC;AACzG,YAAY,EAAE,wBAAwB,EAAE,MAAM,sDAAsD,CAAC;AACrG,OAAO,EAAE,wCAAwC,EAAE,MAAM,6DAA6D,CAAC;AACvH,YAAY,EAAE,+BAA+B,EAAE,MAAM,6DAA6D,CAAC;AACnH,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AACrF,YAAY,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAC;AACzF,YAAY,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AACrF,OAAO,EAAE,4BAA4B,EAAE,MAAM,iDAAiD,CAAC;AAC/F,YAAY,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,YAAY,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AAC1F,OAAO,EAAE,8BAA8B,EAAE,MAAM,mDAAmD,CAAC;AACnG,YAAY,EAAE,oCAAoC,EAAE,MAAM,mDAAmD,CAAC;AAC9G,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACjF,YAAY,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AAC5F,YAAY,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,+CAA+C,CAAC;AAC3F,YAAY,EAAE,gCAAgC,EAAE,MAAM,+CAA+C,CAAC;AACtG,YAAY,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC"}
|
|
@@ -2,11 +2,13 @@ export { CompositeSegmentSplitter } from '../splitting/CompositeSegmentSplitter'
|
|
|
2
2
|
export { LimitByWordsSegmentSplitter } from '../splitting/LimitByWordsSegmentSplitter';
|
|
3
3
|
export { LimitByCharsSegmentSplitter } from '../splitting/LimitByCharsSegmentSplitter';
|
|
4
4
|
export { LimitByScaledCharsSegmentSplitter } from '../splitting/LimitByScaledCharsSegmentSplitter';
|
|
5
|
+
export { BoundaryScoreLimitByCharsSegmentSplitter } from '../splitting/BoundaryScoreLimitByCharsSegmentSplitter';
|
|
5
6
|
export { BoundarySegmentSplitter } from '../splitting/BoundarySegmentSplitter';
|
|
6
7
|
export { PauseBasedSegmentSplitter } from '../splitting/PauseBasedSegmentSplitter';
|
|
7
8
|
export { SpeakerChangeSegmentSplitter } from '../splitting/SpeakerChangeSegmentSplitter';
|
|
8
9
|
export { BalancedLineSplitter } from '../splitting/BalancedLineSplitter';
|
|
9
10
|
export { BalancedPixelWidthLineSplitter } from '../splitting/BalancedPixelWidthLineSplitter';
|
|
11
|
+
export { FixedTailLineSplitter } from '../splitting/FixedTailLineSplitter';
|
|
10
12
|
export { DomProbeCanvasTextMeasurer } from '../splitting/DomProbeCanvasTextMeasurer';
|
|
11
13
|
export { GraphemeWordSplitter } from '../splitting/GraphemeWordSplitter';
|
|
12
14
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/splitting/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AACvF,OAAO,EAAE,2BAA2B,EAAE,MAAM,gDAAgD,CAAC;AAE7F,OAAO,EAAE,2BAA2B,EAAE,MAAM,gDAAgD,CAAC;AAE7F,OAAO,EAAE,iCAAiC,EAAE,MAAM,sDAAsD,CAAC;AAEzG,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAErF,OAAO,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAC;AAEzF,OAAO,EAAE,4BAA4B,EAAE,MAAM,iDAAiD,CAAC;AAE/F,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAE/E,OAAO,EAAE,8BAA8B,EAAE,MAAM,mDAAmD,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/splitting/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AACvF,OAAO,EAAE,2BAA2B,EAAE,MAAM,gDAAgD,CAAC;AAE7F,OAAO,EAAE,2BAA2B,EAAE,MAAM,gDAAgD,CAAC;AAE7F,OAAO,EAAE,iCAAiC,EAAE,MAAM,sDAAsD,CAAC;AAEzG,OAAO,EAAE,wCAAwC,EAAE,MAAM,6DAA6D,CAAC;AAEvH,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAErF,OAAO,EAAE,yBAAyB,EAAE,MAAM,8CAA8C,CAAC;AAEzF,OAAO,EAAE,4BAA4B,EAAE,MAAM,iDAAiD,CAAC;AAE/F,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAE/E,OAAO,EAAE,8BAA8B,EAAE,MAAM,mDAAmD,CAAC;AAEnG,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAGjF,OAAO,EAAE,0BAA0B,EAAE,MAAM,+CAA+C,CAAC;AAG3F,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Tagger } from '../tagging/Tagger';
|
|
2
|
+
import { Document } from '../document/Document';
|
|
3
|
+
export interface PauseTaggerConfig {
|
|
4
|
+
/**
|
|
5
|
+
* Minimum gap, in seconds, between a segment's start and the previous
|
|
6
|
+
* segment's end for the segment to be marked as following a pause.
|
|
7
|
+
*/
|
|
8
|
+
readonly minGapSeconds: number;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Adds `SEGMENT_AFTER_PAUSE` to every segment whose start is preceded by
|
|
12
|
+
* a silent gap of at least `minGapSeconds`. Gaps are measured only within
|
|
13
|
+
* the same section: the first segment of each section is never tagged
|
|
14
|
+
* (positional first/last tags already cover that boundary).
|
|
15
|
+
*/
|
|
16
|
+
export declare class PauseTagger extends Tagger {
|
|
17
|
+
private readonly _config;
|
|
18
|
+
constructor(_config: PauseTaggerConfig);
|
|
19
|
+
tag(document: Document): Document;
|
|
20
|
+
private tagSection;
|
|
21
|
+
private tagSegmentIfAfterPause;
|
|
22
|
+
private followsPause;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=PauseTagger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PauseTagger.d.ts","sourceRoot":"","sources":["../../../src/modules/tagging/PauseTagger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAKtD,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED;;;;;GAKG;AACH,qBAAa,WAAY,SAAQ,MAAM;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,iBAAiB;IAIvD,GAAG,CAAC,QAAQ,EAAE,QAAQ,GAAG,QAAQ;IAKjC,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,YAAY;CAIrB"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Tagger } from '../tagging/Tagger';
|
|
2
|
+
import { Tag, StructureTag } from '../document/Tag';
|
|
3
|
+
/**
|
|
4
|
+
* Adds `SEGMENT_AFTER_PAUSE` to every segment whose start is preceded by
|
|
5
|
+
* a silent gap of at least `minGapSeconds`. Gaps are measured only within
|
|
6
|
+
* the same section: the first segment of each section is never tagged
|
|
7
|
+
* (positional first/last tags already cover that boundary).
|
|
8
|
+
*/
|
|
9
|
+
export class PauseTagger extends Tagger {
|
|
10
|
+
_config;
|
|
11
|
+
constructor(_config) {
|
|
12
|
+
super();
|
|
13
|
+
this._config = _config;
|
|
14
|
+
}
|
|
15
|
+
tag(document) {
|
|
16
|
+
const sections = document.sections.map((section) => this.tagSection(section));
|
|
17
|
+
return document.with({ sections });
|
|
18
|
+
}
|
|
19
|
+
tagSection(section) {
|
|
20
|
+
let previousEndSeconds = null;
|
|
21
|
+
const segments = section.segments.map((segment) => {
|
|
22
|
+
const tagged = this.tagSegmentIfAfterPause(segment, previousEndSeconds);
|
|
23
|
+
previousEndSeconds = segment.time.end;
|
|
24
|
+
return tagged;
|
|
25
|
+
});
|
|
26
|
+
return section.with({ segments });
|
|
27
|
+
}
|
|
28
|
+
tagSegmentIfAfterPause(segment, previousEndSeconds) {
|
|
29
|
+
if (!this.followsPause(segment, previousEndSeconds))
|
|
30
|
+
return segment;
|
|
31
|
+
const structureTags = new Set(segment.structureTags);
|
|
32
|
+
structureTags.add(Tag.of(StructureTag.SEGMENT_AFTER_PAUSE));
|
|
33
|
+
return segment.with({ structureTags });
|
|
34
|
+
}
|
|
35
|
+
followsPause(segment, previousEndSeconds) {
|
|
36
|
+
if (previousEndSeconds === null)
|
|
37
|
+
return false;
|
|
38
|
+
return segment.time.start - previousEndSeconds >= this._config.minGapSeconds;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=PauseTagger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PauseTagger.js","sourceRoot":"","sources":["../../../src/modules/tagging/PauseTagger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAIjD,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAU1D;;;;;GAKG;AACH,MAAM,OAAO,WAAY,SAAQ,MAAM;IACR;IAA7B,YAA6B,OAA0B;QACrD,KAAK,EAAE,CAAC;QADmB,YAAO,GAAP,OAAO,CAAmB;IAEvD,CAAC;IAED,GAAG,CAAC,QAAkB;QACpB,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9E,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IACrC,CAAC;IAEO,UAAU,CAAC,OAAgB;QACjC,IAAI,kBAAkB,GAAkB,IAAI,CAAC;QAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YAChD,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;YACxE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;YACtC,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;IACpC,CAAC;IAEO,sBAAsB,CAAC,OAAgB,EAAE,kBAAiC;QAChF,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,kBAAkB,CAAC;YAAE,OAAO,OAAO,CAAC;QACpE,MAAM,aAAa,GAAG,IAAI,GAAG,CAAM,OAAO,CAAC,aAAa,CAAC,CAAC;QAC1D,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC5D,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC;IACzC,CAAC;IAEO,YAAY,CAAC,OAAgB,EAAE,kBAAiC;QACtE,IAAI,kBAAkB,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QAC9C,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,kBAAkB,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;IAC/E,CAAC;CACF"}
|
|
@@ -3,7 +3,7 @@ import { Document } from '../document/Document';
|
|
|
3
3
|
/**
|
|
4
4
|
* Assigns positional structure tags across the Document hierarchy:
|
|
5
5
|
* - Section-level: FIRST/LAST_SECTION_IN_DOCUMENT
|
|
6
|
-
* - Segment-level: FIRST/LAST_SEGMENT_IN_SECTION
|
|
6
|
+
* - Segment-level: FIRST/LAST_SEGMENT_IN_SECTION, FIRST/LAST_SEGMENT_IN_DOCUMENT
|
|
7
7
|
* - Line-level: FIRST/LAST_LINE_IN_SECTION, FIRST/LAST_LINE_IN_SEGMENT
|
|
8
8
|
* - Word-level: FIRST/LAST_WORD_IN_SECTION, FIRST/LAST_WORD_IN_SEGMENT,
|
|
9
9
|
* FIRST/LAST_WORD_IN_LINE
|