@twick/core 0.14.21 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) hide show
  1. package/dist/index.cjs +6465 -0
  2. package/dist/index.cjs.map +1 -0
  3. package/dist/index.d.cts +3919 -0
  4. package/dist/index.d.ts +3919 -0
  5. package/dist/index.js +6225 -0
  6. package/dist/index.js.map +1 -0
  7. package/package.json +28 -18
  8. package/tsconfig.project.json +1 -0
  9. package/lib/app/Logger.d.ts +0 -105
  10. package/lib/app/Logger.d.ts.map +0 -1
  11. package/lib/app/Logger.js +0 -77
  12. package/lib/app/PlaybackManager.d.ts +0 -55
  13. package/lib/app/PlaybackManager.d.ts.map +0 -1
  14. package/lib/app/PlaybackManager.js +0 -179
  15. package/lib/app/PlaybackStatus.d.ts +0 -30
  16. package/lib/app/PlaybackStatus.d.ts.map +0 -1
  17. package/lib/app/PlaybackStatus.js +0 -46
  18. package/lib/app/Player.d.ts +0 -130
  19. package/lib/app/Player.d.ts.map +0 -1
  20. package/lib/app/Player.js +0 -375
  21. package/lib/app/Project.d.ts +0 -145
  22. package/lib/app/Project.d.ts.map +0 -1
  23. package/lib/app/Project.js +0 -10
  24. package/lib/app/Renderer.d.ts +0 -90
  25. package/lib/app/Renderer.d.ts.map +0 -1
  26. package/lib/app/Renderer.js +0 -318
  27. package/lib/app/SharedWebGLContext.d.ts +0 -24
  28. package/lib/app/SharedWebGLContext.d.ts.map +0 -1
  29. package/lib/app/SharedWebGLContext.js +0 -200
  30. package/lib/app/Stage.d.ts +0 -30
  31. package/lib/app/Stage.d.ts.map +0 -1
  32. package/lib/app/Stage.js +0 -75
  33. package/lib/app/TimeEstimator.d.ts +0 -53
  34. package/lib/app/TimeEstimator.d.ts.map +0 -1
  35. package/lib/app/TimeEstimator.js +0 -70
  36. package/lib/app/index.d.ts +0 -16
  37. package/lib/app/index.d.ts.map +0 -1
  38. package/lib/app/index.js +0 -16
  39. package/lib/app/makeProject.d.ts +0 -15
  40. package/lib/app/makeProject.d.ts.map +0 -1
  41. package/lib/app/makeProject.js +0 -72
  42. package/lib/app/project-settings.d.ts +0 -8
  43. package/lib/app/project-settings.d.ts.map +0 -1
  44. package/lib/app/project-settings.js +0 -13
  45. package/lib/decorators/decorate.d.ts +0 -2
  46. package/lib/decorators/decorate.d.ts.map +0 -1
  47. package/lib/decorators/decorate.js +0 -10
  48. package/lib/decorators/deprecated.d.ts +0 -5
  49. package/lib/decorators/deprecated.d.ts.map +0 -1
  50. package/lib/decorators/deprecated.js +0 -23
  51. package/lib/decorators/index.d.ts +0 -9
  52. package/lib/decorators/index.d.ts.map +0 -1
  53. package/lib/decorators/index.js +0 -9
  54. package/lib/decorators/lazy.d.ts +0 -14
  55. package/lib/decorators/lazy.d.ts.map +0 -1
  56. package/lib/decorators/lazy.js +0 -27
  57. package/lib/decorators/threadable.d.ts +0 -2
  58. package/lib/decorators/threadable.d.ts.map +0 -1
  59. package/lib/decorators/threadable.js +0 -9
  60. package/lib/events/AsyncEventDispatcher.d.ts +0 -45
  61. package/lib/events/AsyncEventDispatcher.d.ts.map +0 -1
  62. package/lib/events/AsyncEventDispatcher.js +0 -33
  63. package/lib/events/EventDispatcher.d.ts +0 -38
  64. package/lib/events/EventDispatcher.d.ts.map +0 -1
  65. package/lib/events/EventDispatcher.js +0 -29
  66. package/lib/events/EventDispatcherBase.d.ts +0 -55
  67. package/lib/events/EventDispatcherBase.d.ts.map +0 -1
  68. package/lib/events/EventDispatcherBase.js +0 -68
  69. package/lib/events/FlagDispatcher.d.ts +0 -54
  70. package/lib/events/FlagDispatcher.d.ts.map +0 -1
  71. package/lib/events/FlagDispatcher.js +0 -63
  72. package/lib/events/ValueDispatcher.d.ts +0 -81
  73. package/lib/events/ValueDispatcher.d.ts.map +0 -1
  74. package/lib/events/ValueDispatcher.js +0 -97
  75. package/lib/events/index.d.ts +0 -11
  76. package/lib/events/index.d.ts.map +0 -1
  77. package/lib/events/index.js +0 -11
  78. package/lib/exporter/Exporter.d.ts +0 -101
  79. package/lib/exporter/Exporter.d.ts.map +0 -1
  80. package/lib/exporter/Exporter.js +0 -2
  81. package/lib/exporter/FFmpegExporter.d.ts +0 -50
  82. package/lib/exporter/FFmpegExporter.d.ts.map +0 -1
  83. package/lib/exporter/FFmpegExporter.js +0 -140
  84. package/lib/exporter/ImageExporter.d.ts +0 -34
  85. package/lib/exporter/ImageExporter.d.ts.map +0 -1
  86. package/lib/exporter/ImageExporter.js +0 -80
  87. package/lib/exporter/WasmExporter.d.ts +0 -19
  88. package/lib/exporter/WasmExporter.d.ts.map +0 -1
  89. package/lib/exporter/WasmExporter.js +0 -78
  90. package/lib/exporter/download-videos.d.ts +0 -3
  91. package/lib/exporter/download-videos.d.ts.map +0 -1
  92. package/lib/exporter/download-videos.js +0 -45
  93. package/lib/exporter/index.d.ts +0 -5
  94. package/lib/exporter/index.d.ts.map +0 -1
  95. package/lib/exporter/index.js +0 -5
  96. package/lib/flow/all.d.ts +0 -18
  97. package/lib/flow/all.d.ts.map +0 -1
  98. package/lib/flow/all.js +0 -25
  99. package/lib/flow/any.d.ts +0 -18
  100. package/lib/flow/any.d.ts.map +0 -1
  101. package/lib/flow/any.js +0 -25
  102. package/lib/flow/chain.d.ts +0 -36
  103. package/lib/flow/chain.d.ts.map +0 -1
  104. package/lib/flow/chain.js +0 -46
  105. package/lib/flow/delay.d.ts +0 -29
  106. package/lib/flow/delay.d.ts.map +0 -1
  107. package/lib/flow/delay.js +0 -39
  108. package/lib/flow/every.d.ts +0 -41
  109. package/lib/flow/every.d.ts.map +0 -1
  110. package/lib/flow/every.js +0 -61
  111. package/lib/flow/index.d.ts +0 -17
  112. package/lib/flow/index.d.ts.map +0 -1
  113. package/lib/flow/index.js +0 -17
  114. package/lib/flow/join.d.ts +0 -35
  115. package/lib/flow/join.d.ts.map +0 -1
  116. package/lib/flow/join.js +0 -33
  117. package/lib/flow/loop.d.ts +0 -58
  118. package/lib/flow/loop.d.ts.map +0 -1
  119. package/lib/flow/loop.js +0 -51
  120. package/lib/flow/loopFor.d.ts +0 -25
  121. package/lib/flow/loopFor.d.ts.map +0 -1
  122. package/lib/flow/loopFor.js +0 -42
  123. package/lib/flow/names.d.ts +0 -3
  124. package/lib/flow/names.d.ts.map +0 -1
  125. package/lib/flow/names.js +0 -11
  126. package/lib/flow/run.d.ts +0 -45
  127. package/lib/flow/run.d.ts.map +0 -1
  128. package/lib/flow/run.js +0 -14
  129. package/lib/flow/scheduling.d.ts +0 -18
  130. package/lib/flow/scheduling.d.ts.map +0 -1
  131. package/lib/flow/scheduling.js +0 -33
  132. package/lib/flow/sequence.d.ts +0 -22
  133. package/lib/flow/sequence.d.ts.map +0 -1
  134. package/lib/flow/sequence.js +0 -31
  135. package/lib/index.d.ts +0 -16
  136. package/lib/index.d.ts.map +0 -1
  137. package/lib/index.js +0 -16
  138. package/lib/media/index.d.ts +0 -7
  139. package/lib/media/index.d.ts.map +0 -1
  140. package/lib/media/index.js +0 -7
  141. package/lib/media/loadImage.d.ts +0 -8
  142. package/lib/media/loadImage.d.ts.map +0 -1
  143. package/lib/media/loadImage.js +0 -29
  144. package/lib/plugin/DefaultPlugin.d.ts +0 -10
  145. package/lib/plugin/DefaultPlugin.d.ts.map +0 -1
  146. package/lib/plugin/DefaultPlugin.js +0 -17
  147. package/lib/plugin/Plugin.d.ts +0 -53
  148. package/lib/plugin/Plugin.d.ts.map +0 -1
  149. package/lib/plugin/Plugin.js +0 -2
  150. package/lib/plugin/index.d.ts +0 -3
  151. package/lib/plugin/index.d.ts.map +0 -1
  152. package/lib/plugin/index.js +0 -3
  153. package/lib/plugin/makePlugin.d.ts +0 -15
  154. package/lib/plugin/makePlugin.d.ts.map +0 -1
  155. package/lib/plugin/makePlugin.js +0 -16
  156. package/lib/scenes/GeneratorScene.d.ts +0 -95
  157. package/lib/scenes/GeneratorScene.d.ts.map +0 -1
  158. package/lib/scenes/GeneratorScene.js +0 -273
  159. package/lib/scenes/Inspectable.d.ts +0 -71
  160. package/lib/scenes/Inspectable.d.ts.map +0 -1
  161. package/lib/scenes/Inspectable.js +0 -4
  162. package/lib/scenes/LifecycleEvents.d.ts +0 -18
  163. package/lib/scenes/LifecycleEvents.d.ts.map +0 -1
  164. package/lib/scenes/LifecycleEvents.js +0 -45
  165. package/lib/scenes/Random.d.ts +0 -66
  166. package/lib/scenes/Random.d.ts.map +0 -1
  167. package/lib/scenes/Random.js +0 -101
  168. package/lib/scenes/Scene.d.ts +0 -298
  169. package/lib/scenes/Scene.d.ts.map +0 -1
  170. package/lib/scenes/Scene.js +0 -25
  171. package/lib/scenes/SceneState.d.ts +0 -34
  172. package/lib/scenes/SceneState.d.ts.map +0 -1
  173. package/lib/scenes/SceneState.js +0 -35
  174. package/lib/scenes/Shaders.d.ts +0 -63
  175. package/lib/scenes/Shaders.d.ts.map +0 -1
  176. package/lib/scenes/Shaders.js +0 -158
  177. package/lib/scenes/Slides.d.ts +0 -33
  178. package/lib/scenes/Slides.d.ts.map +0 -1
  179. package/lib/scenes/Slides.js +0 -115
  180. package/lib/scenes/Threadable.d.ts +0 -19
  181. package/lib/scenes/Threadable.d.ts.map +0 -1
  182. package/lib/scenes/Threadable.js +0 -4
  183. package/lib/scenes/Variables.d.ts +0 -24
  184. package/lib/scenes/Variables.d.ts.map +0 -1
  185. package/lib/scenes/Variables.js +0 -39
  186. package/lib/scenes/index.d.ts +0 -16
  187. package/lib/scenes/index.d.ts.map +0 -1
  188. package/lib/scenes/index.js +0 -16
  189. package/lib/signals/CompoundSignalContext.d.ts +0 -21
  190. package/lib/signals/CompoundSignalContext.d.ts.map +0 -1
  191. package/lib/signals/CompoundSignalContext.js +0 -73
  192. package/lib/signals/ComputedContext.d.ts +0 -14
  193. package/lib/signals/ComputedContext.d.ts.map +0 -1
  194. package/lib/signals/ComputedContext.js +0 -36
  195. package/lib/signals/DependencyContext.d.ts +0 -32
  196. package/lib/signals/DependencyContext.d.ts.map +0 -1
  197. package/lib/signals/DependencyContext.js +0 -87
  198. package/lib/signals/SignalContext.d.ts +0 -120
  199. package/lib/signals/SignalContext.d.ts.map +0 -1
  200. package/lib/signals/SignalContext.js +0 -245
  201. package/lib/signals/createComputed.d.ts +0 -3
  202. package/lib/signals/createComputed.d.ts.map +0 -1
  203. package/lib/signals/createComputed.js +0 -5
  204. package/lib/signals/createComputedAsync.d.ts +0 -4
  205. package/lib/signals/createComputedAsync.d.ts.map +0 -1
  206. package/lib/signals/createComputedAsync.js +0 -15
  207. package/lib/signals/createSignal.d.ts +0 -5
  208. package/lib/signals/createSignal.d.ts.map +0 -1
  209. package/lib/signals/createSignal.js +0 -6
  210. package/lib/signals/index.d.ts +0 -16
  211. package/lib/signals/index.d.ts.map +0 -1
  212. package/lib/signals/index.js +0 -16
  213. package/lib/signals/symbols.d.ts +0 -2
  214. package/lib/signals/symbols.d.ts.map +0 -1
  215. package/lib/signals/symbols.js +0 -2
  216. package/lib/signals/types.d.ts +0 -51
  217. package/lib/signals/types.d.ts.map +0 -1
  218. package/lib/signals/types.js +0 -2
  219. package/lib/signals/utils.d.ts +0 -5
  220. package/lib/signals/utils.d.ts.map +0 -1
  221. package/lib/signals/utils.js +0 -10
  222. package/lib/threading/Thread.d.ts +0 -77
  223. package/lib/threading/Thread.d.ts.map +0 -1
  224. package/lib/threading/Thread.js +0 -169
  225. package/lib/threading/ThreadGenerator.d.ts +0 -39
  226. package/lib/threading/ThreadGenerator.d.ts.map +0 -1
  227. package/lib/threading/ThreadGenerator.js +0 -17
  228. package/lib/threading/cancel.d.ts +0 -17
  229. package/lib/threading/cancel.d.ts.map +0 -1
  230. package/lib/threading/cancel.js +0 -26
  231. package/lib/threading/index.d.ts +0 -11
  232. package/lib/threading/index.d.ts.map +0 -1
  233. package/lib/threading/index.js +0 -11
  234. package/lib/threading/spawn.d.ts +0 -28
  235. package/lib/threading/spawn.d.ts.map +0 -1
  236. package/lib/threading/spawn.js +0 -30
  237. package/lib/threading/threads.d.ts +0 -46
  238. package/lib/threading/threads.d.ts.map +0 -1
  239. package/lib/threading/threads.js +0 -89
  240. package/lib/transitions/fadeTransition.d.ts +0 -8
  241. package/lib/transitions/fadeTransition.d.ts.map +0 -1
  242. package/lib/transitions/fadeTransition.js +0 -16
  243. package/lib/transitions/index.d.ts +0 -11
  244. package/lib/transitions/index.d.ts.map +0 -1
  245. package/lib/transitions/index.js +0 -11
  246. package/lib/transitions/slideTransition.d.ts +0 -18
  247. package/lib/transitions/slideTransition.d.ts.map +0 -1
  248. package/lib/transitions/slideTransition.js +0 -14
  249. package/lib/transitions/useTransition.d.ts +0 -10
  250. package/lib/transitions/useTransition.d.ts.map +0 -1
  251. package/lib/transitions/useTransition.js +0 -27
  252. package/lib/transitions/zoomInTransition.d.ts +0 -10
  253. package/lib/transitions/zoomInTransition.d.ts.map +0 -1
  254. package/lib/transitions/zoomInTransition.js +0 -33
  255. package/lib/transitions/zoomOutTransition.d.ts +0 -10
  256. package/lib/transitions/zoomOutTransition.d.ts.map +0 -1
  257. package/lib/transitions/zoomOutTransition.js +0 -33
  258. package/lib/tsconfig.build.tsbuildinfo +0 -1
  259. package/lib/tweening/helpers.d.ts +0 -5
  260. package/lib/tweening/helpers.d.ts.map +0 -1
  261. package/lib/tweening/helpers.js +0 -16
  262. package/lib/tweening/index.d.ts +0 -11
  263. package/lib/tweening/index.d.ts.map +0 -1
  264. package/lib/tweening/index.js +0 -11
  265. package/lib/tweening/interpolationFunctions.d.ts +0 -38
  266. package/lib/tweening/interpolationFunctions.d.ts.map +0 -1
  267. package/lib/tweening/interpolationFunctions.js +0 -107
  268. package/lib/tweening/spring.d.ts +0 -20
  269. package/lib/tweening/spring.d.ts.map +0 -1
  270. package/lib/tweening/spring.js +0 -103
  271. package/lib/tweening/timingFunctions.d.ts +0 -46
  272. package/lib/tweening/timingFunctions.d.ts.map +0 -1
  273. package/lib/tweening/timingFunctions.js +0 -233
  274. package/lib/tweening/tween.d.ts +0 -3
  275. package/lib/tweening/tween.d.ts.map +0 -1
  276. package/lib/tweening/tween.js +0 -21
  277. package/lib/types/BBox.d.ts +0 -73
  278. package/lib/types/BBox.d.ts.map +0 -1
  279. package/lib/types/BBox.js +0 -249
  280. package/lib/types/Canvas.d.ts +0 -3
  281. package/lib/types/Canvas.d.ts.map +0 -1
  282. package/lib/types/Canvas.js +0 -2
  283. package/lib/types/Color.d.ts +0 -65
  284. package/lib/types/Color.d.ts.map +0 -1
  285. package/lib/types/Color.js +0 -185
  286. package/lib/types/Matrix.d.ts +0 -3
  287. package/lib/types/Matrix.d.ts.map +0 -1
  288. package/lib/types/Matrix.js +0 -10
  289. package/lib/types/Matrix2D.d.ts +0 -363
  290. package/lib/types/Matrix2D.d.ts.map +0 -1
  291. package/lib/types/Matrix2D.js +0 -554
  292. package/lib/types/Origin.d.ts +0 -17
  293. package/lib/types/Origin.d.ts.map +0 -1
  294. package/lib/types/Origin.js +0 -53
  295. package/lib/types/Spacing.d.ts +0 -36
  296. package/lib/types/Spacing.d.ts.map +0 -1
  297. package/lib/types/Spacing.js +0 -70
  298. package/lib/types/Type.d.ts +0 -9
  299. package/lib/types/Type.d.ts.map +0 -1
  300. package/lib/types/Type.js +0 -5
  301. package/lib/types/Vector.d.ts +0 -203
  302. package/lib/types/Vector.d.ts.map +0 -1
  303. package/lib/types/Vector.js +0 -355
  304. package/lib/types/alignment-enums.d.ts +0 -22
  305. package/lib/types/alignment-enums.d.ts.map +0 -1
  306. package/lib/types/alignment-enums.js +0 -25
  307. package/lib/types/index.d.ts +0 -17
  308. package/lib/types/index.d.ts.map +0 -1
  309. package/lib/types/index.js +0 -17
  310. package/lib/types/vector-transformations.d.ts +0 -20
  311. package/lib/types/vector-transformations.d.ts.map +0 -1
  312. package/lib/types/vector-transformations.js +0 -31
  313. package/lib/utils/DetailedError.d.ts +0 -24
  314. package/lib/utils/DetailedError.d.ts.map +0 -1
  315. package/lib/utils/DetailedError.js +0 -16
  316. package/lib/utils/ExperimentalError.d.ts +0 -10
  317. package/lib/utils/ExperimentalError.d.ts.map +0 -1
  318. package/lib/utils/ExperimentalError.js +0 -32
  319. package/lib/utils/Semaphore.d.ts +0 -12
  320. package/lib/utils/Semaphore.d.ts.map +0 -1
  321. package/lib/utils/Semaphore.js +0 -25
  322. package/lib/utils/beginSlide.d.ts +0 -3
  323. package/lib/utils/beginSlide.d.ts.map +0 -1
  324. package/lib/utils/beginSlide.js +0 -12
  325. package/lib/utils/capitalize.d.ts +0 -2
  326. package/lib/utils/capitalize.d.ts.map +0 -1
  327. package/lib/utils/capitalize.js +0 -4
  328. package/lib/utils/createRef.d.ts +0 -15
  329. package/lib/utils/createRef.d.ts.map +0 -1
  330. package/lib/utils/createRef.js +0 -21
  331. package/lib/utils/createRefArray.d.ts +0 -27
  332. package/lib/utils/createRefArray.d.ts.map +0 -1
  333. package/lib/utils/createRefArray.js +0 -49
  334. package/lib/utils/createRefMap.d.ts +0 -50
  335. package/lib/utils/createRefMap.d.ts.map +0 -1
  336. package/lib/utils/createRefMap.js +0 -77
  337. package/lib/utils/debug.d.ts +0 -24
  338. package/lib/utils/debug.d.ts.map +0 -1
  339. package/lib/utils/debug.js +0 -47
  340. package/lib/utils/deprecate.d.ts +0 -9
  341. package/lib/utils/deprecate.d.ts.map +0 -1
  342. package/lib/utils/deprecate.js +0 -15
  343. package/lib/utils/errorToLog.d.ts +0 -3
  344. package/lib/utils/errorToLog.d.ts.map +0 -1
  345. package/lib/utils/errorToLog.js +0 -8
  346. package/lib/utils/experimentalLog.d.ts +0 -3
  347. package/lib/utils/experimentalLog.d.ts.map +0 -1
  348. package/lib/utils/experimentalLog.js +0 -10
  349. package/lib/utils/getContext.d.ts +0 -2
  350. package/lib/utils/getContext.d.ts.map +0 -1
  351. package/lib/utils/getContext.js +0 -8
  352. package/lib/utils/index.d.ts +0 -26
  353. package/lib/utils/index.d.ts.map +0 -1
  354. package/lib/utils/index.js +0 -26
  355. package/lib/utils/math.d.ts +0 -15
  356. package/lib/utils/math.d.ts.map +0 -1
  357. package/lib/utils/math.js +0 -15
  358. package/lib/utils/range.d.ts +0 -40
  359. package/lib/utils/range.d.ts.map +0 -1
  360. package/lib/utils/range.js +0 -18
  361. package/lib/utils/useContext.d.ts +0 -13
  362. package/lib/utils/useContext.d.ts.map +0 -1
  363. package/lib/utils/useContext.js +0 -18
  364. package/lib/utils/usePlayback.d.ts +0 -8
  365. package/lib/utils/usePlayback.d.ts.map +0 -1
  366. package/lib/utils/usePlayback.js +0 -20
  367. package/lib/utils/useScene.d.ts +0 -17
  368. package/lib/utils/useScene.d.ts.map +0 -1
  369. package/lib/utils/useScene.js +0 -33
  370. package/lib/utils/useThread.d.ts +0 -8
  371. package/lib/utils/useThread.d.ts.map +0 -1
  372. package/lib/utils/useThread.js +0 -24
  373. package/lib/utils/useTime.d.ts +0 -19
  374. package/lib/utils/useTime.d.ts.map +0 -1
  375. package/lib/utils/useTime.js +0 -22
  376. package/project.d.ts +0 -24
package/lib/types/BBox.js DELETED
@@ -1,249 +0,0 @@
1
- import { CompoundSignalContext } from '../signals';
2
- import { arcLerp, map } from '../tweening';
3
- import { Spacing } from './Spacing';
4
- import { Vector2 } from './Vector';
5
- import { transformVector, transformVectorAsPoint, } from './vector-transformations';
6
- export class BBox {
7
- static createSignal(initial, interpolation = BBox.lerp) {
8
- return new CompoundSignalContext(['x', 'y', 'width', 'height'], (value) => new BBox(value), initial, interpolation).toSignal();
9
- }
10
- static lerp(from, to, value) {
11
- let valueX;
12
- let valueY;
13
- let valueWidth;
14
- let valueHeight;
15
- if (typeof value === 'number') {
16
- valueX = valueY = valueWidth = valueHeight = value;
17
- }
18
- else if (value instanceof Vector2) {
19
- valueX = valueWidth = value.x;
20
- valueY = valueHeight = value.y;
21
- }
22
- else {
23
- valueX = value.x;
24
- valueY = value.y;
25
- valueWidth = value.width;
26
- valueHeight = value.height;
27
- }
28
- return new BBox(map(from.x, to.x, valueX), map(from.y, to.y, valueY), map(from.width, to.width, valueWidth), map(from.height, to.height, valueHeight));
29
- }
30
- static arcLerp(from, to, value, reverse = false, ratio) {
31
- ratio ?? (ratio = (from.position.sub(to.position).ctg + from.size.sub(to.size).ctg) / 2);
32
- return BBox.lerp(from, to, new Vector2(arcLerp(value, reverse, ratio)));
33
- }
34
- static fromSizeCentered(size) {
35
- return new BBox(-size.width / 2, -size.height / 2, size.width, size.height);
36
- }
37
- static fromPoints(...points) {
38
- let minX = Infinity;
39
- let minY = Infinity;
40
- let maxX = -Infinity;
41
- let maxY = -Infinity;
42
- for (const point of points) {
43
- if (point.x > maxX) {
44
- maxX = point.x;
45
- }
46
- if (point.x < minX) {
47
- minX = point.x;
48
- }
49
- if (point.y > maxY) {
50
- maxY = point.y;
51
- }
52
- if (point.y < minY) {
53
- minY = point.y;
54
- }
55
- }
56
- return new BBox(minX, minY, maxX - minX, maxY - minY);
57
- }
58
- static fromBBoxes(...boxes) {
59
- let minX = Infinity;
60
- let minY = Infinity;
61
- let maxX = -Infinity;
62
- let maxY = -Infinity;
63
- for (const box of boxes) {
64
- const right = box.x + box.width;
65
- if (right > maxX) {
66
- maxX = right;
67
- }
68
- if (box.x < minX) {
69
- minX = box.x;
70
- }
71
- const bottom = box.y + box.height;
72
- if (bottom > maxY) {
73
- maxY = bottom;
74
- }
75
- if (box.y < minY) {
76
- minY = box.y;
77
- }
78
- }
79
- return new BBox(minX, minY, maxX - minX, maxY - minY);
80
- }
81
- lerp(to, value) {
82
- return BBox.lerp(this, to, value);
83
- }
84
- get position() {
85
- return new Vector2(this.x, this.y);
86
- }
87
- set position(value) {
88
- this.x = value.x;
89
- this.y = value.y;
90
- }
91
- get size() {
92
- return new Vector2(this.width, this.height);
93
- }
94
- get center() {
95
- return new Vector2(this.x + this.width / 2, this.y + this.height / 2);
96
- }
97
- get left() {
98
- return this.x;
99
- }
100
- set left(value) {
101
- this.width += this.x - value;
102
- this.x = value;
103
- }
104
- get right() {
105
- return this.x + this.width;
106
- }
107
- set right(value) {
108
- this.width = value - this.x;
109
- }
110
- get top() {
111
- return this.y;
112
- }
113
- set top(value) {
114
- this.height += this.y - value;
115
- this.y = value;
116
- }
117
- get bottom() {
118
- return this.y + this.height;
119
- }
120
- set bottom(value) {
121
- this.height = value - this.y;
122
- }
123
- get topLeft() {
124
- return this.position;
125
- }
126
- get topRight() {
127
- return new Vector2(this.x + this.width, this.y);
128
- }
129
- get bottomLeft() {
130
- return new Vector2(this.x, this.y + this.height);
131
- }
132
- get bottomRight() {
133
- return new Vector2(this.x + this.width, this.y + this.height);
134
- }
135
- get corners() {
136
- return [this.topLeft, this.topRight, this.bottomRight, this.bottomLeft];
137
- }
138
- get pixelPerfect() {
139
- return new BBox(Math.floor(this.x), Math.floor(this.y), Math.ceil(this.width + 1), Math.ceil(this.height + 1));
140
- }
141
- constructor(one, two = 0, three = 0, four = 0) {
142
- this.x = 0;
143
- this.y = 0;
144
- this.width = 0;
145
- this.height = 0;
146
- if (one === undefined || one === null) {
147
- return;
148
- }
149
- if (typeof one === 'number') {
150
- this.x = one;
151
- this.y = two;
152
- this.width = three;
153
- this.height = four;
154
- return;
155
- }
156
- if (one instanceof Vector2) {
157
- this.x = one.x;
158
- this.y = one.y;
159
- if (two instanceof Vector2) {
160
- this.width = two.x;
161
- this.height = two.y;
162
- }
163
- return;
164
- }
165
- if (Array.isArray(one)) {
166
- this.x = one[0];
167
- this.y = one[1];
168
- this.width = one[2];
169
- this.height = one[3];
170
- return;
171
- }
172
- this.x = one.x;
173
- this.y = one.y;
174
- this.width = one.width;
175
- this.height = one.height;
176
- }
177
- transform(matrix) {
178
- return new BBox(transformVectorAsPoint(this.position, matrix), transformVector(this.size, matrix));
179
- }
180
- transformCorners(matrix) {
181
- return this.corners.map(corner => transformVectorAsPoint(corner, matrix));
182
- }
183
- /**
184
- * Expand the bounding box to accommodate the given spacing.
185
- *
186
- * @param value - The value to expand the bounding box by.
187
- */
188
- expand(value) {
189
- const spacing = new Spacing(value);
190
- const result = new BBox(this);
191
- result.left -= spacing.left;
192
- result.top -= spacing.top;
193
- result.right += spacing.right;
194
- result.bottom += spacing.bottom;
195
- return result;
196
- }
197
- /**
198
- * {@inheritDoc expand}
199
- *
200
- * @deprecated Use {@link expand} instead.
201
- */
202
- addSpacing(value) {
203
- return this.expand(value);
204
- }
205
- includes(point) {
206
- return (point.x >= this.x &&
207
- point.x <= this.x + this.width &&
208
- point.y >= this.y &&
209
- point.y <= this.y + this.height);
210
- }
211
- intersects(other) {
212
- return (this.left < other.right &&
213
- this.right > other.left &&
214
- this.top < other.bottom &&
215
- this.bottom > other.top);
216
- }
217
- intersection(other) {
218
- const bbox = new BBox();
219
- if (this.intersects(other)) {
220
- bbox.left = Math.max(this.left, other.left);
221
- bbox.top = Math.max(this.top, other.top);
222
- bbox.right = Math.min(this.right, other.right);
223
- bbox.bottom = Math.min(this.bottom, other.bottom);
224
- }
225
- return bbox;
226
- }
227
- union(other) {
228
- const bbox = new BBox();
229
- bbox.left = Math.min(this.left, other.left);
230
- bbox.top = Math.min(this.top, other.top);
231
- bbox.right = Math.max(this.right, other.right);
232
- bbox.bottom = Math.max(this.bottom, other.bottom);
233
- return bbox;
234
- }
235
- toSymbol() {
236
- return BBox.symbol;
237
- }
238
- toString() {
239
- return `BBox(${this.x}, ${this.y}, ${this.width}, ${this.height})`;
240
- }
241
- toUniform(gl, location) {
242
- gl.uniform4f(location, this.x, this.y, this.width, this.height);
243
- }
244
- serialize() {
245
- return { x: this.x, y: this.y, width: this.width, height: this.height };
246
- }
247
- }
248
- BBox.symbol = Symbol.for('@twick/core/types/Rect');
249
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQkJveC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9CQm94LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxxQkFBcUIsRUFBQyxNQUFNLFlBQVksQ0FBQztBQUVqRCxPQUFPLEVBQUMsT0FBTyxFQUFFLEdBQUcsRUFBQyxNQUFNLGFBQWEsQ0FBQztBQUd6QyxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBRWxDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDakMsT0FBTyxFQUNMLGVBQWUsRUFDZixzQkFBc0IsR0FDdkIsTUFBTSwwQkFBMEIsQ0FBQztBQXNCbEMsTUFBTSxPQUFPLElBQUk7SUFRUixNQUFNLENBQUMsWUFBWSxDQUN4QixPQUFtQyxFQUNuQyxnQkFBNkMsSUFBSSxDQUFDLElBQUk7UUFFdEQsT0FBTyxJQUFJLHFCQUFxQixDQUM5QixDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxFQUM3QixDQUFDLEtBQW1CLEVBQUUsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUN4QyxPQUFPLEVBQ1AsYUFBYSxDQUNkLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDZixDQUFDO0lBRU0sTUFBTSxDQUFDLElBQUksQ0FDaEIsSUFBVSxFQUNWLEVBQVEsRUFDUixLQUE4QjtRQUU5QixJQUFJLE1BQU0sQ0FBQztRQUNYLElBQUksTUFBTSxDQUFDO1FBQ1gsSUFBSSxVQUFVLENBQUM7UUFDZixJQUFJLFdBQVcsQ0FBQztRQUNoQixJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQzlCLE1BQU0sR0FBRyxNQUFNLEdBQUcsVUFBVSxHQUFHLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDckQsQ0FBQzthQUFNLElBQUksS0FBSyxZQUFZLE9BQU8sRUFBRSxDQUFDO1lBQ3BDLE1BQU0sR0FBRyxVQUFVLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUM5QixNQUFNLEdBQUcsV0FBVyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDakMsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNqQixNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNqQixVQUFVLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztZQUN6QixXQUFXLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUM3QixDQUFDO1FBRUQsT0FBTyxJQUFJLElBQUksQ0FDYixHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUN6QixHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxFQUN6QixHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxFQUNyQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUN6QyxDQUFDO0lBQ0osQ0FBQztJQUVNLE1BQU0sQ0FBQyxPQUFPLENBQ25CLElBQVUsRUFDVixFQUFRLEVBQ1IsS0FBYSxFQUNiLE9BQU8sR0FBRyxLQUFLLEVBQ2YsS0FBYztRQUVkLEtBQUssS0FBTCxLQUFLLEdBQ0gsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUM7UUFFeEUsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFTSxNQUFNLENBQUMsZ0JBQWdCLENBQUMsSUFBYTtRQUMxQyxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRU0sTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLE1BQWlCO1FBQzNDLElBQUksSUFBSSxHQUFHLFFBQVEsQ0FBQztRQUNwQixJQUFJLElBQUksR0FBRyxRQUFRLENBQUM7UUFDcEIsSUFBSSxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDckIsSUFBSSxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFFckIsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUMzQixJQUFJLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUM7Z0JBQ25CLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLENBQUM7WUFDRCxJQUFJLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUM7Z0JBQ25CLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLENBQUM7WUFDRCxJQUFJLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUM7Z0JBQ25CLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLENBQUM7WUFDRCxJQUFJLEtBQUssQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUM7Z0JBQ25CLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksR0FBRyxJQUFJLEVBQUUsSUFBSSxHQUFHLElBQUks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
@@ -1,3 +0,0 @@
1
- export type CanvasColorSpace = 'srgb' | 'display-p3';
2
- export type CanvasOutputMimeType = 'image/png' | 'image/jpeg' | 'image/webp';
3
- //# sourceMappingURL=Canvas.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Canvas.d.ts","sourceRoot":"","sources":["../../src/types/Canvas.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,YAAY,CAAC;AACrD,MAAM,MAAM,oBAAoB,GAAG,WAAW,GAAG,YAAY,GAAG,YAAY,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FudmFzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL0NhbnZhcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
@@ -1,65 +0,0 @@
1
- import type { Signal, SignalValue } from '../signals';
2
- import type { InterpolationFunction } from '../tweening';
3
- import type { Type, WebGLConvertible } from './Type';
4
- export type SerializedColor = string;
5
- export interface ColorObject {
6
- r: number;
7
- g: number;
8
- b: number;
9
- a: number;
10
- }
11
- export type PossibleColor = SerializedColor | number | Color | ColorObject;
12
- type CuloriInterpolatorMode = 'a98' | 'cubehelix' | 'dlab' | 'dlch' | 'hsi' | 'hsl' | 'hsv' | 'hwb' | 'jab' | 'jch' | 'lab' | 'lab65' | 'lch' | 'lch65' | 'lchuv' | 'lrgb' | 'luv' | 'okhsl' | 'okhsv' | 'oklab' | 'oklch' | 'p3' | 'prophoto' | 'rec2020' | 'rgb' | 'xyz' | 'xyz50' | 'xyz65' | 'yiq';
13
- export type ColorSignal<T> = Signal<PossibleColor, Color, T>;
14
- /**
15
- * Represents a color using RGBA values (0-1 range).
16
- */
17
- export declare class Color implements Type, WebGLConvertible {
18
- static symbol: symbol;
19
- readonly symbol: symbol;
20
- readonly r: number;
21
- readonly g: number;
22
- readonly b: number;
23
- readonly a: number;
24
- constructor(value?: PossibleColor);
25
- /**
26
- * Interpolates between two colors using LCH color space.
27
- */
28
- static lerp(from: PossibleColor | null, to: PossibleColor | null, value: number, mode?: CuloriInterpolatorMode): Color;
29
- /**
30
- * Creates an interpolation function for colors (uses LCH space via culori).
31
- */
32
- static createLerp(mode?: CuloriInterpolatorMode): InterpolationFunction<Color, any[]>;
33
- /**
34
- * Creates a signal for the Color type.
35
- */
36
- static createSignal(initial?: SignalValue<PossibleColor>, interpolation?: InterpolationFunction<Color>): ColorSignal<void>;
37
- toSymbol(): symbol;
38
- /**
39
- * Returns the color components as a [r, g, b, a] array (0-1 range).
40
- */
41
- private gl;
42
- toUniform(gl: WebGL2RenderingContext, location: WebGLUniformLocation): void;
43
- /**
44
- * Serializes the color to an `rgba()` CSS string.
45
- */
46
- serialize(): SerializedColor;
47
- /**
48
- * Serializes the color to an `rgb()` CSS string (omitting alpha).
49
- */
50
- css(): SerializedColor;
51
- /**
52
- * Returns the alpha value of the color (0-1 range).
53
- */
54
- alpha(): number;
55
- /**
56
- * Serializes the color to an RRGGBBAA hex string using culori.
57
- */
58
- hex(): string;
59
- /**
60
- * Linearly interpolates from this color to another using LCH space.
61
- */
62
- lerp(to: PossibleColor, value: number, mode?: CuloriInterpolatorMode): Color;
63
- }
64
- export {};
65
- //# sourceMappingURL=Color.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Color.d.ts","sourceRoot":"","sources":["../../src/types/Color.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,MAAM,EAAE,WAAW,EAAC,MAAM,YAAY,CAAC;AAEpD,OAAO,KAAK,EAAC,qBAAqB,EAAC,MAAM,aAAa,CAAC;AAEvD,OAAO,KAAK,EAAC,IAAI,EAAE,gBAAgB,EAAC,MAAM,QAAQ,CAAC;AAEnD,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC;AASrC,MAAM,WAAW,WAAW;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,MAAM,aAAa,GAAG,eAAe,GAAG,MAAM,GAAG,KAAK,GAAG,WAAW,CAAC;AAE3E,KAAK,sBAAsB,GACvB,KAAK,GACL,WAAW,GACX,MAAM,GACN,MAAM,GACN,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,KAAK,GACL,OAAO,GACP,KAAK,GACL,OAAO,GACP,OAAO,GACP,MAAM,GACN,KAAK,GACL,OAAO,GACP,OAAO,GACP,OAAO,GACP,OAAO,GACP,IAAI,GACJ,UAAU,GACV,SAAS,GACT,KAAK,GACL,KAAK,GACL,OAAO,GACP,OAAO,GACP,KAAK,CAAC;AAEV,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,MAAM,CAAC,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAE7D;;GAEG;AACH,qBAAa,KAAM,YAAW,IAAI,EAAE,gBAAgB;IAClD,OAAc,MAAM,SAAyC;IAC7D,SAAgB,MAAM,SAAgB;IAEtC,SAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAgB,CAAC,EAAE,MAAM,CAAC;gBAEP,KAAK,CAAC,EAAE,aAAa;IAmExC;;OAEG;WACW,IAAI,CAChB,IAAI,EAAE,aAAa,GAAG,IAAI,EAC1B,EAAE,EAAE,aAAa,GAAG,IAAI,EACxB,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,sBAA8B,GACnC,KAAK;IAkDR;;OAEG;WACW,UAAU,CACtB,IAAI,GAAE,sBAA8B,GACnC,qBAAqB,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;IAKtC;;OAEG;WACW,YAAY,CACxB,OAAO,CAAC,EAAE,WAAW,CAAC,aAAa,CAAC,EACpC,aAAa,GAAE,qBAAqB,CAAC,KAAK,CAAc,GACvD,WAAW,CAAC,IAAI,CAAC;IASb,QAAQ,IAAI,MAAM;IAIzB;;OAEG;IACH,OAAO,CAAC,EAAE;IAIH,SAAS,CACd,EAAE,EAAE,sBAAsB,EAC1B,QAAQ,EAAE,oBAAoB,GAC7B,IAAI;IAIP;;OAEG;IACI,SAAS,IAAI,eAAe;IASnC;;OAEG;IACI,GAAG,IAAI,eAAe;IAO7B;;OAEG;IACI,KAAK,IAAI,MAAM;IAItB;;OAEG;IACI,GAAG,IAAI,MAAM;IAWpB;;OAEG;IACI,IAAI,CACT,EAAE,EAAE,aAAa,EACjB,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,sBAA8B,GACnC,KAAK;CAGT"}
@@ -1,185 +0,0 @@
1
- import { converter, formatHex8, interpolate, parse } from 'culori';
2
- import { SignalContext } from '../signals';
3
- import { clamp } from '../tweening';
4
- function parseNumber(num) {
5
- const r = (num >> 16) & 255;
6
- const g = (num >> 8) & 255;
7
- const b = num & 255;
8
- return [r / 255, g / 255, b / 255, 1];
9
- }
10
- /**
11
- * Represents a color using RGBA values (0-1 range).
12
- */
13
- export class Color {
14
- constructor(value) {
15
- this.symbol = Color.symbol;
16
- // Handle undefined/null case
17
- if (value === undefined || value === null) {
18
- this.r = 0;
19
- this.g = 0;
20
- this.b = 0;
21
- this.a = 1; // Default alpha for undefined is 1 (fully opaque black)
22
- return;
23
- }
24
- // Handle Color instance
25
- if (value instanceof Color) {
26
- this.r = value.r;
27
- this.g = value.g;
28
- this.b = value.b;
29
- this.a = value.a;
30
- return;
31
- }
32
- // Handle string parsing using culori
33
- if (typeof value === 'string') {
34
- const parsedColor = parse(value);
35
- if (!parsedColor) {
36
- throw new Error(`Invalid color string value provided: ${value}`);
37
- }
38
- // Convert parsed color to RGB if it's not already
39
- const rgbColor = parsedColor.mode === 'rgb'
40
- ? parsedColor
41
- : converter('rgb')(parsedColor);
42
- if (rgbColor) {
43
- this.r = clamp(0, 1, rgbColor.r);
44
- this.g = clamp(0, 1, rgbColor.g);
45
- this.b = clamp(0, 1, rgbColor.b);
46
- this.a = clamp(0, 1, rgbColor.alpha ?? 1);
47
- return;
48
- }
49
- }
50
- // Handle number parsing
51
- if (typeof value === 'number') {
52
- const [r, g, b, a] = parseNumber(value);
53
- this.r = clamp(0, 1, r);
54
- this.g = clamp(0, 1, g);
55
- this.b = clamp(0, 1, b);
56
- this.a = clamp(0, 1, a);
57
- return;
58
- }
59
- // Handle object parsing
60
- if (typeof value === 'object') {
61
- // Check for r, g, b properties to be reasonably sure it's a ColorObject
62
- if ('r' in value && 'g' in value && 'b' in value) {
63
- const obj = value; // Assume it matches the interface
64
- this.r = clamp(0, 1, obj.r / 255);
65
- this.g = clamp(0, 1, obj.g / 255);
66
- this.b = clamp(0, 1, obj.b / 255);
67
- this.a = clamp(0, 1, obj.a ?? 1);
68
- return;
69
- }
70
- }
71
- throw new Error(`Invalid color value provided: ${value}`);
72
- }
73
- /**
74
- * Interpolates between two colors using LCH color space.
75
- */
76
- static lerp(from, to, value, mode = 'lch') {
77
- const fromColor = from instanceof Color ? from : new Color(from ?? undefined);
78
- const toColor = to instanceof Color ? to : new Color(to ?? undefined);
79
- // Define culori colors in {r, g, b} format (0-1 range)
80
- const startColorCulori = {
81
- mode: 'rgb',
82
- r: fromColor.r,
83
- g: fromColor.g,
84
- b: fromColor.b,
85
- };
86
- const endColorCulori = {
87
- mode: 'rgb',
88
- r: toColor.r,
89
- g: toColor.g,
90
- b: toColor.b,
91
- };
92
- // Create LCH interpolator using culori
93
- const interpolationMode = mode ?? 'lch'; // Ensure mode is not undefined
94
- const interpolator = interpolate([startColorCulori, endColorCulori], interpolationMode);
95
- // Get the interpolated color in LCH mode from culori
96
- const interpolatedLch = interpolator(value);
97
- // Convert the interpolated LCH color back to RGB
98
- const rgbConverter = converter('rgb');
99
- const interpolatedRgb = rgbConverter(interpolatedLch);
100
- // Interpolate alpha linearly
101
- const a = fromColor.a + (toColor.a - fromColor.a) * value;
102
- // Create a new Color instance, clamping RGB values from culori
103
- // Check if interpolatedRgb is valid before accessing properties
104
- const finalR = interpolatedRgb ? clamp(0, 1, interpolatedRgb.r) : 0;
105
- const finalG = interpolatedRgb ? clamp(0, 1, interpolatedRgb.g) : 0;
106
- const finalB = interpolatedRgb ? clamp(0, 1, interpolatedRgb.b) : 0;
107
- return new Color({
108
- r: finalR * 255,
109
- g: finalG * 255,
110
- b: finalB * 255,
111
- a: clamp(0, 1, a), // Also clamp alpha just in case
112
- });
113
- }
114
- /**
115
- * Creates an interpolation function for colors (uses LCH space via culori).
116
- */
117
- static createLerp(mode = 'lch') {
118
- return (from, to, value) => Color.lerp(from, to, value, mode);
119
- }
120
- /**
121
- * Creates a signal for the Color type.
122
- */
123
- static createSignal(initial, interpolation = Color.lerp) {
124
- return new SignalContext(initial, interpolation, undefined, value => (value instanceof Color ? value : new Color(value))).toSignal();
125
- }
126
- toSymbol() {
127
- return this.symbol;
128
- }
129
- /**
130
- * Returns the color components as a [r, g, b, a] array (0-1 range).
131
- */
132
- gl() {
133
- return [this.r, this.g, this.b, this.a];
134
- }
135
- toUniform(gl, location) {
136
- gl.uniform4fv(location, this.gl());
137
- }
138
- /**
139
- * Serializes the color to an `rgba()` CSS string.
140
- */
141
- serialize() {
142
- const r = Math.round(this.r * 255);
143
- const g = Math.round(this.g * 255);
144
- const b = Math.round(this.b * 255);
145
- // Use toFixed(3) for alpha like before, clamp to avoid -0
146
- const alphaStr = clamp(0, 1, this.a).toFixed(3);
147
- return `rgba(${r}, ${g}, ${b}, ${alphaStr})`;
148
- }
149
- /**
150
- * Serializes the color to an `rgb()` CSS string (omitting alpha).
151
- */
152
- css() {
153
- const r = Math.round(this.r * 255);
154
- const g = Math.round(this.g * 255);
155
- const b = Math.round(this.b * 255);
156
- return `rgb(${r},${g},${b})`;
157
- }
158
- /**
159
- * Returns the alpha value of the color (0-1 range).
160
- */
161
- alpha() {
162
- return this.a;
163
- }
164
- /**
165
- * Serializes the color to an RRGGBBAA hex string using culori.
166
- */
167
- hex() {
168
- // Use culori's formatter for consistency
169
- return formatHex8({
170
- mode: 'rgb',
171
- r: this.r,
172
- g: this.g,
173
- b: this.b,
174
- alpha: this.a,
175
- });
176
- }
177
- /**
178
- * Linearly interpolates from this color to another using LCH space.
179
- */
180
- lerp(to, value, mode = 'lch') {
181
- return Color.lerp(this, to, value, mode);
182
- }
183
- }
184
- Color.symbol = Symbol.for('@twick/core/types/Color');
185
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29sb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvQ29sb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBQyxNQUFNLFFBQVEsQ0FBQztBQUVqRSxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0sWUFBWSxDQUFDO0FBRXpDLE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSxhQUFhLENBQUM7QUFLbEMsU0FBUyxXQUFXLENBQUMsR0FBVztJQUM5QixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUM7SUFDNUIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO0lBQzNCLE1BQU0sQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFDcEIsT0FBTyxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUE0Q0Q7O0dBRUc7QUFDSCxNQUFNLE9BQU8sS0FBSztJQVNoQixZQUFtQixLQUFxQjtRQVB4QixXQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQVFwQyw2QkFBNkI7UUFDN0IsSUFBSSxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNYLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ1gsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDWCxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLHdEQUF3RDtZQUNwRSxPQUFPO1FBQ1QsQ0FBQztRQUVELHdCQUF3QjtRQUN4QixJ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
@@ -1,3 +0,0 @@
1
- export declare function transformAngle(angle: number, matrix: DOMMatrix): number;
2
- export declare function transformScalar(scalar: number, matrix: DOMMatrix): number;
3
- //# sourceMappingURL=Matrix.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Matrix.d.ts","sourceRoot":"","sources":["../../src/types/Matrix.ts"],"names":[],"mappings":"AAGA,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,UAG9D;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,UAEhE"}
@@ -1,10 +0,0 @@
1
- import { Vector2 } from './Vector';
2
- import { transformVector } from './vector-transformations';
3
- export function transformAngle(angle, matrix) {
4
- const degreeVector = Vector2.fromDegrees(angle);
5
- return transformVector(degreeVector, matrix).degrees;
6
- }
7
- export function transformScalar(scalar, matrix) {
8
- return Vector2.magnitude(matrix.m11, matrix.m12) * scalar;
9
- }
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWF0cml4LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL01hdHJpeC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ2pDLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUV6RCxNQUFNLFVBQVUsY0FBYyxDQUFDLEtBQWEsRUFBRSxNQUFpQjtJQUM3RCxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2hELE9BQU8sZUFBZSxDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUM7QUFDdkQsQ0FBQztBQUVELE1BQU0sVUFBVSxlQUFlLENBQUMsTUFBYyxFQUFFLE1BQWlCO0lBQy9ELE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDNUQsQ0FBQyJ9