@omnimedia/omnitool 1.1.0-9 → 1.1.0-91

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 (448) hide show
  1. package/README.md +358 -73
  2. package/package.json +19 -17
  3. package/s/context.ts +0 -7
  4. package/s/demo/demo.bundle.ts +104 -43
  5. package/s/demo/demo.css +244 -14
  6. package/s/demo/routines/export-test.ts +16 -0
  7. package/s/demo/routines/filmstrip-test.ts +22 -18
  8. package/s/demo/routines/load-video.ts +2 -3
  9. package/s/demo/routines/playback-test.ts +61 -0
  10. package/s/demo/routines/timeline-setup.ts +49 -0
  11. package/s/demo/routines/transcode-test.ts +19 -5
  12. package/s/demo/routines/transitions-test.ts +2 -2
  13. package/s/demo/routines/waveform-test.ts +35 -8
  14. package/s/driver/driver-worker.ts +9 -0
  15. package/s/driver/driver.test.ts +1 -1
  16. package/s/driver/driver.ts +43 -42
  17. package/s/driver/fns/schematic.ts +26 -6
  18. package/s/driver/fns/work.ts +65 -189
  19. package/s/driver/parts/compositor.ts +316 -0
  20. package/s/driver/parts/machina.ts +19 -20
  21. package/s/driver/utils/find-pixi-filter.ts +24 -0
  22. package/s/index.html.ts +103 -25
  23. package/s/index.ts +1 -0
  24. package/s/tests.bundle.ts +11 -0
  25. package/s/tests.html.ts +28 -0
  26. package/s/timeline/index.ts +9 -1
  27. package/s/timeline/parts/animations/make.ts +38 -0
  28. package/s/timeline/parts/animations/presets.ts +138 -0
  29. package/s/timeline/parts/animations/properties.ts +30 -0
  30. package/s/timeline/parts/animations/registry.ts +13 -0
  31. package/s/timeline/parts/animations/types.ts +80 -0
  32. package/s/timeline/parts/filmstrip.ts +43 -16
  33. package/s/timeline/parts/filters.ts +453 -0
  34. package/s/timeline/parts/item.ts +59 -7
  35. package/s/timeline/parts/media.ts +12 -2
  36. package/s/timeline/parts/resource-pool.ts +8 -5
  37. package/s/timeline/parts/resource.ts +3 -0
  38. package/s/timeline/parts/waveform/parts/collect.ts +72 -0
  39. package/s/timeline/parts/waveform/parts/render.ts +45 -0
  40. package/s/timeline/parts/waveform/parts/types.ts +24 -0
  41. package/s/timeline/parts/waveform/waveform.ts +161 -0
  42. package/s/timeline/renderers/export/parts/audio-gain.ts +17 -0
  43. package/s/timeline/renderers/export/parts/audio-mix.ts +133 -0
  44. package/s/timeline/renderers/export/parts/cursor.ts +292 -0
  45. package/s/timeline/renderers/export/parts/produce-audio.ts +64 -0
  46. package/s/timeline/renderers/export/parts/produce-video.ts +49 -0
  47. package/s/timeline/renderers/export/parts/resamplers.ts +48 -0
  48. package/s/timeline/renderers/export/produce.ts +28 -0
  49. package/s/timeline/renderers/parts/handy.ts +418 -0
  50. package/s/timeline/renderers/parts/samplers/audio/parts/find.ts +19 -0
  51. package/s/timeline/renderers/parts/samplers/audio/parts/init.ts +60 -0
  52. package/s/timeline/renderers/parts/samplers/audio/parts/sink.ts +38 -0
  53. package/s/timeline/renderers/parts/samplers/audio/parts/types.ts +16 -0
  54. package/s/timeline/renderers/parts/samplers/audio/sampler.ts +35 -0
  55. package/s/timeline/renderers/parts/samplers/visual/parts/defaults.ts +16 -0
  56. package/s/timeline/renderers/parts/samplers/visual/parts/sample.ts +69 -0
  57. package/s/timeline/renderers/parts/samplers/visual/parts/sequence.ts +111 -0
  58. package/s/timeline/renderers/parts/samplers/visual/parts/sink.ts +38 -0
  59. package/s/timeline/renderers/parts/samplers/visual/parts/transition.ts +28 -0
  60. package/s/timeline/renderers/parts/samplers/visual/parts/types.ts +10 -0
  61. package/s/timeline/renderers/parts/samplers/visual/sampler.ts +28 -0
  62. package/s/timeline/renderers/parts/schedulers.ts +96 -0
  63. package/s/timeline/renderers/player/parts/playback.ts +213 -0
  64. package/s/timeline/renderers/player/player.ts +86 -0
  65. package/s/timeline/renderers/renderers.test.ts +403 -0
  66. package/s/timeline/sugar/helpers.ts +215 -0
  67. package/s/timeline/sugar/o.ts +274 -54
  68. package/s/timeline/sugar/omni.test.ts +210 -0
  69. package/s/timeline/sugar/omni.ts +25 -9
  70. package/s/timeline/types.ts +36 -3
  71. package/s/timeline/utils/anim.ts +63 -0
  72. package/s/timeline/utils/checksum.ts +3 -1
  73. package/s/timeline/utils/datafile.ts +15 -4
  74. package/s/timeline/utils/dummy-data.ts +3 -3
  75. package/s/timeline/utils/matrix.ts +21 -0
  76. package/s/timeline/utils/terps.ts +81 -0
  77. package/s/units/fps.ts +8 -0
  78. package/s/units/ms.ts +8 -0
  79. package/s/units/seconds.ts +8 -0
  80. package/x/WebGLRenderer-4CHIZDHY.js +2 -0
  81. package/x/WebGLRenderer-4CHIZDHY.js.map +7 -0
  82. package/x/WebGPURenderer-O6WXU2QR.js +2 -0
  83. package/x/WebGPURenderer-O6WXU2QR.js.map +7 -0
  84. package/x/browserAll-WNIOTNNP.js +2 -0
  85. package/x/browserAll-WNIOTNNP.js.map +7 -0
  86. package/x/chunk-23FOBGX6.js +2 -0
  87. package/x/chunk-23FOBGX6.js.map +7 -0
  88. package/x/chunk-73XOWA4F.js +393 -0
  89. package/x/chunk-73XOWA4F.js.map +7 -0
  90. package/x/chunk-IAWJKNX5.js +42 -0
  91. package/x/chunk-IAWJKNX5.js.map +7 -0
  92. package/x/chunk-KCMVLWBS.js +157 -0
  93. package/x/chunk-KCMVLWBS.js.map +7 -0
  94. package/x/chunk-MR32SQ27.js +2 -0
  95. package/x/chunk-MR32SQ27.js.map +7 -0
  96. package/x/chunk-VCUJJYRJ.js +327 -0
  97. package/x/chunk-VCUJJYRJ.js.map +7 -0
  98. package/x/chunk-XNIZ4L5W.js +269 -0
  99. package/x/chunk-XNIZ4L5W.js.map +7 -0
  100. package/x/chunk-ZLGNQFUI.js +15 -0
  101. package/x/chunk-ZLGNQFUI.js.map +7 -0
  102. package/x/context.d.ts +1 -4
  103. package/x/context.js +1 -5
  104. package/x/context.js.map +1 -1
  105. package/x/demo/WebGLRenderer-RSJAHIG2.js +2 -0
  106. package/x/demo/WebGLRenderer-RSJAHIG2.js.map +7 -0
  107. package/x/demo/WebGPURenderer-MGFAJCYY.js +2 -0
  108. package/x/demo/WebGPURenderer-MGFAJCYY.js.map +7 -0
  109. package/x/demo/browserAll-PTRBXBRP.js +2 -0
  110. package/x/demo/browserAll-PTRBXBRP.js.map +7 -0
  111. package/x/demo/chunk-CUYOGHWU.js +42 -0
  112. package/x/demo/chunk-CUYOGHWU.js.map +7 -0
  113. package/x/demo/chunk-DGTDNJ7W.js +2 -0
  114. package/x/demo/chunk-DGTDNJ7W.js.map +7 -0
  115. package/x/demo/chunk-FZ5BYF63.js +15 -0
  116. package/x/demo/chunk-FZ5BYF63.js.map +7 -0
  117. package/x/demo/chunk-KWN4NNES.js +269 -0
  118. package/x/demo/chunk-KWN4NNES.js.map +7 -0
  119. package/x/demo/chunk-OJ3FPXW7.js +157 -0
  120. package/x/demo/chunk-OJ3FPXW7.js.map +7 -0
  121. package/x/demo/chunk-PSLUOGTZ.js +393 -0
  122. package/x/demo/chunk-PSLUOGTZ.js.map +7 -0
  123. package/x/demo/chunk-VLCVEIFU.js +327 -0
  124. package/x/demo/chunk-VLCVEIFU.js.map +7 -0
  125. package/x/demo/chunk-ZWCPT5FR.js +2 -0
  126. package/x/demo/chunk-ZWCPT5FR.js.map +7 -0
  127. package/x/demo/demo.bundle.js +94 -40
  128. package/x/demo/demo.bundle.js.map +1 -1
  129. package/x/demo/demo.bundle.min.js +7340 -90
  130. package/x/demo/demo.bundle.min.js.map +4 -4
  131. package/x/demo/demo.css +244 -14
  132. package/x/demo/routines/export-test.d.ts +2 -0
  133. package/x/demo/routines/export-test.js +10 -0
  134. package/x/demo/routines/export-test.js.map +1 -0
  135. package/x/demo/routines/filmstrip-test.d.ts +1 -1
  136. package/x/demo/routines/filmstrip-test.js +20 -17
  137. package/x/demo/routines/filmstrip-test.js.map +1 -1
  138. package/x/demo/routines/load-video.d.ts +1 -1
  139. package/x/demo/routines/load-video.js +1 -2
  140. package/x/demo/routines/load-video.js.map +1 -1
  141. package/x/demo/routines/playback-test.d.ts +2 -0
  142. package/x/demo/routines/playback-test.js +51 -0
  143. package/x/demo/routines/playback-test.js.map +1 -0
  144. package/x/demo/routines/timeline-setup.d.ts +6 -0
  145. package/x/demo/routines/timeline-setup.js +33 -0
  146. package/x/demo/routines/timeline-setup.js.map +1 -0
  147. package/x/demo/routines/transcode-test.js +15 -5
  148. package/x/demo/routines/transcode-test.js.map +1 -1
  149. package/x/demo/routines/transitions-test.js +2 -2
  150. package/x/demo/routines/transitions-test.js.map +1 -1
  151. package/x/demo/routines/waveform-test.d.ts +2 -1
  152. package/x/demo/routines/waveform-test.js +29 -8
  153. package/x/demo/routines/waveform-test.js.map +1 -1
  154. package/x/demo/webworkerAll-JENRT6BT.js +2 -0
  155. package/x/demo/webworkerAll-JENRT6BT.js.map +7 -0
  156. package/x/driver/driver-worker.d.ts +1 -0
  157. package/x/driver/driver-worker.js +6 -0
  158. package/x/driver/driver-worker.js.map +1 -0
  159. package/x/driver/driver.d.ts +25 -8
  160. package/x/driver/driver.js +43 -39
  161. package/x/driver/driver.js.map +1 -1
  162. package/x/driver/driver.test.js +1 -1
  163. package/x/driver/driver.test.js.map +1 -1
  164. package/x/driver/driver.worker.bundle.min.js +117 -3506
  165. package/x/driver/driver.worker.bundle.min.js.map +4 -4
  166. package/x/driver/fns/host.d.ts +3 -2
  167. package/x/driver/fns/schematic.d.ts +25 -4
  168. package/x/driver/fns/work.d.ts +4 -4
  169. package/x/driver/fns/work.js +55 -155
  170. package/x/driver/fns/work.js.map +1 -1
  171. package/x/driver/parts/compositor.d.ts +39 -0
  172. package/x/driver/parts/compositor.js +261 -0
  173. package/x/driver/parts/compositor.js.map +1 -0
  174. package/x/driver/parts/machina.d.ts +0 -20
  175. package/x/driver/parts/machina.js +6 -10
  176. package/x/driver/parts/machina.js.map +1 -1
  177. package/x/driver/utils/find-pixi-filter.d.ts +5 -0
  178. package/x/driver/utils/find-pixi-filter.js +13 -0
  179. package/x/driver/utils/find-pixi-filter.js.map +1 -0
  180. package/x/features/speech/transcribe/parts/prep-audio.d.ts +1 -1
  181. package/x/features/speech/transcribe/worker.bundle.min.js +899 -899
  182. package/x/features/speech/transcribe/worker.bundle.min.js.map +4 -4
  183. package/x/index.d.ts +1 -0
  184. package/x/index.html +347 -38
  185. package/x/index.html.js +103 -24
  186. package/x/index.html.js.map +1 -1
  187. package/x/index.js +1 -0
  188. package/x/index.js.map +1 -1
  189. package/x/tests.bundle.js +8 -0
  190. package/x/tests.bundle.js.map +1 -0
  191. package/x/tests.bundle.min.js +7374 -0
  192. package/x/tests.bundle.min.js.map +7 -0
  193. package/x/tests.html +316 -0
  194. package/x/tests.html.d.ts +2 -0
  195. package/x/tests.html.js +22 -0
  196. package/x/tests.html.js.map +1 -0
  197. package/x/timeline/index.d.ts +8 -0
  198. package/x/timeline/index.js +8 -0
  199. package/x/timeline/index.js.map +1 -1
  200. package/x/timeline/parts/animations/make.d.ts +3 -0
  201. package/x/timeline/parts/animations/make.js +29 -0
  202. package/x/timeline/parts/animations/make.js.map +1 -0
  203. package/x/timeline/parts/animations/presets.d.ts +170 -0
  204. package/x/timeline/parts/animations/presets.js +135 -0
  205. package/x/timeline/parts/animations/presets.js.map +1 -0
  206. package/x/timeline/parts/animations/properties.d.ts +84 -0
  207. package/x/timeline/parts/animations/properties.js +25 -0
  208. package/x/timeline/parts/animations/properties.js.map +1 -0
  209. package/x/timeline/parts/animations/registry.d.ts +218 -0
  210. package/x/timeline/parts/animations/registry.js +11 -0
  211. package/x/timeline/parts/animations/registry.js.map +1 -0
  212. package/x/timeline/parts/animations/types.d.ts +60 -0
  213. package/x/timeline/parts/animations/types.js.map +1 -0
  214. package/x/timeline/parts/filmstrip.d.ts +4 -3
  215. package/x/timeline/parts/filmstrip.js +29 -10
  216. package/x/timeline/parts/filmstrip.js.map +1 -1
  217. package/x/timeline/parts/filters.d.ts +108 -0
  218. package/x/timeline/parts/filters.js +340 -0
  219. package/x/timeline/parts/filters.js.map +1 -0
  220. package/x/timeline/parts/item.d.ts +47 -4
  221. package/x/timeline/parts/item.js +4 -1
  222. package/x/timeline/parts/item.js.map +1 -1
  223. package/x/timeline/parts/media.d.ts +2 -0
  224. package/x/timeline/parts/media.js +11 -2
  225. package/x/timeline/parts/media.js.map +1 -1
  226. package/x/timeline/parts/resource-pool.d.ts +3 -0
  227. package/x/timeline/parts/resource-pool.js +7 -4
  228. package/x/timeline/parts/resource-pool.js.map +1 -1
  229. package/x/timeline/parts/resource.d.ts +3 -0
  230. package/x/timeline/parts/waveform/parts/collect.d.ts +11 -0
  231. package/x/timeline/parts/waveform/parts/collect.js +56 -0
  232. package/x/timeline/parts/waveform/parts/collect.js.map +1 -0
  233. package/x/timeline/parts/waveform/parts/render.d.ts +5 -0
  234. package/x/timeline/parts/waveform/parts/render.js +29 -0
  235. package/x/timeline/parts/waveform/parts/render.js.map +1 -0
  236. package/x/timeline/parts/waveform/parts/types.d.ts +21 -0
  237. package/x/timeline/parts/waveform/parts/types.js +2 -0
  238. package/x/timeline/parts/waveform/parts/types.js.map +1 -0
  239. package/x/timeline/parts/waveform/waveform.d.ts +19 -0
  240. package/x/timeline/parts/waveform/waveform.js +133 -0
  241. package/x/timeline/parts/waveform/waveform.js.map +1 -0
  242. package/x/timeline/renderers/export/parts/audio-gain.d.ts +1 -0
  243. package/x/timeline/renderers/export/parts/audio-gain.js +13 -0
  244. package/x/timeline/renderers/export/parts/audio-gain.js.map +1 -0
  245. package/x/timeline/renderers/export/parts/audio-mix.d.ts +21 -0
  246. package/x/timeline/renderers/export/parts/audio-mix.js +89 -0
  247. package/x/timeline/renderers/export/parts/audio-mix.js.map +1 -0
  248. package/x/timeline/renderers/export/parts/cursor.d.ts +35 -0
  249. package/x/timeline/renderers/export/parts/cursor.js +237 -0
  250. package/x/timeline/renderers/export/parts/cursor.js.map +1 -0
  251. package/x/timeline/renderers/export/parts/produce-audio.d.ts +6 -0
  252. package/x/timeline/renderers/export/parts/produce-audio.js +41 -0
  253. package/x/timeline/renderers/export/parts/produce-audio.js.map +1 -0
  254. package/x/timeline/renderers/export/parts/produce-video.d.ts +10 -0
  255. package/x/timeline/renderers/export/parts/produce-video.js +26 -0
  256. package/x/timeline/renderers/export/parts/produce-video.js.map +1 -0
  257. package/x/timeline/renderers/export/parts/resamplers.d.ts +12 -0
  258. package/x/timeline/renderers/export/parts/resamplers.js +29 -0
  259. package/x/timeline/renderers/export/parts/resamplers.js.map +1 -0
  260. package/x/timeline/renderers/export/produce.d.ts +13 -0
  261. package/x/timeline/renderers/export/produce.js +15 -0
  262. package/x/timeline/renderers/export/produce.js.map +1 -0
  263. package/x/timeline/renderers/parts/handy.d.ts +36 -0
  264. package/x/timeline/renderers/parts/handy.js +254 -0
  265. package/x/timeline/renderers/parts/handy.js.map +1 -0
  266. package/x/timeline/renderers/parts/samplers/audio/parts/find.d.ts +6 -0
  267. package/x/timeline/renderers/parts/samplers/audio/parts/find.js +15 -0
  268. package/x/timeline/renderers/parts/samplers/audio/parts/find.js.map +1 -0
  269. package/x/timeline/renderers/parts/samplers/audio/parts/init.d.ts +5 -0
  270. package/x/timeline/renderers/parts/samplers/audio/parts/init.js +40 -0
  271. package/x/timeline/renderers/parts/samplers/audio/parts/init.js.map +1 -0
  272. package/x/timeline/renderers/parts/samplers/audio/parts/sink.d.ts +8 -0
  273. package/x/timeline/renderers/parts/samplers/audio/parts/sink.js +24 -0
  274. package/x/timeline/renderers/parts/samplers/audio/parts/sink.js.map +1 -0
  275. package/x/timeline/renderers/parts/samplers/audio/parts/types.d.ts +14 -0
  276. package/x/timeline/renderers/parts/samplers/audio/parts/types.js +2 -0
  277. package/x/timeline/renderers/parts/samplers/audio/parts/types.js.map +1 -0
  278. package/x/timeline/renderers/parts/samplers/audio/sampler.d.ts +11 -0
  279. package/x/timeline/renderers/parts/samplers/audio/sampler.js +22 -0
  280. package/x/timeline/renderers/parts/samplers/audio/sampler.js.map +1 -0
  281. package/x/timeline/renderers/parts/samplers/visual/parts/defaults.d.ts +5 -0
  282. package/x/timeline/renderers/parts/samplers/visual/parts/defaults.js +10 -0
  283. package/x/timeline/renderers/parts/samplers/visual/parts/defaults.js.map +1 -0
  284. package/x/timeline/renderers/parts/samplers/visual/parts/sample.d.ts +6 -0
  285. package/x/timeline/renderers/parts/samplers/visual/parts/sample.js +48 -0
  286. package/x/timeline/renderers/parts/samplers/visual/parts/sample.js.map +1 -0
  287. package/x/timeline/renderers/parts/samplers/visual/parts/sequence.d.ts +6 -0
  288. package/x/timeline/renderers/parts/samplers/visual/parts/sequence.js +75 -0
  289. package/x/timeline/renderers/parts/samplers/visual/parts/sequence.js.map +1 -0
  290. package/x/timeline/renderers/parts/samplers/visual/parts/sink.d.ts +8 -0
  291. package/x/timeline/renderers/parts/samplers/visual/parts/sink.js +24 -0
  292. package/x/timeline/renderers/parts/samplers/visual/parts/sink.js.map +1 -0
  293. package/x/timeline/renderers/parts/samplers/visual/parts/transition.d.ts +3 -0
  294. package/x/timeline/renderers/parts/samplers/visual/parts/transition.js +18 -0
  295. package/x/timeline/renderers/parts/samplers/visual/parts/transition.js.map +1 -0
  296. package/x/timeline/renderers/parts/samplers/visual/parts/types.d.ts +8 -0
  297. package/x/timeline/renderers/parts/samplers/visual/parts/types.js +2 -0
  298. package/x/timeline/renderers/parts/samplers/visual/parts/types.js.map +1 -0
  299. package/x/timeline/renderers/parts/samplers/visual/sampler.d.ts +7 -0
  300. package/x/timeline/renderers/parts/samplers/visual/sampler.js +17 -0
  301. package/x/timeline/renderers/parts/samplers/visual/sampler.js.map +1 -0
  302. package/x/timeline/renderers/parts/schedulers.d.ts +17 -0
  303. package/x/timeline/renderers/parts/schedulers.js +64 -0
  304. package/x/timeline/renderers/parts/schedulers.js.map +1 -0
  305. package/x/timeline/renderers/player/parts/playback.d.ts +39 -0
  306. package/x/timeline/renderers/player/parts/playback.js +160 -0
  307. package/x/timeline/renderers/player/parts/playback.js.map +1 -0
  308. package/x/timeline/renderers/player/player.d.ts +27 -0
  309. package/x/timeline/renderers/player/player.js +64 -0
  310. package/x/timeline/renderers/player/player.js.map +1 -0
  311. package/x/timeline/renderers/renderers.test.d.ts +33 -0
  312. package/x/timeline/renderers/renderers.test.js +321 -0
  313. package/x/timeline/renderers/renderers.test.js.map +1 -0
  314. package/x/timeline/sugar/helpers.d.ts +64 -0
  315. package/x/timeline/sugar/helpers.js +114 -0
  316. package/x/timeline/sugar/helpers.js.map +1 -0
  317. package/x/timeline/sugar/o.d.ts +38 -9
  318. package/x/timeline/sugar/o.js +200 -39
  319. package/x/timeline/sugar/o.js.map +1 -1
  320. package/x/timeline/sugar/omni.d.ts +9 -3
  321. package/x/timeline/sugar/omni.js +20 -7
  322. package/x/timeline/sugar/omni.js.map +1 -1
  323. package/x/timeline/sugar/omni.test.d.ts +27 -0
  324. package/x/timeline/sugar/omni.test.js +128 -0
  325. package/x/timeline/sugar/omni.test.js.map +1 -0
  326. package/x/timeline/types.d.ts +15 -2
  327. package/x/timeline/utils/anim.d.ts +3 -0
  328. package/x/timeline/utils/anim.js +40 -0
  329. package/x/timeline/utils/anim.js.map +1 -0
  330. package/x/timeline/utils/checksum.d.ts +3 -2
  331. package/x/timeline/utils/checksum.js.map +1 -1
  332. package/x/timeline/utils/datafile.d.ts +5 -3
  333. package/x/timeline/utils/datafile.js +18 -5
  334. package/x/timeline/utils/datafile.js.map +1 -1
  335. package/x/timeline/utils/dummy-data.d.ts +1 -2
  336. package/x/timeline/utils/dummy-data.js +4 -2
  337. package/x/timeline/utils/dummy-data.js.map +1 -1
  338. package/x/timeline/utils/matrix.d.ts +9 -0
  339. package/x/timeline/utils/matrix.js +10 -0
  340. package/x/timeline/utils/matrix.js.map +1 -1
  341. package/x/timeline/utils/terps.d.ts +11 -0
  342. package/x/timeline/utils/terps.js +57 -0
  343. package/x/timeline/utils/terps.js.map +1 -0
  344. package/x/units/fps.d.ts +6 -0
  345. package/x/units/fps.js +2 -0
  346. package/x/units/fps.js.map +1 -0
  347. package/x/units/ms.d.ts +6 -0
  348. package/x/units/ms.js +2 -0
  349. package/x/units/ms.js.map +1 -0
  350. package/x/units/seconds.d.ts +6 -0
  351. package/x/units/seconds.js +2 -0
  352. package/x/units/seconds.js.map +1 -0
  353. package/x/webworkerAll-RLCTMSDD.js +2 -0
  354. package/x/webworkerAll-RLCTMSDD.js.map +7 -0
  355. package/s/tests.test.ts +0 -8
  356. package/s/timeline/parts/compositor/export.ts +0 -77
  357. package/s/timeline/parts/compositor/parts/html-tree.ts +0 -37
  358. package/s/timeline/parts/compositor/parts/schedulers.ts +0 -85
  359. package/s/timeline/parts/compositor/parts/tree-builder.ts +0 -184
  360. package/s/timeline/parts/compositor/parts/webcodecs-tree.ts +0 -30
  361. package/s/timeline/parts/compositor/playback.ts +0 -81
  362. package/s/timeline/parts/compositor/samplers/html.ts +0 -115
  363. package/s/timeline/parts/compositor/samplers/webcodecs.ts +0 -60
  364. package/s/timeline/parts/waveform.ts +0 -62
  365. package/s/timeline/sugar/builders.ts +0 -102
  366. package/s/timeline/sugar/omni-test.ts +0 -38
  367. package/s/timeline/utils/audio-stream.ts +0 -15
  368. package/s/timeline/utils/video-cursor.ts +0 -40
  369. package/s/tools/common/loader.ts +0 -26
  370. package/s/tools/common/transformer-pipeline.ts +0 -26
  371. package/s/tools/speech-recognition/common/model.ts +0 -26
  372. package/s/tools/speech-recognition/whisper/fns/host.ts +0 -25
  373. package/s/tools/speech-recognition/whisper/fns/schematic.ts +0 -23
  374. package/s/tools/speech-recognition/whisper/fns/work.ts +0 -91
  375. package/s/tools/speech-recognition/whisper/parts/types.ts +0 -38
  376. package/s/tools/speech-recognition/whisper/parts/worker.bundle.ts +0 -7
  377. package/s/tools/speech-recognition/whisper/tool.ts +0 -70
  378. package/x/tests.test.js +0 -6
  379. package/x/tests.test.js.map +0 -1
  380. package/x/timeline/parts/compositor/export.d.ts +0 -9
  381. package/x/timeline/parts/compositor/export.js +0 -64
  382. package/x/timeline/parts/compositor/export.js.map +0 -1
  383. package/x/timeline/parts/compositor/parts/html-tree.d.ts +0 -3
  384. package/x/timeline/parts/compositor/parts/html-tree.js +0 -40
  385. package/x/timeline/parts/compositor/parts/html-tree.js.map +0 -1
  386. package/x/timeline/parts/compositor/parts/schedulers.d.ts +0 -15
  387. package/x/timeline/parts/compositor/parts/schedulers.js +0 -64
  388. package/x/timeline/parts/compositor/parts/schedulers.js.map +0 -1
  389. package/x/timeline/parts/compositor/parts/tree-builder.d.ts +0 -37
  390. package/x/timeline/parts/compositor/parts/tree-builder.js +0 -147
  391. package/x/timeline/parts/compositor/parts/tree-builder.js.map +0 -1
  392. package/x/timeline/parts/compositor/parts/webcodecs-tree.d.ts +0 -3
  393. package/x/timeline/parts/compositor/parts/webcodecs-tree.js +0 -28
  394. package/x/timeline/parts/compositor/parts/webcodecs-tree.js.map +0 -1
  395. package/x/timeline/parts/compositor/playback.d.ts +0 -19
  396. package/x/timeline/parts/compositor/playback.js +0 -71
  397. package/x/timeline/parts/compositor/playback.js.map +0 -1
  398. package/x/timeline/parts/compositor/samplers/html.d.ts +0 -3
  399. package/x/timeline/parts/compositor/samplers/html.js +0 -106
  400. package/x/timeline/parts/compositor/samplers/html.js.map +0 -1
  401. package/x/timeline/parts/compositor/samplers/webcodecs.d.ts +0 -2
  402. package/x/timeline/parts/compositor/samplers/webcodecs.js +0 -55
  403. package/x/timeline/parts/compositor/samplers/webcodecs.js.map +0 -1
  404. package/x/timeline/parts/waveform.d.ts +0 -8
  405. package/x/timeline/parts/waveform.js +0 -51
  406. package/x/timeline/parts/waveform.js.map +0 -1
  407. package/x/timeline/sugar/builders.d.ts +0 -1
  408. package/x/timeline/sugar/builders.js +0 -104
  409. package/x/timeline/sugar/builders.js.map +0 -1
  410. package/x/timeline/sugar/omni-test.d.ts +0 -1
  411. package/x/timeline/sugar/omni-test.js +0 -22
  412. package/x/timeline/sugar/omni-test.js.map +0 -1
  413. package/x/timeline/utils/audio-stream.d.ts +0 -6
  414. package/x/timeline/utils/audio-stream.js +0 -17
  415. package/x/timeline/utils/audio-stream.js.map +0 -1
  416. package/x/timeline/utils/video-cursor.d.ts +0 -10
  417. package/x/timeline/utils/video-cursor.js +0 -36
  418. package/x/timeline/utils/video-cursor.js.map +0 -1
  419. package/x/tools/common/loader.d.ts +0 -19
  420. package/x/tools/common/loader.js +0 -18
  421. package/x/tools/common/loader.js.map +0 -1
  422. package/x/tools/common/transformer-pipeline.d.ts +0 -8
  423. package/x/tools/common/transformer-pipeline.js +0 -24
  424. package/x/tools/common/transformer-pipeline.js.map +0 -1
  425. package/x/tools/speech-recognition/common/model.d.ts +0 -14
  426. package/x/tools/speech-recognition/common/model.js +0 -16
  427. package/x/tools/speech-recognition/common/model.js.map +0 -1
  428. package/x/tools/speech-recognition/whisper/fns/host.d.ts +0 -13
  429. package/x/tools/speech-recognition/whisper/fns/host.js +0 -19
  430. package/x/tools/speech-recognition/whisper/fns/host.js.map +0 -1
  431. package/x/tools/speech-recognition/whisper/fns/schematic.d.ts +0 -19
  432. package/x/tools/speech-recognition/whisper/fns/schematic.js +0 -2
  433. package/x/tools/speech-recognition/whisper/fns/schematic.js.map +0 -1
  434. package/x/tools/speech-recognition/whisper/fns/work.d.ts +0 -12
  435. package/x/tools/speech-recognition/whisper/fns/work.js +0 -74
  436. package/x/tools/speech-recognition/whisper/fns/work.js.map +0 -1
  437. package/x/tools/speech-recognition/whisper/parts/types.d.ts +0 -31
  438. package/x/tools/speech-recognition/whisper/parts/types.js.map +0 -1
  439. package/x/tools/speech-recognition/whisper/parts/worker.bundle.d.ts +0 -1
  440. package/x/tools/speech-recognition/whisper/parts/worker.bundle.js +0 -4
  441. package/x/tools/speech-recognition/whisper/parts/worker.bundle.js.map +0 -1
  442. package/x/tools/speech-recognition/whisper/parts/worker.bundle.min.js +0 -8
  443. package/x/tools/speech-recognition/whisper/parts/worker.bundle.min.js.map +0 -7
  444. package/x/tools/speech-recognition/whisper/tool.d.ts +0 -12
  445. package/x/tools/speech-recognition/whisper/tool.js +0 -63
  446. package/x/tools/speech-recognition/whisper/tool.js.map +0 -1
  447. /package/x/{tests.test.d.ts → tests.bundle.d.ts} +0 -0
  448. /package/x/{tools/speech-recognition/whisper/parts → timeline/parts/animations}/types.js +0 -0
@@ -1,4 +1,13 @@
1
- export type Interpolation = "linear" | "catmullRom"
1
+ import {Item, VisualAnimatableItem} from "./parts/item.js"
2
+
3
+ export type Interpolation =
4
+ | "linear"
5
+ | "ease"
6
+ | "easeIn"
7
+ | "easeOut"
8
+ | "bounce"
9
+ | "catmullRom"
10
+
2
11
  export type Keyframe<Value = number> = [time: number, value: Value]
3
12
  export type Keyframes<Value = number> = Keyframe<Value>[]
4
13
  export type Vec2 = [x: number, y: number]
@@ -14,16 +23,40 @@ export type Anim<T> = {
14
23
  track: T
15
24
  }
16
25
 
17
- export type Animations = Anim<TrackTransform>
18
-
19
26
  export type TrackTransform = {
20
27
  position: TrackVec2
21
28
  scale: TrackVec2
22
29
  rotation: Keyframes
23
30
  }
24
31
 
32
+ export type ScalarAnimation = Anim<Keyframes>
33
+ export type Vec2Animation = Anim<TrackVec2>
34
+ export type TransformAnimation = Anim<TrackTransform>
35
+ export type VisualAnimations = {
36
+ opacity?: ScalarAnimation
37
+ transform?: TransformAnimation
38
+ }
39
+
40
+ export type VisualAnimationInput<TKey extends keyof VisualAnimations> =
41
+ TKey extends "transform" ? Keyframes<Transform> : Keyframes
42
+
43
+ export type VisualAnimationValue<TKey extends keyof VisualAnimations> =
44
+ TKey extends "transform" ? TransformAnimation : ScalarAnimation
45
+
46
+ export interface AnimateAction<TKey extends keyof VisualAnimations = keyof VisualAnimations> {
47
+ <T extends VisualAnimatableItem>(
48
+ item: T,
49
+ terp: Interpolation,
50
+ track: VisualAnimationInput<TKey>
51
+ ): T
52
+ make(terp: Interpolation, track: VisualAnimationInput<TKey>): Item.Animation
53
+ }
54
+
55
+ // export type Animations = Anim<TrackTransform>
56
+
25
57
  export type TransformOptions = {
26
58
  position?: Vec2
27
59
  scale?: Vec2
28
60
  rotation?: number
29
61
  }
62
+
@@ -0,0 +1,63 @@
1
+
2
+ import {resolveTerp} from "./terps.js"
3
+ import {Anim, Keyframes, ScalarAnimation, Transform, TransformAnimation} from "../types.js"
4
+
5
+ const resolveScalar =(
6
+ time: number,
7
+ keys: Keyframes,
8
+ terp: Anim<Keyframes>["terp"],
9
+ fallback = 0,
10
+ ): number => {
11
+ if (keys.length === 0)
12
+ return fallback
13
+
14
+ if (keys.length === 1)
15
+ return keys[0][1]
16
+
17
+ const sorted = [...keys].sort((a, b) => a[0] - b[0])
18
+
19
+ if (time <= sorted[0][0])
20
+ return sorted[0][1]
21
+
22
+ const last = sorted[sorted.length - 1]
23
+ if (time >= last[0])
24
+ return last[1]
25
+
26
+ let index = 0
27
+ for (let i = 0; i < sorted.length - 1; i++) {
28
+ const a = sorted[i]
29
+ const b = sorted[i + 1]
30
+ if (time >= a[0] && time <= b[0]) {
31
+ index = i
32
+ break
33
+ }
34
+ }
35
+
36
+ const [t2] = sorted[index]
37
+ const [t3] = sorted[index + 1]
38
+ const span = t3 - t2
39
+ const x = span === 0 ? 0 : (time - t2) / span
40
+
41
+ return resolveTerp(terp, x, sorted, index)
42
+ }
43
+
44
+ export const resolveTransformAnimation =(
45
+ time: number,
46
+ anim: TransformAnimation,
47
+ ): Transform => ([
48
+ [
49
+ resolveScalar(time, anim.track.position.x, anim.terp),
50
+ resolveScalar(time, anim.track.position.y, anim.terp),
51
+ ],
52
+ [
53
+ resolveScalar(time, anim.track.scale.x, anim.terp, 1),
54
+ resolveScalar(time, anim.track.scale.y, anim.terp, 1),
55
+ ],
56
+ resolveScalar(time, anim.track.rotation, anim.terp),
57
+ ])
58
+
59
+ export const resolveScalarAnimation =(
60
+ time: number,
61
+ anim: ScalarAnimation,
62
+ ): number => resolveScalar(time, anim.track, anim.terp)
63
+
@@ -1,11 +1,13 @@
1
1
 
2
2
  import {Hex, Thumbprint} from "@e280/stz"
3
3
 
4
+ import {Hash} from "../parts/basics.js"
5
+
4
6
  export class Checksum {
5
7
  constructor(
6
8
  public data: Uint8Array,
7
9
  public bytes: Uint8Array,
8
- public hash: string,
10
+ public hash: Hash,
9
11
  public nickname: string,
10
12
  ) {}
11
13
 
@@ -3,19 +3,30 @@ import {Checksum} from "./checksum.js"
3
3
 
4
4
  export class Datafile {
5
5
  constructor(
6
+ public url: string,
6
7
  public bytes: Uint8Array,
8
+ public blob: Blob,
7
9
  public filename: string,
8
10
  public checksum: Checksum,
9
11
  ) {}
10
12
 
11
- static async make(bytes: Uint8Array, name?: string) {
13
+ static async make(file: Blob, name?: string) {
14
+ const buffer = await file.arrayBuffer()
15
+ const bytes = new Uint8Array(buffer)
12
16
  const checksum = await Checksum.make(bytes)
13
17
  const filename = name ?? checksum.nickname
14
- return new this(bytes, filename, checksum)
18
+ const url = URL.createObjectURL(file)
19
+ return new this(url, bytes, file, filename, checksum)
15
20
  }
16
21
 
17
- static async load(_path: string): Promise<Datafile> {
18
- throw new Error("TODO implement")
22
+ static async load(path: string) {
23
+ // const file = await fetch(path)
24
+ // const buffer = await file.arrayBuffer()
25
+ // const bytes = new Uint8Array(buffer)
26
+ // const filename = file?.headers.get('Content-Disposition')?.split('filename=')[1] ?? "file"
27
+ // console.log(filename)
28
+ // const checksum = await Checksum.make(bytes)
29
+ // return new this(path, bytes, filename, checksum)
19
30
  }
20
31
  }
21
32
 
@@ -1,7 +1,7 @@
1
1
 
2
2
  import {Datafile} from "./datafile.js"
3
3
 
4
- export const dummyData = () => Datafile.make(
5
- new Uint8Array([0xDE, 0xAD, 0xBE, 0xEF])
6
- )
4
+ // export const dummyData = () => Datafile.make(
5
+ // new Uint8Array([0xDE, 0xAD, 0xBE, 0xEF])
6
+ // )
7
7
 
@@ -29,5 +29,26 @@ export const mul6 = (local: Mat6, parent: Mat6): Mat6 => {
29
29
  ]
30
30
  }
31
31
 
32
+ export const mat6ToTransform = (mat: Mat6Obj): Transform => {
33
+ const scaleX = Math.hypot(mat.a, mat.b)
34
+ const scaleY = Math.hypot(mat.c, mat.d)
35
+ const rotation = Math.atan2(mat.b, mat.a) * (180 / Math.PI)
36
+
37
+ return [
38
+ [mat.tx, mat.ty],
39
+ [scaleX, scaleY],
40
+ rotation,
41
+ ]
42
+ }
43
+
44
+ export interface Mat6Obj {
45
+ a: number
46
+ b: number
47
+ c: number
48
+ d: number
49
+ tx: number
50
+ ty: number
51
+ }
52
+
32
53
  export const I6: Mat6 = [1, 0, 0, 1, 0, 0]
33
54
  export type Mat6 = [a: number, b: number, c: number, d: number, tx: number, ty: number]
@@ -0,0 +1,81 @@
1
+
2
+ import {Interpolation, Keyframes} from "../types.js"
3
+
4
+ type EasingFn = (x: number, a: number, b: number) => number
5
+
6
+ class TerpKeys {
7
+ constructor(
8
+ private keys: Keyframes,
9
+ private index: number,
10
+ ) {}
11
+
12
+ near(offset: number): number {
13
+ const next = this.keys[Math.max(0, Math.min(this.keys.length - 1, this.index + offset))]
14
+ return next[1]
15
+ }
16
+ }
17
+
18
+ type TerpFn = (x: number, keys: TerpKeys) => number
19
+
20
+ const asTerp = (fn: TerpFn): TerpFn => fn
21
+
22
+ const fromEasingFn = (easing: EasingFn): TerpFn =>
23
+ asTerp((x, keys) => easing(x, keys.near(0), keys.near(1)))
24
+
25
+ const lerp = (x: number, a: number, b: number) => a + (b - a) * x
26
+
27
+ export const terps: Record<Interpolation, TerpFn> = {
28
+ linear: fromEasingFn(lerp),
29
+
30
+ ease: fromEasingFn((x, a, b) => {
31
+ const eased = x < 0.5
32
+ ? 4 * x * x * x
33
+ : 1 - Math.pow(-2 * x + 2, 3) / 2
34
+ return lerp(eased, a, b)
35
+ }),
36
+
37
+ easeIn: fromEasingFn((x, a, b) => lerp(x * x * x, a, b)),
38
+
39
+ easeOut: fromEasingFn((x, a, b) => lerp(1 - Math.pow(1 - x, 3), a, b)),
40
+
41
+ bounce: fromEasingFn((x, a, b) => {
42
+ const n1 = 7.5625
43
+ const d1 = 2.75
44
+ const eased = x < 1 / d1
45
+ ? n1 * x * x
46
+ : x < 2 / d1
47
+ ? n1 * (x - 1.5 / d1) ** 2 + 0.75
48
+ : x < 2.5 / d1
49
+ ? n1 * (x - 2.25 / d1) ** 2 + 0.9375
50
+ : n1 * (x - 2.625 / d1) ** 2 + 0.984375
51
+ return lerp(eased, a, b)
52
+ }),
53
+
54
+ catmullRom: asTerp((x, keys) => {
55
+ const p1 = keys.near(-1)
56
+ const p2 = keys.near(0)
57
+ const p3 = keys.near(1)
58
+ const p4 = keys.near(2)
59
+ const x2 = x * x
60
+ const x3 = x2 * x
61
+ return 0.5 * (
62
+ (2 * p2) +
63
+ (-p1 + p3) * x +
64
+ (2 * p1 - 5 * p2 + 4 * p3 - p4) * x2 +
65
+ (-p1 + 3 * p2 - 3 * p3 + p4) * x3
66
+ )
67
+ }),
68
+ }
69
+
70
+ export const resolveTerp =(
71
+ terp: Interpolation,
72
+ x: number,
73
+ keys: Keyframes,
74
+ index: number,
75
+ ): number => {
76
+ const fn = terps[terp]
77
+ if (!fn)
78
+ throw new Error(`unknown terp "${terp}"`)
79
+
80
+ return fn(x, new TerpKeys(keys, index))
81
+ }
package/s/units/fps.ts ADDED
@@ -0,0 +1,8 @@
1
+ declare const FpsBrand: unique symbol
2
+
3
+ export type Fps = number & {
4
+ readonly [FpsBrand]: "fps"
5
+ }
6
+
7
+ export const fps = (value: number): Fps =>
8
+ value as Fps
package/s/units/ms.ts ADDED
@@ -0,0 +1,8 @@
1
+ declare const MsBrand: unique symbol
2
+
3
+ export type Ms = number & {
4
+ readonly [MsBrand]: "ms"
5
+ }
6
+
7
+ export const ms = (value: number): Ms =>
8
+ value as Ms
@@ -0,0 +1,8 @@
1
+ declare const SecondsBrand: unique symbol
2
+
3
+ export type Seconds = number & {
4
+ readonly [SecondsBrand]: "s"
5
+ }
6
+
7
+ export const seconds = (value: number): Seconds =>
8
+ value as Seconds
@@ -0,0 +1,2 @@
1
+ import{a}from"./chunk-KCMVLWBS.js";import"./chunk-VCUJJYRJ.js";import"./chunk-XNIZ4L5W.js";export{a as WebGLRenderer};
2
+ //# sourceMappingURL=WebGLRenderer-4CHIZDHY.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,2 @@
1
+ import{a}from"./chunk-IAWJKNX5.js";import"./chunk-23FOBGX6.js";import"./chunk-VCUJJYRJ.js";import"./chunk-XNIZ4L5W.js";export{a as WebGPURenderer};
2
+ //# sourceMappingURL=WebGPURenderer-O6WXU2QR.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,2 @@
1
+ import{a as i,b as o,c as m,d as p,e}from"./chunk-ZLGNQFUI.js";import"./chunk-MR32SQ27.js";import"./chunk-73XOWA4F.js";import"./chunk-23FOBGX6.js";import{P as t,e as r}from"./chunk-XNIZ4L5W.js";r.add(i);r.mixin(t,o);r.add(m);r.mixin(t,p);r.add(e);
2
+ //# sourceMappingURL=browserAll-WNIOTNNP.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../node_modules/pixi.js/src/accessibility/init.ts", "../node_modules/pixi.js/src/events/init.ts", "../node_modules/pixi.js/src/dom/init.ts"],
4
+ "sourcesContent": ["import { extensions } from '../extensions/Extensions';\nimport { Container } from '../scene/container/Container';\nimport { AccessibilitySystem } from './AccessibilitySystem';\nimport { accessibilityTarget } from './accessibilityTarget';\n\nextensions.add(AccessibilitySystem);\nextensions.mixin(Container, accessibilityTarget);\n", "import { extensions } from '../extensions/Extensions';\nimport { Container } from '../scene/container/Container';\nimport { EventSystem } from './EventSystem';\nimport { FederatedContainer } from './FederatedEventTarget';\n\nextensions.add(EventSystem);\nextensions.mixin(Container, FederatedContainer);\n", "import { extensions } from '../extensions/Extensions';\nimport { DOMPipe } from './DOMPipe';\n\nexport * from './index';\n\nextensions.add(DOMPipe);\n"],
5
+ "mappings": "kMAKAA,EAAW,IAAIC,CAAmB,EAClCD,EAAW,MAAME,EAAWC,CAAmB,ECD/CC,EAAW,IAAIC,CAAW,EAC1BD,EAAW,MAAME,EAAWC,CAAkB,ECD9CC,EAAW,IAAIC,CAAO",
6
+ "names": ["extensions", "AccessibilitySystem", "Container", "accessibilityTarget", "extensions", "EventSystem", "Container", "FederatedContainer", "extensions", "DOMPipe"]
7
+ }
@@ -0,0 +1,2 @@
1
+ import{D as a,J as f,T as v,X as x,q as p}from"./chunk-XNIZ4L5W.js";var h={};function G(c,t,r){let e=2166136261;for(let o=0;o<t;o++)e^=c[o].uid,e=Math.imul(e,16777619),e>>>=0;return h[e]||d(c,t,e,r)}function d(c,t,r,e){let o={},s=0;for(let n=0;n<e;n++){let i=n<t?c[n]:f.EMPTY.source;o[s++]=i.source,o[s++]=i.style}let l=new x(o);return h[r]=l,l}var u=class{constructor(t){this._canvasPool=Object.create(null),this.canvasOptions=t||{},this.enableFullScreen=!1}_createCanvasAndContext(t,r){let e=v.get().createCanvas();e.width=t,e.height=r;let o=e.getContext("2d");return{canvas:e,context:o}}getOptimalCanvasAndContext(t,r,e=1){t=Math.ceil(t*e-1e-6),r=Math.ceil(r*e-1e-6),t=a(t),r=a(r);let o=(t<<17)+(r<<1);this._canvasPool[o]||(this._canvasPool[o]=[]);let s=this._canvasPool[o].pop();return s||(s=this._createCanvasAndContext(t,r)),s}returnCanvasAndContext(t){let r=t.canvas,{width:e,height:o}=r,s=(e<<17)+(o<<1);t.context.resetTransform(),t.context.clearRect(0,0,e,o),this._canvasPool[s].push(t)}clear(){this._canvasPool={}}},P=new u;p.register(P);export{G as a,P as b};
2
+ //# sourceMappingURL=chunk-23FOBGX6.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../node_modules/pixi.js/src/rendering/batcher/gpu/getTextureBatchBindGroup.ts", "../node_modules/pixi.js/src/rendering/renderers/shared/texture/CanvasPool.ts"],
4
+ "sourcesContent": ["import { BindGroup } from '../../renderers/gpu/shader/BindGroup';\nimport { Texture } from '../../renderers/shared/texture/Texture';\n\nimport type { TextureSource } from '../../renderers/shared/texture/sources/TextureSource';\n\nconst cachedGroups: Record<number, BindGroup> = {};\n\n/**\n * @param textures\n * @param size\n * @param maxTextures\n * @internal\n */\nexport function getTextureBatchBindGroup(textures: TextureSource[], size: number, maxTextures: number)\n{\n let uid = 2166136261; // FNV-1a 32-bit offset basis\n\n for (let i = 0; i < size; i++)\n {\n uid ^= textures[i].uid;\n uid = Math.imul(uid, 16777619);\n uid >>>= 0;\n }\n\n return cachedGroups[uid] || generateTextureBatchBindGroup(textures, size, uid, maxTextures);\n}\n\nfunction generateTextureBatchBindGroup(textures: TextureSource[], size: number, key: number, maxTextures: number): BindGroup\n{\n const bindGroupResources: Record<string, any> = {};\n\n let bindIndex = 0;\n\n for (let i = 0; i < maxTextures; i++)\n {\n const texture = i < size ? textures[i] : Texture.EMPTY.source;\n\n bindGroupResources[bindIndex++] = texture.source;\n bindGroupResources[bindIndex++] = texture.style;\n }\n\n // pad out with empty textures\n const bindGroup = new BindGroup(bindGroupResources);\n\n cachedGroups[key] = bindGroup;\n\n return bindGroup;\n}\n\n", "import { DOMAdapter } from '../../../../environment/adapter';\nimport { nextPow2 } from '../../../../maths/misc/pow2';\nimport { GlobalResourceRegistry } from '../../../../utils/pool/GlobalResourceRegistry';\n\nimport type { ICanvas, ICanvasRenderingContext2DSettings } from '../../../../environment/canvas/ICanvas';\nimport type { ICanvasRenderingContext2D } from '../../../../environment/canvas/ICanvasRenderingContext2D';\n\n/**\n * A utility type that represents a canvas and its rendering context.\n * @category rendering\n * @internal\n */\nexport interface CanvasAndContext\n{\n /** The canvas element. */\n canvas: ICanvas;\n /** The rendering context of the canvas. */\n context: ICanvasRenderingContext2D;\n}\n\n/**\n * CanvasPool is a utility class that manages a pool of reusable canvas elements\n * @category rendering\n * @internal\n */\nexport class CanvasPoolClass\n{\n public canvasOptions: ICanvasRenderingContext2DSettings;\n\n /**\n * Allow renderTextures of the same size as screen, not just pow2\n *\n * Automatically sets to true after `setScreenSize`\n * @default false\n */\n public enableFullScreen: boolean;\n private _canvasPool: {[x in string | number]: CanvasAndContext[]};\n\n constructor(canvasOptions?: ICanvasRenderingContext2DSettings)\n {\n this._canvasPool = Object.create(null);\n this.canvasOptions = canvasOptions || {};\n this.enableFullScreen = false;\n }\n\n /**\n * Creates texture with params that were specified in pool constructor.\n * @param pixelWidth - Width of texture in pixels.\n * @param pixelHeight - Height of texture in pixels.\n */\n private _createCanvasAndContext(pixelWidth: number, pixelHeight: number): CanvasAndContext\n {\n const canvas = DOMAdapter.get().createCanvas();\n\n canvas.width = pixelWidth;\n canvas.height = pixelHeight;\n\n const context = canvas.getContext('2d');\n\n return { canvas, context };\n }\n\n /**\n * Gets a Power-of-Two render texture or fullScreen texture\n * @param minWidth - The minimum width of the render texture.\n * @param minHeight - The minimum height of the render texture.\n * @param resolution - The resolution of the render texture.\n * @returns The new render texture.\n */\n public getOptimalCanvasAndContext(minWidth: number, minHeight: number, resolution = 1): CanvasAndContext\n {\n minWidth = Math.ceil((minWidth * resolution) - 1e-6);\n minHeight = Math.ceil((minHeight * resolution) - 1e-6);\n minWidth = nextPow2(minWidth);\n minHeight = nextPow2(minHeight);\n\n const key = (minWidth << 17) + (minHeight << 1);\n\n if (!this._canvasPool[key])\n {\n this._canvasPool[key] = [];\n }\n\n let canvasAndContext = this._canvasPool[key].pop();\n\n if (!canvasAndContext)\n {\n canvasAndContext = this._createCanvasAndContext(minWidth, minHeight);\n }\n\n return canvasAndContext;\n }\n\n /**\n * Place a render texture back into the pool.\n * @param canvasAndContext\n */\n public returnCanvasAndContext(canvasAndContext: CanvasAndContext): void\n {\n const canvas = canvasAndContext.canvas;\n const { width, height } = canvas;\n\n const key = (width << 17) + (height << 1);\n\n canvasAndContext.context.resetTransform();\n canvasAndContext.context.clearRect(0, 0, width, height);\n\n this._canvasPool[key].push(canvasAndContext);\n }\n\n public clear(): void\n {\n this._canvasPool = {};\n }\n}\n\n/**\n * CanvasPool is a utility class that manages a pool of reusable canvas elements\n * @category rendering\n * @internal\n */\nexport const CanvasPool = new CanvasPoolClass();\nGlobalResourceRegistry.register(CanvasPool);\n"],
5
+ "mappings": "oEAKA,IAAMA,EAA0C,CAAA,EAQhC,SAAAC,EAAyBC,EAA2BC,EAAcC,EAClF,CACI,IAAIC,EAAM,WAEV,QAASC,EAAI,EAAGA,EAAIH,EAAMG,IAEfD,GAAAH,EAASI,CAAC,EAAE,IACbD,EAAA,KAAK,KAAKA,EAAK,QAAQ,EACpBA,KAAA,EAGb,OAAOL,EAAaK,CAAG,GAAKE,EAA8BL,EAAUC,EAAME,EAAKD,CAAW,CAC9F,CAEA,SAASG,EAA8BL,EAA2BC,EAAcK,EAAaJ,EAC7F,CACI,IAAMK,EAA0C,CAAA,EAE5CC,EAAY,EAEhB,QAASJ,EAAI,EAAGA,EAAIF,EAAaE,IACjC,CACI,IAAMK,EAAUL,EAAIH,EAAOD,EAASI,CAAC,EAAIM,EAAQ,MAAM,OAEpCH,EAAAC,GAAW,EAAIC,EAAQ,OACvBF,EAAAC,GAAW,EAAIC,EAAQ,KAAA,CAIxC,IAAAE,EAAY,IAAIC,EAAUL,CAAkB,EAElD,OAAAT,EAAaQ,CAAG,EAAIK,EAEbA,CACX,CCtBO,IAAME,EAAN,KACP,CAYI,YAAYC,EACZ,CACS,KAAA,YAAqB,OAAA,OAAO,IAAI,EAChC,KAAA,cAAgBA,GAAiB,CAAA,EACtC,KAAK,iBAAmB,EAAA,CAQpB,wBAAwBC,EAAoBC,EACpD,CACI,IAAMC,EAASC,EAAW,IAAI,EAAE,aAAa,EAE7CD,EAAO,MAAQF,EACfE,EAAO,OAASD,EAEV,IAAAG,EAAUF,EAAO,WAAW,IAAI,EAE/B,MAAA,CAAE,OAAAA,EAAQ,QAAAE,CAAQ,CAAA,CAUtB,2BAA2BC,EAAkBC,EAAmBC,EAAa,EACpF,CACIF,EAAW,KAAK,KAAMA,EAAWE,EAAc,IAAI,EACnDD,EAAY,KAAK,KAAMA,EAAYC,EAAc,IAAI,EACrDF,EAAWG,EAASH,CAAQ,EAC5BC,EAAYE,EAASF,CAAS,EAExB,IAAAG,GAAOJ,GAAY,KAAOC,GAAa,GAExC,KAAK,YAAYG,CAAG,IAEhB,KAAA,YAAYA,CAAG,EAAI,CAAA,GAG5B,IAAIC,EAAmB,KAAK,YAAYD,CAAG,EAAE,IAAI,EAEjD,OAAKC,IAEkBA,EAAA,KAAK,wBAAwBL,EAAUC,CAAS,GAGhEI,CAAA,CAOJ,uBAAuBA,EAC9B,CACI,IAAMR,EAASQ,EAAiB,OAC1B,CAAE,MAAAC,EAAO,OAAAC,CAAA,EAAWV,EAEpBO,GAAOE,GAAS,KAAOC,GAAU,GAEvCF,EAAiB,QAAQ,eAAe,EACxCA,EAAiB,QAAQ,UAAU,EAAG,EAAGC,EAAOC,CAAM,EAEtD,KAAK,YAAYH,CAAG,EAAE,KAAKC,CAAgB,CAAA,CAGxC,OACP,CACI,KAAK,YAAc,CAAA,CAAC,CAE5B,EAOaG,EAAa,IAAIf,EAC9BgB,EAAuB,SAASD,CAAU",
6
+ "names": ["cachedGroups", "getTextureBatchBindGroup", "textures", "size", "maxTextures", "uid", "i", "generateTextureBatchBindGroup", "key", "bindGroupResources", "bindIndex", "texture", "Texture", "bindGroup", "BindGroup", "CanvasPoolClass", "canvasOptions", "pixelWidth", "pixelHeight", "canvas", "DOMAdapter", "context", "minWidth", "minHeight", "resolution", "nextPow2", "key", "canvasAndContext", "width", "height", "CanvasPool", "GlobalResourceRegistry"]
7
+ }