@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
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The ENTER GESTURE (design-015 §9; D2b) — a double-tap on a `Container` asks to enter it, a
|
|
3
|
+
* double-tap on the bare frame asks to leave. `ctl:behave`, after `selectBehavior`: the first
|
|
4
|
+
* tap SELECTS at once (the prototype's click), the second — the same target, within
|
|
5
|
+
* `multiTapWindowMs`, within `multiTapSlopPx` — is the gesture. Detected from two INSTANT
|
|
6
|
+
* taps (each Recognized at count 1) held in `NavTapMemo`, not from a `MultiTap(2)` opt-in on
|
|
7
|
+
* the target: that machinery parks the first tap Pending for the whole window, so a plain
|
|
8
|
+
* click on a container would select 280 ms late — a latency the prototype never had (its
|
|
9
|
+
* first click selected, its dblclick entered). `MultiTap` stays what it is for widgets that
|
|
10
|
+
* want a counted tap.
|
|
11
|
+
*
|
|
12
|
+
* The op itself is NOT run here: `enterContainer` spawns, writes tags and rebuilds the index —
|
|
13
|
+
* structural writes, illegal mid-tick. The gesture writes the one-tick `NavIntent` fact and the
|
|
14
|
+
* facade applies it once `engine.step` returns (nav-geometry.ts). A tap on a PART (`DownPart`)
|
|
15
|
+
* is the app's and never counts; a tap while a flight drives is not a double-tap's first half
|
|
16
|
+
* (the flight yields to nothing but a camera gesture).
|
|
17
|
+
*/
|
|
18
|
+
import type { Entity, System, World } from "@vibecook/strata-ecs";
|
|
19
|
+
/** The last instant tap: its target (0 = the bare frame), where and when — the double-tap's first half. */
|
|
20
|
+
export declare const NavTapMemo: import("@vibecook/strata-ecs").Resource<import("@vibecook/strata-ecs").ValueOf<{
|
|
21
|
+
readonly target: import("@vibecook/strata-ecs").FieldSpec<"eid", true>;
|
|
22
|
+
readonly x: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
|
|
23
|
+
readonly y: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
|
|
24
|
+
readonly at: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
|
|
25
|
+
/** Bumps per tap seen; 0 = no memo. */
|
|
26
|
+
readonly seq: import("@vibecook/strata-ecs").FieldSpec<"u32", true>;
|
|
27
|
+
}>, {
|
|
28
|
+
readonly target: import("@vibecook/strata-ecs").FieldSpec<"eid", true>;
|
|
29
|
+
readonly x: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
|
|
30
|
+
readonly y: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
|
|
31
|
+
readonly at: import("@vibecook/strata-ecs").FieldSpec<"f64", true>;
|
|
32
|
+
/** Bumps per tap seen; 0 = no memo. */
|
|
33
|
+
readonly seq: import("@vibecook/strata-ecs").FieldSpec<"u32", true>;
|
|
34
|
+
}>;
|
|
35
|
+
export interface NavTapOpts {
|
|
36
|
+
/** Is this entity a container the engine may enter (the facade's catalog-backed test)? Default: the `Container` tag. */
|
|
37
|
+
readonly isContainer?: (entity: Entity) => boolean;
|
|
38
|
+
/**
|
|
39
|
+
* Is this entity an object that OPENS (design-015 §8, D4b — the facade's catalog-backed test: its widget type
|
|
40
|
+
* declares `openable`)? A double-tap on one asks to pick it up (`HeldIntent`), not to enter it. Default: nothing opens.
|
|
41
|
+
*/
|
|
42
|
+
readonly isOpenable?: (entity: Entity) => boolean;
|
|
43
|
+
}
|
|
44
|
+
export declare function createNavTap(world: World, opts?: NavTapOpts): System;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* THE WHEEL OF A HOLDING PRESS (design-015 §6's photo; D3t-a — PHOTO.md: "wheel while holding turns the print about the
|
|
3
|
+
* finger"). While a local pointer's press holds a widget that declares `interaction.wheelTurns` (its `WheelTurns`
|
|
4
|
+
* capability — a recognizer of the press captures it), the wheel on that pointer is the WIDGET's: this system stamps the
|
|
5
|
+
* one-tick `WheelHandled` (both wheel consumers skip it — the camera never zooms under a carried print) and adds the tick's
|
|
6
|
+
* deltas to the pointer's `PressWheel`, a running sum a reflector can still read after the tick, when `PointerWheel` has been
|
|
7
|
+
* zeroed. The sum starts at the press's first wheel and leaves with the press. The head of `react`, beside the held input:
|
|
8
|
+
* the ingest's facts are flushed by then and what this stamps flushes before `ctl`.
|
|
9
|
+
*/
|
|
10
|
+
import type { System, World } from "@vibecook/strata-ecs";
|
|
11
|
+
export declare function createPressWheel(world: World): System;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TRAY INPUT (design-016 §7; design-017 §4 — K3) — the pegboard drawer's share of the pointer, beside the hand's (systems/held.ts)
|
|
3
|
+
* and in its vocabulary. Right after `heldInput` at the head of `react`: the ingest's one-tick tags are flushed by then (a press is
|
|
4
|
+
* visible), and what this stamps flushes before `ctl`, so the recognizers and both wheel consumers never hear of what the tray
|
|
5
|
+
* takes. PICKING does not hear it either way — it runs in this same phase, before the stamp lands (a tag is a structural write,
|
|
6
|
+
* applied at the phase boundary) — so it reads `Tray.open` itself and answers the bare canvas for every local pointer while the
|
|
7
|
+
* drawer is out (l1-pick; K9 law #1: without that, the DOM-at-event-time halves read a live hit THROUGH the drawer). While an
|
|
8
|
+
* object is in hand the tray stands aside (the hand's frame never draws it).
|
|
9
|
+
*
|
|
10
|
+
* - CLOSED, the drawer takes no pointer (design-018 §5, R2 — the lip's handle, its hover and its press retired): a press at the
|
|
11
|
+
* bottom centre is the desk's like any other. What opens the drawer is the app's — the `a` key, and the DOM bar (`<TrayBar>`,
|
|
12
|
+
* @ice/react), whose down never reaches the canvas as a press. Only a wheel stream it took while out stays its own (below).
|
|
13
|
+
* - OPEN, the desk is INERT: every local pointer gets the one-tick `HandledByWidget` and `WheelHandled`, each tick, as the hand's
|
|
14
|
+
* do — so "the wheel never moves the camera" is not a rule the camera keeps; it is a fact the camera never hears about. Over the
|
|
15
|
+
* drawer the wheel scrolls it (`dy`; the OS's momentum arrives as deltas and is applied as it comes — no inertia of ours; ⌘/ctrl
|
|
16
|
+
* and a pinch are swallowed) and a press-drag scrolls it; past an end the rest is the band's `stretch` (a reversal unwinds it
|
|
17
|
+
* first), which lets go once the scroll input has been quiet `letGoMs` — or (K9) once a FADING tail has pushed it `fadeDeltas`
|
|
18
|
+
* shrinking deltas, the rest of that tail spent (the OS's momentum no longer holds it for its second). A click on the dimmed desk — pressed and released there,
|
|
19
|
+
* unmoved — closes it. Shut, the wheel stays the tray's until it has been quiet `letGoMs` (K9): a flick's momentum still
|
|
20
|
+
* arriving as the drawer shuts never zooms the desk.
|
|
21
|
+
* - K5b, TAKING ONE (design-017 §9): a press on a SPECIMEN is `TrayPress specimen` — its type, the grab point across the object as the
|
|
22
|
+
* board draws it (kernel `specimenFit`), the specimen's centre on screen. Past the slop its COPY lifts (`Tray.take` and the pointer:
|
|
23
|
+
* the renderer's flux draws it; the specimen stays hung); a press on a specimen never scrolls the board. Out of the drawer's open
|
|
24
|
+
* rect the copy is HANDED to the desk: the drawer slides away (`open` false), `handed` bumps (that tick `take` still names it, where
|
|
25
|
+
* it left — what the renderer's ghost grows out of — and it clears the tick after), and the one-tick `TrayIntent` asks the
|
|
26
|
+
* facade for `ops.insertByDrag` after the step — the insert ghost under the same grab point, its synthetic down this pointer's, the
|
|
27
|
+
* ordinary drag from there. The press becomes `carry`: released back over the drawer as drawn — still sliding away, its open rect
|
|
28
|
+
* the desk's once it has shut (K9) — the ghost's gesture is CANCELLED
|
|
29
|
+
* (`CancelRequest` — the ctl sweep reads it this tick, before the release can commit) and it flies home. Released inside the drawer,
|
|
30
|
+
* or the drawer shut under it (Esc, the key), the take is put back: nothing was made, nothing enters undo.
|
|
31
|
+
*
|
|
32
|
+
* Where the drawer is comes through the SEAM `TrayPoseSlot` beside `heldPose`: the renderer's word on the drawer as it DREW it this
|
|
33
|
+
* frame (its rect mid-slide, the scroll range its layout gives), so a hit and the clamp agree with the pixels. Nothing here reads a
|
|
34
|
+
* kind or a pixel; opening a drawer cancels every gesture in flight (`CancelRequest`, read by the `ctl:spawn` sweep this tick).
|
|
35
|
+
*/
|
|
36
|
+
import type { Entity, System, TickSystem, World } from "@vibecook/strata-ecs";
|
|
37
|
+
import type { DropPlacementPolicy } from "./l3-drop";
|
|
38
|
+
import { type WidgetType } from "../widget/define-widget";
|
|
39
|
+
/**
|
|
40
|
+
* The drawer ON SCREEN as the renderer drew it this frame, CSS px: its outline box (top-left, width, full height — the part below
|
|
41
|
+
* the view included), the slide `p` (0 closed … 1 open), the scroll range `max` the laid content gives, the board's `pitch`, and
|
|
42
|
+
* the `scroll` as DRAWN — the fact's plus the band's shown pull — so a board point under the pointer is the one on screen. K9: the
|
|
43
|
+
* `face`, the board's height the drawer shows inside its rim — the range is the content's foot plus a pitch less it (kernel
|
|
44
|
+
* `trayScrollMax`), so the lay can clamp the scroll in the tick a new foot or face moves the range; absent, nothing clamps it.
|
|
45
|
+
* design-018 R4: the `head`, how far under its top nothing of the board's content shows (the renderer's clear HEADER, where a host lays
|
|
46
|
+
* the category chips) — a specimen scrolled under it is never hovered or taken there: a press there is the board's; absent, 0.
|
|
47
|
+
*/
|
|
48
|
+
export interface TrayScreenFrame {
|
|
49
|
+
readonly x: number;
|
|
50
|
+
readonly y: number;
|
|
51
|
+
readonly w: number;
|
|
52
|
+
readonly h: number;
|
|
53
|
+
readonly p: number;
|
|
54
|
+
readonly max: number;
|
|
55
|
+
readonly pitch: number;
|
|
56
|
+
readonly scroll: number;
|
|
57
|
+
readonly face?: number;
|
|
58
|
+
readonly head?: number;
|
|
59
|
+
}
|
|
60
|
+
/** The pose seam: the renderer's word on where the drawer is — `undefined` before its first frame. */
|
|
61
|
+
export interface TrayPoseSource {
|
|
62
|
+
frame(): TrayScreenFrame | undefined;
|
|
63
|
+
}
|
|
64
|
+
/** The stack's slot for the pose source — a mutable box, so the renderer can arrive after install (as `heldPose`). */
|
|
65
|
+
export interface TrayPoseSlot {
|
|
66
|
+
current: TrayPoseSource | null;
|
|
67
|
+
}
|
|
68
|
+
/** The tray's input numbers (design-017 §7): a click's slop, how long the scroll input must be quiet before the band lets go — and (K9, D-K9-c.3) how many shrinking deltas in a row a fading tail pushes the band before it lets go. (design-018 §5: the lip's drag, handle and pad retired with it.) */
|
|
69
|
+
export declare const TRAY_INPUT: {
|
|
70
|
+
readonly slopPx: 4;
|
|
71
|
+
readonly letGoMs: 120;
|
|
72
|
+
readonly fadeDeltas: 3;
|
|
73
|
+
};
|
|
74
|
+
/** The tray's specimens (K5a): the tray entity's children tagged `Specimen`, in sibling order. */
|
|
75
|
+
export declare function specimensOf(world: World, tray: Entity): Entity[];
|
|
76
|
+
/** A delta down the board into scroll ∈ [0, max], the rest into the band; a delta back unwinds the band first. */
|
|
77
|
+
export declare function scrollBy(scroll: number, stretch: number, d: number, max: number): {
|
|
78
|
+
readonly scroll: number;
|
|
79
|
+
readonly stretch: number;
|
|
80
|
+
};
|
|
81
|
+
export declare function createTrayInput(world: World, opts: {
|
|
82
|
+
readonly pose: TrayPoseSlot;
|
|
83
|
+
}): System;
|
|
84
|
+
/** The catalog's object types that carry a tray entry — the tray's contents (K-L2: no list here names a kind); the registry's in an unbound world. The lay hangs those the current frame takes (K9). */
|
|
85
|
+
export declare function hungTypes(world: World): WidgetType[];
|
|
86
|
+
/**
|
|
87
|
+
* THE TRAY'S LAY (design-017 §8; K5a) — the specimens in the world: one RUNTIME entity per object type whose widget carries a tray
|
|
88
|
+
* entry (`hungTypes`), `ChildOf` the tray entity (the root of its runtime canvas), `PrefabId` its type, `Position`/`Size` where the
|
|
89
|
+
* lattice law lays it (kernel `layTray`) across the drawer AS THE RENDERER DREW IT (the pose seam's width and pitch), its entry's
|
|
90
|
+
* props over the widget's defaults, spawned `Specimen` and already `WidgetEquipped` (nothing stamps it; the spatial index never
|
|
91
|
+
* takes it). Laid once the renderer has said how wide the drawer is; re-laid when that width, the pitch or the entries change (a
|
|
92
|
+
* kind registered), a specimen whose kind left destroyed; after a reset the new tray entity is laid afresh. `TrayContent` records
|
|
93
|
+
* what was laid — the content's foot is the renderer's scroll range. A tick system: its spawns are the scheduler's, once a frame.
|
|
94
|
+
* K9 (S10, D-K9-c.2): when that range MOVES — a lay (the width, the kinds) or the drawer's face (the view's height) — a scroll past its
|
|
95
|
+
* new end with nothing stretching is clamped to it in the same tick, so no frame draws blank board past the content and the next wheel
|
|
96
|
+
* starts from the end; only on a move, so the rig's door (`scrollTray`) still takes any value until the range next moves.
|
|
97
|
+
* K9 (S13, D-K9-c.4): it hangs what the CURRENT frame takes — inside an entered container its ingress, at the root its canvas's
|
|
98
|
+
* placement, the authority a drop's commit asks (`placement`) — so no specimen offers a take the frame would refuse; entering or
|
|
99
|
+
* leaving re-lays it (the drawer is shut then: the desk is inert while it is out). Without a policy, every hung type.
|
|
100
|
+
* design-018 §6 (R2) — THE FILTER: of those it lays only the entries of the category the drawer shows (`Tray.category`, "" all); a
|
|
101
|
+
* change of it re-lays, and the board starts again at its top — the scroll and the band zeroed. A category the frame hangs none of
|
|
102
|
+
* (its last entry gone with the frame, or an id no entry names) falls back to all. What the frame could hang before the filter — its
|
|
103
|
+
* categories in the lay's order and their counts — is recorded in `TrayContent.present` (the ops' `trayCategories`: a host's chips).
|
|
104
|
+
*/
|
|
105
|
+
export declare function createTrayLay(world: World, opts: {
|
|
106
|
+
readonly pose: TrayPoseSlot;
|
|
107
|
+
readonly placement?: DropPlacementPolicy | undefined;
|
|
108
|
+
}): TickSystem;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The ZOOM-THROUGH (design-015 §9, design-013 Q13 → ON; PORTAL.md §8 — D2b). `ctl:behave`,
|
|
3
|
+
* after `cameraControl`: on a frame whose wheel zoomed (`WheelZoomStep`, D2a-core's one-tick
|
|
4
|
+
* fact — pans never cut, and the touch pinch is not recorded there, D-D2a.6), when no flight
|
|
5
|
+
* drives and the settings say so —
|
|
6
|
+
*
|
|
7
|
+
* - a zoom IN: the topmost Active container (paint order) whose face has come in whole
|
|
8
|
+
* (presence 1) AND covers the whole viewport by `in` CSS px is entered as a CUT nobody can
|
|
9
|
+
* see: the view already IS its inside, and the cut lands on the camera the inside was
|
|
10
|
+
* rendering under (`transition: "cut"`).
|
|
11
|
+
* - a zoom OUT: when the current frame's own face — under the parent camera the inside
|
|
12
|
+
* renders as it does now, the continuity solve — no longer covers the view by `out` px, the
|
|
13
|
+
* frame is left as a cut onto that parent camera.
|
|
14
|
+
*
|
|
15
|
+
* Both are asked through the one-tick `NavIntent` fact (ops are structural — illegal mid-tick;
|
|
16
|
+
* the facade applies it right after the step) with `redress` set: the entered desk was DRESSED
|
|
17
|
+
* for its arrival as a face (`from` = the arrival's zoom), the left desk for the camera it was
|
|
18
|
+
* cut at (`from` = the camera's zoom) — the renderer re-dresses over its own ramp and hands the
|
|
19
|
+
* lamp over on it (`NavRedress`, written by the applier). The faces come through the nav
|
|
20
|
+
* geometry seam (the drawn face, the gate's answer, the cover test), else core's static rect.
|
|
21
|
+
*/
|
|
22
|
+
import type { Entity, TickSystem, World } from "@vibecook/strata-ecs";
|
|
23
|
+
import { type NavGeometrySlot } from "../nav/nav-geometry";
|
|
24
|
+
export interface ZoomThroughOpts {
|
|
25
|
+
/** The nav geometry seam the faces are read through (the interaction stack's slot). */
|
|
26
|
+
readonly navGeometry?: NavGeometrySlot;
|
|
27
|
+
/** Is this entity a container the engine may enter (the facade's catalog-backed test)? Default: any `Container`. */
|
|
28
|
+
readonly isContainer?: (entity: Entity) => boolean;
|
|
29
|
+
}
|
|
30
|
+
export declare function createZoomThrough(world: World, opts?: ZoomThroughOpts): TickSystem;
|
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
* Built-ins ship as configs of this same primitive:
|
|
9
9
|
* - select: tap/longPress/drag; canvas drag → marquee (pan on touch /
|
|
10
10
|
* space / middle-button — device conventions, honored ABOVE tool policy).
|
|
11
|
+
* A shift-held canvas drag takes `route.canvasDragShift` (design-015 §9,
|
|
12
|
+
* D2a-core), which defaults to the tool's own `canvasDrag`.
|
|
11
13
|
* - pan: hand cursor; every drag pans.
|
|
12
14
|
* - connect: crosshair; widget/port drags connect (design-003 §5.8).
|
|
13
15
|
* - draw(widgetType): factory — canvas drag creates ONE widget from the
|
|
@@ -24,6 +26,14 @@ export type WidgetDragRoute = "move" | "pan" | "connect" | "none";
|
|
|
24
26
|
export interface ToolRoute {
|
|
25
27
|
/** Drag starting on empty canvas (after device overrides: touch/space/middle → pan). */
|
|
26
28
|
readonly canvasDrag?: CanvasDragRoute;
|
|
29
|
+
/**
|
|
30
|
+
* The same drag with SHIFT held (design-015 §9, D-D11 — D2a-core): the desk's
|
|
31
|
+
* select tool pans the bare mat and draws its marquee on shift —
|
|
32
|
+
* `{ canvasDrag: "pan", canvasDragShift: "marquee" }`. Omitted: the tool's
|
|
33
|
+
* own `canvasDrag`, so shift changes nothing (every tool before this field).
|
|
34
|
+
* The device conventions (touch / space / middle → pan) still sit above it.
|
|
35
|
+
*/
|
|
36
|
+
readonly canvasDragShift?: CanvasDragRoute;
|
|
27
37
|
/** Drag starting on a widget body. */
|
|
28
38
|
readonly widgetDrag?: WidgetDragRoute;
|
|
29
39
|
/** Drag starting on a port entity ("connect" | "none"). */
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import type { Component, Tag } from "@vibecook/strata-ecs";
|
|
1
|
+
import type { Component, Entity, Tag, World } from "@vibecook/strata-ecs";
|
|
2
2
|
import type { AnyBehaviorAttachSpec, AnyBehaviorDef } from "../behavior/types";
|
|
3
|
+
import { type DeskStratum } from "../catalog";
|
|
3
4
|
import { type Prefab } from "../schema/prefab";
|
|
4
5
|
import type { PropSpec, PropsDecl } from "./props";
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
import { type HeldToolDef } from "./held-tools";
|
|
7
|
+
import { type MenuActionDef } from "./menu-actions";
|
|
8
|
+
import { type TrayHang } from "../../../kernel/src/index";
|
|
9
|
+
import type { CanvasType } from "../canvas/define-canvas-type";
|
|
10
|
+
import type { FrameProjection } from "../canvas/frame-projection";
|
|
7
11
|
export interface WidgetPortDecl {
|
|
8
12
|
readonly id: string;
|
|
9
13
|
readonly side: "n" | "e" | "s" | "w";
|
|
@@ -43,6 +47,39 @@ export interface WidgetRenameEntry {
|
|
|
43
47
|
* `Behavior.with({...})` for a starting value (design-009 §6).
|
|
44
48
|
*/
|
|
45
49
|
export type WidgetBehaviorDecl = AnyBehaviorDef | AnyBehaviorAttachSpec;
|
|
50
|
+
export interface WidgetPortalInsets {
|
|
51
|
+
readonly top?: number;
|
|
52
|
+
readonly right?: number;
|
|
53
|
+
readonly bottom?: number;
|
|
54
|
+
readonly left?: number;
|
|
55
|
+
}
|
|
56
|
+
export interface WidgetContainerDef {
|
|
57
|
+
/** Compatibility-key projection written to the durable Accepts cell. */
|
|
58
|
+
readonly accepts: readonly string[];
|
|
59
|
+
readonly provides?: readonly string[];
|
|
60
|
+
/** Fixed CanvasType binding; omitted by legacy defineWidget({container}). */
|
|
61
|
+
readonly canvas?: CanvasType;
|
|
62
|
+
/** Explicit narrower ingress WidgetTypes, unioned with accepts keys. */
|
|
63
|
+
readonly widgets?: readonly WidgetType[];
|
|
64
|
+
/** Omitted drop policy inherits the complete CanvasType legal set. */
|
|
65
|
+
readonly inheritCanvasPlacement?: boolean;
|
|
66
|
+
/** Card-local portal insets; full widget body when absent. */
|
|
67
|
+
readonly portal?: WidgetPortalInsets;
|
|
68
|
+
/** Optional declared facet projection overriding the CanvasType default. */
|
|
69
|
+
readonly frameProjection?: FrameProjection;
|
|
70
|
+
/** Internal normalized distinction between defineContainer and legacy sugar. */
|
|
71
|
+
readonly typed?: boolean;
|
|
72
|
+
}
|
|
73
|
+
export interface WidgetContainerEntry {
|
|
74
|
+
readonly canvasTypeId: string;
|
|
75
|
+
readonly canvasSemanticVersion: number;
|
|
76
|
+
readonly accepts: readonly string[];
|
|
77
|
+
readonly widgetTypeIds: readonly string[];
|
|
78
|
+
readonly inheritCanvasPlacement: boolean;
|
|
79
|
+
readonly portal: Readonly<Required<WidgetPortalInsets>>;
|
|
80
|
+
readonly frameProjection: FrameProjection | undefined;
|
|
81
|
+
readonly typed: boolean;
|
|
82
|
+
}
|
|
46
83
|
/** Normalized pre-attachment (registry truth for the spawn + equip paths). */
|
|
47
84
|
export interface WidgetBehaviorEntry {
|
|
48
85
|
readonly behavior: AnyBehaviorDef;
|
|
@@ -51,6 +88,14 @@ export interface WidgetBehaviorEntry {
|
|
|
51
88
|
export interface WidgetInteraction {
|
|
52
89
|
readonly selectable?: boolean;
|
|
53
90
|
readonly movable?: boolean;
|
|
91
|
+
/**
|
|
92
|
+
* May this widget be dropped INTO an accepting container (design-015 §9, D-D6 — D2b)?
|
|
93
|
+
* `"into"` (default): yes — for a GPU object, when its centre is let go over the container's
|
|
94
|
+
* FACE, at the point where it lay in the inside's own units (it takes the inside's scale), ⌥
|
|
95
|
+
* held at the release keeping it out. `"never"`: a root object always (D-D18: the notebook, the
|
|
96
|
+
* whiteboard, the calendar) — the widget offers itself to no container (no `Provides`).
|
|
97
|
+
*/
|
|
98
|
+
readonly drop?: "into" | "never";
|
|
54
99
|
readonly resizable?: boolean;
|
|
55
100
|
readonly snap?: "source" | "target" | "both" | "none";
|
|
56
101
|
/** Drop-REJECTING target: widgets dropped onto this one fly back (v1 iOS-card contract). */
|
|
@@ -63,15 +108,19 @@ export interface WidgetInteraction {
|
|
|
63
108
|
* membership — never reparenting). Default false.
|
|
64
109
|
*/
|
|
65
110
|
readonly sweepContained?: boolean;
|
|
111
|
+
/**
|
|
112
|
+
* The wheel TURNS it while a press holds it (design-015 §6's photo, D3t-a — the `WheelTurns` capability): the wheel on
|
|
113
|
+
* that pointer is the widget's, never the camera's; its deltas add up in the pointer's `PressWheel`. Default false.
|
|
114
|
+
*/
|
|
115
|
+
readonly wheelTurns?: boolean;
|
|
66
116
|
/**
|
|
67
117
|
* Keyboard claim (design-007 §3.1, petitions I1/I4). `"exclusive"`: while a
|
|
68
|
-
* node inside this widget holds browser focus, the engine keymap and
|
|
69
|
-
* adapter's Space pan modifier stand down — keys flow to the widget's own
|
|
70
|
-
* handlers (the engine stops competing; it never delivers behavior). The
|
|
71
|
-
*
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
* canvas zoom always). Default `"shared"` — today's behavior, byte-identical.
|
|
118
|
+
* node inside this widget's claim holds browser focus, the engine keymap and
|
|
119
|
+
* the adapter's Space pan modifier stand down — keys flow to the widget's own
|
|
120
|
+
* handlers (the engine stops competing; it never delivers behavior). The claim
|
|
121
|
+
* is a `data-canvas-keyboard` host in screen space (the desk's one focused
|
|
122
|
+
* editor carries it), and plain wheel over its scrollable content cedes to
|
|
123
|
+
* native scroll (ctrl/pinch stays canvas zoom always). Default `"shared"`.
|
|
75
124
|
*/
|
|
76
125
|
readonly keyboard?: "shared" | "exclusive";
|
|
77
126
|
/**
|
|
@@ -93,20 +142,57 @@ export interface WidgetDef {
|
|
|
93
142
|
};
|
|
94
143
|
/** Conflict groups: group name → prop names. Ungrouped props → "props". */
|
|
95
144
|
readonly groups?: Readonly<Record<string, readonly string[]>>;
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
*
|
|
101
|
-
*
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
*
|
|
106
|
-
*
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
145
|
+
/**
|
|
146
|
+
* The KIND BINDING (design-015 §5.2, D-D16) — the widget's FACE: what the
|
|
147
|
+
* desk's renderer dispatches on through `widgetTypeFor`: the kind's program,
|
|
148
|
+
* its pick mirror, its opening. Opaque to core: it carries it and never reads
|
|
149
|
+
* it. Optional — a widget without one (a port, a test fixture) is a type the
|
|
150
|
+
* desk draws nothing for; since D5b there is no other face a widget can have.
|
|
151
|
+
*/
|
|
152
|
+
readonly object?: unknown;
|
|
153
|
+
/**
|
|
154
|
+
* Which stratum of the desk instances lie in (design-015 §4.2, D-D4):
|
|
155
|
+
* `pads` under everything, `sheets` flat on the mat holding a desk, `things`
|
|
156
|
+
* above both. Equip stamps it as the runtime `Stratum` rider, and
|
|
157
|
+
* `compareStackOrder` ranks by it before sibling order, so pick order is paint
|
|
158
|
+
* order across kinds. An `object` that declares none is a `things`; any other
|
|
159
|
+
* widget that declares none gets no `Stratum` at all (and sorts as a thing).
|
|
160
|
+
*/
|
|
161
|
+
readonly stratum?: DeskStratum;
|
|
162
|
+
/**
|
|
163
|
+
* An object that OPENS (design-015 §8, D4b): its kind declares an `open` binding — an open
|
|
164
|
+
* extent, an open motion, the held bar's tools — and `ops.open(entity)` picks it up into the
|
|
165
|
+
* hand (the double-tap, ⏎). A kind without one is refused by the op: a note is written where it
|
|
166
|
+
* lies, a mini mat is entered, a print has nothing to open. Refused without an `object` binding.
|
|
167
|
+
*/
|
|
168
|
+
readonly openable?: boolean;
|
|
169
|
+
/**
|
|
170
|
+
* The held bar's tools of an object that opens (design-015 §8; D3t-a — widget/held-tools.ts): each a mode (the
|
|
171
|
+
* object's active tool in hand) or an action (an op), with its keys. The keymap and the bar reach them through the
|
|
172
|
+
* engine; `ops.useHeldTool` uses one. Refused on anything that does not open.
|
|
173
|
+
*/
|
|
174
|
+
readonly heldTools?: readonly HeldToolDef[];
|
|
175
|
+
/** The mode in hand when the object is picked up, from its props (the board: its capped marker's ink). Default: the first mode, else none. */
|
|
176
|
+
readonly heldTool?: (props: Readonly<Record<string, unknown>>) => string;
|
|
177
|
+
/**
|
|
178
|
+
* The acts the SELECTION MENU offers for a selection of this type's objects (design-016 §5 · K-L2, K8a — widget/menu-actions.ts):
|
|
179
|
+
* each an id, a label, a glyph and an op; the menu shows one when every selected object's type declares it, and
|
|
180
|
+
* `ops.runMenuAction` runs it. A kind's own acts live here, never in app code over its type name.
|
|
181
|
+
*/
|
|
182
|
+
readonly menu?: readonly MenuActionDef[];
|
|
183
|
+
/**
|
|
184
|
+
* What RIDES with the widget when a gesture moves it (design-015 D3t-c — the desk calendar's stuck notes): widgets of the same
|
|
185
|
+
* frame the move claim adds to its dragged set, so they move with it live and land in the SAME transaction (one undo step).
|
|
186
|
+
* Read from the world at the claim; a taped rider stays put, as a taped member of a selection does.
|
|
187
|
+
*/
|
|
188
|
+
readonly riders?: (world: World, entity: Entity) => readonly Entity[];
|
|
189
|
+
/**
|
|
190
|
+
* The object's DATA prefabs (design-015 §5.1; D3t-a): durable children `ChildOf` it that are never widgets — the board's
|
|
191
|
+
* strokes. An engine catalog that registers the widget tracks them as it tracks the widget's own: their packs are stamped on
|
|
192
|
+
* a new document and gated at open, a guarded transaction resolves them, and one whose version moved migrates by its own
|
|
193
|
+
* `migrate` chain (doc/migrate.ts).
|
|
194
|
+
*/
|
|
195
|
+
readonly data?: readonly Prefab[];
|
|
110
196
|
readonly defaultSize?: {
|
|
111
197
|
readonly w: number;
|
|
112
198
|
readonly h: number;
|
|
@@ -115,13 +201,6 @@ export interface WidgetDef {
|
|
|
115
201
|
readonly w: number;
|
|
116
202
|
readonly h: number;
|
|
117
203
|
};
|
|
118
|
-
/**
|
|
119
|
-
* GL only: the island repaints every frame while visible (design-004 §3
|
|
120
|
-
* animation contract — the EXPLICIT opt-in; plain `useFrame` inside a
|
|
121
|
-
* portal cannot be attributed to an island, so it never drives repaints;
|
|
122
|
-
* content-driven animation goes through `useIslandFrame`).
|
|
123
|
-
*/
|
|
124
|
-
readonly animated?: boolean;
|
|
125
204
|
readonly interaction?: WidgetInteraction;
|
|
126
205
|
/**
|
|
127
206
|
* Node-editor port schema (design-005 §2; design-001 §5.3): wires bind to
|
|
@@ -129,27 +208,7 @@ export interface WidgetDef {
|
|
|
129
208
|
* the compatibility key list the connect gesture checks.
|
|
130
209
|
*/
|
|
131
210
|
readonly ports?: readonly WidgetPortDecl[];
|
|
132
|
-
|
|
133
|
-
* Palette/tray preview (design-005 §2 amendment, 2026-07-19). ENGINE-FREE
|
|
134
|
-
* BY CONTRACT: a preview renders with no world, no entity, no ops — a pure
|
|
135
|
-
* picture the host mounts inert (that is what makes it portable: trays,
|
|
136
|
-
* docs sites, a widget store). Authored at `defaultSize`; hosts scale.
|
|
137
|
-
* Three tiers, least effort first:
|
|
138
|
-
* - absent → the REAL component mounts with default props in
|
|
139
|
-
* the framework's preview sandbox (dom surfaces;
|
|
140
|
-
* truthful by construction);
|
|
141
|
-
* - `{ props: {…} }` → same sandbox mount with curated props;
|
|
142
|
-
* - a component, or `{ component }` → author-owned preview (a static
|
|
143
|
-
* mockup, a live self-ticking clock — the author's call). In P1 all
|
|
144
|
-
* declared previews are DOM components — the sanctioned escape hatch
|
|
145
|
-
* for GL widgets too (P2 adds the r3f snapshot pipeline).
|
|
146
|
-
* Opaque to core — the react package narrows it (`component` precedent).
|
|
147
|
-
*/
|
|
148
|
-
readonly preview?: unknown;
|
|
149
|
-
readonly container?: {
|
|
150
|
-
readonly accepts: readonly string[];
|
|
151
|
-
readonly provides?: readonly string[];
|
|
152
|
-
};
|
|
211
|
+
readonly container?: WidgetContainerDef;
|
|
153
212
|
/**
|
|
154
213
|
* Provides-keys WITHOUT container semantics (nodeboard field finding): a
|
|
155
214
|
* leaf that only offers itself to containers must not become a Container
|
|
@@ -192,6 +251,31 @@ export interface WidgetDef {
|
|
|
192
251
|
* §6.4 cross-schema movement).
|
|
193
252
|
*/
|
|
194
253
|
readonly migrate?: Readonly<Record<number, (prev: Record<string, unknown>) => Record<string, unknown>>>;
|
|
254
|
+
/**
|
|
255
|
+
* The widget's TRAY ENTRY (design-017 §8; K5a — K-L2: a plugin kind declares the same): a specimen of the object hangs on the
|
|
256
|
+
* pegboard tray, drawn by its own kind. No list in the engine names a kind — the catalog's widgets that carry an entry ARE the
|
|
257
|
+
* tray's contents. Only an object has one (a specimen is its face).
|
|
258
|
+
*/
|
|
259
|
+
readonly tray?: TrayEntry;
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* A tray entry (design-017 §8): `label` — the specimen's name tag; `props` — the specimen's props over the widget's defaults: its FACE
|
|
263
|
+
* on the board (K5b — a note with a word on it, a print with a picture); `take` — what one taken off the board is made with (K5b,
|
|
264
|
+
* D-K5b.1): absent, the widget's own defaults (a taken note is blank, a taken calendar shows its today's month); `"face"`, the
|
|
265
|
+
* specimen's props; a record, those props (each valid as `props`'); `local` — K5b, D-K5b.3: the specimen (and a copy lifted off it) is
|
|
266
|
+
* drawn with its kind's DESK STATE (`ObjectKind.local` — a note's writing, a print's pictures, a pad's print), as its objects are, for a
|
|
267
|
+
* face that lives there; absent, a specimen is its kind's stateless drawing (K5a); `hang` — how it hangs (kernel `TrayHang`: its size on
|
|
268
|
+
* the board in CSS px, its pegs in pitches from its hang point, its accessory); `category`, then `order`, then the type — its place in
|
|
269
|
+
* the lattice law's order.
|
|
270
|
+
*/
|
|
271
|
+
export interface TrayEntry {
|
|
272
|
+
readonly label: string;
|
|
273
|
+
readonly props?: Readonly<Record<string, unknown>>;
|
|
274
|
+
readonly take?: "face" | Readonly<Record<string, unknown>>;
|
|
275
|
+
readonly local?: boolean;
|
|
276
|
+
readonly hang: TrayHang;
|
|
277
|
+
readonly order?: number;
|
|
278
|
+
readonly category?: string;
|
|
195
279
|
}
|
|
196
280
|
export interface WidgetGroup {
|
|
197
281
|
readonly name: string;
|
|
@@ -205,11 +289,26 @@ export interface WidgetType {
|
|
|
205
289
|
readonly prefab: Prefab;
|
|
206
290
|
readonly groups: readonly WidgetGroup[];
|
|
207
291
|
readonly propToGroup: Readonly<Record<string, string>>;
|
|
208
|
-
|
|
209
|
-
readonly
|
|
210
|
-
/**
|
|
211
|
-
|
|
212
|
-
|
|
292
|
+
/** The `object` kind binding (design-015 §5.2) — the face; opaque; `undefined` for a widget the desk draws nothing for. */
|
|
293
|
+
readonly object: unknown;
|
|
294
|
+
/**
|
|
295
|
+
* The desk stratum equip stamps as `Stratum` (design-015 §4.2): the declared
|
|
296
|
+
* one, `things` for an object that declared none, `undefined` (no rider) for
|
|
297
|
+
* a faceless widget that declared none.
|
|
298
|
+
*/
|
|
299
|
+
readonly stratum: DeskStratum | undefined;
|
|
300
|
+
/** An object whose kind opens — `ops.open` picks it up (design-015 §8); false on every other widget. */
|
|
301
|
+
readonly openable: boolean;
|
|
302
|
+
/** The held bar's tools (design-015 §8, D3t-a); empty for anything that does not open. */
|
|
303
|
+
readonly heldTools: readonly HeldToolDef[];
|
|
304
|
+
/** The mode in hand at the pick-up, from the object's props; undefined = the first mode. */
|
|
305
|
+
readonly heldTool: ((props: Readonly<Record<string, unknown>>) => string) | undefined;
|
|
306
|
+
/** The selection menu's acts for this type's objects (K8a); empty when it declares none. */
|
|
307
|
+
readonly menu: readonly MenuActionDef[];
|
|
308
|
+
/** What rides with the widget when a gesture moves it (design-015 D3t-c); undefined = nothing. */
|
|
309
|
+
readonly riders: ((world: World, entity: Entity) => readonly Entity[]) | undefined;
|
|
310
|
+
/** The object's data prefabs (design-015 §5.1, D3t-a) — the catalog tracks them with the widget; empty for most. */
|
|
311
|
+
readonly data: readonly Prefab[];
|
|
213
312
|
readonly defaultSize: {
|
|
214
313
|
readonly w: number;
|
|
215
314
|
readonly h: number;
|
|
@@ -218,23 +317,25 @@ export interface WidgetType {
|
|
|
218
317
|
readonly w: number;
|
|
219
318
|
readonly h: number;
|
|
220
319
|
};
|
|
221
|
-
/** GL islands: repaint every visible frame (design-004 §3). */
|
|
222
|
-
readonly animated: boolean;
|
|
223
320
|
/** Node-editor ports (empty when not a node). */
|
|
224
321
|
readonly ports: readonly WidgetPortDecl[];
|
|
225
322
|
/** Runtime capability tags the equip system stamps at projection. */
|
|
226
323
|
readonly capabilityTags: readonly Tag[];
|
|
324
|
+
/** Normalized capability advertisement; never re-read from durable cells. */
|
|
325
|
+
readonly provides: readonly string[];
|
|
326
|
+
/** Fixed nested-frame binding and ingress/portal metadata, when a container. */
|
|
327
|
+
readonly container: WidgetContainerEntry | undefined;
|
|
227
328
|
/** Keyboard claim (design-007): the dom layer reads THIS (registry truth), not the tag. */
|
|
228
329
|
readonly keyboard: "shared" | "exclusive";
|
|
229
330
|
/** Escape ownership under an exclusive claim ("release" = engine-reserved). */
|
|
230
331
|
readonly keyboardEscape: "release" | "widget";
|
|
332
|
+
/** May instances be dropped INTO an accepting container (design-015 §9; `"never"` = a root object always, D-D18)? The drop system reads THIS. */
|
|
333
|
+
readonly drop: "into" | "never";
|
|
231
334
|
readonly migrate: Readonly<Record<number, (prev: Record<string, unknown>) => Record<string, unknown>>>;
|
|
232
335
|
/** Pre-attached behaviors, normalized (spawn tx for durable, equip for runtime). */
|
|
233
336
|
readonly behaviors: readonly WidgetBehaviorEntry[];
|
|
234
|
-
/**
|
|
235
|
-
readonly
|
|
236
|
-
/** Prop overrides for the default real-component preview mount (validated names). */
|
|
237
|
-
readonly previewProps?: Readonly<Record<string, unknown>>;
|
|
337
|
+
/** The tray entry (design-017 §8; K5a), validated and frozen; undefined = the widget hangs nothing on the tray. */
|
|
338
|
+
readonly tray: TrayEntry | undefined;
|
|
238
339
|
}
|
|
239
340
|
/** Stamped by the equip system once a projected widget carries its capability tags. */
|
|
240
341
|
export declare const WidgetEquipped: Tag;
|
|
@@ -248,5 +349,7 @@ export declare const renames: {
|
|
|
248
349
|
all(): WidgetRenameEntry[];
|
|
249
350
|
};
|
|
250
351
|
export declare function defineWidget(def: WidgetDef): WidgetType;
|
|
352
|
+
/** What one taken off the tray is made with (design-017 §9; K5b, D-K5b.1): the entry's `take` — the face's props, its own, or none (the widget's defaults). */
|
|
353
|
+
export declare function trayTakeProps(entry: TrayEntry): Readonly<Record<string, unknown>> | undefined;
|
|
251
354
|
/** TEST-ONLY wipe (mirrors __resetPrefabsForTests; not on the barrel). */
|
|
252
355
|
export declare function __resetWidgetsForTests(): void;
|
|
@@ -9,6 +9,18 @@
|
|
|
9
9
|
* projections from this frame's sync() are visible by then.
|
|
10
10
|
*
|
|
11
11
|
* This generalizes the graybox demo's equipSceneBoxes into the engine.
|
|
12
|
+
*
|
|
13
|
+
* RIDERS take the same path — session-local facts derivable from the widget
|
|
14
|
+
* TYPE and needed on every peer's projection, including one that received the
|
|
15
|
+
* widget over the wire or restored it from a file, neither of which ran a spawn
|
|
16
|
+
* path (design-013 D4: never sync what every peer can compute from `PrefabId`):
|
|
17
|
+
* the desk `Stratum` (design-015 §4.2, D2a-core) and the type's runtime
|
|
18
|
+
* pre-attached behaviours (design-009 §6). Structural `ctx.addComponent` lands
|
|
19
|
+
* at the derive flush like the tags. Until design-015 D5b the six presentation
|
|
20
|
+
* facts (`SurfaceKind` … `TextureRef`, design-013 §5) rode here too; they left
|
|
21
|
+
* with the DOM/GPU presentation choice — an object presents on the desk and
|
|
22
|
+
* nowhere else, so there is no kind to name, no target to choose and no texture
|
|
23
|
+
* to reserve.
|
|
12
24
|
*/
|
|
13
|
-
import { type System } from "@vibecook/strata-ecs";
|
|
14
|
-
export declare function createWidgetEquipSystem(): System;
|
|
25
|
+
import { type System, type World } from "@vibecook/strata-ecs";
|
|
26
|
+
export declare function createWidgetEquipSystem(world: World): System;
|