@vibecook/ice 0.11.0 → 0.15.0-desk.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (389) hide show
  1. package/README.md +79 -50
  2. package/dist/chunk-AMMFQP2C.js +2444 -0
  3. package/dist/chunk-AMMFQP2C.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-ENIFIUEP.js +155 -0
  7. package/dist/chunk-ENIFIUEP.js.map +1 -0
  8. package/dist/chunk-H3SKYJLK.js +8269 -0
  9. package/dist/chunk-H3SKYJLK.js.map +1 -0
  10. package/dist/{chunk-OR5FNVUE.js → chunk-JS6PG6YD.js} +398 -167
  11. package/dist/chunk-JS6PG6YD.js.map +1 -0
  12. package/dist/{chunk-VGVDJZSP.js → chunk-PFJN3XN2.js} +13232 -7388
  13. package/dist/chunk-PFJN3XN2.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-U4YMA4TJ.js +635 -0
  17. package/dist/chunk-U4YMA4TJ.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 +12734 -0
  23. package/dist/desk-objects.js.map +1 -0
  24. package/dist/desk.js +497 -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 +1047 -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 +36 -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 +73 -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 +53 -1
  93. package/dist/types/packages/core/src/systems/l2-arbitrate.d.ts +18 -4
  94. package/dist/types/packages/core/src/systems/l2-recognize.d.ts +3 -1
  95. package/dist/types/packages/core/src/systems/l3-behave.d.ts +4 -1
  96. package/dist/types/packages/core/src/systems/l3-claim.d.ts +7 -0
  97. package/dist/types/packages/core/src/systems/l3-connect.d.ts +1 -1
  98. package/dist/types/packages/core/src/systems/l3-drop.d.ts +30 -1
  99. package/dist/types/packages/core/src/systems/l3-marquee.d.ts +2 -1
  100. package/dist/types/packages/core/src/systems/l3-ports.d.ts +1 -1
  101. package/dist/types/packages/core/src/systems/l4-cursor.d.ts +5 -0
  102. package/dist/types/packages/core/src/systems/nav-flight.d.ts +85 -3
  103. package/dist/types/packages/core/src/systems/nav-tap.d.ts +44 -0
  104. package/dist/types/packages/core/src/systems/press-button.d.ts +25 -0
  105. package/dist/types/packages/core/src/systems/press-wheel.d.ts +11 -0
  106. package/dist/types/packages/core/src/systems/tray.d.ts +111 -0
  107. package/dist/types/packages/core/src/systems/zoom-through.d.ts +30 -0
  108. package/dist/types/packages/core/src/tools/define-tool.d.ts +10 -0
  109. package/dist/types/packages/core/src/widget/define-widget.d.ts +166 -63
  110. package/dist/types/packages/core/src/widget/equip.d.ts +14 -2
  111. package/dist/types/packages/core/src/widget/held-tools.d.ts +83 -0
  112. package/dist/types/packages/core/src/widget/menu-actions.d.ts +44 -0
  113. package/dist/types/packages/core/src/widget/mount-store.d.ts +21 -46
  114. package/dist/types/packages/core/src/widget/spawn.d.ts +1 -1
  115. package/dist/types/packages/desk/src/assets/blue-noise.gen.d.ts +10 -0
  116. package/dist/types/packages/desk/src/card/card.d.ts +103 -0
  117. package/dist/types/packages/desk/src/compose/ambient.d.ts +59 -0
  118. package/dist/types/packages/desk/src/compose/builder.d.ts +306 -0
  119. package/dist/types/packages/desk/src/compose/children.d.ts +3 -0
  120. package/dist/types/packages/desk/src/compose/index.d.ts +14 -0
  121. package/dist/types/packages/desk/src/compose/marks.d.ts +133 -0
  122. package/dist/types/packages/desk/src/compose/pick.d.ts +5 -0
  123. package/dist/types/packages/desk/src/compose/reflector.d.ts +120 -0
  124. package/dist/types/packages/desk/src/compose/tap.d.ts +5 -0
  125. package/dist/types/packages/desk/src/docs.d.ts +23 -0
  126. package/dist/types/packages/desk/src/engine/budget.d.ts +43 -0
  127. package/dist/types/packages/desk/src/engine/device.d.ts +54 -0
  128. package/dist/types/packages/desk/src/engine/index.d.ts +5 -0
  129. package/dist/types/packages/desk/src/engine/pipeline.d.ts +36 -0
  130. package/dist/types/packages/desk/src/engine/rasters.d.ts +66 -0
  131. package/dist/types/packages/desk/src/engine/records.d.ts +56 -0
  132. package/dist/types/packages/desk/src/engine/shader.d.ts +22 -0
  133. package/dist/types/packages/desk/src/engine/struct.d.ts +39 -0
  134. package/dist/types/packages/desk/src/engine/target.d.ts +26 -0
  135. package/dist/types/packages/desk/src/faults.d.ts +38 -0
  136. package/dist/types/packages/desk/src/gpu-ablation.d.ts +61 -0
  137. package/dist/types/packages/desk/src/gpu-memory.d.ts +54 -0
  138. package/dist/types/packages/desk/src/gpu-profiler.d.ts +141 -0
  139. package/dist/types/packages/desk/src/gpu-wrap.d.ts +8 -0
  140. package/dist/types/packages/desk/src/ground.d.ts +537 -0
  141. package/dist/types/packages/desk/src/hold/focus.d.ts +53 -0
  142. package/dist/types/packages/desk/src/hold/pose.d.ts +152 -0
  143. package/dist/types/packages/desk/src/hold/shaders.d.ts +9 -0
  144. package/dist/types/packages/desk/src/host/editor.d.ts +18 -0
  145. package/dist/types/packages/desk/src/host/index.d.ts +9 -0
  146. package/dist/types/packages/desk/src/host/ink.d.ts +18 -0
  147. package/dist/types/packages/desk/src/host/layer.d.ts +536 -0
  148. package/dist/types/packages/desk/src/host/picture.d.ts +2 -0
  149. package/dist/types/packages/desk/src/host/surface.d.ts +5 -0
  150. package/dist/types/packages/desk/src/index.d.ts +16 -0
  151. package/dist/types/packages/desk/src/kind.d.ts +189 -0
  152. package/dist/types/packages/desk/src/kinds/world.d.ts +447 -0
  153. package/dist/types/packages/desk/src/kit/arrays.d.ts +88 -0
  154. package/dist/types/packages/desk/src/kit/blobs.d.ts +40 -0
  155. package/dist/types/packages/desk/src/kit/book.d.ts +2 -0
  156. package/dist/types/packages/desk/src/kit/editor.d.ts +105 -0
  157. package/dist/types/packages/desk/src/kit/eye.d.ts +37 -0
  158. package/dist/types/packages/desk/src/kit/hold.d.ts +1 -0
  159. package/dist/types/packages/desk/src/kit/index.d.ts +26 -0
  160. package/dist/types/packages/desk/src/kit/inside.d.ts +116 -0
  161. package/dist/types/packages/desk/src/kit/layer.d.ts +159 -0
  162. package/dist/types/packages/desk/src/kit/light.d.ts +3 -0
  163. package/dist/types/packages/desk/src/kit/mesh.d.ts +29 -0
  164. package/dist/types/packages/desk/src/kit/mips.d.ts +2 -0
  165. package/dist/types/packages/desk/src/kit/nav.d.ts +2 -0
  166. package/dist/types/packages/desk/src/kit/paper-tex.d.ts +5 -0
  167. package/dist/types/packages/desk/src/kit/physics.d.ts +44 -0
  168. package/dist/types/packages/desk/src/kit/place.d.ts +44 -0
  169. package/dist/types/packages/desk/src/kit/print.d.ts +30 -0
  170. package/dist/types/packages/desk/src/kit/raster.d.ts +34 -0
  171. package/dist/types/packages/desk/src/kit/sdf.d.ts +1 -0
  172. package/dist/types/packages/desk/src/kit/seeds.d.ts +11 -0
  173. package/dist/types/packages/desk/src/kit/services.d.ts +34 -0
  174. package/dist/types/packages/desk/src/kit/springs.d.ts +12 -0
  175. package/dist/types/packages/desk/src/kit/strokes.d.ts +93 -0
  176. package/dist/types/packages/desk/src/kit/text.d.ts +142 -0
  177. package/dist/types/packages/desk/src/kit/uniform.d.ts +8 -0
  178. package/dist/types/packages/desk/src/kit/view.d.ts +39 -0
  179. package/dist/types/packages/desk/src/kit/wgsl.d.ts +15 -0
  180. package/dist/types/packages/desk/src/lattice/line.d.ts +15 -0
  181. package/dist/types/packages/desk/src/lattice/lod.d.ts +52 -0
  182. package/dist/types/packages/desk/src/lattice/ruler.d.ts +88 -0
  183. package/dist/types/packages/desk/src/marks/assemble.d.ts +65 -0
  184. package/dist/types/packages/desk/src/marks/ease.d.ts +4 -0
  185. package/dist/types/packages/desk/src/marks/laser.d.ts +41 -0
  186. package/dist/types/packages/desk/src/marks/layout.d.ts +167 -0
  187. package/dist/types/packages/desk/src/marks/pass.d.ts +59 -0
  188. package/dist/types/packages/desk/src/marks/shaders.d.ts +12 -0
  189. package/dist/types/packages/desk/src/mat/grid.d.ts +50 -0
  190. package/dist/types/packages/desk/src/mat/lamp.d.ts +14 -0
  191. package/dist/types/packages/desk/src/mat/layout.d.ts +144 -0
  192. package/dist/types/packages/desk/src/mat/mat-pass.d.ts +83 -0
  193. package/dist/types/packages/desk/src/mat/night.d.ts +95 -0
  194. package/dist/types/packages/desk/src/mat/projector.d.ts +39 -0
  195. package/dist/types/packages/desk/src/mat/shaders.d.ts +17 -0
  196. package/dist/types/packages/desk/src/mat/tilt.d.ts +14 -0
  197. package/dist/types/packages/desk/src/missing/layout.d.ts +27 -0
  198. package/dist/types/packages/desk/src/missing/object.d.ts +6 -0
  199. package/dist/types/packages/desk/src/missing/pass.d.ts +39 -0
  200. package/dist/types/packages/desk/src/missing/shaders.d.ts +7 -0
  201. package/dist/types/packages/desk/src/missing/slots.d.ts +8 -0
  202. package/dist/types/packages/desk/src/nav/flight.d.ts +186 -0
  203. package/dist/types/packages/desk/src/nav/portal.d.ts +95 -0
  204. package/dist/types/packages/desk/src/object.d.ts +46 -0
  205. package/dist/types/packages/desk/src/pass-instrument.d.ts +89 -0
  206. package/dist/types/packages/desk/src/shaders.d.ts +12 -0
  207. package/dist/types/packages/desk/src/shaders.gen.d.ts +17 -0
  208. package/dist/types/packages/desk/src/submit-instrument.d.ts +36 -0
  209. package/dist/types/packages/desk/src/theme.d.ts +497 -0
  210. package/dist/types/packages/desk/src/tray/carry.d.ts +99 -0
  211. package/dist/types/packages/desk/src/tray/drawer.d.ts +124 -0
  212. package/dist/types/packages/desk/src/tray/flux.d.ts +49 -0
  213. package/dist/types/packages/desk/src/tray/index.d.ts +4 -0
  214. package/dist/types/packages/desk/src/tray/lattice.d.ts +71 -0
  215. package/dist/types/packages/desk/src/tray/layout.d.ts +7 -0
  216. package/dist/types/packages/desk/src/tray/look.d.ts +29 -0
  217. package/dist/types/packages/desk/src/tray/pass.d.ts +101 -0
  218. package/dist/types/packages/desk/src/tray/shaders.d.ts +10 -0
  219. package/dist/types/packages/desk/src/tray/specimens.d.ts +214 -0
  220. package/dist/types/packages/devtools/src/attach.d.ts +22 -8
  221. package/dist/types/packages/devtools/src/dock.d.ts +18 -14
  222. package/dist/types/packages/devtools/src/gpu-panel.d.ts +105 -0
  223. package/dist/types/packages/devtools/src/index.d.ts +5 -4
  224. package/dist/types/packages/dom/src/desk-host.d.ts +104 -0
  225. package/dist/types/packages/dom/src/host.d.ts +13 -14
  226. package/dist/types/packages/dom/src/index.d.ts +12 -10
  227. package/dist/types/packages/dom/src/loop.d.ts +18 -1
  228. package/dist/types/packages/dom/src/pointer-adapter.d.ts +11 -29
  229. package/dist/types/packages/dom/src/widget-focus.d.ts +17 -13
  230. package/dist/types/packages/ice/src/desk-engine.d.ts +2 -0
  231. package/dist/types/packages/ice/src/desk-kit.d.ts +6 -0
  232. package/dist/types/packages/ice/src/desk-objects.d.ts +5 -0
  233. package/dist/types/packages/ice/src/desk.d.ts +5 -0
  234. package/dist/types/packages/kernel/src/atlas-pack.d.ts +157 -0
  235. package/dist/types/packages/kernel/src/bezier.d.ts +0 -15
  236. package/dist/types/packages/kernel/src/coords.d.ts +0 -39
  237. package/dist/types/packages/kernel/src/index.d.ts +2 -2
  238. package/dist/types/packages/kernel/src/nav-flight.d.ts +6 -0
  239. package/dist/types/packages/kernel/src/tray.d.ts +155 -0
  240. package/dist/types/packages/objects/src/board/board-pass.d.ts +180 -0
  241. package/dist/types/packages/objects/src/board/board-pen.d.ts +36 -0
  242. package/dist/types/packages/objects/src/board/board.d.ts +104 -0
  243. package/dist/types/packages/objects/src/board/data.d.ts +31 -0
  244. package/dist/types/packages/objects/src/board/history.d.ts +33 -0
  245. package/dist/types/packages/objects/src/board/kind.d.ts +208 -0
  246. package/dist/types/packages/objects/src/board/layout.d.ts +102 -0
  247. package/dist/types/packages/objects/src/board/object.d.ts +7 -0
  248. package/dist/types/packages/objects/src/board/pen.d.ts +71 -0
  249. package/dist/types/packages/objects/src/board/shaders.d.ts +36 -0
  250. package/dist/types/packages/objects/src/board/stroke.d.ts +99 -0
  251. package/dist/types/packages/objects/src/board/theme.d.ts +150 -0
  252. package/dist/types/packages/objects/src/calendar/data.d.ts +97 -0
  253. package/dist/types/packages/objects/src/calendar/events.d.ts +58 -0
  254. package/dist/types/packages/objects/src/calendar/hand.d.ts +53 -0
  255. package/dist/types/packages/objects/src/calendar/host/input.d.ts +67 -0
  256. package/dist/types/packages/objects/src/calendar/host/print.d.ts +9 -0
  257. package/dist/types/packages/objects/src/calendar/kind.d.ts +297 -0
  258. package/dist/types/packages/objects/src/calendar/law.d.ts +151 -0
  259. package/dist/types/packages/objects/src/calendar/layout.d.ts +47 -0
  260. package/dist/types/packages/objects/src/calendar/month.d.ts +75 -0
  261. package/dist/types/packages/objects/src/calendar/object.d.ts +45 -0
  262. package/dist/types/packages/objects/src/calendar/pad.d.ts +42 -0
  263. package/dist/types/packages/objects/src/calendar/pass.d.ts +229 -0
  264. package/dist/types/packages/objects/src/calendar/print.d.ts +87 -0
  265. package/dist/types/packages/objects/src/calendar/printing.d.ts +80 -0
  266. package/dist/types/packages/objects/src/calendar/roll.d.ts +45 -0
  267. package/dist/types/packages/objects/src/calendar/shaders.d.ts +12 -0
  268. package/dist/types/packages/objects/src/calendar/sheet.d.ts +43 -0
  269. package/dist/types/packages/objects/src/calendar/tiles.d.ts +67 -0
  270. package/dist/types/packages/objects/src/calendar/turn.d.ts +73 -0
  271. package/dist/types/packages/objects/src/calendar/writing.d.ts +42 -0
  272. package/dist/types/packages/objects/src/index.d.ts +22 -0
  273. package/dist/types/packages/objects/src/kinds.d.ts +24 -0
  274. package/dist/types/packages/objects/src/minimat/inside.d.ts +17 -0
  275. package/dist/types/packages/objects/src/minimat/kind.d.ts +51 -0
  276. package/dist/types/packages/objects/src/minimat/layout.d.ts +83 -0
  277. package/dist/types/packages/objects/src/minimat/minimat.d.ts +179 -0
  278. package/dist/types/packages/objects/src/minimat/object.d.ts +8 -0
  279. package/dist/types/packages/objects/src/minimat/pass.d.ts +61 -0
  280. package/dist/types/packages/objects/src/minimat/shaders.d.ts +10 -0
  281. package/dist/types/packages/objects/src/minimat/theme.d.ts +98 -0
  282. package/dist/types/packages/objects/src/notebook/ink.d.ts +70 -0
  283. package/dist/types/packages/objects/src/notebook/kind.d.ts +236 -0
  284. package/dist/types/packages/objects/src/notebook/law.d.ts +129 -0
  285. package/dist/types/packages/objects/src/notebook/layout.d.ts +46 -0
  286. package/dist/types/packages/objects/src/notebook/leaf.d.ts +44 -0
  287. package/dist/types/packages/objects/src/notebook/mesh.d.ts +20 -0
  288. package/dist/types/packages/objects/src/notebook/motion.d.ts +107 -0
  289. package/dist/types/packages/objects/src/notebook/object.d.ts +8 -0
  290. package/dist/types/packages/objects/src/notebook/pages.d.ts +56 -0
  291. package/dist/types/packages/objects/src/notebook/pass.d.ts +197 -0
  292. package/dist/types/packages/objects/src/notebook/pick.d.ts +30 -0
  293. package/dist/types/packages/objects/src/notebook/raster.d.ts +28 -0
  294. package/dist/types/packages/objects/src/notebook/shaders.d.ts +11 -0
  295. package/dist/types/packages/objects/src/notebook/shape.d.ts +155 -0
  296. package/dist/types/packages/objects/src/notebook/theme.d.ts +76 -0
  297. package/dist/types/packages/objects/src/palette.d.ts +577 -0
  298. package/dist/types/packages/objects/src/paper/host/body.d.ts +30 -0
  299. package/dist/types/packages/objects/src/paper/kind.d.ts +81 -0
  300. package/dist/types/packages/objects/src/paper/layout.d.ts +73 -0
  301. package/dist/types/packages/objects/src/paper/object.d.ts +31 -0
  302. package/dist/types/packages/objects/src/paper/pages.d.ts +43 -0
  303. package/dist/types/packages/objects/src/paper/paper-pass.d.ts +86 -0
  304. package/dist/types/packages/objects/src/paper/paper.d.ts +117 -0
  305. package/dist/types/packages/objects/src/paper/shaders.d.ts +18 -0
  306. package/dist/types/packages/objects/src/paper/theme.d.ts +58 -0
  307. package/dist/types/packages/objects/src/paper/typing.d.ts +51 -0
  308. package/dist/types/packages/objects/src/paper/writing.d.ts +161 -0
  309. package/dist/types/packages/objects/src/photo/carry.d.ts +33 -0
  310. package/dist/types/packages/objects/src/photo/kind.d.ts +136 -0
  311. package/dist/types/packages/objects/src/photo/layout.d.ts +39 -0
  312. package/dist/types/packages/objects/src/photo/object.d.ts +5 -0
  313. package/dist/types/packages/objects/src/photo/photo-pass.d.ts +104 -0
  314. package/dist/types/packages/objects/src/photo/photo.d.ts +262 -0
  315. package/dist/types/packages/objects/src/photo/pictures.d.ts +152 -0
  316. package/dist/types/packages/objects/src/photo/sample.d.ts +9 -0
  317. package/dist/types/packages/objects/src/photo/shaders.d.ts +18 -0
  318. package/dist/types/packages/objects/src/preset.d.ts +44 -0
  319. package/dist/types/packages/objects/src/shaders.d.ts +3 -0
  320. package/dist/types/packages/objects/src/shaders.gen.d.ts +21 -0
  321. package/dist/types/packages/react/src/canvas-hooks.d.ts +12 -0
  322. package/dist/types/packages/react/src/desk.d.ts +56 -0
  323. package/dist/types/packages/react/src/engine-context.d.ts +2 -2
  324. package/dist/types/packages/react/src/frame-preview-boundary.d.ts +19 -0
  325. package/dist/types/packages/react/src/hooks.d.ts +9 -14
  326. package/dist/types/packages/react/src/index.d.ts +16 -9
  327. package/dist/types/packages/react/src/keymap.d.ts +21 -2
  328. package/dist/types/packages/react/src/selection-menu.d.ts +174 -0
  329. package/dist/types/packages/react/src/tray-bar.d.ts +124 -0
  330. package/package.json +64 -31
  331. package/dist/chunk-2TNVB2ON.js +0 -1163
  332. package/dist/chunk-2TNVB2ON.js.map +0 -1
  333. package/dist/chunk-OR5FNVUE.js.map +0 -1
  334. package/dist/chunk-Q665T4L7.js +0 -681
  335. package/dist/chunk-Q665T4L7.js.map +0 -1
  336. package/dist/chunk-VGVDJZSP.js.map +0 -1
  337. package/dist/ground.js +0 -1108
  338. package/dist/ground.js.map +0 -1
  339. package/dist/r3f.js +0 -1644
  340. package/dist/r3f.js.map +0 -1
  341. package/dist/types/packages/core/src/input/measure-queue.d.ts +0 -30
  342. package/dist/types/packages/core/src/settings/ground-config.d.ts +0 -101
  343. package/dist/types/packages/core/src/systems/measure-ingest.d.ts +0 -26
  344. package/dist/types/packages/devtools/src/gl-panel.d.ts +0 -69
  345. package/dist/types/packages/dom/src/measure-adapter.d.ts +0 -31
  346. package/dist/types/packages/dom/src/measure-wiring.d.ts +0 -49
  347. package/dist/types/packages/dom/src/planes.d.ts +0 -33
  348. package/dist/types/packages/dom/src/reflectors/chrome.d.ts +0 -33
  349. package/dist/types/packages/dom/src/reflectors/dom-widgets.d.ts +0 -59
  350. package/dist/types/packages/dom/src/reflectors/graybox.d.ts +0 -31
  351. package/dist/types/packages/dom/src/reflectors/plane-transform.d.ts +0 -38
  352. package/dist/types/packages/ground/src/index.d.ts +0 -69
  353. package/dist/types/packages/ground/src/layer.d.ts +0 -40
  354. package/dist/types/packages/ground/src/pass.d.ts +0 -41
  355. package/dist/types/packages/ground/src/passes/grid-contract.d.ts +0 -28
  356. package/dist/types/packages/ground/src/passes/grid-magnet-pass.d.ts +0 -2
  357. package/dist/types/packages/ground/src/passes/grid-magnet.d.ts +0 -31
  358. package/dist/types/packages/ground/src/passes/grid.d.ts +0 -10
  359. package/dist/types/packages/ground/src/passes/guides-collect.d.ts +0 -14
  360. package/dist/types/packages/ground/src/passes/guides.d.ts +0 -3
  361. package/dist/types/packages/ground/src/passes/magnet-collect.d.ts +0 -63
  362. package/dist/types/packages/ground/src/passes/soup-collect.d.ts +0 -35
  363. package/dist/types/packages/ground/src/passes/soup-mesh.d.ts +0 -8
  364. package/dist/types/packages/ground/src/passes/wires-collect.d.ts +0 -35
  365. package/dist/types/packages/ground/src/passes/wires.d.ts +0 -10
  366. package/dist/types/packages/ground/src/poles.d.ts +0 -47
  367. package/dist/types/packages/ground/src/renderer.d.ts +0 -15
  368. package/dist/types/packages/ice/src/ground.d.ts +0 -1
  369. package/dist/types/packages/ice/src/r3f.d.ts +0 -1
  370. package/dist/types/packages/kernel/src/eviction.d.ts +0 -23
  371. package/dist/types/packages/kernel/src/zoom-bands.d.ts +0 -19
  372. package/dist/types/packages/r3f/src/bridge.d.ts +0 -129
  373. package/dist/types/packages/r3f/src/composite-material.d.ts +0 -26
  374. package/dist/types/packages/r3f/src/compositor-pass.d.ts +0 -105
  375. package/dist/types/packages/r3f/src/dev-write-trap.d.ts +0 -30
  376. package/dist/types/packages/r3f/src/gl-root.d.ts +0 -96
  377. package/dist/types/packages/r3f/src/gl-router.d.ts +0 -70
  378. package/dist/types/packages/r3f/src/index.d.ts +0 -17
  379. package/dist/types/packages/r3f/src/island-state.d.ts +0 -112
  380. package/dist/types/packages/r3f/src/island.d.ts +0 -13
  381. package/dist/types/packages/r3f/src/pool.d.ts +0 -56
  382. package/dist/types/packages/r3f/src/preview-capture.d.ts +0 -19
  383. package/dist/types/packages/r3f/src/resource-registry.d.ts +0 -30
  384. package/dist/types/packages/r3f/src/self-sustain.d.ts +0 -39
  385. package/dist/types/packages/r3f/src/use-island-frame.d.ts +0 -39
  386. package/dist/types/packages/react/src/infinite-canvas.d.ts +0 -140
  387. package/dist/types/packages/react/src/preview-snapshots.d.ts +0 -17
  388. package/dist/types/packages/react/src/widget-preview.d.ts +0 -14
  389. package/dist/types/packages/react/src/widget-root.d.ts +0 -33
@@ -24,7 +24,7 @@
24
24
  * `frozen` ride the resource for T2's departing-plane reflector; T1's camera
25
25
  * math only needs c0/c1.
26
26
  */
27
- import type { TickSystem, World } from "@vibecook/strata-ecs";
27
+ import type { Entity, TickSystem, World } from "@vibecook/strata-ecs";
28
28
  import type { CameraState, PortalAffine } from "../../../kernel/src/index";
29
29
  /** The one in-flight nav transition (design-006 §3.1). Inactive = at rest. */
30
30
  export declare const NavTransition: import("@vibecook/strata-ecs").Resource<import("@vibecook/strata-ecs").ValueOf<{
@@ -37,8 +37,29 @@ export declare const NavTransition: import("@vibecook/strata-ecs").Resource<impo
37
37
  readonly frozen: import("@vibecook/strata-ecs").FieldSpec<"bool", true>;
38
38
  /** Bumps on every flight start; T2 distinguishes retarget from resume. */
39
39
  readonly epoch: import("@vibecook/strata-ecs").FieldSpec<"u32", true>;
40
+ /** CanvasSession/document identity captured at the authority cut. */
41
+ readonly documentEpoch: import("@vibecook/strata-ecs").FieldSpec<"u32", true>;
42
+ readonly fromFrame: import("@vibecook/strata-ecs").FieldSpec<"eid", true>;
43
+ readonly toFrame: import("@vibecook/strata-ecs").FieldSpec<"eid", true>;
44
+ readonly fromTypeId: import("@vibecook/strata-ecs").FieldSpec<"string", true>;
45
+ readonly toTypeId: import("@vibecook/strata-ecs").FieldSpec<"string", true>;
40
46
  /** Response multiplier from octave distance (locked at start; §4). */
41
47
  readonly durMul: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
48
+ /**
49
+ * The DEPARTED frame's camera at the cut (design-013 §8 B7, D-B7.1): what it renders under
50
+ * at p = 0 — bit for bit, never through the affine and back — and throughout a frozen
51
+ * flight. `departedCameraOf` is the one reader.
52
+ */
53
+ readonly fromX: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
54
+ readonly fromY: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
55
+ readonly fromZ: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
56
+ /**
57
+ * Ticks the spring has stepped. The FIRST tick after the cut holds at p = 0 (B7): one frame
58
+ * is drawn with the camera at the exact `c0` — the arriving frame IS the portal's last frame,
59
+ * the departed frame IS its pre-cut frame — so the cut changes no pixel and the motion begins
60
+ * from a frame that exists. The oracle's `p = 0` still is a product frame, not a fiction.
61
+ */
62
+ readonly ticks: import("@vibecook/strata-ecs").FieldSpec<"u32", true>;
42
63
  readonly c0x: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
43
64
  readonly c0y: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
44
65
  readonly c0z: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
@@ -59,8 +80,29 @@ export declare const NavTransition: import("@vibecook/strata-ecs").Resource<impo
59
80
  readonly frozen: import("@vibecook/strata-ecs").FieldSpec<"bool", true>;
60
81
  /** Bumps on every flight start; T2 distinguishes retarget from resume. */
61
82
  readonly epoch: import("@vibecook/strata-ecs").FieldSpec<"u32", true>;
83
+ /** CanvasSession/document identity captured at the authority cut. */
84
+ readonly documentEpoch: import("@vibecook/strata-ecs").FieldSpec<"u32", true>;
85
+ readonly fromFrame: import("@vibecook/strata-ecs").FieldSpec<"eid", true>;
86
+ readonly toFrame: import("@vibecook/strata-ecs").FieldSpec<"eid", true>;
87
+ readonly fromTypeId: import("@vibecook/strata-ecs").FieldSpec<"string", true>;
88
+ readonly toTypeId: import("@vibecook/strata-ecs").FieldSpec<"string", true>;
62
89
  /** Response multiplier from octave distance (locked at start; §4). */
63
90
  readonly durMul: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
91
+ /**
92
+ * The DEPARTED frame's camera at the cut (design-013 §8 B7, D-B7.1): what it renders under
93
+ * at p = 0 — bit for bit, never through the affine and back — and throughout a frozen
94
+ * flight. `departedCameraOf` is the one reader.
95
+ */
96
+ readonly fromX: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
97
+ readonly fromY: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
98
+ readonly fromZ: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
99
+ /**
100
+ * Ticks the spring has stepped. The FIRST tick after the cut holds at p = 0 (B7): one frame
101
+ * is drawn with the camera at the exact `c0` — the arriving frame IS the portal's last frame,
102
+ * the departed frame IS its pre-cut frame — so the cut changes no pixel and the motion begins
103
+ * from a frame that exists. The oracle's `p = 0` still is a product frame, not a fiction.
104
+ */
105
+ readonly ticks: import("@vibecook/strata-ecs").FieldSpec<"u32", true>;
64
106
  readonly c0x: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
65
107
  readonly c0y: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
66
108
  readonly c0z: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
@@ -72,14 +114,54 @@ export declare const NavTransition: import("@vibecook/strata-ecs").Resource<impo
72
114
  readonly aox: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
73
115
  readonly aoy: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
74
116
  }>;
117
+ export interface NavTransitionIdentity {
118
+ readonly documentEpoch: number;
119
+ readonly fromFrame: Entity;
120
+ readonly toFrame: Entity;
121
+ readonly fromTypeId: string;
122
+ readonly toTypeId: string;
123
+ }
124
+ /** The one in-flight transition's field values, as `departedCameraOf` reads them. */
125
+ export interface DepartedCameraInputs {
126
+ readonly frozen: boolean;
127
+ readonly c0x: number;
128
+ readonly c0y: number;
129
+ readonly c0z: number;
130
+ readonly fromX: number;
131
+ readonly fromY: number;
132
+ readonly fromZ: number;
133
+ readonly as: number;
134
+ readonly aox: number;
135
+ readonly aoy: number;
136
+ }
137
+ /**
138
+ * The camera the DEPARTED frame renders under this frame (design-013 §8 B7, D-B7.1; the
139
+ * ground's `departedCamera`, moved onto the resource). Riding the flight through the affine
140
+ * (`outgoingCamera`) — except at the cut itself, where it is the pre-cut camera bit for bit
141
+ * (the affine and its inverse round-trip to within an ulp, and at zoom 1 an ulp is the other
142
+ * side of a decade), and throughout a FROZEN flight, where the departed frame stays at its
143
+ * pre-cut appearance and fades (design-006 §5: the cap broke the geometry, so the story is a
144
+ * dissolve, not a portal). Every presenter of the departed frame — the ground's second slot,
145
+ * the DOM's departing plane — reads this one rule, so they agree to the bit.
146
+ */
147
+ export declare function departedCameraOf(t: DepartedCameraInputs, cam: CameraState): CameraState;
75
148
  /**
76
149
  * Arm a flight from the already-cut world: continuity-solve was done by the
77
- * caller (`exact` = c0 in destination-frame coords), the arrival `c1` is
150
+ * caller (`exact` = c0 in destination-frame coords — from a LIVE PORTAL the
151
+ * camera the inside was already rendering under, `outgoingCamera(M, camPre)`,
152
+ * so the cut changes no pixel; D-B7.1), the arrival `c1` is
78
153
  * already clamped. Applies the depth cap (§5), snaps the camera to c0, and
79
154
  * activates the resource. Callers guarantee a live Viewport — headless/no-
80
155
  * viewport paths snap to the arrival instead and never reach here.
81
156
  */
82
- export declare function startNavFlight(world: World, kind: "enter" | "exit", A: PortalAffine, exact: CameraState, c1: CameraState): void;
157
+ export declare function startNavFlight(world: World, kind: "enter" | "exit", A: PortalAffine, exact: CameraState, c1: CameraState, identity?: NavTransitionIdentity): void;
158
+ /**
159
+ * Publish an epoch-bound logical switch even when geometry is deliberately cut. A cut that
160
+ * lands mid-flight ENDS that flight: its departed set is released here, because the tick that
161
+ * owns the release never runs for an inactive resource (B9 review blocker 4 — `Retained` leaked
162
+ * for the session, and Residency never evicted those keys).
163
+ */
164
+ export declare function publishNavCut(world: World, kind: "enter" | "exit", from: CameraState, to: CameraState, identity?: NavTransitionIdentity, A?: PortalAffine): void;
83
165
  /** Deactivate without touching the camera (integrity pops, gesture yields). */
84
166
  export declare function abortNavFlight(world: World): void;
85
167
  /**
@@ -0,0 +1,44 @@
1
+ /**
2
+ * The ENTER GESTURE (design-015 §9; D2b) — a double-tap on a `Container` asks to enter it, a
3
+ * double-tap on the bare frame asks to leave. `ctl:behave`, after `selectBehavior`: the first
4
+ * tap SELECTS at once (the prototype's click), the second — the same target, within
5
+ * `multiTapWindowMs`, within `multiTapSlopPx` — is the gesture. Detected from two INSTANT
6
+ * taps (each Recognized at count 1) held in `NavTapMemo`, not from a `MultiTap(2)` opt-in on
7
+ * the target: that machinery parks the first tap Pending for the whole window, so a plain
8
+ * click on a container would select 280 ms late — a latency the prototype never had (its
9
+ * first click selected, its dblclick entered). `MultiTap` stays what it is for widgets that
10
+ * want a counted tap.
11
+ *
12
+ * The op itself is NOT run here: `enterContainer` spawns, writes tags and rebuilds the index —
13
+ * structural writes, illegal mid-tick. The gesture writes the one-tick `NavIntent` fact and the
14
+ * facade applies it once `engine.step` returns (nav-geometry.ts). A tap on a PART (`DownPart`)
15
+ * is the app's and never counts; a tap while a flight drives is not a double-tap's first half
16
+ * (the flight yields to nothing but a camera gesture).
17
+ */
18
+ import type { Entity, System, World } from "@vibecook/strata-ecs";
19
+ /** The last instant tap: its target (0 = the bare frame), where and when — the double-tap's first half. */
20
+ export declare const NavTapMemo: import("@vibecook/strata-ecs").Resource<import("@vibecook/strata-ecs").ValueOf<{
21
+ readonly target: import("@vibecook/strata-ecs").FieldSpec<"eid", true>;
22
+ readonly x: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
23
+ readonly y: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
24
+ readonly at: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
25
+ /** Bumps per tap seen; 0 = no memo. */
26
+ readonly seq: import("@vibecook/strata-ecs").FieldSpec<"u32", true>;
27
+ }>, {
28
+ readonly target: import("@vibecook/strata-ecs").FieldSpec<"eid", true>;
29
+ readonly x: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
30
+ readonly y: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
31
+ readonly at: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
32
+ /** Bumps per tap seen; 0 = no memo. */
33
+ readonly seq: import("@vibecook/strata-ecs").FieldSpec<"u32", true>;
34
+ }>;
35
+ export interface NavTapOpts {
36
+ /** Is this entity a container the engine may enter (the facade's catalog-backed test)? Default: the `Container` tag. */
37
+ readonly isContainer?: (entity: Entity) => boolean;
38
+ /**
39
+ * Is this entity an object that OPENS (design-015 §8, D4b — the facade's catalog-backed test: its widget type
40
+ * declares `openable`)? A double-tap on one asks to pick it up (`HeldIntent`), not to enter it. Default: nothing opens.
41
+ */
42
+ readonly isOpenable?: (entity: Entity) => boolean;
43
+ }
44
+ export declare function createNavTap(world: World, opts?: NavTapOpts): System;
@@ -0,0 +1,25 @@
1
+ /**
2
+ * The button a press began with (petition I28) — read off the pointer's `PointerButtons.buttons` on its `WentDown` tick, which is
3
+ * the down fact's own PointerEvent `buttons` mask (ingest's fold ends at the transition, l0-input.ts). A pointerdown carries the
4
+ * one button that pressed: a second button joining a held press arrives as a pointermove (the Pointer Events spec's chorded
5
+ * buttons), never as a down.
6
+ *
7
+ * - PRIMARY — bit 1 (a mouse's left button, a touch, a pen's tip) or 32 (a pen's eraser end: the board's eraser reads it), or
8
+ * no bit at all (a synthetic down that names no button — every press, as before I28). The recognizers take it, and the hand.
9
+ * - MIDDLE — bit 4: a drag only where its drag pans — `dragRoute`'s device convention on the bare canvas (design-003 §4.4), the
10
+ * hand's pan brought close (held.ts) — and never a tap, a long press, or a grab of what is under it.
11
+ * - SECONDARY — anything else (2: the right button, a pen's barrel; 8/16: back and forward): a POINT. Its point, its pick and
12
+ * its hover move with it (ingest, `picking`); nothing selects, drags, enters or works a part. Its `contextmenu` is the host's.
13
+ *
14
+ * Pure over the ctx: no writes.
15
+ */
16
+ import type { Entity, SystemCtx } from "@vibecook/strata-ecs";
17
+ export type PressButton = "primary" | "middle" | "secondary";
18
+ /** The button a press began with, from the `buttons` mask its down carried. */
19
+ export declare function pressButton(buttons: number): PressButton;
20
+ /**
21
+ * Whether a MIDDLE press on `captured` is a drag: where `dragRoute` sends a drag to its CANVAS branch, whose device convention pans
22
+ * — the bare canvas, or a capture that is no handle, no port and no object (a wire). Over a handle, a port or an object it is a
23
+ * point: before I28 it resized, connected or MOVED what it landed on.
24
+ */
25
+ export declare function middlePans(ctx: Pick<SystemCtx, "has" | "hasTag">, captured: Entity | undefined): boolean;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * THE WHEEL OF A HOLDING PRESS (design-015 §6's photo; D3t-a — PHOTO.md: "wheel while holding turns the print about the
3
+ * finger"). While a local pointer's press holds a widget that declares `interaction.wheelTurns` (its `WheelTurns`
4
+ * capability — a recognizer of the press captures it), the wheel on that pointer is the WIDGET's: this system stamps the
5
+ * one-tick `WheelHandled` (both wheel consumers skip it — the camera never zooms under a carried print) and adds the tick's
6
+ * deltas to the pointer's `PressWheel`, a running sum a reflector can still read after the tick, when `PointerWheel` has been
7
+ * zeroed. The sum starts at the press's first wheel and leaves with the press. The head of `react`, beside the held input:
8
+ * the ingest's facts are flushed by then and what this stamps flushes before `ctl`.
9
+ */
10
+ import type { System, World } from "@vibecook/strata-ecs";
11
+ export declare function createPressWheel(world: World): System;
@@ -0,0 +1,111 @@
1
+ /**
2
+ * TRAY INPUT (design-016 §7; design-017 §4 — K3) — the pegboard drawer's share of the pointer, beside the hand's (systems/held.ts)
3
+ * and in its vocabulary. Right after `heldInput` at the head of `react`: the ingest's one-tick tags are flushed by then (a press is
4
+ * visible), and what this stamps flushes before `ctl`, so the recognizers and both wheel consumers never hear of what the tray
5
+ * takes. PICKING does not hear it either way — it runs in this same phase, before the stamp lands (a tag is a structural write,
6
+ * applied at the phase boundary) — so it reads `Tray.open` itself and answers the bare canvas for every local pointer while the
7
+ * drawer is out (l1-pick; K9 law #1: without that, the DOM-at-event-time halves read a live hit THROUGH the drawer). While an
8
+ * object is in hand the tray stands aside (the hand's frame never draws it).
9
+ *
10
+ * - CLOSED, the drawer takes no pointer (design-018 §5, R2 — the lip's handle, its hover and its press retired): a press at the
11
+ * bottom centre is the desk's like any other. What opens the drawer is the app's — the `a` key, and the DOM bar (`<TrayBar>`,
12
+ * @ice/react), whose down never reaches the canvas as a press. Only a wheel stream it took while out stays its own (below).
13
+ * - OPEN, the desk is INERT: every local pointer gets the one-tick `HandledByWidget` and `WheelHandled`, each tick, as the hand's
14
+ * do — so "the wheel never moves the camera" is not a rule the camera keeps; it is a fact the camera never hears about. Over the
15
+ * drawer the wheel scrolls it (`dy`; the OS's momentum arrives as deltas and is applied as it comes — no inertia of ours; ⌘/ctrl
16
+ * and a pinch are swallowed) and a press-drag scrolls it; past an end the rest is the band's `stretch` (a reversal unwinds it
17
+ * first), which lets go once the scroll input has been quiet `letGoMs` — or (K9) once a FADING tail has pushed it `fadeDeltas`
18
+ * shrinking deltas, the rest of that tail spent (the OS's momentum no longer holds it for its second). A click on the dimmed desk — pressed and released there,
19
+ * unmoved — closes it. Shut, the wheel stays the tray's until it has been quiet `letGoMs` (K9): a flick's momentum still
20
+ * arriving as the drawer shuts never zooms the desk.
21
+ * - K5b, TAKING ONE (design-017 §9): a press on a SPECIMEN is `TrayPress specimen` — its type, the grab point across the object as the
22
+ * board draws it (kernel `specimenFit`), the specimen's centre on screen. Past the slop its COPY lifts (`Tray.take` and the pointer:
23
+ * the renderer's flux draws it; the specimen stays hung); a press on a specimen never scrolls the board. Out of the drawer's open
24
+ * rect the copy is HANDED to the desk: the drawer slides away (`open` false), `handed` bumps (that tick `take` still names it, where
25
+ * it left — what the renderer's ghost grows out of — and it clears the tick after), and the one-tick `TrayIntent` asks the
26
+ * facade for `ops.insertByDrag` after the step — the insert ghost under the same grab point, its synthetic down this pointer's, the
27
+ * ordinary drag from there. The press becomes `carry`: released back over the drawer as drawn — still sliding away, its open rect
28
+ * the desk's once it has shut (K9) — the ghost's gesture is CANCELLED
29
+ * (`CancelRequest` — the ctl sweep reads it this tick, before the release can commit) and it flies home. Released inside the drawer,
30
+ * or the drawer shut under it (Esc, the key), the take is put back: nothing was made, nothing enters undo.
31
+ *
32
+ * Where the drawer is comes through the SEAM `TrayPoseSlot` beside `heldPose`: the renderer's word on the drawer as it DREW it this
33
+ * frame (its rect mid-slide, the scroll range its layout gives), so a hit and the clamp agree with the pixels. Nothing here reads a
34
+ * kind or a pixel; opening a drawer cancels every gesture in flight (`CancelRequest`, read by the `ctl:spawn` sweep this tick).
35
+ */
36
+ import type { Entity, System, TickSystem, World } from "@vibecook/strata-ecs";
37
+ import type { DropPlacementPolicy } from "./l3-drop";
38
+ import { type WidgetType } from "../widget/define-widget";
39
+ /**
40
+ * The drawer ON SCREEN as the renderer drew it this frame, CSS px: its outline box (top-left, width, full height — the part below
41
+ * the view included), the slide `p` (0 closed … 1 open), the scroll range `max` the laid content gives, the board's `pitch`, and
42
+ * the `scroll` as DRAWN — the fact's plus the band's shown pull — so a board point under the pointer is the one on screen. K9: the
43
+ * `face`, the board's height the drawer shows inside its rim — the range is the content's foot plus a pitch less it (kernel
44
+ * `trayScrollMax`), so the lay can clamp the scroll in the tick a new foot or face moves the range; absent, nothing clamps it.
45
+ * design-018 R4: the `head`, how far under its top nothing of the board's content shows (the renderer's clear HEADER, where a host lays
46
+ * the category chips) — a specimen scrolled under it is never hovered or taken there: a press there is the board's; absent, 0.
47
+ * Petition I21: the `foot`, how far above its bottom edge nothing of the content shows (a host's foot inset — its line floats over the
48
+ * board there): the same at the foot, and the range is the content's foot plus a pitch less the face ABOVE it; absent, 0.
49
+ */
50
+ export interface TrayScreenFrame {
51
+ readonly x: number;
52
+ readonly y: number;
53
+ readonly w: number;
54
+ readonly h: number;
55
+ readonly p: number;
56
+ readonly max: number;
57
+ readonly pitch: number;
58
+ readonly scroll: number;
59
+ readonly face?: number;
60
+ readonly head?: number;
61
+ readonly foot?: number;
62
+ }
63
+ /** The pose seam: the renderer's word on where the drawer is — `undefined` before its first frame. */
64
+ export interface TrayPoseSource {
65
+ frame(): TrayScreenFrame | undefined;
66
+ }
67
+ /** The stack's slot for the pose source — a mutable box, so the renderer can arrive after install (as `heldPose`). */
68
+ export interface TrayPoseSlot {
69
+ current: TrayPoseSource | null;
70
+ }
71
+ /** The tray's input numbers (design-017 §7): a click's slop, how long the scroll input must be quiet before the band lets go — and (K9, D-K9-c.3) how many shrinking deltas in a row a fading tail pushes the band before it lets go. (design-018 §5: the lip's drag, handle and pad retired with it.) */
72
+ export declare const TRAY_INPUT: {
73
+ readonly slopPx: 4;
74
+ readonly letGoMs: 120;
75
+ readonly fadeDeltas: 3;
76
+ };
77
+ /** The tray's specimens (K5a): the tray entity's children tagged `Specimen`, in sibling order. */
78
+ export declare function specimensOf(world: World, tray: Entity): Entity[];
79
+ /** A delta down the board into scroll ∈ [0, max], the rest into the band; a delta back unwinds the band first. */
80
+ export declare function scrollBy(scroll: number, stretch: number, d: number, max: number): {
81
+ readonly scroll: number;
82
+ readonly stretch: number;
83
+ };
84
+ export declare function createTrayInput(world: World, opts: {
85
+ readonly pose: TrayPoseSlot;
86
+ }): System;
87
+ /** The catalog's object types that carry a tray entry — the tray's contents (K-L2: no list here names a kind); the registry's in an unbound world. The lay hangs those the current frame takes (K9). */
88
+ export declare function hungTypes(world: World): WidgetType[];
89
+ /**
90
+ * THE TRAY'S LAY (design-017 §8; K5a) — the specimens in the world: one RUNTIME entity per object type whose widget carries a tray
91
+ * entry (`hungTypes`), `ChildOf` the tray entity (the root of its runtime canvas), `PrefabId` its type, `Position`/`Size` where the
92
+ * lattice law lays it (kernel `layTray`) across the drawer AS THE RENDERER DREW IT (the pose seam's width and pitch), its entry's
93
+ * props over the widget's defaults, spawned `Specimen` and already `WidgetEquipped` (nothing stamps it; the spatial index never
94
+ * takes it). Laid once the renderer has said how wide the drawer is; re-laid when that width, the pitch or the entries change (a
95
+ * kind registered), a specimen whose kind left destroyed; after a reset the new tray entity is laid afresh. `TrayContent` records
96
+ * what was laid — the content's foot is the renderer's scroll range. A tick system: its spawns are the scheduler's, once a frame.
97
+ * K9 (S10, D-K9-c.2): when that range MOVES — a lay (the width, the kinds) or the drawer's face (the view's height) — a scroll past its
98
+ * new end with nothing stretching is clamped to it in the same tick, so no frame draws blank board past the content and the next wheel
99
+ * starts from the end; only on a move, so the rig's door (`scrollTray`) still takes any value until the range next moves.
100
+ * K9 (S13, D-K9-c.4): it hangs what the CURRENT frame takes — inside an entered container its ingress, at the root its canvas's
101
+ * placement, the authority a drop's commit asks (`placement`) — so no specimen offers a take the frame would refuse; entering or
102
+ * leaving re-lays it (the drawer is shut then: the desk is inert while it is out). Without a policy, every hung type.
103
+ * design-018 §6 (R2) — THE FILTER: of those it lays only the entries of the category the drawer shows (`Tray.category`, "" all); a
104
+ * change of it re-lays, and the board starts again at its top — the scroll and the band zeroed. A category the frame hangs none of
105
+ * (its last entry gone with the frame, or an id no entry names) falls back to all. What the frame could hang before the filter — its
106
+ * categories in the lay's order and their counts — is recorded in `TrayContent.present` (the ops' `trayCategories`: a host's chips).
107
+ */
108
+ export declare function createTrayLay(world: World, opts: {
109
+ readonly pose: TrayPoseSlot;
110
+ readonly placement?: DropPlacementPolicy | undefined;
111
+ }): TickSystem;
@@ -0,0 +1,30 @@
1
+ /**
2
+ * The ZOOM-THROUGH (design-015 §9, design-013 Q13 → ON; PORTAL.md §8 — D2b). `ctl:behave`,
3
+ * after `cameraControl`: on a frame whose wheel zoomed (`WheelZoomStep`, D2a-core's one-tick
4
+ * fact — pans never cut, and the touch pinch is not recorded there, D-D2a.6), when no flight
5
+ * drives and the settings say so —
6
+ *
7
+ * - a zoom IN: the topmost Active container (paint order) whose face has come in whole
8
+ * (presence 1) AND covers the whole viewport by `in` CSS px is entered as a CUT nobody can
9
+ * see: the view already IS its inside, and the cut lands on the camera the inside was
10
+ * rendering under (`transition: "cut"`).
11
+ * - a zoom OUT: when the current frame's own face — under the parent camera the inside
12
+ * renders as it does now, the continuity solve — no longer covers the view by `out` px, the
13
+ * frame is left as a cut onto that parent camera.
14
+ *
15
+ * Both are asked through the one-tick `NavIntent` fact (ops are structural — illegal mid-tick;
16
+ * the facade applies it right after the step) with `redress` set: the entered desk was DRESSED
17
+ * for its arrival as a face (`from` = the arrival's zoom), the left desk for the camera it was
18
+ * cut at (`from` = the camera's zoom) — the renderer re-dresses over its own ramp and hands the
19
+ * lamp over on it (`NavRedress`, written by the applier). The faces come through the nav
20
+ * geometry seam (the drawn face, the gate's answer, the cover test), else core's static rect.
21
+ */
22
+ import type { Entity, TickSystem, World } from "@vibecook/strata-ecs";
23
+ import { type NavGeometrySlot } from "../nav/nav-geometry";
24
+ export interface ZoomThroughOpts {
25
+ /** The nav geometry seam the faces are read through (the interaction stack's slot). */
26
+ readonly navGeometry?: NavGeometrySlot;
27
+ /** Is this entity a container the engine may enter (the facade's catalog-backed test)? Default: any `Container`. */
28
+ readonly isContainer?: (entity: Entity) => boolean;
29
+ }
30
+ export declare function createZoomThrough(world: World, opts?: ZoomThroughOpts): TickSystem;
@@ -8,6 +8,8 @@
8
8
  * Built-ins ship as configs of this same primitive:
9
9
  * - select: tap/longPress/drag; canvas drag → marquee (pan on touch /
10
10
  * space / middle-button — device conventions, honored ABOVE tool policy).
11
+ * A shift-held canvas drag takes `route.canvasDragShift` (design-015 §9,
12
+ * D2a-core), which defaults to the tool's own `canvasDrag`.
11
13
  * - pan: hand cursor; every drag pans.
12
14
  * - connect: crosshair; widget/port drags connect (design-003 §5.8).
13
15
  * - draw(widgetType): factory — canvas drag creates ONE widget from the
@@ -24,6 +26,14 @@ export type WidgetDragRoute = "move" | "pan" | "connect" | "none";
24
26
  export interface ToolRoute {
25
27
  /** Drag starting on empty canvas (after device overrides: touch/space/middle → pan). */
26
28
  readonly canvasDrag?: CanvasDragRoute;
29
+ /**
30
+ * The same drag with SHIFT held (design-015 §9, D-D11 — D2a-core): the desk's
31
+ * select tool pans the bare mat and draws its marquee on shift —
32
+ * `{ canvasDrag: "pan", canvasDragShift: "marquee" }`. Omitted: the tool's
33
+ * own `canvasDrag`, so shift changes nothing (every tool before this field).
34
+ * The device conventions (touch / space / middle → pan) still sit above it.
35
+ */
36
+ readonly canvasDragShift?: CanvasDragRoute;
27
37
  /** Drag starting on a widget body. */
28
38
  readonly widgetDrag?: WidgetDragRoute;
29
39
  /** Drag starting on a port entity ("connect" | "none"). */