@number10/jsx-phaser 5.0.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/LICENSE +667 -0
- package/README.md +44 -0
- package/dist/_virtual/_commonjsHelpers.cjs +7 -0
- package/dist/_virtual/_commonjsHelpers.cjs.map +1 -0
- package/dist/_virtual/_commonjsHelpers.js +7 -0
- package/dist/_virtual/_commonjsHelpers.js.map +1 -0
- package/dist/_virtual/index.cjs +7 -0
- package/dist/_virtual/index.cjs.map +1 -0
- package/dist/_virtual/index.js +8 -0
- package/dist/_virtual/index.js.map +1 -0
- package/dist/animation/index.d.ts +7 -0
- package/dist/animation/index.d.ts.map +1 -0
- package/dist/camera/index.d.ts +5 -0
- package/dist/camera/index.d.ts.map +1 -0
- package/dist/camera/use-camera-fx.cjs +49 -0
- package/dist/camera/use-camera-fx.cjs.map +1 -0
- package/dist/camera/use-camera-fx.d.ts +25 -0
- package/dist/camera/use-camera-fx.d.ts.map +1 -0
- package/dist/camera/use-camera-fx.js +49 -0
- package/dist/camera/use-camera-fx.js.map +1 -0
- package/dist/clip/index.cjs +8 -0
- package/dist/clip/index.cjs.map +1 -0
- package/dist/clip/index.d.ts +3 -0
- package/dist/clip/index.d.ts.map +1 -0
- package/dist/clip/index.js +9 -0
- package/dist/clip/index.js.map +1 -0
- package/dist/clip/stencil-clip-depth.cjs +24 -0
- package/dist/clip/stencil-clip-depth.cjs.map +1 -0
- package/dist/clip/stencil-clip-depth.d.ts +10 -0
- package/dist/clip/stencil-clip-depth.d.ts.map +1 -0
- package/dist/clip/stencil-clip-depth.js +24 -0
- package/dist/clip/stencil-clip-depth.js.map +1 -0
- package/dist/clip/stencil-clip-extension.cjs +113 -0
- package/dist/clip/stencil-clip-extension.cjs.map +1 -0
- package/dist/clip/stencil-clip-extension.d.ts +18 -0
- package/dist/clip/stencil-clip-extension.d.ts.map +1 -0
- package/dist/clip/stencil-clip-extension.js +96 -0
- package/dist/clip/stencil-clip-extension.js.map +1 -0
- package/dist/clip/stencil-clip-fbo-bridge.cjs +46 -0
- package/dist/clip/stencil-clip-fbo-bridge.cjs.map +1 -0
- package/dist/clip/stencil-clip-fbo-bridge.d.ts +7 -0
- package/dist/clip/stencil-clip-fbo-bridge.d.ts.map +1 -0
- package/dist/clip/stencil-clip-fbo-bridge.js +46 -0
- package/dist/clip/stencil-clip-fbo-bridge.js.map +1 -0
- package/dist/clip/stencil-clip-renderer.cjs +300 -0
- package/dist/clip/stencil-clip-renderer.cjs.map +1 -0
- package/dist/clip/stencil-clip-renderer.d.ts +7 -0
- package/dist/clip/stencil-clip-renderer.d.ts.map +1 -0
- package/dist/clip/stencil-clip-renderer.js +300 -0
- package/dist/clip/stencil-clip-renderer.js.map +1 -0
- package/dist/clip/stencil-clip-state.cjs +84 -0
- package/dist/clip/stencil-clip-state.cjs.map +1 -0
- package/dist/clip/stencil-clip-state.d.ts +28 -0
- package/dist/clip/stencil-clip-state.d.ts.map +1 -0
- package/dist/clip/stencil-clip-state.js +84 -0
- package/dist/clip/stencil-clip-state.js.map +1 -0
- package/dist/clip/stencil-clip-types.d.ts +67 -0
- package/dist/clip/stencil-clip-types.d.ts.map +1 -0
- package/dist/clip/stencil-clip.cjs +138 -0
- package/dist/clip/stencil-clip.cjs.map +1 -0
- package/dist/clip/stencil-clip.d.ts +53 -0
- package/dist/clip/stencil-clip.d.ts.map +1 -0
- package/dist/clip/stencil-clip.js +122 -0
- package/dist/clip/stencil-clip.js.map +1 -0
- package/dist/colors/use-color-mode.cjs +28 -0
- package/dist/colors/use-color-mode.cjs.map +1 -0
- package/dist/colors/use-color-mode.d.ts +22 -0
- package/dist/colors/use-color-mode.d.ts.map +1 -0
- package/dist/colors/use-color-mode.js +28 -0
- package/dist/colors/use-color-mode.js.map +1 -0
- package/dist/colors/use-colors.cjs +45 -0
- package/dist/colors/use-colors.cjs.map +1 -0
- package/dist/colors/use-colors.d.ts +36 -0
- package/dist/colors/use-colors.d.ts.map +1 -0
- package/dist/colors/use-colors.js +45 -0
- package/dist/colors/use-colors.js.map +1 -0
- package/dist/components/DebugPanel.cjs +88 -0
- package/dist/components/DebugPanel.cjs.map +1 -0
- package/dist/components/DebugPanel.d.ts +45 -0
- package/dist/components/DebugPanel.d.ts.map +1 -0
- package/dist/components/DebugPanel.js +71 -0
- package/dist/components/DebugPanel.js.map +1 -0
- package/dist/components/appliers/applyBackground.cjs +89 -0
- package/dist/components/appliers/applyBackground.cjs.map +1 -0
- package/dist/components/appliers/applyBackground.d.ts +18 -0
- package/dist/components/appliers/applyBackground.d.ts.map +1 -0
- package/dist/components/appliers/applyBackground.js +89 -0
- package/dist/components/appliers/applyBackground.js.map +1 -0
- package/dist/components/appliers/applyGestures.cjs +85 -0
- package/dist/components/appliers/applyGestures.cjs.map +1 -0
- package/dist/components/appliers/applyGestures.d.ts +12 -0
- package/dist/components/appliers/applyGestures.d.ts.map +1 -0
- package/dist/components/appliers/applyGestures.js +68 -0
- package/dist/components/appliers/applyGestures.js.map +1 -0
- package/dist/components/appliers/applyGraphics.cjs +21 -0
- package/dist/components/appliers/applyGraphics.cjs.map +1 -0
- package/dist/components/appliers/applyGraphics.d.ts +13 -0
- package/dist/components/appliers/applyGraphics.d.ts.map +1 -0
- package/dist/components/appliers/applyGraphics.js +21 -0
- package/dist/components/appliers/applyGraphics.js.map +1 -0
- package/dist/components/appliers/applyGraphicsLayout.cjs +18 -0
- package/dist/components/appliers/applyGraphicsLayout.cjs.map +1 -0
- package/dist/components/appliers/applyGraphicsLayout.d.ts +13 -0
- package/dist/components/appliers/applyGraphicsLayout.d.ts.map +1 -0
- package/dist/components/appliers/applyGraphicsLayout.js +18 -0
- package/dist/components/appliers/applyGraphicsLayout.js.map +1 -0
- package/dist/components/appliers/applyImage.cjs +92 -0
- package/dist/components/appliers/applyImage.cjs.map +1 -0
- package/dist/components/appliers/applyImage.d.ts +47 -0
- package/dist/components/appliers/applyImage.d.ts.map +1 -0
- package/dist/components/appliers/applyImage.js +92 -0
- package/dist/components/appliers/applyImage.js.map +1 -0
- package/dist/components/appliers/applyImageLayout.cjs +18 -0
- package/dist/components/appliers/applyImageLayout.cjs.map +1 -0
- package/dist/components/appliers/applyImageLayout.d.ts +18 -0
- package/dist/components/appliers/applyImageLayout.d.ts.map +1 -0
- package/dist/components/appliers/applyImageLayout.js +18 -0
- package/dist/components/appliers/applyImageLayout.js.map +1 -0
- package/dist/components/appliers/applyLayout.cjs +108 -0
- package/dist/components/appliers/applyLayout.cjs.map +1 -0
- package/dist/components/appliers/applyLayout.d.ts +19 -0
- package/dist/components/appliers/applyLayout.d.ts.map +1 -0
- package/dist/components/appliers/applyLayout.js +91 -0
- package/dist/components/appliers/applyLayout.js.map +1 -0
- package/dist/components/appliers/applyNineSlice.cjs +37 -0
- package/dist/components/appliers/applyNineSlice.cjs.map +1 -0
- package/dist/components/appliers/applyNineSlice.d.ts +14 -0
- package/dist/components/appliers/applyNineSlice.d.ts.map +1 -0
- package/dist/components/appliers/applyNineSlice.js +37 -0
- package/dist/components/appliers/applyNineSlice.js.map +1 -0
- package/dist/components/appliers/applyNineSliceLayout.cjs +18 -0
- package/dist/components/appliers/applyNineSliceLayout.cjs.map +1 -0
- package/dist/components/appliers/applyNineSliceLayout.d.ts +18 -0
- package/dist/components/appliers/applyNineSliceLayout.d.ts.map +1 -0
- package/dist/components/appliers/applyNineSliceLayout.js +18 -0
- package/dist/components/appliers/applyNineSliceLayout.js.map +1 -0
- package/dist/components/appliers/applyParticles.cjs +46 -0
- package/dist/components/appliers/applyParticles.cjs.map +1 -0
- package/dist/components/appliers/applyParticles.d.ts +7 -0
- package/dist/components/appliers/applyParticles.d.ts.map +1 -0
- package/dist/components/appliers/applyParticles.js +46 -0
- package/dist/components/appliers/applyParticles.js.map +1 -0
- package/dist/components/appliers/applyParticlesLayout.cjs +7 -0
- package/dist/components/appliers/applyParticlesLayout.cjs.map +1 -0
- package/dist/components/appliers/applyParticlesLayout.d.ts +11 -0
- package/dist/components/appliers/applyParticlesLayout.d.ts.map +1 -0
- package/dist/components/appliers/applyParticlesLayout.js +7 -0
- package/dist/components/appliers/applyParticlesLayout.js.map +1 -0
- package/dist/components/appliers/applyPhaser.cjs +40 -0
- package/dist/components/appliers/applyPhaser.cjs.map +1 -0
- package/dist/components/appliers/applyPhaser.d.ts +24 -0
- package/dist/components/appliers/applyPhaser.d.ts.map +1 -0
- package/dist/components/appliers/applyPhaser.js +40 -0
- package/dist/components/appliers/applyPhaser.js.map +1 -0
- package/dist/components/appliers/applySprite.cjs +124 -0
- package/dist/components/appliers/applySprite.cjs.map +1 -0
- package/dist/components/appliers/applySprite.d.ts +13 -0
- package/dist/components/appliers/applySprite.d.ts.map +1 -0
- package/dist/components/appliers/applySprite.js +124 -0
- package/dist/components/appliers/applySprite.js.map +1 -0
- package/dist/components/appliers/applySpriteLayout.cjs +7 -0
- package/dist/components/appliers/applySpriteLayout.cjs.map +1 -0
- package/dist/components/appliers/applySpriteLayout.d.ts +17 -0
- package/dist/components/appliers/applySpriteLayout.d.ts.map +1 -0
- package/dist/components/appliers/applySpriteLayout.js +7 -0
- package/dist/components/appliers/applySpriteLayout.js.map +1 -0
- package/dist/components/appliers/applyText.cjs +142 -0
- package/dist/components/appliers/applyText.cjs.map +1 -0
- package/dist/components/appliers/applyText.d.ts +32 -0
- package/dist/components/appliers/applyText.d.ts.map +1 -0
- package/dist/components/appliers/applyText.js +142 -0
- package/dist/components/appliers/applyText.js.map +1 -0
- package/dist/components/appliers/applyTextLayout.cjs +16 -0
- package/dist/components/appliers/applyTextLayout.cjs.map +1 -0
- package/dist/components/appliers/applyTextLayout.d.ts +18 -0
- package/dist/components/appliers/applyTextLayout.d.ts.map +1 -0
- package/dist/components/appliers/applyTextLayout.js +16 -0
- package/dist/components/appliers/applyTextLayout.js.map +1 -0
- package/dist/components/appliers/applyTooltip.cjs +247 -0
- package/dist/components/appliers/applyTooltip.cjs.map +1 -0
- package/dist/components/appliers/applyTooltip.d.ts +16 -0
- package/dist/components/appliers/applyTooltip.d.ts.map +1 -0
- package/dist/components/appliers/applyTooltip.js +247 -0
- package/dist/components/appliers/applyTooltip.js.map +1 -0
- package/dist/components/appliers/applyTransform.cjs +61 -0
- package/dist/components/appliers/applyTransform.cjs.map +1 -0
- package/dist/components/appliers/applyTransform.d.ts +24 -0
- package/dist/components/appliers/applyTransform.d.ts.map +1 -0
- package/dist/components/appliers/applyTransform.js +61 -0
- package/dist/components/appliers/applyTransform.js.map +1 -0
- package/dist/components/backgroundImage.cjs +411 -0
- package/dist/components/backgroundImage.cjs.map +1 -0
- package/dist/components/backgroundImage.d.ts +14 -0
- package/dist/components/backgroundImage.d.ts.map +1 -0
- package/dist/components/backgroundImage.js +411 -0
- package/dist/components/backgroundImage.js.map +1 -0
- package/dist/components/creators/createBackground.cjs +18 -0
- package/dist/components/creators/createBackground.cjs.map +1 -0
- package/dist/components/creators/createBackground.d.ts +20 -0
- package/dist/components/creators/createBackground.d.ts.map +1 -0
- package/dist/components/creators/createBackground.js +18 -0
- package/dist/components/creators/createBackground.js.map +1 -0
- package/dist/components/creators/createGestures.cjs +51 -0
- package/dist/components/creators/createGestures.cjs.map +1 -0
- package/dist/components/creators/createGestures.d.ts +11 -0
- package/dist/components/creators/createGestures.d.ts.map +1 -0
- package/dist/components/creators/createGestures.js +34 -0
- package/dist/components/creators/createGestures.js.map +1 -0
- package/dist/components/creators/createGraphicsLayout.cjs +24 -0
- package/dist/components/creators/createGraphicsLayout.cjs.map +1 -0
- package/dist/components/creators/createGraphicsLayout.d.ts +12 -0
- package/dist/components/creators/createGraphicsLayout.d.ts.map +1 -0
- package/dist/components/creators/createGraphicsLayout.js +24 -0
- package/dist/components/creators/createGraphicsLayout.js.map +1 -0
- package/dist/components/creators/createImageLayout.cjs +16 -0
- package/dist/components/creators/createImageLayout.cjs.map +1 -0
- package/dist/components/creators/createImageLayout.d.ts +17 -0
- package/dist/components/creators/createImageLayout.d.ts.map +1 -0
- package/dist/components/creators/createImageLayout.js +16 -0
- package/dist/components/creators/createImageLayout.js.map +1 -0
- package/dist/components/creators/createLayout.cjs +61 -0
- package/dist/components/creators/createLayout.cjs.map +1 -0
- package/dist/components/creators/createLayout.d.ts +15 -0
- package/dist/components/creators/createLayout.d.ts.map +1 -0
- package/dist/components/creators/createLayout.js +61 -0
- package/dist/components/creators/createLayout.js.map +1 -0
- package/dist/components/creators/createNineSliceLayout.cjs +16 -0
- package/dist/components/creators/createNineSliceLayout.cjs.map +1 -0
- package/dist/components/creators/createNineSliceLayout.d.ts +17 -0
- package/dist/components/creators/createNineSliceLayout.d.ts.map +1 -0
- package/dist/components/creators/createNineSliceLayout.js +16 -0
- package/dist/components/creators/createNineSliceLayout.js.map +1 -0
- package/dist/components/creators/createParticlesLayout.cjs +8 -0
- package/dist/components/creators/createParticlesLayout.cjs.map +1 -0
- package/dist/components/creators/createParticlesLayout.d.ts +14 -0
- package/dist/components/creators/createParticlesLayout.d.ts.map +1 -0
- package/dist/components/creators/createParticlesLayout.js +8 -0
- package/dist/components/creators/createParticlesLayout.js.map +1 -0
- package/dist/components/creators/createPhaser.cjs +36 -0
- package/dist/components/creators/createPhaser.cjs.map +1 -0
- package/dist/components/creators/createPhaser.d.ts +14 -0
- package/dist/components/creators/createPhaser.d.ts.map +1 -0
- package/dist/components/creators/createPhaser.js +36 -0
- package/dist/components/creators/createPhaser.js.map +1 -0
- package/dist/components/creators/createSpriteLayout.cjs +10 -0
- package/dist/components/creators/createSpriteLayout.cjs.map +1 -0
- package/dist/components/creators/createSpriteLayout.d.ts +18 -0
- package/dist/components/creators/createSpriteLayout.d.ts.map +1 -0
- package/dist/components/creators/createSpriteLayout.js +10 -0
- package/dist/components/creators/createSpriteLayout.js.map +1 -0
- package/dist/components/creators/createTextLayout.cjs +16 -0
- package/dist/components/creators/createTextLayout.cjs.map +1 -0
- package/dist/components/creators/createTextLayout.d.ts +17 -0
- package/dist/components/creators/createTextLayout.d.ts.map +1 -0
- package/dist/components/creators/createTextLayout.js +16 -0
- package/dist/components/creators/createTextLayout.js.map +1 -0
- package/dist/components/creators/createTransform.cjs +83 -0
- package/dist/components/creators/createTransform.cjs.map +1 -0
- package/dist/components/creators/createTransform.d.ts +26 -0
- package/dist/components/creators/createTransform.d.ts.map +1 -0
- package/dist/components/creators/createTransform.js +83 -0
- package/dist/components/creators/createTransform.js.map +1 -0
- package/dist/components/custom/Graphics.cjs +13 -0
- package/dist/components/custom/Graphics.cjs.map +1 -0
- package/dist/components/custom/Graphics.d.ts +50 -0
- package/dist/components/custom/Graphics.d.ts.map +1 -0
- package/dist/components/custom/Graphics.js +13 -0
- package/dist/components/custom/Graphics.js.map +1 -0
- package/dist/components/custom/NineSlice.cjs +13 -0
- package/dist/components/custom/NineSlice.cjs.map +1 -0
- package/dist/components/custom/NineSlice.d.ts +87 -0
- package/dist/components/custom/NineSlice.d.ts.map +1 -0
- package/dist/components/custom/NineSlice.js +13 -0
- package/dist/components/custom/NineSlice.js.map +1 -0
- package/dist/components/custom/Particles.cjs +8 -0
- package/dist/components/custom/Particles.cjs.map +1 -0
- package/dist/components/custom/Particles.d.ts +28 -0
- package/dist/components/custom/Particles.d.ts.map +1 -0
- package/dist/components/custom/Particles.js +8 -0
- package/dist/components/custom/Particles.js.map +1 -0
- package/dist/components/custom/RefOriginView.cjs +67 -0
- package/dist/components/custom/RefOriginView.cjs.map +1 -0
- package/dist/components/custom/RefOriginView.d.ts +49 -0
- package/dist/components/custom/RefOriginView.d.ts.map +1 -0
- package/dist/components/custom/RefOriginView.js +67 -0
- package/dist/components/custom/RefOriginView.js.map +1 -0
- package/dist/components/custom/Sprite.cjs +13 -0
- package/dist/components/custom/Sprite.cjs.map +1 -0
- package/dist/components/custom/Sprite.d.ts +79 -0
- package/dist/components/custom/Sprite.d.ts.map +1 -0
- package/dist/components/custom/Sprite.js +13 -0
- package/dist/components/custom/Sprite.js.map +1 -0
- package/dist/components/custom/TileSprite.cjs +13 -0
- package/dist/components/custom/TileSprite.cjs.map +1 -0
- package/dist/components/custom/TileSprite.d.ts +65 -0
- package/dist/components/custom/TileSprite.d.ts.map +1 -0
- package/dist/components/custom/TileSprite.js +13 -0
- package/dist/components/custom/TileSprite.js.map +1 -0
- package/dist/components/custom/index.d.ts +15 -0
- package/dist/components/custom/index.d.ts.map +1 -0
- package/dist/components/index.cjs +33 -0
- package/dist/components/index.cjs.map +1 -0
- package/dist/components/index.d.ts +11 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +33 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/internal/SceneWrapper.cjs +10 -0
- package/dist/components/internal/SceneWrapper.cjs.map +1 -0
- package/dist/components/internal/SceneWrapper.d.ts +20 -0
- package/dist/components/internal/SceneWrapper.d.ts.map +1 -0
- package/dist/components/internal/SceneWrapper.js +10 -0
- package/dist/components/internal/SceneWrapper.js.map +1 -0
- package/dist/components/primitives/graphics.cjs +29 -0
- package/dist/components/primitives/graphics.cjs.map +1 -0
- package/dist/components/primitives/graphics.d.ts +146 -0
- package/dist/components/primitives/graphics.d.ts.map +1 -0
- package/dist/components/primitives/graphics.js +29 -0
- package/dist/components/primitives/graphics.js.map +1 -0
- package/dist/components/primitives/image.cjs +110 -0
- package/dist/components/primitives/image.cjs.map +1 -0
- package/dist/components/primitives/image.d.ts +170 -0
- package/dist/components/primitives/image.d.ts.map +1 -0
- package/dist/components/primitives/image.js +110 -0
- package/dist/components/primitives/image.js.map +1 -0
- package/dist/components/primitives/nineslice.cjs +42 -0
- package/dist/components/primitives/nineslice.cjs.map +1 -0
- package/dist/components/primitives/nineslice.d.ts +271 -0
- package/dist/components/primitives/nineslice.d.ts.map +1 -0
- package/dist/components/primitives/nineslice.js +42 -0
- package/dist/components/primitives/nineslice.js.map +1 -0
- package/dist/components/primitives/particles.cjs +77 -0
- package/dist/components/primitives/particles.cjs.map +1 -0
- package/dist/components/primitives/particles.d.ts +47 -0
- package/dist/components/primitives/particles.d.ts.map +1 -0
- package/dist/components/primitives/particles.js +77 -0
- package/dist/components/primitives/particles.js.map +1 -0
- package/dist/components/primitives/sprite.cjs +100 -0
- package/dist/components/primitives/sprite.cjs.map +1 -0
- package/dist/components/primitives/sprite.d.ts +147 -0
- package/dist/components/primitives/sprite.d.ts.map +1 -0
- package/dist/components/primitives/sprite.js +100 -0
- package/dist/components/primitives/sprite.js.map +1 -0
- package/dist/components/primitives/text.cjs +73 -0
- package/dist/components/primitives/text.cjs.map +1 -0
- package/dist/components/primitives/text.d.ts +155 -0
- package/dist/components/primitives/text.d.ts.map +1 -0
- package/dist/components/primitives/text.js +73 -0
- package/dist/components/primitives/text.js.map +1 -0
- package/dist/components/primitives/tilesprite.cjs +77 -0
- package/dist/components/primitives/tilesprite.cjs.map +1 -0
- package/dist/components/primitives/tilesprite.d.ts +157 -0
- package/dist/components/primitives/tilesprite.d.ts.map +1 -0
- package/dist/components/primitives/tilesprite.js +77 -0
- package/dist/components/primitives/tilesprite.js.map +1 -0
- package/dist/components/primitives/vectorDraw.cjs +73 -0
- package/dist/components/primitives/vectorDraw.cjs.map +1 -0
- package/dist/components/primitives/vectorDraw.d.ts +4 -0
- package/dist/components/primitives/vectorDraw.d.ts.map +1 -0
- package/dist/components/primitives/vectorDraw.js +73 -0
- package/dist/components/primitives/vectorDraw.js.map +1 -0
- package/dist/components/primitives/view.cjs +105 -0
- package/dist/components/primitives/view.cjs.map +1 -0
- package/dist/components/primitives/view.d.ts +23 -0
- package/dist/components/primitives/view.d.ts.map +1 -0
- package/dist/components/primitives/view.js +105 -0
- package/dist/components/primitives/view.js.map +1 -0
- package/dist/core-props.d.ts +105 -0
- package/dist/core-props.d.ts.map +1 -0
- package/dist/core-types.d.ts +71 -0
- package/dist/core-types.d.ts.map +1 -0
- package/dist/design-tokens/resolve-theme-tokens.cjs +27 -0
- package/dist/design-tokens/resolve-theme-tokens.cjs.map +1 -0
- package/dist/design-tokens/resolve-theme-tokens.d.ts +9 -0
- package/dist/design-tokens/resolve-theme-tokens.d.ts.map +1 -0
- package/dist/design-tokens/resolve-theme-tokens.js +27 -0
- package/dist/design-tokens/resolve-theme-tokens.js.map +1 -0
- package/dist/design-tokens/use-theme-tokens.cjs +26 -0
- package/dist/design-tokens/use-theme-tokens.cjs.map +1 -0
- package/dist/design-tokens/use-theme-tokens.d.ts +28 -0
- package/dist/design-tokens/use-theme-tokens.d.ts.map +1 -0
- package/dist/design-tokens/use-theme-tokens.js +26 -0
- package/dist/design-tokens/use-theme-tokens.js.map +1 -0
- package/dist/effects/index.d.ts +2 -0
- package/dist/effects/index.d.ts.map +1 -0
- package/dist/effects/phaser-effects-bridge.cjs +48 -0
- package/dist/effects/phaser-effects-bridge.cjs.map +1 -0
- package/dist/effects/phaser-effects-bridge.d.ts +2 -0
- package/dist/effects/phaser-effects-bridge.d.ts.map +1 -0
- package/dist/effects/phaser-effects-bridge.js +30 -0
- package/dist/effects/phaser-effects-bridge.js.map +1 -0
- package/dist/effects/use-effect.cjs +155 -0
- package/dist/effects/use-effect.cjs.map +1 -0
- package/dist/effects/use-effect.d.ts +30 -0
- package/dist/effects/use-effect.d.ts.map +1 -0
- package/dist/effects/use-effect.js +155 -0
- package/dist/effects/use-effect.js.map +1 -0
- package/dist/fx/convenience-hooks/index.d.ts +7 -0
- package/dist/fx/convenience-hooks/index.d.ts.map +1 -0
- package/dist/fx/convenience-hooks/use-blur.cjs +18 -0
- package/dist/fx/convenience-hooks/use-blur.cjs.map +1 -0
- package/dist/fx/convenience-hooks/use-blur.d.ts +21 -0
- package/dist/fx/convenience-hooks/use-blur.d.ts.map +1 -0
- package/dist/fx/convenience-hooks/use-blur.js +18 -0
- package/dist/fx/convenience-hooks/use-blur.js.map +1 -0
- package/dist/fx/convenience-hooks/use-glow.cjs +18 -0
- package/dist/fx/convenience-hooks/use-glow.cjs.map +1 -0
- package/dist/fx/convenience-hooks/use-glow.d.ts +21 -0
- package/dist/fx/convenience-hooks/use-glow.d.ts.map +1 -0
- package/dist/fx/convenience-hooks/use-glow.js +18 -0
- package/dist/fx/convenience-hooks/use-glow.js.map +1 -0
- package/dist/fx/convenience-hooks/use-shadow.cjs +18 -0
- package/dist/fx/convenience-hooks/use-shadow.cjs.map +1 -0
- package/dist/fx/convenience-hooks/use-shadow.d.ts +21 -0
- package/dist/fx/convenience-hooks/use-shadow.d.ts.map +1 -0
- package/dist/fx/convenience-hooks/use-shadow.js +18 -0
- package/dist/fx/convenience-hooks/use-shadow.js.map +1 -0
- package/dist/fx/fx-creators/blur.cjs +20 -0
- package/dist/fx/fx-creators/blur.cjs.map +1 -0
- package/dist/fx/fx-creators/blur.d.ts +37 -0
- package/dist/fx/fx-creators/blur.d.ts.map +1 -0
- package/dist/fx/fx-creators/blur.js +20 -0
- package/dist/fx/fx-creators/blur.js.map +1 -0
- package/dist/fx/fx-creators/color-matrix.cjs +47 -0
- package/dist/fx/fx-creators/color-matrix.cjs.map +1 -0
- package/dist/fx/fx-creators/color-matrix.d.ts +31 -0
- package/dist/fx/fx-creators/color-matrix.d.ts.map +1 -0
- package/dist/fx/fx-creators/color-matrix.js +47 -0
- package/dist/fx/fx-creators/color-matrix.js.map +1 -0
- package/dist/fx/fx-creators/glow.cjs +27 -0
- package/dist/fx/fx-creators/glow.cjs.map +1 -0
- package/dist/fx/fx-creators/glow.d.ts +36 -0
- package/dist/fx/fx-creators/glow.d.ts.map +1 -0
- package/dist/fx/fx-creators/glow.js +27 -0
- package/dist/fx/fx-creators/glow.js.map +1 -0
- package/dist/fx/fx-creators/index.d.ts +10 -0
- package/dist/fx/fx-creators/index.d.ts.map +1 -0
- package/dist/fx/fx-creators/pixelate.cjs +20 -0
- package/dist/fx/fx-creators/pixelate.cjs.map +1 -0
- package/dist/fx/fx-creators/pixelate.d.ts +24 -0
- package/dist/fx/fx-creators/pixelate.d.ts.map +1 -0
- package/dist/fx/fx-creators/pixelate.js +20 -0
- package/dist/fx/fx-creators/pixelate.js.map +1 -0
- package/dist/fx/fx-creators/shadow.cjs +28 -0
- package/dist/fx/fx-creators/shadow.cjs.map +1 -0
- package/dist/fx/fx-creators/shadow.d.ts +43 -0
- package/dist/fx/fx-creators/shadow.d.ts.map +1 -0
- package/dist/fx/fx-creators/shadow.js +28 -0
- package/dist/fx/fx-creators/shadow.js.map +1 -0
- package/dist/fx/fx-creators/vignette.cjs +20 -0
- package/dist/fx/fx-creators/vignette.cjs.map +1 -0
- package/dist/fx/fx-creators/vignette.d.ts +33 -0
- package/dist/fx/fx-creators/vignette.d.ts.map +1 -0
- package/dist/fx/fx-creators/vignette.js +20 -0
- package/dist/fx/fx-creators/vignette.js.map +1 -0
- package/dist/fx/fx-registry.cjs +43 -0
- package/dist/fx/fx-registry.cjs.map +1 -0
- package/dist/fx/fx-registry.d.ts +59 -0
- package/dist/fx/fx-registry.d.ts.map +1 -0
- package/dist/fx/fx-registry.js +43 -0
- package/dist/fx/fx-registry.js.map +1 -0
- package/dist/fx/index.d.ts +51 -0
- package/dist/fx/index.d.ts.map +1 -0
- package/dist/fx/use-fx.cjs +54 -0
- package/dist/fx/use-fx.cjs.map +1 -0
- package/dist/fx/use-fx.d.ts +53 -0
- package/dist/fx/use-fx.d.ts.map +1 -0
- package/dist/fx/use-fx.js +54 -0
- package/dist/fx/use-fx.js.map +1 -0
- package/dist/gestures/gesture-manager.cjs +773 -0
- package/dist/gestures/gesture-manager.cjs.map +1 -0
- package/dist/gestures/gesture-manager.d.ts +158 -0
- package/dist/gestures/gesture-manager.d.ts.map +1 -0
- package/dist/gestures/gesture-manager.js +773 -0
- package/dist/gestures/gesture-manager.js.map +1 -0
- package/dist/gestures/gesture-types.cjs +9 -0
- package/dist/gestures/gesture-types.cjs.map +1 -0
- package/dist/gestures/gesture-types.d.ts +232 -0
- package/dist/gestures/gesture-types.d.ts.map +1 -0
- package/dist/gestures/gesture-types.js +9 -0
- package/dist/gestures/gesture-types.js.map +1 -0
- package/dist/hooks.cjs +193 -0
- package/dist/hooks.cjs.map +1 -0
- package/dist/hooks.d.ts +151 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +146 -0
- package/dist/hooks.js.map +1 -0
- package/dist/host.cjs +85 -0
- package/dist/host.cjs.map +1 -0
- package/dist/host.d.ts +78 -0
- package/dist/host.d.ts.map +1 -0
- package/dist/host.js +85 -0
- package/dist/host.js.map +1 -0
- package/dist/index.cjs +614 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +61 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +273 -0
- package/dist/index.js.map +1 -0
- package/dist/jsx-dev-runtime.cjs +20 -0
- package/dist/jsx-dev-runtime.cjs.map +1 -0
- package/dist/jsx-dev-runtime.d.ts +8 -0
- package/dist/jsx-dev-runtime.d.ts.map +1 -0
- package/dist/jsx-dev-runtime.js +8 -0
- package/dist/jsx-dev-runtime.js.map +1 -0
- package/dist/jsx-runtime.cjs +16 -0
- package/dist/jsx-runtime.cjs.map +1 -0
- package/dist/jsx-runtime.d.ts +9 -0
- package/dist/jsx-runtime.d.ts.map +1 -0
- package/dist/jsx-runtime.js +7 -0
- package/dist/jsx-runtime.js.map +1 -0
- package/dist/jsx-types.d.ts +40 -0
- package/dist/jsx-types.d.ts.map +1 -0
- package/dist/layout/appliers/background-applier.cjs +40 -0
- package/dist/layout/appliers/background-applier.cjs.map +1 -0
- package/dist/layout/appliers/background-applier.d.ts +16 -0
- package/dist/layout/appliers/background-applier.d.ts.map +1 -0
- package/dist/layout/appliers/background-applier.js +40 -0
- package/dist/layout/appliers/background-applier.js.map +1 -0
- package/dist/layout/index.d.ts +5 -0
- package/dist/layout/index.d.ts.map +1 -0
- package/dist/layout/layout-engine-test-utils.d.ts +24 -0
- package/dist/layout/layout-engine-test-utils.d.ts.map +1 -0
- package/dist/layout/phaser-layout-bridge.cjs +41 -0
- package/dist/layout/phaser-layout-bridge.cjs.map +1 -0
- package/dist/layout/phaser-layout-bridge.d.ts +9 -0
- package/dist/layout/phaser-layout-bridge.d.ts.map +1 -0
- package/dist/layout/phaser-layout-bridge.js +40 -0
- package/dist/layout/phaser-layout-bridge.js.map +1 -0
- package/dist/layout/types.d.ts +14 -0
- package/dist/layout/types.d.ts.map +1 -0
- package/dist/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.cjs +39 -0
- package/dist/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.cjs.map +1 -0
- package/dist/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js +39 -0
- package/dist/node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/index.js.map +1 -0
- package/dist/particles/emit-zone.cjs +205 -0
- package/dist/particles/emit-zone.cjs.map +1 -0
- package/dist/particles/emit-zone.d.ts +88 -0
- package/dist/particles/emit-zone.d.ts.map +1 -0
- package/dist/particles/emit-zone.js +205 -0
- package/dist/particles/emit-zone.js.map +1 -0
- package/dist/particles/index.d.ts +8 -0
- package/dist/particles/index.d.ts.map +1 -0
- package/dist/particles/particle-types.d.ts +25 -0
- package/dist/particles/particle-types.d.ts.map +1 -0
- package/dist/particles/preset-registry.cjs +57 -0
- package/dist/particles/preset-registry.cjs.map +1 -0
- package/dist/particles/preset-registry.d.ts +49 -0
- package/dist/particles/preset-registry.d.ts.map +1 -0
- package/dist/particles/preset-registry.js +57 -0
- package/dist/particles/preset-registry.js.map +1 -0
- package/dist/particles/use-particles.cjs +67 -0
- package/dist/particles/use-particles.cjs.map +1 -0
- package/dist/particles/use-particles.d.ts +19 -0
- package/dist/particles/use-particles.d.ts.map +1 -0
- package/dist/particles/use-particles.js +67 -0
- package/dist/particles/use-particles.js.map +1 -0
- package/dist/particles/utils.cjs +82 -0
- package/dist/particles/utils.cjs.map +1 -0
- package/dist/particles/utils.d.ts +10 -0
- package/dist/particles/utils.d.ts.map +1 -0
- package/dist/particles/utils.js +82 -0
- package/dist/particles/utils.js.map +1 -0
- package/dist/phaser-bridges.cjs +148 -0
- package/dist/phaser-bridges.cjs.map +1 -0
- package/dist/phaser-bridges.d.ts +78 -0
- package/dist/phaser-bridges.d.ts.map +1 -0
- package/dist/phaser-bridges.js +131 -0
- package/dist/phaser-bridges.js.map +1 -0
- package/dist/phaser-host-adapter.cjs +148 -0
- package/dist/phaser-host-adapter.cjs.map +1 -0
- package/dist/phaser-host-adapter.d.ts +30 -0
- package/dist/phaser-host-adapter.d.ts.map +1 -0
- package/dist/phaser-host-adapter.js +148 -0
- package/dist/phaser-host-adapter.js.map +1 -0
- package/dist/phaser-runtime-types.d.ts +89 -0
- package/dist/phaser-runtime-types.d.ts.map +1 -0
- package/dist/phaser-surface-adapter.cjs +488 -0
- package/dist/phaser-surface-adapter.cjs.map +1 -0
- package/dist/phaser-surface-adapter.d.ts +74 -0
- package/dist/phaser-surface-adapter.d.ts.map +1 -0
- package/dist/phaser-surface-adapter.js +471 -0
- package/dist/phaser-surface-adapter.js.map +1 -0
- package/dist/phaser-vdom-runtime.cjs +63 -0
- package/dist/phaser-vdom-runtime.cjs.map +1 -0
- package/dist/phaser-vdom-runtime.d.ts +2 -0
- package/dist/phaser-vdom-runtime.d.ts.map +1 -0
- package/dist/phaser-vdom-runtime.js +63 -0
- package/dist/phaser-vdom-runtime.js.map +1 -0
- package/dist/plugin.cjs +182 -0
- package/dist/plugin.cjs.map +1 -0
- package/dist/plugin.d.ts +161 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +165 -0
- package/dist/plugin.js.map +1 -0
- package/dist/render-context.cjs +106 -0
- package/dist/render-context.cjs.map +1 -0
- package/dist/render-context.d.ts +66 -0
- package/dist/render-context.d.ts.map +1 -0
- package/dist/render-context.js +106 -0
- package/dist/render-context.js.map +1 -0
- package/dist/scene-backgrounds.cjs +285 -0
- package/dist/scene-backgrounds.cjs.map +1 -0
- package/dist/scene-backgrounds.d.ts +69 -0
- package/dist/scene-backgrounds.d.ts.map +1 -0
- package/dist/scene-backgrounds.js +268 -0
- package/dist/scene-backgrounds.js.map +1 -0
- package/dist/theme-base.d.ts +133 -0
- package/dist/theme-base.d.ts.map +1 -0
- package/dist/theme-custom.d.ts +13 -0
- package/dist/theme-custom.d.ts.map +1 -0
- package/dist/theme-defaults.cjs +29 -0
- package/dist/theme-defaults.cjs.map +1 -0
- package/dist/theme-defaults.d.ts +1 -0
- package/dist/theme-defaults.d.ts.map +1 -0
- package/dist/theme-defaults.js +28 -0
- package/dist/theme-defaults.js.map +1 -0
- package/dist/theme.cjs +34 -0
- package/dist/theme.cjs.map +1 -0
- package/dist/theme.d.ts +36 -0
- package/dist/theme.d.ts.map +1 -0
- package/dist/theme.js +32 -0
- package/dist/theme.js.map +1 -0
- package/dist/tooltip/tooltip-types.d.ts +6 -0
- package/dist/tooltip/tooltip-types.d.ts.map +1 -0
- package/dist/types.d.ts +22 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/utils/KeyboardInputManager.cjs +112 -0
- package/dist/utils/KeyboardInputManager.cjs.map +1 -0
- package/dist/utils/KeyboardInputManager.d.ts +48 -0
- package/dist/utils/KeyboardInputManager.d.ts.map +1 -0
- package/dist/utils/KeyboardInputManager.js +112 -0
- package/dist/utils/KeyboardInputManager.js.map +1 -0
- package/dist/utils/dom-input-manager.cjs +253 -0
- package/dist/utils/dom-input-manager.cjs.map +1 -0
- package/dist/utils/dom-input-manager.d.ts +113 -0
- package/dist/utils/dom-input-manager.d.ts.map +1 -0
- package/dist/utils/dom-input-manager.js +253 -0
- package/dist/utils/dom-input-manager.js.map +1 -0
- package/dist/utils/fast-deep-equal.cjs +7 -0
- package/dist/utils/fast-deep-equal.cjs.map +1 -0
- package/dist/utils/fast-deep-equal.d.ts +4 -0
- package/dist/utils/fast-deep-equal.d.ts.map +1 -0
- package/dist/utils/fast-deep-equal.js +7 -0
- package/dist/utils/fast-deep-equal.js.map +1 -0
- package/dist/utils/image-subtexture-registry.cjs +98 -0
- package/dist/utils/image-subtexture-registry.cjs.map +1 -0
- package/dist/utils/image-subtexture-registry.d.ts +17 -0
- package/dist/utils/image-subtexture-registry.d.ts.map +1 -0
- package/dist/utils/image-subtexture-registry.js +98 -0
- package/dist/utils/image-subtexture-registry.js.map +1 -0
- package/dist/utils/phaser-guards.cjs +15 -0
- package/dist/utils/phaser-guards.cjs.map +1 -0
- package/dist/utils/phaser-guards.d.ts +7 -0
- package/dist/utils/phaser-guards.d.ts.map +1 -0
- package/dist/utils/phaser-guards.js +15 -0
- package/dist/utils/phaser-guards.js.map +1 -0
- package/dist/utils/svg-texture.cjs +48 -0
- package/dist/utils/svg-texture.cjs.map +1 -0
- package/dist/utils/svg-texture.d.ts +34 -0
- package/dist/utils/svg-texture.d.ts.map +1 -0
- package/dist/utils/svg-texture.js +48 -0
- package/dist/utils/svg-texture.js.map +1 -0
- package/dist/utils/texture-registry.cjs +117 -0
- package/dist/utils/texture-registry.cjs.map +1 -0
- package/dist/utils/texture-registry.d.ts +53 -0
- package/dist/utils/texture-registry.d.ts.map +1 -0
- package/dist/utils/texture-registry.js +117 -0
- package/dist/utils/texture-registry.js.map +1 -0
- package/dist/vdom-host-types.d.ts +12 -0
- package/dist/vdom-host-types.d.ts.map +1 -0
- package/dist/vdom-registry.d.ts +27 -0
- package/dist/vdom-registry.d.ts.map +1 -0
- package/dist/vdom-utils.d.ts +16 -0
- package/dist/vdom-utils.d.ts.map +1 -0
- package/dist/vdom.cjs +36 -0
- package/dist/vdom.cjs.map +1 -0
- package/dist/vdom.d.ts +23 -0
- package/dist/vdom.d.ts.map +1 -0
- package/dist/vdom.js +36 -0
- package/dist/vdom.js.map +1 -0
- package/dist/vector/PhaserVectorDrawContext.cjs +97 -0
- package/dist/vector/PhaserVectorDrawContext.cjs.map +1 -0
- package/dist/vector/PhaserVectorDrawContext.d.ts +27 -0
- package/dist/vector/PhaserVectorDrawContext.d.ts.map +1 -0
- package/dist/vector/PhaserVectorDrawContext.js +97 -0
- package/dist/vector/PhaserVectorDrawContext.js.map +1 -0
- package/dist/vector/index.d.ts +2 -0
- package/dist/vector/index.d.ts.map +1 -0
- package/package.json +96 -0
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const jsxCore = require("@number10/jsx-core");
|
|
4
|
+
require("phaser");
|
|
5
|
+
require("../hooks.cjs");
|
|
6
|
+
function transformPoint(x, y, scaleX, scaleY, rotation) {
|
|
7
|
+
const scaledX = x * scaleX;
|
|
8
|
+
const scaledY = y * scaleY;
|
|
9
|
+
const cos = Math.cos(rotation);
|
|
10
|
+
const sin = Math.sin(rotation);
|
|
11
|
+
return {
|
|
12
|
+
x: scaledX * cos - scaledY * sin,
|
|
13
|
+
y: scaledX * sin + scaledY * cos
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
function createPhaserTarget(obj, origin) {
|
|
17
|
+
const layoutNode = obj;
|
|
18
|
+
const originX = origin === "center" || origin === "top-center" ? 0.5 : 0;
|
|
19
|
+
const originY = origin === "center" ? 0.5 : 0;
|
|
20
|
+
const hasOrigin = originX !== 0 || originY !== 0;
|
|
21
|
+
const baseScaleX = 1;
|
|
22
|
+
const baseScaleY = 1;
|
|
23
|
+
const baseRotation = 0;
|
|
24
|
+
let refWidth = obj.width;
|
|
25
|
+
let refHeight = obj.height;
|
|
26
|
+
let refPivot = null;
|
|
27
|
+
function ensurePivot() {
|
|
28
|
+
if (refPivot) return true;
|
|
29
|
+
if (refWidth === 0) {
|
|
30
|
+
refWidth = obj.width;
|
|
31
|
+
refHeight = obj.height;
|
|
32
|
+
}
|
|
33
|
+
if (refWidth === 0) return false;
|
|
34
|
+
const px = refWidth * originX;
|
|
35
|
+
const py = refHeight * originY;
|
|
36
|
+
refPivot = transformPoint(px, py, baseScaleX, baseScaleY, baseRotation);
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
let intendedX = layoutNode.__layoutPosition?.x ?? obj.x;
|
|
40
|
+
let intendedY = layoutNode.__layoutPosition?.y ?? obj.y;
|
|
41
|
+
let layoutPositionRevision = layoutNode.__layoutPositionRevision ?? 0;
|
|
42
|
+
return {
|
|
43
|
+
onUpdate(values) {
|
|
44
|
+
if (!obj.active) return;
|
|
45
|
+
const nextLayoutRevision = layoutNode.__layoutPositionRevision ?? 0;
|
|
46
|
+
const layoutPositionChanged = nextLayoutRevision !== layoutPositionRevision;
|
|
47
|
+
if (layoutPositionChanged && layoutNode.__layoutPosition) {
|
|
48
|
+
intendedX = layoutNode.__layoutPosition.x;
|
|
49
|
+
intendedY = layoutNode.__layoutPosition.y;
|
|
50
|
+
layoutPositionRevision = nextLayoutRevision;
|
|
51
|
+
}
|
|
52
|
+
if (values.x !== void 0) intendedX = values.x;
|
|
53
|
+
if (values.y !== void 0) intendedY = values.y;
|
|
54
|
+
if (!hasOrigin || !ensurePivot()) {
|
|
55
|
+
if (values.x === void 0 && !layoutPositionChanged) intendedX = obj.x;
|
|
56
|
+
if (values.y === void 0 && !layoutPositionChanged) intendedY = obj.y;
|
|
57
|
+
if (values.x !== void 0) obj.x = intendedX;
|
|
58
|
+
if (values.y !== void 0) obj.y = intendedY;
|
|
59
|
+
if (values.scaleX !== void 0) obj.scaleX = values.scaleX;
|
|
60
|
+
if (values.scaleY !== void 0) obj.scaleY = values.scaleY;
|
|
61
|
+
if (values.rotation !== void 0) obj.rotation = values.rotation;
|
|
62
|
+
if (values.alpha !== void 0) obj.alpha = values.alpha;
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
const existingPivot = transformPoint(
|
|
66
|
+
refWidth * originX,
|
|
67
|
+
refHeight * originY,
|
|
68
|
+
obj.scaleX,
|
|
69
|
+
obj.scaleY,
|
|
70
|
+
obj.rotation
|
|
71
|
+
);
|
|
72
|
+
if (values.x === void 0 && !layoutPositionChanged) {
|
|
73
|
+
intendedX = obj.x - (refPivot.x - existingPivot.x);
|
|
74
|
+
}
|
|
75
|
+
if (values.y === void 0 && !layoutPositionChanged) {
|
|
76
|
+
intendedY = obj.y - (refPivot.y - existingPivot.y);
|
|
77
|
+
}
|
|
78
|
+
const currentScaleX = values.scaleX ?? obj.scaleX;
|
|
79
|
+
const currentScaleY = values.scaleY ?? obj.scaleY;
|
|
80
|
+
const currentRotation = values.rotation ?? obj.rotation;
|
|
81
|
+
const curPivot = transformPoint(
|
|
82
|
+
refWidth * originX,
|
|
83
|
+
refHeight * originY,
|
|
84
|
+
currentScaleX,
|
|
85
|
+
currentScaleY,
|
|
86
|
+
currentRotation
|
|
87
|
+
);
|
|
88
|
+
const dx = refPivot.x - curPivot.x;
|
|
89
|
+
const dy = refPivot.y - curPivot.y;
|
|
90
|
+
obj.x = intendedX + dx;
|
|
91
|
+
obj.y = intendedY + dy;
|
|
92
|
+
if (values.scaleX !== void 0) obj.scaleX = values.scaleX;
|
|
93
|
+
if (values.scaleY !== void 0) obj.scaleY = values.scaleY;
|
|
94
|
+
if (values.rotation !== void 0) obj.rotation = values.rotation;
|
|
95
|
+
if (values.alpha !== void 0) obj.alpha = values.alpha;
|
|
96
|
+
},
|
|
97
|
+
getSnapshot() {
|
|
98
|
+
return {
|
|
99
|
+
// Return the logical target position, not the compensated render position.
|
|
100
|
+
// The engine may feed snapshot values back into later tween/spring frames.
|
|
101
|
+
// Using rendered x/y here would compound the origin offset on every step.
|
|
102
|
+
x: intendedX,
|
|
103
|
+
y: intendedY,
|
|
104
|
+
scaleX: obj.scaleX,
|
|
105
|
+
scaleY: obj.scaleY,
|
|
106
|
+
rotation: obj.rotation,
|
|
107
|
+
alpha: obj.alpha
|
|
108
|
+
};
|
|
109
|
+
},
|
|
110
|
+
getScheduler() {
|
|
111
|
+
let current = obj;
|
|
112
|
+
while (current) {
|
|
113
|
+
const ctx = current.__surfaceContext;
|
|
114
|
+
if (ctx?.scheduler) return ctx.scheduler;
|
|
115
|
+
current = current.parentContainer;
|
|
116
|
+
}
|
|
117
|
+
throw new Error("No HostScheduler found in Phaser game object tree");
|
|
118
|
+
},
|
|
119
|
+
getSize() {
|
|
120
|
+
return { width: obj.width, height: obj.height };
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
function useGameObjectEffect(ref) {
|
|
125
|
+
const activeHandleRef = jsxCore.useRef(null);
|
|
126
|
+
const runCoreEffect = (name, config = {}) => {
|
|
127
|
+
if (!ref.current) return;
|
|
128
|
+
const def = jsxCore.EFFECT_DEFINITIONS[name];
|
|
129
|
+
if (!def) return;
|
|
130
|
+
const origin = jsxCore.resolveEffectTransformOrigin(name);
|
|
131
|
+
const target = createPhaserTarget(ref.current, origin);
|
|
132
|
+
const handle = jsxCore.runEffect(ref.current, target, def, config);
|
|
133
|
+
if (handle) {
|
|
134
|
+
activeHandleRef.current?.stop();
|
|
135
|
+
activeHandleRef.current = handle;
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
const stopEffects = () => {
|
|
139
|
+
if (!ref.current) return;
|
|
140
|
+
activeHandleRef.current?.stop();
|
|
141
|
+
activeHandleRef.current = null;
|
|
142
|
+
jsxCore.stopAnimationEffect(ref.current);
|
|
143
|
+
};
|
|
144
|
+
jsxCore.useEffect(() => {
|
|
145
|
+
return () => {
|
|
146
|
+
activeHandleRef.current?.stop();
|
|
147
|
+
activeHandleRef.current = null;
|
|
148
|
+
if (ref.current) jsxCore.stopAnimationEffect(ref.current);
|
|
149
|
+
};
|
|
150
|
+
}, []);
|
|
151
|
+
return { applyEffect: runCoreEffect, stopEffects };
|
|
152
|
+
}
|
|
153
|
+
exports.createPhaserTarget = createPhaserTarget;
|
|
154
|
+
exports.useGameObjectEffect = useGameObjectEffect;
|
|
155
|
+
//# sourceMappingURL=use-effect.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-effect.cjs","sources":["../../src/effects/use-effect.ts"],"sourcesContent":["/**\n * Phaser effects — connects Core effect engine to Phaser game objects.\n *\n * The Core engine handles all effect definitions, step sequencing, easing,\n * origin calculation, and loop management. Phaser only applies values.\n */\nimport {\n EFFECT_DEFINITIONS,\n resolveEffectTransformOrigin,\n runEffect,\n stopAnimationEffect as stopEngineEffect,\n type EffectConfig,\n type EffectName,\n type EffectTarget,\n type EffectTransformOrigin,\n type HostScheduler,\n} from '@number10/jsx-core'\nimport * as Phaser from 'phaser'\nimport { useEffect, useRef } from '../hooks'\n\n/**\n * Ref object type\n */\ntype RefObject<T> = { current: T }\n\n/**\n * 2D transform point helper used by origin compensation.\n */\nfunction transformPoint(\n x: number,\n y: number,\n scaleX: number,\n scaleY: number,\n rotation: number\n): { x: number; y: number } {\n const scaledX = x * scaleX\n const scaledY = y * scaleY\n const cos = Math.cos(rotation)\n const sin = Math.sin(rotation)\n return {\n x: scaledX * cos - scaledY * sin,\n y: scaledX * sin + scaledY * cos,\n }\n}\n\n/**\n * Wrap a Phaser game object as an {@link EffectTarget} for the Core effect engine.\n *\n * Handles origin compensation for scale/rotation effects by computing an absolute\n * pivot offset from a frozen reference state.\n *\n * @param obj - The Phaser game object to wrap\n * @param origin - Optional transform origin for position compensation\n */\nexport function createPhaserTarget(\n obj: Phaser.GameObjects.Container,\n origin?: EffectTransformOrigin\n): EffectTarget {\n const layoutNode = obj as Phaser.GameObjects.Container & {\n __layoutPosition?: { x: number; y: number }\n __layoutPositionRevision?: number\n }\n const originX = origin === 'center' || origin === 'top-center' ? 0.5 : 0\n const originY = origin === 'center' ? 0.5 : 0\n const hasOrigin = originX !== 0 || originY !== 0\n\n // Reference state: always use neutral scale/rotation for the pivot.\n // The engine communicates the actual animated values via onUpdate.\n // Using the current (potentially mid-animation) scale would compute\n // a wrong reference pivot, causing permanent position drift when\n // effects are rapidly retriggered.\n const baseScaleX = 1\n const baseScaleY = 1\n const baseRotation = 0\n\n // Capture size once; lazily re-check if not yet laid out\n let refWidth = obj.width\n let refHeight = obj.height\n let refPivot: { x: number; y: number } | null = null\n\n function ensurePivot(): boolean {\n if (refPivot) return true\n if (refWidth === 0) {\n refWidth = obj.width\n refHeight = obj.height\n }\n if (refWidth === 0) return false\n const px = refWidth * originX\n const py = refHeight * originY\n refPivot = transformPoint(px, py, baseScaleX, baseScaleY, baseRotation)\n return true\n }\n\n let intendedX = layoutNode.__layoutPosition?.x ?? obj.x\n let intendedY = layoutNode.__layoutPosition?.y ?? obj.y\n let layoutPositionRevision = layoutNode.__layoutPositionRevision ?? 0\n\n return {\n onUpdate(values) {\n if (!obj.active) return\n\n const nextLayoutRevision = layoutNode.__layoutPositionRevision ?? 0\n const layoutPositionChanged = nextLayoutRevision !== layoutPositionRevision\n if (layoutPositionChanged && layoutNode.__layoutPosition) {\n intendedX = layoutNode.__layoutPosition.x\n intendedY = layoutNode.__layoutPosition.y\n layoutPositionRevision = nextLayoutRevision\n }\n\n if (values.x !== undefined) intendedX = values.x\n if (values.y !== undefined) intendedY = values.y\n\n if (!hasOrigin || !ensurePivot()) {\n if (values.x === undefined && !layoutPositionChanged) intendedX = obj.x\n if (values.y === undefined && !layoutPositionChanged) intendedY = obj.y\n if (values.x !== undefined) obj.x = intendedX\n if (values.y !== undefined) obj.y = intendedY\n if (values.scaleX !== undefined) obj.scaleX = values.scaleX\n if (values.scaleY !== undefined) obj.scaleY = values.scaleY\n if (values.rotation !== undefined) obj.rotation = values.rotation\n if (values.alpha !== undefined) obj.alpha = values.alpha\n return\n }\n\n const existingPivot = transformPoint(\n refWidth * originX,\n refHeight * originY,\n obj.scaleX,\n obj.scaleY,\n obj.rotation\n )\n if (values.x === undefined && !layoutPositionChanged) {\n intendedX = obj.x - ((refPivot as { x: number; y: number }).x - existingPivot.x)\n }\n if (values.y === undefined && !layoutPositionChanged) {\n intendedY = obj.y - ((refPivot as { x: number; y: number }).y - existingPivot.y)\n }\n\n const currentScaleX = values.scaleX ?? obj.scaleX\n const currentScaleY = values.scaleY ?? obj.scaleY\n const currentRotation = values.rotation ?? obj.rotation\n\n const curPivot = transformPoint(\n refWidth * originX,\n refHeight * originY,\n currentScaleX,\n currentScaleY,\n currentRotation\n )\n\n const dx = (refPivot as { x: number; y: number }).x - curPivot.x\n const dy = (refPivot as { x: number; y: number }).y - curPivot.y\n\n obj.x = intendedX + dx\n obj.y = intendedY + dy\n if (values.scaleX !== undefined) obj.scaleX = values.scaleX\n if (values.scaleY !== undefined) obj.scaleY = values.scaleY\n if (values.rotation !== undefined) obj.rotation = values.rotation\n if (values.alpha !== undefined) obj.alpha = values.alpha\n },\n\n getSnapshot() {\n return {\n // Return the logical target position, not the compensated render position.\n // The engine may feed snapshot values back into later tween/spring frames.\n // Using rendered x/y here would compound the origin offset on every step.\n x: intendedX,\n y: intendedY,\n scaleX: obj.scaleX,\n scaleY: obj.scaleY,\n rotation: obj.rotation,\n alpha: obj.alpha,\n }\n },\n\n getScheduler() {\n let current: Phaser.GameObjects.Container | null = obj\n while (current) {\n const ctx = (current as unknown as Record<string, unknown>).__surfaceContext as\n | { scheduler?: HostScheduler }\n | undefined\n if (ctx?.scheduler) return ctx.scheduler\n current = current.parentContainer\n }\n throw new Error('No HostScheduler found in Phaser game object tree')\n },\n\n getSize() {\n return { width: obj.width, height: obj.height }\n },\n }\n}\n\n/**\n * Hook for applying effects to game objects via the central Core engine.\n *\n * @param ref - RefObject pointing to a Phaser game object\n * @returns { applyEffect, stopEffects }\n */\nexport function useGameObjectEffect(ref: RefObject<Phaser.GameObjects.Container | null>) {\n const activeHandleRef = useRef<ReturnType<typeof runEffect> | null>(null)\n\n /**\n * Apply an effect by name to the game object.\n * @param name - Effect name (e.g. 'pulse', 'fadeIn')\n * @param config - Optional effect configuration\n */\n const runCoreEffect = (name: EffectName, config: EffectConfig = {}) => {\n if (!ref.current) return\n\n // Do NOT stop the previous handle here — runEffect handles state\n // transitions internally, preserving the original base position.\n // Calling stop() here would delete the effect state, causing\n // runEffect to snapshot the current (animated) position as the\n // new base, leading to permanent position drift on rapid clicks.\n\n const def = EFFECT_DEFINITIONS[name]\n if (!def) return\n\n const origin = resolveEffectTransformOrigin(name)\n const target = createPhaserTarget(ref.current, origin)\n const handle = runEffect(ref.current, target, def, config)\n if (handle) {\n activeHandleRef.current?.stop()\n activeHandleRef.current = handle\n }\n }\n\n /**\n * Stop all active effects on the game object.\n */\n const stopEffects = () => {\n if (!ref.current) return\n activeHandleRef.current?.stop()\n activeHandleRef.current = null\n stopEngineEffect(ref.current)\n }\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n activeHandleRef.current?.stop()\n activeHandleRef.current = null\n if (ref.current) stopEngineEffect(ref.current)\n }\n }, [])\n\n return { applyEffect: runCoreEffect, stopEffects }\n}\n"],"names":["useRef","EFFECT_DEFINITIONS","resolveEffectTransformOrigin","runEffect","stopEngineEffect","useEffect"],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { EffectConfig, EffectName, EffectTarget, EffectTransformOrigin } from '@number10/jsx-core';
|
|
2
|
+
import * as Phaser from 'phaser';
|
|
3
|
+
/**
|
|
4
|
+
* Ref object type
|
|
5
|
+
*/
|
|
6
|
+
type RefObject<T> = {
|
|
7
|
+
current: T;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Wrap a Phaser game object as an {@link EffectTarget} for the Core effect engine.
|
|
11
|
+
*
|
|
12
|
+
* Handles origin compensation for scale/rotation effects by computing an absolute
|
|
13
|
+
* pivot offset from a frozen reference state.
|
|
14
|
+
*
|
|
15
|
+
* @param obj - The Phaser game object to wrap
|
|
16
|
+
* @param origin - Optional transform origin for position compensation
|
|
17
|
+
*/
|
|
18
|
+
export declare function createPhaserTarget(obj: Phaser.GameObjects.Container, origin?: EffectTransformOrigin): EffectTarget;
|
|
19
|
+
/**
|
|
20
|
+
* Hook for applying effects to game objects via the central Core engine.
|
|
21
|
+
*
|
|
22
|
+
* @param ref - RefObject pointing to a Phaser game object
|
|
23
|
+
* @returns { applyEffect, stopEffects }
|
|
24
|
+
*/
|
|
25
|
+
export declare function useGameObjectEffect(ref: RefObject<Phaser.GameObjects.Container | null>): {
|
|
26
|
+
applyEffect: (name: EffectName, config?: EffectConfig) => void;
|
|
27
|
+
stopEffects: () => void;
|
|
28
|
+
};
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=use-effect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-effect.d.ts","sourceRoot":"","sources":["../../src/effects/use-effect.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAKL,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAE3B,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAA;AAGhC;;GAEG;AACH,KAAK,SAAS,CAAC,CAAC,IAAI;IAAE,OAAO,EAAE,CAAC,CAAA;CAAE,CAAA;AAsBlC;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,CAAC,WAAW,CAAC,SAAS,EACjC,MAAM,CAAC,EAAE,qBAAqB,GAC7B,YAAY,CAsId;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC;wBAQxD,UAAU,WAAU,YAAY;;EAyC9D"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { useRef, useEffect, stopAnimationEffect, EFFECT_DEFINITIONS, resolveEffectTransformOrigin, runEffect } from "@number10/jsx-core";
|
|
2
|
+
import "phaser";
|
|
3
|
+
import "../hooks.js";
|
|
4
|
+
function transformPoint(x, y, scaleX, scaleY, rotation) {
|
|
5
|
+
const scaledX = x * scaleX;
|
|
6
|
+
const scaledY = y * scaleY;
|
|
7
|
+
const cos = Math.cos(rotation);
|
|
8
|
+
const sin = Math.sin(rotation);
|
|
9
|
+
return {
|
|
10
|
+
x: scaledX * cos - scaledY * sin,
|
|
11
|
+
y: scaledX * sin + scaledY * cos
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
function createPhaserTarget(obj, origin) {
|
|
15
|
+
const layoutNode = obj;
|
|
16
|
+
const originX = origin === "center" || origin === "top-center" ? 0.5 : 0;
|
|
17
|
+
const originY = origin === "center" ? 0.5 : 0;
|
|
18
|
+
const hasOrigin = originX !== 0 || originY !== 0;
|
|
19
|
+
const baseScaleX = 1;
|
|
20
|
+
const baseScaleY = 1;
|
|
21
|
+
const baseRotation = 0;
|
|
22
|
+
let refWidth = obj.width;
|
|
23
|
+
let refHeight = obj.height;
|
|
24
|
+
let refPivot = null;
|
|
25
|
+
function ensurePivot() {
|
|
26
|
+
if (refPivot) return true;
|
|
27
|
+
if (refWidth === 0) {
|
|
28
|
+
refWidth = obj.width;
|
|
29
|
+
refHeight = obj.height;
|
|
30
|
+
}
|
|
31
|
+
if (refWidth === 0) return false;
|
|
32
|
+
const px = refWidth * originX;
|
|
33
|
+
const py = refHeight * originY;
|
|
34
|
+
refPivot = transformPoint(px, py, baseScaleX, baseScaleY, baseRotation);
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
let intendedX = layoutNode.__layoutPosition?.x ?? obj.x;
|
|
38
|
+
let intendedY = layoutNode.__layoutPosition?.y ?? obj.y;
|
|
39
|
+
let layoutPositionRevision = layoutNode.__layoutPositionRevision ?? 0;
|
|
40
|
+
return {
|
|
41
|
+
onUpdate(values) {
|
|
42
|
+
if (!obj.active) return;
|
|
43
|
+
const nextLayoutRevision = layoutNode.__layoutPositionRevision ?? 0;
|
|
44
|
+
const layoutPositionChanged = nextLayoutRevision !== layoutPositionRevision;
|
|
45
|
+
if (layoutPositionChanged && layoutNode.__layoutPosition) {
|
|
46
|
+
intendedX = layoutNode.__layoutPosition.x;
|
|
47
|
+
intendedY = layoutNode.__layoutPosition.y;
|
|
48
|
+
layoutPositionRevision = nextLayoutRevision;
|
|
49
|
+
}
|
|
50
|
+
if (values.x !== void 0) intendedX = values.x;
|
|
51
|
+
if (values.y !== void 0) intendedY = values.y;
|
|
52
|
+
if (!hasOrigin || !ensurePivot()) {
|
|
53
|
+
if (values.x === void 0 && !layoutPositionChanged) intendedX = obj.x;
|
|
54
|
+
if (values.y === void 0 && !layoutPositionChanged) intendedY = obj.y;
|
|
55
|
+
if (values.x !== void 0) obj.x = intendedX;
|
|
56
|
+
if (values.y !== void 0) obj.y = intendedY;
|
|
57
|
+
if (values.scaleX !== void 0) obj.scaleX = values.scaleX;
|
|
58
|
+
if (values.scaleY !== void 0) obj.scaleY = values.scaleY;
|
|
59
|
+
if (values.rotation !== void 0) obj.rotation = values.rotation;
|
|
60
|
+
if (values.alpha !== void 0) obj.alpha = values.alpha;
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
const existingPivot = transformPoint(
|
|
64
|
+
refWidth * originX,
|
|
65
|
+
refHeight * originY,
|
|
66
|
+
obj.scaleX,
|
|
67
|
+
obj.scaleY,
|
|
68
|
+
obj.rotation
|
|
69
|
+
);
|
|
70
|
+
if (values.x === void 0 && !layoutPositionChanged) {
|
|
71
|
+
intendedX = obj.x - (refPivot.x - existingPivot.x);
|
|
72
|
+
}
|
|
73
|
+
if (values.y === void 0 && !layoutPositionChanged) {
|
|
74
|
+
intendedY = obj.y - (refPivot.y - existingPivot.y);
|
|
75
|
+
}
|
|
76
|
+
const currentScaleX = values.scaleX ?? obj.scaleX;
|
|
77
|
+
const currentScaleY = values.scaleY ?? obj.scaleY;
|
|
78
|
+
const currentRotation = values.rotation ?? obj.rotation;
|
|
79
|
+
const curPivot = transformPoint(
|
|
80
|
+
refWidth * originX,
|
|
81
|
+
refHeight * originY,
|
|
82
|
+
currentScaleX,
|
|
83
|
+
currentScaleY,
|
|
84
|
+
currentRotation
|
|
85
|
+
);
|
|
86
|
+
const dx = refPivot.x - curPivot.x;
|
|
87
|
+
const dy = refPivot.y - curPivot.y;
|
|
88
|
+
obj.x = intendedX + dx;
|
|
89
|
+
obj.y = intendedY + dy;
|
|
90
|
+
if (values.scaleX !== void 0) obj.scaleX = values.scaleX;
|
|
91
|
+
if (values.scaleY !== void 0) obj.scaleY = values.scaleY;
|
|
92
|
+
if (values.rotation !== void 0) obj.rotation = values.rotation;
|
|
93
|
+
if (values.alpha !== void 0) obj.alpha = values.alpha;
|
|
94
|
+
},
|
|
95
|
+
getSnapshot() {
|
|
96
|
+
return {
|
|
97
|
+
// Return the logical target position, not the compensated render position.
|
|
98
|
+
// The engine may feed snapshot values back into later tween/spring frames.
|
|
99
|
+
// Using rendered x/y here would compound the origin offset on every step.
|
|
100
|
+
x: intendedX,
|
|
101
|
+
y: intendedY,
|
|
102
|
+
scaleX: obj.scaleX,
|
|
103
|
+
scaleY: obj.scaleY,
|
|
104
|
+
rotation: obj.rotation,
|
|
105
|
+
alpha: obj.alpha
|
|
106
|
+
};
|
|
107
|
+
},
|
|
108
|
+
getScheduler() {
|
|
109
|
+
let current = obj;
|
|
110
|
+
while (current) {
|
|
111
|
+
const ctx = current.__surfaceContext;
|
|
112
|
+
if (ctx?.scheduler) return ctx.scheduler;
|
|
113
|
+
current = current.parentContainer;
|
|
114
|
+
}
|
|
115
|
+
throw new Error("No HostScheduler found in Phaser game object tree");
|
|
116
|
+
},
|
|
117
|
+
getSize() {
|
|
118
|
+
return { width: obj.width, height: obj.height };
|
|
119
|
+
}
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
function useGameObjectEffect(ref) {
|
|
123
|
+
const activeHandleRef = useRef(null);
|
|
124
|
+
const runCoreEffect = (name, config = {}) => {
|
|
125
|
+
if (!ref.current) return;
|
|
126
|
+
const def = EFFECT_DEFINITIONS[name];
|
|
127
|
+
if (!def) return;
|
|
128
|
+
const origin = resolveEffectTransformOrigin(name);
|
|
129
|
+
const target = createPhaserTarget(ref.current, origin);
|
|
130
|
+
const handle = runEffect(ref.current, target, def, config);
|
|
131
|
+
if (handle) {
|
|
132
|
+
activeHandleRef.current?.stop();
|
|
133
|
+
activeHandleRef.current = handle;
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
const stopEffects = () => {
|
|
137
|
+
if (!ref.current) return;
|
|
138
|
+
activeHandleRef.current?.stop();
|
|
139
|
+
activeHandleRef.current = null;
|
|
140
|
+
stopAnimationEffect(ref.current);
|
|
141
|
+
};
|
|
142
|
+
useEffect(() => {
|
|
143
|
+
return () => {
|
|
144
|
+
activeHandleRef.current?.stop();
|
|
145
|
+
activeHandleRef.current = null;
|
|
146
|
+
if (ref.current) stopAnimationEffect(ref.current);
|
|
147
|
+
};
|
|
148
|
+
}, []);
|
|
149
|
+
return { applyEffect: runCoreEffect, stopEffects };
|
|
150
|
+
}
|
|
151
|
+
export {
|
|
152
|
+
createPhaserTarget,
|
|
153
|
+
useGameObjectEffect
|
|
154
|
+
};
|
|
155
|
+
//# sourceMappingURL=use-effect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-effect.js","sources":["../../src/effects/use-effect.ts"],"sourcesContent":["/**\n * Phaser effects — connects Core effect engine to Phaser game objects.\n *\n * The Core engine handles all effect definitions, step sequencing, easing,\n * origin calculation, and loop management. Phaser only applies values.\n */\nimport {\n EFFECT_DEFINITIONS,\n resolveEffectTransformOrigin,\n runEffect,\n stopAnimationEffect as stopEngineEffect,\n type EffectConfig,\n type EffectName,\n type EffectTarget,\n type EffectTransformOrigin,\n type HostScheduler,\n} from '@number10/jsx-core'\nimport * as Phaser from 'phaser'\nimport { useEffect, useRef } from '../hooks'\n\n/**\n * Ref object type\n */\ntype RefObject<T> = { current: T }\n\n/**\n * 2D transform point helper used by origin compensation.\n */\nfunction transformPoint(\n x: number,\n y: number,\n scaleX: number,\n scaleY: number,\n rotation: number\n): { x: number; y: number } {\n const scaledX = x * scaleX\n const scaledY = y * scaleY\n const cos = Math.cos(rotation)\n const sin = Math.sin(rotation)\n return {\n x: scaledX * cos - scaledY * sin,\n y: scaledX * sin + scaledY * cos,\n }\n}\n\n/**\n * Wrap a Phaser game object as an {@link EffectTarget} for the Core effect engine.\n *\n * Handles origin compensation for scale/rotation effects by computing an absolute\n * pivot offset from a frozen reference state.\n *\n * @param obj - The Phaser game object to wrap\n * @param origin - Optional transform origin for position compensation\n */\nexport function createPhaserTarget(\n obj: Phaser.GameObjects.Container,\n origin?: EffectTransformOrigin\n): EffectTarget {\n const layoutNode = obj as Phaser.GameObjects.Container & {\n __layoutPosition?: { x: number; y: number }\n __layoutPositionRevision?: number\n }\n const originX = origin === 'center' || origin === 'top-center' ? 0.5 : 0\n const originY = origin === 'center' ? 0.5 : 0\n const hasOrigin = originX !== 0 || originY !== 0\n\n // Reference state: always use neutral scale/rotation for the pivot.\n // The engine communicates the actual animated values via onUpdate.\n // Using the current (potentially mid-animation) scale would compute\n // a wrong reference pivot, causing permanent position drift when\n // effects are rapidly retriggered.\n const baseScaleX = 1\n const baseScaleY = 1\n const baseRotation = 0\n\n // Capture size once; lazily re-check if not yet laid out\n let refWidth = obj.width\n let refHeight = obj.height\n let refPivot: { x: number; y: number } | null = null\n\n function ensurePivot(): boolean {\n if (refPivot) return true\n if (refWidth === 0) {\n refWidth = obj.width\n refHeight = obj.height\n }\n if (refWidth === 0) return false\n const px = refWidth * originX\n const py = refHeight * originY\n refPivot = transformPoint(px, py, baseScaleX, baseScaleY, baseRotation)\n return true\n }\n\n let intendedX = layoutNode.__layoutPosition?.x ?? obj.x\n let intendedY = layoutNode.__layoutPosition?.y ?? obj.y\n let layoutPositionRevision = layoutNode.__layoutPositionRevision ?? 0\n\n return {\n onUpdate(values) {\n if (!obj.active) return\n\n const nextLayoutRevision = layoutNode.__layoutPositionRevision ?? 0\n const layoutPositionChanged = nextLayoutRevision !== layoutPositionRevision\n if (layoutPositionChanged && layoutNode.__layoutPosition) {\n intendedX = layoutNode.__layoutPosition.x\n intendedY = layoutNode.__layoutPosition.y\n layoutPositionRevision = nextLayoutRevision\n }\n\n if (values.x !== undefined) intendedX = values.x\n if (values.y !== undefined) intendedY = values.y\n\n if (!hasOrigin || !ensurePivot()) {\n if (values.x === undefined && !layoutPositionChanged) intendedX = obj.x\n if (values.y === undefined && !layoutPositionChanged) intendedY = obj.y\n if (values.x !== undefined) obj.x = intendedX\n if (values.y !== undefined) obj.y = intendedY\n if (values.scaleX !== undefined) obj.scaleX = values.scaleX\n if (values.scaleY !== undefined) obj.scaleY = values.scaleY\n if (values.rotation !== undefined) obj.rotation = values.rotation\n if (values.alpha !== undefined) obj.alpha = values.alpha\n return\n }\n\n const existingPivot = transformPoint(\n refWidth * originX,\n refHeight * originY,\n obj.scaleX,\n obj.scaleY,\n obj.rotation\n )\n if (values.x === undefined && !layoutPositionChanged) {\n intendedX = obj.x - ((refPivot as { x: number; y: number }).x - existingPivot.x)\n }\n if (values.y === undefined && !layoutPositionChanged) {\n intendedY = obj.y - ((refPivot as { x: number; y: number }).y - existingPivot.y)\n }\n\n const currentScaleX = values.scaleX ?? obj.scaleX\n const currentScaleY = values.scaleY ?? obj.scaleY\n const currentRotation = values.rotation ?? obj.rotation\n\n const curPivot = transformPoint(\n refWidth * originX,\n refHeight * originY,\n currentScaleX,\n currentScaleY,\n currentRotation\n )\n\n const dx = (refPivot as { x: number; y: number }).x - curPivot.x\n const dy = (refPivot as { x: number; y: number }).y - curPivot.y\n\n obj.x = intendedX + dx\n obj.y = intendedY + dy\n if (values.scaleX !== undefined) obj.scaleX = values.scaleX\n if (values.scaleY !== undefined) obj.scaleY = values.scaleY\n if (values.rotation !== undefined) obj.rotation = values.rotation\n if (values.alpha !== undefined) obj.alpha = values.alpha\n },\n\n getSnapshot() {\n return {\n // Return the logical target position, not the compensated render position.\n // The engine may feed snapshot values back into later tween/spring frames.\n // Using rendered x/y here would compound the origin offset on every step.\n x: intendedX,\n y: intendedY,\n scaleX: obj.scaleX,\n scaleY: obj.scaleY,\n rotation: obj.rotation,\n alpha: obj.alpha,\n }\n },\n\n getScheduler() {\n let current: Phaser.GameObjects.Container | null = obj\n while (current) {\n const ctx = (current as unknown as Record<string, unknown>).__surfaceContext as\n | { scheduler?: HostScheduler }\n | undefined\n if (ctx?.scheduler) return ctx.scheduler\n current = current.parentContainer\n }\n throw new Error('No HostScheduler found in Phaser game object tree')\n },\n\n getSize() {\n return { width: obj.width, height: obj.height }\n },\n }\n}\n\n/**\n * Hook for applying effects to game objects via the central Core engine.\n *\n * @param ref - RefObject pointing to a Phaser game object\n * @returns { applyEffect, stopEffects }\n */\nexport function useGameObjectEffect(ref: RefObject<Phaser.GameObjects.Container | null>) {\n const activeHandleRef = useRef<ReturnType<typeof runEffect> | null>(null)\n\n /**\n * Apply an effect by name to the game object.\n * @param name - Effect name (e.g. 'pulse', 'fadeIn')\n * @param config - Optional effect configuration\n */\n const runCoreEffect = (name: EffectName, config: EffectConfig = {}) => {\n if (!ref.current) return\n\n // Do NOT stop the previous handle here — runEffect handles state\n // transitions internally, preserving the original base position.\n // Calling stop() here would delete the effect state, causing\n // runEffect to snapshot the current (animated) position as the\n // new base, leading to permanent position drift on rapid clicks.\n\n const def = EFFECT_DEFINITIONS[name]\n if (!def) return\n\n const origin = resolveEffectTransformOrigin(name)\n const target = createPhaserTarget(ref.current, origin)\n const handle = runEffect(ref.current, target, def, config)\n if (handle) {\n activeHandleRef.current?.stop()\n activeHandleRef.current = handle\n }\n }\n\n /**\n * Stop all active effects on the game object.\n */\n const stopEffects = () => {\n if (!ref.current) return\n activeHandleRef.current?.stop()\n activeHandleRef.current = null\n stopEngineEffect(ref.current)\n }\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n activeHandleRef.current?.stop()\n activeHandleRef.current = null\n if (ref.current) stopEngineEffect(ref.current)\n }\n }, [])\n\n return { applyEffect: runCoreEffect, stopEffects }\n}\n"],"names":["stopEngineEffect"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/fx/convenience-hooks/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
require("../../hooks.cjs");
|
|
4
|
+
const blur = require("../fx-creators/blur.cjs");
|
|
5
|
+
const useFx = require("../use-fx.cjs");
|
|
6
|
+
const jsxCore = require("@number10/jsx-core");
|
|
7
|
+
function useBlur(ref, config = {}) {
|
|
8
|
+
const { applyFX, clearFX } = useFx.useFX(ref);
|
|
9
|
+
jsxCore.useEffect(() => {
|
|
10
|
+
if (!ref.current) return;
|
|
11
|
+
clearFX();
|
|
12
|
+
applyFX(blur.createBlurFX, config);
|
|
13
|
+
return () => clearFX();
|
|
14
|
+
}, [ref, config, applyFX, clearFX]);
|
|
15
|
+
return { clearFX };
|
|
16
|
+
}
|
|
17
|
+
exports.useBlur = useBlur;
|
|
18
|
+
//# sourceMappingURL=use-blur.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-blur.cjs","sources":["../../../src/fx/convenience-hooks/use-blur.ts"],"sourcesContent":["/**\n * Convenience hook for automatic blur FX\n * Applies blur on mount and updates on config changes\n */\nimport { useEffect } from '../../hooks'\nimport { createBlurFX, type BlurFXConfig } from '../fx-creators/blur'\nimport { useFX } from '../use-fx'\n\n/**\n * Hook for automatic blur FX\n * @param ref - GameObject ref\n * @param config - Blur config (updates reactively)\n * @returns FX controls\n *\n * @example\n * ```tsx\n * const ref = useRef(null)\n * useBlur(ref, { strength: 8, steps: 4 })\n *\n * return <View ref={ref}>Content</View>\n * ```\n */\nexport function useBlur(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ref: { current: any },\n config: BlurFXConfig = {}\n): { clearFX: () => void } {\n const { applyFX, clearFX } = useFX(ref)\n\n useEffect(() => {\n if (!ref.current) return\n\n // Clear previous FX\n clearFX()\n\n // Apply new blur\n applyFX(createBlurFX, config)\n\n return () => clearFX()\n }, [ref, config, applyFX, clearFX])\n\n return { clearFX }\n}\n"],"names":["useFX","useEffect","createBlurFX"],"mappings":";;;;;;AAsBO,SAAS,QAEd,KACA,SAAuB,IACE;AACzB,QAAM,EAAE,SAAS,YAAYA,MAAAA,MAAM,GAAG;AAEtCC,UAAAA,UAAU,MAAM;AACd,QAAI,CAAC,IAAI,QAAS;AAGlB,YAAA;AAGA,YAAQC,KAAAA,cAAc,MAAM;AAE5B,WAAO,MAAM,QAAA;AAAA,EACf,GAAG,CAAC,KAAK,QAAQ,SAAS,OAAO,CAAC;AAElC,SAAO,EAAE,QAAA;AACX;;"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { BlurFXConfig } from '../fx-creators/blur';
|
|
2
|
+
/**
|
|
3
|
+
* Hook for automatic blur FX
|
|
4
|
+
* @param ref - GameObject ref
|
|
5
|
+
* @param config - Blur config (updates reactively)
|
|
6
|
+
* @returns FX controls
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```tsx
|
|
10
|
+
* const ref = useRef(null)
|
|
11
|
+
* useBlur(ref, { strength: 8, steps: 4 })
|
|
12
|
+
*
|
|
13
|
+
* return <View ref={ref}>Content</View>
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export declare function useBlur(ref: {
|
|
17
|
+
current: any;
|
|
18
|
+
}, config?: BlurFXConfig): {
|
|
19
|
+
clearFX: () => void;
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=use-blur.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-blur.d.ts","sourceRoot":"","sources":["../../../src/fx/convenience-hooks/use-blur.ts"],"names":[],"mappings":"AAKA,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAGrE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,OAAO,CAErB,GAAG,EAAE;IAAE,OAAO,EAAE,GAAG,CAAA;CAAE,EACrB,MAAM,GAAE,YAAiB,GACxB;IAAE,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,CAgBzB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import "../../hooks.js";
|
|
2
|
+
import { createBlurFX } from "../fx-creators/blur.js";
|
|
3
|
+
import { useFX } from "../use-fx.js";
|
|
4
|
+
import { useEffect } from "@number10/jsx-core";
|
|
5
|
+
function useBlur(ref, config = {}) {
|
|
6
|
+
const { applyFX, clearFX } = useFX(ref);
|
|
7
|
+
useEffect(() => {
|
|
8
|
+
if (!ref.current) return;
|
|
9
|
+
clearFX();
|
|
10
|
+
applyFX(createBlurFX, config);
|
|
11
|
+
return () => clearFX();
|
|
12
|
+
}, [ref, config, applyFX, clearFX]);
|
|
13
|
+
return { clearFX };
|
|
14
|
+
}
|
|
15
|
+
export {
|
|
16
|
+
useBlur
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=use-blur.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-blur.js","sources":["../../../src/fx/convenience-hooks/use-blur.ts"],"sourcesContent":["/**\n * Convenience hook for automatic blur FX\n * Applies blur on mount and updates on config changes\n */\nimport { useEffect } from '../../hooks'\nimport { createBlurFX, type BlurFXConfig } from '../fx-creators/blur'\nimport { useFX } from '../use-fx'\n\n/**\n * Hook for automatic blur FX\n * @param ref - GameObject ref\n * @param config - Blur config (updates reactively)\n * @returns FX controls\n *\n * @example\n * ```tsx\n * const ref = useRef(null)\n * useBlur(ref, { strength: 8, steps: 4 })\n *\n * return <View ref={ref}>Content</View>\n * ```\n */\nexport function useBlur(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ref: { current: any },\n config: BlurFXConfig = {}\n): { clearFX: () => void } {\n const { applyFX, clearFX } = useFX(ref)\n\n useEffect(() => {\n if (!ref.current) return\n\n // Clear previous FX\n clearFX()\n\n // Apply new blur\n applyFX(createBlurFX, config)\n\n return () => clearFX()\n }, [ref, config, applyFX, clearFX])\n\n return { clearFX }\n}\n"],"names":[],"mappings":";;;;AAsBO,SAAS,QAEd,KACA,SAAuB,IACE;AACzB,QAAM,EAAE,SAAS,YAAY,MAAM,GAAG;AAEtC,YAAU,MAAM;AACd,QAAI,CAAC,IAAI,QAAS;AAGlB,YAAA;AAGA,YAAQ,cAAc,MAAM;AAE5B,WAAO,MAAM,QAAA;AAAA,EACf,GAAG,CAAC,KAAK,QAAQ,SAAS,OAAO,CAAC;AAElC,SAAO,EAAE,QAAA;AACX;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
require("../../hooks.cjs");
|
|
4
|
+
const glow = require("../fx-creators/glow.cjs");
|
|
5
|
+
const useFx = require("../use-fx.cjs");
|
|
6
|
+
const jsxCore = require("@number10/jsx-core");
|
|
7
|
+
function useGlow(ref, config = {}) {
|
|
8
|
+
const { applyFX, clearFX } = useFx.useFX(ref);
|
|
9
|
+
jsxCore.useEffect(() => {
|
|
10
|
+
if (!ref.current) return;
|
|
11
|
+
clearFX();
|
|
12
|
+
applyFX(glow.createGlowFX, config);
|
|
13
|
+
return () => clearFX();
|
|
14
|
+
}, [ref, config, applyFX, clearFX]);
|
|
15
|
+
return { clearFX };
|
|
16
|
+
}
|
|
17
|
+
exports.useGlow = useGlow;
|
|
18
|
+
//# sourceMappingURL=use-glow.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-glow.cjs","sources":["../../../src/fx/convenience-hooks/use-glow.ts"],"sourcesContent":["/**\n * Convenience hook for automatic glow FX\n * Applies glow on mount and updates on config changes\n */\nimport { useEffect } from '../../hooks'\nimport { createGlowFX, type GlowFXConfig } from '../fx-creators/glow'\nimport { useFX } from '../use-fx'\n\n/**\n * Hook for automatic glow FX\n * @param ref - GameObject ref\n * @param config - Glow config (updates reactively)\n * @returns FX controls\n *\n * @example\n * ```tsx\n * const ref = useRef(null)\n * useGlow(ref, { color: 0xff6600, outerStrength: 6, innerStrength: 2 })\n *\n * return <View ref={ref}>Content</View>\n * ```\n */\nexport function useGlow(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ref: { current: any },\n config: GlowFXConfig = {}\n): { clearFX: () => void } {\n const { applyFX, clearFX } = useFX(ref)\n\n useEffect(() => {\n if (!ref.current) return\n\n // Clear previous FX\n clearFX()\n\n // Apply new glow\n applyFX(createGlowFX, config)\n\n return () => clearFX()\n }, [ref, config, applyFX, clearFX])\n\n return { clearFX }\n}\n"],"names":["useFX","useEffect","createGlowFX"],"mappings":";;;;;;AAsBO,SAAS,QAEd,KACA,SAAuB,IACE;AACzB,QAAM,EAAE,SAAS,YAAYA,MAAAA,MAAM,GAAG;AAEtCC,UAAAA,UAAU,MAAM;AACd,QAAI,CAAC,IAAI,QAAS;AAGlB,YAAA;AAGA,YAAQC,KAAAA,cAAc,MAAM;AAE5B,WAAO,MAAM,QAAA;AAAA,EACf,GAAG,CAAC,KAAK,QAAQ,SAAS,OAAO,CAAC;AAElC,SAAO,EAAE,QAAA;AACX;;"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { GlowFXConfig } from '../fx-creators/glow';
|
|
2
|
+
/**
|
|
3
|
+
* Hook for automatic glow FX
|
|
4
|
+
* @param ref - GameObject ref
|
|
5
|
+
* @param config - Glow config (updates reactively)
|
|
6
|
+
* @returns FX controls
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```tsx
|
|
10
|
+
* const ref = useRef(null)
|
|
11
|
+
* useGlow(ref, { color: 0xff6600, outerStrength: 6, innerStrength: 2 })
|
|
12
|
+
*
|
|
13
|
+
* return <View ref={ref}>Content</View>
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export declare function useGlow(ref: {
|
|
17
|
+
current: any;
|
|
18
|
+
}, config?: GlowFXConfig): {
|
|
19
|
+
clearFX: () => void;
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=use-glow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-glow.d.ts","sourceRoot":"","sources":["../../../src/fx/convenience-hooks/use-glow.ts"],"names":[],"mappings":"AAKA,OAAO,EAAgB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAGrE;;;;;;;;;;;;;GAaG;AACH,wBAAgB,OAAO,CAErB,GAAG,EAAE;IAAE,OAAO,EAAE,GAAG,CAAA;CAAE,EACrB,MAAM,GAAE,YAAiB,GACxB;IAAE,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,CAgBzB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import "../../hooks.js";
|
|
2
|
+
import { createGlowFX } from "../fx-creators/glow.js";
|
|
3
|
+
import { useFX } from "../use-fx.js";
|
|
4
|
+
import { useEffect } from "@number10/jsx-core";
|
|
5
|
+
function useGlow(ref, config = {}) {
|
|
6
|
+
const { applyFX, clearFX } = useFX(ref);
|
|
7
|
+
useEffect(() => {
|
|
8
|
+
if (!ref.current) return;
|
|
9
|
+
clearFX();
|
|
10
|
+
applyFX(createGlowFX, config);
|
|
11
|
+
return () => clearFX();
|
|
12
|
+
}, [ref, config, applyFX, clearFX]);
|
|
13
|
+
return { clearFX };
|
|
14
|
+
}
|
|
15
|
+
export {
|
|
16
|
+
useGlow
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=use-glow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-glow.js","sources":["../../../src/fx/convenience-hooks/use-glow.ts"],"sourcesContent":["/**\n * Convenience hook for automatic glow FX\n * Applies glow on mount and updates on config changes\n */\nimport { useEffect } from '../../hooks'\nimport { createGlowFX, type GlowFXConfig } from '../fx-creators/glow'\nimport { useFX } from '../use-fx'\n\n/**\n * Hook for automatic glow FX\n * @param ref - GameObject ref\n * @param config - Glow config (updates reactively)\n * @returns FX controls\n *\n * @example\n * ```tsx\n * const ref = useRef(null)\n * useGlow(ref, { color: 0xff6600, outerStrength: 6, innerStrength: 2 })\n *\n * return <View ref={ref}>Content</View>\n * ```\n */\nexport function useGlow(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ref: { current: any },\n config: GlowFXConfig = {}\n): { clearFX: () => void } {\n const { applyFX, clearFX } = useFX(ref)\n\n useEffect(() => {\n if (!ref.current) return\n\n // Clear previous FX\n clearFX()\n\n // Apply new glow\n applyFX(createGlowFX, config)\n\n return () => clearFX()\n }, [ref, config, applyFX, clearFX])\n\n return { clearFX }\n}\n"],"names":[],"mappings":";;;;AAsBO,SAAS,QAEd,KACA,SAAuB,IACE;AACzB,QAAM,EAAE,SAAS,YAAY,MAAM,GAAG;AAEtC,YAAU,MAAM;AACd,QAAI,CAAC,IAAI,QAAS;AAGlB,YAAA;AAGA,YAAQ,cAAc,MAAM;AAE5B,WAAO,MAAM,QAAA;AAAA,EACf,GAAG,CAAC,KAAK,QAAQ,SAAS,OAAO,CAAC;AAElC,SAAO,EAAE,QAAA;AACX;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
require("../../hooks.cjs");
|
|
4
|
+
const shadow = require("../fx-creators/shadow.cjs");
|
|
5
|
+
const useFx = require("../use-fx.cjs");
|
|
6
|
+
const jsxCore = require("@number10/jsx-core");
|
|
7
|
+
function useShadow(ref, config = {}) {
|
|
8
|
+
const { applyFX, clearFX } = useFx.useFX(ref);
|
|
9
|
+
jsxCore.useEffect(() => {
|
|
10
|
+
if (!ref.current) return;
|
|
11
|
+
clearFX();
|
|
12
|
+
applyFX(shadow.createShadowFX, config);
|
|
13
|
+
return () => clearFX();
|
|
14
|
+
}, [ref, config, applyFX, clearFX]);
|
|
15
|
+
return { clearFX };
|
|
16
|
+
}
|
|
17
|
+
exports.useShadow = useShadow;
|
|
18
|
+
//# sourceMappingURL=use-shadow.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-shadow.cjs","sources":["../../../src/fx/convenience-hooks/use-shadow.ts"],"sourcesContent":["/**\n * Convenience hook for automatic shadow FX\n * Applies shadow on mount and updates on config changes\n */\nimport { useEffect } from '../../hooks'\nimport { createShadowFX, type ShadowFXConfig } from '../fx-creators/shadow'\nimport { useFX } from '../use-fx'\n\n/**\n * Hook for automatic shadow FX\n * @param ref - GameObject ref\n * @param config - Shadow config (updates reactively)\n * @returns FX controls\n *\n * @example\n * ```tsx\n * const ref = useRef(null)\n * useShadow(ref, { x: 4, y: 4, decay: 0.1 })\n *\n * return <View ref={ref}>Content</View>\n * ```\n */\nexport function useShadow(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ref: { current: any },\n config: ShadowFXConfig = {}\n): { clearFX: () => void } {\n const { applyFX, clearFX } = useFX(ref)\n\n useEffect(() => {\n if (!ref.current) return\n\n // Clear previous FX\n clearFX()\n\n // Apply new shadow\n applyFX(createShadowFX, config)\n\n return () => clearFX()\n }, [ref, config, applyFX, clearFX])\n\n return { clearFX }\n}\n"],"names":["useFX","useEffect","createShadowFX"],"mappings":";;;;;;AAsBO,SAAS,UAEd,KACA,SAAyB,IACA;AACzB,QAAM,EAAE,SAAS,YAAYA,MAAAA,MAAM,GAAG;AAEtCC,UAAAA,UAAU,MAAM;AACd,QAAI,CAAC,IAAI,QAAS;AAGlB,YAAA;AAGA,YAAQC,OAAAA,gBAAgB,MAAM;AAE9B,WAAO,MAAM,QAAA;AAAA,EACf,GAAG,CAAC,KAAK,QAAQ,SAAS,OAAO,CAAC;AAElC,SAAO,EAAE,QAAA;AACX;;"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ShadowFXConfig } from '../fx-creators/shadow';
|
|
2
|
+
/**
|
|
3
|
+
* Hook for automatic shadow FX
|
|
4
|
+
* @param ref - GameObject ref
|
|
5
|
+
* @param config - Shadow config (updates reactively)
|
|
6
|
+
* @returns FX controls
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```tsx
|
|
10
|
+
* const ref = useRef(null)
|
|
11
|
+
* useShadow(ref, { x: 4, y: 4, decay: 0.1 })
|
|
12
|
+
*
|
|
13
|
+
* return <View ref={ref}>Content</View>
|
|
14
|
+
* ```
|
|
15
|
+
*/
|
|
16
|
+
export declare function useShadow(ref: {
|
|
17
|
+
current: any;
|
|
18
|
+
}, config?: ShadowFXConfig): {
|
|
19
|
+
clearFX: () => void;
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=use-shadow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-shadow.d.ts","sourceRoot":"","sources":["../../../src/fx/convenience-hooks/use-shadow.ts"],"names":[],"mappings":"AAKA,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAG3E;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAEvB,GAAG,EAAE;IAAE,OAAO,EAAE,GAAG,CAAA;CAAE,EACrB,MAAM,GAAE,cAAmB,GAC1B;IAAE,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,CAgBzB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import "../../hooks.js";
|
|
2
|
+
import { createShadowFX } from "../fx-creators/shadow.js";
|
|
3
|
+
import { useFX } from "../use-fx.js";
|
|
4
|
+
import { useEffect } from "@number10/jsx-core";
|
|
5
|
+
function useShadow(ref, config = {}) {
|
|
6
|
+
const { applyFX, clearFX } = useFX(ref);
|
|
7
|
+
useEffect(() => {
|
|
8
|
+
if (!ref.current) return;
|
|
9
|
+
clearFX();
|
|
10
|
+
applyFX(createShadowFX, config);
|
|
11
|
+
return () => clearFX();
|
|
12
|
+
}, [ref, config, applyFX, clearFX]);
|
|
13
|
+
return { clearFX };
|
|
14
|
+
}
|
|
15
|
+
export {
|
|
16
|
+
useShadow
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=use-shadow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-shadow.js","sources":["../../../src/fx/convenience-hooks/use-shadow.ts"],"sourcesContent":["/**\n * Convenience hook for automatic shadow FX\n * Applies shadow on mount and updates on config changes\n */\nimport { useEffect } from '../../hooks'\nimport { createShadowFX, type ShadowFXConfig } from '../fx-creators/shadow'\nimport { useFX } from '../use-fx'\n\n/**\n * Hook for automatic shadow FX\n * @param ref - GameObject ref\n * @param config - Shadow config (updates reactively)\n * @returns FX controls\n *\n * @example\n * ```tsx\n * const ref = useRef(null)\n * useShadow(ref, { x: 4, y: 4, decay: 0.1 })\n *\n * return <View ref={ref}>Content</View>\n * ```\n */\nexport function useShadow(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ref: { current: any },\n config: ShadowFXConfig = {}\n): { clearFX: () => void } {\n const { applyFX, clearFX } = useFX(ref)\n\n useEffect(() => {\n if (!ref.current) return\n\n // Clear previous FX\n clearFX()\n\n // Apply new shadow\n applyFX(createShadowFX, config)\n\n return () => clearFX()\n }, [ref, config, applyFX, clearFX])\n\n return { clearFX }\n}\n"],"names":[],"mappings":";;;;AAsBO,SAAS,UAEd,KACA,SAAyB,IACA;AACzB,QAAM,EAAE,SAAS,YAAY,MAAM,GAAG;AAEtC,YAAU,MAAM;AACd,QAAI,CAAC,IAAI,QAAS;AAGlB,YAAA;AAGA,YAAQ,gBAAgB,MAAM;AAE9B,WAAO,MAAM,QAAA;AAAA,EACf,GAAG,CAAC,KAAK,QAAQ,SAAS,OAAO,CAAC;AAElC,SAAO,EAAE,QAAA;AACX;"}
|