@flyingrobots/bijou-tui 7.0.0 → 7.2.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 (569) hide show
  1. package/README.md +27 -4
  2. package/dist/accordion.d.ts +3 -108
  3. package/dist/accordion.d.ts.map +1 -1
  4. package/dist/accordion.js +2 -161
  5. package/dist/accordion.js.map +1 -1
  6. package/dist/accordion.part01.d.ts +25 -0
  7. package/dist/accordion.part01.d.ts.map +1 -0
  8. package/dist/accordion.part01.js +61 -0
  9. package/dist/accordion.part01.js.map +1 -0
  10. package/dist/accordion.part02.d.ts +8 -0
  11. package/dist/accordion.part02.d.ts.map +1 -0
  12. package/dist/accordion.part02.js +15 -0
  13. package/dist/accordion.part02.js.map +1 -0
  14. package/dist/animate.d.ts.map +1 -1
  15. package/dist/animate.js +5 -6
  16. package/dist/animate.js.map +1 -1
  17. package/dist/app-frame-actions.d.ts +1 -18
  18. package/dist/app-frame-actions.d.ts.map +1 -1
  19. package/dist/app-frame-actions.js +47 -43
  20. package/dist/app-frame-actions.js.map +1 -1
  21. package/dist/app-frame-i18n.d.ts.map +1 -1
  22. package/dist/app-frame-i18n.js +20 -3
  23. package/dist/app-frame-i18n.js.map +1 -1
  24. package/dist/app-frame-overlays.d.ts +9 -1
  25. package/dist/app-frame-overlays.d.ts.map +1 -1
  26. package/dist/app-frame-overlays.js +117 -25
  27. package/dist/app-frame-overlays.js.map +1 -1
  28. package/dist/app-frame-palette.d.ts +1 -11
  29. package/dist/app-frame-palette.d.ts.map +1 -1
  30. package/dist/app-frame-palette.js +19 -18
  31. package/dist/app-frame-palette.js.map +1 -1
  32. package/dist/app-frame-render.d.ts +0 -7
  33. package/dist/app-frame-render.d.ts.map +1 -1
  34. package/dist/app-frame-render.js +17 -26
  35. package/dist/app-frame-render.js.map +1 -1
  36. package/dist/app-frame-types.d.ts +8 -4
  37. package/dist/app-frame-types.d.ts.map +1 -1
  38. package/dist/app-frame-types.js +5 -5
  39. package/dist/app-frame-types.js.map +1 -1
  40. package/dist/app-frame-utils.d.ts +2 -1
  41. package/dist/app-frame-utils.d.ts.map +1 -1
  42. package/dist/app-frame-utils.js +8 -1
  43. package/dist/app-frame-utils.js.map +1 -1
  44. package/dist/app-frame.d.ts +75 -4
  45. package/dist/app-frame.d.ts.map +1 -1
  46. package/dist/app-frame.js +346 -272
  47. package/dist/app-frame.js.map +1 -1
  48. package/dist/app-frame.test-support.part01.d.ts +149 -0
  49. package/dist/app-frame.test-support.part01.d.ts.map +1 -0
  50. package/dist/app-frame.test-support.part01.js +106 -0
  51. package/dist/app-frame.test-support.part01.js.map +1 -0
  52. package/dist/app-frame.test-support.part02.d.ts +15 -0
  53. package/dist/app-frame.test-support.part02.d.ts.map +1 -0
  54. package/dist/app-frame.test-support.part02.js +89 -0
  55. package/dist/app-frame.test-support.part02.js.map +1 -0
  56. package/dist/browsable-list.d.ts +5 -5
  57. package/dist/browsable-list.d.ts.map +1 -1
  58. package/dist/browsable-list.js.map +1 -1
  59. package/dist/canvas.d.ts +2 -34
  60. package/dist/canvas.d.ts.map +1 -1
  61. package/dist/canvas.js +43 -47
  62. package/dist/canvas.js.map +1 -1
  63. package/dist/cell-glyph-fit.js +1 -1
  64. package/dist/cell-glyph-fit.js.map +1 -1
  65. package/dist/collection-surface-types.d.ts +12 -0
  66. package/dist/collection-surface-types.d.ts.map +1 -0
  67. package/dist/collection-surface-types.js +2 -0
  68. package/dist/collection-surface-types.js.map +1 -0
  69. package/dist/collection-surface.d.ts +2 -7
  70. package/dist/collection-surface.d.ts.map +1 -1
  71. package/dist/collection-surface.js +8 -18
  72. package/dist/collection-surface.js.map +1 -1
  73. package/dist/command-palette.d.ts.map +1 -1
  74. package/dist/command-palette.js +2 -1
  75. package/dist/command-palette.js.map +1 -1
  76. package/dist/commands.d.ts.map +1 -1
  77. package/dist/commands.js +1 -1
  78. package/dist/commands.js.map +1 -1
  79. package/dist/css/install.js.map +1 -1
  80. package/dist/css/parser.js +9 -3
  81. package/dist/css/parser.js.map +1 -1
  82. package/dist/css/resolver-types.d.ts +13 -0
  83. package/dist/css/resolver-types.d.ts.map +1 -0
  84. package/dist/css/resolver-types.js +2 -0
  85. package/dist/css/resolver-types.js.map +1 -0
  86. package/dist/css/resolver.d.ts +2 -12
  87. package/dist/css/resolver.d.ts.map +1 -1
  88. package/dist/css/resolver.js +13 -20
  89. package/dist/css/resolver.js.map +1 -1
  90. package/dist/css/text-style.d.ts +4 -8
  91. package/dist/css/text-style.d.ts.map +1 -1
  92. package/dist/css/text-style.js +13 -18
  93. package/dist/css/text-style.js.map +1 -1
  94. package/dist/dag-pane.d.ts +4 -224
  95. package/dist/dag-pane.d.ts.map +1 -1
  96. package/dist/dag-pane.js +3 -516
  97. package/dist/dag-pane.js.map +1 -1
  98. package/dist/dag-pane.part01.d.ts +58 -0
  99. package/dist/dag-pane.part01.d.ts.map +1 -0
  100. package/dist/dag-pane.part01.js +2 -0
  101. package/dist/dag-pane.part01.js.map +1 -0
  102. package/dist/dag-pane.part02.d.ts +4 -0
  103. package/dist/dag-pane.part02.d.ts.map +1 -0
  104. package/dist/dag-pane.part02.js +56 -0
  105. package/dist/dag-pane.part02.js.map +1 -0
  106. package/dist/dag-pane.part03.d.ts +6 -0
  107. package/dist/dag-pane.part03.d.ts.map +1 -0
  108. package/dist/dag-pane.part03.js +76 -0
  109. package/dist/dag-pane.part03.js.map +1 -0
  110. package/dist/dag-pane.part04.d.ts +7 -0
  111. package/dist/dag-pane.part04.d.ts.map +1 -0
  112. package/dist/dag-pane.part04.js +66 -0
  113. package/dist/dag-pane.part04.js.map +1 -0
  114. package/dist/dag-pane.part05.d.ts +7 -0
  115. package/dist/dag-pane.part05.d.ts.map +1 -0
  116. package/dist/dag-pane.part05.js +78 -0
  117. package/dist/dag-pane.part05.js.map +1 -0
  118. package/dist/dag-pane.part06.d.ts +14 -0
  119. package/dist/dag-pane.part06.d.ts.map +1 -0
  120. package/dist/dag-pane.part06.js +65 -0
  121. package/dist/dag-pane.part06.js.map +1 -0
  122. package/dist/dag-pane.part07.d.ts +18 -0
  123. package/dist/dag-pane.part07.d.ts.map +1 -0
  124. package/dist/dag-pane.part07.js +22 -0
  125. package/dist/dag-pane.part07.js.map +1 -0
  126. package/dist/driver.d.ts +35 -21
  127. package/dist/driver.d.ts.map +1 -1
  128. package/dist/driver.js +69 -39
  129. package/dist/driver.js.map +1 -1
  130. package/dist/eventbus.d.ts.map +1 -1
  131. package/dist/eventbus.js +13 -23
  132. package/dist/eventbus.js.map +1 -1
  133. package/dist/file-picker.d.ts +4 -160
  134. package/dist/file-picker.d.ts.map +1 -1
  135. package/dist/file-picker.js +3 -284
  136. package/dist/file-picker.js.map +1 -1
  137. package/dist/file-picker.part01.d.ts +54 -0
  138. package/dist/file-picker.part01.d.ts.map +1 -0
  139. package/dist/file-picker.part01.js +47 -0
  140. package/dist/file-picker.part01.js.map +1 -0
  141. package/dist/file-picker.part02.d.ts +9 -0
  142. package/dist/file-picker.part02.d.ts.map +1 -0
  143. package/dist/file-picker.part02.js +77 -0
  144. package/dist/file-picker.part02.js.map +1 -0
  145. package/dist/file-picker.part03.d.ts +12 -0
  146. package/dist/file-picker.part03.d.ts.map +1 -0
  147. package/dist/file-picker.part03.js +35 -0
  148. package/dist/file-picker.part03.js.map +1 -0
  149. package/dist/flex.d.ts +0 -61
  150. package/dist/flex.d.ts.map +1 -1
  151. package/dist/flex.js +11 -161
  152. package/dist/flex.js.map +1 -1
  153. package/dist/focus-area.d.ts +6 -210
  154. package/dist/focus-area.d.ts.map +1 -1
  155. package/dist/focus-area.js +5 -425
  156. package/dist/focus-area.js.map +1 -1
  157. package/dist/focus-area.part01.d.ts +57 -0
  158. package/dist/focus-area.part01.d.ts.map +1 -0
  159. package/dist/focus-area.part01.js +23 -0
  160. package/dist/focus-area.part01.js.map +1 -0
  161. package/dist/focus-area.part02.d.ts +13 -0
  162. package/dist/focus-area.part02.d.ts.map +1 -0
  163. package/dist/focus-area.part02.js +65 -0
  164. package/dist/focus-area.part02.js.map +1 -0
  165. package/dist/focus-area.part03.d.ts +5 -0
  166. package/dist/focus-area.part03.d.ts.map +1 -0
  167. package/dist/focus-area.part03.js +42 -0
  168. package/dist/focus-area.part03.js.map +1 -0
  169. package/dist/focus-area.part04.d.ts +5 -0
  170. package/dist/focus-area.part04.d.ts.map +1 -0
  171. package/dist/focus-area.part04.js +49 -0
  172. package/dist/focus-area.part04.js.map +1 -0
  173. package/dist/focus-area.part05.d.ts +10 -0
  174. package/dist/focus-area.part05.d.ts.map +1 -0
  175. package/dist/focus-area.part05.js +66 -0
  176. package/dist/focus-area.part05.js.map +1 -0
  177. package/dist/focus-area.part06.d.ts +17 -0
  178. package/dist/focus-area.part06.d.ts.map +1 -0
  179. package/dist/focus-area.part06.js +48 -0
  180. package/dist/focus-area.part06.js.map +1 -0
  181. package/dist/focus-map.d.ts.map +1 -1
  182. package/dist/focus-map.js +8 -10
  183. package/dist/focus-map.js.map +1 -1
  184. package/dist/index.d.ts +8 -79
  185. package/dist/index.d.ts.map +1 -1
  186. package/dist/index.js +8 -105
  187. package/dist/index.js.map +1 -1
  188. package/dist/index.part01.d.ts +15 -0
  189. package/dist/index.part01.d.ts.map +1 -0
  190. package/dist/index.part01.js +11 -0
  191. package/dist/index.part01.js.map +1 -0
  192. package/dist/index.part02.d.ts +26 -0
  193. package/dist/index.part02.d.ts.map +1 -0
  194. package/dist/index.part02.js +24 -0
  195. package/dist/index.part02.js.map +1 -0
  196. package/dist/index.part03.d.ts +17 -0
  197. package/dist/index.part03.d.ts.map +1 -0
  198. package/dist/index.part03.js +11 -0
  199. package/dist/index.part03.js.map +1 -0
  200. package/dist/index.part04.d.ts +6 -0
  201. package/dist/index.part04.d.ts.map +1 -0
  202. package/dist/index.part04.js +11 -0
  203. package/dist/index.part04.js.map +1 -0
  204. package/dist/index.part05.d.ts +10 -0
  205. package/dist/index.part05.d.ts.map +1 -0
  206. package/dist/index.part05.js +26 -0
  207. package/dist/index.part05.js.map +1 -0
  208. package/dist/index.part06.d.ts +9 -0
  209. package/dist/index.part06.d.ts.map +1 -0
  210. package/dist/index.part06.js +16 -0
  211. package/dist/index.part06.js.map +1 -0
  212. package/dist/index.part07.d.ts +8 -0
  213. package/dist/index.part07.d.ts.map +1 -0
  214. package/dist/index.part07.js +15 -0
  215. package/dist/index.part07.js.map +1 -0
  216. package/dist/index.part08.d.ts +5 -0
  217. package/dist/index.part08.d.ts.map +1 -0
  218. package/dist/index.part08.js +9 -0
  219. package/dist/index.part08.js.map +1 -0
  220. package/dist/input-map.d.ts.map +1 -1
  221. package/dist/input-map.js +1 -2
  222. package/dist/input-map.js.map +1 -1
  223. package/dist/input-parser.d.ts +3 -0
  224. package/dist/input-parser.d.ts.map +1 -0
  225. package/dist/input-parser.js +95 -0
  226. package/dist/input-parser.js.map +1 -0
  227. package/dist/input-routing-inspector.js +3 -3
  228. package/dist/input-routing-inspector.js.map +1 -1
  229. package/dist/inputstack.d.ts.map +1 -1
  230. package/dist/inputstack.js +2 -0
  231. package/dist/inputstack.js.map +1 -1
  232. package/dist/keybindings.d.ts.map +1 -1
  233. package/dist/keybindings.js +5 -2
  234. package/dist/keybindings.js.map +1 -1
  235. package/dist/keys.d.ts +0 -36
  236. package/dist/keys.d.ts.map +1 -1
  237. package/dist/keys.js +11 -66
  238. package/dist/keys.js.map +1 -1
  239. package/dist/layout-inspector.d.ts +2 -30
  240. package/dist/layout-inspector.d.ts.map +1 -1
  241. package/dist/layout-inspector.js +1 -132
  242. package/dist/layout-inspector.js.map +1 -1
  243. package/dist/layout-inspector.part01.d.ts +52 -0
  244. package/dist/layout-inspector.part01.d.ts.map +1 -0
  245. package/dist/layout-inspector.part01.js +48 -0
  246. package/dist/layout-inspector.part01.js.map +1 -0
  247. package/dist/layout-inspector.part02.d.ts +11 -0
  248. package/dist/layout-inspector.part02.d.ts.map +1 -0
  249. package/dist/layout-inspector.part02.js +80 -0
  250. package/dist/layout-inspector.part02.js.map +1 -0
  251. package/dist/layout-inspector.part03.d.ts +5 -0
  252. package/dist/layout-inspector.part03.d.ts.map +1 -0
  253. package/dist/layout-inspector.part03.js +11 -0
  254. package/dist/layout-inspector.part03.js.map +1 -0
  255. package/dist/layout-preset.js +4 -4
  256. package/dist/layout-preset.js.map +1 -1
  257. package/dist/layout.d.ts.map +1 -1
  258. package/dist/layout.js +5 -3
  259. package/dist/layout.js.map +1 -1
  260. package/dist/motion/motion.js +8 -4
  261. package/dist/motion/motion.js.map +1 -1
  262. package/dist/motion/reconciler.d.ts.map +1 -1
  263. package/dist/motion/reconciler.js +9 -7
  264. package/dist/motion/reconciler.js.map +1 -1
  265. package/dist/mouse-mode.d.ts +5 -0
  266. package/dist/mouse-mode.d.ts.map +1 -0
  267. package/dist/mouse-mode.js +17 -0
  268. package/dist/mouse-mode.js.map +1 -0
  269. package/dist/navigable-table.d.ts +3 -136
  270. package/dist/navigable-table.d.ts.map +1 -1
  271. package/dist/navigable-table.js +2 -234
  272. package/dist/navigable-table.js.map +1 -1
  273. package/dist/navigable-table.part01.d.ts +42 -0
  274. package/dist/navigable-table.part01.d.ts.map +1 -0
  275. package/dist/navigable-table.part01.js +42 -0
  276. package/dist/navigable-table.part01.js.map +1 -0
  277. package/dist/navigable-table.part02.d.ts +16 -0
  278. package/dist/navigable-table.part02.d.ts.map +1 -0
  279. package/dist/navigable-table.part02.js +83 -0
  280. package/dist/navigable-table.part02.js.map +1 -0
  281. package/dist/notification-card.d.ts +11 -0
  282. package/dist/notification-card.d.ts.map +1 -0
  283. package/dist/notification-card.js +157 -0
  284. package/dist/notification-card.js.map +1 -0
  285. package/dist/notification-stack.d.ts +6 -0
  286. package/dist/notification-stack.d.ts.map +1 -0
  287. package/dist/notification-stack.js +257 -0
  288. package/dist/notification-stack.js.map +1 -0
  289. package/dist/notification.d.ts +14 -112
  290. package/dist/notification.d.ts.map +1 -1
  291. package/dist/notification.js +12 -1087
  292. package/dist/notification.js.map +1 -1
  293. package/dist/notification.part01.d.ts +77 -0
  294. package/dist/notification.part01.d.ts.map +1 -0
  295. package/dist/notification.part01.js +19 -0
  296. package/dist/notification.part01.js.map +1 -0
  297. package/dist/notification.part02.d.ts +42 -0
  298. package/dist/notification.part02.d.ts.map +1 -0
  299. package/dist/notification.part02.js +44 -0
  300. package/dist/notification.part02.js.map +1 -0
  301. package/dist/notification.part03.d.ts +6 -0
  302. package/dist/notification.part03.d.ts.map +1 -0
  303. package/dist/notification.part03.js +81 -0
  304. package/dist/notification.part03.js.map +1 -0
  305. package/dist/notification.part04.d.ts +4 -0
  306. package/dist/notification.part04.d.ts.map +1 -0
  307. package/dist/notification.part04.js +32 -0
  308. package/dist/notification.part04.js.map +1 -0
  309. package/dist/notification.part05.d.ts +6 -0
  310. package/dist/notification.part05.d.ts.map +1 -0
  311. package/dist/notification.part05.js +95 -0
  312. package/dist/notification.part05.js.map +1 -0
  313. package/dist/notification.part06.d.ts +9 -0
  314. package/dist/notification.part06.d.ts.map +1 -0
  315. package/dist/notification.part06.js +65 -0
  316. package/dist/notification.part06.js.map +1 -0
  317. package/dist/notification.part07.d.ts +10 -0
  318. package/dist/notification.part07.d.ts.map +1 -0
  319. package/dist/notification.part07.js +70 -0
  320. package/dist/notification.part07.js.map +1 -0
  321. package/dist/notification.part08.d.ts +5 -0
  322. package/dist/notification.part08.d.ts.map +1 -0
  323. package/dist/notification.part08.js +79 -0
  324. package/dist/notification.part08.js.map +1 -0
  325. package/dist/notification.part09.d.ts +14 -0
  326. package/dist/notification.part09.d.ts.map +1 -0
  327. package/dist/notification.part09.js +96 -0
  328. package/dist/notification.part09.js.map +1 -0
  329. package/dist/notification.part10.d.ts +13 -0
  330. package/dist/notification.part10.d.ts.map +1 -0
  331. package/dist/notification.part10.js +94 -0
  332. package/dist/notification.part10.js.map +1 -0
  333. package/dist/notification.part11.d.ts +6 -0
  334. package/dist/notification.part11.d.ts.map +1 -0
  335. package/dist/notification.part11.js +42 -0
  336. package/dist/notification.part11.js.map +1 -0
  337. package/dist/overlay.d.ts +8 -232
  338. package/dist/overlay.d.ts.map +1 -1
  339. package/dist/overlay.js +5 -629
  340. package/dist/overlay.js.map +1 -1
  341. package/dist/overlay.part01.d.ts +71 -0
  342. package/dist/overlay.part01.d.ts.map +1 -0
  343. package/dist/overlay.part01.js +34 -0
  344. package/dist/overlay.part01.js.map +1 -0
  345. package/dist/overlay.part02.d.ts +8 -0
  346. package/dist/overlay.part02.d.ts.map +1 -0
  347. package/dist/overlay.part02.js +81 -0
  348. package/dist/overlay.part02.js.map +1 -0
  349. package/dist/overlay.part03.d.ts +27 -0
  350. package/dist/overlay.part03.d.ts.map +1 -0
  351. package/dist/overlay.part03.js +83 -0
  352. package/dist/overlay.part03.js.map +1 -0
  353. package/dist/overlay.part04.d.ts +8 -0
  354. package/dist/overlay.part04.d.ts.map +1 -0
  355. package/dist/overlay.part04.js +103 -0
  356. package/dist/overlay.part04.js.map +1 -0
  357. package/dist/overlay.part05.d.ts +8 -0
  358. package/dist/overlay.part05.d.ts.map +1 -0
  359. package/dist/overlay.part05.js +66 -0
  360. package/dist/overlay.part05.js.map +1 -0
  361. package/dist/overlay.part06.d.ts +46 -0
  362. package/dist/overlay.part06.d.ts.map +1 -0
  363. package/dist/overlay.part06.js +35 -0
  364. package/dist/overlay.part06.js.map +1 -0
  365. package/dist/overlay.part07.d.ts +4 -0
  366. package/dist/overlay.part07.d.ts.map +1 -0
  367. package/dist/overlay.part07.js +64 -0
  368. package/dist/overlay.part07.js.map +1 -0
  369. package/dist/overlay.part08.d.ts +34 -0
  370. package/dist/overlay.part08.d.ts.map +1 -0
  371. package/dist/overlay.part08.js +54 -0
  372. package/dist/overlay.part08.js.map +1 -0
  373. package/dist/overlay.part09.d.ts +6 -0
  374. package/dist/overlay.part09.d.ts.map +1 -0
  375. package/dist/overlay.part09.js +42 -0
  376. package/dist/overlay.part09.js.map +1 -0
  377. package/dist/pager.d.ts.map +1 -1
  378. package/dist/pager.js +2 -4
  379. package/dist/pager.js.map +1 -1
  380. package/dist/panel-dock.d.ts.map +1 -1
  381. package/dist/panel-dock.js +9 -11
  382. package/dist/panel-dock.js.map +1 -1
  383. package/dist/panels.d.ts.map +1 -1
  384. package/dist/panels.js +2 -0
  385. package/dist/panels.js.map +1 -1
  386. package/dist/pipeline/middleware/css.d.ts +3 -5
  387. package/dist/pipeline/middleware/css.d.ts.map +1 -1
  388. package/dist/pipeline/middleware/css.js +12 -6
  389. package/dist/pipeline/middleware/css.js.map +1 -1
  390. package/dist/pipeline/middleware/grayscale.js +15 -10
  391. package/dist/pipeline/middleware/grayscale.js.map +1 -1
  392. package/dist/pipeline/middleware/motion.js +9 -1
  393. package/dist/pipeline/middleware/motion.js.map +1 -1
  394. package/dist/pipeline/middleware/paint.js +9 -1
  395. package/dist/pipeline/middleware/paint.js.map +1 -1
  396. package/dist/pipeline/middleware/surface-shaders.js +13 -11
  397. package/dist/pipeline/middleware/surface-shaders.js.map +1 -1
  398. package/dist/pipeline/pipeline.d.ts +7 -52
  399. package/dist/pipeline/pipeline.d.ts.map +1 -1
  400. package/dist/pipeline/pipeline.js +37 -27
  401. package/dist/pipeline/pipeline.js.map +1 -1
  402. package/dist/raster-glyph.d.ts +3 -0
  403. package/dist/raster-glyph.d.ts.map +1 -0
  404. package/dist/raster-glyph.js +2 -0
  405. package/dist/raster-glyph.js.map +1 -0
  406. package/dist/raster-glyph.part01.d.ts +75 -0
  407. package/dist/raster-glyph.part01.d.ts.map +1 -0
  408. package/dist/raster-glyph.part01.js +25 -0
  409. package/dist/raster-glyph.part01.js.map +1 -0
  410. package/dist/raster-glyph.part02.d.ts +12 -0
  411. package/dist/raster-glyph.part02.d.ts.map +1 -0
  412. package/dist/raster-glyph.part02.js +81 -0
  413. package/dist/raster-glyph.part02.js.map +1 -0
  414. package/dist/raster-glyph.part03.d.ts +6 -0
  415. package/dist/raster-glyph.part03.d.ts.map +1 -0
  416. package/dist/raster-glyph.part03.js +60 -0
  417. package/dist/raster-glyph.part03.js.map +1 -0
  418. package/dist/raster-glyph.part04.d.ts +7 -0
  419. package/dist/raster-glyph.part04.d.ts.map +1 -0
  420. package/dist/raster-glyph.part04.js +59 -0
  421. package/dist/raster-glyph.part04.js.map +1 -0
  422. package/dist/raster-glyph.part05.d.ts +6 -0
  423. package/dist/raster-glyph.part05.d.ts.map +1 -0
  424. package/dist/raster-glyph.part05.js +71 -0
  425. package/dist/raster-glyph.part05.js.map +1 -0
  426. package/dist/raster-glyph.part06.d.ts +18 -0
  427. package/dist/raster-glyph.part06.d.ts.map +1 -0
  428. package/dist/raster-glyph.part06.js +78 -0
  429. package/dist/raster-glyph.part06.js.map +1 -0
  430. package/dist/raster-glyph.part07.d.ts +11 -0
  431. package/dist/raster-glyph.part07.d.ts.map +1 -0
  432. package/dist/raster-glyph.part07.js +55 -0
  433. package/dist/raster-glyph.part07.js.map +1 -0
  434. package/dist/raytrace.d.ts +3 -58
  435. package/dist/raytrace.d.ts.map +1 -1
  436. package/dist/raytrace.js +2 -120
  437. package/dist/raytrace.js.map +1 -1
  438. package/dist/raytrace.part01.d.ts +47 -0
  439. package/dist/raytrace.part01.d.ts.map +1 -0
  440. package/dist/raytrace.part01.js +45 -0
  441. package/dist/raytrace.part01.js.map +1 -0
  442. package/dist/raytrace.part02.d.ts +12 -0
  443. package/dist/raytrace.part02.d.ts.map +1 -0
  444. package/dist/raytrace.part02.js +73 -0
  445. package/dist/raytrace.part02.js.map +1 -0
  446. package/dist/runtime-binding.d.ts +2 -3
  447. package/dist/runtime-binding.d.ts.map +1 -1
  448. package/dist/runtime-binding.js +49 -38
  449. package/dist/runtime-binding.js.map +1 -1
  450. package/dist/runtime-engine.d.ts +2 -2
  451. package/dist/runtime-engine.d.ts.map +1 -1
  452. package/dist/runtime-engine.js +15 -4
  453. package/dist/runtime-engine.js.map +1 -1
  454. package/dist/runtime.d.ts +2 -18
  455. package/dist/runtime.d.ts.map +1 -1
  456. package/dist/runtime.js +43 -62
  457. package/dist/runtime.js.map +1 -1
  458. package/dist/screen.js +1 -1
  459. package/dist/screen.js.map +1 -1
  460. package/dist/shell-quit.d.ts.map +1 -1
  461. package/dist/shell-quit.js +49 -6
  462. package/dist/shell-quit.js.map +1 -1
  463. package/dist/split-pane.d.ts +3 -104
  464. package/dist/split-pane.d.ts.map +1 -1
  465. package/dist/split-pane.js +2 -190
  466. package/dist/split-pane.js.map +1 -1
  467. package/dist/split-pane.part01.d.ts +60 -0
  468. package/dist/split-pane.part01.d.ts.map +1 -0
  469. package/dist/split-pane.part01.js +45 -0
  470. package/dist/split-pane.part01.js.map +1 -0
  471. package/dist/split-pane.part02.d.ts +8 -0
  472. package/dist/split-pane.part02.d.ts.map +1 -0
  473. package/dist/split-pane.part02.js +73 -0
  474. package/dist/split-pane.part02.js.map +1 -0
  475. package/dist/split-pane.part03.d.ts +4 -0
  476. package/dist/split-pane.part03.d.ts.map +1 -0
  477. package/dist/split-pane.part03.js +40 -0
  478. package/dist/split-pane.part03.js.map +1 -0
  479. package/dist/spring.d.ts +4 -187
  480. package/dist/spring.d.ts.map +1 -1
  481. package/dist/spring.js +2 -142
  482. package/dist/spring.js.map +1 -1
  483. package/dist/spring.part01.d.ts +90 -0
  484. package/dist/spring.part01.d.ts.map +1 -0
  485. package/dist/spring.part01.js +58 -0
  486. package/dist/spring.part01.js.map +1 -0
  487. package/dist/spring.part02.d.ts +25 -0
  488. package/dist/spring.part02.d.ts.map +1 -0
  489. package/dist/spring.part02.js +21 -0
  490. package/dist/spring.part02.js.map +1 -0
  491. package/dist/status-bar.js +1 -1
  492. package/dist/status-bar.js.map +1 -1
  493. package/dist/subapp/mount.d.ts +6 -6
  494. package/dist/subapp/mount.d.ts.map +1 -1
  495. package/dist/subapp/mount.js +19 -14
  496. package/dist/subapp/mount.js.map +1 -1
  497. package/dist/surface-budget-types.d.ts +26 -0
  498. package/dist/surface-budget-types.d.ts.map +1 -0
  499. package/dist/surface-budget-types.js +2 -0
  500. package/dist/surface-budget-types.js.map +1 -0
  501. package/dist/surface-budget.d.ts +2 -25
  502. package/dist/surface-budget.d.ts.map +1 -1
  503. package/dist/surface-budget.js.map +1 -1
  504. package/dist/surface-diff.js +26 -28
  505. package/dist/surface-diff.js.map +1 -1
  506. package/dist/surface-layout.d.ts.map +1 -1
  507. package/dist/surface-layout.js +1 -2
  508. package/dist/surface-layout.js.map +1 -1
  509. package/dist/timeline.d.ts +1 -1
  510. package/dist/timeline.d.ts.map +1 -1
  511. package/dist/timeline.js +17 -15
  512. package/dist/timeline.js.map +1 -1
  513. package/dist/transition-shaders.d.ts +5 -142
  514. package/dist/transition-shaders.d.ts.map +1 -1
  515. package/dist/transition-shaders.js +4 -391
  516. package/dist/transition-shaders.js.map +1 -1
  517. package/dist/transition-shaders.part01.d.ts +41 -0
  518. package/dist/transition-shaders.part01.d.ts.map +1 -0
  519. package/dist/transition-shaders.part01.js +38 -0
  520. package/dist/transition-shaders.part01.js.map +1 -0
  521. package/dist/transition-shaders.part02.d.ts +12 -0
  522. package/dist/transition-shaders.part02.d.ts.map +1 -0
  523. package/dist/transition-shaders.part02.js +88 -0
  524. package/dist/transition-shaders.part02.js.map +1 -0
  525. package/dist/transition-shaders.part03.d.ts +6 -0
  526. package/dist/transition-shaders.part03.d.ts.map +1 -0
  527. package/dist/transition-shaders.part03.js +82 -0
  528. package/dist/transition-shaders.part03.js.map +1 -0
  529. package/dist/transition-shaders.part04.d.ts +16 -0
  530. package/dist/transition-shaders.part04.d.ts.map +1 -0
  531. package/dist/transition-shaders.part04.js +98 -0
  532. package/dist/transition-shaders.part04.js.map +1 -0
  533. package/dist/types.d.ts +10 -42
  534. package/dist/types.d.ts.map +1 -1
  535. package/dist/types.js +9 -36
  536. package/dist/types.js.map +1 -1
  537. package/dist/view-output.d.ts +1 -1
  538. package/dist/view-output.d.ts.map +1 -1
  539. package/dist/view-output.js +3 -2
  540. package/dist/view-output.js.map +1 -1
  541. package/dist/viewport.d.ts +7 -213
  542. package/dist/viewport.d.ts.map +1 -1
  543. package/dist/viewport.js +6 -470
  544. package/dist/viewport.js.map +1 -1
  545. package/dist/viewport.part01.d.ts +51 -0
  546. package/dist/viewport.part01.d.ts.map +1 -0
  547. package/dist/viewport.part01.js +10 -0
  548. package/dist/viewport.part01.js.map +1 -0
  549. package/dist/viewport.part02.d.ts +2 -0
  550. package/dist/viewport.part02.d.ts.map +1 -0
  551. package/dist/viewport.part02.js +69 -0
  552. package/dist/viewport.part02.js.map +1 -0
  553. package/dist/viewport.part03.d.ts +10 -0
  554. package/dist/viewport.part03.d.ts.map +1 -0
  555. package/dist/viewport.part03.js +78 -0
  556. package/dist/viewport.part03.js.map +1 -0
  557. package/dist/viewport.part04.d.ts +4 -0
  558. package/dist/viewport.part04.d.ts.map +1 -0
  559. package/dist/viewport.part04.js +50 -0
  560. package/dist/viewport.part04.js.map +1 -0
  561. package/dist/viewport.part05.d.ts +5 -0
  562. package/dist/viewport.part05.d.ts.map +1 -0
  563. package/dist/viewport.part05.js +59 -0
  564. package/dist/viewport.part05.js.map +1 -0
  565. package/dist/viewport.part06.d.ts +14 -0
  566. package/dist/viewport.part06.d.ts.map +1 -0
  567. package/dist/viewport.part06.js +58 -0
  568. package/dist/viewport.part06.js.map +1 -0
  569. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"raytrace.d.ts","sourceRoot":"","sources":["../src/raytrace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"raytrace.d.ts","sourceRoot":"","sources":["../src/raytrace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACrG,YAAY,EAAE,WAAW,EAAE,wBAAwB,EAAE,6BAA6B,EAAE,aAAa,EAAE,WAAW,EAAE,mBAAmB,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAClN,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,eAAe,EAAE,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC"}
package/dist/raytrace.js CHANGED
@@ -1,121 +1,3 @@
1
- /**
2
- * Small raytrace geometry helpers for shader-authored terminal scenes.
3
- *
4
- * This module owns camera rays, vector math, and primitive intersections.
5
- * Apps keep material, lighting, palette, and sampling policy.
6
- */
7
- const DEFAULT_FOCAL_LENGTH = 1;
8
- const MIN_HIT_DISTANCE = 0.000001;
9
- const WORLD_UP = [0, 1, 0];
10
- const FALLBACK_RIGHT = [1, 0, 0];
11
- export function raytraceLookAtRay(options) {
12
- const focalLength = options.focalLength ?? DEFAULT_FOCAL_LENGTH;
13
- const up = options.up ?? WORLD_UP;
14
- const forward = raytraceNormalize(raytraceSub(options.target, options.origin));
15
- const rightCandidate = raytraceNormalize(raytraceCross(forward, up));
16
- const right = raytraceLength(rightCandidate) === 0 ? FALLBACK_RIGHT : rightCandidate;
17
- const cameraUp = raytraceNormalize(raytraceCross(right, forward));
18
- const direction = raytraceNormalize(raytraceAdd(raytraceAdd(raytraceScale(right, options.screen[0]), raytraceScale(cameraUp, options.screen[1])), raytraceScale(forward, focalLength)));
19
- return {
20
- origin: options.origin,
21
- direction,
22
- };
23
- }
24
- export function raytraceOrbitCameraRay(options) {
25
- const origin = [
26
- options.target[0] + (Math.sin(options.angleRadians) * options.radius),
27
- options.target[1] + options.height,
28
- options.target[2] + (Math.cos(options.angleRadians) * options.radius),
29
- ];
30
- return raytraceLookAtRay({
31
- origin,
32
- target: options.target,
33
- screen: options.screen,
34
- focalLength: options.focalLength,
35
- up: options.up,
36
- });
37
- }
38
- export function raytraceNearestHit(ray, shapes) {
39
- let nearest;
40
- for (const shape of shapes) {
41
- const hit = shape.kind === 'sphere'
42
- ? raytraceSphereHit(ray, shape)
43
- : raytracePlaneHit(ray, shape);
44
- if (hit !== undefined && (nearest === undefined || hit.distance < nearest.distance)) {
45
- nearest = hit;
46
- }
47
- }
48
- return nearest;
49
- }
50
- export function raytraceSphereHit(ray, sphere) {
51
- const offset = raytraceSub(ray.origin, sphere.center);
52
- const halfB = raytraceDot(offset, ray.direction);
53
- const c = raytraceDot(offset, offset) - (sphere.radius * sphere.radius);
54
- const discriminant = (halfB * halfB) - c;
55
- if (discriminant < 0)
56
- return undefined;
57
- const root = Math.sqrt(discriminant);
58
- const near = -halfB - root;
59
- const far = -halfB + root;
60
- const distance = near > MIN_HIT_DISTANCE
61
- ? near
62
- : far > MIN_HIT_DISTANCE
63
- ? far
64
- : undefined;
65
- if (distance === undefined)
66
- return undefined;
67
- const point = raytraceAdd(ray.origin, raytraceScale(ray.direction, distance));
68
- return {
69
- shape: sphere,
70
- distance,
71
- point,
72
- normal: raytraceNormalize(raytraceSub(point, sphere.center)),
73
- };
74
- }
75
- export function raytracePlaneHit(ray, plane) {
76
- const normal = raytraceNormalize(plane.normal);
77
- const denominator = raytraceDot(normal, ray.direction);
78
- if (Math.abs(denominator) <= MIN_HIT_DISTANCE)
79
- return undefined;
80
- const distance = raytraceDot(raytraceSub(plane.point, ray.origin), normal) / denominator;
81
- if (distance <= MIN_HIT_DISTANCE)
82
- return undefined;
83
- return {
84
- shape: plane,
85
- distance,
86
- point: raytraceAdd(ray.origin, raytraceScale(ray.direction, distance)),
87
- normal,
88
- };
89
- }
90
- export function raytraceReflect(ray, normal) {
91
- return raytraceSub(ray, raytraceScale(normal, 2 * raytraceDot(ray, normal)));
92
- }
93
- export function raytraceNormalize(vector) {
94
- const length = raytraceLength(vector);
95
- return length === 0
96
- ? [0, 0, 0]
97
- : [vector[0] / length, vector[1] / length, vector[2] / length];
98
- }
99
- export function raytraceLength(vector) {
100
- return Math.hypot(vector[0], vector[1], vector[2]);
101
- }
102
- export function raytraceDot(a, b) {
103
- return (a[0] * b[0]) + (a[1] * b[1]) + (a[2] * b[2]);
104
- }
105
- export function raytraceCross(a, b) {
106
- return [
107
- (a[1] * b[2]) - (a[2] * b[1]),
108
- (a[2] * b[0]) - (a[0] * b[2]),
109
- (a[0] * b[1]) - (a[1] * b[0]),
110
- ];
111
- }
112
- export function raytraceAdd(a, b) {
113
- return [a[0] + b[0], a[1] + b[1], a[2] + b[2]];
114
- }
115
- export function raytraceSub(a, b) {
116
- return [a[0] - b[0], a[1] - b[1], a[2] - b[2]];
117
- }
118
- export function raytraceScale(vector, scalar) {
119
- return [vector[0] * scalar, vector[1] * scalar, vector[2] * scalar];
120
- }
1
+ export { raytraceLookAtRay, raytraceNearestHit, raytraceOrbitCameraRay } from './raytrace.part01.js';
2
+ export { raytraceAdd, raytraceCross, raytraceDot, raytraceLength, raytraceNormalize, raytracePlaneHit, raytraceReflect, raytraceScale, raytraceSphereHit, raytraceSub } from './raytrace.part02.js';
121
3
  //# sourceMappingURL=raytrace.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"raytrace.js","sourceRoot":"","sources":["../src/raytrace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"raytrace.js","sourceRoot":"","sources":["../src/raytrace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAErG,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,eAAe,EAAE,aAAa,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,47 @@
1
+ export type RaytraceVector3 = readonly [number, number, number];
2
+ export type RaytraceScreenPoint = readonly [number, number];
3
+ export interface RaytraceRay {
4
+ readonly origin: RaytraceVector3;
5
+ readonly direction: RaytraceVector3;
6
+ }
7
+ export interface RaytraceSphere {
8
+ readonly kind: 'sphere';
9
+ readonly center: RaytraceVector3;
10
+ readonly radius: number;
11
+ }
12
+ export interface RaytracePlane {
13
+ readonly kind: 'plane';
14
+ readonly point: RaytraceVector3;
15
+ readonly normal: RaytraceVector3;
16
+ }
17
+ export type RaytraceShape = RaytraceSphere | RaytracePlane;
18
+ export interface RaytraceHit<Shape extends RaytraceShape = RaytraceShape> {
19
+ readonly shape: Shape;
20
+ readonly distance: number;
21
+ readonly point: RaytraceVector3;
22
+ readonly normal: RaytraceVector3;
23
+ }
24
+ export interface RaytraceLookAtRayOptions {
25
+ readonly origin: RaytraceVector3;
26
+ readonly target: RaytraceVector3;
27
+ readonly screen: RaytraceScreenPoint;
28
+ readonly focalLength?: number;
29
+ readonly up?: RaytraceVector3;
30
+ }
31
+ export interface RaytraceOrbitCameraRayOptions {
32
+ readonly angleRadians: number;
33
+ readonly radius: number;
34
+ readonly height: number;
35
+ readonly target: RaytraceVector3;
36
+ readonly screen: RaytraceScreenPoint;
37
+ readonly focalLength?: number;
38
+ readonly up?: RaytraceVector3;
39
+ }
40
+ export declare const DEFAULT_FOCAL_LENGTH = 1;
41
+ export declare const MIN_HIT_DISTANCE = 0.000001;
42
+ export declare const WORLD_UP: RaytraceVector3;
43
+ export declare const FALLBACK_RIGHT: RaytraceVector3;
44
+ export declare function raytraceLookAtRay(options: RaytraceLookAtRayOptions): RaytraceRay;
45
+ export declare function raytraceOrbitCameraRay(options: RaytraceOrbitCameraRayOptions): RaytraceRay;
46
+ export declare function raytraceNearestHit(ray: RaytraceRay, shapes: readonly RaytraceShape[]): RaytraceHit | undefined;
47
+ //# sourceMappingURL=raytrace.part01.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raytrace.part01.d.ts","sourceRoot":"","sources":["../src/raytrace.part01.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAChE,MAAM,MAAM,mBAAmB,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC5D,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;CACrC;AACD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AACD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;CAClC;AACD,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,aAAa,CAAC;AAC3D,MAAM,WAAW,WAAW,CAAC,KAAK,SAAS,aAAa,GAAG,aAAa;IACtE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;CAClC;AACD,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC;CAC/B;AACD,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;IACrC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC;CAC/B;AACD,eAAO,MAAM,oBAAoB,IAAI,CAAC;AACtC,eAAO,MAAM,gBAAgB,WAAW,CAAC;AACzC,eAAO,MAAM,QAAQ,EAAE,eAA2B,CAAC;AACnD,eAAO,MAAM,cAAc,EAAE,eAA2B,CAAC;AACzD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,WAAW,CAmBhF;AACD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,6BAA6B,GAAG,WAAW,CAc1F;AACD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,aAAa,EAAE,GAAG,WAAW,GAAG,SAAS,CAa9G"}
@@ -0,0 +1,45 @@
1
+ import { raytraceAdd, raytraceCross, raytraceLength, raytraceNormalize, raytracePlaneHit, raytraceScale, raytraceSphereHit, raytraceSub } from './raytrace.part02.js';
2
+ export const DEFAULT_FOCAL_LENGTH = 1;
3
+ export const MIN_HIT_DISTANCE = 0.000001;
4
+ export const WORLD_UP = [0, 1, 0];
5
+ export const FALLBACK_RIGHT = [1, 0, 0];
6
+ export function raytraceLookAtRay(options) {
7
+ const focalLength = options.focalLength ?? DEFAULT_FOCAL_LENGTH;
8
+ const up = options.up ?? WORLD_UP;
9
+ const forward = raytraceNormalize(raytraceSub(options.target, options.origin));
10
+ const rightCandidate = raytraceNormalize(raytraceCross(forward, up));
11
+ const right = raytraceLength(rightCandidate) === 0 ? FALLBACK_RIGHT : rightCandidate;
12
+ const cameraUp = raytraceNormalize(raytraceCross(right, forward));
13
+ const direction = raytraceNormalize(raytraceAdd(raytraceAdd(raytraceScale(right, options.screen[0]), raytraceScale(cameraUp, options.screen[1])), raytraceScale(forward, focalLength)));
14
+ return {
15
+ origin: options.origin,
16
+ direction,
17
+ };
18
+ }
19
+ export function raytraceOrbitCameraRay(options) {
20
+ const origin = [
21
+ options.target[0] + (Math.sin(options.angleRadians) * options.radius),
22
+ options.target[1] + options.height,
23
+ options.target[2] + (Math.cos(options.angleRadians) * options.radius),
24
+ ];
25
+ return raytraceLookAtRay({
26
+ origin,
27
+ target: options.target,
28
+ screen: options.screen,
29
+ focalLength: options.focalLength,
30
+ up: options.up,
31
+ });
32
+ }
33
+ export function raytraceNearestHit(ray, shapes) {
34
+ let nearest;
35
+ for (const shape of shapes) {
36
+ const hit = shape.kind === 'sphere'
37
+ ? raytraceSphereHit(ray, shape)
38
+ : raytracePlaneHit(ray, shape);
39
+ if (hit !== undefined && (nearest === undefined || hit.distance < nearest.distance)) {
40
+ nearest = hit;
41
+ }
42
+ }
43
+ return nearest;
44
+ }
45
+ //# sourceMappingURL=raytrace.part01.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raytrace.part01.js","sourceRoot":"","sources":["../src/raytrace.part01.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { RaytraceHit, RaytracePlane, RaytraceRay, RaytraceSphere, RaytraceVector3 } from './raytrace.part01.js';
2
+ export declare function raytraceSphereHit(ray: RaytraceRay, sphere: RaytraceSphere): RaytraceHit<RaytraceSphere> | undefined;
3
+ export declare function raytracePlaneHit(ray: RaytraceRay, plane: RaytracePlane): RaytraceHit<RaytracePlane> | undefined;
4
+ export declare function raytraceReflect(ray: RaytraceVector3, normal: RaytraceVector3): RaytraceVector3;
5
+ export declare function raytraceNormalize(vector: RaytraceVector3): RaytraceVector3;
6
+ export declare function raytraceLength(vector: RaytraceVector3): number;
7
+ export declare function raytraceDot(a: RaytraceVector3, b: RaytraceVector3): number;
8
+ export declare function raytraceCross(a: RaytraceVector3, b: RaytraceVector3): RaytraceVector3;
9
+ export declare function raytraceAdd(a: RaytraceVector3, b: RaytraceVector3): RaytraceVector3;
10
+ export declare function raytraceSub(a: RaytraceVector3, b: RaytraceVector3): RaytraceVector3;
11
+ export declare function raytraceScale(vector: RaytraceVector3, scalar: number): RaytraceVector3;
12
+ //# sourceMappingURL=raytrace.part02.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raytrace.part02.d.ts","sourceRoot":"","sources":["../src/raytrace.part02.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACrH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,GAAG,WAAW,CAAC,cAAc,CAAC,GAAG,SAAS,CAwBnH;AACD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,GAAG,WAAW,CAAC,aAAa,CAAC,GAAG,SAAS,CAc/G;AACD,wBAAgB,eAAe,CAAC,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,eAAe,GAAG,eAAe,CAE9F;AACD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,eAAe,CAK1E;AACD,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAE9D;AACD,wBAAgB,WAAW,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,eAAe,GAAG,MAAM,CAE1E;AACD,wBAAgB,aAAa,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,eAAe,GAAG,eAAe,CAMrF;AACD,wBAAgB,WAAW,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,eAAe,GAAG,eAAe,CAEnF;AACD,wBAAgB,WAAW,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,eAAe,GAAG,eAAe,CAEnF;AACD,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,CAEtF"}
@@ -0,0 +1,73 @@
1
+ import { MIN_HIT_DISTANCE } from './raytrace.part01.js';
2
+ export function raytraceSphereHit(ray, sphere) {
3
+ const offset = raytraceSub(ray.origin, sphere.center);
4
+ const halfB = raytraceDot(offset, ray.direction);
5
+ const c = raytraceDot(offset, offset) - (sphere.radius * sphere.radius);
6
+ const discriminant = (halfB * halfB) - c;
7
+ if (discriminant < 0)
8
+ return undefined;
9
+ const root = Math.sqrt(discriminant);
10
+ const near = -halfB - root;
11
+ const far = -halfB + root;
12
+ const distance = near > MIN_HIT_DISTANCE
13
+ ? near
14
+ : far > MIN_HIT_DISTANCE
15
+ ? far
16
+ : undefined;
17
+ if (distance === undefined)
18
+ return undefined;
19
+ const point = raytraceAdd(ray.origin, raytraceScale(ray.direction, distance));
20
+ return {
21
+ shape: sphere,
22
+ distance,
23
+ point,
24
+ normal: raytraceNormalize(raytraceSub(point, sphere.center)),
25
+ };
26
+ }
27
+ export function raytracePlaneHit(ray, plane) {
28
+ const normal = raytraceNormalize(plane.normal);
29
+ const denominator = raytraceDot(normal, ray.direction);
30
+ if (Math.abs(denominator) <= MIN_HIT_DISTANCE)
31
+ return undefined;
32
+ const distance = raytraceDot(raytraceSub(plane.point, ray.origin), normal) / denominator;
33
+ if (distance <= MIN_HIT_DISTANCE)
34
+ return undefined;
35
+ return {
36
+ shape: plane,
37
+ distance,
38
+ point: raytraceAdd(ray.origin, raytraceScale(ray.direction, distance)),
39
+ normal,
40
+ };
41
+ }
42
+ export function raytraceReflect(ray, normal) {
43
+ return raytraceSub(ray, raytraceScale(normal, 2 * raytraceDot(ray, normal)));
44
+ }
45
+ export function raytraceNormalize(vector) {
46
+ const length = raytraceLength(vector);
47
+ return length === 0
48
+ ? [0, 0, 0]
49
+ : [vector[0] / length, vector[1] / length, vector[2] / length];
50
+ }
51
+ export function raytraceLength(vector) {
52
+ return Math.hypot(vector[0], vector[1], vector[2]);
53
+ }
54
+ export function raytraceDot(a, b) {
55
+ return (a[0] * b[0]) + (a[1] * b[1]) + (a[2] * b[2]);
56
+ }
57
+ export function raytraceCross(a, b) {
58
+ return [
59
+ (a[1] * b[2]) - (a[2] * b[1]),
60
+ (a[2] * b[0]) - (a[0] * b[2]),
61
+ (a[0] * b[1]) - (a[1] * b[0]),
62
+ ];
63
+ }
64
+ export function raytraceAdd(a, b) {
65
+ return [a[0] + b[0], a[1] + b[1], a[2] + b[2]];
66
+ }
67
+ export function raytraceSub(a, b) {
68
+ return [a[0] - b[0], a[1] - b[1], a[2] - b[2]];
69
+ }
70
+ export function raytraceScale(vector, scalar) {
71
+ return [vector[0] * scalar, vector[1] * scalar, vector[2] * scalar];
72
+ }
73
+ //# sourceMappingURL=raytrace.part02.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"raytrace.part02.js","sourceRoot":"","sources":["../src/raytrace.part02.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGxD,MAAM,UAAU,iBAAiB,CAAC,GAAgB,EAAE,MAAsB;IACxE,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IACjD,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IACxE,MAAM,YAAY,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,YAAY,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAEvC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;IAC3B,MAAM,GAAG,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;IAC1B,MAAM,QAAQ,GAAG,IAAI,GAAG,gBAAgB;QACtC,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,GAAG,GAAG,gBAAgB;YACtB,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,SAAS,CAAC;IAChB,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAE7C,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC9E,OAAO;QACL,KAAK,EAAE,MAAM;QACb,QAAQ;QACR,KAAK;QACL,MAAM,EAAE,iBAAiB,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;KAC7D,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,gBAAgB,CAAC,GAAgB,EAAE,KAAoB;IACrE,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;IACvD,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,gBAAgB;QAAE,OAAO,SAAS,CAAC;IAEhE,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,WAAW,CAAC;IACzF,IAAI,QAAQ,IAAI,gBAAgB;QAAE,OAAO,SAAS,CAAC;IAEnD,OAAO;QACL,KAAK,EAAE,KAAK;QACZ,QAAQ;QACR,KAAK,EAAE,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QACtE,MAAM;KACP,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,eAAe,CAAC,GAAoB,EAAE,MAAuB;IAC3E,OAAO,WAAW,CAAC,GAAG,EAAE,aAAa,CAAC,MAAM,EAAE,CAAC,GAAG,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;AAC/E,CAAC;AACD,MAAM,UAAU,iBAAiB,CAAC,MAAuB;IACvD,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACtC,OAAO,MAAM,KAAK,CAAC;QACjB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACX,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AACnE,CAAC;AACD,MAAM,UAAU,cAAc,CAAC,MAAuB;IACpD,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AACD,MAAM,UAAU,WAAW,CAAC,CAAkB,EAAE,CAAkB;IAChE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,CAAC;AACD,MAAM,UAAU,aAAa,CAAC,CAAkB,EAAE,CAAkB;IAClE,OAAO;QACL,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;KAC9B,CAAC;AACJ,CAAC;AACD,MAAM,UAAU,WAAW,CAAC,CAAkB,EAAE,CAAkB;IAChE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,CAAC;AACD,MAAM,UAAU,WAAW,CAAC,CAAkB,EAAE,CAAkB;IAChE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,CAAC;AACD,MAAM,UAAU,aAAa,CAAC,MAAuB,EAAE,MAAc;IACnE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AACtE,CAAC"}
@@ -1,6 +1,5 @@
1
1
  import { type ActiveBindingCollection, type ActiveBindingProviderAssignment, type BindingLifecycleOwner, type CommandIntent, type DeepReadonly, type ViewDataContract } from '@flyingrobots/bijou';
2
- import { type RuntimeCommandBuffer } from './runtime-engine.js';
3
- import type { RuntimeStackLayer, RuntimeViewStack } from './runtime-engine.js';
2
+ import { type RuntimeCommandBuffer, RuntimeStackLayer, RuntimeViewStack } from './runtime-engine.js';
4
3
  declare const RUNTIME_VIEW_BINDING_SOURCE_BRAND: unique symbol;
5
4
  declare const RUNTIME_COMMAND_INTENT_EMISSION_BRAND: unique symbol;
6
5
  declare const RUNTIME_COMMAND_INTENT_ROUTE_BRAND: unique symbol;
@@ -46,7 +45,7 @@ export interface DispatchRuntimeCommandIntentResult<Command> {
46
45
  readonly buffer: RuntimeCommandBuffer<Command>;
47
46
  }
48
47
  export declare function runtimeViewBindingSource(input: RuntimeViewBindingSourceInput): RuntimeViewBindingSource;
49
- export declare function runtimeCommandIntentEmission(intent: CommandIntent): RuntimeCommandIntentEmission<undefined>;
48
+ export declare function runtimeCommandIntentEmission(intent: CommandIntent): RuntimeCommandIntentEmission;
50
49
  export declare function runtimeCommandIntentEmission<Payload>(intent: CommandIntent<Payload>, payload: Payload, options?: RuntimeCommandIntentEmissionOptions): RuntimeCommandIntentEmission<Payload>;
51
50
  export declare function isRuntimeCommandIntentEmission(value: unknown): value is RuntimeCommandIntentEmission;
52
51
  export declare function runtimeCommandIntentRoute<Payload, Command>(input: RuntimeCommandIntentRouteInput<Payload, Command>): RuntimeCommandIntentRoute<Payload, Command>;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-binding.d.ts","sourceRoot":"","sources":["../src/runtime-binding.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime-binding.d.ts","sourceRoot":"","sources":["../src/runtime-binding.ts"],"names":[],"mappings":"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"}
@@ -11,12 +11,13 @@ export function runtimeViewBindingSource(input) {
11
11
  if (!isViewDataContract(input.contract)) {
12
12
  throw new Error('runtime binding source: contract was not created by defineViewData()');
13
13
  }
14
+ const providerIds = freezeProviderAssignments(input.providerIds);
14
15
  const source = {
15
16
  owner: input.owner,
16
17
  contract: input.contract,
17
- providerIds: freezeProviderAssignments(input.providerIds),
18
+ ...(providerIds === undefined ? {} : { providerIds }),
18
19
  };
19
- Object.defineProperty(source, RUNTIME_VIEW_BINDING_SOURCE_BRAND, { value: true });
20
+ brand(source, RUNTIME_VIEW_BINDING_SOURCE_BRAND);
20
21
  return Object.freeze(source);
21
22
  }
22
23
  export function runtimeCommandIntentEmission(intent, payload, options = {}) {
@@ -24,22 +25,20 @@ export function runtimeCommandIntentEmission(intent, payload, options = {}) {
24
25
  if (!isCommandIntent(intent)) {
25
26
  throw new Error('runtime command intent emission: intent was not created by commandIntent()');
26
27
  }
27
- if (options.owner !== undefined && !isBindingLifecycleOwner(options.owner)) {
28
+ const owner = options['owner'];
29
+ if (owner !== undefined && !isBindingLifecycleOwner(owner)) {
28
30
  throw new Error('runtime command intent emission: owner was not created by defineBindingLifecycleOwner()');
29
31
  }
30
32
  const emission = {
31
33
  intent,
32
34
  payload: freezeRuntimePayload(payload),
33
- owner: options.owner,
35
+ owner,
34
36
  };
35
- Object.defineProperty(emission, RUNTIME_COMMAND_INTENT_EMISSION_BRAND, { value: true });
37
+ brand(emission, RUNTIME_COMMAND_INTENT_EMISSION_BRAND);
36
38
  return Object.freeze(emission);
37
39
  }
38
40
  export function isRuntimeCommandIntentEmission(value) {
39
- return Boolean(value
40
- && typeof value === 'object'
41
- && Object.prototype.hasOwnProperty.call(value, RUNTIME_COMMAND_INTENT_EMISSION_BRAND)
42
- && value[RUNTIME_COMMAND_INTENT_EMISSION_BRAND] === true);
41
+ return hasOwnBrand(value, RUNTIME_COMMAND_INTENT_EMISSION_BRAND);
43
42
  }
44
43
  export function runtimeCommandIntentRoute(input) {
45
44
  assertObjectRecord(input, 'runtime command intent route');
@@ -53,31 +52,31 @@ export function runtimeCommandIntentRoute(input) {
53
52
  intent: input.intent,
54
53
  toCommand: input.toCommand,
55
54
  };
56
- Object.defineProperty(route, RUNTIME_COMMAND_INTENT_ROUTE_BRAND, { value: true });
55
+ brand(route, RUNTIME_COMMAND_INTENT_ROUTE_BRAND);
57
56
  return Object.freeze(route);
58
57
  }
59
58
  export function isRuntimeCommandIntentRoute(value) {
60
- return Boolean(value
61
- && typeof value === 'object'
62
- && Object.prototype.hasOwnProperty.call(value, RUNTIME_COMMAND_INTENT_ROUTE_BRAND)
63
- && value[RUNTIME_COMMAND_INTENT_ROUTE_BRAND] === true);
59
+ return hasOwnBrand(value, RUNTIME_COMMAND_INTENT_ROUTE_BRAND);
64
60
  }
65
61
  export function dispatchRuntimeCommandIntent(input) {
66
62
  assertObjectRecord(input, 'runtime command intent dispatch');
67
63
  if (!isRuntimeCommandIntentEmission(input.emission)) {
68
64
  throw new Error('runtime command intent dispatch: emission was not created by runtimeCommandIntentEmission()');
69
65
  }
70
- if (!Array.isArray(input.routes)) {
66
+ if (!isRuntimeCommandIntentRouteList(input.routes)) {
71
67
  throw new Error('runtime command intent dispatch: routes must be an array');
72
68
  }
73
69
  if (!isRuntimeCommandBuffer(input.buffer)) {
74
70
  throw new Error('runtime command intent dispatch: buffer must be a RuntimeCommandBuffer');
75
71
  }
76
- const route = input.routes.find((candidate, index) => {
77
- if (!isRuntimeCommandIntentRoute(candidate)) {
78
- throw new Error(`runtime command intent dispatch: route at index ${index} was not created by runtimeCommandIntentRoute()`);
72
+ let route;
73
+ input.routes.forEach((candidate, index) => {
74
+ if (!hasOwnBrand(candidate, RUNTIME_COMMAND_INTENT_ROUTE_BRAND)) {
75
+ throw new Error(`runtime command intent dispatch: route at index ${String(index)} was not created by runtimeCommandIntentRoute()`);
76
+ }
77
+ if (route === undefined && candidate.intent.id === input.emission.intent.id) {
78
+ route = candidate;
79
79
  }
80
- return candidate.intent.id === input.emission.intent.id;
81
80
  });
82
81
  if (route === undefined) {
83
82
  throw new Error(`runtime command intent dispatch: no route for intent ${input.emission.intent.id}`);
@@ -89,10 +88,7 @@ export function dispatchRuntimeCommandIntent(input) {
89
88
  });
90
89
  }
91
90
  export function isRuntimeViewBindingSource(value) {
92
- return Boolean(value
93
- && typeof value === 'object'
94
- && Object.prototype.hasOwnProperty.call(value, RUNTIME_VIEW_BINDING_SOURCE_BRAND)
95
- && value[RUNTIME_VIEW_BINDING_SOURCE_BRAND] === true);
91
+ return hasOwnBrand(value, RUNTIME_VIEW_BINDING_SOURCE_BRAND);
96
92
  }
97
93
  export function runtimeActiveBindingLayers(stack) {
98
94
  if (!isRuntimeViewStack(stack)) {
@@ -119,7 +115,7 @@ export function collectRuntimeViewBindings(stack) {
119
115
  }
120
116
  return bindingSources.map((source, index) => {
121
117
  if (!isRuntimeViewBindingSource(source)) {
122
- throw new Error(`runtime binding collection: source at layer ${layer.id} index ${index} `
118
+ throw new Error(`runtime binding collection: source at layer ${layer.id} index ${String(index)} `
123
119
  + 'was not created by runtimeViewBindingSource()');
124
120
  }
125
121
  return {
@@ -134,13 +130,23 @@ export function collectRuntimeViewBindings(stack) {
134
130
  function isRuntimeViewStack(value) {
135
131
  return Boolean(value
136
132
  && typeof value === 'object'
137
- && Array.isArray(value.layers));
133
+ && Array.isArray(Reflect.get(value, 'layers')));
138
134
  }
139
135
  function isRuntimeCommandBuffer(value) {
140
136
  return Boolean(value
141
137
  && typeof value === 'object'
142
- && Array.isArray(value.items));
138
+ && Array.isArray(Reflect.get(value, 'items')));
139
+ }
140
+ function brand(value, brandSymbol) {
141
+ Object.defineProperty(value, brandSymbol, { value: true });
143
142
  }
143
+ function hasOwnBrand(value, brandSymbol) {
144
+ return (value !== null
145
+ && typeof value === 'object'
146
+ && Object.prototype.hasOwnProperty.call(value, brandSymbol)
147
+ && Reflect.get(value, brandSymbol) === true);
148
+ }
149
+ function isRuntimeCommandIntentRouteList(value) { return Array.isArray(value); }
144
150
  function freezeProviderAssignments(assignments) {
145
151
  if (assignments === undefined) {
146
152
  return undefined;
@@ -150,10 +156,10 @@ function freezeProviderAssignments(assignments) {
150
156
  }
151
157
  const seenRequirementIds = new Set();
152
158
  return Object.freeze(assignments.map((assignment, index) => {
153
- assertObjectRecord(assignment, 'runtime binding source', `provider assignment ${index}`);
159
+ assertObjectRecord(assignment, 'runtime binding source', `provider assignment ${String(index)}`);
154
160
  const requirementId = normalizeRequiredText({
155
161
  scope: 'runtime binding source',
156
- field: `provider assignment ${index} requirementId`,
162
+ field: `provider assignment ${String(index)} requirementId`,
157
163
  value: assignment['requirementId'],
158
164
  });
159
165
  if (seenRequirementIds.has(requirementId)) {
@@ -164,7 +170,7 @@ function freezeProviderAssignments(assignments) {
164
170
  requirementId,
165
171
  providerId: normalizeRequiredText({
166
172
  scope: 'runtime binding source',
167
- field: `provider assignment ${index} providerId`,
173
+ field: `provider assignment ${String(index)} providerId`,
168
174
  value: assignment['providerId'],
169
175
  }),
170
176
  });
@@ -198,13 +204,16 @@ function cloneRuntimePayload(value, path, seen = new WeakSet()) {
198
204
  }
199
205
  seen.add(objectValue);
200
206
  try {
201
- if (Array.isArray(value)) {
202
- return value.map((item, index) => cloneRuntimePayload(item, `${path}[${index}]`, seen));
207
+ if (isRuntimePayloadArray(value)) {
208
+ return value.map((item, index) => cloneRuntimePayload(item, `${path}[${String(index)}]`, seen));
203
209
  }
204
210
  if (!isPlainObject(value)) {
205
211
  throw new Error(`runtime command intent payload: unsupported ${objectKind(value)} at ${path}`);
206
212
  }
207
- const clone = Object.create(Object.getPrototypeOf(value));
213
+ const clone = {};
214
+ if (Reflect.getPrototypeOf(value) === null) {
215
+ Object.setPrototypeOf(clone, null);
216
+ }
208
217
  const descriptors = Object.getOwnPropertyDescriptors(value);
209
218
  for (const key of Reflect.ownKeys(descriptors)) {
210
219
  if (typeof key === 'symbol') {
@@ -233,13 +242,12 @@ function deepFreeze(value, seen = new WeakSet()) {
233
242
  if (value === null || typeof value !== 'object') {
234
243
  return value;
235
244
  }
236
- const objectValue = value;
237
- if (seen.has(objectValue)) {
245
+ if (seen.has(value)) {
238
246
  return value;
239
247
  }
240
- seen.add(objectValue);
241
- for (const key of Reflect.ownKeys(objectValue)) {
242
- const descriptor = Object.getOwnPropertyDescriptor(objectValue, key);
248
+ seen.add(value);
249
+ for (const key of Reflect.ownKeys(value)) {
250
+ const descriptor = Object.getOwnPropertyDescriptor(value, key);
243
251
  if (descriptor !== undefined && 'value' in descriptor) {
244
252
  deepFreeze(descriptor.value, seen);
245
253
  }
@@ -262,9 +270,12 @@ function normalizeRequiredText(options) {
262
270
  return normalized;
263
271
  }
264
272
  function isPlainObject(value) {
265
- const prototype = Object.getPrototypeOf(value);
273
+ const prototype = Reflect.getPrototypeOf(value);
266
274
  return prototype === Object.prototype || prototype === null;
267
275
  }
276
+ function isRuntimePayloadArray(value) {
277
+ return Array.isArray(value);
278
+ }
268
279
  function objectKind(value) {
269
280
  return Object.prototype.toString.call(value).slice(8, -1);
270
281
  }