@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.
- package/README.md +79 -50
- package/dist/chunk-BA7XJC27.js +2429 -0
- package/dist/chunk-BA7XJC27.js.map +1 -0
- package/dist/chunk-BKV4ZEU3.js +1 -0
- package/dist/chunk-BKV4ZEU3.js.map +1 -0
- package/dist/{chunk-VGVDJZSP.js → chunk-DYK6KNLG.js} +13206 -7387
- package/dist/chunk-DYK6KNLG.js.map +1 -0
- package/dist/chunk-ENIFIUEP.js +155 -0
- package/dist/chunk-ENIFIUEP.js.map +1 -0
- package/dist/chunk-IBWWLA6D.js +634 -0
- package/dist/chunk-IBWWLA6D.js.map +1 -0
- package/dist/{chunk-OR5FNVUE.js → chunk-JS6PG6YD.js} +398 -167
- package/dist/chunk-JS6PG6YD.js.map +1 -0
- package/dist/chunk-QXOCF56A.js +148 -0
- package/dist/chunk-QXOCF56A.js.map +1 -0
- package/dist/chunk-ZPUPBULB.js +7399 -0
- package/dist/chunk-ZPUPBULB.js.map +1 -0
- package/dist/desk-engine.js +36 -0
- package/dist/desk-engine.js.map +1 -0
- package/dist/desk-kit.js +244 -0
- package/dist/desk-kit.js.map +1 -0
- package/dist/desk-objects.js +12728 -0
- package/dist/desk-objects.js.map +1 -0
- package/dist/desk.js +469 -0
- package/dist/desk.js.map +1 -0
- package/dist/devtools.js +233 -189
- package/dist/devtools.js.map +1 -1
- package/dist/dom.js +7 -19
- package/dist/index.js +232 -20
- package/dist/kernel.js +53 -25
- package/dist/react.js +1045 -38
- package/dist/react.js.map +1 -1
- package/dist/types/packages/core/src/behavior/define-behavior.d.ts +11 -0
- package/dist/types/packages/core/src/behavior/runtime.d.ts +4 -0
- package/dist/types/packages/core/src/canvas/define-canvas-type.d.ts +86 -0
- package/dist/types/packages/core/src/canvas/define-container.d.ts +17 -0
- package/dist/types/packages/core/src/canvas/diagnostics.d.ts +27 -0
- package/dist/types/packages/core/src/canvas/engine-catalog.d.ts +70 -0
- package/dist/types/packages/core/src/canvas/extensions.d.ts +125 -0
- package/dist/types/packages/core/src/canvas/frame-behavior-host.d.ts +16 -0
- package/dist/types/packages/core/src/canvas/frame-preview.d.ts +79 -0
- package/dist/types/packages/core/src/canvas/frame-projection.d.ts +38 -0
- package/dist/types/packages/core/src/canvas/frame-view.d.ts +36 -0
- package/dist/types/packages/core/src/canvas/migrate.d.ts +14 -0
- package/dist/types/packages/core/src/canvas/placement.d.ts +30 -0
- package/dist/types/packages/core/src/canvas/presentation-transition.d.ts +100 -0
- package/dist/types/packages/core/src/canvas/runtime-extension-host.d.ts +16 -0
- package/dist/types/packages/core/src/canvas/session.d.ts +47 -0
- package/dist/types/packages/core/src/catalog/camera-derived.d.ts +16 -27
- package/dist/types/packages/core/src/catalog/desk.d.ts +326 -0
- package/dist/types/packages/core/src/catalog/gesture.d.ts +51 -0
- package/dist/types/packages/core/src/catalog/graph.d.ts +2 -2
- package/dist/types/packages/core/src/catalog/index.d.ts +2 -0
- package/dist/types/packages/core/src/catalog/pointer.d.ts +42 -0
- package/dist/types/packages/core/src/catalog/selection-presence.d.ts +7 -0
- package/dist/types/packages/core/src/catalog/settings-resources.d.ts +28 -2
- package/dist/types/packages/core/src/catalog/surface.d.ts +1 -0
- package/dist/types/packages/core/src/doc/doc-commit-sink.d.ts +18 -2
- package/dist/types/packages/core/src/doc/doc-kit.d.ts +21 -2
- package/dist/types/packages/core/src/doc/envelope.d.ts +5 -2
- package/dist/types/packages/core/src/doc/schema-migrate.d.ts +1 -1
- package/dist/types/packages/core/src/doc/version-gate.d.ts +21 -3
- package/dist/types/packages/core/src/engine/commit-sink.d.ts +10 -1
- package/dist/types/packages/core/src/engine/engine.d.ts +6 -0
- package/dist/types/packages/core/src/engine/frame-control.d.ts +74 -0
- package/dist/types/packages/core/src/engine/guests.d.ts +4 -1
- package/dist/types/packages/core/src/engine/world-doors.d.ts +12 -0
- package/dist/types/packages/core/src/facade/create-canvas-engine.d.ts +146 -13
- package/dist/types/packages/core/src/index.d.ts +33 -12
- package/dist/types/packages/core/src/input/queue.d.ts +3 -1
- package/dist/types/packages/core/src/interaction/install.d.ts +30 -0
- package/dist/types/packages/core/src/interaction/wakes.d.ts +24 -0
- package/dist/types/packages/core/src/nav/nav-geometry.d.ts +100 -0
- package/dist/types/packages/core/src/nav/nested-canvas.d.ts +47 -4
- package/dist/types/packages/core/src/ops/cascade.d.ts +2 -1
- package/dist/types/packages/core/src/ops/claims.d.ts +6 -0
- package/dist/types/packages/core/src/ops/insert.d.ts +4 -0
- package/dist/types/packages/core/src/ops/point-pick.d.ts +4 -1
- package/dist/types/packages/core/src/ops/sibling-order.d.ts +14 -4
- package/dist/types/packages/core/src/ops/tray.d.ts +48 -0
- package/dist/types/packages/core/src/presence/presence-kit.d.ts +5 -0
- package/dist/types/packages/core/src/schema/meta.d.ts +10 -0
- package/dist/types/packages/core/src/schema/prefab.d.ts +8 -0
- package/dist/types/packages/core/src/settings/defaults.d.ts +25 -6
- package/dist/types/packages/core/src/surface/gpu-device.d.ts +55 -0
- package/dist/types/packages/core/src/systems/camera-sim.d.ts +29 -0
- package/dist/types/packages/core/src/systems/chrome.d.ts +15 -23
- package/dist/types/packages/core/src/systems/drag-mods.d.ts +34 -0
- package/dist/types/packages/core/src/systems/held.d.ts +71 -0
- package/dist/types/packages/core/src/systems/insert-ghost.d.ts +2 -0
- package/dist/types/packages/core/src/systems/l0-input.d.ts +14 -0
- package/dist/types/packages/core/src/systems/l1-pick.d.ts +37 -1
- package/dist/types/packages/core/src/systems/l2-arbitrate.d.ts +18 -4
- package/dist/types/packages/core/src/systems/l3-behave.d.ts +4 -1
- package/dist/types/packages/core/src/systems/l3-claim.d.ts +7 -0
- package/dist/types/packages/core/src/systems/l3-connect.d.ts +1 -1
- package/dist/types/packages/core/src/systems/l3-drop.d.ts +30 -1
- package/dist/types/packages/core/src/systems/l3-marquee.d.ts +2 -1
- package/dist/types/packages/core/src/systems/l3-ports.d.ts +1 -1
- package/dist/types/packages/core/src/systems/l4-cursor.d.ts +5 -0
- package/dist/types/packages/core/src/systems/nav-flight.d.ts +85 -3
- package/dist/types/packages/core/src/systems/nav-tap.d.ts +44 -0
- package/dist/types/packages/core/src/systems/press-wheel.d.ts +11 -0
- package/dist/types/packages/core/src/systems/tray.d.ts +108 -0
- package/dist/types/packages/core/src/systems/zoom-through.d.ts +30 -0
- package/dist/types/packages/core/src/tools/define-tool.d.ts +10 -0
- package/dist/types/packages/core/src/widget/define-widget.d.ts +166 -63
- package/dist/types/packages/core/src/widget/equip.d.ts +14 -2
- package/dist/types/packages/core/src/widget/held-tools.d.ts +83 -0
- package/dist/types/packages/core/src/widget/menu-actions.d.ts +44 -0
- package/dist/types/packages/core/src/widget/mount-store.d.ts +21 -46
- package/dist/types/packages/core/src/widget/spawn.d.ts +1 -1
- package/dist/types/packages/desk/src/assets/blue-noise.gen.d.ts +10 -0
- package/dist/types/packages/desk/src/card/card.d.ts +103 -0
- package/dist/types/packages/desk/src/compose/ambient.d.ts +59 -0
- package/dist/types/packages/desk/src/compose/builder.d.ts +285 -0
- package/dist/types/packages/desk/src/compose/children.d.ts +3 -0
- package/dist/types/packages/desk/src/compose/index.d.ts +14 -0
- package/dist/types/packages/desk/src/compose/marks.d.ts +126 -0
- package/dist/types/packages/desk/src/compose/pick.d.ts +5 -0
- package/dist/types/packages/desk/src/compose/reflector.d.ts +111 -0
- package/dist/types/packages/desk/src/compose/tap.d.ts +5 -0
- package/dist/types/packages/desk/src/docs.d.ts +23 -0
- package/dist/types/packages/desk/src/engine/budget.d.ts +38 -0
- package/dist/types/packages/desk/src/engine/device.d.ts +54 -0
- package/dist/types/packages/desk/src/engine/index.d.ts +5 -0
- package/dist/types/packages/desk/src/engine/pipeline.d.ts +36 -0
- package/dist/types/packages/desk/src/engine/rasters.d.ts +66 -0
- package/dist/types/packages/desk/src/engine/records.d.ts +56 -0
- package/dist/types/packages/desk/src/engine/shader.d.ts +22 -0
- package/dist/types/packages/desk/src/engine/struct.d.ts +39 -0
- package/dist/types/packages/desk/src/engine/target.d.ts +26 -0
- package/dist/types/packages/desk/src/gpu-ablation.d.ts +61 -0
- package/dist/types/packages/desk/src/gpu-memory.d.ts +54 -0
- package/dist/types/packages/desk/src/gpu-profiler.d.ts +141 -0
- package/dist/types/packages/desk/src/gpu-wrap.d.ts +8 -0
- package/dist/types/packages/desk/src/ground.d.ts +388 -0
- package/dist/types/packages/desk/src/hold/focus.d.ts +53 -0
- package/dist/types/packages/desk/src/hold/pose.d.ts +132 -0
- package/dist/types/packages/desk/src/hold/shaders.d.ts +9 -0
- package/dist/types/packages/desk/src/host/editor.d.ts +18 -0
- package/dist/types/packages/desk/src/host/index.d.ts +9 -0
- package/dist/types/packages/desk/src/host/ink.d.ts +18 -0
- package/dist/types/packages/desk/src/host/layer.d.ts +430 -0
- package/dist/types/packages/desk/src/host/picture.d.ts +2 -0
- package/dist/types/packages/desk/src/host/surface.d.ts +5 -0
- package/dist/types/packages/desk/src/index.d.ts +13 -0
- package/dist/types/packages/desk/src/kind.d.ts +187 -0
- package/dist/types/packages/desk/src/kinds/world.d.ts +429 -0
- package/dist/types/packages/desk/src/kit/arrays.d.ts +88 -0
- package/dist/types/packages/desk/src/kit/blobs.d.ts +40 -0
- package/dist/types/packages/desk/src/kit/book.d.ts +2 -0
- package/dist/types/packages/desk/src/kit/editor.d.ts +103 -0
- package/dist/types/packages/desk/src/kit/eye.d.ts +37 -0
- package/dist/types/packages/desk/src/kit/hold.d.ts +1 -0
- package/dist/types/packages/desk/src/kit/index.d.ts +26 -0
- package/dist/types/packages/desk/src/kit/inside.d.ts +116 -0
- package/dist/types/packages/desk/src/kit/layer.d.ts +159 -0
- package/dist/types/packages/desk/src/kit/light.d.ts +3 -0
- package/dist/types/packages/desk/src/kit/mesh.d.ts +29 -0
- package/dist/types/packages/desk/src/kit/mips.d.ts +2 -0
- package/dist/types/packages/desk/src/kit/nav.d.ts +2 -0
- package/dist/types/packages/desk/src/kit/paper-tex.d.ts +5 -0
- package/dist/types/packages/desk/src/kit/physics.d.ts +44 -0
- package/dist/types/packages/desk/src/kit/place.d.ts +44 -0
- package/dist/types/packages/desk/src/kit/print.d.ts +30 -0
- package/dist/types/packages/desk/src/kit/raster.d.ts +34 -0
- package/dist/types/packages/desk/src/kit/sdf.d.ts +1 -0
- package/dist/types/packages/desk/src/kit/seeds.d.ts +11 -0
- package/dist/types/packages/desk/src/kit/services.d.ts +34 -0
- package/dist/types/packages/desk/src/kit/springs.d.ts +12 -0
- package/dist/types/packages/desk/src/kit/strokes.d.ts +93 -0
- package/dist/types/packages/desk/src/kit/text.d.ts +142 -0
- package/dist/types/packages/desk/src/kit/uniform.d.ts +8 -0
- package/dist/types/packages/desk/src/kit/view.d.ts +39 -0
- package/dist/types/packages/desk/src/kit/wgsl.d.ts +15 -0
- package/dist/types/packages/desk/src/lattice/line.d.ts +15 -0
- package/dist/types/packages/desk/src/lattice/lod.d.ts +52 -0
- package/dist/types/packages/desk/src/lattice/ruler.d.ts +88 -0
- package/dist/types/packages/desk/src/marks/assemble.d.ts +65 -0
- package/dist/types/packages/desk/src/marks/ease.d.ts +4 -0
- package/dist/types/packages/desk/src/marks/laser.d.ts +41 -0
- package/dist/types/packages/desk/src/marks/layout.d.ts +167 -0
- package/dist/types/packages/desk/src/marks/pass.d.ts +59 -0
- package/dist/types/packages/desk/src/marks/shaders.d.ts +12 -0
- package/dist/types/packages/desk/src/mat/grid.d.ts +50 -0
- package/dist/types/packages/desk/src/mat/lamp.d.ts +14 -0
- package/dist/types/packages/desk/src/mat/layout.d.ts +144 -0
- package/dist/types/packages/desk/src/mat/mat-pass.d.ts +83 -0
- package/dist/types/packages/desk/src/mat/night.d.ts +95 -0
- package/dist/types/packages/desk/src/mat/projector.d.ts +39 -0
- package/dist/types/packages/desk/src/mat/shaders.d.ts +17 -0
- package/dist/types/packages/desk/src/mat/tilt.d.ts +14 -0
- package/dist/types/packages/desk/src/nav/flight.d.ts +186 -0
- package/dist/types/packages/desk/src/nav/portal.d.ts +95 -0
- package/dist/types/packages/desk/src/object.d.ts +46 -0
- package/dist/types/packages/desk/src/pass-instrument.d.ts +89 -0
- package/dist/types/packages/desk/src/shaders.d.ts +12 -0
- package/dist/types/packages/desk/src/shaders.gen.d.ts +16 -0
- package/dist/types/packages/desk/src/submit-instrument.d.ts +36 -0
- package/dist/types/packages/desk/src/theme.d.ts +475 -0
- package/dist/types/packages/desk/src/tray/carry.d.ts +99 -0
- package/dist/types/packages/desk/src/tray/drawer.d.ts +113 -0
- package/dist/types/packages/desk/src/tray/flux.d.ts +46 -0
- package/dist/types/packages/desk/src/tray/index.d.ts +4 -0
- package/dist/types/packages/desk/src/tray/lattice.d.ts +71 -0
- package/dist/types/packages/desk/src/tray/layout.d.ts +7 -0
- package/dist/types/packages/desk/src/tray/look.d.ts +29 -0
- package/dist/types/packages/desk/src/tray/pass.d.ts +96 -0
- package/dist/types/packages/desk/src/tray/shaders.d.ts +10 -0
- package/dist/types/packages/desk/src/tray/specimens.d.ts +199 -0
- package/dist/types/packages/devtools/src/attach.d.ts +22 -8
- package/dist/types/packages/devtools/src/dock.d.ts +18 -14
- package/dist/types/packages/devtools/src/gpu-panel.d.ts +105 -0
- package/dist/types/packages/devtools/src/index.d.ts +5 -4
- package/dist/types/packages/dom/src/desk-host.d.ts +91 -0
- package/dist/types/packages/dom/src/host.d.ts +13 -14
- package/dist/types/packages/dom/src/index.d.ts +12 -10
- package/dist/types/packages/dom/src/loop.d.ts +18 -1
- package/dist/types/packages/dom/src/pointer-adapter.d.ts +5 -29
- package/dist/types/packages/dom/src/widget-focus.d.ts +17 -13
- package/dist/types/packages/ice/src/desk-engine.d.ts +2 -0
- package/dist/types/packages/ice/src/desk-kit.d.ts +6 -0
- package/dist/types/packages/ice/src/desk-objects.d.ts +5 -0
- package/dist/types/packages/ice/src/desk.d.ts +5 -0
- package/dist/types/packages/kernel/src/atlas-pack.d.ts +157 -0
- package/dist/types/packages/kernel/src/bezier.d.ts +0 -15
- package/dist/types/packages/kernel/src/coords.d.ts +0 -39
- package/dist/types/packages/kernel/src/index.d.ts +2 -2
- package/dist/types/packages/kernel/src/nav-flight.d.ts +6 -0
- package/dist/types/packages/kernel/src/tray.d.ts +155 -0
- package/dist/types/packages/objects/src/board/board-pass.d.ts +180 -0
- package/dist/types/packages/objects/src/board/board-pen.d.ts +36 -0
- package/dist/types/packages/objects/src/board/board.d.ts +104 -0
- package/dist/types/packages/objects/src/board/data.d.ts +31 -0
- package/dist/types/packages/objects/src/board/history.d.ts +33 -0
- package/dist/types/packages/objects/src/board/kind.d.ts +208 -0
- package/dist/types/packages/objects/src/board/layout.d.ts +102 -0
- package/dist/types/packages/objects/src/board/object.d.ts +7 -0
- package/dist/types/packages/objects/src/board/pen.d.ts +71 -0
- package/dist/types/packages/objects/src/board/shaders.d.ts +36 -0
- package/dist/types/packages/objects/src/board/stroke.d.ts +99 -0
- package/dist/types/packages/objects/src/board/theme.d.ts +150 -0
- package/dist/types/packages/objects/src/calendar/data.d.ts +97 -0
- package/dist/types/packages/objects/src/calendar/events.d.ts +58 -0
- package/dist/types/packages/objects/src/calendar/hand.d.ts +53 -0
- package/dist/types/packages/objects/src/calendar/host/input.d.ts +67 -0
- package/dist/types/packages/objects/src/calendar/host/print.d.ts +9 -0
- package/dist/types/packages/objects/src/calendar/kind.d.ts +297 -0
- package/dist/types/packages/objects/src/calendar/law.d.ts +151 -0
- package/dist/types/packages/objects/src/calendar/layout.d.ts +47 -0
- package/dist/types/packages/objects/src/calendar/month.d.ts +75 -0
- package/dist/types/packages/objects/src/calendar/object.d.ts +45 -0
- package/dist/types/packages/objects/src/calendar/pad.d.ts +42 -0
- package/dist/types/packages/objects/src/calendar/pass.d.ts +229 -0
- package/dist/types/packages/objects/src/calendar/print.d.ts +87 -0
- package/dist/types/packages/objects/src/calendar/printing.d.ts +80 -0
- package/dist/types/packages/objects/src/calendar/roll.d.ts +45 -0
- package/dist/types/packages/objects/src/calendar/shaders.d.ts +12 -0
- package/dist/types/packages/objects/src/calendar/sheet.d.ts +43 -0
- package/dist/types/packages/objects/src/calendar/tiles.d.ts +67 -0
- package/dist/types/packages/objects/src/calendar/turn.d.ts +73 -0
- package/dist/types/packages/objects/src/calendar/writing.d.ts +42 -0
- package/dist/types/packages/objects/src/index.d.ts +22 -0
- package/dist/types/packages/objects/src/kinds.d.ts +24 -0
- package/dist/types/packages/objects/src/minimat/inside.d.ts +17 -0
- package/dist/types/packages/objects/src/minimat/kind.d.ts +51 -0
- package/dist/types/packages/objects/src/minimat/layout.d.ts +83 -0
- package/dist/types/packages/objects/src/minimat/minimat.d.ts +179 -0
- package/dist/types/packages/objects/src/minimat/object.d.ts +8 -0
- package/dist/types/packages/objects/src/minimat/pass.d.ts +61 -0
- package/dist/types/packages/objects/src/minimat/shaders.d.ts +10 -0
- package/dist/types/packages/objects/src/minimat/theme.d.ts +98 -0
- package/dist/types/packages/objects/src/notebook/ink.d.ts +70 -0
- package/dist/types/packages/objects/src/notebook/kind.d.ts +236 -0
- package/dist/types/packages/objects/src/notebook/law.d.ts +129 -0
- package/dist/types/packages/objects/src/notebook/layout.d.ts +46 -0
- package/dist/types/packages/objects/src/notebook/leaf.d.ts +44 -0
- package/dist/types/packages/objects/src/notebook/mesh.d.ts +20 -0
- package/dist/types/packages/objects/src/notebook/motion.d.ts +107 -0
- package/dist/types/packages/objects/src/notebook/object.d.ts +8 -0
- package/dist/types/packages/objects/src/notebook/pages.d.ts +56 -0
- package/dist/types/packages/objects/src/notebook/pass.d.ts +197 -0
- package/dist/types/packages/objects/src/notebook/pick.d.ts +30 -0
- package/dist/types/packages/objects/src/notebook/raster.d.ts +28 -0
- package/dist/types/packages/objects/src/notebook/shaders.d.ts +11 -0
- package/dist/types/packages/objects/src/notebook/shape.d.ts +155 -0
- package/dist/types/packages/objects/src/notebook/theme.d.ts +76 -0
- package/dist/types/packages/objects/src/palette.d.ts +577 -0
- package/dist/types/packages/objects/src/paper/host/body.d.ts +30 -0
- package/dist/types/packages/objects/src/paper/kind.d.ts +81 -0
- package/dist/types/packages/objects/src/paper/layout.d.ts +73 -0
- package/dist/types/packages/objects/src/paper/object.d.ts +31 -0
- package/dist/types/packages/objects/src/paper/pages.d.ts +43 -0
- package/dist/types/packages/objects/src/paper/paper-pass.d.ts +86 -0
- package/dist/types/packages/objects/src/paper/paper.d.ts +117 -0
- package/dist/types/packages/objects/src/paper/shaders.d.ts +18 -0
- package/dist/types/packages/objects/src/paper/theme.d.ts +58 -0
- package/dist/types/packages/objects/src/paper/typing.d.ts +51 -0
- package/dist/types/packages/objects/src/paper/writing.d.ts +161 -0
- package/dist/types/packages/objects/src/photo/carry.d.ts +33 -0
- package/dist/types/packages/objects/src/photo/kind.d.ts +136 -0
- package/dist/types/packages/objects/src/photo/layout.d.ts +39 -0
- package/dist/types/packages/objects/src/photo/object.d.ts +5 -0
- package/dist/types/packages/objects/src/photo/photo-pass.d.ts +104 -0
- package/dist/types/packages/objects/src/photo/photo.d.ts +262 -0
- package/dist/types/packages/objects/src/photo/pictures.d.ts +152 -0
- package/dist/types/packages/objects/src/photo/sample.d.ts +9 -0
- package/dist/types/packages/objects/src/photo/shaders.d.ts +18 -0
- package/dist/types/packages/objects/src/preset.d.ts +44 -0
- package/dist/types/packages/objects/src/shaders.d.ts +3 -0
- package/dist/types/packages/objects/src/shaders.gen.d.ts +21 -0
- package/dist/types/packages/react/src/canvas-hooks.d.ts +12 -0
- package/dist/types/packages/react/src/desk.d.ts +56 -0
- package/dist/types/packages/react/src/engine-context.d.ts +2 -2
- package/dist/types/packages/react/src/frame-preview-boundary.d.ts +19 -0
- package/dist/types/packages/react/src/hooks.d.ts +9 -14
- package/dist/types/packages/react/src/index.d.ts +16 -9
- package/dist/types/packages/react/src/keymap.d.ts +21 -2
- package/dist/types/packages/react/src/selection-menu.d.ts +171 -0
- package/dist/types/packages/react/src/tray-bar.d.ts +124 -0
- package/package.json +64 -31
- package/dist/chunk-2TNVB2ON.js +0 -1163
- package/dist/chunk-2TNVB2ON.js.map +0 -1
- package/dist/chunk-OR5FNVUE.js.map +0 -1
- package/dist/chunk-Q665T4L7.js +0 -681
- package/dist/chunk-Q665T4L7.js.map +0 -1
- package/dist/chunk-VGVDJZSP.js.map +0 -1
- package/dist/ground.js +0 -1108
- package/dist/ground.js.map +0 -1
- package/dist/r3f.js +0 -1644
- package/dist/r3f.js.map +0 -1
- package/dist/types/packages/core/src/input/measure-queue.d.ts +0 -30
- package/dist/types/packages/core/src/settings/ground-config.d.ts +0 -101
- package/dist/types/packages/core/src/systems/measure-ingest.d.ts +0 -26
- package/dist/types/packages/devtools/src/gl-panel.d.ts +0 -69
- package/dist/types/packages/dom/src/measure-adapter.d.ts +0 -31
- package/dist/types/packages/dom/src/measure-wiring.d.ts +0 -49
- package/dist/types/packages/dom/src/planes.d.ts +0 -33
- package/dist/types/packages/dom/src/reflectors/chrome.d.ts +0 -33
- package/dist/types/packages/dom/src/reflectors/dom-widgets.d.ts +0 -59
- package/dist/types/packages/dom/src/reflectors/graybox.d.ts +0 -31
- package/dist/types/packages/dom/src/reflectors/plane-transform.d.ts +0 -38
- package/dist/types/packages/ground/src/index.d.ts +0 -69
- package/dist/types/packages/ground/src/layer.d.ts +0 -40
- package/dist/types/packages/ground/src/pass.d.ts +0 -41
- package/dist/types/packages/ground/src/passes/grid-contract.d.ts +0 -28
- package/dist/types/packages/ground/src/passes/grid-magnet-pass.d.ts +0 -2
- package/dist/types/packages/ground/src/passes/grid-magnet.d.ts +0 -31
- package/dist/types/packages/ground/src/passes/grid.d.ts +0 -10
- package/dist/types/packages/ground/src/passes/guides-collect.d.ts +0 -14
- package/dist/types/packages/ground/src/passes/guides.d.ts +0 -3
- package/dist/types/packages/ground/src/passes/magnet-collect.d.ts +0 -63
- package/dist/types/packages/ground/src/passes/soup-collect.d.ts +0 -35
- package/dist/types/packages/ground/src/passes/soup-mesh.d.ts +0 -8
- package/dist/types/packages/ground/src/passes/wires-collect.d.ts +0 -35
- package/dist/types/packages/ground/src/passes/wires.d.ts +0 -10
- package/dist/types/packages/ground/src/poles.d.ts +0 -47
- package/dist/types/packages/ground/src/renderer.d.ts +0 -15
- package/dist/types/packages/ice/src/ground.d.ts +0 -1
- package/dist/types/packages/ice/src/r3f.d.ts +0 -1
- package/dist/types/packages/kernel/src/eviction.d.ts +0 -23
- package/dist/types/packages/kernel/src/zoom-bands.d.ts +0 -19
- package/dist/types/packages/r3f/src/bridge.d.ts +0 -129
- package/dist/types/packages/r3f/src/composite-material.d.ts +0 -26
- package/dist/types/packages/r3f/src/compositor-pass.d.ts +0 -105
- package/dist/types/packages/r3f/src/dev-write-trap.d.ts +0 -30
- package/dist/types/packages/r3f/src/gl-root.d.ts +0 -96
- package/dist/types/packages/r3f/src/gl-router.d.ts +0 -70
- package/dist/types/packages/r3f/src/index.d.ts +0 -17
- package/dist/types/packages/r3f/src/island-state.d.ts +0 -112
- package/dist/types/packages/r3f/src/island.d.ts +0 -13
- package/dist/types/packages/r3f/src/pool.d.ts +0 -56
- package/dist/types/packages/r3f/src/preview-capture.d.ts +0 -19
- package/dist/types/packages/r3f/src/resource-registry.d.ts +0 -30
- package/dist/types/packages/r3f/src/self-sustain.d.ts +0 -39
- package/dist/types/packages/r3f/src/use-island-frame.d.ts +0 -39
- package/dist/types/packages/react/src/infinite-canvas.d.ts +0 -140
- package/dist/types/packages/react/src/preview-snapshots.d.ts +0 -17
- package/dist/types/packages/react/src/widget-preview.d.ts +0 -14
- 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
|
|
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
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
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
|
|
16
|
-
* one-line summary
|
|
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" | "
|
|
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)
|
|
4
|
-
*
|
|
5
|
-
* (depcruise-enforced
|
|
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 {
|
|
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
|
|
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
|
-
*
|
|
13
|
-
* plane,
|
|
14
|
-
*
|
|
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
|
-
/**
|
|
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 —
|
|
3
|
-
*
|
|
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 {
|
|
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
|
|
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
|
|
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
|
-
*
|
|
48
|
-
*
|
|
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:
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
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
|
|
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
|
-
* (
|
|
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
|
-
/**
|
|
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
|
|
49
|
-
* only `keyboard: "exclusive"` widgets are
|
|
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
|
|
62
|
+
export declare function attachWidgetFocus(host: CanvasHost, lookup?: FocusHostLookup): WidgetFocusHandle;
|
|
@@ -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";
|