@tscaps/engine 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (483) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +349 -0
  3. package/dist/index.d.ts +12 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +12 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/modules/css/BrowserCssResourceEmbedder.d.ts +5 -0
  8. package/dist/modules/css/BrowserCssResourceEmbedder.d.ts.map +1 -0
  9. package/dist/modules/css/BrowserCssResourceEmbedder.js +41 -0
  10. package/dist/modules/css/BrowserCssResourceEmbedder.js.map +1 -0
  11. package/dist/modules/css/CssMinifier.d.ts +12 -0
  12. package/dist/modules/css/CssMinifier.d.ts.map +1 -0
  13. package/dist/modules/css/CssMinifier.js +47 -0
  14. package/dist/modules/css/CssMinifier.js.map +1 -0
  15. package/dist/modules/css/CssResourceEmbedder.d.ts +4 -0
  16. package/dist/modules/css/CssResourceEmbedder.d.ts.map +1 -0
  17. package/dist/modules/css/CssResourceEmbedder.js +2 -0
  18. package/dist/modules/css/CssResourceEmbedder.js.map +1 -0
  19. package/dist/modules/css/CssScoper.d.ts +16 -0
  20. package/dist/modules/css/CssScoper.d.ts.map +1 -0
  21. package/dist/modules/css/CssScoper.js +109 -0
  22. package/dist/modules/css/CssScoper.js.map +1 -0
  23. package/dist/modules/css/NoopCssResourceEmbedder.d.ts +12 -0
  24. package/dist/modules/css/NoopCssResourceEmbedder.d.ts.map +1 -0
  25. package/dist/modules/css/NoopCssResourceEmbedder.js +13 -0
  26. package/dist/modules/css/NoopCssResourceEmbedder.js.map +1 -0
  27. package/dist/modules/css/index.d.ts +6 -0
  28. package/dist/modules/css/index.d.ts.map +1 -0
  29. package/dist/modules/css/index.js +5 -0
  30. package/dist/modules/css/index.js.map +1 -0
  31. package/dist/modules/document/CssVariable.d.ts +46 -0
  32. package/dist/modules/document/CssVariable.d.ts.map +1 -0
  33. package/dist/modules/document/CssVariable.js +47 -0
  34. package/dist/modules/document/CssVariable.js.map +1 -0
  35. package/dist/modules/document/Document.d.ts +43 -0
  36. package/dist/modules/document/Document.d.ts.map +1 -0
  37. package/dist/modules/document/Document.js +86 -0
  38. package/dist/modules/document/Document.js.map +1 -0
  39. package/dist/modules/document/DocumentEditor.d.ts +111 -0
  40. package/dist/modules/document/DocumentEditor.d.ts.map +1 -0
  41. package/dist/modules/document/DocumentEditor.js +555 -0
  42. package/dist/modules/document/DocumentEditor.js.map +1 -0
  43. package/dist/modules/document/Letter.d.ts +17 -0
  44. package/dist/modules/document/Letter.d.ts.map +1 -0
  45. package/dist/modules/document/Letter.js +17 -0
  46. package/dist/modules/document/Letter.js.map +1 -0
  47. package/dist/modules/document/Line.d.ts +31 -0
  48. package/dist/modules/document/Line.d.ts.map +1 -0
  49. package/dist/modules/document/Line.js +94 -0
  50. package/dist/modules/document/Line.js.map +1 -0
  51. package/dist/modules/document/LineState.d.ts +6 -0
  52. package/dist/modules/document/LineState.d.ts.map +1 -0
  53. package/dist/modules/document/LineState.js +7 -0
  54. package/dist/modules/document/LineState.js.map +1 -0
  55. package/dist/modules/document/NarrationPace.d.ts +20 -0
  56. package/dist/modules/document/NarrationPace.d.ts.map +1 -0
  57. package/dist/modules/document/NarrationPace.js +60 -0
  58. package/dist/modules/document/NarrationPace.js.map +1 -0
  59. package/dist/modules/document/Section.d.ts +45 -0
  60. package/dist/modules/document/Section.d.ts.map +1 -0
  61. package/dist/modules/document/Section.js +94 -0
  62. package/dist/modules/document/Section.js.map +1 -0
  63. package/dist/modules/document/Segment.d.ts +40 -0
  64. package/dist/modules/document/Segment.d.ts.map +1 -0
  65. package/dist/modules/document/Segment.js +85 -0
  66. package/dist/modules/document/Segment.js.map +1 -0
  67. package/dist/modules/document/Tag.d.ts +24 -0
  68. package/dist/modules/document/Tag.d.ts.map +1 -0
  69. package/dist/modules/document/Tag.js +37 -0
  70. package/dist/modules/document/Tag.js.map +1 -0
  71. package/dist/modules/document/TimeFragment.d.ts +11 -0
  72. package/dist/modules/document/TimeFragment.d.ts.map +1 -0
  73. package/dist/modules/document/TimeFragment.js +29 -0
  74. package/dist/modules/document/TimeFragment.js.map +1 -0
  75. package/dist/modules/document/Word.d.ts +40 -0
  76. package/dist/modules/document/Word.d.ts.map +1 -0
  77. package/dist/modules/document/Word.js +114 -0
  78. package/dist/modules/document/Word.js.map +1 -0
  79. package/dist/modules/document/WordState.d.ts +6 -0
  80. package/dist/modules/document/WordState.d.ts.map +1 -0
  81. package/dist/modules/document/WordState.js +7 -0
  82. package/dist/modules/document/WordState.js.map +1 -0
  83. package/dist/modules/document/index.d.ts +14 -0
  84. package/dist/modules/document/index.d.ts.map +1 -0
  85. package/dist/modules/document/index.js +14 -0
  86. package/dist/modules/document/index.js.map +1 -0
  87. package/dist/modules/effect/CarryQuotesEffect.d.ts +47 -0
  88. package/dist/modules/effect/CarryQuotesEffect.d.ts.map +1 -0
  89. package/dist/modules/effect/CarryQuotesEffect.js +181 -0
  90. package/dist/modules/effect/CarryQuotesEffect.js.map +1 -0
  91. package/dist/modules/effect/Effect.d.ts +16 -0
  92. package/dist/modules/effect/Effect.d.ts.map +1 -0
  93. package/dist/modules/effect/Effect.js +2 -0
  94. package/dist/modules/effect/Effect.js.map +1 -0
  95. package/dist/modules/effect/GapFreeEffect.d.ts +24 -0
  96. package/dist/modules/effect/GapFreeEffect.d.ts.map +1 -0
  97. package/dist/modules/effect/GapFreeEffect.js +67 -0
  98. package/dist/modules/effect/GapFreeEffect.js.map +1 -0
  99. package/dist/modules/effect/RemovePunctuationEffect.d.ts +21 -0
  100. package/dist/modules/effect/RemovePunctuationEffect.d.ts.map +1 -0
  101. package/dist/modules/effect/RemovePunctuationEffect.js +52 -0
  102. package/dist/modules/effect/RemovePunctuationEffect.js.map +1 -0
  103. package/dist/modules/effect/SmartLowercaseEffect.d.ts +21 -0
  104. package/dist/modules/effect/SmartLowercaseEffect.d.ts.map +1 -0
  105. package/dist/modules/effect/SmartLowercaseEffect.js +45 -0
  106. package/dist/modules/effect/SmartLowercaseEffect.js.map +1 -0
  107. package/dist/modules/effect/SmartPunctuationEffect.d.ts +25 -0
  108. package/dist/modules/effect/SmartPunctuationEffect.d.ts.map +1 -0
  109. package/dist/modules/effect/SmartPunctuationEffect.js +68 -0
  110. package/dist/modules/effect/SmartPunctuationEffect.js.map +1 -0
  111. package/dist/modules/effect/index.d.ts +7 -0
  112. package/dist/modules/effect/index.d.ts.map +1 -0
  113. package/dist/modules/effect/index.js +6 -0
  114. package/dist/modules/effect/index.js.map +1 -0
  115. package/dist/modules/pipeline/PipelineProgress.d.ts +30 -0
  116. package/dist/modules/pipeline/PipelineProgress.d.ts.map +1 -0
  117. package/dist/modules/pipeline/PipelineProgress.js +2 -0
  118. package/dist/modules/pipeline/PipelineProgress.js.map +1 -0
  119. package/dist/modules/pipeline/RenderPipeline.d.ts +105 -0
  120. package/dist/modules/pipeline/RenderPipeline.d.ts.map +1 -0
  121. package/dist/modules/pipeline/RenderPipeline.js +232 -0
  122. package/dist/modules/pipeline/RenderPipeline.js.map +1 -0
  123. package/dist/modules/pipeline/RenderPipelineBuilder.d.ts +143 -0
  124. package/dist/modules/pipeline/RenderPipelineBuilder.d.ts.map +1 -0
  125. package/dist/modules/pipeline/RenderPipelineBuilder.js +317 -0
  126. package/dist/modules/pipeline/RenderPipelineBuilder.js.map +1 -0
  127. package/dist/modules/pipeline/index.d.ts +6 -0
  128. package/dist/modules/pipeline/index.d.ts.map +1 -0
  129. package/dist/modules/pipeline/index.js +3 -0
  130. package/dist/modules/pipeline/index.js.map +1 -0
  131. package/dist/modules/profiling/Profiler.d.ts +115 -0
  132. package/dist/modules/profiling/Profiler.d.ts.map +1 -0
  133. package/dist/modules/profiling/Profiler.js +316 -0
  134. package/dist/modules/profiling/Profiler.js.map +1 -0
  135. package/dist/modules/profiling/index.d.ts +2 -0
  136. package/dist/modules/profiling/index.d.ts.map +1 -0
  137. package/dist/modules/profiling/index.js +2 -0
  138. package/dist/modules/profiling/index.js.map +1 -0
  139. package/dist/modules/rendering/AlignmentConfig.d.ts +21 -0
  140. package/dist/modules/rendering/AlignmentConfig.d.ts.map +1 -0
  141. package/dist/modules/rendering/AlignmentConfig.js +2 -0
  142. package/dist/modules/rendering/AlignmentConfig.js.map +1 -0
  143. package/dist/modules/rendering/BoxEdges.d.ts +8 -0
  144. package/dist/modules/rendering/BoxEdges.d.ts.map +1 -0
  145. package/dist/modules/rendering/BoxEdges.js +2 -0
  146. package/dist/modules/rendering/BoxEdges.js.map +1 -0
  147. package/dist/modules/rendering/BrowserOverlayFrameRenderer.d.ts +12 -0
  148. package/dist/modules/rendering/BrowserOverlayFrameRenderer.d.ts.map +1 -0
  149. package/dist/modules/rendering/BrowserOverlayFrameRenderer.js +31 -0
  150. package/dist/modules/rendering/BrowserOverlayFrameRenderer.js.map +1 -0
  151. package/dist/modules/rendering/BrowserSubtitleFrameRenderer.d.ts +57 -0
  152. package/dist/modules/rendering/BrowserSubtitleFrameRenderer.d.ts.map +1 -0
  153. package/dist/modules/rendering/BrowserSubtitleFrameRenderer.js +775 -0
  154. package/dist/modules/rendering/BrowserSubtitleFrameRenderer.js.map +1 -0
  155. package/dist/modules/rendering/ElementRenderOverrides.d.ts +15 -0
  156. package/dist/modules/rendering/ElementRenderOverrides.d.ts.map +1 -0
  157. package/dist/modules/rendering/ElementRenderOverrides.js +24 -0
  158. package/dist/modules/rendering/ElementRenderOverrides.js.map +1 -0
  159. package/dist/modules/rendering/InlineStyleMap.d.ts +9 -0
  160. package/dist/modules/rendering/InlineStyleMap.d.ts.map +1 -0
  161. package/dist/modules/rendering/InlineStyleMap.js +2 -0
  162. package/dist/modules/rendering/InlineStyleMap.js.map +1 -0
  163. package/dist/modules/rendering/LayeredSubtitleFrame.d.ts +20 -0
  164. package/dist/modules/rendering/LayeredSubtitleFrame.d.ts.map +1 -0
  165. package/dist/modules/rendering/LayeredSubtitleFrame.js +36 -0
  166. package/dist/modules/rendering/LayeredSubtitleFrame.js.map +1 -0
  167. package/dist/modules/rendering/OverlayFrameRenderer.d.ts +27 -0
  168. package/dist/modules/rendering/OverlayFrameRenderer.d.ts.map +1 -0
  169. package/dist/modules/rendering/OverlayFrameRenderer.js +2 -0
  170. package/dist/modules/rendering/OverlayFrameRenderer.js.map +1 -0
  171. package/dist/modules/rendering/RenderingConfig.d.ts +22 -0
  172. package/dist/modules/rendering/RenderingConfig.d.ts.map +1 -0
  173. package/dist/modules/rendering/RenderingConfig.js +2 -0
  174. package/dist/modules/rendering/RenderingConfig.js.map +1 -0
  175. package/dist/modules/rendering/ScopedRenderOverride.d.ts +19 -0
  176. package/dist/modules/rendering/ScopedRenderOverride.d.ts.map +1 -0
  177. package/dist/modules/rendering/ScopedRenderOverride.js +2 -0
  178. package/dist/modules/rendering/ScopedRenderOverride.js.map +1 -0
  179. package/dist/modules/rendering/SegmentPaintRegionResolver.d.ts +41 -0
  180. package/dist/modules/rendering/SegmentPaintRegionResolver.d.ts.map +1 -0
  181. package/dist/modules/rendering/SegmentPaintRegionResolver.js +47 -0
  182. package/dist/modules/rendering/SegmentPaintRegionResolver.js.map +1 -0
  183. package/dist/modules/rendering/SegmentSubtreeHtmlBuilder.d.ts +58 -0
  184. package/dist/modules/rendering/SegmentSubtreeHtmlBuilder.d.ts.map +1 -0
  185. package/dist/modules/rendering/SegmentSubtreeHtmlBuilder.js +132 -0
  186. package/dist/modules/rendering/SegmentSubtreeHtmlBuilder.js.map +1 -0
  187. package/dist/modules/rendering/SubtitleFrameRenderer.d.ts +111 -0
  188. package/dist/modules/rendering/SubtitleFrameRenderer.d.ts.map +1 -0
  189. package/dist/modules/rendering/SubtitleFrameRenderer.js +2 -0
  190. package/dist/modules/rendering/SubtitleFrameRenderer.js.map +1 -0
  191. package/dist/modules/rendering/VideoFrameLayerClass.d.ts +21 -0
  192. package/dist/modules/rendering/VideoFrameLayerClass.d.ts.map +1 -0
  193. package/dist/modules/rendering/VideoFrameLayerClass.js +21 -0
  194. package/dist/modules/rendering/VideoFrameLayerClass.js.map +1 -0
  195. package/dist/modules/rendering/VideoFrameSource.d.ts +29 -0
  196. package/dist/modules/rendering/VideoFrameSource.d.ts.map +1 -0
  197. package/dist/modules/rendering/VideoFrameSource.js +2 -0
  198. package/dist/modules/rendering/VideoFrameSource.js.map +1 -0
  199. package/dist/modules/rendering/index.d.ts +14 -0
  200. package/dist/modules/rendering/index.d.ts.map +1 -0
  201. package/dist/modules/rendering/index.js +6 -0
  202. package/dist/modules/rendering/index.js.map +1 -0
  203. package/dist/modules/splitting/BalancedLineSplitter.d.ts +24 -0
  204. package/dist/modules/splitting/BalancedLineSplitter.d.ts.map +1 -0
  205. package/dist/modules/splitting/BalancedLineSplitter.js +81 -0
  206. package/dist/modules/splitting/BalancedLineSplitter.js.map +1 -0
  207. package/dist/modules/splitting/BalancedPixelWidthLineSplitter.d.ts +31 -0
  208. package/dist/modules/splitting/BalancedPixelWidthLineSplitter.d.ts.map +1 -0
  209. package/dist/modules/splitting/BalancedPixelWidthLineSplitter.js +99 -0
  210. package/dist/modules/splitting/BalancedPixelWidthLineSplitter.js.map +1 -0
  211. package/dist/modules/splitting/BoundarySegmentSplitter.d.ts +19 -0
  212. package/dist/modules/splitting/BoundarySegmentSplitter.d.ts.map +1 -0
  213. package/dist/modules/splitting/BoundarySegmentSplitter.js +38 -0
  214. package/dist/modules/splitting/BoundarySegmentSplitter.js.map +1 -0
  215. package/dist/modules/splitting/CompositeSegmentSplitter.d.ts +8 -0
  216. package/dist/modules/splitting/CompositeSegmentSplitter.d.ts.map +1 -0
  217. package/dist/modules/splitting/CompositeSegmentSplitter.js +12 -0
  218. package/dist/modules/splitting/CompositeSegmentSplitter.js.map +1 -0
  219. package/dist/modules/splitting/DomProbeCanvasTextMeasurer.d.ts +56 -0
  220. package/dist/modules/splitting/DomProbeCanvasTextMeasurer.d.ts.map +1 -0
  221. package/dist/modules/splitting/DomProbeCanvasTextMeasurer.js +197 -0
  222. package/dist/modules/splitting/DomProbeCanvasTextMeasurer.js.map +1 -0
  223. package/dist/modules/splitting/GraphemeWordSplitter.d.ts +11 -0
  224. package/dist/modules/splitting/GraphemeWordSplitter.d.ts.map +1 -0
  225. package/dist/modules/splitting/GraphemeWordSplitter.js +12 -0
  226. package/dist/modules/splitting/GraphemeWordSplitter.js.map +1 -0
  227. package/dist/modules/splitting/LimitByCharsSegmentSplitter.d.ts +15 -0
  228. package/dist/modules/splitting/LimitByCharsSegmentSplitter.d.ts.map +1 -0
  229. package/dist/modules/splitting/LimitByCharsSegmentSplitter.js +64 -0
  230. package/dist/modules/splitting/LimitByCharsSegmentSplitter.js.map +1 -0
  231. package/dist/modules/splitting/LimitByScaledCharsSegmentSplitter.d.ts +30 -0
  232. package/dist/modules/splitting/LimitByScaledCharsSegmentSplitter.d.ts.map +1 -0
  233. package/dist/modules/splitting/LimitByScaledCharsSegmentSplitter.js +66 -0
  234. package/dist/modules/splitting/LimitByScaledCharsSegmentSplitter.js.map +1 -0
  235. package/dist/modules/splitting/LimitByWordsSegmentSplitter.d.ts +12 -0
  236. package/dist/modules/splitting/LimitByWordsSegmentSplitter.d.ts.map +1 -0
  237. package/dist/modules/splitting/LimitByWordsSegmentSplitter.js +25 -0
  238. package/dist/modules/splitting/LimitByWordsSegmentSplitter.js.map +1 -0
  239. package/dist/modules/splitting/LineSplitter.d.ts +10 -0
  240. package/dist/modules/splitting/LineSplitter.d.ts.map +1 -0
  241. package/dist/modules/splitting/LineSplitter.js +2 -0
  242. package/dist/modules/splitting/LineSplitter.js.map +1 -0
  243. package/dist/modules/splitting/PauseBasedSegmentSplitter.d.ts +24 -0
  244. package/dist/modules/splitting/PauseBasedSegmentSplitter.d.ts.map +1 -0
  245. package/dist/modules/splitting/PauseBasedSegmentSplitter.js +43 -0
  246. package/dist/modules/splitting/PauseBasedSegmentSplitter.js.map +1 -0
  247. package/dist/modules/splitting/SegmentSplitter.d.ts +10 -0
  248. package/dist/modules/splitting/SegmentSplitter.d.ts.map +1 -0
  249. package/dist/modules/splitting/SegmentSplitter.js +2 -0
  250. package/dist/modules/splitting/SegmentSplitter.js.map +1 -0
  251. package/dist/modules/splitting/SpeakerChangeSegmentSplitter.d.ts +17 -0
  252. package/dist/modules/splitting/SpeakerChangeSegmentSplitter.d.ts.map +1 -0
  253. package/dist/modules/splitting/SpeakerChangeSegmentSplitter.js +46 -0
  254. package/dist/modules/splitting/SpeakerChangeSegmentSplitter.js.map +1 -0
  255. package/dist/modules/splitting/TextMeasurer.d.ts +15 -0
  256. package/dist/modules/splitting/TextMeasurer.d.ts.map +1 -0
  257. package/dist/modules/splitting/TextMeasurer.js +2 -0
  258. package/dist/modules/splitting/TextMeasurer.js.map +1 -0
  259. package/dist/modules/splitting/WordSplitter.d.ts +8 -0
  260. package/dist/modules/splitting/WordSplitter.d.ts.map +1 -0
  261. package/dist/modules/splitting/WordSplitter.js +2 -0
  262. package/dist/modules/splitting/WordSplitter.js.map +1 -0
  263. package/dist/modules/splitting/index.d.ts +24 -0
  264. package/dist/modules/splitting/index.d.ts.map +1 -0
  265. package/dist/modules/splitting/index.js +12 -0
  266. package/dist/modules/splitting/index.js.map +1 -0
  267. package/dist/modules/svg-filter/SvgFilter.d.ts +16 -0
  268. package/dist/modules/svg-filter/SvgFilter.d.ts.map +1 -0
  269. package/dist/modules/svg-filter/SvgFilter.js +28 -0
  270. package/dist/modules/svg-filter/SvgFilter.js.map +1 -0
  271. package/dist/modules/svg-filter/SvgFilterBundle.d.ts +16 -0
  272. package/dist/modules/svg-filter/SvgFilterBundle.d.ts.map +1 -0
  273. package/dist/modules/svg-filter/SvgFilterBundle.js +20 -0
  274. package/dist/modules/svg-filter/SvgFilterBundle.js.map +1 -0
  275. package/dist/modules/svg-filter/SvgFilterDefinitions.d.ts +16 -0
  276. package/dist/modules/svg-filter/SvgFilterDefinitions.d.ts.map +1 -0
  277. package/dist/modules/svg-filter/SvgFilterDefinitions.js +25 -0
  278. package/dist/modules/svg-filter/SvgFilterDefinitions.js.map +1 -0
  279. package/dist/modules/svg-filter/SvgFilterDefinitionsParser.d.ts +21 -0
  280. package/dist/modules/svg-filter/SvgFilterDefinitionsParser.d.ts.map +1 -0
  281. package/dist/modules/svg-filter/SvgFilterDefinitionsParser.js +50 -0
  282. package/dist/modules/svg-filter/SvgFilterDefinitionsParser.js.map +1 -0
  283. package/dist/modules/svg-filter/SvgFilterLengthResolver.d.ts +17 -0
  284. package/dist/modules/svg-filter/SvgFilterLengthResolver.d.ts.map +1 -0
  285. package/dist/modules/svg-filter/SvgFilterLengthResolver.js +27 -0
  286. package/dist/modules/svg-filter/SvgFilterLengthResolver.js.map +1 -0
  287. package/dist/modules/svg-filter/SvgFilterScope.d.ts +18 -0
  288. package/dist/modules/svg-filter/SvgFilterScope.d.ts.map +1 -0
  289. package/dist/modules/svg-filter/SvgFilterScope.js +28 -0
  290. package/dist/modules/svg-filter/SvgFilterScope.js.map +1 -0
  291. package/dist/modules/svg-filter/SvgFilterScopeProvider.d.ts +52 -0
  292. package/dist/modules/svg-filter/SvgFilterScopeProvider.d.ts.map +1 -0
  293. package/dist/modules/svg-filter/SvgFilterScopeProvider.js +2 -0
  294. package/dist/modules/svg-filter/SvgFilterScopeProvider.js.map +1 -0
  295. package/dist/modules/svg-filter/SvgFilterScoper.d.ts +60 -0
  296. package/dist/modules/svg-filter/SvgFilterScoper.d.ts.map +1 -0
  297. package/dist/modules/svg-filter/SvgFilterScoper.js +58 -0
  298. package/dist/modules/svg-filter/SvgFilterScoper.js.map +1 -0
  299. package/dist/modules/svg-filter/index.d.ts +10 -0
  300. package/dist/modules/svg-filter/index.d.ts.map +1 -0
  301. package/dist/modules/svg-filter/index.js +8 -0
  302. package/dist/modules/svg-filter/index.js.map +1 -0
  303. package/dist/modules/tagging/RegexTagger.d.ts +11 -0
  304. package/dist/modules/tagging/RegexTagger.d.ts.map +1 -0
  305. package/dist/modules/tagging/RegexTagger.js +32 -0
  306. package/dist/modules/tagging/RegexTagger.js.map +1 -0
  307. package/dist/modules/tagging/SpanTagger.d.ts +25 -0
  308. package/dist/modules/tagging/SpanTagger.d.ts.map +1 -0
  309. package/dist/modules/tagging/SpanTagger.js +73 -0
  310. package/dist/modules/tagging/SpanTagger.js.map +1 -0
  311. package/dist/modules/tagging/StructureTagger.d.ts +20 -0
  312. package/dist/modules/tagging/StructureTagger.d.ts.map +1 -0
  313. package/dist/modules/tagging/StructureTagger.js +74 -0
  314. package/dist/modules/tagging/StructureTagger.js.map +1 -0
  315. package/dist/modules/tagging/Tagger.d.ts +5 -0
  316. package/dist/modules/tagging/Tagger.d.ts.map +1 -0
  317. package/dist/modules/tagging/Tagger.js +5 -0
  318. package/dist/modules/tagging/Tagger.js.map +1 -0
  319. package/dist/modules/tagging/WordlistTagger.d.ts +11 -0
  320. package/dist/modules/tagging/WordlistTagger.d.ts.map +1 -0
  321. package/dist/modules/tagging/WordlistTagger.js +31 -0
  322. package/dist/modules/tagging/WordlistTagger.js.map +1 -0
  323. package/dist/modules/tagging/index.d.ts +6 -0
  324. package/dist/modules/tagging/index.d.ts.map +1 -0
  325. package/dist/modules/tagging/index.js +6 -0
  326. package/dist/modules/tagging/index.js.map +1 -0
  327. package/dist/modules/transcription/AudioDecoder.d.ts +11 -0
  328. package/dist/modules/transcription/AudioDecoder.d.ts.map +1 -0
  329. package/dist/modules/transcription/AudioDecoder.js +2 -0
  330. package/dist/modules/transcription/AudioDecoder.js.map +1 -0
  331. package/dist/modules/transcription/BrowserAudioDecoder.d.ts +13 -0
  332. package/dist/modules/transcription/BrowserAudioDecoder.d.ts.map +1 -0
  333. package/dist/modules/transcription/BrowserAudioDecoder.js +34 -0
  334. package/dist/modules/transcription/BrowserAudioDecoder.js.map +1 -0
  335. package/dist/modules/transcription/PassthroughTranscriber.d.ts +20 -0
  336. package/dist/modules/transcription/PassthroughTranscriber.d.ts.map +1 -0
  337. package/dist/modules/transcription/PassthroughTranscriber.js +23 -0
  338. package/dist/modules/transcription/PassthroughTranscriber.js.map +1 -0
  339. package/dist/modules/transcription/PreDecodedAudioDecoder.d.ts +12 -0
  340. package/dist/modules/transcription/PreDecodedAudioDecoder.d.ts.map +1 -0
  341. package/dist/modules/transcription/PreDecodedAudioDecoder.js +14 -0
  342. package/dist/modules/transcription/PreDecodedAudioDecoder.js.map +1 -0
  343. package/dist/modules/transcription/SrtTranscriber.d.ts +33 -0
  344. package/dist/modules/transcription/SrtTranscriber.d.ts.map +1 -0
  345. package/dist/modules/transcription/SrtTranscriber.js +111 -0
  346. package/dist/modules/transcription/SrtTranscriber.js.map +1 -0
  347. package/dist/modules/transcription/Transcriber.d.ts +23 -0
  348. package/dist/modules/transcription/Transcriber.d.ts.map +1 -0
  349. package/dist/modules/transcription/Transcriber.js +2 -0
  350. package/dist/modules/transcription/Transcriber.js.map +1 -0
  351. package/dist/modules/transcription/WhisperTranscriber.d.ts +44 -0
  352. package/dist/modules/transcription/WhisperTranscriber.d.ts.map +1 -0
  353. package/dist/modules/transcription/WhisperTranscriber.js +162 -0
  354. package/dist/modules/transcription/WhisperTranscriber.js.map +1 -0
  355. package/dist/modules/transcription/index.d.ts +8 -0
  356. package/dist/modules/transcription/index.d.ts.map +1 -0
  357. package/dist/modules/transcription/index.js +6 -0
  358. package/dist/modules/transcription/index.js.map +1 -0
  359. package/dist/modules/video/RenderJob.d.ts +95 -0
  360. package/dist/modules/video/RenderJob.d.ts.map +1 -0
  361. package/dist/modules/video/RenderJob.js +2 -0
  362. package/dist/modules/video/RenderJob.js.map +1 -0
  363. package/dist/modules/video/VideoRenderer.d.ts +5 -0
  364. package/dist/modules/video/VideoRenderer.d.ts.map +1 -0
  365. package/dist/modules/video/VideoRenderer.js +2 -0
  366. package/dist/modules/video/VideoRenderer.js.map +1 -0
  367. package/dist/modules/video/index.d.ts +33 -0
  368. package/dist/modules/video/index.d.ts.map +1 -0
  369. package/dist/modules/video/index.js +17 -0
  370. package/dist/modules/video/index.js.map +1 -0
  371. package/dist/modules/video/mediabunny/MediaBunnyVideoRenderer.d.ts +69 -0
  372. package/dist/modules/video/mediabunny/MediaBunnyVideoRenderer.d.ts.map +1 -0
  373. package/dist/modules/video/mediabunny/MediaBunnyVideoRenderer.js +206 -0
  374. package/dist/modules/video/mediabunny/MediaBunnyVideoRenderer.js.map +1 -0
  375. package/dist/modules/video/mediabunny/audio/AudioTrackBridge.d.ts +24 -0
  376. package/dist/modules/video/mediabunny/audio/AudioTrackBridge.d.ts.map +1 -0
  377. package/dist/modules/video/mediabunny/audio/AudioTrackBridge.js +2 -0
  378. package/dist/modules/video/mediabunny/audio/AudioTrackBridge.js.map +1 -0
  379. package/dist/modules/video/mediabunny/audio/AudioTrackBridgeFactory.d.ts +20 -0
  380. package/dist/modules/video/mediabunny/audio/AudioTrackBridgeFactory.d.ts.map +1 -0
  381. package/dist/modules/video/mediabunny/audio/AudioTrackBridgeFactory.js +2 -0
  382. package/dist/modules/video/mediabunny/audio/AudioTrackBridgeFactory.js.map +1 -0
  383. package/dist/modules/video/mediabunny/audio/DefaultAudioTrackBridgeFactory.d.ts +11 -0
  384. package/dist/modules/video/mediabunny/audio/DefaultAudioTrackBridgeFactory.d.ts.map +1 -0
  385. package/dist/modules/video/mediabunny/audio/DefaultAudioTrackBridgeFactory.js +32 -0
  386. package/dist/modules/video/mediabunny/audio/DefaultAudioTrackBridgeFactory.js.map +1 -0
  387. package/dist/modules/video/mediabunny/audio/DiscardAudioTrackBridge.d.ts +12 -0
  388. package/dist/modules/video/mediabunny/audio/DiscardAudioTrackBridge.d.ts.map +1 -0
  389. package/dist/modules/video/mediabunny/audio/DiscardAudioTrackBridge.js +14 -0
  390. package/dist/modules/video/mediabunny/audio/DiscardAudioTrackBridge.js.map +1 -0
  391. package/dist/modules/video/mediabunny/audio/PassthroughAudioTrackBridge.d.ts +28 -0
  392. package/dist/modules/video/mediabunny/audio/PassthroughAudioTrackBridge.d.ts.map +1 -0
  393. package/dist/modules/video/mediabunny/audio/PassthroughAudioTrackBridge.js +52 -0
  394. package/dist/modules/video/mediabunny/audio/PassthroughAudioTrackBridge.js.map +1 -0
  395. package/dist/modules/video/mediabunny/audio/TranscodeAudioTrackBridge.d.ts +25 -0
  396. package/dist/modules/video/mediabunny/audio/TranscodeAudioTrackBridge.d.ts.map +1 -0
  397. package/dist/modules/video/mediabunny/audio/TranscodeAudioTrackBridge.js +52 -0
  398. package/dist/modules/video/mediabunny/audio/TranscodeAudioTrackBridge.js.map +1 -0
  399. package/dist/modules/video/mediabunny/caption/BatchedSubtitleLayerSource.d.ts +32 -0
  400. package/dist/modules/video/mediabunny/caption/BatchedSubtitleLayerSource.d.ts.map +1 -0
  401. package/dist/modules/video/mediabunny/caption/BatchedSubtitleLayerSource.js +60 -0
  402. package/dist/modules/video/mediabunny/caption/BatchedSubtitleLayerSource.js.map +1 -0
  403. package/dist/modules/video/mediabunny/caption/ComposedSubtitleLayerSource.d.ts +27 -0
  404. package/dist/modules/video/mediabunny/caption/ComposedSubtitleLayerSource.d.ts.map +1 -0
  405. package/dist/modules/video/mediabunny/caption/ComposedSubtitleLayerSource.js +72 -0
  406. package/dist/modules/video/mediabunny/caption/ComposedSubtitleLayerSource.js.map +1 -0
  407. package/dist/modules/video/mediabunny/caption/SubtitleLayerSource.d.ts +32 -0
  408. package/dist/modules/video/mediabunny/caption/SubtitleLayerSource.d.ts.map +1 -0
  409. package/dist/modules/video/mediabunny/caption/SubtitleLayerSource.js +2 -0
  410. package/dist/modules/video/mediabunny/caption/SubtitleLayerSource.js.map +1 -0
  411. package/dist/modules/video/mediabunny/caption/VideoBoundSubtitleLayerSource.d.ts +25 -0
  412. package/dist/modules/video/mediabunny/caption/VideoBoundSubtitleLayerSource.d.ts.map +1 -0
  413. package/dist/modules/video/mediabunny/caption/VideoBoundSubtitleLayerSource.js +37 -0
  414. package/dist/modules/video/mediabunny/caption/VideoBoundSubtitleLayerSource.js.map +1 -0
  415. package/dist/modules/video/mediabunny/codec/CodecPolicy.d.ts +32 -0
  416. package/dist/modules/video/mediabunny/codec/CodecPolicy.d.ts.map +1 -0
  417. package/dist/modules/video/mediabunny/codec/CodecPolicy.js +2 -0
  418. package/dist/modules/video/mediabunny/codec/CodecPolicy.js.map +1 -0
  419. package/dist/modules/video/mediabunny/codec/DefaultCodecPolicy.d.ts +59 -0
  420. package/dist/modules/video/mediabunny/codec/DefaultCodecPolicy.d.ts.map +1 -0
  421. package/dist/modules/video/mediabunny/codec/DefaultCodecPolicy.js +110 -0
  422. package/dist/modules/video/mediabunny/codec/DefaultCodecPolicy.js.map +1 -0
  423. package/dist/modules/video/mediabunny/encoder/MediaBunnyCanvasVideoTrackEncoder.d.ts +27 -0
  424. package/dist/modules/video/mediabunny/encoder/MediaBunnyCanvasVideoTrackEncoder.d.ts.map +1 -0
  425. package/dist/modules/video/mediabunny/encoder/MediaBunnyCanvasVideoTrackEncoder.js +44 -0
  426. package/dist/modules/video/mediabunny/encoder/MediaBunnyCanvasVideoTrackEncoder.js.map +1 -0
  427. package/dist/modules/video/mediabunny/encoder/MediaBunnyCanvasVideoTrackEncoderFactory.d.ts +10 -0
  428. package/dist/modules/video/mediabunny/encoder/MediaBunnyCanvasVideoTrackEncoderFactory.d.ts.map +1 -0
  429. package/dist/modules/video/mediabunny/encoder/MediaBunnyCanvasVideoTrackEncoderFactory.js +15 -0
  430. package/dist/modules/video/mediabunny/encoder/MediaBunnyCanvasVideoTrackEncoderFactory.js.map +1 -0
  431. package/dist/modules/video/mediabunny/encoder/VideoTrackEncoder.d.ts +29 -0
  432. package/dist/modules/video/mediabunny/encoder/VideoTrackEncoder.d.ts.map +1 -0
  433. package/dist/modules/video/mediabunny/encoder/VideoTrackEncoder.js +2 -0
  434. package/dist/modules/video/mediabunny/encoder/VideoTrackEncoder.js.map +1 -0
  435. package/dist/modules/video/mediabunny/encoder/VideoTrackEncoderFactory.d.ts +16 -0
  436. package/dist/modules/video/mediabunny/encoder/VideoTrackEncoderFactory.d.ts.map +1 -0
  437. package/dist/modules/video/mediabunny/encoder/VideoTrackEncoderFactory.js +2 -0
  438. package/dist/modules/video/mediabunny/encoder/VideoTrackEncoderFactory.js.map +1 -0
  439. package/dist/modules/video/mediabunny/frame/CurrentFrameVideoSource.d.ts +25 -0
  440. package/dist/modules/video/mediabunny/frame/CurrentFrameVideoSource.d.ts.map +1 -0
  441. package/dist/modules/video/mediabunny/frame/CurrentFrameVideoSource.js +74 -0
  442. package/dist/modules/video/mediabunny/frame/CurrentFrameVideoSource.js.map +1 -0
  443. package/dist/modules/video/mediabunny/frame/CustomWebCodecsVideoFrameDecoder.d.ts +26 -0
  444. package/dist/modules/video/mediabunny/frame/CustomWebCodecsVideoFrameDecoder.d.ts.map +1 -0
  445. package/dist/modules/video/mediabunny/frame/CustomWebCodecsVideoFrameDecoder.js +147 -0
  446. package/dist/modules/video/mediabunny/frame/CustomWebCodecsVideoFrameDecoder.js.map +1 -0
  447. package/dist/modules/video/mediabunny/frame/DefaultVideoFrameDecoderFactory.d.ts +12 -0
  448. package/dist/modules/video/mediabunny/frame/DefaultVideoFrameDecoderFactory.d.ts.map +1 -0
  449. package/dist/modules/video/mediabunny/frame/DefaultVideoFrameDecoderFactory.js +25 -0
  450. package/dist/modules/video/mediabunny/frame/DefaultVideoFrameDecoderFactory.js.map +1 -0
  451. package/dist/modules/video/mediabunny/frame/FrameCompositor.d.ts +30 -0
  452. package/dist/modules/video/mediabunny/frame/FrameCompositor.d.ts.map +1 -0
  453. package/dist/modules/video/mediabunny/frame/FrameCompositor.js +2 -0
  454. package/dist/modules/video/mediabunny/frame/FrameCompositor.js.map +1 -0
  455. package/dist/modules/video/mediabunny/frame/HtmlVideoElementVideoFrameDecoder.d.ts +44 -0
  456. package/dist/modules/video/mediabunny/frame/HtmlVideoElementVideoFrameDecoder.d.ts.map +1 -0
  457. package/dist/modules/video/mediabunny/frame/HtmlVideoElementVideoFrameDecoder.js +334 -0
  458. package/dist/modules/video/mediabunny/frame/HtmlVideoElementVideoFrameDecoder.js.map +1 -0
  459. package/dist/modules/video/mediabunny/frame/LayeredFrameCompositor.d.ts +10 -0
  460. package/dist/modules/video/mediabunny/frame/LayeredFrameCompositor.d.ts.map +1 -0
  461. package/dist/modules/video/mediabunny/frame/LayeredFrameCompositor.js +17 -0
  462. package/dist/modules/video/mediabunny/frame/LayeredFrameCompositor.js.map +1 -0
  463. package/dist/modules/video/mediabunny/frame/VideoFrameDecoder.d.ts +30 -0
  464. package/dist/modules/video/mediabunny/frame/VideoFrameDecoder.d.ts.map +1 -0
  465. package/dist/modules/video/mediabunny/frame/VideoFrameDecoder.js +2 -0
  466. package/dist/modules/video/mediabunny/frame/VideoFrameDecoder.js.map +1 -0
  467. package/dist/modules/video/mediabunny/frame/VideoFrameDecoderFactory.d.ts +22 -0
  468. package/dist/modules/video/mediabunny/frame/VideoFrameDecoderFactory.d.ts.map +1 -0
  469. package/dist/modules/video/mediabunny/frame/VideoFrameDecoderFactory.js +2 -0
  470. package/dist/modules/video/mediabunny/frame/VideoFrameDecoderFactory.js.map +1 -0
  471. package/dist/modules/video/mediabunny/frame/WebCodecsVideoFrameDecoder.d.ts +17 -0
  472. package/dist/modules/video/mediabunny/frame/WebCodecsVideoFrameDecoder.d.ts.map +1 -0
  473. package/dist/modules/video/mediabunny/frame/WebCodecsVideoFrameDecoder.js +48 -0
  474. package/dist/modules/video/mediabunny/frame/WebCodecsVideoFrameDecoder.js.map +1 -0
  475. package/dist/modules/video/mediabunny/output/MediaBunnyOutputTargetBuilder.d.ts +11 -0
  476. package/dist/modules/video/mediabunny/output/MediaBunnyOutputTargetBuilder.d.ts.map +1 -0
  477. package/dist/modules/video/mediabunny/output/MediaBunnyOutputTargetBuilder.js +22 -0
  478. package/dist/modules/video/mediabunny/output/MediaBunnyOutputTargetBuilder.js.map +1 -0
  479. package/dist/modules/video/mediabunny/output/OutputTargetBuilder.d.ts +27 -0
  480. package/dist/modules/video/mediabunny/output/OutputTargetBuilder.d.ts.map +1 -0
  481. package/dist/modules/video/mediabunny/output/OutputTargetBuilder.js +2 -0
  482. package/dist/modules/video/mediabunny/output/OutputTargetBuilder.js.map +1 -0
  483. package/package.json +67 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SegmentSubtreeHtmlBuilder.js","sourceRoot":"","sources":["../../../src/modules/rendering/SegmentSubtreeHtmlBuilder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ import type { Document } from '../document/Document';
2
+ import type { AlignmentConfig } from '../rendering/AlignmentConfig';
3
+ import type { RenderingConfig } from '../rendering/RenderingConfig';
4
+ import type { ElementRenderOverrides } from '../rendering/ElementRenderOverrides';
5
+ import type { InlineStyleMap } from '../rendering/InlineStyleMap';
6
+ import type { SvgFilterBundle } from '../svg-filter/SvgFilterBundle';
7
+ import type { VideoFrameSource } from '../rendering/VideoFrameSource';
8
+ /**
9
+ * The render-time configuration for one Section.kind: the stylesheet
10
+ * that defines its visual rules, the root-level inline styles that
11
+ * seed it, where the rendered subtitle anchors inside the video frame,
12
+ * the structural rendering switches the stylesheet was authored
13
+ * against, and optional per-segment / per-word overrides.
14
+ *
15
+ * The renderer dispatches per active Section using `Section.kind` as
16
+ * the lookup key into the `styles` map supplied to `open`.
17
+ */
18
+ export interface SubtitleStyle {
19
+ /** Stylesheet defining the visual rules for this kind. */
20
+ css: string;
21
+ /** Root-level inline styles applied on the wrapper: CSS custom properties consumed by `css`, plus any direct property defaults. Per-segment and per-word overrides layer on top. */
22
+ inlineStyles: InlineStyleMap;
23
+ /** Where the rendered subtitle anchors inside the video frame. Per-segment and per-word `alignment` overrides merge over this. */
24
+ alignment: AlignmentConfig;
25
+ /** Structural switches the stylesheet was authored against (e.g. letter-level split). */
26
+ rendering: RenderingConfig;
27
+ /** Per-segment overrides, keyed by `Segment.id`. */
28
+ segmentOverrides?: ElementRenderOverrides;
29
+ /** Per-word overrides, keyed by `Word.id`. */
30
+ wordOverrides?: ElementRenderOverrides;
31
+ /** `<filter>` defs the stylesheet references via `filter: url(#id)`, paired with the scope that materializes them. */
32
+ svgFilters?: SvgFilterBundle;
33
+ }
34
+ /**
35
+ * A drawable handle for one rendered subtitle frame. The consumer
36
+ * paints it into its own 2D context through `draw`.
37
+ *
38
+ * The underlying raster is owned by the renderer that produced this
39
+ * frame and stays valid only until the next `getFrames` call on the
40
+ * same renderer or until `close`. Holding a `SubtitleFrame` past
41
+ * either event leaves `draw` painting whatever state has since
42
+ * replaced the raster.
43
+ */
44
+ export interface SubtitleFrame {
45
+ /**
46
+ * Paints the frame into `context` at `(dx, dy)` scaled to
47
+ * `dWidth × dHeight`. The source rectangle is the full frame.
48
+ */
49
+ draw(context: OffscreenCanvasRenderingContext2D | CanvasRenderingContext2D, dx: number, dy: number, dWidth: number, dHeight: number): void;
50
+ }
51
+ /**
52
+ * Produces drawable subtitle frames for a given Document.
53
+ *
54
+ * Usage:
55
+ * 1. `open` once per document.
56
+ * 2. Either `getFrames(timestamps)` per batch (with at most
57
+ * `getMaxBatchSize()` entries), or `getFrame(timestamp)` per
58
+ * individual timestamp.
59
+ * 3. `close` when done.
60
+ */
61
+ export interface SubtitleFrameRenderer {
62
+ /**
63
+ * Prepares the renderer for `doc` and the set of styles its
64
+ * Sections may reference. `styles` is keyed by `Section.kind`.
65
+ * Must complete before the first `getFrames`/`getFrame` call.
66
+ *
67
+ * `videoFrameSource` is required when any style in `styles` has
68
+ * `rendering.videoFrame.required` set, and may be omitted
69
+ * otherwise. Throws if a style requires the frame but no source
70
+ * is supplied.
71
+ */
72
+ open(doc: Document, styles: Readonly<Record<string, SubtitleStyle>>, width: number, height: number, videoFrameSource?: VideoFrameSource): Promise<void>;
73
+ /**
74
+ * Maximum number of timestamps a single `getFrames` call accepts
75
+ * at the given output dimensions. Bounded by the renderer's memory
76
+ * budget and any platform raster-size caps. A caller that exceeds
77
+ * this may see the call fail outright.
78
+ */
79
+ getMaxBatchSize(): Promise<number>;
80
+ /**
81
+ * Renders subtitle frames for the given timestamps. The returned
82
+ * array has the same length and order as `timestamps`; an entry is
83
+ * `null` for timestamps where no Section is active.
84
+ *
85
+ * The implementation may deduplicate internally: timestamps that
86
+ * hit the same visual state share a single raster tile inside the
87
+ * batch and their return entries point at the same tile.
88
+ *
89
+ * Frames produced by one call may share underlying raster
90
+ * resources; those resources stay valid until the next
91
+ * `getFrames`/`getFrame` call or until `close`.
92
+ */
93
+ getFrames(timestamps: ReadonlyArray<number>): Promise<Array<SubtitleFrame | null>>;
94
+ /**
95
+ * Renders the subtitle frame for a single timestamp. Returns
96
+ * `null` when no Section is active at `timestamp`. Equivalent in
97
+ * result to `(await getFrames([timestamp]))[0]`.
98
+ *
99
+ * The returned frame's underlying raster follows the same
100
+ * lifetime as `getFrames` results: valid until the next
101
+ * `getFrames`/`getFrame` call or until `close`.
102
+ */
103
+ getFrame(timestamp: number): Promise<SubtitleFrame | null>;
104
+ /**
105
+ * Releases any host-document state the renderer attached during
106
+ * `open` (probe stylesheets, offscreen containers). After `close`,
107
+ * `getFrames`/`getFrame` return `null` for every timestamp.
108
+ */
109
+ close(): void;
110
+ }
111
+ //# sourceMappingURL=SubtitleFrameRenderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubtitleFrameRenderer.d.ts","sourceRoot":"","sources":["../../../src/modules/rendering/SubtitleFrameRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AACxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAE5E;;;;;;;;;GASG;AACH,MAAM,WAAW,aAAa;IAC5B,0DAA0D;IAC1D,GAAG,EAAE,MAAM,CAAC;IACZ,oLAAoL;IACpL,YAAY,EAAE,cAAc,CAAC;IAC7B,kIAAkI;IAClI,SAAS,EAAE,eAAe,CAAC;IAC3B,yFAAyF;IACzF,SAAS,EAAE,eAAe,CAAC;IAC3B,oDAAoD;IACpD,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C,8CAA8C;IAC9C,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,sHAAsH;IACtH,UAAU,CAAC,EAAE,eAAe,CAAC;CAC9B;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,IAAI,CACF,OAAO,EAAE,iCAAiC,GAAG,wBAAwB,EACrE,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,IAAI,CAAC;CACT;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;;;;;;OASG;IACH,IAAI,CACF,GAAG,EAAE,QAAQ,EACb,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,EAC/C,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,gBAAgB,CAAC,EAAE,gBAAgB,GAClC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;;;OAKG;IACH,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAEnC;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC;IAEnF;;;;;;;;OAQG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;IAE3D;;;;OAIG;IACH,KAAK,IAAI,IAAI,CAAC;CACf"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=SubtitleFrameRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubtitleFrameRenderer.js","sourceRoot":"","sources":["../../../src/modules/rendering/SubtitleFrameRenderer.ts"],"names":[],"mappings":""}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Class on the element the renderer emits inside a Segment when its
3
+ * `RenderingConfig.videoFrame.required` is set. The Section's
4
+ * stylesheet targets this class to position, clip, or filter the
5
+ * video frame.
6
+ */
7
+ export declare const VIDEO_FRAME_LAYER_CLASS = "tscaps-video-frame-layer";
8
+ /**
9
+ * Default rule for {@link VIDEO_FRAME_LAYER_CLASS}: positions the
10
+ * layer over the subtitle's painted region via the
11
+ * `--subtitle-region-*` custom properties and paints the current
12
+ * frame slice from `--video-frame`. Class-level specificity so
13
+ * sheet-scoped overrides always win.
14
+ *
15
+ * `max-width: none; max-height: none` defeats consumer CSS resets
16
+ * (e.g. Tailwind's `img, video { max-width: 100% }`) that would
17
+ * clip the layer to its content-hugging segment parent and break
18
+ * the region geometry.
19
+ */
20
+ export declare const VIDEO_FRAME_LAYER_BASELINE_CSS = ".tscaps-video-frame-layer { position: absolute; left: var(--subtitle-region-x, 0); top: var(--subtitle-region-y, 0); width: var(--subtitle-region-width, 100%); height: var(--subtitle-region-height, 100%); max-width: none; max-height: none; background-image: var(--video-frame, none); background-size: 100% 100%; pointer-events: none; object-fit: fill; }";
21
+ //# sourceMappingURL=VideoFrameLayerClass.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VideoFrameLayerClass.d.ts","sourceRoot":"","sources":["../../../src/modules/rendering/VideoFrameLayerClass.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,6BAA6B,CAAC;AAElE;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,8BAA8B,sWAAwW,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Class on the element the renderer emits inside a Segment when its
3
+ * `RenderingConfig.videoFrame.required` is set. The Section's
4
+ * stylesheet targets this class to position, clip, or filter the
5
+ * video frame.
6
+ */
7
+ export const VIDEO_FRAME_LAYER_CLASS = 'tscaps-video-frame-layer';
8
+ /**
9
+ * Default rule for {@link VIDEO_FRAME_LAYER_CLASS}: positions the
10
+ * layer over the subtitle's painted region via the
11
+ * `--subtitle-region-*` custom properties and paints the current
12
+ * frame slice from `--video-frame`. Class-level specificity so
13
+ * sheet-scoped overrides always win.
14
+ *
15
+ * `max-width: none; max-height: none` defeats consumer CSS resets
16
+ * (e.g. Tailwind's `img, video { max-width: 100% }`) that would
17
+ * clip the layer to its content-hugging segment parent and break
18
+ * the region geometry.
19
+ */
20
+ export const VIDEO_FRAME_LAYER_BASELINE_CSS = `.${VIDEO_FRAME_LAYER_CLASS} { position: absolute; left: var(--subtitle-region-x, 0); top: var(--subtitle-region-y, 0); width: var(--subtitle-region-width, 100%); height: var(--subtitle-region-height, 100%); max-width: none; max-height: none; background-image: var(--video-frame, none); background-size: 100% 100%; pointer-events: none; object-fit: fill; }`;
21
+ //# sourceMappingURL=VideoFrameLayerClass.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VideoFrameLayerClass.js","sourceRoot":"","sources":["../../../src/modules/rendering/VideoFrameLayerClass.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,0BAA0B,CAAC;AAElE;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,IAAI,uBAAuB,0UAA0U,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Sub-rectangle of a video frame, expressed in viewport pixels.
3
+ * `(x, y)` is the top-left corner; `(x + width, y + height)` is the
4
+ * bottom-right corner.
5
+ */
6
+ export interface VideoFrameRegion {
7
+ readonly x: number;
8
+ readonly y: number;
9
+ readonly width: number;
10
+ readonly height: number;
11
+ }
12
+ /**
13
+ * Pull-based access to the underlying video frame at a given moment
14
+ * in playback time.
15
+ */
16
+ export interface VideoFrameSource {
17
+ /**
18
+ * Resolves to a self-contained `data:` URL for the frame whose
19
+ * presentation interval contains `timeSeconds`, encoded as JPEG
20
+ * at the given quality (`0` lowest, `1` highest). When `region`
21
+ * is supplied, only that sub-rectangle of the frame is encoded.
22
+ *
23
+ * Rejects when the requested time falls outside the source's
24
+ * available range, or when the underlying decoder cannot produce
25
+ * a frame at that timestamp.
26
+ */
27
+ getFrameAt(timeSeconds: number, jpegQuality: number, region?: VideoFrameRegion): Promise<string>;
28
+ }
29
+ //# sourceMappingURL=VideoFrameSource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VideoFrameSource.d.ts","sourceRoot":"","sources":["../../../src/modules/rendering/VideoFrameSource.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;OASG;IACH,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAClG"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=VideoFrameSource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VideoFrameSource.js","sourceRoot":"","sources":["../../../src/modules/rendering/VideoFrameSource.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ export type { SubtitleFrameRenderer, SubtitleFrame, SubtitleStyle } from '../rendering/SubtitleFrameRenderer';
2
+ export { BrowserSubtitleFrameRenderer } from '../rendering/BrowserSubtitleFrameRenderer';
3
+ export { LayeredSubtitleFrame } from '../rendering/LayeredSubtitleFrame';
4
+ export type { OverlayFrameRenderer, OverlayFrame } from '../rendering/OverlayFrameRenderer';
5
+ export { BrowserOverlayFrameRenderer } from '../rendering/BrowserOverlayFrameRenderer';
6
+ export type { AlignmentConfig, VerticalAlign } from '../rendering/AlignmentConfig';
7
+ export type { RenderingConfig, VideoFrameRequirement } from '../rendering/RenderingConfig';
8
+ export type { BoxEdges } from '../rendering/BoxEdges';
9
+ export type { VideoFrameSource, VideoFrameRegion } from '../rendering/VideoFrameSource';
10
+ export { VIDEO_FRAME_LAYER_CLASS, VIDEO_FRAME_LAYER_BASELINE_CSS } from '../rendering/VideoFrameLayerClass';
11
+ export { ElementRenderOverrides } from '../rendering/ElementRenderOverrides';
12
+ export type { ScopedRenderOverride } from '../rendering/ScopedRenderOverride';
13
+ export type { InlineStyleMap } from '../rendering/InlineStyleMap';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/rendering/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,qBAAqB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AACpH,OAAO,EAAE,4BAA4B,EAAE,MAAM,iDAAiD,CAAC;AAC/F,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AAClG,OAAO,EAAE,2BAA2B,EAAE,MAAM,gDAAgD,CAAC;AAC7F,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACzF,YAAY,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AACjG,YAAY,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAC5D,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAC9F,OAAO,EAAE,uBAAuB,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AAClH,OAAO,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC;AACnF,YAAY,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AACpF,YAAY,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { BrowserSubtitleFrameRenderer } from '../rendering/BrowserSubtitleFrameRenderer';
2
+ export { LayeredSubtitleFrame } from '../rendering/LayeredSubtitleFrame';
3
+ export { BrowserOverlayFrameRenderer } from '../rendering/BrowserOverlayFrameRenderer';
4
+ export { VIDEO_FRAME_LAYER_CLASS, VIDEO_FRAME_LAYER_BASELINE_CSS } from '../rendering/VideoFrameLayerClass';
5
+ export { ElementRenderOverrides } from '../rendering/ElementRenderOverrides';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/modules/rendering/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,4BAA4B,EAAE,MAAM,iDAAiD,CAAC;AAC/F,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAE/E,OAAO,EAAE,2BAA2B,EAAE,MAAM,gDAAgD,CAAC;AAK7F,OAAO,EAAE,uBAAuB,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AAClH,OAAO,EAAE,sBAAsB,EAAE,MAAM,2CAA2C,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { LineSplitter } from '../splitting/LineSplitter';
2
+ import { Segment } from '../document/Segment';
3
+ export interface BalancedLineSplitterConfig {
4
+ maxLines: number;
5
+ minLines: number;
6
+ maxCharsPerLine: number;
7
+ }
8
+ /**
9
+ * BalancedLineSplitter implements a line-breaking strategy that aims to distribute
10
+ * words across lines in a way that minimizes the difference in character count
11
+ * between lines, while respecting specified constraints on maximum lines,
12
+ * minimum lines, and maximum characters per line.
13
+ */
14
+ export declare class BalancedLineSplitter implements LineSplitter {
15
+ private readonly _config;
16
+ constructor(_config: BalancedLineSplitterConfig);
17
+ split(segments: ReadonlyArray<Segment>): Segment[];
18
+ private splitSegment;
19
+ private buildLines;
20
+ private splitRecursive;
21
+ private adjustToMinLines;
22
+ private charCount;
23
+ }
24
+ //# sourceMappingURL=BalancedLineSplitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BalancedLineSplitter.d.ts","sourceRoot":"","sources":["../../../src/modules/splitting/BalancedLineSplitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAIpD,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;;;;GAKG;AACH,qBAAa,oBAAqB,YAAW,YAAY;IAC3C,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,0BAA0B;IAEhE,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,OAAO,EAAE;IAIlD,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,cAAc;IA6BtB,OAAO,CAAC,gBAAgB;IAoBxB,OAAO,CAAC,SAAS;CAGlB"}
@@ -0,0 +1,81 @@
1
+ import { Line } from '../document/Line';
2
+ /**
3
+ * BalancedLineSplitter implements a line-breaking strategy that aims to distribute
4
+ * words across lines in a way that minimizes the difference in character count
5
+ * between lines, while respecting specified constraints on maximum lines,
6
+ * minimum lines, and maximum characters per line.
7
+ */
8
+ export class BalancedLineSplitter {
9
+ _config;
10
+ constructor(_config) {
11
+ this._config = _config;
12
+ }
13
+ split(segments) {
14
+ return segments.map((segment) => this.splitSegment(segment));
15
+ }
16
+ splitSegment(segment) {
17
+ const words = segment.getWords();
18
+ if (words.length === 0)
19
+ return segment;
20
+ const lines = this.buildLines(words);
21
+ this.adjustToMinLines(lines);
22
+ return segment.with({ lines });
23
+ }
24
+ buildLines(words) {
25
+ const { maxLines, maxCharsPerLine } = this._config;
26
+ const totalChars = this.charCount(words);
27
+ const linesNeeded = Math.ceil(totalChars / maxCharsPerLine);
28
+ const targetLines = Math.min(linesNeeded, maxLines);
29
+ if (targetLines <= 1) {
30
+ return [new Line({ words })];
31
+ }
32
+ return this.splitRecursive(words, targetLines);
33
+ }
34
+ splitRecursive(words, linesLeft) {
35
+ if (linesLeft <= 1 || words.length === 0) {
36
+ return words.length > 0 ? [new Line({ words })] : [];
37
+ }
38
+ const total = this.charCount(words);
39
+ const target = total / linesLeft;
40
+ let bestSplit = 1;
41
+ let bestDiff = Infinity;
42
+ let cumChars = 0;
43
+ for (let i = 0; i < words.length - 1; i++) {
44
+ const word = words[i];
45
+ if (!word)
46
+ continue;
47
+ cumChars += i === 0 ? word.text.length : word.text.length + 1;
48
+ const diff = Math.abs(cumChars - target);
49
+ if (diff < bestDiff) {
50
+ bestDiff = diff;
51
+ bestSplit = i + 1;
52
+ }
53
+ }
54
+ return [
55
+ new Line({ words: words.slice(0, bestSplit) }),
56
+ ...this.splitRecursive(words.slice(bestSplit), linesLeft - 1),
57
+ ];
58
+ }
59
+ adjustToMinLines(lines) {
60
+ const { minLines } = this._config;
61
+ while (lines.length < minLines) {
62
+ let longestIdx = 0;
63
+ for (let i = 1; i < lines.length; i++) {
64
+ if ((lines[i]?.words.length ?? 0) > (lines[longestIdx]?.words.length ?? 0)) {
65
+ longestIdx = i;
66
+ }
67
+ }
68
+ const longest = lines[longestIdx];
69
+ if (!longest || longest.words.length <= 1)
70
+ break;
71
+ const mid = Math.floor(longest.words.length / 2);
72
+ const first = new Line({ words: [...longest.words].slice(0, mid) });
73
+ const second = new Line({ words: [...longest.words].slice(mid) });
74
+ lines.splice(longestIdx, 1, first, second);
75
+ }
76
+ }
77
+ charCount(words) {
78
+ return words.reduce((sum, w, i) => sum + w.text.length + (i > 0 ? 1 : 0), 0);
79
+ }
80
+ }
81
+ //# sourceMappingURL=BalancedLineSplitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BalancedLineSplitter.js","sourceRoot":"","sources":["../../../src/modules/splitting/BalancedLineSplitter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { LineSplitter } from '../splitting/LineSplitter';
2
+ import { Segment } from '../document/Segment';
3
+ import type { TextMeasurer } from '../splitting/TextMeasurer';
4
+ export interface BalancedPixelWidthLineSplitterConfig {
5
+ maxLines: number;
6
+ minLines: number;
7
+ maxWidth: number;
8
+ }
9
+ /**
10
+ * Greedy first pass picks the minimum number of lines that fit `maxWidth`,
11
+ * then a recursive split balances widths across that target. Width queries
12
+ * are delegated to a `TextMeasurer`, so this class stays purely arithmetic
13
+ * and the consumer chooses how widths are resolved (DOM probe, canvas,
14
+ * lookup, etc.).
15
+ */
16
+ export declare class BalancedPixelWidthLineSplitter implements LineSplitter {
17
+ private readonly _config;
18
+ private readonly _measurer;
19
+ constructor(_config: BalancedPixelWidthLineSplitterConfig, _measurer: TextMeasurer);
20
+ split(segments: ReadonlyArray<Segment>): Segment[];
21
+ private buildMeasurements;
22
+ /**
23
+ * Width of `words[a..b]` (inclusive, in original segment indices) rendered
24
+ * alone on a line: sum of word widths plus one inter-word gap per pair.
25
+ */
26
+ private rangeWidth;
27
+ private buildLines;
28
+ private splitRecursive;
29
+ private adjustToMinLines;
30
+ }
31
+ //# sourceMappingURL=BalancedPixelWidthLineSplitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BalancedPixelWidthLineSplitter.d.ts","sourceRoot":"","sources":["../../../src/modules/splitting/BalancedPixelWidthLineSplitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAGpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAEpE,MAAM,WAAW,oCAAoC;IACnD,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAeD;;;;;;GAMG;AACH,qBAAa,8BAA+B,YAAW,YAAY;IAE/D,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBADT,OAAO,EAAE,oCAAoC,EAC7C,SAAS,EAAE,YAAY;IAG1C,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,OAAO,EAAE;IAWlD,OAAO,CAAC,iBAAiB;IASzB;;;OAGG;IACH,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,UAAU;IAoBlB,OAAO,CAAC,cAAc;IA0BtB,OAAO,CAAC,gBAAgB;CAiBzB"}
@@ -0,0 +1,99 @@
1
+ import { Line } from '../document/Line';
2
+ /**
3
+ * Greedy first pass picks the minimum number of lines that fit `maxWidth`,
4
+ * then a recursive split balances widths across that target. Width queries
5
+ * are delegated to a `TextMeasurer`, so this class stays purely arithmetic
6
+ * and the consumer chooses how widths are resolved (DOM probe, canvas,
7
+ * lookup, etc.).
8
+ */
9
+ export class BalancedPixelWidthLineSplitter {
10
+ _config;
11
+ _measurer;
12
+ constructor(_config, _measurer) {
13
+ this._config = _config;
14
+ this._measurer = _measurer;
15
+ }
16
+ split(segments) {
17
+ return segments.map((segment) => {
18
+ const words = segment.getWords();
19
+ if (words.length === 0)
20
+ return segment;
21
+ const m = this.buildMeasurements(words);
22
+ const lines = this.buildLines(words, m);
23
+ this.adjustToMinLines(lines);
24
+ return segment.with({ lines });
25
+ });
26
+ }
27
+ buildMeasurements(words) {
28
+ const prefixSums = new Array(words.length + 1);
29
+ prefixSums[0] = 0;
30
+ for (let i = 0; i < words.length; i++) {
31
+ prefixSums[i + 1] = prefixSums[i] + this._measurer.measure(words[i].text);
32
+ }
33
+ return { wordWidthPrefixSums: prefixSums, spaceWidth: this._measurer.spaceWidth() };
34
+ }
35
+ /**
36
+ * Width of `words[a..b]` (inclusive, in original segment indices) rendered
37
+ * alone on a line: sum of word widths plus one inter-word gap per pair.
38
+ */
39
+ rangeWidth(m, a, b) {
40
+ return m.wordWidthPrefixSums[b + 1] - m.wordWidthPrefixSums[a] + (b - a) * m.spaceWidth;
41
+ }
42
+ buildLines(words, m) {
43
+ const { maxLines } = this._config;
44
+ // Greedy pass to find the minimum number of lines needed
45
+ let linesNeeded = 1;
46
+ let lineStart = 0;
47
+ for (let i = 1; i < words.length; i++) {
48
+ const width = this.rangeWidth(m, lineStart, i);
49
+ if (width > this._config.maxWidth && i > lineStart) {
50
+ linesNeeded++;
51
+ lineStart = i;
52
+ }
53
+ }
54
+ const targetLines = Math.min(linesNeeded, maxLines);
55
+ if (targetLines <= 1)
56
+ return [new Line({ words })];
57
+ return this.splitRecursive(words, targetLines, m, 0);
58
+ }
59
+ splitRecursive(words, linesLeft, m, offset) {
60
+ if (linesLeft <= 1 || words.length === 0) {
61
+ return words.length > 0 ? [new Line({ words })] : [];
62
+ }
63
+ const totalWidth = this.rangeWidth(m, offset, offset + words.length - 1);
64
+ const target = totalWidth / linesLeft;
65
+ let bestSplit = 1;
66
+ let bestDiff = Infinity;
67
+ for (let i = 0; i < words.length - 1; i++) {
68
+ const cumWidth = this.rangeWidth(m, offset, offset + i);
69
+ const diff = Math.abs(cumWidth - target);
70
+ if (diff < bestDiff) {
71
+ bestDiff = diff;
72
+ bestSplit = i + 1;
73
+ }
74
+ }
75
+ return [
76
+ new Line({ words: words.slice(0, bestSplit) }),
77
+ ...this.splitRecursive(words.slice(bestSplit), linesLeft - 1, m, offset + bestSplit),
78
+ ];
79
+ }
80
+ adjustToMinLines(lines) {
81
+ const { minLines } = this._config;
82
+ while (lines.length < minLines) {
83
+ let longestIdx = 0;
84
+ for (let i = 1; i < lines.length; i++) {
85
+ if ((lines[i]?.words.length ?? 0) > (lines[longestIdx]?.words.length ?? 0)) {
86
+ longestIdx = i;
87
+ }
88
+ }
89
+ const longest = lines[longestIdx];
90
+ if (!longest || longest.words.length <= 1)
91
+ break;
92
+ const mid = Math.floor(longest.words.length / 2);
93
+ const first = new Line({ words: [...longest.words].slice(0, mid) });
94
+ const second = new Line({ words: [...longest.words].slice(mid) });
95
+ lines.splice(longestIdx, 1, first, second);
96
+ }
97
+ }
98
+ }
99
+ //# sourceMappingURL=BalancedPixelWidthLineSplitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BalancedPixelWidthLineSplitter.js","sourceRoot":"","sources":["../../../src/modules/splitting/BalancedPixelWidthLineSplitter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { SegmentSplitter } from '../splitting/SegmentSplitter';
2
+ import { Segment } from '../document/Segment';
3
+ export interface BoundaryConfig {
4
+ separators: string[];
5
+ }
6
+ /**
7
+ * Splits segments at hard boundary characters (e.g. sentence-ending
8
+ * punctuation, optional clause separators). Boundaries chosen here are
9
+ * never crossed by downstream segment splitters, so this step decides
10
+ * which punctuation acts as a "do not merge across" marker. Operates on
11
+ * the segments of a single Section.
12
+ */
13
+ export declare class BoundarySegmentSplitter implements SegmentSplitter {
14
+ private readonly _separators;
15
+ constructor(config: BoundaryConfig);
16
+ split(segments: ReadonlyArray<Segment>): Segment[];
17
+ private splitSegment;
18
+ }
19
+ //# sourceMappingURL=BoundarySegmentSplitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BoundarySegmentSplitter.d.ts","sourceRoot":"","sources":["../../../src/modules/splitting/BoundarySegmentSplitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAGpD,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;;;;GAMG;AACH,qBAAa,uBAAwB,YAAW,eAAe;IAC7D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsB;gBAEtC,MAAM,EAAE,cAAc;IAIlC,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,OAAO,EAAE;IAIlD,OAAO,CAAC,YAAY;CAsBrB"}
@@ -0,0 +1,38 @@
1
+ import { Segment } from '../document/Segment';
2
+ import { Line } from '../document/Line';
3
+ /**
4
+ * Splits segments at hard boundary characters (e.g. sentence-ending
5
+ * punctuation, optional clause separators). Boundaries chosen here are
6
+ * never crossed by downstream segment splitters, so this step decides
7
+ * which punctuation acts as a "do not merge across" marker. Operates on
8
+ * the segments of a single Section.
9
+ */
10
+ export class BoundarySegmentSplitter {
11
+ _separators;
12
+ constructor(config) {
13
+ this._separators = new Set(config.separators);
14
+ }
15
+ split(segments) {
16
+ return segments.flatMap((segment) => this.splitSegment(segment));
17
+ }
18
+ splitSegment(segment) {
19
+ if (this._separators.size === 0)
20
+ return [segment];
21
+ const words = segment.getWords();
22
+ const result = [];
23
+ let currentChunk = [];
24
+ for (const word of words) {
25
+ currentChunk.push(word);
26
+ const endsWithSeparator = Array.from(this._separators).some((sep) => word.text.endsWith(sep));
27
+ if (endsWithSeparator) {
28
+ result.push(new Segment({ lines: [new Line({ words: currentChunk })] }));
29
+ currentChunk = [];
30
+ }
31
+ }
32
+ if (currentChunk.length > 0) {
33
+ result.push(new Segment({ lines: [new Line({ words: currentChunk })] }));
34
+ }
35
+ return result.length > 0 ? result : [segment];
36
+ }
37
+ }
38
+ //# sourceMappingURL=BoundarySegmentSplitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BoundarySegmentSplitter.js","sourceRoot":"","sources":["../../../src/modules/splitting/BoundarySegmentSplitter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAM9C;;;;;;GAMG;AACH,MAAM,OAAO,uBAAuB;IACjB,WAAW,CAAsB;IAElD,YAAY,MAAsB;QAChC,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,QAAgC;QACpC,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IACnE,CAAC;IAEO,YAAY,CAAC,OAAgB;QACnC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAElD,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QACjC,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,IAAI,YAAY,GAAiB,EAAE,CAAC;QAEpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxB,MAAM,iBAAiB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9F,IAAI,iBAAiB,EAAE,CAAC;gBACtB,MAAM,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACzE,YAAY,GAAG,EAAE,CAAC;YACpB,CAAC;QACH,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3E,CAAC;QAED,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;CACF"}
@@ -0,0 +1,8 @@
1
+ import type { SegmentSplitter } from '../splitting/SegmentSplitter';
2
+ import type { Segment } from '../document/Segment';
3
+ export declare class CompositeSegmentSplitter implements SegmentSplitter {
4
+ private readonly _splitters;
5
+ constructor(_splitters: ReadonlyArray<SegmentSplitter>);
6
+ split(segments: ReadonlyArray<Segment>): Segment[];
7
+ }
8
+ //# sourceMappingURL=CompositeSegmentSplitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CompositeSegmentSplitter.d.ts","sourceRoot":"","sources":["../../../src/modules/splitting/CompositeSegmentSplitter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAIzD,qBAAa,wBAAyB,YAAW,eAAe;IAClD,OAAO,CAAC,QAAQ,CAAC,UAAU;gBAAV,UAAU,EAAE,aAAa,CAAC,eAAe,CAAC;IAEvE,KAAK,CAAC,QAAQ,EAAE,aAAa,CAAC,OAAO,CAAC,GAAG,OAAO,EAAE;CAMnD"}
@@ -0,0 +1,12 @@
1
+ // Chains multiple SegmentSplitters in sequence. The output of each splitter
2
+ // is fed as input to the next.
3
+ export class CompositeSegmentSplitter {
4
+ _splitters;
5
+ constructor(_splitters) {
6
+ this._splitters = _splitters;
7
+ }
8
+ split(segments) {
9
+ return this._splitters.reduce((segs, splitter) => splitter.split(segs), [...segments]);
10
+ }
11
+ }
12
+ //# sourceMappingURL=CompositeSegmentSplitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CompositeSegmentSplitter.js","sourceRoot":"","sources":["../../../src/modules/splitting/CompositeSegmentSplitter.ts"],"names":[],"mappings":"AAGA,4EAA4E;AAC5E,+BAA+B;AAC/B,MAAM,OAAO,wBAAwB;IACN;IAA7B,YAA6B,UAA0C;QAA1C,eAAU,GAAV,UAAU,CAAgC;IAAG,CAAC;IAE3E,KAAK,CAAC,QAAgC;QACpC,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAC3B,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EACxC,CAAC,GAAG,QAAQ,CAAC,CACd,CAAC;IACJ,CAAC;CACF"}