@twick/2d 0.14.17 → 0.14.19

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 (536) hide show
  1. package/LICENSE +21 -21
  2. package/package.json +4 -4
  3. package/src/editor/NodeInspectorConfig.tsx +76 -76
  4. package/src/editor/PreviewOverlayConfig.tsx +67 -67
  5. package/src/editor/Provider.tsx +93 -93
  6. package/src/editor/SceneGraphTabConfig.tsx +81 -81
  7. package/src/editor/icons/CircleIcon.tsx +7 -7
  8. package/src/editor/icons/CodeBlockIcon.tsx +8 -8
  9. package/src/editor/icons/CurveIcon.tsx +7 -7
  10. package/src/editor/icons/GridIcon.tsx +7 -7
  11. package/src/editor/icons/IconMap.ts +35 -35
  12. package/src/editor/icons/ImgIcon.tsx +8 -8
  13. package/src/editor/icons/LayoutIcon.tsx +9 -9
  14. package/src/editor/icons/LineIcon.tsx +7 -7
  15. package/src/editor/icons/NodeIcon.tsx +7 -7
  16. package/src/editor/icons/RayIcon.tsx +7 -7
  17. package/src/editor/icons/RectIcon.tsx +7 -7
  18. package/src/editor/icons/ShapeIcon.tsx +7 -7
  19. package/src/editor/icons/TxtIcon.tsx +8 -8
  20. package/src/editor/icons/VideoIcon.tsx +7 -7
  21. package/src/editor/icons/View2DIcon.tsx +10 -10
  22. package/src/editor/index.ts +17 -17
  23. package/src/editor/tree/DetachedRoot.tsx +23 -23
  24. package/src/editor/tree/NodeElement.tsx +74 -74
  25. package/src/editor/tree/TreeElement.tsx +72 -72
  26. package/src/editor/tree/TreeRoot.tsx +10 -10
  27. package/src/editor/tree/ViewRoot.tsx +20 -20
  28. package/src/editor/tree/index.module.scss +38 -38
  29. package/src/editor/tree/index.ts +3 -3
  30. package/src/editor/tsconfig.build.json +5 -5
  31. package/src/editor/tsconfig.json +12 -12
  32. package/src/editor/tsdoc.json +4 -4
  33. package/src/editor/vite-env.d.ts +1 -1
  34. package/src/lib/code/CodeCursor.ts +445 -445
  35. package/src/lib/code/CodeDiffer.ts +78 -78
  36. package/src/lib/code/CodeFragment.ts +97 -97
  37. package/src/lib/code/CodeHighlighter.ts +75 -75
  38. package/src/lib/code/CodeMetrics.ts +47 -47
  39. package/src/lib/code/CodeRange.test.ts +74 -74
  40. package/src/lib/code/CodeRange.ts +216 -216
  41. package/src/lib/code/CodeScope.ts +101 -101
  42. package/src/lib/code/CodeSelection.ts +24 -24
  43. package/src/lib/code/CodeSignal.ts +327 -327
  44. package/src/lib/code/CodeTokenizer.ts +54 -54
  45. package/src/lib/code/DefaultHighlightStyle.ts +98 -98
  46. package/src/lib/code/LezerHighlighter.ts +113 -113
  47. package/src/lib/code/diff.test.ts +311 -311
  48. package/src/lib/code/diff.ts +319 -319
  49. package/src/lib/code/extractRange.ts +126 -126
  50. package/src/lib/code/index.ts +13 -13
  51. package/src/lib/components/Audio.ts +168 -168
  52. package/src/lib/components/Bezier.ts +105 -105
  53. package/src/lib/components/Circle.ts +266 -266
  54. package/src/lib/components/Code.ts +526 -526
  55. package/src/lib/components/CodeBlock.ts +576 -576
  56. package/src/lib/components/CubicBezier.ts +112 -112
  57. package/src/lib/components/Curve.ts +455 -455
  58. package/src/lib/components/Grid.ts +135 -135
  59. package/src/lib/components/Icon.ts +96 -96
  60. package/src/lib/components/Img.ts +319 -319
  61. package/src/lib/components/Knot.ts +157 -157
  62. package/src/lib/components/Latex.ts +122 -122
  63. package/src/lib/components/Layout.ts +1092 -1092
  64. package/src/lib/components/Line.ts +429 -429
  65. package/src/lib/components/Media.ts +576 -576
  66. package/src/lib/components/Node.ts +1940 -1940
  67. package/src/lib/components/Path.ts +137 -137
  68. package/src/lib/components/Polygon.ts +171 -171
  69. package/src/lib/components/QuadBezier.ts +100 -100
  70. package/src/lib/components/Ray.ts +125 -125
  71. package/src/lib/components/Rect.ts +187 -187
  72. package/src/lib/components/Rive.ts +156 -156
  73. package/src/lib/components/SVG.ts +797 -797
  74. package/src/lib/components/Shape.ts +143 -143
  75. package/src/lib/components/Spline.ts +344 -344
  76. package/src/lib/components/Txt.test.tsx +81 -81
  77. package/src/lib/components/Txt.ts +203 -203
  78. package/src/lib/components/TxtLeaf.ts +205 -205
  79. package/src/lib/components/Video.ts +461 -461
  80. package/src/lib/components/View2D.ts +98 -98
  81. package/src/lib/components/__tests__/children.test.tsx +142 -142
  82. package/src/lib/components/__tests__/clone.test.tsx +126 -126
  83. package/src/lib/components/__tests__/generatorTest.ts +28 -28
  84. package/src/lib/components/__tests__/mockScene2D.ts +45 -45
  85. package/src/lib/components/__tests__/query.test.tsx +122 -122
  86. package/src/lib/components/__tests__/state.test.tsx +60 -60
  87. package/src/lib/components/index.ts +28 -28
  88. package/src/lib/components/types.ts +35 -35
  89. package/src/lib/curves/ArcSegment.ts +159 -159
  90. package/src/lib/curves/CircleSegment.ts +77 -77
  91. package/src/lib/curves/CubicBezierSegment.ts +78 -78
  92. package/src/lib/curves/CurveDrawingInfo.ts +11 -11
  93. package/src/lib/curves/CurvePoint.ts +15 -15
  94. package/src/lib/curves/CurveProfile.ts +7 -7
  95. package/src/lib/curves/KnotInfo.ts +10 -10
  96. package/src/lib/curves/LineSegment.ts +62 -62
  97. package/src/lib/curves/Polynomial.ts +355 -355
  98. package/src/lib/curves/Polynomial2D.ts +62 -62
  99. package/src/lib/curves/PolynomialSegment.ts +124 -124
  100. package/src/lib/curves/QuadBezierSegment.ts +64 -64
  101. package/src/lib/curves/Segment.ts +17 -17
  102. package/src/lib/curves/UniformPolynomialCurveSampler.ts +94 -94
  103. package/src/lib/curves/createCurveProfileLerp.ts +471 -471
  104. package/src/lib/curves/getBezierSplineProfile.ts +223 -223
  105. package/src/lib/curves/getCircleProfile.ts +86 -86
  106. package/src/lib/curves/getPathProfile.ts +178 -178
  107. package/src/lib/curves/getPointAtDistance.ts +21 -21
  108. package/src/lib/curves/getPolylineProfile.test.ts +21 -21
  109. package/src/lib/curves/getPolylineProfile.ts +89 -89
  110. package/src/lib/curves/getRectProfile.ts +139 -139
  111. package/src/lib/curves/index.ts +16 -16
  112. package/src/lib/decorators/canvasStyleSignal.ts +16 -16
  113. package/src/lib/decorators/colorSignal.ts +9 -9
  114. package/src/lib/decorators/compound.ts +72 -72
  115. package/src/lib/decorators/computed.ts +18 -18
  116. package/src/lib/decorators/defaultStyle.ts +18 -18
  117. package/src/lib/decorators/filtersSignal.ts +136 -136
  118. package/src/lib/decorators/index.ts +10 -10
  119. package/src/lib/decorators/initializers.ts +32 -32
  120. package/src/lib/decorators/nodeName.ts +13 -13
  121. package/src/lib/decorators/signal.test.ts +90 -90
  122. package/src/lib/decorators/signal.ts +345 -345
  123. package/src/lib/decorators/spacingSignal.ts +15 -15
  124. package/src/lib/decorators/vector2Signal.ts +30 -30
  125. package/src/lib/globals.d.ts +2 -2
  126. package/src/lib/index.ts +8 -8
  127. package/src/lib/jsx-dev-runtime.ts +2 -2
  128. package/src/lib/jsx-runtime.ts +46 -46
  129. package/src/lib/parse-svg-path.d.ts +14 -14
  130. package/src/lib/partials/Filter.ts +180 -180
  131. package/src/lib/partials/Gradient.ts +102 -102
  132. package/src/lib/partials/Pattern.ts +34 -34
  133. package/src/lib/partials/ShaderConfig.ts +117 -117
  134. package/src/lib/partials/index.ts +4 -4
  135. package/src/lib/partials/types.ts +58 -58
  136. package/src/lib/scenes/Scene2D.ts +242 -242
  137. package/src/lib/scenes/index.ts +3 -3
  138. package/src/lib/scenes/makeScene2D.ts +16 -16
  139. package/src/lib/scenes/useScene2D.ts +6 -6
  140. package/src/lib/tsconfig.build.json +5 -5
  141. package/src/lib/tsconfig.json +10 -10
  142. package/src/lib/tsdoc.json +4 -4
  143. package/src/lib/utils/CanvasUtils.ts +306 -306
  144. package/src/lib/utils/diff.test.ts +453 -453
  145. package/src/lib/utils/diff.ts +148 -148
  146. package/src/lib/utils/index.ts +2 -2
  147. package/src/lib/utils/is.ts +11 -11
  148. package/src/lib/utils/makeSignalExtensions.ts +30 -30
  149. package/src/lib/utils/video/declarations.d.ts +1 -1
  150. package/src/lib/utils/video/ffmpeg-client.ts +50 -50
  151. package/src/lib/utils/video/mp4-parser-manager.ts +72 -72
  152. package/src/lib/utils/video/parser/index.ts +1 -1
  153. package/src/lib/utils/video/parser/parser.ts +257 -257
  154. package/src/lib/utils/video/parser/sampler.ts +72 -72
  155. package/src/lib/utils/video/parser/segment.ts +302 -302
  156. package/src/lib/utils/video/parser/sink.ts +29 -29
  157. package/src/lib/utils/video/parser/utils.ts +31 -31
  158. package/src/tsconfig.base.json +19 -19
  159. package/src/tsconfig.build.json +8 -8
  160. package/src/tsconfig.json +5 -5
  161. package/tsconfig.project.json +7 -7
  162. package/editor/editor/NodeInspectorConfig.d.ts +0 -3
  163. package/editor/editor/NodeInspectorConfig.d.ts.map +0 -1
  164. package/editor/editor/PreviewOverlayConfig.d.ts +0 -3
  165. package/editor/editor/PreviewOverlayConfig.d.ts.map +0 -1
  166. package/editor/editor/Provider.d.ts +0 -17
  167. package/editor/editor/Provider.d.ts.map +0 -1
  168. package/editor/editor/SceneGraphTabConfig.d.ts +0 -3
  169. package/editor/editor/SceneGraphTabConfig.d.ts.map +0 -1
  170. package/editor/editor/icons/CircleIcon.d.ts +0 -2
  171. package/editor/editor/icons/CircleIcon.d.ts.map +0 -1
  172. package/editor/editor/icons/CodeBlockIcon.d.ts +0 -2
  173. package/editor/editor/icons/CodeBlockIcon.d.ts.map +0 -1
  174. package/editor/editor/icons/CurveIcon.d.ts +0 -2
  175. package/editor/editor/icons/CurveIcon.d.ts.map +0 -1
  176. package/editor/editor/icons/GridIcon.d.ts +0 -2
  177. package/editor/editor/icons/GridIcon.d.ts.map +0 -1
  178. package/editor/editor/icons/IconMap.d.ts +0 -3
  179. package/editor/editor/icons/IconMap.d.ts.map +0 -1
  180. package/editor/editor/icons/ImgIcon.d.ts +0 -2
  181. package/editor/editor/icons/ImgIcon.d.ts.map +0 -1
  182. package/editor/editor/icons/LayoutIcon.d.ts +0 -2
  183. package/editor/editor/icons/LayoutIcon.d.ts.map +0 -1
  184. package/editor/editor/icons/LineIcon.d.ts +0 -2
  185. package/editor/editor/icons/LineIcon.d.ts.map +0 -1
  186. package/editor/editor/icons/NodeIcon.d.ts +0 -2
  187. package/editor/editor/icons/NodeIcon.d.ts.map +0 -1
  188. package/editor/editor/icons/RayIcon.d.ts +0 -2
  189. package/editor/editor/icons/RayIcon.d.ts.map +0 -1
  190. package/editor/editor/icons/RectIcon.d.ts +0 -2
  191. package/editor/editor/icons/RectIcon.d.ts.map +0 -1
  192. package/editor/editor/icons/ShapeIcon.d.ts +0 -2
  193. package/editor/editor/icons/ShapeIcon.d.ts.map +0 -1
  194. package/editor/editor/icons/TxtIcon.d.ts +0 -2
  195. package/editor/editor/icons/TxtIcon.d.ts.map +0 -1
  196. package/editor/editor/icons/VideoIcon.d.ts +0 -2
  197. package/editor/editor/icons/VideoIcon.d.ts.map +0 -1
  198. package/editor/editor/icons/View2DIcon.d.ts +0 -2
  199. package/editor/editor/icons/View2DIcon.d.ts.map +0 -1
  200. package/editor/editor/index.d.ts +0 -4
  201. package/editor/editor/index.d.ts.map +0 -1
  202. package/editor/editor/tree/DetachedRoot.d.ts +0 -2
  203. package/editor/editor/tree/DetachedRoot.d.ts.map +0 -1
  204. package/editor/editor/tree/NodeElement.d.ts +0 -8
  205. package/editor/editor/tree/NodeElement.d.ts.map +0 -1
  206. package/editor/editor/tree/TreeElement.d.ts +0 -15
  207. package/editor/editor/tree/TreeElement.d.ts.map +0 -1
  208. package/editor/editor/tree/TreeRoot.d.ts +0 -3
  209. package/editor/editor/tree/TreeRoot.d.ts.map +0 -1
  210. package/editor/editor/tree/ViewRoot.d.ts +0 -2
  211. package/editor/editor/tree/ViewRoot.d.ts.map +0 -1
  212. package/editor/editor/tree/index.d.ts +0 -4
  213. package/editor/editor/tree/index.d.ts.map +0 -1
  214. package/editor/editor/tsconfig.build.tsbuildinfo +0 -1
  215. package/editor/index.css +0 -33
  216. package/editor/index.js +0 -341
  217. package/editor/index.js.map +0 -1
  218. package/lib/code/CodeCursor.d.ts +0 -83
  219. package/lib/code/CodeCursor.d.ts.map +0 -1
  220. package/lib/code/CodeCursor.js +0 -306
  221. package/lib/code/CodeDiffer.d.ts +0 -28
  222. package/lib/code/CodeDiffer.d.ts.map +0 -1
  223. package/lib/code/CodeDiffer.js +0 -51
  224. package/lib/code/CodeFragment.d.ts +0 -42
  225. package/lib/code/CodeFragment.d.ts.map +0 -1
  226. package/lib/code/CodeFragment.js +0 -72
  227. package/lib/code/CodeHighlighter.d.ts +0 -71
  228. package/lib/code/CodeHighlighter.d.ts.map +0 -1
  229. package/lib/code/CodeHighlighter.js +0 -2
  230. package/lib/code/CodeMetrics.d.ts +0 -11
  231. package/lib/code/CodeMetrics.d.ts.map +0 -1
  232. package/lib/code/CodeMetrics.js +0 -29
  233. package/lib/code/CodeRange.d.ts +0 -41
  234. package/lib/code/CodeRange.d.ts.map +0 -1
  235. package/lib/code/CodeRange.js +0 -179
  236. package/lib/code/CodeScope.d.ts +0 -16
  237. package/lib/code/CodeScope.d.ts.map +0 -1
  238. package/lib/code/CodeScope.js +0 -72
  239. package/lib/code/CodeSelection.d.ts +0 -6
  240. package/lib/code/CodeSelection.d.ts.map +0 -1
  241. package/lib/code/CodeSelection.js +0 -13
  242. package/lib/code/CodeSignal.d.ts +0 -60
  243. package/lib/code/CodeSignal.d.ts.map +0 -1
  244. package/lib/code/CodeSignal.js +0 -194
  245. package/lib/code/CodeTokenizer.d.ts +0 -8
  246. package/lib/code/CodeTokenizer.d.ts.map +0 -1
  247. package/lib/code/CodeTokenizer.js +0 -50
  248. package/lib/code/DefaultHighlightStyle.d.ts +0 -3
  249. package/lib/code/DefaultHighlightStyle.d.ts.map +0 -1
  250. package/lib/code/DefaultHighlightStyle.js +0 -98
  251. package/lib/code/LezerHighlighter.d.ts +0 -22
  252. package/lib/code/LezerHighlighter.d.ts.map +0 -1
  253. package/lib/code/LezerHighlighter.js +0 -89
  254. package/lib/code/diff.d.ts +0 -31
  255. package/lib/code/diff.d.ts.map +0 -1
  256. package/lib/code/diff.js +0 -236
  257. package/lib/code/extractRange.d.ts +0 -17
  258. package/lib/code/extractRange.d.ts.map +0 -1
  259. package/lib/code/extractRange.js +0 -102
  260. package/lib/code/index.d.ts +0 -14
  261. package/lib/code/index.d.ts.map +0 -1
  262. package/lib/code/index.js +0 -14
  263. package/lib/components/Audio.d.ts +0 -14
  264. package/lib/components/Audio.d.ts.map +0 -1
  265. package/lib/components/Audio.js +0 -148
  266. package/lib/components/Bezier.d.ts +0 -23
  267. package/lib/components/Bezier.d.ts.map +0 -1
  268. package/lib/components/Bezier.js +0 -81
  269. package/lib/components/Circle.d.ts +0 -193
  270. package/lib/components/Circle.d.ts.map +0 -1
  271. package/lib/components/Circle.js +0 -178
  272. package/lib/components/Code.d.ts +0 -231
  273. package/lib/components/Code.d.ts.map +0 -1
  274. package/lib/components/Code.js +0 -325
  275. package/lib/components/CodeBlock.d.ts +0 -133
  276. package/lib/components/CodeBlock.d.ts.map +0 -1
  277. package/lib/components/CodeBlock.js +0 -461
  278. package/lib/components/CubicBezier.d.ts +0 -70
  279. package/lib/components/CubicBezier.d.ts.map +0 -1
  280. package/lib/components/CubicBezier.js +0 -81
  281. package/lib/components/Curve.d.ts +0 -204
  282. package/lib/components/Curve.d.ts.map +0 -1
  283. package/lib/components/Curve.js +0 -284
  284. package/lib/components/Grid.d.ts +0 -76
  285. package/lib/components/Grid.d.ts.map +0 -1
  286. package/lib/components/Grid.js +0 -91
  287. package/lib/components/Icon.d.ts +0 -59
  288. package/lib/components/Icon.d.ts.map +0 -1
  289. package/lib/components/Icon.js +0 -58
  290. package/lib/components/Img.d.ts +0 -118
  291. package/lib/components/Img.d.ts.map +0 -1
  292. package/lib/components/Img.js +0 -245
  293. package/lib/components/Knot.d.ts +0 -90
  294. package/lib/components/Knot.d.ts.map +0 -1
  295. package/lib/components/Knot.js +0 -68
  296. package/lib/components/Latex.d.ts +0 -39
  297. package/lib/components/Latex.d.ts.map +0 -1
  298. package/lib/components/Latex.js +0 -101
  299. package/lib/components/Layout.d.ts +0 -419
  300. package/lib/components/Layout.d.ts.map +0 -1
  301. package/lib/components/Layout.js +0 -706
  302. package/lib/components/Line.d.ts +0 -160
  303. package/lib/components/Line.d.ts.map +0 -1
  304. package/lib/components/Line.js +0 -346
  305. package/lib/components/Media.d.ts +0 -70
  306. package/lib/components/Media.d.ts.map +0 -1
  307. package/lib/components/Media.js +0 -493
  308. package/lib/components/Node.d.ts +0 -836
  309. package/lib/components/Node.d.ts.map +0 -1
  310. package/lib/components/Node.js +0 -1317
  311. package/lib/components/Path.d.ts +0 -20
  312. package/lib/components/Path.d.ts.map +0 -1
  313. package/lib/components/Path.js +0 -97
  314. package/lib/components/Polygon.d.ts +0 -113
  315. package/lib/components/Polygon.d.ts.map +0 -1
  316. package/lib/components/Polygon.js +0 -123
  317. package/lib/components/QuadBezier.d.ts +0 -62
  318. package/lib/components/QuadBezier.d.ts.map +0 -1
  319. package/lib/components/QuadBezier.js +0 -76
  320. package/lib/components/Ray.d.ts +0 -62
  321. package/lib/components/Ray.d.ts.map +0 -1
  322. package/lib/components/Ray.js +0 -96
  323. package/lib/components/Rect.d.ts +0 -114
  324. package/lib/components/Rect.d.ts.map +0 -1
  325. package/lib/components/Rect.js +0 -76
  326. package/lib/components/Rive.d.ts +0 -22
  327. package/lib/components/Rive.d.ts.map +0 -1
  328. package/lib/components/Rive.js +0 -117
  329. package/lib/components/SVG.d.ts +0 -178
  330. package/lib/components/SVG.d.ts.map +0 -1
  331. package/lib/components/SVG.js +0 -577
  332. package/lib/components/Shape.d.ts +0 -40
  333. package/lib/components/Shape.d.ts.map +0 -1
  334. package/lib/components/Shape.js +0 -134
  335. package/lib/components/Spline.d.ts +0 -89
  336. package/lib/components/Spline.d.ts.map +0 -1
  337. package/lib/components/Spline.js +0 -256
  338. package/lib/components/Txt.d.ts +0 -53
  339. package/lib/components/Txt.d.ts.map +0 -1
  340. package/lib/components/Txt.js +0 -173
  341. package/lib/components/TxtLeaf.d.ts +0 -21
  342. package/lib/components/TxtLeaf.d.ts.map +0 -1
  343. package/lib/components/TxtLeaf.js +0 -181
  344. package/lib/components/Video.d.ts +0 -69
  345. package/lib/components/Video.d.ts.map +0 -1
  346. package/lib/components/Video.js +0 -342
  347. package/lib/components/View2D.d.ts +0 -28
  348. package/lib/components/View2D.d.ts.map +0 -1
  349. package/lib/components/View2D.js +0 -93
  350. package/lib/components/index.d.ts +0 -29
  351. package/lib/components/index.d.ts.map +0 -1
  352. package/lib/components/index.js +0 -29
  353. package/lib/components/types.d.ts +0 -17
  354. package/lib/components/types.d.ts.map +0 -1
  355. package/lib/components/types.js +0 -2
  356. package/lib/curves/ArcSegment.d.ts +0 -26
  357. package/lib/curves/ArcSegment.d.ts.map +0 -1
  358. package/lib/curves/ArcSegment.js +0 -97
  359. package/lib/curves/CircleSegment.d.ts +0 -18
  360. package/lib/curves/CircleSegment.d.ts.map +0 -1
  361. package/lib/curves/CircleSegment.js +0 -52
  362. package/lib/curves/CubicBezierSegment.d.ts +0 -18
  363. package/lib/curves/CubicBezierSegment.d.ts.map +0 -1
  364. package/lib/curves/CubicBezierSegment.js +0 -55
  365. package/lib/curves/CurveDrawingInfo.d.ts +0 -11
  366. package/lib/curves/CurveDrawingInfo.d.ts.map +0 -1
  367. package/lib/curves/CurveDrawingInfo.js +0 -2
  368. package/lib/curves/CurvePoint.d.ts +0 -15
  369. package/lib/curves/CurvePoint.d.ts.map +0 -1
  370. package/lib/curves/CurvePoint.js +0 -2
  371. package/lib/curves/CurveProfile.d.ts +0 -7
  372. package/lib/curves/CurveProfile.d.ts.map +0 -1
  373. package/lib/curves/CurveProfile.js +0 -2
  374. package/lib/curves/KnotInfo.d.ts +0 -12
  375. package/lib/curves/KnotInfo.d.ts.map +0 -1
  376. package/lib/curves/KnotInfo.js +0 -2
  377. package/lib/curves/LineSegment.d.ts +0 -16
  378. package/lib/curves/LineSegment.d.ts.map +0 -1
  379. package/lib/curves/LineSegment.js +0 -45
  380. package/lib/curves/Polynomial.d.ts +0 -118
  381. package/lib/curves/Polynomial.d.ts.map +0 -1
  382. package/lib/curves/Polynomial.js +0 -259
  383. package/lib/curves/Polynomial2D.d.ts +0 -22
  384. package/lib/curves/Polynomial2D.d.ts.map +0 -1
  385. package/lib/curves/Polynomial2D.js +0 -45
  386. package/lib/curves/PolynomialSegment.d.ts +0 -39
  387. package/lib/curves/PolynomialSegment.d.ts.map +0 -1
  388. package/lib/curves/PolynomialSegment.js +0 -86
  389. package/lib/curves/QuadBezierSegment.d.ts +0 -17
  390. package/lib/curves/QuadBezierSegment.d.ts.map +0 -1
  391. package/lib/curves/QuadBezierSegment.js +0 -49
  392. package/lib/curves/Segment.d.ts +0 -9
  393. package/lib/curves/Segment.d.ts.map +0 -1
  394. package/lib/curves/Segment.js +0 -3
  395. package/lib/curves/UniformPolynomialCurveSampler.d.ts +0 -43
  396. package/lib/curves/UniformPolynomialCurveSampler.d.ts.map +0 -1
  397. package/lib/curves/UniformPolynomialCurveSampler.js +0 -73
  398. package/lib/curves/createCurveProfileLerp.d.ts +0 -32
  399. package/lib/curves/createCurveProfileLerp.d.ts.map +0 -1
  400. package/lib/curves/createCurveProfileLerp.js +0 -351
  401. package/lib/curves/getBezierSplineProfile.d.ts +0 -12
  402. package/lib/curves/getBezierSplineProfile.d.ts.map +0 -1
  403. package/lib/curves/getBezierSplineProfile.js +0 -137
  404. package/lib/curves/getCircleProfile.d.ts +0 -4
  405. package/lib/curves/getCircleProfile.d.ts.map +0 -1
  406. package/lib/curves/getCircleProfile.js +0 -44
  407. package/lib/curves/getPathProfile.d.ts +0 -3
  408. package/lib/curves/getPathProfile.d.ts.map +0 -1
  409. package/lib/curves/getPathProfile.js +0 -128
  410. package/lib/curves/getPointAtDistance.d.ts +0 -4
  411. package/lib/curves/getPointAtDistance.d.ts.map +0 -1
  412. package/lib/curves/getPointAtDistance.js +0 -15
  413. package/lib/curves/getPolylineProfile.d.ts +0 -4
  414. package/lib/curves/getPolylineProfile.d.ts.map +0 -1
  415. package/lib/curves/getPolylineProfile.js +0 -58
  416. package/lib/curves/getRectProfile.d.ts +0 -4
  417. package/lib/curves/getRectProfile.d.ts.map +0 -1
  418. package/lib/curves/getRectProfile.js +0 -57
  419. package/lib/curves/index.d.ts +0 -17
  420. package/lib/curves/index.d.ts.map +0 -1
  421. package/lib/curves/index.js +0 -17
  422. package/lib/decorators/canvasStyleSignal.d.ts +0 -5
  423. package/lib/decorators/canvasStyleSignal.d.ts.map +0 -1
  424. package/lib/decorators/canvasStyleSignal.js +0 -12
  425. package/lib/decorators/colorSignal.d.ts +0 -2
  426. package/lib/decorators/colorSignal.d.ts.map +0 -1
  427. package/lib/decorators/colorSignal.js +0 -9
  428. package/lib/decorators/compound.d.ts +0 -26
  429. package/lib/decorators/compound.d.ts.map +0 -1
  430. package/lib/decorators/compound.js +0 -49
  431. package/lib/decorators/computed.d.ts +0 -9
  432. package/lib/decorators/computed.d.ts.map +0 -1
  433. package/lib/decorators/computed.js +0 -18
  434. package/lib/decorators/defaultStyle.d.ts +0 -2
  435. package/lib/decorators/defaultStyle.d.ts.map +0 -1
  436. package/lib/decorators/defaultStyle.js +0 -14
  437. package/lib/decorators/filtersSignal.d.ts +0 -13
  438. package/lib/decorators/filtersSignal.d.ts.map +0 -1
  439. package/lib/decorators/filtersSignal.js +0 -73
  440. package/lib/decorators/index.d.ts +0 -11
  441. package/lib/decorators/index.d.ts.map +0 -1
  442. package/lib/decorators/index.js +0 -11
  443. package/lib/decorators/initializers.d.ts +0 -4
  444. package/lib/decorators/initializers.d.ts.map +0 -1
  445. package/lib/decorators/initializers.js +0 -27
  446. package/lib/decorators/nodeName.d.ts +0 -9
  447. package/lib/decorators/nodeName.d.ts.map +0 -1
  448. package/lib/decorators/nodeName.js +0 -13
  449. package/lib/decorators/signal.d.ts +0 -183
  450. package/lib/decorators/signal.d.ts.map +0 -1
  451. package/lib/decorators/signal.js +0 -285
  452. package/lib/decorators/spacingSignal.d.ts +0 -2
  453. package/lib/decorators/spacingSignal.d.ts.map +0 -1
  454. package/lib/decorators/spacingSignal.js +0 -15
  455. package/lib/decorators/vector2Signal.d.ts +0 -9
  456. package/lib/decorators/vector2Signal.d.ts.map +0 -1
  457. package/lib/decorators/vector2Signal.js +0 -15
  458. package/lib/index.d.ts +0 -9
  459. package/lib/index.d.ts.map +0 -1
  460. package/lib/index.js +0 -9
  461. package/lib/jsx-dev-runtime.d.ts +0 -3
  462. package/lib/jsx-dev-runtime.d.ts.map +0 -1
  463. package/lib/jsx-dev-runtime.js +0 -3
  464. package/lib/jsx-runtime.d.ts +0 -12
  465. package/lib/jsx-runtime.d.ts.map +0 -1
  466. package/lib/jsx-runtime.js +0 -23
  467. package/lib/partials/Filter.d.ts +0 -82
  468. package/lib/partials/Filter.d.ts.map +0 -1
  469. package/lib/partials/Filter.js +0 -135
  470. package/lib/partials/Gradient.d.ts +0 -31
  471. package/lib/partials/Gradient.d.ts.map +0 -1
  472. package/lib/partials/Gradient.js +0 -63
  473. package/lib/partials/Pattern.d.ts +0 -13
  474. package/lib/partials/Pattern.d.ts.map +0 -1
  475. package/lib/partials/Pattern.js +0 -27
  476. package/lib/partials/ShaderConfig.d.ts +0 -81
  477. package/lib/partials/ShaderConfig.d.ts.map +0 -1
  478. package/lib/partials/ShaderConfig.js +0 -25
  479. package/lib/partials/index.d.ts +0 -5
  480. package/lib/partials/index.d.ts.map +0 -1
  481. package/lib/partials/index.js +0 -5
  482. package/lib/partials/types.d.ts +0 -35
  483. package/lib/partials/types.d.ts.map +0 -1
  484. package/lib/partials/types.js +0 -2
  485. package/lib/scenes/Scene2D.d.ts +0 -29
  486. package/lib/scenes/Scene2D.d.ts.map +0 -1
  487. package/lib/scenes/Scene2D.js +0 -180
  488. package/lib/scenes/index.d.ts +0 -4
  489. package/lib/scenes/index.d.ts.map +0 -1
  490. package/lib/scenes/index.js +0 -4
  491. package/lib/scenes/makeScene2D.d.ts +0 -5
  492. package/lib/scenes/makeScene2D.d.ts.map +0 -1
  493. package/lib/scenes/makeScene2D.js +0 -11
  494. package/lib/scenes/useScene2D.d.ts +0 -3
  495. package/lib/scenes/useScene2D.d.ts.map +0 -1
  496. package/lib/scenes/useScene2D.js +0 -5
  497. package/lib/tsconfig.build.tsbuildinfo +0 -1
  498. package/lib/utils/CanvasUtils.d.ts +0 -23
  499. package/lib/utils/CanvasUtils.d.ts.map +0 -1
  500. package/lib/utils/CanvasUtils.js +0 -138
  501. package/lib/utils/diff.d.ts +0 -31
  502. package/lib/utils/diff.d.ts.map +0 -1
  503. package/lib/utils/diff.js +0 -97
  504. package/lib/utils/index.d.ts +0 -3
  505. package/lib/utils/index.d.ts.map +0 -1
  506. package/lib/utils/index.js +0 -3
  507. package/lib/utils/is.d.ts +0 -8
  508. package/lib/utils/is.d.ts.map +0 -1
  509. package/lib/utils/is.js +0 -10
  510. package/lib/utils/makeSignalExtensions.d.ts +0 -4
  511. package/lib/utils/makeSignalExtensions.d.ts.map +0 -1
  512. package/lib/utils/makeSignalExtensions.js +0 -20
  513. package/lib/utils/video/ffmpeg-client.d.ts +0 -5
  514. package/lib/utils/video/ffmpeg-client.d.ts.map +0 -1
  515. package/lib/utils/video/ffmpeg-client.js +0 -32
  516. package/lib/utils/video/mp4-parser-manager.d.ts +0 -3
  517. package/lib/utils/video/mp4-parser-manager.d.ts.map +0 -1
  518. package/lib/utils/video/mp4-parser-manager.js +0 -55
  519. package/lib/utils/video/parser/index.d.ts +0 -2
  520. package/lib/utils/video/parser/index.d.ts.map +0 -1
  521. package/lib/utils/video/parser/index.js +0 -2
  522. package/lib/utils/video/parser/parser.d.ts +0 -21
  523. package/lib/utils/video/parser/parser.d.ts.map +0 -1
  524. package/lib/utils/video/parser/parser.js +0 -168
  525. package/lib/utils/video/parser/sampler.d.ts +0 -16
  526. package/lib/utils/video/parser/sampler.d.ts.map +0 -1
  527. package/lib/utils/video/parser/sampler.js +0 -56
  528. package/lib/utils/video/parser/segment.d.ts +0 -48
  529. package/lib/utils/video/parser/segment.d.ts.map +0 -1
  530. package/lib/utils/video/parser/segment.js +0 -239
  531. package/lib/utils/video/parser/sink.d.ts +0 -9
  532. package/lib/utils/video/parser/sink.d.ts.map +0 -1
  533. package/lib/utils/video/parser/sink.js +0 -22
  534. package/lib/utils/video/parser/utils.d.ts +0 -10
  535. package/lib/utils/video/parser/utils.d.ts.map +0 -1
  536. package/lib/utils/video/parser/utils.js +0 -22
@@ -1,327 +1,327 @@
1
- import type {
2
- Signal,
3
- SignalValue,
4
- ThreadGenerator,
5
- TimingFunction,
6
- } from '@twick/core';
7
- import {
8
- createSignal,
9
- deepLerp,
10
- DependencyContext,
11
- SignalContext,
12
- unwrap,
13
- } from '@twick/core';
14
- import {addInitializer, getPropertyMetaOrCreate} from '../decorators';
15
- import {defaultDiffer} from './CodeDiffer';
16
- import {insert, replace} from './CodeFragment';
17
- import type {CodeHighlighter} from './CodeHighlighter';
18
- import type {CodePoint, CodeRange} from './CodeRange';
19
- import type {CodeScope, CodeTag, PossibleCodeScope} from './CodeScope';
20
- import {CODE, parseCodeScope, resolveCodeTag} from './CodeScope';
21
- import {defaultTokenize} from './CodeTokenizer';
22
- import {extractRange} from './extractRange';
23
-
24
- interface CodeModifier<TOwner> {
25
- (code: string): TOwner;
26
- (code: string, duration: number): ThreadGenerator;
27
- (duration?: number): TagGenerator;
28
- }
29
-
30
- interface CodeInsert<TOwner> {
31
- (point: CodePoint, code: string): TOwner;
32
- (point: CodePoint, code: string, duration: number): ThreadGenerator;
33
- }
34
-
35
- interface CodeRemove<TOwner> {
36
- (range: CodeRange): TOwner;
37
- (range: CodeRange, duration: number): ThreadGenerator;
38
- }
39
-
40
- interface CodeReplace<TOwner> {
41
- (range: CodeRange, code: string): TOwner;
42
- (range: CodeRange, code: string, duration: number): ThreadGenerator;
43
- }
44
-
45
- type TagGenerator = (
46
- strings: TemplateStringsArray,
47
- ...tags: CodeTag[]
48
- ) => ThreadGenerator;
49
-
50
- export interface CodeSignalHelpers<TOwner> {
51
- edit(duration?: number): TagGenerator;
52
- append: CodeModifier<TOwner>;
53
- prepend: CodeModifier<TOwner>;
54
- insert: CodeInsert<TOwner>;
55
- remove: CodeRemove<TOwner>;
56
- replace: CodeReplace<TOwner>;
57
- }
58
-
59
- export type CodeSignal<TOwner> = Signal<
60
- PossibleCodeScope,
61
- CodeScope,
62
- TOwner,
63
- CodeSignalContext<TOwner>
64
- > &
65
- CodeSignalHelpers<TOwner>;
66
-
67
- export class CodeSignalContext<TOwner>
68
- extends SignalContext<PossibleCodeScope, CodeScope, TOwner>
69
- implements CodeSignalHelpers<TOwner>
70
- {
71
- private readonly progress = createSignal(0);
72
-
73
- public constructor(
74
- initial: PossibleCodeScope,
75
- owner: TOwner,
76
- private readonly highlighter?: SignalValue<CodeHighlighter | null>,
77
- ) {
78
- super(initial, deepLerp, owner);
79
- Object.defineProperty(this.invokable, 'edit', {
80
- value: this.edit.bind(this),
81
- });
82
- Object.defineProperty(this.invokable, 'append', {
83
- value: this.append.bind(this),
84
- });
85
- Object.defineProperty(this.invokable, 'prepend', {
86
- value: this.prepend.bind(this),
87
- });
88
- Object.defineProperty(this.invokable, 'insert', {
89
- value: this.insert.bind(this),
90
- });
91
- Object.defineProperty(this.invokable, 'remove', {
92
- value: this.remove.bind(this),
93
- });
94
- Object.defineProperty(this.invokable, 'replace', {
95
- value: this.replace.bind(this),
96
- });
97
- }
98
-
99
- public override *tweener(
100
- value: SignalValue<PossibleCodeScope>,
101
- duration: number,
102
- timingFunction: TimingFunction,
103
- ): ThreadGenerator {
104
- let tokenize = defaultTokenize;
105
- const highlighter = unwrap(this.highlighter);
106
- if (highlighter) {
107
- yield (async () => {
108
- do {
109
- await DependencyContext.consumePromises();
110
- highlighter.initialize();
111
- } while (DependencyContext.hasPromises());
112
- })();
113
- tokenize = (input: string) => highlighter.tokenize(input);
114
- }
115
-
116
- this.progress(0);
117
- this.set({
118
- progress: this.progress,
119
- fragments: defaultDiffer(this.get(), this.parse(unwrap(value)), tokenize),
120
- });
121
- yield* this.progress(1, duration, timingFunction);
122
- this.set(value);
123
- }
124
-
125
- public edit(duration: number = 0.6): TagGenerator {
126
- return (strings, ...tags) =>
127
- this.editTween(CODE(strings, ...tags), duration);
128
- }
129
-
130
- public append(code: string): TOwner;
131
- public append(code: string, duration: number): ThreadGenerator;
132
- public append(duration?: number): TagGenerator;
133
- public append(
134
- first: string | number = 0.6,
135
- duration?: number,
136
- ): TOwner | ThreadGenerator | TagGenerator {
137
- if (typeof first === 'string') {
138
- if (duration === undefined) {
139
- const current = this.get();
140
- return this.set({
141
- progress: 0,
142
- fragments: [...current.fragments, first],
143
- });
144
- } else {
145
- return this.appendTween(first, duration);
146
- }
147
- }
148
-
149
- const savedDuration = first;
150
- return (strings, ...tags) =>
151
- this.append(resolveCodeTag(CODE(strings, ...tags), true), savedDuration);
152
- }
153
-
154
- public prepend(code: string): TOwner;
155
- public prepend(code: string, duration: number): ThreadGenerator;
156
- public prepend(duration?: number): TagGenerator;
157
- public prepend(
158
- first: string | number = 0.6,
159
- duration?: number,
160
- ): TOwner | ThreadGenerator | TagGenerator {
161
- if (typeof first === 'string') {
162
- if (duration === undefined) {
163
- const current = this.get();
164
- return this.set({
165
- progress: 0,
166
- fragments: [first, ...current.fragments],
167
- });
168
- } else {
169
- return this.prependTween(first, duration);
170
- }
171
- }
172
-
173
- const savedDuration = first;
174
- return (strings, ...tags) =>
175
- this.prepend(resolveCodeTag(CODE(strings, ...tags), true), savedDuration);
176
- }
177
-
178
- public insert(point: CodePoint, code: string): TOwner;
179
- public insert(
180
- point: CodePoint,
181
- code: string,
182
- duration: number,
183
- ): ThreadGenerator;
184
- public insert(
185
- point: CodePoint,
186
- code: string,
187
- duration?: number,
188
- ): TOwner | ThreadGenerator {
189
- return this.replace([point, point], code, duration!);
190
- }
191
-
192
- public remove(range: CodeRange): TOwner;
193
- public remove(range: CodeRange, duration: number): ThreadGenerator;
194
- public remove(range: CodeRange, duration?: number): TOwner | ThreadGenerator {
195
- return this.replace(range, '', duration!);
196
- }
197
-
198
- public replace(range: CodeRange, code: string): TOwner;
199
- public replace(
200
- range: CodeRange,
201
- code: string,
202
- duration: number,
203
- ): ThreadGenerator;
204
- public replace(
205
- range: CodeRange,
206
- code: string,
207
- duration?: number,
208
- ): TOwner | ThreadGenerator {
209
- if (duration === undefined) {
210
- const current = this.get();
211
- const [fragments, index] = extractRange(range, current.fragments);
212
- fragments[index] = code;
213
- return this.set({
214
- progress: current.progress,
215
- fragments,
216
- });
217
- } else {
218
- return this.replaceTween(range, code, duration);
219
- }
220
- }
221
-
222
- private *replaceTween(range: CodeRange, code: string, duration: number) {
223
- let current = this.get();
224
- const [fragments, index] = extractRange(range, current.fragments);
225
- const progress = createSignal(0);
226
- const scope = {
227
- progress,
228
- fragments: [replace(fragments[index] as string, code)],
229
- };
230
- fragments[index] = scope;
231
- this.set({
232
- progress: current.progress,
233
- fragments,
234
- });
235
-
236
- yield* progress(1, duration);
237
-
238
- current = this.get();
239
- this.set({
240
- progress: current.progress,
241
- fragments: current.fragments.map(fragment =>
242
- fragment === scope ? code : fragment,
243
- ),
244
- });
245
- progress.context.dispose();
246
- }
247
-
248
- private *editTween(value: CodeTag[], duration: number) {
249
- this.progress(0);
250
- this.set({
251
- progress: this.progress,
252
- fragments: value,
253
- });
254
- yield* this.progress(1, duration);
255
- const current = this.get();
256
- this.set({
257
- progress: 0,
258
- fragments: current.fragments.map(fragment =>
259
- value.includes(fragment) ? resolveCodeTag(fragment, true) : fragment,
260
- ),
261
- });
262
- }
263
-
264
- private *appendTween(value: string, duration: number) {
265
- let current = this.get();
266
- const progress = createSignal(0);
267
- const scope = {
268
- progress,
269
- fragments: [insert(value)],
270
- };
271
- this.set({
272
- progress: current.progress,
273
- fragments: [...current.fragments, scope],
274
- });
275
- yield* progress(1, duration);
276
- current = this.get();
277
- this.set({
278
- progress: current.progress,
279
- fragments: current.fragments.map(fragment =>
280
- fragment === scope ? value : fragment,
281
- ),
282
- });
283
- progress.context.dispose();
284
- }
285
-
286
- private *prependTween(value: string, duration: number) {
287
- let current = this.get();
288
- const progress = createSignal(0);
289
- const scope = {
290
- progress,
291
- fragments: [insert(value)],
292
- };
293
- this.set({
294
- progress: current.progress,
295
- fragments: [scope, ...current.fragments],
296
- });
297
- yield* progress(1, duration);
298
- current = this.get();
299
- this.set({
300
- progress: current.progress,
301
- fragments: current.fragments.map(fragment =>
302
- fragment === scope ? value : fragment,
303
- ),
304
- });
305
- progress.context.dispose();
306
- }
307
-
308
- public override parse(value: PossibleCodeScope): CodeScope {
309
- return parseCodeScope(value);
310
- }
311
-
312
- public override toSignal(): CodeSignal<TOwner> {
313
- return this.invokable;
314
- }
315
- }
316
-
317
- export function codeSignal(): PropertyDecorator {
318
- return (target: any, key) => {
319
- const meta = getPropertyMetaOrCreate<PossibleCodeScope>(target, key);
320
- addInitializer(target, (instance: any) => {
321
- instance[key] = new CodeSignalContext(
322
- meta.default ?? [],
323
- instance,
324
- ).toSignal();
325
- });
326
- };
327
- }
1
+ import type {
2
+ Signal,
3
+ SignalValue,
4
+ ThreadGenerator,
5
+ TimingFunction,
6
+ } from '@twick/core';
7
+ import {
8
+ createSignal,
9
+ deepLerp,
10
+ DependencyContext,
11
+ SignalContext,
12
+ unwrap,
13
+ } from '@twick/core';
14
+ import {addInitializer, getPropertyMetaOrCreate} from '../decorators';
15
+ import {defaultDiffer} from './CodeDiffer';
16
+ import {insert, replace} from './CodeFragment';
17
+ import type {CodeHighlighter} from './CodeHighlighter';
18
+ import type {CodePoint, CodeRange} from './CodeRange';
19
+ import type {CodeScope, CodeTag, PossibleCodeScope} from './CodeScope';
20
+ import {CODE, parseCodeScope, resolveCodeTag} from './CodeScope';
21
+ import {defaultTokenize} from './CodeTokenizer';
22
+ import {extractRange} from './extractRange';
23
+
24
+ interface CodeModifier<TOwner> {
25
+ (code: string): TOwner;
26
+ (code: string, duration: number): ThreadGenerator;
27
+ (duration?: number): TagGenerator;
28
+ }
29
+
30
+ interface CodeInsert<TOwner> {
31
+ (point: CodePoint, code: string): TOwner;
32
+ (point: CodePoint, code: string, duration: number): ThreadGenerator;
33
+ }
34
+
35
+ interface CodeRemove<TOwner> {
36
+ (range: CodeRange): TOwner;
37
+ (range: CodeRange, duration: number): ThreadGenerator;
38
+ }
39
+
40
+ interface CodeReplace<TOwner> {
41
+ (range: CodeRange, code: string): TOwner;
42
+ (range: CodeRange, code: string, duration: number): ThreadGenerator;
43
+ }
44
+
45
+ type TagGenerator = (
46
+ strings: TemplateStringsArray,
47
+ ...tags: CodeTag[]
48
+ ) => ThreadGenerator;
49
+
50
+ export interface CodeSignalHelpers<TOwner> {
51
+ edit(duration?: number): TagGenerator;
52
+ append: CodeModifier<TOwner>;
53
+ prepend: CodeModifier<TOwner>;
54
+ insert: CodeInsert<TOwner>;
55
+ remove: CodeRemove<TOwner>;
56
+ replace: CodeReplace<TOwner>;
57
+ }
58
+
59
+ export type CodeSignal<TOwner> = Signal<
60
+ PossibleCodeScope,
61
+ CodeScope,
62
+ TOwner,
63
+ CodeSignalContext<TOwner>
64
+ > &
65
+ CodeSignalHelpers<TOwner>;
66
+
67
+ export class CodeSignalContext<TOwner>
68
+ extends SignalContext<PossibleCodeScope, CodeScope, TOwner>
69
+ implements CodeSignalHelpers<TOwner>
70
+ {
71
+ private readonly progress = createSignal(0);
72
+
73
+ public constructor(
74
+ initial: PossibleCodeScope,
75
+ owner: TOwner,
76
+ private readonly highlighter?: SignalValue<CodeHighlighter | null>,
77
+ ) {
78
+ super(initial, deepLerp, owner);
79
+ Object.defineProperty(this.invokable, 'edit', {
80
+ value: this.edit.bind(this),
81
+ });
82
+ Object.defineProperty(this.invokable, 'append', {
83
+ value: this.append.bind(this),
84
+ });
85
+ Object.defineProperty(this.invokable, 'prepend', {
86
+ value: this.prepend.bind(this),
87
+ });
88
+ Object.defineProperty(this.invokable, 'insert', {
89
+ value: this.insert.bind(this),
90
+ });
91
+ Object.defineProperty(this.invokable, 'remove', {
92
+ value: this.remove.bind(this),
93
+ });
94
+ Object.defineProperty(this.invokable, 'replace', {
95
+ value: this.replace.bind(this),
96
+ });
97
+ }
98
+
99
+ public override *tweener(
100
+ value: SignalValue<PossibleCodeScope>,
101
+ duration: number,
102
+ timingFunction: TimingFunction,
103
+ ): ThreadGenerator {
104
+ let tokenize = defaultTokenize;
105
+ const highlighter = unwrap(this.highlighter);
106
+ if (highlighter) {
107
+ yield (async () => {
108
+ do {
109
+ await DependencyContext.consumePromises();
110
+ highlighter.initialize();
111
+ } while (DependencyContext.hasPromises());
112
+ })();
113
+ tokenize = (input: string) => highlighter.tokenize(input);
114
+ }
115
+
116
+ this.progress(0);
117
+ this.set({
118
+ progress: this.progress,
119
+ fragments: defaultDiffer(this.get(), this.parse(unwrap(value)), tokenize),
120
+ });
121
+ yield* this.progress(1, duration, timingFunction);
122
+ this.set(value);
123
+ }
124
+
125
+ public edit(duration: number = 0.6): TagGenerator {
126
+ return (strings, ...tags) =>
127
+ this.editTween(CODE(strings, ...tags), duration);
128
+ }
129
+
130
+ public append(code: string): TOwner;
131
+ public append(code: string, duration: number): ThreadGenerator;
132
+ public append(duration?: number): TagGenerator;
133
+ public append(
134
+ first: string | number = 0.6,
135
+ duration?: number,
136
+ ): TOwner | ThreadGenerator | TagGenerator {
137
+ if (typeof first === 'string') {
138
+ if (duration === undefined) {
139
+ const current = this.get();
140
+ return this.set({
141
+ progress: 0,
142
+ fragments: [...current.fragments, first],
143
+ });
144
+ } else {
145
+ return this.appendTween(first, duration);
146
+ }
147
+ }
148
+
149
+ const savedDuration = first;
150
+ return (strings, ...tags) =>
151
+ this.append(resolveCodeTag(CODE(strings, ...tags), true), savedDuration);
152
+ }
153
+
154
+ public prepend(code: string): TOwner;
155
+ public prepend(code: string, duration: number): ThreadGenerator;
156
+ public prepend(duration?: number): TagGenerator;
157
+ public prepend(
158
+ first: string | number = 0.6,
159
+ duration?: number,
160
+ ): TOwner | ThreadGenerator | TagGenerator {
161
+ if (typeof first === 'string') {
162
+ if (duration === undefined) {
163
+ const current = this.get();
164
+ return this.set({
165
+ progress: 0,
166
+ fragments: [first, ...current.fragments],
167
+ });
168
+ } else {
169
+ return this.prependTween(first, duration);
170
+ }
171
+ }
172
+
173
+ const savedDuration = first;
174
+ return (strings, ...tags) =>
175
+ this.prepend(resolveCodeTag(CODE(strings, ...tags), true), savedDuration);
176
+ }
177
+
178
+ public insert(point: CodePoint, code: string): TOwner;
179
+ public insert(
180
+ point: CodePoint,
181
+ code: string,
182
+ duration: number,
183
+ ): ThreadGenerator;
184
+ public insert(
185
+ point: CodePoint,
186
+ code: string,
187
+ duration?: number,
188
+ ): TOwner | ThreadGenerator {
189
+ return this.replace([point, point], code, duration!);
190
+ }
191
+
192
+ public remove(range: CodeRange): TOwner;
193
+ public remove(range: CodeRange, duration: number): ThreadGenerator;
194
+ public remove(range: CodeRange, duration?: number): TOwner | ThreadGenerator {
195
+ return this.replace(range, '', duration!);
196
+ }
197
+
198
+ public replace(range: CodeRange, code: string): TOwner;
199
+ public replace(
200
+ range: CodeRange,
201
+ code: string,
202
+ duration: number,
203
+ ): ThreadGenerator;
204
+ public replace(
205
+ range: CodeRange,
206
+ code: string,
207
+ duration?: number,
208
+ ): TOwner | ThreadGenerator {
209
+ if (duration === undefined) {
210
+ const current = this.get();
211
+ const [fragments, index] = extractRange(range, current.fragments);
212
+ fragments[index] = code;
213
+ return this.set({
214
+ progress: current.progress,
215
+ fragments,
216
+ });
217
+ } else {
218
+ return this.replaceTween(range, code, duration);
219
+ }
220
+ }
221
+
222
+ private *replaceTween(range: CodeRange, code: string, duration: number) {
223
+ let current = this.get();
224
+ const [fragments, index] = extractRange(range, current.fragments);
225
+ const progress = createSignal(0);
226
+ const scope = {
227
+ progress,
228
+ fragments: [replace(fragments[index] as string, code)],
229
+ };
230
+ fragments[index] = scope;
231
+ this.set({
232
+ progress: current.progress,
233
+ fragments,
234
+ });
235
+
236
+ yield* progress(1, duration);
237
+
238
+ current = this.get();
239
+ this.set({
240
+ progress: current.progress,
241
+ fragments: current.fragments.map(fragment =>
242
+ fragment === scope ? code : fragment,
243
+ ),
244
+ });
245
+ progress.context.dispose();
246
+ }
247
+
248
+ private *editTween(value: CodeTag[], duration: number) {
249
+ this.progress(0);
250
+ this.set({
251
+ progress: this.progress,
252
+ fragments: value,
253
+ });
254
+ yield* this.progress(1, duration);
255
+ const current = this.get();
256
+ this.set({
257
+ progress: 0,
258
+ fragments: current.fragments.map(fragment =>
259
+ value.includes(fragment) ? resolveCodeTag(fragment, true) : fragment,
260
+ ),
261
+ });
262
+ }
263
+
264
+ private *appendTween(value: string, duration: number) {
265
+ let current = this.get();
266
+ const progress = createSignal(0);
267
+ const scope = {
268
+ progress,
269
+ fragments: [insert(value)],
270
+ };
271
+ this.set({
272
+ progress: current.progress,
273
+ fragments: [...current.fragments, scope],
274
+ });
275
+ yield* progress(1, duration);
276
+ current = this.get();
277
+ this.set({
278
+ progress: current.progress,
279
+ fragments: current.fragments.map(fragment =>
280
+ fragment === scope ? value : fragment,
281
+ ),
282
+ });
283
+ progress.context.dispose();
284
+ }
285
+
286
+ private *prependTween(value: string, duration: number) {
287
+ let current = this.get();
288
+ const progress = createSignal(0);
289
+ const scope = {
290
+ progress,
291
+ fragments: [insert(value)],
292
+ };
293
+ this.set({
294
+ progress: current.progress,
295
+ fragments: [scope, ...current.fragments],
296
+ });
297
+ yield* progress(1, duration);
298
+ current = this.get();
299
+ this.set({
300
+ progress: current.progress,
301
+ fragments: current.fragments.map(fragment =>
302
+ fragment === scope ? value : fragment,
303
+ ),
304
+ });
305
+ progress.context.dispose();
306
+ }
307
+
308
+ public override parse(value: PossibleCodeScope): CodeScope {
309
+ return parseCodeScope(value);
310
+ }
311
+
312
+ public override toSignal(): CodeSignal<TOwner> {
313
+ return this.invokable;
314
+ }
315
+ }
316
+
317
+ export function codeSignal(): PropertyDecorator {
318
+ return (target: any, key) => {
319
+ const meta = getPropertyMetaOrCreate<PossibleCodeScope>(target, key);
320
+ addInitializer(target, (instance: any) => {
321
+ instance[key] = new CodeSignalContext(
322
+ meta.default ?? [],
323
+ instance,
324
+ ).toSignal();
325
+ });
326
+ };
327
+ }