@tscaps/engine 0.2.1 → 0.3.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 +47 -7
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/modules/bidi/BidiAnalyzer.d.ts +23 -0
- package/dist/modules/bidi/BidiAnalyzer.d.ts.map +1 -0
- package/dist/modules/bidi/BidiAnalyzer.js +2 -0
- package/dist/modules/bidi/BidiAnalyzer.js.map +1 -0
- package/dist/modules/bidi/BidiCharacterClassifier.d.ts +13 -0
- package/dist/modules/bidi/BidiCharacterClassifier.d.ts.map +1 -0
- package/dist/modules/bidi/BidiCharacterClassifier.js +2 -0
- package/dist/modules/bidi/BidiCharacterClassifier.js.map +1 -0
- package/dist/modules/bidi/BidiJsAnalyzer.d.ts +14 -0
- package/dist/modules/bidi/BidiJsAnalyzer.d.ts.map +1 -0
- package/dist/modules/bidi/BidiJsAnalyzer.js +19 -0
- package/dist/modules/bidi/BidiJsAnalyzer.js.map +1 -0
- package/dist/modules/bidi/BidiJsCharacterClassifier.d.ts +8 -0
- package/dist/modules/bidi/BidiJsCharacterClassifier.d.ts.map +1 -0
- package/dist/modules/bidi/BidiJsCharacterClassifier.js +19 -0
- package/dist/modules/bidi/BidiJsCharacterClassifier.js.map +1 -0
- package/dist/modules/bidi/CursiveScriptDetector.d.ts +12 -0
- package/dist/modules/bidi/CursiveScriptDetector.d.ts.map +1 -0
- package/dist/modules/bidi/CursiveScriptDetector.js +20 -0
- package/dist/modules/bidi/CursiveScriptDetector.js.map +1 -0
- package/dist/modules/bidi/HorizontalSide.d.ts +18 -0
- package/dist/modules/bidi/HorizontalSide.d.ts.map +1 -0
- package/dist/modules/bidi/HorizontalSide.js +3 -0
- package/dist/modules/bidi/HorizontalSide.js.map +1 -0
- package/dist/modules/bidi/HorizontalSideResolver.d.ts +21 -0
- package/dist/modules/bidi/HorizontalSideResolver.d.ts.map +1 -0
- package/dist/modules/bidi/HorizontalSideResolver.js +27 -0
- package/dist/modules/bidi/HorizontalSideResolver.js.map +1 -0
- package/dist/modules/bidi/StrongCharacterMajorityTextDirectionDetector.d.ts +24 -0
- package/dist/modules/bidi/StrongCharacterMajorityTextDirectionDetector.d.ts.map +1 -0
- package/dist/modules/bidi/StrongCharacterMajorityTextDirectionDetector.js +34 -0
- package/dist/modules/bidi/StrongCharacterMajorityTextDirectionDetector.js.map +1 -0
- package/dist/modules/bidi/TextDirection.d.ts +9 -0
- package/dist/modules/bidi/TextDirection.d.ts.map +1 -0
- package/dist/modules/bidi/TextDirection.js +2 -0
- package/dist/modules/bidi/TextDirection.js.map +1 -0
- package/dist/modules/bidi/TextDirectionDetector.d.ts +12 -0
- package/dist/modules/bidi/TextDirectionDetector.d.ts.map +1 -0
- package/dist/modules/bidi/TextDirectionDetector.js +2 -0
- package/dist/modules/bidi/TextDirectionDetector.js.map +1 -0
- package/dist/modules/bidi/WordFragment.d.ts +34 -0
- package/dist/modules/bidi/WordFragment.d.ts.map +1 -0
- package/dist/modules/bidi/WordFragment.js +2 -0
- package/dist/modules/bidi/WordFragment.js.map +1 -0
- package/dist/modules/bidi/WordFragmenter.d.ts +43 -0
- package/dist/modules/bidi/WordFragmenter.d.ts.map +1 -0
- package/dist/modules/bidi/WordFragmenter.js +112 -0
- package/dist/modules/bidi/WordFragmenter.js.map +1 -0
- package/dist/modules/bidi/index.d.ts +14 -0
- package/dist/modules/bidi/index.d.ts.map +1 -0
- package/dist/modules/bidi/index.js +8 -0
- package/dist/modules/bidi/index.js.map +1 -0
- package/dist/modules/css/CssBlockSealer.d.ts +30 -0
- package/dist/modules/css/CssBlockSealer.d.ts.map +1 -0
- package/dist/modules/css/CssBlockSealer.js +64 -0
- package/dist/modules/css/CssBlockSealer.js.map +1 -0
- package/dist/modules/css/CssCustomPropertyDefinitionScanner.d.ts +13 -0
- package/dist/modules/css/CssCustomPropertyDefinitionScanner.d.ts.map +1 -0
- package/dist/modules/css/CssCustomPropertyDefinitionScanner.js +24 -0
- package/dist/modules/css/CssCustomPropertyDefinitionScanner.js.map +1 -0
- package/dist/modules/css/CssFilterReferenceScanner.d.ts +15 -0
- package/dist/modules/css/CssFilterReferenceScanner.d.ts.map +1 -0
- package/dist/modules/css/CssFilterReferenceScanner.js +22 -0
- package/dist/modules/css/CssFilterReferenceScanner.js.map +1 -0
- package/dist/modules/css/CssFragmentParser.d.ts +53 -0
- package/dist/modules/css/CssFragmentParser.d.ts.map +1 -0
- package/dist/modules/css/CssFragmentParser.js +127 -0
- package/dist/modules/css/CssFragmentParser.js.map +1 -0
- package/dist/modules/css/CssKeyframeNamespacer.d.ts +21 -0
- package/dist/modules/css/CssKeyframeNamespacer.d.ts.map +1 -0
- package/dist/modules/css/CssKeyframeNamespacer.js +48 -0
- package/dist/modules/css/CssKeyframeNamespacer.js.map +1 -0
- package/dist/modules/css/CssKeyframesScanner.d.ts +29 -0
- package/dist/modules/css/CssKeyframesScanner.d.ts.map +1 -0
- package/dist/modules/css/CssKeyframesScanner.js +102 -0
- package/dist/modules/css/CssKeyframesScanner.js.map +1 -0
- package/dist/modules/css/CssLayer.d.ts +20 -0
- package/dist/modules/css/CssLayer.d.ts.map +1 -0
- package/dist/modules/css/CssLayer.js +21 -0
- package/dist/modules/css/CssLayer.js.map +1 -0
- package/dist/modules/css/CssScoper.d.ts +11 -2
- package/dist/modules/css/CssScoper.d.ts.map +1 -1
- package/dist/modules/css/CssScoper.js +53 -37
- package/dist/modules/css/CssScoper.js.map +1 -1
- package/dist/modules/css/CssSelectorClassScanner.d.ts +25 -0
- package/dist/modules/css/CssSelectorClassScanner.d.ts.map +1 -0
- package/dist/modules/css/CssSelectorClassScanner.js +91 -0
- package/dist/modules/css/CssSelectorClassScanner.js.map +1 -0
- package/dist/modules/css/CssVarReferenceScanner.d.ts +8 -5
- package/dist/modules/css/CssVarReferenceScanner.d.ts.map +1 -1
- package/dist/modules/css/CssVarReferenceScanner.js +14 -7
- package/dist/modules/css/CssVarReferenceScanner.js.map +1 -1
- package/dist/modules/css/index.d.ts +8 -0
- package/dist/modules/css/index.d.ts.map +1 -1
- package/dist/modules/css/index.js +8 -0
- package/dist/modules/css/index.js.map +1 -1
- package/dist/modules/document/CssClass.d.ts +20 -0
- package/dist/modules/document/CssClass.d.ts.map +1 -0
- package/dist/modules/document/CssClass.js +21 -0
- package/dist/modules/document/CssClass.js.map +1 -0
- package/dist/modules/document/CssVariable.d.ts +0 -6
- package/dist/modules/document/CssVariable.d.ts.map +1 -1
- package/dist/modules/document/CssVariable.js +0 -6
- package/dist/modules/document/CssVariable.js.map +1 -1
- package/dist/modules/document/DataAttribute.d.ts +26 -0
- package/dist/modules/document/DataAttribute.d.ts.map +1 -0
- package/dist/modules/document/DataAttribute.js +27 -0
- package/dist/modules/document/DataAttribute.js.map +1 -0
- package/dist/modules/document/DocumentEditor.d.ts +40 -9
- package/dist/modules/document/DocumentEditor.d.ts.map +1 -1
- package/dist/modules/document/DocumentEditor.js +69 -17
- package/dist/modules/document/DocumentEditor.js.map +1 -1
- package/dist/modules/document/DocumentNodeId.d.ts +23 -0
- package/dist/modules/document/DocumentNodeId.d.ts.map +1 -0
- package/dist/modules/document/DocumentNodeId.js +31 -0
- package/dist/modules/document/DocumentNodeId.js.map +1 -0
- package/dist/modules/document/Line.d.ts +1 -1
- package/dist/modules/document/Line.d.ts.map +1 -1
- package/dist/modules/document/Line.js +2 -1
- package/dist/modules/document/Line.js.map +1 -1
- package/dist/modules/document/Section.d.ts +1 -4
- package/dist/modules/document/Section.d.ts.map +1 -1
- package/dist/modules/document/Section.js +2 -17
- package/dist/modules/document/Section.js.map +1 -1
- package/dist/modules/document/Segment.d.ts +14 -7
- package/dist/modules/document/Segment.d.ts.map +1 -1
- package/dist/modules/document/Segment.js +26 -1
- package/dist/modules/document/Segment.js.map +1 -1
- package/dist/modules/document/Word.d.ts +1 -1
- package/dist/modules/document/Word.d.ts.map +1 -1
- package/dist/modules/document/Word.js +2 -1
- package/dist/modules/document/Word.js.map +1 -1
- package/dist/modules/document/index.d.ts +4 -2
- package/dist/modules/document/index.d.ts.map +1 -1
- package/dist/modules/document/index.js +3 -1
- package/dist/modules/document/index.js.map +1 -1
- package/dist/modules/effect/GapFreeEffect.d.ts +15 -0
- package/dist/modules/effect/GapFreeEffect.d.ts.map +1 -1
- package/dist/modules/effect/GapFreeEffect.js +29 -4
- package/dist/modules/effect/GapFreeEffect.js.map +1 -1
- package/dist/modules/pipeline/RenderPipelineBuilder.js +3 -3
- package/dist/modules/pipeline/RenderPipelineBuilder.js.map +1 -1
- package/dist/modules/rendering/BrowserSubtitleFrameRenderer.d.ts.map +1 -1
- package/dist/modules/rendering/BrowserSubtitleFrameRenderer.js +4 -1
- package/dist/modules/rendering/BrowserSubtitleFrameRenderer.js.map +1 -1
- package/dist/modules/rendering/HorizontalPlacementResolver.d.ts +27 -0
- package/dist/modules/rendering/HorizontalPlacementResolver.d.ts.map +1 -0
- package/dist/modules/rendering/HorizontalPlacementResolver.js +31 -0
- package/dist/modules/rendering/HorizontalPlacementResolver.js.map +1 -0
- package/dist/modules/rendering/SubtitleFrameRenderer.d.ts +2 -0
- package/dist/modules/rendering/SubtitleFrameRenderer.d.ts.map +1 -1
- package/dist/modules/rendering/index.d.ts +7 -4
- 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 +19 -1
- package/dist/modules/rendering/styles/BaselineCssComposer.d.ts.map +1 -1
- package/dist/modules/rendering/styles/BaselineCssComposer.js +32 -8
- package/dist/modules/rendering/styles/BaselineCssComposer.js.map +1 -1
- package/dist/modules/rendering/styles/DecorationContainerBaselineCss.d.ts.map +1 -1
- package/dist/modules/rendering/styles/DecorationContainerBaselineCss.js +5 -4
- package/dist/modules/rendering/styles/DecorationContainerBaselineCss.js.map +1 -1
- package/dist/modules/rendering/styles/FrozenFrameCss.d.ts +28 -0
- package/dist/modules/rendering/styles/FrozenFrameCss.d.ts.map +1 -0
- package/dist/modules/rendering/styles/FrozenFrameCss.js +28 -0
- package/dist/modules/rendering/styles/FrozenFrameCss.js.map +1 -0
- package/dist/modules/rendering/styles/InlineStyleEmitter.d.ts +0 -7
- package/dist/modules/rendering/styles/InlineStyleEmitter.d.ts.map +1 -1
- package/dist/modules/rendering/styles/InlineStyleEmitter.js +0 -9
- package/dist/modules/rendering/styles/InlineStyleEmitter.js.map +1 -1
- package/dist/modules/rendering/styles/{VideoFrameLayerClass.d.ts → VideoFrameLayerBaselineCss.d.ts} +3 -10
- package/dist/modules/rendering/styles/VideoFrameLayerBaselineCss.d.ts.map +1 -0
- package/dist/modules/rendering/styles/VideoFrameLayerBaselineCss.js +15 -0
- package/dist/modules/rendering/styles/VideoFrameLayerBaselineCss.js.map +1 -0
- package/dist/modules/rendering/subtitle/ActiveRenderSessionFactory.d.ts +3 -1
- package/dist/modules/rendering/subtitle/ActiveRenderSessionFactory.d.ts.map +1 -1
- package/dist/modules/rendering/subtitle/ActiveRenderSessionFactory.js +9 -4
- package/dist/modules/rendering/subtitle/ActiveRenderSessionFactory.js.map +1 -1
- package/dist/modules/rendering/subtitle/AnimationProbe.d.ts +23 -9
- package/dist/modules/rendering/subtitle/AnimationProbe.d.ts.map +1 -1
- package/dist/modules/rendering/subtitle/AnimationProbe.js +86 -81
- package/dist/modules/rendering/subtitle/AnimationProbe.js.map +1 -1
- package/dist/modules/rendering/subtitle/BatchPlanner.d.ts +1 -0
- package/dist/modules/rendering/subtitle/BatchPlanner.d.ts.map +1 -1
- package/dist/modules/rendering/subtitle/BatchPlanner.js +16 -14
- package/dist/modules/rendering/subtitle/BatchPlanner.js.map +1 -1
- package/dist/modules/rendering/subtitle/PreparedStyle.d.ts +1 -0
- package/dist/modules/rendering/subtitle/PreparedStyle.d.ts.map +1 -1
- package/dist/modules/rendering/subtitle/PreparedStyleFactory.js +1 -1
- package/dist/modules/rendering/subtitle/PreparedStyleFactory.js.map +1 -1
- package/dist/modules/rendering/subtitle/SegmentPaintRegionResolver.d.ts.map +1 -1
- package/dist/modules/rendering/subtitle/SegmentPaintRegionResolver.js +7 -4
- package/dist/modules/rendering/subtitle/SegmentPaintRegionResolver.js.map +1 -1
- package/dist/modules/rendering/subtitle/SegmentSubtreeHtmlBuilder.d.ts +30 -2
- package/dist/modules/rendering/subtitle/SegmentSubtreeHtmlBuilder.d.ts.map +1 -1
- package/dist/modules/rendering/subtitle/SegmentSubtreeHtmlBuilder.js +85 -27
- package/dist/modules/rendering/subtitle/SegmentSubtreeHtmlBuilder.js.map +1 -1
- package/dist/modules/rendering/subtitle/SegmentWrapperRenderer.d.ts +3 -8
- package/dist/modules/rendering/subtitle/SegmentWrapperRenderer.d.ts.map +1 -1
- package/dist/modules/rendering/subtitle/SegmentWrapperRenderer.js +31 -40
- package/dist/modules/rendering/subtitle/SegmentWrapperRenderer.js.map +1 -1
- package/dist/modules/rendering/subtitle/SpriteSheetCompositor.d.ts +2 -0
- package/dist/modules/rendering/subtitle/SpriteSheetCompositor.d.ts.map +1 -1
- package/dist/modules/rendering/subtitle/SpriteSheetCompositor.js +18 -9
- package/dist/modules/rendering/subtitle/SpriteSheetCompositor.js.map +1 -1
- package/dist/modules/rendering/subtitle/SvgFilterMaterializer.d.ts +8 -15
- package/dist/modules/rendering/subtitle/SvgFilterMaterializer.d.ts.map +1 -1
- package/dist/modules/rendering/subtitle/SvgFilterMaterializer.js +10 -20
- package/dist/modules/rendering/subtitle/SvgFilterMaterializer.js.map +1 -1
- package/dist/modules/rendering/subtitle/VideoFrameVarsBuilder.d.ts.map +1 -1
- package/dist/modules/rendering/subtitle/VideoFrameVarsBuilder.js +12 -3
- package/dist/modules/rendering/subtitle/VideoFrameVarsBuilder.js.map +1 -1
- package/dist/modules/rendering/types/AlignmentConfig.d.ts +16 -4
- package/dist/modules/rendering/types/AlignmentConfig.d.ts.map +1 -1
- package/dist/modules/rendering/types/AlignmentConfig.js +2 -1
- package/dist/modules/rendering/types/AlignmentConfig.js.map +1 -1
- package/dist/modules/rendering/types/ElementRenderOverrides.d.ts +8 -0
- package/dist/modules/rendering/types/ElementRenderOverrides.d.ts.map +1 -1
- package/dist/modules/rendering/types/ElementRenderOverrides.js +28 -0
- package/dist/modules/rendering/types/ElementRenderOverrides.js.map +1 -1
- package/dist/modules/rendering/types/RenderingConfig.d.ts +7 -2
- package/dist/modules/rendering/types/RenderingConfig.d.ts.map +1 -1
- package/dist/modules/rendering/types/ScopedRenderOverride.d.ts +9 -4
- package/dist/modules/rendering/types/ScopedRenderOverride.d.ts.map +1 -1
- package/dist/modules/subtitle-file/AssSubtitleFileSerializer.d.ts +53 -0
- package/dist/modules/subtitle-file/AssSubtitleFileSerializer.d.ts.map +1 -0
- package/dist/modules/subtitle-file/AssSubtitleFileSerializer.js +133 -0
- package/dist/modules/subtitle-file/AssSubtitleFileSerializer.js.map +1 -0
- package/dist/modules/subtitle-file/SbvSubtitleFileSerializer.d.ts +20 -0
- package/dist/modules/subtitle-file/SbvSubtitleFileSerializer.d.ts.map +1 -0
- package/dist/modules/subtitle-file/SbvSubtitleFileSerializer.js +31 -0
- package/dist/modules/subtitle-file/SbvSubtitleFileSerializer.js.map +1 -0
- package/dist/modules/subtitle-file/SrtSubtitleFileSerializer.d.ts +21 -0
- package/dist/modules/subtitle-file/SrtSubtitleFileSerializer.d.ts.map +1 -0
- package/dist/modules/subtitle-file/SrtSubtitleFileSerializer.js +33 -0
- package/dist/modules/subtitle-file/SrtSubtitleFileSerializer.js.map +1 -0
- package/dist/modules/subtitle-file/SubtitleCue.d.ts +18 -0
- package/dist/modules/subtitle-file/SubtitleCue.d.ts.map +1 -0
- package/dist/modules/subtitle-file/SubtitleCue.js +20 -0
- package/dist/modules/subtitle-file/SubtitleCue.js.map +1 -0
- package/dist/modules/subtitle-file/SubtitleCueBuilder.d.ts +38 -0
- package/dist/modules/subtitle-file/SubtitleCueBuilder.d.ts.map +1 -0
- package/dist/modules/subtitle-file/SubtitleCueBuilder.js +106 -0
- package/dist/modules/subtitle-file/SubtitleCueBuilder.js.map +1 -0
- package/dist/modules/subtitle-file/SubtitleFileJob.d.ts +17 -0
- package/dist/modules/subtitle-file/SubtitleFileJob.d.ts.map +1 -0
- package/dist/modules/subtitle-file/SubtitleFileJob.js +2 -0
- package/dist/modules/subtitle-file/SubtitleFileJob.js.map +1 -0
- package/dist/modules/subtitle-file/SubtitleFileSerializer.d.ts +36 -0
- package/dist/modules/subtitle-file/SubtitleFileSerializer.d.ts.map +1 -0
- package/dist/modules/subtitle-file/SubtitleFileSerializer.js +44 -0
- package/dist/modules/subtitle-file/SubtitleFileSerializer.js.map +1 -0
- package/dist/modules/subtitle-file/SubtitleGranularity.d.ts +11 -0
- package/dist/modules/subtitle-file/SubtitleGranularity.d.ts.map +1 -0
- package/dist/modules/subtitle-file/SubtitleGranularity.js +2 -0
- package/dist/modules/subtitle-file/SubtitleGranularity.js.map +1 -0
- package/dist/modules/subtitle-file/SubtitleRow.d.ts +11 -0
- package/dist/modules/subtitle-file/SubtitleRow.d.ts.map +1 -0
- package/dist/modules/subtitle-file/SubtitleRow.js +14 -0
- package/dist/modules/subtitle-file/SubtitleRow.js.map +1 -0
- package/dist/modules/subtitle-file/SubtitleToken.d.ts +13 -0
- package/dist/modules/subtitle-file/SubtitleToken.d.ts.map +1 -0
- package/dist/modules/subtitle-file/SubtitleToken.js +15 -0
- package/dist/modules/subtitle-file/SubtitleToken.js.map +1 -0
- package/dist/modules/subtitle-file/TextSubtitleFileSerializer.d.ts +19 -0
- package/dist/modules/subtitle-file/TextSubtitleFileSerializer.d.ts.map +1 -0
- package/dist/modules/subtitle-file/TextSubtitleFileSerializer.js +24 -0
- package/dist/modules/subtitle-file/TextSubtitleFileSerializer.js.map +1 -0
- package/dist/modules/subtitle-file/Timecode.d.ts +20 -0
- package/dist/modules/subtitle-file/Timecode.d.ts.map +1 -0
- package/dist/modules/subtitle-file/Timecode.js +32 -0
- package/dist/modules/subtitle-file/Timecode.js.map +1 -0
- package/dist/modules/subtitle-file/TtmlSubtitleFileSerializer.d.ts +22 -0
- package/dist/modules/subtitle-file/TtmlSubtitleFileSerializer.d.ts.map +1 -0
- package/dist/modules/subtitle-file/TtmlSubtitleFileSerializer.js +57 -0
- package/dist/modules/subtitle-file/TtmlSubtitleFileSerializer.js.map +1 -0
- package/dist/modules/subtitle-file/VttSubtitleFileSerializer.d.ts +21 -0
- package/dist/modules/subtitle-file/VttSubtitleFileSerializer.d.ts.map +1 -0
- package/dist/modules/subtitle-file/VttSubtitleFileSerializer.js +39 -0
- package/dist/modules/subtitle-file/VttSubtitleFileSerializer.js.map +1 -0
- package/dist/modules/subtitle-file/index.d.ts +10 -0
- package/dist/modules/subtitle-file/index.d.ts.map +1 -0
- package/dist/modules/subtitle-file/index.js +8 -0
- package/dist/modules/subtitle-file/index.js.map +1 -0
- package/dist/modules/svg-filter/SvgFilter.d.ts +8 -1
- package/dist/modules/svg-filter/SvgFilter.d.ts.map +1 -1
- package/dist/modules/svg-filter/SvgFilter.js +9 -1
- package/dist/modules/svg-filter/SvgFilter.js.map +1 -1
- package/dist/modules/svg-filter/SvgFilterDefinitionsParser.d.ts +1 -0
- package/dist/modules/svg-filter/SvgFilterDefinitionsParser.d.ts.map +1 -1
- package/dist/modules/svg-filter/SvgFilterDefinitionsParser.js +9 -1
- package/dist/modules/svg-filter/SvgFilterDefinitionsParser.js.map +1 -1
- package/dist/modules/svg-filter/SvgFilterDefsRenderer.d.ts +44 -0
- package/dist/modules/svg-filter/SvgFilterDefsRenderer.d.ts.map +1 -0
- package/dist/modules/svg-filter/SvgFilterDefsRenderer.js +47 -0
- package/dist/modules/svg-filter/SvgFilterDefsRenderer.js.map +1 -0
- package/dist/modules/svg-filter/index.d.ts +2 -0
- package/dist/modules/svg-filter/index.d.ts.map +1 -1
- package/dist/modules/svg-filter/index.js +1 -0
- package/dist/modules/svg-filter/index.js.map +1 -1
- package/dist/modules/tagging/PauseTagger.d.ts.map +1 -1
- package/dist/modules/tagging/PauseTagger.js +2 -1
- package/dist/modules/tagging/PauseTagger.js.map +1 -1
- package/dist/modules/tagging/RegexTagger.js +1 -1
- package/dist/modules/tagging/RegexTagger.js.map +1 -1
- package/dist/modules/tagging/SpanTagger.js +1 -1
- package/dist/modules/tagging/SpanTagger.js.map +1 -1
- package/dist/modules/tagging/StructureTagger.d.ts +0 -1
- package/dist/modules/tagging/StructureTagger.d.ts.map +1 -1
- package/dist/modules/tagging/StructureTagger.js +3 -8
- package/dist/modules/tagging/StructureTagger.js.map +1 -1
- package/dist/modules/tagging/WordlistTagger.js +1 -1
- package/dist/modules/tagging/WordlistTagger.js.map +1 -1
- package/dist/modules/tags/AndTagCondition.d.ts +10 -0
- package/dist/modules/tags/AndTagCondition.d.ts.map +1 -0
- package/dist/modules/tags/AndTagCondition.js +14 -0
- package/dist/modules/tags/AndTagCondition.js.map +1 -0
- package/dist/modules/tags/HasTagCondition.d.ts +10 -0
- package/dist/modules/tags/HasTagCondition.d.ts.map +1 -0
- package/dist/modules/tags/HasTagCondition.js +18 -0
- package/dist/modules/tags/HasTagCondition.js.map +1 -0
- package/dist/modules/tags/NotTagCondition.d.ts +10 -0
- package/dist/modules/tags/NotTagCondition.d.ts.map +1 -0
- package/dist/modules/tags/NotTagCondition.js +14 -0
- package/dist/modules/tags/NotTagCondition.js.map +1 -0
- package/dist/modules/tags/OrTagCondition.d.ts +10 -0
- package/dist/modules/tags/OrTagCondition.d.ts.map +1 -0
- package/dist/modules/tags/OrTagCondition.js +14 -0
- package/dist/modules/tags/OrTagCondition.js.map +1 -0
- package/dist/modules/{document/Tag.d.ts → tags/StructureTag.d.ts} +2 -11
- package/dist/modules/tags/StructureTag.d.ts.map +1 -0
- package/dist/modules/{document/Tag.js → tags/StructureTag.js} +1 -19
- package/dist/modules/tags/StructureTag.js.map +1 -0
- package/dist/modules/tags/Tag.d.ts +8 -0
- package/dist/modules/tags/Tag.d.ts.map +1 -0
- package/dist/modules/tags/Tag.js +16 -0
- package/dist/modules/tags/Tag.js.map +1 -0
- package/dist/modules/tags/TagCondition.d.ts +12 -0
- package/dist/modules/tags/TagCondition.d.ts.map +1 -0
- package/dist/modules/tags/TagCondition.js +2 -0
- package/dist/modules/tags/TagCondition.js.map +1 -0
- package/dist/modules/tags/TagConditionParser.d.ts +21 -0
- package/dist/modules/tags/TagConditionParser.d.ts.map +1 -0
- package/dist/modules/tags/TagConditionParser.js +75 -0
- package/dist/modules/tags/TagConditionParser.js.map +1 -0
- package/dist/modules/tags/index.d.ts +9 -0
- package/dist/modules/tags/index.d.ts.map +1 -0
- package/dist/modules/tags/index.js +8 -0
- package/dist/modules/tags/index.js.map +1 -0
- package/dist/modules/transcription/AudioDecoder.d.ts +9 -4
- package/dist/modules/transcription/AudioDecoder.d.ts.map +1 -1
- package/dist/modules/transcription/BatchedMonoResampler.d.ts +45 -0
- package/dist/modules/transcription/BatchedMonoResampler.d.ts.map +1 -0
- package/dist/modules/transcription/BatchedMonoResampler.js +116 -0
- package/dist/modules/transcription/BatchedMonoResampler.js.map +1 -0
- package/dist/modules/transcription/CacheStorageModelFileCache.d.ts +38 -0
- package/dist/modules/transcription/CacheStorageModelFileCache.d.ts.map +1 -0
- package/dist/modules/transcription/CacheStorageModelFileCache.js +86 -0
- package/dist/modules/transcription/CacheStorageModelFileCache.js.map +1 -0
- package/dist/modules/transcription/CueDocumentBuilder.d.ts +40 -0
- package/dist/modules/transcription/CueDocumentBuilder.d.ts.map +1 -0
- package/dist/modules/transcription/CueDocumentBuilder.js +77 -0
- package/dist/modules/transcription/CueDocumentBuilder.js.map +1 -0
- package/dist/modules/transcription/CueParseResult.d.ts +16 -0
- package/dist/modules/transcription/CueParseResult.d.ts.map +1 -0
- package/dist/modules/transcription/CueParseResult.js +2 -0
- package/dist/modules/transcription/CueParseResult.js.map +1 -0
- package/dist/modules/transcription/CueTextTokenizer.d.ts +10 -0
- package/dist/modules/transcription/CueTextTokenizer.d.ts.map +1 -0
- package/dist/modules/transcription/CueTextTokenizer.js +21 -0
- package/dist/modules/transcription/CueTextTokenizer.js.map +1 -0
- package/dist/modules/transcription/CueTimecodeReader.d.ts +19 -0
- package/dist/modules/transcription/CueTimecodeReader.d.ts.map +1 -0
- package/dist/modules/transcription/CueTimecodeReader.js +45 -0
- package/dist/modules/transcription/CueTimecodeReader.js.map +1 -0
- package/dist/modules/transcription/CueWordReader.d.ts +12 -0
- package/dist/modules/transcription/CueWordReader.d.ts.map +1 -0
- package/dist/modules/transcription/CueWordReader.js +2 -0
- package/dist/modules/transcription/CueWordReader.js.map +1 -0
- package/dist/modules/transcription/EstimatedCueWordReader.d.ts +16 -0
- package/dist/modules/transcription/EstimatedCueWordReader.d.ts.map +1 -0
- package/dist/modules/transcription/EstimatedCueWordReader.js +17 -0
- package/dist/modules/transcription/EstimatedCueWordReader.js.map +1 -0
- package/dist/modules/transcription/LogitsProcessorListFactory.d.ts +43 -0
- package/dist/modules/transcription/LogitsProcessorListFactory.d.ts.map +1 -0
- package/dist/modules/transcription/LogitsProcessorListFactory.js +72 -0
- package/dist/modules/transcription/LogitsProcessorListFactory.js.map +1 -0
- package/dist/modules/transcription/MediaBunnyAudioDecoder.d.ts +27 -0
- package/dist/modules/transcription/MediaBunnyAudioDecoder.d.ts.map +1 -0
- package/dist/modules/transcription/MediaBunnyAudioDecoder.js +76 -0
- package/dist/modules/transcription/MediaBunnyAudioDecoder.js.map +1 -0
- package/dist/modules/transcription/ModelFileCache.d.ts +20 -0
- package/dist/modules/transcription/ModelFileCache.d.ts.map +1 -0
- package/dist/modules/transcription/ModelFileCache.js +2 -0
- package/dist/modules/transcription/ModelFileCache.js.map +1 -0
- package/dist/modules/transcription/ModelFileCacheUnavailableError.d.ts +18 -0
- package/dist/modules/transcription/ModelFileCacheUnavailableError.d.ts.map +1 -0
- package/dist/modules/transcription/ModelFileCacheUnavailableError.js +18 -0
- package/dist/modules/transcription/ModelFileCacheUnavailableError.js.map +1 -0
- package/dist/modules/transcription/SrtTranscriber.d.ts +24 -15
- package/dist/modules/transcription/SrtTranscriber.d.ts.map +1 -1
- package/dist/modules/transcription/SrtTranscriber.js +32 -90
- package/dist/modules/transcription/SrtTranscriber.js.map +1 -1
- package/dist/modules/transcription/SubtitleFileUnreadableError.d.ts +22 -0
- package/dist/modules/transcription/SubtitleFileUnreadableError.d.ts.map +1 -0
- package/dist/modules/transcription/SubtitleFileUnreadableError.js +22 -0
- package/dist/modules/transcription/SubtitleFileUnreadableError.js.map +1 -0
- package/dist/modules/transcription/TimestampedCueWordReader.d.ts +27 -0
- package/dist/modules/transcription/TimestampedCueWordReader.d.ts.map +1 -0
- package/dist/modules/transcription/TimestampedCueWordReader.js +52 -0
- package/dist/modules/transcription/TimestampedCueWordReader.js.map +1 -0
- package/dist/modules/transcription/Transcriber.d.ts +13 -0
- package/dist/modules/transcription/Transcriber.d.ts.map +1 -1
- package/dist/modules/transcription/TransformersRuntime.d.ts +50 -0
- package/dist/modules/transcription/TransformersRuntime.d.ts.map +1 -0
- package/dist/modules/transcription/TransformersRuntime.js +79 -0
- package/dist/modules/transcription/TransformersRuntime.js.map +1 -0
- package/dist/modules/transcription/VttTranscriber.d.ts +25 -7
- package/dist/modules/transcription/VttTranscriber.d.ts.map +1 -1
- package/dist/modules/transcription/VttTranscriber.js +36 -15
- package/dist/modules/transcription/VttTranscriber.js.map +1 -1
- package/dist/modules/transcription/WhisperChunkStitcher.d.ts +51 -0
- package/dist/modules/transcription/WhisperChunkStitcher.d.ts.map +1 -0
- package/dist/modules/transcription/WhisperChunkStitcher.js +101 -0
- package/dist/modules/transcription/WhisperChunkStitcher.js.map +1 -0
- package/dist/modules/transcription/WhisperDeviceUnavailableError.d.ts +16 -0
- package/dist/modules/transcription/WhisperDeviceUnavailableError.d.ts.map +1 -0
- package/dist/modules/transcription/WhisperDeviceUnavailableError.js +16 -0
- package/dist/modules/transcription/WhisperDeviceUnavailableError.js.map +1 -0
- package/dist/modules/transcription/WhisperInferenceFailedError.d.ts +16 -0
- package/dist/modules/transcription/WhisperInferenceFailedError.d.ts.map +1 -0
- package/dist/modules/transcription/WhisperInferenceFailedError.js +16 -0
- package/dist/modules/transcription/WhisperInferenceFailedError.js.map +1 -0
- package/dist/modules/transcription/WhisperInferenceProgressTracker.d.ts +61 -0
- package/dist/modules/transcription/WhisperInferenceProgressTracker.d.ts.map +1 -0
- package/dist/modules/transcription/WhisperInferenceProgressTracker.js +102 -0
- package/dist/modules/transcription/WhisperInferenceProgressTracker.js.map +1 -0
- package/dist/modules/transcription/WhisperLoopAbortLogitsProcessor.d.ts +38 -0
- package/dist/modules/transcription/WhisperLoopAbortLogitsProcessor.d.ts.map +1 -0
- package/dist/modules/transcription/WhisperLoopAbortLogitsProcessor.js +94 -0
- package/dist/modules/transcription/WhisperLoopAbortLogitsProcessor.js.map +1 -0
- package/dist/modules/transcription/WhisperModelLoadFailedError.d.ts +15 -0
- package/dist/modules/transcription/WhisperModelLoadFailedError.d.ts.map +1 -0
- package/dist/modules/transcription/WhisperModelLoadFailedError.js +15 -0
- package/dist/modules/transcription/WhisperModelLoadFailedError.js.map +1 -0
- package/dist/modules/transcription/WhisperTranscriber.d.ts +106 -7
- package/dist/modules/transcription/WhisperTranscriber.d.ts.map +1 -1
- package/dist/modules/transcription/WhisperTranscriber.js +312 -25
- package/dist/modules/transcription/WhisperTranscriber.js.map +1 -1
- package/dist/modules/transcription/WhisperWindowCoverage.d.ts +79 -0
- package/dist/modules/transcription/WhisperWindowCoverage.d.ts.map +1 -0
- package/dist/modules/transcription/WhisperWindowCoverage.js +129 -0
- package/dist/modules/transcription/WhisperWindowCoverage.js.map +1 -0
- package/dist/modules/transcription/WordTimingEstimator.d.ts +14 -0
- package/dist/modules/transcription/WordTimingEstimator.d.ts.map +1 -0
- package/dist/modules/transcription/WordTimingEstimator.js +33 -0
- package/dist/modules/transcription/WordTimingEstimator.js.map +1 -0
- package/dist/modules/transcription/index.d.ts +8 -2
- package/dist/modules/transcription/index.d.ts.map +1 -1
- package/dist/modules/transcription/index.js +5 -1
- package/dist/modules/transcription/index.js.map +1 -1
- package/dist/modules/video/mediabunny/MediaBunnyTranscodeCoordinator.d.ts.map +1 -1
- package/dist/modules/video/mediabunny/MediaBunnyTranscodeCoordinator.js +8 -0
- package/dist/modules/video/mediabunny/MediaBunnyTranscodeCoordinator.js.map +1 -1
- package/dist/modules/video/mediabunny/frame/CurrentFrameVideoSource.d.ts +3 -1
- package/dist/modules/video/mediabunny/frame/CurrentFrameVideoSource.d.ts.map +1 -1
- package/dist/modules/video/mediabunny/frame/CurrentFrameVideoSource.js +33 -23
- package/dist/modules/video/mediabunny/frame/CurrentFrameVideoSource.js.map +1 -1
- package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainter.js +1 -1
- package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainter.js.map +1 -1
- package/dist/modules/video/mediabunny/painter/TopLayerSource.d.ts +6 -7
- package/dist/modules/video/mediabunny/painter/TopLayerSource.d.ts.map +1 -1
- package/package.json +16 -10
- package/dist/modules/document/Tag.d.ts.map +0 -1
- package/dist/modules/document/Tag.js.map +0 -1
- package/dist/modules/rendering/styles/BehindActorBaselineCss.d.ts +0 -19
- package/dist/modules/rendering/styles/BehindActorBaselineCss.d.ts.map +0 -1
- package/dist/modules/rendering/styles/BehindActorBaselineCss.js +0 -19
- package/dist/modules/rendering/styles/BehindActorBaselineCss.js.map +0 -1
- package/dist/modules/rendering/styles/VideoFrameLayerClass.d.ts.map +0 -1
- package/dist/modules/rendering/styles/VideoFrameLayerClass.js +0 -21
- package/dist/modules/rendering/styles/VideoFrameLayerClass.js.map +0 -1
- package/dist/modules/rendering/types/BehindActorRequirement.d.ts +0 -12
- package/dist/modules/rendering/types/BehindActorRequirement.d.ts.map +0 -1
- package/dist/modules/rendering/types/BehindActorRequirement.js +0 -2
- package/dist/modules/rendering/types/BehindActorRequirement.js.map +0 -1
- package/dist/modules/transcription/BrowserAudioDecoder.d.ts +0 -13
- package/dist/modules/transcription/BrowserAudioDecoder.d.ts.map +0 -1
- package/dist/modules/transcription/BrowserAudioDecoder.js +0 -34
- package/dist/modules/transcription/BrowserAudioDecoder.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrowserSubtitleFrameRenderer.d.ts","sourceRoot":"","sources":["../../../src/modules/rendering/BrowserSubtitleFrameRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EACV,aAAa,EACb,qBAAqB,EACrB,aAAa,EACd,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAOpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AACxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAC1F,OAAO,EAAE,0BAA0B,EAAE,MAAM,wDAAwD,CAAC;
|
|
1
|
+
{"version":3,"file":"BrowserSubtitleFrameRenderer.d.ts","sourceRoot":"","sources":["../../../src/modules/rendering/BrowserSubtitleFrameRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EACV,aAAa,EACb,qBAAqB,EACrB,aAAa,EACd,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAOpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AACxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAC1F,OAAO,EAAE,0BAA0B,EAAE,MAAM,wDAAwD,CAAC;AAOpG;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,4BAA6B,YAAW,qBAAqB;IAOtE,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,cAAc;IARjC,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,MAAM,CAAqB;gBAGhB,oBAAoB,EAAE,oBAAoB,EAC1C,UAAU,EAAE,qBAAqB,EACjC,cAAc,EAAE,0BAA0B;IAG7D;;;;;;;OAOG;IACH,MAAM,CAAC,MAAM,CACX,WAAW,EAAE,mBAAmB,EAChC,YAAY,EAAE,YAAY,EAC1B,OAAO,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,GACrC,4BAA4B;IAsBzB,IAAI,CACR,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;IAiBV,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAIlC,SAAS,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAKlF,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAMhE,KAAK,IAAI,IAAI;CAad"}
|
|
@@ -7,6 +7,9 @@ import { SegmentPaddingCssRuleBuilder } from '../rendering/styles/SegmentPadding
|
|
|
7
7
|
import { PreparedStyleFactory } from '../rendering/subtitle/PreparedStyleFactory';
|
|
8
8
|
import { SpriteSheetSizeProber } from '../rendering/subtitle/SpriteSheetSizeProber';
|
|
9
9
|
import { ActiveRenderSessionFactory } from '../rendering/subtitle/ActiveRenderSessionFactory';
|
|
10
|
+
import { WordFragmenter } from '../bidi/WordFragmenter';
|
|
11
|
+
import { BidiJsAnalyzer } from '../bidi/BidiJsAnalyzer';
|
|
12
|
+
import { CursiveScriptDetector } from '../bidi/CursiveScriptDetector';
|
|
10
13
|
/**
|
|
11
14
|
* Browser-native `SubtitleFrameRenderer` that builds each batch as a
|
|
12
15
|
* single SVG holding one `foreignObject` per unique visual state, and
|
|
@@ -50,7 +53,7 @@ export class BrowserSubtitleFrameRenderer {
|
|
|
50
53
|
const sizeProber = options?.maxBufferPixels !== undefined
|
|
51
54
|
? new SpriteSheetSizeProber(options.maxBufferPixels)
|
|
52
55
|
: new SpriteSheetSizeProber();
|
|
53
|
-
const sessionFactory = new ActiveRenderSessionFactory(wordSplitter, baselineCssComposer);
|
|
56
|
+
const sessionFactory = new ActiveRenderSessionFactory(wordSplitter, new WordFragmenter(new BidiJsAnalyzer(), new CursiveScriptDetector()), baselineCssComposer);
|
|
54
57
|
return new BrowserSubtitleFrameRenderer(preparedStyleFactory, sizeProber, sessionFactory);
|
|
55
58
|
}
|
|
56
59
|
async open(doc, styles, width, height, videoFrameSource) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrowserSubtitleFrameRenderer.js","sourceRoot":"","sources":["../../../src/modules/rendering/BrowserSubtitleFrameRenderer.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,4BAA4B,EAAE,MAAM,wDAAwD,CAAC;AACtG,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AACxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAC1F,OAAO,EAAE,0BAA0B,EAAE,MAAM,wDAAwD,CAAC;
|
|
1
|
+
{"version":3,"file":"BrowserSubtitleFrameRenderer.js","sourceRoot":"","sources":["../../../src/modules/rendering/BrowserSubtitleFrameRenderer.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,4BAA4B,EAAE,MAAM,wDAAwD,CAAC;AACtG,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AACxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAC1F,OAAO,EAAE,0BAA0B,EAAE,MAAM,wDAAwD,CAAC;AACpG,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAI5E;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,4BAA4B;IAOpB;IACA;IACA;IARX,OAAO,GAA+B,IAAI,CAAC;IAC3C,cAAc,GAAyC,IAAI,CAAC;IAC5D,KAAK,CAAqB;IAC1B,MAAM,CAAqB;IAEnC,YACmB,oBAA0C,EAC1C,UAAiC,EACjC,cAA0C;QAF1C,yBAAoB,GAApB,oBAAoB,CAAsB;QAC1C,eAAU,GAAV,UAAU,CAAuB;QACjC,mBAAc,GAAd,cAAc,CAA4B;IAC1D,CAAC;IAEJ;;;;;;;OAOG;IACH,MAAM,CAAC,MAAM,CACX,WAAgC,EAChC,YAA0B,EAC1B,OAAsC;QAEtC,MAAM,mBAAmB,GAAG,IAAI,mBAAmB,EAAE,CAAC;QACtD,MAAM,oBAAoB,GAAG,IAAI,oBAAoB,CACnD,WAAW,EACX,IAAI,SAAS,EAAE,EACf,IAAI,WAAW,EAAE,EACjB,IAAI,sBAAsB,EAAE,EAC5B,mBAAmB,EACnB,IAAI,eAAe,EAAE,EACrB,IAAI,4BAA4B,EAAE,CACnC,CAAC;QACF,MAAM,UAAU,GAAG,OAAO,EAAE,eAAe,KAAK,SAAS;YACvD,CAAC,CAAC,IAAI,qBAAqB,CAAC,OAAO,CAAC,eAAe,CAAC;YACpD,CAAC,CAAC,IAAI,qBAAqB,EAAE,CAAC;QAChC,MAAM,cAAc,GAAG,IAAI,0BAA0B,CACnD,YAAY,EACZ,IAAI,cAAc,CAAC,IAAI,cAAc,EAAE,EAAE,IAAI,qBAAqB,EAAE,CAAC,EACrE,mBAAmB,CACpB,CAAC;QACF,OAAO,IAAI,4BAA4B,CAAC,oBAAoB,EAAE,UAAU,EAAE,cAAc,CAAC,CAAC;IAC5F,CAAC;IAED,KAAK,CAAC,IAAI,CACR,GAAa,EACb,MAA+C,EAC/C,KAAa,EACb,MAAc,EACd,gBAAmC;QAEnC,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACzF,IAAI,aAAa,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CACb,mGAAmG,CACpG,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,MAAM,QAAQ,GAAkC,EAAE,CAAC;QACnD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnD,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,IAAI,IAAI,CAAC,CAAC;IACpG,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAM,EAAE,IAAI,CAAC,MAAO,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,UAAiC;QAC/C,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,SAAiB;QAC9B,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAC1D,OAAO,KAAK,IAAI,IAAI,CAAC;IACvB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;gBACvD,KAAK,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC;gBACjC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;YAChC,CAAC;YACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IAC1B,CAAC;CACF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { PhysicalSide } from '../bidi/HorizontalSide';
|
|
2
|
+
import type { HorizontalSideResolver } from '../bidi/HorizontalSideResolver';
|
|
3
|
+
import type { TextDirection } from '../bidi/TextDirection';
|
|
4
|
+
import type { HorizontalAlign } from '../rendering/types/AlignmentConfig';
|
|
5
|
+
/** Where a caption box's horizontal anchor lands, stated in screen terms. */
|
|
6
|
+
export interface HorizontalPlacement {
|
|
7
|
+
readonly side: PhysicalSide;
|
|
8
|
+
/** Fraction of the video's width, counted from its left edge. */
|
|
9
|
+
readonly offsetFromLeft: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Resolves the horizontal half of an `AlignmentConfig` into the screen terms
|
|
13
|
+
* a renderer paints with.
|
|
14
|
+
*
|
|
15
|
+
* The anchor decides how its own offset is read: a screen side leaves the
|
|
16
|
+
* offset counting from the left edge, a reading side flips both together so
|
|
17
|
+
* the placement mirrors with the direction of the text. Keeping the pair
|
|
18
|
+
* consistent is the whole contract — an anchor mirrored without its offset
|
|
19
|
+
* lands the box on the far side of the frame.
|
|
20
|
+
*/
|
|
21
|
+
export declare class HorizontalPlacementResolver {
|
|
22
|
+
private readonly horizontalSideResolver;
|
|
23
|
+
constructor(horizontalSideResolver: HorizontalSideResolver);
|
|
24
|
+
resolve(horizontalAlign: HorizontalAlign, horizontalOffset: number, textDirection: TextDirection): HorizontalPlacement;
|
|
25
|
+
private isReadingSide;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=HorizontalPlacementResolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HorizontalPlacementResolver.d.ts","sourceRoot":"","sources":["../../../src/modules/rendering/HorizontalPlacementResolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAe,MAAM,8BAA8B,CAAC;AAC9E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAEhF,6EAA6E;AAC7E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,iEAAiE;IACjE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED;;;;;;;;;GASG;AACH,qBAAa,2BAA2B;IAE1B,OAAO,CAAC,QAAQ,CAAC,sBAAsB;gBAAtB,sBAAsB,EAAE,sBAAsB;IAE3E,OAAO,CACL,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,MAAM,EACxB,aAAa,EAAE,aAAa,GAC3B,mBAAmB;IAYtB,OAAO,CAAC,aAAa;CAGtB"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolves the horizontal half of an `AlignmentConfig` into the screen terms
|
|
3
|
+
* a renderer paints with.
|
|
4
|
+
*
|
|
5
|
+
* The anchor decides how its own offset is read: a screen side leaves the
|
|
6
|
+
* offset counting from the left edge, a reading side flips both together so
|
|
7
|
+
* the placement mirrors with the direction of the text. Keeping the pair
|
|
8
|
+
* consistent is the whole contract — an anchor mirrored without its offset
|
|
9
|
+
* lands the box on the far side of the frame.
|
|
10
|
+
*/
|
|
11
|
+
export class HorizontalPlacementResolver {
|
|
12
|
+
horizontalSideResolver;
|
|
13
|
+
constructor(horizontalSideResolver) {
|
|
14
|
+
this.horizontalSideResolver = horizontalSideResolver;
|
|
15
|
+
}
|
|
16
|
+
resolve(horizontalAlign, horizontalOffset, textDirection) {
|
|
17
|
+
if (!this.isReadingSide(horizontalAlign)) {
|
|
18
|
+
return { side: horizontalAlign, offsetFromLeft: horizontalOffset };
|
|
19
|
+
}
|
|
20
|
+
return {
|
|
21
|
+
side: this.horizontalSideResolver.toPhysical(horizontalAlign, textDirection),
|
|
22
|
+
offsetFromLeft: this.horizontalSideResolver.mirrorOffset(horizontalOffset, textDirection),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
// `center` belongs to both vocabularies and is deliberately not treated as
|
|
26
|
+
// a reading side: its own offset is then left in screen terms.
|
|
27
|
+
isReadingSide(horizontalAlign) {
|
|
28
|
+
return horizontalAlign === 'start' || horizontalAlign === 'end';
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=HorizontalPlacementResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HorizontalPlacementResolver.js","sourceRoot":"","sources":["../../../src/modules/rendering/HorizontalPlacementResolver.ts"],"names":[],"mappings":"AAYA;;;;;;;;;GASG;AACH,MAAM,OAAO,2BAA2B;IAET;IAA7B,YAA6B,sBAA8C;QAA9C,2BAAsB,GAAtB,sBAAsB,CAAwB;IAAG,CAAC;IAE/E,OAAO,CACL,eAAgC,EAChC,gBAAwB,EACxB,aAA4B;QAE5B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,CAAC;YACzC,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,cAAc,EAAE,gBAAgB,EAAE,CAAC;QACrE,CAAC;QACD,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,eAAe,EAAE,aAAa,CAAC;YAC5E,cAAc,EAAE,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,gBAAgB,EAAE,aAAa,CAAC;SAC1F,CAAC;IACJ,CAAC;IAED,2EAA2E;IAC3E,+DAA+D;IACvD,aAAa,CAAC,eAAgC;QACpD,OAAO,eAAe,KAAK,OAAO,IAAI,eAAe,KAAK,KAAK,CAAC;IAClE,CAAC;CACF"}
|
|
@@ -33,6 +33,8 @@ export interface SubtitleStyle {
|
|
|
33
33
|
svgFilters?: SvgFilterBundle;
|
|
34
34
|
/** Decorations lifted out of line flow, keyed by decoration id. Decorations absent from the map render inline next to their host word. */
|
|
35
35
|
decorationPlacements?: ReadonlyMap<string, DecorationPlacementSide>;
|
|
36
|
+
/** Ids of elements `css` addresses individually, so the renderer stamps `DataAttribute.ELEMENT_ID` on them. Any element id qualifies — segment, line, word or decoration. Omit when the stylesheet addresses only classes. */
|
|
37
|
+
addressableElementIds?: ReadonlySet<string>;
|
|
36
38
|
}
|
|
37
39
|
/**
|
|
38
40
|
* A drawable handle for one rendered subtitle frame. The consumer
|
|
@@ -1 +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,0CAA0C,CAAC;AAChF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;AAC9F,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kDAAkD,CAAC;AAChG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAElF;;;;;;;;;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;IAC7B,0IAA0I;IAC1I,oBAAoB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;
|
|
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,0CAA0C,CAAC;AAChF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;AAC9F,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kDAAkD,CAAC;AAChG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAElF;;;;;;;;;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;IAC7B,0IAA0I;IAC1I,oBAAoB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;IACpE,8NAA8N;IAC9N,qBAAqB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC7C;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"}
|
|
@@ -3,15 +3,18 @@ export { BrowserSubtitleFrameRenderer } from '../rendering/BrowserSubtitleFrameR
|
|
|
3
3
|
export { LayeredSubtitleFrame } from '../rendering/LayeredSubtitleFrame';
|
|
4
4
|
export type { OverlayFrameRenderer, OverlayFrame } from '../rendering/OverlayFrameRenderer';
|
|
5
5
|
export { BrowserOverlayFrameRenderer } from '../rendering/BrowserOverlayFrameRenderer';
|
|
6
|
-
export type { AlignmentConfig, VerticalAlign } from '../rendering/types/AlignmentConfig';
|
|
6
|
+
export type { AlignmentConfig, VerticalAlign, HorizontalAlign } from '../rendering/types/AlignmentConfig';
|
|
7
|
+
export { VERTICAL_ALIGNS } from '../rendering/types/AlignmentConfig';
|
|
8
|
+
export type { HorizontalPlacement } from '../rendering/HorizontalPlacementResolver';
|
|
9
|
+
export { HorizontalPlacementResolver } from '../rendering/HorizontalPlacementResolver';
|
|
7
10
|
export type { DecorationPlacementSide } from '../rendering/types/DecorationPlacementSide';
|
|
8
11
|
export type { RenderingConfig, VideoFrameRequirement } from '../rendering/types/RenderingConfig';
|
|
9
|
-
export type { BehindActorRequirement } from '../rendering/types/BehindActorRequirement';
|
|
10
12
|
export type { BoxEdges } from '../rendering/types/BoxEdges';
|
|
11
13
|
export type { VideoFrameSource, VideoFrameRegion } from '../rendering/types/VideoFrameSource';
|
|
12
|
-
export {
|
|
13
|
-
export {
|
|
14
|
+
export { BaselineCssComposer, type BaselineNeeds } from '../rendering/styles/BaselineCssComposer';
|
|
15
|
+
export { VIDEO_FRAME_LAYER_BASELINE_CSS } from '../rendering/styles/VideoFrameLayerBaselineCss';
|
|
14
16
|
export { DECORATION_CONTAINER_BASELINE_CSS, DECORATION_FONT_SIZE_MULTIPLIER, DECORATION_GAP_MULTIPLIER } from '../rendering/styles/DecorationContainerBaselineCss';
|
|
17
|
+
export { FROZEN_FRAME_CSS } from '../rendering/styles/FrozenFrameCss';
|
|
15
18
|
export { SegmentPaddingCssRuleBuilder } from '../rendering/styles/SegmentPaddingCssRuleBuilder';
|
|
16
19
|
export { ElementRenderOverrides } from '../rendering/types/ElementRenderOverrides';
|
|
17
20
|
export type { ScopedRenderOverride } from '../rendering/types/ScopedRenderOverride';
|
|
@@ -1 +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,0CAA0C,CAAC;
|
|
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,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAChH,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAC3E,YAAY,EAAE,mBAAmB,EAAE,MAAM,gDAAgD,CAAC;AAC1F,OAAO,EAAE,2BAA2B,EAAE,MAAM,gDAAgD,CAAC;AAC7F,YAAY,EAAE,uBAAuB,EAAE,MAAM,kDAAkD,CAAC;AAChG,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACvG,YAAY,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAClE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AACpG,OAAO,EAAE,mBAAmB,EAAE,KAAK,aAAa,EAAE,MAAM,+CAA+C,CAAC;AACxG,OAAO,EAAE,8BAA8B,EAAE,MAAM,sDAAsD,CAAC;AACtG,OAAO,EAAE,iCAAiC,EAAE,+BAA+B,EAAE,yBAAyB,EAAE,MAAM,0DAA0D,CAAC;AACzK,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,4BAA4B,EAAE,MAAM,wDAAwD,CAAC;AACtG,OAAO,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;AACzF,YAAY,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AAC1F,YAAY,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC"}
|
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
export { BrowserSubtitleFrameRenderer } from '../rendering/BrowserSubtitleFrameRenderer';
|
|
2
2
|
export { LayeredSubtitleFrame } from '../rendering/LayeredSubtitleFrame';
|
|
3
3
|
export { BrowserOverlayFrameRenderer } from '../rendering/BrowserOverlayFrameRenderer';
|
|
4
|
-
export {
|
|
5
|
-
export {
|
|
4
|
+
export { VERTICAL_ALIGNS } from '../rendering/types/AlignmentConfig';
|
|
5
|
+
export { HorizontalPlacementResolver } from '../rendering/HorizontalPlacementResolver';
|
|
6
|
+
export { BaselineCssComposer } from '../rendering/styles/BaselineCssComposer';
|
|
7
|
+
export { VIDEO_FRAME_LAYER_BASELINE_CSS } from '../rendering/styles/VideoFrameLayerBaselineCss';
|
|
6
8
|
export { DECORATION_CONTAINER_BASELINE_CSS, DECORATION_FONT_SIZE_MULTIPLIER, DECORATION_GAP_MULTIPLIER } from '../rendering/styles/DecorationContainerBaselineCss';
|
|
9
|
+
export { FROZEN_FRAME_CSS } from '../rendering/styles/FrozenFrameCss';
|
|
7
10
|
export { SegmentPaddingCssRuleBuilder } from '../rendering/styles/SegmentPaddingCssRuleBuilder';
|
|
8
11
|
export { ElementRenderOverrides } from '../rendering/types/ElementRenderOverrides';
|
|
9
12
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +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;
|
|
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;AAE7F,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAE3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,gDAAgD,CAAC;AAK7F,OAAO,EAAE,mBAAmB,EAAsB,MAAM,+CAA+C,CAAC;AACxG,OAAO,EAAE,8BAA8B,EAAE,MAAM,sDAAsD,CAAC;AACtG,OAAO,EAAE,iCAAiC,EAAE,+BAA+B,EAAE,yBAAyB,EAAE,MAAM,0DAA0D,CAAC;AACzK,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,4BAA4B,EAAE,MAAM,wDAAwD,CAAC;AACtG,OAAO,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC"}
|
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
export interface BaselineNeeds {
|
|
7
7
|
readonly decorations: boolean;
|
|
8
8
|
readonly videoFrame: boolean;
|
|
9
|
-
readonly behindActor: boolean;
|
|
10
9
|
}
|
|
11
10
|
/**
|
|
12
11
|
* Builds the baseline CSS string that prefixes a style's own rules.
|
|
@@ -14,9 +13,28 @@ export interface BaselineNeeds {
|
|
|
14
13
|
* decoration-free template doesn't carry the `.word-decoration` rules
|
|
15
14
|
* and a template that ignores the video frame doesn't carry the
|
|
16
15
|
* video-frame layer rule.
|
|
16
|
+
*
|
|
17
|
+
* The result is wrapped in {@link CssLayer.FRAMEWORK}. Emitting it
|
|
18
|
+
* first also establishes that layer as the earliest one, which is what
|
|
19
|
+
* makes the baseline's `!important` rules unbeatable by anything a
|
|
20
|
+
* consumer layers after it — and, for normal declarations, what lets a
|
|
21
|
+
* consumer override the baseline without out-specifying it.
|
|
17
22
|
*/
|
|
18
23
|
export declare class BaselineCssComposer {
|
|
19
24
|
compose(needs: BaselineNeeds): string;
|
|
25
|
+
/**
|
|
26
|
+
* The optional blocks alone, for a consumer rendering into a document
|
|
27
|
+
* that already supplies the universal half.
|
|
28
|
+
*
|
|
29
|
+
* The layer is the reason this exists rather than the blocks being
|
|
30
|
+
* pasted in directly. An unlayered rule beats every layered one at any
|
|
31
|
+
* specificity, so a baseline left outside would quietly outrank the
|
|
32
|
+
* stylesheet it is a baseline *for* — and a consumer that renders the
|
|
33
|
+
* same caption twice would get two different pictures.
|
|
34
|
+
*/
|
|
35
|
+
composeOptional(needs: BaselineNeeds): string;
|
|
36
|
+
private optionalBlocks;
|
|
37
|
+
private layered;
|
|
20
38
|
/** Composes the union baseline across every needs entry in `perStyle`. */
|
|
21
39
|
composeUnion(perStyle: ReadonlyArray<BaselineNeeds>): string;
|
|
22
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaselineCssComposer.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/styles/BaselineCssComposer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"BaselineCssComposer.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/styles/BaselineCssComposer.ts"],"names":[],"mappings":"AAgBA;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,mBAAmB;IAE9B,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM;IAIrC;;;;;;;;;OASG;IACH,eAAe,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM;IAI7C,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,OAAO;IAIf,0EAA0E;IAC1E,YAAY,CAAC,QAAQ,EAAE,aAAa,CAAC,aAAa,CAAC,GAAG,MAAM;CAM7D"}
|
|
@@ -1,39 +1,63 @@
|
|
|
1
1
|
import { DECORATION_CONTAINER_BASELINE_CSS } from '../../rendering/styles/DecorationContainerBaselineCss';
|
|
2
|
-
import { VIDEO_FRAME_LAYER_BASELINE_CSS } from '../../rendering/styles/
|
|
3
|
-
import {
|
|
2
|
+
import { VIDEO_FRAME_LAYER_BASELINE_CSS } from '../../rendering/styles/VideoFrameLayerBaselineCss';
|
|
3
|
+
import { FROZEN_FRAME_CSS } from '../../rendering/styles/FrozenFrameCss';
|
|
4
|
+
import { CssLayer } from '../../css/CssLayer';
|
|
4
5
|
/**
|
|
5
6
|
* CSS that applies to every rendered subtree regardless of which
|
|
6
7
|
* baseline blocks the style opts into. Keep this minimal — every byte
|
|
7
8
|
* here ships in every frame of every export.
|
|
8
9
|
*/
|
|
9
10
|
const UNIVERSAL_BASELINE_CSS = `html { font-size: 16px; text-rendering: geometricPrecision; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: 100%; }
|
|
10
|
-
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0;
|
|
11
|
+
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
|
11
12
|
.line { white-space: nowrap; }
|
|
12
|
-
.segment { position: relative; }
|
|
13
|
+
.segment { position: relative; }
|
|
14
|
+
${FROZEN_FRAME_CSS}`;
|
|
13
15
|
/**
|
|
14
16
|
* Builds the baseline CSS string that prefixes a style's own rules.
|
|
15
17
|
* Only the blocks the style declares it needs are appended, so a
|
|
16
18
|
* decoration-free template doesn't carry the `.word-decoration` rules
|
|
17
19
|
* and a template that ignores the video frame doesn't carry the
|
|
18
20
|
* video-frame layer rule.
|
|
21
|
+
*
|
|
22
|
+
* The result is wrapped in {@link CssLayer.FRAMEWORK}. Emitting it
|
|
23
|
+
* first also establishes that layer as the earliest one, which is what
|
|
24
|
+
* makes the baseline's `!important` rules unbeatable by anything a
|
|
25
|
+
* consumer layers after it — and, for normal declarations, what lets a
|
|
26
|
+
* consumer override the baseline without out-specifying it.
|
|
19
27
|
*/
|
|
20
28
|
export class BaselineCssComposer {
|
|
21
29
|
compose(needs) {
|
|
22
|
-
|
|
30
|
+
return this.layered(UNIVERSAL_BASELINE_CSS + this.optionalBlocks(needs));
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* The optional blocks alone, for a consumer rendering into a document
|
|
34
|
+
* that already supplies the universal half.
|
|
35
|
+
*
|
|
36
|
+
* The layer is the reason this exists rather than the blocks being
|
|
37
|
+
* pasted in directly. An unlayered rule beats every layered one at any
|
|
38
|
+
* specificity, so a baseline left outside would quietly outrank the
|
|
39
|
+
* stylesheet it is a baseline *for* — and a consumer that renders the
|
|
40
|
+
* same caption twice would get two different pictures.
|
|
41
|
+
*/
|
|
42
|
+
composeOptional(needs) {
|
|
43
|
+
return this.layered(this.optionalBlocks(needs));
|
|
44
|
+
}
|
|
45
|
+
optionalBlocks(needs) {
|
|
46
|
+
let css = '';
|
|
23
47
|
if (needs.decorations)
|
|
24
48
|
css += '\n' + DECORATION_CONTAINER_BASELINE_CSS;
|
|
25
49
|
if (needs.videoFrame)
|
|
26
50
|
css += '\n' + VIDEO_FRAME_LAYER_BASELINE_CSS;
|
|
27
|
-
if (needs.behindActor)
|
|
28
|
-
css += '\n' + BEHIND_ACTOR_BASELINE_CSS;
|
|
29
51
|
return css;
|
|
30
52
|
}
|
|
53
|
+
layered(css) {
|
|
54
|
+
return `@layer ${CssLayer.FRAMEWORK} {\n${css}\n}`;
|
|
55
|
+
}
|
|
31
56
|
/** Composes the union baseline across every needs entry in `perStyle`. */
|
|
32
57
|
composeUnion(perStyle) {
|
|
33
58
|
return this.compose({
|
|
34
59
|
decorations: perStyle.some((n) => n.decorations),
|
|
35
60
|
videoFrame: perStyle.some((n) => n.videoFrame),
|
|
36
|
-
behindActor: perStyle.some((n) => n.behindActor),
|
|
37
61
|
});
|
|
38
62
|
}
|
|
39
63
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaselineCssComposer.js","sourceRoot":"","sources":["../../../../src/modules/rendering/styles/BaselineCssComposer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,MAAM,0DAA0D,CAAC;AAC7G,OAAO,EAAE,8BAA8B,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"BaselineCssComposer.js","sourceRoot":"","sources":["../../../../src/modules/rendering/styles/BaselineCssComposer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,MAAM,0DAA0D,CAAC;AAC7G,OAAO,EAAE,8BAA8B,EAAE,MAAM,sDAAsD,CAAC;AACtG,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD;;;;GAIG;AACH,MAAM,sBAAsB,GAAG;;;;EAI7B,gBAAgB,EAAE,CAAC;AAYrB;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,mBAAmB;IAE9B,OAAO,CAAC,KAAoB;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED;;;;;;;;;OASG;IACH,eAAe,CAAC,KAAoB;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;IAClD,CAAC;IAEO,cAAc,CAAC,KAAoB;QACzC,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,KAAK,CAAC,WAAW;YAAE,GAAG,IAAI,IAAI,GAAG,iCAAiC,CAAC;QACvE,IAAI,KAAK,CAAC,UAAU;YAAE,GAAG,IAAI,IAAI,GAAG,8BAA8B,CAAC;QACnE,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,OAAO,CAAC,GAAW;QACzB,OAAO,UAAU,QAAQ,CAAC,SAAS,OAAO,GAAG,KAAK,CAAC;IACrD,CAAC;IAED,0EAA0E;IAC1E,YAAY,CAAC,QAAsC;QACjD,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;YAChD,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;SAC/C,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DecorationContainerBaselineCss.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/styles/DecorationContainerBaselineCss.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DecorationContainerBaselineCss.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/styles/DecorationContainerBaselineCss.ts"],"names":[],"mappings":"AAGA,0MAA0M;AAC1M,eAAO,MAAM,+BAA+B,MAAM,CAAC;AAEnD,iMAAiM;AACjM,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C,2KAA2K;AAC3K,eAAO,MAAM,iCAAiC,uuBA0B7C,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { CssVariable } from '../../document/CssVariable';
|
|
2
|
+
import { CssClass } from '../../document/CssClass';
|
|
2
3
|
/** Default factor `font-size` of `.word-decoration` scales by, relative to its inherited size. Consumers override per sheet by setting `CssVariable.DECORATION_FONT_SIZE_MULTIPLIER` on the host node. */
|
|
3
4
|
export const DECORATION_FONT_SIZE_MULTIPLIER = 1.8;
|
|
4
5
|
/** Default factor applied to the per-side base spacing between a decoration and its anchor. Consumers override per sheet by setting `CssVariable.DECORATION_GAP_MULTIPLIER` on the host node. */
|
|
@@ -12,8 +13,8 @@ export const DECORATION_CONTAINER_BASELINE_CSS = `
|
|
|
12
13
|
.word > .word-decoration {
|
|
13
14
|
margin-left: calc(0.25em * var(${CssVariable.DECORATION_GAP_MULTIPLIER}, ${DECORATION_GAP_MULTIPLIER}));
|
|
14
15
|
}
|
|
15
|
-
.
|
|
16
|
-
.
|
|
16
|
+
.${CssClass.SEGMENT_DECORATIONS_ABOVE},
|
|
17
|
+
.${CssClass.SEGMENT_DECORATIONS_BELOW} {
|
|
17
18
|
position: absolute;
|
|
18
19
|
left: 0;
|
|
19
20
|
right: 0;
|
|
@@ -22,11 +23,11 @@ export const DECORATION_CONTAINER_BASELINE_CSS = `
|
|
|
22
23
|
gap: 0.5em;
|
|
23
24
|
pointer-events: auto;
|
|
24
25
|
}
|
|
25
|
-
.
|
|
26
|
+
.${CssClass.SEGMENT_DECORATIONS_ABOVE} {
|
|
26
27
|
bottom: calc(100% - var(${CssVariable.SEGMENT_PADDING_TOP}, 0px));
|
|
27
28
|
margin-bottom: calc(0.4em * var(${CssVariable.DECORATION_GAP_MULTIPLIER}, ${DECORATION_GAP_MULTIPLIER}));
|
|
28
29
|
}
|
|
29
|
-
.
|
|
30
|
+
.${CssClass.SEGMENT_DECORATIONS_BELOW} {
|
|
30
31
|
top: calc(100% - var(${CssVariable.SEGMENT_PADDING_BOTTOM}, 0px));
|
|
31
32
|
margin-top: calc(0.4em * var(${CssVariable.DECORATION_GAP_MULTIPLIER}, ${DECORATION_GAP_MULTIPLIER}));
|
|
32
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DecorationContainerBaselineCss.js","sourceRoot":"","sources":["../../../../src/modules/rendering/styles/DecorationContainerBaselineCss.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"DecorationContainerBaselineCss.js","sourceRoot":"","sources":["../../../../src/modules/rendering/styles/DecorationContainerBaselineCss.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD,0MAA0M;AAC1M,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAEnD,iMAAiM;AACjM,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAE7C,2KAA2K;AAC3K,MAAM,CAAC,MAAM,iCAAiC,GAAG;;;8BAGnB,WAAW,CAAC,+BAA+B,KAAK,+BAA+B;;;mCAG1E,WAAW,CAAC,yBAAyB,KAAK,yBAAyB;;GAEnG,QAAQ,CAAC,yBAAyB;GAClC,QAAQ,CAAC,yBAAyB;;;;;;;;;GASlC,QAAQ,CAAC,yBAAyB;4BACT,WAAW,CAAC,mBAAmB;oCACvB,WAAW,CAAC,yBAAyB,KAAK,yBAAyB;;GAEpG,QAAQ,CAAC,yBAAyB;yBACZ,WAAW,CAAC,sBAAsB;iCAC1B,WAAW,CAAC,yBAAyB,KAAK,yBAAyB;;CAEnG,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The frozen-frame contract expressed as CSS: the two animation
|
|
3
|
+
* longhands that make a rendered frame a function of the playhead
|
|
4
|
+
* instead of of wall-clock time.
|
|
5
|
+
*
|
|
6
|
+
* A frame is produced by seeking every animation with a negative
|
|
7
|
+
* `animation-delay` and reading the result, which needs both halves to
|
|
8
|
+
* hold on every element. The pause keeps an animation from advancing
|
|
9
|
+
* on its own. The fill makes an element outside its animation's active
|
|
10
|
+
* window paint from the keyframes rather than falling back to its
|
|
11
|
+
* unanimated state — without it an element renders its resting style
|
|
12
|
+
* before its moment arrives, and snaps into the `from` keyframe when
|
|
13
|
+
* it does.
|
|
14
|
+
*
|
|
15
|
+
* Both are `!important` because an `animation:` shorthand resets every
|
|
16
|
+
* longhand it omits: as plain declarations they would apply or not
|
|
17
|
+
* depending on whether a stylesheet happened to use the shorthand.
|
|
18
|
+
* Neither is a style choice a stylesheet may make — `from` and `to`
|
|
19
|
+
* are where a stylesheet expresses what it wants each phase to look
|
|
20
|
+
* like.
|
|
21
|
+
*
|
|
22
|
+
* The selector is deliberately unqualified. A consumer rendering into
|
|
23
|
+
* a document of its own applies it as-is; one rendering into a shared
|
|
24
|
+
* document runs it through {@link CssScoper} first, or it will freeze
|
|
25
|
+
* every animation on the page.
|
|
26
|
+
*/
|
|
27
|
+
export declare const FROZEN_FRAME_CSS = "*, *::before, *::after { animation-play-state: paused !important; animation-fill-mode: both !important; }";
|
|
28
|
+
//# sourceMappingURL=FrozenFrameCss.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FrozenFrameCss.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/styles/FrozenFrameCss.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,gBAAgB,8GAA8G,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The frozen-frame contract expressed as CSS: the two animation
|
|
3
|
+
* longhands that make a rendered frame a function of the playhead
|
|
4
|
+
* instead of of wall-clock time.
|
|
5
|
+
*
|
|
6
|
+
* A frame is produced by seeking every animation with a negative
|
|
7
|
+
* `animation-delay` and reading the result, which needs both halves to
|
|
8
|
+
* hold on every element. The pause keeps an animation from advancing
|
|
9
|
+
* on its own. The fill makes an element outside its animation's active
|
|
10
|
+
* window paint from the keyframes rather than falling back to its
|
|
11
|
+
* unanimated state — without it an element renders its resting style
|
|
12
|
+
* before its moment arrives, and snaps into the `from` keyframe when
|
|
13
|
+
* it does.
|
|
14
|
+
*
|
|
15
|
+
* Both are `!important` because an `animation:` shorthand resets every
|
|
16
|
+
* longhand it omits: as plain declarations they would apply or not
|
|
17
|
+
* depending on whether a stylesheet happened to use the shorthand.
|
|
18
|
+
* Neither is a style choice a stylesheet may make — `from` and `to`
|
|
19
|
+
* are where a stylesheet expresses what it wants each phase to look
|
|
20
|
+
* like.
|
|
21
|
+
*
|
|
22
|
+
* The selector is deliberately unqualified. A consumer rendering into
|
|
23
|
+
* a document of its own applies it as-is; one rendering into a shared
|
|
24
|
+
* document runs it through {@link CssScoper} first, or it will freeze
|
|
25
|
+
* every animation on the page.
|
|
26
|
+
*/
|
|
27
|
+
export const FROZEN_FRAME_CSS = '*, *::before, *::after { animation-play-state: paused !important; animation-fill-mode: both !important; }';
|
|
28
|
+
//# sourceMappingURL=FrozenFrameCss.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FrozenFrameCss.js","sourceRoot":"","sources":["../../../../src/modules/rendering/styles/FrozenFrameCss.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,2GAA2G,CAAC"}
|
|
@@ -12,13 +12,6 @@ import type { InlineStyleMap } from '../../rendering/types/InlineStyleMap';
|
|
|
12
12
|
export declare class InlineStyleEmitter {
|
|
13
13
|
private readonly usedCssVars;
|
|
14
14
|
constructor(usedCssVars: ReadonlySet<string>);
|
|
15
|
-
/**
|
|
16
|
-
* Serializes `vars` prefixed with the engine's animation timing
|
|
17
|
-
* primitives (`animation-play-state: paused` and
|
|
18
|
-
* `animation-fill-mode: both`) so the consuming element renders in
|
|
19
|
-
* lockstep with the per-frame `currentTime` instead of free-running.
|
|
20
|
-
*/
|
|
21
|
-
serializeAnimatedVars(vars: Record<string, string>): string;
|
|
22
15
|
/** Serializes `styles` as a CSS attribute body, filtering unused custom properties. */
|
|
23
16
|
serializeStyles(styles: Readonly<InlineStyleMap> | undefined): string;
|
|
24
17
|
private isCustomProperty;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InlineStyleEmitter.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/styles/InlineStyleEmitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAS9E;;;;;;;;;GASG;AACH,qBAAa,kBAAkB;IAEjB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC;IAE7D
|
|
1
|
+
{"version":3,"file":"InlineStyleEmitter.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/styles/InlineStyleEmitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAS9E;;;;;;;;;GASG;AACH,qBAAa,kBAAkB;IAEjB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC;IAE7D,uFAAuF;IACvF,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,SAAS,GAAG,MAAM;IAUrE,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,oBAAoB;CAG7B"}
|
|
@@ -19,15 +19,6 @@ export class InlineStyleEmitter {
|
|
|
19
19
|
constructor(usedCssVars) {
|
|
20
20
|
this.usedCssVars = usedCssVars;
|
|
21
21
|
}
|
|
22
|
-
/**
|
|
23
|
-
* Serializes `vars` prefixed with the engine's animation timing
|
|
24
|
-
* primitives (`animation-play-state: paused` and
|
|
25
|
-
* `animation-fill-mode: both`) so the consuming element renders in
|
|
26
|
-
* lockstep with the per-frame `currentTime` instead of free-running.
|
|
27
|
-
*/
|
|
28
|
-
serializeAnimatedVars(vars) {
|
|
29
|
-
return 'animation-play-state: paused; animation-fill-mode: both; ' + this.serializeStyles(vars);
|
|
30
|
-
}
|
|
31
22
|
/** Serializes `styles` as a CSS attribute body, filtering unused custom properties. */
|
|
32
23
|
serializeStyles(styles) {
|
|
33
24
|
if (!styles)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InlineStyleEmitter.js","sourceRoot":"","sources":["../../../../src/modules/rendering/styles/InlineStyleEmitter.ts"],"names":[],"mappings":"AAEA,MAAM,kBAAkB,GAA2B;IACjD,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,MAAM;CACZ,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,OAAO,kBAAkB;IAEA;IAA7B,YAA6B,WAAgC;QAAhC,gBAAW,GAAX,WAAW,CAAqB;IAAG,CAAC;IAEjE
|
|
1
|
+
{"version":3,"file":"InlineStyleEmitter.js","sourceRoot":"","sources":["../../../../src/modules/rendering/styles/InlineStyleEmitter.ts"],"names":[],"mappings":"AAEA,MAAM,kBAAkB,GAA2B;IACjD,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,MAAM;CACZ,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,OAAO,kBAAkB;IAEA;IAA7B,YAA6B,WAAgC;QAAhC,gBAAW,GAAX,WAAW,CAAqB;IAAG,CAAC;IAEjE,uFAAuF;IACvF,eAAe,CAAC,MAA4C;QAC1D,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QACvB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACvD,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,SAAS;YACjF,MAAM,IAAI,GAAG,QAAQ,KAAK,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC;QACjE,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,gBAAgB,CAAC,YAAoB;QAC3C,OAAO,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,mEAAmE;IACnE,oEAAoE;IACpE,kBAAkB;IACV,oBAAoB,CAAC,KAAa;QACxC,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAE,CAAC,CAAC;IACjE,CAAC;CACF"}
|
package/dist/modules/rendering/styles/{VideoFrameLayerClass.d.ts → VideoFrameLayerBaselineCss.d.ts}
RENAMED
|
@@ -1,13 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
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
|
|
2
|
+
* Default rule for the `CssClass.VIDEO_FRAME_LAYER` element: positions
|
|
3
|
+
* the layer over the subtitle's painted region via the
|
|
11
4
|
* `--subtitle-region-*` custom properties and paints the current
|
|
12
5
|
* frame slice from `--video-frame`. Class-level specificity so
|
|
13
6
|
* sheet-scoped overrides always win.
|
|
@@ -18,4 +11,4 @@ export declare const VIDEO_FRAME_LAYER_CLASS = "tscaps-video-frame-layer";
|
|
|
18
11
|
* the region geometry.
|
|
19
12
|
*/
|
|
20
13
|
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=
|
|
14
|
+
//# sourceMappingURL=VideoFrameLayerBaselineCss.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VideoFrameLayerBaselineCss.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/styles/VideoFrameLayerBaselineCss.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,8BAA8B,sWAA2W,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { CssClass } from '../../document/CssClass';
|
|
2
|
+
/**
|
|
3
|
+
* Default rule for the `CssClass.VIDEO_FRAME_LAYER` element: positions
|
|
4
|
+
* the layer over the subtitle's painted region via the
|
|
5
|
+
* `--subtitle-region-*` custom properties and paints the current
|
|
6
|
+
* frame slice from `--video-frame`. Class-level specificity so
|
|
7
|
+
* sheet-scoped overrides always win.
|
|
8
|
+
*
|
|
9
|
+
* `max-width: none; max-height: none` defeats consumer CSS resets
|
|
10
|
+
* (e.g. Tailwind's `img, video { max-width: 100% }`) that would
|
|
11
|
+
* clip the layer to its content-hugging segment parent and break
|
|
12
|
+
* the region geometry.
|
|
13
|
+
*/
|
|
14
|
+
export const VIDEO_FRAME_LAYER_BASELINE_CSS = `.${CssClass.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; }`;
|
|
15
|
+
//# sourceMappingURL=VideoFrameLayerBaselineCss.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VideoFrameLayerBaselineCss.js","sourceRoot":"","sources":["../../../../src/modules/rendering/styles/VideoFrameLayerBaselineCss.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,IAAI,QAAQ,CAAC,iBAAiB,0UAA0U,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Document } from '../../document/Document';
|
|
2
2
|
import type { WordSplitter } from '../../splitting/WordSplitter';
|
|
3
|
+
import type { WordFragmenter } from '../../bidi/WordFragmenter';
|
|
3
4
|
import type { VideoFrameSource } from '../../rendering/types/VideoFrameSource';
|
|
4
5
|
import type { BaselineCssComposer } from '../../rendering/styles/BaselineCssComposer';
|
|
5
6
|
import { ActiveRenderSession } from '../../rendering/subtitle/ActiveRenderSession';
|
|
@@ -12,8 +13,9 @@ import type { PreparedStyle } from '../../rendering/subtitle/PreparedStyle';
|
|
|
12
13
|
*/
|
|
13
14
|
export declare class ActiveRenderSessionFactory {
|
|
14
15
|
private readonly wordSplitter;
|
|
16
|
+
private readonly wordFragmenter;
|
|
15
17
|
private readonly baselineCssComposer;
|
|
16
|
-
constructor(wordSplitter: WordSplitter, baselineCssComposer: BaselineCssComposer);
|
|
18
|
+
constructor(wordSplitter: WordSplitter, wordFragmenter: WordFragmenter, baselineCssComposer: BaselineCssComposer);
|
|
17
19
|
create(doc: Document, styles: Readonly<Record<string, PreparedStyle>>, width: number, height: number, videoFrameSource: VideoFrameSource | null): ActiveRenderSession;
|
|
18
20
|
}
|
|
19
21
|
//# sourceMappingURL=ActiveRenderSessionFactory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActiveRenderSessionFactory.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/subtitle/ActiveRenderSessionFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;
|
|
1
|
+
{"version":3,"file":"ActiveRenderSessionFactory.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/subtitle/ActiveRenderSessionFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAGnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AAczF,OAAO,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AACtF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAE/E;;;;;GAKG;AACH,qBAAa,0BAA0B;IAGnC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,mBAAmB;gBAFnB,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,cAAc,EAC9B,mBAAmB,EAAE,mBAAmB;IAG3D,MAAM,CACJ,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,EAC/C,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,GACxC,mBAAmB;CA0CvB"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
import { HorizontalSideResolver } from '../../bidi/HorizontalSideResolver';
|
|
2
|
+
import { HorizontalPlacementResolver } from '../../rendering/HorizontalPlacementResolver';
|
|
1
3
|
import { SvgFilterScoper } from '../../svg-filter/SvgFilterScoper';
|
|
2
4
|
import { SvgFilterLengthResolver } from '../../svg-filter/SvgFilterLengthResolver';
|
|
5
|
+
import { SvgFilterDefsRenderer } from '../../svg-filter/SvgFilterDefsRenderer';
|
|
3
6
|
import { SegmentSubtreeHtmlBuilder } from '../../rendering/subtitle/SegmentSubtreeHtmlBuilder';
|
|
4
7
|
import { SegmentSubtreeDecomposer } from '../../rendering/subtitle/SegmentSubtreeDecomposer';
|
|
5
8
|
import { SegmentPaintRegionResolver } from '../../rendering/subtitle/SegmentPaintRegionResolver';
|
|
@@ -19,19 +22,21 @@ import { ActiveRenderSession } from '../../rendering/subtitle/ActiveRenderSessio
|
|
|
19
22
|
*/
|
|
20
23
|
export class ActiveRenderSessionFactory {
|
|
21
24
|
wordSplitter;
|
|
25
|
+
wordFragmenter;
|
|
22
26
|
baselineCssComposer;
|
|
23
|
-
constructor(wordSplitter, baselineCssComposer) {
|
|
27
|
+
constructor(wordSplitter, wordFragmenter, baselineCssComposer) {
|
|
24
28
|
this.wordSplitter = wordSplitter;
|
|
29
|
+
this.wordFragmenter = wordFragmenter;
|
|
25
30
|
this.baselineCssComposer = baselineCssComposer;
|
|
26
31
|
}
|
|
27
32
|
create(doc, styles, width, height, videoFrameSource) {
|
|
28
|
-
const subtreeBuilder = new SegmentSubtreeHtmlBuilder(this.wordSplitter);
|
|
33
|
+
const subtreeBuilder = new SegmentSubtreeHtmlBuilder(this.wordSplitter, this.wordFragmenter);
|
|
29
34
|
const subtreeDecomposer = new SegmentSubtreeDecomposer();
|
|
30
35
|
const paintRegionResolver = new SegmentPaintRegionResolver();
|
|
31
36
|
const paintRegionCache = new SegmentPaintRegionCache();
|
|
32
|
-
const filterMaterializer = new SvgFilterMaterializer(new SvgFilterScoper(), new SvgFilterLengthResolver(), height);
|
|
37
|
+
const filterMaterializer = new SvgFilterMaterializer(new SvgFilterDefsRenderer(new SvgFilterScoper(), new SvgFilterLengthResolver()), height);
|
|
33
38
|
const videoFrameVarsBuilder = new VideoFrameVarsBuilder(subtreeBuilder, paintRegionResolver, paintRegionCache, width, height, videoFrameSource);
|
|
34
|
-
const wrapperRenderer = new SegmentWrapperRenderer(subtreeBuilder, subtreeDecomposer, filterMaterializer, videoFrameVarsBuilder, width, height);
|
|
39
|
+
const wrapperRenderer = new SegmentWrapperRenderer(subtreeBuilder, subtreeDecomposer, filterMaterializer, videoFrameVarsBuilder, new HorizontalPlacementResolver(new HorizontalSideResolver()), width, height);
|
|
35
40
|
const animationProbe = new AnimationProbe();
|
|
36
41
|
const batchPlanner = new BatchPlanner(doc, styles, animationProbe);
|
|
37
42
|
const spriteSheetCompositor = new SpriteSheetCompositor(styles, wrapperRenderer, this.baselineCssComposer, width, height);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActiveRenderSessionFactory.js","sourceRoot":"","sources":["../../../../src/modules/rendering/subtitle/ActiveRenderSessionFactory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ActiveRenderSessionFactory.js","sourceRoot":"","sources":["../../../../src/modules/rendering/subtitle/ActiveRenderSessionFactory.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,gDAAgD,CAAC;AAG7F,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AACtF,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,MAAM,uDAAuD,CAAC;AAClG,OAAO,EAAE,wBAAwB,EAAE,MAAM,sDAAsD,CAAC;AAChG,OAAO,EAAE,0BAA0B,EAAE,MAAM,wDAAwD,CAAC;AACpG,OAAO,EAAE,uBAAuB,EAAE,MAAM,qDAAqD,CAAC;AAC9F,OAAO,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAC1F,OAAO,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAC1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,oDAAoD,CAAC;AAC5F,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAC1F,OAAO,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AAGtF;;;;;GAKG;AACH,MAAM,OAAO,0BAA0B;IAGlB;IACA;IACA;IAHnB,YACmB,YAA0B,EAC1B,cAA8B,EAC9B,mBAAwC;QAFxC,iBAAY,GAAZ,YAAY,CAAc;QAC1B,mBAAc,GAAd,cAAc,CAAgB;QAC9B,wBAAmB,GAAnB,mBAAmB,CAAqB;IACxD,CAAC;IAEJ,MAAM,CACJ,GAAa,EACb,MAA+C,EAC/C,KAAa,EACb,MAAc,EACd,gBAAyC;QAEzC,MAAM,cAAc,GAAG,IAAI,yBAAyB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7F,MAAM,iBAAiB,GAAG,IAAI,wBAAwB,EAAE,CAAC;QACzD,MAAM,mBAAmB,GAAG,IAAI,0BAA0B,EAAE,CAAC;QAC7D,MAAM,gBAAgB,GAAG,IAAI,uBAAuB,EAAE,CAAC;QACvD,MAAM,kBAAkB,GAAG,IAAI,qBAAqB,CAClD,IAAI,qBAAqB,CAAC,IAAI,eAAe,EAAE,EAAE,IAAI,uBAAuB,EAAE,CAAC,EAC/E,MAAM,CACP,CAAC;QACF,MAAM,qBAAqB,GAAG,IAAI,qBAAqB,CACrD,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,EACL,MAAM,EACN,gBAAgB,CACjB,CAAC;QACF,MAAM,eAAe,GAAG,IAAI,sBAAsB,CAChD,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,IAAI,2BAA2B,CAAC,IAAI,sBAAsB,EAAE,CAAC,EAC7D,KAAK,EACL,MAAM,CACP,CAAC;QACF,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;QAC5C,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;QACnE,MAAM,qBAAqB,GAAG,IAAI,qBAAqB,CACrD,MAAM,EACN,eAAe,EACf,IAAI,CAAC,mBAAmB,EACxB,KAAK,EACL,MAAM,CACP,CAAC;QACF,OAAO,IAAI,mBAAmB,CAC5B,YAAY,EACZ,qBAAqB,EACrB,cAAc,EACd,gBAAgB,CACjB,CAAC;IACJ,CAAC;CACF"}
|