@allyhub/sdk 0.1.0-alpha.8 → 0.2.0-next.1

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 (365) hide show
  1. package/LICENSE.md +241 -0
  2. package/NOTICE +85 -0
  3. package/client.d.ts +45 -1
  4. package/dist/anim.js +2 -75
  5. package/dist/define.d.ts +10 -4
  6. package/dist/define.js +2 -95
  7. package/dist/dom.d.ts +1 -1
  8. package/dist/dom.js +2 -457
  9. package/dist/fit.js +2 -60
  10. package/dist/free.d.ts +18 -0
  11. package/dist/free.js +2 -0
  12. package/dist/index.d.ts +28 -13
  13. package/dist/index.js +2 -11
  14. package/dist/input.d.ts +306 -0
  15. package/dist/input.js +2 -0
  16. package/dist/media.d.ts +3 -6
  17. package/dist/media.js +2 -27
  18. package/dist/messages.d.ts +3 -2
  19. package/dist/messages.js +2 -2
  20. package/dist/module.d.ts +24 -0
  21. package/dist/module.js +2 -0
  22. package/dist/noise.js +2 -233
  23. package/dist/parts.d.ts +98 -22
  24. package/dist/parts.js +2 -414
  25. package/dist/paths.d.ts +1 -1
  26. package/dist/paths.js +2 -720
  27. package/dist/phone.d.ts +26 -0
  28. package/dist/phone.js +2 -0
  29. package/dist/piece.d.ts +106 -35
  30. package/dist/piece.js +2 -38
  31. package/dist/props.d.ts +1 -1
  32. package/dist/props.js +2 -35
  33. package/dist/scenery.d.ts +2 -0
  34. package/dist/scenery.js +2 -0
  35. package/dist/text.js +2 -38
  36. package/dist/written.d.ts +12 -0
  37. package/dist/written.js +2 -0
  38. package/docs/README.md +18 -0
  39. package/docs/batches.md +148 -0
  40. package/docs/contract.md +51 -0
  41. package/docs/defaults.md +703 -0
  42. package/docs/docs.md +148 -0
  43. package/docs/footage.md +249 -0
  44. package/docs/layers.md +317 -0
  45. package/docs/modeling.md +143 -0
  46. package/docs/project.md +265 -0
  47. package/docs/scenery.md +308 -0
  48. package/docs/sheets.md +119 -0
  49. package/docs/slides.md +111 -0
  50. package/docs/sound.md +170 -0
  51. package/docs/speech.md +289 -0
  52. package/docs/video.md +265 -0
  53. package/node_modules/@allyhub-next/audio/LICENSE +241 -0
  54. package/node_modules/@allyhub-next/audio/dist/at-cut.d.ts +52 -0
  55. package/node_modules/@allyhub-next/audio/dist/at-cut.js +2 -0
  56. package/node_modules/@allyhub-next/audio/dist/decode.d.ts +33 -0
  57. package/node_modules/@allyhub-next/audio/dist/decode.js +2 -0
  58. package/node_modules/@allyhub-next/audio/dist/envelope.d.ts +37 -0
  59. package/node_modules/@allyhub-next/audio/dist/envelope.js +2 -0
  60. package/node_modules/@allyhub-next/audio/dist/index.d.ts +17 -0
  61. package/node_modules/@allyhub-next/audio/dist/index.js +2 -0
  62. package/node_modules/@allyhub-next/audio/dist/levels.d.ts +97 -0
  63. package/node_modules/@allyhub-next/audio/dist/levels.js +2 -0
  64. package/node_modules/@allyhub-next/audio/dist/master.d.ts +29 -0
  65. package/node_modules/@allyhub-next/audio/dist/master.js +2 -0
  66. package/node_modules/@allyhub-next/audio/dist/music.d.ts +11 -0
  67. package/node_modules/@allyhub-next/audio/dist/music.js +2 -0
  68. package/node_modules/@allyhub-next/audio/dist/node/decode.d.ts +39 -0
  69. package/node_modules/@allyhub-next/audio/dist/node/decode.js +2 -0
  70. package/node_modules/@allyhub-next/audio/dist/node/ebur128.d.ts +25 -0
  71. package/node_modules/@allyhub-next/audio/dist/node/ebur128.js +2 -0
  72. package/node_modules/@allyhub-next/audio/dist/node/ffmpeg.d.ts +31 -0
  73. package/node_modules/@allyhub-next/audio/dist/node/ffmpeg.js +2 -0
  74. package/node_modules/@allyhub-next/audio/dist/node/index.d.ts +8 -0
  75. package/node_modules/@allyhub-next/audio/dist/node/index.js +2 -0
  76. package/node_modules/@allyhub-next/audio/dist/node/loudness.d.ts +18 -0
  77. package/node_modules/@allyhub-next/audio/dist/node/loudness.js +2 -0
  78. package/node_modules/@allyhub-next/audio/dist/node/master.d.ts +42 -0
  79. package/node_modules/@allyhub-next/audio/dist/node/master.js +2 -0
  80. package/node_modules/@allyhub-next/audio/dist/node/measure.d.ts +60 -0
  81. package/node_modules/@allyhub-next/audio/dist/node/measure.js +2 -0
  82. package/node_modules/@allyhub-next/audio/dist/node/mix.d.ts +31 -0
  83. package/node_modules/@allyhub-next/audio/dist/node/mix.js +2 -0
  84. package/node_modules/@allyhub-next/audio/dist/plan.d.ts +143 -0
  85. package/node_modules/@allyhub-next/audio/dist/plan.js +2 -0
  86. package/node_modules/@allyhub-next/audio/dist/recorded.d.ts +26 -0
  87. package/node_modules/@allyhub-next/audio/dist/recorded.js +2 -0
  88. package/node_modules/@allyhub-next/audio/dist/recording/bandwidth.d.ts +47 -0
  89. package/node_modules/@allyhub-next/audio/dist/recording/bandwidth.js +2 -0
  90. package/node_modules/@allyhub-next/audio/dist/recording/chain.d.ts +89 -0
  91. package/node_modules/@allyhub-next/audio/dist/recording/chain.js +2 -0
  92. package/node_modules/@allyhub-next/audio/dist/recording/dynamics.d.ts +64 -0
  93. package/node_modules/@allyhub-next/audio/dist/recording/dynamics.js +2 -0
  94. package/node_modules/@allyhub-next/audio/dist/recording/fft.d.ts +26 -0
  95. package/node_modules/@allyhub-next/audio/dist/recording/fft.js +2 -0
  96. package/node_modules/@allyhub-next/audio/dist/recording/filters.d.ts +42 -0
  97. package/node_modules/@allyhub-next/audio/dist/recording/filters.js +2 -0
  98. package/node_modules/@allyhub-next/audio/dist/recording/fit.d.ts +56 -0
  99. package/node_modules/@allyhub-next/audio/dist/recording/fit.js +2 -0
  100. package/node_modules/@allyhub-next/audio/dist/recording/index.d.ts +10 -0
  101. package/node_modules/@allyhub-next/audio/dist/recording/index.js +2 -0
  102. package/node_modules/@allyhub-next/audio/dist/recording/loudness.d.ts +12 -0
  103. package/node_modules/@allyhub-next/audio/dist/recording/loudness.js +2 -0
  104. package/node_modules/@allyhub-next/audio/dist/recording/measure.d.ts +67 -0
  105. package/node_modules/@allyhub-next/audio/dist/recording/measure.js +2 -0
  106. package/node_modules/@allyhub-next/audio/dist/recording/mic.d.ts +32 -0
  107. package/node_modules/@allyhub-next/audio/dist/recording/mic.js +2 -0
  108. package/node_modules/@allyhub-next/audio/dist/recording/noise.d.ts +27 -0
  109. package/node_modules/@allyhub-next/audio/dist/recording/noise.js +2 -0
  110. package/node_modules/@allyhub-next/audio/dist/recording/presets.d.ts +64 -0
  111. package/node_modules/@allyhub-next/audio/dist/recording/presets.js +2 -0
  112. package/node_modules/@allyhub-next/audio/dist/recording/room.d.ts +78 -0
  113. package/node_modules/@allyhub-next/audio/dist/recording/room.js +2 -0
  114. package/node_modules/@allyhub-next/audio/dist/recording/setup.d.ts +111 -0
  115. package/node_modules/@allyhub-next/audio/dist/recording/setup.js +2 -0
  116. package/node_modules/@allyhub-next/audio/dist/recording/vec.d.ts +3 -0
  117. package/node_modules/@allyhub-next/audio/dist/recording/vec.js +2 -0
  118. package/node_modules/@allyhub-next/audio/dist/render.d.ts +26 -0
  119. package/node_modules/@allyhub-next/audio/dist/render.js +2 -0
  120. package/node_modules/@allyhub-next/audio/dist/sfx.d.ts +10 -0
  121. package/node_modules/@allyhub-next/audio/dist/sfx.js +2 -0
  122. package/node_modules/@allyhub-next/audio/dist/shape.d.ts +118 -0
  123. package/node_modules/@allyhub-next/audio/dist/shape.js +2 -0
  124. package/node_modules/@allyhub-next/audio/dist/voice.d.ts +45 -0
  125. package/node_modules/@allyhub-next/audio/dist/voice.js +2 -0
  126. package/node_modules/@allyhub-next/audio/package.json +17 -0
  127. package/node_modules/@allyhub-next/formats/LICENSE +241 -0
  128. package/node_modules/@allyhub-next/formats/dist/data/comments.d.ts +94 -0
  129. package/node_modules/@allyhub-next/formats/dist/data/comments.js +2 -0
  130. package/node_modules/@allyhub-next/formats/dist/data/config.d.ts +10 -0
  131. package/node_modules/@allyhub-next/formats/dist/data/config.js +2 -0
  132. package/node_modules/@allyhub-next/formats/dist/data/edits.d.ts +28 -0
  133. package/node_modules/@allyhub-next/formats/dist/data/edits.js +2 -0
  134. package/node_modules/@allyhub-next/formats/dist/data/elements.d.ts +6 -0
  135. package/node_modules/@allyhub-next/formats/dist/data/elements.js +2 -0
  136. package/node_modules/@allyhub-next/formats/dist/data/faces.d.ts +38 -0
  137. package/node_modules/@allyhub-next/formats/dist/data/faces.js +2 -0
  138. package/node_modules/@allyhub-next/formats/dist/data/file.d.ts +11 -0
  139. package/node_modules/@allyhub-next/formats/dist/data/file.js +2 -0
  140. package/node_modules/@allyhub-next/formats/dist/data/gen.d.ts +31 -0
  141. package/node_modules/@allyhub-next/formats/dist/data/gen.js +2 -0
  142. package/node_modules/@allyhub-next/formats/dist/data/messages.d.ts +34 -0
  143. package/node_modules/@allyhub-next/formats/dist/data/messages.js +2 -0
  144. package/node_modules/@allyhub-next/formats/dist/data/reference.d.ts +676 -0
  145. package/node_modules/@allyhub-next/formats/dist/data/reference.js +2 -0
  146. package/node_modules/@allyhub-next/formats/dist/data/script.d.ts +37 -0
  147. package/node_modules/@allyhub-next/formats/dist/data/script.js +2 -0
  148. package/node_modules/@allyhub-next/formats/dist/data/sheet.d.ts +214 -0
  149. package/node_modules/@allyhub-next/formats/dist/data/sheet.js +2 -0
  150. package/node_modules/@allyhub-next/formats/dist/data/words.d.ts +25 -0
  151. package/node_modules/@allyhub-next/formats/dist/data/words.js +2 -0
  152. package/node_modules/@allyhub-next/formats/dist/index.d.ts +16 -0
  153. package/node_modules/@allyhub-next/formats/dist/index.js +2 -0
  154. package/node_modules/@allyhub-next/formats/dist/items.d.ts +94 -0
  155. package/node_modules/@allyhub-next/formats/dist/items.js +2 -0
  156. package/node_modules/@allyhub-next/formats/dist/layout.d.ts +50 -0
  157. package/node_modules/@allyhub-next/formats/dist/layout.js +5 -0
  158. package/node_modules/@allyhub-next/formats/dist/schemas.d.ts +301 -0
  159. package/node_modules/@allyhub-next/formats/dist/schemas.js +2 -0
  160. package/node_modules/@allyhub-next/formats/package.json +14 -0
  161. package/node_modules/@allyhub-next/protocol/LICENSE +241 -0
  162. package/node_modules/@allyhub-next/protocol/dist/app.d.ts +98 -0
  163. package/node_modules/@allyhub-next/protocol/dist/app.js +2 -0
  164. package/node_modules/@allyhub-next/protocol/dist/auth.d.ts +116 -0
  165. package/node_modules/@allyhub-next/protocol/dist/auth.js +2 -0
  166. package/node_modules/@allyhub-next/protocol/dist/cli.d.ts +59 -0
  167. package/node_modules/@allyhub-next/protocol/dist/cli.js +2 -0
  168. package/node_modules/@allyhub-next/protocol/dist/cloud.d.ts +274 -0
  169. package/node_modules/@allyhub-next/protocol/dist/cloud.js +2 -0
  170. package/node_modules/@allyhub-next/protocol/dist/editor.d.ts +405 -0
  171. package/node_modules/@allyhub-next/protocol/dist/editor.js +2 -0
  172. package/node_modules/@allyhub-next/protocol/dist/files.d.ts +101 -0
  173. package/node_modules/@allyhub-next/protocol/dist/files.js +2 -0
  174. package/node_modules/@allyhub-next/protocol/dist/index.d.ts +12 -0
  175. package/node_modules/@allyhub-next/protocol/dist/index.js +2 -0
  176. package/node_modules/@allyhub-next/protocol/dist/jsonrpc.d.ts +83 -0
  177. package/node_modules/@allyhub-next/protocol/dist/jsonrpc.js +2 -0
  178. package/node_modules/@allyhub-next/protocol/dist/registry.d.ts +53 -0
  179. package/node_modules/@allyhub-next/protocol/dist/registry.js +2 -0
  180. package/node_modules/@allyhub-next/protocol/dist/runtimes.d.ts +93 -0
  181. package/node_modules/@allyhub-next/protocol/dist/runtimes.js +2 -0
  182. package/node_modules/@allyhub-next/protocol/dist/teams.d.ts +67 -0
  183. package/node_modules/@allyhub-next/protocol/dist/teams.js +2 -0
  184. package/node_modules/@allyhub-next/protocol/dist/tools.d.ts +345 -0
  185. package/node_modules/@allyhub-next/protocol/dist/tools.js +2 -0
  186. package/node_modules/@allyhub-next/protocol/package.json +13 -0
  187. package/node_modules/@allyhub-next/runtimes/LICENSE +241 -0
  188. package/node_modules/@allyhub-next/runtimes/dist/bundled.d.ts +10 -0
  189. package/node_modules/@allyhub-next/runtimes/dist/bundled.js +2 -0
  190. package/node_modules/@allyhub-next/runtimes/dist/download.d.ts +15 -0
  191. package/node_modules/@allyhub-next/runtimes/dist/download.js +2 -0
  192. package/node_modules/@allyhub-next/runtimes/dist/errors.d.ts +16 -0
  193. package/node_modules/@allyhub-next/runtimes/dist/errors.js +2 -0
  194. package/node_modules/@allyhub-next/runtimes/dist/home.d.ts +2 -0
  195. package/node_modules/@allyhub-next/runtimes/dist/home.js +2 -0
  196. package/node_modules/@allyhub-next/runtimes/dist/index.d.ts +9 -0
  197. package/node_modules/@allyhub-next/runtimes/dist/index.js +2 -0
  198. package/node_modules/@allyhub-next/runtimes/dist/lock.d.ts +6 -0
  199. package/node_modules/@allyhub-next/runtimes/dist/lock.js +2 -0
  200. package/node_modules/@allyhub-next/runtimes/dist/manifest.d.ts +3 -0
  201. package/node_modules/@allyhub-next/runtimes/dist/manifest.js +2 -0
  202. package/node_modules/@allyhub-next/runtimes/dist/runtimes.d.ts +63 -0
  203. package/node_modules/@allyhub-next/runtimes/dist/runtimes.js +3 -0
  204. package/node_modules/@allyhub-next/runtimes/dist/unpack.d.ts +7 -0
  205. package/node_modules/@allyhub-next/runtimes/dist/unpack.js +2 -0
  206. package/node_modules/@allyhub-next/runtimes/manifest.json +395 -0
  207. package/node_modules/@allyhub-next/runtimes/package.json +14 -0
  208. package/node_modules/@allyhub-next/runtimes/schemas/runtimes.schema.json +153 -0
  209. package/node_modules/@allyhub-next/scenery/LICENSE +241 -0
  210. package/node_modules/@allyhub-next/scenery/NOTICE +42 -0
  211. package/node_modules/@allyhub-next/scenery/dist/aim.d.ts +55 -0
  212. package/node_modules/@allyhub-next/scenery/dist/aim.js +2 -0
  213. package/node_modules/@allyhub-next/scenery/dist/bake.d.ts +203 -0
  214. package/node_modules/@allyhub-next/scenery/dist/bake.js +2 -0
  215. package/node_modules/@allyhub-next/scenery/dist/camera.d.ts +150 -0
  216. package/node_modules/@allyhub-next/scenery/dist/camera.js +2 -0
  217. package/node_modules/@allyhub-next/scenery/dist/curve.d.ts +40 -0
  218. package/node_modules/@allyhub-next/scenery/dist/curve.js +2 -0
  219. package/node_modules/@allyhub-next/scenery/dist/define.d.ts +164 -0
  220. package/node_modules/@allyhub-next/scenery/dist/define.js +2 -0
  221. package/node_modules/@allyhub-next/scenery/dist/fit.d.ts +64 -0
  222. package/node_modules/@allyhub-next/scenery/dist/fit.js +2 -0
  223. package/node_modules/@allyhub-next/scenery/dist/glass.d.ts +34 -0
  224. package/node_modules/@allyhub-next/scenery/dist/glass.js +2 -0
  225. package/node_modules/@allyhub-next/scenery/dist/handheld.d.ts +184 -0
  226. package/node_modules/@allyhub-next/scenery/dist/handheld.js +2 -0
  227. package/node_modules/@allyhub-next/scenery/dist/hull.d.ts +23 -0
  228. package/node_modules/@allyhub-next/scenery/dist/hull.js +2 -0
  229. package/node_modules/@allyhub-next/scenery/dist/index.d.ts +22 -0
  230. package/node_modules/@allyhub-next/scenery/dist/index.js +2 -0
  231. package/node_modules/@allyhub-next/scenery/dist/lens.d.ts +48 -0
  232. package/node_modules/@allyhub-next/scenery/dist/lens.js +2 -0
  233. package/node_modules/@allyhub-next/scenery/dist/moire.d.ts +136 -0
  234. package/node_modules/@allyhub-next/scenery/dist/moire.js +93 -0
  235. package/node_modules/@allyhub-next/scenery/dist/motion.d.ts +48 -0
  236. package/node_modules/@allyhub-next/scenery/dist/motion.js +2 -0
  237. package/node_modules/@allyhub-next/scenery/dist/move.d.ts +260 -0
  238. package/node_modules/@allyhub-next/scenery/dist/move.js +2 -0
  239. package/node_modules/@allyhub-next/scenery/dist/noise.d.ts +41 -0
  240. package/node_modules/@allyhub-next/scenery/dist/noise.js +2 -0
  241. package/node_modules/@allyhub-next/scenery/dist/phone.d.ts +34 -0
  242. package/node_modules/@allyhub-next/scenery/dist/phone.js +2 -0
  243. package/node_modules/@allyhub-next/scenery/dist/report.d.ts +677 -0
  244. package/node_modules/@allyhub-next/scenery/dist/report.js +2 -0
  245. package/node_modules/@allyhub-next/scenery/dist/screen-focus.d.ts +55 -0
  246. package/node_modules/@allyhub-next/scenery/dist/screen-focus.js +2 -0
  247. package/node_modules/@allyhub-next/scenery/dist/screen.d.ts +71 -0
  248. package/node_modules/@allyhub-next/scenery/dist/screen.js +2 -0
  249. package/node_modules/@allyhub-next/scenery/dist/solve.d.ts +82 -0
  250. package/node_modules/@allyhub-next/scenery/dist/solve.js +2 -0
  251. package/node_modules/@allyhub-next/scenery/dist/timing.d.ts +26 -0
  252. package/node_modules/@allyhub-next/scenery/dist/timing.js +2 -0
  253. package/node_modules/@allyhub-next/scenery/dist/vec.d.ts +19 -0
  254. package/node_modules/@allyhub-next/scenery/dist/vec.js +2 -0
  255. package/node_modules/@allyhub-next/scenery/package.json +13 -0
  256. package/node_modules/@allyhub-next/video-core/LICENSE +241 -0
  257. package/node_modules/@allyhub-next/video-core/dist/anchors.d.ts +164 -0
  258. package/node_modules/@allyhub-next/video-core/dist/anchors.js +2 -0
  259. package/node_modules/@allyhub-next/video-core/dist/audio-types.d.ts +148 -0
  260. package/node_modules/@allyhub-next/video-core/dist/audio-types.js +2 -0
  261. package/node_modules/@allyhub-next/video-core/dist/backdrop.d.ts +87 -0
  262. package/node_modules/@allyhub-next/video-core/dist/backdrop.js +2 -0
  263. package/node_modules/@allyhub-next/video-core/dist/captions.d.ts +122 -0
  264. package/node_modules/@allyhub-next/video-core/dist/captions.js +11 -0
  265. package/node_modules/@allyhub-next/video-core/dist/console.d.ts +91 -0
  266. package/node_modules/@allyhub-next/video-core/dist/console.js +2 -0
  267. package/node_modules/@allyhub-next/video-core/dist/contrast.d.ts +98 -0
  268. package/node_modules/@allyhub-next/video-core/dist/contrast.js +2 -0
  269. package/node_modules/@allyhub-next/video-core/dist/cut-report.d.ts +77 -0
  270. package/node_modules/@allyhub-next/video-core/dist/cut-report.js +2 -0
  271. package/node_modules/@allyhub-next/video-core/dist/edit.d.ts +77 -0
  272. package/node_modules/@allyhub-next/video-core/dist/edit.js +13 -0
  273. package/node_modules/@allyhub-next/video-core/dist/edits.d.ts +163 -0
  274. package/node_modules/@allyhub-next/video-core/dist/edits.js +2 -0
  275. package/node_modules/@allyhub-next/video-core/dist/export.d.ts +96 -0
  276. package/node_modules/@allyhub-next/video-core/dist/export.js +2 -0
  277. package/node_modules/@allyhub-next/video-core/dist/fact.d.ts +965 -0
  278. package/node_modules/@allyhub-next/video-core/dist/fact.js +2 -0
  279. package/node_modules/@allyhub-next/video-core/dist/footage-motion.d.ts +168 -0
  280. package/node_modules/@allyhub-next/video-core/dist/footage-motion.js +2 -0
  281. package/node_modules/@allyhub-next/video-core/dist/formats.d.ts +240 -0
  282. package/node_modules/@allyhub-next/video-core/dist/formats.js +2 -0
  283. package/node_modules/@allyhub-next/video-core/dist/gen.d.ts +37 -0
  284. package/node_modules/@allyhub-next/video-core/dist/gen.js +2 -0
  285. package/node_modules/@allyhub-next/video-core/dist/index.d.ts +40 -0
  286. package/node_modules/@allyhub-next/video-core/dist/index.js +2 -0
  287. package/node_modules/@allyhub-next/video-core/dist/look.d.ts +66 -0
  288. package/node_modules/@allyhub-next/video-core/dist/look.js +2 -0
  289. package/node_modules/@allyhub-next/video-core/dist/marks.d.ts +34 -0
  290. package/node_modules/@allyhub-next/video-core/dist/marks.js +2 -0
  291. package/node_modules/@allyhub-next/video-core/dist/matrix.d.ts +289 -0
  292. package/node_modules/@allyhub-next/video-core/dist/matrix.js +2 -0
  293. package/node_modules/@allyhub-next/video-core/dist/measure.d.ts +465 -0
  294. package/node_modules/@allyhub-next/video-core/dist/measure.js +5 -0
  295. package/node_modules/@allyhub-next/video-core/dist/media.d.ts +226 -0
  296. package/node_modules/@allyhub-next/video-core/dist/media.js +2 -0
  297. package/node_modules/@allyhub-next/video-core/dist/messages.d.ts +88 -0
  298. package/node_modules/@allyhub-next/video-core/dist/messages.js +2 -0
  299. package/node_modules/@allyhub-next/video-core/dist/motion.d.ts +56 -0
  300. package/node_modules/@allyhub-next/video-core/dist/motion.js +2 -0
  301. package/node_modules/@allyhub-next/video-core/dist/music.d.ts +110 -0
  302. package/node_modules/@allyhub-next/video-core/dist/music.js +2 -0
  303. package/node_modules/@allyhub-next/video-core/dist/piece.d.ts +1146 -0
  304. package/node_modules/@allyhub-next/video-core/dist/piece.js +2 -0
  305. package/node_modules/@allyhub-next/video-core/dist/placement.d.ts +37 -0
  306. package/node_modules/@allyhub-next/video-core/dist/placement.js +2 -0
  307. package/node_modules/@allyhub-next/video-core/dist/problem.d.ts +262 -0
  308. package/node_modules/@allyhub-next/video-core/dist/problem.js +2 -0
  309. package/node_modules/@allyhub-next/video-core/dist/render-types.d.ts +49 -0
  310. package/node_modules/@allyhub-next/video-core/dist/render-types.js +2 -0
  311. package/node_modules/@allyhub-next/video-core/dist/schema.d.ts +352 -0
  312. package/node_modules/@allyhub-next/video-core/dist/schema.js +2 -0
  313. package/node_modules/@allyhub-next/video-core/dist/script-edit.d.ts +176 -0
  314. package/node_modules/@allyhub-next/video-core/dist/script-edit.js +2 -0
  315. package/node_modules/@allyhub-next/video-core/dist/script.d.ts +67 -0
  316. package/node_modules/@allyhub-next/video-core/dist/script.js +2 -0
  317. package/node_modules/@allyhub-next/video-core/dist/seams.d.ts +214 -0
  318. package/node_modules/@allyhub-next/video-core/dist/seams.js +2 -0
  319. package/node_modules/@allyhub-next/video-core/dist/slides.d.ts +37 -0
  320. package/node_modules/@allyhub-next/video-core/dist/slides.js +2 -0
  321. package/node_modules/@allyhub-next/video-core/dist/sound-under.d.ts +72 -0
  322. package/node_modules/@allyhub-next/video-core/dist/sound-under.js +2 -0
  323. package/node_modules/@allyhub-next/video-core/dist/speech.d.ts +83 -0
  324. package/node_modules/@allyhub-next/video-core/dist/speech.js +5 -0
  325. package/node_modules/@allyhub-next/video-core/dist/timeline.d.ts +616 -0
  326. package/node_modules/@allyhub-next/video-core/dist/timeline.js +2 -0
  327. package/node_modules/@allyhub-next/video-core/dist/timing.d.ts +88 -0
  328. package/node_modules/@allyhub-next/video-core/dist/timing.js +2 -0
  329. package/node_modules/@allyhub-next/video-core/dist/transcript.d.ts +288 -0
  330. package/node_modules/@allyhub-next/video-core/dist/transcript.js +2 -0
  331. package/node_modules/@allyhub-next/video-core/dist/transition.d.ts +289 -0
  332. package/node_modules/@allyhub-next/video-core/dist/transition.js +2 -0
  333. package/node_modules/@allyhub-next/video-core/dist/voice.d.ts +175 -0
  334. package/node_modules/@allyhub-next/video-core/dist/voice.js +2 -0
  335. package/node_modules/@allyhub-next/video-core/dist/words.d.ts +128 -0
  336. package/node_modules/@allyhub-next/video-core/dist/words.js +2 -0
  337. package/node_modules/@allyhub-next/video-core/package.json +14 -0
  338. package/package.json +52 -41
  339. package/README.md +0 -17
  340. package/dist/anim.d.ts.map +0 -1
  341. package/dist/anim.js.map +0 -1
  342. package/dist/define.d.ts.map +0 -1
  343. package/dist/define.js.map +0 -1
  344. package/dist/dom.d.ts.map +0 -1
  345. package/dist/dom.js.map +0 -1
  346. package/dist/fit.d.ts.map +0 -1
  347. package/dist/fit.js.map +0 -1
  348. package/dist/index.d.ts.map +0 -1
  349. package/dist/index.js.map +0 -1
  350. package/dist/media.d.ts.map +0 -1
  351. package/dist/media.js.map +0 -1
  352. package/dist/messages.d.ts.map +0 -1
  353. package/dist/messages.js.map +0 -1
  354. package/dist/noise.d.ts.map +0 -1
  355. package/dist/noise.js.map +0 -1
  356. package/dist/parts.d.ts.map +0 -1
  357. package/dist/parts.js.map +0 -1
  358. package/dist/paths.d.ts.map +0 -1
  359. package/dist/paths.js.map +0 -1
  360. package/dist/piece.d.ts.map +0 -1
  361. package/dist/piece.js.map +0 -1
  362. package/dist/props.d.ts.map +0 -1
  363. package/dist/props.js.map +0 -1
  364. package/dist/text.d.ts.map +0 -1
  365. package/dist/text.js.map +0 -1
@@ -0,0 +1,260 @@
1
+ import { type CameraState } from "./camera.js";
2
+ import { Curve } from "./curve.js";
3
+ import type { LensFrame } from "./lens.js";
4
+ import { type Ease } from "./timing.js";
5
+ import { type Vec3 } from "./vec.js";
6
+ /** What a move may ask of the scenery at its moment. */
7
+ export interface SceneryView {
8
+ /** Where a named object is now (the centre of its box), or undefined. */
9
+ pointOf(name: string): Vec3 | undefined;
10
+ /**
11
+ * The scenery time, s, of a word or anchor reference ("@turn", "@turn+0.2",
12
+ * a word): there where the scenery is drawn in a part, from that part's
13
+ * speech and anchors, or where its host was given the times. Undefined
14
+ * elsewhere.
15
+ */
16
+ time?: (ref: string) => number;
17
+ /** The frame's width over height, where the camera is drawn for one. */
18
+ aspect?: number;
19
+ /** A screen's face (an object's first mesh, its +Z side), as it is now; undefined for no such object. */
20
+ screen?: (name: string) => ScreenFace | undefined;
21
+ }
22
+ /**
23
+ * A screen's face in the scenery: a point of it from its content's top left
24
+ * (x, y as shares of its width and height), the way it faces, its up, and
25
+ * its size in metres.
26
+ */
27
+ export interface ScreenFace {
28
+ point(x: number, y: number): Vec3;
29
+ center: Vec3;
30
+ normal: Vec3;
31
+ up: Vec3;
32
+ width: number;
33
+ height: number;
34
+ }
35
+ /**
36
+ * A move's moment written as a word or anchor reference, asked for where
37
+ * the scenery has no times (no part shows it, and its host was given
38
+ * none). A host that can be given times catches it to say how.
39
+ */
40
+ export declare class NeedsTimeError extends Error {
41
+ /** The reference, as written. */
42
+ readonly ref: string;
43
+ /** What the reference was given as ("A shot's from", "keys()' t"). */
44
+ readonly what: string;
45
+ constructor(ref: string, what: string);
46
+ }
47
+ /**
48
+ * A moment a move is written with: seconds of scenery time, or a word or
49
+ * anchor reference of the part that shows the scenery (SceneryView.time).
50
+ */
51
+ export type MoveTime = number | string;
52
+ /**
53
+ * A camera as a function of scenery time. A move made by shots() also says
54
+ * where it cuts (`cuts`, read with cutsOf), so no measurement of motion
55
+ * spans a cut.
56
+ */
57
+ export interface Move {
58
+ (t: number, scenery?: SceneryView): CameraState;
59
+ /** Its cuts, s of scenery time: fixed, or found from the scenery's reference times. */
60
+ readonly cuts?: Cuts;
61
+ }
62
+ /** Where a move cuts: scenery times, or a function of the scenery that finds them. */
63
+ export type Cuts = readonly number[] | ((scenery?: SceneryView) => readonly number[]);
64
+ /** What every move passes on to the camera it returns. */
65
+ export interface LensOptions {
66
+ /** 35 mm-equivalent focal length, mm (CameraState.lens). */
67
+ lens?: number;
68
+ lensFrame?: LensFrame;
69
+ /** Vertical degrees, instead of a lens. */
70
+ fov?: number;
71
+ roll?: number;
72
+ up?: Vec3;
73
+ near?: number;
74
+ far?: number;
75
+ /** The f-number (CameraState.aperture). */
76
+ aperture?: number;
77
+ /** Where it focuses (CameraState.focus). */
78
+ focus?: number | Vec3 | string;
79
+ /** Its exposure, EV at ISO 100 (CameraState.ev). */
80
+ ev?: number;
81
+ }
82
+ /** A camera key: a moment and what the camera is then. Channels a key leaves out are interpolated from the keys that have them. */
83
+ export interface CameraKey {
84
+ /** Seconds of scenery time, or a word or anchor reference of the part that shows the scenery ("@turn"). */
85
+ t: MoveTime;
86
+ position?: Vec3;
87
+ /** A point, or an object's name. */
88
+ target?: Vec3 | string;
89
+ yaw?: number;
90
+ pitch?: number;
91
+ lens?: number;
92
+ fov?: number;
93
+ roll?: number;
94
+ /** The f-number (CameraState.aperture), passed on a log scale: every key or none. */
95
+ aperture?: number;
96
+ /** Its exposure, EV at ISO 100 (CameraState.ev), passed straight: every key or none. */
97
+ ev?: number;
98
+ /**
99
+ * Where it focuses (CameraState.focus): distances pass in dioptres (one
100
+ * over the distance), as a focus is pulled; points move like the
101
+ * position; names are blended stretch by stretch, as targets are.
102
+ */
103
+ focus?: number | Vec3 | string;
104
+ /** How the stretch arriving at this key runs, in every channel; breaks the speed at its ends. */
105
+ ease?: Ease;
106
+ }
107
+ export interface KeysOptions extends LensOptions {
108
+ /**
109
+ * How a lens changes between keys: "log" (default), in log focal
110
+ * length, so a zoom changes size at a constant ratio; "fov", in degrees
111
+ * of field of view.
112
+ */
113
+ lensSpace?: "log" | "fov";
114
+ }
115
+ /**
116
+ * A camera through keyframes. Position passes each key at its time along a
117
+ * curve through the keys, at a speed continuous across keys (except at a
118
+ * key with an ease); a key that repeats the last position holds. Targets
119
+ * that are points move the same way; targets that are names are found in
120
+ * the scenery at each moment and blended stretch by stretch. Lens, fov,
121
+ * roll, yaw and pitch pass their keys on monotone cubics.
122
+ */
123
+ export declare function keys(list: readonly CameraKey[], opts?: KeysOptions): Move;
124
+ export interface PathOptions extends LensOptions {
125
+ /** When the camera leaves the first point: s of scenery time, or a word or anchor reference; default 0. */
126
+ start?: MoveTime;
127
+ /** How long it takes to reach the last point, s. Give this or speed. */
128
+ dur?: number;
129
+ /** Its speed, m/s. Give this or dur. */
130
+ speed?: number;
131
+ /** How the distance travelled runs over the time; default "linear" (constant speed). */
132
+ ease?: Ease;
133
+ /** Where it looks: a point, an object's name, or "ahead" (the default), along the path. */
134
+ target?: Vec3 | string;
135
+ /** With target "ahead": how far on along the path it looks, m; default 1. */
136
+ ahead?: number;
137
+ /**
138
+ * Which way is up: "scenery" (the default) keeps `up`; "rmf" carries it
139
+ * along the path in a frame that does not twist about it.
140
+ */
141
+ frame?: "scenery" | "rmf";
142
+ /** Curve tension: 0.5 centripetal (the default), 0 uniform, 1 chordal. */
143
+ alpha?: number;
144
+ }
145
+ export declare const PATH_DEFAULTS: {
146
+ start: number;
147
+ ahead: number;
148
+ alpha: number;
149
+ };
150
+ /** A camera moving along a curve through points at constant speed (or an ease on the distance). */
151
+ export declare function path(points: readonly Vec3[], opts: PathOptions): Move;
152
+ /** The curve a path() follows, for measuring it: its length and points along it. */
153
+ export declare function pathCurve(points: readonly Vec3[], alpha?: number): Curve;
154
+ export interface OrbitOptions extends LensOptions {
155
+ /** The point or the object's name it goes round. */
156
+ around: Vec3 | string;
157
+ /** Distance from the centre on the floor's plane, m. */
158
+ radius: number;
159
+ /** Height above the centre, m; default 0. */
160
+ height?: number;
161
+ /**
162
+ * Angles in degrees: 0 on the centre's +Z side (in front of a model that
163
+ * faces +Z), 90 on its +X side; counterclockwise seen from above. Not
164
+ * wrapped: 0 → 540 goes round one and a half times.
165
+ */
166
+ from: number;
167
+ to: number;
168
+ /** When it starts: s of scenery time, or a word or anchor reference; default 0. */
169
+ start?: MoveTime;
170
+ /** How long it takes, s. */
171
+ dur: number;
172
+ /** How the angle runs over the time; default "linear". */
173
+ ease?: Ease;
174
+ /** Where it looks; default the centre. */
175
+ target?: Vec3 | string;
176
+ }
177
+ /** A camera going round a point at a radius and height. */
178
+ export declare function orbit(opts: OrbitOptions): Move;
179
+ /** One shot of shots(): when it starts, and the camera it holds or the move it makes. */
180
+ export interface Shot {
181
+ /** Seconds of scenery time, or a word or anchor reference of the part. The first shot also holds before its start. */
182
+ from: MoveTime;
183
+ /** A camera that holds still, or a move (keys, path, orbit, your own), in scenery time. */
184
+ camera: CameraState | Move;
185
+ }
186
+ /**
187
+ * A camera made of shots joined by cuts, as a film is: each shot from its
188
+ * start until the next one's, a still camera or a move of its own; at each
189
+ * start the picture cuts. A pause before a cut is a shot that holds. The
190
+ * measurements of motion stop at each cut (cutsOf).
191
+ */
192
+ export declare function shots(list: readonly Shot[]): Move;
193
+ /** The cuts of a camera made by shots(), scenery times (none for any other camera, or one wrapped in a function of yours). */
194
+ export declare function cutsOf(camera: CameraState | Move, scenery?: SceneryView): number[];
195
+ /**
196
+ * `move` with the cuts of `camera` (a camera made by shots()), so a move
197
+ * of yours wrapped round it keeps them for the measurements; returns
198
+ * `move`.
199
+ */
200
+ export declare function withCuts(camera: CameraState | Move, move: (t: number, scenery?: SceneryView) => CameraState): Move;
201
+ export interface FocusScreenOptions {
202
+ /** How far toward the frame's edges the rectangle may reach, 0–1 (fitCamera's fill); default 1. */
203
+ fill?: number;
204
+ /** The lens (35 mm-equivalent), or a vertical fov in degrees; default the camera default's. */
205
+ lens?: number;
206
+ fov?: number;
207
+ /**
208
+ * Degrees off looking at the screen square on, default 0: `yaw` turns
209
+ * about the screen's up (positive: the camera to the right of someone
210
+ * facing the screen, looking left at it), then `pitch` up or down
211
+ * (positive: below the screen, looking up, as a camera's pitch looks up).
212
+ */
213
+ yaw?: number;
214
+ pitch?: number;
215
+ /** The frame's width over height; default the scenery layer's. */
216
+ aspect?: number;
217
+ /** Its exposure, EV at ISO 100 (CameraState.ev). */
218
+ ev?: number;
219
+ /** What `lens` is measured on (CameraState.lensFrame): "phone" for a phone's own "26 mm". */
220
+ lensFrame?: LensFrame;
221
+ }
222
+ /**
223
+ * A camera framing a rectangle of a screen's content exactly: `rect` is
224
+ * [x, y, width, height] as shares of the content (from its top left: a
225
+ * button at px [1200, 80, 160, 48] of 1920 × 1200 is [0.625, 0.067,
226
+ * 0.083, 0.04]), seen square on (or `yaw`/`pitch` off it), the screen's up
227
+ * kept up. A camera of the scenery's, so the room is framed with it.
228
+ */
229
+ export declare function focusScreen(screen: string, rect: readonly [number, number, number, number], opts?: FocusScreenOptions): Move;
230
+ /** A camera, or a move's camera at `t`. */
231
+ export declare const stateOf: (c: CameraState | Move, t: number, scenery?: SceneryView) => CameraState;
232
+ /**
233
+ * The camera `x` of the way from `sa` to `sb` (past 1 or under 0 goes on
234
+ * past them): its position, its view and its up, its lens at a constant
235
+ * zoom ratio, its depth of field (the aperture's area and the focus in
236
+ * dioptres), its exposure in stops. `xEv`, when given, is the exposure's
237
+ * own share of the way. `what` names the caller in its errors.
238
+ */
239
+ export declare function mixCameras(sa: CameraState, sb: CameraState, x: number, scenery: SceneryView | undefined, what: string, xEv?: number): CameraState;
240
+ /** A move's moment: seconds, or a reference's scenery time (or why it has none). */
241
+ export declare function momentOf(scenery: SceneryView | undefined, at: MoveTime, what: string): number;
242
+ export interface BlendOptions {
243
+ /** When it leaves the first camera, and when it is the second: seconds of scenery time or references. */
244
+ from: MoveTime;
245
+ to: MoveTime;
246
+ /**
247
+ * How it runs between them; default "smooth" (still at both ends, at
248
+ * one and a half times its mean speed half way).
249
+ */
250
+ ease?: Ease;
251
+ }
252
+ /**
253
+ * From one camera to another over a stretch of time: the first before
254
+ * `from`, the second after `to`, and between them its position, its
255
+ * view, its up and its lens on their way from one to the other (the lens
256
+ * at a constant zoom ratio). A push in to a screen and a pull back out are
257
+ * blends; each camera may itself move.
258
+ */
259
+ export declare function blend(a: CameraState | Move, b: CameraState | Move, opts: BlendOptions): Move;
260
+ //# sourceMappingURL=move.d.ts.map
@@ -0,0 +1,2 @@
1
+ /*! AllyHub. Copyright (c) 2026 AllyHub, Inc. All rights reserved. Use is subject to LICENSE.md. */
2
+ import{resolveCamera as R}from"./camera.js";import{Curve as V,SAME_POINT as X}from"./curve.js";import{easeValue as O,timedNumber as Y}from"./timing.js";import{fitCamera as fe}from"./fit.js";import{cross as Z,distance as ee,dot as ue,lerp3 as T,normalize as _,scale as ce}from"./vec.js";export class NeedsTimeError extends Error{ref;what;constructor(n,t){super(`${t} "${n}" is a word or anchor reference: it has a time only in a part that shows the scenery, or where the scenery's host is given the times.`),this.name="NeedsTimeError",this.ref=n,this.what=t}}function b(e,n,t){if(!e?.time)throw new NeedsTimeError(n,t);const a=e.time(n);if(!Number.isFinite(a))throw new Error(`${t} "${n}" has no time (${String(a)}).`);return a}function z(e,n,t){const a=new WeakMap;return(f,o)=>{const u=e[0]??"";b(o,u,n);const c=o.time;let r=a.get(c);return r||(r=t(i=>b(o,i,n)),a.set(c,r)),r(f,o)}}const D=(e,n)=>Object.assign(e,{cuts:n}),L=e=>({...e.lens!==void 0?{lens:e.lens}:{},...e.lensFrame!==void 0?{lensFrame:e.lensFrame}:{},...e.fov!==void 0?{fov:e.fov}:{},...e.roll!==void 0?{roll:e.roll}:{},...e.up!==void 0?{up:e.up}:{},...e.near!==void 0?{near:e.near}:{},...e.far!==void 0?{far:e.far}:{},...e.aperture!==void 0?{aperture:e.aperture}:{},...e.focus!==void 0?{focus:e.focus}:{},...e.ev!==void 0?{ev:e.ev}:{}});function I(e,n,t){if(typeof e!="string")return e;const a=n?.pointOf(e);if(!a)throw new Error(n?`${t} "${e}" names nothing in the scenery.`:`${t} "${e}" is a name, and the move was not given the scenery to find it in.`);return a}function W(e){const n=e[0];if(!n)throw new Error("A point over time needs at least one key.");const t=[],a=[0];let f=0,o=0;for(;o+1<e.length;){if(ee(e[o]?.v??n.v,e[o+1]?.v??n.v)<=X){a.push(f),o++;continue}let r=o+1;for(;r+1<e.length&&ee(e[r]?.v??n.v,e[r+1]?.v??n.v)>X;)r++;const i=new V(e.slice(o,r+1).map(d=>d.v));t.push({from:o,to:r,curve:i,start:f});for(let d=o+1;d<=r;d++)a.push(f+(i.knots[d-o]??0));f+=i.length,o=r}const u=Y(e.map((r,i)=>({t:r.t,v:a[i]??0,...r.ease!==void 0?{ease:r.ease}:{}}))),c=e.at(-1)??n;return r=>{if(!(r>n.t))return n.v;if(r>=c.t)return c.v;let i=0;for(;i+1<e.length&&(e[i+1]?.t??1/0)<=r;)i++;const d=t.find(h=>i>=h.from&&i<h.to);return d?d.curve.at(u(r)-d.start).point:e[i]?.v??n.v}}function E(e,n){const t=[];for(const a of e){const f=n(a);f!==void 0&&t.push({t:a.t,v:f,...a.ease!==void 0?{ease:a.ease}:{}})}return t}export function keys(e,n={}){if(e.length===0)throw new Error("keys() needs at least one key.");const t=e.flatMap(a=>typeof a.t=="string"?[a.t]:[]);return t.length===0?re(e,n):(te(e),z(t,"A key's t",a=>{const f=e.map(o=>({...o,t:typeof o.t=="string"?a(o.t):o.t}));return f.forEach((o,u)=>{const c=f[u-1];if(c&&!(o.t>c.t)){const r=(i,d)=>typeof i.t=="string"?`"${i.t}" (${d.toFixed(3)} s)`:`${d.toFixed(3)} s`;throw new Error(`Keys must be in time order: the key at ${r(e[u]??o,o.t)} does not come after the one at ${r(e[u-1]??c,c.t)}.`)}}),re(f,n)}))}const ne=e=>typeof e.t=="string"?`"${e.t}"`:`${String(e.t)} s`;function te(e){for(const n of e){if(typeof n.t=="number"&&!Number.isFinite(n.t))throw new Error(`A key's t must be a number of seconds or a reference, not ${String(n.t)}.`);if(typeof n.t=="string"&&n.t.trim()==="")throw new Error("A key's t is an empty reference.");if(n.target!==void 0&&(n.yaw!==void 0||n.pitch!==void 0))throw new Error(`The key at ${ne(n)} points two ways (a target and yaw/pitch): give one.`);if(n.lens!==void 0&&n.fov!==void 0)throw new Error(`The key at ${ne(n)} has both a lens and a fov: give one.`)}}function re(e,n){te(e);const t=E(e,s=>s.position);if(t.length===0)throw new Error("keys() needs a position in at least one key.");const a=W(t),f=E(e,s=>s.target),o=e.some(s=>s.yaw!==void 0||s.pitch!==void 0);if(f.length>0&&o)throw new Error("keys() points by target in some keys and by yaw/pitch in others: use one way throughout.");const u=f.some(s=>typeof s.v=="string"),c=f.length>0&&!u?W(f.map(s=>({...s,v:s.v}))):void 0,r=f[0],i=u&&f.every(s=>s.v===r?.v)?r?.v:void 0,d=(s,$)=>{const g=E(e,s);return g.length===0?void 0:Y(g.map(A=>({...A,v:$?$(A.v):A.v})))},h=E(e,s=>s.lens),m=E(e,s=>s.fov);if(h.length>0&&m.length>0)throw new Error("keys() sets a lens in some keys and a fov in others: use one throughout.");const M=(n.lensSpace??"log")==="log",P=d(s=>s.lens,M?Math.log:void 0),S=d(s=>s.fov),F=d(s=>s.roll),K=d(s=>s.yaw),N=d(s=>s.pitch),H=E(e,s=>s.aperture);if(H.length>0&&H.length<e.length)throw new Error("keys() gives an aperture in some keys and not in others: give it in every key, or in none (a pinhole is no aperture).");const se=d(s=>s.aperture,Math.log),J=E(e,s=>s.ev);if(J.length>0&&J.length<e.length)throw new Error("keys() gives an ev in some keys and not in others: give it in every key, or in none (the scenery's own exposure).");const ie=d(s=>s.ev),w=E(e,s=>s.focus),C=new Set(w.map(s=>typeof s.v=="number"?"distance":typeof s.v=="string"?"name":"point"));if(C.has("distance")&&C.size>1)throw new Error("keys() focuses by distance in some keys and on a point or an object in others: use one way throughout.");const j=C.has("distance")?d(s=>typeof s.focus=="number"?s.focus:void 0,s=>1/s):void 0,U=C.has("name"),q=w.length>0&&!U&&!j?W(w.map(s=>({...s,v:s.v}))):void 0;return(s,$)=>{let g;if(c)g=c(s);else if(i!==void 0)g=i;else if(u&&r){const p=f.at(-1)??r;if(!(s>r.t))g=r.v;else if(s>=p.t)g=p.v;else{let v=0;for(;v+1<f.length&&(f[v+1]?.t??1/0)<=s;)v++;const l=f[v]??r,x=f[v+1]??p,k=O(x.ease??"in-out",(s-l.t)/(x.t-l.t));g=T(I(l.v,$,"A key's target"),I(x.v,$,"A key's target"),k)}}const A=P?.(s);let y;if(j)y=1/j(s);else if(q)y=q(s);else if(U){const p=w[0],v=w.at(-1);if(p&&v)if(w.every(l=>l.v===p.v))y=p.v;else if(!(s>p.t))y=p.v;else if(s>=v.t)y=v.v;else{let l=0;for(;l+1<w.length&&(w[l+1]?.t??1/0)<=s;)l++;const x=w[l]??p,k=w[l+1]??v,ae=O(k.ease??"in-out",(s-x.t)/(k.t-x.t));y=T(I(x.v,$,"A key's focus"),I(k.v,$,"A key's focus"),ae)}}const G=se?.(s),Q=ie?.(s);return{...L(n),...Q!==void 0?{ev:Q}:{},...G!==void 0?{aperture:Math.exp(G)}:{},...y!==void 0?{focus:y}:{},position:a(s),...g!==void 0?{target:g}:{},...K?{yaw:K(s)}:{},...N?{pitch:N(s)}:{},...A!==void 0?{lens:M?Math.exp(A):A}:{},...S?{fov:S(s)}:{},...F?{roll:F(s)}:{}}}}export const PATH_DEFAULTS={start:0,ahead:1,alpha:.5};export function path(e,n){if(e.length===0)throw new Error("path() needs at least one point.");const t=n.start??PATH_DEFAULTS.start;return typeof t=="string"?(B(e,{...n,start:0}),z([t],"path()'s start",a=>B(e,{...n,start:a(t)}))):B(e,{...n,start:t})}function B(e,n){if(n.dur===void 0==(n.speed===void 0))throw new Error("path() needs dur (seconds) or speed (m/s): give one.");const t=new V(e,n.alpha??PATH_DEFAULTS.alpha),a=n.dur??t.length/(n.speed??1);if(!(Number.isFinite(a)&&a>=0))throw new Error(`path()'s duration ${String(a)} s is not a number of seconds.`);const f=n.start,o=n.ahead??PATH_DEFAULTS.ahead,u=n.target??"ahead";return c=>{const r=a>0?(c-f)/a:c>=f?1:0,i=t.length*O(n.ease,r),d=t.at(i),h={...L(n),position:d.point,target:u==="ahead"?t.extended(i+o):u};return n.frame==="rmf"&&(h.up=t.upAt(i,n.up)),h}}export function pathCurve(e,n=PATH_DEFAULTS.alpha){return new V(e,n)}export function orbit(e){if(!(Number.isFinite(e.radius)&&e.radius>=0))throw new Error(`orbit()'s radius ${String(e.radius)} is not a distance.`);if(!(Number.isFinite(e.dur)&&e.dur>=0))throw new Error(`orbit()'s dur ${String(e.dur)} is not a number of seconds.`);return(n,t)=>{const a=typeof e.start=="string"?b(t,e.start,"orbit()'s start"):e.start??0,f=I(e.around,t,"orbit()'s centre"),o=e.dur>0?(n-a)/e.dur:n>=a?1:0,u=(e.from+(e.to-e.from)*O(e.ease,o))*Math.PI/180;return{...L(e),position:[f[0]+e.radius*Math.sin(u),f[1]+(e.height??0),f[2]+e.radius*Math.cos(u)],target:e.target??f}}}export function shots(e){if(e.length===0)throw new Error("shots() needs at least one shot.");for(const o of e){if(typeof o.from=="number"&&!Number.isFinite(o.from))throw new Error(`A shot's from must be seconds or a reference, not ${String(o.from)}.`);if(typeof o.camera!="function"&&!Array.isArray(o.camera.position))throw new Error("A shot's camera is a camera state or a move.")}const n=e.flatMap(o=>typeof o.from=="string"?[o.from]:[]),t=o=>{const u=e.map(c=>typeof c.from=="number"?c.from:o?o(c.from):b(void 0,c.from,"A shot's from"));return u.forEach((c,r)=>{const i=u[r-1];if(i!==void 0&&!(c>i)){const d=h=>{const m=e[h]?.from;return typeof m=="string"?`"${m}"`:`${String(m)} s`};throw new Error(`Shots must be in time order: the shot from ${d(r)} (${c.toFixed(3)} s) does not come after the one from ${d(r-1)} (${i.toFixed(3)} s).`)}}),u},a=o=>D((u,c)=>{let r=0;for(;r+1<o.length&&(o[r+1]??1/0)<=u;)r++;const i=e[r]?.camera;if(i===void 0)throw new Error("No shot.");return typeof i=="function"?i(u,c):i},o.slice(1));if(n.length===0)return a(t(void 0));const f=new WeakMap;return D((o,u)=>{b(u,n[0]??"","A shot's from");const c=u.time;let r=f.get(c);return r||(r=a(t(i=>b(u,i,"A shot's from"))),f.set(c,r)),r(o,u)},o=>o?.time?t(u=>b(o,u,"A shot's from")).slice(1):[])}export function cutsOf(e,n){if(typeof e!="function")return[];const t=e.cuts;return t===void 0?[]:typeof t=="function"?[...t(n)]:[...t]}export function withCuts(e,n){const t=typeof e=="function"?e.cuts:void 0;return t===void 0?n:D(n,t)}function oe(e,n,t){const a=t*Math.PI/180,f=Math.cos(a),o=Math.sin(a),u=_(n),c=Z(u,e),r=ue(u,e)*(1-f);return[e[0]*f+c[0]*o+u[0]*r,e[1]*f+c[1]*o+u[1]*r,e[2]*f+c[2]*o+u[2]*r]}export function focusScreen(e,n,t={}){const[a,f,o,u]=n;if(![a,f,o,u].every(c=>Number.isFinite(c))||!(o>0&&u>0))throw new Error(`focusScreen()'s rect is [x, y, width, height] as shares of the screen's content, not ${JSON.stringify(n)}.`);return(c,r)=>{const i=r?.screen?.(e);if(!i)throw new Error(r?.screen?`focusScreen(): the scenery has no screen "${e}" (an object with a mesh).`:"focusScreen() needs the scenery it is drawn in.");const d=t.aspect??r?.aspect;if(d===void 0)throw new Error("focusScreen() needs the frame's aspect: a scenery layer gives it; elsewhere pass aspect.");let h=ce(i.normal,-1);t.yaw&&(h=oe(h,i.up,t.yaw)),t.pitch&&(h=oe(h,Z(h,i.up),t.pitch));const m=fe({points:[i.point(a,f),i.point(a+o,f),i.point(a+o,f+u),i.point(a,f+u)],direction:h,up:i.up,aspect:d,...t.lens!==void 0?{lens:t.lens}:{},...t.lensFrame!==void 0?{lensFrame:t.lensFrame}:{},...t.fov!==void 0?{fov:t.fov}:{},...t.fill!==void 0?{fill:t.fill}:{}});return t.ev!==void 0?{...m,ev:t.ev}:m}}export const stateOf=(e,n,t)=>typeof e=="function"?e(n,t):e;export function mixCameras(e,n,t,a,f,o=t){const u=a?.aspect??1,c=M=>a?.pointOf(M),r=R(e,u,c),i=R(n,u,c);if(r.ev===void 0!=(i.ev===void 0))throw new Error(`${f} goes between a camera with an ev and one without: give both an ev, or neither (the scenery's own exposure).`);const d=r.dof,h=i.dof;let m;if(d||h){const M=d?d.aperture*(r.lens/d.lens):1/0,P=h?h.aperture*(i.lens/h.lens):1/0,S=1/M*(1-t)+1/P*t,F=d?.focus??h?.focus??1,K=h?.focus??F,N=1/F*(1-t)+1/K*t;S>0&&N>0&&(m={aperture:1/S,focus:1/N})}return{position:T(r.position,i.position,t),direction:_(T(r.forward,i.forward,t)),up:_(T(r.up,i.up,t)),lens:Math.exp(Math.log(r.lens)+(Math.log(i.lens)-Math.log(r.lens))*t),near:Math.min(r.near,i.near),far:Math.max(r.far,i.far),...m??{},...r.ev!==void 0&&i.ev!==void 0?{ev:r.ev*(1-o)+i.ev*o}:{}}}export function momentOf(e,n,t){return typeof n=="number"?n:b(e,n,t)}export function blend(e,n,t){const a=(o,u)=>{if(!(u>o))throw new Error(`blend()'s to (${String(u)} s) must come after its from (${String(o)} s).`);return(c,r)=>{if(c<=o)return stateOf(e,c,r);if(c>=u)return stateOf(n,c,r);const i=O(t.ease??"smooth",(c-o)/(u-o));return mixCameras(stateOf(e,c,r),stateOf(n,c,r),i,r,"blend()")}},f=[t.from,t.to].filter(o=>typeof o=="string");return f.length===0?a(t.from,t.to):z(f,"blend()'s from or to",o=>a(typeof t.from=="string"?o(t.from):t.from,typeof t.to=="string"?o(t.to):t.to))}
@@ -0,0 +1,41 @@
1
+ /** A band of frequencies: its centre and its spread (the spectrum's standard deviation), Hz. */
2
+ export interface Band {
3
+ /** Hz; 0 for low-pass noise. */
4
+ center: number;
5
+ /** Hz, above 0: how far the spectrum spreads either side of the centre. */
6
+ spread: number;
7
+ }
8
+ /** A hash of three whole numbers, 0 to 2³² − 1. */
9
+ export declare function hash3(a: number, b: number, c: number): number;
10
+ /** A number from 0 to 1 (never 0 or 1) for three whole numbers. */
11
+ export declare function unit3(a: number, b: number, c: number): number;
12
+ /** A standard normal number for three whole numbers (Box–Muller). */
13
+ export declare function gauss3(a: number, b: number, c: number): number;
14
+ /**
15
+ * Noise of standard deviation 1 (in expectation) whose spectrum is a
16
+ * Gaussian bump of `band.spread` Hz round `band.center` (and round 0 for
17
+ * a centre of 0): a lattice of seeded normal numbers, filtered by a Gabor
18
+ * kernel. Each `channel` of a seed is another noise.
19
+ */
20
+ export declare function bandNoise(seed: number, channel: number, band: Band): (t: number) => number;
21
+ /** A power-law spectrum: its power density falls as 1/f^alpha from `low` to `high` Hz. */
22
+ export interface Slope {
23
+ low: number;
24
+ high: number;
25
+ /** 0 is white, 1 pink, 2 brown (a hand's sway is near 2). */
26
+ alpha: number;
27
+ }
28
+ /**
29
+ * Noise of standard deviation 1 whose spectrum falls as 1/f^alpha between
30
+ * `low` and `high` Hz: half-octave bands, each with its share of the
31
+ * power. Each `channel` is another noise. `gain`, by a band's centre,
32
+ * takes part of it out (a stabiliser): the deviation is then less than 1.
33
+ */
34
+ export declare function powerNoise(seed: number, channel: number, slope: Slope, gain?: (center: number) => number): (t: number) => number;
35
+ /**
36
+ * A gain that waxes and wanes about 1 (exp(β·g − β²) over low-pass noise
37
+ * g), so that what it multiplies keeps its standard deviation in
38
+ * expectation: `swell` is β, `period` the seconds of its slow swing.
39
+ */
40
+ export declare function swellOf(seed: number, channel: number, swell: number, period: number): (t: number) => number;
41
+ //# sourceMappingURL=noise.d.ts.map
@@ -0,0 +1,2 @@
1
+ /*! AllyHub. Copyright (c) 2026 AllyHub, Inc. All rights reserved. Use is subject to LICENSE.md. */
2
+ function b(e){let t=e|0;return t^=t>>>16,t=Math.imul(t,2246822507),t^=t>>>13,t=Math.imul(t,3266489909),t^=t>>>16,t>>>0}export function hash3(e,t,n){return b(b(b(e^2654435769)^Math.imul(t|0,1663821227))^Math.imul(n|0,668265263))}export function unit3(e,t,n){return(hash3(e,t,n)+.5)/4294967296}export function gauss3(e,t,n){const a=unit3(e,t,n),s=unit3(e^1540483477,n,t);return Math.sqrt(-2*Math.log(a))*Math.cos(2*Math.PI*s)}const I=4;export function bandNoise(e,t,n){const a=Math.max(0,n.center),s=Math.max(1e-6,n.spread),r=1/(2*Math.PI*s),h=2.5*(a+I*s),M=1/h,f=h*(Math.sqrt(Math.PI)*r/2)*(1+Math.exp(-4*Math.PI*Math.PI*a*a*r*r)),i=1/Math.sqrt(f),u=I*r,m=e|0,l=t|0;return o=>{if(!Number.isFinite(o))return 0;const c=Math.ceil((o-u)*h),x=Math.floor((o+u)*h);let g=0;for(let p=c;p<=x;p++){const d=o-p*M,P=Math.exp(-d*d/(2*r*r));g+=gauss3(m,l,p)*P*(a>0?Math.cos(2*Math.PI*a*d):1)}return g*i}}export function powerNoise(e,t,n,a=()=>1){const{low:s,high:r,alpha:h}=n,M=Math.max(1,Math.round(2*Math.log2(Math.max(r/s,1)))),f=(r/s)**(1/M),i=Array.from({length:M},(o,c)=>s*f**(c+.5)),u=i.map(o=>o**(1-h)),m=u.reduce((o,c)=>o+c,0),l=i.map((o,c)=>({noise:bandNoise(e,t*64+c,{center:o,spread:o*.2}),k:a(o)*Math.sqrt((u[c]??0)/m)}));return o=>l.reduce((c,x)=>c+x.k*x.noise(o),0)}export function swellOf(e,t,n,a){if(n<=0)return()=>1;const s=bandNoise(e,t,{center:0,spread:1/a});return r=>Math.exp(n*s(r)-n*n)}
@@ -0,0 +1,34 @@
1
+ import type { HandheldOptions } from "./handheld.js";
2
+ import type { LensFrame } from "./lens.js";
3
+ import type { SensorOptions } from "./moire.js";
4
+ /** What a phone's camera is, as the options of each mechanism. */
5
+ export interface PhoneCamera {
6
+ /** A camera state's lens: 35 mm-equivalent focal length on the phone's 4:3 frame, and its aperture in the same terms. */
7
+ lens: {
8
+ lens: number;
9
+ lensFrame: LensFrame;
10
+ aperture: number;
11
+ };
12
+ /** The sensor filming a screen: its photosites, the lens's own blur on them, its moiré and false colour, its distortion. */
13
+ sensor: SensorOptions;
14
+ /** handheld(camera, hand): the hand, its stabiliser, its autofocus and auto-exposure. */
15
+ hand: HandheldOptions;
16
+ }
17
+ /**
18
+ * A phone's main camera filming a screen or a room indoors, held in a
19
+ * hand: a 26 mm lens on its 4:3 frame at f/8 equivalent (f/1.8 on its
20
+ * small sensor), a 12 MP sensor, a hand whose tremor its stabiliser mostly
21
+ * takes out, focus that hunts after a cut, a reframe or a jolt, exposure
22
+ * that follows a new framing late.
23
+ */
24
+ export declare const PHONE_CAMERA: PhoneCamera;
25
+ /** Something with every field optional, all the way down. */
26
+ export type Deeper<T> = {
27
+ [K in keyof T]?: T[K] extends readonly unknown[] ? T[K] : T[K] extends object ? Deeper<T[K]> : T[K];
28
+ };
29
+ /**
30
+ * PHONE_CAMERA with any of its values changed (`{ hand: { tremor: { angle:
31
+ * 0.2 } } }` changes that one and keeps the rest).
32
+ */
33
+ export declare function phoneCamera(over?: Deeper<PhoneCamera>): PhoneCamera;
34
+ //# sourceMappingURL=phone.d.ts.map
@@ -0,0 +1,2 @@
1
+ /*! AllyHub. Copyright (c) 2026 AllyHub, Inc. All rights reserved. Use is subject to LICENSE.md. */
2
+ export const PHONE_CAMERA={lens:{lens:26,lensFrame:"phone",aperture:8},sensor:{photosites:4032,lens:.35,moire:1,chroma:.3,distortion:-.03},hand:{angle:.25,roll:.6,shift:.001,sway:.65,tremor:{angle:.1,frequency:8.5},drift:{angle:.15,shift:.001,period:8},stabilizer:{strength:.7,cutoff:1.5},autofocus:{},exposure:{}}};const s=e=>typeof e=="object"&&e!==null&&!Array.isArray(e);function i(e,n){if(!s(e)||!s(n))return n===void 0?e:n;const t={...e};for(const[r,o]of Object.entries(n))t[r]=o===void 0?e[r]:i(e[r],o);return t}export function phoneCamera(e={}){return i(PHONE_CAMERA,e)}