@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,10 +0,0 @@
1
- // TODO(refactor): check if we can get rid of this
2
- export function createVersionObject(version) {
3
- return {
4
- core: version,
5
- two: version,
6
- ui: version,
7
- vitePlugin: version,
8
- };
9
- }
10
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcHAvUHJvamVjdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFjQSxrREFBa0Q7QUFDbEQsTUFBTSxVQUFVLG1CQUFtQixDQUFDLE9BQWU7SUFDakQsT0FBTztRQUNMLElBQUksRUFBRSxPQUFPO1FBQ2IsR0FBRyxFQUFFLE9BQU87UUFDWixFQUFFLEVBQUUsT0FBTztRQUNYLFVBQVUsRUFBRSxPQUFPO0tBQ3BCLENBQUM7QUFDSixDQUFDIn0=
@@ -1,90 +0,0 @@
1
- import type { ExporterSettings, Project } from './Project';
2
- import type { StageSettings } from './Stage';
3
- import { Stage } from './Stage';
4
- import { TimeEstimator } from './TimeEstimator';
5
- export interface RendererSettings extends StageSettings {
6
- name: string;
7
- range: [number, number];
8
- fps: number;
9
- exporter: ExporterSettings;
10
- hiddenFolderId?: string;
11
- }
12
- export interface AssetInfo {
13
- key: string;
14
- type: 'video' | 'audio';
15
- src: string;
16
- playbackRate: number;
17
- volume: number;
18
- currentTime: number;
19
- duration: number;
20
- decoder?: string | null;
21
- }
22
- export declare enum RendererState {
23
- Initial = 0,
24
- Working = 1,
25
- Aborting = 2
26
- }
27
- export declare enum RendererResult {
28
- Success = 0,
29
- Error = 1,
30
- Aborted = 2
31
- }
32
- /**
33
- * The rendering logic used by the editor to export animations.
34
- *
35
- * @remarks
36
- * This class uses the `PlaybackManager` to render animations. In contrast to a
37
- * player, a renderer does not use an update loop. It plays through the
38
- * animation as fast as it can, occasionally pausing to keep the UI responsive.
39
- *
40
- * The actual exporting is outsourced to an Exporter.
41
- */
42
- export declare class Renderer {
43
- private project;
44
- get onStateChanged(): import("../events").SubscribableValueEvent<RendererState>;
45
- private readonly state;
46
- get onFinished(): import("../events").Subscribable<RendererResult, import("../events").EventHandler<RendererResult>>;
47
- private readonly finished;
48
- get onFrameChanged(): import("../events").SubscribableValueEvent<number>;
49
- private readonly frame;
50
- readonly stage: Stage;
51
- readonly estimator: TimeEstimator;
52
- private readonly lock;
53
- private readonly playback;
54
- private readonly status;
55
- private readonly sharedWebGLContext;
56
- private exporter;
57
- private abortController;
58
- constructor(project: Project);
59
- /**
60
- * Returns number of frames that a project will have.
61
- */
62
- getNumberOfFrames(settings: RendererSettings): Promise<number>;
63
- frameToTime(frame: number): number;
64
- timeToFrame(second: number): number;
65
- /**
66
- * Render the animation using the provided settings.
67
- *
68
- * @param settings - The rendering settings.
69
- */
70
- render(settings: RendererSettings): Promise<void>;
71
- /**
72
- * Abort the ongoing render process.
73
- */
74
- abort(): void;
75
- /**
76
- * Export an individual frame.
77
- *
78
- * @remarks
79
- * This method always uses the default `ImageExporter`.
80
- *
81
- * @param settings - The rendering settings.
82
- * @param time - The timestamp to export.
83
- */
84
- renderFrame(settings: RendererSettings, time: number): Promise<void>;
85
- private run;
86
- private reloadScenes;
87
- private exportFrame;
88
- private getMediaByFrames;
89
- }
90
- //# sourceMappingURL=Renderer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Renderer.d.ts","sourceRoot":"","sources":["../../src/app/Renderer.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAC,gBAAgB,EAAE,OAAO,EAAC,MAAM,WAAW,CAAC;AAEzD,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAC,KAAK,EAAC,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAE9C,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,oBAAY,aAAa;IACvB,OAAO,IAAA;IACP,OAAO,IAAA;IACP,QAAQ,IAAA;CACT;AAED,oBAAY,cAAc;IACxB,OAAO,IAAA;IACP,KAAK,IAAA;IACL,OAAO,IAAA;CACR;AAED;;;;;;;;;GASG;AACH,qBAAa,QAAQ;IA0BA,OAAO,CAAC,OAAO;IAzBlC,IAAW,cAAc,8DAExB;IACD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA8C;IAEpE,IAAW,UAAU,uGAEpB;IACD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyC;IAElE,IAAW,cAAc,uDAExB;IACD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0B;IAEhD,SAAgB,KAAK,QAAe;IACpC,SAAgB,SAAS,gBAAuB;IAEhD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmB;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,QAAQ,CAAyB;IACzC,OAAO,CAAC,eAAe,CAAgC;gBAE5B,OAAO,EAAE,OAAO;IAqB3C;;OAEG;IACU,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB;IAkBlD,WAAW,CAAC,KAAK,EAAE,MAAM;IAIzB,WAAW,CAAC,MAAM,EAAE,MAAM;IAIjC;;;;OAIG;IACU,MAAM,CAAC,QAAQ,EAAE,gBAAgB;IA8B9C;;OAEG;IACI,KAAK;IAMZ;;;;;;;;OAQG;IACU,WAAW,CAAC,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM;YAgCnD,GAAG;YAkIH,YAAY;YAWZ,WAAW;YAmBX,gBAAgB;CAqC/B"}
@@ -1,318 +0,0 @@
1
- import { EventDispatcher, ValueDispatcher } from '../events';
2
- import { FFmpegExporterClient, ImageExporter, WasmExporter, } from '../exporter';
3
- import { clampRemap } from '../tweening';
4
- import { Vector2 } from '../types';
5
- import { Semaphore } from '../utils';
6
- import { PlaybackManager, PlaybackState } from './PlaybackManager';
7
- import { PlaybackStatus } from './PlaybackStatus';
8
- import { SharedWebGLContext } from './SharedWebGLContext';
9
- import { Stage } from './Stage';
10
- import { TimeEstimator } from './TimeEstimator';
11
- export var RendererState;
12
- (function (RendererState) {
13
- RendererState[RendererState["Initial"] = 0] = "Initial";
14
- RendererState[RendererState["Working"] = 1] = "Working";
15
- RendererState[RendererState["Aborting"] = 2] = "Aborting";
16
- })(RendererState || (RendererState = {}));
17
- export var RendererResult;
18
- (function (RendererResult) {
19
- RendererResult[RendererResult["Success"] = 0] = "Success";
20
- RendererResult[RendererResult["Error"] = 1] = "Error";
21
- RendererResult[RendererResult["Aborted"] = 2] = "Aborted";
22
- })(RendererResult || (RendererResult = {}));
23
- /**
24
- * The rendering logic used by the editor to export animations.
25
- *
26
- * @remarks
27
- * This class uses the `PlaybackManager` to render animations. In contrast to a
28
- * player, a renderer does not use an update loop. It plays through the
29
- * animation as fast as it can, occasionally pausing to keep the UI responsive.
30
- *
31
- * The actual exporting is outsourced to an Exporter.
32
- */
33
- export class Renderer {
34
- get onStateChanged() {
35
- return this.state.subscribable;
36
- }
37
- get onFinished() {
38
- return this.finished.subscribable;
39
- }
40
- get onFrameChanged() {
41
- return this.frame.subscribable;
42
- }
43
- constructor(project) {
44
- this.project = project;
45
- this.state = new ValueDispatcher(RendererState.Initial);
46
- this.finished = new EventDispatcher();
47
- this.frame = new ValueDispatcher(0);
48
- this.stage = new Stage();
49
- this.estimator = new TimeEstimator();
50
- this.lock = new Semaphore();
51
- this.exporter = null;
52
- this.abortController = null;
53
- this.playback = new PlaybackManager();
54
- this.status = new PlaybackStatus(this.playback);
55
- this.sharedWebGLContext = new SharedWebGLContext(this.project.logger);
56
- const scenes = [];
57
- for (const description of project.scenes) {
58
- const scene = new description.klass({
59
- ...description,
60
- playback: this.status,
61
- logger: this.project.logger,
62
- size: new Vector2(1920, 1080),
63
- resolutionScale: 1,
64
- sharedWebGLContext: this.sharedWebGLContext,
65
- experimentalFeatures: project.experimentalFeatures,
66
- });
67
- scenes.push(scene);
68
- }
69
- this.playback.setup(scenes);
70
- }
71
- /**
72
- * Returns number of frames that a project will have.
73
- */
74
- async getNumberOfFrames(settings) {
75
- await this.lock.acquire();
76
- this.estimator.reset();
77
- this.state.current = RendererState.Working;
78
- await this.reloadScenes(settings);
79
- await this.playback.recalculate();
80
- await this.playback.reset();
81
- const frames = this.playback.duration;
82
- this.state.current = RendererState.Initial;
83
- this.sharedWebGLContext.dispose();
84
- this.lock.release();
85
- return frames;
86
- }
87
- frameToTime(frame) {
88
- return this.status.framesToSeconds(frame);
89
- }
90
- timeToFrame(second) {
91
- return this.status.secondsToFrames(second);
92
- }
93
- /**
94
- * Render the animation using the provided settings.
95
- *
96
- * @param settings - The rendering settings.
97
- */
98
- async render(settings) {
99
- if (this.state.current !== RendererState.Initial)
100
- return;
101
- await this.lock.acquire();
102
- this.estimator.reset();
103
- this.state.current = RendererState.Working;
104
- let result;
105
- try {
106
- this.abortController = new AbortController();
107
- result = await this.run(settings, this.abortController.signal);
108
- }
109
- catch (e) {
110
- this.project.logger.error(e);
111
- result = RendererResult.Error;
112
- if (this.exporter) {
113
- try {
114
- await this.exporter.stop?.(result);
115
- }
116
- catch (_) {
117
- throw Error(e.message);
118
- }
119
- this.exporter = null;
120
- throw Error(e.message);
121
- }
122
- }
123
- this.estimator.update(1);
124
- this.state.current = RendererState.Initial;
125
- this.finished.dispatch(result);
126
- this.sharedWebGLContext.dispose();
127
- this.lock.release();
128
- }
129
- /**
130
- * Abort the ongoing render process.
131
- */
132
- abort() {
133
- if (this.state.current !== RendererState.Working)
134
- return;
135
- this.abortController?.abort();
136
- this.state.current = RendererState.Aborting;
137
- }
138
- /**
139
- * Export an individual frame.
140
- *
141
- * @remarks
142
- * This method always uses the default `ImageExporter`.
143
- *
144
- * @param settings - The rendering settings.
145
- * @param time - The timestamp to export.
146
- */
147
- async renderFrame(settings, time) {
148
- await this.lock.acquire();
149
- try {
150
- const frame = this.status.secondsToFrames(time);
151
- this.stage.configure(settings);
152
- this.playback.fps = settings.fps;
153
- this.playback.state = PlaybackState.Rendering;
154
- await this.reloadScenes(settings);
155
- await this.playback.reset();
156
- await this.playback.seek(frame);
157
- await this.stage.render(this.playback.currentScene, this.playback.previousScene);
158
- if (import.meta.hot) {
159
- import.meta.hot.send('twick:export', {
160
- frame,
161
- data: this.stage.finalBuffer.toDataURL('image/png'),
162
- mimeType: 'image/png',
163
- subDirectories: ['still', this.project.name],
164
- });
165
- }
166
- }
167
- catch (e) {
168
- this.project.logger.error(e);
169
- }
170
- this.lock.release();
171
- }
172
- async run(settings, signal) {
173
- // Select exporter
174
- // TODO(refactor): check if i want to keep it this way
175
- const exporters = [
176
- FFmpegExporterClient,
177
- ImageExporter,
178
- WasmExporter,
179
- ];
180
- const exporterClass = exporters.find(exporter => exporter.id === settings.exporter.name);
181
- if (!exporterClass) {
182
- this.project.logger.error(`Could not find the "${settings.exporter.name}" exporter.`);
183
- return RendererResult.Error;
184
- }
185
- // Instantiate exporter
186
- this.exporter = await exporterClass.create(this.project, settings);
187
- if (this.exporter.configuration) {
188
- settings = {
189
- ...settings,
190
- ...((await this.exporter.configuration()) ?? {}),
191
- };
192
- }
193
- this.stage.configure(settings);
194
- this.playback.fps = settings.fps;
195
- this.playback.state = PlaybackState.Rendering;
196
- const from = this.status.secondsToFrames(settings.range[0]);
197
- this.frame.current = from;
198
- // Reset
199
- await this.reloadScenes(settings);
200
- await this.playback.recalculate();
201
- await this.playback.reset();
202
- const to = Math.min(this.playback.duration, this.status.secondsToFrames(settings.range[1]));
203
- await this.playback.seek(from);
204
- if (signal.aborted)
205
- return RendererResult.Aborted;
206
- await this.exporter.start?.();
207
- let lastRefresh = performance.now();
208
- let result = RendererResult.Success;
209
- const mediaByFrames = await this.getMediaByFrames(settings);
210
- // Start audio export
211
- let generateAudioPromise;
212
- if (this.exporter && this.exporter.generateAudio) {
213
- generateAudioPromise = this.exporter.generateAudio(mediaByFrames, from, to);
214
- }
215
- if (this.exporter && this.exporter.downloadVideos) {
216
- await this.exporter.downloadVideos(mediaByFrames);
217
- }
218
- // Main rendering loop
219
- await this.playback.seek(from);
220
- try {
221
- this.estimator.reset(1 / (to - from));
222
- await this.exportFrame(signal);
223
- this.estimator.update(clampRemap(from, to, 0, 1, this.playback.frame));
224
- this.estimator.reportProgress();
225
- if (signal.aborted) {
226
- result = RendererResult.Aborted;
227
- }
228
- else {
229
- let finished = false;
230
- while (!finished) {
231
- await this.playback.progress();
232
- await this.exportFrame(signal);
233
- this.estimator.update(clampRemap(from, to, 0, 1, this.playback.frame));
234
- this.estimator.reportProgress();
235
- if (performance.now() - lastRefresh > 1 / 30) {
236
- lastRefresh = performance.now();
237
- await new Promise(resolve => setTimeout(resolve, 0));
238
- }
239
- if (this.playback.finished || this.playback.frame >= to) {
240
- finished = true;
241
- }
242
- if (signal.aborted) {
243
- result = RendererResult.Aborted;
244
- finished = true;
245
- }
246
- }
247
- }
248
- }
249
- catch (e) {
250
- this.project.logger.error(e);
251
- result = RendererResult.Error;
252
- }
253
- await this.exporter.stop?.(result);
254
- // Only merge media when rendering images was actually successful.
255
- if (result === RendererResult.Success &&
256
- this.exporter &&
257
- this.exporter.mergeMedia &&
258
- generateAudioPromise) {
259
- try {
260
- await generateAudioPromise;
261
- await this.exporter.mergeMedia();
262
- }
263
- catch (e) {
264
- this.project.logger.error(e);
265
- result = RendererResult.Error;
266
- }
267
- }
268
- await this.exporter?.kill?.();
269
- this.exporter = null;
270
- return result;
271
- }
272
- async reloadScenes(settings) {
273
- for (let i = 0; i < this.project.scenes.length; i++) {
274
- const scene = this.playback.onScenesRecalculated.current[i];
275
- scene.reload({
276
- size: settings.size,
277
- resolutionScale: settings.resolutionScale,
278
- });
279
- scene.variables.updateSignals(this.project.variables ?? {});
280
- }
281
- }
282
- async exportFrame(signal) {
283
- this.frame.current = this.playback.frame;
284
- await this.stage.render(this.playback.currentScene, this.playback.previousScene);
285
- const sceneFrame = this.playback.frame - this.playback.currentScene.firstFrame;
286
- await this.exporter.handleFrame(this.stage.finalBuffer, this.playback.frame, sceneFrame, this.playback.currentScene.name, signal);
287
- }
288
- async getMediaByFrames(settings) {
289
- this.stage.configure(settings);
290
- this.playback.fps = settings.fps;
291
- this.playback.state = PlaybackState.Rendering;
292
- const from = this.status.secondsToFrames(settings.range[0]);
293
- this.frame.current = from;
294
- await this.reloadScenes(settings);
295
- await this.playback.recalculate();
296
- await this.playback.reset();
297
- const to = Math.min(this.playback.duration, this.status.secondsToFrames(settings.range[1]));
298
- await this.playback.seek(from);
299
- const mediaAssets = [];
300
- try {
301
- const currentMediaAssets = this.playback.currentScene.getMediaAssets();
302
- mediaAssets.push(currentMediaAssets);
303
- let finished = false;
304
- while (!finished) {
305
- await this.playback.progress();
306
- mediaAssets.push(this.playback.currentScene.getMediaAssets());
307
- if (this.playback.finished || this.playback.frame >= to) {
308
- finished = true;
309
- }
310
- }
311
- }
312
- catch (e) {
313
- this.project.logger.error(e);
314
- }
315
- return mediaAssets;
316
- }
317
- }
318
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVuZGVyZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBwL1JlbmRlcmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxlQUFlLEVBQUUsZUFBZSxFQUFDLE1BQU0sV0FBVyxDQUFDO0FBRTNELE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsYUFBYSxFQUNiLFlBQVksR0FFYixNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sYUFBYSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFDakMsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLFVBQVUsQ0FBQztBQUNuQyxPQUFPLEVBQUMsZUFBZSxFQUFFLGFBQWEsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBQ2pFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUVoRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RCxPQUFPLEVBQUMsS0FBSyxFQUFDLE1BQU0sU0FBUyxDQUFDO0FBQzlCLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQXFCOUMsTUFBTSxDQUFOLElBQVksYUFJWDtBQUpELFdBQVksYUFBYTtJQUN2Qix1REFBTyxDQUFBO0lBQ1AsdURBQU8sQ0FBQTtJQUNQLHlEQUFRLENBQUE7QUFDVixDQUFDLEVBSlcsYUFBYSxLQUFiLGFBQWEsUUFJeEI7QUFFRCxNQUFNLENBQU4sSUFBWSxjQUlYO0FBSkQsV0FBWSxjQUFjO0lBQ3hCLHlEQUFPLENBQUE7SUFDUCxxREFBSyxDQUFBO0lBQ0wseURBQU8sQ0FBQTtBQUNULENBQUMsRUFKVyxjQUFjLEtBQWQsY0FBYyxRQUl6QjtBQUVEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sT0FBTyxRQUFRO0lBQ25CLElBQVcsY0FBYztRQUN2QixPQUFPLElBQUksQ0FB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
@@ -1,24 +0,0 @@
1
- import type { Logger } from './Logger';
2
- /**
3
- * @internal
4
- */
5
- export interface WebGLContextOwner {
6
- setup(gl: WebGL2RenderingContext): void;
7
- teardown(gl: WebGL2RenderingContext): void;
8
- }
9
- export declare class SharedWebGLContext {
10
- private readonly logger;
11
- private gl;
12
- private currentOwner;
13
- private readonly programLookup;
14
- constructor(logger: Logger);
15
- borrow(owner: WebGLContextOwner): WebGL2RenderingContext;
16
- /**
17
- * Dispose the WebGL context to free up resources.
18
- */
19
- dispose(): void;
20
- getProgram(fragment: string, vertex: string): WebGLProgram | null;
21
- private getShader;
22
- private getGL;
23
- }
24
- //# sourceMappingURL=SharedWebGLContext.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SharedWebGLContext.d.ts","sourceRoot":"","sources":["../../src/app/SharedWebGLContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,UAAU,CAAC;AAgCrC;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,EAAE,sBAAsB,GAAG,IAAI,CAAC;CAC5C;AAQD,qBAAa,kBAAkB;IAKV,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJ1C,OAAO,CAAC,EAAE,CAAuC;IACjD,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuC;gBAEjC,MAAM,EAAE,MAAM;IAE3C,MAAM,CAAC,KAAK,EAAE,iBAAiB,GAAG,sBAAsB;IAW/D;;OAEG;IACI,OAAO;IAqBP,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAqCxE,OAAO,CAAC,SAAS;IAejB,OAAO,CAAC,KAAK;CA8Bd"}