@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
@@ -1,24 +1,28 @@
1
1
  /**
2
- * The devtools dock — ONE draggable window hosting all three tools
3
- * (2026-07-13, James: "make the 3 tools into one draggable panel").
2
+ * The devtools dock — ONE draggable window hosting the tools
3
+ * (2026-07-13, James: "make the 3 tools into one draggable panel"; two since
4
+ * design-015 D5b — the GL metrics panel, the r3f stats mirror, left with the
5
+ * GL islands it read — and three again since design-016 K2: the `gpu` slot,
6
+ * the WebGPU desk's profiler, between the strip and the observer).
4
7
  *
5
- * strata's observer + profiler and our GL panel each mount `position: fixed`
6
- * into their own corner. The dock does NOT re-implement any of them (standing
7
- * rule: wrap first-party tools): it is a fixed, draggable shell with three
8
- * stacked slots; each tool mounts into its slot via its own `container`
9
- * option, and dock-scoped CSS de-windows them (`position: static`, full
10
- * width, no border/shadow) so they read as sections of one panel. Their own
11
- * behavior is untouched — the observer keeps its tabs/collapse/vertical
12
- * resize (its header drag goes inert: left/top are ignored at static), the
13
- * profiler + GL strips keep their click-to-expand.
8
+ * strata's observer + profiler each mount `position: fixed` into their own
9
+ * corner. The dock does NOT re-implement either (standing rule: wrap
10
+ * first-party tools): it is a fixed, draggable shell with stacked slots; each
11
+ * tool mounts into its slot via its own `container` option, and dock-scoped
12
+ * CSS de-windows them (`position: static`, full width, no border/shadow) so
13
+ * they read as sections of one panel. Their own behavior is untouched — the
14
+ * observer keeps its tabs/collapse/vertical resize (its header drag goes
15
+ * inert: left/top are ignored at static), the profiler strip keeps its
16
+ * click-to-expand.
14
17
  *
15
- * Slot order is fixed by the dock, not by mount order: profiler and GL are
16
- * one-line summary strips, the observer is the deep-dive — strips on top.
18
+ * Slot order is fixed by the dock, not by mount order: the profiler is a
19
+ * one-line summary strip, the observer is the deep-dive — the strip on top,
20
+ * the GPU's frames under it, the observer last.
17
21
  * Layout (x/y/width/open) persists to localStorage, same as the observer:
18
22
  * schema edits full-reload the page by design; the dock must stay put.
19
23
  */
20
24
  export type DockCorner = "tl" | "tr" | "bl" | "br";
21
- export type DockSlotId = "profiler" | "gl" | "observer";
25
+ export type DockSlotId = "profiler" | "gpu" | "observer";
22
26
  export interface DockOptions {
23
27
  /** Where the dock mounts (default: document.body). */
24
28
  readonly container?: HTMLElement;
@@ -0,0 +1,105 @@
1
+ /**
2
+ * The GPU panel — the WebGPU desk's frames as its GPU saw them (design-016 §4.5, K2), the dock's `gpu` slot: what the "ice gl"
3
+ * panel was for the r3f islands until design-015 D5b, rebuilt for the desk's profiler.
4
+ *
5
+ * Pure DOM, strata's visual language (the observer's and the profiler's palette and type, so the dock reads as one toolset).
6
+ * Fed by pushes of `GpuPanelFrame` + `GpuPanelStats` — STRUCTURAL MIRRORS of `@ice/desk`'s `GpuFrameReport` and
7
+ * `GpuProfileStats` (devtools cannot import desk under the walls — `nobody-imports-desk`; this is how `GlPanelStats`
8
+ * mirrored r3f's `GlFrameStats`). apps/desk holds the two in step: its typecheck asserts desk's are assignable to these.
9
+ *
10
+ * head the GPU SPAN's p50 (THE headline: first pass begun → last pass ended), p95 · max, a sparkline against the budget
11
+ * warning timestamps quantised to 100 µs — and the Chrome switch that turns it off
12
+ * frame span / busy (the span less the GPU's waits) / encode / desk flush bars against the budget, p50 · p95 · max
13
+ * passes the last timed frame's passes on its span (they overlap on a tiler, and the GPU waits between them: the sum is not the frame — both shown)
14
+ * calls draws · instances · pipelines · bind groups · passes · submits · writes · upload bytes
15
+ * by kind draws and instances by the kind that drew (a run of notes is ONE instanced draw)
16
+ * uploads the frame's bytes by label · memory: live GPU bytes by label (the ledger), textures / buffers
17
+ * capture "capture N frames" → a Chrome trace-event JSON, saved (Perfetto / chrome://tracing)
18
+ *
19
+ * All values land via `textContent` (never innerHTML with data). Rendering is throttled: pushes arrive per frame, the DOM
20
+ * refreshes at ~8 Hz.
21
+ */
22
+ /** Mirror of `@ice/desk` `PassTime`. */
23
+ export interface GpuPanelPass {
24
+ readonly label: string;
25
+ readonly begin: number;
26
+ readonly end: number;
27
+ }
28
+ /** Mirror of `@ice/desk` `GpuFrameReport` (structural — see the header). */
29
+ export interface GpuPanelFrame {
30
+ readonly frame: number;
31
+ readonly span: number | null;
32
+ readonly sum: number | null;
33
+ readonly busy: number | null;
34
+ readonly passes: readonly GpuPanelPass[];
35
+ readonly counts: {
36
+ readonly draws: number;
37
+ readonly instances: number;
38
+ readonly pipelines: number;
39
+ readonly bindGroups: number;
40
+ readonly passes: number;
41
+ readonly submits: number;
42
+ readonly writes: number;
43
+ readonly uploadBytes: number;
44
+ };
45
+ readonly byKind: Readonly<Record<string, {
46
+ readonly draws: number;
47
+ readonly instances: number;
48
+ }>>;
49
+ readonly uploads: Readonly<Record<string, {
50
+ readonly writes: number;
51
+ readonly bytes: number;
52
+ }>>;
53
+ readonly cpu: {
54
+ readonly encode: number;
55
+ readonly flush: number | null;
56
+ };
57
+ readonly memory: {
58
+ readonly byLabel: Readonly<Record<string, {
59
+ readonly bytes: number;
60
+ readonly textures: number;
61
+ readonly buffers: number;
62
+ }>>;
63
+ readonly textures: number;
64
+ readonly buffers: number;
65
+ readonly total: number;
66
+ } | null;
67
+ readonly quantised: boolean | null;
68
+ }
69
+ /** Mirror of `@ice/desk` `Rolling`. */
70
+ export interface GpuPanelRolling {
71
+ readonly n: number;
72
+ readonly p50: number;
73
+ readonly p95: number;
74
+ readonly max: number;
75
+ }
76
+ /** Mirror of `@ice/desk` `GpuProfileStats` (the fields the panel reads). */
77
+ export interface GpuPanelStats {
78
+ readonly frames: number;
79
+ readonly span: GpuPanelRolling | null;
80
+ readonly busy: GpuPanelRolling | null;
81
+ readonly encode: GpuPanelRolling | null;
82
+ readonly flush: GpuPanelRolling | null;
83
+ readonly quantised: boolean | null;
84
+ readonly unquantise: string;
85
+ readonly dropped: number;
86
+ }
87
+ export interface GpuPanelOptions {
88
+ readonly container?: HTMLElement;
89
+ /** The frame budget, ms — the bars' and the sparkline's reference (default 16.7). */
90
+ readonly budgetMs?: number;
91
+ /** Start with the detail body open (default true: the dock opens to read it). */
92
+ readonly expanded?: boolean;
93
+ /** "capture N frames": the host's capture (a trace-event JSON) — the panel saves what it answers. Absent: no button. */
94
+ readonly capture?: (frames: number) => Promise<unknown>;
95
+ /** The frames a capture asks for (default 120). */
96
+ readonly captureFrames?: number;
97
+ }
98
+ export interface GpuPanel {
99
+ push(frame: GpuPanelFrame, stats?: GpuPanelStats): void;
100
+ readonly el: HTMLElement;
101
+ dispose(): void;
102
+ }
103
+ export declare const fmtMs: (ms: number | null | undefined) => string;
104
+ export declare const fmtBytes: (b: number) => string;
105
+ export declare function createGpuPanel(opts?: GpuPanelOptions): GpuPanel;
@@ -1,10 +1,11 @@
1
1
  /**
2
2
  * @ice/devtools — strata's observer panel + FPS profiler, engine-flavored
3
- * (describe/durable/ephemeral/reflect-lane glue). Reads the world outside the
4
- * tick; never a reflector, never writes ECS. Nobody imports us
5
- * (depcruise-enforced leaf).
3
+ * (describe/durable/ephemeral/reflect-lane glue), and the GPU panel the WebGPU
4
+ * desk's profiler feeds (design-016 K2). Reads the world outside the tick;
5
+ * never a reflector, never writes ECS. Nobody imports us (depcruise-enforced
6
+ * leaf).
6
7
  */
7
8
  export declare const DEVTOOLS_VERSION = "0.1.0";
8
9
  export { attachDevtools, engineDescribe, type DevtoolsEngine, type DevtoolsHandle, type DevtoolsOpts, } from "./attach";
9
10
  export { createDock, type Dock, type DockCorner, type DockOptions, type DockSlotId } from "./dock";
10
- export { createGlPanel, type GlPanel, type GlPanelCorner, type GlPanelOptions, type GlPanelStats } from "./gl-panel";
11
+ export { createGpuPanel, fmtBytes, fmtMs, type GpuPanel, type GpuPanelFrame, type GpuPanelOptions, type GpuPanelPass, type GpuPanelRolling, type GpuPanelStats, } from "./gpu-panel";
@@ -0,0 +1,91 @@
1
+ /**
2
+ * `createDeskHost` — the vanilla mount (design-015 §3, D-D15; D5b). What `<InfiniteCanvas>` did
3
+ * for the hybrid, with the hybrid gone: ONE container, the desk's layer in it, and this package's
4
+ * screen-space half around it — the pointer adapter (L0's one producer), the rAF loop, the OS
5
+ * cursor, the room's other people (the remote cursors), the focus driver, the viewport sync.
6
+ * `@ice/react`'s `<Desk>` wraps it; an app without React mounts it directly.
7
+ *
8
+ * THE DESK ARRIVES AS AN OPAQUE LAYER FACTORY. This package never imports `@ice/desk` (the wall
9
+ * `nobody-imports-desk`): the factory's context and its handle are typed STRUCTURALLY here —
10
+ * exactly as `<InfiniteCanvas ground={groundCompose(…)}>` received the ground — and
11
+ * `@ice/desk`'s `deskLayer(opts)` (its src/host/) returns a function assignable to {@link LayerFactory}.
12
+ * The context carries the interaction stack's seams the renderer fills (the frame pick, the nav
13
+ * geometry, the held pose — design-014 B3b, design-015 §8–§9) and the marquee buffer it draws.
14
+ *
15
+ * Boot order (registration order = reflector flush order): host → layer → reflectors [ layer ·
16
+ * cursor · remoteCursors ] → pointer adapter → focus → viewport (one layout read, then a
17
+ * ResizeObserver, and the device's ratio read before every step) → rAF loop. `dispose` undoes it in reverse. The engine is NOT owned here — it
18
+ * outlives the mount (the app disposes it). A layer factory that throws leaves nothing claimed on
19
+ * the engine: it runs before any registration, and only the local host is undone.
20
+ */
21
+ import { type CanvasEngine, type EngineGpu, type InteractionStack, type ReflectorDef, type World } from "../../core/src/index";
22
+ import { type CanvasHost } from "./host";
23
+ import { type WidgetFocusHandle } from "./widget-focus";
24
+ /**
25
+ * What the host needs of a mounted layer: its drawing reflector and its teardown. The desk's own
26
+ * handle (`@ice/desk`'s `DeskLayerHandle`) carries far more; an app keeps that through its
27
+ * own factory wrapper, or reads it off {@link DeskHost.layer} typed as the factory returned it.
28
+ */
29
+ export interface LayerHandle {
30
+ readonly reflector: ReflectorDef & {
31
+ available(): boolean;
32
+ };
33
+ dispose(): void;
34
+ }
35
+ /** The mount context a layer factory receives: the host, the world and the seams the renderer fills. */
36
+ export interface LayerContext {
37
+ readonly host: CanvasHost;
38
+ readonly world: World;
39
+ /** The frame pick slot (design-014, B3b): the renderer sets its hit test here at mount, clears it at dispose. */
40
+ readonly framePick: InteractionStack["framePick"];
41
+ /** The nav geometry slot (design-015 §9, D2b): the renderer's word on its containers' drawn faces. */
42
+ readonly navGeometry: InteractionStack["navGeometry"];
43
+ /** The held pose slot (design-015 §8, D4b): where the object in hand is on screen, as drawn. */
44
+ readonly heldPose: InteractionStack["heldPose"];
45
+ /** The tray pose slot (design-017 §4, K3): where the pegboard drawer is on screen, as drawn. */
46
+ readonly trayPose: InteractionStack["trayPose"];
47
+ /** The presentation transition coordinator: the layer registers the `ground` plane so a nav flight can prepare. */
48
+ readonly transitions: CanvasEngine["transitions"];
49
+ /** The engine's catalog: the object types whose kinds the layer registers. */
50
+ readonly catalog: CanvasEngine["catalog"];
51
+ /** The marquee's preview, out of the ECS (design-003 §5.7): the vellum the marks draw (design-015 D4a). */
52
+ readonly readMarquee: () => InteractionStack["marqueeBuffer"];
53
+ /** The one spatial index (design-015 §2.5; D6): the renderer's cull rides it with a hysteresis margin — no per-entity rect test on a pan. */
54
+ readonly spatial: InteractionStack["index"];
55
+ /** The engine's device (`engine.compositorDevice`), when the app passed one (design-015 D7): the layer draws with it — ONE device per engine. */
56
+ readonly gpu?: EngineGpu;
57
+ /**
58
+ * The frame gate's sleep (K7a, `@ice/core` frame-control.ts): the layer registers when it is next due (`wakeWhen`), wakes a
59
+ * sleeping loop for what it hears outside a step (`wake` — an asset landing, a theme, a pin), and asks whether the step in
60
+ * progress is a registered time's alone (`settled` — then it ticks only what is due).
61
+ */
62
+ readonly frame?: Pick<CanvasEngine["engine"]["frame"], "wake" | "wakeWhen" | "settled">;
63
+ }
64
+ export type LayerFactory<H extends LayerHandle = LayerHandle> = (ctx: LayerContext) => H;
65
+ export interface DeskHostOptions<H extends LayerHandle = LayerHandle> {
66
+ /** The viewport element; styled, not created, by the host. */
67
+ readonly container: HTMLElement;
68
+ /** A constructed engine (`createCanvasEngine(...)`); NOT disposed by the host. */
69
+ readonly engine: CanvasEngine;
70
+ /** The desk — `deskLayer({ … })` from `@vibecook/ice/desk` (`@ice/desk`'s src/host/), received opaquely. */
71
+ readonly layer: LayerFactory<H>;
72
+ /**
73
+ * The loop SLEEPS when the engine is quiet (K7a — design-015 §11.4: a desk at rest costs the main thread nothing): no frame
74
+ * until an input, a write, an arrival or a registered time wakes it. Default true; false steps every frame, as before K7a.
75
+ */
76
+ readonly sleep?: boolean;
77
+ }
78
+ export interface DeskHost<H extends LayerHandle = LayerHandle> {
79
+ readonly engine: CanvasEngine;
80
+ readonly host: CanvasHost;
81
+ /** The mounted layer's handle, as the factory returned it. */
82
+ readonly layer: H;
83
+ /**
84
+ * The focus driver (design-007 §2.3): `blurFocus()` releases whatever keyboard claim holds
85
+ * focus. Focus is VIEW state (design-007 §2.6) — it rides the mount, not `engine.ops`.
86
+ */
87
+ readonly focus: WidgetFocusHandle;
88
+ /** Stop the loop, detach every adapter, unregister every reflector, dispose the layer and the host. Idempotent. */
89
+ dispose(): void;
90
+ }
91
+ export declare function createDeskHost<H extends LayerHandle>(opts: DeskHostOptions<H>): DeskHost<H>;
@@ -1,24 +1,23 @@
1
1
  /**
2
- * The DOM canvas host (design-004 §1, host pipeline — M3 slice).
3
- *
4
- * M3 stands up ONE content plane: an absolutely-positioned div whose single CSS
5
- * transform (written by the plane-transform reflector) applies the camera to
6
- * every world-positioned child at once (design-002 §5 `planeTransform`; kernel
7
- * `planeCssTransform`). The full six-plane model (background/content/overlay/
8
- * chrome/HUD/nav + the FBO compositor) arrives in M6 — this file is deliberately
9
- * the minimum that lets a reflector paint into a camera-transformed space.
2
+ * The canvas host (design-004 §1, host pipeline; SCREEN SPACE ONLY since design-015 D5b).
10
3
  *
11
4
  * The container is styled to be a stable, gesture-clean viewport: `relative` so
12
- * the absolute plane anchors to it, `overflow:hidden` to clip the infinite
13
- * plane, `touch-action:none` + `user-select:none` so browser scroll/zoom and
14
- * text selection never fight the interaction stack.
5
+ * absolutely-positioned children (the desk's canvas, the one focused editor, the
6
+ * remote-cursor plane, the app's screen-space chrome) anchor to it,
7
+ * `overflow:hidden` to clip them, `touch-action:none` + `user-select:none` so
8
+ * browser scroll/zoom and text selection never fight the interaction stack.
9
+ *
10
+ * THE CONTENT PLANE IS GONE (design-015 §2 law 2). Until D5b the host also made
11
+ * one camera-transformed `<div>` — M3's "content plane", the P1 every DOM
12
+ * widget mounted in, carrying the camera as ONE CSS transform written by the
13
+ * plane-transform reflector (kernel `planeCssTransform`, gone since D7). No DOM element
14
+ * carries a camera transform any more: everything under the camera is the
15
+ * desk renderer's, and the DOM that remains is screen-space.
15
16
  */
16
17
  export interface CanvasHost {
17
18
  /** The app-provided viewport element (styled, not created, by the host). */
18
19
  readonly container: HTMLElement;
19
- /** The single camera-transformed plane; world-positioned children mount here. */
20
- readonly contentPlane: HTMLDivElement;
21
- /** Remove the plane and clear the inline styles the host wrote. */
20
+ /** Clear the inline styles the host wrote. */
22
21
  dispose(): void;
23
22
  }
24
23
  export declare function createCanvasHost(container: HTMLElement): CanvasHost;
@@ -1,19 +1,21 @@
1
1
  /**
2
- * @ice/dom — DOM planes, pointer adapters (events→queue ONLY), built-in DOM reflectors.
3
- * Import wall: @ice/core + @ice/kernel down only — never react/three (enforced).
2
+ * @ice/dom — SCREEN SPACE ONLY (design-015 §3, D-D15; D5b): the canvas host, the pointer
3
+ * adapter (events → queue ONLY), the rAF loop, input ownership + the editor's focus, the OS
4
+ * cursor + the room's remote cursors, and `createDeskHost` — the vanilla mount that takes the
5
+ * desk as an opaque layer factory.
6
+ * Import wall: @ice/core + @ice/kernel down only — never react/three/desk (enforced).
7
+ *
8
+ * GONE at D5b — the WORLD-SPACE half (design-015 §1): the content and lifted planes, the
9
+ * plane-transform reflector, the DOM widget hosts + writeback, the L1 source canvas
10
+ * (`layoutsubtree`), the Widget Surface contract, measurement, the graybox and the P4 chrome
11
+ * reflectors, and the pointer adapter's GL route. No DOM under the camera (DK-D2).
4
12
  */
5
13
  export declare const DOM_VERSION = "0.0.0";
6
14
  export { createCanvasHost, type CanvasHost } from "./host";
7
- export { createPlanes, type Planes } from "./planes";
8
- export { createPlaneTransformReflector, type CameraPlanes } from "./reflectors/plane-transform";
9
- export { createGrayboxReflector } from "./reflectors/graybox";
10
- export { createDomWidgetsReflector, type DomWidgetsHost, type DomWidgetsReflector, } from "./reflectors/dom-widgets";
15
+ export { createDeskHost, type DeskHost, type DeskHostOptions, type LayerContext, type LayerFactory, type LayerHandle, } from "./desk-host";
11
16
  export { startRafLoop } from "./loop";
12
- export { attachPointerAdapter, type GLRoute, type GLRouteVerdict, type PointerAdapterOpts } from "./pointer-adapter";
17
+ export { attachPointerAdapter } from "./pointer-adapter";
13
18
  export { CLAIM_OWNS_ESCAPE, KEYBOARD_CLAIM_ATTR, isEditableTarget, keyboardClaimOf, wheelCede, type KeyboardClaim, } from "./input-ownership";
14
19
  export { FOCUS_PROXY_ATTR, attachWidgetFocus, type FocusHostLookup, type WidgetFocusHandle, } from "./widget-focus";
15
20
  export { createCursorReflector } from "./reflectors/cursor";
16
21
  export { createRemoteCursorsReflector, type RemoteCursorsReflector } from "./reflectors/remote-cursors";
17
- export { createChromeReflector } from "./reflectors/chrome";
18
- export { attachMeasureAdapter, type MeasureAdapter } from "./measure-adapter";
19
- export { wireMeasurement, type MeasureWiringHosts, type MeasureWiringOpts } from "./measure-wiring";
@@ -26,6 +26,23 @@
26
26
  * not restart it. Recovery needed a fresh `startRafLoop`. The next frame is now
27
27
  * scheduled in a `finally`, so a faulting frame is loud but survivable — the
28
28
  * throw still reaches the browser's error handler; only the death is gone.
29
+ *
30
+ * BEFORE EACH STEP (2026-09-27, ICE M21 K1): an optional `beforeStep` — where a host reads what the
31
+ * platform changes without an event it can hear (the device's ratio: `createDeskHost`). It runs
32
+ * only for a step that runs (never while parked), and inside the same `try`, so a throwing hook is
33
+ * as survivable as a throwing step.
34
+ *
35
+ * THE SLEEP (2026-09-27, ICE M21 K7a — `@ice/core`'s frame-control.ts): with `sleep`, the loop asks
36
+ * the frame gate after every step when the next one is due, and SLEEPS when it is not the next
37
+ * frame — no rAF queued, and a timer only when a registered wake names a time (a flight, a caret's
38
+ * blink, a layer let go). A wake (an input, a write from outside a step, a document's or a room's
39
+ * arrival, a desk's flux) restarts it in the next frame; so does a freeze, whose settle walk needs
40
+ * steps. A desk at rest then costs the main thread nothing at all (design-015 §11.4). Without
41
+ * `sleep` the loop steps every frame, as it always did.
29
42
  */
30
43
  import type { Engine } from "../../core/src/index";
31
- export declare function startRafLoop(engine: Engine): () => void;
44
+ export interface RafLoopOptions {
45
+ /** Sleep when the engine is quiet (K7a): no frame scheduled until a wake or a registered time. Default false. */
46
+ readonly sleep?: boolean;
47
+ }
48
+ export declare function startRafLoop(engine: Engine, beforeStep?: (now: number) => void, opts?: RafLoopOptions): () => void;
@@ -43,9 +43,10 @@
43
43
  * canvas fact at all — that is the design, not a gap.
44
44
  *
45
45
  * Hover-time amendment (design-002 §8, 2026-07-18): down/move facts ALSO carry
46
- * `overInteractive` — the same `crossesInteractive` check, run at hover time,
47
- * OR'd with the GL router's hover verdict — so the world can telegraph the
48
- * opt-out BEFORE a down (cursor affordances). It never gates gestures:
46
+ * `overInteractive` — the same `crossesInteractive` check, run at hover time —
47
+ * so the world can telegraph the opt-out BEFORE a down (cursor affordances).
48
+ * (Until design-015 D5b the GL router's hover verdict was OR'd in; the GL
49
+ * route left with the islands it picked.) It never gates gestures:
49
50
  * `surfaceHandled` stays down-only and keeps its exact meaning. During a
50
51
  * container-captured drag every event retargets to the container, so
51
52
  * `overInteractive` reads false mid-gesture — correct: the gesture owns the
@@ -53,29 +54,4 @@
53
54
  */
54
55
  import { type InputQueue } from "../../core/src/index";
55
56
  import type { CanvasHost } from "./host";
56
- /**
57
- * The router GL path's adapter seam (design-004 §4). The GL plane is
58
- * `pointer-events: none` — its events land HERE, and the injected router
59
- * (built by @ice/r3f; the adapter stays ECS-free) performs the synchronous
60
- * point-pick + island raycast + synthetic dispatch at event time. Returning
61
- * `true` means island content claimed the event (stopPropagation'd or held
62
- * under island capture): the fact still lands — flagged `surfaceHandled`, so
63
- * recognizers skip it via `HandledByWidget` — the same contract as the
64
- * native-interactive opt-out.
65
- */
66
- export type GLRoute = (kind: "down" | "move" | "up" | "cancel", screenX: number, screenY: number, native: PointerEvent) => boolean | GLRouteVerdict;
67
- /**
68
- * The richer GL verdict (hover-time amendment, 2026-07-18): `handled` keeps the
69
- * boolean's exact meaning (island content claimed the event); `overInteractive`
70
- * adds the hover fact — the pick chain holds claim-capable content (a mesh with
71
- * a down/click handler), so a down HERE would be the island's. Plain `boolean`
72
- * returns stay legal (≡ `{ handled }`), so existing routes never break.
73
- */
74
- export interface GLRouteVerdict {
75
- readonly handled: boolean;
76
- readonly overInteractive?: boolean;
77
- }
78
- export interface PointerAdapterOpts {
79
- readonly glRoute?: GLRoute;
80
- }
81
- export declare function attachPointerAdapter(host: CanvasHost, queue: InputQueue, opts?: PointerAdapterOpts): () => void;
57
+ export declare function attachPointerAdapter(host: CanvasHost, queue: InputQueue): () => void;
@@ -9,19 +9,19 @@
9
9
  * world (there is no Focus resource; design-007 §2.2 demoted it, and despawn
10
10
  * integrity is free: removing the node resets `activeElement`).
11
11
  *
12
- * Acquisition is DOM-at-event-time, not a world system: for DOM widgets the
13
- * browser's own event targeting IS the pick (the down target sits inside the
14
- * claiming host), and for GL widgets the claim lives on the DOM-chrome host
15
- * under the pointer (the GL plane is `pointer-events:none`, so the down lands
16
- * on the chrome — design-007 §2.5's proxy path). A capture-phase listener
17
- * keeps ordering deterministic across browsers (Safari's click-focus quirks):
12
+ * Acquisition is DOM-at-event-time, not a world system: the browser's own event
13
+ * targeting IS the pick (the down target sits inside the claiming host — since
14
+ * design-015 D5b that host is screen-space chrome, never a widget under the
15
+ * camera; the desk's one focused editor acquires focus on its own, the same
16
+ * principle). A capture-phase listener keeps ordering deterministic across
17
+ * browsers (Safari's click-focus quirks):
18
18
  *
19
19
  * - down on a natively-focusable node inside the claim (textarea, canvas
20
20
  * with tabindex, the declared proxy itself) → the browser's own mousedown
21
21
  * focus is correct; the driver does nothing.
22
- * - down anywhere else inside the claim → the driver focuses the widget's
22
+ * - down anywhere else inside the claim → the driver focuses the claim's
23
23
  * declared `[data-canvas-focus]` proxy when one exists, else the host
24
- * (the reflector gave it `tabindex="-1"`), with `preventScroll` — and
24
+ * (which carries `tabindex="-1"`), with `preventScroll` — and
25
25
  * `preventDefault()`s the pointerdown so the native focus fixup cannot
26
26
  * fight the choice. Canceling a pointerdown suppresses only the compat
27
27
  * mouse events (focus fixup + text selection — the container is already
@@ -38,16 +38,20 @@ import type { Entity } from "../../core/src/index";
38
38
  import type { CanvasHost } from "./host";
39
39
  /** The widget-declared focus target (a proxy descendant): `<div data-canvas-focus tabIndex={-1}>`. */
40
40
  export declare const FOCUS_PROXY_ATTR = "data-canvas-focus";
41
- /** Resolves an entity to its host's content element (the dom-widgets reflector's `hostFor`). */
41
+ /**
42
+ * Resolves an entity to a claiming host's content element — what `focusWidget` walks from. The
43
+ * dom-widgets reflector was the one lookup until design-015 D5b; a host that keeps per-entity
44
+ * DOM (none in the engine today) may still hand one in.
45
+ */
42
46
  export interface FocusHostLookup {
43
47
  hostFor(entity: Entity): HTMLElement | undefined;
44
48
  }
45
49
  export interface WidgetFocusHandle {
46
50
  /**
47
51
  * Programmatically focus a claiming widget (its proxy, else its host).
48
- * Returns false when the entity has no mounted host or no keyboard claim —
49
- * only `keyboard: "exclusive"` widgets are focusable (declaration drives
50
- * focusability; design-007 §3.1).
52
+ * Returns false when the entity has no host in the lookup (always, without
53
+ * one) or no keyboard claim — only `keyboard: "exclusive"` widgets are
54
+ * focusable (declaration drives focusability; design-007 §3.1).
51
55
  */
52
56
  focusWidget(entity: Entity): boolean;
53
57
  /** Blur whatever claim currently holds focus. False when none does. */
@@ -55,4 +59,4 @@ export interface WidgetFocusHandle {
55
59
  /** Remove the acquisition listener. */
56
60
  detach(): void;
57
61
  }
58
- export declare function attachWidgetFocus(host: CanvasHost, lookup: FocusHostLookup): WidgetFocusHandle;
62
+ export declare function attachWidgetFocus(host: CanvasHost, lookup?: FocusHostLookup): WidgetFocusHandle;
@@ -0,0 +1,2 @@
1
+ /** `@vibecook/ice/desk/engine` — the raw-WebGPU engine the desk draws with (design-015 §4.1). */
2
+ export * from "../../desk/src/engine/index";
@@ -0,0 +1,6 @@
1
+ /**
2
+ * `@vibecook/ice/desk/kit` — the desk's render kit (design-016 §5): what a kind's pass is written against besides the
3
+ * engine — the slot's view and its mat (`MatPass`), the lamp and its light, the shared WGSL by name (`kitWgsl`), a
4
+ * container's inside, the host services a kind is lent (text, print, blobs), and the one physics every object shares.
5
+ */
6
+ export * from "../../desk/src/kit/index";
@@ -0,0 +1,5 @@
1
+ /**
2
+ * `@vibecook/ice/desk/objects` — the six reference object kinds (design-015 §6), their own package since design-016 K4b
3
+ * (`@ice/objects`): built on the desk's public entries alone, as a plugin kind is.
4
+ */
5
+ export * from "../../objects/src/index";
@@ -0,0 +1,5 @@
1
+ /**
2
+ * `@vibecook/ice/desk` — the desk (design-015 §3): the renderer, the host half (`deskLayer`,
3
+ * the one focused editor, the text raster), `defineObject`, the kind registry, the theme.
4
+ */
5
+ export * from "../../desk/src/index";