@twick/core 0.11.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 (373) hide show
  1. package/LICENSE +21 -0
  2. package/lib/app/Logger.d.ts +105 -0
  3. package/lib/app/Logger.d.ts.map +1 -0
  4. package/lib/app/Logger.js +77 -0
  5. package/lib/app/PlaybackManager.d.ts +55 -0
  6. package/lib/app/PlaybackManager.d.ts.map +1 -0
  7. package/lib/app/PlaybackManager.js +179 -0
  8. package/lib/app/PlaybackStatus.d.ts +30 -0
  9. package/lib/app/PlaybackStatus.d.ts.map +1 -0
  10. package/lib/app/PlaybackStatus.js +46 -0
  11. package/lib/app/Player.d.ts +130 -0
  12. package/lib/app/Player.d.ts.map +1 -0
  13. package/lib/app/Player.js +375 -0
  14. package/lib/app/Project.d.ts +145 -0
  15. package/lib/app/Project.d.ts.map +1 -0
  16. package/lib/app/Project.js +10 -0
  17. package/lib/app/Renderer.d.ts +90 -0
  18. package/lib/app/Renderer.d.ts.map +1 -0
  19. package/lib/app/Renderer.js +318 -0
  20. package/lib/app/SharedWebGLContext.d.ts +24 -0
  21. package/lib/app/SharedWebGLContext.d.ts.map +1 -0
  22. package/lib/app/SharedWebGLContext.js +200 -0
  23. package/lib/app/Stage.d.ts +30 -0
  24. package/lib/app/Stage.d.ts.map +1 -0
  25. package/lib/app/Stage.js +75 -0
  26. package/lib/app/TimeEstimator.d.ts +53 -0
  27. package/lib/app/TimeEstimator.d.ts.map +1 -0
  28. package/lib/app/TimeEstimator.js +70 -0
  29. package/lib/app/index.d.ts +16 -0
  30. package/lib/app/index.d.ts.map +1 -0
  31. package/lib/app/index.js +16 -0
  32. package/lib/app/makeProject.d.ts +15 -0
  33. package/lib/app/makeProject.d.ts.map +1 -0
  34. package/lib/app/makeProject.js +72 -0
  35. package/lib/app/project-settings.d.ts +8 -0
  36. package/lib/app/project-settings.d.ts.map +1 -0
  37. package/lib/app/project-settings.js +13 -0
  38. package/lib/decorators/decorate.d.ts +2 -0
  39. package/lib/decorators/decorate.d.ts.map +1 -0
  40. package/lib/decorators/decorate.js +10 -0
  41. package/lib/decorators/deprecated.d.ts +5 -0
  42. package/lib/decorators/deprecated.d.ts.map +1 -0
  43. package/lib/decorators/deprecated.js +23 -0
  44. package/lib/decorators/index.d.ts +9 -0
  45. package/lib/decorators/index.d.ts.map +1 -0
  46. package/lib/decorators/index.js +9 -0
  47. package/lib/decorators/lazy.d.ts +14 -0
  48. package/lib/decorators/lazy.d.ts.map +1 -0
  49. package/lib/decorators/lazy.js +27 -0
  50. package/lib/decorators/threadable.d.ts +2 -0
  51. package/lib/decorators/threadable.d.ts.map +1 -0
  52. package/lib/decorators/threadable.js +7 -0
  53. package/lib/events/AsyncEventDispatcher.d.ts +45 -0
  54. package/lib/events/AsyncEventDispatcher.d.ts.map +1 -0
  55. package/lib/events/AsyncEventDispatcher.js +33 -0
  56. package/lib/events/EventDispatcher.d.ts +38 -0
  57. package/lib/events/EventDispatcher.d.ts.map +1 -0
  58. package/lib/events/EventDispatcher.js +29 -0
  59. package/lib/events/EventDispatcherBase.d.ts +55 -0
  60. package/lib/events/EventDispatcherBase.d.ts.map +1 -0
  61. package/lib/events/EventDispatcherBase.js +68 -0
  62. package/lib/events/FlagDispatcher.d.ts +54 -0
  63. package/lib/events/FlagDispatcher.d.ts.map +1 -0
  64. package/lib/events/FlagDispatcher.js +63 -0
  65. package/lib/events/ValueDispatcher.d.ts +81 -0
  66. package/lib/events/ValueDispatcher.d.ts.map +1 -0
  67. package/lib/events/ValueDispatcher.js +97 -0
  68. package/lib/events/index.d.ts +11 -0
  69. package/lib/events/index.d.ts.map +1 -0
  70. package/lib/events/index.js +11 -0
  71. package/lib/exporter/Exporter.d.ts +101 -0
  72. package/lib/exporter/Exporter.d.ts.map +1 -0
  73. package/lib/exporter/Exporter.js +2 -0
  74. package/lib/exporter/FFmpegExporter.d.ts +50 -0
  75. package/lib/exporter/FFmpegExporter.d.ts.map +1 -0
  76. package/lib/exporter/FFmpegExporter.js +140 -0
  77. package/lib/exporter/ImageExporter.d.ts +34 -0
  78. package/lib/exporter/ImageExporter.d.ts.map +1 -0
  79. package/lib/exporter/ImageExporter.js +80 -0
  80. package/lib/exporter/WasmExporter.d.ts +19 -0
  81. package/lib/exporter/WasmExporter.d.ts.map +1 -0
  82. package/lib/exporter/WasmExporter.js +78 -0
  83. package/lib/exporter/download-videos.d.ts +3 -0
  84. package/lib/exporter/download-videos.d.ts.map +1 -0
  85. package/lib/exporter/download-videos.js +45 -0
  86. package/lib/exporter/index.d.ts +5 -0
  87. package/lib/exporter/index.d.ts.map +1 -0
  88. package/lib/exporter/index.js +5 -0
  89. package/lib/flow/all.d.ts +18 -0
  90. package/lib/flow/all.d.ts.map +1 -0
  91. package/lib/flow/all.js +25 -0
  92. package/lib/flow/any.d.ts +18 -0
  93. package/lib/flow/any.d.ts.map +1 -0
  94. package/lib/flow/any.js +25 -0
  95. package/lib/flow/chain.d.ts +36 -0
  96. package/lib/flow/chain.d.ts.map +1 -0
  97. package/lib/flow/chain.js +46 -0
  98. package/lib/flow/delay.d.ts +29 -0
  99. package/lib/flow/delay.d.ts.map +1 -0
  100. package/lib/flow/delay.js +39 -0
  101. package/lib/flow/every.d.ts +41 -0
  102. package/lib/flow/every.d.ts.map +1 -0
  103. package/lib/flow/every.js +61 -0
  104. package/lib/flow/index.d.ts +17 -0
  105. package/lib/flow/index.d.ts.map +1 -0
  106. package/lib/flow/index.js +17 -0
  107. package/lib/flow/join.d.ts +35 -0
  108. package/lib/flow/join.d.ts.map +1 -0
  109. package/lib/flow/join.js +33 -0
  110. package/lib/flow/loop.d.ts +58 -0
  111. package/lib/flow/loop.d.ts.map +1 -0
  112. package/lib/flow/loop.js +51 -0
  113. package/lib/flow/loopFor.d.ts +25 -0
  114. package/lib/flow/loopFor.d.ts.map +1 -0
  115. package/lib/flow/loopFor.js +42 -0
  116. package/lib/flow/names.d.ts +3 -0
  117. package/lib/flow/names.d.ts.map +1 -0
  118. package/lib/flow/names.js +11 -0
  119. package/lib/flow/run.d.ts +45 -0
  120. package/lib/flow/run.d.ts.map +1 -0
  121. package/lib/flow/run.js +14 -0
  122. package/lib/flow/scheduling.d.ts +18 -0
  123. package/lib/flow/scheduling.d.ts.map +1 -0
  124. package/lib/flow/scheduling.js +33 -0
  125. package/lib/flow/sequence.d.ts +22 -0
  126. package/lib/flow/sequence.d.ts.map +1 -0
  127. package/lib/flow/sequence.js +31 -0
  128. package/lib/index.d.ts +16 -0
  129. package/lib/index.d.ts.map +1 -0
  130. package/lib/index.js +16 -0
  131. package/lib/media/index.d.ts +7 -0
  132. package/lib/media/index.d.ts.map +1 -0
  133. package/lib/media/index.js +7 -0
  134. package/lib/media/loadImage.d.ts +8 -0
  135. package/lib/media/loadImage.d.ts.map +1 -0
  136. package/lib/media/loadImage.js +29 -0
  137. package/lib/plugin/DefaultPlugin.d.ts +10 -0
  138. package/lib/plugin/DefaultPlugin.d.ts.map +1 -0
  139. package/lib/plugin/DefaultPlugin.js +17 -0
  140. package/lib/plugin/Plugin.d.ts +53 -0
  141. package/lib/plugin/Plugin.d.ts.map +1 -0
  142. package/lib/plugin/Plugin.js +2 -0
  143. package/lib/plugin/index.d.ts +3 -0
  144. package/lib/plugin/index.d.ts.map +1 -0
  145. package/lib/plugin/index.js +3 -0
  146. package/lib/plugin/makePlugin.d.ts +15 -0
  147. package/lib/plugin/makePlugin.d.ts.map +1 -0
  148. package/lib/plugin/makePlugin.js +16 -0
  149. package/lib/scenes/GeneratorScene.d.ts +95 -0
  150. package/lib/scenes/GeneratorScene.d.ts.map +1 -0
  151. package/lib/scenes/GeneratorScene.js +273 -0
  152. package/lib/scenes/Inspectable.d.ts +71 -0
  153. package/lib/scenes/Inspectable.d.ts.map +1 -0
  154. package/lib/scenes/Inspectable.js +4 -0
  155. package/lib/scenes/LifecycleEvents.d.ts +18 -0
  156. package/lib/scenes/LifecycleEvents.d.ts.map +1 -0
  157. package/lib/scenes/LifecycleEvents.js +45 -0
  158. package/lib/scenes/Random.d.ts +66 -0
  159. package/lib/scenes/Random.d.ts.map +1 -0
  160. package/lib/scenes/Random.js +101 -0
  161. package/lib/scenes/Scene.d.ts +298 -0
  162. package/lib/scenes/Scene.d.ts.map +1 -0
  163. package/lib/scenes/Scene.js +25 -0
  164. package/lib/scenes/SceneState.d.ts +34 -0
  165. package/lib/scenes/SceneState.d.ts.map +1 -0
  166. package/lib/scenes/SceneState.js +35 -0
  167. package/lib/scenes/Shaders.d.ts +63 -0
  168. package/lib/scenes/Shaders.d.ts.map +1 -0
  169. package/lib/scenes/Shaders.js +158 -0
  170. package/lib/scenes/Slides.d.ts +33 -0
  171. package/lib/scenes/Slides.d.ts.map +1 -0
  172. package/lib/scenes/Slides.js +115 -0
  173. package/lib/scenes/Threadable.d.ts +19 -0
  174. package/lib/scenes/Threadable.d.ts.map +1 -0
  175. package/lib/scenes/Threadable.js +4 -0
  176. package/lib/scenes/Variables.d.ts +24 -0
  177. package/lib/scenes/Variables.d.ts.map +1 -0
  178. package/lib/scenes/Variables.js +39 -0
  179. package/lib/scenes/index.d.ts +16 -0
  180. package/lib/scenes/index.d.ts.map +1 -0
  181. package/lib/scenes/index.js +16 -0
  182. package/lib/signals/CompoundSignalContext.d.ts +21 -0
  183. package/lib/signals/CompoundSignalContext.d.ts.map +1 -0
  184. package/lib/signals/CompoundSignalContext.js +73 -0
  185. package/lib/signals/ComputedContext.d.ts +14 -0
  186. package/lib/signals/ComputedContext.d.ts.map +1 -0
  187. package/lib/signals/ComputedContext.js +36 -0
  188. package/lib/signals/DependencyContext.d.ts +32 -0
  189. package/lib/signals/DependencyContext.d.ts.map +1 -0
  190. package/lib/signals/DependencyContext.js +87 -0
  191. package/lib/signals/SignalContext.d.ts +120 -0
  192. package/lib/signals/SignalContext.d.ts.map +1 -0
  193. package/lib/signals/SignalContext.js +245 -0
  194. package/lib/signals/createComputed.d.ts +3 -0
  195. package/lib/signals/createComputed.d.ts.map +1 -0
  196. package/lib/signals/createComputed.js +5 -0
  197. package/lib/signals/createComputedAsync.d.ts +4 -0
  198. package/lib/signals/createComputedAsync.d.ts.map +1 -0
  199. package/lib/signals/createComputedAsync.js +15 -0
  200. package/lib/signals/createSignal.d.ts +5 -0
  201. package/lib/signals/createSignal.d.ts.map +1 -0
  202. package/lib/signals/createSignal.js +6 -0
  203. package/lib/signals/index.d.ts +16 -0
  204. package/lib/signals/index.d.ts.map +1 -0
  205. package/lib/signals/index.js +16 -0
  206. package/lib/signals/symbols.d.ts +2 -0
  207. package/lib/signals/symbols.d.ts.map +1 -0
  208. package/lib/signals/symbols.js +2 -0
  209. package/lib/signals/types.d.ts +51 -0
  210. package/lib/signals/types.d.ts.map +1 -0
  211. package/lib/signals/types.js +2 -0
  212. package/lib/signals/utils.d.ts +5 -0
  213. package/lib/signals/utils.d.ts.map +1 -0
  214. package/lib/signals/utils.js +10 -0
  215. package/lib/threading/Thread.d.ts +77 -0
  216. package/lib/threading/Thread.d.ts.map +1 -0
  217. package/lib/threading/Thread.js +169 -0
  218. package/lib/threading/ThreadGenerator.d.ts +39 -0
  219. package/lib/threading/ThreadGenerator.d.ts.map +1 -0
  220. package/lib/threading/ThreadGenerator.js +17 -0
  221. package/lib/threading/cancel.d.ts +17 -0
  222. package/lib/threading/cancel.d.ts.map +1 -0
  223. package/lib/threading/cancel.js +26 -0
  224. package/lib/threading/index.d.ts +11 -0
  225. package/lib/threading/index.d.ts.map +1 -0
  226. package/lib/threading/index.js +11 -0
  227. package/lib/threading/spawn.d.ts +28 -0
  228. package/lib/threading/spawn.d.ts.map +1 -0
  229. package/lib/threading/spawn.js +30 -0
  230. package/lib/threading/threads.d.ts +46 -0
  231. package/lib/threading/threads.d.ts.map +1 -0
  232. package/lib/threading/threads.js +89 -0
  233. package/lib/transitions/fadeTransition.d.ts +8 -0
  234. package/lib/transitions/fadeTransition.d.ts.map +1 -0
  235. package/lib/transitions/fadeTransition.js +16 -0
  236. package/lib/transitions/index.d.ts +11 -0
  237. package/lib/transitions/index.d.ts.map +1 -0
  238. package/lib/transitions/index.js +11 -0
  239. package/lib/transitions/slideTransition.d.ts +18 -0
  240. package/lib/transitions/slideTransition.d.ts.map +1 -0
  241. package/lib/transitions/slideTransition.js +14 -0
  242. package/lib/transitions/useTransition.d.ts +10 -0
  243. package/lib/transitions/useTransition.d.ts.map +1 -0
  244. package/lib/transitions/useTransition.js +27 -0
  245. package/lib/transitions/zoomInTransition.d.ts +10 -0
  246. package/lib/transitions/zoomInTransition.d.ts.map +1 -0
  247. package/lib/transitions/zoomInTransition.js +33 -0
  248. package/lib/transitions/zoomOutTransition.d.ts +10 -0
  249. package/lib/transitions/zoomOutTransition.d.ts.map +1 -0
  250. package/lib/transitions/zoomOutTransition.js +33 -0
  251. package/lib/tsconfig.build.tsbuildinfo +1 -0
  252. package/lib/tweening/helpers.d.ts +5 -0
  253. package/lib/tweening/helpers.d.ts.map +1 -0
  254. package/lib/tweening/helpers.js +16 -0
  255. package/lib/tweening/index.d.ts +11 -0
  256. package/lib/tweening/index.d.ts.map +1 -0
  257. package/lib/tweening/index.js +11 -0
  258. package/lib/tweening/interpolationFunctions.d.ts +38 -0
  259. package/lib/tweening/interpolationFunctions.d.ts.map +1 -0
  260. package/lib/tweening/interpolationFunctions.js +107 -0
  261. package/lib/tweening/spring.d.ts +20 -0
  262. package/lib/tweening/spring.d.ts.map +1 -0
  263. package/lib/tweening/spring.js +103 -0
  264. package/lib/tweening/timingFunctions.d.ts +46 -0
  265. package/lib/tweening/timingFunctions.d.ts.map +1 -0
  266. package/lib/tweening/timingFunctions.js +233 -0
  267. package/lib/tweening/tween.d.ts +3 -0
  268. package/lib/tweening/tween.d.ts.map +1 -0
  269. package/lib/tweening/tween.js +21 -0
  270. package/lib/types/BBox.d.ts +73 -0
  271. package/lib/types/BBox.d.ts.map +1 -0
  272. package/lib/types/BBox.js +249 -0
  273. package/lib/types/Canvas.d.ts +3 -0
  274. package/lib/types/Canvas.d.ts.map +1 -0
  275. package/lib/types/Canvas.js +2 -0
  276. package/lib/types/Color.d.ts +65 -0
  277. package/lib/types/Color.d.ts.map +1 -0
  278. package/lib/types/Color.js +185 -0
  279. package/lib/types/Matrix.d.ts +3 -0
  280. package/lib/types/Matrix.d.ts.map +1 -0
  281. package/lib/types/Matrix.js +10 -0
  282. package/lib/types/Matrix2D.d.ts +363 -0
  283. package/lib/types/Matrix2D.d.ts.map +1 -0
  284. package/lib/types/Matrix2D.js +554 -0
  285. package/lib/types/Origin.d.ts +17 -0
  286. package/lib/types/Origin.d.ts.map +1 -0
  287. package/lib/types/Origin.js +53 -0
  288. package/lib/types/Spacing.d.ts +36 -0
  289. package/lib/types/Spacing.d.ts.map +1 -0
  290. package/lib/types/Spacing.js +70 -0
  291. package/lib/types/Type.d.ts +9 -0
  292. package/lib/types/Type.d.ts.map +1 -0
  293. package/lib/types/Type.js +5 -0
  294. package/lib/types/Vector.d.ts +203 -0
  295. package/lib/types/Vector.d.ts.map +1 -0
  296. package/lib/types/Vector.js +355 -0
  297. package/lib/types/alignment-enums.d.ts +22 -0
  298. package/lib/types/alignment-enums.d.ts.map +1 -0
  299. package/lib/types/alignment-enums.js +25 -0
  300. package/lib/types/index.d.ts +17 -0
  301. package/lib/types/index.d.ts.map +1 -0
  302. package/lib/types/index.js +17 -0
  303. package/lib/types/vector-transformations.d.ts +20 -0
  304. package/lib/types/vector-transformations.d.ts.map +1 -0
  305. package/lib/types/vector-transformations.js +31 -0
  306. package/lib/utils/DetailedError.d.ts +24 -0
  307. package/lib/utils/DetailedError.d.ts.map +1 -0
  308. package/lib/utils/DetailedError.js +16 -0
  309. package/lib/utils/ExperimentalError.d.ts +10 -0
  310. package/lib/utils/ExperimentalError.d.ts.map +1 -0
  311. package/lib/utils/ExperimentalError.js +32 -0
  312. package/lib/utils/Semaphore.d.ts +12 -0
  313. package/lib/utils/Semaphore.d.ts.map +1 -0
  314. package/lib/utils/Semaphore.js +25 -0
  315. package/lib/utils/beginSlide.d.ts +3 -0
  316. package/lib/utils/beginSlide.d.ts.map +1 -0
  317. package/lib/utils/beginSlide.js +12 -0
  318. package/lib/utils/capitalize.d.ts +2 -0
  319. package/lib/utils/capitalize.d.ts.map +1 -0
  320. package/lib/utils/capitalize.js +4 -0
  321. package/lib/utils/createRef.d.ts +15 -0
  322. package/lib/utils/createRef.d.ts.map +1 -0
  323. package/lib/utils/createRef.js +21 -0
  324. package/lib/utils/createRefArray.d.ts +27 -0
  325. package/lib/utils/createRefArray.d.ts.map +1 -0
  326. package/lib/utils/createRefArray.js +49 -0
  327. package/lib/utils/createRefMap.d.ts +50 -0
  328. package/lib/utils/createRefMap.d.ts.map +1 -0
  329. package/lib/utils/createRefMap.js +77 -0
  330. package/lib/utils/debug.d.ts +24 -0
  331. package/lib/utils/debug.d.ts.map +1 -0
  332. package/lib/utils/debug.js +47 -0
  333. package/lib/utils/deprecate.d.ts +9 -0
  334. package/lib/utils/deprecate.d.ts.map +1 -0
  335. package/lib/utils/deprecate.js +15 -0
  336. package/lib/utils/errorToLog.d.ts +3 -0
  337. package/lib/utils/errorToLog.d.ts.map +1 -0
  338. package/lib/utils/errorToLog.js +8 -0
  339. package/lib/utils/experimentalLog.d.ts +3 -0
  340. package/lib/utils/experimentalLog.d.ts.map +1 -0
  341. package/lib/utils/experimentalLog.js +10 -0
  342. package/lib/utils/getContext.d.ts +2 -0
  343. package/lib/utils/getContext.d.ts.map +1 -0
  344. package/lib/utils/getContext.js +8 -0
  345. package/lib/utils/index.d.ts +26 -0
  346. package/lib/utils/index.d.ts.map +1 -0
  347. package/lib/utils/index.js +26 -0
  348. package/lib/utils/math.d.ts +15 -0
  349. package/lib/utils/math.d.ts.map +1 -0
  350. package/lib/utils/math.js +15 -0
  351. package/lib/utils/range.d.ts +40 -0
  352. package/lib/utils/range.d.ts.map +1 -0
  353. package/lib/utils/range.js +18 -0
  354. package/lib/utils/useContext.d.ts +13 -0
  355. package/lib/utils/useContext.d.ts.map +1 -0
  356. package/lib/utils/useContext.js +18 -0
  357. package/lib/utils/usePlayback.d.ts +8 -0
  358. package/lib/utils/usePlayback.d.ts.map +1 -0
  359. package/lib/utils/usePlayback.js +20 -0
  360. package/lib/utils/useScene.d.ts +17 -0
  361. package/lib/utils/useScene.d.ts.map +1 -0
  362. package/lib/utils/useScene.js +33 -0
  363. package/lib/utils/useThread.d.ts +8 -0
  364. package/lib/utils/useThread.d.ts.map +1 -0
  365. package/lib/utils/useThread.js +24 -0
  366. package/lib/utils/useTime.d.ts +19 -0
  367. package/lib/utils/useTime.d.ts.map +1 -0
  368. package/lib/utils/useTime.js +22 -0
  369. package/package.json +36 -0
  370. package/project.d.ts +24 -0
  371. package/shaders/common.glsl +15 -0
  372. package/shaders/fragment.glsl +8 -0
  373. package/tsconfig.project.json +14 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2022 motion-canvas
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,105 @@
1
+ export declare enum LogLevel {
2
+ Error = "error",
3
+ Warn = "warn",
4
+ Info = "info",
5
+ Http = "http",
6
+ Verbose = "verbose",
7
+ Debug = "debug",
8
+ Silly = "silly"
9
+ }
10
+ /**
11
+ * Represents an individual log entry.
12
+ *
13
+ * @remarks
14
+ * When displayed in the editor, the log entry will have the following format:
15
+ * ```
16
+ * inspect node ┐
17
+ * ┌ expand more duration ┐ │
18
+ * ▼ ▼ ▼
19
+ * ┌────────────────────────────────────────────┐
20
+ * │ ▶ message 300 ms (+) │
21
+ * ├────────────────────────────────────────────┤
22
+ * │ remarks │
23
+ * │ object │
24
+ * │ stacktrace │
25
+ * └────────────────────────────────────────────┘
26
+ * ```
27
+ */
28
+ export interface LogPayload {
29
+ /**
30
+ * The log level.
31
+ */
32
+ level?: LogLevel;
33
+ /**
34
+ * The main message of the log.
35
+ *
36
+ * @remarks
37
+ * Always visible.
38
+ */
39
+ message: string;
40
+ /**
41
+ * Additional information about the log.
42
+ *
43
+ * @remarks
44
+ * Visible only when the log is expanded.
45
+ */
46
+ remarks?: string;
47
+ /**
48
+ * An object that will be serialized as JSON and displayed under the message.
49
+ *
50
+ * @remarks
51
+ * Visible only when the log is expanded.
52
+ */
53
+ object?: any;
54
+ /**
55
+ * The stack trace of the log.
56
+ *
57
+ * @remarks
58
+ * Visible only when the log is expanded.
59
+ * The current stack trace can be obtained using `new Error().stack`.
60
+ * Both Chromium and Firefox stack traces are supported.
61
+ */
62
+ stack?: string;
63
+ /**
64
+ * An optional duration in milliseconds.
65
+ *
66
+ * @remarks
67
+ * Can be used to display any duration related to the log.
68
+ * The value is always visible next to the message.
69
+ */
70
+ durationMs?: number;
71
+ /**
72
+ * An optional key used to inspect a related object.
73
+ *
74
+ * @remarks
75
+ * This will be used together with the {@link scenes.Inspectable} interface to
76
+ * display additional information about the inspected object.
77
+ * When specified, the log will have an "inspect" button that will open the
78
+ * "Properties" tab and select the inspected object.
79
+ */
80
+ inspect?: string;
81
+ /**
82
+ * Any additional information that the log may contain.
83
+ */
84
+ [K: string]: any;
85
+ }
86
+ export declare class Logger {
87
+ /**
88
+ * Triggered when a new message is logged.
89
+ */
90
+ get onLogged(): import("../events").Subscribable<LogPayload, import("../events").EventHandler<LogPayload>>;
91
+ private readonly logged;
92
+ readonly history: LogPayload[];
93
+ private profilers;
94
+ log(payload: LogPayload): void;
95
+ error(payload: string | LogPayload): void;
96
+ warn(payload: string | LogPayload): void;
97
+ info(payload: string | LogPayload): void;
98
+ http(payload: string | LogPayload): void;
99
+ verbose(payload: string | LogPayload): void;
100
+ debug(payload: string | LogPayload): void;
101
+ silly(payload: string | LogPayload): void;
102
+ protected logLevel(level: LogLevel, payload: string | LogPayload): void;
103
+ profile(id: string, payload?: LogPayload): void;
104
+ }
105
+ //# sourceMappingURL=Logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../../src/app/Logger.ts"],"names":[],"mappings":"AAEA,oBAAY,QAAQ;IAClB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,KAAK,UAAU;CAChB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,KAAK,CAAC,EAAE,QAAQ,CAAC;IAEjB;;;;;OAKG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,GAAG,CAAC;IAEb;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AAED,qBAAa,MAAM;IACjB;;OAEG;IACH,IAAW,QAAQ,+FAElB;IACD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;IAC5D,SAAgB,OAAO,EAAE,UAAU,EAAE,CAAM;IAE3C,OAAO,CAAC,SAAS,CAA8B;IAExC,GAAG,CAAC,OAAO,EAAE,UAAU;IAKvB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAclC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAQjC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAQjC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAQjC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAQpC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAIlC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAQzC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU;IAMzD,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU;CAgBhD"}
@@ -0,0 +1,77 @@
1
+ import { EventDispatcher } from '../events';
2
+ export var LogLevel;
3
+ (function (LogLevel) {
4
+ LogLevel["Error"] = "error";
5
+ LogLevel["Warn"] = "warn";
6
+ LogLevel["Info"] = "info";
7
+ LogLevel["Http"] = "http";
8
+ LogLevel["Verbose"] = "verbose";
9
+ LogLevel["Debug"] = "debug";
10
+ LogLevel["Silly"] = "silly";
11
+ })(LogLevel || (LogLevel = {}));
12
+ export class Logger {
13
+ constructor() {
14
+ this.logged = new EventDispatcher();
15
+ this.history = [];
16
+ this.profilers = {};
17
+ }
18
+ /**
19
+ * Triggered when a new message is logged.
20
+ */
21
+ get onLogged() {
22
+ return this.logged.subscribable;
23
+ }
24
+ log(payload) {
25
+ this.logged.dispatch(payload);
26
+ this.history.push(payload);
27
+ }
28
+ error(payload) {
29
+ console.error('error from browser process:', typeof payload === 'string' ? payload : payload.message);
30
+ this.logLevel(LogLevel.Error, payload);
31
+ if (window.browserError) {
32
+ window.browserError(typeof payload === 'string' ? payload : payload.message);
33
+ }
34
+ }
35
+ warn(payload) {
36
+ console.warn('warning from browser process:', typeof payload === 'string' ? payload : payload.message);
37
+ this.logLevel(LogLevel.Warn, payload);
38
+ }
39
+ info(payload) {
40
+ console.info('info from browser process:', typeof payload === 'string' ? payload : payload.message);
41
+ this.logLevel(LogLevel.Info, payload);
42
+ }
43
+ http(payload) {
44
+ console.log('http log from browser process:', typeof payload === 'string' ? payload : payload.message);
45
+ this.logLevel(LogLevel.Http, payload);
46
+ }
47
+ verbose(payload) {
48
+ console.log('verbose log from browser process:', typeof payload === 'string' ? payload : payload.message);
49
+ this.logLevel(LogLevel.Verbose, payload);
50
+ }
51
+ debug(payload) {
52
+ this.logLevel(LogLevel.Debug, payload);
53
+ }
54
+ silly(payload) {
55
+ console.log('silly log from browser process:', typeof payload === 'string' ? payload : payload.message);
56
+ this.logLevel(LogLevel.Silly, payload);
57
+ }
58
+ logLevel(level, payload) {
59
+ const result = typeof payload === 'string' ? { message: payload } : payload;
60
+ result.level = level;
61
+ this.log(result);
62
+ }
63
+ profile(id, payload) {
64
+ const time = performance.now();
65
+ if (this.profilers[id]) {
66
+ const timeEnd = this.profilers[id];
67
+ delete this.profilers[id];
68
+ const result = payload ?? { message: id };
69
+ result.level ?? (result.level = LogLevel.Debug);
70
+ result.durationMs = time - timeEnd;
71
+ this.log(result);
72
+ return;
73
+ }
74
+ this.profilers[id] = time;
75
+ }
76
+ }
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcC9Mb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUUxQyxNQUFNLENBQU4sSUFBWSxRQVFYO0FBUkQsV0FBWSxRQUFRO0lBQ2xCLDJCQUFlLENBQUE7SUFDZix5QkFBYSxDQUFBO0lBQ2IseUJBQWEsQ0FBQTtJQUNiLHlCQUFhLENBQUE7SUFDYiwrQkFBbUIsQ0FBQTtJQUNuQiwyQkFBZSxDQUFBO0lBQ2YsMkJBQWUsQ0FBQTtBQUNqQixDQUFDLEVBUlcsUUFBUSxLQUFSLFFBQVEsUUFRbkI7QUFzRkQsTUFBTSxPQUFPLE1BQU07SUFBbkI7UUFPbUIsV0FBTSxHQUFHLElBQUksZUFBZSxFQUFjLENBQUM7UUFDNUMsWUFBTyxHQUFpQixFQUFFLENBQUM7UUFFbkMsY0FBUyxHQUEyQixFQUFFLENBQUM7SUF1RmpELENBQUM7SUFoR0M7O09BRUc7SUFDSCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztJQUNsQyxDQUFDO0lBTU0sR0FBRyxDQUFDLE9BQW1CO1FBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFTSxLQUFLLENBQUMsT0FBNEI7UUFDdkMsT0FBTyxDQUFDLEtBQUssQ0FDWCw2QkFBNkIsRUFDN0IsT0FBTyxPQUFPLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQ3hELENBQUM7UUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFdkMsSUFBSyxNQUFj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
@@ -0,0 +1,55 @@
1
+ import type { Scene, SceneDescriptionReload, Slide } from '../scenes';
2
+ export declare enum PlaybackState {
3
+ Playing = 0,
4
+ Rendering = 1,
5
+ Paused = 2,
6
+ Presenting = 3
7
+ }
8
+ /**
9
+ * A general class for managing a sequence of scenes.
10
+ *
11
+ * @remarks
12
+ * This class provides primitive operations that can be executed on a scene
13
+ * sequence, such as {@link progress} or {@link seek}.
14
+ *
15
+ * @internal
16
+ */
17
+ export declare class PlaybackManager {
18
+ /**
19
+ * Triggered when the active scene changes.
20
+ *
21
+ * @eventProperty
22
+ */
23
+ get onSceneChanged(): import("../events").SubscribableValueEvent<Scene<unknown>>;
24
+ /**
25
+ * Triggered when the scenes get recalculated.
26
+ *
27
+ * @remarks
28
+ * This event indicates that the timing of at least one scene has changed.
29
+ *
30
+ * @eventProperty
31
+ */
32
+ get onScenesRecalculated(): import("../events").SubscribableValueEvent<Scene<unknown>[]>;
33
+ frame: number;
34
+ speed: number;
35
+ fps: number;
36
+ duration: number;
37
+ finished: boolean;
38
+ slides: Slide[];
39
+ previousScene: Scene | null;
40
+ state: PlaybackState;
41
+ get currentScene(): Scene;
42
+ set currentScene(scene: Scene);
43
+ private currentSceneReference;
44
+ private scenes;
45
+ setup(scenes: Scene[]): void;
46
+ progress(): Promise<boolean>;
47
+ seek(frame: number): Promise<boolean>;
48
+ reset(): Promise<void>;
49
+ reload(description?: SceneDescriptionReload<never>): void;
50
+ recalculate(): Promise<void>;
51
+ private next;
52
+ private findBestScene;
53
+ private getNextScene;
54
+ }
55
+ //# sourceMappingURL=PlaybackManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlaybackManager.d.ts","sourceRoot":"","sources":["../../src/app/PlaybackManager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAC,MAAM,WAAW,CAAC;AAEpE,oBAAY,aAAa;IACvB,OAAO,IAAA;IACP,SAAS,IAAA;IACT,MAAM,IAAA;IACN,UAAU,IAAA;CACX;AAED;;;;;;;;GAQG;AACH,qBAAa,eAAe;IAC1B;;;;OAIG;IACH,IAAW,cAAc,+DAKxB;IAED;;;;;;;OAOG;IACH,IAAW,oBAAoB,iEAE9B;IAEM,KAAK,SAAK;IACV,KAAK,SAAK;IACV,GAAG,SAAM;IACT,QAAQ,SAAK;IACb,QAAQ,UAAS;IACjB,MAAM,EAAE,KAAK,EAAE,CAAM;IAErB,aAAa,EAAE,KAAK,GAAG,IAAI,CAAQ;IACnC,KAAK,gBAAwB;IAEpC,IAAW,YAAY,IAAI,KAAK,CAK/B;IAED,IAAW,YAAY,CAAC,KAAK,EAAE,KAAK,EAMnC;IAED,OAAO,CAAC,qBAAqB,CAAuC;IACpE,OAAO,CAAC,MAAM,CAAoC;IAE3C,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE;IAKf,QAAQ;IAKR,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA4BrC,KAAK;IAOX,MAAM,CAAC,WAAW,CAAC,EAAE,sBAAsB,CAAC,KAAK,CAAC;IAI5C,WAAW;YAyBV,IAAI;IAmClB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,YAAY;CAYrB"}
@@ -0,0 +1,179 @@
1
+ import { ValueDispatcher } from '../events';
2
+ export var PlaybackState;
3
+ (function (PlaybackState) {
4
+ PlaybackState[PlaybackState["Playing"] = 0] = "Playing";
5
+ PlaybackState[PlaybackState["Rendering"] = 1] = "Rendering";
6
+ PlaybackState[PlaybackState["Paused"] = 2] = "Paused";
7
+ PlaybackState[PlaybackState["Presenting"] = 3] = "Presenting";
8
+ })(PlaybackState || (PlaybackState = {}));
9
+ /**
10
+ * A general class for managing a sequence of scenes.
11
+ *
12
+ * @remarks
13
+ * This class provides primitive operations that can be executed on a scene
14
+ * sequence, such as {@link progress} or {@link seek}.
15
+ *
16
+ * @internal
17
+ */
18
+ export class PlaybackManager {
19
+ constructor() {
20
+ this.frame = 0;
21
+ this.speed = 1;
22
+ this.fps = 30;
23
+ this.duration = 0;
24
+ this.finished = false;
25
+ this.slides = [];
26
+ this.previousScene = null;
27
+ this.state = PlaybackState.Paused;
28
+ this.currentSceneReference = null;
29
+ this.scenes = new ValueDispatcher([]);
30
+ }
31
+ /**
32
+ * Triggered when the active scene changes.
33
+ *
34
+ * @eventProperty
35
+ */
36
+ get onSceneChanged() {
37
+ if (this.currentSceneReference === null) {
38
+ throw new Error('PlaybackManager has not been properly initialized');
39
+ }
40
+ return this.currentSceneReference.subscribable;
41
+ }
42
+ /**
43
+ * Triggered when the scenes get recalculated.
44
+ *
45
+ * @remarks
46
+ * This event indicates that the timing of at least one scene has changed.
47
+ *
48
+ * @eventProperty
49
+ */
50
+ get onScenesRecalculated() {
51
+ return this.scenes.subscribable;
52
+ }
53
+ get currentScene() {
54
+ if (this.currentSceneReference === null) {
55
+ throw new Error('PlaybackManager has not been properly initialized');
56
+ }
57
+ return this.currentSceneReference.current;
58
+ }
59
+ set currentScene(scene) {
60
+ if (!scene) {
61
+ throw new Error('Invalid scene.');
62
+ }
63
+ this.currentSceneReference ?? (this.currentSceneReference = new ValueDispatcher(scene));
64
+ this.currentSceneReference.current = scene;
65
+ }
66
+ setup(scenes) {
67
+ this.scenes.current = scenes;
68
+ this.currentScene = scenes[0];
69
+ }
70
+ async progress() {
71
+ this.finished = await this.next();
72
+ return this.finished;
73
+ }
74
+ async seek(frame) {
75
+ if (frame <= this.frame ||
76
+ (this.currentScene.isCached() && this.currentScene.lastFrame < frame)) {
77
+ const scene = this.findBestScene(frame);
78
+ if (scene !== this.currentScene) {
79
+ this.currentScene.stopAllMedia();
80
+ this.previousScene = null;
81
+ this.currentScene = scene;
82
+ this.frame = this.currentScene.firstFrame;
83
+ await this.currentScene.reset();
84
+ }
85
+ else if (this.frame >= frame) {
86
+ this.previousScene = null;
87
+ this.frame = this.currentScene.firstFrame;
88
+ await this.currentScene.reset();
89
+ }
90
+ }
91
+ this.finished = false;
92
+ while (this.frame < frame && !this.finished) {
93
+ this.finished = await this.next();
94
+ }
95
+ return this.finished;
96
+ }
97
+ async reset() {
98
+ this.previousScene = null;
99
+ this.currentScene = this.scenes.current[0];
100
+ this.frame = 0;
101
+ await this.currentScene.reset();
102
+ }
103
+ reload(description) {
104
+ this.scenes.current.forEach(scene => scene.reload(description));
105
+ }
106
+ async recalculate() {
107
+ this.previousScene = null;
108
+ this.slides = [];
109
+ const speed = this.speed;
110
+ this.frame = 0;
111
+ this.speed = 1;
112
+ const scenes = [];
113
+ try {
114
+ for (const scene of this.scenes.current) {
115
+ await scene.recalculate(frame => {
116
+ this.frame = frame;
117
+ });
118
+ this.slides.push(...scene.slides.onChanged.current);
119
+ scenes.push(scene);
120
+ }
121
+ }
122
+ finally {
123
+ this.speed = speed;
124
+ }
125
+ this.scenes.current = scenes;
126
+ this.duration = this.frame;
127
+ }
128
+ async next() {
129
+ if (this.previousScene) {
130
+ await this.previousScene.next();
131
+ if (this.currentScene.isFinished()) {
132
+ this.previousScene = null;
133
+ }
134
+ }
135
+ this.frame += this.speed;
136
+ if (this.currentScene.isFinished()) {
137
+ return true;
138
+ }
139
+ await this.currentScene.next();
140
+ if (this.previousScene && this.currentScene.isAfterTransitionIn()) {
141
+ this.previousScene = null;
142
+ }
143
+ if (this.currentScene.canTransitionOut()) {
144
+ this.previousScene = this.currentScene;
145
+ const nextScene = this.getNextScene(this.previousScene);
146
+ if (nextScene) {
147
+ this.previousScene.stopAllMedia();
148
+ this.currentScene = nextScene;
149
+ await this.currentScene.reset(this.previousScene);
150
+ }
151
+ if (!nextScene || this.currentScene.isAfterTransitionIn()) {
152
+ this.previousScene = null;
153
+ }
154
+ }
155
+ return this.currentScene.isFinished();
156
+ }
157
+ findBestScene(frame) {
158
+ let lastScene = this.scenes.current[0];
159
+ for (const scene of this.scenes.current) {
160
+ if (!scene.isCached() || scene.lastFrame > frame) {
161
+ return scene;
162
+ }
163
+ lastScene = scene;
164
+ }
165
+ return lastScene;
166
+ }
167
+ getNextScene(scene) {
168
+ const scenes = this.scenes.current;
169
+ if (!scene) {
170
+ return scenes[0];
171
+ }
172
+ const index = scenes.findIndex(s => s === scene);
173
+ if (index < 0) {
174
+ return null;
175
+ }
176
+ return scenes[index + 1] ?? null;
177
+ }
178
+ }
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGxheWJhY2tNYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcC9QbGF5YmFja01hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUcxQyxNQUFNLENBQU4sSUFBWSxhQUtYO0FBTEQsV0FBWSxhQUFhO0lBQ3ZCLHVEQUFPLENBQUE7SUFDUCwyREFBUyxDQUFBO0lBQ1QscURBQU0sQ0FBQTtJQUNOLDZEQUFVLENBQUE7QUFDWixDQUFDLEVBTFcsYUFBYSxLQUFiLGFBQWEsUUFLeEI7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBQTVCO1FBeUJTLFVBQUssR0FBRyxDQUFDLENBQUM7UUFDVixVQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsUUFBRyxHQUFHLEVBQUUsQ0FBQztRQUNULGFBQVEsR0FBRyxDQUFDLENBQUM7UUFDYixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLFdBQU0sR0FBWSxFQUFFLENBQUM7UUFFckIsa0JBQWEsR0FBaUIsSUFBSSxDQUFDO1FBQ25DLFVBQUssR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDO1FBaUI1QiwwQkFBcUIsR0FBa0MsSUFBSSxDQUFDO1FBQzVELFdBQU0sR0FBRyxJQUFJLGVBQWUsQ0FBVSxFQUFFLENBQUMsQ0FBQztJQXVJcEQsQ0FBQztJQXpMQzs7OztPQUlHO0lBQ0gsSUFBVyxjQUFjO1FBQ3ZCLElBQUksSUFBSSxDQUFDLHFCQUFxQixLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3hDLE1BQU0sSUFBSSxLQUFLLENBQUMsbURBQW1ELENBQUMsQ0FBQztRQUN2RSxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxDQUFDO0lBQ2pELENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsSUFBVyxvQkFBb0I7UUFDN0IsT0FBTyxJQUFJLENBQUMsTUFBTSxD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
@@ -0,0 +1,30 @@
1
+ import type { PlaybackManager, PlaybackState } from './PlaybackManager';
2
+ /**
3
+ * A read-only representation of the playback.
4
+ */
5
+ export declare class PlaybackStatus {
6
+ private readonly playback;
7
+ constructor(playback: PlaybackManager);
8
+ /**
9
+ * Convert seconds to frames using the current framerate.
10
+ *
11
+ * @param seconds - The seconds to convert.
12
+ */
13
+ secondsToFrames(seconds: number): number;
14
+ /**
15
+ * Convert frames to seconds using the current framerate.
16
+ *
17
+ * @param frames - The frames to convert.
18
+ */
19
+ framesToSeconds(frames: number): number;
20
+ get time(): number;
21
+ get frame(): number;
22
+ get speed(): number;
23
+ get fps(): number;
24
+ get state(): PlaybackState;
25
+ /**
26
+ * The time passed since the last frame in seconds.
27
+ */
28
+ get deltaTime(): number;
29
+ }
30
+ //# sourceMappingURL=PlaybackStatus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlaybackStatus.d.ts","sourceRoot":"","sources":["../../src/app/PlaybackStatus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,eAAe,EAAE,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAEtE;;GAEG;AACH,qBAAa,cAAc;IACN,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,eAAe;IAE7D;;;;OAIG;IACI,eAAe,CAAC,OAAO,EAAE,MAAM;IAItC;;;;OAIG;IACI,eAAe,CAAC,MAAM,EAAE,MAAM;IAIrC,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,KAAK,IAAI,MAAM,CAEzB;IAED,IAAW,KAAK,IAAI,MAAM,CAEzB;IAED,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED,IAAW,KAAK,IAAI,aAAa,CAEhC;IAED;;OAEG;IACH,IAAW,SAAS,IAAI,MAAM,CAE7B;CACF"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * A read-only representation of the playback.
3
+ */
4
+ export class PlaybackStatus {
5
+ constructor(playback) {
6
+ this.playback = playback;
7
+ }
8
+ /**
9
+ * Convert seconds to frames using the current framerate.
10
+ *
11
+ * @param seconds - The seconds to convert.
12
+ */
13
+ secondsToFrames(seconds) {
14
+ return Math.ceil(seconds * this.playback.fps);
15
+ }
16
+ /**
17
+ * Convert frames to seconds using the current framerate.
18
+ *
19
+ * @param frames - The frames to convert.
20
+ */
21
+ framesToSeconds(frames) {
22
+ return frames / this.playback.fps;
23
+ }
24
+ get time() {
25
+ return this.framesToSeconds(this.playback.frame);
26
+ }
27
+ get frame() {
28
+ return this.playback.frame;
29
+ }
30
+ get speed() {
31
+ return this.playback.speed;
32
+ }
33
+ get fps() {
34
+ return this.playback.fps;
35
+ }
36
+ get state() {
37
+ return this.playback.state;
38
+ }
39
+ /**
40
+ * The time passed since the last frame in seconds.
41
+ */
42
+ get deltaTime() {
43
+ return this.framesToSeconds(1) * this.speed;
44
+ }
45
+ }
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGxheWJhY2tTdGF0dXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBwL1BsYXliYWNrU3RhdHVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGNBQWM7SUFDekIsWUFBb0MsUUFBeUI7UUFBekIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7SUFBRyxDQUFDO0lBRWpFOzs7O09BSUc7SUFDSSxlQUFlLENBQUMsT0FBZTtRQUNwQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxlQUFlLENBQUMsTUFBYztRQUNuQyxPQUFPLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsR0FBRztRQUNaLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxTQUFTO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQzlDLENBQUM7Q0FDRiJ9
@@ -0,0 +1,130 @@
1
+ import { Vector2 } from '../types';
2
+ import type { Logger } from './Logger';
3
+ import { PlaybackManager } from './PlaybackManager';
4
+ import { PlaybackStatus } from './PlaybackStatus';
5
+ import type { Project } from './Project';
6
+ export interface PlayerState extends Record<string, unknown> {
7
+ paused: boolean;
8
+ loop: boolean;
9
+ muted: boolean;
10
+ volume: number;
11
+ speed: number;
12
+ }
13
+ export interface PlayerSettings {
14
+ range: [number, number];
15
+ fps: number;
16
+ size: Vector2;
17
+ resolutionScale: number;
18
+ }
19
+ /**
20
+ * The player logic used by the editor and embeddable player.
21
+ *
22
+ * @remarks
23
+ * This class builds on top of the `PlaybackManager` to provide a simple
24
+ * interface similar to other media players. It plays through the animation
25
+ * using a real-time update loop.
26
+ */
27
+ export declare class Player {
28
+ private project;
29
+ private settings;
30
+ private initialState;
31
+ private initialFrame;
32
+ /**
33
+ * Triggered during each iteration of the update loop when the frame is ready
34
+ * to be rendered.
35
+ *
36
+ * @remarks
37
+ * Player does not perform any rendering on its own. For the animation to be
38
+ * visible, another class must subscribe to this event and perform the
39
+ * rendering itself. {@link Stage} can be used to display the animation.
40
+ *
41
+ * @eventProperty
42
+ */
43
+ get onRender(): import("../events").Subscribable<void, import("../events").AsyncEventHandler<void>>;
44
+ private readonly render;
45
+ get onStateChanged(): import("../events").SubscribableValueEvent<PlayerState>;
46
+ private readonly playerState;
47
+ get onFrameChanged(): import("../events").SubscribableValueEvent<number>;
48
+ private readonly frame;
49
+ get onDurationChanged(): import("../events").SubscribableValueEvent<number>;
50
+ private readonly duration;
51
+ /**
52
+ * Triggered right after recalculation finishes.
53
+ *
54
+ * @remarks
55
+ * Can be used to provide visual feedback.
56
+ *
57
+ * @eventProperty
58
+ */
59
+ get onRecalculated(): import("../events").Subscribable<void, import("../events").EventHandler<void>>;
60
+ private readonly recalculated;
61
+ readonly playback: PlaybackManager;
62
+ readonly status: PlaybackStatus;
63
+ readonly logger: Logger;
64
+ private readonly sharedWebGLContext;
65
+ private readonly lock;
66
+ private startTime;
67
+ private endTime;
68
+ private requestId;
69
+ private renderTime;
70
+ private requestedSeek;
71
+ private requestedRender;
72
+ private requestedRecalculation;
73
+ private size;
74
+ private resolutionScale;
75
+ private active;
76
+ private get startFrame();
77
+ private get endFrame();
78
+ private get finished();
79
+ constructor(project: Project, settings?: Partial<PlayerSettings>, initialState?: Partial<PlayerState>, initialFrame?: number);
80
+ configure(settings: PlayerSettings): Promise<void>;
81
+ /**
82
+ * Whether the given frame is inside the animation range.
83
+ *
84
+ * @param frame - The frame to check.
85
+ */
86
+ isInRange(frame: number): boolean;
87
+ /**
88
+ * Whether the given frame is inside the user-defined range.
89
+ *
90
+ * @param frame - The frame to check.
91
+ */
92
+ isInUserRange(frame: number): boolean;
93
+ requestSeek(value: number): void;
94
+ requestPreviousFrame(): void;
95
+ requestNextFrame(): void;
96
+ requestReset(): void;
97
+ requestRender(): void;
98
+ toggleLoop(value?: boolean): void;
99
+ togglePlayback(value?: boolean): void;
100
+ toggleAudio(value?: boolean): void;
101
+ setAudioVolume(value: number): void;
102
+ addAudioVolume(value: number): void;
103
+ setSpeed(value: number): void;
104
+ setVariables(variables: Record<string, unknown>): void;
105
+ /**
106
+ * Activate the player.
107
+ *
108
+ * @remarks
109
+ * A player needs to be active in order for the update loop to run. Each
110
+ * player is active by default.
111
+ */
112
+ activate(): void;
113
+ /**
114
+ * Deactivate the player.
115
+ *
116
+ * @remarks
117
+ * Deactivating the player prevents its update loop from running. This should
118
+ * be done before disposing the player, to prevent it from running in the
119
+ * background.
120
+ *
121
+ * Just pausing the player does not stop the loop.
122
+ */
123
+ deactivate(): void;
124
+ private requestRecalculation;
125
+ private prepare;
126
+ private run;
127
+ private request;
128
+ clampRange(frame: number): number;
129
+ }
130
+ //# sourceMappingURL=Player.d.ts.map