@tscaps/engine 0.1.1 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -4
- package/dist/modules/css/CssScoper.d.ts +21 -1
- package/dist/modules/css/CssScoper.d.ts.map +1 -1
- package/dist/modules/css/CssScoper.js +129 -56
- package/dist/modules/css/CssScoper.js.map +1 -1
- package/dist/modules/css/CssVarReferenceScanner.d.ts +13 -0
- package/dist/modules/css/CssVarReferenceScanner.d.ts.map +1 -0
- package/dist/modules/css/CssVarReferenceScanner.js +20 -0
- package/dist/modules/css/CssVarReferenceScanner.js.map +1 -0
- package/dist/modules/css/index.d.ts +1 -0
- package/dist/modules/css/index.d.ts.map +1 -1
- package/dist/modules/css/index.js +1 -0
- package/dist/modules/css/index.js.map +1 -1
- package/dist/modules/document/CssVariable.d.ts +24 -3
- package/dist/modules/document/CssVariable.d.ts.map +1 -1
- package/dist/modules/document/CssVariable.js +30 -2
- package/dist/modules/document/CssVariable.js.map +1 -1
- package/dist/modules/document/Decoration.d.ts +42 -0
- package/dist/modules/document/Decoration.d.ts.map +1 -0
- package/dist/modules/document/Decoration.js +52 -0
- package/dist/modules/document/Decoration.js.map +1 -0
- package/dist/modules/document/Document.d.ts.map +1 -1
- package/dist/modules/document/Document.js +0 -3
- package/dist/modules/document/Document.js.map +1 -1
- package/dist/modules/document/DocumentEditor.d.ts +11 -0
- package/dist/modules/document/DocumentEditor.d.ts.map +1 -1
- package/dist/modules/document/DocumentEditor.js +49 -9
- package/dist/modules/document/DocumentEditor.js.map +1 -1
- package/dist/modules/document/Line.d.ts +9 -6
- package/dist/modules/document/Line.d.ts.map +1 -1
- package/dist/modules/document/Line.js +11 -24
- package/dist/modules/document/Line.js.map +1 -1
- package/dist/modules/document/Section.d.ts +0 -4
- package/dist/modules/document/Section.d.ts.map +1 -1
- package/dist/modules/document/Section.js +2 -18
- package/dist/modules/document/Section.js.map +1 -1
- package/dist/modules/document/Segment.d.ts +10 -7
- package/dist/modules/document/Segment.d.ts.map +1 -1
- package/dist/modules/document/Segment.js +15 -22
- package/dist/modules/document/Segment.js.map +1 -1
- package/dist/modules/document/Tag.d.ts +3 -0
- package/dist/modules/document/Tag.d.ts.map +1 -1
- package/dist/modules/document/Tag.js +3 -0
- package/dist/modules/document/Tag.js.map +1 -1
- package/dist/modules/document/Word.d.ts +20 -7
- package/dist/modules/document/Word.d.ts.map +1 -1
- package/dist/modules/document/Word.js +32 -34
- package/dist/modules/document/Word.js.map +1 -1
- package/dist/modules/document/index.d.ts +1 -0
- package/dist/modules/document/index.d.ts.map +1 -1
- package/dist/modules/document/index.js +1 -0
- package/dist/modules/document/index.js.map +1 -1
- package/dist/modules/effect/CarryQuotesEffect.d.ts +1 -7
- package/dist/modules/effect/CarryQuotesEffect.d.ts.map +1 -1
- package/dist/modules/effect/CarryQuotesEffect.js +17 -30
- package/dist/modules/effect/CarryQuotesEffect.js.map +1 -1
- package/dist/modules/effect/RemovePunctuationEffect.d.ts +10 -2
- package/dist/modules/effect/RemovePunctuationEffect.d.ts.map +1 -1
- package/dist/modules/effect/RemovePunctuationEffect.js +26 -6
- package/dist/modules/effect/RemovePunctuationEffect.js.map +1 -1
- package/dist/modules/effect/SmartLowercaseEffect.d.ts +7 -6
- package/dist/modules/effect/SmartLowercaseEffect.d.ts.map +1 -1
- package/dist/modules/effect/SmartLowercaseEffect.js +11 -7
- package/dist/modules/effect/SmartLowercaseEffect.js.map +1 -1
- package/dist/modules/pipeline/RenderPipelineBuilder.d.ts +3 -3
- package/dist/modules/pipeline/RenderPipelineBuilder.d.ts.map +1 -1
- package/dist/modules/pipeline/RenderPipelineBuilder.js +11 -6
- package/dist/modules/pipeline/RenderPipelineBuilder.js.map +1 -1
- package/dist/modules/rendering/BrowserSubtitleFrameRenderer.d.ts +19 -25
- package/dist/modules/rendering/BrowserSubtitleFrameRenderer.d.ts.map +1 -1
- package/dist/modules/rendering/BrowserSubtitleFrameRenderer.js +40 -717
- package/dist/modules/rendering/BrowserSubtitleFrameRenderer.js.map +1 -1
- package/dist/modules/rendering/SubtitleFrameRenderer.d.ts +8 -5
- package/dist/modules/rendering/SubtitleFrameRenderer.d.ts.map +1 -1
- package/dist/modules/rendering/index.d.ts +13 -8
- package/dist/modules/rendering/index.d.ts.map +1 -1
- package/dist/modules/rendering/index.js +5 -2
- package/dist/modules/rendering/index.js.map +1 -1
- package/dist/modules/rendering/styles/BaselineCssComposer.d.ts +23 -0
- package/dist/modules/rendering/styles/BaselineCssComposer.d.ts.map +1 -0
- package/dist/modules/rendering/styles/BaselineCssComposer.js +40 -0
- package/dist/modules/rendering/styles/BaselineCssComposer.js.map +1 -0
- package/dist/modules/rendering/styles/BehindActorBaselineCss.d.ts +19 -0
- package/dist/modules/rendering/styles/BehindActorBaselineCss.d.ts.map +1 -0
- package/dist/modules/rendering/styles/BehindActorBaselineCss.js +19 -0
- package/dist/modules/rendering/styles/BehindActorBaselineCss.js.map +1 -0
- package/dist/modules/rendering/styles/DecorationContainerBaselineCss.d.ts +7 -0
- package/dist/modules/rendering/styles/DecorationContainerBaselineCss.d.ts.map +1 -0
- package/dist/modules/rendering/styles/DecorationContainerBaselineCss.js +34 -0
- package/dist/modules/rendering/styles/DecorationContainerBaselineCss.js.map +1 -0
- package/dist/modules/rendering/styles/InlineStyleEmitter.d.ts +27 -0
- package/dist/modules/rendering/styles/InlineStyleEmitter.d.ts.map +1 -0
- package/dist/modules/rendering/styles/InlineStyleEmitter.js +53 -0
- package/dist/modules/rendering/styles/InlineStyleEmitter.js.map +1 -0
- package/dist/modules/rendering/styles/SegmentPaddingCssRuleBuilder.d.ts +15 -0
- package/dist/modules/rendering/styles/SegmentPaddingCssRuleBuilder.d.ts.map +1 -0
- package/dist/modules/rendering/styles/SegmentPaddingCssRuleBuilder.js +33 -0
- package/dist/modules/rendering/styles/SegmentPaddingCssRuleBuilder.js.map +1 -0
- package/dist/modules/rendering/styles/VideoFrameLayerClass.d.ts.map +1 -0
- package/dist/modules/rendering/styles/VideoFrameLayerClass.js.map +1 -0
- package/dist/modules/rendering/subtitle/AbstractAnim.d.ts +13 -0
- package/dist/modules/rendering/subtitle/AbstractAnim.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/AbstractAnim.js +2 -0
- package/dist/modules/rendering/subtitle/AbstractAnim.js.map +1 -0
- package/dist/modules/rendering/subtitle/ActiveRenderSession.d.ts +20 -0
- package/dist/modules/rendering/subtitle/ActiveRenderSession.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/ActiveRenderSession.js +31 -0
- package/dist/modules/rendering/subtitle/ActiveRenderSession.js.map +1 -0
- package/dist/modules/rendering/subtitle/ActiveRenderSessionFactory.d.ts +19 -0
- package/dist/modules/rendering/subtitle/ActiveRenderSessionFactory.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/ActiveRenderSessionFactory.js +41 -0
- package/dist/modules/rendering/subtitle/ActiveRenderSessionFactory.js.map +1 -0
- package/dist/modules/rendering/subtitle/AnimationProbe.d.ts +25 -0
- package/dist/modules/rendering/subtitle/AnimationProbe.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/AnimationProbe.js +198 -0
- package/dist/modules/rendering/subtitle/AnimationProbe.js.map +1 -0
- package/dist/modules/rendering/subtitle/AssetGroupBuilder.d.ts +15 -0
- package/dist/modules/rendering/subtitle/AssetGroupBuilder.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/AssetGroupBuilder.js +26 -0
- package/dist/modules/rendering/subtitle/AssetGroupBuilder.js.map +1 -0
- package/dist/modules/rendering/subtitle/BatchPlan.d.ts +32 -0
- package/dist/modules/rendering/subtitle/BatchPlan.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/BatchPlan.js +2 -0
- package/dist/modules/rendering/subtitle/BatchPlan.js.map +1 -0
- package/dist/modules/rendering/subtitle/BatchPlanner.d.ts +31 -0
- package/dist/modules/rendering/subtitle/BatchPlanner.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/BatchPlanner.js +91 -0
- package/dist/modules/rendering/subtitle/BatchPlanner.js.map +1 -0
- package/dist/modules/rendering/subtitle/PreparedStyle.d.ts +35 -0
- package/dist/modules/rendering/subtitle/PreparedStyle.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/PreparedStyle.js +2 -0
- package/dist/modules/rendering/subtitle/PreparedStyle.js.map +1 -0
- package/dist/modules/rendering/subtitle/PreparedStyleFactory.d.ts +31 -0
- package/dist/modules/rendering/subtitle/PreparedStyleFactory.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/PreparedStyleFactory.js +91 -0
- package/dist/modules/rendering/subtitle/PreparedStyleFactory.js.map +1 -0
- package/dist/modules/rendering/subtitle/SegmentPaintRegionCache.d.ts +13 -0
- package/dist/modules/rendering/subtitle/SegmentPaintRegionCache.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/SegmentPaintRegionCache.js +24 -0
- package/dist/modules/rendering/subtitle/SegmentPaintRegionCache.js.map +1 -0
- package/dist/modules/rendering/{SegmentPaintRegionResolver.d.ts → subtitle/SegmentPaintRegionResolver.d.ts} +1 -1
- package/dist/modules/rendering/subtitle/SegmentPaintRegionResolver.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/SegmentPaintRegionResolver.js.map +1 -0
- package/dist/modules/rendering/subtitle/SegmentSubtreeDecomposer.d.ts +45 -0
- package/dist/modules/rendering/subtitle/SegmentSubtreeDecomposer.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/SegmentSubtreeDecomposer.js +50 -0
- package/dist/modules/rendering/subtitle/SegmentSubtreeDecomposer.js.map +1 -0
- package/dist/modules/rendering/subtitle/SegmentSubtreeHtmlBuilder.d.ts +80 -0
- package/dist/modules/rendering/subtitle/SegmentSubtreeHtmlBuilder.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/SegmentSubtreeHtmlBuilder.js +188 -0
- package/dist/modules/rendering/subtitle/SegmentSubtreeHtmlBuilder.js.map +1 -0
- package/dist/modules/rendering/subtitle/SegmentWrapperRenderer.d.ts +45 -0
- package/dist/modules/rendering/subtitle/SegmentWrapperRenderer.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/SegmentWrapperRenderer.js +141 -0
- package/dist/modules/rendering/subtitle/SegmentWrapperRenderer.js.map +1 -0
- package/dist/modules/rendering/subtitle/SpriteSheetCompositor.d.ts +46 -0
- package/dist/modules/rendering/subtitle/SpriteSheetCompositor.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/SpriteSheetCompositor.js +134 -0
- package/dist/modules/rendering/subtitle/SpriteSheetCompositor.js.map +1 -0
- package/dist/modules/rendering/subtitle/SpriteSheetSizeProber.d.ts +17 -0
- package/dist/modules/rendering/subtitle/SpriteSheetSizeProber.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/SpriteSheetSizeProber.js +58 -0
- package/dist/modules/rendering/subtitle/SpriteSheetSizeProber.js.map +1 -0
- package/dist/modules/rendering/subtitle/SvgFilterMaterializer.d.ts +27 -0
- package/dist/modules/rendering/subtitle/SvgFilterMaterializer.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/SvgFilterMaterializer.js +40 -0
- package/dist/modules/rendering/subtitle/SvgFilterMaterializer.js.map +1 -0
- package/dist/modules/rendering/subtitle/VideoFrameVarsBuilder.d.ts +42 -0
- package/dist/modules/rendering/subtitle/VideoFrameVarsBuilder.d.ts.map +1 -0
- package/dist/modules/rendering/subtitle/VideoFrameVarsBuilder.js +112 -0
- package/dist/modules/rendering/subtitle/VideoFrameVarsBuilder.js.map +1 -0
- package/dist/modules/rendering/types/AlignmentConfig.d.ts.map +1 -0
- package/dist/modules/rendering/types/AlignmentConfig.js.map +1 -0
- package/dist/modules/rendering/types/BehindActorRequirement.d.ts +12 -0
- package/dist/modules/rendering/types/BehindActorRequirement.d.ts.map +1 -0
- package/dist/modules/rendering/types/BehindActorRequirement.js +2 -0
- package/dist/modules/rendering/types/BehindActorRequirement.js.map +1 -0
- package/dist/modules/rendering/types/BoxEdges.d.ts.map +1 -0
- package/dist/modules/rendering/types/BoxEdges.js.map +1 -0
- package/dist/modules/rendering/types/DecorationPlacementSide.d.ts +8 -0
- package/dist/modules/rendering/types/DecorationPlacementSide.d.ts.map +1 -0
- package/dist/modules/rendering/types/DecorationPlacementSide.js +2 -0
- package/dist/modules/rendering/types/DecorationPlacementSide.js.map +1 -0
- package/dist/modules/rendering/{ElementRenderOverrides.d.ts → types/ElementRenderOverrides.d.ts} +1 -1
- package/dist/modules/rendering/types/ElementRenderOverrides.d.ts.map +1 -0
- package/dist/modules/rendering/types/ElementRenderOverrides.js.map +1 -0
- package/dist/modules/rendering/types/InlineStyleMap.d.ts.map +1 -0
- package/dist/modules/rendering/types/InlineStyleMap.js.map +1 -0
- package/dist/modules/rendering/{RenderingConfig.d.ts → types/RenderingConfig.d.ts} +3 -1
- package/dist/modules/rendering/types/RenderingConfig.d.ts.map +1 -0
- package/dist/modules/rendering/types/RenderingConfig.js.map +1 -0
- package/dist/modules/rendering/{ScopedRenderOverride.d.ts → types/ScopedRenderOverride.d.ts} +2 -2
- package/dist/modules/rendering/types/ScopedRenderOverride.d.ts.map +1 -0
- package/dist/modules/rendering/types/ScopedRenderOverride.js.map +1 -0
- package/dist/modules/rendering/types/VideoFrameSource.d.ts.map +1 -0
- package/dist/modules/rendering/types/VideoFrameSource.js.map +1 -0
- package/dist/modules/splitting/BoundaryScoreLimitByCharsSegmentSplitter.d.ts +33 -0
- package/dist/modules/splitting/BoundaryScoreLimitByCharsSegmentSplitter.d.ts.map +1 -0
- package/dist/modules/splitting/BoundaryScoreLimitByCharsSegmentSplitter.js +100 -0
- package/dist/modules/splitting/BoundaryScoreLimitByCharsSegmentSplitter.js.map +1 -0
- package/dist/modules/splitting/FixedTailLineSplitter.d.ts +29 -0
- package/dist/modules/splitting/FixedTailLineSplitter.d.ts.map +1 -0
- package/dist/modules/splitting/FixedTailLineSplitter.js +43 -0
- package/dist/modules/splitting/FixedTailLineSplitter.js.map +1 -0
- package/dist/modules/splitting/index.d.ts +4 -0
- package/dist/modules/splitting/index.d.ts.map +1 -1
- package/dist/modules/splitting/index.js +2 -0
- package/dist/modules/splitting/index.js.map +1 -1
- package/dist/modules/tagging/PauseTagger.d.ts +24 -0
- package/dist/modules/tagging/PauseTagger.d.ts.map +1 -0
- package/dist/modules/tagging/PauseTagger.js +41 -0
- package/dist/modules/tagging/PauseTagger.js.map +1 -0
- package/dist/modules/tagging/StructureTagger.d.ts +1 -1
- package/dist/modules/tagging/StructureTagger.d.ts.map +1 -1
- package/dist/modules/tagging/StructureTagger.js +11 -5
- package/dist/modules/tagging/StructureTagger.js.map +1 -1
- package/dist/modules/tagging/index.d.ts +2 -0
- package/dist/modules/tagging/index.d.ts.map +1 -1
- package/dist/modules/tagging/index.js +1 -0
- package/dist/modules/tagging/index.js.map +1 -1
- package/dist/modules/transcription/VttTranscriber.d.ts +28 -0
- package/dist/modules/transcription/VttTranscriber.d.ts.map +1 -0
- package/dist/modules/transcription/VttTranscriber.js +59 -0
- package/dist/modules/transcription/VttTranscriber.js.map +1 -0
- package/dist/modules/transcription/index.d.ts +1 -0
- package/dist/modules/transcription/index.d.ts.map +1 -1
- package/dist/modules/transcription/index.js +1 -0
- package/dist/modules/transcription/index.js.map +1 -1
- package/dist/modules/video/RenderJob.d.ts +17 -0
- package/dist/modules/video/RenderJob.d.ts.map +1 -1
- package/dist/modules/video/RenderTimeMap.d.ts +50 -0
- package/dist/modules/video/RenderTimeMap.d.ts.map +1 -0
- package/dist/modules/video/RenderTimeMap.js +90 -0
- package/dist/modules/video/RenderTimeMap.js.map +1 -0
- package/dist/modules/video/index.d.ts +8 -1
- package/dist/modules/video/index.d.ts.map +1 -1
- package/dist/modules/video/index.js +4 -0
- package/dist/modules/video/index.js.map +1 -1
- package/dist/modules/video/mediabunny/MediaBunnyTranscodeCoordinator.d.ts +102 -0
- package/dist/modules/video/mediabunny/MediaBunnyTranscodeCoordinator.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/MediaBunnyTranscodeCoordinator.js +199 -0
- package/dist/modules/video/mediabunny/MediaBunnyTranscodeCoordinator.js.map +1 -0
- package/dist/modules/video/mediabunny/MediaBunnyVideoRenderer.d.ts +12 -52
- package/dist/modules/video/mediabunny/MediaBunnyVideoRenderer.d.ts.map +1 -1
- package/dist/modules/video/mediabunny/MediaBunnyVideoRenderer.js +25 -190
- package/dist/modules/video/mediabunny/MediaBunnyVideoRenderer.js.map +1 -1
- package/dist/modules/video/mediabunny/audio/AudioTrackBridgeFactory.d.ts +7 -0
- package/dist/modules/video/mediabunny/audio/AudioTrackBridgeFactory.d.ts.map +1 -1
- package/dist/modules/video/mediabunny/audio/DefaultAudioTrackBridgeFactory.js +2 -2
- package/dist/modules/video/mediabunny/audio/DefaultAudioTrackBridgeFactory.js.map +1 -1
- package/dist/modules/video/mediabunny/audio/PassthroughAudioTrackBridge.d.ts +2 -0
- package/dist/modules/video/mediabunny/audio/PassthroughAudioTrackBridge.d.ts.map +1 -1
- package/dist/modules/video/mediabunny/audio/PassthroughAudioTrackBridge.js +8 -2
- package/dist/modules/video/mediabunny/audio/PassthroughAudioTrackBridge.js.map +1 -1
- package/dist/modules/video/mediabunny/audio/TranscodeAudioTrackBridge.d.ts +3 -0
- package/dist/modules/video/mediabunny/audio/TranscodeAudioTrackBridge.d.ts.map +1 -1
- package/dist/modules/video/mediabunny/audio/TranscodeAudioTrackBridge.js +9 -2
- package/dist/modules/video/mediabunny/audio/TranscodeAudioTrackBridge.js.map +1 -1
- package/dist/modules/video/mediabunny/codec/CodecPolicy.d.ts +7 -0
- package/dist/modules/video/mediabunny/codec/CodecPolicy.d.ts.map +1 -1
- package/dist/modules/video/mediabunny/frame/CurrentFrameVideoSource.d.ts +1 -1
- package/dist/modules/video/mediabunny/frame/CurrentFrameVideoSource.d.ts.map +1 -1
- package/dist/modules/video/mediabunny/frame/FrameCompositor.d.ts +9 -2
- package/dist/modules/video/mediabunny/frame/FrameCompositor.d.ts.map +1 -1
- package/dist/modules/video/mediabunny/frame/LayeredFrameCompositor.d.ts +5 -2
- package/dist/modules/video/mediabunny/frame/LayeredFrameCompositor.d.ts.map +1 -1
- package/dist/modules/video/mediabunny/frame/LayeredFrameCompositor.js +8 -2
- package/dist/modules/video/mediabunny/frame/LayeredFrameCompositor.js.map +1 -1
- package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainter.d.ts +35 -0
- package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainter.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainter.js +69 -0
- package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainter.js.map +1 -0
- package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainterFactory.d.ts +23 -0
- package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainterFactory.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainterFactory.js +23 -0
- package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainterFactory.js.map +1 -0
- package/dist/modules/video/mediabunny/painter/FramePainter.d.ts +46 -0
- package/dist/modules/video/mediabunny/painter/FramePainter.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/painter/FramePainter.js +2 -0
- package/dist/modules/video/mediabunny/painter/FramePainter.js.map +1 -0
- package/dist/modules/video/mediabunny/painter/TopLayerSource.d.ts +25 -0
- package/dist/modules/video/mediabunny/painter/TopLayerSource.d.ts.map +1 -0
- package/dist/modules/video/mediabunny/painter/TopLayerSource.js +2 -0
- package/dist/modules/video/mediabunny/painter/TopLayerSource.js.map +1 -0
- package/package.json +1 -1
- package/dist/modules/rendering/AlignmentConfig.d.ts.map +0 -1
- package/dist/modules/rendering/AlignmentConfig.js.map +0 -1
- package/dist/modules/rendering/BoxEdges.d.ts.map +0 -1
- package/dist/modules/rendering/BoxEdges.js.map +0 -1
- package/dist/modules/rendering/ElementRenderOverrides.d.ts.map +0 -1
- package/dist/modules/rendering/ElementRenderOverrides.js.map +0 -1
- package/dist/modules/rendering/InlineStyleMap.d.ts.map +0 -1
- package/dist/modules/rendering/InlineStyleMap.js.map +0 -1
- package/dist/modules/rendering/RenderingConfig.d.ts.map +0 -1
- package/dist/modules/rendering/RenderingConfig.js.map +0 -1
- package/dist/modules/rendering/ScopedRenderOverride.d.ts.map +0 -1
- package/dist/modules/rendering/ScopedRenderOverride.js.map +0 -1
- package/dist/modules/rendering/SegmentPaintRegionResolver.d.ts.map +0 -1
- package/dist/modules/rendering/SegmentPaintRegionResolver.js.map +0 -1
- package/dist/modules/rendering/SegmentSubtreeHtmlBuilder.d.ts +0 -58
- package/dist/modules/rendering/SegmentSubtreeHtmlBuilder.d.ts.map +0 -1
- package/dist/modules/rendering/SegmentSubtreeHtmlBuilder.js +0 -132
- package/dist/modules/rendering/SegmentSubtreeHtmlBuilder.js.map +0 -1
- package/dist/modules/rendering/VideoFrameLayerClass.d.ts.map +0 -1
- package/dist/modules/rendering/VideoFrameLayerClass.js.map +0 -1
- package/dist/modules/rendering/VideoFrameSource.d.ts.map +0 -1
- package/dist/modules/rendering/VideoFrameSource.js.map +0 -1
- /package/dist/modules/rendering/{VideoFrameLayerClass.d.ts → styles/VideoFrameLayerClass.d.ts} +0 -0
- /package/dist/modules/rendering/{VideoFrameLayerClass.js → styles/VideoFrameLayerClass.js} +0 -0
- /package/dist/modules/rendering/{SegmentPaintRegionResolver.js → subtitle/SegmentPaintRegionResolver.js} +0 -0
- /package/dist/modules/rendering/{AlignmentConfig.d.ts → types/AlignmentConfig.d.ts} +0 -0
- /package/dist/modules/rendering/{AlignmentConfig.js → types/AlignmentConfig.js} +0 -0
- /package/dist/modules/rendering/{BoxEdges.d.ts → types/BoxEdges.d.ts} +0 -0
- /package/dist/modules/rendering/{BoxEdges.js → types/BoxEdges.js} +0 -0
- /package/dist/modules/rendering/{ElementRenderOverrides.js → types/ElementRenderOverrides.js} +0 -0
- /package/dist/modules/rendering/{InlineStyleMap.d.ts → types/InlineStyleMap.d.ts} +0 -0
- /package/dist/modules/rendering/{InlineStyleMap.js → types/InlineStyleMap.js} +0 -0
- /package/dist/modules/rendering/{RenderingConfig.js → types/RenderingConfig.js} +0 -0
- /package/dist/modules/rendering/{ScopedRenderOverride.js → types/ScopedRenderOverride.js} +0 -0
- /package/dist/modules/rendering/{VideoFrameSource.d.ts → types/VideoFrameSource.d.ts} +0 -0
- /package/dist/modules/rendering/{VideoFrameSource.js → types/VideoFrameSource.js} +0 -0
package/README.md
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
# @tscaps/engine
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
A TypeScript engine that adds captions to a video and burns them in — all in the browser, no server involved. It sources captions (in-browser Whisper transcription, an existing `.srt`, or a hand-built `Document`), lays them out through CSS, and exports the result frame-by-frame to a new video.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
The defining technical bet: **CSS is the rendering engine**. Subtitle preview is a DOM overlay above a `<video>` element. Final export samples that same CSS-styled DOM into bitmaps per frame, composited by a browser-side video pipeline. One visual artifact, two rendering paths.
|
|
5
|
+
Captions are HTML elements styled with CSS. On export, the engine rasterizes that DOM at each frame's timestamp into a bitmap and composites it with the video frame. The browser renders the captions.
|
|
8
6
|
|
|
9
7
|
## Install
|
|
10
8
|
|
|
@@ -5,12 +5,32 @@
|
|
|
5
5
|
* scope-unique form and the matching `animation-name` / `animation`
|
|
6
6
|
* shorthand references in the same stylesheet are rewritten in step.
|
|
7
7
|
*
|
|
8
|
+
* Selectors inside conditional at-rule bodies (`@container`, `@media`,
|
|
9
|
+
* `@supports`, `@layer`, `@scope`) are scoped recursively — without
|
|
10
|
+
* this, a rule like `@container … { .foo { … } }` would emit unscoped
|
|
11
|
+
* `.foo` and lose to the top-level scoped version on specificity.
|
|
12
|
+
*
|
|
8
13
|
* `scopeSelector` is expected to be a simple class selector
|
|
9
14
|
* (e.g. `.my-scope`); its identifier portion seeds the keyframe rename.
|
|
10
15
|
*/
|
|
11
16
|
export declare class CssScoper {
|
|
12
17
|
scope(css: string, scopeSelector: string): string;
|
|
13
18
|
private scopeKeyframes;
|
|
14
|
-
private
|
|
19
|
+
private scopeSelectorsInRange;
|
|
20
|
+
private scopeAtRuleBody;
|
|
21
|
+
private scopeCompoundSelector;
|
|
22
|
+
private isWhitespace;
|
|
23
|
+
private isCommentStart;
|
|
24
|
+
private findCommentEnd;
|
|
25
|
+
private findBraceOrEnd;
|
|
26
|
+
private isAtRuleHeader;
|
|
27
|
+
private extractAtRuleName;
|
|
28
|
+
/**
|
|
29
|
+
* Returns the index of the `}` that closes the block opened just
|
|
30
|
+
* before `start`. Respects string literals and CSS comments so that
|
|
31
|
+
* `{`/`}` characters appearing inside them don't shift the depth.
|
|
32
|
+
* Falls back to `stopAt` if the block is unterminated within range.
|
|
33
|
+
*/
|
|
34
|
+
private findMatchingClose;
|
|
15
35
|
}
|
|
16
36
|
//# sourceMappingURL=CssScoper.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CssScoper.d.ts","sourceRoot":"","sources":["../../../src/modules/css/CssScoper.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CssScoper.d.ts","sourceRoot":"","sources":["../../../src/modules/css/CssScoper.ts"],"names":[],"mappings":"AAeA;;;;;;;;;;;;;;GAcG;AACH,qBAAa,SAAS;IACpB,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM;IAKjD,OAAO,CAAC,cAAc;IA2BtB,OAAO,CAAC,qBAAqB;IAuC7B,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,iBAAiB;IAKzB;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;CAyB1B"}
|
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
const KEYFRAME_NAME_RE = /@(?:-webkit-|-moz-)?keyframes\s+([a-zA-Z_-][a-zA-Z0-9_-]*)/g;
|
|
2
|
-
const
|
|
2
|
+
const AT_RULE_NAME_RE = /^@([a-zA-Z][a-zA-Z0-9-]*)/;
|
|
3
|
+
const SELECTOR_SPECIAL_CHARS_RE = /[.*+?^${}()|[\]\\]/g;
|
|
4
|
+
/** At-rules whose body holds regular style rules — selectors inside must be scoped. */
|
|
5
|
+
const SCOPEABLE_AT_RULES = new Set([
|
|
6
|
+
'container',
|
|
7
|
+
'media',
|
|
8
|
+
'supports',
|
|
9
|
+
'layer',
|
|
10
|
+
'scope',
|
|
11
|
+
]);
|
|
12
|
+
const escapeRegex = (s) => s.replace(SELECTOR_SPECIAL_CHARS_RE, '\\$&');
|
|
3
13
|
/**
|
|
4
14
|
* Scopes a CSS string so it can coexist with sibling stylesheets in
|
|
5
15
|
* the same document. Top-level selectors get prefixed with
|
|
@@ -7,13 +17,18 @@ const escapeRegex = (s) => s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
|
7
17
|
* scope-unique form and the matching `animation-name` / `animation`
|
|
8
18
|
* shorthand references in the same stylesheet are rewritten in step.
|
|
9
19
|
*
|
|
20
|
+
* Selectors inside conditional at-rule bodies (`@container`, `@media`,
|
|
21
|
+
* `@supports`, `@layer`, `@scope`) are scoped recursively — without
|
|
22
|
+
* this, a rule like `@container … { .foo { … } }` would emit unscoped
|
|
23
|
+
* `.foo` and lose to the top-level scoped version on specificity.
|
|
24
|
+
*
|
|
10
25
|
* `scopeSelector` is expected to be a simple class selector
|
|
11
26
|
* (e.g. `.my-scope`); its identifier portion seeds the keyframe rename.
|
|
12
27
|
*/
|
|
13
28
|
export class CssScoper {
|
|
14
29
|
scope(css, scopeSelector) {
|
|
15
30
|
const scopeKey = scopeSelector.replace(/^\.+/, '');
|
|
16
|
-
return this.
|
|
31
|
+
return this.scopeSelectorsInRange(this.scopeKeyframes(css, scopeKey), 0, undefined, scopeSelector);
|
|
17
32
|
}
|
|
18
33
|
scopeKeyframes(css, scopeKey) {
|
|
19
34
|
const names = new Set();
|
|
@@ -39,71 +54,129 @@ export class CssScoper {
|
|
|
39
54
|
}
|
|
40
55
|
return result;
|
|
41
56
|
}
|
|
42
|
-
|
|
57
|
+
scopeSelectorsInRange(css, start, end, scopeSelector) {
|
|
58
|
+
const stopAt = end ?? css.length;
|
|
43
59
|
let result = '';
|
|
44
|
-
let i =
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
if (
|
|
48
|
-
|
|
49
|
-
result += '{';
|
|
60
|
+
let i = start;
|
|
61
|
+
while (i < stopAt) {
|
|
62
|
+
const ch = css[i];
|
|
63
|
+
if (this.isWhitespace(ch)) {
|
|
64
|
+
result += ch;
|
|
50
65
|
i++;
|
|
66
|
+
continue;
|
|
51
67
|
}
|
|
52
|
-
|
|
53
|
-
|
|
68
|
+
if (this.isCommentStart(css, i)) {
|
|
69
|
+
const commentEnd = this.findCommentEnd(css, i, stopAt);
|
|
70
|
+
result += css.slice(i, commentEnd);
|
|
71
|
+
i = commentEnd;
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
const braceIndex = this.findBraceOrEnd(css, i, stopAt);
|
|
75
|
+
if (braceIndex === stopAt) {
|
|
76
|
+
result += css.slice(i, stopAt);
|
|
77
|
+
return result;
|
|
78
|
+
}
|
|
79
|
+
const header = css.slice(i, braceIndex);
|
|
80
|
+
const bodyStart = braceIndex + 1;
|
|
81
|
+
const bodyEnd = this.findMatchingClose(css, bodyStart, stopAt);
|
|
82
|
+
if (this.isAtRuleHeader(header)) {
|
|
83
|
+
result += `${header}{`;
|
|
84
|
+
result += this.scopeAtRuleBody(css, bodyStart, bodyEnd, header, scopeSelector);
|
|
54
85
|
result += '}';
|
|
55
|
-
i++;
|
|
56
86
|
}
|
|
57
|
-
else
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
87
|
+
else {
|
|
88
|
+
result += `${this.scopeCompoundSelector(header, scopeSelector)} {`;
|
|
89
|
+
result += css.slice(bodyStart, bodyEnd);
|
|
90
|
+
result += '}';
|
|
91
|
+
}
|
|
92
|
+
i = bodyEnd + 1;
|
|
93
|
+
}
|
|
94
|
+
return result;
|
|
95
|
+
}
|
|
96
|
+
scopeAtRuleBody(css, bodyStart, bodyEnd, header, scopeSelector) {
|
|
97
|
+
const name = this.extractAtRuleName(header);
|
|
98
|
+
if (SCOPEABLE_AT_RULES.has(name)) {
|
|
99
|
+
return this.scopeSelectorsInRange(css, bodyStart, bodyEnd, scopeSelector);
|
|
100
|
+
}
|
|
101
|
+
return css.slice(bodyStart, bodyEnd);
|
|
102
|
+
}
|
|
103
|
+
scopeCompoundSelector(selector, scopeSelector) {
|
|
104
|
+
return selector
|
|
105
|
+
.trim()
|
|
106
|
+
.split(',')
|
|
107
|
+
.map((s) => `${scopeSelector} ${s.trim()}`)
|
|
108
|
+
.join(', ');
|
|
109
|
+
}
|
|
110
|
+
isWhitespace(ch) {
|
|
111
|
+
return ch === ' ' || ch === '\t' || ch === '\n' || ch === '\r' || ch === '\f';
|
|
112
|
+
}
|
|
113
|
+
isCommentStart(css, i) {
|
|
114
|
+
return css[i] === '/' && css[i + 1] === '*';
|
|
115
|
+
}
|
|
116
|
+
findCommentEnd(css, commentStart, stopAt) {
|
|
117
|
+
const closeIndex = css.indexOf('*/', commentStart + 2);
|
|
118
|
+
return closeIndex === -1 || closeIndex >= stopAt ? stopAt : closeIndex + 2;
|
|
119
|
+
}
|
|
120
|
+
findBraceOrEnd(css, start, stopAt) {
|
|
121
|
+
for (let i = start; i < stopAt; i++) {
|
|
122
|
+
if (css[i] === '{')
|
|
123
|
+
return i;
|
|
124
|
+
}
|
|
125
|
+
return stopAt;
|
|
126
|
+
}
|
|
127
|
+
isAtRuleHeader(header) {
|
|
128
|
+
return header.trimStart().startsWith('@');
|
|
129
|
+
}
|
|
130
|
+
extractAtRuleName(header) {
|
|
131
|
+
const match = header.trimStart().match(AT_RULE_NAME_RE);
|
|
132
|
+
return match ? match[1].toLowerCase() : '';
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Returns the index of the `}` that closes the block opened just
|
|
136
|
+
* before `start`. Respects string literals and CSS comments so that
|
|
137
|
+
* `{`/`}` characters appearing inside them don't shift the depth.
|
|
138
|
+
* Falls back to `stopAt` if the block is unterminated within range.
|
|
139
|
+
*/
|
|
140
|
+
findMatchingClose(css, start, stopAt) {
|
|
141
|
+
let depth = 1;
|
|
142
|
+
let i = start;
|
|
143
|
+
let stringDelim = null;
|
|
144
|
+
while (i < stopAt) {
|
|
145
|
+
const ch = css[i];
|
|
146
|
+
if (stringDelim) {
|
|
147
|
+
if (ch === '\\' && i + 1 < stopAt) {
|
|
148
|
+
i += 2;
|
|
78
149
|
continue;
|
|
79
150
|
}
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}
|
|
85
|
-
if (remaining.startsWith('@')) {
|
|
86
|
-
result += remaining.slice(0, brace + 1);
|
|
87
|
-
i += brace + 1;
|
|
88
|
-
depth++;
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
const selector = remaining.slice(0, brace).trim();
|
|
92
|
-
const scoped = selector
|
|
93
|
-
.split(',')
|
|
94
|
-
.map(s => `${scopeSelector} ${s.trim()}`)
|
|
95
|
-
.join(', ');
|
|
96
|
-
result += `${scoped} {`;
|
|
97
|
-
i += brace + 1;
|
|
98
|
-
depth++;
|
|
99
|
-
}
|
|
151
|
+
if (ch === stringDelim)
|
|
152
|
+
stringDelim = null;
|
|
153
|
+
i++;
|
|
154
|
+
continue;
|
|
100
155
|
}
|
|
101
|
-
|
|
102
|
-
|
|
156
|
+
if (ch === '"' || ch === '\'') {
|
|
157
|
+
stringDelim = ch;
|
|
158
|
+
i++;
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
if (this.isCommentStart(css, i)) {
|
|
162
|
+
i = this.findCommentEnd(css, i, stopAt);
|
|
163
|
+
continue;
|
|
164
|
+
}
|
|
165
|
+
if (ch === '{') {
|
|
166
|
+
depth++;
|
|
103
167
|
i++;
|
|
168
|
+
continue;
|
|
104
169
|
}
|
|
170
|
+
if (ch === '}') {
|
|
171
|
+
depth--;
|
|
172
|
+
if (depth === 0)
|
|
173
|
+
return i;
|
|
174
|
+
i++;
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
i++;
|
|
105
178
|
}
|
|
106
|
-
return
|
|
179
|
+
return stopAt;
|
|
107
180
|
}
|
|
108
181
|
}
|
|
109
182
|
//# sourceMappingURL=CssScoper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CssScoper.js","sourceRoot":"","sources":["../../../src/modules/css/CssScoper.ts"],"names":[],"mappings":"AAAA,MAAM,gBAAgB,GAAG,6DAA6D,CAAC;
|
|
1
|
+
{"version":3,"file":"CssScoper.js","sourceRoot":"","sources":["../../../src/modules/css/CssScoper.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns every CSS custom property name referenced via `var(--name)`
|
|
3
|
+
* anywhere in the given source.
|
|
4
|
+
*
|
|
5
|
+
* Cheap regex scan rather than a CSS parse. False positives are
|
|
6
|
+
* limited to literal `var(--…)` substrings inside string values; pass
|
|
7
|
+
* the source through {@link CssMinifier} first to drop comments that
|
|
8
|
+
* would otherwise contribute to the result.
|
|
9
|
+
*/
|
|
10
|
+
export declare class CssVarReferenceScanner {
|
|
11
|
+
scan(css: string): Set<string>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=CssVarReferenceScanner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CssVarReferenceScanner.d.ts","sourceRoot":"","sources":["../../../src/modules/css/CssVarReferenceScanner.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,qBAAa,sBAAsB;IAEjC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;CAO/B"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
const VAR_REFERENCE_PATTERN = /var\(\s*(--[a-zA-Z0-9_-]+)/g;
|
|
2
|
+
/**
|
|
3
|
+
* Returns every CSS custom property name referenced via `var(--name)`
|
|
4
|
+
* anywhere in the given source.
|
|
5
|
+
*
|
|
6
|
+
* Cheap regex scan rather than a CSS parse. False positives are
|
|
7
|
+
* limited to literal `var(--…)` substrings inside string values; pass
|
|
8
|
+
* the source through {@link CssMinifier} first to drop comments that
|
|
9
|
+
* would otherwise contribute to the result.
|
|
10
|
+
*/
|
|
11
|
+
export class CssVarReferenceScanner {
|
|
12
|
+
scan(css) {
|
|
13
|
+
const found = new Set();
|
|
14
|
+
for (const match of css.matchAll(VAR_REFERENCE_PATTERN)) {
|
|
15
|
+
found.add(match[1]);
|
|
16
|
+
}
|
|
17
|
+
return found;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=CssVarReferenceScanner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CssVarReferenceScanner.js","sourceRoot":"","sources":["../../../src/modules/css/CssVarReferenceScanner.ts"],"names":[],"mappings":"AAAA,MAAM,qBAAqB,GAAG,6BAA6B,CAAC;AAE5D;;;;;;;;GAQG;AACH,MAAM,OAAO,sBAAsB;IAEjC,IAAI,CAAC,GAAW;QACd,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;QAChC,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;YACxD,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
|
|
@@ -3,4 +3,5 @@ export { BrowserCssResourceEmbedder } from '../css/BrowserCssResourceEmbedder';
|
|
|
3
3
|
export { NoopCssResourceEmbedder } from '../css/NoopCssResourceEmbedder';
|
|
4
4
|
export { CssScoper } from '../css/CssScoper';
|
|
5
5
|
export { CssMinifier } from '../css/CssMinifier';
|
|
6
|
+
export { CssVarReferenceScanner } from '../css/CssVarReferenceScanner';
|
|
6
7
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/css/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/css/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC"}
|
|
@@ -2,4 +2,5 @@ export { BrowserCssResourceEmbedder } from '../css/BrowserCssResourceEmbedder';
|
|
|
2
2
|
export { NoopCssResourceEmbedder } from '../css/NoopCssResourceEmbedder';
|
|
3
3
|
export { CssScoper } from '../css/CssScoper';
|
|
4
4
|
export { CssMinifier } from '../css/CssMinifier';
|
|
5
|
+
export { CssVarReferenceScanner } from '../css/CssVarReferenceScanner';
|
|
5
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/css/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/css/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC"}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* CSS custom properties
|
|
3
|
-
* react to playback timing
|
|
2
|
+
* CSS custom properties published on the rendered subtree so the
|
|
3
|
+
* consumer's stylesheet can react to playback timing and node
|
|
4
|
+
* structure, plus a small set the consumer writes back so the engine's
|
|
5
|
+
* baseline rules pick up per-sheet overrides.
|
|
6
|
+
*
|
|
7
|
+
* Each entry is owned by whichever side **writes** it; once published,
|
|
8
|
+
* any reader (engine baseline CSS, consumer template CSS, JS
|
|
9
|
+
* inspection) can pick it up.
|
|
4
10
|
*
|
|
5
11
|
* Naming:
|
|
6
12
|
* - `--on-<x>-starts` / `--on-<x>-ends` are *event timestamps*: they
|
|
@@ -9,6 +15,8 @@
|
|
|
9
15
|
* the past.
|
|
10
16
|
* - `--<x>-duration` is a *span*, not an event. It does not coincide
|
|
11
17
|
* with any moment, so it carries no `on-` prefix.
|
|
18
|
+
* - Structural metadata (letter index, character count, …) carries no
|
|
19
|
+
* `on-` prefix either — those are not events.
|
|
12
20
|
*/
|
|
13
21
|
export declare enum CssVariable {
|
|
14
22
|
SECTION_STARTS = "--on-section-starts",
|
|
@@ -17,6 +25,8 @@ export declare enum CssVariable {
|
|
|
17
25
|
SEGMENT_STARTS = "--on-segment-starts",
|
|
18
26
|
SEGMENT_ENDS = "--on-segment-ends",
|
|
19
27
|
SEGMENT_DURATION = "--segment-duration",
|
|
28
|
+
SEGMENT_CHAR_COUNT = "--segment-char-count",
|
|
29
|
+
SEGMENT_INDEX = "--segment-index",
|
|
20
30
|
LINE_NOT_NARRATED_YET_STARTS = "--on-line-not-narrated-yet-starts",
|
|
21
31
|
LINE_NOT_NARRATED_YET_ENDS = "--on-line-not-narrated-yet-ends",
|
|
22
32
|
LINE_NOT_NARRATED_YET_DURATION = "--line-not-narrated-yet-duration",
|
|
@@ -37,10 +47,21 @@ export declare enum CssVariable {
|
|
|
37
47
|
WORD_ALREADY_NARRATED_DURATION = "--word-already-narrated-duration",
|
|
38
48
|
LETTER_INDEX = "--letter-index",
|
|
39
49
|
LETTER_COUNT = "--letter-count",
|
|
50
|
+
WORD_INDEX = "--word-index",
|
|
51
|
+
WORD_CHAR_COUNT = "--word-char-count",
|
|
52
|
+
WORD_COUNT = "--word-count",
|
|
53
|
+
LAST_WORD_CHAR_COUNT = "--last-word-char-count",
|
|
40
54
|
VIDEO_FRAME = "--video-frame",
|
|
41
55
|
SUBTITLE_REGION_WIDTH = "--subtitle-region-width",
|
|
42
56
|
SUBTITLE_REGION_HEIGHT = "--subtitle-region-height",
|
|
43
57
|
SUBTITLE_REGION_X = "--subtitle-region-x",
|
|
44
|
-
SUBTITLE_REGION_Y = "--subtitle-region-y"
|
|
58
|
+
SUBTITLE_REGION_Y = "--subtitle-region-y",
|
|
59
|
+
SEGMENT_PADDING_TOP = "--segment-padding-top",
|
|
60
|
+
SEGMENT_PADDING_BOTTOM = "--segment-padding-bottom",
|
|
61
|
+
BEHIND_ACTOR_SCENE_VALID = "--behind-actor-scene-valid",
|
|
62
|
+
BEHIND_ACTOR_FORCED = "--behind-actor-forced",
|
|
63
|
+
BEHIND_ACTOR_ACTIVE = "--behind-actor-active",
|
|
64
|
+
DECORATION_FONT_SIZE_MULTIPLIER = "--decoration-font-size-multiplier",
|
|
65
|
+
DECORATION_GAP_MULTIPLIER = "--decoration-gap-multiplier"
|
|
45
66
|
}
|
|
46
67
|
//# sourceMappingURL=CssVariable.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CssVariable.d.ts","sourceRoot":"","sources":["../../../src/modules/document/CssVariable.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"CssVariable.d.ts","sourceRoot":"","sources":["../../../src/modules/document/CssVariable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,oBAAY,WAAW;IAMrB,cAAc,wBAAwB;IACtC,YAAY,sBAAsB;IAClC,gBAAgB,uBAAuB;IAEvC,cAAc,wBAAwB;IACtC,YAAY,sBAAsB;IAClC,gBAAgB,uBAAuB;IACvC,kBAAkB,yBAAyB;IAC3C,aAAa,oBAAoB;IAEjC,4BAA4B,sCAAsC;IAClE,0BAA0B,oCAAoC;IAC9D,8BAA8B,qCAAqC;IACnE,0BAA0B,oCAAoC;IAC9D,wBAAwB,kCAAkC;IAC1D,4BAA4B,mCAAmC;IAC/D,4BAA4B,sCAAsC;IAClE,0BAA0B,oCAAoC;IAC9D,8BAA8B,qCAAqC;IAEnE,4BAA4B,sCAAsC;IAClE,0BAA0B,oCAAoC;IAC9D,8BAA8B,qCAAqC;IACnE,0BAA0B,oCAAoC;IAC9D,wBAAwB,kCAAkC;IAC1D,4BAA4B,mCAAmC;IAC/D,4BAA4B,sCAAsC;IAClE,0BAA0B,oCAAoC;IAC9D,8BAA8B,qCAAqC;IAEnE,YAAY,mBAAmB;IAC/B,YAAY,mBAAmB;IAE/B,UAAU,iBAAiB;IAC3B,eAAe,sBAAsB;IACrC,UAAU,iBAAiB;IAC3B,oBAAoB,2BAA2B;IAE/C,WAAW,kBAAkB;IAC7B,qBAAqB,4BAA4B;IACjD,sBAAsB,6BAA6B;IACnD,iBAAiB,wBAAwB;IACzC,iBAAiB,wBAAwB;IAEzC,mBAAmB,0BAA0B;IAC7C,sBAAsB,6BAA6B;IAEnD,wBAAwB,+BAA+B;IACvD,mBAAmB,0BAA0B;IAC7C,mBAAmB,0BAA0B;IAM7C,+BAA+B,sCAAsC;IACrE,yBAAyB,gCAAgC;CAC1D"}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* CSS custom properties
|
|
3
|
-
* react to playback timing
|
|
2
|
+
* CSS custom properties published on the rendered subtree so the
|
|
3
|
+
* consumer's stylesheet can react to playback timing and node
|
|
4
|
+
* structure, plus a small set the consumer writes back so the engine's
|
|
5
|
+
* baseline rules pick up per-sheet overrides.
|
|
6
|
+
*
|
|
7
|
+
* Each entry is owned by whichever side **writes** it; once published,
|
|
8
|
+
* any reader (engine baseline CSS, consumer template CSS, JS
|
|
9
|
+
* inspection) can pick it up.
|
|
4
10
|
*
|
|
5
11
|
* Naming:
|
|
6
12
|
* - `--on-<x>-starts` / `--on-<x>-ends` are *event timestamps*: they
|
|
@@ -9,15 +15,23 @@
|
|
|
9
15
|
* the past.
|
|
10
16
|
* - `--<x>-duration` is a *span*, not an event. It does not coincide
|
|
11
17
|
* with any moment, so it carries no `on-` prefix.
|
|
18
|
+
* - Structural metadata (letter index, character count, …) carries no
|
|
19
|
+
* `on-` prefix either — those are not events.
|
|
12
20
|
*/
|
|
13
21
|
export var CssVariable;
|
|
14
22
|
(function (CssVariable) {
|
|
23
|
+
// ── Engine-written ─────────────────────────────────────────────
|
|
24
|
+
// Published by the engine on every render. The consumer's
|
|
25
|
+
// stylesheet reads them through `var(...)` to drive animations,
|
|
26
|
+
// pick up structural metadata, or paint the video frame.
|
|
15
27
|
CssVariable["SECTION_STARTS"] = "--on-section-starts";
|
|
16
28
|
CssVariable["SECTION_ENDS"] = "--on-section-ends";
|
|
17
29
|
CssVariable["SECTION_DURATION"] = "--section-duration";
|
|
18
30
|
CssVariable["SEGMENT_STARTS"] = "--on-segment-starts";
|
|
19
31
|
CssVariable["SEGMENT_ENDS"] = "--on-segment-ends";
|
|
20
32
|
CssVariable["SEGMENT_DURATION"] = "--segment-duration";
|
|
33
|
+
CssVariable["SEGMENT_CHAR_COUNT"] = "--segment-char-count";
|
|
34
|
+
CssVariable["SEGMENT_INDEX"] = "--segment-index";
|
|
21
35
|
CssVariable["LINE_NOT_NARRATED_YET_STARTS"] = "--on-line-not-narrated-yet-starts";
|
|
22
36
|
CssVariable["LINE_NOT_NARRATED_YET_ENDS"] = "--on-line-not-narrated-yet-ends";
|
|
23
37
|
CssVariable["LINE_NOT_NARRATED_YET_DURATION"] = "--line-not-narrated-yet-duration";
|
|
@@ -38,10 +52,24 @@ export var CssVariable;
|
|
|
38
52
|
CssVariable["WORD_ALREADY_NARRATED_DURATION"] = "--word-already-narrated-duration";
|
|
39
53
|
CssVariable["LETTER_INDEX"] = "--letter-index";
|
|
40
54
|
CssVariable["LETTER_COUNT"] = "--letter-count";
|
|
55
|
+
CssVariable["WORD_INDEX"] = "--word-index";
|
|
56
|
+
CssVariable["WORD_CHAR_COUNT"] = "--word-char-count";
|
|
57
|
+
CssVariable["WORD_COUNT"] = "--word-count";
|
|
58
|
+
CssVariable["LAST_WORD_CHAR_COUNT"] = "--last-word-char-count";
|
|
41
59
|
CssVariable["VIDEO_FRAME"] = "--video-frame";
|
|
42
60
|
CssVariable["SUBTITLE_REGION_WIDTH"] = "--subtitle-region-width";
|
|
43
61
|
CssVariable["SUBTITLE_REGION_HEIGHT"] = "--subtitle-region-height";
|
|
44
62
|
CssVariable["SUBTITLE_REGION_X"] = "--subtitle-region-x";
|
|
45
63
|
CssVariable["SUBTITLE_REGION_Y"] = "--subtitle-region-y";
|
|
64
|
+
CssVariable["SEGMENT_PADDING_TOP"] = "--segment-padding-top";
|
|
65
|
+
CssVariable["SEGMENT_PADDING_BOTTOM"] = "--segment-padding-bottom";
|
|
66
|
+
CssVariable["BEHIND_ACTOR_SCENE_VALID"] = "--behind-actor-scene-valid";
|
|
67
|
+
CssVariable["BEHIND_ACTOR_FORCED"] = "--behind-actor-forced";
|
|
68
|
+
CssVariable["BEHIND_ACTOR_ACTIVE"] = "--behind-actor-active";
|
|
69
|
+
// ── Consumer-written ───────────────────────────────────────────
|
|
70
|
+
// The engine's baseline CSS reads these with sensible defaults;
|
|
71
|
+
// the consumer sets them per-sheet to override the default.
|
|
72
|
+
CssVariable["DECORATION_FONT_SIZE_MULTIPLIER"] = "--decoration-font-size-multiplier";
|
|
73
|
+
CssVariable["DECORATION_GAP_MULTIPLIER"] = "--decoration-gap-multiplier";
|
|
46
74
|
})(CssVariable || (CssVariable = {}));
|
|
47
75
|
//# sourceMappingURL=CssVariable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CssVariable.js","sourceRoot":"","sources":["../../../src/modules/document/CssVariable.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"CssVariable.js","sourceRoot":"","sources":["../../../src/modules/document/CssVariable.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAN,IAAY,WA+DX;AA/DD,WAAY,WAAW;IACrB,kEAAkE;IAClE,0DAA0D;IAC1D,gEAAgE;IAChE,yDAAyD;IAEzD,qDAAsC,CAAA;IACtC,iDAAkC,CAAA;IAClC,sDAAuC,CAAA;IAEvC,qDAAsC,CAAA;IACtC,iDAAkC,CAAA;IAClC,sDAAuC,CAAA;IACvC,0DAA2C,CAAA;IAC3C,gDAAiC,CAAA;IAEjC,iFAAkE,CAAA;IAClE,6EAA8D,CAAA;IAC9D,kFAAmE,CAAA;IACnE,6EAA8D,CAAA;IAC9D,yEAA0D,CAAA;IAC1D,8EAA+D,CAAA;IAC/D,iFAAkE,CAAA;IAClE,6EAA8D,CAAA;IAC9D,kFAAmE,CAAA;IAEnE,iFAAkE,CAAA;IAClE,6EAA8D,CAAA;IAC9D,kFAAmE,CAAA;IACnE,6EAA8D,CAAA;IAC9D,yEAA0D,CAAA;IAC1D,8EAA+D,CAAA;IAC/D,iFAAkE,CAAA;IAClE,6EAA8D,CAAA;IAC9D,kFAAmE,CAAA;IAEnE,8CAA+B,CAAA;IAC/B,8CAA+B,CAAA;IAE/B,0CAA2B,CAAA;IAC3B,oDAAqC,CAAA;IACrC,0CAA2B,CAAA;IAC3B,8DAA+C,CAAA;IAE/C,4CAA6B,CAAA;IAC7B,gEAAiD,CAAA;IACjD,kEAAmD,CAAA;IACnD,wDAAyC,CAAA;IACzC,wDAAyC,CAAA;IAEzC,4DAA6C,CAAA;IAC7C,kEAAmD,CAAA;IAEnD,sEAAuD,CAAA;IACvD,4DAA6C,CAAA;IAC7C,4DAA6C,CAAA;IAE7C,kEAAkE;IAClE,gEAAgE;IAChE,4DAA4D;IAE5D,oFAAqE,CAAA;IACrE,wEAAyD,CAAA;AAC3D,CAAC,EA/DW,WAAW,KAAX,WAAW,QA+DtB"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { TimeFragment } from '../document/TimeFragment';
|
|
2
|
+
export interface DecorationProps {
|
|
3
|
+
readonly id: string;
|
|
4
|
+
readonly glyph: string;
|
|
5
|
+
/** Effective time window. When `null`, callers fall back to the host word's time. */
|
|
6
|
+
readonly customTime?: TimeFragment | null | undefined;
|
|
7
|
+
/**
|
|
8
|
+
* Trailing text rendered next to the glyph, outside the decoration's
|
|
9
|
+
* own style scope so it inherits the host word's typography.
|
|
10
|
+
*/
|
|
11
|
+
readonly trail?: string | undefined;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Render-time context the decoration needs from its ancestors. The
|
|
15
|
+
* owning segment's window and the host word's window are supplied by
|
|
16
|
+
* whoever iterates the tree.
|
|
17
|
+
*/
|
|
18
|
+
export interface DecorationRenderContext {
|
|
19
|
+
readonly segTime: TimeFragment;
|
|
20
|
+
readonly wordTime: TimeFragment;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* A non-textual glyph attached to a word. Carries its own id so it can
|
|
24
|
+
* be addressed as an independent target for per-element overrides
|
|
25
|
+
* (size, position, rotation) and interaction bindings without becoming
|
|
26
|
+
* a separate Word in the document hierarchy.
|
|
27
|
+
*
|
|
28
|
+
* The id is opaque; callers pick an encoding stable across document
|
|
29
|
+
* re-derivation.
|
|
30
|
+
*/
|
|
31
|
+
export declare class Decoration {
|
|
32
|
+
static readonly CSS_CLASS = "word-decoration";
|
|
33
|
+
readonly id: string;
|
|
34
|
+
readonly glyph: string;
|
|
35
|
+
readonly customTime: TimeFragment | null;
|
|
36
|
+
readonly trail: string;
|
|
37
|
+
constructor(props: DecorationProps);
|
|
38
|
+
/** The `--on-word-*` time variables driven by this decoration's effective time. Falls back to `ctx.wordTime` when no `customTime` is set. */
|
|
39
|
+
getCssVariables(currentTime: number, ctx: DecorationRenderContext): Record<string, string>;
|
|
40
|
+
with(changes: Partial<DecorationProps>): Decoration;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=Decoration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Decoration.d.ts","sourceRoot":"","sources":["../../../src/modules/document/Decoration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAG9D,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,qFAAqF;IACrF,QAAQ,CAAC,UAAU,CAAC,EAAE,YAAY,GAAG,IAAI,GAAG,SAAS,CAAC;IACtD;;;OAGG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACrC;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;CACjC;AAED;;;;;;;;GAQG;AACH,qBAAa,UAAU;IACrB,MAAM,CAAC,QAAQ,CAAC,SAAS,qBAAqB;IAE9C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,YAAY,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBAEX,KAAK,EAAE,eAAe;IAOlC,6IAA6I;IAC7I,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,uBAAuB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAqB1F,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU;CASpD"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { CssVariable } from '../document/CssVariable';
|
|
2
|
+
/**
|
|
3
|
+
* A non-textual glyph attached to a word. Carries its own id so it can
|
|
4
|
+
* be addressed as an independent target for per-element overrides
|
|
5
|
+
* (size, position, rotation) and interaction bindings without becoming
|
|
6
|
+
* a separate Word in the document hierarchy.
|
|
7
|
+
*
|
|
8
|
+
* The id is opaque; callers pick an encoding stable across document
|
|
9
|
+
* re-derivation.
|
|
10
|
+
*/
|
|
11
|
+
export class Decoration {
|
|
12
|
+
static CSS_CLASS = 'word-decoration';
|
|
13
|
+
id;
|
|
14
|
+
glyph;
|
|
15
|
+
customTime;
|
|
16
|
+
trail;
|
|
17
|
+
constructor(props) {
|
|
18
|
+
this.id = props.id;
|
|
19
|
+
this.glyph = props.glyph;
|
|
20
|
+
this.customTime = props.customTime ?? null;
|
|
21
|
+
this.trail = props.trail ?? '';
|
|
22
|
+
}
|
|
23
|
+
/** The `--on-word-*` time variables driven by this decoration's effective time. Falls back to `ctx.wordTime` when no `customTime` is set. */
|
|
24
|
+
getCssVariables(currentTime, ctx) {
|
|
25
|
+
const segStart = ctx.segTime.start;
|
|
26
|
+
const segEnd = ctx.segTime.end;
|
|
27
|
+
const effective = this.customTime ?? ctx.wordTime;
|
|
28
|
+
const start = effective.start;
|
|
29
|
+
const end = effective.end;
|
|
30
|
+
return {
|
|
31
|
+
[CssVariable.WORD_NOT_NARRATED_YET_STARTS]: `${(segStart - currentTime).toFixed(3)}s`,
|
|
32
|
+
[CssVariable.WORD_NOT_NARRATED_YET_ENDS]: `${(start - currentTime).toFixed(3)}s`,
|
|
33
|
+
[CssVariable.WORD_NOT_NARRATED_YET_DURATION]: `${(start - segStart).toFixed(3)}s`,
|
|
34
|
+
[CssVariable.WORD_BEING_NARRATED_STARTS]: `${(start - currentTime).toFixed(3)}s`,
|
|
35
|
+
[CssVariable.WORD_BEING_NARRATED_ENDS]: `${(end - currentTime).toFixed(3)}s`,
|
|
36
|
+
[CssVariable.WORD_BEING_NARRATED_DURATION]: `${(end - start).toFixed(3)}s`,
|
|
37
|
+
[CssVariable.WORD_ALREADY_NARRATED_STARTS]: `${(end - currentTime).toFixed(3)}s`,
|
|
38
|
+
[CssVariable.WORD_ALREADY_NARRATED_ENDS]: `${(segEnd - currentTime).toFixed(3)}s`,
|
|
39
|
+
[CssVariable.WORD_ALREADY_NARRATED_DURATION]: `${(segEnd - end).toFixed(3)}s`,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
with(changes) {
|
|
43
|
+
return new Decoration({
|
|
44
|
+
id: this.id,
|
|
45
|
+
glyph: this.glyph,
|
|
46
|
+
customTime: this.customTime,
|
|
47
|
+
trail: this.trail,
|
|
48
|
+
...changes,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=Decoration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Decoration.js","sourceRoot":"","sources":["../../../src/modules/document/Decoration.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAwB5D;;;;;;;;GAQG;AACH,MAAM,OAAO,UAAU;IACrB,MAAM,CAAU,SAAS,GAAG,iBAAiB,CAAC;IAErC,EAAE,CAAS;IACX,KAAK,CAAS;IACd,UAAU,CAAsB;IAChC,KAAK,CAAS;IAEvB,YAAY,KAAsB;QAChC,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC;QAC3C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;IACjC,CAAC;IAED,6IAA6I;IAC7I,eAAe,CAAC,WAAmB,EAAE,GAA4B;QAC/D,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC;QACnC,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;QAC/B,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC,QAAQ,CAAC;QAClD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QAC9B,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;QAC1B,OAAO;YACL,CAAC,WAAW,CAAC,4BAA4B,CAAC,EAAE,GAAG,CAAC,QAAQ,GAAG,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;YACrF,CAAC,WAAW,CAAC,0BAA0B,CAAC,EAAE,GAAG,CAAC,KAAK,GAAG,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;YAChF,CAAC,WAAW,CAAC,8BAA8B,CAAC,EAAE,GAAG,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;YAEjF,CAAC,WAAW,CAAC,0BAA0B,CAAC,EAAE,GAAG,CAAC,KAAK,GAAG,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;YAChF,CAAC,WAAW,CAAC,wBAAwB,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;YAC5E,CAAC,WAAW,CAAC,4BAA4B,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;YAE1E,CAAC,WAAW,CAAC,4BAA4B,CAAC,EAAE,GAAG,CAAC,GAAG,GAAG,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;YAChF,CAAC,WAAW,CAAC,0BAA0B,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;YACjF,CAAC,WAAW,CAAC,8BAA8B,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;SAC9E,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,OAAiC;QACpC,OAAO,IAAI,UAAU,CAAC;YACpB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,GAAG,OAAO;SACX,CAAC,CAAC;IACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Document.d.ts","sourceRoot":"","sources":["../../../src/modules/document/Document.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,OAAO;IACxC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAC1C,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;CACpD;AAED,qBAAa,QAAQ,CAAC,CAAC,GAAG,OAAO;IAC/B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;gBAE1B,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"Document.d.ts","sourceRoot":"","sources":["../../../src/modules/document/Document.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAEhE,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,OAAO;IACxC,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAC1C,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,aAAa,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;CACpD;AAED,qBAAa,QAAQ,CAAC,CAAC,GAAG,OAAO;IAC/B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAC1C,QAAQ,CAAC,QAAQ,EAAE,CAAC,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;gBAE1B,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;IAMnC,WAAW,IAAI,OAAO,EAAE;IAIxB,QAAQ,IAAI,IAAI,EAAE;IAIlB,QAAQ,IAAI,IAAI,EAAE;IAIlB,OAAO,IAAI,MAAM;IAIjB,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;IASrD;;;;OAIG;IACH,YAAY,CAAC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;IAO3D,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;IAIzC;;;;;;;;;;OAUG;IACH,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,EAAE;IAiBjD,8DAA8D;IAC9D,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,EAAE;CAKlD"}
|