@tscaps/engine 0.2.1 → 0.3.0
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 +13 -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
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
const KEYFRAME_NAME_RE = /@(?:-webkit-|-moz-)?keyframes\s+([a-zA-Z_-][a-zA-Z0-9_-]*)/g;
|
|
2
|
+
const SELECTOR_SPECIAL_CHARS_RE = /[.*+?^${}()|[\]\\]/g;
|
|
3
|
+
/**
|
|
4
|
+
* Renames every `@keyframes` in a stylesheet to a form unique to
|
|
5
|
+
* `key`, and rewrites the `animation-name` / `animation` references
|
|
6
|
+
* that point at them in step.
|
|
7
|
+
*
|
|
8
|
+
* Keyframe names are global to the document, so two stylesheets that
|
|
9
|
+
* both define `fade-in` silently share whichever one loaded last.
|
|
10
|
+
* Anything emitting more than one stylesheet into the same document —
|
|
11
|
+
* or more than one independently-authored block into the same
|
|
12
|
+
* stylesheet — has to pass its blocks through here first.
|
|
13
|
+
*
|
|
14
|
+
* `key` becomes part of a CSS identifier, so it must be spellable as
|
|
15
|
+
* one: letters, digits, `_` and `-`. A key carrying anything else turns
|
|
16
|
+
* every `@keyframes` it names into a syntax error, which costs the
|
|
17
|
+
* animations that referenced them and says nothing about why.
|
|
18
|
+
*/
|
|
19
|
+
export class CssKeyframeNamespacer {
|
|
20
|
+
namespace(css, key) {
|
|
21
|
+
const names = new Set();
|
|
22
|
+
for (const match of css.matchAll(KEYFRAME_NAME_RE))
|
|
23
|
+
names.add(match[1]);
|
|
24
|
+
if (names.size === 0)
|
|
25
|
+
return css;
|
|
26
|
+
let result = css;
|
|
27
|
+
for (const name of names) {
|
|
28
|
+
result = this.renameOne(result, name, `${name}-${key}`);
|
|
29
|
+
}
|
|
30
|
+
return result;
|
|
31
|
+
}
|
|
32
|
+
renameOne(css, name, renamed) {
|
|
33
|
+
const escaped = name.replace(SELECTOR_SPECIAL_CHARS_RE, '\\$&');
|
|
34
|
+
let result = css.replace(new RegExp(`(@(?:-webkit-|-moz-)?keyframes\\s+)${escaped}(?![\\w-])`, 'g'), `$1${renamed}`);
|
|
35
|
+
// Both `animation-name:` and the `animation:` shorthand can carry a
|
|
36
|
+
// comma-separated list of names. The rewrite scans the whole value
|
|
37
|
+
// range (between `:` and the next `;` or rule boundary) and replaces
|
|
38
|
+
// every whole-word occurrence, so the second entry in
|
|
39
|
+
// `animation-name: foo, bar` is reached. The value-bounded scope
|
|
40
|
+
// avoids touching a class or property elsewhere that happens to
|
|
41
|
+
// share the spelling.
|
|
42
|
+
const replaceInValue = (_m, prefix, value) => prefix + value.replace(new RegExp(`(?<![\\w-])${escaped}(?![\\w-])`, 'g'), renamed);
|
|
43
|
+
result = result.replace(/(animation-name\s*:\s*)([^;{}]*)/g, replaceInValue);
|
|
44
|
+
result = result.replace(/(animation\s*:\s*)([^;{}]*)/g, replaceInValue);
|
|
45
|
+
return result;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=CssKeyframeNamespacer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CssKeyframeNamespacer.js","sourceRoot":"","sources":["../../../src/modules/css/CssKeyframeNamespacer.ts"],"names":[],"mappings":"AAAA,MAAM,gBAAgB,GAAG,6DAA6D,CAAC;AACvF,MAAM,yBAAyB,GAAG,qBAAqB,CAAC;AAExD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,qBAAqB;IAChC,SAAS,CAAC,GAAW,EAAE,GAAW;QAChC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;QAChC,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;QACzE,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,GAAG,CAAC;QAEjC,IAAI,MAAM,GAAG,GAAG,CAAC;QACjB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,SAAS,CAAC,GAAW,EAAE,IAAY,EAAE,OAAe;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;QAChE,IAAI,MAAM,GAAG,GAAG,CAAC,OAAO,CACtB,IAAI,MAAM,CAAC,sCAAsC,OAAO,YAAY,EAAE,GAAG,CAAC,EAC1E,KAAK,OAAO,EAAE,CACf,CAAC;QACF,oEAAoE;QACpE,mEAAmE;QACnE,qEAAqE;QACrE,sDAAsD;QACtD,iEAAiE;QACjE,gEAAgE;QAChE,sBAAsB;QACtB,MAAM,cAAc,GAAG,CAAC,EAAU,EAAE,MAAc,EAAE,KAAa,EAAU,EAAE,CAC3E,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,cAAc,OAAO,YAAY,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;QACtF,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,mCAAmC,EAAE,cAAc,CAAC,CAAC;QAC7E,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,8BAA8B,EAAE,cAAc,CAAC,CAAC;QACxE,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Extracts `@keyframes` names from a stylesheet: the names it defines
|
|
3
|
+
* and the names its `animation` / `animation-name` declarations
|
|
4
|
+
* reference. Comparing the two sets finds animations that can never
|
|
5
|
+
* run because their keyframes are missing.
|
|
6
|
+
*
|
|
7
|
+
* Cheap regex scan rather than a CSS parse; pass the source through
|
|
8
|
+
* {@link CssMinifier} first so commented-out rules don't count.
|
|
9
|
+
* Function tokens (`cubic-bezier(…)`, `var(…)`, `steps(…)`) and
|
|
10
|
+
* shorthand keywords are excluded from references, so what remains is
|
|
11
|
+
* the author-chosen names.
|
|
12
|
+
*/
|
|
13
|
+
export declare class CssKeyframesScanner {
|
|
14
|
+
definedNames(css: string): Set<string>;
|
|
15
|
+
referencedNames(css: string): Set<string>;
|
|
16
|
+
/**
|
|
17
|
+
* Clears what sits between a function's parentheses while keeping the
|
|
18
|
+
* parentheses themselves, so `steps(2, end)` becomes `steps()`.
|
|
19
|
+
* Arguments can hold bare identifiers — `end` and `start` in
|
|
20
|
+
* `steps()`, `jump-none` and friends — that are indistinguishable
|
|
21
|
+
* from a keyframes name once the enclosing call is gone. Keeping the
|
|
22
|
+
* `(` lets the function's own name still be recognised as a function
|
|
23
|
+
* rather than collected as a reference.
|
|
24
|
+
*/
|
|
25
|
+
private emptyFunctionArguments;
|
|
26
|
+
private collectNameTokens;
|
|
27
|
+
private isFunctionToken;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=CssKeyframesScanner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CssKeyframesScanner.d.ts","sourceRoot":"","sources":["../../../src/modules/css/CssKeyframesScanner.ts"],"names":[],"mappings":"AAgCA;;;;;;;;;;;GAWG;AACH,qBAAa,mBAAmB;IAE9B,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAQtC,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAQzC;;;;;;;;OAQG;IACH,OAAO,CAAC,sBAAsB;IAiB9B,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,eAAe;CAGxB"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
const DEFINITION_PATTERN = /@(?:-webkit-|-moz-)?keyframes\s+([a-zA-Z_-][a-zA-Z0-9_-]*)/g;
|
|
2
|
+
const ANIMATION_VALUE_PATTERN = /(?:animation-name|animation)\s*:\s*([^;{}]*)/g;
|
|
3
|
+
const IDENT_PATTERN = /(?<![\w.#-])-?[a-zA-Z_][a-zA-Z0-9_-]*/g;
|
|
4
|
+
/** Value tokens that are animation shorthand keywords, never a keyframes name. */
|
|
5
|
+
const ANIMATION_VALUE_KEYWORDS = new Set([
|
|
6
|
+
'none',
|
|
7
|
+
'linear',
|
|
8
|
+
'ease',
|
|
9
|
+
'ease-in',
|
|
10
|
+
'ease-out',
|
|
11
|
+
'ease-in-out',
|
|
12
|
+
'step-start',
|
|
13
|
+
'step-end',
|
|
14
|
+
'infinite',
|
|
15
|
+
'normal',
|
|
16
|
+
'reverse',
|
|
17
|
+
'alternate',
|
|
18
|
+
'alternate-reverse',
|
|
19
|
+
'forwards',
|
|
20
|
+
'backwards',
|
|
21
|
+
'both',
|
|
22
|
+
'running',
|
|
23
|
+
'paused',
|
|
24
|
+
'inherit',
|
|
25
|
+
'initial',
|
|
26
|
+
'unset',
|
|
27
|
+
'revert',
|
|
28
|
+
'revert-layer',
|
|
29
|
+
'important',
|
|
30
|
+
]);
|
|
31
|
+
/**
|
|
32
|
+
* Extracts `@keyframes` names from a stylesheet: the names it defines
|
|
33
|
+
* and the names its `animation` / `animation-name` declarations
|
|
34
|
+
* reference. Comparing the two sets finds animations that can never
|
|
35
|
+
* run because their keyframes are missing.
|
|
36
|
+
*
|
|
37
|
+
* Cheap regex scan rather than a CSS parse; pass the source through
|
|
38
|
+
* {@link CssMinifier} first so commented-out rules don't count.
|
|
39
|
+
* Function tokens (`cubic-bezier(…)`, `var(…)`, `steps(…)`) and
|
|
40
|
+
* shorthand keywords are excluded from references, so what remains is
|
|
41
|
+
* the author-chosen names.
|
|
42
|
+
*/
|
|
43
|
+
export class CssKeyframesScanner {
|
|
44
|
+
definedNames(css) {
|
|
45
|
+
const found = new Set();
|
|
46
|
+
for (const match of css.matchAll(DEFINITION_PATTERN)) {
|
|
47
|
+
found.add(match[1]);
|
|
48
|
+
}
|
|
49
|
+
return found;
|
|
50
|
+
}
|
|
51
|
+
referencedNames(css) {
|
|
52
|
+
const found = new Set();
|
|
53
|
+
for (const declaration of css.matchAll(ANIMATION_VALUE_PATTERN)) {
|
|
54
|
+
this.collectNameTokens(this.emptyFunctionArguments(declaration[1]), found);
|
|
55
|
+
}
|
|
56
|
+
return found;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Clears what sits between a function's parentheses while keeping the
|
|
60
|
+
* parentheses themselves, so `steps(2, end)` becomes `steps()`.
|
|
61
|
+
* Arguments can hold bare identifiers — `end` and `start` in
|
|
62
|
+
* `steps()`, `jump-none` and friends — that are indistinguishable
|
|
63
|
+
* from a keyframes name once the enclosing call is gone. Keeping the
|
|
64
|
+
* `(` lets the function's own name still be recognised as a function
|
|
65
|
+
* rather than collected as a reference.
|
|
66
|
+
*/
|
|
67
|
+
emptyFunctionArguments(value) {
|
|
68
|
+
let depth = 0;
|
|
69
|
+
let out = '';
|
|
70
|
+
for (const char of value) {
|
|
71
|
+
if (char === '(') {
|
|
72
|
+
depth++;
|
|
73
|
+
if (depth === 1)
|
|
74
|
+
out += char;
|
|
75
|
+
}
|
|
76
|
+
else if (char === ')') {
|
|
77
|
+
if (depth === 1)
|
|
78
|
+
out += char;
|
|
79
|
+
if (depth > 0)
|
|
80
|
+
depth--;
|
|
81
|
+
}
|
|
82
|
+
else if (depth === 0) {
|
|
83
|
+
out += char;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return out;
|
|
87
|
+
}
|
|
88
|
+
collectNameTokens(value, found) {
|
|
89
|
+
for (const match of value.matchAll(IDENT_PATTERN)) {
|
|
90
|
+
const token = match[0];
|
|
91
|
+
if (ANIMATION_VALUE_KEYWORDS.has(token))
|
|
92
|
+
continue;
|
|
93
|
+
if (this.isFunctionToken(value, match.index + token.length))
|
|
94
|
+
continue;
|
|
95
|
+
found.add(token);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
isFunctionToken(value, indexAfterToken) {
|
|
99
|
+
return value[indexAfterToken] === '(';
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=CssKeyframesScanner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CssKeyframesScanner.js","sourceRoot":"","sources":["../../../src/modules/css/CssKeyframesScanner.ts"],"names":[],"mappings":"AAAA,MAAM,kBAAkB,GAAG,6DAA6D,CAAC;AACzF,MAAM,uBAAuB,GAAG,+CAA+C,CAAC;AAChF,MAAM,aAAa,GAAG,wCAAwC,CAAC;AAE/D,kFAAkF;AAClF,MAAM,wBAAwB,GAAwB,IAAI,GAAG,CAAC;IAC5D,MAAM;IACN,QAAQ;IACR,MAAM;IACN,SAAS;IACT,UAAU;IACV,aAAa;IACb,YAAY;IACZ,UAAU;IACV,UAAU;IACV,QAAQ;IACR,SAAS;IACT,WAAW;IACX,mBAAmB;IACnB,UAAU;IACV,WAAW;IACX,MAAM;IACN,SAAS;IACT,QAAQ;IACR,SAAS;IACT,SAAS;IACT,OAAO;IACP,QAAQ;IACR,cAAc;IACd,WAAW;CACZ,CAAC,CAAC;AAEH;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,mBAAmB;IAE9B,YAAY,CAAC,GAAW;QACtB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;QAChC,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACrD,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;QACvB,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,eAAe,CAAC,GAAW;QACzB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;QAChC,KAAK,MAAM,WAAW,IAAI,GAAG,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;YAChE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QAC9E,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;;OAQG;IACK,sBAAsB,CAAC,KAAa;QAC1C,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACjB,KAAK,EAAE,CAAC;gBACR,IAAI,KAAK,KAAK,CAAC;oBAAE,GAAG,IAAI,IAAI,CAAC;YAC/B,CAAC;iBAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACxB,IAAI,KAAK,KAAK,CAAC;oBAAE,GAAG,IAAI,IAAI,CAAC;gBAC7B,IAAI,KAAK,GAAG,CAAC;oBAAE,KAAK,EAAE,CAAC;YACzB,CAAC;iBAAM,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBACvB,GAAG,IAAI,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,iBAAiB,CAAC,KAAa,EAAE,KAAkB;QACzD,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YAClD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACvB,IAAI,wBAAwB,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,SAAS;YAClD,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;gBAAE,SAAS;YACtE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC;IACH,CAAC;IAEO,eAAe,CAAC,KAAa,EAAE,eAAuB;QAC5D,OAAO,KAAK,CAAC,eAAe,CAAC,KAAK,GAAG,CAAC;IACxC,CAAC;CACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cascade layers the framework publishes as part of its stylesheet
|
|
3
|
+
* contract, mirroring how `CssClass` names the published classes.
|
|
4
|
+
*
|
|
5
|
+
* Only the framework's own layer is named here. A consumer that wants
|
|
6
|
+
* its stylesheets to lose to the framework's `!important` rules and win
|
|
7
|
+
* over its normal ones puts them in layers of its own, declared after
|
|
8
|
+
* this one — layers are ordered by first appearance, and the framework
|
|
9
|
+
* baseline is emitted first.
|
|
10
|
+
*
|
|
11
|
+
* The layer is load-bearing rather than cosmetic. Cascade order puts
|
|
12
|
+
* unlayered `!important` declarations *below* layered ones, so a
|
|
13
|
+
* framework rule left outside a layer would lose to any `!important` a
|
|
14
|
+
* consumer writes — including the frozen-frame rule that makes a
|
|
15
|
+
* rendered frame a function of the playhead.
|
|
16
|
+
*/
|
|
17
|
+
export declare enum CssLayer {
|
|
18
|
+
FRAMEWORK = "tscaps-framework"
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=CssLayer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CssLayer.d.ts","sourceRoot":"","sources":["../../../src/modules/css/CssLayer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,oBAAY,QAAQ;IAClB,SAAS,qBAAqB;CAC/B"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cascade layers the framework publishes as part of its stylesheet
|
|
3
|
+
* contract, mirroring how `CssClass` names the published classes.
|
|
4
|
+
*
|
|
5
|
+
* Only the framework's own layer is named here. A consumer that wants
|
|
6
|
+
* its stylesheets to lose to the framework's `!important` rules and win
|
|
7
|
+
* over its normal ones puts them in layers of its own, declared after
|
|
8
|
+
* this one — layers are ordered by first appearance, and the framework
|
|
9
|
+
* baseline is emitted first.
|
|
10
|
+
*
|
|
11
|
+
* The layer is load-bearing rather than cosmetic. Cascade order puts
|
|
12
|
+
* unlayered `!important` declarations *below* layered ones, so a
|
|
13
|
+
* framework rule left outside a layer would lose to any `!important` a
|
|
14
|
+
* consumer writes — including the frozen-frame rule that makes a
|
|
15
|
+
* rendered frame a function of the playhead.
|
|
16
|
+
*/
|
|
17
|
+
export var CssLayer;
|
|
18
|
+
(function (CssLayer) {
|
|
19
|
+
CssLayer["FRAMEWORK"] = "tscaps-framework";
|
|
20
|
+
})(CssLayer || (CssLayer = {}));
|
|
21
|
+
//# sourceMappingURL=CssLayer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CssLayer.js","sourceRoot":"","sources":["../../../src/modules/css/CssLayer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAN,IAAY,QAEX;AAFD,WAAY,QAAQ;IAClB,0CAA8B,CAAA;AAChC,CAAC,EAFW,QAAQ,KAAR,QAAQ,QAEnB"}
|
|
@@ -14,15 +14,24 @@
|
|
|
14
14
|
* (e.g. `.my-scope`); its identifier portion seeds the keyframe rename.
|
|
15
15
|
*/
|
|
16
16
|
export declare class CssScoper {
|
|
17
|
+
private readonly keyframeNamespacer;
|
|
17
18
|
scope(css: string, scopeSelector: string): string;
|
|
18
|
-
private scopeKeyframes;
|
|
19
19
|
private scopeSelectorsInRange;
|
|
20
20
|
private scopeAtRuleBody;
|
|
21
21
|
private scopeCompoundSelector;
|
|
22
22
|
private isWhitespace;
|
|
23
23
|
private isCommentStart;
|
|
24
24
|
private findCommentEnd;
|
|
25
|
-
|
|
25
|
+
/**
|
|
26
|
+
* Locates the boundary that ends the current top-level construct:
|
|
27
|
+
* `{` opens a rule block, `;` terminates a statement-form at-rule
|
|
28
|
+
* (`@charset`, `@import`, `@namespace`, `@layer name;`), and `end`
|
|
29
|
+
* means the range was consumed without either.
|
|
30
|
+
*
|
|
31
|
+
* Skips over string literals and CSS comments so a `;` inside a
|
|
32
|
+
* `url("…")` or a commented-out block doesn't fool the caller.
|
|
33
|
+
*/
|
|
34
|
+
private findRuleTerminator;
|
|
26
35
|
private isAtRuleHeader;
|
|
27
36
|
private extractAtRuleName;
|
|
28
37
|
/**
|
|
@@ -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":"AAuBA;;;;;;;;;;;;;;GAcG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA+B;IAElE,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM;IAKjD,OAAO,CAAC,qBAAqB;IA8C7B,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,cAAc;IAKtB;;;;;;;;OAQG;IACH,OAAO,CAAC,kBAAkB;IAoB1B,OAAO,CAAC,cAAc;IAItB,OAAO,CAAC,iBAAiB;IAKzB;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;CAyB1B"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
import { CssKeyframeNamespacer } from '../css/CssKeyframeNamespacer';
|
|
2
2
|
const AT_RULE_NAME_RE = /^@([a-zA-Z][a-zA-Z0-9-]*)/;
|
|
3
|
-
const SELECTOR_SPECIAL_CHARS_RE = /[.*+?^${}()|[\]\\]/g;
|
|
4
3
|
/** At-rules whose body holds regular style rules — selectors inside must be scoped. */
|
|
5
4
|
const SCOPEABLE_AT_RULES = new Set([
|
|
6
5
|
'container',
|
|
@@ -9,7 +8,6 @@ const SCOPEABLE_AT_RULES = new Set([
|
|
|
9
8
|
'layer',
|
|
10
9
|
'scope',
|
|
11
10
|
]);
|
|
12
|
-
const escapeRegex = (s) => s.replace(SELECTOR_SPECIAL_CHARS_RE, '\\$&');
|
|
13
11
|
/**
|
|
14
12
|
* Scopes a CSS string so it can coexist with sibling stylesheets in
|
|
15
13
|
* the same document. Top-level selectors get prefixed with
|
|
@@ -26,33 +24,10 @@ const escapeRegex = (s) => s.replace(SELECTOR_SPECIAL_CHARS_RE, '\\$&');
|
|
|
26
24
|
* (e.g. `.my-scope`); its identifier portion seeds the keyframe rename.
|
|
27
25
|
*/
|
|
28
26
|
export class CssScoper {
|
|
27
|
+
keyframeNamespacer = new CssKeyframeNamespacer();
|
|
29
28
|
scope(css, scopeSelector) {
|
|
30
29
|
const scopeKey = scopeSelector.replace(/^\.+/, '');
|
|
31
|
-
return this.scopeSelectorsInRange(this.
|
|
32
|
-
}
|
|
33
|
-
scopeKeyframes(css, scopeKey) {
|
|
34
|
-
const names = new Set();
|
|
35
|
-
for (const m of css.matchAll(KEYFRAME_NAME_RE))
|
|
36
|
-
names.add(m[1]);
|
|
37
|
-
if (names.size === 0)
|
|
38
|
-
return css;
|
|
39
|
-
let result = css;
|
|
40
|
-
for (const name of names) {
|
|
41
|
-
const scopedName = `${name}-${scopeKey}`;
|
|
42
|
-
const esc = escapeRegex(name);
|
|
43
|
-
result = result.replace(new RegExp(`(@(?:-webkit-|-moz-)?keyframes\\s+)${esc}(?![\\w-])`, 'g'), `$1${scopedName}`);
|
|
44
|
-
// Both `animation-name:` and the `animation:` shorthand can carry a
|
|
45
|
-
// comma-separated list of names. The rewrite scans the whole value
|
|
46
|
-
// range (between `:` and the next `;` or rule boundary) and replaces
|
|
47
|
-
// every whole-word occurrence, so the second entry in
|
|
48
|
-
// `animation-name: foo, bar` is reached. The value-bounded scope
|
|
49
|
-
// avoids touching a class or property elsewhere that happens to
|
|
50
|
-
// share the spelling.
|
|
51
|
-
const replaceInValue = (_m, prefix, value) => prefix + value.replace(new RegExp(`(?<![\\w-])${esc}(?![\\w-])`, 'g'), scopedName);
|
|
52
|
-
result = result.replace(/(animation-name\s*:\s*)([^;{}]*)/g, replaceInValue);
|
|
53
|
-
result = result.replace(/(animation\s*:\s*)([^;{}]*)/g, replaceInValue);
|
|
54
|
-
}
|
|
55
|
-
return result;
|
|
30
|
+
return this.scopeSelectorsInRange(this.keyframeNamespacer.namespace(css, scopeKey), 0, undefined, scopeSelector);
|
|
56
31
|
}
|
|
57
32
|
scopeSelectorsInRange(css, start, end, scopeSelector) {
|
|
58
33
|
const stopAt = end ?? css.length;
|
|
@@ -71,13 +46,20 @@ export class CssScoper {
|
|
|
71
46
|
i = commentEnd;
|
|
72
47
|
continue;
|
|
73
48
|
}
|
|
74
|
-
const
|
|
75
|
-
if (
|
|
49
|
+
const { index: ruleEnd, kind } = this.findRuleTerminator(css, i, stopAt);
|
|
50
|
+
if (kind === 'end') {
|
|
76
51
|
result += css.slice(i, stopAt);
|
|
77
52
|
return result;
|
|
78
53
|
}
|
|
79
|
-
|
|
80
|
-
|
|
54
|
+
if (kind === 'semi') {
|
|
55
|
+
// Statement-form at-rule (`@charset`, `@import`, `@namespace`,
|
|
56
|
+
// `@layer name;`): no block to scope, emit as-is and advance.
|
|
57
|
+
result += css.slice(i, ruleEnd + 1);
|
|
58
|
+
i = ruleEnd + 1;
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
const header = css.slice(i, ruleEnd);
|
|
62
|
+
const bodyStart = ruleEnd + 1;
|
|
81
63
|
const bodyEnd = this.findMatchingClose(css, bodyStart, stopAt);
|
|
82
64
|
if (this.isAtRuleHeader(header)) {
|
|
83
65
|
result += `${header}{`;
|
|
@@ -117,12 +99,46 @@ export class CssScoper {
|
|
|
117
99
|
const closeIndex = css.indexOf('*/', commentStart + 2);
|
|
118
100
|
return closeIndex === -1 || closeIndex >= stopAt ? stopAt : closeIndex + 2;
|
|
119
101
|
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
102
|
+
/**
|
|
103
|
+
* Locates the boundary that ends the current top-level construct:
|
|
104
|
+
* `{` opens a rule block, `;` terminates a statement-form at-rule
|
|
105
|
+
* (`@charset`, `@import`, `@namespace`, `@layer name;`), and `end`
|
|
106
|
+
* means the range was consumed without either.
|
|
107
|
+
*
|
|
108
|
+
* Skips over string literals and CSS comments so a `;` inside a
|
|
109
|
+
* `url("…")` or a commented-out block doesn't fool the caller.
|
|
110
|
+
*/
|
|
111
|
+
findRuleTerminator(css, start, stopAt) {
|
|
112
|
+
let i = start;
|
|
113
|
+
let stringDelim = null;
|
|
114
|
+
while (i < stopAt) {
|
|
115
|
+
const ch = css[i];
|
|
116
|
+
if (stringDelim) {
|
|
117
|
+
if (ch === '\\' && i + 1 < stopAt) {
|
|
118
|
+
i += 2;
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
if (ch === stringDelim)
|
|
122
|
+
stringDelim = null;
|
|
123
|
+
i++;
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
if (ch === '"' || ch === '\'') {
|
|
127
|
+
stringDelim = ch;
|
|
128
|
+
i++;
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
if (this.isCommentStart(css, i)) {
|
|
132
|
+
i = this.findCommentEnd(css, i, stopAt);
|
|
133
|
+
continue;
|
|
134
|
+
}
|
|
135
|
+
if (ch === '{')
|
|
136
|
+
return { index: i, kind: 'brace' };
|
|
137
|
+
if (ch === ';')
|
|
138
|
+
return { index: i, kind: 'semi' };
|
|
139
|
+
i++;
|
|
124
140
|
}
|
|
125
|
-
return stopAt;
|
|
141
|
+
return { index: stopAt, kind: 'end' };
|
|
126
142
|
}
|
|
127
143
|
isAtRuleHeader(header) {
|
|
128
144
|
return header.trimStart().startsWith('@');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CssScoper.js","sourceRoot":"","sources":["../../../src/modules/css/CssScoper.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"CssScoper.js","sourceRoot":"","sources":["../../../src/modules/css/CssScoper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,MAAM,eAAe,GAAG,2BAA2B,CAAC;AAEpD,uFAAuF;AACvF,MAAM,kBAAkB,GAAwB,IAAI,GAAG,CAAC;IACtD,WAAW;IACX,OAAO;IACP,UAAU;IACV,OAAO;IACP,OAAO;CACR,CAAC,CAAC;AAaH;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,SAAS;IACH,kBAAkB,GAAG,IAAI,qBAAqB,EAAE,CAAC;IAElE,KAAK,CAAC,GAAW,EAAE,aAAqB;QACtC,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IACnH,CAAC;IAEO,qBAAqB,CAC3B,GAAW,EACX,KAAa,EACb,GAAuB,EACvB,aAAqB;QAErB,MAAM,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC;QACjC,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,GAAG,KAAK,CAAC;QACd,OAAO,CAAC,GAAG,MAAM,EAAE,CAAC;YAClB,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;YACnB,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC;gBAAC,MAAM,IAAI,EAAE,CAAC;gBAAC,CAAC,EAAE,CAAC;gBAAC,SAAS;YAAC,CAAC;YAC3D,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;gBAChC,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;gBACvD,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;gBACnC,CAAC,GAAG,UAAU,CAAC;gBACf,SAAS;YACX,CAAC;YACD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;YACzE,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;gBAAC,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBAAC,OAAO,MAAM,CAAC;YAAC,CAAC;YACtE,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBACpB,+DAA+D;gBAC/D,8DAA8D;gBAC9D,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;gBACpC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC;gBAChB,SAAS;YACX,CAAC;YAED,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACrC,MAAM,SAAS,GAAG,OAAO,GAAG,CAAC,CAAC;YAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;YAE/D,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;gBAChC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC;gBACvB,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;gBAC/E,MAAM,IAAI,GAAG,CAAC;YAChB,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,CAAC;gBACnE,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBACxC,MAAM,IAAI,GAAG,CAAC;YAChB,CAAC;YACD,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,eAAe,CACrB,GAAW,EACX,SAAiB,EACjB,OAAe,EACf,MAAc,EACd,aAAqB;QAErB,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,qBAAqB,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAEO,qBAAqB,CAAC,QAAgB,EAAE,aAAqB;QACnE,OAAO,QAAQ;aACZ,IAAI,EAAE;aACN,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,aAAa,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;aAC1C,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC;IAEO,YAAY,CAAC,EAAU;QAC7B,OAAO,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,CAAC;IAChF,CAAC;IAEO,cAAc,CAAC,GAAW,EAAE,CAAS;QAC3C,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC;IAC9C,CAAC;IAEO,cAAc,CAAC,GAAW,EAAE,YAAoB,EAAE,MAAc;QACtE,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;QACvD,OAAO,UAAU,KAAK,CAAC,CAAC,IAAI,UAAU,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC;IAC7E,CAAC;IAED;;;;;;;;OAQG;IACK,kBAAkB,CAAC,GAAW,EAAE,KAAa,EAAE,MAAc;QACnE,IAAI,CAAC,GAAG,KAAK,CAAC;QACd,IAAI,WAAW,GAAqB,IAAI,CAAC;QACzC,OAAO,CAAC,GAAG,MAAM,EAAE,CAAC;YAClB,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;YACnB,IAAI,WAAW,EAAE,CAAC;gBAChB,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC;oBAAC,CAAC,IAAI,CAAC,CAAC;oBAAC,SAAS;gBAAC,CAAC;gBACxD,IAAI,EAAE,KAAK,WAAW;oBAAE,WAAW,GAAG,IAAI,CAAC;gBAC3C,CAAC,EAAE,CAAC;gBACJ,SAAS;YACX,CAAC;YACD,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBAAC,WAAW,GAAG,EAAE,CAAC;gBAAC,CAAC,EAAE,CAAC;gBAAC,SAAS;YAAC,CAAC;YACnE,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;gBAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;gBAAC,SAAS;YAAC,CAAC;YACvF,IAAI,EAAE,KAAK,GAAG;gBAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YACnD,IAAI,EAAE,KAAK,GAAG;gBAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YAClD,CAAC,EAAE,CAAC;QACN,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACxC,CAAC;IAEO,cAAc,CAAC,MAAc;QACnC,OAAO,MAAM,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC;IAEO,iBAAiB,CAAC,MAAc;QACtC,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACxD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9C,CAAC;IAED;;;;;OAKG;IACK,iBAAiB,CAAC,GAAW,EAAE,KAAa,EAAE,MAAc;QAClE,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,GAAG,KAAK,CAAC;QACd,IAAI,WAAW,GAAqB,IAAI,CAAC;QACzC,OAAO,CAAC,GAAG,MAAM,EAAE,CAAC;YAClB,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAE,CAAC;YACnB,IAAI,WAAW,EAAE,CAAC;gBAChB,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC;oBAAC,CAAC,IAAI,CAAC,CAAC;oBAAC,SAAS;gBAAC,CAAC;gBACxD,IAAI,EAAE,KAAK,WAAW;oBAAE,WAAW,GAAG,IAAI,CAAC;gBAC3C,CAAC,EAAE,CAAC;gBACJ,SAAS;YACX,CAAC;YACD,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBAAC,WAAW,GAAG,EAAE,CAAC;gBAAC,CAAC,EAAE,CAAC;gBAAC,SAAS;YAAC,CAAC;YACnE,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;gBAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;gBAAC,SAAS;YAAC,CAAC;YACvF,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBAAC,KAAK,EAAE,CAAC;gBAAC,CAAC,EAAE,CAAC;gBAAC,SAAS;YAAC,CAAC;YAC3C,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBACf,KAAK,EAAE,CAAC;gBACR,IAAI,KAAK,KAAK,CAAC;oBAAE,OAAO,CAAC,CAAC;gBAC1B,CAAC,EAAE,CAAC;gBACJ,SAAS;YACX,CAAC;YACD,CAAC,EAAE,CAAC;QACN,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns every class name used in rule selectors across the given
|
|
3
|
+
* source. `@keyframes` bodies are skipped entirely (their selectors
|
|
4
|
+
* are offsets, not element selectors); every other at-rule body is
|
|
5
|
+
* scanned recursively so selectors inside `@container` / `@media` /
|
|
6
|
+
* `@supports` blocks are covered.
|
|
7
|
+
*
|
|
8
|
+
* Only selector headers are scanned — declaration bodies are not, so
|
|
9
|
+
* a dot inside a value (`url(image.png)`) never registers. Pass the
|
|
10
|
+
* source through {@link CssMinifier} first so commented-out rules
|
|
11
|
+
* don't count. Selectors nested inside style-rule bodies (native CSS
|
|
12
|
+
* nesting) are not scanned.
|
|
13
|
+
*/
|
|
14
|
+
export declare class CssSelectorClassScanner {
|
|
15
|
+
scan(css: string): Set<string>;
|
|
16
|
+
private scanRange;
|
|
17
|
+
private collectClasses;
|
|
18
|
+
/**
|
|
19
|
+
* Index of the `}` closing the block opened just before `start`.
|
|
20
|
+
* String literals are respected so braces inside them don't shift
|
|
21
|
+
* the depth. Falls back to `end` when the block is unterminated.
|
|
22
|
+
*/
|
|
23
|
+
private findMatchingClose;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=CssSelectorClassScanner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CssSelectorClassScanner.d.ts","sourceRoot":"","sources":["../../../src/modules/css/CssSelectorClassScanner.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;GAYG;AACH,qBAAa,uBAAuB;IAElC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAM9B,OAAO,CAAC,SAAS;IAmBjB,OAAO,CAAC,cAAc;IAMtB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;CAwB1B"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
const CLASS_IN_SELECTOR_PATTERN = /\.(-?[a-zA-Z_][a-zA-Z0-9_-]*)/g;
|
|
2
|
+
const KEYFRAMES_HEADER_PATTERN = /^\s*@(?:-webkit-|-moz-)?keyframes\b/;
|
|
3
|
+
/**
|
|
4
|
+
* Returns every class name used in rule selectors across the given
|
|
5
|
+
* source. `@keyframes` bodies are skipped entirely (their selectors
|
|
6
|
+
* are offsets, not element selectors); every other at-rule body is
|
|
7
|
+
* scanned recursively so selectors inside `@container` / `@media` /
|
|
8
|
+
* `@supports` blocks are covered.
|
|
9
|
+
*
|
|
10
|
+
* Only selector headers are scanned — declaration bodies are not, so
|
|
11
|
+
* a dot inside a value (`url(image.png)`) never registers. Pass the
|
|
12
|
+
* source through {@link CssMinifier} first so commented-out rules
|
|
13
|
+
* don't count. Selectors nested inside style-rule bodies (native CSS
|
|
14
|
+
* nesting) are not scanned.
|
|
15
|
+
*/
|
|
16
|
+
export class CssSelectorClassScanner {
|
|
17
|
+
scan(css) {
|
|
18
|
+
const found = new Set();
|
|
19
|
+
this.scanRange(css, 0, css.length, found);
|
|
20
|
+
return found;
|
|
21
|
+
}
|
|
22
|
+
scanRange(css, start, end, found) {
|
|
23
|
+
let i = start;
|
|
24
|
+
while (i < end) {
|
|
25
|
+
const brace = css.indexOf('{', i);
|
|
26
|
+
if (brace === -1 || brace >= end)
|
|
27
|
+
return;
|
|
28
|
+
const header = css.slice(i, brace);
|
|
29
|
+
const bodyStart = brace + 1;
|
|
30
|
+
const bodyEnd = this.findMatchingClose(css, bodyStart, end);
|
|
31
|
+
if (KEYFRAMES_HEADER_PATTERN.test(header.trimStart())) {
|
|
32
|
+
// skip: keyframe step selectors are percentages, not elements
|
|
33
|
+
}
|
|
34
|
+
else if (header.trimStart().startsWith('@')) {
|
|
35
|
+
this.scanRange(css, bodyStart, bodyEnd, found);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
this.collectClasses(header, found);
|
|
39
|
+
}
|
|
40
|
+
i = bodyEnd + 1;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
collectClasses(header, found) {
|
|
44
|
+
for (const match of header.matchAll(CLASS_IN_SELECTOR_PATTERN)) {
|
|
45
|
+
found.add(match[1]);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Index of the `}` closing the block opened just before `start`.
|
|
50
|
+
* String literals are respected so braces inside them don't shift
|
|
51
|
+
* the depth. Falls back to `end` when the block is unterminated.
|
|
52
|
+
*/
|
|
53
|
+
findMatchingClose(css, start, end) {
|
|
54
|
+
let depth = 1;
|
|
55
|
+
let i = start;
|
|
56
|
+
let stringDelim = null;
|
|
57
|
+
while (i < end) {
|
|
58
|
+
const ch = css[i];
|
|
59
|
+
if (stringDelim) {
|
|
60
|
+
if (ch === '\\' && i + 1 < end) {
|
|
61
|
+
i += 2;
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
if (ch === stringDelim)
|
|
65
|
+
stringDelim = null;
|
|
66
|
+
i++;
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
if (ch === '"' || ch === "'") {
|
|
70
|
+
stringDelim = ch;
|
|
71
|
+
i++;
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
if (ch === '{') {
|
|
75
|
+
depth++;
|
|
76
|
+
i++;
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
if (ch === '}') {
|
|
80
|
+
depth--;
|
|
81
|
+
if (depth === 0)
|
|
82
|
+
return i;
|
|
83
|
+
i++;
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
i++;
|
|
87
|
+
}
|
|
88
|
+
return end;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=CssSelectorClassScanner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CssSelectorClassScanner.js","sourceRoot":"","sources":["../../../src/modules/css/CssSelectorClassScanner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Returns every CSS custom property name
|
|
3
|
-
*
|
|
2
|
+
* Returns every CSS custom property name the given source reads, whether
|
|
3
|
+
* it substitutes the value with `var(--name)` or tests it in a style
|
|
4
|
+
* query such as `@container style(--name: rtl)`.
|
|
4
5
|
*
|
|
5
6
|
* Cheap regex scan rather than a CSS parse. False positives are
|
|
6
|
-
* limited to literal `var(--…)` substrings inside string
|
|
7
|
-
* the source through {@link CssMinifier} first to drop
|
|
8
|
-
* would otherwise contribute to the result.
|
|
7
|
+
* limited to literal `var(--…)` / `style(--…)` substrings inside string
|
|
8
|
+
* values; pass the source through {@link CssMinifier} first to drop
|
|
9
|
+
* comments that would otherwise contribute to the result. Over-inclusion
|
|
10
|
+
* is harmless — it only keeps a property that would have been dropped.
|
|
9
11
|
*/
|
|
10
12
|
export declare class CssVarReferenceScanner {
|
|
11
13
|
scan(css: string): Set<string>;
|
|
14
|
+
private collectMatches;
|
|
12
15
|
}
|
|
13
16
|
//# sourceMappingURL=CssVarReferenceScanner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CssVarReferenceScanner.d.ts","sourceRoot":"","sources":["../../../src/modules/css/CssVarReferenceScanner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CssVarReferenceScanner.d.ts","sourceRoot":"","sources":["../../../src/modules/css/CssVarReferenceScanner.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AACH,qBAAa,sBAAsB;IAEjC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;IAO9B,OAAO,CAAC,cAAc;CAKvB"}
|
|
@@ -1,20 +1,27 @@
|
|
|
1
1
|
const VAR_REFERENCE_PATTERN = /var\(\s*(--[a-zA-Z0-9_-]+)/g;
|
|
2
|
+
const STYLE_QUERY_PATTERN = /style\(\s*(--[a-zA-Z0-9_-]+)/g;
|
|
2
3
|
/**
|
|
3
|
-
* Returns every CSS custom property name
|
|
4
|
-
*
|
|
4
|
+
* Returns every CSS custom property name the given source reads, whether
|
|
5
|
+
* it substitutes the value with `var(--name)` or tests it in a style
|
|
6
|
+
* query such as `@container style(--name: rtl)`.
|
|
5
7
|
*
|
|
6
8
|
* Cheap regex scan rather than a CSS parse. False positives are
|
|
7
|
-
* limited to literal `var(--…)` substrings inside string
|
|
8
|
-
* the source through {@link CssMinifier} first to drop
|
|
9
|
-
* would otherwise contribute to the result.
|
|
9
|
+
* limited to literal `var(--…)` / `style(--…)` substrings inside string
|
|
10
|
+
* values; pass the source through {@link CssMinifier} first to drop
|
|
11
|
+
* comments that would otherwise contribute to the result. Over-inclusion
|
|
12
|
+
* is harmless — it only keeps a property that would have been dropped.
|
|
10
13
|
*/
|
|
11
14
|
export class CssVarReferenceScanner {
|
|
12
15
|
scan(css) {
|
|
13
16
|
const found = new Set();
|
|
14
|
-
|
|
17
|
+
this.collectMatches(css, VAR_REFERENCE_PATTERN, found);
|
|
18
|
+
this.collectMatches(css, STYLE_QUERY_PATTERN, found);
|
|
19
|
+
return found;
|
|
20
|
+
}
|
|
21
|
+
collectMatches(css, pattern, found) {
|
|
22
|
+
for (const match of css.matchAll(pattern)) {
|
|
15
23
|
found.add(match[1]);
|
|
16
24
|
}
|
|
17
|
-
return found;
|
|
18
25
|
}
|
|
19
26
|
}
|
|
20
27
|
//# sourceMappingURL=CssVarReferenceScanner.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CssVarReferenceScanner.js","sourceRoot":"","sources":["../../../src/modules/css/CssVarReferenceScanner.ts"],"names":[],"mappings":"AAAA,MAAM,qBAAqB,GAAG,6BAA6B,CAAC;AAE5D
|
|
1
|
+
{"version":3,"file":"CssVarReferenceScanner.js","sourceRoot":"","sources":["../../../src/modules/css/CssVarReferenceScanner.ts"],"names":[],"mappings":"AAAA,MAAM,qBAAqB,GAAG,6BAA6B,CAAC;AAC5D,MAAM,mBAAmB,GAAG,+BAA+B,CAAC;AAE5D;;;;;;;;;;GAUG;AACH,MAAM,OAAO,sBAAsB;IAEjC,IAAI,CAAC,GAAW;QACd,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;QAChC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,qBAAqB,EAAE,KAAK,CAAC,CAAC;QACvD,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,mBAAmB,EAAE,KAAK,CAAC,CAAC;QACrD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,cAAc,CAAC,GAAW,EAAE,OAAe,EAAE,KAAkB;QACrE,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1C,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;CACF"}
|