@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
@@ -1,78 +0,0 @@
1
- import loadMp4Module from 'mp4-wasm';
2
- import { download } from './download-videos';
3
- export class WasmExporter {
4
- static async create(project, settings) {
5
- return new WasmExporter(project, settings);
6
- }
7
- constructor(project, settings) {
8
- this.project = project;
9
- this.settings = settings;
10
- }
11
- async start() {
12
- const resp = await fetch('/@mp4-wasm');
13
- const buffer = await resp.arrayBuffer();
14
- const mp4 = await loadMp4Module({
15
- wasmBinary: buffer,
16
- });
17
- this.encoder = mp4.createWebCodecsEncoder({
18
- width: this.settings.size.x,
19
- height: this.settings.size.y,
20
- fps: this.project.settings.rendering.fps,
21
- });
22
- }
23
- async handleFrame(canvas) {
24
- const frame = new VideoFrame(canvas, { timestamp: 0 });
25
- await this.encoder.addFrame(frame);
26
- frame.close();
27
- }
28
- async stop() {
29
- const buf = await this.encoder.end();
30
- const formData = new FormData();
31
- formData.append('file', new Blob([buf], { type: 'video/mp4' }), 'video.mp4');
32
- formData.append('tempDir', `twick-${this.settings.name}-${this.settings.hiddenFolderId}`);
33
- await fetch('/twick-ffmpeg-decoder/finished', {
34
- method: 'POST',
35
- headers: {
36
- // eslint-disable-next-line
37
- 'Content-Type': 'application/json',
38
- },
39
- body: JSON.stringify({}),
40
- });
41
- await fetch('/uploadVideoFile', {
42
- method: 'POST',
43
- body: formData,
44
- });
45
- }
46
- async generateAudio(assets, startFrame, endFrame) {
47
- await fetch('/audio-processing/generate-audio', {
48
- method: 'POST',
49
- // TODO: add type and validate on the other side
50
- body: JSON.stringify({
51
- tempDir: `twick-${this.settings.name}-${this.settings.hiddenFolderId}`,
52
- assets,
53
- startFrame,
54
- endFrame,
55
- fps: this.settings.fps,
56
- }),
57
- });
58
- }
59
- async mergeMedia() {
60
- const outputFilename = this.settings.name;
61
- const tempDir = `twick-${this.settings.name}-${this.settings.hiddenFolderId}`;
62
- await fetch('/audio-processing/merge-media', {
63
- method: 'POST',
64
- // TODO: add type and validate on the other side
65
- body: JSON.stringify({
66
- outputFilename,
67
- tempDir,
68
- format: 'mp4',
69
- }),
70
- });
71
- }
72
- async downloadVideos(assets) {
73
- await download(assets);
74
- }
75
- }
76
- WasmExporter.id = '@twick/core/wasm';
77
- WasmExporter.displayName = 'Video (Wasm)';
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiV2FzbUV4cG9ydGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V4cG9ydGVyL1dhc21FeHBvcnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLGFBQWEsTUFBTSxVQUFVLENBQUM7QUFJckMsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBRTNDLE1BQU0sT0FBTyxZQUFZO0lBSWhCLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQWdCLEVBQUUsUUFBMEI7UUFDckUsT0FBTyxJQUFJLFlBQVksQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELFlBQ21CLE9BQWdCLEVBQ2hCLFFBQTBCO1FBRDFCLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7SUFDMUMsQ0FBQztJQUVHLEtBQUssQ0FBQyxLQUFLO1FBQ2hCLE1BQU0sSUFBSSxHQUFHLE1BQU0sS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRXhDLE1BQU0sR0FBRyxHQUFHLE1BQU0sYUFBYSxDQUFDO1lBQzlCLFVBQVUsRUFBRSxNQUFNO1NBQ25CLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxPQUFPLEdBQUcsR0FBRyxDQUFDLHNCQUFzQixDQUFDO1lBQ3hDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNCLE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzVCLEdBQUcsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRztTQUN6QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBSU0sS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUF5QjtRQUNoRCxNQUFN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
@@ -1,3 +0,0 @@
1
- import type { AssetInfo } from '../app';
2
- export declare function download(assets: AssetInfo[][]): Promise<void>;
3
- //# sourceMappingURL=download-videos.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"download-videos.d.ts","sourceRoot":"","sources":["../../src/exporter/download-videos.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,QAAQ,CAAC;AAEtC,wBAAsB,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0DnE"}
@@ -1,45 +0,0 @@
1
- export async function download(assets) {
2
- const videoRanges = new Map();
3
- assets.forEach(frameAssets => {
4
- frameAssets.forEach(asset => {
5
- if (asset.type !== 'video' || asset.decoder !== 'ffmpeg') {
6
- return;
7
- }
8
- if (videoRanges.has(asset.src)) {
9
- const range = videoRanges.get(asset.src);
10
- range.start = Math.min(range.start, asset.currentTime);
11
- range.end = Math.max(range.end, asset.currentTime);
12
- return;
13
- }
14
- videoRanges.set(asset.src, {
15
- start: asset.currentTime,
16
- end: asset.currentTime,
17
- });
18
- });
19
- });
20
- const videoDurations = Array.from(videoRanges.entries()).map(([src, { start, end }]) => ({
21
- src,
22
- startTime: start,
23
- endTime: end,
24
- }));
25
- videoDurations.forEach(({ src, startTime, endTime }) => {
26
- console.log(`downloading ${src} from ${startTime}s to ${endTime}s`);
27
- });
28
- const response = await fetch('/twick-ffmpeg-decoder/download-video-chunks', {
29
- method: 'POST',
30
- headers: {
31
- // eslint-disable-next-line
32
- 'Content-Type': 'application/json',
33
- },
34
- body: JSON.stringify(videoDurations),
35
- });
36
- if (!response.ok) {
37
- throw new Error(`HTTP error! status: ${response.status}`);
38
- }
39
- const result = await response.json();
40
- if (!result.success) {
41
- throw new Error(`Error downloading video chunks: ${result.error}`);
42
- }
43
- console.log('finished downloading');
44
- }
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG93bmxvYWQtdmlkZW9zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V4cG9ydGVyL2Rvd25sb2FkLXZpZGVvcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsS0FBSyxVQUFVLFFBQVEsQ0FBQyxNQUFxQjtJQUNsRCxNQUFNLFdBQVcsR0FBOEMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUV6RSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQzNCLFdBQVcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDMUIsSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUN6RCxPQUFPO1lBQ1QsQ0FBQztZQUVELElBQUksV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDL0IsTUFBTSxLQUFLLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFFLENBQUM7Z0JBQzFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDdkQsS0FBSyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNuRCxPQUFPO1lBQ1QsQ0FBQztZQUVELFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRTtnQkFDekIsS0FBSyxFQUFFLEtBQUssQ0FBQyxXQUFXO2dCQUN4QixHQUFHLEVBQUUsS0FBSyxDQUFDLFdBQVc7YUFDdkIsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsR0FBRyxDQUMxRCxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUMsS0FBSyxFQUFFLEdBQUcsRUFBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDeEIsR0FBRztRQUNILFNBQVMsRUFBRSxLQUFLO1FBQ2hCLE9BQU8sRUFBRSxHQUFHO0tBQ2IsQ0FBQyxDQUNILENBQUM7SUFFRixjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBQyxFQUFFLEVBQUU7UUFDbkQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEdBQUcsU0FBUyxTQUFTLFFBQVEsT0FBTyxHQUFHLENBQUMsQ0FBQztJQUN0RSxDQUFDLENBQUMsQ0FBQztJQUVILE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUMxQiw2Q0FBNkMsRUFDN0M7UUFDRSxNQUFNLEVBQUUsTUFBTTtRQUNkLE9BQU8sRUFBRTtZQUNQLDJCQUEyQjtZQUMzQixjQUFjLEVBQUUsa0JBQWtCO1NBQ25DO1FBQ0QsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDO0tBQ3JDLENBQ0YsQ0FBQztJQUVGLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELE1BQU0sTUFBTSxHQUFHLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBRXJDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQ0FBbUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDckUsQ0FBQztJQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQztBQUN0QyxDQUFDIn0=
@@ -1,5 +0,0 @@
1
- export * from './Exporter';
2
- export * from './FFmpegExporter';
3
- export * from './ImageExporter';
4
- export * from './WasmExporter';
5
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/exporter/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
@@ -1,5 +0,0 @@
1
- export * from './Exporter';
2
- export * from './FFmpegExporter';
3
- export * from './ImageExporter';
4
- export * from './WasmExporter';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXhwb3J0ZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsZ0JBQWdCLENBQUMifQ==
package/lib/flow/all.d.ts DELETED
@@ -1,18 +0,0 @@
1
- import type { ThreadGenerator } from '../threading';
2
- /**
3
- * Run all tasks concurrently and wait for all of them to finish.
4
- *
5
- * @example
6
- * ```ts
7
- * // current time: 0s
8
- * yield* all(
9
- * rect.fill('#ff0000', 2),
10
- * rect.opacity(1, 1),
11
- * );
12
- * // current time: 2s
13
- * ```
14
- *
15
- * @param tasks - A list of tasks to run.
16
- */
17
- export declare function all(...tasks: ThreadGenerator[]): ThreadGenerator;
18
- //# sourceMappingURL=all.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"all.d.ts","sourceRoot":"","sources":["../../src/flow/all.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAIlD;;;;;;;;;;;;;;GAcG;AACH,wBAAiB,GAAG,CAAC,GAAG,KAAK,EAAE,eAAe,EAAE,GAAG,eAAe,CAKjE"}
package/lib/flow/all.js DELETED
@@ -1,25 +0,0 @@
1
- import { decorate, threadable } from '../decorators';
2
- import { join } from './join';
3
- decorate(all, threadable());
4
- /**
5
- * Run all tasks concurrently and wait for all of them to finish.
6
- *
7
- * @example
8
- * ```ts
9
- * // current time: 0s
10
- * yield* all(
11
- * rect.fill('#ff0000', 2),
12
- * rect.opacity(1, 1),
13
- * );
14
- * // current time: 2s
15
- * ```
16
- *
17
- * @param tasks - A list of tasks to run.
18
- */
19
- export function* all(...tasks) {
20
- for (const task of tasks) {
21
- yield task;
22
- }
23
- yield* join(...tasks);
24
- }
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Zsb3cvYWxsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFNUIsUUFBUSxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0FBQzVCOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUF3QjtJQUM5QyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUNELEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ3hCLENBQUMifQ==
package/lib/flow/any.d.ts DELETED
@@ -1,18 +0,0 @@
1
- import type { ThreadGenerator } from '../threading';
2
- /**
3
- * Run all tasks concurrently and wait for any of them to finish.
4
- *
5
- * @example
6
- * ```ts
7
- * // current time: 0s
8
- * yield* any(
9
- * rect.fill('#ff0000', 2),
10
- * rect.opacity(1, 1),
11
- * );
12
- * // current time: 1s
13
- * ```
14
- *
15
- * @param tasks - A list of tasks to run.
16
- */
17
- export declare function any(...tasks: ThreadGenerator[]): ThreadGenerator;
18
- //# sourceMappingURL=any.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"any.d.ts","sourceRoot":"","sources":["../../src/flow/any.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAIlD;;;;;;;;;;;;;;GAcG;AACH,wBAAiB,GAAG,CAAC,GAAG,KAAK,EAAE,eAAe,EAAE,GAAG,eAAe,CAKjE"}
package/lib/flow/any.js DELETED
@@ -1,25 +0,0 @@
1
- import { decorate, threadable } from '../decorators';
2
- import { join } from './join';
3
- decorate(any, threadable());
4
- /**
5
- * Run all tasks concurrently and wait for any of them to finish.
6
- *
7
- * @example
8
- * ```ts
9
- * // current time: 0s
10
- * yield* any(
11
- * rect.fill('#ff0000', 2),
12
- * rect.opacity(1, 1),
13
- * );
14
- * // current time: 1s
15
- * ```
16
- *
17
- * @param tasks - A list of tasks to run.
18
- */
19
- export function* any(...tasks) {
20
- for (const task of tasks) {
21
- yield task;
22
- }
23
- yield* join(false, ...tasks);
24
- }
25
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW55LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Zsb3cvYW55LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBRW5ELE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxRQUFRLENBQUM7QUFFNUIsUUFBUSxDQUFDLEdBQUcsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0FBQzVCOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxTQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUF3QjtJQUM5QyxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxDQUFDO0lBQ2IsQ0FBQztJQUNELEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQztBQUMvQixDQUFDIn0=
@@ -1,36 +0,0 @@
1
- import type { ThreadGenerator } from '../threading';
2
- /**
3
- * Run tasks one after another.
4
- *
5
- * @example
6
- * ```ts
7
- * // current time: 0s
8
- * yield* chain(
9
- * rect.fill('#ff0000', 2),
10
- * rect.opacity(1, 1),
11
- * );
12
- * // current time: 3s
13
- * ```
14
- *
15
- * Note that the same animation can be written as:
16
- * ```ts
17
- * yield* rect.fill('#ff0000', 2),
18
- * yield* rect.opacity(1, 1),
19
- * ```
20
- *
21
- * The reason `chain` exists is to make it easier to pass it to other flow
22
- * functions. For example:
23
- * ```ts
24
- * yield* all(
25
- * rect.radius(20, 3),
26
- * chain(
27
- * rect.fill('#ff0000', 2),
28
- * rect.opacity(1, 1),
29
- * ),
30
- * );
31
- * ```
32
- *
33
- * @param tasks - A list of tasks to run.
34
- */
35
- export declare function chain(...tasks: (ThreadGenerator | Callback)[]): ThreadGenerator;
36
- //# sourceMappingURL=chain.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../src/flow/chain.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAGlD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAiB,KAAK,CACpB,GAAG,KAAK,EAAE,CAAC,eAAe,GAAG,QAAQ,CAAC,EAAE,GACvC,eAAe,CAQjB"}
package/lib/flow/chain.js DELETED
@@ -1,46 +0,0 @@
1
- import { decorate, threadable } from '../decorators';
2
- decorate(chain, threadable());
3
- /**
4
- * Run tasks one after another.
5
- *
6
- * @example
7
- * ```ts
8
- * // current time: 0s
9
- * yield* chain(
10
- * rect.fill('#ff0000', 2),
11
- * rect.opacity(1, 1),
12
- * );
13
- * // current time: 3s
14
- * ```
15
- *
16
- * Note that the same animation can be written as:
17
- * ```ts
18
- * yield* rect.fill('#ff0000', 2),
19
- * yield* rect.opacity(1, 1),
20
- * ```
21
- *
22
- * The reason `chain` exists is to make it easier to pass it to other flow
23
- * functions. For example:
24
- * ```ts
25
- * yield* all(
26
- * rect.radius(20, 3),
27
- * chain(
28
- * rect.fill('#ff0000', 2),
29
- * rect.opacity(1, 1),
30
- * ),
31
- * );
32
- * ```
33
- *
34
- * @param tasks - A list of tasks to run.
35
- */
36
- export function* chain(...tasks) {
37
- for (const generator of tasks) {
38
- if ('next' in generator) {
39
- yield* generator;
40
- }
41
- else {
42
- generator();
43
- }
44
- }
45
- }
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmxvdy9jaGFpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUduRCxRQUFRLENBQUMsS0FBSyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7QUFDOUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0NHO0FBQ0gsTUFBTSxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQ3BCLEdBQUcsS0FBcUM7SUFFeEMsS0FBSyxNQUFNLFNBQVMsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUM5QixJQUFJLE1BQU0sSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUN4QixLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDbkIsQ0FBQzthQUFNLENBQUM7WUFDTixTQUFTLEVBQUUsQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0FBQ0gsQ0FBQyJ9
@@ -1,29 +0,0 @@
1
- import type { ThreadGenerator } from '../threading';
2
- /**
3
- * Run the given generator or callback after a specific amount of time.
4
- *
5
- * @example
6
- * ```ts
7
- * yield* delay(1, rect.fill('#ff0000', 2));
8
- * ```
9
- *
10
- * Note that the same animation can be written as:
11
- * ```ts
12
- * yield* waitFor(1),
13
- * yield* rect.fill('#ff0000', 2),
14
- * ```
15
- *
16
- * The reason `delay` exists is to make it easier to pass it to other flow
17
- * functions. For example:
18
- * ```ts
19
- * yield* all(
20
- * rect.opacity(1, 3),
21
- * delay(1, rect.fill('#ff0000', 2));
22
- * );
23
- * ```
24
- *
25
- * @param time - The delay in seconds
26
- * @param task - The task or callback to run after the delay.
27
- */
28
- export declare function delay(time: number, task: ThreadGenerator | Callback): ThreadGenerator;
29
- //# sourceMappingURL=delay.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"delay.d.ts","sourceRoot":"","sources":["../../src/flow/delay.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAIlD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAiB,KAAK,CACpB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,eAAe,GAAG,QAAQ,GAC/B,eAAe,CAOjB"}
package/lib/flow/delay.js DELETED
@@ -1,39 +0,0 @@
1
- import { decorate, threadable } from '../decorators';
2
- import { waitFor } from './scheduling';
3
- decorate(delay, threadable());
4
- /**
5
- * Run the given generator or callback after a specific amount of time.
6
- *
7
- * @example
8
- * ```ts
9
- * yield* delay(1, rect.fill('#ff0000', 2));
10
- * ```
11
- *
12
- * Note that the same animation can be written as:
13
- * ```ts
14
- * yield* waitFor(1),
15
- * yield* rect.fill('#ff0000', 2),
16
- * ```
17
- *
18
- * The reason `delay` exists is to make it easier to pass it to other flow
19
- * functions. For example:
20
- * ```ts
21
- * yield* all(
22
- * rect.opacity(1, 3),
23
- * delay(1, rect.fill('#ff0000', 2));
24
- * );
25
- * ```
26
- *
27
- * @param time - The delay in seconds
28
- * @param task - The task or callback to run after the delay.
29
- */
30
- export function* delay(time, task) {
31
- yield* waitFor(time);
32
- if ('next' in task) {
33
- yield* task;
34
- }
35
- else {
36
- task();
37
- }
38
- }
39
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsYXkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmxvdy9kZWxheS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBRXJDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztBQUM5Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQUNILE1BQU0sU0FBUyxDQUFDLENBQUMsS0FBSyxDQUNwQixJQUFZLEVBQ1osSUFBZ0M7SUFFaEMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JCLElBQUksTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ25CLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNkLENBQUM7U0FBTSxDQUFDO1FBQ04sSUFBSSxFQUFFLENBQUM7SUFDVCxDQUFDO0FBQ0gsQ0FBQyJ9
@@ -1,41 +0,0 @@
1
- import type { ThreadGenerator } from '../threading';
2
- export interface EveryCallback {
3
- /**
4
- * A callback called by {@link EveryTimer} every N seconds.
5
- *
6
- * @param tick - The amount of times the timer has ticked.
7
- */
8
- (tick: number): void;
9
- }
10
- export interface EveryTimer {
11
- /**
12
- * The generator responsible for running this timer.
13
- */
14
- runner: ThreadGenerator;
15
- setInterval(value: number): void;
16
- setCallback(value: EveryCallback): void;
17
- /**
18
- * Wait until the timer ticks.
19
- */
20
- sync(): ThreadGenerator;
21
- }
22
- /**
23
- * Call the given callback every N seconds.
24
- *
25
- * @example
26
- * ```ts
27
- * const timer = every(2, time => console.log(time));
28
- * yield timer.runner;
29
- *
30
- * // current time: 0s
31
- * yield* waitFor(5);
32
- * // current time: 5s
33
- * yield* timer.sync();
34
- * // current time: 6s
35
- * ```
36
- *
37
- * @param interval - The interval between subsequent calls.
38
- * @param callback - The callback to be called.
39
- */
40
- export declare function every(interval: number, callback: EveryCallback): EveryTimer;
41
- //# sourceMappingURL=every.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"every.d.ts","sourceRoot":"","sources":["../../src/flow/every.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAGlD,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,MAAM,EAAE,eAAe,CAAC;IACxB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;IAExC;;OAEG;IACH,IAAI,IAAI,eAAe,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,GAAG,UAAU,CAwC3E"}
package/lib/flow/every.js DELETED
@@ -1,61 +0,0 @@
1
- import { decorate, threadable } from '../decorators';
2
- import { usePlayback } from '../utils';
3
- /**
4
- * Call the given callback every N seconds.
5
- *
6
- * @example
7
- * ```ts
8
- * const timer = every(2, time => console.log(time));
9
- * yield timer.runner;
10
- *
11
- * // current time: 0s
12
- * yield* waitFor(5);
13
- * // current time: 5s
14
- * yield* timer.sync();
15
- * // current time: 6s
16
- * ```
17
- *
18
- * @param interval - The interval between subsequent calls.
19
- * @param callback - The callback to be called.
20
- */
21
- export function every(interval, callback) {
22
- let changed = false;
23
- decorate(everyRunner, threadable('every'));
24
- function* everyRunner() {
25
- const project = usePlayback();
26
- let acc = 0;
27
- let tick = 0;
28
- callback(tick);
29
- changed = true;
30
- while (true) {
31
- if (acc >= project.secondsToFrames(interval)) {
32
- acc = 0;
33
- tick++;
34
- callback(tick);
35
- changed = true;
36
- }
37
- else {
38
- changed = false;
39
- }
40
- acc++;
41
- yield;
42
- }
43
- }
44
- return {
45
- runner: everyRunner(),
46
- setInterval(value) {
47
- interval = value;
48
- changed = false;
49
- },
50
- setCallback(value) {
51
- callback = value;
52
- changed = false;
53
- },
54
- *sync() {
55
- while (!changed) {
56
- yield;
57
- }
58
- },
59
- };
60
- }
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmxvdy9ldmVyeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBeUJyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFNLFVBQVUsS0FBSyxDQUFDLFFBQWdCLEVBQUUsUUFBdUI7SUFDN0QsSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3BCLFFBQVEsQ0FBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDM0MsUUFBUSxDQUFDLENBQUMsV0FBVztRQUNuQixNQUFNLE9BQU8sR0FBRyxXQUFXLEVBQUUsQ0FBQztRQUM5QixJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDWixJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7UUFDYixRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDZixPQUFPLEdBQUcsSUFBSSxDQUFDO1FBRWYsT0FBTyxJQUFJLEVBQUUsQ0FBQztZQUNaLElBQUksR0FBRyxJQUFJLE9BQU8sQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDN0MsR0FBRyxHQUFHLENBQUMsQ0FBQztnQkFDUixJQUFJLEVBQUUsQ0FBQztnQkFDUCxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2YsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNqQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNsQixDQUFDO1lBQ0QsR0FBRyxFQUFFLENBQUM7WUFDTixLQUFLLENBQUM7UUFDUixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU87UUFDTCxNQUFNLEVBQUUsV0FBVyxFQUFFO1FBQ3JCLFdBQVcsQ0FBQyxLQUFLO1lBQ2YsUUFBUSxHQUFHLEtBQUssQ0FBQztZQUNqQixPQUFPLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLENBQUM7UUFDRCxXQUFXLENBQUMsS0FBSztZQUNmLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDakIsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNsQixDQUFDO1FBQ0QsQ0FBQyxJQUFJO1lBQ0gsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNoQixLQUFLLENBQUM7WUFDUixDQUFDO1FBQ0gsQ0FBQztLQUNGLENBQUM7QUFDSixDQUFDIn0=
@@ -1,17 +0,0 @@
1
- /**
2
- * Utilities for controlling the flow and timing of an animation.
3
- * @packageDocumentation
4
- */
5
- export * from './all';
6
- export * from './any';
7
- export * from './chain';
8
- export * from './delay';
9
- export * from './every';
10
- export * from './join';
11
- export * from './loop';
12
- export * from './loopFor';
13
- export * from './names';
14
- export * from './run';
15
- export * from './scheduling';
16
- export * from './sequence';
17
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/flow/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,OAAO,CAAC;AACtB,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,OAAO,CAAC;AACtB,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
package/lib/flow/index.js DELETED
@@ -1,17 +0,0 @@
1
- /**
2
- * Utilities for controlling the flow and timing of an animation.
3
- * @packageDocumentation
4
- */
5
- export * from './all';
6
- export * from './any';
7
- export * from './chain';
8
- export * from './delay';
9
- export * from './every';
10
- export * from './join';
11
- export * from './loop';
12
- export * from './loopFor';
13
- export * from './names';
14
- export * from './run';
15
- export * from './scheduling';
16
- export * from './sequence';
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZmxvdy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFFSCxjQUFjLE9BQU8sQ0FBQztBQUN0QixjQUFjLE9BQU8sQ0FBQztBQUN0QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFFBQVEsQ0FBQztBQUN2QixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLFNBQVMsQ0FBQztBQUN4QixjQUFjLE9BQU8sQ0FBQztBQUN0QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFlBQVksQ0FBQyJ9
@@ -1,35 +0,0 @@
1
- import type { ThreadGenerator } from '../threading/ThreadGenerator';
2
- /**
3
- * Pause the current generator until all listed tasks are finished.
4
- *
5
- * @example
6
- * ```ts
7
- * const task = yield generatorFunction();
8
- *
9
- * // do something concurrently
10
- *
11
- * yield* join(task);
12
- * ```
13
- *
14
- * @param tasks - A list of tasks to join.
15
- */
16
- export declare function join(...tasks: ThreadGenerator[]): ThreadGenerator;
17
- /**
18
- * Pause the current generator until listed tasks are finished.
19
- *
20
- * @example
21
- * ```ts
22
- * const taskA = yield generatorFunctionA();
23
- * const taskB = yield generatorFunctionB();
24
- *
25
- * // do something concurrently
26
- *
27
- * // await any of the tasks
28
- * yield* join(false, taskA, taskB);
29
- * ```
30
- *
31
- * @param all - Whether we should wait for all tasks or for at least one.
32
- * @param tasks - A list of tasks to join.
33
- */
34
- export declare function join(all: boolean, ...tasks: ThreadGenerator[]): ThreadGenerator;
35
- //# sourceMappingURL=join.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"join.d.ts","sourceRoot":"","sources":["../../src/flow/join.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,8BAA8B,CAAC;AAIlE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,IAAI,CAAC,GAAG,KAAK,EAAE,eAAe,EAAE,GAAG,eAAe,CAAC;AACnE;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,IAAI,CAClB,GAAG,EAAE,OAAO,EACZ,GAAG,KAAK,EAAE,eAAe,EAAE,GAC1B,eAAe,CAAC"}
package/lib/flow/join.js DELETED
@@ -1,33 +0,0 @@
1
- import { decorate, threadable } from '../decorators';
2
- import { useThread } from '../utils';
3
- decorate(join, threadable());
4
- export function* join(first, ...tasks) {
5
- let all = true;
6
- if (typeof first === 'boolean') {
7
- all = first;
8
- }
9
- else {
10
- tasks.push(first);
11
- }
12
- const parent = useThread();
13
- const threads = (tasks
14
- .map(task => parent.children.find(thread => thread.runner === task))
15
- .filter(thread => thread));
16
- const startTime = parent.time();
17
- let childTime;
18
- if (all) {
19
- while (threads.find(thread => !thread.canceled)) {
20
- yield;
21
- }
22
- childTime = Math.max(...threads.map(thread => thread.time()));
23
- }
24
- else {
25
- while (!threads.find(thread => thread.canceled)) {
26
- yield;
27
- }
28
- const canceled = threads.filter(thread => thread.canceled);
29
- childTime = Math.min(...canceled.map(thread => thread.time()));
30
- }
31
- parent.time(Math.max(startTime, childTime));
32
- }
33
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiam9pbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mbG93L2pvaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHbkQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUVuQyxRQUFRLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7QUFxQzdCLE1BQU0sU0FBUyxDQUFDLENBQUMsSUFBSSxDQUNuQixLQUFnQyxFQUNoQyxHQUFHLEtBQXdCO0lBRTNCLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQztJQUNmLElBQUksT0FBTyxLQUFLLEtBQUssU0FBUyxFQUFFLENBQUM7UUFDL0IsR0FBRyxHQUFHLEtBQUssQ0FBQztJQUNkLENBQUM7U0FBTSxDQUFDO1FBQ04sS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNwQixDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQUcsU0FBUyxFQUFFLENBQUM7SUFDM0IsTUFBTSxPQUFPLEdBQWEsQ0FDeEIsS0FBSztTQUNGLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsQ0FBQztTQUNuRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FDNUIsQ0FBQztJQUVGLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoQyxJQUFJLFNBQVMsQ0FBQztJQUNkLElBQUksR0FBRyxFQUFFLENBQUM7UUFDUixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ2hELEtBQUssQ0FBQztRQUNSLENBQUM7UUFDRCxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7U0FBTSxDQUFDO1FBQ04sT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUNoRCxLQUFLLENBQUM7UUFDUixDQUFDO1FBQ0QsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMzRCxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUM7QUFDOUMsQ0FBQyJ9