@tscaps/engine 0.1.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/LICENSE +21 -0
- package/README.md +349 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/modules/css/BrowserCssResourceEmbedder.d.ts +5 -0
- package/dist/modules/css/BrowserCssResourceEmbedder.d.ts.map +1 -0
- package/dist/modules/css/BrowserCssResourceEmbedder.js +41 -0
- package/dist/modules/css/BrowserCssResourceEmbedder.js.map +1 -0
- package/dist/modules/css/CssMinifier.d.ts +12 -0
- package/dist/modules/css/CssMinifier.d.ts.map +1 -0
- package/dist/modules/css/CssMinifier.js +47 -0
- package/dist/modules/css/CssMinifier.js.map +1 -0
- package/dist/modules/css/CssResourceEmbedder.d.ts +4 -0
- package/dist/modules/css/CssResourceEmbedder.d.ts.map +1 -0
- package/dist/modules/css/CssResourceEmbedder.js +2 -0
- package/dist/modules/css/CssResourceEmbedder.js.map +1 -0
- package/dist/modules/css/CssScoper.d.ts +16 -0
- package/dist/modules/css/CssScoper.d.ts.map +1 -0
- package/dist/modules/css/CssScoper.js +109 -0
- package/dist/modules/css/CssScoper.js.map +1 -0
- package/dist/modules/css/NoopCssResourceEmbedder.d.ts +12 -0
- package/dist/modules/css/NoopCssResourceEmbedder.d.ts.map +1 -0
- package/dist/modules/css/NoopCssResourceEmbedder.js +13 -0
- package/dist/modules/css/NoopCssResourceEmbedder.js.map +1 -0
- package/dist/modules/css/index.d.ts +6 -0
- package/dist/modules/css/index.d.ts.map +1 -0
- package/dist/modules/css/index.js +5 -0
- package/dist/modules/css/index.js.map +1 -0
- package/dist/modules/document/CssVariable.d.ts +46 -0
- package/dist/modules/document/CssVariable.d.ts.map +1 -0
- package/dist/modules/document/CssVariable.js +47 -0
- package/dist/modules/document/CssVariable.js.map +1 -0
- package/dist/modules/document/Document.d.ts +43 -0
- package/dist/modules/document/Document.d.ts.map +1 -0
- package/dist/modules/document/Document.js +86 -0
- package/dist/modules/document/Document.js.map +1 -0
- package/dist/modules/document/DocumentEditor.d.ts +111 -0
- package/dist/modules/document/DocumentEditor.d.ts.map +1 -0
- package/dist/modules/document/DocumentEditor.js +555 -0
- package/dist/modules/document/DocumentEditor.js.map +1 -0
- package/dist/modules/document/Letter.d.ts +17 -0
- package/dist/modules/document/Letter.d.ts.map +1 -0
- package/dist/modules/document/Letter.js +17 -0
- package/dist/modules/document/Letter.js.map +1 -0
- package/dist/modules/document/Line.d.ts +31 -0
- package/dist/modules/document/Line.d.ts.map +1 -0
- package/dist/modules/document/Line.js +94 -0
- package/dist/modules/document/Line.js.map +1 -0
- package/dist/modules/document/LineState.d.ts +6 -0
- package/dist/modules/document/LineState.d.ts.map +1 -0
- package/dist/modules/document/LineState.js +7 -0
- package/dist/modules/document/LineState.js.map +1 -0
- package/dist/modules/document/NarrationPace.d.ts +20 -0
- package/dist/modules/document/NarrationPace.d.ts.map +1 -0
- package/dist/modules/document/NarrationPace.js +60 -0
- package/dist/modules/document/NarrationPace.js.map +1 -0
- package/dist/modules/document/Section.d.ts +45 -0
- package/dist/modules/document/Section.d.ts.map +1 -0
- package/dist/modules/document/Section.js +94 -0
- package/dist/modules/document/Section.js.map +1 -0
- package/dist/modules/document/Segment.d.ts +40 -0
- package/dist/modules/document/Segment.d.ts.map +1 -0
- package/dist/modules/document/Segment.js +85 -0
- package/dist/modules/document/Segment.js.map +1 -0
- package/dist/modules/document/Tag.d.ts +24 -0
- package/dist/modules/document/Tag.d.ts.map +1 -0
- package/dist/modules/document/Tag.js +37 -0
- package/dist/modules/document/Tag.js.map +1 -0
- package/dist/modules/document/TimeFragment.d.ts +11 -0
- package/dist/modules/document/TimeFragment.d.ts.map +1 -0
- package/dist/modules/document/TimeFragment.js +29 -0
- package/dist/modules/document/TimeFragment.js.map +1 -0
- package/dist/modules/document/Word.d.ts +40 -0
- package/dist/modules/document/Word.d.ts.map +1 -0
- package/dist/modules/document/Word.js +114 -0
- package/dist/modules/document/Word.js.map +1 -0
- package/dist/modules/document/WordState.d.ts +6 -0
- package/dist/modules/document/WordState.d.ts.map +1 -0
- package/dist/modules/document/WordState.js +7 -0
- package/dist/modules/document/WordState.js.map +1 -0
- package/dist/modules/document/index.d.ts +14 -0
- package/dist/modules/document/index.d.ts.map +1 -0
- package/dist/modules/document/index.js +14 -0
- package/dist/modules/document/index.js.map +1 -0
- package/dist/modules/effect/CarryQuotesEffect.d.ts +47 -0
- package/dist/modules/effect/CarryQuotesEffect.d.ts.map +1 -0
- package/dist/modules/effect/CarryQuotesEffect.js +181 -0
- package/dist/modules/effect/CarryQuotesEffect.js.map +1 -0
- package/dist/modules/effect/Effect.d.ts +16 -0
- package/dist/modules/effect/Effect.d.ts.map +1 -0
- package/dist/modules/effect/Effect.js +2 -0
- package/dist/modules/effect/Effect.js.map +1 -0
- package/dist/modules/effect/GapFreeEffect.d.ts +24 -0
- package/dist/modules/effect/GapFreeEffect.d.ts.map +1 -0
- package/dist/modules/effect/GapFreeEffect.js +67 -0
- package/dist/modules/effect/GapFreeEffect.js.map +1 -0
- package/dist/modules/effect/RemovePunctuationEffect.d.ts +21 -0
- package/dist/modules/effect/RemovePunctuationEffect.d.ts.map +1 -0
- package/dist/modules/effect/RemovePunctuationEffect.js +52 -0
- package/dist/modules/effect/RemovePunctuationEffect.js.map +1 -0
- package/dist/modules/effect/SmartLowercaseEffect.d.ts +21 -0
- package/dist/modules/effect/SmartLowercaseEffect.d.ts.map +1 -0
- package/dist/modules/effect/SmartLowercaseEffect.js +45 -0
- package/dist/modules/effect/SmartLowercaseEffect.js.map +1 -0
- package/dist/modules/effect/SmartPunctuationEffect.d.ts +25 -0
- package/dist/modules/effect/SmartPunctuationEffect.d.ts.map +1 -0
- package/dist/modules/effect/SmartPunctuationEffect.js +68 -0
- package/dist/modules/effect/SmartPunctuationEffect.js.map +1 -0
- package/dist/modules/effect/index.d.ts +7 -0
- package/dist/modules/effect/index.d.ts.map +1 -0
- package/dist/modules/effect/index.js +6 -0
- package/dist/modules/effect/index.js.map +1 -0
- package/dist/modules/pipeline/PipelineProgress.d.ts +30 -0
- package/dist/modules/pipeline/PipelineProgress.d.ts.map +1 -0
- package/dist/modules/pipeline/PipelineProgress.js +2 -0
- package/dist/modules/pipeline/PipelineProgress.js.map +1 -0
- package/dist/modules/pipeline/RenderPipeline.d.ts +105 -0
- package/dist/modules/pipeline/RenderPipeline.d.ts.map +1 -0
- package/dist/modules/pipeline/RenderPipeline.js +232 -0
- package/dist/modules/pipeline/RenderPipeline.js.map +1 -0
- package/dist/modules/pipeline/RenderPipelineBuilder.d.ts +143 -0
- package/dist/modules/pipeline/RenderPipelineBuilder.d.ts.map +1 -0
- package/dist/modules/pipeline/RenderPipelineBuilder.js +317 -0
- package/dist/modules/pipeline/RenderPipelineBuilder.js.map +1 -0
- package/dist/modules/pipeline/index.d.ts +6 -0
- package/dist/modules/pipeline/index.d.ts.map +1 -0
- package/dist/modules/pipeline/index.js +3 -0
- package/dist/modules/pipeline/index.js.map +1 -0
- package/dist/modules/profiling/Profiler.d.ts +115 -0
- package/dist/modules/profiling/Profiler.d.ts.map +1 -0
- package/dist/modules/profiling/Profiler.js +316 -0
- package/dist/modules/profiling/Profiler.js.map +1 -0
- package/dist/modules/profiling/index.d.ts +2 -0
- package/dist/modules/profiling/index.d.ts.map +1 -0
- package/dist/modules/profiling/index.js +2 -0
- package/dist/modules/profiling/index.js.map +1 -0
- package/dist/modules/rendering/AlignmentConfig.d.ts +21 -0
- package/dist/modules/rendering/AlignmentConfig.d.ts.map +1 -0
- package/dist/modules/rendering/AlignmentConfig.js +2 -0
- package/dist/modules/rendering/AlignmentConfig.js.map +1 -0
- package/dist/modules/rendering/BoxEdges.d.ts +8 -0
- package/dist/modules/rendering/BoxEdges.d.ts.map +1 -0
- package/dist/modules/rendering/BoxEdges.js +2 -0
- package/dist/modules/rendering/BoxEdges.js.map +1 -0
- package/dist/modules/rendering/BrowserOverlayFrameRenderer.d.ts +12 -0
- package/dist/modules/rendering/BrowserOverlayFrameRenderer.d.ts.map +1 -0
- package/dist/modules/rendering/BrowserOverlayFrameRenderer.js +31 -0
- package/dist/modules/rendering/BrowserOverlayFrameRenderer.js.map +1 -0
- package/dist/modules/rendering/BrowserSubtitleFrameRenderer.d.ts +57 -0
- package/dist/modules/rendering/BrowserSubtitleFrameRenderer.d.ts.map +1 -0
- package/dist/modules/rendering/BrowserSubtitleFrameRenderer.js +775 -0
- package/dist/modules/rendering/BrowserSubtitleFrameRenderer.js.map +1 -0
- package/dist/modules/rendering/ElementRenderOverrides.d.ts +15 -0
- package/dist/modules/rendering/ElementRenderOverrides.d.ts.map +1 -0
- package/dist/modules/rendering/ElementRenderOverrides.js +24 -0
- package/dist/modules/rendering/ElementRenderOverrides.js.map +1 -0
- package/dist/modules/rendering/InlineStyleMap.d.ts +9 -0
- package/dist/modules/rendering/InlineStyleMap.d.ts.map +1 -0
- package/dist/modules/rendering/InlineStyleMap.js +2 -0
- package/dist/modules/rendering/InlineStyleMap.js.map +1 -0
- package/dist/modules/rendering/LayeredSubtitleFrame.d.ts +20 -0
- package/dist/modules/rendering/LayeredSubtitleFrame.d.ts.map +1 -0
- package/dist/modules/rendering/LayeredSubtitleFrame.js +36 -0
- package/dist/modules/rendering/LayeredSubtitleFrame.js.map +1 -0
- package/dist/modules/rendering/OverlayFrameRenderer.d.ts +27 -0
- package/dist/modules/rendering/OverlayFrameRenderer.d.ts.map +1 -0
- package/dist/modules/rendering/OverlayFrameRenderer.js +2 -0
- package/dist/modules/rendering/OverlayFrameRenderer.js.map +1 -0
- package/dist/modules/rendering/RenderingConfig.d.ts +22 -0
- package/dist/modules/rendering/RenderingConfig.d.ts.map +1 -0
- package/dist/modules/rendering/RenderingConfig.js +2 -0
- package/dist/modules/rendering/RenderingConfig.js.map +1 -0
- package/dist/modules/rendering/ScopedRenderOverride.d.ts +19 -0
- package/dist/modules/rendering/ScopedRenderOverride.d.ts.map +1 -0
- package/dist/modules/rendering/ScopedRenderOverride.js +2 -0
- package/dist/modules/rendering/ScopedRenderOverride.js.map +1 -0
- package/dist/modules/rendering/SegmentPaintRegionResolver.d.ts +41 -0
- package/dist/modules/rendering/SegmentPaintRegionResolver.d.ts.map +1 -0
- package/dist/modules/rendering/SegmentPaintRegionResolver.js +47 -0
- package/dist/modules/rendering/SegmentPaintRegionResolver.js.map +1 -0
- package/dist/modules/rendering/SegmentSubtreeHtmlBuilder.d.ts +58 -0
- package/dist/modules/rendering/SegmentSubtreeHtmlBuilder.d.ts.map +1 -0
- package/dist/modules/rendering/SegmentSubtreeHtmlBuilder.js +132 -0
- package/dist/modules/rendering/SegmentSubtreeHtmlBuilder.js.map +1 -0
- package/dist/modules/rendering/SubtitleFrameRenderer.d.ts +111 -0
- package/dist/modules/rendering/SubtitleFrameRenderer.d.ts.map +1 -0
- package/dist/modules/rendering/SubtitleFrameRenderer.js +2 -0
- package/dist/modules/rendering/SubtitleFrameRenderer.js.map +1 -0
- package/dist/modules/rendering/VideoFrameLayerClass.d.ts +21 -0
- package/dist/modules/rendering/VideoFrameLayerClass.d.ts.map +1 -0
- package/dist/modules/rendering/VideoFrameLayerClass.js +21 -0
- package/dist/modules/rendering/VideoFrameLayerClass.js.map +1 -0
- package/dist/modules/rendering/VideoFrameSource.d.ts +29 -0
- package/dist/modules/rendering/VideoFrameSource.d.ts.map +1 -0
- package/dist/modules/rendering/VideoFrameSource.js +2 -0
- package/dist/modules/rendering/VideoFrameSource.js.map +1 -0
- package/dist/modules/rendering/index.d.ts +14 -0
- package/dist/modules/rendering/index.d.ts.map +1 -0
- package/dist/modules/rendering/index.js +6 -0
- package/dist/modules/rendering/index.js.map +1 -0
- package/dist/modules/splitting/BalancedLineSplitter.d.ts +24 -0
- package/dist/modules/splitting/BalancedLineSplitter.d.ts.map +1 -0
- package/dist/modules/splitting/BalancedLineSplitter.js +81 -0
- package/dist/modules/splitting/BalancedLineSplitter.js.map +1 -0
- package/dist/modules/splitting/BalancedPixelWidthLineSplitter.d.ts +31 -0
- package/dist/modules/splitting/BalancedPixelWidthLineSplitter.d.ts.map +1 -0
- package/dist/modules/splitting/BalancedPixelWidthLineSplitter.js +99 -0
- package/dist/modules/splitting/BalancedPixelWidthLineSplitter.js.map +1 -0
- package/dist/modules/splitting/BoundarySegmentSplitter.d.ts +19 -0
- package/dist/modules/splitting/BoundarySegmentSplitter.d.ts.map +1 -0
- package/dist/modules/splitting/BoundarySegmentSplitter.js +38 -0
- package/dist/modules/splitting/BoundarySegmentSplitter.js.map +1 -0
- package/dist/modules/splitting/CompositeSegmentSplitter.d.ts +8 -0
- package/dist/modules/splitting/CompositeSegmentSplitter.d.ts.map +1 -0
- package/dist/modules/splitting/CompositeSegmentSplitter.js +12 -0
- package/dist/modules/splitting/CompositeSegmentSplitter.js.map +1 -0
- package/dist/modules/splitting/DomProbeCanvasTextMeasurer.d.ts +56 -0
- package/dist/modules/splitting/DomProbeCanvasTextMeasurer.d.ts.map +1 -0
- package/dist/modules/splitting/DomProbeCanvasTextMeasurer.js +197 -0
- package/dist/modules/splitting/DomProbeCanvasTextMeasurer.js.map +1 -0
- package/dist/modules/splitting/GraphemeWordSplitter.d.ts +11 -0
- package/dist/modules/splitting/GraphemeWordSplitter.d.ts.map +1 -0
- package/dist/modules/splitting/GraphemeWordSplitter.js +12 -0
- package/dist/modules/splitting/GraphemeWordSplitter.js.map +1 -0
- package/dist/modules/splitting/LimitByCharsSegmentSplitter.d.ts +15 -0
- package/dist/modules/splitting/LimitByCharsSegmentSplitter.d.ts.map +1 -0
- package/dist/modules/splitting/LimitByCharsSegmentSplitter.js +64 -0
- package/dist/modules/splitting/LimitByCharsSegmentSplitter.js.map +1 -0
- package/dist/modules/splitting/LimitByScaledCharsSegmentSplitter.d.ts +30 -0
- package/dist/modules/splitting/LimitByScaledCharsSegmentSplitter.d.ts.map +1 -0
- package/dist/modules/splitting/LimitByScaledCharsSegmentSplitter.js +66 -0
- package/dist/modules/splitting/LimitByScaledCharsSegmentSplitter.js.map +1 -0
- package/dist/modules/splitting/LimitByWordsSegmentSplitter.d.ts +12 -0
- package/dist/modules/splitting/LimitByWordsSegmentSplitter.d.ts.map +1 -0
- package/dist/modules/splitting/LimitByWordsSegmentSplitter.js +25 -0
- package/dist/modules/splitting/LimitByWordsSegmentSplitter.js.map +1 -0
- package/dist/modules/splitting/LineSplitter.d.ts +10 -0
- package/dist/modules/splitting/LineSplitter.d.ts.map +1 -0
- package/dist/modules/splitting/LineSplitter.js +2 -0
- package/dist/modules/splitting/LineSplitter.js.map +1 -0
- package/dist/modules/splitting/PauseBasedSegmentSplitter.d.ts +24 -0
- package/dist/modules/splitting/PauseBasedSegmentSplitter.d.ts.map +1 -0
- package/dist/modules/splitting/PauseBasedSegmentSplitter.js +43 -0
- package/dist/modules/splitting/PauseBasedSegmentSplitter.js.map +1 -0
- package/dist/modules/splitting/SegmentSplitter.d.ts +10 -0
- package/dist/modules/splitting/SegmentSplitter.d.ts.map +1 -0
- package/dist/modules/splitting/SegmentSplitter.js +2 -0
- package/dist/modules/splitting/SegmentSplitter.js.map +1 -0
- package/dist/modules/splitting/SpeakerChangeSegmentSplitter.d.ts +17 -0
- package/dist/modules/splitting/SpeakerChangeSegmentSplitter.d.ts.map +1 -0
- package/dist/modules/splitting/SpeakerChangeSegmentSplitter.js +46 -0
- package/dist/modules/splitting/SpeakerChangeSegmentSplitter.js.map +1 -0
- package/dist/modules/splitting/TextMeasurer.d.ts +15 -0
- package/dist/modules/splitting/TextMeasurer.d.ts.map +1 -0
- package/dist/modules/splitting/TextMeasurer.js +2 -0
- package/dist/modules/splitting/TextMeasurer.js.map +1 -0
- package/dist/modules/splitting/WordSplitter.d.ts +8 -0
- package/dist/modules/splitting/WordSplitter.d.ts.map +1 -0
- package/dist/modules/splitting/WordSplitter.js +2 -0
- package/dist/modules/splitting/WordSplitter.js.map +1 -0
- package/dist/modules/splitting/index.d.ts +24 -0
- package/dist/modules/splitting/index.d.ts.map +1 -0
- package/dist/modules/splitting/index.js +12 -0
- package/dist/modules/splitting/index.js.map +1 -0
- package/dist/modules/svg-filter/SvgFilter.d.ts +16 -0
- package/dist/modules/svg-filter/SvgFilter.d.ts.map +1 -0
- package/dist/modules/svg-filter/SvgFilter.js +28 -0
- package/dist/modules/svg-filter/SvgFilter.js.map +1 -0
- package/dist/modules/svg-filter/SvgFilterBundle.d.ts +16 -0
- package/dist/modules/svg-filter/SvgFilterBundle.d.ts.map +1 -0
- package/dist/modules/svg-filter/SvgFilterBundle.js +20 -0
- package/dist/modules/svg-filter/SvgFilterBundle.js.map +1 -0
- package/dist/modules/svg-filter/SvgFilterDefinitions.d.ts +16 -0
- package/dist/modules/svg-filter/SvgFilterDefinitions.d.ts.map +1 -0
- package/dist/modules/svg-filter/SvgFilterDefinitions.js +25 -0
- package/dist/modules/svg-filter/SvgFilterDefinitions.js.map +1 -0
- package/dist/modules/svg-filter/SvgFilterDefinitionsParser.d.ts +21 -0
- package/dist/modules/svg-filter/SvgFilterDefinitionsParser.d.ts.map +1 -0
- package/dist/modules/svg-filter/SvgFilterDefinitionsParser.js +50 -0
- package/dist/modules/svg-filter/SvgFilterDefinitionsParser.js.map +1 -0
- package/dist/modules/svg-filter/SvgFilterLengthResolver.d.ts +17 -0
- package/dist/modules/svg-filter/SvgFilterLengthResolver.d.ts.map +1 -0
- package/dist/modules/svg-filter/SvgFilterLengthResolver.js +27 -0
- package/dist/modules/svg-filter/SvgFilterLengthResolver.js.map +1 -0
- package/dist/modules/svg-filter/SvgFilterScope.d.ts +18 -0
- package/dist/modules/svg-filter/SvgFilterScope.d.ts.map +1 -0
- package/dist/modules/svg-filter/SvgFilterScope.js +28 -0
- package/dist/modules/svg-filter/SvgFilterScope.js.map +1 -0
- package/dist/modules/svg-filter/SvgFilterScopeProvider.d.ts +52 -0
- package/dist/modules/svg-filter/SvgFilterScopeProvider.d.ts.map +1 -0
- package/dist/modules/svg-filter/SvgFilterScopeProvider.js +2 -0
- package/dist/modules/svg-filter/SvgFilterScopeProvider.js.map +1 -0
- package/dist/modules/svg-filter/SvgFilterScoper.d.ts +60 -0
- package/dist/modules/svg-filter/SvgFilterScoper.d.ts.map +1 -0
- package/dist/modules/svg-filter/SvgFilterScoper.js +58 -0
- package/dist/modules/svg-filter/SvgFilterScoper.js.map +1 -0
- package/dist/modules/svg-filter/index.d.ts +10 -0
- package/dist/modules/svg-filter/index.d.ts.map +1 -0
- package/dist/modules/svg-filter/index.js +8 -0
- package/dist/modules/svg-filter/index.js.map +1 -0
- package/dist/modules/tagging/RegexTagger.d.ts +11 -0
- package/dist/modules/tagging/RegexTagger.d.ts.map +1 -0
- package/dist/modules/tagging/RegexTagger.js +32 -0
- package/dist/modules/tagging/RegexTagger.js.map +1 -0
- package/dist/modules/tagging/SpanTagger.d.ts +25 -0
- package/dist/modules/tagging/SpanTagger.d.ts.map +1 -0
- package/dist/modules/tagging/SpanTagger.js +73 -0
- package/dist/modules/tagging/SpanTagger.js.map +1 -0
- package/dist/modules/tagging/StructureTagger.d.ts +20 -0
- package/dist/modules/tagging/StructureTagger.d.ts.map +1 -0
- package/dist/modules/tagging/StructureTagger.js +74 -0
- package/dist/modules/tagging/StructureTagger.js.map +1 -0
- package/dist/modules/tagging/Tagger.d.ts +5 -0
- package/dist/modules/tagging/Tagger.d.ts.map +1 -0
- package/dist/modules/tagging/Tagger.js +5 -0
- package/dist/modules/tagging/Tagger.js.map +1 -0
- package/dist/modules/tagging/WordlistTagger.d.ts +11 -0
- package/dist/modules/tagging/WordlistTagger.d.ts.map +1 -0
- package/dist/modules/tagging/WordlistTagger.js +31 -0
- package/dist/modules/tagging/WordlistTagger.js.map +1 -0
- package/dist/modules/tagging/index.d.ts +6 -0
- package/dist/modules/tagging/index.d.ts.map +1 -0
- package/dist/modules/tagging/index.js +6 -0
- package/dist/modules/tagging/index.js.map +1 -0
- package/dist/modules/transcription/AudioDecoder.d.ts +11 -0
- package/dist/modules/transcription/AudioDecoder.d.ts.map +1 -0
- package/dist/modules/transcription/AudioDecoder.js +2 -0
- package/dist/modules/transcription/AudioDecoder.js.map +1 -0
- package/dist/modules/transcription/BrowserAudioDecoder.d.ts +13 -0
- package/dist/modules/transcription/BrowserAudioDecoder.d.ts.map +1 -0
- package/dist/modules/transcription/BrowserAudioDecoder.js +34 -0
- package/dist/modules/transcription/BrowserAudioDecoder.js.map +1 -0
- package/dist/modules/transcription/PassthroughTranscriber.d.ts +20 -0
- package/dist/modules/transcription/PassthroughTranscriber.d.ts.map +1 -0
- package/dist/modules/transcription/PassthroughTranscriber.js +23 -0
- package/dist/modules/transcription/PassthroughTranscriber.js.map +1 -0
- package/dist/modules/transcription/PreDecodedAudioDecoder.d.ts +12 -0
- package/dist/modules/transcription/PreDecodedAudioDecoder.d.ts.map +1 -0
- package/dist/modules/transcription/PreDecodedAudioDecoder.js +14 -0
- package/dist/modules/transcription/PreDecodedAudioDecoder.js.map +1 -0
- package/dist/modules/transcription/SrtTranscriber.d.ts +33 -0
- package/dist/modules/transcription/SrtTranscriber.d.ts.map +1 -0
- package/dist/modules/transcription/SrtTranscriber.js +111 -0
- package/dist/modules/transcription/SrtTranscriber.js.map +1 -0
- package/dist/modules/transcription/Transcriber.d.ts +23 -0
- package/dist/modules/transcription/Transcriber.d.ts.map +1 -0
- package/dist/modules/transcription/Transcriber.js +2 -0
- package/dist/modules/transcription/Transcriber.js.map +1 -0
- package/dist/modules/transcription/WhisperTranscriber.d.ts +44 -0
- package/dist/modules/transcription/WhisperTranscriber.d.ts.map +1 -0
- package/dist/modules/transcription/WhisperTranscriber.js +162 -0
- package/dist/modules/transcription/WhisperTranscriber.js.map +1 -0
- package/dist/modules/transcription/index.d.ts +8 -0
- package/dist/modules/transcription/index.d.ts.map +1 -0
- package/dist/modules/transcription/index.js +6 -0
- package/dist/modules/transcription/index.js.map +1 -0
- package/dist/modules/video/RenderJob.d.ts +95 -0
- package/dist/modules/video/RenderJob.d.ts.map +1 -0
- package/dist/modules/video/RenderJob.js +2 -0
- package/dist/modules/video/RenderJob.js.map +1 -0
- package/dist/modules/video/VideoRenderer.d.ts +5 -0
- package/dist/modules/video/VideoRenderer.d.ts.map +1 -0
- package/dist/modules/video/VideoRenderer.js +2 -0
- package/dist/modules/video/VideoRenderer.js.map +1 -0
- package/dist/modules/video/index.d.ts +33 -0
- package/dist/modules/video/index.d.ts.map +1 -0
- package/dist/modules/video/index.js +17 -0
- package/dist/modules/video/index.js.map +1 -0
- package/dist/modules/video/mediabunny/MediaBunnyVideoRenderer.d.ts +69 -0
- package/dist/modules/video/mediabunny/MediaBunnyVideoRenderer.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/MediaBunnyVideoRenderer.js +206 -0
- package/dist/modules/video/mediabunny/MediaBunnyVideoRenderer.js.map +1 -0
- package/dist/modules/video/mediabunny/audio/AudioTrackBridge.d.ts +24 -0
- package/dist/modules/video/mediabunny/audio/AudioTrackBridge.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/audio/AudioTrackBridge.js +2 -0
- package/dist/modules/video/mediabunny/audio/AudioTrackBridge.js.map +1 -0
- package/dist/modules/video/mediabunny/audio/AudioTrackBridgeFactory.d.ts +20 -0
- package/dist/modules/video/mediabunny/audio/AudioTrackBridgeFactory.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/audio/AudioTrackBridgeFactory.js +2 -0
- package/dist/modules/video/mediabunny/audio/AudioTrackBridgeFactory.js.map +1 -0
- package/dist/modules/video/mediabunny/audio/DefaultAudioTrackBridgeFactory.d.ts +11 -0
- package/dist/modules/video/mediabunny/audio/DefaultAudioTrackBridgeFactory.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/audio/DefaultAudioTrackBridgeFactory.js +32 -0
- package/dist/modules/video/mediabunny/audio/DefaultAudioTrackBridgeFactory.js.map +1 -0
- package/dist/modules/video/mediabunny/audio/DiscardAudioTrackBridge.d.ts +12 -0
- package/dist/modules/video/mediabunny/audio/DiscardAudioTrackBridge.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/audio/DiscardAudioTrackBridge.js +14 -0
- package/dist/modules/video/mediabunny/audio/DiscardAudioTrackBridge.js.map +1 -0
- package/dist/modules/video/mediabunny/audio/PassthroughAudioTrackBridge.d.ts +28 -0
- package/dist/modules/video/mediabunny/audio/PassthroughAudioTrackBridge.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/audio/PassthroughAudioTrackBridge.js +52 -0
- package/dist/modules/video/mediabunny/audio/PassthroughAudioTrackBridge.js.map +1 -0
- package/dist/modules/video/mediabunny/audio/TranscodeAudioTrackBridge.d.ts +25 -0
- package/dist/modules/video/mediabunny/audio/TranscodeAudioTrackBridge.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/audio/TranscodeAudioTrackBridge.js +52 -0
- package/dist/modules/video/mediabunny/audio/TranscodeAudioTrackBridge.js.map +1 -0
- package/dist/modules/video/mediabunny/caption/BatchedSubtitleLayerSource.d.ts +32 -0
- package/dist/modules/video/mediabunny/caption/BatchedSubtitleLayerSource.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/caption/BatchedSubtitleLayerSource.js +60 -0
- package/dist/modules/video/mediabunny/caption/BatchedSubtitleLayerSource.js.map +1 -0
- package/dist/modules/video/mediabunny/caption/ComposedSubtitleLayerSource.d.ts +27 -0
- package/dist/modules/video/mediabunny/caption/ComposedSubtitleLayerSource.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/caption/ComposedSubtitleLayerSource.js +72 -0
- package/dist/modules/video/mediabunny/caption/ComposedSubtitleLayerSource.js.map +1 -0
- package/dist/modules/video/mediabunny/caption/SubtitleLayerSource.d.ts +32 -0
- package/dist/modules/video/mediabunny/caption/SubtitleLayerSource.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/caption/SubtitleLayerSource.js +2 -0
- package/dist/modules/video/mediabunny/caption/SubtitleLayerSource.js.map +1 -0
- package/dist/modules/video/mediabunny/caption/VideoBoundSubtitleLayerSource.d.ts +25 -0
- package/dist/modules/video/mediabunny/caption/VideoBoundSubtitleLayerSource.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/caption/VideoBoundSubtitleLayerSource.js +37 -0
- package/dist/modules/video/mediabunny/caption/VideoBoundSubtitleLayerSource.js.map +1 -0
- package/dist/modules/video/mediabunny/codec/CodecPolicy.d.ts +32 -0
- package/dist/modules/video/mediabunny/codec/CodecPolicy.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/codec/CodecPolicy.js +2 -0
- package/dist/modules/video/mediabunny/codec/CodecPolicy.js.map +1 -0
- package/dist/modules/video/mediabunny/codec/DefaultCodecPolicy.d.ts +59 -0
- package/dist/modules/video/mediabunny/codec/DefaultCodecPolicy.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/codec/DefaultCodecPolicy.js +110 -0
- package/dist/modules/video/mediabunny/codec/DefaultCodecPolicy.js.map +1 -0
- package/dist/modules/video/mediabunny/encoder/MediaBunnyCanvasVideoTrackEncoder.d.ts +27 -0
- package/dist/modules/video/mediabunny/encoder/MediaBunnyCanvasVideoTrackEncoder.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/encoder/MediaBunnyCanvasVideoTrackEncoder.js +44 -0
- package/dist/modules/video/mediabunny/encoder/MediaBunnyCanvasVideoTrackEncoder.js.map +1 -0
- package/dist/modules/video/mediabunny/encoder/MediaBunnyCanvasVideoTrackEncoderFactory.d.ts +10 -0
- package/dist/modules/video/mediabunny/encoder/MediaBunnyCanvasVideoTrackEncoderFactory.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/encoder/MediaBunnyCanvasVideoTrackEncoderFactory.js +15 -0
- package/dist/modules/video/mediabunny/encoder/MediaBunnyCanvasVideoTrackEncoderFactory.js.map +1 -0
- package/dist/modules/video/mediabunny/encoder/VideoTrackEncoder.d.ts +29 -0
- package/dist/modules/video/mediabunny/encoder/VideoTrackEncoder.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/encoder/VideoTrackEncoder.js +2 -0
- package/dist/modules/video/mediabunny/encoder/VideoTrackEncoder.js.map +1 -0
- package/dist/modules/video/mediabunny/encoder/VideoTrackEncoderFactory.d.ts +16 -0
- package/dist/modules/video/mediabunny/encoder/VideoTrackEncoderFactory.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/encoder/VideoTrackEncoderFactory.js +2 -0
- package/dist/modules/video/mediabunny/encoder/VideoTrackEncoderFactory.js.map +1 -0
- package/dist/modules/video/mediabunny/frame/CurrentFrameVideoSource.d.ts +25 -0
- package/dist/modules/video/mediabunny/frame/CurrentFrameVideoSource.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/frame/CurrentFrameVideoSource.js +74 -0
- package/dist/modules/video/mediabunny/frame/CurrentFrameVideoSource.js.map +1 -0
- package/dist/modules/video/mediabunny/frame/CustomWebCodecsVideoFrameDecoder.d.ts +26 -0
- package/dist/modules/video/mediabunny/frame/CustomWebCodecsVideoFrameDecoder.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/frame/CustomWebCodecsVideoFrameDecoder.js +147 -0
- package/dist/modules/video/mediabunny/frame/CustomWebCodecsVideoFrameDecoder.js.map +1 -0
- package/dist/modules/video/mediabunny/frame/DefaultVideoFrameDecoderFactory.d.ts +12 -0
- package/dist/modules/video/mediabunny/frame/DefaultVideoFrameDecoderFactory.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/frame/DefaultVideoFrameDecoderFactory.js +25 -0
- package/dist/modules/video/mediabunny/frame/DefaultVideoFrameDecoderFactory.js.map +1 -0
- package/dist/modules/video/mediabunny/frame/FrameCompositor.d.ts +30 -0
- package/dist/modules/video/mediabunny/frame/FrameCompositor.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/frame/FrameCompositor.js +2 -0
- package/dist/modules/video/mediabunny/frame/FrameCompositor.js.map +1 -0
- package/dist/modules/video/mediabunny/frame/HtmlVideoElementVideoFrameDecoder.d.ts +44 -0
- package/dist/modules/video/mediabunny/frame/HtmlVideoElementVideoFrameDecoder.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/frame/HtmlVideoElementVideoFrameDecoder.js +334 -0
- package/dist/modules/video/mediabunny/frame/HtmlVideoElementVideoFrameDecoder.js.map +1 -0
- package/dist/modules/video/mediabunny/frame/LayeredFrameCompositor.d.ts +10 -0
- package/dist/modules/video/mediabunny/frame/LayeredFrameCompositor.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/frame/LayeredFrameCompositor.js +17 -0
- package/dist/modules/video/mediabunny/frame/LayeredFrameCompositor.js.map +1 -0
- package/dist/modules/video/mediabunny/frame/VideoFrameDecoder.d.ts +30 -0
- package/dist/modules/video/mediabunny/frame/VideoFrameDecoder.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/frame/VideoFrameDecoder.js +2 -0
- package/dist/modules/video/mediabunny/frame/VideoFrameDecoder.js.map +1 -0
- package/dist/modules/video/mediabunny/frame/VideoFrameDecoderFactory.d.ts +22 -0
- package/dist/modules/video/mediabunny/frame/VideoFrameDecoderFactory.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/frame/VideoFrameDecoderFactory.js +2 -0
- package/dist/modules/video/mediabunny/frame/VideoFrameDecoderFactory.js.map +1 -0
- package/dist/modules/video/mediabunny/frame/WebCodecsVideoFrameDecoder.d.ts +17 -0
- package/dist/modules/video/mediabunny/frame/WebCodecsVideoFrameDecoder.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/frame/WebCodecsVideoFrameDecoder.js +48 -0
- package/dist/modules/video/mediabunny/frame/WebCodecsVideoFrameDecoder.js.map +1 -0
- package/dist/modules/video/mediabunny/output/MediaBunnyOutputTargetBuilder.d.ts +11 -0
- package/dist/modules/video/mediabunny/output/MediaBunnyOutputTargetBuilder.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/output/MediaBunnyOutputTargetBuilder.js +22 -0
- package/dist/modules/video/mediabunny/output/MediaBunnyOutputTargetBuilder.js.map +1 -0
- package/dist/modules/video/mediabunny/output/OutputTargetBuilder.d.ts +27 -0
- package/dist/modules/video/mediabunny/output/OutputTargetBuilder.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/output/OutputTargetBuilder.js +2 -0
- package/dist/modules/video/mediabunny/output/OutputTargetBuilder.js.map +1 -0
- package/package.json +67 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SegmentSubtreeHtmlBuilder.js","sourceRoot":"","sources":["../../../src/modules/rendering/SegmentSubtreeHtmlBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import type { Document } from '../document/Document';
|
|
2
|
+
import type { AlignmentConfig } from '../rendering/AlignmentConfig';
|
|
3
|
+
import type { RenderingConfig } from '../rendering/RenderingConfig';
|
|
4
|
+
import type { ElementRenderOverrides } from '../rendering/ElementRenderOverrides';
|
|
5
|
+
import type { InlineStyleMap } from '../rendering/InlineStyleMap';
|
|
6
|
+
import type { SvgFilterBundle } from '../svg-filter/SvgFilterBundle';
|
|
7
|
+
import type { VideoFrameSource } from '../rendering/VideoFrameSource';
|
|
8
|
+
/**
|
|
9
|
+
* The render-time configuration for one Section.kind: the stylesheet
|
|
10
|
+
* that defines its visual rules, the root-level inline styles that
|
|
11
|
+
* seed it, where the rendered subtitle anchors inside the video frame,
|
|
12
|
+
* the structural rendering switches the stylesheet was authored
|
|
13
|
+
* against, and optional per-segment / per-word overrides.
|
|
14
|
+
*
|
|
15
|
+
* The renderer dispatches per active Section using `Section.kind` as
|
|
16
|
+
* the lookup key into the `styles` map supplied to `open`.
|
|
17
|
+
*/
|
|
18
|
+
export interface SubtitleStyle {
|
|
19
|
+
/** Stylesheet defining the visual rules for this kind. */
|
|
20
|
+
css: string;
|
|
21
|
+
/** Root-level inline styles applied on the wrapper: CSS custom properties consumed by `css`, plus any direct property defaults. Per-segment and per-word overrides layer on top. */
|
|
22
|
+
inlineStyles: InlineStyleMap;
|
|
23
|
+
/** Where the rendered subtitle anchors inside the video frame. Per-segment and per-word `alignment` overrides merge over this. */
|
|
24
|
+
alignment: AlignmentConfig;
|
|
25
|
+
/** Structural switches the stylesheet was authored against (e.g. letter-level split). */
|
|
26
|
+
rendering: RenderingConfig;
|
|
27
|
+
/** Per-segment overrides, keyed by `Segment.id`. */
|
|
28
|
+
segmentOverrides?: ElementRenderOverrides;
|
|
29
|
+
/** Per-word overrides, keyed by `Word.id`. */
|
|
30
|
+
wordOverrides?: ElementRenderOverrides;
|
|
31
|
+
/** `<filter>` defs the stylesheet references via `filter: url(#id)`, paired with the scope that materializes them. */
|
|
32
|
+
svgFilters?: SvgFilterBundle;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* A drawable handle for one rendered subtitle frame. The consumer
|
|
36
|
+
* paints it into its own 2D context through `draw`.
|
|
37
|
+
*
|
|
38
|
+
* The underlying raster is owned by the renderer that produced this
|
|
39
|
+
* frame and stays valid only until the next `getFrames` call on the
|
|
40
|
+
* same renderer or until `close`. Holding a `SubtitleFrame` past
|
|
41
|
+
* either event leaves `draw` painting whatever state has since
|
|
42
|
+
* replaced the raster.
|
|
43
|
+
*/
|
|
44
|
+
export interface SubtitleFrame {
|
|
45
|
+
/**
|
|
46
|
+
* Paints the frame into `context` at `(dx, dy)` scaled to
|
|
47
|
+
* `dWidth × dHeight`. The source rectangle is the full frame.
|
|
48
|
+
*/
|
|
49
|
+
draw(context: OffscreenCanvasRenderingContext2D | CanvasRenderingContext2D, dx: number, dy: number, dWidth: number, dHeight: number): void;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Produces drawable subtitle frames for a given Document.
|
|
53
|
+
*
|
|
54
|
+
* Usage:
|
|
55
|
+
* 1. `open` once per document.
|
|
56
|
+
* 2. Either `getFrames(timestamps)` per batch (with at most
|
|
57
|
+
* `getMaxBatchSize()` entries), or `getFrame(timestamp)` per
|
|
58
|
+
* individual timestamp.
|
|
59
|
+
* 3. `close` when done.
|
|
60
|
+
*/
|
|
61
|
+
export interface SubtitleFrameRenderer {
|
|
62
|
+
/**
|
|
63
|
+
* Prepares the renderer for `doc` and the set of styles its
|
|
64
|
+
* Sections may reference. `styles` is keyed by `Section.kind`.
|
|
65
|
+
* Must complete before the first `getFrames`/`getFrame` call.
|
|
66
|
+
*
|
|
67
|
+
* `videoFrameSource` is required when any style in `styles` has
|
|
68
|
+
* `rendering.videoFrame.required` set, and may be omitted
|
|
69
|
+
* otherwise. Throws if a style requires the frame but no source
|
|
70
|
+
* is supplied.
|
|
71
|
+
*/
|
|
72
|
+
open(doc: Document, styles: Readonly<Record<string, SubtitleStyle>>, width: number, height: number, videoFrameSource?: VideoFrameSource): Promise<void>;
|
|
73
|
+
/**
|
|
74
|
+
* Maximum number of timestamps a single `getFrames` call accepts
|
|
75
|
+
* at the given output dimensions. Bounded by the renderer's memory
|
|
76
|
+
* budget and any platform raster-size caps. A caller that exceeds
|
|
77
|
+
* this may see the call fail outright.
|
|
78
|
+
*/
|
|
79
|
+
getMaxBatchSize(): Promise<number>;
|
|
80
|
+
/**
|
|
81
|
+
* Renders subtitle frames for the given timestamps. The returned
|
|
82
|
+
* array has the same length and order as `timestamps`; an entry is
|
|
83
|
+
* `null` for timestamps where no Section is active.
|
|
84
|
+
*
|
|
85
|
+
* The implementation may deduplicate internally: timestamps that
|
|
86
|
+
* hit the same visual state share a single raster tile inside the
|
|
87
|
+
* batch and their return entries point at the same tile.
|
|
88
|
+
*
|
|
89
|
+
* Frames produced by one call may share underlying raster
|
|
90
|
+
* resources; those resources stay valid until the next
|
|
91
|
+
* `getFrames`/`getFrame` call or until `close`.
|
|
92
|
+
*/
|
|
93
|
+
getFrames(timestamps: ReadonlyArray<number>): Promise<Array<SubtitleFrame | null>>;
|
|
94
|
+
/**
|
|
95
|
+
* Renders the subtitle frame for a single timestamp. Returns
|
|
96
|
+
* `null` when no Section is active at `timestamp`. Equivalent in
|
|
97
|
+
* result to `(await getFrames([timestamp]))[0]`.
|
|
98
|
+
*
|
|
99
|
+
* The returned frame's underlying raster follows the same
|
|
100
|
+
* lifetime as `getFrames` results: valid until the next
|
|
101
|
+
* `getFrames`/`getFrame` call or until `close`.
|
|
102
|
+
*/
|
|
103
|
+
getFrame(timestamp: number): Promise<SubtitleFrame | null>;
|
|
104
|
+
/**
|
|
105
|
+
* Releases any host-document state the renderer attached during
|
|
106
|
+
* `open` (probe stylesheets, offscreen containers). After `close`,
|
|
107
|
+
* `getFrames`/`getFrame` return `null` for every timestamp.
|
|
108
|
+
*/
|
|
109
|
+
close(): void;
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=SubtitleFrameRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SubtitleFrameRenderer.d.ts","sourceRoot":"","sources":["../../../src/modules/rendering/SubtitleFrameRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AACxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAE5E;;;;;;;;;GASG;AACH,MAAM,WAAW,aAAa;IAC5B,0DAA0D;IAC1D,GAAG,EAAE,MAAM,CAAC;IACZ,oLAAoL;IACpL,YAAY,EAAE,cAAc,CAAC;IAC7B,kIAAkI;IAClI,SAAS,EAAE,eAAe,CAAC;IAC3B,yFAAyF;IACzF,SAAS,EAAE,eAAe,CAAC;IAC3B,oDAAoD;IACpD,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C,8CAA8C;IAC9C,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,sHAAsH;IACtH,UAAU,CAAC,EAAE,eAAe,CAAC;CAC9B;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,IAAI,CACF,OAAO,EAAE,iCAAiC,GAAG,wBAAwB,EACrE,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,IAAI,CAAC;CACT;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;;;;;;OASG;IACH,IAAI,CACF,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,CAAC,EAAE,gBAAgB,GAClC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;;;OAKG;IACH,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnC;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC;IAEnF;;;;;;;;OAQG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAE3D;;;;OAIG;IACH,KAAK,IAAI,IAAI,CAAC;CACf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SubtitleFrameRenderer.js","sourceRoot":"","sources":["../../../src/modules/rendering/SubtitleFrameRenderer.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Class on the element the renderer emits inside a Segment when its
|
|
3
|
+
* `RenderingConfig.videoFrame.required` is set. The Section's
|
|
4
|
+
* stylesheet targets this class to position, clip, or filter the
|
|
5
|
+
* video frame.
|
|
6
|
+
*/
|
|
7
|
+
export declare const VIDEO_FRAME_LAYER_CLASS = "tscaps-video-frame-layer";
|
|
8
|
+
/**
|
|
9
|
+
* Default rule for {@link VIDEO_FRAME_LAYER_CLASS}: positions the
|
|
10
|
+
* layer over the subtitle's painted region via the
|
|
11
|
+
* `--subtitle-region-*` custom properties and paints the current
|
|
12
|
+
* frame slice from `--video-frame`. Class-level specificity so
|
|
13
|
+
* sheet-scoped overrides always win.
|
|
14
|
+
*
|
|
15
|
+
* `max-width: none; max-height: none` defeats consumer CSS resets
|
|
16
|
+
* (e.g. Tailwind's `img, video { max-width: 100% }`) that would
|
|
17
|
+
* clip the layer to its content-hugging segment parent and break
|
|
18
|
+
* the region geometry.
|
|
19
|
+
*/
|
|
20
|
+
export declare const VIDEO_FRAME_LAYER_BASELINE_CSS = ".tscaps-video-frame-layer { position: absolute; left: var(--subtitle-region-x, 0); top: var(--subtitle-region-y, 0); width: var(--subtitle-region-width, 100%); height: var(--subtitle-region-height, 100%); max-width: none; max-height: none; background-image: var(--video-frame, none); background-size: 100% 100%; pointer-events: none; object-fit: fill; }";
|
|
21
|
+
//# sourceMappingURL=VideoFrameLayerClass.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VideoFrameLayerClass.d.ts","sourceRoot":"","sources":["../../../src/modules/rendering/VideoFrameLayerClass.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,6BAA6B,CAAC;AAElE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,8BAA8B,sWAAwW,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Class on the element the renderer emits inside a Segment when its
|
|
3
|
+
* `RenderingConfig.videoFrame.required` is set. The Section's
|
|
4
|
+
* stylesheet targets this class to position, clip, or filter the
|
|
5
|
+
* video frame.
|
|
6
|
+
*/
|
|
7
|
+
export const VIDEO_FRAME_LAYER_CLASS = 'tscaps-video-frame-layer';
|
|
8
|
+
/**
|
|
9
|
+
* Default rule for {@link VIDEO_FRAME_LAYER_CLASS}: positions the
|
|
10
|
+
* layer over the subtitle's painted region via the
|
|
11
|
+
* `--subtitle-region-*` custom properties and paints the current
|
|
12
|
+
* frame slice from `--video-frame`. Class-level specificity so
|
|
13
|
+
* sheet-scoped overrides always win.
|
|
14
|
+
*
|
|
15
|
+
* `max-width: none; max-height: none` defeats consumer CSS resets
|
|
16
|
+
* (e.g. Tailwind's `img, video { max-width: 100% }`) that would
|
|
17
|
+
* clip the layer to its content-hugging segment parent and break
|
|
18
|
+
* the region geometry.
|
|
19
|
+
*/
|
|
20
|
+
export const VIDEO_FRAME_LAYER_BASELINE_CSS = `.${VIDEO_FRAME_LAYER_CLASS} { position: absolute; left: var(--subtitle-region-x, 0); top: var(--subtitle-region-y, 0); width: var(--subtitle-region-width, 100%); height: var(--subtitle-region-height, 100%); max-width: none; max-height: none; background-image: var(--video-frame, none); background-size: 100% 100%; pointer-events: none; object-fit: fill; }`;
|
|
21
|
+
//# sourceMappingURL=VideoFrameLayerClass.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VideoFrameLayerClass.js","sourceRoot":"","sources":["../../../src/modules/rendering/VideoFrameLayerClass.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,0BAA0B,CAAC;AAElE;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,IAAI,uBAAuB,0UAA0U,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sub-rectangle of a video frame, expressed in viewport pixels.
|
|
3
|
+
* `(x, y)` is the top-left corner; `(x + width, y + height)` is the
|
|
4
|
+
* bottom-right corner.
|
|
5
|
+
*/
|
|
6
|
+
export interface VideoFrameRegion {
|
|
7
|
+
readonly x: number;
|
|
8
|
+
readonly y: number;
|
|
9
|
+
readonly width: number;
|
|
10
|
+
readonly height: number;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Pull-based access to the underlying video frame at a given moment
|
|
14
|
+
* in playback time.
|
|
15
|
+
*/
|
|
16
|
+
export interface VideoFrameSource {
|
|
17
|
+
/**
|
|
18
|
+
* Resolves to a self-contained `data:` URL for the frame whose
|
|
19
|
+
* presentation interval contains `timeSeconds`, encoded as JPEG
|
|
20
|
+
* at the given quality (`0` lowest, `1` highest). When `region`
|
|
21
|
+
* is supplied, only that sub-rectangle of the frame is encoded.
|
|
22
|
+
*
|
|
23
|
+
* Rejects when the requested time falls outside the source's
|
|
24
|
+
* available range, or when the underlying decoder cannot produce
|
|
25
|
+
* a frame at that timestamp.
|
|
26
|
+
*/
|
|
27
|
+
getFrameAt(timeSeconds: number, jpegQuality: number, region?: VideoFrameRegion): Promise<string>;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=VideoFrameSource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VideoFrameSource.d.ts","sourceRoot":"","sources":["../../../src/modules/rendering/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/VideoFrameSource.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type { SubtitleFrameRenderer, SubtitleFrame, SubtitleStyle } from '../rendering/SubtitleFrameRenderer';
|
|
2
|
+
export { BrowserSubtitleFrameRenderer } from '../rendering/BrowserSubtitleFrameRenderer';
|
|
3
|
+
export { LayeredSubtitleFrame } from '../rendering/LayeredSubtitleFrame';
|
|
4
|
+
export type { OverlayFrameRenderer, OverlayFrame } from '../rendering/OverlayFrameRenderer';
|
|
5
|
+
export { BrowserOverlayFrameRenderer } from '../rendering/BrowserOverlayFrameRenderer';
|
|
6
|
+
export type { AlignmentConfig, VerticalAlign } from '../rendering/AlignmentConfig';
|
|
7
|
+
export type { RenderingConfig, VideoFrameRequirement } from '../rendering/RenderingConfig';
|
|
8
|
+
export type { BoxEdges } from '../rendering/BoxEdges';
|
|
9
|
+
export type { VideoFrameSource, VideoFrameRegion } from '../rendering/VideoFrameSource';
|
|
10
|
+
export { VIDEO_FRAME_LAYER_CLASS, VIDEO_FRAME_LAYER_BASELINE_CSS } from '../rendering/VideoFrameLayerClass';
|
|
11
|
+
export { ElementRenderOverrides } from '../rendering/ElementRenderOverrides';
|
|
12
|
+
export type { ScopedRenderOverride } from '../rendering/ScopedRenderOverride';
|
|
13
|
+
export type { InlineStyleMap } from '../rendering/InlineStyleMap';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/rendering/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,qBAAqB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACpH,OAAO,EAAE,4BAA4B,EAAE,MAAM,iDAAiD,CAAC;AAC/F,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAClG,OAAO,EAAE,2BAA2B,EAAE,MAAM,gDAAgD,CAAC;AAC7F,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACzF,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AACjG,YAAY,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAC9F,OAAO,EAAE,uBAAuB,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AAClH,OAAO,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AACnF,YAAY,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AACpF,YAAY,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { BrowserSubtitleFrameRenderer } from '../rendering/BrowserSubtitleFrameRenderer';
|
|
2
|
+
export { LayeredSubtitleFrame } from '../rendering/LayeredSubtitleFrame';
|
|
3
|
+
export { BrowserOverlayFrameRenderer } from '../rendering/BrowserOverlayFrameRenderer';
|
|
4
|
+
export { VIDEO_FRAME_LAYER_CLASS, VIDEO_FRAME_LAYER_BASELINE_CSS } from '../rendering/VideoFrameLayerClass';
|
|
5
|
+
export { ElementRenderOverrides } from '../rendering/ElementRenderOverrides';
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/rendering/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,MAAM,iDAAiD,CAAC;AAC/F,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAE/E,OAAO,EAAE,2BAA2B,EAAE,MAAM,gDAAgD,CAAC;AAK7F,OAAO,EAAE,uBAAuB,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AAClH,OAAO,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { LineSplitter } from '../splitting/LineSplitter';
|
|
2
|
+
import { Segment } from '../document/Segment';
|
|
3
|
+
export interface BalancedLineSplitterConfig {
|
|
4
|
+
maxLines: number;
|
|
5
|
+
minLines: number;
|
|
6
|
+
maxCharsPerLine: number;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* BalancedLineSplitter implements a line-breaking strategy that aims to distribute
|
|
10
|
+
* words across lines in a way that minimizes the difference in character count
|
|
11
|
+
* between lines, while respecting specified constraints on maximum lines,
|
|
12
|
+
* minimum lines, and maximum characters per line.
|
|
13
|
+
*/
|
|
14
|
+
export declare class BalancedLineSplitter implements LineSplitter {
|
|
15
|
+
private readonly _config;
|
|
16
|
+
constructor(_config: BalancedLineSplitterConfig);
|
|
17
|
+
split(segments: ReadonlyArray<Segment>): Segment[];
|
|
18
|
+
private splitSegment;
|
|
19
|
+
private buildLines;
|
|
20
|
+
private splitRecursive;
|
|
21
|
+
private adjustToMinLines;
|
|
22
|
+
private charCount;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=BalancedLineSplitter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BalancedLineSplitter.d.ts","sourceRoot":"","sources":["../../../src/modules/splitting/BalancedLineSplitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAIpD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;;;;GAKG;AACH,qBAAa,oBAAqB,YAAW,YAAY;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,0BAA0B;IAEhE,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,OAAO,EAAE;IAIlD,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,cAAc;IA6BtB,OAAO,CAAC,gBAAgB;IAoBxB,OAAO,CAAC,SAAS;CAGlB"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { Line } from '../document/Line';
|
|
2
|
+
/**
|
|
3
|
+
* BalancedLineSplitter implements a line-breaking strategy that aims to distribute
|
|
4
|
+
* words across lines in a way that minimizes the difference in character count
|
|
5
|
+
* between lines, while respecting specified constraints on maximum lines,
|
|
6
|
+
* minimum lines, and maximum characters per line.
|
|
7
|
+
*/
|
|
8
|
+
export class BalancedLineSplitter {
|
|
9
|
+
_config;
|
|
10
|
+
constructor(_config) {
|
|
11
|
+
this._config = _config;
|
|
12
|
+
}
|
|
13
|
+
split(segments) {
|
|
14
|
+
return segments.map((segment) => this.splitSegment(segment));
|
|
15
|
+
}
|
|
16
|
+
splitSegment(segment) {
|
|
17
|
+
const words = segment.getWords();
|
|
18
|
+
if (words.length === 0)
|
|
19
|
+
return segment;
|
|
20
|
+
const lines = this.buildLines(words);
|
|
21
|
+
this.adjustToMinLines(lines);
|
|
22
|
+
return segment.with({ lines });
|
|
23
|
+
}
|
|
24
|
+
buildLines(words) {
|
|
25
|
+
const { maxLines, maxCharsPerLine } = this._config;
|
|
26
|
+
const totalChars = this.charCount(words);
|
|
27
|
+
const linesNeeded = Math.ceil(totalChars / maxCharsPerLine);
|
|
28
|
+
const targetLines = Math.min(linesNeeded, maxLines);
|
|
29
|
+
if (targetLines <= 1) {
|
|
30
|
+
return [new Line({ words })];
|
|
31
|
+
}
|
|
32
|
+
return this.splitRecursive(words, targetLines);
|
|
33
|
+
}
|
|
34
|
+
splitRecursive(words, linesLeft) {
|
|
35
|
+
if (linesLeft <= 1 || words.length === 0) {
|
|
36
|
+
return words.length > 0 ? [new Line({ words })] : [];
|
|
37
|
+
}
|
|
38
|
+
const total = this.charCount(words);
|
|
39
|
+
const target = total / linesLeft;
|
|
40
|
+
let bestSplit = 1;
|
|
41
|
+
let bestDiff = Infinity;
|
|
42
|
+
let cumChars = 0;
|
|
43
|
+
for (let i = 0; i < words.length - 1; i++) {
|
|
44
|
+
const word = words[i];
|
|
45
|
+
if (!word)
|
|
46
|
+
continue;
|
|
47
|
+
cumChars += i === 0 ? word.text.length : word.text.length + 1;
|
|
48
|
+
const diff = Math.abs(cumChars - target);
|
|
49
|
+
if (diff < bestDiff) {
|
|
50
|
+
bestDiff = diff;
|
|
51
|
+
bestSplit = i + 1;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return [
|
|
55
|
+
new Line({ words: words.slice(0, bestSplit) }),
|
|
56
|
+
...this.splitRecursive(words.slice(bestSplit), linesLeft - 1),
|
|
57
|
+
];
|
|
58
|
+
}
|
|
59
|
+
adjustToMinLines(lines) {
|
|
60
|
+
const { minLines } = this._config;
|
|
61
|
+
while (lines.length < minLines) {
|
|
62
|
+
let longestIdx = 0;
|
|
63
|
+
for (let i = 1; i < lines.length; i++) {
|
|
64
|
+
if ((lines[i]?.words.length ?? 0) > (lines[longestIdx]?.words.length ?? 0)) {
|
|
65
|
+
longestIdx = i;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
const longest = lines[longestIdx];
|
|
69
|
+
if (!longest || longest.words.length <= 1)
|
|
70
|
+
break;
|
|
71
|
+
const mid = Math.floor(longest.words.length / 2);
|
|
72
|
+
const first = new Line({ words: [...longest.words].slice(0, mid) });
|
|
73
|
+
const second = new Line({ words: [...longest.words].slice(mid) });
|
|
74
|
+
lines.splice(longestIdx, 1, first, second);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
charCount(words) {
|
|
78
|
+
return words.reduce((sum, w, i) => sum + w.text.length + (i > 0 ? 1 : 0), 0);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=BalancedLineSplitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BalancedLineSplitter.js","sourceRoot":"","sources":["../../../src/modules/splitting/BalancedLineSplitter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { LineSplitter } from '../splitting/LineSplitter';
|
|
2
|
+
import { Segment } from '../document/Segment';
|
|
3
|
+
import type { TextMeasurer } from '../splitting/TextMeasurer';
|
|
4
|
+
export interface BalancedPixelWidthLineSplitterConfig {
|
|
5
|
+
maxLines: number;
|
|
6
|
+
minLines: number;
|
|
7
|
+
maxWidth: number;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Greedy first pass picks the minimum number of lines that fit `maxWidth`,
|
|
11
|
+
* then a recursive split balances widths across that target. Width queries
|
|
12
|
+
* are delegated to a `TextMeasurer`, so this class stays purely arithmetic
|
|
13
|
+
* and the consumer chooses how widths are resolved (DOM probe, canvas,
|
|
14
|
+
* lookup, etc.).
|
|
15
|
+
*/
|
|
16
|
+
export declare class BalancedPixelWidthLineSplitter implements LineSplitter {
|
|
17
|
+
private readonly _config;
|
|
18
|
+
private readonly _measurer;
|
|
19
|
+
constructor(_config: BalancedPixelWidthLineSplitterConfig, _measurer: TextMeasurer);
|
|
20
|
+
split(segments: ReadonlyArray<Segment>): Segment[];
|
|
21
|
+
private buildMeasurements;
|
|
22
|
+
/**
|
|
23
|
+
* Width of `words[a..b]` (inclusive, in original segment indices) rendered
|
|
24
|
+
* alone on a line: sum of word widths plus one inter-word gap per pair.
|
|
25
|
+
*/
|
|
26
|
+
private rangeWidth;
|
|
27
|
+
private buildLines;
|
|
28
|
+
private splitRecursive;
|
|
29
|
+
private adjustToMinLines;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=BalancedPixelWidthLineSplitter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BalancedPixelWidthLineSplitter.d.ts","sourceRoot":"","sources":["../../../src/modules/splitting/BalancedPixelWidthLineSplitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAGpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAEpE,MAAM,WAAW,oCAAoC;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAeD;;;;;;GAMG;AACH,qBAAa,8BAA+B,YAAW,YAAY;IAE/D,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBADT,OAAO,EAAE,oCAAoC,EAC7C,SAAS,EAAE,YAAY;IAG1C,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,OAAO,EAAE;IAWlD,OAAO,CAAC,iBAAiB;IASzB;;;OAGG;IACH,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,UAAU;IAoBlB,OAAO,CAAC,cAAc;IA0BtB,OAAO,CAAC,gBAAgB;CAiBzB"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { Line } from '../document/Line';
|
|
2
|
+
/**
|
|
3
|
+
* Greedy first pass picks the minimum number of lines that fit `maxWidth`,
|
|
4
|
+
* then a recursive split balances widths across that target. Width queries
|
|
5
|
+
* are delegated to a `TextMeasurer`, so this class stays purely arithmetic
|
|
6
|
+
* and the consumer chooses how widths are resolved (DOM probe, canvas,
|
|
7
|
+
* lookup, etc.).
|
|
8
|
+
*/
|
|
9
|
+
export class BalancedPixelWidthLineSplitter {
|
|
10
|
+
_config;
|
|
11
|
+
_measurer;
|
|
12
|
+
constructor(_config, _measurer) {
|
|
13
|
+
this._config = _config;
|
|
14
|
+
this._measurer = _measurer;
|
|
15
|
+
}
|
|
16
|
+
split(segments) {
|
|
17
|
+
return segments.map((segment) => {
|
|
18
|
+
const words = segment.getWords();
|
|
19
|
+
if (words.length === 0)
|
|
20
|
+
return segment;
|
|
21
|
+
const m = this.buildMeasurements(words);
|
|
22
|
+
const lines = this.buildLines(words, m);
|
|
23
|
+
this.adjustToMinLines(lines);
|
|
24
|
+
return segment.with({ lines });
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
buildMeasurements(words) {
|
|
28
|
+
const prefixSums = new Array(words.length + 1);
|
|
29
|
+
prefixSums[0] = 0;
|
|
30
|
+
for (let i = 0; i < words.length; i++) {
|
|
31
|
+
prefixSums[i + 1] = prefixSums[i] + this._measurer.measure(words[i].text);
|
|
32
|
+
}
|
|
33
|
+
return { wordWidthPrefixSums: prefixSums, spaceWidth: this._measurer.spaceWidth() };
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Width of `words[a..b]` (inclusive, in original segment indices) rendered
|
|
37
|
+
* alone on a line: sum of word widths plus one inter-word gap per pair.
|
|
38
|
+
*/
|
|
39
|
+
rangeWidth(m, a, b) {
|
|
40
|
+
return m.wordWidthPrefixSums[b + 1] - m.wordWidthPrefixSums[a] + (b - a) * m.spaceWidth;
|
|
41
|
+
}
|
|
42
|
+
buildLines(words, m) {
|
|
43
|
+
const { maxLines } = this._config;
|
|
44
|
+
// Greedy pass to find the minimum number of lines needed
|
|
45
|
+
let linesNeeded = 1;
|
|
46
|
+
let lineStart = 0;
|
|
47
|
+
for (let i = 1; i < words.length; i++) {
|
|
48
|
+
const width = this.rangeWidth(m, lineStart, i);
|
|
49
|
+
if (width > this._config.maxWidth && i > lineStart) {
|
|
50
|
+
linesNeeded++;
|
|
51
|
+
lineStart = i;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
const targetLines = Math.min(linesNeeded, maxLines);
|
|
55
|
+
if (targetLines <= 1)
|
|
56
|
+
return [new Line({ words })];
|
|
57
|
+
return this.splitRecursive(words, targetLines, m, 0);
|
|
58
|
+
}
|
|
59
|
+
splitRecursive(words, linesLeft, m, offset) {
|
|
60
|
+
if (linesLeft <= 1 || words.length === 0) {
|
|
61
|
+
return words.length > 0 ? [new Line({ words })] : [];
|
|
62
|
+
}
|
|
63
|
+
const totalWidth = this.rangeWidth(m, offset, offset + words.length - 1);
|
|
64
|
+
const target = totalWidth / linesLeft;
|
|
65
|
+
let bestSplit = 1;
|
|
66
|
+
let bestDiff = Infinity;
|
|
67
|
+
for (let i = 0; i < words.length - 1; i++) {
|
|
68
|
+
const cumWidth = this.rangeWidth(m, offset, offset + i);
|
|
69
|
+
const diff = Math.abs(cumWidth - target);
|
|
70
|
+
if (diff < bestDiff) {
|
|
71
|
+
bestDiff = diff;
|
|
72
|
+
bestSplit = i + 1;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return [
|
|
76
|
+
new Line({ words: words.slice(0, bestSplit) }),
|
|
77
|
+
...this.splitRecursive(words.slice(bestSplit), linesLeft - 1, m, offset + bestSplit),
|
|
78
|
+
];
|
|
79
|
+
}
|
|
80
|
+
adjustToMinLines(lines) {
|
|
81
|
+
const { minLines } = this._config;
|
|
82
|
+
while (lines.length < minLines) {
|
|
83
|
+
let longestIdx = 0;
|
|
84
|
+
for (let i = 1; i < lines.length; i++) {
|
|
85
|
+
if ((lines[i]?.words.length ?? 0) > (lines[longestIdx]?.words.length ?? 0)) {
|
|
86
|
+
longestIdx = i;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
const longest = lines[longestIdx];
|
|
90
|
+
if (!longest || longest.words.length <= 1)
|
|
91
|
+
break;
|
|
92
|
+
const mid = Math.floor(longest.words.length / 2);
|
|
93
|
+
const first = new Line({ words: [...longest.words].slice(0, mid) });
|
|
94
|
+
const second = new Line({ words: [...longest.words].slice(mid) });
|
|
95
|
+
lines.splice(longestIdx, 1, first, second);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=BalancedPixelWidthLineSplitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BalancedPixelWidthLineSplitter.js","sourceRoot":"","sources":["../../../src/modules/splitting/BalancedPixelWidthLineSplitter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAuB9C;;;;;;GAMG;AACH,MAAM,OAAO,8BAA8B;IAEtB;IACA;IAFnB,YACmB,OAA6C,EAC7C,SAAuB;QADvB,YAAO,GAAP,OAAO,CAAsC;QAC7C,cAAS,GAAT,SAAS,CAAc;IACvC,CAAC;IAEJ,KAAK,CAAC,QAAgC;QACpC,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;YACjC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,OAAO,CAAC;YACvC,MAAM,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACxC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACxC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAC7B,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,iBAAiB,CAAC,KAAa;QACrC,MAAM,UAAU,GAAG,IAAI,KAAK,CAAS,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACvD,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC;QAC9E,CAAC;QACD,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,CAAC;IACtF,CAAC;IAED;;;OAGG;IACK,UAAU,CAAC,CAAsB,EAAE,CAAS,EAAE,CAAS;QAC7D,OAAO,CAAC,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAE,GAAG,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC;IAC5F,CAAC;IAEO,UAAU,CAAC,KAAa,EAAE,CAAsB;QACtD,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAElC,yDAAyD;QACzD,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;YAC/C,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,GAAG,SAAS,EAAE,CAAC;gBACnD,WAAW,EAAE,CAAC;gBACd,SAAS,GAAG,CAAC,CAAC;YAChB,CAAC;QACH,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACpD,IAAI,WAAW,IAAI,CAAC;YAAE,OAAO,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QAEnD,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACvD,CAAC;IAEO,cAAc,CAAC,KAAa,EAAE,SAAiB,EAAE,CAAsB,EAAE,MAAc;QAC7F,IAAI,SAAS,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzC,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACzE,MAAM,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;QAEtC,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,QAAQ,GAAG,QAAQ,CAAC;QAExB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC;YACxD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC;YACzC,IAAI,IAAI,GAAG,QAAQ,EAAE,CAAC;gBACpB,QAAQ,GAAG,IAAI,CAAC;gBAChB,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;QAED,OAAO;YACL,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC;YAC9C,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;SACrF,CAAC;IACJ,CAAC;IAEO,gBAAgB,CAAC,KAAa;QACpC,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;QAClC,OAAO,KAAK,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;YAC/B,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC;oBAC3E,UAAU,GAAG,CAAC,CAAC;gBACjB,CAAC;YACH,CAAC;YACD,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;YAClC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC;gBAAE,MAAM;YACjD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACjD,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACpE,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClE,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { SegmentSplitter } from '../splitting/SegmentSplitter';
|
|
2
|
+
import { Segment } from '../document/Segment';
|
|
3
|
+
export interface BoundaryConfig {
|
|
4
|
+
separators: string[];
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Splits segments at hard boundary characters (e.g. sentence-ending
|
|
8
|
+
* punctuation, optional clause separators). Boundaries chosen here are
|
|
9
|
+
* never crossed by downstream segment splitters, so this step decides
|
|
10
|
+
* which punctuation acts as a "do not merge across" marker. Operates on
|
|
11
|
+
* the segments of a single Section.
|
|
12
|
+
*/
|
|
13
|
+
export declare class BoundarySegmentSplitter implements SegmentSplitter {
|
|
14
|
+
private readonly _separators;
|
|
15
|
+
constructor(config: BoundaryConfig);
|
|
16
|
+
split(segments: ReadonlyArray<Segment>): Segment[];
|
|
17
|
+
private splitSegment;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=BoundarySegmentSplitter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BoundarySegmentSplitter.d.ts","sourceRoot":"","sources":["../../../src/modules/splitting/BoundarySegmentSplitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAGpD,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;;;;GAMG;AACH,qBAAa,uBAAwB,YAAW,eAAe;IAC7D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsB;gBAEtC,MAAM,EAAE,cAAc;IAIlC,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,OAAO,EAAE;IAIlD,OAAO,CAAC,YAAY;CAsBrB"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Segment } from '../document/Segment';
|
|
2
|
+
import { Line } from '../document/Line';
|
|
3
|
+
/**
|
|
4
|
+
* Splits segments at hard boundary characters (e.g. sentence-ending
|
|
5
|
+
* punctuation, optional clause separators). Boundaries chosen here are
|
|
6
|
+
* never crossed by downstream segment splitters, so this step decides
|
|
7
|
+
* which punctuation acts as a "do not merge across" marker. Operates on
|
|
8
|
+
* the segments of a single Section.
|
|
9
|
+
*/
|
|
10
|
+
export class BoundarySegmentSplitter {
|
|
11
|
+
_separators;
|
|
12
|
+
constructor(config) {
|
|
13
|
+
this._separators = new Set(config.separators);
|
|
14
|
+
}
|
|
15
|
+
split(segments) {
|
|
16
|
+
return segments.flatMap((segment) => this.splitSegment(segment));
|
|
17
|
+
}
|
|
18
|
+
splitSegment(segment) {
|
|
19
|
+
if (this._separators.size === 0)
|
|
20
|
+
return [segment];
|
|
21
|
+
const words = segment.getWords();
|
|
22
|
+
const result = [];
|
|
23
|
+
let currentChunk = [];
|
|
24
|
+
for (const word of words) {
|
|
25
|
+
currentChunk.push(word);
|
|
26
|
+
const endsWithSeparator = Array.from(this._separators).some((sep) => word.text.endsWith(sep));
|
|
27
|
+
if (endsWithSeparator) {
|
|
28
|
+
result.push(new Segment({ lines: [new Line({ words: currentChunk })] }));
|
|
29
|
+
currentChunk = [];
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (currentChunk.length > 0) {
|
|
33
|
+
result.push(new Segment({ lines: [new Line({ words: currentChunk })] }));
|
|
34
|
+
}
|
|
35
|
+
return result.length > 0 ? result : [segment];
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=BoundarySegmentSplitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BoundarySegmentSplitter.js","sourceRoot":"","sources":["../../../src/modules/splitting/BoundarySegmentSplitter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAM9C;;;;;;GAMG;AACH,MAAM,OAAO,uBAAuB;IACjB,WAAW,CAAsB;IAElD,YAAY,MAAsB;QAChC,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,QAAgC;QACpC,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IACnE,CAAC;IAEO,YAAY,CAAC,OAAgB;QACnC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAElD,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QACjC,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,IAAI,YAAY,GAAiB,EAAE,CAAC;QAEpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9F,IAAI,iBAAiB,EAAE,CAAC;gBACtB,MAAM,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACzE,YAAY,GAAG,EAAE,CAAC;YACpB,CAAC;QACH,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3E,CAAC;QAED,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;CACF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { SegmentSplitter } from '../splitting/SegmentSplitter';
|
|
2
|
+
import type { Segment } from '../document/Segment';
|
|
3
|
+
export declare class CompositeSegmentSplitter implements SegmentSplitter {
|
|
4
|
+
private readonly _splitters;
|
|
5
|
+
constructor(_splitters: ReadonlyArray<SegmentSplitter>);
|
|
6
|
+
split(segments: ReadonlyArray<Segment>): Segment[];
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=CompositeSegmentSplitter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CompositeSegmentSplitter.d.ts","sourceRoot":"","sources":["../../../src/modules/splitting/CompositeSegmentSplitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAIzD,qBAAa,wBAAyB,YAAW,eAAe;IAClD,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,aAAa,CAAC,eAAe,CAAC;IAEvE,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,OAAO,EAAE;CAMnD"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// Chains multiple SegmentSplitters in sequence. The output of each splitter
|
|
2
|
+
// is fed as input to the next.
|
|
3
|
+
export class CompositeSegmentSplitter {
|
|
4
|
+
_splitters;
|
|
5
|
+
constructor(_splitters) {
|
|
6
|
+
this._splitters = _splitters;
|
|
7
|
+
}
|
|
8
|
+
split(segments) {
|
|
9
|
+
return this._splitters.reduce((segs, splitter) => splitter.split(segs), [...segments]);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=CompositeSegmentSplitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CompositeSegmentSplitter.js","sourceRoot":"","sources":["../../../src/modules/splitting/CompositeSegmentSplitter.ts"],"names":[],"mappings":"AAGA,4EAA4E;AAC5E,+BAA+B;AAC/B,MAAM,OAAO,wBAAwB;IACN;IAA7B,YAA6B,UAA0C;QAA1C,eAAU,GAAV,UAAU,CAAgC;IAAG,CAAC;IAE3E,KAAK,CAAC,QAAgC;QACpC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAC3B,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EACxC,CAAC,GAAG,QAAQ,CAAC,CACd,CAAC;IACJ,CAAC;CACF"}
|