@twick/2d 0.14.19 → 0.14.21

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 (376) hide show
  1. package/editor/editor/NodeInspectorConfig.d.ts +3 -0
  2. package/editor/editor/NodeInspectorConfig.d.ts.map +1 -0
  3. package/editor/editor/PreviewOverlayConfig.d.ts +3 -0
  4. package/editor/editor/PreviewOverlayConfig.d.ts.map +1 -0
  5. package/editor/editor/Provider.d.ts +17 -0
  6. package/editor/editor/Provider.d.ts.map +1 -0
  7. package/editor/editor/SceneGraphTabConfig.d.ts +3 -0
  8. package/editor/editor/SceneGraphTabConfig.d.ts.map +1 -0
  9. package/editor/editor/icons/CircleIcon.d.ts +2 -0
  10. package/editor/editor/icons/CircleIcon.d.ts.map +1 -0
  11. package/editor/editor/icons/CodeBlockIcon.d.ts +2 -0
  12. package/editor/editor/icons/CodeBlockIcon.d.ts.map +1 -0
  13. package/editor/editor/icons/CurveIcon.d.ts +2 -0
  14. package/editor/editor/icons/CurveIcon.d.ts.map +1 -0
  15. package/editor/editor/icons/GridIcon.d.ts +2 -0
  16. package/editor/editor/icons/GridIcon.d.ts.map +1 -0
  17. package/editor/editor/icons/IconMap.d.ts +3 -0
  18. package/editor/editor/icons/IconMap.d.ts.map +1 -0
  19. package/editor/editor/icons/ImgIcon.d.ts +2 -0
  20. package/editor/editor/icons/ImgIcon.d.ts.map +1 -0
  21. package/editor/editor/icons/LayoutIcon.d.ts +2 -0
  22. package/editor/editor/icons/LayoutIcon.d.ts.map +1 -0
  23. package/editor/editor/icons/LineIcon.d.ts +2 -0
  24. package/editor/editor/icons/LineIcon.d.ts.map +1 -0
  25. package/editor/editor/icons/NodeIcon.d.ts +2 -0
  26. package/editor/editor/icons/NodeIcon.d.ts.map +1 -0
  27. package/editor/editor/icons/RayIcon.d.ts +2 -0
  28. package/editor/editor/icons/RayIcon.d.ts.map +1 -0
  29. package/editor/editor/icons/RectIcon.d.ts +2 -0
  30. package/editor/editor/icons/RectIcon.d.ts.map +1 -0
  31. package/editor/editor/icons/ShapeIcon.d.ts +2 -0
  32. package/editor/editor/icons/ShapeIcon.d.ts.map +1 -0
  33. package/editor/editor/icons/TxtIcon.d.ts +2 -0
  34. package/editor/editor/icons/TxtIcon.d.ts.map +1 -0
  35. package/editor/editor/icons/VideoIcon.d.ts +2 -0
  36. package/editor/editor/icons/VideoIcon.d.ts.map +1 -0
  37. package/editor/editor/icons/View2DIcon.d.ts +2 -0
  38. package/editor/editor/icons/View2DIcon.d.ts.map +1 -0
  39. package/editor/editor/index.d.ts +4 -0
  40. package/editor/editor/index.d.ts.map +1 -0
  41. package/editor/editor/tree/DetachedRoot.d.ts +2 -0
  42. package/editor/editor/tree/DetachedRoot.d.ts.map +1 -0
  43. package/editor/editor/tree/NodeElement.d.ts +8 -0
  44. package/editor/editor/tree/NodeElement.d.ts.map +1 -0
  45. package/editor/editor/tree/TreeElement.d.ts +15 -0
  46. package/editor/editor/tree/TreeElement.d.ts.map +1 -0
  47. package/editor/editor/tree/TreeRoot.d.ts +3 -0
  48. package/editor/editor/tree/TreeRoot.d.ts.map +1 -0
  49. package/editor/editor/tree/ViewRoot.d.ts +2 -0
  50. package/editor/editor/tree/ViewRoot.d.ts.map +1 -0
  51. package/editor/editor/tree/index.d.ts +4 -0
  52. package/editor/editor/tree/index.d.ts.map +1 -0
  53. package/editor/editor/tsconfig.build.tsbuildinfo +1 -0
  54. package/editor/index.css +33 -0
  55. package/editor/index.js +341 -0
  56. package/editor/index.js.map +1 -0
  57. package/lib/code/CodeCursor.d.ts +83 -0
  58. package/lib/code/CodeCursor.d.ts.map +1 -0
  59. package/lib/code/CodeCursor.js +306 -0
  60. package/lib/code/CodeDiffer.d.ts +28 -0
  61. package/lib/code/CodeDiffer.d.ts.map +1 -0
  62. package/lib/code/CodeDiffer.js +51 -0
  63. package/lib/code/CodeFragment.d.ts +42 -0
  64. package/lib/code/CodeFragment.d.ts.map +1 -0
  65. package/lib/code/CodeFragment.js +72 -0
  66. package/lib/code/CodeHighlighter.d.ts +71 -0
  67. package/lib/code/CodeHighlighter.d.ts.map +1 -0
  68. package/lib/code/CodeHighlighter.js +2 -0
  69. package/lib/code/CodeMetrics.d.ts +11 -0
  70. package/lib/code/CodeMetrics.d.ts.map +1 -0
  71. package/lib/code/CodeMetrics.js +29 -0
  72. package/lib/code/CodeRange.d.ts +41 -0
  73. package/lib/code/CodeRange.d.ts.map +1 -0
  74. package/lib/code/CodeRange.js +179 -0
  75. package/lib/code/CodeScope.d.ts +16 -0
  76. package/lib/code/CodeScope.d.ts.map +1 -0
  77. package/lib/code/CodeScope.js +72 -0
  78. package/lib/code/CodeSelection.d.ts +6 -0
  79. package/lib/code/CodeSelection.d.ts.map +1 -0
  80. package/lib/code/CodeSelection.js +13 -0
  81. package/lib/code/CodeSignal.d.ts +60 -0
  82. package/lib/code/CodeSignal.d.ts.map +1 -0
  83. package/lib/code/CodeSignal.js +194 -0
  84. package/lib/code/CodeTokenizer.d.ts +8 -0
  85. package/lib/code/CodeTokenizer.d.ts.map +1 -0
  86. package/lib/code/CodeTokenizer.js +50 -0
  87. package/lib/code/DefaultHighlightStyle.d.ts +3 -0
  88. package/lib/code/DefaultHighlightStyle.d.ts.map +1 -0
  89. package/lib/code/DefaultHighlightStyle.js +98 -0
  90. package/lib/code/LezerHighlighter.d.ts +22 -0
  91. package/lib/code/LezerHighlighter.d.ts.map +1 -0
  92. package/lib/code/LezerHighlighter.js +89 -0
  93. package/lib/code/diff.d.ts +31 -0
  94. package/lib/code/diff.d.ts.map +1 -0
  95. package/lib/code/diff.js +236 -0
  96. package/lib/code/extractRange.d.ts +17 -0
  97. package/lib/code/extractRange.d.ts.map +1 -0
  98. package/lib/code/extractRange.js +102 -0
  99. package/lib/code/index.d.ts +14 -0
  100. package/lib/code/index.d.ts.map +1 -0
  101. package/lib/code/index.js +14 -0
  102. package/lib/components/Audio.d.ts +14 -0
  103. package/lib/components/Audio.d.ts.map +1 -0
  104. package/lib/components/Audio.js +148 -0
  105. package/lib/components/Bezier.d.ts +23 -0
  106. package/lib/components/Bezier.d.ts.map +1 -0
  107. package/lib/components/Bezier.js +81 -0
  108. package/lib/components/Circle.d.ts +193 -0
  109. package/lib/components/Circle.d.ts.map +1 -0
  110. package/lib/components/Circle.js +178 -0
  111. package/lib/components/Code.d.ts +231 -0
  112. package/lib/components/Code.d.ts.map +1 -0
  113. package/lib/components/Code.js +325 -0
  114. package/lib/components/CodeBlock.d.ts +133 -0
  115. package/lib/components/CodeBlock.d.ts.map +1 -0
  116. package/lib/components/CodeBlock.js +461 -0
  117. package/lib/components/CubicBezier.d.ts +70 -0
  118. package/lib/components/CubicBezier.d.ts.map +1 -0
  119. package/lib/components/CubicBezier.js +81 -0
  120. package/lib/components/Curve.d.ts +204 -0
  121. package/lib/components/Curve.d.ts.map +1 -0
  122. package/lib/components/Curve.js +284 -0
  123. package/lib/components/Grid.d.ts +76 -0
  124. package/lib/components/Grid.d.ts.map +1 -0
  125. package/lib/components/Grid.js +91 -0
  126. package/lib/components/Icon.d.ts +59 -0
  127. package/lib/components/Icon.d.ts.map +1 -0
  128. package/lib/components/Icon.js +58 -0
  129. package/lib/components/Img.d.ts +118 -0
  130. package/lib/components/Img.d.ts.map +1 -0
  131. package/lib/components/Img.js +245 -0
  132. package/lib/components/Knot.d.ts +90 -0
  133. package/lib/components/Knot.d.ts.map +1 -0
  134. package/lib/components/Knot.js +68 -0
  135. package/lib/components/Latex.d.ts +39 -0
  136. package/lib/components/Latex.d.ts.map +1 -0
  137. package/lib/components/Latex.js +101 -0
  138. package/lib/components/Layout.d.ts +419 -0
  139. package/lib/components/Layout.d.ts.map +1 -0
  140. package/lib/components/Layout.js +706 -0
  141. package/lib/components/Line.d.ts +160 -0
  142. package/lib/components/Line.d.ts.map +1 -0
  143. package/lib/components/Line.js +346 -0
  144. package/lib/components/Media.d.ts +70 -0
  145. package/lib/components/Media.d.ts.map +1 -0
  146. package/lib/components/Media.js +493 -0
  147. package/lib/components/Node.d.ts +836 -0
  148. package/lib/components/Node.d.ts.map +1 -0
  149. package/lib/components/Node.js +1317 -0
  150. package/lib/components/Path.d.ts +20 -0
  151. package/lib/components/Path.d.ts.map +1 -0
  152. package/lib/components/Path.js +97 -0
  153. package/lib/components/Polygon.d.ts +113 -0
  154. package/lib/components/Polygon.d.ts.map +1 -0
  155. package/lib/components/Polygon.js +123 -0
  156. package/lib/components/QuadBezier.d.ts +62 -0
  157. package/lib/components/QuadBezier.d.ts.map +1 -0
  158. package/lib/components/QuadBezier.js +76 -0
  159. package/lib/components/Ray.d.ts +62 -0
  160. package/lib/components/Ray.d.ts.map +1 -0
  161. package/lib/components/Ray.js +96 -0
  162. package/lib/components/Rect.d.ts +114 -0
  163. package/lib/components/Rect.d.ts.map +1 -0
  164. package/lib/components/Rect.js +76 -0
  165. package/lib/components/Rive.d.ts +22 -0
  166. package/lib/components/Rive.d.ts.map +1 -0
  167. package/lib/components/Rive.js +117 -0
  168. package/lib/components/SVG.d.ts +178 -0
  169. package/lib/components/SVG.d.ts.map +1 -0
  170. package/lib/components/SVG.js +577 -0
  171. package/lib/components/Shape.d.ts +40 -0
  172. package/lib/components/Shape.d.ts.map +1 -0
  173. package/lib/components/Shape.js +134 -0
  174. package/lib/components/Spline.d.ts +89 -0
  175. package/lib/components/Spline.d.ts.map +1 -0
  176. package/lib/components/Spline.js +256 -0
  177. package/lib/components/Txt.d.ts +53 -0
  178. package/lib/components/Txt.d.ts.map +1 -0
  179. package/lib/components/Txt.js +173 -0
  180. package/lib/components/TxtLeaf.d.ts +21 -0
  181. package/lib/components/TxtLeaf.d.ts.map +1 -0
  182. package/lib/components/TxtLeaf.js +181 -0
  183. package/lib/components/Video.d.ts +69 -0
  184. package/lib/components/Video.d.ts.map +1 -0
  185. package/lib/components/Video.js +342 -0
  186. package/lib/components/View2D.d.ts +28 -0
  187. package/lib/components/View2D.d.ts.map +1 -0
  188. package/lib/components/View2D.js +93 -0
  189. package/lib/components/index.d.ts +29 -0
  190. package/lib/components/index.d.ts.map +1 -0
  191. package/lib/components/index.js +29 -0
  192. package/lib/components/types.d.ts +17 -0
  193. package/lib/components/types.d.ts.map +1 -0
  194. package/lib/components/types.js +2 -0
  195. package/lib/curves/ArcSegment.d.ts +26 -0
  196. package/lib/curves/ArcSegment.d.ts.map +1 -0
  197. package/lib/curves/ArcSegment.js +97 -0
  198. package/lib/curves/CircleSegment.d.ts +18 -0
  199. package/lib/curves/CircleSegment.d.ts.map +1 -0
  200. package/lib/curves/CircleSegment.js +52 -0
  201. package/lib/curves/CubicBezierSegment.d.ts +18 -0
  202. package/lib/curves/CubicBezierSegment.d.ts.map +1 -0
  203. package/lib/curves/CubicBezierSegment.js +55 -0
  204. package/lib/curves/CurveDrawingInfo.d.ts +11 -0
  205. package/lib/curves/CurveDrawingInfo.d.ts.map +1 -0
  206. package/lib/curves/CurveDrawingInfo.js +2 -0
  207. package/lib/curves/CurvePoint.d.ts +15 -0
  208. package/lib/curves/CurvePoint.d.ts.map +1 -0
  209. package/lib/curves/CurvePoint.js +2 -0
  210. package/lib/curves/CurveProfile.d.ts +7 -0
  211. package/lib/curves/CurveProfile.d.ts.map +1 -0
  212. package/lib/curves/CurveProfile.js +2 -0
  213. package/lib/curves/KnotInfo.d.ts +12 -0
  214. package/lib/curves/KnotInfo.d.ts.map +1 -0
  215. package/lib/curves/KnotInfo.js +2 -0
  216. package/lib/curves/LineSegment.d.ts +16 -0
  217. package/lib/curves/LineSegment.d.ts.map +1 -0
  218. package/lib/curves/LineSegment.js +45 -0
  219. package/lib/curves/Polynomial.d.ts +118 -0
  220. package/lib/curves/Polynomial.d.ts.map +1 -0
  221. package/lib/curves/Polynomial.js +259 -0
  222. package/lib/curves/Polynomial2D.d.ts +22 -0
  223. package/lib/curves/Polynomial2D.d.ts.map +1 -0
  224. package/lib/curves/Polynomial2D.js +45 -0
  225. package/lib/curves/PolynomialSegment.d.ts +39 -0
  226. package/lib/curves/PolynomialSegment.d.ts.map +1 -0
  227. package/lib/curves/PolynomialSegment.js +86 -0
  228. package/lib/curves/QuadBezierSegment.d.ts +17 -0
  229. package/lib/curves/QuadBezierSegment.d.ts.map +1 -0
  230. package/lib/curves/QuadBezierSegment.js +49 -0
  231. package/lib/curves/Segment.d.ts +9 -0
  232. package/lib/curves/Segment.d.ts.map +1 -0
  233. package/lib/curves/Segment.js +3 -0
  234. package/lib/curves/UniformPolynomialCurveSampler.d.ts +43 -0
  235. package/lib/curves/UniformPolynomialCurveSampler.d.ts.map +1 -0
  236. package/lib/curves/UniformPolynomialCurveSampler.js +73 -0
  237. package/lib/curves/createCurveProfileLerp.d.ts +32 -0
  238. package/lib/curves/createCurveProfileLerp.d.ts.map +1 -0
  239. package/lib/curves/createCurveProfileLerp.js +351 -0
  240. package/lib/curves/getBezierSplineProfile.d.ts +12 -0
  241. package/lib/curves/getBezierSplineProfile.d.ts.map +1 -0
  242. package/lib/curves/getBezierSplineProfile.js +137 -0
  243. package/lib/curves/getCircleProfile.d.ts +4 -0
  244. package/lib/curves/getCircleProfile.d.ts.map +1 -0
  245. package/lib/curves/getCircleProfile.js +44 -0
  246. package/lib/curves/getPathProfile.d.ts +3 -0
  247. package/lib/curves/getPathProfile.d.ts.map +1 -0
  248. package/lib/curves/getPathProfile.js +128 -0
  249. package/lib/curves/getPointAtDistance.d.ts +4 -0
  250. package/lib/curves/getPointAtDistance.d.ts.map +1 -0
  251. package/lib/curves/getPointAtDistance.js +15 -0
  252. package/lib/curves/getPolylineProfile.d.ts +4 -0
  253. package/lib/curves/getPolylineProfile.d.ts.map +1 -0
  254. package/lib/curves/getPolylineProfile.js +58 -0
  255. package/lib/curves/getRectProfile.d.ts +4 -0
  256. package/lib/curves/getRectProfile.d.ts.map +1 -0
  257. package/lib/curves/getRectProfile.js +57 -0
  258. package/lib/curves/index.d.ts +17 -0
  259. package/lib/curves/index.d.ts.map +1 -0
  260. package/lib/curves/index.js +17 -0
  261. package/lib/decorators/canvasStyleSignal.d.ts +5 -0
  262. package/lib/decorators/canvasStyleSignal.d.ts.map +1 -0
  263. package/lib/decorators/canvasStyleSignal.js +12 -0
  264. package/lib/decorators/colorSignal.d.ts +2 -0
  265. package/lib/decorators/colorSignal.d.ts.map +1 -0
  266. package/lib/decorators/colorSignal.js +9 -0
  267. package/lib/decorators/compound.d.ts +26 -0
  268. package/lib/decorators/compound.d.ts.map +1 -0
  269. package/lib/decorators/compound.js +49 -0
  270. package/lib/decorators/computed.d.ts +9 -0
  271. package/lib/decorators/computed.d.ts.map +1 -0
  272. package/lib/decorators/computed.js +18 -0
  273. package/lib/decorators/defaultStyle.d.ts +2 -0
  274. package/lib/decorators/defaultStyle.d.ts.map +1 -0
  275. package/lib/decorators/defaultStyle.js +14 -0
  276. package/lib/decorators/filtersSignal.d.ts +13 -0
  277. package/lib/decorators/filtersSignal.d.ts.map +1 -0
  278. package/lib/decorators/filtersSignal.js +73 -0
  279. package/lib/decorators/index.d.ts +11 -0
  280. package/lib/decorators/index.d.ts.map +1 -0
  281. package/lib/decorators/index.js +11 -0
  282. package/lib/decorators/initializers.d.ts +4 -0
  283. package/lib/decorators/initializers.d.ts.map +1 -0
  284. package/lib/decorators/initializers.js +27 -0
  285. package/lib/decorators/nodeName.d.ts +9 -0
  286. package/lib/decorators/nodeName.d.ts.map +1 -0
  287. package/lib/decorators/nodeName.js +13 -0
  288. package/lib/decorators/signal.d.ts +183 -0
  289. package/lib/decorators/signal.d.ts.map +1 -0
  290. package/lib/decorators/signal.js +285 -0
  291. package/lib/decorators/spacingSignal.d.ts +2 -0
  292. package/lib/decorators/spacingSignal.d.ts.map +1 -0
  293. package/lib/decorators/spacingSignal.js +15 -0
  294. package/lib/decorators/vector2Signal.d.ts +9 -0
  295. package/lib/decorators/vector2Signal.d.ts.map +1 -0
  296. package/lib/decorators/vector2Signal.js +15 -0
  297. package/lib/index.d.ts +9 -0
  298. package/lib/index.d.ts.map +1 -0
  299. package/lib/index.js +9 -0
  300. package/lib/jsx-dev-runtime.d.ts +3 -0
  301. package/lib/jsx-dev-runtime.d.ts.map +1 -0
  302. package/lib/jsx-dev-runtime.js +3 -0
  303. package/lib/jsx-runtime.d.ts +12 -0
  304. package/lib/jsx-runtime.d.ts.map +1 -0
  305. package/lib/jsx-runtime.js +23 -0
  306. package/lib/partials/Filter.d.ts +82 -0
  307. package/lib/partials/Filter.d.ts.map +1 -0
  308. package/lib/partials/Filter.js +135 -0
  309. package/lib/partials/Gradient.d.ts +31 -0
  310. package/lib/partials/Gradient.d.ts.map +1 -0
  311. package/lib/partials/Gradient.js +63 -0
  312. package/lib/partials/Pattern.d.ts +13 -0
  313. package/lib/partials/Pattern.d.ts.map +1 -0
  314. package/lib/partials/Pattern.js +27 -0
  315. package/lib/partials/ShaderConfig.d.ts +81 -0
  316. package/lib/partials/ShaderConfig.d.ts.map +1 -0
  317. package/lib/partials/ShaderConfig.js +25 -0
  318. package/lib/partials/index.d.ts +5 -0
  319. package/lib/partials/index.d.ts.map +1 -0
  320. package/lib/partials/index.js +5 -0
  321. package/lib/partials/types.d.ts +35 -0
  322. package/lib/partials/types.d.ts.map +1 -0
  323. package/lib/partials/types.js +2 -0
  324. package/lib/scenes/Scene2D.d.ts +29 -0
  325. package/lib/scenes/Scene2D.d.ts.map +1 -0
  326. package/lib/scenes/Scene2D.js +180 -0
  327. package/lib/scenes/index.d.ts +4 -0
  328. package/lib/scenes/index.d.ts.map +1 -0
  329. package/lib/scenes/index.js +4 -0
  330. package/lib/scenes/makeScene2D.d.ts +5 -0
  331. package/lib/scenes/makeScene2D.d.ts.map +1 -0
  332. package/lib/scenes/makeScene2D.js +11 -0
  333. package/lib/scenes/useScene2D.d.ts +3 -0
  334. package/lib/scenes/useScene2D.d.ts.map +1 -0
  335. package/lib/scenes/useScene2D.js +5 -0
  336. package/lib/tsconfig.build.tsbuildinfo +1 -0
  337. package/lib/utils/CanvasUtils.d.ts +23 -0
  338. package/lib/utils/CanvasUtils.d.ts.map +1 -0
  339. package/lib/utils/CanvasUtils.js +138 -0
  340. package/lib/utils/diff.d.ts +31 -0
  341. package/lib/utils/diff.d.ts.map +1 -0
  342. package/lib/utils/diff.js +97 -0
  343. package/lib/utils/index.d.ts +3 -0
  344. package/lib/utils/index.d.ts.map +1 -0
  345. package/lib/utils/index.js +3 -0
  346. package/lib/utils/is.d.ts +8 -0
  347. package/lib/utils/is.d.ts.map +1 -0
  348. package/lib/utils/is.js +10 -0
  349. package/lib/utils/makeSignalExtensions.d.ts +4 -0
  350. package/lib/utils/makeSignalExtensions.d.ts.map +1 -0
  351. package/lib/utils/makeSignalExtensions.js +20 -0
  352. package/lib/utils/video/ffmpeg-client.d.ts +5 -0
  353. package/lib/utils/video/ffmpeg-client.d.ts.map +1 -0
  354. package/lib/utils/video/ffmpeg-client.js +32 -0
  355. package/lib/utils/video/mp4-parser-manager.d.ts +3 -0
  356. package/lib/utils/video/mp4-parser-manager.d.ts.map +1 -0
  357. package/lib/utils/video/mp4-parser-manager.js +55 -0
  358. package/lib/utils/video/parser/index.d.ts +2 -0
  359. package/lib/utils/video/parser/index.d.ts.map +1 -0
  360. package/lib/utils/video/parser/index.js +2 -0
  361. package/lib/utils/video/parser/parser.d.ts +21 -0
  362. package/lib/utils/video/parser/parser.d.ts.map +1 -0
  363. package/lib/utils/video/parser/parser.js +168 -0
  364. package/lib/utils/video/parser/sampler.d.ts +16 -0
  365. package/lib/utils/video/parser/sampler.d.ts.map +1 -0
  366. package/lib/utils/video/parser/sampler.js +56 -0
  367. package/lib/utils/video/parser/segment.d.ts +48 -0
  368. package/lib/utils/video/parser/segment.d.ts.map +1 -0
  369. package/lib/utils/video/parser/segment.js +239 -0
  370. package/lib/utils/video/parser/sink.d.ts +9 -0
  371. package/lib/utils/video/parser/sink.d.ts.map +1 -0
  372. package/lib/utils/video/parser/sink.js +22 -0
  373. package/lib/utils/video/parser/utils.d.ts +10 -0
  374. package/lib/utils/video/parser/utils.d.ts.map +1 -0
  375. package/lib/utils/video/parser/utils.js +22 -0
  376. package/package.json +4 -4
@@ -0,0 +1,236 @@
1
+ /**
2
+ * Performs a patience diff on two arrays of strings, returning an object
3
+ * containing the lines that were deleted, inserted, and potentially moved
4
+ * lines. The plus parameter can result in a significant performance hit due
5
+ * to additional Longest Common Substring searches.
6
+ *
7
+ * @param aLines - The original array of strings
8
+ * @param bLines - The new array of strings
9
+ * @param plus - Whether to return the moved lines
10
+ *
11
+ * Adapted from Jonathan "jonTrent" Trent's patience-diff algorithm.
12
+ * Types and tests added by Hunter "hhenrichsen" Henrichsen.
13
+ *
14
+ * {@link https://github.com/jonTrent/PatienceDiff}
15
+ */
16
+ export function patienceDiff(aLines, bLines) {
17
+ /**
18
+ * Finds all unique values in lines[start...end], inclusive. This
19
+ * function is used in preparation for determining the longest common
20
+ * subsequence.
21
+ *
22
+ * @param lines - The array to search
23
+ * @param start - The starting index (inclusive)
24
+ * @param end - The ending index (inclusive)
25
+ * @returns A map of the unique lines to their index
26
+ */
27
+ function findUnique(lines, start, end) {
28
+ const lineMap = new Map();
29
+ for (let i = start; i <= end; i++) {
30
+ const line = lines[i];
31
+ const data = lineMap.get(line);
32
+ if (data) {
33
+ data.count++;
34
+ data.index = i;
35
+ }
36
+ else {
37
+ lineMap.set(line, { count: 1, index: i });
38
+ }
39
+ }
40
+ const newMap = new Map();
41
+ for (const [key, value] of lineMap) {
42
+ if (value.count === 1) {
43
+ newMap.set(key, value.index);
44
+ }
45
+ }
46
+ return newMap;
47
+ }
48
+ /**
49
+ * Finds all the unique common entries between aArray[aStart...aEnd] and
50
+ * bArray[bStart...bEnd], inclusive. This function uses findUnique to pare
51
+ * down the aArray and bArray ranges first, before then walking the
52
+ * comparison between the two arrays.
53
+ *
54
+ *
55
+ * @param aArray - The original array
56
+ * @param aStart - The start of the original array to search
57
+ * @param aEnd - The end of the original array to search, inclusive
58
+ * @param bArray - The new array
59
+ * @param bStart - the start of the new array to search
60
+ * @param bEnd - The end of the new array to search, inclusive
61
+ * @returns a Map, with the key as the common line between aArray and
62
+ * bArray, with the value as an object containing the array indices of the
63
+ * matching uniqe lines.
64
+ */
65
+ function uniqueCommon(aArray, aStart, aEnd, bArray, bStart, bEnd) {
66
+ const aUnique = findUnique(aArray, aStart, aEnd);
67
+ const bUnique = findUnique(bArray, bStart, bEnd);
68
+ return [...aUnique.entries()].reduce((paired, [key, value]) => {
69
+ const bIndex = bUnique.get(key);
70
+ if (bIndex !== undefined) {
71
+ paired.set(key, {
72
+ aIndex: value,
73
+ bIndex,
74
+ });
75
+ }
76
+ return paired;
77
+ }, new Map());
78
+ }
79
+ /**
80
+ * Takes a map from the unique common lines between two arrays and determines
81
+ * the longest common subsequence.
82
+ *
83
+ * @see uniqueCommon
84
+ *
85
+ * @param abMap - The map of unique common lines between two arrays.
86
+ * @returns An array of objects containing the indices of the longest common
87
+ * subsequence.
88
+ */
89
+ function longestCommonSubsequence(abMap) {
90
+ const jagged = [];
91
+ abMap.forEach(value => {
92
+ let i = 0;
93
+ while (jagged[i] && jagged[i].at(-1).bIndex < value.bIndex) {
94
+ i++;
95
+ }
96
+ if (i > 0) {
97
+ value.prev = jagged[i - 1].at(-1);
98
+ }
99
+ if (!jagged[i]) {
100
+ jagged[i] = [value];
101
+ }
102
+ else {
103
+ jagged[i].push(value);
104
+ }
105
+ });
106
+ // Pull out the longest common subsequence
107
+ let lcs = [];
108
+ if (jagged.length > 0) {
109
+ lcs = [jagged.at(-1).at(-1)];
110
+ let cursor = lcs.at(-1);
111
+ while (cursor?.prev) {
112
+ cursor = cursor.prev;
113
+ lcs.push(cursor);
114
+ }
115
+ }
116
+ return lcs.reverse();
117
+ }
118
+ /**
119
+ * Keeps track of the aLines that have been deleted, are shared between aLines
120
+ * and bLines, and bLines that have been inserted.
121
+ */
122
+ const result = [];
123
+ let deleted = 0;
124
+ let inserted = 0;
125
+ function addToResult(aIndex, bIndex) {
126
+ if (bIndex < 0) {
127
+ deleted++;
128
+ }
129
+ else if (aIndex < 0) {
130
+ inserted++;
131
+ }
132
+ result.push({
133
+ line: 0 <= aIndex ? aLines[aIndex] : bLines[bIndex],
134
+ aIndex,
135
+ bIndex,
136
+ moved: false,
137
+ });
138
+ }
139
+ function addSubMatch(aStart, aEnd, bStart, bEnd) {
140
+ // Match any lines at the beginning of aLines and bLines.
141
+ while (aStart <= aEnd &&
142
+ bStart <= bEnd &&
143
+ aLines[aStart] === bLines[bStart]) {
144
+ addToResult(aStart++, bStart++);
145
+ }
146
+ // Match any lines at the end of aLines and bLines, but don't place them
147
+ // in the "result" array just yet, as the lines between these matches at
148
+ // the beginning and the end need to be analyzed first.
149
+ const aEndTemp = aEnd;
150
+ while (aStart <= aEnd && bStart <= bEnd && aLines[aEnd] === bLines[bEnd]) {
151
+ aEnd--;
152
+ bEnd--;
153
+ }
154
+ // Now, check to determine with the remaining lines in the subsequence
155
+ // whether there are any unique common lines between aLines and bLines.
156
+ //
157
+ // If not, add the subsequence to the result (all aLines having been
158
+ // deleted, and all bLines having been inserted).
159
+ //
160
+ // If there are unique common lines between aLines and bLines, then let's
161
+ // recursively perform the patience diff on the subsequence.
162
+ const uniqueCommonMap = uniqueCommon(aLines, aStart, aEnd, bLines, bStart, bEnd);
163
+ if (uniqueCommonMap.size === 0) {
164
+ while (aStart <= aEnd) {
165
+ addToResult(aStart++, -1);
166
+ }
167
+ while (bStart <= bEnd) {
168
+ addToResult(-1, bStart++);
169
+ }
170
+ }
171
+ else {
172
+ recurseLCS(aStart, aEnd, bStart, bEnd, uniqueCommonMap);
173
+ }
174
+ // Finally, let's add the matches at the end to the result.
175
+ while (aEnd < aEndTemp) {
176
+ addToResult(++aEnd, ++bEnd);
177
+ }
178
+ }
179
+ /**
180
+ * Finds the longest common subsequence between the arrays
181
+ * aLines[aStart...aEnd] and bLines[bStart...bEnd], inclusive. Then for each
182
+ * subsequence, recursively performs another LCS search (via addSubMatch),
183
+ * until there are none found, at which point the subsequence is dumped to
184
+ * the result.
185
+ *
186
+ * @param aStart - The start of the original array to search
187
+ * @param aEnd - The end of the original array to search, inclusive
188
+ * @param bStart - The start of the new array to search
189
+ * @param bEnd - The end of the new array to search, inclusive
190
+ * @param uniqueCommonMap - A map of the unique common lines between
191
+ * aLines[aStart...aEnd] and bLines[bStart...bEnd], inclusive.
192
+ */
193
+ function recurseLCS(aStart, aEnd, bStart, bEnd, uniqueCommonMap = uniqueCommon(aLines, aStart, aEnd, bLines, bStart, bEnd)) {
194
+ const lcs = longestCommonSubsequence(uniqueCommonMap);
195
+ if (lcs.length === 0) {
196
+ addSubMatch(aStart, aEnd, bStart, bEnd);
197
+ }
198
+ else {
199
+ if (aStart < lcs[0].aIndex || bStart < lcs[0].bIndex) {
200
+ addSubMatch(aStart, lcs[0].aIndex - 1, bStart, lcs[0].bIndex - 1);
201
+ }
202
+ let i;
203
+ for (i = 0; i < lcs.length - 1; i++) {
204
+ addSubMatch(lcs[i].aIndex, lcs[i + 1].aIndex - 1, lcs[i].bIndex, lcs[i + 1].bIndex - 1);
205
+ }
206
+ if (lcs[i].aIndex <= aEnd || lcs[i].bIndex <= bEnd) {
207
+ addSubMatch(lcs[i].aIndex, aEnd, lcs[i].bIndex, bEnd);
208
+ }
209
+ }
210
+ }
211
+ recurseLCS(0, aLines.length - 1, 0, bLines.length - 1);
212
+ return {
213
+ lines: result,
214
+ lineCountDeleted: deleted,
215
+ lineCountInserted: inserted,
216
+ };
217
+ }
218
+ /**
219
+ * Utility function for debugging patienceDiff.
220
+ *
221
+ * @internal
222
+ */
223
+ export function printDiff(diff) {
224
+ diff.lines.forEach(line => {
225
+ if (line.bIndex < 0) {
226
+ console.log(`- ${line.line}`);
227
+ }
228
+ else if (line.aIndex < 0) {
229
+ console.log(`+ ${line.line}`);
230
+ }
231
+ else {
232
+ console.log(` ${line.line}`);
233
+ }
234
+ });
235
+ }
236
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlmZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY29kZS9kaWZmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxVQUFVLFlBQVksQ0FDMUIsTUFBZ0IsRUFDaEIsTUFBZ0I7SUFVaEI7Ozs7Ozs7OztPQVNHO0lBQ0gsU0FBUyxVQUFVLENBQUMsS0FBZSxFQUFFLEtBQWEsRUFBRSxHQUFXO1FBQzdELE1BQU0sT0FBTyxHQUFHLElBQUksR0FBRyxFQUEwQyxDQUFDO1FBQ2xFLEtBQUssSUFBSSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNsQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEIsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMvQixJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNULElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDYixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztZQUNqQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsRUFBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUMsQ0FBQyxDQUFDO1lBQzFDLENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7UUFDekMsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ25DLElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDdEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lB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
@@ -0,0 +1,17 @@
1
+ import type { CodeRange } from './CodeRange';
2
+ import type { CodeTag } from './CodeScope';
3
+ /**
4
+ * Transform the fragments to isolate the given range into its own fragment.
5
+ *
6
+ * @remarks
7
+ * This function will try to preserve the original fragments, resolving them
8
+ * only if they overlap with the range.
9
+ *
10
+ * @param range - The range to extract.
11
+ * @param fragments - The fragments to transform.
12
+ *
13
+ * @returns A tuple containing the transformed fragments and the index of the
14
+ * isolated fragment within.
15
+ */
16
+ export declare function extractRange(range: CodeRange, fragments: CodeTag[]): [CodeTag[], number];
17
+ //# sourceMappingURL=extractRange.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractRange.d.ts","sourceRoot":"","sources":["../../src/lib/code/extractRange.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAC,OAAO,EAAC,MAAM,aAAa,CAAC;AAGzC;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,SAAS,EAChB,SAAS,EAAE,OAAO,EAAE,GACnB,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAyGrB"}
@@ -0,0 +1,102 @@
1
+ import { resolveCodeTag } from './CodeScope';
2
+ /**
3
+ * Transform the fragments to isolate the given range into its own fragment.
4
+ *
5
+ * @remarks
6
+ * This function will try to preserve the original fragments, resolving them
7
+ * only if they overlap with the range.
8
+ *
9
+ * @param range - The range to extract.
10
+ * @param fragments - The fragments to transform.
11
+ *
12
+ * @returns A tuple containing the transformed fragments and the index of the
13
+ * isolated fragment within.
14
+ */
15
+ export function extractRange(range, fragments) {
16
+ const [from, to] = range;
17
+ let [fromRow, fromColumn] = from;
18
+ let [toRow, toColumn] = to;
19
+ if (fromRow > toRow || (fromRow === toRow && fromColumn > toColumn)) {
20
+ [fromRow, fromColumn] = to;
21
+ [toRow, toColumn] = from;
22
+ }
23
+ let currentRow = 0;
24
+ let currentColumn = 0;
25
+ const newFragments = [];
26
+ let index = -1;
27
+ let found = false;
28
+ let extracted = '';
29
+ for (const fragment of fragments) {
30
+ if (found) {
31
+ newFragments.push(fragment);
32
+ continue;
33
+ }
34
+ const resolved = resolveCodeTag(fragment, false);
35
+ const lines = resolved.split('\n');
36
+ const newRows = lines.length - 1;
37
+ const lastColumn = lines[newRows].length;
38
+ const nextColumn = newRows > 0 ? lastColumn : currentColumn + lastColumn;
39
+ if (fromRow > currentRow + newRows ||
40
+ (fromRow === currentRow + newRows && fromColumn > nextColumn)) {
41
+ currentRow += newRows;
42
+ currentColumn = nextColumn;
43
+ newFragments.push(fragment);
44
+ continue;
45
+ }
46
+ for (let i = 0; i < resolved.length; i++) {
47
+ const char = resolved.charAt(i);
48
+ if (fromRow === currentRow && fromColumn >= currentColumn) {
49
+ if (fromColumn === currentColumn) {
50
+ index = newFragments.length + 1;
51
+ newFragments.push(resolved.slice(0, i), '');
52
+ }
53
+ else if (char === '\n') {
54
+ index = newFragments.length + 1;
55
+ newFragments.push(resolved.slice(0, i) + ' '.repeat(fromColumn - currentColumn), '');
56
+ }
57
+ }
58
+ if (index !== -1 && toRow === currentRow && toColumn >= currentColumn) {
59
+ if (toColumn === currentColumn) {
60
+ newFragments.push(resolved.slice(i));
61
+ found = true;
62
+ break;
63
+ }
64
+ if (char === '\n') {
65
+ if (currentColumn < toColumn) {
66
+ extracted += '\n';
67
+ if (i + 1 < resolved.length) {
68
+ newFragments.push(resolved.slice(i + 1));
69
+ }
70
+ }
71
+ else {
72
+ newFragments.push(resolved.slice(i));
73
+ }
74
+ found = true;
75
+ break;
76
+ }
77
+ }
78
+ if (index !== -1) {
79
+ extracted += char;
80
+ }
81
+ if (char === '\n') {
82
+ currentRow++;
83
+ currentColumn = 0;
84
+ }
85
+ else {
86
+ currentColumn++;
87
+ }
88
+ }
89
+ if (index === -1) {
90
+ newFragments.push(fragment);
91
+ }
92
+ }
93
+ if (index === -1) {
94
+ index = newFragments.length + 1;
95
+ const missingRows = fromRow - currentRow;
96
+ const missingColumns = missingRows > 0 ? fromColumn : fromColumn - currentColumn;
97
+ newFragments.push('\n'.repeat(missingRows) + ' '.repeat(missingColumns), '');
98
+ }
99
+ newFragments[index] = extracted;
100
+ return [newFragments, index];
101
+ }
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0cmFjdFJhbmdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9jb2RlL2V4dHJhY3RSYW5nZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBRTNDOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQU0sVUFBVSxZQUFZLENBQzFCLEtBQWdCLEVBQ2hCLFNBQW9CO0lBRXBCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBQ3pCLElBQUksQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ2pDLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQzNCLElBQUksT0FBTyxHQUFHLEtBQUssSUFBSSxDQUFDLE9BQU8sS0FBSyxLQUFLLElBQUksVUFBVSxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDcEUsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQzNCLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLElBQUksYUFBYSxHQUFHLENBQUMsQ0FBQztJQUN0QixNQUFNLFlBQVksR0FBYyxFQUFFLENBQUM7SUFDbkMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDZixJQUFJLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDbEIsSUFBSSxTQUFTLEdBQUcsRUFBRSxDQUFDO0lBRW5CLEtBQUssTUFBTSxRQUFRLElBQUksU0FBUyxFQUFFLENBQUM7UUFDakMsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDNUIsU0FBUztRQUNYLENBQUM7UUFFRCxNQUFN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
@@ -0,0 +1,14 @@
1
+ export * from './CodeCursor';
2
+ export * from './CodeDiffer';
3
+ export * from './CodeFragment';
4
+ export * from './CodeHighlighter';
5
+ export * from './CodeRange';
6
+ export * from './CodeScope';
7
+ export * from './CodeSelection';
8
+ export * from './CodeSignal';
9
+ export * from './CodeTokenizer';
10
+ export * from './DefaultHighlightStyle';
11
+ export * from './diff';
12
+ export * from './extractRange';
13
+ export * from './LezerHighlighter';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/code/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,QAAQ,CAAC;AACvB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,14 @@
1
+ export * from './CodeCursor';
2
+ export * from './CodeDiffer';
3
+ export * from './CodeFragment';
4
+ export * from './CodeHighlighter';
5
+ export * from './CodeRange';
6
+ export * from './CodeScope';
7
+ export * from './CodeSelection';
8
+ export * from './CodeSignal';
9
+ export * from './CodeTokenizer';
10
+ export * from './DefaultHighlightStyle';
11
+ export * from './diff';
12
+ export * from './extractRange';
13
+ export * from './LezerHighlighter';
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2NvZGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLG1CQUFtQixDQUFDO0FBQ2xDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsaUJBQWlCLENBQUM7QUFDaEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsUUFBUSxDQUFDO0FBQ3ZCLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxvQkFBb0IsQ0FBQyJ9
@@ -0,0 +1,14 @@
1
+ import type { MediaProps } from './Media';
2
+ import { Media } from './Media';
3
+ export declare class Audio extends Media {
4
+ private static readonly pool;
5
+ constructor(props: MediaProps);
6
+ protected mediaElement(): HTMLAudioElement;
7
+ protected seekedMedia(): HTMLAudioElement;
8
+ protected fastSeekedMedia(): HTMLAudioElement;
9
+ protected audio(): HTMLAudioElement;
10
+ protected seekedAudio(): HTMLAudioElement;
11
+ protected fastSeekedAudio(): HTMLAudioElement;
12
+ protected draw(context: CanvasRenderingContext2D): Promise<void>;
13
+ }
14
+ //# sourceMappingURL=Audio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Audio.d.ts","sourceRoot":"","sources":["../../src/lib/components/Audio.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,SAAS,CAAC;AACxC,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAE9B,qBACa,KAAM,SAAQ,KAAK;IAC9B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAwC;gBAEjD,KAAK,EAAE,UAAU;IAIpC,SAAS,CAAC,YAAY,IAAI,gBAAgB;IAI1C,SAAS,CAAC,WAAW,IAAI,gBAAgB;IAIzC,SAAS,CAAC,eAAe,IAAI,gBAAgB;IAK7C,SAAS,CAAC,KAAK,IAAI,gBAAgB;IA4DnC,SAAS,CAAC,WAAW,IAAI,gBAAgB;IA6BzC,SAAS,CAAC,eAAe,IAAI,gBAAgB;cAoCpB,IAAI,CAAC,OAAO,EAAE,wBAAwB;CAgBhE"}
@@ -0,0 +1,148 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var Audio_1;
8
+ import { DependencyContext, PlaybackState } from '@twick/core';
9
+ import { computed, nodeName } from '../decorators';
10
+ import { Media } from './Media';
11
+ let Audio = Audio_1 = class Audio extends Media {
12
+ constructor(props) {
13
+ super(props);
14
+ }
15
+ mediaElement() {
16
+ return this.audio();
17
+ }
18
+ seekedMedia() {
19
+ return this.seekedAudio();
20
+ }
21
+ fastSeekedMedia() {
22
+ return this.fastSeekedAudio();
23
+ }
24
+ audio() {
25
+ const src = this.src();
26
+ // Use a temporary key for undefined src to avoid conflicts
27
+ const key = `${this.key}/${src || 'pending'}`;
28
+ let audio = Audio_1.pool[key];
29
+ if (!audio) {
30
+ audio = document.createElement('audio');
31
+ audio.crossOrigin = 'anonymous';
32
+ // Only set src if it's valid, otherwise leave it empty
33
+ if (src && src !== 'undefined') {
34
+ audio.src = src;
35
+ }
36
+ Audio_1.pool[key] = audio;
37
+ }
38
+ else if (src && src !== 'undefined' && audio.src !== src) {
39
+ // Update existing audio element if src has changed and is now valid
40
+ audio.src = src;
41
+ // Move audio to correct pool key
42
+ delete Audio_1.pool[key];
43
+ const newKey = `${this.key}/${src}`;
44
+ Audio_1.pool[newKey] = audio;
45
+ }
46
+ // If src is still undefined, wait for it to become available
47
+ if (!src || src === 'undefined') {
48
+ DependencyContext.collectPromise(new Promise(resolve => {
49
+ // Check periodically for valid src
50
+ const checkSrc = () => {
51
+ const currentSrc = this.src();
52
+ if (currentSrc && currentSrc !== 'undefined') {
53
+ resolve();
54
+ }
55
+ else {
56
+ setTimeout(checkSrc, 10);
57
+ }
58
+ };
59
+ checkSrc();
60
+ }));
61
+ }
62
+ const weNeedToWait = this.waitForCanPlayNecessary(audio);
63
+ if (!weNeedToWait) {
64
+ return audio;
65
+ }
66
+ DependencyContext.collectPromise(new Promise(resolve => {
67
+ this.waitForCanPlay(audio, resolve);
68
+ }));
69
+ return audio;
70
+ }
71
+ seekedAudio() {
72
+ const audio = this.audio();
73
+ audio.addEventListener('ended', () => {
74
+ this.pause();
75
+ });
76
+ if (!(this.time() < audio.duration)) {
77
+ this.pause();
78
+ return audio;
79
+ }
80
+ const time = this.clampTime(this.time());
81
+ audio.playbackRate = this.playbackRate();
82
+ if (!audio.paused) {
83
+ audio.pause();
84
+ }
85
+ if (this.lastTime === time) {
86
+ return audio;
87
+ }
88
+ this.setCurrentTime(time);
89
+ return audio;
90
+ }
91
+ fastSeekedAudio() {
92
+ const audio = this.audio();
93
+ if (!(this.time() < audio.duration)) {
94
+ this.pause();
95
+ return audio;
96
+ }
97
+ const time = this.clampTime(this.time());
98
+ audio.playbackRate = this.playbackRate();
99
+ if (this.lastTime === time) {
100
+ return audio;
101
+ }
102
+ const playing = this.playing() && time < audio.duration && audio.playbackRate > 0;
103
+ if (playing) {
104
+ if (audio.paused) {
105
+ DependencyContext.collectPromise(audio.play());
106
+ }
107
+ }
108
+ else {
109
+ if (!audio.paused) {
110
+ audio.pause();
111
+ }
112
+ }
113
+ if (Math.abs(audio.currentTime - time) > 0.3) {
114
+ this.setCurrentTime(time);
115
+ }
116
+ else if (!playing) {
117
+ audio.currentTime = time;
118
+ }
119
+ return audio;
120
+ }
121
+ async draw(context) {
122
+ // Auto-start playback if Twick is playing but media isn't
123
+ this.autoPlayBasedOnTwick();
124
+ const playbackState = this.view().playbackState();
125
+ playbackState === PlaybackState.Playing ||
126
+ playbackState === PlaybackState.Presenting
127
+ ? this.fastSeekedAudio()
128
+ : this.seekedAudio();
129
+ context.save();
130
+ context.restore();
131
+ await this.drawChildren(context);
132
+ }
133
+ };
134
+ Audio.pool = {};
135
+ __decorate([
136
+ computed()
137
+ ], Audio.prototype, "audio", null);
138
+ __decorate([
139
+ computed()
140
+ ], Audio.prototype, "seekedAudio", null);
141
+ __decorate([
142
+ computed()
143
+ ], Audio.prototype, "fastSeekedAudio", null);
144
+ Audio = Audio_1 = __decorate([
145
+ nodeName('Audio')
146
+ ], Audio);
147
+ export { Audio };
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXVkaW8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvQXVkaW8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxhQUFhLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFDN0QsT0FBTyxFQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFFakQsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLFNBQVMsQ0FBQztBQUd2QixJQUFNLEtBQUssYUFBWCxNQUFNLEtBQU0sU0FBUSxLQUFLO0lBRzlCLFlBQW1CLEtBQWlCO1FBQ2xDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNmLENBQUM7SUFFUyxZQUFZO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFUyxXQUFXO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFUyxlQUFlO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFHUyxLQUFLO1FBQ2IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRXZCLDJEQUEyRDtRQUMzRCxNQUFNLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBRTlDLElBQUksS0FBSyxHQUFHLE9BQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsS0FBSyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDeEMsS0FBSyxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7WUFFaEMsdURBQXVEO1lBQ3ZELElBQUksR0FBRyxJQUFJLEdBQUcsS0FBSyxXQUFX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
@@ -0,0 +1,23 @@
1
+ import type { SerializedVector2, Vector2 } from '@twick/core';
2
+ import { BBox } from '@twick/core';
3
+ import type { CurveProfile } from '../curves';
4
+ import type { PolynomialSegment } from '../curves/PolynomialSegment';
5
+ import type { DesiredLength } from '../partials';
6
+ import { Curve } from './Curve';
7
+ export interface BezierOverlayInfo {
8
+ curve: Path2D;
9
+ handleLines: Path2D;
10
+ controlPoints: Vector2[];
11
+ startPoint: Vector2;
12
+ endPoint: Vector2;
13
+ }
14
+ export declare abstract class Bezier extends Curve {
15
+ profile(): CurveProfile;
16
+ protected abstract segment(): PolynomialSegment;
17
+ protected abstract overlayInfo(matrix: DOMMatrix): BezierOverlayInfo;
18
+ protected childrenBBox(): BBox;
19
+ protected desiredSize(): SerializedVector2<DesiredLength>;
20
+ protected offsetComputedLayout(box: BBox): BBox;
21
+ drawOverlay(context: CanvasRenderingContext2D, matrix: DOMMatrix): void;
22
+ }
23
+ //# sourceMappingURL=Bezier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Bezier.d.ts","sourceRoot":"","sources":["../../src/lib/components/Bezier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,iBAAiB,EAAE,OAAO,EAAC,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAC,IAAI,EAAyB,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,6BAA6B,CAAC;AAEnE,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAE9B,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,OAAO,EAAE,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,8BAAsB,MAAO,SAAQ,KAAK;IACxB,OAAO,IAAI,YAAY;IASvC,SAAS,CAAC,QAAQ,CAAC,OAAO,IAAI,iBAAiB;IAE/C,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,iBAAiB;IAGpE,SAAS,CAAC,YAAY,IAAI,IAAI;cAIX,WAAW,IAAI,iBAAiB,CAAC,aAAa,CAAC;cAI/C,oBAAoB,CAAC,GAAG,EAAE,IAAI,GAAG,IAAI;IAKxC,WAAW,CACzB,OAAO,EAAE,wBAAwB,EACjC,MAAM,EAAE,SAAS;CAyDpB"}