@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.
Files changed (495) hide show
  1. package/README.md +47 -7
  2. package/dist/index.d.ts +3 -0
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +3 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/modules/bidi/BidiAnalyzer.d.ts +23 -0
  7. package/dist/modules/bidi/BidiAnalyzer.d.ts.map +1 -0
  8. package/dist/modules/bidi/BidiAnalyzer.js +2 -0
  9. package/dist/modules/bidi/BidiAnalyzer.js.map +1 -0
  10. package/dist/modules/bidi/BidiCharacterClassifier.d.ts +13 -0
  11. package/dist/modules/bidi/BidiCharacterClassifier.d.ts.map +1 -0
  12. package/dist/modules/bidi/BidiCharacterClassifier.js +2 -0
  13. package/dist/modules/bidi/BidiCharacterClassifier.js.map +1 -0
  14. package/dist/modules/bidi/BidiJsAnalyzer.d.ts +14 -0
  15. package/dist/modules/bidi/BidiJsAnalyzer.d.ts.map +1 -0
  16. package/dist/modules/bidi/BidiJsAnalyzer.js +19 -0
  17. package/dist/modules/bidi/BidiJsAnalyzer.js.map +1 -0
  18. package/dist/modules/bidi/BidiJsCharacterClassifier.d.ts +8 -0
  19. package/dist/modules/bidi/BidiJsCharacterClassifier.d.ts.map +1 -0
  20. package/dist/modules/bidi/BidiJsCharacterClassifier.js +19 -0
  21. package/dist/modules/bidi/BidiJsCharacterClassifier.js.map +1 -0
  22. package/dist/modules/bidi/CursiveScriptDetector.d.ts +12 -0
  23. package/dist/modules/bidi/CursiveScriptDetector.d.ts.map +1 -0
  24. package/dist/modules/bidi/CursiveScriptDetector.js +20 -0
  25. package/dist/modules/bidi/CursiveScriptDetector.js.map +1 -0
  26. package/dist/modules/bidi/HorizontalSide.d.ts +18 -0
  27. package/dist/modules/bidi/HorizontalSide.d.ts.map +1 -0
  28. package/dist/modules/bidi/HorizontalSide.js +3 -0
  29. package/dist/modules/bidi/HorizontalSide.js.map +1 -0
  30. package/dist/modules/bidi/HorizontalSideResolver.d.ts +21 -0
  31. package/dist/modules/bidi/HorizontalSideResolver.d.ts.map +1 -0
  32. package/dist/modules/bidi/HorizontalSideResolver.js +27 -0
  33. package/dist/modules/bidi/HorizontalSideResolver.js.map +1 -0
  34. package/dist/modules/bidi/StrongCharacterMajorityTextDirectionDetector.d.ts +24 -0
  35. package/dist/modules/bidi/StrongCharacterMajorityTextDirectionDetector.d.ts.map +1 -0
  36. package/dist/modules/bidi/StrongCharacterMajorityTextDirectionDetector.js +34 -0
  37. package/dist/modules/bidi/StrongCharacterMajorityTextDirectionDetector.js.map +1 -0
  38. package/dist/modules/bidi/TextDirection.d.ts +9 -0
  39. package/dist/modules/bidi/TextDirection.d.ts.map +1 -0
  40. package/dist/modules/bidi/TextDirection.js +2 -0
  41. package/dist/modules/bidi/TextDirection.js.map +1 -0
  42. package/dist/modules/bidi/TextDirectionDetector.d.ts +12 -0
  43. package/dist/modules/bidi/TextDirectionDetector.d.ts.map +1 -0
  44. package/dist/modules/bidi/TextDirectionDetector.js +2 -0
  45. package/dist/modules/bidi/TextDirectionDetector.js.map +1 -0
  46. package/dist/modules/bidi/WordFragment.d.ts +34 -0
  47. package/dist/modules/bidi/WordFragment.d.ts.map +1 -0
  48. package/dist/modules/bidi/WordFragment.js +2 -0
  49. package/dist/modules/bidi/WordFragment.js.map +1 -0
  50. package/dist/modules/bidi/WordFragmenter.d.ts +43 -0
  51. package/dist/modules/bidi/WordFragmenter.d.ts.map +1 -0
  52. package/dist/modules/bidi/WordFragmenter.js +112 -0
  53. package/dist/modules/bidi/WordFragmenter.js.map +1 -0
  54. package/dist/modules/bidi/index.d.ts +14 -0
  55. package/dist/modules/bidi/index.d.ts.map +1 -0
  56. package/dist/modules/bidi/index.js +8 -0
  57. package/dist/modules/bidi/index.js.map +1 -0
  58. package/dist/modules/css/CssBlockSealer.d.ts +30 -0
  59. package/dist/modules/css/CssBlockSealer.d.ts.map +1 -0
  60. package/dist/modules/css/CssBlockSealer.js +64 -0
  61. package/dist/modules/css/CssBlockSealer.js.map +1 -0
  62. package/dist/modules/css/CssCustomPropertyDefinitionScanner.d.ts +13 -0
  63. package/dist/modules/css/CssCustomPropertyDefinitionScanner.d.ts.map +1 -0
  64. package/dist/modules/css/CssCustomPropertyDefinitionScanner.js +24 -0
  65. package/dist/modules/css/CssCustomPropertyDefinitionScanner.js.map +1 -0
  66. package/dist/modules/css/CssFilterReferenceScanner.d.ts +15 -0
  67. package/dist/modules/css/CssFilterReferenceScanner.d.ts.map +1 -0
  68. package/dist/modules/css/CssFilterReferenceScanner.js +22 -0
  69. package/dist/modules/css/CssFilterReferenceScanner.js.map +1 -0
  70. package/dist/modules/css/CssFragmentParser.d.ts +53 -0
  71. package/dist/modules/css/CssFragmentParser.d.ts.map +1 -0
  72. package/dist/modules/css/CssFragmentParser.js +127 -0
  73. package/dist/modules/css/CssFragmentParser.js.map +1 -0
  74. package/dist/modules/css/CssKeyframeNamespacer.d.ts +21 -0
  75. package/dist/modules/css/CssKeyframeNamespacer.d.ts.map +1 -0
  76. package/dist/modules/css/CssKeyframeNamespacer.js +48 -0
  77. package/dist/modules/css/CssKeyframeNamespacer.js.map +1 -0
  78. package/dist/modules/css/CssKeyframesScanner.d.ts +29 -0
  79. package/dist/modules/css/CssKeyframesScanner.d.ts.map +1 -0
  80. package/dist/modules/css/CssKeyframesScanner.js +102 -0
  81. package/dist/modules/css/CssKeyframesScanner.js.map +1 -0
  82. package/dist/modules/css/CssLayer.d.ts +20 -0
  83. package/dist/modules/css/CssLayer.d.ts.map +1 -0
  84. package/dist/modules/css/CssLayer.js +21 -0
  85. package/dist/modules/css/CssLayer.js.map +1 -0
  86. package/dist/modules/css/CssScoper.d.ts +11 -2
  87. package/dist/modules/css/CssScoper.d.ts.map +1 -1
  88. package/dist/modules/css/CssScoper.js +53 -37
  89. package/dist/modules/css/CssScoper.js.map +1 -1
  90. package/dist/modules/css/CssSelectorClassScanner.d.ts +25 -0
  91. package/dist/modules/css/CssSelectorClassScanner.d.ts.map +1 -0
  92. package/dist/modules/css/CssSelectorClassScanner.js +91 -0
  93. package/dist/modules/css/CssSelectorClassScanner.js.map +1 -0
  94. package/dist/modules/css/CssVarReferenceScanner.d.ts +8 -5
  95. package/dist/modules/css/CssVarReferenceScanner.d.ts.map +1 -1
  96. package/dist/modules/css/CssVarReferenceScanner.js +14 -7
  97. package/dist/modules/css/CssVarReferenceScanner.js.map +1 -1
  98. package/dist/modules/css/index.d.ts +8 -0
  99. package/dist/modules/css/index.d.ts.map +1 -1
  100. package/dist/modules/css/index.js +8 -0
  101. package/dist/modules/css/index.js.map +1 -1
  102. package/dist/modules/document/CssClass.d.ts +20 -0
  103. package/dist/modules/document/CssClass.d.ts.map +1 -0
  104. package/dist/modules/document/CssClass.js +21 -0
  105. package/dist/modules/document/CssClass.js.map +1 -0
  106. package/dist/modules/document/CssVariable.d.ts +0 -6
  107. package/dist/modules/document/CssVariable.d.ts.map +1 -1
  108. package/dist/modules/document/CssVariable.js +0 -6
  109. package/dist/modules/document/CssVariable.js.map +1 -1
  110. package/dist/modules/document/DataAttribute.d.ts +26 -0
  111. package/dist/modules/document/DataAttribute.d.ts.map +1 -0
  112. package/dist/modules/document/DataAttribute.js +27 -0
  113. package/dist/modules/document/DataAttribute.js.map +1 -0
  114. package/dist/modules/document/DocumentEditor.d.ts +40 -9
  115. package/dist/modules/document/DocumentEditor.d.ts.map +1 -1
  116. package/dist/modules/document/DocumentEditor.js +69 -17
  117. package/dist/modules/document/DocumentEditor.js.map +1 -1
  118. package/dist/modules/document/DocumentNodeId.d.ts +23 -0
  119. package/dist/modules/document/DocumentNodeId.d.ts.map +1 -0
  120. package/dist/modules/document/DocumentNodeId.js +31 -0
  121. package/dist/modules/document/DocumentNodeId.js.map +1 -0
  122. package/dist/modules/document/Line.d.ts +1 -1
  123. package/dist/modules/document/Line.d.ts.map +1 -1
  124. package/dist/modules/document/Line.js +2 -1
  125. package/dist/modules/document/Line.js.map +1 -1
  126. package/dist/modules/document/Section.d.ts +1 -4
  127. package/dist/modules/document/Section.d.ts.map +1 -1
  128. package/dist/modules/document/Section.js +2 -17
  129. package/dist/modules/document/Section.js.map +1 -1
  130. package/dist/modules/document/Segment.d.ts +14 -7
  131. package/dist/modules/document/Segment.d.ts.map +1 -1
  132. package/dist/modules/document/Segment.js +26 -1
  133. package/dist/modules/document/Segment.js.map +1 -1
  134. package/dist/modules/document/Word.d.ts +1 -1
  135. package/dist/modules/document/Word.d.ts.map +1 -1
  136. package/dist/modules/document/Word.js +2 -1
  137. package/dist/modules/document/Word.js.map +1 -1
  138. package/dist/modules/document/index.d.ts +4 -2
  139. package/dist/modules/document/index.d.ts.map +1 -1
  140. package/dist/modules/document/index.js +3 -1
  141. package/dist/modules/document/index.js.map +1 -1
  142. package/dist/modules/effect/GapFreeEffect.d.ts +15 -0
  143. package/dist/modules/effect/GapFreeEffect.d.ts.map +1 -1
  144. package/dist/modules/effect/GapFreeEffect.js +29 -4
  145. package/dist/modules/effect/GapFreeEffect.js.map +1 -1
  146. package/dist/modules/pipeline/RenderPipelineBuilder.js +3 -3
  147. package/dist/modules/pipeline/RenderPipelineBuilder.js.map +1 -1
  148. package/dist/modules/rendering/BrowserSubtitleFrameRenderer.d.ts.map +1 -1
  149. package/dist/modules/rendering/BrowserSubtitleFrameRenderer.js +4 -1
  150. package/dist/modules/rendering/BrowserSubtitleFrameRenderer.js.map +1 -1
  151. package/dist/modules/rendering/HorizontalPlacementResolver.d.ts +27 -0
  152. package/dist/modules/rendering/HorizontalPlacementResolver.d.ts.map +1 -0
  153. package/dist/modules/rendering/HorizontalPlacementResolver.js +31 -0
  154. package/dist/modules/rendering/HorizontalPlacementResolver.js.map +1 -0
  155. package/dist/modules/rendering/SubtitleFrameRenderer.d.ts +2 -0
  156. package/dist/modules/rendering/SubtitleFrameRenderer.d.ts.map +1 -1
  157. package/dist/modules/rendering/index.d.ts +7 -4
  158. package/dist/modules/rendering/index.d.ts.map +1 -1
  159. package/dist/modules/rendering/index.js +5 -2
  160. package/dist/modules/rendering/index.js.map +1 -1
  161. package/dist/modules/rendering/styles/BaselineCssComposer.d.ts +19 -1
  162. package/dist/modules/rendering/styles/BaselineCssComposer.d.ts.map +1 -1
  163. package/dist/modules/rendering/styles/BaselineCssComposer.js +32 -8
  164. package/dist/modules/rendering/styles/BaselineCssComposer.js.map +1 -1
  165. package/dist/modules/rendering/styles/DecorationContainerBaselineCss.d.ts.map +1 -1
  166. package/dist/modules/rendering/styles/DecorationContainerBaselineCss.js +5 -4
  167. package/dist/modules/rendering/styles/DecorationContainerBaselineCss.js.map +1 -1
  168. package/dist/modules/rendering/styles/FrozenFrameCss.d.ts +28 -0
  169. package/dist/modules/rendering/styles/FrozenFrameCss.d.ts.map +1 -0
  170. package/dist/modules/rendering/styles/FrozenFrameCss.js +28 -0
  171. package/dist/modules/rendering/styles/FrozenFrameCss.js.map +1 -0
  172. package/dist/modules/rendering/styles/InlineStyleEmitter.d.ts +0 -7
  173. package/dist/modules/rendering/styles/InlineStyleEmitter.d.ts.map +1 -1
  174. package/dist/modules/rendering/styles/InlineStyleEmitter.js +0 -9
  175. package/dist/modules/rendering/styles/InlineStyleEmitter.js.map +1 -1
  176. package/dist/modules/rendering/styles/{VideoFrameLayerClass.d.ts → VideoFrameLayerBaselineCss.d.ts} +3 -10
  177. package/dist/modules/rendering/styles/VideoFrameLayerBaselineCss.d.ts.map +1 -0
  178. package/dist/modules/rendering/styles/VideoFrameLayerBaselineCss.js +15 -0
  179. package/dist/modules/rendering/styles/VideoFrameLayerBaselineCss.js.map +1 -0
  180. package/dist/modules/rendering/subtitle/ActiveRenderSessionFactory.d.ts +3 -1
  181. package/dist/modules/rendering/subtitle/ActiveRenderSessionFactory.d.ts.map +1 -1
  182. package/dist/modules/rendering/subtitle/ActiveRenderSessionFactory.js +9 -4
  183. package/dist/modules/rendering/subtitle/ActiveRenderSessionFactory.js.map +1 -1
  184. package/dist/modules/rendering/subtitle/AnimationProbe.d.ts +23 -9
  185. package/dist/modules/rendering/subtitle/AnimationProbe.d.ts.map +1 -1
  186. package/dist/modules/rendering/subtitle/AnimationProbe.js +86 -81
  187. package/dist/modules/rendering/subtitle/AnimationProbe.js.map +1 -1
  188. package/dist/modules/rendering/subtitle/BatchPlanner.d.ts +1 -0
  189. package/dist/modules/rendering/subtitle/BatchPlanner.d.ts.map +1 -1
  190. package/dist/modules/rendering/subtitle/BatchPlanner.js +16 -14
  191. package/dist/modules/rendering/subtitle/BatchPlanner.js.map +1 -1
  192. package/dist/modules/rendering/subtitle/PreparedStyle.d.ts +1 -0
  193. package/dist/modules/rendering/subtitle/PreparedStyle.d.ts.map +1 -1
  194. package/dist/modules/rendering/subtitle/PreparedStyleFactory.js +1 -1
  195. package/dist/modules/rendering/subtitle/PreparedStyleFactory.js.map +1 -1
  196. package/dist/modules/rendering/subtitle/SegmentPaintRegionResolver.d.ts.map +1 -1
  197. package/dist/modules/rendering/subtitle/SegmentPaintRegionResolver.js +7 -4
  198. package/dist/modules/rendering/subtitle/SegmentPaintRegionResolver.js.map +1 -1
  199. package/dist/modules/rendering/subtitle/SegmentSubtreeHtmlBuilder.d.ts +30 -2
  200. package/dist/modules/rendering/subtitle/SegmentSubtreeHtmlBuilder.d.ts.map +1 -1
  201. package/dist/modules/rendering/subtitle/SegmentSubtreeHtmlBuilder.js +85 -27
  202. package/dist/modules/rendering/subtitle/SegmentSubtreeHtmlBuilder.js.map +1 -1
  203. package/dist/modules/rendering/subtitle/SegmentWrapperRenderer.d.ts +3 -8
  204. package/dist/modules/rendering/subtitle/SegmentWrapperRenderer.d.ts.map +1 -1
  205. package/dist/modules/rendering/subtitle/SegmentWrapperRenderer.js +31 -40
  206. package/dist/modules/rendering/subtitle/SegmentWrapperRenderer.js.map +1 -1
  207. package/dist/modules/rendering/subtitle/SpriteSheetCompositor.d.ts +2 -0
  208. package/dist/modules/rendering/subtitle/SpriteSheetCompositor.d.ts.map +1 -1
  209. package/dist/modules/rendering/subtitle/SpriteSheetCompositor.js +18 -9
  210. package/dist/modules/rendering/subtitle/SpriteSheetCompositor.js.map +1 -1
  211. package/dist/modules/rendering/subtitle/SvgFilterMaterializer.d.ts +8 -15
  212. package/dist/modules/rendering/subtitle/SvgFilterMaterializer.d.ts.map +1 -1
  213. package/dist/modules/rendering/subtitle/SvgFilterMaterializer.js +10 -20
  214. package/dist/modules/rendering/subtitle/SvgFilterMaterializer.js.map +1 -1
  215. package/dist/modules/rendering/subtitle/VideoFrameVarsBuilder.d.ts.map +1 -1
  216. package/dist/modules/rendering/subtitle/VideoFrameVarsBuilder.js +12 -3
  217. package/dist/modules/rendering/subtitle/VideoFrameVarsBuilder.js.map +1 -1
  218. package/dist/modules/rendering/types/AlignmentConfig.d.ts +16 -4
  219. package/dist/modules/rendering/types/AlignmentConfig.d.ts.map +1 -1
  220. package/dist/modules/rendering/types/AlignmentConfig.js +2 -1
  221. package/dist/modules/rendering/types/AlignmentConfig.js.map +1 -1
  222. package/dist/modules/rendering/types/ElementRenderOverrides.d.ts +8 -0
  223. package/dist/modules/rendering/types/ElementRenderOverrides.d.ts.map +1 -1
  224. package/dist/modules/rendering/types/ElementRenderOverrides.js +28 -0
  225. package/dist/modules/rendering/types/ElementRenderOverrides.js.map +1 -1
  226. package/dist/modules/rendering/types/RenderingConfig.d.ts +7 -2
  227. package/dist/modules/rendering/types/RenderingConfig.d.ts.map +1 -1
  228. package/dist/modules/rendering/types/ScopedRenderOverride.d.ts +9 -4
  229. package/dist/modules/rendering/types/ScopedRenderOverride.d.ts.map +1 -1
  230. package/dist/modules/subtitle-file/AssSubtitleFileSerializer.d.ts +53 -0
  231. package/dist/modules/subtitle-file/AssSubtitleFileSerializer.d.ts.map +1 -0
  232. package/dist/modules/subtitle-file/AssSubtitleFileSerializer.js +133 -0
  233. package/dist/modules/subtitle-file/AssSubtitleFileSerializer.js.map +1 -0
  234. package/dist/modules/subtitle-file/SbvSubtitleFileSerializer.d.ts +20 -0
  235. package/dist/modules/subtitle-file/SbvSubtitleFileSerializer.d.ts.map +1 -0
  236. package/dist/modules/subtitle-file/SbvSubtitleFileSerializer.js +31 -0
  237. package/dist/modules/subtitle-file/SbvSubtitleFileSerializer.js.map +1 -0
  238. package/dist/modules/subtitle-file/SrtSubtitleFileSerializer.d.ts +21 -0
  239. package/dist/modules/subtitle-file/SrtSubtitleFileSerializer.d.ts.map +1 -0
  240. package/dist/modules/subtitle-file/SrtSubtitleFileSerializer.js +33 -0
  241. package/dist/modules/subtitle-file/SrtSubtitleFileSerializer.js.map +1 -0
  242. package/dist/modules/subtitle-file/SubtitleCue.d.ts +18 -0
  243. package/dist/modules/subtitle-file/SubtitleCue.d.ts.map +1 -0
  244. package/dist/modules/subtitle-file/SubtitleCue.js +20 -0
  245. package/dist/modules/subtitle-file/SubtitleCue.js.map +1 -0
  246. package/dist/modules/subtitle-file/SubtitleCueBuilder.d.ts +38 -0
  247. package/dist/modules/subtitle-file/SubtitleCueBuilder.d.ts.map +1 -0
  248. package/dist/modules/subtitle-file/SubtitleCueBuilder.js +106 -0
  249. package/dist/modules/subtitle-file/SubtitleCueBuilder.js.map +1 -0
  250. package/dist/modules/subtitle-file/SubtitleFileJob.d.ts +17 -0
  251. package/dist/modules/subtitle-file/SubtitleFileJob.d.ts.map +1 -0
  252. package/dist/modules/subtitle-file/SubtitleFileJob.js +2 -0
  253. package/dist/modules/subtitle-file/SubtitleFileJob.js.map +1 -0
  254. package/dist/modules/subtitle-file/SubtitleFileSerializer.d.ts +36 -0
  255. package/dist/modules/subtitle-file/SubtitleFileSerializer.d.ts.map +1 -0
  256. package/dist/modules/subtitle-file/SubtitleFileSerializer.js +44 -0
  257. package/dist/modules/subtitle-file/SubtitleFileSerializer.js.map +1 -0
  258. package/dist/modules/subtitle-file/SubtitleGranularity.d.ts +11 -0
  259. package/dist/modules/subtitle-file/SubtitleGranularity.d.ts.map +1 -0
  260. package/dist/modules/subtitle-file/SubtitleGranularity.js +2 -0
  261. package/dist/modules/subtitle-file/SubtitleGranularity.js.map +1 -0
  262. package/dist/modules/subtitle-file/SubtitleRow.d.ts +11 -0
  263. package/dist/modules/subtitle-file/SubtitleRow.d.ts.map +1 -0
  264. package/dist/modules/subtitle-file/SubtitleRow.js +14 -0
  265. package/dist/modules/subtitle-file/SubtitleRow.js.map +1 -0
  266. package/dist/modules/subtitle-file/SubtitleToken.d.ts +13 -0
  267. package/dist/modules/subtitle-file/SubtitleToken.d.ts.map +1 -0
  268. package/dist/modules/subtitle-file/SubtitleToken.js +15 -0
  269. package/dist/modules/subtitle-file/SubtitleToken.js.map +1 -0
  270. package/dist/modules/subtitle-file/TextSubtitleFileSerializer.d.ts +19 -0
  271. package/dist/modules/subtitle-file/TextSubtitleFileSerializer.d.ts.map +1 -0
  272. package/dist/modules/subtitle-file/TextSubtitleFileSerializer.js +24 -0
  273. package/dist/modules/subtitle-file/TextSubtitleFileSerializer.js.map +1 -0
  274. package/dist/modules/subtitle-file/Timecode.d.ts +20 -0
  275. package/dist/modules/subtitle-file/Timecode.d.ts.map +1 -0
  276. package/dist/modules/subtitle-file/Timecode.js +32 -0
  277. package/dist/modules/subtitle-file/Timecode.js.map +1 -0
  278. package/dist/modules/subtitle-file/TtmlSubtitleFileSerializer.d.ts +22 -0
  279. package/dist/modules/subtitle-file/TtmlSubtitleFileSerializer.d.ts.map +1 -0
  280. package/dist/modules/subtitle-file/TtmlSubtitleFileSerializer.js +57 -0
  281. package/dist/modules/subtitle-file/TtmlSubtitleFileSerializer.js.map +1 -0
  282. package/dist/modules/subtitle-file/VttSubtitleFileSerializer.d.ts +21 -0
  283. package/dist/modules/subtitle-file/VttSubtitleFileSerializer.d.ts.map +1 -0
  284. package/dist/modules/subtitle-file/VttSubtitleFileSerializer.js +39 -0
  285. package/dist/modules/subtitle-file/VttSubtitleFileSerializer.js.map +1 -0
  286. package/dist/modules/subtitle-file/index.d.ts +10 -0
  287. package/dist/modules/subtitle-file/index.d.ts.map +1 -0
  288. package/dist/modules/subtitle-file/index.js +8 -0
  289. package/dist/modules/subtitle-file/index.js.map +1 -0
  290. package/dist/modules/svg-filter/SvgFilter.d.ts +8 -1
  291. package/dist/modules/svg-filter/SvgFilter.d.ts.map +1 -1
  292. package/dist/modules/svg-filter/SvgFilter.js +9 -1
  293. package/dist/modules/svg-filter/SvgFilter.js.map +1 -1
  294. package/dist/modules/svg-filter/SvgFilterDefinitionsParser.d.ts +1 -0
  295. package/dist/modules/svg-filter/SvgFilterDefinitionsParser.d.ts.map +1 -1
  296. package/dist/modules/svg-filter/SvgFilterDefinitionsParser.js +9 -1
  297. package/dist/modules/svg-filter/SvgFilterDefinitionsParser.js.map +1 -1
  298. package/dist/modules/svg-filter/SvgFilterDefsRenderer.d.ts +44 -0
  299. package/dist/modules/svg-filter/SvgFilterDefsRenderer.d.ts.map +1 -0
  300. package/dist/modules/svg-filter/SvgFilterDefsRenderer.js +47 -0
  301. package/dist/modules/svg-filter/SvgFilterDefsRenderer.js.map +1 -0
  302. package/dist/modules/svg-filter/index.d.ts +2 -0
  303. package/dist/modules/svg-filter/index.d.ts.map +1 -1
  304. package/dist/modules/svg-filter/index.js +1 -0
  305. package/dist/modules/svg-filter/index.js.map +1 -1
  306. package/dist/modules/tagging/PauseTagger.d.ts.map +1 -1
  307. package/dist/modules/tagging/PauseTagger.js +2 -1
  308. package/dist/modules/tagging/PauseTagger.js.map +1 -1
  309. package/dist/modules/tagging/RegexTagger.js +1 -1
  310. package/dist/modules/tagging/RegexTagger.js.map +1 -1
  311. package/dist/modules/tagging/SpanTagger.js +1 -1
  312. package/dist/modules/tagging/SpanTagger.js.map +1 -1
  313. package/dist/modules/tagging/StructureTagger.d.ts +0 -1
  314. package/dist/modules/tagging/StructureTagger.d.ts.map +1 -1
  315. package/dist/modules/tagging/StructureTagger.js +3 -8
  316. package/dist/modules/tagging/StructureTagger.js.map +1 -1
  317. package/dist/modules/tagging/WordlistTagger.js +1 -1
  318. package/dist/modules/tagging/WordlistTagger.js.map +1 -1
  319. package/dist/modules/tags/AndTagCondition.d.ts +10 -0
  320. package/dist/modules/tags/AndTagCondition.d.ts.map +1 -0
  321. package/dist/modules/tags/AndTagCondition.js +14 -0
  322. package/dist/modules/tags/AndTagCondition.js.map +1 -0
  323. package/dist/modules/tags/HasTagCondition.d.ts +10 -0
  324. package/dist/modules/tags/HasTagCondition.d.ts.map +1 -0
  325. package/dist/modules/tags/HasTagCondition.js +18 -0
  326. package/dist/modules/tags/HasTagCondition.js.map +1 -0
  327. package/dist/modules/tags/NotTagCondition.d.ts +10 -0
  328. package/dist/modules/tags/NotTagCondition.d.ts.map +1 -0
  329. package/dist/modules/tags/NotTagCondition.js +14 -0
  330. package/dist/modules/tags/NotTagCondition.js.map +1 -0
  331. package/dist/modules/tags/OrTagCondition.d.ts +10 -0
  332. package/dist/modules/tags/OrTagCondition.d.ts.map +1 -0
  333. package/dist/modules/tags/OrTagCondition.js +14 -0
  334. package/dist/modules/tags/OrTagCondition.js.map +1 -0
  335. package/dist/modules/{document/Tag.d.ts → tags/StructureTag.d.ts} +2 -11
  336. package/dist/modules/tags/StructureTag.d.ts.map +1 -0
  337. package/dist/modules/{document/Tag.js → tags/StructureTag.js} +1 -19
  338. package/dist/modules/tags/StructureTag.js.map +1 -0
  339. package/dist/modules/tags/Tag.d.ts +8 -0
  340. package/dist/modules/tags/Tag.d.ts.map +1 -0
  341. package/dist/modules/tags/Tag.js +16 -0
  342. package/dist/modules/tags/Tag.js.map +1 -0
  343. package/dist/modules/tags/TagCondition.d.ts +12 -0
  344. package/dist/modules/tags/TagCondition.d.ts.map +1 -0
  345. package/dist/modules/tags/TagCondition.js +2 -0
  346. package/dist/modules/tags/TagCondition.js.map +1 -0
  347. package/dist/modules/tags/TagConditionParser.d.ts +21 -0
  348. package/dist/modules/tags/TagConditionParser.d.ts.map +1 -0
  349. package/dist/modules/tags/TagConditionParser.js +75 -0
  350. package/dist/modules/tags/TagConditionParser.js.map +1 -0
  351. package/dist/modules/tags/index.d.ts +9 -0
  352. package/dist/modules/tags/index.d.ts.map +1 -0
  353. package/dist/modules/tags/index.js +8 -0
  354. package/dist/modules/tags/index.js.map +1 -0
  355. package/dist/modules/transcription/AudioDecoder.d.ts +9 -4
  356. package/dist/modules/transcription/AudioDecoder.d.ts.map +1 -1
  357. package/dist/modules/transcription/BatchedMonoResampler.d.ts +45 -0
  358. package/dist/modules/transcription/BatchedMonoResampler.d.ts.map +1 -0
  359. package/dist/modules/transcription/BatchedMonoResampler.js +116 -0
  360. package/dist/modules/transcription/BatchedMonoResampler.js.map +1 -0
  361. package/dist/modules/transcription/CacheStorageModelFileCache.d.ts +38 -0
  362. package/dist/modules/transcription/CacheStorageModelFileCache.d.ts.map +1 -0
  363. package/dist/modules/transcription/CacheStorageModelFileCache.js +86 -0
  364. package/dist/modules/transcription/CacheStorageModelFileCache.js.map +1 -0
  365. package/dist/modules/transcription/CueDocumentBuilder.d.ts +40 -0
  366. package/dist/modules/transcription/CueDocumentBuilder.d.ts.map +1 -0
  367. package/dist/modules/transcription/CueDocumentBuilder.js +77 -0
  368. package/dist/modules/transcription/CueDocumentBuilder.js.map +1 -0
  369. package/dist/modules/transcription/CueParseResult.d.ts +16 -0
  370. package/dist/modules/transcription/CueParseResult.d.ts.map +1 -0
  371. package/dist/modules/transcription/CueParseResult.js +2 -0
  372. package/dist/modules/transcription/CueParseResult.js.map +1 -0
  373. package/dist/modules/transcription/CueTextTokenizer.d.ts +10 -0
  374. package/dist/modules/transcription/CueTextTokenizer.d.ts.map +1 -0
  375. package/dist/modules/transcription/CueTextTokenizer.js +21 -0
  376. package/dist/modules/transcription/CueTextTokenizer.js.map +1 -0
  377. package/dist/modules/transcription/CueTimecodeReader.d.ts +19 -0
  378. package/dist/modules/transcription/CueTimecodeReader.d.ts.map +1 -0
  379. package/dist/modules/transcription/CueTimecodeReader.js +45 -0
  380. package/dist/modules/transcription/CueTimecodeReader.js.map +1 -0
  381. package/dist/modules/transcription/CueWordReader.d.ts +12 -0
  382. package/dist/modules/transcription/CueWordReader.d.ts.map +1 -0
  383. package/dist/modules/transcription/CueWordReader.js +2 -0
  384. package/dist/modules/transcription/CueWordReader.js.map +1 -0
  385. package/dist/modules/transcription/EstimatedCueWordReader.d.ts +16 -0
  386. package/dist/modules/transcription/EstimatedCueWordReader.d.ts.map +1 -0
  387. package/dist/modules/transcription/EstimatedCueWordReader.js +17 -0
  388. package/dist/modules/transcription/EstimatedCueWordReader.js.map +1 -0
  389. package/dist/modules/transcription/LogitsProcessorListFactory.d.ts +43 -0
  390. package/dist/modules/transcription/LogitsProcessorListFactory.d.ts.map +1 -0
  391. package/dist/modules/transcription/LogitsProcessorListFactory.js +72 -0
  392. package/dist/modules/transcription/LogitsProcessorListFactory.js.map +1 -0
  393. package/dist/modules/transcription/MediaBunnyAudioDecoder.d.ts +27 -0
  394. package/dist/modules/transcription/MediaBunnyAudioDecoder.d.ts.map +1 -0
  395. package/dist/modules/transcription/MediaBunnyAudioDecoder.js +76 -0
  396. package/dist/modules/transcription/MediaBunnyAudioDecoder.js.map +1 -0
  397. package/dist/modules/transcription/ModelFileCache.d.ts +20 -0
  398. package/dist/modules/transcription/ModelFileCache.d.ts.map +1 -0
  399. package/dist/modules/transcription/ModelFileCache.js +2 -0
  400. package/dist/modules/transcription/ModelFileCache.js.map +1 -0
  401. package/dist/modules/transcription/ModelFileCacheUnavailableError.d.ts +18 -0
  402. package/dist/modules/transcription/ModelFileCacheUnavailableError.d.ts.map +1 -0
  403. package/dist/modules/transcription/ModelFileCacheUnavailableError.js +18 -0
  404. package/dist/modules/transcription/ModelFileCacheUnavailableError.js.map +1 -0
  405. package/dist/modules/transcription/SrtTranscriber.d.ts +24 -15
  406. package/dist/modules/transcription/SrtTranscriber.d.ts.map +1 -1
  407. package/dist/modules/transcription/SrtTranscriber.js +32 -90
  408. package/dist/modules/transcription/SrtTranscriber.js.map +1 -1
  409. package/dist/modules/transcription/SubtitleFileUnreadableError.d.ts +22 -0
  410. package/dist/modules/transcription/SubtitleFileUnreadableError.d.ts.map +1 -0
  411. package/dist/modules/transcription/SubtitleFileUnreadableError.js +22 -0
  412. package/dist/modules/transcription/SubtitleFileUnreadableError.js.map +1 -0
  413. package/dist/modules/transcription/TimestampedCueWordReader.d.ts +27 -0
  414. package/dist/modules/transcription/TimestampedCueWordReader.d.ts.map +1 -0
  415. package/dist/modules/transcription/TimestampedCueWordReader.js +52 -0
  416. package/dist/modules/transcription/TimestampedCueWordReader.js.map +1 -0
  417. package/dist/modules/transcription/Transcriber.d.ts +13 -0
  418. package/dist/modules/transcription/Transcriber.d.ts.map +1 -1
  419. package/dist/modules/transcription/TransformersRuntime.d.ts +50 -0
  420. package/dist/modules/transcription/TransformersRuntime.d.ts.map +1 -0
  421. package/dist/modules/transcription/TransformersRuntime.js +79 -0
  422. package/dist/modules/transcription/TransformersRuntime.js.map +1 -0
  423. package/dist/modules/transcription/VttTranscriber.d.ts +25 -7
  424. package/dist/modules/transcription/VttTranscriber.d.ts.map +1 -1
  425. package/dist/modules/transcription/VttTranscriber.js +36 -15
  426. package/dist/modules/transcription/VttTranscriber.js.map +1 -1
  427. package/dist/modules/transcription/WhisperChunkStitcher.d.ts +51 -0
  428. package/dist/modules/transcription/WhisperChunkStitcher.d.ts.map +1 -0
  429. package/dist/modules/transcription/WhisperChunkStitcher.js +101 -0
  430. package/dist/modules/transcription/WhisperChunkStitcher.js.map +1 -0
  431. package/dist/modules/transcription/WhisperDeviceUnavailableError.d.ts +16 -0
  432. package/dist/modules/transcription/WhisperDeviceUnavailableError.d.ts.map +1 -0
  433. package/dist/modules/transcription/WhisperDeviceUnavailableError.js +16 -0
  434. package/dist/modules/transcription/WhisperDeviceUnavailableError.js.map +1 -0
  435. package/dist/modules/transcription/WhisperInferenceFailedError.d.ts +16 -0
  436. package/dist/modules/transcription/WhisperInferenceFailedError.d.ts.map +1 -0
  437. package/dist/modules/transcription/WhisperInferenceFailedError.js +16 -0
  438. package/dist/modules/transcription/WhisperInferenceFailedError.js.map +1 -0
  439. package/dist/modules/transcription/WhisperInferenceProgressTracker.d.ts +61 -0
  440. package/dist/modules/transcription/WhisperInferenceProgressTracker.d.ts.map +1 -0
  441. package/dist/modules/transcription/WhisperInferenceProgressTracker.js +102 -0
  442. package/dist/modules/transcription/WhisperInferenceProgressTracker.js.map +1 -0
  443. package/dist/modules/transcription/WhisperLoopAbortLogitsProcessor.d.ts +38 -0
  444. package/dist/modules/transcription/WhisperLoopAbortLogitsProcessor.d.ts.map +1 -0
  445. package/dist/modules/transcription/WhisperLoopAbortLogitsProcessor.js +94 -0
  446. package/dist/modules/transcription/WhisperLoopAbortLogitsProcessor.js.map +1 -0
  447. package/dist/modules/transcription/WhisperModelLoadFailedError.d.ts +15 -0
  448. package/dist/modules/transcription/WhisperModelLoadFailedError.d.ts.map +1 -0
  449. package/dist/modules/transcription/WhisperModelLoadFailedError.js +15 -0
  450. package/dist/modules/transcription/WhisperModelLoadFailedError.js.map +1 -0
  451. package/dist/modules/transcription/WhisperTranscriber.d.ts +106 -7
  452. package/dist/modules/transcription/WhisperTranscriber.d.ts.map +1 -1
  453. package/dist/modules/transcription/WhisperTranscriber.js +312 -25
  454. package/dist/modules/transcription/WhisperTranscriber.js.map +1 -1
  455. package/dist/modules/transcription/WhisperWindowCoverage.d.ts +79 -0
  456. package/dist/modules/transcription/WhisperWindowCoverage.d.ts.map +1 -0
  457. package/dist/modules/transcription/WhisperWindowCoverage.js +129 -0
  458. package/dist/modules/transcription/WhisperWindowCoverage.js.map +1 -0
  459. package/dist/modules/transcription/WordTimingEstimator.d.ts +14 -0
  460. package/dist/modules/transcription/WordTimingEstimator.d.ts.map +1 -0
  461. package/dist/modules/transcription/WordTimingEstimator.js +33 -0
  462. package/dist/modules/transcription/WordTimingEstimator.js.map +1 -0
  463. package/dist/modules/transcription/index.d.ts +8 -2
  464. package/dist/modules/transcription/index.d.ts.map +1 -1
  465. package/dist/modules/transcription/index.js +5 -1
  466. package/dist/modules/transcription/index.js.map +1 -1
  467. package/dist/modules/video/mediabunny/MediaBunnyTranscodeCoordinator.d.ts.map +1 -1
  468. package/dist/modules/video/mediabunny/MediaBunnyTranscodeCoordinator.js +8 -0
  469. package/dist/modules/video/mediabunny/MediaBunnyTranscodeCoordinator.js.map +1 -1
  470. package/dist/modules/video/mediabunny/frame/CurrentFrameVideoSource.d.ts +3 -1
  471. package/dist/modules/video/mediabunny/frame/CurrentFrameVideoSource.d.ts.map +1 -1
  472. package/dist/modules/video/mediabunny/frame/CurrentFrameVideoSource.js +33 -23
  473. package/dist/modules/video/mediabunny/frame/CurrentFrameVideoSource.js.map +1 -1
  474. package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainter.js +1 -1
  475. package/dist/modules/video/mediabunny/painter/CaptionsOverlayFramePainter.js.map +1 -1
  476. package/dist/modules/video/mediabunny/painter/TopLayerSource.d.ts +6 -7
  477. package/dist/modules/video/mediabunny/painter/TopLayerSource.d.ts.map +1 -1
  478. package/package.json +13 -10
  479. package/dist/modules/document/Tag.d.ts.map +0 -1
  480. package/dist/modules/document/Tag.js.map +0 -1
  481. package/dist/modules/rendering/styles/BehindActorBaselineCss.d.ts +0 -19
  482. package/dist/modules/rendering/styles/BehindActorBaselineCss.d.ts.map +0 -1
  483. package/dist/modules/rendering/styles/BehindActorBaselineCss.js +0 -19
  484. package/dist/modules/rendering/styles/BehindActorBaselineCss.js.map +0 -1
  485. package/dist/modules/rendering/styles/VideoFrameLayerClass.d.ts.map +0 -1
  486. package/dist/modules/rendering/styles/VideoFrameLayerClass.js +0 -21
  487. package/dist/modules/rendering/styles/VideoFrameLayerClass.js.map +0 -1
  488. package/dist/modules/rendering/types/BehindActorRequirement.d.ts +0 -12
  489. package/dist/modules/rendering/types/BehindActorRequirement.d.ts.map +0 -1
  490. package/dist/modules/rendering/types/BehindActorRequirement.js +0 -2
  491. package/dist/modules/rendering/types/BehindActorRequirement.js.map +0 -1
  492. package/dist/modules/transcription/BrowserAudioDecoder.d.ts +0 -13
  493. package/dist/modules/transcription/BrowserAudioDecoder.d.ts.map +0 -1
  494. package/dist/modules/transcription/BrowserAudioDecoder.js +0 -34
  495. package/dist/modules/transcription/BrowserAudioDecoder.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserSubtitleFrameRenderer.d.ts","sourceRoot":"","sources":["../../../src/modules/rendering/BrowserSubtitleFrameRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EACV,aAAa,EACb,qBAAqB,EACrB,aAAa,EACd,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAOpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AACxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAC1F,OAAO,EAAE,0BAA0B,EAAE,MAAM,wDAAwD,CAAC;AAIpG;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,4BAA6B,YAAW,qBAAqB;IAOtE,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,cAAc;IARjC,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,MAAM,CAAqB;gBAGhB,oBAAoB,EAAE,oBAAoB,EAC1C,UAAU,EAAE,qBAAqB,EACjC,cAAc,EAAE,0BAA0B;IAG7D;;;;;;;OAOG;IACH,MAAM,CAAC,MAAM,CACX,WAAW,EAAE,mBAAmB,EAChC,YAAY,EAAE,YAAY,EAC1B,OAAO,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,GACrC,4BAA4B;IAkBzB,IAAI,CACR,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,EAC/C,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,gBAAgB,CAAC,EAAE,gBAAgB,GAClC,OAAO,CAAC,IAAI,CAAC;IAiBV,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAIlC,SAAS,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAKlF,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAMhE,KAAK,IAAI,IAAI;CAad"}
1
+ {"version":3,"file":"BrowserSubtitleFrameRenderer.d.ts","sourceRoot":"","sources":["../../../src/modules/rendering/BrowserSubtitleFrameRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EACV,aAAa,EACb,qBAAqB,EACrB,aAAa,EACd,MAAM,0CAA0C,CAAC;AAClD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAOpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AACxF,OAAO,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAC1F,OAAO,EAAE,0BAA0B,EAAE,MAAM,wDAAwD,CAAC;AAOpG;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,4BAA6B,YAAW,qBAAqB;IAOtE,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,cAAc;IARjC,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,cAAc,CAA8C;IACpE,OAAO,CAAC,KAAK,CAAqB;IAClC,OAAO,CAAC,MAAM,CAAqB;gBAGhB,oBAAoB,EAAE,oBAAoB,EAC1C,UAAU,EAAE,qBAAqB,EACjC,cAAc,EAAE,0BAA0B;IAG7D;;;;;;;OAOG;IACH,MAAM,CAAC,MAAM,CACX,WAAW,EAAE,mBAAmB,EAChC,YAAY,EAAE,YAAY,EAC1B,OAAO,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,GACrC,4BAA4B;IAsBzB,IAAI,CACR,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,EAC/C,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,gBAAgB,CAAC,EAAE,gBAAgB,GAClC,OAAO,CAAC,IAAI,CAAC;IAiBV,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;IAIlC,SAAS,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAKlF,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAMhE,KAAK,IAAI,IAAI;CAad"}
@@ -7,6 +7,9 @@ import { SegmentPaddingCssRuleBuilder } from '../rendering/styles/SegmentPadding
7
7
  import { PreparedStyleFactory } from '../rendering/subtitle/PreparedStyleFactory';
8
8
  import { SpriteSheetSizeProber } from '../rendering/subtitle/SpriteSheetSizeProber';
9
9
  import { ActiveRenderSessionFactory } from '../rendering/subtitle/ActiveRenderSessionFactory';
10
+ import { WordFragmenter } from '../bidi/WordFragmenter';
11
+ import { BidiJsAnalyzer } from '../bidi/BidiJsAnalyzer';
12
+ import { CursiveScriptDetector } from '../bidi/CursiveScriptDetector';
10
13
  /**
11
14
  * Browser-native `SubtitleFrameRenderer` that builds each batch as a
12
15
  * single SVG holding one `foreignObject` per unique visual state, and
@@ -50,7 +53,7 @@ export class BrowserSubtitleFrameRenderer {
50
53
  const sizeProber = options?.maxBufferPixels !== undefined
51
54
  ? new SpriteSheetSizeProber(options.maxBufferPixels)
52
55
  : new SpriteSheetSizeProber();
53
- const sessionFactory = new ActiveRenderSessionFactory(wordSplitter, baselineCssComposer);
56
+ const sessionFactory = new ActiveRenderSessionFactory(wordSplitter, new WordFragmenter(new BidiJsAnalyzer(), new CursiveScriptDetector()), baselineCssComposer);
54
57
  return new BrowserSubtitleFrameRenderer(preparedStyleFactory, sizeProber, sessionFactory);
55
58
  }
56
59
  async open(doc, styles, width, height, videoFrameSource) {
@@ -1 +1 @@
1
- {"version":3,"file":"BrowserSubtitleFrameRenderer.js","sourceRoot":"","sources":["../../../src/modules/rendering/BrowserSubtitleFrameRenderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BrowserSubtitleFrameRenderer.js","sourceRoot":"","sources":["../../../src/modules/rendering/BrowserSubtitleFrameRenderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { PhysicalSide } from '../bidi/HorizontalSide';
2
+ import type { HorizontalSideResolver } from '../bidi/HorizontalSideResolver';
3
+ import type { TextDirection } from '../bidi/TextDirection';
4
+ import type { HorizontalAlign } from '../rendering/types/AlignmentConfig';
5
+ /** Where a caption box's horizontal anchor lands, stated in screen terms. */
6
+ export interface HorizontalPlacement {
7
+ readonly side: PhysicalSide;
8
+ /** Fraction of the video's width, counted from its left edge. */
9
+ readonly offsetFromLeft: number;
10
+ }
11
+ /**
12
+ * Resolves the horizontal half of an `AlignmentConfig` into the screen terms
13
+ * a renderer paints with.
14
+ *
15
+ * The anchor decides how its own offset is read: a screen side leaves the
16
+ * offset counting from the left edge, a reading side flips both together so
17
+ * the placement mirrors with the direction of the text. Keeping the pair
18
+ * consistent is the whole contract — an anchor mirrored without its offset
19
+ * lands the box on the far side of the frame.
20
+ */
21
+ export declare class HorizontalPlacementResolver {
22
+ private readonly horizontalSideResolver;
23
+ constructor(horizontalSideResolver: HorizontalSideResolver);
24
+ resolve(horizontalAlign: HorizontalAlign, horizontalOffset: number, textDirection: TextDirection): HorizontalPlacement;
25
+ private isReadingSide;
26
+ }
27
+ //# sourceMappingURL=HorizontalPlacementResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HorizontalPlacementResolver.d.ts","sourceRoot":"","sources":["../../../src/modules/rendering/HorizontalPlacementResolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAe,MAAM,8BAA8B,CAAC;AAC9E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAEhF,6EAA6E;AAC7E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,iEAAiE;IACjE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED;;;;;;;;;GASG;AACH,qBAAa,2BAA2B;IAE1B,OAAO,CAAC,QAAQ,CAAC,sBAAsB;gBAAtB,sBAAsB,EAAE,sBAAsB;IAE3E,OAAO,CACL,eAAe,EAAE,eAAe,EAChC,gBAAgB,EAAE,MAAM,EACxB,aAAa,EAAE,aAAa,GAC3B,mBAAmB;IAYtB,OAAO,CAAC,aAAa;CAGtB"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Resolves the horizontal half of an `AlignmentConfig` into the screen terms
3
+ * a renderer paints with.
4
+ *
5
+ * The anchor decides how its own offset is read: a screen side leaves the
6
+ * offset counting from the left edge, a reading side flips both together so
7
+ * the placement mirrors with the direction of the text. Keeping the pair
8
+ * consistent is the whole contract — an anchor mirrored without its offset
9
+ * lands the box on the far side of the frame.
10
+ */
11
+ export class HorizontalPlacementResolver {
12
+ horizontalSideResolver;
13
+ constructor(horizontalSideResolver) {
14
+ this.horizontalSideResolver = horizontalSideResolver;
15
+ }
16
+ resolve(horizontalAlign, horizontalOffset, textDirection) {
17
+ if (!this.isReadingSide(horizontalAlign)) {
18
+ return { side: horizontalAlign, offsetFromLeft: horizontalOffset };
19
+ }
20
+ return {
21
+ side: this.horizontalSideResolver.toPhysical(horizontalAlign, textDirection),
22
+ offsetFromLeft: this.horizontalSideResolver.mirrorOffset(horizontalOffset, textDirection),
23
+ };
24
+ }
25
+ // `center` belongs to both vocabularies and is deliberately not treated as
26
+ // a reading side: its own offset is then left in screen terms.
27
+ isReadingSide(horizontalAlign) {
28
+ return horizontalAlign === 'start' || horizontalAlign === 'end';
29
+ }
30
+ }
31
+ //# sourceMappingURL=HorizontalPlacementResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HorizontalPlacementResolver.js","sourceRoot":"","sources":["../../../src/modules/rendering/HorizontalPlacementResolver.ts"],"names":[],"mappings":"AAYA;;;;;;;;;GASG;AACH,MAAM,OAAO,2BAA2B;IAET;IAA7B,YAA6B,sBAA8C;QAA9C,2BAAsB,GAAtB,sBAAsB,CAAwB;IAAG,CAAC;IAE/E,OAAO,CACL,eAAgC,EAChC,gBAAwB,EACxB,aAA4B;QAE5B,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE,CAAC;YACzC,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,cAAc,EAAE,gBAAgB,EAAE,CAAC;QACrE,CAAC;QACD,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,eAAe,EAAE,aAAa,CAAC;YAC5E,cAAc,EAAE,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,gBAAgB,EAAE,aAAa,CAAC;SAC1F,CAAC;IACJ,CAAC;IAED,2EAA2E;IAC3E,+DAA+D;IACvD,aAAa,CAAC,eAAgC;QACpD,OAAO,eAAe,KAAK,OAAO,IAAI,eAAe,KAAK,KAAK,CAAC;IAClE,CAAC;CACF"}
@@ -33,6 +33,8 @@ export interface SubtitleStyle {
33
33
  svgFilters?: SvgFilterBundle;
34
34
  /** Decorations lifted out of line flow, keyed by decoration id. Decorations absent from the map render inline next to their host word. */
35
35
  decorationPlacements?: ReadonlyMap<string, DecorationPlacementSide>;
36
+ /** Ids of elements `css` addresses individually, so the renderer stamps `DataAttribute.ELEMENT_ID` on them. Any element id qualifies — segment, line, word or decoration. Omit when the stylesheet addresses only classes. */
37
+ addressableElementIds?: ReadonlySet<string>;
36
38
  }
37
39
  /**
38
40
  * A drawable handle for one rendered subtitle frame. The consumer
@@ -1 +1 @@
1
- {"version":3,"file":"SubtitleFrameRenderer.d.ts","sourceRoot":"","sources":["../../../src/modules/rendering/SubtitleFrameRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;AAC9F,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kDAAkD,CAAC;AAChG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAElF;;;;;;;;;GASG;AACH,MAAM,WAAW,aAAa;IAC5B,0DAA0D;IAC1D,GAAG,EAAE,MAAM,CAAC;IACZ,oLAAoL;IACpL,YAAY,EAAE,cAAc,CAAC;IAC7B,kIAAkI;IAClI,SAAS,EAAE,eAAe,CAAC;IAC3B,yFAAyF;IACzF,SAAS,EAAE,eAAe,CAAC;IAC3B,oDAAoD;IACpD,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C,8CAA8C;IAC9C,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,sHAAsH;IACtH,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,0IAA0I;IAC1I,oBAAoB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;CACrE;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,IAAI,CACF,OAAO,EAAE,iCAAiC,GAAG,wBAAwB,EACrE,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,IAAI,CAAC;CACT;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;;;;;;OASG;IACH,IAAI,CACF,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,EAC/C,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,gBAAgB,CAAC,EAAE,gBAAgB,GAClC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;;;OAKG;IACH,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnC;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC;IAEnF;;;;;;;;OAQG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAE3D;;;;OAIG;IACH,KAAK,IAAI,IAAI,CAAC;CACf"}
1
+ {"version":3,"file":"SubtitleFrameRenderer.d.ts","sourceRoot":"","sources":["../../../src/modules/rendering/SubtitleFrameRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAChF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;AAC9F,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,kDAAkD,CAAC;AAChG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAElF;;;;;;;;;GASG;AACH,MAAM,WAAW,aAAa;IAC5B,0DAA0D;IAC1D,GAAG,EAAE,MAAM,CAAC;IACZ,oLAAoL;IACpL,YAAY,EAAE,cAAc,CAAC;IAC7B,kIAAkI;IAClI,SAAS,EAAE,eAAe,CAAC;IAC3B,yFAAyF;IACzF,SAAS,EAAE,eAAe,CAAC;IAC3B,oDAAoD;IACpD,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C,8CAA8C;IAC9C,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,sHAAsH;IACtH,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,0IAA0I;IAC1I,oBAAoB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;IACpE,8NAA8N;IAC9N,qBAAqB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC7C;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,IAAI,CACF,OAAO,EAAE,iCAAiC,GAAG,wBAAwB,EACrE,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,IAAI,CAAC;CACT;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;;;;;;OASG;IACH,IAAI,CACF,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,EAC/C,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,gBAAgB,CAAC,EAAE,gBAAgB,GAClC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;;;OAKG;IACH,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnC;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC;IAEnF;;;;;;;;OAQG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAE3D;;;;OAIG;IACH,KAAK,IAAI,IAAI,CAAC;CACf"}
@@ -3,15 +3,18 @@ export { BrowserSubtitleFrameRenderer } from '../rendering/BrowserSubtitleFrameR
3
3
  export { LayeredSubtitleFrame } from '../rendering/LayeredSubtitleFrame';
4
4
  export type { OverlayFrameRenderer, OverlayFrame } from '../rendering/OverlayFrameRenderer';
5
5
  export { BrowserOverlayFrameRenderer } from '../rendering/BrowserOverlayFrameRenderer';
6
- export type { AlignmentConfig, VerticalAlign } from '../rendering/types/AlignmentConfig';
6
+ export type { AlignmentConfig, VerticalAlign, HorizontalAlign } from '../rendering/types/AlignmentConfig';
7
+ export { VERTICAL_ALIGNS } from '../rendering/types/AlignmentConfig';
8
+ export type { HorizontalPlacement } from '../rendering/HorizontalPlacementResolver';
9
+ export { HorizontalPlacementResolver } from '../rendering/HorizontalPlacementResolver';
7
10
  export type { DecorationPlacementSide } from '../rendering/types/DecorationPlacementSide';
8
11
  export type { RenderingConfig, VideoFrameRequirement } from '../rendering/types/RenderingConfig';
9
- export type { BehindActorRequirement } from '../rendering/types/BehindActorRequirement';
10
12
  export type { BoxEdges } from '../rendering/types/BoxEdges';
11
13
  export type { VideoFrameSource, VideoFrameRegion } from '../rendering/types/VideoFrameSource';
12
- export { VIDEO_FRAME_LAYER_CLASS, VIDEO_FRAME_LAYER_BASELINE_CSS } from '../rendering/styles/VideoFrameLayerClass';
13
- export { BEHIND_ACTOR_BASELINE_CSS } from '../rendering/styles/BehindActorBaselineCss';
14
+ export { BaselineCssComposer, type BaselineNeeds } from '../rendering/styles/BaselineCssComposer';
15
+ export { VIDEO_FRAME_LAYER_BASELINE_CSS } from '../rendering/styles/VideoFrameLayerBaselineCss';
14
16
  export { DECORATION_CONTAINER_BASELINE_CSS, DECORATION_FONT_SIZE_MULTIPLIER, DECORATION_GAP_MULTIPLIER } from '../rendering/styles/DecorationContainerBaselineCss';
17
+ export { FROZEN_FRAME_CSS } from '../rendering/styles/FrozenFrameCss';
15
18
  export { SegmentPaddingCssRuleBuilder } from '../rendering/styles/SegmentPaddingCssRuleBuilder';
16
19
  export { ElementRenderOverrides } from '../rendering/types/ElementRenderOverrides';
17
20
  export type { ScopedRenderOverride } from '../rendering/types/ScopedRenderOverride';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/rendering/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,qBAAqB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACpH,OAAO,EAAE,4BAA4B,EAAE,MAAM,iDAAiD,CAAC;AAC/F,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAClG,OAAO,EAAE,2BAA2B,EAAE,MAAM,gDAAgD,CAAC;AAC7F,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAC/F,YAAY,EAAE,uBAAuB,EAAE,MAAM,kDAAkD,CAAC;AAChG,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACvG,YAAY,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;AAC9F,YAAY,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAClE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AACpG,OAAO,EAAE,uBAAuB,EAAE,8BAA8B,EAAE,MAAM,gDAAgD,CAAC;AACzH,OAAO,EAAE,yBAAyB,EAAE,MAAM,kDAAkD,CAAC;AAC7F,OAAO,EAAE,iCAAiC,EAAE,+BAA+B,EAAE,yBAAyB,EAAE,MAAM,0DAA0D,CAAC;AACzK,OAAO,EAAE,4BAA4B,EAAE,MAAM,wDAAwD,CAAC;AACtG,OAAO,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;AACzF,YAAY,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AAC1F,YAAY,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/rendering/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,qBAAqB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACpH,OAAO,EAAE,4BAA4B,EAAE,MAAM,iDAAiD,CAAC;AAC/F,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAClG,OAAO,EAAE,2BAA2B,EAAE,MAAM,gDAAgD,CAAC;AAC7F,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAChH,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAC3E,YAAY,EAAE,mBAAmB,EAAE,MAAM,gDAAgD,CAAC;AAC1F,OAAO,EAAE,2BAA2B,EAAE,MAAM,gDAAgD,CAAC;AAC7F,YAAY,EAAE,uBAAuB,EAAE,MAAM,kDAAkD,CAAC;AAChG,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AACvG,YAAY,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAClE,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AACpG,OAAO,EAAE,mBAAmB,EAAE,KAAK,aAAa,EAAE,MAAM,+CAA+C,CAAC;AACxG,OAAO,EAAE,8BAA8B,EAAE,MAAM,sDAAsD,CAAC;AACtG,OAAO,EAAE,iCAAiC,EAAE,+BAA+B,EAAE,yBAAyB,EAAE,MAAM,0DAA0D,CAAC;AACzK,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,4BAA4B,EAAE,MAAM,wDAAwD,CAAC;AACtG,OAAO,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;AACzF,YAAY,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AAC1F,YAAY,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC"}
@@ -1,9 +1,12 @@
1
1
  export { BrowserSubtitleFrameRenderer } from '../rendering/BrowserSubtitleFrameRenderer';
2
2
  export { LayeredSubtitleFrame } from '../rendering/LayeredSubtitleFrame';
3
3
  export { BrowserOverlayFrameRenderer } from '../rendering/BrowserOverlayFrameRenderer';
4
- export { VIDEO_FRAME_LAYER_CLASS, VIDEO_FRAME_LAYER_BASELINE_CSS } from '../rendering/styles/VideoFrameLayerClass';
5
- export { BEHIND_ACTOR_BASELINE_CSS } from '../rendering/styles/BehindActorBaselineCss';
4
+ export { VERTICAL_ALIGNS } from '../rendering/types/AlignmentConfig';
5
+ export { HorizontalPlacementResolver } from '../rendering/HorizontalPlacementResolver';
6
+ export { BaselineCssComposer } from '../rendering/styles/BaselineCssComposer';
7
+ export { VIDEO_FRAME_LAYER_BASELINE_CSS } from '../rendering/styles/VideoFrameLayerBaselineCss';
6
8
  export { DECORATION_CONTAINER_BASELINE_CSS, DECORATION_FONT_SIZE_MULTIPLIER, DECORATION_GAP_MULTIPLIER } from '../rendering/styles/DecorationContainerBaselineCss';
9
+ export { FROZEN_FRAME_CSS } from '../rendering/styles/FrozenFrameCss';
7
10
  export { SegmentPaddingCssRuleBuilder } from '../rendering/styles/SegmentPaddingCssRuleBuilder';
8
11
  export { ElementRenderOverrides } from '../rendering/types/ElementRenderOverrides';
9
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/rendering/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,MAAM,iDAAiD,CAAC;AAC/F,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAE/E,OAAO,EAAE,2BAA2B,EAAE,MAAM,gDAAgD,CAAC;AAO7F,OAAO,EAAE,uBAAuB,EAAE,8BAA8B,EAAE,MAAM,gDAAgD,CAAC;AACzH,OAAO,EAAE,yBAAyB,EAAE,MAAM,kDAAkD,CAAC;AAC7F,OAAO,EAAE,iCAAiC,EAAE,+BAA+B,EAAE,yBAAyB,EAAE,MAAM,0DAA0D,CAAC;AACzK,OAAO,EAAE,4BAA4B,EAAE,MAAM,wDAAwD,CAAC;AACtG,OAAO,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/rendering/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,MAAM,iDAAiD,CAAC;AAC/F,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAE/E,OAAO,EAAE,2BAA2B,EAAE,MAAM,gDAAgD,CAAC;AAE7F,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAE3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,gDAAgD,CAAC;AAK7F,OAAO,EAAE,mBAAmB,EAAsB,MAAM,+CAA+C,CAAC;AACxG,OAAO,EAAE,8BAA8B,EAAE,MAAM,sDAAsD,CAAC;AACtG,OAAO,EAAE,iCAAiC,EAAE,+BAA+B,EAAE,yBAAyB,EAAE,MAAM,0DAA0D,CAAC;AACzK,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,4BAA4B,EAAE,MAAM,wDAAwD,CAAC;AACtG,OAAO,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC"}
@@ -6,7 +6,6 @@
6
6
  export interface BaselineNeeds {
7
7
  readonly decorations: boolean;
8
8
  readonly videoFrame: boolean;
9
- readonly behindActor: boolean;
10
9
  }
11
10
  /**
12
11
  * Builds the baseline CSS string that prefixes a style's own rules.
@@ -14,9 +13,28 @@ export interface BaselineNeeds {
14
13
  * decoration-free template doesn't carry the `.word-decoration` rules
15
14
  * and a template that ignores the video frame doesn't carry the
16
15
  * video-frame layer rule.
16
+ *
17
+ * The result is wrapped in {@link CssLayer.FRAMEWORK}. Emitting it
18
+ * first also establishes that layer as the earliest one, which is what
19
+ * makes the baseline's `!important` rules unbeatable by anything a
20
+ * consumer layers after it — and, for normal declarations, what lets a
21
+ * consumer override the baseline without out-specifying it.
17
22
  */
18
23
  export declare class BaselineCssComposer {
19
24
  compose(needs: BaselineNeeds): string;
25
+ /**
26
+ * The optional blocks alone, for a consumer rendering into a document
27
+ * that already supplies the universal half.
28
+ *
29
+ * The layer is the reason this exists rather than the blocks being
30
+ * pasted in directly. An unlayered rule beats every layered one at any
31
+ * specificity, so a baseline left outside would quietly outrank the
32
+ * stylesheet it is a baseline *for* — and a consumer that renders the
33
+ * same caption twice would get two different pictures.
34
+ */
35
+ composeOptional(needs: BaselineNeeds): string;
36
+ private optionalBlocks;
37
+ private layered;
20
38
  /** Composes the union baseline across every needs entry in `perStyle`. */
21
39
  composeUnion(perStyle: ReadonlyArray<BaselineNeeds>): string;
22
40
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BaselineCssComposer.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/styles/BaselineCssComposer.ts"],"names":[],"mappings":"AAcA;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B;AAED;;;;;;GAMG;AACH,qBAAa,mBAAmB;IAE9B,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM;IAQrC,0EAA0E;IAC1E,YAAY,CAAC,QAAQ,EAAE,aAAa,CAAC,aAAa,CAAC,GAAG,MAAM;CAO7D"}
1
+ {"version":3,"file":"BaselineCssComposer.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/styles/BaselineCssComposer.ts"],"names":[],"mappings":"AAgBA;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,mBAAmB;IAE9B,OAAO,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM;IAIrC;;;;;;;;;OASG;IACH,eAAe,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM;IAI7C,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,OAAO;IAIf,0EAA0E;IAC1E,YAAY,CAAC,QAAQ,EAAE,aAAa,CAAC,aAAa,CAAC,GAAG,MAAM;CAM7D"}
@@ -1,39 +1,63 @@
1
1
  import { DECORATION_CONTAINER_BASELINE_CSS } from '../../rendering/styles/DecorationContainerBaselineCss';
2
- import { VIDEO_FRAME_LAYER_BASELINE_CSS } from '../../rendering/styles/VideoFrameLayerClass';
3
- import { BEHIND_ACTOR_BASELINE_CSS } from '../../rendering/styles/BehindActorBaselineCss';
2
+ import { VIDEO_FRAME_LAYER_BASELINE_CSS } from '../../rendering/styles/VideoFrameLayerBaselineCss';
3
+ import { FROZEN_FRAME_CSS } from '../../rendering/styles/FrozenFrameCss';
4
+ import { CssLayer } from '../../css/CssLayer';
4
5
  /**
5
6
  * CSS that applies to every rendered subtree regardless of which
6
7
  * baseline blocks the style opts into. Keep this minimal — every byte
7
8
  * here ships in every frame of every export.
8
9
  */
9
10
  const UNIVERSAL_BASELINE_CSS = `html { font-size: 16px; text-rendering: geometricPrecision; -webkit-font-smoothing: antialiased; -webkit-text-size-adjust: 100%; }
10
- *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; animation-fill-mode: both; animation-play-state: paused !important; }
11
+ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
11
12
  .line { white-space: nowrap; }
12
- .segment { position: relative; }`;
13
+ .segment { position: relative; }
14
+ ${FROZEN_FRAME_CSS}`;
13
15
  /**
14
16
  * Builds the baseline CSS string that prefixes a style's own rules.
15
17
  * Only the blocks the style declares it needs are appended, so a
16
18
  * decoration-free template doesn't carry the `.word-decoration` rules
17
19
  * and a template that ignores the video frame doesn't carry the
18
20
  * video-frame layer rule.
21
+ *
22
+ * The result is wrapped in {@link CssLayer.FRAMEWORK}. Emitting it
23
+ * first also establishes that layer as the earliest one, which is what
24
+ * makes the baseline's `!important` rules unbeatable by anything a
25
+ * consumer layers after it — and, for normal declarations, what lets a
26
+ * consumer override the baseline without out-specifying it.
19
27
  */
20
28
  export class BaselineCssComposer {
21
29
  compose(needs) {
22
- let css = UNIVERSAL_BASELINE_CSS;
30
+ return this.layered(UNIVERSAL_BASELINE_CSS + this.optionalBlocks(needs));
31
+ }
32
+ /**
33
+ * The optional blocks alone, for a consumer rendering into a document
34
+ * that already supplies the universal half.
35
+ *
36
+ * The layer is the reason this exists rather than the blocks being
37
+ * pasted in directly. An unlayered rule beats every layered one at any
38
+ * specificity, so a baseline left outside would quietly outrank the
39
+ * stylesheet it is a baseline *for* — and a consumer that renders the
40
+ * same caption twice would get two different pictures.
41
+ */
42
+ composeOptional(needs) {
43
+ return this.layered(this.optionalBlocks(needs));
44
+ }
45
+ optionalBlocks(needs) {
46
+ let css = '';
23
47
  if (needs.decorations)
24
48
  css += '\n' + DECORATION_CONTAINER_BASELINE_CSS;
25
49
  if (needs.videoFrame)
26
50
  css += '\n' + VIDEO_FRAME_LAYER_BASELINE_CSS;
27
- if (needs.behindActor)
28
- css += '\n' + BEHIND_ACTOR_BASELINE_CSS;
29
51
  return css;
30
52
  }
53
+ layered(css) {
54
+ return `@layer ${CssLayer.FRAMEWORK} {\n${css}\n}`;
55
+ }
31
56
  /** Composes the union baseline across every needs entry in `perStyle`. */
32
57
  composeUnion(perStyle) {
33
58
  return this.compose({
34
59
  decorations: perStyle.some((n) => n.decorations),
35
60
  videoFrame: perStyle.some((n) => n.videoFrame),
36
- behindActor: perStyle.some((n) => n.behindActor),
37
61
  });
38
62
  }
39
63
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BaselineCssComposer.js","sourceRoot":"","sources":["../../../../src/modules/rendering/styles/BaselineCssComposer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,MAAM,0DAA0D,CAAC;AAC7G,OAAO,EAAE,8BAA8B,EAAE,MAAM,gDAAgD,CAAC;AAChG,OAAO,EAAE,yBAAyB,EAAE,MAAM,kDAAkD,CAAC;AAE7F;;;;GAIG;AACH,MAAM,sBAAsB,GAAG;;;iCAGE,CAAC;AAalC;;;;;;GAMG;AACH,MAAM,OAAO,mBAAmB;IAE9B,OAAO,CAAC,KAAoB;QAC1B,IAAI,GAAG,GAAG,sBAAsB,CAAC;QACjC,IAAI,KAAK,CAAC,WAAW;YAAE,GAAG,IAAI,IAAI,GAAG,iCAAiC,CAAC;QACvE,IAAI,KAAK,CAAC,UAAU;YAAE,GAAG,IAAI,IAAI,GAAG,8BAA8B,CAAC;QACnE,IAAI,KAAK,CAAC,WAAW;YAAE,GAAG,IAAI,IAAI,GAAG,yBAAyB,CAAC;QAC/D,OAAO,GAAG,CAAC;IACb,CAAC;IAED,0EAA0E;IAC1E,YAAY,CAAC,QAAsC;QACjD,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;YAChD,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;YAC9C,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;SACjD,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"BaselineCssComposer.js","sourceRoot":"","sources":["../../../../src/modules/rendering/styles/BaselineCssComposer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,MAAM,0DAA0D,CAAC;AAC7G,OAAO,EAAE,8BAA8B,EAAE,MAAM,sDAAsD,CAAC;AACtG,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEjD;;;;GAIG;AACH,MAAM,sBAAsB,GAAG;;;;EAI7B,gBAAgB,EAAE,CAAC;AAYrB;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,mBAAmB;IAE9B,OAAO,CAAC,KAAoB;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED;;;;;;;;;OASG;IACH,eAAe,CAAC,KAAoB;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;IAClD,CAAC;IAEO,cAAc,CAAC,KAAoB;QACzC,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,KAAK,CAAC,WAAW;YAAE,GAAG,IAAI,IAAI,GAAG,iCAAiC,CAAC;QACvE,IAAI,KAAK,CAAC,UAAU;YAAE,GAAG,IAAI,IAAI,GAAG,8BAA8B,CAAC;QACnE,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,OAAO,CAAC,GAAW;QACzB,OAAO,UAAU,QAAQ,CAAC,SAAS,OAAO,GAAG,KAAK,CAAC;IACrD,CAAC;IAED,0EAA0E;IAC1E,YAAY,CAAC,QAAsC;QACjD,OAAO,IAAI,CAAC,OAAO,CAAC;YAClB,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;YAChD,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;SAC/C,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"DecorationContainerBaselineCss.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/styles/DecorationContainerBaselineCss.ts"],"names":[],"mappings":"AAEA,0MAA0M;AAC1M,eAAO,MAAM,+BAA+B,MAAM,CAAC;AAEnD,iMAAiM;AACjM,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C,2KAA2K;AAC3K,eAAO,MAAM,iCAAiC,uuBA0B7C,CAAC"}
1
+ {"version":3,"file":"DecorationContainerBaselineCss.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/styles/DecorationContainerBaselineCss.ts"],"names":[],"mappings":"AAGA,0MAA0M;AAC1M,eAAO,MAAM,+BAA+B,MAAM,CAAC;AAEnD,iMAAiM;AACjM,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C,2KAA2K;AAC3K,eAAO,MAAM,iCAAiC,uuBA0B7C,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { CssVariable } from '../../document/CssVariable';
2
+ import { CssClass } from '../../document/CssClass';
2
3
  /** Default factor `font-size` of `.word-decoration` scales by, relative to its inherited size. Consumers override per sheet by setting `CssVariable.DECORATION_FONT_SIZE_MULTIPLIER` on the host node. */
3
4
  export const DECORATION_FONT_SIZE_MULTIPLIER = 1.8;
4
5
  /** Default factor applied to the per-side base spacing between a decoration and its anchor. Consumers override per sheet by setting `CssVariable.DECORATION_GAP_MULTIPLIER` on the host node. */
@@ -12,8 +13,8 @@ export const DECORATION_CONTAINER_BASELINE_CSS = `
12
13
  .word > .word-decoration {
13
14
  margin-left: calc(0.25em * var(${CssVariable.DECORATION_GAP_MULTIPLIER}, ${DECORATION_GAP_MULTIPLIER}));
14
15
  }
15
- .segment-decorations-above,
16
- .segment-decorations-below {
16
+ .${CssClass.SEGMENT_DECORATIONS_ABOVE},
17
+ .${CssClass.SEGMENT_DECORATIONS_BELOW} {
17
18
  position: absolute;
18
19
  left: 0;
19
20
  right: 0;
@@ -22,11 +23,11 @@ export const DECORATION_CONTAINER_BASELINE_CSS = `
22
23
  gap: 0.5em;
23
24
  pointer-events: auto;
24
25
  }
25
- .segment-decorations-above {
26
+ .${CssClass.SEGMENT_DECORATIONS_ABOVE} {
26
27
  bottom: calc(100% - var(${CssVariable.SEGMENT_PADDING_TOP}, 0px));
27
28
  margin-bottom: calc(0.4em * var(${CssVariable.DECORATION_GAP_MULTIPLIER}, ${DECORATION_GAP_MULTIPLIER}));
28
29
  }
29
- .segment-decorations-below {
30
+ .${CssClass.SEGMENT_DECORATIONS_BELOW} {
30
31
  top: calc(100% - var(${CssVariable.SEGMENT_PADDING_BOTTOM}, 0px));
31
32
  margin-top: calc(0.4em * var(${CssVariable.DECORATION_GAP_MULTIPLIER}, ${DECORATION_GAP_MULTIPLIER}));
32
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DecorationContainerBaselineCss.js","sourceRoot":"","sources":["../../../../src/modules/rendering/styles/DecorationContainerBaselineCss.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAE5D,0MAA0M;AAC1M,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAEnD,iMAAiM;AACjM,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAE7C,2KAA2K;AAC3K,MAAM,CAAC,MAAM,iCAAiC,GAAG;;;8BAGnB,WAAW,CAAC,+BAA+B,KAAK,+BAA+B;;;mCAG1E,WAAW,CAAC,yBAAyB,KAAK,yBAAyB;;;;;;;;;;;;;4BAa1E,WAAW,CAAC,mBAAmB;oCACvB,WAAW,CAAC,yBAAyB,KAAK,yBAAyB;;;yBAG9E,WAAW,CAAC,sBAAsB;iCAC1B,WAAW,CAAC,yBAAyB,KAAK,yBAAyB;;CAEnG,CAAC"}
1
+ {"version":3,"file":"DecorationContainerBaselineCss.js","sourceRoot":"","sources":["../../../../src/modules/rendering/styles/DecorationContainerBaselineCss.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD,0MAA0M;AAC1M,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAG,CAAC;AAEnD,iMAAiM;AACjM,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAE7C,2KAA2K;AAC3K,MAAM,CAAC,MAAM,iCAAiC,GAAG;;;8BAGnB,WAAW,CAAC,+BAA+B,KAAK,+BAA+B;;;mCAG1E,WAAW,CAAC,yBAAyB,KAAK,yBAAyB;;GAEnG,QAAQ,CAAC,yBAAyB;GAClC,QAAQ,CAAC,yBAAyB;;;;;;;;;GASlC,QAAQ,CAAC,yBAAyB;4BACT,WAAW,CAAC,mBAAmB;oCACvB,WAAW,CAAC,yBAAyB,KAAK,yBAAyB;;GAEpG,QAAQ,CAAC,yBAAyB;yBACZ,WAAW,CAAC,sBAAsB;iCAC1B,WAAW,CAAC,yBAAyB,KAAK,yBAAyB;;CAEnG,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * The frozen-frame contract expressed as CSS: the two animation
3
+ * longhands that make a rendered frame a function of the playhead
4
+ * instead of of wall-clock time.
5
+ *
6
+ * A frame is produced by seeking every animation with a negative
7
+ * `animation-delay` and reading the result, which needs both halves to
8
+ * hold on every element. The pause keeps an animation from advancing
9
+ * on its own. The fill makes an element outside its animation's active
10
+ * window paint from the keyframes rather than falling back to its
11
+ * unanimated state — without it an element renders its resting style
12
+ * before its moment arrives, and snaps into the `from` keyframe when
13
+ * it does.
14
+ *
15
+ * Both are `!important` because an `animation:` shorthand resets every
16
+ * longhand it omits: as plain declarations they would apply or not
17
+ * depending on whether a stylesheet happened to use the shorthand.
18
+ * Neither is a style choice a stylesheet may make — `from` and `to`
19
+ * are where a stylesheet expresses what it wants each phase to look
20
+ * like.
21
+ *
22
+ * The selector is deliberately unqualified. A consumer rendering into
23
+ * a document of its own applies it as-is; one rendering into a shared
24
+ * document runs it through {@link CssScoper} first, or it will freeze
25
+ * every animation on the page.
26
+ */
27
+ export declare const FROZEN_FRAME_CSS = "*, *::before, *::after { animation-play-state: paused !important; animation-fill-mode: both !important; }";
28
+ //# sourceMappingURL=FrozenFrameCss.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FrozenFrameCss.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/styles/FrozenFrameCss.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,eAAO,MAAM,gBAAgB,8GAA8G,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * The frozen-frame contract expressed as CSS: the two animation
3
+ * longhands that make a rendered frame a function of the playhead
4
+ * instead of of wall-clock time.
5
+ *
6
+ * A frame is produced by seeking every animation with a negative
7
+ * `animation-delay` and reading the result, which needs both halves to
8
+ * hold on every element. The pause keeps an animation from advancing
9
+ * on its own. The fill makes an element outside its animation's active
10
+ * window paint from the keyframes rather than falling back to its
11
+ * unanimated state — without it an element renders its resting style
12
+ * before its moment arrives, and snaps into the `from` keyframe when
13
+ * it does.
14
+ *
15
+ * Both are `!important` because an `animation:` shorthand resets every
16
+ * longhand it omits: as plain declarations they would apply or not
17
+ * depending on whether a stylesheet happened to use the shorthand.
18
+ * Neither is a style choice a stylesheet may make — `from` and `to`
19
+ * are where a stylesheet expresses what it wants each phase to look
20
+ * like.
21
+ *
22
+ * The selector is deliberately unqualified. A consumer rendering into
23
+ * a document of its own applies it as-is; one rendering into a shared
24
+ * document runs it through {@link CssScoper} first, or it will freeze
25
+ * every animation on the page.
26
+ */
27
+ export const FROZEN_FRAME_CSS = '*, *::before, *::after { animation-play-state: paused !important; animation-fill-mode: both !important; }';
28
+ //# sourceMappingURL=FrozenFrameCss.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FrozenFrameCss.js","sourceRoot":"","sources":["../../../../src/modules/rendering/styles/FrozenFrameCss.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,2GAA2G,CAAC"}
@@ -12,13 +12,6 @@ import type { InlineStyleMap } from '../../rendering/types/InlineStyleMap';
12
12
  export declare class InlineStyleEmitter {
13
13
  private readonly usedCssVars;
14
14
  constructor(usedCssVars: ReadonlySet<string>);
15
- /**
16
- * Serializes `vars` prefixed with the engine's animation timing
17
- * primitives (`animation-play-state: paused` and
18
- * `animation-fill-mode: both`) so the consuming element renders in
19
- * lockstep with the per-frame `currentTime` instead of free-running.
20
- */
21
- serializeAnimatedVars(vars: Record<string, string>): string;
22
15
  /** Serializes `styles` as a CSS attribute body, filtering unused custom properties. */
23
16
  serializeStyles(styles: Readonly<InlineStyleMap> | undefined): string;
24
17
  private isCustomProperty;
@@ -1 +1 @@
1
- {"version":3,"file":"InlineStyleEmitter.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/styles/InlineStyleEmitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAS9E;;;;;;;;;GASG;AACH,qBAAa,kBAAkB;IAEjB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC;IAE7D;;;;;OAKG;IACH,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;IAI3D,uFAAuF;IACvF,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,SAAS,GAAG,MAAM;IAUrE,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,oBAAoB;CAG7B"}
1
+ {"version":3,"file":"InlineStyleEmitter.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/styles/InlineStyleEmitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAS9E;;;;;;;;;GASG;AACH,qBAAa,kBAAkB;IAEjB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC;IAE7D,uFAAuF;IACvF,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,SAAS,GAAG,MAAM;IAUrE,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,oBAAoB;CAG7B"}
@@ -19,15 +19,6 @@ export class InlineStyleEmitter {
19
19
  constructor(usedCssVars) {
20
20
  this.usedCssVars = usedCssVars;
21
21
  }
22
- /**
23
- * Serializes `vars` prefixed with the engine's animation timing
24
- * primitives (`animation-play-state: paused` and
25
- * `animation-fill-mode: both`) so the consuming element renders in
26
- * lockstep with the per-frame `currentTime` instead of free-running.
27
- */
28
- serializeAnimatedVars(vars) {
29
- return 'animation-play-state: paused; animation-fill-mode: both; ' + this.serializeStyles(vars);
30
- }
31
22
  /** Serializes `styles` as a CSS attribute body, filtering unused custom properties. */
32
23
  serializeStyles(styles) {
33
24
  if (!styles)
@@ -1 +1 @@
1
- {"version":3,"file":"InlineStyleEmitter.js","sourceRoot":"","sources":["../../../../src/modules/rendering/styles/InlineStyleEmitter.ts"],"names":[],"mappings":"AAEA,MAAM,kBAAkB,GAA2B;IACjD,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,MAAM;CACZ,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,OAAO,kBAAkB;IAEA;IAA7B,YAA6B,WAAgC;QAAhC,gBAAW,GAAX,WAAW,CAAqB;IAAG,CAAC;IAEjE;;;;;OAKG;IACH,qBAAqB,CAAC,IAA4B;QAChD,OAAO,2DAA2D,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAClG,CAAC;IAED,uFAAuF;IACvF,eAAe,CAAC,MAA4C;QAC1D,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QACvB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACvD,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,SAAS;YACjF,MAAM,IAAI,GAAG,QAAQ,KAAK,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC;QACjE,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,gBAAgB,CAAC,YAAoB;QAC3C,OAAO,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,mEAAmE;IACnE,oEAAoE;IACpE,kBAAkB;IACV,oBAAoB,CAAC,KAAa;QACxC,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAE,CAAC,CAAC;IACjE,CAAC;CACF"}
1
+ {"version":3,"file":"InlineStyleEmitter.js","sourceRoot":"","sources":["../../../../src/modules/rendering/styles/InlineStyleEmitter.ts"],"names":[],"mappings":"AAEA,MAAM,kBAAkB,GAA2B;IACjD,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,MAAM;CACZ,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,OAAO,kBAAkB;IAEA;IAA7B,YAA6B,WAAgC;QAAhC,gBAAW,GAAX,WAAW,CAAqB;IAAG,CAAC;IAEjE,uFAAuF;IACvF,eAAe,CAAC,MAA4C;QAC1D,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QACvB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACvD,IAAI,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,SAAS;YACjF,MAAM,IAAI,GAAG,QAAQ,KAAK,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC;QACjE,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,gBAAgB,CAAC,YAAoB;QAC3C,OAAO,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,mEAAmE;IACnE,oEAAoE;IACpE,kBAAkB;IACV,oBAAoB,CAAC,KAAa;QACxC,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAE,CAAC,CAAC;IACjE,CAAC;CACF"}
@@ -1,13 +1,6 @@
1
1
  /**
2
- * Class on the element the renderer emits inside a Segment when its
3
- * `RenderingConfig.videoFrame.required` is set. The Section's
4
- * stylesheet targets this class to position, clip, or filter the
5
- * video frame.
6
- */
7
- export declare const VIDEO_FRAME_LAYER_CLASS = "tscaps-video-frame-layer";
8
- /**
9
- * Default rule for {@link VIDEO_FRAME_LAYER_CLASS}: positions the
10
- * layer over the subtitle's painted region via the
2
+ * Default rule for the `CssClass.VIDEO_FRAME_LAYER` element: positions
3
+ * the layer over the subtitle's painted region via the
11
4
  * `--subtitle-region-*` custom properties and paints the current
12
5
  * frame slice from `--video-frame`. Class-level specificity so
13
6
  * sheet-scoped overrides always win.
@@ -18,4 +11,4 @@ export declare const VIDEO_FRAME_LAYER_CLASS = "tscaps-video-frame-layer";
18
11
  * the region geometry.
19
12
  */
20
13
  export declare const VIDEO_FRAME_LAYER_BASELINE_CSS = ".tscaps-video-frame-layer { position: absolute; left: var(--subtitle-region-x, 0); top: var(--subtitle-region-y, 0); width: var(--subtitle-region-width, 100%); height: var(--subtitle-region-height, 100%); max-width: none; max-height: none; background-image: var(--video-frame, none); background-size: 100% 100%; pointer-events: none; object-fit: fill; }";
21
- //# sourceMappingURL=VideoFrameLayerClass.d.ts.map
14
+ //# sourceMappingURL=VideoFrameLayerBaselineCss.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VideoFrameLayerBaselineCss.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/styles/VideoFrameLayerBaselineCss.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,8BAA8B,sWAA2W,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { CssClass } from '../../document/CssClass';
2
+ /**
3
+ * Default rule for the `CssClass.VIDEO_FRAME_LAYER` element: positions
4
+ * the layer over the subtitle's painted region via the
5
+ * `--subtitle-region-*` custom properties and paints the current
6
+ * frame slice from `--video-frame`. Class-level specificity so
7
+ * sheet-scoped overrides always win.
8
+ *
9
+ * `max-width: none; max-height: none` defeats consumer CSS resets
10
+ * (e.g. Tailwind's `img, video { max-width: 100% }`) that would
11
+ * clip the layer to its content-hugging segment parent and break
12
+ * the region geometry.
13
+ */
14
+ export const VIDEO_FRAME_LAYER_BASELINE_CSS = `.${CssClass.VIDEO_FRAME_LAYER} { position: absolute; left: var(--subtitle-region-x, 0); top: var(--subtitle-region-y, 0); width: var(--subtitle-region-width, 100%); height: var(--subtitle-region-height, 100%); max-width: none; max-height: none; background-image: var(--video-frame, none); background-size: 100% 100%; pointer-events: none; object-fit: fill; }`;
15
+ //# sourceMappingURL=VideoFrameLayerBaselineCss.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VideoFrameLayerBaselineCss.js","sourceRoot":"","sources":["../../../../src/modules/rendering/styles/VideoFrameLayerBaselineCss.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEtD;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,IAAI,QAAQ,CAAC,iBAAiB,0UAA0U,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import type { Document } from '../../document/Document';
2
2
  import type { WordSplitter } from '../../splitting/WordSplitter';
3
+ import type { WordFragmenter } from '../../bidi/WordFragmenter';
3
4
  import type { VideoFrameSource } from '../../rendering/types/VideoFrameSource';
4
5
  import type { BaselineCssComposer } from '../../rendering/styles/BaselineCssComposer';
5
6
  import { ActiveRenderSession } from '../../rendering/subtitle/ActiveRenderSession';
@@ -12,8 +13,9 @@ import type { PreparedStyle } from '../../rendering/subtitle/PreparedStyle';
12
13
  */
13
14
  export declare class ActiveRenderSessionFactory {
14
15
  private readonly wordSplitter;
16
+ private readonly wordFragmenter;
15
17
  private readonly baselineCssComposer;
16
- constructor(wordSplitter: WordSplitter, baselineCssComposer: BaselineCssComposer);
18
+ constructor(wordSplitter: WordSplitter, wordFragmenter: WordFragmenter, baselineCssComposer: BaselineCssComposer);
17
19
  create(doc: Document, styles: Readonly<Record<string, PreparedStyle>>, width: number, height: number, videoFrameSource: VideoFrameSource | null): ActiveRenderSession;
18
20
  }
19
21
  //# sourceMappingURL=ActiveRenderSessionFactory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ActiveRenderSessionFactory.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/subtitle/ActiveRenderSessionFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AAazF,OAAO,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AACtF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAE/E;;;;;GAKG;AACH,qBAAa,0BAA0B;IAGnC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,mBAAmB;gBADnB,YAAY,EAAE,YAAY,EAC1B,mBAAmB,EAAE,mBAAmB;IAG3D,MAAM,CACJ,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,EAC/C,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,GACxC,mBAAmB;CA0CvB"}
1
+ {"version":3,"file":"ActiveRenderSessionFactory.d.ts","sourceRoot":"","sources":["../../../../src/modules/rendering/subtitle/ActiveRenderSessionFactory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAGnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AAczF,OAAO,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AACtF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAE/E;;;;;GAKG;AACH,qBAAa,0BAA0B;IAGnC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,mBAAmB;gBAFnB,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,cAAc,EAC9B,mBAAmB,EAAE,mBAAmB;IAG3D,MAAM,CACJ,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,EAC/C,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,GACxC,mBAAmB;CA0CvB"}
@@ -1,5 +1,8 @@
1
+ import { HorizontalSideResolver } from '../../bidi/HorizontalSideResolver';
2
+ import { HorizontalPlacementResolver } from '../../rendering/HorizontalPlacementResolver';
1
3
  import { SvgFilterScoper } from '../../svg-filter/SvgFilterScoper';
2
4
  import { SvgFilterLengthResolver } from '../../svg-filter/SvgFilterLengthResolver';
5
+ import { SvgFilterDefsRenderer } from '../../svg-filter/SvgFilterDefsRenderer';
3
6
  import { SegmentSubtreeHtmlBuilder } from '../../rendering/subtitle/SegmentSubtreeHtmlBuilder';
4
7
  import { SegmentSubtreeDecomposer } from '../../rendering/subtitle/SegmentSubtreeDecomposer';
5
8
  import { SegmentPaintRegionResolver } from '../../rendering/subtitle/SegmentPaintRegionResolver';
@@ -19,19 +22,21 @@ import { ActiveRenderSession } from '../../rendering/subtitle/ActiveRenderSessio
19
22
  */
20
23
  export class ActiveRenderSessionFactory {
21
24
  wordSplitter;
25
+ wordFragmenter;
22
26
  baselineCssComposer;
23
- constructor(wordSplitter, baselineCssComposer) {
27
+ constructor(wordSplitter, wordFragmenter, baselineCssComposer) {
24
28
  this.wordSplitter = wordSplitter;
29
+ this.wordFragmenter = wordFragmenter;
25
30
  this.baselineCssComposer = baselineCssComposer;
26
31
  }
27
32
  create(doc, styles, width, height, videoFrameSource) {
28
- const subtreeBuilder = new SegmentSubtreeHtmlBuilder(this.wordSplitter);
33
+ const subtreeBuilder = new SegmentSubtreeHtmlBuilder(this.wordSplitter, this.wordFragmenter);
29
34
  const subtreeDecomposer = new SegmentSubtreeDecomposer();
30
35
  const paintRegionResolver = new SegmentPaintRegionResolver();
31
36
  const paintRegionCache = new SegmentPaintRegionCache();
32
- const filterMaterializer = new SvgFilterMaterializer(new SvgFilterScoper(), new SvgFilterLengthResolver(), height);
37
+ const filterMaterializer = new SvgFilterMaterializer(new SvgFilterDefsRenderer(new SvgFilterScoper(), new SvgFilterLengthResolver()), height);
33
38
  const videoFrameVarsBuilder = new VideoFrameVarsBuilder(subtreeBuilder, paintRegionResolver, paintRegionCache, width, height, videoFrameSource);
34
- const wrapperRenderer = new SegmentWrapperRenderer(subtreeBuilder, subtreeDecomposer, filterMaterializer, videoFrameVarsBuilder, width, height);
39
+ const wrapperRenderer = new SegmentWrapperRenderer(subtreeBuilder, subtreeDecomposer, filterMaterializer, videoFrameVarsBuilder, new HorizontalPlacementResolver(new HorizontalSideResolver()), width, height);
35
40
  const animationProbe = new AnimationProbe();
36
41
  const batchPlanner = new BatchPlanner(doc, styles, animationProbe);
37
42
  const spriteSheetCompositor = new SpriteSheetCompositor(styles, wrapperRenderer, this.baselineCssComposer, width, height);
@@ -1 +1 @@
1
- {"version":3,"file":"ActiveRenderSessionFactory.js","sourceRoot":"","sources":["../../../../src/modules/rendering/subtitle/ActiveRenderSessionFactory.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AACtF,OAAO,EAAE,yBAAyB,EAAE,MAAM,uDAAuD,CAAC;AAClG,OAAO,EAAE,wBAAwB,EAAE,MAAM,sDAAsD,CAAC;AAChG,OAAO,EAAE,0BAA0B,EAAE,MAAM,wDAAwD,CAAC;AACpG,OAAO,EAAE,uBAAuB,EAAE,MAAM,qDAAqD,CAAC;AAC9F,OAAO,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAC1F,OAAO,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAC1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,oDAAoD,CAAC;AAC5F,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAC1F,OAAO,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AAGtF;;;;;GAKG;AACH,MAAM,OAAO,0BAA0B;IAGlB;IACA;IAFnB,YACmB,YAA0B,EAC1B,mBAAwC;QADxC,iBAAY,GAAZ,YAAY,CAAc;QAC1B,wBAAmB,GAAnB,mBAAmB,CAAqB;IACxD,CAAC;IAEJ,MAAM,CACJ,GAAa,EACb,MAA+C,EAC/C,KAAa,EACb,MAAc,EACd,gBAAyC;QAEzC,MAAM,cAAc,GAAG,IAAI,yBAAyB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACxE,MAAM,iBAAiB,GAAG,IAAI,wBAAwB,EAAE,CAAC;QACzD,MAAM,mBAAmB,GAAG,IAAI,0BAA0B,EAAE,CAAC;QAC7D,MAAM,gBAAgB,GAAG,IAAI,uBAAuB,EAAE,CAAC;QACvD,MAAM,kBAAkB,GAAG,IAAI,qBAAqB,CAClD,IAAI,eAAe,EAAE,EACrB,IAAI,uBAAuB,EAAE,EAC7B,MAAM,CACP,CAAC;QACF,MAAM,qBAAqB,GAAG,IAAI,qBAAqB,CACrD,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,EACL,MAAM,EACN,gBAAgB,CACjB,CAAC;QACF,MAAM,eAAe,GAAG,IAAI,sBAAsB,CAChD,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,KAAK,EACL,MAAM,CACP,CAAC;QACF,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;QAC5C,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;QACnE,MAAM,qBAAqB,GAAG,IAAI,qBAAqB,CACrD,MAAM,EACN,eAAe,EACf,IAAI,CAAC,mBAAmB,EACxB,KAAK,EACL,MAAM,CACP,CAAC;QACF,OAAO,IAAI,mBAAmB,CAC5B,YAAY,EACZ,qBAAqB,EACrB,cAAc,EACd,gBAAgB,CACjB,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"ActiveRenderSessionFactory.js","sourceRoot":"","sources":["../../../../src/modules/rendering/subtitle/ActiveRenderSessionFactory.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,gDAAgD,CAAC;AAG7F,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AACtF,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,MAAM,uDAAuD,CAAC;AAClG,OAAO,EAAE,wBAAwB,EAAE,MAAM,sDAAsD,CAAC;AAChG,OAAO,EAAE,0BAA0B,EAAE,MAAM,wDAAwD,CAAC;AACpG,OAAO,EAAE,uBAAuB,EAAE,MAAM,qDAAqD,CAAC;AAC9F,OAAO,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAC1F,OAAO,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAC1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,oDAAoD,CAAC;AAC5F,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,0CAA0C,CAAC;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mDAAmD,CAAC;AAC1F,OAAO,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AAGtF;;;;;GAKG;AACH,MAAM,OAAO,0BAA0B;IAGlB;IACA;IACA;IAHnB,YACmB,YAA0B,EAC1B,cAA8B,EAC9B,mBAAwC;QAFxC,iBAAY,GAAZ,YAAY,CAAc;QAC1B,mBAAc,GAAd,cAAc,CAAgB;QAC9B,wBAAmB,GAAnB,mBAAmB,CAAqB;IACxD,CAAC;IAEJ,MAAM,CACJ,GAAa,EACb,MAA+C,EAC/C,KAAa,EACb,MAAc,EACd,gBAAyC;QAEzC,MAAM,cAAc,GAAG,IAAI,yBAAyB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7F,MAAM,iBAAiB,GAAG,IAAI,wBAAwB,EAAE,CAAC;QACzD,MAAM,mBAAmB,GAAG,IAAI,0BAA0B,EAAE,CAAC;QAC7D,MAAM,gBAAgB,GAAG,IAAI,uBAAuB,EAAE,CAAC;QACvD,MAAM,kBAAkB,GAAG,IAAI,qBAAqB,CAClD,IAAI,qBAAqB,CAAC,IAAI,eAAe,EAAE,EAAE,IAAI,uBAAuB,EAAE,CAAC,EAC/E,MAAM,CACP,CAAC;QACF,MAAM,qBAAqB,GAAG,IAAI,qBAAqB,CACrD,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,KAAK,EACL,MAAM,EACN,gBAAgB,CACjB,CAAC;QACF,MAAM,eAAe,GAAG,IAAI,sBAAsB,CAChD,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,IAAI,2BAA2B,CAAC,IAAI,sBAAsB,EAAE,CAAC,EAC7D,KAAK,EACL,MAAM,CACP,CAAC;QACF,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;QAC5C,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;QACnE,MAAM,qBAAqB,GAAG,IAAI,qBAAqB,CACrD,MAAM,EACN,eAAe,EACf,IAAI,CAAC,mBAAmB,EACxB,KAAK,EACL,MAAM,CACP,CAAC;QACF,OAAO,IAAI,mBAAmB,CAC5B,YAAY,EACZ,qBAAqB,EACrB,cAAc,EACd,gBAAgB,CACjB,CAAC;IACJ,CAAC;CACF"}