fraxel 0.1.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/animation/easing.d.ts +29 -0
- package/dist/animation/easing.d.ts.map +1 -0
- package/dist/animation/easing.js +50 -0
- package/dist/animation/easing.js.map +1 -0
- package/dist/animation/index.d.ts +7 -0
- package/dist/animation/index.d.ts.map +1 -0
- package/dist/animation/index.js +7 -0
- package/dist/animation/index.js.map +1 -0
- package/dist/animation/multiple.d.ts +26 -0
- package/dist/animation/multiple.d.ts.map +1 -0
- package/dist/animation/multiple.js +27 -0
- package/dist/animation/multiple.js.map +1 -0
- package/dist/animation/properties.d.ts +30 -0
- package/dist/animation/properties.d.ts.map +1 -0
- package/dist/animation/properties.js +32 -0
- package/dist/animation/properties.js.map +1 -0
- package/dist/animation/sequences.d.ts +30 -0
- package/dist/animation/sequences.d.ts.map +1 -0
- package/dist/animation/sequences.js +50 -0
- package/dist/animation/sequences.js.map +1 -0
- package/dist/animation/sprite-sheet.d.ts +81 -0
- package/dist/animation/sprite-sheet.d.ts.map +1 -0
- package/dist/animation/sprite-sheet.js +103 -0
- package/dist/animation/sprite-sheet.js.map +1 -0
- package/dist/animation/tween.d.ts +78 -0
- package/dist/animation/tween.d.ts.map +1 -0
- package/dist/animation/tween.js +103 -0
- package/dist/animation/tween.js.map +1 -0
- package/dist/assets/index.d.ts +6 -0
- package/dist/assets/index.d.ts.map +1 -0
- package/dist/assets/index.js +5 -0
- package/dist/assets/index.js.map +1 -0
- package/dist/assets/load-sound.d.ts +17 -0
- package/dist/assets/load-sound.d.ts.map +1 -0
- package/dist/assets/load-sound.js +35 -0
- package/dist/assets/load-sound.js.map +1 -0
- package/dist/assets/load-texture.d.ts +12 -0
- package/dist/assets/load-texture.d.ts.map +1 -0
- package/dist/assets/load-texture.js +40 -0
- package/dist/assets/load-texture.js.map +1 -0
- package/dist/assets/loader.d.ts +59 -0
- package/dist/assets/loader.d.ts.map +1 -0
- package/dist/assets/loader.js +65 -0
- package/dist/assets/loader.js.map +1 -0
- package/dist/assets/texture.d.ts +36 -0
- package/dist/assets/texture.d.ts.map +1 -0
- package/dist/assets/texture.js +49 -0
- package/dist/assets/texture.js.map +1 -0
- package/dist/audio/audio-context.d.ts +14 -0
- package/dist/audio/audio-context.d.ts.map +1 -0
- package/dist/audio/audio-context.js +20 -0
- package/dist/audio/audio-context.js.map +1 -0
- package/dist/audio/index.d.ts +2 -0
- package/dist/audio/index.d.ts.map +1 -0
- package/dist/audio/index.js +2 -0
- package/dist/audio/index.js.map +1 -0
- package/dist/collision/broadphase/spatial-hash.d.ts +32 -0
- package/dist/collision/broadphase/spatial-hash.d.ts.map +1 -0
- package/dist/collision/broadphase/spatial-hash.js +87 -0
- package/dist/collision/broadphase/spatial-hash.js.map +1 -0
- package/dist/collision/collision-system.d.ts +52 -0
- package/dist/collision/collision-system.d.ts.map +1 -0
- package/dist/collision/collision-system.js +278 -0
- package/dist/collision/collision-system.js.map +1 -0
- package/dist/collision/events/collision-emitter.d.ts +38 -0
- package/dist/collision/events/collision-emitter.d.ts.map +1 -0
- package/dist/collision/events/collision-emitter.js +47 -0
- package/dist/collision/events/collision-emitter.js.map +1 -0
- package/dist/collision/index.d.ts +13 -0
- package/dist/collision/index.d.ts.map +1 -0
- package/dist/collision/index.js +11 -0
- package/dist/collision/index.js.map +1 -0
- package/dist/collision/narrowphase/detector.d.ts +26 -0
- package/dist/collision/narrowphase/detector.d.ts.map +1 -0
- package/dist/collision/narrowphase/detector.js +70 -0
- package/dist/collision/narrowphase/detector.js.map +1 -0
- package/dist/collision/narrowphase/shapes.d.ts +91 -0
- package/dist/collision/narrowphase/shapes.d.ts.map +1 -0
- package/dist/collision/narrowphase/shapes.js +52 -0
- package/dist/collision/narrowphase/shapes.js.map +1 -0
- package/dist/collision/physics/physics-body.d.ts +38 -0
- package/dist/collision/physics/physics-body.d.ts.map +1 -0
- package/dist/collision/physics/physics-body.js +53 -0
- package/dist/collision/physics/physics-body.js.map +1 -0
- package/dist/collision/physics/physics-system.d.ts +23 -0
- package/dist/collision/physics/physics-system.d.ts.map +1 -0
- package/dist/collision/physics/physics-system.js +86 -0
- package/dist/collision/physics/physics-system.js.map +1 -0
- package/dist/collision/physics/resolver.d.ts +16 -0
- package/dist/collision/physics/resolver.d.ts.map +1 -0
- package/dist/collision/physics/resolver.js +91 -0
- package/dist/collision/physics/resolver.js.map +1 -0
- package/dist/collision/types.d.ts +22 -0
- package/dist/collision/types.d.ts.map +1 -0
- package/dist/collision/types.js +2 -0
- package/dist/collision/types.js.map +1 -0
- package/dist/core/game-config.d.ts +34 -0
- package/dist/core/game-config.d.ts.map +1 -0
- package/dist/core/game-config.js +31 -0
- package/dist/core/game-config.js.map +1 -0
- package/dist/core/game.d.ts +86 -0
- package/dist/core/game.d.ts.map +1 -0
- package/dist/core/game.js +166 -0
- package/dist/core/game.js.map +1 -0
- package/dist/core/index.d.ts +6 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +6 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/scene-manager.d.ts +28 -0
- package/dist/core/scene-manager.d.ts.map +1 -0
- package/dist/core/scene-manager.js +65 -0
- package/dist/core/scene-manager.js.map +1 -0
- package/dist/core/scene.d.ts +43 -0
- package/dist/core/scene.d.ts.map +1 -0
- package/dist/core/scene.js +48 -0
- package/dist/core/scene.js.map +1 -0
- package/dist/core/theme.d.ts +63 -0
- package/dist/core/theme.d.ts.map +1 -0
- package/dist/core/theme.js +59 -0
- package/dist/core/theme.js.map +1 -0
- package/dist/errors/animation.d.ts +24 -0
- package/dist/errors/animation.d.ts.map +1 -0
- package/dist/errors/animation.js +29 -0
- package/dist/errors/animation.js.map +1 -0
- package/dist/errors/assets.d.ts +34 -0
- package/dist/errors/assets.d.ts.map +1 -0
- package/dist/errors/assets.js +41 -0
- package/dist/errors/assets.js.map +1 -0
- package/dist/errors/base.d.ts +12 -0
- package/dist/errors/base.d.ts.map +1 -0
- package/dist/errors/base.js +15 -0
- package/dist/errors/base.js.map +1 -0
- package/dist/errors/env.d.ts +24 -0
- package/dist/errors/env.d.ts.map +1 -0
- package/dist/errors/env.js +29 -0
- package/dist/errors/env.js.map +1 -0
- package/dist/errors/hook.d.ts +46 -0
- package/dist/errors/hook.d.ts.map +1 -0
- package/dist/errors/hook.js +55 -0
- package/dist/errors/hook.js.map +1 -0
- package/dist/errors/index.d.ts +11 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +11 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/errors/jsx.d.ts +26 -0
- package/dist/errors/jsx.d.ts.map +1 -0
- package/dist/errors/jsx.js +45 -0
- package/dist/errors/jsx.js.map +1 -0
- package/dist/errors/lifecycle.d.ts +35 -0
- package/dist/errors/lifecycle.d.ts.map +1 -0
- package/dist/errors/lifecycle.js +42 -0
- package/dist/errors/lifecycle.js.map +1 -0
- package/dist/errors/math.d.ts +24 -0
- package/dist/errors/math.d.ts.map +1 -0
- package/dist/errors/math.js +34 -0
- package/dist/errors/math.js.map +1 -0
- package/dist/errors/node.d.ts +68 -0
- package/dist/errors/node.d.ts.map +1 -0
- package/dist/errors/node.js +87 -0
- package/dist/errors/node.js.map +1 -0
- package/dist/errors/scene.d.ts +35 -0
- package/dist/errors/scene.d.ts.map +1 -0
- package/dist/errors/scene.js +42 -0
- package/dist/errors/scene.js.map +1 -0
- package/dist/events/event.d.ts +106 -0
- package/dist/events/event.d.ts.map +1 -0
- package/dist/events/event.js +125 -0
- package/dist/events/event.js.map +1 -0
- package/dist/events/index.d.ts +2 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +2 -0
- package/dist/events/index.js.map +1 -0
- package/dist/events/types.d.ts +20 -0
- package/dist/events/types.d.ts.map +1 -0
- package/dist/events/types.js +2 -0
- package/dist/events/types.js.map +1 -0
- package/dist/hooks/context.d.ts +15 -0
- package/dist/hooks/context.d.ts.map +1 -0
- package/dist/hooks/context.js +26 -0
- package/dist/hooks/context.js.map +1 -0
- package/dist/hooks/deriveds/by-nodes/index.d.ts +7 -0
- package/dist/hooks/deriveds/by-nodes/index.d.ts.map +1 -0
- package/dist/hooks/deriveds/by-nodes/index.js +7 -0
- package/dist/hooks/deriveds/by-nodes/index.js.map +1 -0
- package/dist/hooks/deriveds/by-nodes/use-animation.d.ts +44 -0
- package/dist/hooks/deriveds/by-nodes/use-animation.d.ts.map +1 -0
- package/dist/hooks/deriveds/by-nodes/use-animation.js +61 -0
- package/dist/hooks/deriveds/by-nodes/use-animation.js.map +1 -0
- package/dist/hooks/deriveds/by-nodes/use-audio.d.ts +33 -0
- package/dist/hooks/deriveds/by-nodes/use-audio.d.ts.map +1 -0
- package/dist/hooks/deriveds/by-nodes/use-audio.js +43 -0
- package/dist/hooks/deriveds/by-nodes/use-audio.js.map +1 -0
- package/dist/hooks/deriveds/by-nodes/use-clickable.d.ts +32 -0
- package/dist/hooks/deriveds/by-nodes/use-clickable.d.ts.map +1 -0
- package/dist/hooks/deriveds/by-nodes/use-clickable.js +43 -0
- package/dist/hooks/deriveds/by-nodes/use-clickable.js.map +1 -0
- package/dist/hooks/deriveds/by-nodes/use-collider.d.ts +35 -0
- package/dist/hooks/deriveds/by-nodes/use-collider.d.ts.map +1 -0
- package/dist/hooks/deriveds/by-nodes/use-collider.js +55 -0
- package/dist/hooks/deriveds/by-nodes/use-collider.js.map +1 -0
- package/dist/hooks/deriveds/by-nodes/use-ray-cast.d.ts +35 -0
- package/dist/hooks/deriveds/by-nodes/use-ray-cast.d.ts.map +1 -0
- package/dist/hooks/deriveds/by-nodes/use-ray-cast.js +47 -0
- package/dist/hooks/deriveds/by-nodes/use-ray-cast.js.map +1 -0
- package/dist/hooks/deriveds/by-nodes/use-timer.d.ts +34 -0
- package/dist/hooks/deriveds/by-nodes/use-timer.d.ts.map +1 -0
- package/dist/hooks/deriveds/by-nodes/use-timer.js +48 -0
- package/dist/hooks/deriveds/by-nodes/use-timer.js.map +1 -0
- package/dist/hooks/deriveds/index.d.ts +5 -0
- package/dist/hooks/deriveds/index.d.ts.map +1 -0
- package/dist/hooks/deriveds/index.js +5 -0
- package/dist/hooks/deriveds/index.js.map +1 -0
- package/dist/hooks/deriveds/use-condition.d.ts +37 -0
- package/dist/hooks/deriveds/use-condition.d.ts.map +1 -0
- package/dist/hooks/deriveds/use-condition.js +47 -0
- package/dist/hooks/deriveds/use-condition.js.map +1 -0
- package/dist/hooks/deriveds/use-match.d.ts +26 -0
- package/dist/hooks/deriveds/use-match.d.ts.map +1 -0
- package/dist/hooks/deriveds/use-match.js +38 -0
- package/dist/hooks/deriveds/use-match.js.map +1 -0
- package/dist/hooks/deriveds/use-partial-node.d.ts +22 -0
- package/dist/hooks/deriveds/use-partial-node.d.ts.map +1 -0
- package/dist/hooks/deriveds/use-partial-node.js +25 -0
- package/dist/hooks/deriveds/use-partial-node.js.map +1 -0
- package/dist/hooks/deriveds/use-when.d.ts +28 -0
- package/dist/hooks/deriveds/use-when.d.ts.map +1 -0
- package/dist/hooks/deriveds/use-when.js +35 -0
- package/dist/hooks/deriveds/use-when.js.map +1 -0
- package/dist/hooks/index.d.ts +16 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +16 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/use-child.d.ts +24 -0
- package/dist/hooks/use-child.d.ts.map +1 -0
- package/dist/hooks/use-child.js +37 -0
- package/dist/hooks/use-child.js.map +1 -0
- package/dist/hooks/use-computed.d.ts +28 -0
- package/dist/hooks/use-computed.d.ts.map +1 -0
- package/dist/hooks/use-computed.js +41 -0
- package/dist/hooks/use-computed.js.map +1 -0
- package/dist/hooks/use-context.d.ts +58 -0
- package/dist/hooks/use-context.d.ts.map +1 -0
- package/dist/hooks/use-context.js +77 -0
- package/dist/hooks/use-context.js.map +1 -0
- package/dist/hooks/use-effect.d.ts +24 -0
- package/dist/hooks/use-effect.d.ts.map +1 -0
- package/dist/hooks/use-effect.js +63 -0
- package/dist/hooks/use-effect.js.map +1 -0
- package/dist/hooks/use-event.d.ts +29 -0
- package/dist/hooks/use-event.d.ts.map +1 -0
- package/dist/hooks/use-event.js +30 -0
- package/dist/hooks/use-event.js.map +1 -0
- package/dist/hooks/use-game.d.ts +17 -0
- package/dist/hooks/use-game.d.ts.map +1 -0
- package/dist/hooks/use-game.js +35 -0
- package/dist/hooks/use-game.js.map +1 -0
- package/dist/hooks/use-mount.d.ts +21 -0
- package/dist/hooks/use-mount.d.ts.map +1 -0
- package/dist/hooks/use-mount.js +33 -0
- package/dist/hooks/use-mount.js.map +1 -0
- package/dist/hooks/use-node.d.ts +42 -0
- package/dist/hooks/use-node.d.ts.map +1 -0
- package/dist/hooks/use-node.js +63 -0
- package/dist/hooks/use-node.js.map +1 -0
- package/dist/hooks/use-ref.d.ts +27 -0
- package/dist/hooks/use-ref.d.ts.map +1 -0
- package/dist/hooks/use-ref.js +33 -0
- package/dist/hooks/use-ref.js.map +1 -0
- package/dist/hooks/use-script.d.ts +33 -0
- package/dist/hooks/use-script.d.ts.map +1 -0
- package/dist/hooks/use-script.js +40 -0
- package/dist/hooks/use-script.js.map +1 -0
- package/dist/hooks/use-signal.d.ts +25 -0
- package/dist/hooks/use-signal.d.ts.map +1 -0
- package/dist/hooks/use-signal.js +36 -0
- package/dist/hooks/use-signal.js.map +1 -0
- package/dist/hooks/use-spawn.d.ts +27 -0
- package/dist/hooks/use-spawn.d.ts.map +1 -0
- package/dist/hooks/use-spawn.js +39 -0
- package/dist/hooks/use-spawn.js.map +1 -0
- package/dist/hooks/use-trigger.d.ts +51 -0
- package/dist/hooks/use-trigger.d.ts.map +1 -0
- package/dist/hooks/use-trigger.js +68 -0
- package/dist/hooks/use-trigger.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/input/input.d.ts +46 -0
- package/dist/input/input.d.ts.map +1 -0
- package/dist/input/input.js +159 -0
- package/dist/input/input.js.map +1 -0
- package/dist/jsx/components/fragment.d.ts +3 -0
- package/dist/jsx/components/fragment.d.ts.map +1 -0
- package/dist/jsx/components/fragment.js +7 -0
- package/dist/jsx/components/fragment.js.map +1 -0
- package/dist/jsx/components/game.d.ts +21 -0
- package/dist/jsx/components/game.d.ts.map +1 -0
- package/dist/jsx/components/game.js +17 -0
- package/dist/jsx/components/game.js.map +1 -0
- package/dist/jsx/components/index.d.ts +5 -0
- package/dist/jsx/components/index.d.ts.map +1 -0
- package/dist/jsx/components/index.js +5 -0
- package/dist/jsx/components/index.js.map +1 -0
- package/dist/jsx/components/list.d.ts +88 -0
- package/dist/jsx/components/list.d.ts.map +1 -0
- package/dist/jsx/components/list.js +93 -0
- package/dist/jsx/components/list.js.map +1 -0
- package/dist/jsx/components/scene.d.ts +40 -0
- package/dist/jsx/components/scene.d.ts.map +1 -0
- package/dist/jsx/components/scene.js +20 -0
- package/dist/jsx/components/scene.js.map +1 -0
- package/dist/jsx/index.d.ts +5 -0
- package/dist/jsx/index.d.ts.map +1 -0
- package/dist/jsx/index.js +5 -0
- package/dist/jsx/index.js.map +1 -0
- package/dist/jsx/jsx.d.ts +3 -0
- package/dist/jsx/jsx.d.ts.map +1 -0
- package/dist/jsx/jsx.js +4 -0
- package/dist/jsx/jsx.js.map +1 -0
- package/dist/jsx/render/game.d.ts +41 -0
- package/dist/jsx/render/game.d.ts.map +1 -0
- package/dist/jsx/render/game.js +86 -0
- package/dist/jsx/render/game.js.map +1 -0
- package/dist/jsx/render/index.d.ts +3 -0
- package/dist/jsx/render/index.d.ts.map +1 -0
- package/dist/jsx/render/index.js +3 -0
- package/dist/jsx/render/index.js.map +1 -0
- package/dist/jsx/render/to-nodes.d.ts +10 -0
- package/dist/jsx/render/to-nodes.d.ts.map +1 -0
- package/dist/jsx/render/to-nodes.js +52 -0
- package/dist/jsx/render/to-nodes.js.map +1 -0
- package/dist/jsx/render/types/class-component.d.ts +4 -0
- package/dist/jsx/render/types/class-component.d.ts.map +1 -0
- package/dist/jsx/render/types/class-component.js +8 -0
- package/dist/jsx/render/types/class-component.js.map +1 -0
- package/dist/jsx/render/types/func-components.d.ts +4 -0
- package/dist/jsx/render/types/func-components.d.ts.map +1 -0
- package/dist/jsx/render/types/func-components.js +8 -0
- package/dist/jsx/render/types/func-components.js.map +1 -0
- package/dist/jsx/render/types/instrinsic-elements.d.ts +6 -0
- package/dist/jsx/render/types/instrinsic-elements.d.ts.map +1 -0
- package/dist/jsx/render/types/instrinsic-elements.js +41 -0
- package/dist/jsx/render/types/instrinsic-elements.js.map +1 -0
- package/dist/jsx/types.d.ts +41 -0
- package/dist/jsx/types.d.ts.map +1 -0
- package/dist/jsx/types.js +2 -0
- package/dist/jsx/types.js.map +1 -0
- package/dist/jsx/utils.d.ts +4 -0
- package/dist/jsx/utils.d.ts.map +1 -0
- package/dist/jsx/utils.js +15 -0
- package/dist/jsx/utils.js.map +1 -0
- package/dist/jsx-runtime.d.ts +6 -0
- package/dist/jsx-runtime.d.ts.map +1 -0
- package/dist/jsx-runtime.js +6 -0
- package/dist/jsx-runtime.js.map +1 -0
- package/dist/math/index.d.ts +3 -0
- package/dist/math/index.d.ts.map +1 -0
- package/dist/math/index.js +2 -0
- package/dist/math/index.js.map +1 -0
- package/dist/math/types.d.ts +13 -0
- package/dist/math/types.d.ts.map +1 -0
- package/dist/math/types.js +2 -0
- package/dist/math/types.js.map +1 -0
- package/dist/math/vector2.d.ts +145 -0
- package/dist/math/vector2.d.ts.map +1 -0
- package/dist/math/vector2.js +164 -0
- package/dist/math/vector2.js.map +1 -0
- package/dist/nodes/_node.d.ts +283 -0
- package/dist/nodes/_node.d.ts.map +1 -0
- package/dist/nodes/_node.js +371 -0
- package/dist/nodes/_node.js.map +1 -0
- package/dist/nodes/animation-player.d.ts +208 -0
- package/dist/nodes/animation-player.d.ts.map +1 -0
- package/dist/nodes/animation-player.js +249 -0
- package/dist/nodes/animation-player.js.map +1 -0
- package/dist/nodes/audio-player.d.ts +128 -0
- package/dist/nodes/audio-player.d.ts.map +1 -0
- package/dist/nodes/audio-player.js +173 -0
- package/dist/nodes/audio-player.js.map +1 -0
- package/dist/nodes/group.d.ts +55 -0
- package/dist/nodes/group.d.ts.map +1 -0
- package/dist/nodes/group.js +54 -0
- package/dist/nodes/group.js.map +1 -0
- package/dist/nodes/index.d.ts +8 -0
- package/dist/nodes/index.d.ts.map +1 -0
- package/dist/nodes/index.js +7 -0
- package/dist/nodes/index.js.map +1 -0
- package/dist/nodes/lib/enum.d.ts +42 -0
- package/dist/nodes/lib/enum.d.ts.map +1 -0
- package/dist/nodes/lib/enum.js +43 -0
- package/dist/nodes/lib/enum.js.map +1 -0
- package/dist/nodes/lib/index.d.ts +5 -0
- package/dist/nodes/lib/index.d.ts.map +1 -0
- package/dist/nodes/lib/index.js +5 -0
- package/dist/nodes/lib/index.js.map +1 -0
- package/dist/nodes/lib/registry.d.ts +43 -0
- package/dist/nodes/lib/registry.d.ts.map +1 -0
- package/dist/nodes/lib/registry.js +46 -0
- package/dist/nodes/lib/registry.js.map +1 -0
- package/dist/nodes/lib/types.d.ts +89 -0
- package/dist/nodes/lib/types.d.ts.map +1 -0
- package/dist/nodes/lib/types.js +2 -0
- package/dist/nodes/lib/types.js.map +1 -0
- package/dist/nodes/lib/utils.d.ts +35 -0
- package/dist/nodes/lib/utils.d.ts.map +1 -0
- package/dist/nodes/lib/utils.js +58 -0
- package/dist/nodes/lib/utils.js.map +1 -0
- package/dist/nodes/node2d/_node2d.d.ts +59 -0
- package/dist/nodes/node2d/_node2d.d.ts.map +1 -0
- package/dist/nodes/node2d/_node2d.js +57 -0
- package/dist/nodes/node2d/_node2d.js.map +1 -0
- package/dist/nodes/node2d/camera.d.ts +64 -0
- package/dist/nodes/node2d/camera.d.ts.map +1 -0
- package/dist/nodes/node2d/camera.js +72 -0
- package/dist/nodes/node2d/camera.js.map +1 -0
- package/dist/nodes/node2d/clickable.d.ts +96 -0
- package/dist/nodes/node2d/clickable.d.ts.map +1 -0
- package/dist/nodes/node2d/clickable.js +117 -0
- package/dist/nodes/node2d/clickable.js.map +1 -0
- package/dist/nodes/node2d/collider.d.ts +96 -0
- package/dist/nodes/node2d/collider.d.ts.map +1 -0
- package/dist/nodes/node2d/collider.js +116 -0
- package/dist/nodes/node2d/collider.js.map +1 -0
- package/dist/nodes/node2d/index.d.ts +12 -0
- package/dist/nodes/node2d/index.d.ts.map +1 -0
- package/dist/nodes/node2d/index.js +11 -0
- package/dist/nodes/node2d/index.js.map +1 -0
- package/dist/nodes/node2d/lib/index.d.ts +2 -0
- package/dist/nodes/node2d/lib/index.d.ts.map +1 -0
- package/dist/nodes/node2d/lib/index.js +2 -0
- package/dist/nodes/node2d/lib/index.js.map +1 -0
- package/dist/nodes/node2d/lib/utils.d.ts +4 -0
- package/dist/nodes/node2d/lib/utils.d.ts.map +1 -0
- package/dist/nodes/node2d/lib/utils.js +14 -0
- package/dist/nodes/node2d/lib/utils.js.map +1 -0
- package/dist/nodes/node2d/ray-cast.d.ts +115 -0
- package/dist/nodes/node2d/ray-cast.d.ts.map +1 -0
- package/dist/nodes/node2d/ray-cast.js +129 -0
- package/dist/nodes/node2d/ray-cast.js.map +1 -0
- package/dist/nodes/node2d/rectangle.d.ts +87 -0
- package/dist/nodes/node2d/rectangle.d.ts.map +1 -0
- package/dist/nodes/node2d/rectangle.js +60 -0
- package/dist/nodes/node2d/rectangle.js.map +1 -0
- package/dist/nodes/node2d/rigid-body.d.ts +65 -0
- package/dist/nodes/node2d/rigid-body.d.ts.map +1 -0
- package/dist/nodes/node2d/rigid-body.js +56 -0
- package/dist/nodes/node2d/rigid-body.js.map +1 -0
- package/dist/nodes/node2d/sprite.d.ts +285 -0
- package/dist/nodes/node2d/sprite.d.ts.map +1 -0
- package/dist/nodes/node2d/sprite.js +226 -0
- package/dist/nodes/node2d/sprite.js.map +1 -0
- package/dist/nodes/node2d/text.d.ts +62 -0
- package/dist/nodes/node2d/text.d.ts.map +1 -0
- package/dist/nodes/node2d/text.js +52 -0
- package/dist/nodes/node2d/text.js.map +1 -0
- package/dist/nodes/node2d/transform.d.ts +32 -0
- package/dist/nodes/node2d/transform.d.ts.map +1 -0
- package/dist/nodes/node2d/transform.js +30 -0
- package/dist/nodes/node2d/transform.js.map +1 -0
- package/dist/nodes/timer.d.ts +107 -0
- package/dist/nodes/timer.d.ts.map +1 -0
- package/dist/nodes/timer.js +108 -0
- package/dist/nodes/timer.js.map +1 -0
- package/dist/reactivity/index.d.ts +5 -0
- package/dist/reactivity/index.d.ts.map +1 -0
- package/dist/reactivity/index.js +5 -0
- package/dist/reactivity/index.js.map +1 -0
- package/dist/reactivity/reactive.d.ts +4 -0
- package/dist/reactivity/reactive.d.ts.map +1 -0
- package/dist/reactivity/reactive.js +50 -0
- package/dist/reactivity/reactive.js.map +1 -0
- package/dist/reactivity/register.d.ts +7 -0
- package/dist/reactivity/register.d.ts.map +1 -0
- package/dist/reactivity/register.js +18 -0
- package/dist/reactivity/register.js.map +1 -0
- package/dist/reactivity/signal.d.ts +126 -0
- package/dist/reactivity/signal.d.ts.map +1 -0
- package/dist/reactivity/signal.js +152 -0
- package/dist/reactivity/signal.js.map +1 -0
- package/dist/reactivity/types.d.ts +31 -0
- package/dist/reactivity/types.d.ts.map +1 -0
- package/dist/reactivity/types.js +2 -0
- package/dist/reactivity/types.js.map +1 -0
- package/dist/scripts/index.d.ts +2 -0
- package/dist/scripts/index.d.ts.map +1 -0
- package/dist/scripts/index.js +2 -0
- package/dist/scripts/index.js.map +1 -0
- package/dist/scripts/script.d.ts +80 -0
- package/dist/scripts/script.d.ts.map +1 -0
- package/dist/scripts/script.js +75 -0
- package/dist/scripts/script.js.map +1 -0
- package/dist/utils/dpr.d.ts +2 -0
- package/dist/utils/dpr.d.ts.map +1 -0
- package/dist/utils/dpr.js +14 -0
- package/dist/utils/dpr.js.map +1 -0
- package/dist/utils/ternaries.d.ts +6 -0
- package/dist/utils/ternaries.d.ts.map +1 -0
- package/dist/utils/ternaries.js +17 -0
- package/dist/utils/ternaries.js.map +1 -0
- package/package.json +56 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { Event } from '../events/event.js';
|
|
2
|
+
import type { Fun } from '../events/types.js';
|
|
3
|
+
import type { PrimaryNode } from '../nodes/lib/enum.js';
|
|
4
|
+
import type { NodeInstances } from '../nodes/lib/types.js';
|
|
5
|
+
import type { NodeReference } from './use-node.js';
|
|
6
|
+
/**
|
|
7
|
+
* The **`useEvent`** hook subscribes to an event on a node reference.
|
|
8
|
+
*
|
|
9
|
+
* @param node A `NodeReference` to the node that emits the event
|
|
10
|
+
* @param eventName The name of the event to subscribe to
|
|
11
|
+
* @param listener The callback function to call when the event is emitted
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```tsx
|
|
15
|
+
* const sprite = useNode(PrimaryNode.Sprite)
|
|
16
|
+
*
|
|
17
|
+
* useEvent(sprite, 'started', () => {
|
|
18
|
+
* console.log('Sprite started!')
|
|
19
|
+
* })
|
|
20
|
+
*
|
|
21
|
+
* return <sprite ref={sprite} />
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export declare function useEvent<N extends PrimaryNode, K extends keyof Events<N>>(node: NodeReference<N>, eventName: K, listener: Events<N>[K]): void;
|
|
25
|
+
export type GetEvent<T> = T extends Event<infer P, string> ? Fun<P> : Fun<[]>;
|
|
26
|
+
export type Events<T extends PrimaryNode> = {
|
|
27
|
+
[P in keyof NodeInstances[T] as NodeInstances[T][P] extends Event<any[], string> ? P : never]: GetEvent<NodeInstances[T][P]>;
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=use-event.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-event.d.ts","sourceRoot":"","sources":["../../src/hooks/use-event.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAE1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAElD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,SAAS,MAAM,MAAM,CAAC,CAAC,CAAC,EACvE,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EACtB,SAAS,EAAE,CAAC,EACZ,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAOvB;AAED,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAA;AAE7E,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,WAAW,IAAI;KAExC,CAAC,IAAI,MAAM,aAAa,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,GAC1F,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACjC,CAAA"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { InvalidEventInHookError } from '../errors/hook.js';
|
|
2
|
+
import { Event } from '../events/event.js';
|
|
3
|
+
import { pushEffect } from './context.js';
|
|
4
|
+
/**
|
|
5
|
+
* The **`useEvent`** hook subscribes to an event on a node reference.
|
|
6
|
+
*
|
|
7
|
+
* @param node A `NodeReference` to the node that emits the event
|
|
8
|
+
* @param eventName The name of the event to subscribe to
|
|
9
|
+
* @param listener The callback function to call when the event is emitted
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```tsx
|
|
13
|
+
* const sprite = useNode(PrimaryNode.Sprite)
|
|
14
|
+
*
|
|
15
|
+
* useEvent(sprite, 'started', () => {
|
|
16
|
+
* console.log('Sprite started!')
|
|
17
|
+
* })
|
|
18
|
+
*
|
|
19
|
+
* return <sprite ref={sprite} />
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export function useEvent(node, eventName, listener) {
|
|
23
|
+
pushEffect('useEvent', () => {
|
|
24
|
+
const ev = node.node[eventName];
|
|
25
|
+
if (!(ev instanceof Event))
|
|
26
|
+
throw new InvalidEventInHookError('useEvent', eventName);
|
|
27
|
+
ev.on(listener);
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=use-event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-event.js","sourceRoot":"","sources":["../../src/hooks/use-event.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAI1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAGzC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,QAAQ,CACtB,IAAsB,EACtB,SAAY,EACZ,QAAsB;IAEtB,UAAU,CAAC,UAAU,EAAE,GAAG,EAAE;QAC1B,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAC/B,IAAI,CAAC,CAAC,EAAE,YAAY,KAAK,CAAC;YAAE,MAAM,IAAI,uBAAuB,CAAC,UAAU,EAAE,SAAmB,CAAC,CAAA;QAC9F,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { GameControls } from '../jsx/render/game.js';
|
|
2
|
+
/**
|
|
3
|
+
* The **`useGame`** hooks gets the game controls.
|
|
4
|
+
*
|
|
5
|
+
* @example
|
|
6
|
+
* ```tsx
|
|
7
|
+
* const game = useGame()
|
|
8
|
+
*
|
|
9
|
+
* const handleStart = () => {
|
|
10
|
+
* game.pause()
|
|
11
|
+
* }
|
|
12
|
+
*
|
|
13
|
+
* return <transform onStart={handleStart} />
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export declare function useGame(): GameControls;
|
|
17
|
+
//# sourceMappingURL=use-game.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-game.d.ts","sourceRoot":"","sources":["../../src/hooks/use-game.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAIzD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,OAAO,IAAI,YAAY,CAgBtC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { GameConfig } from '../core/game-config.js';
|
|
2
|
+
import { Game } from '../core/game.js';
|
|
3
|
+
import { Vector2 } from '../math/vector2.js';
|
|
4
|
+
import { pushEffect } from './context.js';
|
|
5
|
+
/**
|
|
6
|
+
* The **`useGame`** hooks gets the game controls.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```tsx
|
|
10
|
+
* const game = useGame()
|
|
11
|
+
*
|
|
12
|
+
* const handleStart = () => {
|
|
13
|
+
* game.pause()
|
|
14
|
+
* }
|
|
15
|
+
*
|
|
16
|
+
* return <transform onStart={handleStart} />
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
export function useGame() {
|
|
20
|
+
pushEffect('useGame', () => { });
|
|
21
|
+
return {
|
|
22
|
+
play: () => Game.play(),
|
|
23
|
+
pause: () => Game.pause(),
|
|
24
|
+
changeScene: (name) => {
|
|
25
|
+
return Game.sceneManager.setScene(name);
|
|
26
|
+
},
|
|
27
|
+
preloadScene: (name) => {
|
|
28
|
+
return Game.sceneManager.preloadScene(name);
|
|
29
|
+
},
|
|
30
|
+
getSize() {
|
|
31
|
+
return new Vector2(GameConfig.width, GameConfig.height);
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=use-game.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-game.js","sourceRoot":"","sources":["../../src/hooks/use-game.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAA;AAEtC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,OAAO;IACrB,UAAU,CAAC,SAAS,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IAE/B,OAAO;QACL,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE;QACvB,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE;QACzB,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE;YACpB,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACzC,CAAC;QACD,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE;YACrB,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;QAC7C,CAAC;QACD,OAAO;YACL,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;QACzD,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The **`useMount`** hook runs a function when the node starts.
|
|
3
|
+
* If the function returns a cleanup function, it runs when the node is destroyed.
|
|
4
|
+
* Does not re-run on signal changes — only on mount and unmount.
|
|
5
|
+
*
|
|
6
|
+
* @param fn The function to run on mount. Can return a cleanup function that runs on destroy.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```tsx
|
|
10
|
+
* useMount(() => {
|
|
11
|
+
* console.log('Node mounted')
|
|
12
|
+
* return () => {
|
|
13
|
+
* console.log('Node destroyed')
|
|
14
|
+
* }
|
|
15
|
+
* })
|
|
16
|
+
*
|
|
17
|
+
* return <transform />
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export declare function useMount(fn: () => void | (() => void)): void;
|
|
21
|
+
//# sourceMappingURL=use-mount.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-mount.d.ts","sourceRoot":"","sources":["../../src/hooks/use-mount.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAU5D"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { pushEffect } from './context.js';
|
|
2
|
+
/**
|
|
3
|
+
* The **`useMount`** hook runs a function when the node starts.
|
|
4
|
+
* If the function returns a cleanup function, it runs when the node is destroyed.
|
|
5
|
+
* Does not re-run on signal changes — only on mount and unmount.
|
|
6
|
+
*
|
|
7
|
+
* @param fn The function to run on mount. Can return a cleanup function that runs on destroy.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```tsx
|
|
11
|
+
* useMount(() => {
|
|
12
|
+
* console.log('Node mounted')
|
|
13
|
+
* return () => {
|
|
14
|
+
* console.log('Node destroyed')
|
|
15
|
+
* }
|
|
16
|
+
* })
|
|
17
|
+
*
|
|
18
|
+
* return <transform />
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export function useMount(fn) {
|
|
22
|
+
pushEffect('useMount', (nodes) => {
|
|
23
|
+
if (nodes.length < 0)
|
|
24
|
+
return;
|
|
25
|
+
const node = nodes[0];
|
|
26
|
+
node.started.on(() => {
|
|
27
|
+
const unmount = fn();
|
|
28
|
+
if (unmount)
|
|
29
|
+
node.destroyed.on(() => unmount());
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=use-mount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-mount.js","sourceRoot":"","sources":["../../src/hooks/use-mount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,QAAQ,CAAC,EAA6B;IACpD,UAAU,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE;QAC/B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,OAAM;QAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAA;QAEtB,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE;YACnB,MAAM,OAAO,GAAG,EAAE,EAAE,CAAA;YACpB,IAAI,OAAO;gBAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAA;QACjD,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { PrimaryNode } from '../nodes/lib/enum.js';
|
|
2
|
+
import { type NodeInstances } from '../nodes/lib/types.js';
|
|
3
|
+
import type { SignalGetter } from '../reactivity/types.js';
|
|
4
|
+
/**
|
|
5
|
+
* The **`useNode`** hook creates a reference to a node of the specified type.
|
|
6
|
+
* The reference can be passed to a node's `ref` prop to get a reference to it.
|
|
7
|
+
*
|
|
8
|
+
* @param type The type of node to reference
|
|
9
|
+
* @returns A `NodeReference` that will be populated when the node is mounted
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```tsx
|
|
13
|
+
* const sprite = useNode(PrimaryNode.Sprite)
|
|
14
|
+
*
|
|
15
|
+
* return (
|
|
16
|
+
* <transform>
|
|
17
|
+
* <sprite ref={sprite} />
|
|
18
|
+
* </transform>
|
|
19
|
+
* )
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```tsx
|
|
24
|
+
* const transform = useNode(PrimaryNode.Transform)
|
|
25
|
+
* const spawn = useSpawn(transform)
|
|
26
|
+
*
|
|
27
|
+
* return (
|
|
28
|
+
* <transform ref={transform}>
|
|
29
|
+
* <clickable onClick={() => spawn(<sprite />)} />
|
|
30
|
+
* </transform>
|
|
31
|
+
* )
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export declare function useNode<T extends PrimaryNode>(type: T): NodeReference<T>;
|
|
35
|
+
export declare class NodeReference<T extends PrimaryNode> {
|
|
36
|
+
#private;
|
|
37
|
+
set node(node: NodeInstances[T]);
|
|
38
|
+
get node(): NodeInstances[T];
|
|
39
|
+
signal: SignalGetter<NodeInstances[T] | null>;
|
|
40
|
+
constructor(type: T);
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=use-node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-node.d.ts","sourceRoot":"","sources":["../../src/hooks/use-node.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAE1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAG1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAKxE;AAED,qBAAa,aAAa,CAAC,CAAC,SAAS,WAAW;;IAI9C,IAAI,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EAK9B;IACD,IAAI,IAAI,IANO,aAAa,CAAC,CAAC,CAAC,CAW9B;IACD,MAAM,EAAE,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;gBAEjC,IAAI,EAAE,CAAC;CAIpB"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { NodeNotInitializedError } from '../errors/lifecycle.js';
|
|
2
|
+
import { NodeTypeMismatchError } from '../errors/node.js';
|
|
3
|
+
import { PrimaryNode } from '../nodes/lib/enum.js';
|
|
4
|
+
import {} from '../nodes/lib/types.js';
|
|
5
|
+
import { Signal } from '../reactivity/signal.js';
|
|
6
|
+
import { pushEffect } from './context.js';
|
|
7
|
+
/**
|
|
8
|
+
* The **`useNode`** hook creates a reference to a node of the specified type.
|
|
9
|
+
* The reference can be passed to a node's `ref` prop to get a reference to it.
|
|
10
|
+
*
|
|
11
|
+
* @param type The type of node to reference
|
|
12
|
+
* @returns A `NodeReference` that will be populated when the node is mounted
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```tsx
|
|
16
|
+
* const sprite = useNode(PrimaryNode.Sprite)
|
|
17
|
+
*
|
|
18
|
+
* return (
|
|
19
|
+
* <transform>
|
|
20
|
+
* <sprite ref={sprite} />
|
|
21
|
+
* </transform>
|
|
22
|
+
* )
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```tsx
|
|
27
|
+
* const transform = useNode(PrimaryNode.Transform)
|
|
28
|
+
* const spawn = useSpawn(transform)
|
|
29
|
+
*
|
|
30
|
+
* return (
|
|
31
|
+
* <transform ref={transform}>
|
|
32
|
+
* <clickable onClick={() => spawn(<sprite />)} />
|
|
33
|
+
* </transform>
|
|
34
|
+
* )
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export function useNode(type) {
|
|
38
|
+
pushEffect('useNode', () => { });
|
|
39
|
+
const nodeRef = new NodeReference(type);
|
|
40
|
+
return nodeRef;
|
|
41
|
+
}
|
|
42
|
+
export class NodeReference {
|
|
43
|
+
#type;
|
|
44
|
+
#node = new Signal(null);
|
|
45
|
+
set node(node) {
|
|
46
|
+
if (node.type !== this.#type) {
|
|
47
|
+
throw new NodeTypeMismatchError(this.#type, node.type);
|
|
48
|
+
}
|
|
49
|
+
this.#node.value = node;
|
|
50
|
+
}
|
|
51
|
+
get node() {
|
|
52
|
+
if (this.#node.value == null) {
|
|
53
|
+
throw new NodeNotInitializedError(this.#type);
|
|
54
|
+
}
|
|
55
|
+
return this.#node.value;
|
|
56
|
+
}
|
|
57
|
+
signal;
|
|
58
|
+
constructor(type) {
|
|
59
|
+
this.#type = type;
|
|
60
|
+
this.signal = this.#node.getter;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=use-node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-node.js","sourceRoot":"","sources":["../../src/hooks/use-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAsB,MAAM,uBAAuB,CAAA;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,UAAU,OAAO,CAAwB,IAAO;IACpD,UAAU,CAAC,SAAS,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IAC/B,MAAM,OAAO,GAAG,IAAI,aAAa,CAAI,IAAI,CAAC,CAAA;IAE1C,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,OAAO,aAAa;IACxB,KAAK,CAAG;IACR,KAAK,GAAG,IAAI,MAAM,CAA0B,IAAI,CAAC,CAAA;IAEjD,IAAI,IAAI,CAAC,IAAsB;QAC7B,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC;YAC7B,MAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QACxD,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAA;IACzB,CAAC;IACD,IAAI,IAAI;QACN,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;YAC7B,MAAM,IAAI,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC/C,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAA;IACzB,CAAC;IACD,MAAM,CAAuC;IAE7C,YAAY,IAAO;QACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAA;IACjC,CAAC;CACF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The **`Reference`** class holds a mutable value that persists across renders.
|
|
3
|
+
*/
|
|
4
|
+
export declare class Reference<T> {
|
|
5
|
+
constructor(value: T);
|
|
6
|
+
current: T;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* The **`useRef`** hook creates a mutable reference that persists across renders.
|
|
10
|
+
*
|
|
11
|
+
* @param value The initial value
|
|
12
|
+
* @returns A `Reference` object with a mutable `current` property
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```tsx
|
|
16
|
+
* const count = useRef(0)
|
|
17
|
+
*
|
|
18
|
+
* const handleClick = () => {
|
|
19
|
+
* count.current++
|
|
20
|
+
* console.log(count.current)
|
|
21
|
+
* }
|
|
22
|
+
*
|
|
23
|
+
* return <clickable onClick={handleClick} />
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare function useRef<T>(value: T): Reference<T>;
|
|
27
|
+
//# sourceMappingURL=use-ref.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-ref.d.ts","sourceRoot":"","sources":["../../src/hooks/use-ref.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,qBAAa,SAAS,CAAC,CAAC;gBACV,KAAK,EAAE,CAAC;IAIpB,OAAO,EAAE,CAAC,CAAA;CACX;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,gBAGjC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { pushEffect } from './context';
|
|
2
|
+
/**
|
|
3
|
+
* The **`Reference`** class holds a mutable value that persists across renders.
|
|
4
|
+
*/
|
|
5
|
+
export class Reference {
|
|
6
|
+
constructor(value) {
|
|
7
|
+
this.current = value;
|
|
8
|
+
}
|
|
9
|
+
current;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* The **`useRef`** hook creates a mutable reference that persists across renders.
|
|
13
|
+
*
|
|
14
|
+
* @param value The initial value
|
|
15
|
+
* @returns A `Reference` object with a mutable `current` property
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```tsx
|
|
19
|
+
* const count = useRef(0)
|
|
20
|
+
*
|
|
21
|
+
* const handleClick = () => {
|
|
22
|
+
* count.current++
|
|
23
|
+
* console.log(count.current)
|
|
24
|
+
* }
|
|
25
|
+
*
|
|
26
|
+
* return <clickable onClick={handleClick} />
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export function useRef(value) {
|
|
30
|
+
pushEffect('useRef', () => { });
|
|
31
|
+
return new Reference(value);
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=use-ref.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-ref.js","sourceRoot":"","sources":["../../src/hooks/use-ref.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAEtC;;GAEG;AACH,MAAM,OAAO,SAAS;IACpB,YAAY,KAAQ;QAClB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAA;IACtB,CAAC;IAED,OAAO,CAAG;CACX;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,MAAM,CAAI,KAAQ;IAChC,UAAU,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IAC9B,OAAO,IAAI,SAAS,CAAC,KAAK,CAAC,CAAA;AAC7B,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { PrimaryNode } from '../nodes';
|
|
2
|
+
import type { DinixScript } from '../scripts';
|
|
3
|
+
import type { NodeReference } from './use-node';
|
|
4
|
+
/**
|
|
5
|
+
* The **`useScript`** hook retrieves the script attached to a node reference.
|
|
6
|
+
*
|
|
7
|
+
* @param node A `NodeReference` to the node that has the script
|
|
8
|
+
* @returns A `SignalGetter` containing the script instance
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```tsx
|
|
12
|
+
* function Player() {
|
|
13
|
+
* const sprite = useNode(PrimaryNode.Sprite)
|
|
14
|
+
* const script = useScript<PlayerScript>(sprite)
|
|
15
|
+
*
|
|
16
|
+
* const handleStart = () => {
|
|
17
|
+
* console.log(script()) // The script instance
|
|
18
|
+
* }
|
|
19
|
+
*
|
|
20
|
+
* return <sprite ref={sprite} onStart={handleStart} script={new PlayerScript()} />
|
|
21
|
+
* }
|
|
22
|
+
*
|
|
23
|
+
* class PlayerScript extends DinixScript<PrimaryNode.Sprite> {
|
|
24
|
+
* health = 100
|
|
25
|
+
*
|
|
26
|
+
* setup() {
|
|
27
|
+
* // Do something...
|
|
28
|
+
* }
|
|
29
|
+
* }
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export declare function useScript<T extends DinixScript<PrimaryNode>>(node: NodeReference<PrimaryNode>): import("..").SignalGetter<T | undefined>;
|
|
33
|
+
//# sourceMappingURL=use-script.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-script.d.ts","sourceRoot":"","sources":["../../src/hooks/use-script.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAE7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAI/C;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,SAAS,CAAC,CAAC,SAAS,WAAW,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,aAAa,CAAC,WAAW,CAAC,4CAU7F"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { pushEffect } from './context';
|
|
2
|
+
import { useEffect } from './use-effect';
|
|
3
|
+
import { Signal } from '../reactivity';
|
|
4
|
+
/**
|
|
5
|
+
* The **`useScript`** hook retrieves the script attached to a node reference.
|
|
6
|
+
*
|
|
7
|
+
* @param node A `NodeReference` to the node that has the script
|
|
8
|
+
* @returns A `SignalGetter` containing the script instance
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```tsx
|
|
12
|
+
* function Player() {
|
|
13
|
+
* const sprite = useNode(PrimaryNode.Sprite)
|
|
14
|
+
* const script = useScript<PlayerScript>(sprite)
|
|
15
|
+
*
|
|
16
|
+
* const handleStart = () => {
|
|
17
|
+
* console.log(script()) // The script instance
|
|
18
|
+
* }
|
|
19
|
+
*
|
|
20
|
+
* return <sprite ref={sprite} onStart={handleStart} script={new PlayerScript()} />
|
|
21
|
+
* }
|
|
22
|
+
*
|
|
23
|
+
* class PlayerScript extends DinixScript<PrimaryNode.Sprite> {
|
|
24
|
+
* health = 100
|
|
25
|
+
*
|
|
26
|
+
* setup() {
|
|
27
|
+
* // Do something...
|
|
28
|
+
* }
|
|
29
|
+
* }
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export function useScript(node) {
|
|
33
|
+
pushEffect('useScript', () => { });
|
|
34
|
+
const script = new Signal(undefined);
|
|
35
|
+
useEffect(() => {
|
|
36
|
+
script.value = node.signal()?.script;
|
|
37
|
+
});
|
|
38
|
+
return script.getter;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=use-script.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-script.js","sourceRoot":"","sources":["../../src/hooks/use-script.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAEtC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAEtC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,SAAS,CAAqC,IAAgC;IAC5F,UAAU,CAAC,WAAW,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IAEjC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAgB,SAAS,CAAC,CAAA;IAEnD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,MAAW,CAAA;IAC3C,CAAC,CAAC,CAAA;IAEF,OAAO,MAAM,CAAC,MAAM,CAAA;AACtB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { SignalGetter, SignalSetter } from '../reactivity/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* The **`useSignal`** hook creates a reactive signal with an initial value.
|
|
4
|
+
* The signal will notify subscribers when its value changes.
|
|
5
|
+
*
|
|
6
|
+
* @param initialValue The initial value of the signal
|
|
7
|
+
* @returns A tuple to [get, set] the value.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```tsx
|
|
11
|
+
* const [count, setCount] = useSignal(0)
|
|
12
|
+
*
|
|
13
|
+
* const handleClick = () => {
|
|
14
|
+
* setCount(count() + 1)
|
|
15
|
+
* }
|
|
16
|
+
*
|
|
17
|
+
* useEffect(() => {
|
|
18
|
+
* console.log('Count:', count())
|
|
19
|
+
* })
|
|
20
|
+
*
|
|
21
|
+
* return <clickable onClick={handleClick} />
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export declare function useSignal<T>(initialValue: T): [SignalGetter<T>, SignalSetter<T>];
|
|
25
|
+
//# sourceMappingURL=use-signal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-signal.d.ts","sourceRoot":"","sources":["../../src/hooks/use-signal.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAGxE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAYhF"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Signal } from '../reactivity/signal.js';
|
|
2
|
+
import { pushEffect } from './context.js';
|
|
3
|
+
/**
|
|
4
|
+
* The **`useSignal`** hook creates a reactive signal with an initial value.
|
|
5
|
+
* The signal will notify subscribers when its value changes.
|
|
6
|
+
*
|
|
7
|
+
* @param initialValue The initial value of the signal
|
|
8
|
+
* @returns A tuple to [get, set] the value.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```tsx
|
|
12
|
+
* const [count, setCount] = useSignal(0)
|
|
13
|
+
*
|
|
14
|
+
* const handleClick = () => {
|
|
15
|
+
* setCount(count() + 1)
|
|
16
|
+
* }
|
|
17
|
+
*
|
|
18
|
+
* useEffect(() => {
|
|
19
|
+
* console.log('Count:', count())
|
|
20
|
+
* })
|
|
21
|
+
*
|
|
22
|
+
* return <clickable onClick={handleClick} />
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export function useSignal(initialValue) {
|
|
26
|
+
pushEffect('useSignal', ([node]) => {
|
|
27
|
+
if (node == null)
|
|
28
|
+
return;
|
|
29
|
+
node.destroyed.on(() => signal.clearSubs());
|
|
30
|
+
});
|
|
31
|
+
const signal = new Signal(initialValue);
|
|
32
|
+
const getter = signal.getter;
|
|
33
|
+
const setter = signal.setter;
|
|
34
|
+
return [getter, setter];
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=use-signal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-signal.js","sourceRoot":"","sources":["../../src/hooks/use-signal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,SAAS,CAAI,YAAe;IAC1C,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE;QACjC,IAAI,IAAI,IAAI,IAAI;YAAE,OAAM;QACxB,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAA;IAC7C,CAAC,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,CAAA;IAEvC,MAAM,MAAM,GAAoB,MAAM,CAAC,MAAM,CAAA;IAC7C,MAAM,MAAM,GAAoB,MAAM,CAAC,MAAM,CAAA;IAE7C,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AACzB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Dinix } from '../jsx/types.js';
|
|
2
|
+
import type { PrimaryNode } from '../nodes/lib/enum.js';
|
|
3
|
+
import type { NodeReference } from './use-node.js';
|
|
4
|
+
/**
|
|
5
|
+
* The **`useSpawn`** hook returns a function that can spawn nodes as children of the specified node.
|
|
6
|
+
*
|
|
7
|
+
* @param node A `NodeReference` to the node that will be the parent of spawned nodes
|
|
8
|
+
* @returns A function that accepts JSX nodes and adds them as children
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```tsx
|
|
12
|
+
* const container = useNode(PrimaryNode.Transform)
|
|
13
|
+
* const spawn = useSpawn(container)
|
|
14
|
+
*
|
|
15
|
+
* const handleClick = () => {
|
|
16
|
+
* spawn(<sprite />)
|
|
17
|
+
* }
|
|
18
|
+
*
|
|
19
|
+
* return (
|
|
20
|
+
* <transform ref={container}>
|
|
21
|
+
* <clickable onClick={handleClick} />
|
|
22
|
+
* </transform>
|
|
23
|
+
* )
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare function useSpawn<T extends PrimaryNode>(node: NodeReference<T>): (jsx: Dinix.Node) => void;
|
|
27
|
+
//# sourceMappingURL=use-spawn.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-spawn.d.ts","sourceRoot":"","sources":["../../src/hooks/use-spawn.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAEvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAElD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,QAAQ,CAAC,CAAC,SAAS,WAAW,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,SAGhD,KAAK,CAAC,IAAI,UAgB/B"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { renderToNodes } from '../jsx/index.js';
|
|
2
|
+
import { currentContext, pushEffect } from './context.js';
|
|
3
|
+
/**
|
|
4
|
+
* The **`useSpawn`** hook returns a function that can spawn nodes as children of the specified node.
|
|
5
|
+
*
|
|
6
|
+
* @param node A `NodeReference` to the node that will be the parent of spawned nodes
|
|
7
|
+
* @returns A function that accepts JSX nodes and adds them as children
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```tsx
|
|
11
|
+
* const container = useNode(PrimaryNode.Transform)
|
|
12
|
+
* const spawn = useSpawn(container)
|
|
13
|
+
*
|
|
14
|
+
* const handleClick = () => {
|
|
15
|
+
* spawn(<sprite />)
|
|
16
|
+
* }
|
|
17
|
+
*
|
|
18
|
+
* return (
|
|
19
|
+
* <transform ref={container}>
|
|
20
|
+
* <clickable onClick={handleClick} />
|
|
21
|
+
* </transform>
|
|
22
|
+
* )
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export function useSpawn(node) {
|
|
26
|
+
const oldCtx = currentContext.slice();
|
|
27
|
+
const spawn = (jsx) => {
|
|
28
|
+
const currentCtx = currentContext.slice();
|
|
29
|
+
currentContext.length = 0;
|
|
30
|
+
currentContext.push(...oldCtx);
|
|
31
|
+
const nodes = renderToNodes(jsx);
|
|
32
|
+
node.node.addChild(...nodes);
|
|
33
|
+
currentContext.length = 0;
|
|
34
|
+
currentContext.push(...currentCtx);
|
|
35
|
+
};
|
|
36
|
+
pushEffect('useSpawn', () => { });
|
|
37
|
+
return spawn;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=use-spawn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-spawn.js","sourceRoot":"","sources":["../../src/hooks/use-spawn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAG/C,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAGzD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,QAAQ,CAAwB,IAAsB;IACpE,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,CAAA;IAErC,MAAM,KAAK,GAAG,CAAC,GAAe,EAAE,EAAE;QAChC,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,EAAE,CAAA;QAEzC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAA;QACzB,cAAc,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAA;QAE9B,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;QAChC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC,CAAA;QAE5B,cAAc,CAAC,MAAM,GAAG,CAAC,CAAA;QACzB,cAAc,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAA;IACpC,CAAC,CAAA;IAED,UAAU,CAAC,UAAU,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IAEhC,OAAO,KAAK,CAAA;AACd,CAAC"}
|