@johnmorrisdotca/uchusen-rockets 0.2.2 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (906) hide show
  1. package/CHANGELOG.md +55 -5
  2. package/LICENSES/ODbL-1.0.txt +540 -0
  3. package/NOTICE.md +56 -6
  4. package/README.md +288 -16
  5. package/dist/assets/apollo-soyuz-apollo-soyuz-apart.painted.svg +1 -0
  6. package/dist/assets/apollo-soyuz-apollo-soyuz-apart.svg +1 -0
  7. package/dist/assets/apollo-soyuz-apollo-soyuz-apart.thick.svg +1 -0
  8. package/dist/assets/apollo-soyuz-apollo-soyuz-csm.glb +0 -0
  9. package/dist/assets/apollo-soyuz-apollo-soyuz-csm.painted.svg +1 -0
  10. package/dist/assets/apollo-soyuz-apollo-soyuz-csm.svg +1 -0
  11. package/dist/assets/apollo-soyuz-apollo-soyuz-csm.thick.svg +1 -0
  12. package/dist/assets/apollo-soyuz-apollo-soyuz-docking-module.glb +0 -0
  13. package/dist/assets/apollo-soyuz-apollo-soyuz-docking-module.painted.svg +1 -0
  14. package/dist/assets/apollo-soyuz-apollo-soyuz-docking-module.svg +1 -0
  15. package/dist/assets/apollo-soyuz-apollo-soyuz-docking-module.thick.svg +1 -0
  16. package/dist/assets/apollo-soyuz-apollo-soyuz-soyuz.glb +0 -0
  17. package/dist/assets/apollo-soyuz-apollo-soyuz-soyuz.painted.svg +1 -0
  18. package/dist/assets/apollo-soyuz-apollo-soyuz-soyuz.svg +1 -0
  19. package/dist/assets/apollo-soyuz-apollo-soyuz-soyuz.thick.svg +1 -0
  20. package/dist/assets/apollo-soyuz-apollo-soyuz.glb +0 -0
  21. package/dist/assets/apollo-soyuz-apollo-soyuz.painted.svg +1 -0
  22. package/dist/assets/apollo-soyuz-apollo-soyuz.svg +1 -0
  23. package/dist/assets/apollo-soyuz-apollo-soyuz.thick.svg +1 -0
  24. package/dist/assets/dragon-cargo-dragon-2-apart.painted.svg +1 -0
  25. package/dist/assets/dragon-cargo-dragon-2-apart.svg +1 -0
  26. package/dist/assets/dragon-cargo-dragon-2-apart.thick.svg +1 -0
  27. package/dist/assets/dragon-cargo-dragon-2-capsule.glb +0 -0
  28. package/dist/assets/dragon-cargo-dragon-2-capsule.painted.svg +1 -0
  29. package/dist/assets/dragon-cargo-dragon-2-capsule.svg +1 -0
  30. package/dist/assets/dragon-cargo-dragon-2-capsule.thick.svg +1 -0
  31. package/dist/assets/dragon-cargo-dragon-2-trunk.glb +0 -0
  32. package/dist/assets/dragon-cargo-dragon-2-trunk.painted.svg +1 -0
  33. package/dist/assets/dragon-cargo-dragon-2-trunk.svg +1 -0
  34. package/dist/assets/dragon-cargo-dragon-2-trunk.thick.svg +1 -0
  35. package/dist/assets/dragon-cargo-dragon-2.glb +0 -0
  36. package/dist/assets/dragon-cargo-dragon-2.painted.svg +1 -0
  37. package/dist/assets/dragon-cargo-dragon-2.svg +1 -0
  38. package/dist/assets/dragon-cargo-dragon-2.thick.svg +1 -0
  39. package/dist/assets/dragon-crew-dragon-inside.glb +0 -0
  40. package/dist/assets/dragon-crew-dragon-inside.painted.svg +1 -0
  41. package/dist/assets/dragon-crew-dragon-inside.svg +1 -0
  42. package/dist/assets/dragon-crew-dragon-inside.thick.svg +1 -0
  43. package/dist/assets/dragon-dragon-1-apart.painted.svg +1 -1
  44. package/dist/assets/dragon-dragon-1-apart.svg +1 -1
  45. package/dist/assets/dragon-dragon-1-apart.thick.svg +1 -1
  46. package/dist/assets/dragon-dragon-1-capsule.painted.svg +1 -1
  47. package/dist/assets/dragon-dragon-1-capsule.svg +1 -1
  48. package/dist/assets/dragon-dragon-1-capsule.thick.svg +1 -1
  49. package/dist/assets/dragon-dragon-1-trunk.painted.svg +1 -1
  50. package/dist/assets/dragon-dragon-1-trunk.svg +1 -1
  51. package/dist/assets/dragon-dragon-1-trunk.thick.svg +1 -1
  52. package/dist/assets/dragon-dragon-1.painted.svg +1 -1
  53. package/dist/assets/dragon-dragon-1.svg +1 -1
  54. package/dist/assets/dragon-dragon-1.thick.svg +1 -1
  55. package/dist/assets/dragon-dragon-2-apart.painted.svg +1 -1
  56. package/dist/assets/dragon-dragon-2-apart.svg +1 -1
  57. package/dist/assets/dragon-dragon-2-apart.thick.svg +1 -1
  58. package/dist/assets/dragon-dragon-2-capsule.painted.svg +1 -1
  59. package/dist/assets/dragon-dragon-2-capsule.svg +1 -1
  60. package/dist/assets/dragon-dragon-2-capsule.thick.svg +1 -1
  61. package/dist/assets/dragon-dragon-2-trunk.painted.svg +1 -1
  62. package/dist/assets/dragon-dragon-2-trunk.svg +1 -1
  63. package/dist/assets/dragon-dragon-2-trunk.thick.svg +1 -1
  64. package/dist/assets/dragon-dragon-2.painted.svg +1 -1
  65. package/dist/assets/dragon-dragon-2.svg +1 -1
  66. package/dist/assets/dragon-dragon-2.thick.svg +1 -1
  67. package/dist/assets/droneship-asog-apart.painted.svg +1 -0
  68. package/dist/assets/droneship-asog-apart.svg +1 -0
  69. package/dist/assets/droneship-asog-apart.thick.svg +1 -0
  70. package/dist/assets/droneship-asog-deck.glb +0 -0
  71. package/dist/assets/droneship-asog-deck.painted.svg +1 -0
  72. package/dist/assets/droneship-asog-deck.svg +1 -0
  73. package/dist/assets/droneship-asog-deck.thick.svg +1 -0
  74. package/dist/assets/droneship-asog-landed.glb +0 -0
  75. package/dist/assets/droneship-asog-landed.painted.svg +1 -0
  76. package/dist/assets/droneship-asog-landed.svg +1 -0
  77. package/dist/assets/droneship-asog-landed.thick.svg +1 -0
  78. package/dist/assets/droneship-asog.glb +0 -0
  79. package/dist/assets/droneship-asog.painted.svg +1 -0
  80. package/dist/assets/droneship-asog.svg +1 -0
  81. package/dist/assets/droneship-asog.thick.svg +1 -0
  82. package/dist/assets/droneship-jrti-apart.painted.svg +1 -0
  83. package/dist/assets/droneship-jrti-apart.svg +1 -0
  84. package/dist/assets/droneship-jrti-apart.thick.svg +1 -0
  85. package/dist/assets/droneship-jrti-deck.glb +0 -0
  86. package/dist/assets/droneship-jrti-deck.painted.svg +1 -0
  87. package/dist/assets/droneship-jrti-deck.svg +1 -0
  88. package/dist/assets/droneship-jrti-deck.thick.svg +1 -0
  89. package/dist/assets/droneship-jrti-landed.glb +0 -0
  90. package/dist/assets/droneship-jrti-landed.painted.svg +1 -0
  91. package/dist/assets/droneship-jrti-landed.svg +1 -0
  92. package/dist/assets/droneship-jrti-landed.thick.svg +1 -0
  93. package/dist/assets/droneship-jrti.glb +0 -0
  94. package/dist/assets/droneship-jrti.painted.svg +1 -0
  95. package/dist/assets/droneship-jrti.svg +1 -0
  96. package/dist/assets/droneship-jrti.thick.svg +1 -0
  97. package/dist/assets/droneship-ocisly-apart.painted.svg +1 -0
  98. package/dist/assets/droneship-ocisly-apart.svg +1 -0
  99. package/dist/assets/droneship-ocisly-apart.thick.svg +1 -0
  100. package/dist/assets/droneship-ocisly-deck.glb +0 -0
  101. package/dist/assets/droneship-ocisly-deck.painted.svg +1 -0
  102. package/dist/assets/droneship-ocisly-deck.svg +1 -0
  103. package/dist/assets/droneship-ocisly-deck.thick.svg +1 -0
  104. package/dist/assets/droneship-ocisly-landed.glb +0 -0
  105. package/dist/assets/droneship-ocisly-landed.painted.svg +1 -0
  106. package/dist/assets/droneship-ocisly-landed.svg +1 -0
  107. package/dist/assets/droneship-ocisly-landed.thick.svg +1 -0
  108. package/dist/assets/droneship-ocisly.glb +0 -0
  109. package/dist/assets/droneship-ocisly.painted.svg +1 -0
  110. package/dist/assets/droneship-ocisly.svg +1 -0
  111. package/dist/assets/droneship-ocisly.thick.svg +1 -0
  112. package/dist/assets/electron-electron-adapter.glb +0 -0
  113. package/dist/assets/electron-electron-adapter.painted.svg +1 -0
  114. package/dist/assets/electron-electron-adapter.svg +1 -0
  115. package/dist/assets/electron-electron-adapter.thick.svg +1 -0
  116. package/dist/assets/electron-electron-apart.painted.svg +1 -0
  117. package/dist/assets/electron-electron-apart.svg +1 -0
  118. package/dist/assets/electron-electron-apart.thick.svg +1 -0
  119. package/dist/assets/electron-electron-fairing.glb +0 -0
  120. package/dist/assets/electron-electron-fairing.painted.svg +1 -0
  121. package/dist/assets/electron-electron-fairing.svg +1 -0
  122. package/dist/assets/electron-electron-fairing.thick.svg +1 -0
  123. package/dist/assets/electron-electron-first-stage.glb +0 -0
  124. package/dist/assets/electron-electron-first-stage.painted.svg +1 -0
  125. package/dist/assets/electron-electron-first-stage.svg +1 -0
  126. package/dist/assets/electron-electron-first-stage.thick.svg +1 -0
  127. package/dist/assets/electron-electron-second-stage.glb +0 -0
  128. package/dist/assets/electron-electron-second-stage.painted.svg +1 -0
  129. package/dist/assets/electron-electron-second-stage.svg +1 -0
  130. package/dist/assets/electron-electron-second-stage.thick.svg +1 -0
  131. package/dist/assets/electron-electron.glb +0 -0
  132. package/dist/assets/electron-electron.painted.svg +1 -0
  133. package/dist/assets/electron-electron.svg +1 -0
  134. package/dist/assets/electron-electron.thick.svg +1 -0
  135. package/dist/assets/falcon-1-falcon-1-apart.painted.svg +1 -0
  136. package/dist/assets/falcon-1-falcon-1-apart.svg +1 -0
  137. package/dist/assets/falcon-1-falcon-1-apart.thick.svg +1 -0
  138. package/dist/assets/falcon-1-falcon-1-fairing.glb +0 -0
  139. package/dist/assets/falcon-1-falcon-1-fairing.painted.svg +1 -0
  140. package/dist/assets/falcon-1-falcon-1-fairing.svg +1 -0
  141. package/dist/assets/falcon-1-falcon-1-fairing.thick.svg +1 -0
  142. package/dist/assets/falcon-1-falcon-1-first-stage.glb +0 -0
  143. package/dist/assets/falcon-1-falcon-1-first-stage.painted.svg +1 -0
  144. package/dist/assets/falcon-1-falcon-1-first-stage.svg +1 -0
  145. package/dist/assets/falcon-1-falcon-1-first-stage.thick.svg +1 -0
  146. package/dist/assets/falcon-1-falcon-1-second-stage.glb +0 -0
  147. package/dist/assets/falcon-1-falcon-1-second-stage.painted.svg +1 -0
  148. package/dist/assets/falcon-1-falcon-1-second-stage.svg +1 -0
  149. package/dist/assets/falcon-1-falcon-1-second-stage.thick.svg +1 -0
  150. package/dist/assets/falcon-1-falcon-1.glb +0 -0
  151. package/dist/assets/falcon-1-falcon-1.painted.svg +1 -0
  152. package/dist/assets/falcon-1-falcon-1.svg +1 -0
  153. package/dist/assets/falcon-1-falcon-1.thick.svg +1 -0
  154. package/dist/assets/falcon-1-falcon-1e-apart.painted.svg +1 -0
  155. package/dist/assets/falcon-1-falcon-1e-apart.svg +1 -0
  156. package/dist/assets/falcon-1-falcon-1e-apart.thick.svg +1 -0
  157. package/dist/assets/falcon-1-falcon-1e-fairing.glb +0 -0
  158. package/dist/assets/falcon-1-falcon-1e-fairing.painted.svg +1 -0
  159. package/dist/assets/falcon-1-falcon-1e-fairing.svg +1 -0
  160. package/dist/assets/falcon-1-falcon-1e-fairing.thick.svg +1 -0
  161. package/dist/assets/falcon-1-falcon-1e-first-stage.glb +0 -0
  162. package/dist/assets/falcon-1-falcon-1e-first-stage.painted.svg +1 -0
  163. package/dist/assets/falcon-1-falcon-1e-first-stage.svg +1 -0
  164. package/dist/assets/falcon-1-falcon-1e-first-stage.thick.svg +1 -0
  165. package/dist/assets/falcon-1-falcon-1e-second-stage.glb +0 -0
  166. package/dist/assets/falcon-1-falcon-1e-second-stage.painted.svg +1 -0
  167. package/dist/assets/falcon-1-falcon-1e-second-stage.svg +1 -0
  168. package/dist/assets/falcon-1-falcon-1e-second-stage.thick.svg +1 -0
  169. package/dist/assets/falcon-1-falcon-1e.glb +0 -0
  170. package/dist/assets/falcon-1-falcon-1e.painted.svg +1 -0
  171. package/dist/assets/falcon-1-falcon-1e.svg +1 -0
  172. package/dist/assets/falcon-1-falcon-1e.thick.svg +1 -0
  173. package/dist/assets/falcon-9-block-5-apart.painted.svg +1 -1
  174. package/dist/assets/falcon-9-block-5-apart.svg +1 -1
  175. package/dist/assets/falcon-9-block-5-apart.thick.svg +1 -1
  176. package/dist/assets/falcon-9-block-5-dragon-2-apart.painted.svg +1 -1
  177. package/dist/assets/falcon-9-block-5-dragon-2-apart.svg +1 -1
  178. package/dist/assets/falcon-9-block-5-dragon-2-apart.thick.svg +1 -1
  179. package/dist/assets/falcon-9-block-5-dragon-2-capsule.painted.svg +1 -1
  180. package/dist/assets/falcon-9-block-5-dragon-2-capsule.svg +1 -1
  181. package/dist/assets/falcon-9-block-5-dragon-2-capsule.thick.svg +1 -1
  182. package/dist/assets/falcon-9-block-5-dragon-2-first-stage.painted.svg +1 -1
  183. package/dist/assets/falcon-9-block-5-dragon-2-first-stage.svg +1 -1
  184. package/dist/assets/falcon-9-block-5-dragon-2-first-stage.thick.svg +1 -1
  185. package/dist/assets/falcon-9-block-5-dragon-2-second-stage.painted.svg +1 -1
  186. package/dist/assets/falcon-9-block-5-dragon-2-second-stage.svg +1 -1
  187. package/dist/assets/falcon-9-block-5-dragon-2-second-stage.thick.svg +1 -1
  188. package/dist/assets/falcon-9-block-5-dragon-2-trunk.painted.svg +1 -1
  189. package/dist/assets/falcon-9-block-5-dragon-2-trunk.svg +1 -1
  190. package/dist/assets/falcon-9-block-5-dragon-2-trunk.thick.svg +1 -1
  191. package/dist/assets/falcon-9-block-5-dragon-2.painted.svg +1 -1
  192. package/dist/assets/falcon-9-block-5-dragon-2.svg +1 -1
  193. package/dist/assets/falcon-9-block-5-dragon-2.thick.svg +1 -1
  194. package/dist/assets/falcon-9-block-5-fairing.painted.svg +1 -1
  195. package/dist/assets/falcon-9-block-5-fairing.svg +1 -1
  196. package/dist/assets/falcon-9-block-5-fairing.thick.svg +1 -1
  197. package/dist/assets/falcon-9-block-5-first-stage.painted.svg +1 -1
  198. package/dist/assets/falcon-9-block-5-first-stage.svg +1 -1
  199. package/dist/assets/falcon-9-block-5-first-stage.thick.svg +1 -1
  200. package/dist/assets/falcon-9-block-5-second-stage.painted.svg +1 -1
  201. package/dist/assets/falcon-9-block-5-second-stage.svg +1 -1
  202. package/dist/assets/falcon-9-block-5-second-stage.thick.svg +1 -1
  203. package/dist/assets/falcon-9-block-5.painted.svg +1 -1
  204. package/dist/assets/falcon-9-block-5.svg +1 -1
  205. package/dist/assets/falcon-9-block-5.thick.svg +1 -1
  206. package/dist/assets/falcon-9-ft-apart.painted.svg +1 -1
  207. package/dist/assets/falcon-9-ft-apart.svg +1 -1
  208. package/dist/assets/falcon-9-ft-apart.thick.svg +1 -1
  209. package/dist/assets/falcon-9-ft-fairing.painted.svg +1 -1
  210. package/dist/assets/falcon-9-ft-fairing.svg +1 -1
  211. package/dist/assets/falcon-9-ft-fairing.thick.svg +1 -1
  212. package/dist/assets/falcon-9-ft-first-stage.painted.svg +1 -1
  213. package/dist/assets/falcon-9-ft-first-stage.svg +1 -1
  214. package/dist/assets/falcon-9-ft-first-stage.thick.svg +1 -1
  215. package/dist/assets/falcon-9-ft-second-stage.painted.svg +1 -1
  216. package/dist/assets/falcon-9-ft-second-stage.svg +1 -1
  217. package/dist/assets/falcon-9-ft-second-stage.thick.svg +1 -1
  218. package/dist/assets/falcon-9-ft.painted.svg +1 -1
  219. package/dist/assets/falcon-9-ft.svg +1 -1
  220. package/dist/assets/falcon-9-ft.thick.svg +1 -1
  221. package/dist/assets/falcon-9-v1.0-apart.painted.svg +1 -1
  222. package/dist/assets/falcon-9-v1.0-apart.svg +1 -1
  223. package/dist/assets/falcon-9-v1.0-apart.thick.svg +1 -1
  224. package/dist/assets/falcon-9-v1.0-fairing.painted.svg +1 -1
  225. package/dist/assets/falcon-9-v1.0-fairing.svg +1 -1
  226. package/dist/assets/falcon-9-v1.0-fairing.thick.svg +1 -1
  227. package/dist/assets/falcon-9-v1.0-first-stage.painted.svg +1 -1
  228. package/dist/assets/falcon-9-v1.0-first-stage.svg +1 -1
  229. package/dist/assets/falcon-9-v1.0-first-stage.thick.svg +1 -1
  230. package/dist/assets/falcon-9-v1.0-second-stage.painted.svg +1 -1
  231. package/dist/assets/falcon-9-v1.0-second-stage.svg +1 -1
  232. package/dist/assets/falcon-9-v1.0-second-stage.thick.svg +1 -1
  233. package/dist/assets/falcon-9-v1.0.painted.svg +1 -1
  234. package/dist/assets/falcon-9-v1.0.svg +1 -1
  235. package/dist/assets/falcon-9-v1.0.thick.svg +1 -1
  236. package/dist/assets/falcon-9-v1.1-apart.painted.svg +1 -1
  237. package/dist/assets/falcon-9-v1.1-apart.svg +1 -1
  238. package/dist/assets/falcon-9-v1.1-apart.thick.svg +1 -1
  239. package/dist/assets/falcon-9-v1.1-fairing.painted.svg +1 -1
  240. package/dist/assets/falcon-9-v1.1-fairing.svg +1 -1
  241. package/dist/assets/falcon-9-v1.1-fairing.thick.svg +1 -1
  242. package/dist/assets/falcon-9-v1.1-first-stage.painted.svg +1 -1
  243. package/dist/assets/falcon-9-v1.1-first-stage.svg +1 -1
  244. package/dist/assets/falcon-9-v1.1-first-stage.thick.svg +1 -1
  245. package/dist/assets/falcon-9-v1.1-second-stage.painted.svg +1 -1
  246. package/dist/assets/falcon-9-v1.1-second-stage.svg +1 -1
  247. package/dist/assets/falcon-9-v1.1-second-stage.thick.svg +1 -1
  248. package/dist/assets/falcon-9-v1.1.painted.svg +1 -1
  249. package/dist/assets/falcon-9-v1.1.svg +1 -1
  250. package/dist/assets/falcon-9-v1.1.thick.svg +1 -1
  251. package/dist/assets/falcon-heavy-falcon-heavy-apart.painted.svg +1 -1
  252. package/dist/assets/falcon-heavy-falcon-heavy-apart.svg +1 -1
  253. package/dist/assets/falcon-heavy-falcon-heavy-apart.thick.svg +1 -1
  254. package/dist/assets/falcon-heavy-falcon-heavy-centre.painted.svg +1 -1
  255. package/dist/assets/falcon-heavy-falcon-heavy-centre.svg +1 -1
  256. package/dist/assets/falcon-heavy-falcon-heavy-centre.thick.svg +1 -1
  257. package/dist/assets/falcon-heavy-falcon-heavy-side-left.painted.svg +1 -1
  258. package/dist/assets/falcon-heavy-falcon-heavy-side-left.svg +1 -1
  259. package/dist/assets/falcon-heavy-falcon-heavy-side-left.thick.svg +1 -1
  260. package/dist/assets/falcon-heavy-falcon-heavy-side-right.painted.svg +1 -1
  261. package/dist/assets/falcon-heavy-falcon-heavy-side-right.svg +1 -1
  262. package/dist/assets/falcon-heavy-falcon-heavy-side-right.thick.svg +1 -1
  263. package/dist/assets/falcon-heavy-falcon-heavy.painted.svg +1 -1
  264. package/dist/assets/falcon-heavy-falcon-heavy.svg +1 -1
  265. package/dist/assets/falcon-heavy-falcon-heavy.thick.svg +1 -1
  266. package/dist/assets/gemini-gemini-adapter.glb +0 -0
  267. package/dist/assets/gemini-gemini-adapter.painted.svg +1 -0
  268. package/dist/assets/gemini-gemini-adapter.svg +1 -0
  269. package/dist/assets/gemini-gemini-adapter.thick.svg +1 -0
  270. package/dist/assets/gemini-gemini-apart.painted.svg +1 -0
  271. package/dist/assets/gemini-gemini-apart.svg +1 -0
  272. package/dist/assets/gemini-gemini-apart.thick.svg +1 -0
  273. package/dist/assets/gemini-gemini-capsule.glb +0 -0
  274. package/dist/assets/gemini-gemini-capsule.painted.svg +1 -0
  275. package/dist/assets/gemini-gemini-capsule.svg +1 -0
  276. package/dist/assets/gemini-gemini-capsule.thick.svg +1 -0
  277. package/dist/assets/gemini-gemini.glb +0 -0
  278. package/dist/assets/gemini-gemini.painted.svg +1 -0
  279. package/dist/assets/gemini-gemini.svg +1 -0
  280. package/dist/assets/gemini-gemini.thick.svg +1 -0
  281. package/dist/assets/grasshopper-grasshopper.painted.svg +1 -1
  282. package/dist/assets/grasshopper-grasshopper.svg +1 -1
  283. package/dist/assets/grasshopper-grasshopper.thick.svg +1 -1
  284. package/dist/assets/hubble-hubble.glb +0 -0
  285. package/dist/assets/hubble-hubble.painted.svg +1 -0
  286. package/dist/assets/hubble-hubble.svg +1 -0
  287. package/dist/assets/hubble-hubble.thick.svg +1 -0
  288. package/dist/assets/iss-iss.glb +0 -0
  289. package/dist/assets/iss-iss.painted.svg +1 -0
  290. package/dist/assets/iss-iss.svg +1 -0
  291. package/dist/assets/iss-iss.thick.svg +1 -0
  292. package/dist/assets/jupiter-c-jupiter-c.glb +0 -0
  293. package/dist/assets/jupiter-c-jupiter-c.painted.svg +1 -0
  294. package/dist/assets/jupiter-c-jupiter-c.svg +1 -0
  295. package/dist/assets/jupiter-c-jupiter-c.thick.svg +1 -0
  296. package/dist/assets/landing-zone-lz-1-apart.painted.svg +1 -0
  297. package/dist/assets/landing-zone-lz-1-apart.svg +1 -0
  298. package/dist/assets/landing-zone-lz-1-apart.thick.svg +1 -0
  299. package/dist/assets/landing-zone-lz-1-landed.glb +0 -0
  300. package/dist/assets/landing-zone-lz-1-landed.painted.svg +1 -0
  301. package/dist/assets/landing-zone-lz-1-landed.svg +1 -0
  302. package/dist/assets/landing-zone-lz-1-landed.thick.svg +1 -0
  303. package/dist/assets/landing-zone-lz-1-pad.glb +0 -0
  304. package/dist/assets/landing-zone-lz-1-pad.painted.svg +1 -0
  305. package/dist/assets/landing-zone-lz-1-pad.svg +1 -0
  306. package/dist/assets/landing-zone-lz-1-pad.thick.svg +1 -0
  307. package/dist/assets/landing-zone-lz-1.glb +0 -0
  308. package/dist/assets/landing-zone-lz-1.painted.svg +1 -0
  309. package/dist/assets/landing-zone-lz-1.svg +1 -0
  310. package/dist/assets/landing-zone-lz-1.thick.svg +1 -0
  311. package/dist/assets/landing-zone-lz-4-apart.painted.svg +1 -0
  312. package/dist/assets/landing-zone-lz-4-apart.svg +1 -0
  313. package/dist/assets/landing-zone-lz-4-apart.thick.svg +1 -0
  314. package/dist/assets/landing-zone-lz-4-landed.glb +0 -0
  315. package/dist/assets/landing-zone-lz-4-landed.painted.svg +1 -0
  316. package/dist/assets/landing-zone-lz-4-landed.svg +1 -0
  317. package/dist/assets/landing-zone-lz-4-landed.thick.svg +1 -0
  318. package/dist/assets/landing-zone-lz-4-pad.glb +0 -0
  319. package/dist/assets/landing-zone-lz-4-pad.painted.svg +1 -0
  320. package/dist/assets/landing-zone-lz-4-pad.svg +1 -0
  321. package/dist/assets/landing-zone-lz-4-pad.thick.svg +1 -0
  322. package/dist/assets/landing-zone-lz-4.glb +0 -0
  323. package/dist/assets/landing-zone-lz-4.painted.svg +1 -0
  324. package/dist/assets/landing-zone-lz-4.svg +1 -0
  325. package/dist/assets/landing-zone-lz-4.thick.svg +1 -0
  326. package/dist/assets/launch-tower-catch-apart.painted.svg +1 -0
  327. package/dist/assets/launch-tower-catch-apart.svg +1 -0
  328. package/dist/assets/launch-tower-catch-apart.thick.svg +1 -0
  329. package/dist/assets/launch-tower-catch-arms.glb +0 -0
  330. package/dist/assets/launch-tower-catch-arms.painted.svg +1 -0
  331. package/dist/assets/launch-tower-catch-arms.svg +1 -0
  332. package/dist/assets/launch-tower-catch-arms.thick.svg +1 -0
  333. package/dist/assets/launch-tower-catch-booster.glb +0 -0
  334. package/dist/assets/launch-tower-catch-booster.painted.svg +1 -0
  335. package/dist/assets/launch-tower-catch-booster.svg +1 -0
  336. package/dist/assets/launch-tower-catch-booster.thick.svg +1 -0
  337. package/dist/assets/launch-tower-catch-mount.glb +0 -0
  338. package/dist/assets/launch-tower-catch-mount.painted.svg +1 -0
  339. package/dist/assets/launch-tower-catch-mount.svg +1 -0
  340. package/dist/assets/launch-tower-catch-mount.thick.svg +1 -0
  341. package/dist/assets/launch-tower-catch-tower.glb +0 -0
  342. package/dist/assets/launch-tower-catch-tower.painted.svg +1 -0
  343. package/dist/assets/launch-tower-catch-tower.svg +1 -0
  344. package/dist/assets/launch-tower-catch-tower.thick.svg +1 -0
  345. package/dist/assets/launch-tower-catch.glb +0 -0
  346. package/dist/assets/launch-tower-catch.painted.svg +1 -0
  347. package/dist/assets/launch-tower-catch.svg +1 -0
  348. package/dist/assets/launch-tower-catch.thick.svg +1 -0
  349. package/dist/assets/launch-tower-stack-apart.painted.svg +1 -0
  350. package/dist/assets/launch-tower-stack-apart.svg +1 -0
  351. package/dist/assets/launch-tower-stack-apart.thick.svg +1 -0
  352. package/dist/assets/launch-tower-stack-arms.glb +0 -0
  353. package/dist/assets/launch-tower-stack-arms.painted.svg +1 -0
  354. package/dist/assets/launch-tower-stack-arms.svg +1 -0
  355. package/dist/assets/launch-tower-stack-arms.thick.svg +1 -0
  356. package/dist/assets/launch-tower-stack-booster.glb +0 -0
  357. package/dist/assets/launch-tower-stack-booster.painted.svg +1 -0
  358. package/dist/assets/launch-tower-stack-booster.svg +1 -0
  359. package/dist/assets/launch-tower-stack-booster.thick.svg +1 -0
  360. package/dist/assets/launch-tower-stack-mount.glb +0 -0
  361. package/dist/assets/launch-tower-stack-mount.painted.svg +1 -0
  362. package/dist/assets/launch-tower-stack-mount.svg +1 -0
  363. package/dist/assets/launch-tower-stack-mount.thick.svg +1 -0
  364. package/dist/assets/launch-tower-stack-ship.glb +0 -0
  365. package/dist/assets/launch-tower-stack-ship.painted.svg +1 -0
  366. package/dist/assets/launch-tower-stack-ship.svg +1 -0
  367. package/dist/assets/launch-tower-stack-ship.thick.svg +1 -0
  368. package/dist/assets/launch-tower-stack-tower.glb +0 -0
  369. package/dist/assets/launch-tower-stack-tower.painted.svg +1 -0
  370. package/dist/assets/launch-tower-stack-tower.svg +1 -0
  371. package/dist/assets/launch-tower-stack-tower.thick.svg +1 -0
  372. package/dist/assets/launch-tower-stack.glb +0 -0
  373. package/dist/assets/launch-tower-stack.painted.svg +1 -0
  374. package/dist/assets/launch-tower-stack.svg +1 -0
  375. package/dist/assets/launch-tower-stack.thick.svg +1 -0
  376. package/dist/assets/launch-tower-tower-apart.painted.svg +1 -0
  377. package/dist/assets/launch-tower-tower-apart.svg +1 -0
  378. package/dist/assets/launch-tower-tower-apart.thick.svg +1 -0
  379. package/dist/assets/launch-tower-tower-arms.glb +0 -0
  380. package/dist/assets/launch-tower-tower-arms.painted.svg +1 -0
  381. package/dist/assets/launch-tower-tower-arms.svg +1 -0
  382. package/dist/assets/launch-tower-tower-arms.thick.svg +1 -0
  383. package/dist/assets/launch-tower-tower-mount.glb +0 -0
  384. package/dist/assets/launch-tower-tower-mount.painted.svg +1 -0
  385. package/dist/assets/launch-tower-tower-mount.svg +1 -0
  386. package/dist/assets/launch-tower-tower-mount.thick.svg +1 -0
  387. package/dist/assets/launch-tower-tower-tower.glb +0 -0
  388. package/dist/assets/launch-tower-tower-tower.painted.svg +1 -0
  389. package/dist/assets/launch-tower-tower-tower.svg +1 -0
  390. package/dist/assets/launch-tower-tower-tower.thick.svg +1 -0
  391. package/dist/assets/launch-tower-tower.glb +0 -0
  392. package/dist/assets/launch-tower-tower.painted.svg +1 -0
  393. package/dist/assets/launch-tower-tower.svg +1 -0
  394. package/dist/assets/launch-tower-tower.thick.svg +1 -0
  395. package/dist/assets/lunar-module-lunar-module-apart.painted.svg +1 -0
  396. package/dist/assets/lunar-module-lunar-module-apart.svg +1 -0
  397. package/dist/assets/lunar-module-lunar-module-apart.thick.svg +1 -0
  398. package/dist/assets/lunar-module-lunar-module-ascent.glb +0 -0
  399. package/dist/assets/lunar-module-lunar-module-ascent.painted.svg +1 -0
  400. package/dist/assets/lunar-module-lunar-module-ascent.svg +1 -0
  401. package/dist/assets/lunar-module-lunar-module-ascent.thick.svg +1 -0
  402. package/dist/assets/lunar-module-lunar-module-descent.glb +0 -0
  403. package/dist/assets/lunar-module-lunar-module-descent.painted.svg +1 -0
  404. package/dist/assets/lunar-module-lunar-module-descent.svg +1 -0
  405. package/dist/assets/lunar-module-lunar-module-descent.thick.svg +1 -0
  406. package/dist/assets/lunar-module-lunar-module.glb +0 -0
  407. package/dist/assets/lunar-module-lunar-module.painted.svg +1 -0
  408. package/dist/assets/lunar-module-lunar-module.svg +1 -0
  409. package/dist/assets/lunar-module-lunar-module.thick.svg +1 -0
  410. package/dist/assets/mercury-friendship-7.glb +0 -0
  411. package/dist/assets/mercury-friendship-7.painted.svg +1 -0
  412. package/dist/assets/mercury-friendship-7.svg +1 -0
  413. package/dist/assets/mercury-friendship-7.thick.svg +1 -0
  414. package/dist/assets/models/apollo-soyuz-csm.glb +0 -0
  415. package/dist/assets/models/apollo-soyuz-docking-module.glb +0 -0
  416. package/dist/assets/models/apollo-soyuz-soyuz.glb +0 -0
  417. package/dist/assets/models/gemini-adapter.glb +0 -0
  418. package/dist/assets/models/gemini-capsule.glb +0 -0
  419. package/dist/assets/models/hubble-telescope.glb +0 -0
  420. package/dist/assets/models/iss-station.glb +0 -0
  421. package/dist/assets/models/jupiter-c-vehicle.glb +0 -0
  422. package/dist/assets/models/lunar-module-ascent.glb +0 -0
  423. package/dist/assets/models/lunar-module-descent.glb +0 -0
  424. package/dist/assets/models/mercury-capsule.glb +0 -0
  425. package/dist/assets/models/space-shuttle-discovery-orbiter.glb +0 -0
  426. package/dist/assets/models/space-shuttle-stack-external-tank.glb +0 -0
  427. package/dist/assets/models/space-shuttle-stack-orbiter.glb +0 -0
  428. package/dist/assets/models/space-shuttle-stack-srb.glb +0 -0
  429. package/dist/assets/new-glenn-7x2-apart.painted.svg +1 -0
  430. package/dist/assets/new-glenn-7x2-apart.svg +1 -0
  431. package/dist/assets/new-glenn-7x2-apart.thick.svg +1 -0
  432. package/dist/assets/new-glenn-7x2-fairing.glb +0 -0
  433. package/dist/assets/new-glenn-7x2-fairing.painted.svg +1 -0
  434. package/dist/assets/new-glenn-7x2-fairing.svg +1 -0
  435. package/dist/assets/new-glenn-7x2-fairing.thick.svg +1 -0
  436. package/dist/assets/new-glenn-7x2-first-stage.glb +0 -0
  437. package/dist/assets/new-glenn-7x2-first-stage.painted.svg +1 -0
  438. package/dist/assets/new-glenn-7x2-first-stage.svg +1 -0
  439. package/dist/assets/new-glenn-7x2-first-stage.thick.svg +1 -0
  440. package/dist/assets/new-glenn-7x2-second-stage.glb +0 -0
  441. package/dist/assets/new-glenn-7x2-second-stage.painted.svg +1 -0
  442. package/dist/assets/new-glenn-7x2-second-stage.svg +1 -0
  443. package/dist/assets/new-glenn-7x2-second-stage.thick.svg +1 -0
  444. package/dist/assets/new-glenn-7x2.glb +0 -0
  445. package/dist/assets/new-glenn-7x2.painted.svg +1 -0
  446. package/dist/assets/new-glenn-7x2.svg +1 -0
  447. package/dist/assets/new-glenn-7x2.thick.svg +1 -0
  448. package/dist/assets/parts/flap-aft.painted.svg +1 -1
  449. package/dist/assets/parts/flap-aft.svg +1 -1
  450. package/dist/assets/parts/flap-aft.thick.svg +1 -1
  451. package/dist/assets/parts/flap-forward.painted.svg +1 -1
  452. package/dist/assets/parts/flap-forward.svg +1 -1
  453. package/dist/assets/parts/flap-forward.thick.svg +1 -1
  454. package/dist/assets/parts/grid-fin-four.painted.svg +1 -1
  455. package/dist/assets/parts/grid-fin-four.svg +1 -1
  456. package/dist/assets/parts/grid-fin-four.thick.svg +1 -1
  457. package/dist/assets/parts/grid-fin-three.painted.svg +1 -1
  458. package/dist/assets/parts/grid-fin-three.svg +1 -1
  459. package/dist/assets/parts/grid-fin-three.thick.svg +1 -1
  460. package/dist/assets/parts/merlin-sea-level.painted.svg +1 -1
  461. package/dist/assets/parts/merlin-sea-level.svg +1 -1
  462. package/dist/assets/parts/merlin-sea-level.thick.svg +1 -1
  463. package/dist/assets/parts/raptor-sea-level.painted.svg +1 -1
  464. package/dist/assets/parts/raptor-sea-level.svg +1 -1
  465. package/dist/assets/parts/raptor-sea-level.thick.svg +1 -1
  466. package/dist/assets/parts/raptor-vacuum.painted.svg +1 -1
  467. package/dist/assets/parts/raptor-vacuum.svg +1 -1
  468. package/dist/assets/parts/raptor-vacuum.thick.svg +1 -1
  469. package/dist/assets/saturn-v-saturn-v-adapter.glb +0 -0
  470. package/dist/assets/saturn-v-saturn-v-adapter.painted.svg +1 -0
  471. package/dist/assets/saturn-v-saturn-v-adapter.svg +1 -0
  472. package/dist/assets/saturn-v-saturn-v-adapter.thick.svg +1 -0
  473. package/dist/assets/saturn-v-saturn-v-apart.painted.svg +1 -0
  474. package/dist/assets/saturn-v-saturn-v-apart.svg +1 -0
  475. package/dist/assets/saturn-v-saturn-v-apart.thick.svg +1 -0
  476. package/dist/assets/saturn-v-saturn-v-capsule.glb +0 -0
  477. package/dist/assets/saturn-v-saturn-v-capsule.painted.svg +1 -0
  478. package/dist/assets/saturn-v-saturn-v-capsule.svg +1 -0
  479. package/dist/assets/saturn-v-saturn-v-capsule.thick.svg +1 -0
  480. package/dist/assets/saturn-v-saturn-v-escape-tower.glb +0 -0
  481. package/dist/assets/saturn-v-saturn-v-escape-tower.painted.svg +1 -0
  482. package/dist/assets/saturn-v-saturn-v-escape-tower.svg +1 -0
  483. package/dist/assets/saturn-v-saturn-v-escape-tower.thick.svg +1 -0
  484. package/dist/assets/saturn-v-saturn-v-first-stage.glb +0 -0
  485. package/dist/assets/saturn-v-saturn-v-first-stage.painted.svg +1 -0
  486. package/dist/assets/saturn-v-saturn-v-first-stage.svg +1 -0
  487. package/dist/assets/saturn-v-saturn-v-first-stage.thick.svg +1 -0
  488. package/dist/assets/saturn-v-saturn-v-second-stage.glb +0 -0
  489. package/dist/assets/saturn-v-saturn-v-second-stage.painted.svg +1 -0
  490. package/dist/assets/saturn-v-saturn-v-second-stage.svg +1 -0
  491. package/dist/assets/saturn-v-saturn-v-second-stage.thick.svg +1 -0
  492. package/dist/assets/saturn-v-saturn-v-service-module.glb +0 -0
  493. package/dist/assets/saturn-v-saturn-v-service-module.painted.svg +1 -0
  494. package/dist/assets/saturn-v-saturn-v-service-module.svg +1 -0
  495. package/dist/assets/saturn-v-saturn-v-service-module.thick.svg +1 -0
  496. package/dist/assets/saturn-v-saturn-v-third-stage.glb +0 -0
  497. package/dist/assets/saturn-v-saturn-v-third-stage.painted.svg +1 -0
  498. package/dist/assets/saturn-v-saturn-v-third-stage.svg +1 -0
  499. package/dist/assets/saturn-v-saturn-v-third-stage.thick.svg +1 -0
  500. package/dist/assets/saturn-v-saturn-v.glb +0 -0
  501. package/dist/assets/saturn-v-saturn-v.painted.svg +1 -0
  502. package/dist/assets/saturn-v-saturn-v.svg +1 -0
  503. package/dist/assets/saturn-v-saturn-v.thick.svg +1 -0
  504. package/dist/assets/sls-block-1-apart.painted.svg +1 -0
  505. package/dist/assets/sls-block-1-apart.svg +1 -0
  506. package/dist/assets/sls-block-1-apart.thick.svg +1 -0
  507. package/dist/assets/sls-block-1-capsule.glb +0 -0
  508. package/dist/assets/sls-block-1-capsule.painted.svg +1 -0
  509. package/dist/assets/sls-block-1-capsule.svg +1 -0
  510. package/dist/assets/sls-block-1-capsule.thick.svg +1 -0
  511. package/dist/assets/sls-block-1-escape-tower.glb +0 -0
  512. package/dist/assets/sls-block-1-escape-tower.painted.svg +1 -0
  513. package/dist/assets/sls-block-1-escape-tower.svg +1 -0
  514. package/dist/assets/sls-block-1-escape-tower.thick.svg +1 -0
  515. package/dist/assets/sls-block-1-first-stage.glb +0 -0
  516. package/dist/assets/sls-block-1-first-stage.painted.svg +1 -0
  517. package/dist/assets/sls-block-1-first-stage.svg +1 -0
  518. package/dist/assets/sls-block-1-first-stage.thick.svg +1 -0
  519. package/dist/assets/sls-block-1-service-module.glb +0 -0
  520. package/dist/assets/sls-block-1-service-module.painted.svg +1 -0
  521. package/dist/assets/sls-block-1-service-module.svg +1 -0
  522. package/dist/assets/sls-block-1-service-module.thick.svg +1 -0
  523. package/dist/assets/sls-block-1-srb-left.glb +0 -0
  524. package/dist/assets/sls-block-1-srb-left.painted.svg +1 -0
  525. package/dist/assets/sls-block-1-srb-left.svg +1 -0
  526. package/dist/assets/sls-block-1-srb-left.thick.svg +1 -0
  527. package/dist/assets/sls-block-1-srb-right.glb +0 -0
  528. package/dist/assets/sls-block-1-srb-right.painted.svg +1 -0
  529. package/dist/assets/sls-block-1-srb-right.svg +1 -0
  530. package/dist/assets/sls-block-1-srb-right.thick.svg +1 -0
  531. package/dist/assets/sls-block-1-upper-stage.glb +0 -0
  532. package/dist/assets/sls-block-1-upper-stage.painted.svg +1 -0
  533. package/dist/assets/sls-block-1-upper-stage.svg +1 -0
  534. package/dist/assets/sls-block-1-upper-stage.thick.svg +1 -0
  535. package/dist/assets/sls-block-1.glb +0 -0
  536. package/dist/assets/sls-block-1.painted.svg +1 -0
  537. package/dist/assets/sls-block-1.svg +1 -0
  538. package/dist/assets/sls-block-1.thick.svg +1 -0
  539. package/dist/assets/soyuz-soyuz-2-apart.painted.svg +1 -0
  540. package/dist/assets/soyuz-soyuz-2-apart.svg +1 -0
  541. package/dist/assets/soyuz-soyuz-2-apart.thick.svg +1 -0
  542. package/dist/assets/soyuz-soyuz-2-booster-1.glb +0 -0
  543. package/dist/assets/soyuz-soyuz-2-booster-1.painted.svg +1 -0
  544. package/dist/assets/soyuz-soyuz-2-booster-1.svg +1 -0
  545. package/dist/assets/soyuz-soyuz-2-booster-1.thick.svg +1 -0
  546. package/dist/assets/soyuz-soyuz-2-booster-2.glb +0 -0
  547. package/dist/assets/soyuz-soyuz-2-booster-2.painted.svg +1 -0
  548. package/dist/assets/soyuz-soyuz-2-booster-2.svg +1 -0
  549. package/dist/assets/soyuz-soyuz-2-booster-2.thick.svg +1 -0
  550. package/dist/assets/soyuz-soyuz-2-booster-3.glb +0 -0
  551. package/dist/assets/soyuz-soyuz-2-booster-3.painted.svg +1 -0
  552. package/dist/assets/soyuz-soyuz-2-booster-3.svg +1 -0
  553. package/dist/assets/soyuz-soyuz-2-booster-3.thick.svg +1 -0
  554. package/dist/assets/soyuz-soyuz-2-booster-4.glb +0 -0
  555. package/dist/assets/soyuz-soyuz-2-booster-4.painted.svg +1 -0
  556. package/dist/assets/soyuz-soyuz-2-booster-4.svg +1 -0
  557. package/dist/assets/soyuz-soyuz-2-booster-4.thick.svg +1 -0
  558. package/dist/assets/soyuz-soyuz-2-fairing.glb +0 -0
  559. package/dist/assets/soyuz-soyuz-2-fairing.painted.svg +1 -0
  560. package/dist/assets/soyuz-soyuz-2-fairing.svg +1 -0
  561. package/dist/assets/soyuz-soyuz-2-fairing.thick.svg +1 -0
  562. package/dist/assets/soyuz-soyuz-2-first-stage.glb +0 -0
  563. package/dist/assets/soyuz-soyuz-2-first-stage.painted.svg +1 -0
  564. package/dist/assets/soyuz-soyuz-2-first-stage.svg +1 -0
  565. package/dist/assets/soyuz-soyuz-2-first-stage.thick.svg +1 -0
  566. package/dist/assets/soyuz-soyuz-2-third-stage.glb +0 -0
  567. package/dist/assets/soyuz-soyuz-2-third-stage.painted.svg +1 -0
  568. package/dist/assets/soyuz-soyuz-2-third-stage.svg +1 -0
  569. package/dist/assets/soyuz-soyuz-2-third-stage.thick.svg +1 -0
  570. package/dist/assets/soyuz-soyuz-2.glb +0 -0
  571. package/dist/assets/soyuz-soyuz-2.painted.svg +1 -0
  572. package/dist/assets/soyuz-soyuz-2.svg +1 -0
  573. package/dist/assets/soyuz-soyuz-2.thick.svg +1 -0
  574. package/dist/assets/space-shuttle-discovery.glb +0 -0
  575. package/dist/assets/space-shuttle-discovery.painted.svg +1 -0
  576. package/dist/assets/space-shuttle-discovery.svg +1 -0
  577. package/dist/assets/space-shuttle-discovery.thick.svg +1 -0
  578. package/dist/assets/space-shuttle-stack-apart.painted.svg +1 -0
  579. package/dist/assets/space-shuttle-stack-apart.svg +1 -0
  580. package/dist/assets/space-shuttle-stack-apart.thick.svg +1 -0
  581. package/dist/assets/space-shuttle-stack-external-tank.glb +0 -0
  582. package/dist/assets/space-shuttle-stack-external-tank.painted.svg +1 -0
  583. package/dist/assets/space-shuttle-stack-external-tank.svg +1 -0
  584. package/dist/assets/space-shuttle-stack-external-tank.thick.svg +1 -0
  585. package/dist/assets/space-shuttle-stack-orbiter.glb +0 -0
  586. package/dist/assets/space-shuttle-stack-orbiter.painted.svg +1 -0
  587. package/dist/assets/space-shuttle-stack-orbiter.svg +1 -0
  588. package/dist/assets/space-shuttle-stack-orbiter.thick.svg +1 -0
  589. package/dist/assets/space-shuttle-stack-srb-left.glb +0 -0
  590. package/dist/assets/space-shuttle-stack-srb-left.painted.svg +1 -0
  591. package/dist/assets/space-shuttle-stack-srb-left.svg +1 -0
  592. package/dist/assets/space-shuttle-stack-srb-left.thick.svg +1 -0
  593. package/dist/assets/space-shuttle-stack-srb-right.glb +0 -0
  594. package/dist/assets/space-shuttle-stack-srb-right.painted.svg +1 -0
  595. package/dist/assets/space-shuttle-stack-srb-right.svg +1 -0
  596. package/dist/assets/space-shuttle-stack-srb-right.thick.svg +1 -0
  597. package/dist/assets/space-shuttle-stack.glb +0 -0
  598. package/dist/assets/space-shuttle-stack.painted.svg +1 -0
  599. package/dist/assets/space-shuttle-stack.svg +1 -0
  600. package/dist/assets/space-shuttle-stack.thick.svg +1 -0
  601. package/dist/assets/starbase-build-site-apart.painted.svg +1 -0
  602. package/dist/assets/starbase-build-site-apart.svg +1 -0
  603. package/dist/assets/starbase-build-site-apart.thick.svg +1 -0
  604. package/dist/assets/starbase-build-site-garden.glb +0 -0
  605. package/dist/assets/starbase-build-site-garden.painted.svg +1 -0
  606. package/dist/assets/starbase-build-site-garden.svg +1 -0
  607. package/dist/assets/starbase-build-site-garden.thick.svg +1 -0
  608. package/dist/assets/starbase-build-site-ground.glb +0 -0
  609. package/dist/assets/starbase-build-site-ground.painted.svg +1 -0
  610. package/dist/assets/starbase-build-site-ground.svg +1 -0
  611. package/dist/assets/starbase-build-site-ground.thick.svg +1 -0
  612. package/dist/assets/starbase-build-site-mega-bays.glb +0 -0
  613. package/dist/assets/starbase-build-site-mega-bays.painted.svg +1 -0
  614. package/dist/assets/starbase-build-site-mega-bays.svg +1 -0
  615. package/dist/assets/starbase-build-site-mega-bays.thick.svg +1 -0
  616. package/dist/assets/starbase-build-site-sign.glb +0 -0
  617. package/dist/assets/starbase-build-site-sign.painted.svg +1 -0
  618. package/dist/assets/starbase-build-site-sign.svg +1 -0
  619. package/dist/assets/starbase-build-site-sign.thick.svg +1 -0
  620. package/dist/assets/starbase-build-site-starfactory.glb +0 -0
  621. package/dist/assets/starbase-build-site-starfactory.painted.svg +1 -0
  622. package/dist/assets/starbase-build-site-starfactory.svg +1 -0
  623. package/dist/assets/starbase-build-site-starfactory.thick.svg +1 -0
  624. package/dist/assets/starbase-build-site.glb +0 -0
  625. package/dist/assets/starbase-build-site.painted.svg +1 -0
  626. package/dist/assets/starbase-build-site.svg +1 -0
  627. package/dist/assets/starbase-build-site.thick.svg +1 -0
  628. package/dist/assets/starbase-city-apart.painted.svg +1 -0
  629. package/dist/assets/starbase-city-apart.svg +1 -0
  630. package/dist/assets/starbase-city-apart.thick.svg +1 -0
  631. package/dist/assets/starbase-city-garden.glb +0 -0
  632. package/dist/assets/starbase-city-garden.painted.svg +1 -0
  633. package/dist/assets/starbase-city-garden.svg +1 -0
  634. package/dist/assets/starbase-city-garden.thick.svg +1 -0
  635. package/dist/assets/starbase-city-ground.glb +0 -0
  636. package/dist/assets/starbase-city-ground.painted.svg +1 -0
  637. package/dist/assets/starbase-city-ground.svg +1 -0
  638. package/dist/assets/starbase-city-ground.thick.svg +1 -0
  639. package/dist/assets/starbase-city-mega-bays.glb +0 -0
  640. package/dist/assets/starbase-city-mega-bays.painted.svg +1 -0
  641. package/dist/assets/starbase-city-mega-bays.svg +1 -0
  642. package/dist/assets/starbase-city-mega-bays.thick.svg +1 -0
  643. package/dist/assets/starbase-city-on-pad.glb +0 -0
  644. package/dist/assets/starbase-city-on-pad.painted.svg +1 -0
  645. package/dist/assets/starbase-city-on-pad.svg +1 -0
  646. package/dist/assets/starbase-city-on-pad.thick.svg +1 -0
  647. package/dist/assets/starbase-city-pads.glb +0 -0
  648. package/dist/assets/starbase-city-pads.painted.svg +1 -0
  649. package/dist/assets/starbase-city-pads.svg +1 -0
  650. package/dist/assets/starbase-city-pads.thick.svg +1 -0
  651. package/dist/assets/starbase-city-sign.glb +0 -0
  652. package/dist/assets/starbase-city-sign.painted.svg +1 -0
  653. package/dist/assets/starbase-city-sign.svg +1 -0
  654. package/dist/assets/starbase-city-sign.thick.svg +1 -0
  655. package/dist/assets/starbase-city-starfactory.glb +0 -0
  656. package/dist/assets/starbase-city-starfactory.painted.svg +1 -0
  657. package/dist/assets/starbase-city-starfactory.svg +1 -0
  658. package/dist/assets/starbase-city-starfactory.thick.svg +1 -0
  659. package/dist/assets/starbase-city-tank-farm.glb +0 -0
  660. package/dist/assets/starbase-city-tank-farm.painted.svg +1 -0
  661. package/dist/assets/starbase-city-tank-farm.svg +1 -0
  662. package/dist/assets/starbase-city-tank-farm.thick.svg +1 -0
  663. package/dist/assets/starbase-city-village.glb +0 -0
  664. package/dist/assets/starbase-city-village.painted.svg +1 -0
  665. package/dist/assets/starbase-city-village.svg +1 -0
  666. package/dist/assets/starbase-city-village.thick.svg +1 -0
  667. package/dist/assets/starbase-city.glb +0 -0
  668. package/dist/assets/starbase-city.painted.svg +1 -0
  669. package/dist/assets/starbase-city.svg +1 -0
  670. package/dist/assets/starbase-city.thick.svg +1 -0
  671. package/dist/assets/starbase-launch-site-apart.painted.svg +1 -0
  672. package/dist/assets/starbase-launch-site-apart.svg +1 -0
  673. package/dist/assets/starbase-launch-site-apart.thick.svg +1 -0
  674. package/dist/assets/starbase-launch-site-ground.glb +0 -0
  675. package/dist/assets/starbase-launch-site-ground.painted.svg +1 -0
  676. package/dist/assets/starbase-launch-site-ground.svg +1 -0
  677. package/dist/assets/starbase-launch-site-ground.thick.svg +1 -0
  678. package/dist/assets/starbase-launch-site-on-pad.glb +0 -0
  679. package/dist/assets/starbase-launch-site-on-pad.painted.svg +1 -0
  680. package/dist/assets/starbase-launch-site-on-pad.svg +1 -0
  681. package/dist/assets/starbase-launch-site-on-pad.thick.svg +1 -0
  682. package/dist/assets/starbase-launch-site-pads.glb +0 -0
  683. package/dist/assets/starbase-launch-site-pads.painted.svg +1 -0
  684. package/dist/assets/starbase-launch-site-pads.svg +1 -0
  685. package/dist/assets/starbase-launch-site-pads.thick.svg +1 -0
  686. package/dist/assets/starbase-launch-site-tank-farm.glb +0 -0
  687. package/dist/assets/starbase-launch-site-tank-farm.painted.svg +1 -0
  688. package/dist/assets/starbase-launch-site-tank-farm.svg +1 -0
  689. package/dist/assets/starbase-launch-site-tank-farm.thick.svg +1 -0
  690. package/dist/assets/starbase-launch-site.glb +0 -0
  691. package/dist/assets/starbase-launch-site.painted.svg +1 -0
  692. package/dist/assets/starbase-launch-site.svg +1 -0
  693. package/dist/assets/starbase-launch-site.thick.svg +1 -0
  694. package/dist/assets/starship-2019.painted.svg +1 -1
  695. package/dist/assets/starship-2019.svg +1 -1
  696. package/dist/assets/starship-2019.thick.svg +1 -1
  697. package/dist/assets/starship-v1-apart.painted.svg +1 -1
  698. package/dist/assets/starship-v1-apart.svg +1 -1
  699. package/dist/assets/starship-v1-apart.thick.svg +1 -1
  700. package/dist/assets/starship-v1-booster.painted.svg +1 -1
  701. package/dist/assets/starship-v1-booster.svg +1 -1
  702. package/dist/assets/starship-v1-booster.thick.svg +1 -1
  703. package/dist/assets/starship-v1-flight1-apart.painted.svg +1 -1
  704. package/dist/assets/starship-v1-flight1-apart.svg +1 -1
  705. package/dist/assets/starship-v1-flight1-apart.thick.svg +1 -1
  706. package/dist/assets/starship-v1-flight1-booster.painted.svg +1 -1
  707. package/dist/assets/starship-v1-flight1-booster.svg +1 -1
  708. package/dist/assets/starship-v1-flight1-booster.thick.svg +1 -1
  709. package/dist/assets/starship-v1-flight1-ship.painted.svg +1 -1
  710. package/dist/assets/starship-v1-flight1-ship.svg +1 -1
  711. package/dist/assets/starship-v1-flight1-ship.thick.svg +1 -1
  712. package/dist/assets/starship-v1-flight1.painted.svg +1 -1
  713. package/dist/assets/starship-v1-flight1.svg +1 -1
  714. package/dist/assets/starship-v1-flight1.thick.svg +1 -1
  715. package/dist/assets/starship-v1-ship.painted.svg +1 -1
  716. package/dist/assets/starship-v1-ship.svg +1 -1
  717. package/dist/assets/starship-v1-ship.thick.svg +1 -1
  718. package/dist/assets/starship-v1.painted.svg +1 -1
  719. package/dist/assets/starship-v1.svg +1 -1
  720. package/dist/assets/starship-v1.thick.svg +1 -1
  721. package/dist/assets/starship-v2-apart.painted.svg +1 -1
  722. package/dist/assets/starship-v2-apart.svg +1 -1
  723. package/dist/assets/starship-v2-apart.thick.svg +1 -1
  724. package/dist/assets/starship-v2-booster.painted.svg +1 -1
  725. package/dist/assets/starship-v2-booster.svg +1 -1
  726. package/dist/assets/starship-v2-booster.thick.svg +1 -1
  727. package/dist/assets/starship-v2-ship.painted.svg +1 -1
  728. package/dist/assets/starship-v2-ship.svg +1 -1
  729. package/dist/assets/starship-v2-ship.thick.svg +1 -1
  730. package/dist/assets/starship-v2.painted.svg +1 -1
  731. package/dist/assets/starship-v2.svg +1 -1
  732. package/dist/assets/starship-v2.thick.svg +1 -1
  733. package/dist/assets/starship-v3-apart.painted.svg +1 -1
  734. package/dist/assets/starship-v3-apart.svg +1 -1
  735. package/dist/assets/starship-v3-apart.thick.svg +1 -1
  736. package/dist/assets/starship-v3-booster.painted.svg +1 -1
  737. package/dist/assets/starship-v3-booster.svg +1 -1
  738. package/dist/assets/starship-v3-booster.thick.svg +1 -1
  739. package/dist/assets/starship-v3-ship.painted.svg +1 -1
  740. package/dist/assets/starship-v3-ship.svg +1 -1
  741. package/dist/assets/starship-v3-ship.thick.svg +1 -1
  742. package/dist/assets/starship-v3.painted.svg +1 -1
  743. package/dist/assets/starship-v3.svg +1 -1
  744. package/dist/assets/starship-v3.thick.svg +1 -1
  745. package/dist/assets/starship-v4-apart.painted.svg +1 -1
  746. package/dist/assets/starship-v4-apart.svg +1 -1
  747. package/dist/assets/starship-v4-apart.thick.svg +1 -1
  748. package/dist/assets/starship-v4-booster.painted.svg +1 -1
  749. package/dist/assets/starship-v4-booster.svg +1 -1
  750. package/dist/assets/starship-v4-booster.thick.svg +1 -1
  751. package/dist/assets/starship-v4-ship.painted.svg +1 -1
  752. package/dist/assets/starship-v4-ship.svg +1 -1
  753. package/dist/assets/starship-v4-ship.thick.svg +1 -1
  754. package/dist/assets/starship-v4.painted.svg +1 -1
  755. package/dist/assets/starship-v4.svg +1 -1
  756. package/dist/assets/starship-v4.thick.svg +1 -1
  757. package/dist/attrs.d.ts +93 -0
  758. package/dist/attrs.js +86 -0
  759. package/dist/build/glb.d.ts +25 -0
  760. package/dist/build/glb.js +14 -0
  761. package/dist/build/index.d.ts +96 -6
  762. package/dist/build/index.js +83 -8
  763. package/dist/build/lineup.d.ts +56 -2
  764. package/dist/build/lineup.js +37 -6
  765. package/dist/builder.d.ts +68 -0
  766. package/dist/builder.js +116 -0
  767. package/dist/crossfade.d.ts +44 -2
  768. package/dist/crossfade.js +44 -2
  769. package/dist/data/apollosoyuz.d.ts +6 -0
  770. package/dist/data/apollosoyuz.js +28 -0
  771. package/dist/data/credits.d.ts +63 -2
  772. package/dist/data/credits.js +52 -2
  773. package/dist/data/dragon.js +35 -0
  774. package/dist/data/electron.d.ts +2 -0
  775. package/dist/data/electron.js +23 -0
  776. package/dist/data/falcon.js +2 -2
  777. package/dist/data/falcon1.d.ts +4 -0
  778. package/dist/data/falcon1.js +51 -0
  779. package/dist/data/flight-log.d.ts +50 -0
  780. package/dist/data/flight-log.js +44 -0
  781. package/dist/data/flights.d.ts +101 -0
  782. package/dist/data/flights.js +187 -0
  783. package/dist/data/gemini.d.ts +3 -0
  784. package/dist/data/gemini.js +22 -0
  785. package/dist/data/hubble.d.ts +3 -0
  786. package/dist/data/hubble.js +23 -0
  787. package/dist/data/iss.d.ts +5 -0
  788. package/dist/data/iss.js +25 -0
  789. package/dist/data/jupiterc.d.ts +3 -0
  790. package/dist/data/jupiterc.js +22 -0
  791. package/dist/data/landing.d.ts +3 -0
  792. package/dist/data/landing.js +51 -0
  793. package/dist/data/lunarmodule.d.ts +4 -0
  794. package/dist/data/lunarmodule.js +27 -0
  795. package/dist/data/makers.d.ts +37 -0
  796. package/dist/data/makers.js +39 -0
  797. package/dist/data/mercury.d.ts +3 -0
  798. package/dist/data/mercury.js +22 -0
  799. package/dist/data/newglenn.d.ts +2 -0
  800. package/dist/data/newglenn.js +23 -0
  801. package/dist/data/saturn.d.ts +2 -0
  802. package/dist/data/saturn.js +32 -0
  803. package/dist/data/shuttle.d.ts +5 -0
  804. package/dist/data/shuttle.js +52 -0
  805. package/dist/data/sls.d.ts +4 -0
  806. package/dist/data/sls.js +36 -0
  807. package/dist/data/sources.d.ts +380 -2
  808. package/dist/data/sources.js +55 -1
  809. package/dist/data/soyuz.d.ts +3 -0
  810. package/dist/data/soyuz.js +33 -0
  811. package/dist/data/starbase.d.ts +2 -0
  812. package/dist/data/starbase.js +30 -0
  813. package/dist/data/tower.d.ts +3 -0
  814. package/dist/data/tower.js +26 -0
  815. package/dist/data/types.d.ts +88 -2
  816. package/dist/data/types.js +26 -1
  817. package/dist/draw/plume.d.ts +8 -0
  818. package/dist/draw/plume.js +71 -0
  819. package/dist/draw/svg.d.ts +1 -1
  820. package/dist/draw/svg.js +3 -3
  821. package/dist/element/ground.d.ts +15 -0
  822. package/dist/element/ground.js +95 -0
  823. package/dist/element/plumes.d.ts +38 -0
  824. package/dist/element/plumes.js +208 -0
  825. package/dist/element/scene.d.ts +39 -5
  826. package/dist/element/scene.js +250 -7
  827. package/dist/element.d.ts +111 -4
  828. package/dist/element.js +251 -16
  829. package/dist/embed.d.ts +131 -0
  830. package/dist/embed.js +218 -0
  831. package/dist/engines.d.ts +126 -0
  832. package/dist/engines.js +150 -0
  833. package/dist/fit.d.ts +70 -0
  834. package/dist/fit.js +17 -3
  835. package/dist/flight.d.ts +192 -0
  836. package/dist/flight.js +237 -0
  837. package/dist/flightbar.d.ts +34 -0
  838. package/dist/flightbar.js +188 -0
  839. package/dist/framing.d.ts +182 -8
  840. package/dist/framing.js +127 -6
  841. package/dist/index.d.ts +17 -0
  842. package/dist/index.js +9 -0
  843. package/dist/layout.d.ts +65 -1
  844. package/dist/layout.js +44 -2
  845. package/dist/looks.d.ts +65 -2
  846. package/dist/looks.js +44 -1
  847. package/dist/model/apollosoyuz.d.ts +2 -0
  848. package/dist/model/apollosoyuz.js +46 -0
  849. package/dist/model/dragoninside.d.ts +2 -0
  850. package/dist/model/dragoninside.js +67 -0
  851. package/dist/model/electron.d.ts +2 -0
  852. package/dist/model/electron.js +35 -0
  853. package/dist/model/falcon.d.ts +2 -0
  854. package/dist/model/falcon.js +4 -0
  855. package/dist/model/falcon1.d.ts +2 -0
  856. package/dist/model/falcon1.js +53 -0
  857. package/dist/model/gemini.d.ts +2 -0
  858. package/dist/model/gemini.js +28 -0
  859. package/dist/model/hubble.d.ts +2 -0
  860. package/dist/model/hubble.js +28 -0
  861. package/dist/model/iss.d.ts +2 -0
  862. package/dist/model/iss.js +32 -0
  863. package/dist/model/jupiterc.d.ts +2 -0
  864. package/dist/model/jupiterc.js +24 -0
  865. package/dist/model/kit.d.ts +36 -0
  866. package/dist/model/kit.js +95 -0
  867. package/dist/model/landing.d.ts +3 -0
  868. package/dist/model/landing.js +81 -0
  869. package/dist/model/lunarmodule.d.ts +2 -0
  870. package/dist/model/lunarmodule.js +43 -0
  871. package/dist/model/materials.d.ts +74 -0
  872. package/dist/model/materials.js +17 -0
  873. package/dist/model/mercury.d.ts +2 -0
  874. package/dist/model/mercury.js +19 -0
  875. package/dist/model/newglenn.d.ts +2 -0
  876. package/dist/model/newglenn.js +43 -0
  877. package/dist/model/pieces.d.ts +2 -0
  878. package/dist/model/pieces.js +2 -2
  879. package/dist/model/registry.d.ts +22 -0
  880. package/dist/model/registry.js +85 -0
  881. package/dist/model/saturn.d.ts +2 -0
  882. package/dist/model/saturn.js +122 -0
  883. package/dist/model/shuttle.d.ts +2 -0
  884. package/dist/model/shuttle.js +111 -0
  885. package/dist/model/sls.d.ts +2 -0
  886. package/dist/model/sls.js +83 -0
  887. package/dist/model/soyuz.d.ts +2 -0
  888. package/dist/model/soyuz.js +75 -0
  889. package/dist/model/stacks.d.ts +39 -0
  890. package/dist/model/stacks.js +1 -0
  891. package/dist/model/starbase.d.ts +2 -0
  892. package/dist/model/starbase.js +108 -0
  893. package/dist/model/tower.d.ts +6 -0
  894. package/dist/model/tower.js +89 -0
  895. package/dist/parts.d.ts +36 -3
  896. package/dist/pixels.d.ts +44 -4
  897. package/dist/pixels.js +44 -4
  898. package/dist/react.d.ts +38 -6
  899. package/dist/react.js +13 -0
  900. package/dist/rockets.d.ts +96 -3
  901. package/dist/rockets.js +136 -9
  902. package/dist/spin.d.ts +66 -0
  903. package/dist/spin.js +44 -0
  904. package/dist/tilt.d.ts +48 -4
  905. package/dist/tilt.js +26 -4
  906. package/package.json +99 -19
package/dist/element.d.ts CHANGED
@@ -1,10 +1,47 @@
1
+ import { type Flight } from "./flight.ts";
2
+ import { UchusenFlight } from "./flightbar.ts";
1
3
  import type { Description, FitReport } from "./fit.ts";
2
4
  import { type Angle, type ViewChoice } from "./framing.ts";
3
5
  import { ROCKETS } from "./rockets.ts";
6
+ /**
7
+ * What a `<uchusen-rocket>` is doing, as its `data-state` attribute says: `picture` (the drawing), `loading` (the 3D view is on its way), `3d`, `fallback` (no WebGL, so the drawing stays) or `error`.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * import type { RocketState } from "@johnmorrisdotca/uchusen-rockets/element";
12
+ *
13
+ * const states: RocketState[] = ["picture", "loading", "3d", "fallback", "error"];
14
+ * console.log(states.length);
15
+ * ```
16
+ */
4
17
  export type RocketState = "picture" | "loading" | "3d" | "fallback" | "error";
5
18
  declare const HTMLBase: typeof HTMLElement;
6
- /** Where the licensed models are, for every element with no `assets` attribute of its own. Left unset: beside this module, in ./assets/. */
19
+ /**
20
+ * Where the licensed models are, for every element with no `assets` attribute of its own. Left unset: beside this module, in ./assets/.
21
+ *
22
+ * @param url The folder the licensed models are in. A trailing slash is added if it has none.
23
+ * @example
24
+ * ```ts no-run
25
+ * import { setAssetBase } from "@johnmorrisdotca/uchusen-rockets/element";
26
+ *
27
+ * setAssetBase("/static/uchusen-assets/");
28
+ * ```
29
+ */
7
30
  export declare function setAssetBase(url: string): void;
31
+ /**
32
+ * The `<uchusen-rocket>` element: a rocket as a drawing that a 3D view takes over from when the browser can draw WebGL. Its attributes are the words of `RocketOptions`. It exposes its state as `data-state` and loads three.js only for a 3D view.
33
+ *
34
+ * @example
35
+ * ```ts no-run
36
+ * import { UchusenRocket } from "@johnmorrisdotca/uchusen-rockets/element";
37
+ *
38
+ * const rocket: UchusenRocket = document.createElement("uchusen-rocket") as UchusenRocket;
39
+ * rocket.setAttribute("rocket", "starship");
40
+ * rocket.setAttribute("variant", "v3");
41
+ * rocket.setAttribute("look", "painted");
42
+ * document.body.append(rocket);
43
+ * ```
44
+ */
8
45
  export declare class UchusenRocket extends HTMLBase {
9
46
  static readonly observedAttributes: string[];
10
47
  private descriptionValue;
@@ -29,6 +66,13 @@ export declare class UchusenRocket extends HTMLBase {
29
66
  private onScreen;
30
67
  private drawn;
31
68
  private tiltCleanups;
69
+ private clock;
70
+ private flightFrame;
71
+ private flightLast;
72
+ private flightDrawn;
73
+ private noted;
74
+ private phaseSeen;
75
+ private flightSeen;
32
76
  /** What is showing now. */
33
77
  get state(): RocketState;
34
78
  /** What the fit check said about what is showing: its label, parts and credits. */
@@ -43,6 +87,9 @@ export declare class UchusenRocket extends HTMLBase {
43
87
  /** The drawing, turned and moved to the chosen view. The 3D view moves itself, so only the drawing needs it, and only until the 3D view shows. It is drawn at most about 20 times a second and never while out of sight: it is made again when it comes back. */
44
88
  private place;
45
89
  private seen;
90
+ /** A reader who changes the setting while the page is open is followed at once. */
91
+ private motionChanged;
92
+ private motion;
46
93
  connectedCallback(): void;
47
94
  disconnectedCallback(): void;
48
95
  attributeChangedCallback(name: string, before: string | null, after: string | null): void;
@@ -54,7 +101,44 @@ export declare class UchusenRocket extends HTMLBase {
54
101
  private emit;
55
102
  /** What to draw from the attributes, every value checked. */
56
103
  private settings;
104
+ /** The flight a page gives for what is showing, or null: a custom build never has one. */
105
+ get flight(): Flight | null;
106
+ /** Where the timeline is: `active` once it has been started or moved, until `endFlight`. */
107
+ get flightState(): {
108
+ active: boolean;
109
+ playing: boolean;
110
+ ended: boolean;
111
+ position: number;
112
+ phase: string;
113
+ };
114
+ /** Plays the flight from where it is. It stands still out of sight, and does not play at all for a reader who asked for reduced motion: `seek` still moves it, by hand. */
115
+ play(): void;
116
+ pause(): void;
117
+ /** Moves the timeline to a place, where 0 is the first phase, 1 the next and so on: `2.5` is half way from the third to the fourth. */
118
+ seek(position: number): void;
119
+ /** Leaves the flight: the rocket as it was. */
120
+ endFlight(): void;
121
+ /** For each part with engines, which burn: at a named phase, where the timeline is, or else as the attributes have them. */
122
+ engineCharts(phaseId?: string | null): {
123
+ slot: string;
124
+ burning: number;
125
+ total: number;
126
+ words: string;
127
+ svg: string;
128
+ }[];
129
+ private flightMoved;
130
+ /** With no 3D view the drawing follows the timeline, by one frame request at a time, at most 20 drawings a second, never out of sight. */
131
+ private kickFlight;
132
+ private flightStep;
133
+ /** Tells the page where the timeline is: at once for a new phase or a stop, otherwise at most 8 times a second. */
134
+ private noteFlight;
135
+ /** Whether the engines are lit: `engines="on"`, and never for a reader who asked for reduced motion. */
136
+ private engineLights;
137
+ /** Hands the 3D view what the attributes say about the engines, and its reader's motion setting. */
138
+ private lightViewer;
57
139
  private update;
140
+ /** After a change: a timeline of another rocket ends, and the `phase` attribute moves it. */
141
+ private settleFlight;
58
142
  private renderShell;
59
143
  /** The drawing for what the attributes say now. It is made from code, so it needs no file. A zoom or a move only changes which part of it the box shows (its viewBox), so the drawing is as sharp as the box and never grows past it. */
60
144
  private redraw;
@@ -68,16 +152,39 @@ export declare class UchusenRocket extends HTMLBase {
68
152
  private start;
69
153
  private startTilt;
70
154
  }
71
- /** Rockets side by side on one baseline at one scale: `<uchusen-lineup items="starship:v1,starship:v3,person,building" unit="4" ruler labels>`. */
155
+ /**
156
+ * Rockets side by side on one baseline at one scale: `<uchusen-lineup items="starship:v1,starship:v3,person,building" unit="4" ruler labels>`.
157
+ *
158
+ * @example
159
+ * ```ts no-run
160
+ * import { UchusenLineup } from "@johnmorrisdotca/uchusen-rockets/element";
161
+ *
162
+ * const lineup: UchusenLineup = document.createElement("uchusen-lineup") as UchusenLineup;
163
+ * lineup.setAttribute("items", "starship:v2,starship:v3,person");
164
+ * lineup.setAttribute("unit", "3");
165
+ * lineup.toggleAttribute("ruler", true);
166
+ * document.body.append(lineup);
167
+ * ```
168
+ */
72
169
  export declare class UchusenLineup extends HTMLBase {
73
170
  static readonly observedAttributes: string[];
74
171
  connectedCallback(): void;
75
172
  attributeChangedCallback(name: string, before: string | null, after: string | null): void;
76
173
  private render;
77
174
  }
78
- /** Defines both elements, once. Importing this module does it. */
175
+ /**
176
+ * Defines both elements, once. Importing this module does it.
177
+ *
178
+ * @example
179
+ * ```ts no-run
180
+ * import { defineUchusenRocket } from "@johnmorrisdotca/uchusen-rockets/element";
181
+ *
182
+ * defineUchusenRocket();
183
+ * console.log(customElements.get("uchusen-rocket") !== undefined);
184
+ * ```
185
+ */
79
186
  export declare function defineUchusenRocket(): void;
80
- export { ROCKETS };
187
+ export { ROCKETS, UchusenFlight };
81
188
  declare global {
82
189
  interface HTMLElementTagNameMap {
83
190
  "uchusen-rocket": UchusenRocket;
package/dist/element.js CHANGED
@@ -2,22 +2,36 @@
2
2
  // crossfading in over it; drag to turn, keyboard, tilt on phones, a slow spin, reduced motion; the drawing stays on no WebGL, Save-Data or any failure. Importing this file defines the elements. three.js is
3
3
  // loaded only when a 3D view is wanted, and a licensed model only when the painted look asks for one.
4
4
  import { build, FitError } from "./build/index.js";
5
+ import { bellsOf, enginesWanted, pickBells } from "./engines.js";
6
+ import { engineChart } from "./draw/plume.js";
7
+ import { burnsOf, FlightClock, flightOf, frameAt, phaseAt, phasePosition } from "./flight.js";
8
+ import { defineUchusenFlight, UchusenFlight } from "./flightbar.js";
5
9
  import { lineupSvg } from "./build/lineup.js";
6
10
  import { CROSSFADE_MS, REDUCED_FADE_MS, revealDelay } from "./crossfade.js";
7
11
  import { cleanView, turnedBy, VIEWS } from "./framing.js";
8
12
  import { cleanShow } from "./layout.js";
9
13
  import { cleanLook } from "./looks.js";
10
- import { ROCKETS } from "./rockets.js";
14
+ import { ROCKETS, SLOT_NAMES } from "./rockets.js";
11
15
  import { tiltMode, tiltTurn } from "./tilt.js";
16
+ import { spinOf } from "./spin.js";
12
17
  const HTMLBase = typeof HTMLElement === "undefined" ? class {
13
18
  } : HTMLElement;
14
19
  /** A view out of sight keeps its WebGL canvas this long before letting it go (a browser allows only a few at a time). */
15
20
  const RELEASE_MS = 30_000;
16
- const DEFAULT_SPIN = { seconds: 180, way: "cw" };
17
21
  /** The drawing, followed along a turn, is made again at most this often. */
18
22
  const PLACE_MS = 50;
19
23
  let assetBase = null;
20
- /** Where the licensed models are, for every element with no `assets` attribute of its own. Left unset: beside this module, in ./assets/. */
24
+ /**
25
+ * Where the licensed models are, for every element with no `assets` attribute of its own. Left unset: beside this module, in ./assets/.
26
+ *
27
+ * @param url The folder the licensed models are in. A trailing slash is added if it has none.
28
+ * @example
29
+ * ```ts no-run
30
+ * import { setAssetBase } from "@johnmorrisdotca/uchusen-rockets/element";
31
+ *
32
+ * setAssetBase("/static/uchusen-assets/");
33
+ * ```
34
+ */
21
35
  export function setAssetBase(url) {
22
36
  assetBase = url.endsWith("/") ? url : `${url}/`;
23
37
  }
@@ -82,8 +96,22 @@ function whyNot(mode) {
82
96
  return "no-webgl";
83
97
  return "";
84
98
  }
99
+ /**
100
+ * The `<uchusen-rocket>` element: a rocket as a drawing that a 3D view takes over from when the browser can draw WebGL. Its attributes are the words of `RocketOptions`. It exposes its state as `data-state` and loads three.js only for a 3D view.
101
+ *
102
+ * @example
103
+ * ```ts no-run
104
+ * import { UchusenRocket } from "@johnmorrisdotca/uchusen-rockets/element";
105
+ *
106
+ * const rocket: UchusenRocket = document.createElement("uchusen-rocket") as UchusenRocket;
107
+ * rocket.setAttribute("rocket", "starship");
108
+ * rocket.setAttribute("variant", "v3");
109
+ * rocket.setAttribute("look", "painted");
110
+ * document.body.append(rocket);
111
+ * ```
112
+ */
85
113
  export class UchusenRocket extends HTMLBase {
86
- static observedAttributes = ["rocket", "variant", "show", "look", "view", "build", "mode", "assets", "spin", "way", "label"];
114
+ static observedAttributes = ["rocket", "variant", "show", "look", "view", "build", "mode", "assets", "spin", "way", "label", "engines", "phase"];
87
115
  descriptionValue = null;
88
116
  picture = null;
89
117
  holder = null;
@@ -106,6 +134,13 @@ export class UchusenRocket extends HTMLBase {
106
134
  onScreen = true;
107
135
  drawn = { key: "", box: [0, 0, 1, 1] };
108
136
  tiltCleanups = [];
137
+ clock = null;
138
+ flightFrame = 0;
139
+ flightLast = 0;
140
+ flightDrawn = -1;
141
+ noted = { index: -1, at: 0 };
142
+ phaseSeen = null;
143
+ flightSeen = null;
109
144
  /** What is showing now. */
110
145
  get state() {
111
146
  return this.stateNow;
@@ -173,15 +208,22 @@ export class UchusenRocket extends HTMLBase {
173
208
  seen = () => {
174
209
  if (!document.hidden && this.stale)
175
210
  this.place();
211
+ this.kickFlight();
176
212
  };
213
+ /** A reader who changes the setting while the page is open is followed at once. */
214
+ motionChanged = () => this.queue();
215
+ motion = null;
177
216
  connectedCallback() {
178
217
  if (!this.shadowRoot)
179
218
  adopt(this.attachShadow({ mode: "open" }), CSS, rocketSheet);
180
219
  document.addEventListener("visibilitychange", this.seen);
220
+ this.motion = typeof matchMedia === "function" ? matchMedia("(prefers-reduced-motion: reduce)") : null;
221
+ this.motion?.addEventListener("change", this.motionChanged);
181
222
  this.queue();
182
223
  }
183
224
  disconnectedCallback() {
184
225
  document.removeEventListener("visibilitychange", this.seen);
226
+ this.motion?.removeEventListener("change", this.motionChanged);
185
227
  this.teardown();
186
228
  this.key = "";
187
229
  }
@@ -190,15 +232,16 @@ export class UchusenRocket extends HTMLBase {
190
232
  return;
191
233
  if (name === "spin" || name === "way")
192
234
  this.viewer?.setSpin(this.spin());
193
- else
235
+ else {
236
+ // choosing what to show leaves the flight
237
+ if (name === "show")
238
+ this.endFlight();
194
239
  this.queue();
240
+ }
195
241
  }
196
242
  // ---------------------------------------------------------------------------------------------------------------------------------
197
243
  spin() {
198
- const raw = this.getAttribute("spin");
199
- const named = { off: 0, slow: 180, medium: 67, fast: 20 };
200
- const seconds = raw === null ? DEFAULT_SPIN.seconds : (named[raw] ?? (Number.isFinite(Number(raw)) ? Math.max(0, Number(raw)) : DEFAULT_SPIN.seconds));
201
- return { seconds, way: this.getAttribute("way") === "ccw" ? "ccw" : "cw" };
244
+ return spinOf(this.getAttribute("spin"), this.getAttribute("way"));
202
245
  }
203
246
  descriptionNow() {
204
247
  if (this.descriptionValue)
@@ -233,6 +276,8 @@ export class UchusenRocket extends HTMLBase {
233
276
  window.clearTimeout(this.releaseTimer);
234
277
  window.clearTimeout(this.revealTimer);
235
278
  window.cancelAnimationFrame(this.placeFrame);
279
+ window.cancelAnimationFrame(this.flightFrame);
280
+ this.flightFrame = 0;
236
281
  this.stopTilt();
237
282
  this.viewer?.dispose();
238
283
  this.viewer = null;
@@ -257,6 +302,129 @@ export class UchusenRocket extends HTMLBase {
257
302
  const viewName = cleanView(this.getAttribute("view"));
258
303
  return { look, show, viewName, angle: VIEWS[viewName] };
259
304
  }
305
+ // ---------------------------------------------------------------------------------------------------------------------------------
306
+ // the flight
307
+ /** The flight a page gives for what is showing, or null: a custom build never has one. */
308
+ get flight() {
309
+ const report = this.builtNow?.report;
310
+ return report && !report.custom && report.variant ? flightOf(report.variant.rocket, report.variant.id) : null;
311
+ }
312
+ /** Where the timeline is: `active` once it has been started or moved, until `endFlight`. */
313
+ get flightState() {
314
+ const clock = this.clock;
315
+ const flight = this.flight;
316
+ return { active: clock !== null, playing: clock?.playing ?? false, ended: clock?.ended ?? false, position: clock?.position ?? 0, phase: clock ? phaseAt(clock.flight, clock.position).phase.id : (flight?.phases[0].id ?? "") };
317
+ }
318
+ /** Plays the flight from where it is. It stands still out of sight, and does not play at all for a reader who asked for reduced motion: `seek` still moves it, by hand. */
319
+ play() {
320
+ const flight = this.flight;
321
+ if (!flight || media("(prefers-reduced-motion: reduce)"))
322
+ return;
323
+ this.clock ??= new FlightClock(flight);
324
+ this.clock.play();
325
+ this.flightMoved();
326
+ }
327
+ pause() {
328
+ this.clock?.pause();
329
+ this.flightMoved();
330
+ }
331
+ /** Moves the timeline to a place, where 0 is the first phase, 1 the next and so on: `2.5` is half way from the third to the fourth. */
332
+ seek(position) {
333
+ const flight = this.flight;
334
+ if (!flight)
335
+ return;
336
+ this.clock ??= new FlightClock(flight);
337
+ this.clock.seek(position);
338
+ this.flightMoved();
339
+ }
340
+ /** Leaves the flight: the rocket as it was. */
341
+ endFlight() {
342
+ if (!this.clock)
343
+ return;
344
+ this.clock = null;
345
+ this.phaseSeen = null;
346
+ window.cancelAnimationFrame(this.flightFrame);
347
+ this.flightFrame = 0;
348
+ this.viewer?.setFlight(null);
349
+ this.place();
350
+ this.mark();
351
+ this.noteFlight(true);
352
+ }
353
+ /** For each part with engines, which burn: at a named phase, where the timeline is, or else as the attributes have them. */
354
+ engineCharts(phaseId = null) {
355
+ const built = this.builtNow;
356
+ if (!built)
357
+ return [];
358
+ const flight = this.flight;
359
+ const fromPhase = phaseId && flight ? flight.phases.find((phase) => phase.id === phaseId) : null;
360
+ const phase = fromPhase ?? (this.clock ? phaseAt(this.clock.flight, this.clock.position).phase : null);
361
+ const burns = phase ? burnsOf(phase) : null;
362
+ return built.parts.flatMap((part) => {
363
+ const bells = bellsOf(part.pieces);
364
+ if (bells.length === 0)
365
+ return [];
366
+ const fired = pickBells(bells, burns ? (burns[part.slot] ?? 0) : this.engineLights() ? bells.length : 0);
367
+ const name = SLOT_NAMES[part.slot] ?? part.slot;
368
+ const figure = phase?.burns[part.slot]?.engines;
369
+ const words = `${name}: ${figure && figure.value === null ? `${fired.length} drawn, no source says how many` : `${fired.length} of ${bells.length}`}`;
370
+ return [{ slot: part.slot, burning: fired.length, total: bells.length, words, svg: engineChart(bells, fired, words) }];
371
+ });
372
+ }
373
+ flightMoved() {
374
+ if (this.clock)
375
+ this.viewer?.setFlight(this.clock);
376
+ if (this.viewer)
377
+ this.noteFlight(true);
378
+ else {
379
+ this.place();
380
+ this.noteFlight(true);
381
+ this.kickFlight();
382
+ }
383
+ this.mark();
384
+ }
385
+ /** With no 3D view the drawing follows the timeline, by one frame request at a time, at most 20 drawings a second, never out of sight. */
386
+ kickFlight() {
387
+ if (this.viewer || this.flightFrame || !this.clock?.playing || !this.onScreen || document.hidden)
388
+ return;
389
+ this.flightLast = 0;
390
+ this.flightFrame = window.requestAnimationFrame(this.flightStep);
391
+ }
392
+ flightStep = (time) => {
393
+ this.flightFrame = 0;
394
+ const clock = this.clock;
395
+ if (!clock?.playing || this.viewer || !this.onScreen || document.hidden)
396
+ return;
397
+ if (this.flightLast)
398
+ clock.advance(Math.min(0.1, (time - this.flightLast) / 1000));
399
+ this.flightLast = time;
400
+ if (phaseAt(clock.flight, clock.position).index !== this.flightDrawn) {
401
+ this.flightDrawn = phaseAt(clock.flight, clock.position).index;
402
+ this.place();
403
+ }
404
+ this.noteFlight(!clock.playing);
405
+ if (clock.playing)
406
+ this.flightFrame = window.requestAnimationFrame(this.flightStep);
407
+ };
408
+ /** Tells the page where the timeline is: at once for a new phase or a stop, otherwise at most 8 times a second. */
409
+ noteFlight(now = false) {
410
+ const clock = this.clock;
411
+ const index = clock ? phaseAt(clock.flight, clock.position).index : -1;
412
+ const time = performance.now();
413
+ if (!now && index === this.noted.index && time - this.noted.at < 125)
414
+ return;
415
+ this.noted = { index, at: time };
416
+ this.dataset.phase = this.flightState.active ? this.flightState.phase : "";
417
+ this.emit("uchusen-flight", this.flightState);
418
+ }
419
+ /** Whether the engines are lit: `engines="on"`, and never for a reader who asked for reduced motion. */
420
+ engineLights() {
421
+ return enginesWanted(this.getAttribute("engines"), media("(prefers-reduced-motion: reduce)"));
422
+ }
423
+ /** Hands the 3D view what the attributes say about the engines, and its reader's motion setting. */
424
+ lightViewer(viewer) {
425
+ viewer.setReduced(media("(prefers-reduced-motion: reduce)"));
426
+ viewer.setEngines(this.engineLights() ? "full" : null);
427
+ }
260
428
  update() {
261
429
  const description = this.descriptionNow();
262
430
  const key = JSON.stringify(description);
@@ -275,9 +443,31 @@ export class UchusenRocket extends HTMLBase {
275
443
  if (!this.picture)
276
444
  this.renderShell();
277
445
  void this.applyRocket();
446
+ this.settleFlight();
278
447
  return;
279
448
  }
280
449
  this.applySettings();
450
+ this.settleFlight();
451
+ }
452
+ /** After a change: a timeline of another rocket ends, and the `phase` attribute moves it. */
453
+ settleFlight() {
454
+ const flight = this.flight;
455
+ if (this.clock && this.clock.flight.id !== flight?.id)
456
+ this.endFlight();
457
+ if ((flight?.id ?? null) !== this.flightSeen) {
458
+ this.flightSeen = flight?.id ?? null;
459
+ this.phaseSeen = null;
460
+ this.noteFlight(true);
461
+ }
462
+ const asked = this.getAttribute("phase");
463
+ if (asked !== this.phaseSeen) {
464
+ this.phaseSeen = asked;
465
+ const place = flight ? phasePosition(flight, asked) : null;
466
+ if (place !== null)
467
+ this.seek(place);
468
+ else if (asked === null)
469
+ this.endFlight();
470
+ }
281
471
  }
282
472
  renderShell() {
283
473
  const root = this.shadowRoot;
@@ -306,15 +496,18 @@ export class UchusenRocket extends HTMLBase {
306
496
  redraw() {
307
497
  if (!this.builtNow || !this.drawing)
308
498
  return;
309
- const { look, show, angle } = this.settings(this.builtNow);
499
+ const { look, show: chosen, angle } = this.settings(this.builtNow);
500
+ const flying = this.clock ? frameAt(this.clock.flight, this.clock.position, this.builtNow.parts.map((part) => ({ slot: part.slot, baseY: 0 })), 1) : null;
501
+ const show = flying ? (flying.separated ? "apart" : "together") : chosen;
310
502
  // when a 3D view is showing, a drawing of the same angle is ready behind it
311
503
  const from = this.driven ? turnedBy(angle, this.driven.yaw, this.driven.tilt) : (this.viewer?.currentAngle() ?? angle);
312
504
  const label = this.getAttribute("label") ?? this.builtNow.report.label;
313
- const key = `${this.key}|${look}|${show}|${from.az.toFixed(2)}|${from.el.toFixed(2)}|${label}`;
505
+ const lit = flying ? (media("(prefers-reduced-motion: reduce)") ? false : flying.burns) : this.engineLights();
506
+ const key = `${this.key}|${look}|${show}|${from.az.toFixed(2)}|${from.el.toFixed(2)}|${label}|${flying ? flying.index : ""}|${JSON.stringify(lit)}`;
314
507
  let node = this.drawing.firstElementChild;
315
508
  if (key !== this.drawn.key || !node) {
316
509
  const template = document.createElement("template");
317
- template.innerHTML = this.builtNow.svg({ look, show, view: from });
510
+ template.innerHTML = this.builtNow.svg({ look, show, view: from, engines: lit });
318
511
  node = template.content.firstElementChild;
319
512
  if (!node)
320
513
  return;
@@ -337,6 +530,8 @@ export class UchusenRocket extends HTMLBase {
337
530
  return;
338
531
  const { look, show, viewName } = this.settings(this.builtNow);
339
532
  this.dataset.look = look;
533
+ this.dataset.engines = this.engineLights() ? "on" : "off";
534
+ this.dataset.flight = this.flight?.id ?? "";
340
535
  this.dataset.show = show;
341
536
  this.dataset.viewAngle = viewName;
342
537
  this.dataset.variant = this.builtNow.report.variant?.id ?? "";
@@ -354,6 +549,8 @@ export class UchusenRocket extends HTMLBase {
354
549
  const from = viewName !== this.lastView || this.driven ? angle : this.viewer.currentAngle();
355
550
  this.lastView = viewName;
356
551
  await this.viewer.load(this.builtNow, show, look, from);
552
+ if (this.viewer)
553
+ this.lightViewer(this.viewer);
357
554
  this.emit("uchusen-change", { report: this.builtNow.report });
358
555
  }
359
556
  }
@@ -366,6 +563,7 @@ export class UchusenRocket extends HTMLBase {
366
563
  if (this.viewer) {
367
564
  this.viewer.setLook(look);
368
565
  this.viewer.setShow(show);
566
+ this.lightViewer(this.viewer);
369
567
  if (viewName !== this.lastView)
370
568
  this.viewer.setAngle(angle, true);
371
569
  this.viewer.setHome(angle);
@@ -387,6 +585,8 @@ export class UchusenRocket extends HTMLBase {
387
585
  this.onScreen = seen.isIntersecting;
388
586
  if (seen.isIntersecting && this.stale)
389
587
  this.place();
588
+ if (seen.isIntersecting)
589
+ this.kickFlight();
390
590
  if (reason)
391
591
  return;
392
592
  if (seen.isIntersecting) {
@@ -404,6 +604,7 @@ export class UchusenRocket extends HTMLBase {
404
604
  this.viewer?.dispose();
405
605
  this.viewer = null;
406
606
  this.stopTilt();
607
+ this.kickFlight();
407
608
  if (generation === this.generation) {
408
609
  this.setState("picture");
409
610
  if (this.driven)
@@ -422,6 +623,7 @@ export class UchusenRocket extends HTMLBase {
422
623
  this.stopTilt();
423
624
  this.viewer?.dispose();
424
625
  this.viewer = null;
626
+ this.kickFlight();
425
627
  this.setState("fallback", why);
426
628
  this.emit("uchusen-fallback", { reason: why });
427
629
  }
@@ -448,16 +650,25 @@ export class UchusenRocket extends HTMLBase {
448
650
  this.dataset.painted = state;
449
651
  this.emit("uchusen-painted", { state });
450
652
  },
653
+ onFlight: () => this.noteFlight(!this.clock?.playing),
451
654
  });
452
655
  this.viewer = made;
656
+ window.cancelAnimationFrame(this.flightFrame);
657
+ this.flightFrame = 0;
658
+ if (this.clock)
659
+ made.setFlight(this.clock);
453
660
  if (this.driven)
454
661
  made.drive(this.driven);
455
662
  made.setVisible(true);
456
663
  const { look, show, viewName, angle } = this.settings(this.builtNow ?? built);
457
664
  this.lastView = viewName;
458
665
  await made.load(this.builtNow ?? built, show, look, angle);
459
- if (generation !== this.generation)
666
+ if (generation !== this.generation || this.viewer !== made)
460
667
  return;
668
+ const now = this.settings(this.builtNow ?? built);
669
+ if (now.show !== show)
670
+ made.setShow(now.show);
671
+ this.lightViewer(made);
461
672
  made.setSpin(this.spin());
462
673
  const wait = revealDelay(this.shownAt, performance.now(), reduced);
463
674
  this.revealTimer = window.setTimeout(() => {
@@ -528,7 +739,20 @@ const LINEUP_CSS = `
528
739
  :host { display: block; overflow-x: auto; color: inherit; }
529
740
  svg { display: block; }
530
741
  `;
531
- /** Rockets side by side on one baseline at one scale: `<uchusen-lineup items="starship:v1,starship:v3,person,building" unit="4" ruler labels>`. */
742
+ /**
743
+ * Rockets side by side on one baseline at one scale: `<uchusen-lineup items="starship:v1,starship:v3,person,building" unit="4" ruler labels>`.
744
+ *
745
+ * @example
746
+ * ```ts no-run
747
+ * import { UchusenLineup } from "@johnmorrisdotca/uchusen-rockets/element";
748
+ *
749
+ * const lineup: UchusenLineup = document.createElement("uchusen-lineup") as UchusenLineup;
750
+ * lineup.setAttribute("items", "starship:v2,starship:v3,person");
751
+ * lineup.setAttribute("unit", "3");
752
+ * lineup.toggleAttribute("ruler", true);
753
+ * document.body.append(lineup);
754
+ * ```
755
+ */
532
756
  export class UchusenLineup extends HTMLBase {
533
757
  static observedAttributes = ["items", "unit", "look", "view", "show", "ruler", "labels"];
534
758
  connectedCallback() {
@@ -567,7 +791,17 @@ export class UchusenLineup extends HTMLBase {
567
791
  this.dataset.count = String(shown.length);
568
792
  }
569
793
  }
570
- /** Defines both elements, once. Importing this module does it. */
794
+ /**
795
+ * Defines both elements, once. Importing this module does it.
796
+ *
797
+ * @example
798
+ * ```ts no-run
799
+ * import { defineUchusenRocket } from "@johnmorrisdotca/uchusen-rockets/element";
800
+ *
801
+ * defineUchusenRocket();
802
+ * console.log(customElements.get("uchusen-rocket") !== undefined);
803
+ * ```
804
+ */
571
805
  export function defineUchusenRocket() {
572
806
  if (typeof customElements === "undefined")
573
807
  return;
@@ -575,6 +809,7 @@ export function defineUchusenRocket() {
575
809
  customElements.define("uchusen-rocket", UchusenRocket);
576
810
  if (!customElements.get("uchusen-lineup"))
577
811
  customElements.define("uchusen-lineup", UchusenLineup);
812
+ defineUchusenFlight();
578
813
  }
579
814
  defineUchusenRocket();
580
- export { ROCKETS };
815
+ export { ROCKETS, UchusenFlight };