@vibecook/ice 0.10.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-5FQS7V2C.js → chunk-DYK6KNLG.js} +13303 -7485
- 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 +34 -13
- 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-5FQS7V2C.js.map +0 -1
- package/dist/chunk-JWRHAM7L.js +0 -1163
- package/dist/chunk-JWRHAM7L.js.map +0 -1
- package/dist/chunk-MFTMPJUF.js +0 -681
- package/dist/chunk-MFTMPJUF.js.map +0 -1
- package/dist/chunk-OR5FNVUE.js.map +0 -1
- package/dist/ground.js +0 -1213
- 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 -103
- 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-classic.d.ts +0 -30
- package/dist/types/packages/ground/src/passes/grid-magnet.d.ts +0 -31
- package/dist/types/packages/ground/src/passes/grid.d.ts +0 -28
- 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
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* THE ENGINE'S DEVICE (design-012 §4 "Device"; kept as the device door at design-015 D5b, slimmed at D7): ONE device
|
|
3
|
+
* per engine. An app that wants the device before the desk mounts — to read its uncaptured errors, to share it with
|
|
4
|
+
* work of its own — acquires it here and passes it to `createCanvasEngine({ compositorDevice })`; the desk's layer then
|
|
5
|
+
* DRAWS WITH IT (`createDeskHost` hands it through the layer context) instead of acquiring a device of its own, so
|
|
6
|
+
* `errors()` sees the desk's uncaptured GPU errors. Absent — the common case, and every headless engine — the desk
|
|
7
|
+
* acquires its own. The engine never destroys it: the app that acquired it owns its end of life.
|
|
8
|
+
*
|
|
9
|
+
* The error log subscribes with `addEventListener('uncapturederror')`, never the `onuncapturederror` property, so no
|
|
10
|
+
* other holder of the device can disconnect it; it is armed HERE, before any consumer exists, so no error goes unseen.
|
|
11
|
+
* (The three.js creation rules this module carried for the GL islands — no compatibility adapter, every advertised
|
|
12
|
+
* feature — left with three at D7; `hasCoreFeatures`, three's compatibility-mode signal, with them.) ONE feature is asked
|
|
13
|
+
* for whenever the adapter has it (design-016 §4, K2): `timestamp-query`, the GPU profiler's clock — a feature cannot be
|
|
14
|
+
* added to a device once it is made, and one left unused costs nothing, so every engine's device can be profiled.
|
|
15
|
+
*
|
|
16
|
+
* Headless-safe: WebGPU is not DOM (it exists in workers), so naming it here does not breach core's wall. The only
|
|
17
|
+
* environmental touch is reading `navigator.gpu`, and its absence is a clean typed failure, never a throw from deep
|
|
18
|
+
* inside a layer. TYPES: `@webgpu/types` is the ONE entry in `tsconfig.base.json`'s `types` array, and a runtime-free
|
|
19
|
+
* dependency of `@vibecook/ice`, so the published `.d.ts` resolves for consumers.
|
|
20
|
+
*/
|
|
21
|
+
export interface GpuUncapturedError {
|
|
22
|
+
/** `performance.now()` at capture, or 0 where the clock is unavailable. */
|
|
23
|
+
readonly at: number;
|
|
24
|
+
readonly type: string;
|
|
25
|
+
readonly message: string;
|
|
26
|
+
}
|
|
27
|
+
/** The engine's GPU facts. Reached as `engine.compositorDevice` — undefined unless the app passed one (the desk then acquires its own). */
|
|
28
|
+
export interface EngineGpu {
|
|
29
|
+
readonly adapter: GPUAdapter;
|
|
30
|
+
readonly device: GPUDevice;
|
|
31
|
+
/** Features actually enabled on the device (not merely adapter-advertised). */
|
|
32
|
+
readonly enabled: readonly string[];
|
|
33
|
+
/** `timestamp-query` is on the device — asked for whenever the adapter has it (the GPU profiler's clock, design-016 §4). */
|
|
34
|
+
readonly hasTimestampQuery: boolean;
|
|
35
|
+
/** Uncaptured GPU errors since acquisition, newest last. */
|
|
36
|
+
errors(): readonly GpuUncapturedError[];
|
|
37
|
+
/** Release the device. The ENGINE NEVER CALLS THIS — nor does the desk's layer that drew with it: the app that acquired it owns its end of life. */
|
|
38
|
+
destroy(): void;
|
|
39
|
+
}
|
|
40
|
+
export interface AcquireDeviceOpts {
|
|
41
|
+
/** Defaults to "high-performance" — the desk is the frame's fill cost. */
|
|
42
|
+
readonly powerPreference?: GPUPowerPreference;
|
|
43
|
+
/** Features to enable where the adapter has them, beside `timestamp-query` (always asked for where the adapter has it; the desk's drawing needs none). */
|
|
44
|
+
readonly requiredFeatures?: readonly GPUFeatureName[];
|
|
45
|
+
/** Cap the retained error log (defaults to 64). */
|
|
46
|
+
readonly maxErrors?: number;
|
|
47
|
+
}
|
|
48
|
+
export declare class GpuUnavailableError extends Error {
|
|
49
|
+
constructor(message: string);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Acquire the engine's device. Called by the APP before `createCanvasEngine({ compositorDevice })`; the desk's layer
|
|
53
|
+
* receives it from there. Throws {@link GpuUnavailableError} rather than returning a half-state.
|
|
54
|
+
*/
|
|
55
|
+
export declare function acquireCompositorDevice(opts?: AcquireDeviceOpts): Promise<EngineGpu>;
|
|
@@ -11,6 +11,35 @@ export declare const CameraInertia: import("@vibecook/strata-ecs").Resource<impo
|
|
|
11
11
|
readonly vx: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
|
|
12
12
|
readonly vy: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
|
|
13
13
|
}>;
|
|
14
|
+
/**
|
|
15
|
+
* This frame's WHEEL zoom (design-015 §9, D2a-core): the one-tick fact a system
|
|
16
|
+
* that runs after `cameraControl` reads to know "this frame zoomed in / out
|
|
17
|
+
* about this anchor" — D2b's zoom-through is the first. `cameraControl` is its
|
|
18
|
+
* one writer, change-only: it writes a step on each frame whose wheel zoom (a
|
|
19
|
+
* plain wheel in `"zoom"` mode, or a pinch-wheel in either mode) moved the
|
|
20
|
+
* zoom, and resets `ratio` to 1 on the first frame after that has none; idle
|
|
21
|
+
* frames write nothing.
|
|
22
|
+
* - `ratio`: zoom after ÷ zoom before, over this frame's wheel zooms — `> 1`
|
|
23
|
+
* zoomed in, `< 1` out, `1` no step (a clamped zoom is no step).
|
|
24
|
+
* - `anchorX/Y`: the screen point (CSS px) of the frame's last wheel zoom.
|
|
25
|
+
* - `tick`: the `FrameInfo.tick` it happened on, for a reader that runs BEFORE
|
|
26
|
+
* `cameraControl` and must tell last frame's step from this one's.
|
|
27
|
+
* Not recorded: pans, flights, ops (`zoomTo`, fits) and the TOUCH pinch — whose
|
|
28
|
+
* zoom is absolute from its own start (`startZoom · spread/startDist`), so a
|
|
29
|
+
* consumer that re-bases the camera mid-pinch would have to re-base the pinch
|
|
30
|
+
* too; that is the consumer's call to make, not a fact to hand it silently.
|
|
31
|
+
*/
|
|
32
|
+
export declare const WheelZoomStep: import("@vibecook/strata-ecs").Resource<import("@vibecook/strata-ecs").ValueOf<{
|
|
33
|
+
readonly ratio: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
|
|
34
|
+
readonly anchorX: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
|
|
35
|
+
readonly anchorY: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
|
|
36
|
+
readonly tick: import("@vibecook/strata-ecs").FieldSpec<"u32", true>;
|
|
37
|
+
}>, {
|
|
38
|
+
readonly ratio: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
|
|
39
|
+
readonly anchorX: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
|
|
40
|
+
readonly anchorY: import("@vibecook/strata-ecs").FieldSpec<"f32", true>;
|
|
41
|
+
readonly tick: import("@vibecook/strata-ecs").FieldSpec<"u32", true>;
|
|
42
|
+
}>;
|
|
14
43
|
export interface CameraSystems {
|
|
15
44
|
cameraControl: TickSystem;
|
|
16
45
|
cameraInertia: TickSystem;
|
|
@@ -3,14 +3,11 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Two systems, both derive-scheduled, both write change-only:
|
|
5
5
|
*
|
|
6
|
-
* `selectionChrome` — maintains POOLED
|
|
7
|
-
* `Selected` set:
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* (v1 parity); a MULTI-selection gets the box (group bbox) even when
|
|
12
|
-
* non-resizable; a single non-resizable widget gets no engine chrome (the
|
|
13
|
-
* app owns its selection look).
|
|
6
|
+
* `selectionChrome` — maintains the POOLED resize-handle entities mirroring the
|
|
7
|
+
* current `Selected` set: 8 handles carrying Position + Size + `HandleSpec{anchor}`,
|
|
8
|
+
* placed about the selection's union bbox. They exist only when EVERY selected
|
|
9
|
+
* entity is Resizable and none is taped (Locked) — v1 parity; any other
|
|
10
|
+
* selection gets no engine chrome (the desk's marks draw its look).
|
|
14
11
|
*
|
|
15
12
|
* HANDLE PICKING (the point of the design): handles carry a world AABB, so the
|
|
16
13
|
* `react`-phase `spatialSync` indexes them automatically and `picking` resolves
|
|
@@ -21,26 +18,21 @@
|
|
|
21
18
|
* so its on-screen hit target stays ~constant across zoom. The tradeoff: the
|
|
22
19
|
* handles must be recomputed whenever the camera zoom changes, so this system
|
|
23
20
|
* runs every frame a selection exists and rewrites the 8 handles' Position/Size
|
|
24
|
-
* change-only (a zoom change restamps 8 entities — small, bounded N
|
|
25
|
-
* "screen-space, recomputed on camera dirt, small N").
|
|
21
|
+
* change-only (a zoom change restamps 8 entities — small, bounded N).
|
|
26
22
|
*
|
|
27
|
-
* THE BOX
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* from a literal reading of the M6 brief's "Position+Size+SelectionBox" — the
|
|
33
|
-
* box's geometry lives on the `SelectionBox` value instead; the chrome reflector
|
|
34
|
-
* reads it from there.)
|
|
23
|
+
* THE SELECTION BOX LEFT AT design-015 D7: the pooled box entity carried the
|
|
24
|
+
* union bbox in a `SelectionBox` value (with a `VisualOf` edge from each handle)
|
|
25
|
+
* for the P4 DOM chrome that drew it; that chrome was deleted at D5b, nothing read
|
|
26
|
+
* the box, and it was rewritten every frame the union moved (every drag frame).
|
|
27
|
+
* Only what picking reads stays.
|
|
35
28
|
*
|
|
36
|
-
* POOL LIFECYCLE:
|
|
37
|
-
* selection appears and are reaped via `ctx.destroy` when it empties.
|
|
38
|
-
* spawn frame
|
|
29
|
+
* POOL LIFECYCLE: the handles spawn once via `ctx` (runtime prefab class) when a
|
|
30
|
+
* resizable selection appears and are reaped via `ctx.destroy` when it empties.
|
|
31
|
+
* On the spawn frame they are still identity-only (placement defers to the
|
|
39
32
|
* phase boundary), so their initial geometry rides the `ctx.spawn` payload and
|
|
40
33
|
* the change-only `edit().set` updates begin the next frame.
|
|
41
34
|
*
|
|
42
|
-
* `breakpoint` — `WidgetBreakpoint{tier,w,h}` from a widget's
|
|
43
|
-
* (`MeasuredSize` where auto-sized and >0, else `Size`), width-thresholded into
|
|
35
|
+
* `breakpoint` — `WidgetBreakpoint{tier,w,h}` from a widget's `Size`, width-thresholded into
|
|
44
36
|
* 5 tiers with ±10% boundary hysteresis. Added lazily (on `WidgetEquipped`
|
|
45
37
|
* widgets, once measured) and thereafter written ONLY when the tier changes —
|
|
46
38
|
* the LOD signal must be stable within a tier so the measure→tier→content→
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The desk's drag modifiers (design-015 §7, *Marks on the Mat*'s keys; D4a) — read off the recognizer's
|
|
3
|
+
* WATCHED pointer, whose `PointerMods` is the pointer's latched sample (design-003 §4.5; the keyboard
|
|
4
|
+
* carries only key events), so a modifier pressed or let go mid-drag takes effect on the next frame:
|
|
5
|
+
*
|
|
6
|
+
* - ⇧ locks the drag to ONE axis — its dominant one, recomputed from the total each frame (the page's
|
|
7
|
+
* `if (|dx| > |dy|) dy = 0 else dx = 0`); the snap then corrects only along the free axis.
|
|
8
|
+
* - ⌘ (or Ctrl) held holds the snap off.
|
|
9
|
+
* - ⌥ as the drag STARTS leaves a copy behind (moveClaim latches it as `LeavesCopy` on the recognizer;
|
|
10
|
+
* the release commits the copies with the move — one gesture, one undo step).
|
|
11
|
+
*
|
|
12
|
+
* Shared by the snap system and the move behavior, so the delta the snap aligns is the delta the move
|
|
13
|
+
* writes. Pure over the ctx: no writes.
|
|
14
|
+
*/
|
|
15
|
+
import type { Entity, SystemCtx } from "@vibecook/strata-ecs";
|
|
16
|
+
export interface DragMods {
|
|
17
|
+
readonly shift: boolean;
|
|
18
|
+
readonly alt: boolean;
|
|
19
|
+
readonly meta: boolean;
|
|
20
|
+
readonly ctrl: boolean;
|
|
21
|
+
}
|
|
22
|
+
/** The recognizer's watched pointer's modifiers now (none when it watches no pointer). */
|
|
23
|
+
export declare function watchedMods(ctx: Pick<SystemCtx, "getRelations" | "get">, rec: Entity): DragMods;
|
|
24
|
+
/** ⌘ or Ctrl held: the snap stands down for this frame. */
|
|
25
|
+
export declare const snapHeldOff: (mods: DragMods) => boolean;
|
|
26
|
+
/**
|
|
27
|
+
* A move drag's WORLD delta: the screen total over the zoom at its claim, locked to its dominant axis while ⇧ is
|
|
28
|
+
* held. `lock` names the axis it runs along (`x` = horizontally, its y held), null when free.
|
|
29
|
+
*/
|
|
30
|
+
export declare function moveDelta(ctx: Pick<SystemCtx, "read" | "getRelations" | "get">, rec: Entity): {
|
|
31
|
+
readonly x: number;
|
|
32
|
+
readonly y: number;
|
|
33
|
+
readonly lock: "x" | "y" | null;
|
|
34
|
+
};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HELD INPUT (design-015 §8; D4b) — while an object is in the hand, every pointer is the held
|
|
3
|
+
* object's and the desk behind it is inert. The HEAD of the `react` phase: the ingest's one-tick
|
|
4
|
+
* tags are flushed by then (a press is visible), and what this stamps flushes before `ctl`.
|
|
5
|
+
*
|
|
6
|
+
* The desk goes inert with the vocabulary the stack already honours: every local pointer gets the
|
|
7
|
+
* one-tick `HandledByWidget` (picking and the recognizers skip it — no hit, no tap, no drag, no
|
|
8
|
+
* selection change) and `WheelHandled` (both wheel consumers skip it — the camera never moves), the
|
|
9
|
+
* cleanup phase clears them, this system stamps them again next tick. So "no camera move" is not a
|
|
10
|
+
* rule the camera keeps; it is a fact the camera never hears about.
|
|
11
|
+
*
|
|
12
|
+
* What the pointer does instead is mapped through the SAME pose the renderer drew — the seam
|
|
13
|
+
* `HeldPoseSlot` beside `framePick`: the renderer publishes the held object's screen frame each
|
|
14
|
+
* frame (`HeldPoseSource.frame`), and a pointer's point becomes `HeldPointer` — the object's own
|
|
15
|
+
* units, centred — and an inside/outside verdict. The routes (desk.js `heldDown`/`heldMove`/
|
|
16
|
+
* `heldUp`/`heldZoomAt`/`heldPanBy`, number for number):
|
|
17
|
+
* - a ⌘/ctrl-wheel or a pinch brings the object closer ABOUT THE POINTER (`HeldView.zoom`, up to 3×,
|
|
18
|
+
* the pan following so the point under the pointer stays), never the mat; in past 0.72× it is put
|
|
19
|
+
* down — and the rest of that gesture is MUTED (`HeldMute`: 400 ms, +250 per swallowed event), so
|
|
20
|
+
* the wheel's tail never zooms the desk (the v2 lesson);
|
|
21
|
+
* - once brought close (zoom > 1) a plain wheel moves the object under the eye, clamped so it never
|
|
22
|
+
* leaves the middle of the view; a middle-button or Space drag pans the same way, as does a drag
|
|
23
|
+
* that starts on the soft desk;
|
|
24
|
+
* - a click on the soft desk — pressed and released outside the object, unmoved — puts it down; two
|
|
25
|
+
* instant taps on the object do too (the notebook's case rule, generalised) — unless they land on its
|
|
26
|
+
* drawing surface with a mode in hand (D3t-a): that press is the TOOL's (`HeldPress` `tool` — the
|
|
27
|
+
* board's stroke; a double-click there is two dots, never a way back) — or on one of the kind's named
|
|
28
|
+
* PARTS (D3t-b: any part but `content` and `frame`, the object itself): that press is the KIND's
|
|
29
|
+
* (`HeldPress` `part`, with the part it began on — a notebook's turn: two clicks there turn two pages).
|
|
30
|
+
* The ways back are OPS (`ops.putDown`, structural) and a system may not run them mid-tick: it writes
|
|
31
|
+
* the one-tick `HeldIntent` and the facade applies it after the step (D2b's `NavIntent`, same shape).
|
|
32
|
+
* Nothing here reads a kind: the seam gives a frame and (D3t-a) the part under a point; the tool in
|
|
33
|
+
* hand is core's `HeldTool`.
|
|
34
|
+
*/
|
|
35
|
+
import type { Entity, System, World } from "@vibecook/strata-ecs";
|
|
36
|
+
/** The held object's frame ON SCREEN as the renderer drew it this frame (CSS px): its centre, half extents, its scale (CSS px per object unit), and whether the pickup has settled (the wheel waits for it). */
|
|
37
|
+
export interface HeldScreenFrame {
|
|
38
|
+
readonly cx: number;
|
|
39
|
+
readonly cy: number;
|
|
40
|
+
readonly hx: number;
|
|
41
|
+
readonly hy: number;
|
|
42
|
+
readonly s: number;
|
|
43
|
+
readonly settled: boolean;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* The pose seam: the renderer's word on where the held object is — `undefined` before its first frame — and (D3t-a) which of
|
|
47
|
+
* its kind's parts is under a point of the object's own frame (its `hit` on the geometry it drew: the board's melamine
|
|
48
|
+
* `content`, its `frame`), null over nothing; absent = no parts ("content" inside the frame).
|
|
49
|
+
*/
|
|
50
|
+
export interface HeldPoseSource {
|
|
51
|
+
frame(entity: Entity): HeldScreenFrame | undefined;
|
|
52
|
+
part?(entity: Entity, x: number, y: number): string | null;
|
|
53
|
+
}
|
|
54
|
+
/** The stack's slot for the pose source — a mutable box, so the renderer can arrive after install (as `framePick`). */
|
|
55
|
+
export interface HeldPoseSlot {
|
|
56
|
+
current: HeldPoseSource | null;
|
|
57
|
+
}
|
|
58
|
+
/** The hand's numbers (desk.js `HOLD` and its wheel handler): the zoom's floor (put down below it) and ceiling, the wheel's rate, the mute, the press slop. */
|
|
59
|
+
export declare const HOLD_INPUT: {
|
|
60
|
+
readonly zoomMin: 0.72;
|
|
61
|
+
readonly zoomMax: 3;
|
|
62
|
+
readonly wheelRate: 0.0105;
|
|
63
|
+
readonly muteMs: 400;
|
|
64
|
+
readonly muteMoreMs: 250;
|
|
65
|
+
readonly slopPx: 3;
|
|
66
|
+
};
|
|
67
|
+
/** The held object, or undefined. */
|
|
68
|
+
export declare function heldEntity(world: World): Entity | undefined;
|
|
69
|
+
export declare function createHeldInput(world: World, opts: {
|
|
70
|
+
readonly pose: HeldPoseSlot;
|
|
71
|
+
}): System;
|
|
@@ -12,6 +12,8 @@
|
|
|
12
12
|
* out-of-ECS hand-off (`drainCreatedSelections`); they are drained on the
|
|
13
13
|
* commit tick and applied HERE one tick later, when the projection is
|
|
14
14
|
* alive — the select-on-grab the ghost held transfers to the real widget.
|
|
15
|
+
* Not to a twin created INSIDE a container: it is no member of this frame
|
|
16
|
+
* (`Selected ⇒ Active`, nested-canvas.ts), so the drop selects nothing.
|
|
15
17
|
*
|
|
16
18
|
* - RETIRING (`GhostRetiring`, cancel / rejected drop): despawned when the
|
|
17
19
|
* fly-back `TransformTween` lands (camera-sim removes it on arrival).
|
|
@@ -20,6 +20,20 @@
|
|
|
20
20
|
* cannot take `edit().set`). Facts are always true: `surfaceHandled` events
|
|
21
21
|
* still land, but carry the one-tick `HandledByWidget` tag L1/L2 read (the
|
|
22
22
|
* pinned widget-event contract, design-002 §8).
|
|
23
|
+
*
|
|
24
|
+
* THE CUT (2026-09-26): a pointer's fold ENDS at its transition (down / up /
|
|
25
|
+
* cancel), so a tick that carries `WentDown`/`WentUp` carries the pointer AT
|
|
26
|
+
* the press or the release — picking hits what was pressed, recognizers judge
|
|
27
|
+
* the release where it happened. The first event past a closed fold ends the
|
|
28
|
+
* tick's drain: it and everything behind it (every pointer, every key — the
|
|
29
|
+
* processed events stay a PREFIX of arrival order) are the next tick's facts.
|
|
30
|
+
* Before the cut, a click whose release coalesced with a far move into one
|
|
31
|
+
* frame published `WentUp` at the MOVE's point: the tap failed its slop, the
|
|
32
|
+
* drag measured its dead zone to a point reached after the release and went
|
|
33
|
+
* Active on the clicked object — which then followed the cursor (a ghost
|
|
34
|
+
* drag; found under CDP input in apps/desk, reachable by a quick tap and
|
|
35
|
+
* flick). Between transitions moves and wheel deltas still fold: every
|
|
36
|
+
* consumer reads the latest position or the tick's accumulated deltas.
|
|
23
37
|
*/
|
|
24
38
|
import type { System, TickSystem, World } from "@vibecook/strata-ecs";
|
|
25
39
|
import type { InputQueue } from "../input/queue";
|
|
@@ -46,6 +46,42 @@
|
|
|
46
46
|
import type { Entity, System, TickSystem, World } from "@vibecook/strata-ecs";
|
|
47
47
|
import { SpatialIndex } from "../../../kernel/src/index";
|
|
48
48
|
import { type WirePickSource } from "../ops/point-pick";
|
|
49
|
+
/**
|
|
50
|
+
* The FRAME pick source (design-014, B3b): the ground's answer to "what is
|
|
51
|
+
* under this world point on card `e`" — `content`, `frame` (the chrome band
|
|
52
|
+
* outside the content rect), `outside`, or a PART the registered card program
|
|
53
|
+
* names (`close`, `lock` …) — or `undefined`: the source has NO GEOMETRY for the card
|
|
54
|
+
* (the ground's pipelines are still compiling, the card has not been drawn yet, or
|
|
55
|
+
* creation failed), and the box tier's answer stands. `undefined` is not `outside`: a
|
|
56
|
+
* card the ground cannot see is still a card (B9 review blocker 1 — a source that
|
|
57
|
+
* answered `outside` there made every card unclickable until the first build, and for
|
|
58
|
+
* good when `Ground.create` rejected). `pad()` is how far the chrome reaches past the
|
|
59
|
+
* content rect, world units: the spatial index holds content rects, so
|
|
60
|
+
* `picking` widens its search by it and asks the source about candidates the
|
|
61
|
+
* boxes missed. Set on the interaction stack by the ground layer at mount;
|
|
62
|
+
* `null` = every hit is the box's (the stratified profile).
|
|
63
|
+
*/
|
|
64
|
+
export interface FramePickSource {
|
|
65
|
+
pad(): number;
|
|
66
|
+
hit(e: Entity, wx: number, wy: number): string | undefined;
|
|
67
|
+
/**
|
|
68
|
+
* The source's geometry is MOVING under a still pointer (a reveal growing a control, a lift): `picking` runs
|
|
69
|
+
* every frame this answers true, so the part under a motionless pointer is the part that is there now. Absent
|
|
70
|
+
* = never; the pointer and the spatial index are then the only wakes (B9 review).
|
|
71
|
+
*/
|
|
72
|
+
live?(): boolean;
|
|
73
|
+
/**
|
|
74
|
+
* The widgets the source draws LIFTED this frame — above the frame's own order and away from their facts (design-015 §6's
|
|
75
|
+
* print in a hand, flicked or gliding; D3t-a): the spatial index still holds their fact rects, so the frame tier asks
|
|
76
|
+
* these FIRST, wherever they are drawn, and the topmost that answers is the hit — a press catches a gliding print where
|
|
77
|
+
* it is, and its old rect no longer does (its geometry says `outside` there). Absent = none.
|
|
78
|
+
*/
|
|
79
|
+
lifted?(): Iterable<Entity>;
|
|
80
|
+
}
|
|
81
|
+
/** The stack's slot for the frame pick source — a mutable box, so the ground can arrive after install. */
|
|
82
|
+
export interface FramePickSlot {
|
|
83
|
+
current: FramePickSource | null;
|
|
84
|
+
}
|
|
49
85
|
export interface PickingSystems {
|
|
50
86
|
spatialSync: TickSystem;
|
|
51
87
|
picking: System;
|
|
@@ -55,4 +91,4 @@ export interface PickingSystems {
|
|
|
55
91
|
* spatialSync pass repopulates the cleared index from the new Active set. */
|
|
56
92
|
clearCaches(): void;
|
|
57
93
|
}
|
|
58
|
-
export declare function createPickingSystems(world: World, index?: SpatialIndex<Entity>, wires?: WirePickSource): PickingSystems;
|
|
94
|
+
export declare function createPickingSystems(world: World, index?: SpatialIndex<Entity>, wires?: WirePickSource, frames?: FramePickSlot): PickingSystems;
|
|
@@ -10,12 +10,26 @@
|
|
|
10
10
|
* one ClaimedBy write per pointer per pass (`setRelation` is silent last-wins —
|
|
11
11
|
* a mis-ordered arbitration would otherwise be undetectable).
|
|
12
12
|
*
|
|
13
|
+
* ONE PASS PER TICK (2026-09-26): a strata system body runs once per matching
|
|
14
|
+
* CHUNK, and the recognizer kinds live in different archetypes — so while
|
|
15
|
+
* arbitration was a chunk system, the tie rule compared claimants only within
|
|
16
|
+
* one batch. The first batch's claimant won and failed the rest; a later batch,
|
|
17
|
+
* reading `ClaimedBy` before the flush, claimed as well and failed back (a
|
|
18
|
+
* pointer could end claimed by a Failed recognizer, both claimants dead). It is
|
|
19
|
+
* a tick system now: it collects EVERY claimant of the tick, then decides once
|
|
20
|
+
* per pointer. A claimant that lost this tick's tie fails even from a terminal
|
|
21
|
+
* phase — a Tap's `Recognized` — so a pointer gets one outcome, never a drag
|
|
22
|
+
* AND the tap it beat (as when the drag claims first: tap-then-drag fails the
|
|
23
|
+
* pending tap).
|
|
24
|
+
*
|
|
13
25
|
* `dragRoute` — the ONE pan/marquee/move decision, latched at Drag activation
|
|
14
|
-
* via route tags; the route never changes mid-gesture (design-003 §4.4).
|
|
26
|
+
* via route tags; the route never changes mid-gesture (design-003 §4.4). A
|
|
27
|
+
* canvas drag reads the pointer's latched shift to choose between the tool's
|
|
28
|
+
* `canvasDrag` and `canvasDragShift` (design-015 §9, D2a-core).
|
|
15
29
|
*/
|
|
16
|
-
import type { System } from "@vibecook/strata-ecs";
|
|
17
|
-
export declare function createArbitrationSystems(): {
|
|
18
|
-
arbitration:
|
|
30
|
+
import type { System, TickSystem, World } from "@vibecook/strata-ecs";
|
|
31
|
+
export declare function createArbitrationSystems(world?: World): {
|
|
32
|
+
arbitration: TickSystem;
|
|
19
33
|
dragRoute: System;
|
|
20
34
|
};
|
|
21
35
|
/** Wheel recognizers never claim; exported so tests can assert the invariant set. */
|
|
@@ -20,7 +20,10 @@
|
|
|
20
20
|
*/
|
|
21
21
|
import type { System, World } from "@vibecook/strata-ecs";
|
|
22
22
|
import type { CommitSink } from "../engine/commit-sink";
|
|
23
|
-
|
|
23
|
+
import type { NavGeometrySlot } from "../nav/nav-geometry";
|
|
24
|
+
export declare function createSelectMoveBehaviors(world: World, sink: CommitSink, opts?: {
|
|
25
|
+
readonly navGeometry?: NavGeometrySlot;
|
|
26
|
+
}): {
|
|
24
27
|
selectBehavior: System;
|
|
25
28
|
moveBehavior: System;
|
|
26
29
|
};
|
|
@@ -22,6 +22,13 @@
|
|
|
22
22
|
* Same-widget double-grab guard: a widget already in another recognizer's
|
|
23
23
|
* `Drags` set is skipped (first gesture owns it) — two `ctx.addComponent(Grab)`
|
|
24
24
|
* for one widget in one frame would hit strata's flush-time duplicate policy.
|
|
25
|
+
*
|
|
26
|
+
* The tape (design-015 §5.1, D2a-core): a `Locked` widget gets no rider from
|
|
27
|
+
* either claim — never moved, never resized by a gesture — and nothing else
|
|
28
|
+
* changes: select-on-grab still selects it, the pointer is still claimed, and
|
|
29
|
+
* the untaped members of the same selection move without it. A claim whose set
|
|
30
|
+
* is all tape moves nothing and commits nothing (the release paths commit only
|
|
31
|
+
* what carries a `Grab`).
|
|
25
32
|
*/
|
|
26
33
|
import type { System, World } from "@vibecook/strata-ecs";
|
|
27
34
|
export declare function createClaimSystems(world: World): {
|
|
@@ -54,4 +54,4 @@ export interface ConnectSystems {
|
|
|
54
54
|
* one-frame `Targets` staleness on snapping — the router's pattern).
|
|
55
55
|
* @param _wires reserved (the wire narrow-phase source; connect reads `Targets`).
|
|
56
56
|
*/
|
|
57
|
-
export declare function createConnectSystems(
|
|
57
|
+
export declare function createConnectSystems(world: World, sink: CommitSink, _index: SpatialIndex<Entity>, _wires: WirePickSource): ConnectSystems;
|
|
@@ -17,7 +17,36 @@
|
|
|
17
17
|
* relation version, and any churn wakes every row-filtered observer world-wide
|
|
18
18
|
* (design-002 §4). Both clear when no container is under the bounds; the move
|
|
19
19
|
* behavior clears them on every terminal path.
|
|
20
|
+
*
|
|
21
|
+
* THIRD SIGNAL (2026-09-06, design-013 §5 rev 6 / GLOW.md §3): `DragBounds` on
|
|
22
|
+
* the recognizer — the same post-move union this system computes for its
|
|
23
|
+
* spatial query, published instead of discarded. The overlap glow is cast light
|
|
24
|
+
* from the lifted set's own SDF, so the compose reflector needs its rect; there
|
|
25
|
+
* is no second computation and no new walk. Change-only over all four fields,
|
|
26
|
+
* for the same reason the other two are: a value write stamps, and a still
|
|
27
|
+
* frame must cost nothing.
|
|
20
28
|
*/
|
|
21
29
|
import type { Entity, System, World } from "@vibecook/strata-ecs";
|
|
22
30
|
import type { SpatialIndex } from "../../../kernel/src/index";
|
|
23
|
-
|
|
31
|
+
import type { CanvasRect } from "../canvas/frame-view";
|
|
32
|
+
import { type NavGeometrySlot } from "../nav/nav-geometry";
|
|
33
|
+
import type { PortalAffine } from "../../../kernel/src/index";
|
|
34
|
+
/** Is every one of these a GPU OBJECT (an `object` kind binding, design-015 §5.2)? The desk's drop rules apply to an all-object set. */
|
|
35
|
+
export declare function objectsOnly(world: World, entities: readonly Entity[]): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* A container's FACE and its inside's embedding for a drop (design-015 §9): the renderer's word
|
|
38
|
+
* through the nav geometry seam under the current camera (the face as drawn), else core's static
|
|
39
|
+
* portal rect and default framing. `undefined` = the container has no face (no area).
|
|
40
|
+
*/
|
|
41
|
+
export declare function dropFaceOf(world: World, container: Entity, slot: NavGeometrySlot | undefined): {
|
|
42
|
+
readonly face: CanvasRect;
|
|
43
|
+
readonly affine: PortalAffine;
|
|
44
|
+
} | undefined;
|
|
45
|
+
/** Is the world point inside the rect (edges included)? */
|
|
46
|
+
export declare const insideRect: (r: CanvasRect, x: number, y: number) => boolean;
|
|
47
|
+
export interface DropPlacementPolicy {
|
|
48
|
+
canIngress(widgetTypeId: string, targetContainer: Entity): boolean;
|
|
49
|
+
/** K9: may an object of this type be made in this frame at all — the root's CanvasType placement (inside a container, `canIngress`). */
|
|
50
|
+
canPlace?(widgetTypeId: string, targetFrame: Entity): boolean;
|
|
51
|
+
}
|
|
52
|
+
export declare function createDropSystem(world: World, index: SpatialIndex<Entity>, placement?: DropPlacementPolicy, navGeometry?: NavGeometrySlot): System;
|
|
@@ -13,7 +13,8 @@
|
|
|
13
13
|
* global tag version, design-003 §5.7). Selection commits ONCE at terminal
|
|
14
14
|
* (`JustEnded`): replace with the hits, or union when the watched pointer holds
|
|
15
15
|
* shift; `SelectionVersion` bumps once (the v1 marquee lesson). No `access.write`
|
|
16
|
-
* — reads + the buffer + ctx selection tags only.
|
|
16
|
+
* — reads + the buffer + ctx selection tags only. A `Locked` widget is never a
|
|
17
|
+
* hit (design-015 §5.1, Q-g: the tape keeps it out of the vellum).
|
|
17
18
|
*
|
|
18
19
|
* Camera staleness: both corners convert with the CURRENT camera, so a mid-
|
|
19
20
|
* marquee camera move re-projects the rect (accepted — design-002 §2).
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* Three triggers materialize a widget's declared ports (registry decl → kernel
|
|
8
8
|
* `portAnchor`; a port carries Port + PortAnchor + PortOf → widget, and NO
|
|
9
9
|
* Position/Size — `spatialSync` must never see it; design-004 §6, the
|
|
10
|
-
*
|
|
10
|
+
* precedent of the retired selection box). Because ports carry no Position/Size, this system
|
|
11
11
|
* gives them their OWN tiny world AABB in the shared spatial index so they are
|
|
12
12
|
* pickable (design-003 §3 port tier):
|
|
13
13
|
* (a) connect tool → widgets in viewport+overscan (`200/zoom`); materialize at
|
|
@@ -8,6 +8,11 @@
|
|
|
8
8
|
* (2) `ActiveTool` override — pan tool → "grab"; (3) else the mouse pointer's
|
|
9
9
|
* `Targets` kind — a `HandleSpec` → directional resize, an entity with
|
|
10
10
|
* `Position` (widget) → "default", `CanvasSurface`/none → "default".
|
|
11
|
+
* The pegboard tray (design-017 §4, K3): a specimen on its board a thing to take, "grab", its copy lifted "grabbing" (K9), over
|
|
12
|
+
* everything but the hand's. (design-018 §5: the lip's "pointer" retired with its handle — the drawer's handle is the app's DOM bar.)
|
|
13
|
+
* Above all of them (design-015 §8, D3t-a): with an object IN HAND, the mode in hand's own
|
|
14
|
+
* `cursor` (its `HeldToolDef.cursor` — "none" where the tool draws itself: the board's marker) while
|
|
15
|
+
* the mouse is over the object's drawing surface (`HeldPointer.part` "content") or presses the tool.
|
|
11
16
|
*
|
|
12
17
|
* Scheduled on the `CanvasSurface` anchor query (exactly one such entity,
|
|
13
18
|
* guaranteed by install — the same idiom `pointerIngest` uses in l0-input.ts)
|
|
@@ -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
|
|
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
|
/**
|