@vibecook/ice 0.11.0 → 0.14.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 (381) hide show
  1. package/README.md +79 -50
  2. package/dist/chunk-BA7XJC27.js +2429 -0
  3. package/dist/chunk-BA7XJC27.js.map +1 -0
  4. package/dist/chunk-BKV4ZEU3.js +1 -0
  5. package/dist/chunk-BKV4ZEU3.js.map +1 -0
  6. package/dist/{chunk-VGVDJZSP.js → chunk-DYK6KNLG.js} +13206 -7387
  7. package/dist/chunk-DYK6KNLG.js.map +1 -0
  8. package/dist/chunk-ENIFIUEP.js +155 -0
  9. package/dist/chunk-ENIFIUEP.js.map +1 -0
  10. package/dist/chunk-IBWWLA6D.js +634 -0
  11. package/dist/chunk-IBWWLA6D.js.map +1 -0
  12. package/dist/{chunk-OR5FNVUE.js → chunk-JS6PG6YD.js} +398 -167
  13. package/dist/chunk-JS6PG6YD.js.map +1 -0
  14. package/dist/chunk-QXOCF56A.js +148 -0
  15. package/dist/chunk-QXOCF56A.js.map +1 -0
  16. package/dist/chunk-ZPUPBULB.js +7399 -0
  17. package/dist/chunk-ZPUPBULB.js.map +1 -0
  18. package/dist/desk-engine.js +36 -0
  19. package/dist/desk-engine.js.map +1 -0
  20. package/dist/desk-kit.js +244 -0
  21. package/dist/desk-kit.js.map +1 -0
  22. package/dist/desk-objects.js +12728 -0
  23. package/dist/desk-objects.js.map +1 -0
  24. package/dist/desk.js +469 -0
  25. package/dist/desk.js.map +1 -0
  26. package/dist/devtools.js +233 -189
  27. package/dist/devtools.js.map +1 -1
  28. package/dist/dom.js +7 -19
  29. package/dist/index.js +232 -20
  30. package/dist/kernel.js +53 -25
  31. package/dist/react.js +1045 -38
  32. package/dist/react.js.map +1 -1
  33. package/dist/types/packages/core/src/behavior/define-behavior.d.ts +11 -0
  34. package/dist/types/packages/core/src/behavior/runtime.d.ts +4 -0
  35. package/dist/types/packages/core/src/canvas/define-canvas-type.d.ts +86 -0
  36. package/dist/types/packages/core/src/canvas/define-container.d.ts +17 -0
  37. package/dist/types/packages/core/src/canvas/diagnostics.d.ts +27 -0
  38. package/dist/types/packages/core/src/canvas/engine-catalog.d.ts +70 -0
  39. package/dist/types/packages/core/src/canvas/extensions.d.ts +125 -0
  40. package/dist/types/packages/core/src/canvas/frame-behavior-host.d.ts +16 -0
  41. package/dist/types/packages/core/src/canvas/frame-preview.d.ts +79 -0
  42. package/dist/types/packages/core/src/canvas/frame-projection.d.ts +38 -0
  43. package/dist/types/packages/core/src/canvas/frame-view.d.ts +36 -0
  44. package/dist/types/packages/core/src/canvas/migrate.d.ts +14 -0
  45. package/dist/types/packages/core/src/canvas/placement.d.ts +30 -0
  46. package/dist/types/packages/core/src/canvas/presentation-transition.d.ts +100 -0
  47. package/dist/types/packages/core/src/canvas/runtime-extension-host.d.ts +16 -0
  48. package/dist/types/packages/core/src/canvas/session.d.ts +47 -0
  49. package/dist/types/packages/core/src/catalog/camera-derived.d.ts +16 -27
  50. package/dist/types/packages/core/src/catalog/desk.d.ts +326 -0
  51. package/dist/types/packages/core/src/catalog/gesture.d.ts +51 -0
  52. package/dist/types/packages/core/src/catalog/graph.d.ts +2 -2
  53. package/dist/types/packages/core/src/catalog/index.d.ts +2 -0
  54. package/dist/types/packages/core/src/catalog/pointer.d.ts +42 -0
  55. package/dist/types/packages/core/src/catalog/selection-presence.d.ts +7 -0
  56. package/dist/types/packages/core/src/catalog/settings-resources.d.ts +28 -2
  57. package/dist/types/packages/core/src/catalog/surface.d.ts +1 -0
  58. package/dist/types/packages/core/src/doc/doc-commit-sink.d.ts +18 -2
  59. package/dist/types/packages/core/src/doc/doc-kit.d.ts +21 -2
  60. package/dist/types/packages/core/src/doc/envelope.d.ts +5 -2
  61. package/dist/types/packages/core/src/doc/schema-migrate.d.ts +1 -1
  62. package/dist/types/packages/core/src/doc/version-gate.d.ts +21 -3
  63. package/dist/types/packages/core/src/engine/commit-sink.d.ts +10 -1
  64. package/dist/types/packages/core/src/engine/engine.d.ts +6 -0
  65. package/dist/types/packages/core/src/engine/frame-control.d.ts +74 -0
  66. package/dist/types/packages/core/src/engine/guests.d.ts +4 -1
  67. package/dist/types/packages/core/src/engine/world-doors.d.ts +12 -0
  68. package/dist/types/packages/core/src/facade/create-canvas-engine.d.ts +146 -13
  69. package/dist/types/packages/core/src/index.d.ts +33 -12
  70. package/dist/types/packages/core/src/input/queue.d.ts +3 -1
  71. package/dist/types/packages/core/src/interaction/install.d.ts +30 -0
  72. package/dist/types/packages/core/src/interaction/wakes.d.ts +24 -0
  73. package/dist/types/packages/core/src/nav/nav-geometry.d.ts +100 -0
  74. package/dist/types/packages/core/src/nav/nested-canvas.d.ts +47 -4
  75. package/dist/types/packages/core/src/ops/cascade.d.ts +2 -1
  76. package/dist/types/packages/core/src/ops/claims.d.ts +6 -0
  77. package/dist/types/packages/core/src/ops/insert.d.ts +4 -0
  78. package/dist/types/packages/core/src/ops/point-pick.d.ts +4 -1
  79. package/dist/types/packages/core/src/ops/sibling-order.d.ts +14 -4
  80. package/dist/types/packages/core/src/ops/tray.d.ts +48 -0
  81. package/dist/types/packages/core/src/presence/presence-kit.d.ts +5 -0
  82. package/dist/types/packages/core/src/schema/meta.d.ts +10 -0
  83. package/dist/types/packages/core/src/schema/prefab.d.ts +8 -0
  84. package/dist/types/packages/core/src/settings/defaults.d.ts +25 -6
  85. package/dist/types/packages/core/src/surface/gpu-device.d.ts +55 -0
  86. package/dist/types/packages/core/src/systems/camera-sim.d.ts +29 -0
  87. package/dist/types/packages/core/src/systems/chrome.d.ts +15 -23
  88. package/dist/types/packages/core/src/systems/drag-mods.d.ts +34 -0
  89. package/dist/types/packages/core/src/systems/held.d.ts +71 -0
  90. package/dist/types/packages/core/src/systems/insert-ghost.d.ts +2 -0
  91. package/dist/types/packages/core/src/systems/l0-input.d.ts +14 -0
  92. package/dist/types/packages/core/src/systems/l1-pick.d.ts +37 -1
  93. package/dist/types/packages/core/src/systems/l2-arbitrate.d.ts +18 -4
  94. package/dist/types/packages/core/src/systems/l3-behave.d.ts +4 -1
  95. package/dist/types/packages/core/src/systems/l3-claim.d.ts +7 -0
  96. package/dist/types/packages/core/src/systems/l3-connect.d.ts +1 -1
  97. package/dist/types/packages/core/src/systems/l3-drop.d.ts +30 -1
  98. package/dist/types/packages/core/src/systems/l3-marquee.d.ts +2 -1
  99. package/dist/types/packages/core/src/systems/l3-ports.d.ts +1 -1
  100. package/dist/types/packages/core/src/systems/l4-cursor.d.ts +5 -0
  101. package/dist/types/packages/core/src/systems/nav-flight.d.ts +85 -3
  102. package/dist/types/packages/core/src/systems/nav-tap.d.ts +44 -0
  103. package/dist/types/packages/core/src/systems/press-wheel.d.ts +11 -0
  104. package/dist/types/packages/core/src/systems/tray.d.ts +108 -0
  105. package/dist/types/packages/core/src/systems/zoom-through.d.ts +30 -0
  106. package/dist/types/packages/core/src/tools/define-tool.d.ts +10 -0
  107. package/dist/types/packages/core/src/widget/define-widget.d.ts +166 -63
  108. package/dist/types/packages/core/src/widget/equip.d.ts +14 -2
  109. package/dist/types/packages/core/src/widget/held-tools.d.ts +83 -0
  110. package/dist/types/packages/core/src/widget/menu-actions.d.ts +44 -0
  111. package/dist/types/packages/core/src/widget/mount-store.d.ts +21 -46
  112. package/dist/types/packages/core/src/widget/spawn.d.ts +1 -1
  113. package/dist/types/packages/desk/src/assets/blue-noise.gen.d.ts +10 -0
  114. package/dist/types/packages/desk/src/card/card.d.ts +103 -0
  115. package/dist/types/packages/desk/src/compose/ambient.d.ts +59 -0
  116. package/dist/types/packages/desk/src/compose/builder.d.ts +285 -0
  117. package/dist/types/packages/desk/src/compose/children.d.ts +3 -0
  118. package/dist/types/packages/desk/src/compose/index.d.ts +14 -0
  119. package/dist/types/packages/desk/src/compose/marks.d.ts +126 -0
  120. package/dist/types/packages/desk/src/compose/pick.d.ts +5 -0
  121. package/dist/types/packages/desk/src/compose/reflector.d.ts +111 -0
  122. package/dist/types/packages/desk/src/compose/tap.d.ts +5 -0
  123. package/dist/types/packages/desk/src/docs.d.ts +23 -0
  124. package/dist/types/packages/desk/src/engine/budget.d.ts +38 -0
  125. package/dist/types/packages/desk/src/engine/device.d.ts +54 -0
  126. package/dist/types/packages/desk/src/engine/index.d.ts +5 -0
  127. package/dist/types/packages/desk/src/engine/pipeline.d.ts +36 -0
  128. package/dist/types/packages/desk/src/engine/rasters.d.ts +66 -0
  129. package/dist/types/packages/desk/src/engine/records.d.ts +56 -0
  130. package/dist/types/packages/desk/src/engine/shader.d.ts +22 -0
  131. package/dist/types/packages/desk/src/engine/struct.d.ts +39 -0
  132. package/dist/types/packages/desk/src/engine/target.d.ts +26 -0
  133. package/dist/types/packages/desk/src/gpu-ablation.d.ts +61 -0
  134. package/dist/types/packages/desk/src/gpu-memory.d.ts +54 -0
  135. package/dist/types/packages/desk/src/gpu-profiler.d.ts +141 -0
  136. package/dist/types/packages/desk/src/gpu-wrap.d.ts +8 -0
  137. package/dist/types/packages/desk/src/ground.d.ts +388 -0
  138. package/dist/types/packages/desk/src/hold/focus.d.ts +53 -0
  139. package/dist/types/packages/desk/src/hold/pose.d.ts +132 -0
  140. package/dist/types/packages/desk/src/hold/shaders.d.ts +9 -0
  141. package/dist/types/packages/desk/src/host/editor.d.ts +18 -0
  142. package/dist/types/packages/desk/src/host/index.d.ts +9 -0
  143. package/dist/types/packages/desk/src/host/ink.d.ts +18 -0
  144. package/dist/types/packages/desk/src/host/layer.d.ts +430 -0
  145. package/dist/types/packages/desk/src/host/picture.d.ts +2 -0
  146. package/dist/types/packages/desk/src/host/surface.d.ts +5 -0
  147. package/dist/types/packages/desk/src/index.d.ts +13 -0
  148. package/dist/types/packages/desk/src/kind.d.ts +187 -0
  149. package/dist/types/packages/desk/src/kinds/world.d.ts +429 -0
  150. package/dist/types/packages/desk/src/kit/arrays.d.ts +88 -0
  151. package/dist/types/packages/desk/src/kit/blobs.d.ts +40 -0
  152. package/dist/types/packages/desk/src/kit/book.d.ts +2 -0
  153. package/dist/types/packages/desk/src/kit/editor.d.ts +103 -0
  154. package/dist/types/packages/desk/src/kit/eye.d.ts +37 -0
  155. package/dist/types/packages/desk/src/kit/hold.d.ts +1 -0
  156. package/dist/types/packages/desk/src/kit/index.d.ts +26 -0
  157. package/dist/types/packages/desk/src/kit/inside.d.ts +116 -0
  158. package/dist/types/packages/desk/src/kit/layer.d.ts +159 -0
  159. package/dist/types/packages/desk/src/kit/light.d.ts +3 -0
  160. package/dist/types/packages/desk/src/kit/mesh.d.ts +29 -0
  161. package/dist/types/packages/desk/src/kit/mips.d.ts +2 -0
  162. package/dist/types/packages/desk/src/kit/nav.d.ts +2 -0
  163. package/dist/types/packages/desk/src/kit/paper-tex.d.ts +5 -0
  164. package/dist/types/packages/desk/src/kit/physics.d.ts +44 -0
  165. package/dist/types/packages/desk/src/kit/place.d.ts +44 -0
  166. package/dist/types/packages/desk/src/kit/print.d.ts +30 -0
  167. package/dist/types/packages/desk/src/kit/raster.d.ts +34 -0
  168. package/dist/types/packages/desk/src/kit/sdf.d.ts +1 -0
  169. package/dist/types/packages/desk/src/kit/seeds.d.ts +11 -0
  170. package/dist/types/packages/desk/src/kit/services.d.ts +34 -0
  171. package/dist/types/packages/desk/src/kit/springs.d.ts +12 -0
  172. package/dist/types/packages/desk/src/kit/strokes.d.ts +93 -0
  173. package/dist/types/packages/desk/src/kit/text.d.ts +142 -0
  174. package/dist/types/packages/desk/src/kit/uniform.d.ts +8 -0
  175. package/dist/types/packages/desk/src/kit/view.d.ts +39 -0
  176. package/dist/types/packages/desk/src/kit/wgsl.d.ts +15 -0
  177. package/dist/types/packages/desk/src/lattice/line.d.ts +15 -0
  178. package/dist/types/packages/desk/src/lattice/lod.d.ts +52 -0
  179. package/dist/types/packages/desk/src/lattice/ruler.d.ts +88 -0
  180. package/dist/types/packages/desk/src/marks/assemble.d.ts +65 -0
  181. package/dist/types/packages/desk/src/marks/ease.d.ts +4 -0
  182. package/dist/types/packages/desk/src/marks/laser.d.ts +41 -0
  183. package/dist/types/packages/desk/src/marks/layout.d.ts +167 -0
  184. package/dist/types/packages/desk/src/marks/pass.d.ts +59 -0
  185. package/dist/types/packages/desk/src/marks/shaders.d.ts +12 -0
  186. package/dist/types/packages/desk/src/mat/grid.d.ts +50 -0
  187. package/dist/types/packages/desk/src/mat/lamp.d.ts +14 -0
  188. package/dist/types/packages/desk/src/mat/layout.d.ts +144 -0
  189. package/dist/types/packages/desk/src/mat/mat-pass.d.ts +83 -0
  190. package/dist/types/packages/desk/src/mat/night.d.ts +95 -0
  191. package/dist/types/packages/desk/src/mat/projector.d.ts +39 -0
  192. package/dist/types/packages/desk/src/mat/shaders.d.ts +17 -0
  193. package/dist/types/packages/desk/src/mat/tilt.d.ts +14 -0
  194. package/dist/types/packages/desk/src/nav/flight.d.ts +186 -0
  195. package/dist/types/packages/desk/src/nav/portal.d.ts +95 -0
  196. package/dist/types/packages/desk/src/object.d.ts +46 -0
  197. package/dist/types/packages/desk/src/pass-instrument.d.ts +89 -0
  198. package/dist/types/packages/desk/src/shaders.d.ts +12 -0
  199. package/dist/types/packages/desk/src/shaders.gen.d.ts +16 -0
  200. package/dist/types/packages/desk/src/submit-instrument.d.ts +36 -0
  201. package/dist/types/packages/desk/src/theme.d.ts +475 -0
  202. package/dist/types/packages/desk/src/tray/carry.d.ts +99 -0
  203. package/dist/types/packages/desk/src/tray/drawer.d.ts +113 -0
  204. package/dist/types/packages/desk/src/tray/flux.d.ts +46 -0
  205. package/dist/types/packages/desk/src/tray/index.d.ts +4 -0
  206. package/dist/types/packages/desk/src/tray/lattice.d.ts +71 -0
  207. package/dist/types/packages/desk/src/tray/layout.d.ts +7 -0
  208. package/dist/types/packages/desk/src/tray/look.d.ts +29 -0
  209. package/dist/types/packages/desk/src/tray/pass.d.ts +96 -0
  210. package/dist/types/packages/desk/src/tray/shaders.d.ts +10 -0
  211. package/dist/types/packages/desk/src/tray/specimens.d.ts +199 -0
  212. package/dist/types/packages/devtools/src/attach.d.ts +22 -8
  213. package/dist/types/packages/devtools/src/dock.d.ts +18 -14
  214. package/dist/types/packages/devtools/src/gpu-panel.d.ts +105 -0
  215. package/dist/types/packages/devtools/src/index.d.ts +5 -4
  216. package/dist/types/packages/dom/src/desk-host.d.ts +91 -0
  217. package/dist/types/packages/dom/src/host.d.ts +13 -14
  218. package/dist/types/packages/dom/src/index.d.ts +12 -10
  219. package/dist/types/packages/dom/src/loop.d.ts +18 -1
  220. package/dist/types/packages/dom/src/pointer-adapter.d.ts +5 -29
  221. package/dist/types/packages/dom/src/widget-focus.d.ts +17 -13
  222. package/dist/types/packages/ice/src/desk-engine.d.ts +2 -0
  223. package/dist/types/packages/ice/src/desk-kit.d.ts +6 -0
  224. package/dist/types/packages/ice/src/desk-objects.d.ts +5 -0
  225. package/dist/types/packages/ice/src/desk.d.ts +5 -0
  226. package/dist/types/packages/kernel/src/atlas-pack.d.ts +157 -0
  227. package/dist/types/packages/kernel/src/bezier.d.ts +0 -15
  228. package/dist/types/packages/kernel/src/coords.d.ts +0 -39
  229. package/dist/types/packages/kernel/src/index.d.ts +2 -2
  230. package/dist/types/packages/kernel/src/nav-flight.d.ts +6 -0
  231. package/dist/types/packages/kernel/src/tray.d.ts +155 -0
  232. package/dist/types/packages/objects/src/board/board-pass.d.ts +180 -0
  233. package/dist/types/packages/objects/src/board/board-pen.d.ts +36 -0
  234. package/dist/types/packages/objects/src/board/board.d.ts +104 -0
  235. package/dist/types/packages/objects/src/board/data.d.ts +31 -0
  236. package/dist/types/packages/objects/src/board/history.d.ts +33 -0
  237. package/dist/types/packages/objects/src/board/kind.d.ts +208 -0
  238. package/dist/types/packages/objects/src/board/layout.d.ts +102 -0
  239. package/dist/types/packages/objects/src/board/object.d.ts +7 -0
  240. package/dist/types/packages/objects/src/board/pen.d.ts +71 -0
  241. package/dist/types/packages/objects/src/board/shaders.d.ts +36 -0
  242. package/dist/types/packages/objects/src/board/stroke.d.ts +99 -0
  243. package/dist/types/packages/objects/src/board/theme.d.ts +150 -0
  244. package/dist/types/packages/objects/src/calendar/data.d.ts +97 -0
  245. package/dist/types/packages/objects/src/calendar/events.d.ts +58 -0
  246. package/dist/types/packages/objects/src/calendar/hand.d.ts +53 -0
  247. package/dist/types/packages/objects/src/calendar/host/input.d.ts +67 -0
  248. package/dist/types/packages/objects/src/calendar/host/print.d.ts +9 -0
  249. package/dist/types/packages/objects/src/calendar/kind.d.ts +297 -0
  250. package/dist/types/packages/objects/src/calendar/law.d.ts +151 -0
  251. package/dist/types/packages/objects/src/calendar/layout.d.ts +47 -0
  252. package/dist/types/packages/objects/src/calendar/month.d.ts +75 -0
  253. package/dist/types/packages/objects/src/calendar/object.d.ts +45 -0
  254. package/dist/types/packages/objects/src/calendar/pad.d.ts +42 -0
  255. package/dist/types/packages/objects/src/calendar/pass.d.ts +229 -0
  256. package/dist/types/packages/objects/src/calendar/print.d.ts +87 -0
  257. package/dist/types/packages/objects/src/calendar/printing.d.ts +80 -0
  258. package/dist/types/packages/objects/src/calendar/roll.d.ts +45 -0
  259. package/dist/types/packages/objects/src/calendar/shaders.d.ts +12 -0
  260. package/dist/types/packages/objects/src/calendar/sheet.d.ts +43 -0
  261. package/dist/types/packages/objects/src/calendar/tiles.d.ts +67 -0
  262. package/dist/types/packages/objects/src/calendar/turn.d.ts +73 -0
  263. package/dist/types/packages/objects/src/calendar/writing.d.ts +42 -0
  264. package/dist/types/packages/objects/src/index.d.ts +22 -0
  265. package/dist/types/packages/objects/src/kinds.d.ts +24 -0
  266. package/dist/types/packages/objects/src/minimat/inside.d.ts +17 -0
  267. package/dist/types/packages/objects/src/minimat/kind.d.ts +51 -0
  268. package/dist/types/packages/objects/src/minimat/layout.d.ts +83 -0
  269. package/dist/types/packages/objects/src/minimat/minimat.d.ts +179 -0
  270. package/dist/types/packages/objects/src/minimat/object.d.ts +8 -0
  271. package/dist/types/packages/objects/src/minimat/pass.d.ts +61 -0
  272. package/dist/types/packages/objects/src/minimat/shaders.d.ts +10 -0
  273. package/dist/types/packages/objects/src/minimat/theme.d.ts +98 -0
  274. package/dist/types/packages/objects/src/notebook/ink.d.ts +70 -0
  275. package/dist/types/packages/objects/src/notebook/kind.d.ts +236 -0
  276. package/dist/types/packages/objects/src/notebook/law.d.ts +129 -0
  277. package/dist/types/packages/objects/src/notebook/layout.d.ts +46 -0
  278. package/dist/types/packages/objects/src/notebook/leaf.d.ts +44 -0
  279. package/dist/types/packages/objects/src/notebook/mesh.d.ts +20 -0
  280. package/dist/types/packages/objects/src/notebook/motion.d.ts +107 -0
  281. package/dist/types/packages/objects/src/notebook/object.d.ts +8 -0
  282. package/dist/types/packages/objects/src/notebook/pages.d.ts +56 -0
  283. package/dist/types/packages/objects/src/notebook/pass.d.ts +197 -0
  284. package/dist/types/packages/objects/src/notebook/pick.d.ts +30 -0
  285. package/dist/types/packages/objects/src/notebook/raster.d.ts +28 -0
  286. package/dist/types/packages/objects/src/notebook/shaders.d.ts +11 -0
  287. package/dist/types/packages/objects/src/notebook/shape.d.ts +155 -0
  288. package/dist/types/packages/objects/src/notebook/theme.d.ts +76 -0
  289. package/dist/types/packages/objects/src/palette.d.ts +577 -0
  290. package/dist/types/packages/objects/src/paper/host/body.d.ts +30 -0
  291. package/dist/types/packages/objects/src/paper/kind.d.ts +81 -0
  292. package/dist/types/packages/objects/src/paper/layout.d.ts +73 -0
  293. package/dist/types/packages/objects/src/paper/object.d.ts +31 -0
  294. package/dist/types/packages/objects/src/paper/pages.d.ts +43 -0
  295. package/dist/types/packages/objects/src/paper/paper-pass.d.ts +86 -0
  296. package/dist/types/packages/objects/src/paper/paper.d.ts +117 -0
  297. package/dist/types/packages/objects/src/paper/shaders.d.ts +18 -0
  298. package/dist/types/packages/objects/src/paper/theme.d.ts +58 -0
  299. package/dist/types/packages/objects/src/paper/typing.d.ts +51 -0
  300. package/dist/types/packages/objects/src/paper/writing.d.ts +161 -0
  301. package/dist/types/packages/objects/src/photo/carry.d.ts +33 -0
  302. package/dist/types/packages/objects/src/photo/kind.d.ts +136 -0
  303. package/dist/types/packages/objects/src/photo/layout.d.ts +39 -0
  304. package/dist/types/packages/objects/src/photo/object.d.ts +5 -0
  305. package/dist/types/packages/objects/src/photo/photo-pass.d.ts +104 -0
  306. package/dist/types/packages/objects/src/photo/photo.d.ts +262 -0
  307. package/dist/types/packages/objects/src/photo/pictures.d.ts +152 -0
  308. package/dist/types/packages/objects/src/photo/sample.d.ts +9 -0
  309. package/dist/types/packages/objects/src/photo/shaders.d.ts +18 -0
  310. package/dist/types/packages/objects/src/preset.d.ts +44 -0
  311. package/dist/types/packages/objects/src/shaders.d.ts +3 -0
  312. package/dist/types/packages/objects/src/shaders.gen.d.ts +21 -0
  313. package/dist/types/packages/react/src/canvas-hooks.d.ts +12 -0
  314. package/dist/types/packages/react/src/desk.d.ts +56 -0
  315. package/dist/types/packages/react/src/engine-context.d.ts +2 -2
  316. package/dist/types/packages/react/src/frame-preview-boundary.d.ts +19 -0
  317. package/dist/types/packages/react/src/hooks.d.ts +9 -14
  318. package/dist/types/packages/react/src/index.d.ts +16 -9
  319. package/dist/types/packages/react/src/keymap.d.ts +21 -2
  320. package/dist/types/packages/react/src/selection-menu.d.ts +171 -0
  321. package/dist/types/packages/react/src/tray-bar.d.ts +124 -0
  322. package/package.json +64 -31
  323. package/dist/chunk-2TNVB2ON.js +0 -1163
  324. package/dist/chunk-2TNVB2ON.js.map +0 -1
  325. package/dist/chunk-OR5FNVUE.js.map +0 -1
  326. package/dist/chunk-Q665T4L7.js +0 -681
  327. package/dist/chunk-Q665T4L7.js.map +0 -1
  328. package/dist/chunk-VGVDJZSP.js.map +0 -1
  329. package/dist/ground.js +0 -1108
  330. package/dist/ground.js.map +0 -1
  331. package/dist/r3f.js +0 -1644
  332. package/dist/r3f.js.map +0 -1
  333. package/dist/types/packages/core/src/input/measure-queue.d.ts +0 -30
  334. package/dist/types/packages/core/src/settings/ground-config.d.ts +0 -101
  335. package/dist/types/packages/core/src/systems/measure-ingest.d.ts +0 -26
  336. package/dist/types/packages/devtools/src/gl-panel.d.ts +0 -69
  337. package/dist/types/packages/dom/src/measure-adapter.d.ts +0 -31
  338. package/dist/types/packages/dom/src/measure-wiring.d.ts +0 -49
  339. package/dist/types/packages/dom/src/planes.d.ts +0 -33
  340. package/dist/types/packages/dom/src/reflectors/chrome.d.ts +0 -33
  341. package/dist/types/packages/dom/src/reflectors/dom-widgets.d.ts +0 -59
  342. package/dist/types/packages/dom/src/reflectors/graybox.d.ts +0 -31
  343. package/dist/types/packages/dom/src/reflectors/plane-transform.d.ts +0 -38
  344. package/dist/types/packages/ground/src/index.d.ts +0 -69
  345. package/dist/types/packages/ground/src/layer.d.ts +0 -40
  346. package/dist/types/packages/ground/src/pass.d.ts +0 -41
  347. package/dist/types/packages/ground/src/passes/grid-contract.d.ts +0 -28
  348. package/dist/types/packages/ground/src/passes/grid-magnet-pass.d.ts +0 -2
  349. package/dist/types/packages/ground/src/passes/grid-magnet.d.ts +0 -31
  350. package/dist/types/packages/ground/src/passes/grid.d.ts +0 -10
  351. package/dist/types/packages/ground/src/passes/guides-collect.d.ts +0 -14
  352. package/dist/types/packages/ground/src/passes/guides.d.ts +0 -3
  353. package/dist/types/packages/ground/src/passes/magnet-collect.d.ts +0 -63
  354. package/dist/types/packages/ground/src/passes/soup-collect.d.ts +0 -35
  355. package/dist/types/packages/ground/src/passes/soup-mesh.d.ts +0 -8
  356. package/dist/types/packages/ground/src/passes/wires-collect.d.ts +0 -35
  357. package/dist/types/packages/ground/src/passes/wires.d.ts +0 -10
  358. package/dist/types/packages/ground/src/poles.d.ts +0 -47
  359. package/dist/types/packages/ground/src/renderer.d.ts +0 -15
  360. package/dist/types/packages/ice/src/ground.d.ts +0 -1
  361. package/dist/types/packages/ice/src/r3f.d.ts +0 -1
  362. package/dist/types/packages/kernel/src/eviction.d.ts +0 -23
  363. package/dist/types/packages/kernel/src/zoom-bands.d.ts +0 -19
  364. package/dist/types/packages/r3f/src/bridge.d.ts +0 -129
  365. package/dist/types/packages/r3f/src/composite-material.d.ts +0 -26
  366. package/dist/types/packages/r3f/src/compositor-pass.d.ts +0 -105
  367. package/dist/types/packages/r3f/src/dev-write-trap.d.ts +0 -30
  368. package/dist/types/packages/r3f/src/gl-root.d.ts +0 -96
  369. package/dist/types/packages/r3f/src/gl-router.d.ts +0 -70
  370. package/dist/types/packages/r3f/src/index.d.ts +0 -17
  371. package/dist/types/packages/r3f/src/island-state.d.ts +0 -112
  372. package/dist/types/packages/r3f/src/island.d.ts +0 -13
  373. package/dist/types/packages/r3f/src/pool.d.ts +0 -56
  374. package/dist/types/packages/r3f/src/preview-capture.d.ts +0 -19
  375. package/dist/types/packages/r3f/src/resource-registry.d.ts +0 -30
  376. package/dist/types/packages/r3f/src/self-sustain.d.ts +0 -39
  377. package/dist/types/packages/r3f/src/use-island-frame.d.ts +0 -39
  378. package/dist/types/packages/react/src/infinite-canvas.d.ts +0 -140
  379. package/dist/types/packages/react/src/preview-snapshots.d.ts +0 -17
  380. package/dist/types/packages/react/src/widget-preview.d.ts +0 -14
  381. package/dist/types/packages/react/src/widget-root.d.ts +0 -33
@@ -0,0 +1,113 @@
1
+ /** The drawer's numbers (design-017 §7). Lengths are CSS px; times ms. */
2
+ export declare const DRAWER: {
3
+ /** The pegboard's pitch — the research's unit on screen, chosen by eye for a UI board. */
4
+ readonly pitch: 40;
5
+ /** `min(1120 px, 100 % − 32 px)`, snapped DOWN to whole pitches (its sides a solid border — lattice.ts `PEG.border`, D-K3.1). */
6
+ readonly maxWidth: 1120;
7
+ readonly margin: 16;
8
+ /** ≈ 44 % of the view high, clamped. */
9
+ readonly heightFrac: 0.44;
10
+ readonly minHeight: 220;
11
+ readonly maxHeight: 640;
12
+ /**
13
+ * The top corners' radius — a hardboard panel's, about SKÅDIS's ¼ pitch (design-018 §2: widgetlab's 22 read as a card) — and the
14
+ * ARRIS: the board's edge, a quarter-round this wide where its face meets the outline, in the face's own material (the rim retired;
15
+ * D-R1.1 — the thinner end of design-018's 1.5–2: at 2 px the lit top edge read as a thin cream rim again).
16
+ */
17
+ readonly radius: 10;
18
+ readonly arris: 1.5;
19
+ /** The edge's inner shadow on the lamp's side (D-R1.2): black at this alpha just inside the edge, fading over this many px. */
20
+ readonly inner: {
21
+ readonly alpha: 0.18;
22
+ readonly width: 3;
23
+ };
24
+ /**
25
+ * The HEADER (design-018 R4 — James, 2026-09-28: "make the fade stronger and more gap, and design the filters nicely at that empty
26
+ * safe top space instead"): a CLEAR band this high under the face's top edge (inside the arris) where what hangs on the board — the
27
+ * specimens, their shadows, their accessories and their tags — and the holes are wholly gone: the plain face, on which the bar lays
28
+ * its category chips as label tape (`<TrayBar>`, @ice/react — the handle's `anchor().drawer.header`). The face's portal clip starts
29
+ * this far down, so nothing of the content is even drawn above it.
30
+ */
31
+ readonly header: 48;
32
+ /**
33
+ * The CONTENT's fade under the header (design-018 §4, R4): the specimens, their shadows, their accessories, their tags and the holes
34
+ * fade in over this band (CSS px, 0.8 pitch) — `smoothstep(top + header, top + header + fade, y)`, `top` the face's top edge — the
35
+ * feather on the face's portal clip (R1's 28 px band at the edge itself, stretched and moved down: D-R4.1). The board does not fade.
36
+ */
37
+ readonly fade: 32;
38
+ /** The slide: widgetlab rev 1's curve. */
39
+ readonly slideMs: 340;
40
+ readonly curve: readonly [0.32, 0.72, 0, 1];
41
+ /** Black over the desk at the full slide: widgetlab's 10 % by day, 40 % by night. */
42
+ readonly dim: {
43
+ readonly day: 0.1;
44
+ readonly night: 0.4;
45
+ };
46
+ /**
47
+ * The shadows on the desk: the ROOM's, round the whole outline (what shows above the drawer: it lies over the desk), and the LAMP's,
48
+ * pushed along its ground direction — each the outline's SDF blurred σ, at α.
49
+ */
50
+ readonly shadow: {
51
+ readonly room: {
52
+ readonly sigma: 14;
53
+ readonly alpha: 0.22;
54
+ };
55
+ readonly lamp: {
56
+ readonly sigma: 18;
57
+ readonly alpha: 0.18;
58
+ readonly push: 8;
59
+ };
60
+ };
61
+ /** The rubber band: its asymptote and stiffness (iOS's curve), how long the scroll input must be quiet before it lets go, the settle's spring. */
62
+ readonly band: {
63
+ readonly max: 72;
64
+ readonly c: 0.55;
65
+ readonly letGoMs: 120;
66
+ readonly hz: 8;
67
+ };
68
+ /** A specimen's hover lift spring (K5a). */
69
+ readonly hoverHz: 7;
70
+ /** A click's slop. */
71
+ readonly slop: 4;
72
+ };
73
+ /**
74
+ * How far the drawer's shadows reach past its outline (CSS px): three of the wider blur's σ and the lamp's push — tray.wgsl's `reach`,
75
+ * one law. Closed, the drawer rests this far below the view, so nothing of it — its shadows included — is on screen (design-018 §5).
76
+ */
77
+ export declare const SHADOW_REACH: number;
78
+ /** A rect on screen, CSS px: the drawer's outline box as drawn (its top-left, its width, its FULL height — the part below the view included). */
79
+ export interface DrawerRect {
80
+ readonly x: number;
81
+ readonly y: number;
82
+ readonly w: number;
83
+ readonly h: number;
84
+ }
85
+ /** The drawer's size in a view: whole pitches wide (≤ 1120, ≤ the view − 32), ≈ 44 % of the view high, clamped. */
86
+ export declare function drawerSize(vw: number, vh: number): {
87
+ readonly w: number;
88
+ readonly h: number;
89
+ };
90
+ /**
91
+ * The drawer as drawn at slide `p` (0 closed … 1 open): centred on whole CSS px — open, its bottom flush with the view; closed, wholly
92
+ * below it with its shadows' reach (design-018 §5: no lip — at p 0 nothing of the drawer is on screen, and nothing is drawn).
93
+ */
94
+ export declare function drawerRect(vw: number, vh: number, p: number): DrawerRect;
95
+ /**
96
+ * What of the board's CONTENT shows at screen `y` under a drawer drawn at `rect` (design-018 §4, R4) — the shaders' law on the CPU (the
97
+ * face's feather in `portal_cover`, `tray_board`'s holes, `tray_accessory`, the tags' draw): 0 above the face and in its header, the
98
+ * smoothstep over `fade` under it, 1 past it.
99
+ */
100
+ export declare function contentShown(rect: DrawerRect, y: number): number;
101
+ /** The slide's ease: widgetlab rev 1's `cubic-bezier(0.32,0.72,0,1)`, the exact curve CSS runs (the kernel's). */
102
+ export declare const slideEase: (t: number) => number;
103
+ /**
104
+ * The rubber band (design-017 §3): what a pull of `stretch` px past an end SHOWS — iOS's curve, `B·(1 − 1/(1 + |s|·c/B))`,
105
+ * signed: ever less per px pulled, never past `B`.
106
+ */
107
+ export declare function band(stretch: number): number;
108
+ /**
109
+ * How far the board scrolls before the band (design-017 §8; K5a — K3's 26-row stub retired): the laid content's foot (`TrayContent.bottom`,
110
+ * board px) plus a pitch, less the face the drawer shows (its whole height: the face runs to the outline — design-018 §2) — kernel
111
+ * `trayScrollMax`; 0 with nothing laid.
112
+ */
113
+ export declare function scrollRange(vw: number, vh: number, bottom: number): number;
@@ -0,0 +1,46 @@
1
+ import type { TrayScreenFrame } from "../../../core/src/index";
2
+ import type { TrayFrameInputs } from "./pass";
3
+ /** The facts the flux follows (core's `Tray` and `TrayContent`, as read). */
4
+ export interface TrayFacts {
5
+ readonly open: boolean;
6
+ readonly scroll: number;
7
+ readonly stretch: number;
8
+ /** K5a: the specimen under the mouse ("" none) — its hover lifts it. */
9
+ readonly hover?: string;
10
+ /** K5a: the laid content's foot (board px) — the scroll's range — and the lay count (the specimens moved when it does). */
11
+ readonly bottom?: number;
12
+ readonly laid?: number;
13
+ }
14
+ /** A still's pins (a rig's, the oracle's): the slide, the band's shown pull; `hidden` — no tray at all; `bare` — the board without its specimens (K5a). Absent keys follow the facts. */
15
+ export interface TrayPin {
16
+ readonly p?: number;
17
+ readonly band?: number;
18
+ readonly hidden?: boolean;
19
+ readonly bare?: boolean;
20
+ }
21
+ /** What the flux holds, for a rig: the facts it last read, the slide and when (frame clock, ms) its tween began (−1: not yet stepped), the shown band, the specimens' hover lifts by type (K5a), whether it moves. */
22
+ export interface TrayFluxState {
23
+ readonly facts: TrayFacts | null;
24
+ readonly p: number;
25
+ readonly since: number;
26
+ readonly band: number;
27
+ readonly hovers: Readonly<Record<string, number>>;
28
+ readonly live: boolean;
29
+ }
30
+ export interface TrayFlux {
31
+ /** Read the world's facts (undefined: no tray); true when they changed since the last read — a frame is due. */
32
+ read(facts: TrayFacts | undefined): boolean;
33
+ /** Step the motion to `now` (the frame's clock, ms) for a view `vw × vh` and return the frame's tray — undefined when hidden or absent. */
34
+ step(now: number, vw: number, vh: number): TrayFrameInputs | undefined;
35
+ /** Something still moves: the next frame paints too. */
36
+ live(): boolean;
37
+ /** The drawer as the last step laid it (the pose seam's answer). */
38
+ frame(): TrayScreenFrame | undefined;
39
+ /** A specimen's hover lift this frame, 0 … 1 (K5a). */
40
+ lift(type: string): number;
41
+ /** The pins in force (null: none). */
42
+ pinned(): TrayPin | null;
43
+ pin(pin: TrayPin | null): void;
44
+ state(): TrayFluxState;
45
+ }
46
+ export declare function createTrayFlux(): TrayFlux;
@@ -0,0 +1,4 @@
1
+ export { band, DRAWER, type DrawerRect, drawerRect, drawerSize, scrollRange, slideEase } from "./drawer";
2
+ export { carry, cellOf, holeCentre, holeSdf, PEG, type PegCell, type PegPoint, pointAt, punched } from "./lattice";
3
+ export type { TrayFacts, TrayFluxState, TrayPin } from "./flux";
4
+ export type { TrayLaid } from "./pass";
@@ -0,0 +1,71 @@
1
+ /** The board in pitches (the research's unit, ≈ 20 mm): SKÅDIS-style vertical stadium holes, odd rows shifted half a pitch. */
2
+ export declare const PEG: {
3
+ /** The stadium's radius and its straight half-length: a hole 0.26 × 0.66 of a pitch. */
4
+ readonly holeR: 0.13;
5
+ readonly holeHalf: 0.2;
6
+ /** The smooth-max fillet on the punched rims. */
7
+ readonly rimK: 0.018;
8
+ /**
9
+ * The hardboard's thickness, and its height off the mat: it LIES on it (design-018 §3 — the research's spacer and wall retired) —
10
+ * a 4 mm board on a hair of air, 0.13 pitch in all: the height the drawer's own lamp shadow is pushed by (8 px at the HOME lamp).
11
+ */
12
+ readonly thick: 0.1;
13
+ readonly gap: 0.03;
14
+ /** The phase (§6.1): holes at x = c + ¼ + ½·(r odd) from the drawer's left edge, rows at Y = r + ¾ below its top at scroll 0. */
15
+ readonly colPhase: 0.25;
16
+ readonly rowPhase: 0.75;
17
+ /**
18
+ * The solid BORDER along the sides (D-K3.1): a hole is punched only where its centre lies this far from both — as a manufactured
19
+ * board's is. (Across both parities the holes stand every ½ pitch, so no phase alone keeps them all clear of a sawn side.)
20
+ */
21
+ readonly border: 0.75;
22
+ };
23
+ /**
24
+ * The scroll's CARRY (§6.2): the shown scroll (CSS px, any size) split into whole ROWS — an integer the shader adds to its
25
+ * rows on screen in i32 — and the FRACTION of a row, the only part of the scroll that ever enters an f32.
26
+ */
27
+ export declare function carry(scroll: number, pitch: number): {
28
+ readonly rowBase: number;
29
+ readonly frac: number;
30
+ };
31
+ /** A board point as the shader forms it: `x` in pitches, `R` the whole row of Y (an integer), `fy` ∈ [0,1) the rest. */
32
+ export interface PegPoint {
33
+ readonly x: number;
34
+ readonly R: number;
35
+ readonly fy: number;
36
+ }
37
+ /** A point on screen, on the board: `y` CSS px below the drawer's top, under the carry — `R` = rowBase + ⌊ly⌋ in integers (the shader's `peg_point`). */
38
+ export declare function pointAt(xPitches: number, yPx: number, pitch: number, c: {
39
+ readonly rowBase: number;
40
+ readonly frac: number;
41
+ }): PegPoint;
42
+ /** The hole nearest a board point — its row (the nearest row: a hole's half-height, 0.33, is under half a pitch), its column, and the point's offset from its centre. */
43
+ export interface PegCell {
44
+ readonly row: number;
45
+ readonly col: number;
46
+ readonly odd: boolean;
47
+ readonly qx: number;
48
+ readonly qy: number;
49
+ }
50
+ /** The cell of a board point (the shader's `peg_hole`; half-up rounding throughout — WGSL's `round` ties to even, so neither side uses it). */
51
+ export declare function cellOf(p: PegPoint): PegCell;
52
+ /** Is the cell's hole punched on a board `width` pitches wide — its centre at least the border from both sides? (The shader's `peg_hole` answers the same.) */
53
+ export declare function punched(cell: PegCell, width: number): boolean;
54
+ /** The vertical stadium's signed distance at an offset from its centre, pitches: negative inside the hole. */
55
+ export declare function holeSdf(qx: number, qy: number): number;
56
+ /** The centre of hole (row, col), in board pitches (x from the left edge, Y from the top at scroll 0) — the stagger's law. */
57
+ export declare function holeCentre(row: number, col: number): {
58
+ readonly x: number;
59
+ readonly y: number;
60
+ };
61
+ /**
62
+ * The TURNED lattice's cell of a board point (tray.wgsl `peg_rot`, the face's tone and grain): lattice coordinates M·(x, Y)·num/den with
63
+ * M = [[a, −b], [b, a]] an integer rotation and scale. The carried row splits R = den·Q + r, so Q's share (−b·num·Q, a·num·Q) is an
64
+ * exact integer and only the small rest is a float — the shader's f32 (`Math.fround`) — at any depth.
65
+ */
66
+ export declare function rotCell(p: PegPoint, a: number, b: number, num: number, den: number): {
67
+ readonly u: number;
68
+ readonly v: number;
69
+ readonly fu: number;
70
+ readonly fv: number;
71
+ };
@@ -0,0 +1,7 @@
1
+ /** The tray's own block (tray.wgsl `t`). */
2
+ export declare const TrayUniforms: import("../engine").StructDef<"depth" | "view" | "shadow" | "lamp" | "fade" | "edge" | "face" | "accessory" | "rect" | "shape" | "rowBase" | "frac" | "fp" | "dim" | "hole" | "room" | "faceSrgb" | "cavity" | "keepFace" | "keepFine" | "keepEdge">;
3
+ /**
4
+ * One specimen's ACCESSORY (K5a — tray.wgsl `tray_accessory`): drawn with the board, one instance each, its quad the accessory and its
5
+ * shadow's reach. Screen CSS px throughout (the drawer's camera is zoom 1): the quad, the specimen's rect, up to four pegs' hole centres.
6
+ */
7
+ export declare const TrayAccessoryStruct: import("../engine").StructDef<"kind" | "rect" | "box" | "pegs0" | "pegs1">;
@@ -0,0 +1,29 @@
1
+ import { type RGB } from "../theme";
2
+ export declare const TRAY_LOOK: {
3
+ /** The tempered hardboard face — and the byte it is configured as (a flat, lit face is drawn at exactly this). */
4
+ readonly face: RGB;
5
+ readonly faceSrgb: RGB;
6
+ /** The paler, fuzzier punched edge: the face scaled by the research's edge/face ratio. */
7
+ readonly edge: RGB;
8
+ /** The room's light on the mat in a hole: at its edge, at its heart, over what width (pitches). */
9
+ readonly cavity: {
10
+ readonly edge: 0.9;
11
+ readonly heart: 1;
12
+ readonly width: 0.1;
13
+ };
14
+ /** The unit direction to the lamp in the board's frame (x right, y down, z toward the eye) — the research's HOME lamp, its y turned down. */
15
+ readonly lamp: readonly [number, number, number];
16
+ /** The lamp's angular radius, rad. */
17
+ readonly lampSize: 0.06;
18
+ /** K5a: the accessories' powder coat, linear; each accessory's standing-off (pitches); their shadows' strength. */
19
+ readonly accessory: RGB;
20
+ readonly accessoryHeight: {
21
+ readonly hook: 0.45;
22
+ readonly shelf: 0.6;
23
+ readonly clip: 0.3;
24
+ readonly rail: 0.4;
25
+ };
26
+ readonly accessoryShadow: 0.38;
27
+ /** K5a: a hovered specimen's lift — a share of its kind's hold. */
28
+ readonly hoverLift: 0.3;
29
+ };
@@ -0,0 +1,96 @@
1
+ import type { View } from "../lattice/lod";
2
+ import type { GridConfig } from "../mat/grid";
3
+ import { type MatFrame } from "../mat/layout";
4
+ import type { MatPass } from "../kit/view";
5
+ import type { GroundTheme } from "../theme";
6
+ import { type DrawerRect } from "./drawer";
7
+ import type { TrayShaders } from "./shaders";
8
+ import { accessoryOf, type TrayCarriedFrame, type TraySpecimenFrame } from "./specimens";
9
+ /** The tray this frame (the renderer's flux — design-017 §3): where the slide is, and the SHOWN scroll. */
10
+ export interface TrayFrameInputs {
11
+ /** The slide as drawn: 0 closed (wholly off the view — nothing drawn) … 1 open. */
12
+ readonly p: number;
13
+ /** The SHOWN scroll — CSS px of board past its top, the band included; any size (its whole rows are carried on the CPU). */
14
+ readonly scroll: number;
15
+ /** K5a: the specimens this frame (tray/specimens.ts) — their accessories are the pass's, their pixels their kinds'; absent = none. */
16
+ readonly specimens?: readonly TraySpecimenFrame[];
17
+ /** K5b: what is CARRIED this frame (tray/carry.ts) — the lifted copy, a ghost growing out of it or shrinking home — over the drawer, whole. */
18
+ readonly carried?: readonly TrayCarriedFrame[];
19
+ }
20
+ /** What the last prepare laid (a rig's and a check's witness): the rect, the carry, the dim, the accessories' records (screen px). */
21
+ export interface TrayLaid {
22
+ readonly rect: DrawerRect;
23
+ readonly rowBase: number;
24
+ readonly frac: number;
25
+ readonly dim: number;
26
+ readonly accessories: readonly ReturnType<typeof accessoryOf>[];
27
+ }
28
+ /** The hash texture's side: the noise tiles every 256 lattice cells (for a band of F per pitch, every 256/F pitches). */
29
+ export declare const HASH_SIZE = 256;
30
+ /**
31
+ * The PRE-GATHERED noise (design-017 §6.7), 256² rgba8 — each texel the four corners one value-noise lookup interpolates, so a band is
32
+ * ONE load: texel (i, j) holds the research's hash of lattice points (i, j), (i+1, j), (i, j+1), (i+1, j+1) (`pcg(i ^ pcg(j))`, its
33
+ * top 8 bits), wrapping at the side; each band reads it at its own offset. It tiles every 256 cells of a band's lattice.
34
+ */
35
+ export declare function hashTexels(): Uint8Array<ArrayBuffer>;
36
+ /** A band of F cycles per pitch at a footprint of `fp` pitches per device px: kept while a cycle spans ≥ 4 px, gone at 2 (tray.wgsl's fade). */
37
+ export declare function keep(fp: number, F: number): number;
38
+ export declare class TrayPass {
39
+ private readonly device;
40
+ private readonly mat;
41
+ private readonly pipeline;
42
+ /** K5a: the accessories' own fragment entry on the same layout (a branch in one entry slowed the board). */
43
+ private readonly accPipeline;
44
+ /** The VEIL (design-018 rev 5): the plain board laid over everything the drawer holds at its top — its own entries on the same layout. */
45
+ private readonly veilPipeline;
46
+ private readonly layout;
47
+ private readonly sampler;
48
+ private readonly trayBuf;
49
+ private readonly lightBuf;
50
+ private readonly hash;
51
+ private readonly tray;
52
+ private readonly light;
53
+ private readonly sentTray;
54
+ private readonly sentLight;
55
+ private sent;
56
+ /** The quads the last prepare laid: 0 while the drawer is shut (p 0) — then it draws nothing. */
57
+ private quads;
58
+ private group;
59
+ private boundAssets;
60
+ private last;
61
+ private acc;
62
+ private accBuf;
63
+ private accSent;
64
+ private accCount;
65
+ private constructor();
66
+ /** The pipeline on `format`, sampling `mat`'s blue noise (the root's: its assets are every slot's). */
67
+ static create(device: GPUDevice, format: GPUTextureFormat, src: TrayShaders, mat: MatPass): Promise<TrayPass>;
68
+ /**
69
+ * Lay the drawer out for this frame and upload what changed (before the frame's pass begins): the view, the theme's light, the
70
+ * root grid's grade, the frame's noise offset. Returns the quads that will draw: one (the view whole while it dims) — none while
71
+ * the drawer is shut (p 0: it and its shadows lie below the view — nothing is uploaded, nothing drawn; design-018 §5).
72
+ */
73
+ prepare(view: View & {
74
+ readonly dpr: number;
75
+ }, theme: GroundTheme, grid: GridConfig, frame: MatFrame | undefined, inputs: TrayFrameInputs): number;
76
+ /** The accessories' records to the GPU — grown by doubling, written only when their bytes moved (a drawer at rest costs no write). */
77
+ private layAccessories;
78
+ /** A block to the GPU only when its bytes moved since the last upload (a drawer at rest costs no write). */
79
+ private upload;
80
+ /** A pipeline and the group, bound (the group remade when the mat's assets or the accessories' buffer changed). */
81
+ private bind;
82
+ /**
83
+ * The drawer UNDER its specimens into the open pass — over everything drawn so far (the caller left the scissor on the whole view):
84
+ * the dim, the drawer's shadows, the board to its edge; then each specimen's accessory with its shadow on the board (K5a).
85
+ */
86
+ draw(pass: GPURenderPassEncoder): void;
87
+ /**
88
+ * THE VEIL (design-018 rev 5) — LAST, over everything the drawer holds (the caller left the scissor on the whole view): the plain board
89
+ * whole in the header and fading out over its ramp, so what hangs there and the holes behind it fade into the board together — a
90
+ * specimen never turns see-through over a hole. One quad.
91
+ */
92
+ drawVeil(pass: GPURenderPassEncoder): void;
93
+ /** What the last prepare laid (a rig's witness). */
94
+ get laid(): TrayLaid | null;
95
+ dispose(): void;
96
+ }
@@ -0,0 +1,10 @@
1
+ import type { ComposeOptions } from "../engine/shader";
2
+ import { type ShaderText } from "../kit/wgsl";
3
+ /** The tray's own shader files (the kit's pieces come by name). */
4
+ export declare const TRAY_SHADER_FILES: {
5
+ readonly tray: "tray/tray.wgsl";
6
+ readonly trayPass: "tray/tray-pass.wgsl";
7
+ };
8
+ /** The tray pass's program: the kit's view · sdf · light, then the tray's record, module and entry. */
9
+ export type TrayShaders = ComposeOptions;
10
+ export declare function trayShaders(text: ShaderText): TrayShaders;
@@ -0,0 +1,199 @@
1
+ import { type TrayAccessory } from "../../../kernel/src/index";
2
+ import type { GridConfig } from "../mat/grid";
3
+ import type { Lamp } from "../mat/lamp";
4
+ import type { SlotSet } from "../ground";
5
+ import type { KindProgram } from "../kind";
6
+ import type { ObjectKind } from "../kinds/world";
7
+ import type { View } from "../lattice/lod";
8
+ import type { PortalClip, Presentation } from "../nav/portal";
9
+ import type { GroundTheme } from "../theme";
10
+ import { type CarryPose } from "./carry";
11
+ import { type DrawerRect } from "./drawer";
12
+ /** A specimen as the renderer reads it — from the world (the reflector), or a still's scene (the oracle). */
13
+ export interface TraySpecimen {
14
+ /** A stable key for the kind's persistent records (the world's entity; a still's index). */
15
+ readonly key: number;
16
+ readonly type: string;
17
+ readonly kind: ObjectKind;
18
+ /** The object's own size — the size its kind draws it at (the widget's `defaultSize`). */
19
+ readonly natural: {
20
+ readonly w: number;
21
+ readonly h: number;
22
+ };
23
+ /** Where it hangs, board px (x from the drawer's left edge, y down from the board's top at scroll 0): its `Position` and `Size`. */
24
+ readonly rect: {
25
+ readonly x: number;
26
+ readonly y: number;
27
+ readonly w: number;
28
+ readonly h: number;
29
+ };
30
+ readonly props: Readonly<Record<string, unknown>>;
31
+ /** Its hang's accessory and pegs (pitches from its hang point) — the entry's. */
32
+ readonly accessory: TrayAccessory;
33
+ readonly pegs: readonly (readonly [number, number])[];
34
+ readonly label: string;
35
+ /** K5b (D-K5b.3): its kind's desk state, when its entry draws it with it (`tray.local`) — the face that lives there. */
36
+ readonly local?: unknown;
37
+ /** A per-specimen asset (a still's committed raster — the oracle's; the product's writing pins its own). */
38
+ readonly asset?: unknown;
39
+ }
40
+ /** One specimen this frame: its kind's record under its own view block, where it is on screen, its accessory's pegs on screen, its tag. */
41
+ export interface TraySpecimenFrame {
42
+ readonly type: string;
43
+ /** The kind's registry name, and the record its `record` made for this frame. */
44
+ readonly kind: string;
45
+ readonly record: unknown;
46
+ readonly key: number;
47
+ /** Its slot's camera: the drawer's, scaled about it. */
48
+ readonly view: View & {
49
+ readonly dpr: number;
50
+ };
51
+ readonly grid: GridConfig;
52
+ /** Its rect on screen, CSS px. */
53
+ readonly screen: {
54
+ readonly x0: number;
55
+ readonly y0: number;
56
+ readonly x1: number;
57
+ readonly y1: number;
58
+ };
59
+ /** Its OBJECT as drawn on screen (the kernel's fit inside the hang), CSS px (K5b — what a take grabs, where one put back lands). */
60
+ readonly object: {
61
+ readonly x0: number;
62
+ readonly y0: number;
63
+ readonly x1: number;
64
+ readonly y1: number;
65
+ };
66
+ /** Its pegs' hole centres on screen, CSS px. */
67
+ readonly pegs: readonly (readonly [number, number])[];
68
+ readonly accessory: TrayAccessory;
69
+ readonly label: string;
70
+ }
71
+ /** The drawer this frame, as its flux drew it: the rect and the SHOWN scroll (the band in it). */
72
+ export interface TrayDrawn {
73
+ readonly rect: DrawerRect;
74
+ readonly scroll: number;
75
+ }
76
+ /** What building the frames needs of the desk: the view, the theme, the root's grid, the kinds' looks, each specimen's hover lift (0 … 1). */
77
+ export interface TraySpecimenEnv {
78
+ readonly view: {
79
+ readonly width: number;
80
+ readonly height: number;
81
+ readonly dpr: number;
82
+ };
83
+ readonly theme: GroundTheme;
84
+ readonly grid: GridConfig;
85
+ readonly looks: ReadonlyMap<string, unknown>;
86
+ readonly lift: (type: string) => number;
87
+ }
88
+ /**
89
+ * The FACE the specimens show through: the outline inside the board's edge (the arris — design-018 §2: nothing hangs over it), its foot
90
+ * past the view's, its top the HEADER's foot (design-018 R4: `DRAWER.header` under the edge, where nothing of them shows — the bar's
91
+ * chips lie there) — with NO feather (design-018 rev 5): a specimen is opaque to the clip's top, and the VEIL (tray.wgsl `tray_veil`)
92
+ * lays the plain board over it there — whole in the header, fading out over `DRAWER.fade` — so it fades into the board and never
93
+ * turns see-through over a hole (R1–R4's feather let the holes show through it). (Its top corners keep the arris's inner radius, under
94
+ * the veil's whole.)
95
+ */
96
+ export declare function faceClip(rect: DrawerRect, vh: number): PortalClip;
97
+ /** The tray's grid: the root's with no gobo dapple (D-K3.6 — the drawer lies above the desk; the wind would wake it). */
98
+ export declare function trayGrid(grid: GridConfig): GridConfig;
99
+ /**
100
+ * The specimens this frame: each culled where it cannot show (its rect and its reach outside the face), else resolved and recorded by
101
+ * its OWN kind — its object at its natural size, centred on its world origin, under the drawer's camera scaled about it — with the
102
+ * board's lamp, the tray's grid, the kind's look, its hover (the kinds' `lift`, a share of the hold's, and `hover`), no local and no
103
+ * asset (a specimen writes nothing into a kind's state on the desk) — unless its entry draws it with its kind's desk state (K5b, D-K5b.3:
104
+ * `tray.local` — a note's writing, a print's pictures), whose records the reflector lets go of as the specimen goes.
105
+ */
106
+ export declare function specimenFrames(specimens: readonly TraySpecimen[], drawn: TrayDrawn, env: TraySpecimenEnv): TraySpecimenFrame[];
107
+ /** The accessories' numbers (theme.ts `TRAY.accessory`): the kind index the shader reads, each's standing-off in pitches. */
108
+ export declare const ACCESSORY_INDEX: Readonly<Record<TrayAccessory, number>>;
109
+ /**
110
+ * One specimen's accessory record (tray.wgsl `TrayAccessory`), screen CSS px: its quad the ACCESSORY's own parts — the plugs and what they
111
+ * hold, a shelf's plank, a rail's bar, never the specimen's body between — grown by the shadow's push and blur (down and right, away
112
+ * from the lamp) and a pixel.
113
+ */
114
+ export declare function accessoryOf(f: TraySpecimenFrame): {
115
+ readonly box: number[];
116
+ readonly kind: number[];
117
+ readonly rect: number[];
118
+ readonly pegs0: number[];
119
+ readonly pegs1: number[];
120
+ };
121
+ /** A carried object this frame (K5b — tray/carry.ts): its kind's record under its pose's view, the slot it is drawn in, where it is on screen. */
122
+ export interface TrayCarriedFrame {
123
+ /** Its slot's key in `TraySlots` — one per type, apart from the specimens' (a copy and its specimen draw in the same frame). */
124
+ readonly slot: string;
125
+ readonly type: string;
126
+ readonly kind: string;
127
+ readonly record: unknown;
128
+ readonly key: number;
129
+ readonly view: View & {
130
+ readonly dpr: number;
131
+ };
132
+ readonly grid: GridConfig;
133
+ readonly phase: CarryPose["phase"];
134
+ /** The insert ghost it presents (absent: the lifted copy). */
135
+ readonly ghost?: number;
136
+ /** Its object's rect on screen, CSS px. */
137
+ readonly screen: {
138
+ readonly x0: number;
139
+ readonly y0: number;
140
+ readonly x1: number;
141
+ readonly y1: number;
142
+ };
143
+ }
144
+ /** What a carried pose is drawn from: its kind, its rect in its own units (the world's for a ghost — top-left; its natural size about the origin for a copy), its props, its key, the desk's lamp in those units, the kind's desk state. */
145
+ export interface TrayCarriedSource {
146
+ readonly kind: ObjectKind;
147
+ readonly rect: {
148
+ readonly x: number;
149
+ readonly y: number;
150
+ readonly w: number;
151
+ readonly h: number;
152
+ };
153
+ readonly props: Readonly<Record<string, unknown>>;
154
+ readonly key: number;
155
+ readonly lamp: Lamp;
156
+ readonly local?: unknown;
157
+ }
158
+ /** The slot a carried type draws in. */
159
+ export declare const carrySlot: (type: string) => string;
160
+ /**
161
+ * A carried pose as its kind records it: its view (`carryView` — the object's grab point at the pose's pivot, at its scale), the tray's
162
+ * grid (no dapple: it lies above the desk, D-K3.6), the pose's lift, the desk's lamp where the object is — so the copy lifted off the
163
+ * board and the ghost it becomes are lit alike, and coincide at the hand-off.
164
+ */
165
+ export declare function carriedFrame(pose: CarryPose, src: TrayCarriedSource, env: Omit<TraySpecimenEnv, "lift">): TrayCarriedFrame;
166
+ /** The presentation every specimen's slot is drawn through: whole, clipped to the face. */
167
+ export declare function facePresent(drawn: TrayDrawn, vh: number): Presentation;
168
+ /**
169
+ * THE TRAY'S SLOTS (the GPU half): one per specimen type, each its own view block (the mat spawned from the root's — K-L3) and its kind's
170
+ * pass: SPAWNED from the root's (its buffers on the shared pipelines), or — a composite kind, root only by D-D18 (its spawned pass draws
171
+ * nothing) — made from the kind's program on the slot's mat, once, the first time the tray shows one (`warm`; async, so the specimen
172
+ * shows from the frame after it is made — `onReady` asks for that frame). Freed with the ground.
173
+ */
174
+ export declare class TraySlots {
175
+ private readonly device;
176
+ private readonly format;
177
+ private readonly root;
178
+ private readonly programs;
179
+ private readonly slots;
180
+ private readonly making;
181
+ private disposed;
182
+ constructor(device: GPUDevice, format: GPUTextureFormat, root: SlotSet, programs: readonly KindProgram[]);
183
+ /** The slot of a specimen `type` of kind `kind`: spawned at once for a kind that spawns; undefined while a composite kind's pass is made. */
184
+ get(type: string, kind: string): SlotSet | undefined;
185
+ /** Make the passes of the composite kinds among `wanted` ([type, kind]) not made yet; `onReady` when each is (a frame is due). */
186
+ warm(wanted: readonly (readonly [string, string])[], onReady: () => void): void;
187
+ /** Every composite kind's pass among `wanted`, made now — a still's host (the oracle) waits for them. */
188
+ ready(wanted: readonly (readonly [string, string])[]): Promise<void>;
189
+ /**
190
+ * Each slot's passes let go of what they make again at their next draw when none of their objects was drawn within `ms` (D-K6a.3
191
+ * — the notebook's and the calendar's layers, a few seconds after the drawer shuts); asked every tick, drawing or not.
192
+ */
193
+ idle(ms?: number): void;
194
+ /** When `idle` next lets a layer go — the soonest slot's (K7a: the host's registered time wake); ∞ — nothing to let go. */
195
+ idleAt(ms?: number): number;
196
+ /** The slots made so far (a rig's witness). */
197
+ get size(): number;
198
+ dispose(): void;
199
+ }
@@ -20,7 +20,22 @@
20
20
  * `lastFrame()` telemetry (one frame late by construction:
21
21
  * publish runs before this frame's reflect).
22
22
  *
23
- * By default all three tools mount into ONE draggable dock (dock.ts —
23
+ * GPU SLOT (design-016 K2) the WebGPU desk's frames — the GPU span,
24
+ * its passes, draws by kind, pipelines, bind groups,
25
+ * uploads, memory — pushed by the host through `gpuFrame`
26
+ * as the STRUCTURAL MIRROR `GpuPanelFrame` (gpu-panel.ts:
27
+ * devtools cannot import desk; the old GlPanelStats way),
28
+ * mounted at once when configured (`gpu: {…}`), else on
29
+ * the first push; each push also reports the
30
+ * host LANES `desk flush`, `encode` and `gpu` beside
31
+ * strata's per-system lanes. They are readings side by
32
+ * side, not a partition: `desk flush` runs inside `reflect`,
33
+ * `encode` inside `desk flush`, and `gpu` on the GPU, in
34
+ * parallel with the next frame's CPU — and a frame's GPU
35
+ * span lands a frame or two late (its timestamps are read
36
+ * back asynchronously), in the frame the report arrives.
37
+ *
38
+ * By default all the tools mount into ONE draggable dock (dock.ts —
24
39
  * 2026-07-13, James: "make the 3 tools into one draggable panel"); pass
25
40
  * `dock: false` for the classic scattered corners.
26
41
  *
@@ -30,7 +45,7 @@
30
45
  import type { Entity, World } from "@vibecook/strata-ecs";
31
46
  import { type DescribeFn, type EntityDescription, type ObserverHandle, type ObserverOptions, type ProfilerHandle, type ProfilerOptions } from "@vibecook/strata-ecs/tools";
32
47
  import { type DockOptions } from "./dock";
33
- import { type GlPanelOptions, type GlPanelStats } from "./gl-panel";
48
+ import { type GpuPanelFrame, type GpuPanelOptions, type GpuPanelStats } from "./gpu-panel";
34
49
  import { type CanvasEngine, type Engine, type PresenceSession } from "../../core/src/index";
35
50
  export interface DevtoolsOpts {
36
51
  /** Where the dock (or, with `dock: false`, each panel) mounts (default: document.body). */
@@ -45,10 +60,10 @@ export interface DevtoolsOpts {
45
60
  readonly observer?: boolean | Pick<ObserverOptions, "defaultTab" | "tab" | "recorderCap">;
46
61
  /** Profiler HUD: `false` to omit, or strata passthrough options. */
47
62
  readonly profiler?: boolean | Pick<ProfilerOptions, "budgetMs" | "windowSize" | "corner" | "expanded" | "lanes">;
48
- /** GL metrics panel: `false` to omit, or placement/budget options. Mounts lazily on the first `glStats` push. */
49
- readonly glPanel?: boolean | Pick<GlPanelOptions, "corner" | "budgetMs" | "expanded">;
50
63
  /** Collab demos: the presence session whose store feeds the ephemeral tab. */
51
64
  readonly presence?: () => PresenceSession | null | undefined;
65
+ /** The GPU slot (K2): `false` to omit, or its options (budget, expanded, the host's capture) — given as an object it mounts at once (saying it waits for a frame); otherwise on the first `gpuFrame` push. */
66
+ readonly gpu?: boolean | Pick<GpuPanelOptions, "budgetMs" | "expanded" | "capture" | "captureFrames">;
52
67
  /** Override entity labeling (default: the engine describe below). */
53
68
  readonly describe?: DescribeFn;
54
69
  }
@@ -58,11 +73,10 @@ export interface DevtoolsHandle {
58
73
  /** Host-cost lane passthrough (paint, decode…); no-op when the profiler is off. */
59
74
  lane(name: string, ms: number): void;
60
75
  /**
61
- * Feed one GL frame's metrics (wire `<GLViews onFrameStats>` here). The GL
62
- * panel mounts on the first push — renderer counts, virtual-texture census,
63
- * LOD banding, cull population. No-op when opts.glPanel === false.
76
+ * Feed one GPU frame (K2 — wire the desk's GPU profiler here: `profiler.subscribe((r) => devtools.gpuFrame(r, profiler.stats()))`).
77
+ * Mounts the GPU slot on the first push and reports the host lanes `desk flush` / `encode` / `gpu`. No-op when `gpu: false`.
64
78
  */
65
- glStats(stats: GlPanelStats): void;
79
+ gpuFrame(frame: GpuPanelFrame, stats?: GpuPanelStats): void;
66
80
  /** Tear all panels + the telemetry hook down. Idempotent. */
67
81
  detach(): void;
68
82
  }