@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,205 @@
|
|
|
1
|
+
function resolveNumericSize(value) {
|
|
2
|
+
return typeof value === "number" ? value : void 0;
|
|
3
|
+
}
|
|
4
|
+
function resolveZoneSize(zone, fallback) {
|
|
5
|
+
const size = {};
|
|
6
|
+
const width = zone.width ?? fallback.width;
|
|
7
|
+
const height = zone.height ?? fallback.height;
|
|
8
|
+
if (width !== void 0) size.width = width;
|
|
9
|
+
if (height !== void 0) size.height = height;
|
|
10
|
+
return size;
|
|
11
|
+
}
|
|
12
|
+
function withPoint(point, x, y) {
|
|
13
|
+
if (point) {
|
|
14
|
+
point.x = x;
|
|
15
|
+
point.y = y;
|
|
16
|
+
return point;
|
|
17
|
+
}
|
|
18
|
+
return { x, y };
|
|
19
|
+
}
|
|
20
|
+
function createRectSource(x, y, width, height) {
|
|
21
|
+
return {
|
|
22
|
+
x,
|
|
23
|
+
y,
|
|
24
|
+
width,
|
|
25
|
+
height,
|
|
26
|
+
contains: (px, py) => px >= x && px <= x + width && py >= y && py <= y + height,
|
|
27
|
+
getRandomPoint: (point) => withPoint(point, x + Math.random() * width, y + Math.random() * height),
|
|
28
|
+
getPoints: (quantity = 1) => {
|
|
29
|
+
const count = Math.max(1, quantity);
|
|
30
|
+
return Array.from({ length: count }, (_, index) => {
|
|
31
|
+
const progress = count === 1 ? 0 : index / (count - 1);
|
|
32
|
+
const perimeter = 2 * (width + height);
|
|
33
|
+
const distance = progress * perimeter;
|
|
34
|
+
if (distance <= width) return { x: x + distance, y };
|
|
35
|
+
if (distance <= width + height) return { x: x + width, y: y + distance - width };
|
|
36
|
+
if (distance <= width * 2 + height) {
|
|
37
|
+
return { x: x + width - (distance - width - height), y: y + height };
|
|
38
|
+
}
|
|
39
|
+
return { x, y: y + height - (distance - width * 2 - height) };
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
function createCircleSource(x, y, radius) {
|
|
45
|
+
return {
|
|
46
|
+
x,
|
|
47
|
+
y,
|
|
48
|
+
radius,
|
|
49
|
+
contains: (px, py) => {
|
|
50
|
+
const dx = px - x;
|
|
51
|
+
const dy = py - y;
|
|
52
|
+
return dx * dx + dy * dy <= radius * radius;
|
|
53
|
+
},
|
|
54
|
+
getRandomPoint: (point) => {
|
|
55
|
+
const angle = Math.random() * Math.PI * 2;
|
|
56
|
+
const distance = Math.sqrt(Math.random()) * radius;
|
|
57
|
+
return withPoint(point, x + Math.cos(angle) * distance, y + Math.sin(angle) * distance);
|
|
58
|
+
},
|
|
59
|
+
getPoints: (quantity = 1) => {
|
|
60
|
+
const count = Math.max(1, quantity);
|
|
61
|
+
return Array.from({ length: count }, (_, index) => {
|
|
62
|
+
const angle = index / count * Math.PI * 2;
|
|
63
|
+
return { x: x + Math.cos(angle) * radius, y: y + Math.sin(angle) * radius };
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
function createEllipseSource(x, y, width, height) {
|
|
69
|
+
const radiusX = width / 2;
|
|
70
|
+
const radiusY = height / 2;
|
|
71
|
+
return {
|
|
72
|
+
x,
|
|
73
|
+
y,
|
|
74
|
+
width,
|
|
75
|
+
height,
|
|
76
|
+
contains: (px, py) => {
|
|
77
|
+
const dx = (px - x) / radiusX;
|
|
78
|
+
const dy = (py - y) / radiusY;
|
|
79
|
+
return dx * dx + dy * dy <= 1;
|
|
80
|
+
},
|
|
81
|
+
getRandomPoint: (point) => {
|
|
82
|
+
const angle = Math.random() * Math.PI * 2;
|
|
83
|
+
const distance = Math.sqrt(Math.random());
|
|
84
|
+
return withPoint(
|
|
85
|
+
point,
|
|
86
|
+
x + Math.cos(angle) * radiusX * distance,
|
|
87
|
+
y + Math.sin(angle) * radiusY * distance
|
|
88
|
+
);
|
|
89
|
+
},
|
|
90
|
+
getPoints: (quantity = 1) => {
|
|
91
|
+
const count = Math.max(1, quantity);
|
|
92
|
+
return Array.from({ length: count }, (_, index) => {
|
|
93
|
+
const angle = index / count * Math.PI * 2;
|
|
94
|
+
return { x: x + Math.cos(angle) * radiusX, y: y + Math.sin(angle) * radiusY };
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
function createLineSource(x, y, endX, endY) {
|
|
100
|
+
return {
|
|
101
|
+
x,
|
|
102
|
+
y,
|
|
103
|
+
contains: (px, py) => {
|
|
104
|
+
const lengthSquared = (endX - x) ** 2 + (endY - y) ** 2;
|
|
105
|
+
if (lengthSquared === 0) return px === x && py === y;
|
|
106
|
+
const progress = Math.max(
|
|
107
|
+
0,
|
|
108
|
+
Math.min(1, ((px - x) * (endX - x) + (py - y) * (endY - y)) / lengthSquared)
|
|
109
|
+
);
|
|
110
|
+
const closestX = x + progress * (endX - x);
|
|
111
|
+
const closestY = y + progress * (endY - y);
|
|
112
|
+
return Math.hypot(px - closestX, py - closestY) <= 0.5;
|
|
113
|
+
},
|
|
114
|
+
getRandomPoint: (point) => {
|
|
115
|
+
const progress = Math.random();
|
|
116
|
+
return withPoint(point, x + (endX - x) * progress, y + (endY - y) * progress);
|
|
117
|
+
},
|
|
118
|
+
getPoints: (quantity = 1) => {
|
|
119
|
+
const count = Math.max(1, quantity);
|
|
120
|
+
return Array.from({ length: count }, (_, index) => {
|
|
121
|
+
const progress = count === 1 ? 0 : index / (count - 1);
|
|
122
|
+
return { x: x + (endX - x) * progress, y: y + (endY - y) * progress };
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
function buildZoneSource(zone, fallbackSize) {
|
|
128
|
+
const baseX = zone.x ?? 0;
|
|
129
|
+
const baseY = zone.y ?? 0;
|
|
130
|
+
const { width, height } = resolveZoneSize(zone, fallbackSize);
|
|
131
|
+
switch (zone.shape) {
|
|
132
|
+
case "rect":
|
|
133
|
+
return createRectSource(baseX, baseY, width ?? 1, height ?? 1);
|
|
134
|
+
case "circle":
|
|
135
|
+
return createCircleSource(baseX, baseY, zone.radius ?? 1);
|
|
136
|
+
case "ellipse":
|
|
137
|
+
return createEllipseSource(baseX, baseY, width ?? 1, height ?? 1);
|
|
138
|
+
case "line":
|
|
139
|
+
return createLineSource(
|
|
140
|
+
baseX,
|
|
141
|
+
baseY,
|
|
142
|
+
zone.endX ?? baseX + (width ?? 1),
|
|
143
|
+
zone.endY ?? baseY + (height ?? 1)
|
|
144
|
+
);
|
|
145
|
+
default:
|
|
146
|
+
return void 0;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
function getTransformOwner(value) {
|
|
150
|
+
if (!value || typeof value !== "object") return void 0;
|
|
151
|
+
if (typeof value.getWorldTransformMatrix !== "function") {
|
|
152
|
+
return void 0;
|
|
153
|
+
}
|
|
154
|
+
return value;
|
|
155
|
+
}
|
|
156
|
+
function createLocalDeathZoneSource(source, owner) {
|
|
157
|
+
const transformOwner = getTransformOwner(owner);
|
|
158
|
+
if (!transformOwner) return source;
|
|
159
|
+
return {
|
|
160
|
+
...source,
|
|
161
|
+
contains: (worldX, worldY) => {
|
|
162
|
+
const matrix = transformOwner.getWorldTransformMatrix?.();
|
|
163
|
+
if (!matrix) return source.contains(worldX, worldY);
|
|
164
|
+
const localPoint = matrix.applyInverse(worldX, worldY);
|
|
165
|
+
return source.contains(localPoint.x, localPoint.y);
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
function buildEmitZone(zone, fallbackSize = {}) {
|
|
170
|
+
const type = zone.type ?? "random";
|
|
171
|
+
const source = buildZoneSource(zone, fallbackSize);
|
|
172
|
+
if (!source) return void 0;
|
|
173
|
+
return { type, source };
|
|
174
|
+
}
|
|
175
|
+
function buildEmitZoneFromLayout(zone, width, height) {
|
|
176
|
+
const fallback = {};
|
|
177
|
+
const resolvedWidth = resolveNumericSize(width);
|
|
178
|
+
const resolvedHeight = resolveNumericSize(height);
|
|
179
|
+
if (resolvedWidth !== void 0) fallback.width = resolvedWidth;
|
|
180
|
+
if (resolvedHeight !== void 0) fallback.height = resolvedHeight;
|
|
181
|
+
return buildEmitZone(zone, fallback);
|
|
182
|
+
}
|
|
183
|
+
function buildDeathZone(zone, fallbackSize = {}, owner) {
|
|
184
|
+
const type = zone.mode ?? "onEnter";
|
|
185
|
+
const source = buildZoneSource(zone, fallbackSize);
|
|
186
|
+
if (!source) return void 0;
|
|
187
|
+
return { type, source: createLocalDeathZoneSource(source, owner) };
|
|
188
|
+
}
|
|
189
|
+
function buildDeathZonesFromLayout(zones, width, height, owner) {
|
|
190
|
+
if (!zones) return void 0;
|
|
191
|
+
const list = Array.isArray(zones) ? zones : [zones];
|
|
192
|
+
const fallback = {};
|
|
193
|
+
const resolvedWidth = resolveNumericSize(width);
|
|
194
|
+
const resolvedHeight = resolveNumericSize(height);
|
|
195
|
+
if (resolvedWidth !== void 0) fallback.width = resolvedWidth;
|
|
196
|
+
if (resolvedHeight !== void 0) fallback.height = resolvedHeight;
|
|
197
|
+
const deathZones = list.map((zone) => buildDeathZone(zone, fallback, owner)).filter((zone) => Boolean(zone));
|
|
198
|
+
return deathZones.length > 0 ? deathZones : void 0;
|
|
199
|
+
}
|
|
200
|
+
export {
|
|
201
|
+
buildDeathZonesFromLayout,
|
|
202
|
+
buildEmitZone,
|
|
203
|
+
buildEmitZoneFromLayout
|
|
204
|
+
};
|
|
205
|
+
//# sourceMappingURL=emit-zone.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"emit-zone.js","sources":["../../src/particles/emit-zone.ts"],"sourcesContent":["/**\n * Emit zone helpers for particle emitters\n */\nimport type { SizeValue } from '../core-props'\n\n/**\n * Supported zone shapes\n */\nexport type ParticleZoneShape = 'rect' | 'circle' | 'ellipse' | 'line'\n\n/**\n * Supported death zone modes\n */\nexport type ParticleDeathZoneMode = 'onEnter' | 'onLeave'\n\ntype ZoneConfigBase = {\n shape: ParticleZoneShape\n width?: number\n height?: number\n radius?: number\n x?: number\n y?: number\n endX?: number\n endY?: number\n}\n\n/**\n * Emit zone config\n */\nexport interface ParticleZoneConfig extends ZoneConfigBase {\n type?: 'random' | 'edge'\n}\n\n/**\n * Death zone config\n * Death zones use particle world positions for evaluation,\n * but coordinates should be specified relative to the emitter position\n */\nexport interface ParticleDeathZoneConfig extends ZoneConfigBase {\n /**\n * Death zone mode - evaluated using particle world positions.\n * - onEnter: remove particles when they enter the zone.\n * - onLeave: remove particles when they leave the zone.\n */\n mode?: ParticleDeathZoneMode\n}\n\n/**\n * @deprecated Use ParticleDeathZoneConfig.\n */\nexport type ParticleExclusionZoneConfig = ParticleDeathZoneConfig\n\ntype PointLike = { x: number; y: number }\ntype TransformMatrixLike = {\n applyInverse: (x: number, y: number) => PointLike\n}\nexport type ParticleZoneTransformOwner = {\n getWorldTransformMatrix?: () => TransformMatrixLike\n}\n\nexport type ParticleZoneSource = {\n x?: number\n y?: number\n width?: number\n height?: number\n radius?: number\n contains: (x: number, y: number) => boolean\n getRandomPoint: (point?: PointLike) => PointLike\n getPoints: (quantity?: number, stepRate?: number) => PointLike[]\n}\n\nexport type EmitZoneConfig = {\n type: 'random' | 'edge'\n source: ParticleZoneSource\n}\n\nexport type DeathZoneConfig = {\n type: ParticleDeathZoneMode\n source: ParticleZoneSource\n}\n\ntype ZoneSize = { width?: number; height?: number }\n\nfunction resolveNumericSize(value?: SizeValue): number | undefined {\n return typeof value === 'number' ? value : undefined\n}\n\nfunction resolveZoneSize(zone: ZoneConfigBase, fallback: ZoneSize): ZoneSize {\n const size: ZoneSize = {}\n const width = zone.width ?? fallback.width\n const height = zone.height ?? fallback.height\n if (width !== undefined) size.width = width\n if (height !== undefined) size.height = height\n return size\n}\n\nfunction withPoint(point: PointLike | undefined, x: number, y: number): PointLike {\n if (point) {\n point.x = x\n point.y = y\n return point\n }\n\n return { x, y }\n}\n\nfunction createRectSource(x: number, y: number, width: number, height: number): ParticleZoneSource {\n return {\n x,\n y,\n width,\n height,\n contains: (px, py) => px >= x && px <= x + width && py >= y && py <= y + height,\n getRandomPoint: (point) =>\n withPoint(point, x + Math.random() * width, y + Math.random() * height),\n getPoints: (quantity = 1) => {\n const count = Math.max(1, quantity)\n return Array.from({ length: count }, (_, index) => {\n const progress = count === 1 ? 0 : index / (count - 1)\n const perimeter = 2 * (width + height)\n const distance = progress * perimeter\n\n if (distance <= width) return { x: x + distance, y }\n if (distance <= width + height) return { x: x + width, y: y + distance - width }\n if (distance <= width * 2 + height) {\n return { x: x + width - (distance - width - height), y: y + height }\n }\n return { x, y: y + height - (distance - width * 2 - height) }\n })\n },\n }\n}\n\nfunction createCircleSource(x: number, y: number, radius: number): ParticleZoneSource {\n return {\n x,\n y,\n radius,\n contains: (px, py) => {\n const dx = px - x\n const dy = py - y\n return dx * dx + dy * dy <= radius * radius\n },\n getRandomPoint: (point) => {\n const angle = Math.random() * Math.PI * 2\n const distance = Math.sqrt(Math.random()) * radius\n return withPoint(point, x + Math.cos(angle) * distance, y + Math.sin(angle) * distance)\n },\n getPoints: (quantity = 1) => {\n const count = Math.max(1, quantity)\n return Array.from({ length: count }, (_, index) => {\n const angle = (index / count) * Math.PI * 2\n return { x: x + Math.cos(angle) * radius, y: y + Math.sin(angle) * radius }\n })\n },\n }\n}\n\nfunction createEllipseSource(\n x: number,\n y: number,\n width: number,\n height: number\n): ParticleZoneSource {\n const radiusX = width / 2\n const radiusY = height / 2\n\n return {\n x,\n y,\n width,\n height,\n contains: (px, py) => {\n const dx = (px - x) / radiusX\n const dy = (py - y) / radiusY\n return dx * dx + dy * dy <= 1\n },\n getRandomPoint: (point) => {\n const angle = Math.random() * Math.PI * 2\n const distance = Math.sqrt(Math.random())\n return withPoint(\n point,\n x + Math.cos(angle) * radiusX * distance,\n y + Math.sin(angle) * radiusY * distance\n )\n },\n getPoints: (quantity = 1) => {\n const count = Math.max(1, quantity)\n return Array.from({ length: count }, (_, index) => {\n const angle = (index / count) * Math.PI * 2\n return { x: x + Math.cos(angle) * radiusX, y: y + Math.sin(angle) * radiusY }\n })\n },\n }\n}\n\nfunction createLineSource(x: number, y: number, endX: number, endY: number): ParticleZoneSource {\n return {\n x,\n y,\n contains: (px, py) => {\n const lengthSquared = (endX - x) ** 2 + (endY - y) ** 2\n if (lengthSquared === 0) return px === x && py === y\n\n const progress = Math.max(\n 0,\n Math.min(1, ((px - x) * (endX - x) + (py - y) * (endY - y)) / lengthSquared)\n )\n const closestX = x + progress * (endX - x)\n const closestY = y + progress * (endY - y)\n return Math.hypot(px - closestX, py - closestY) <= 0.5\n },\n getRandomPoint: (point) => {\n const progress = Math.random()\n return withPoint(point, x + (endX - x) * progress, y + (endY - y) * progress)\n },\n getPoints: (quantity = 1) => {\n const count = Math.max(1, quantity)\n return Array.from({ length: count }, (_, index) => {\n const progress = count === 1 ? 0 : index / (count - 1)\n return { x: x + (endX - x) * progress, y: y + (endY - y) * progress }\n })\n },\n }\n}\n\nfunction buildZoneSource(\n zone: ZoneConfigBase,\n fallbackSize: ZoneSize\n): ParticleZoneSource | undefined {\n const baseX = zone.x ?? 0\n const baseY = zone.y ?? 0\n const { width, height } = resolveZoneSize(zone, fallbackSize)\n\n switch (zone.shape) {\n case 'rect':\n return createRectSource(baseX, baseY, width ?? 1, height ?? 1)\n case 'circle':\n return createCircleSource(baseX, baseY, zone.radius ?? 1)\n case 'ellipse':\n return createEllipseSource(baseX, baseY, width ?? 1, height ?? 1)\n case 'line':\n return createLineSource(\n baseX,\n baseY,\n zone.endX ?? baseX + (width ?? 1),\n zone.endY ?? baseY + (height ?? 1)\n )\n default:\n return undefined\n }\n}\n\nfunction getTransformOwner(value: unknown): ParticleZoneTransformOwner | undefined {\n if (!value || typeof value !== 'object') return undefined\n if (typeof (value as ParticleZoneTransformOwner).getWorldTransformMatrix !== 'function') {\n return undefined\n }\n return value as ParticleZoneTransformOwner\n}\n\nfunction createLocalDeathZoneSource(\n source: ParticleZoneSource,\n owner?: unknown\n): ParticleZoneSource {\n const transformOwner = getTransformOwner(owner)\n if (!transformOwner) return source\n\n return {\n ...source,\n contains: (worldX, worldY) => {\n const matrix = transformOwner.getWorldTransformMatrix?.()\n if (!matrix) return source.contains(worldX, worldY)\n\n const localPoint = matrix.applyInverse(worldX, worldY)\n return source.contains(localPoint.x, localPoint.y)\n },\n }\n}\n\n/**\n * Build a Phaser emitZone config from a lightweight zone definition\n */\nexport function buildEmitZone(\n zone: ParticleZoneConfig,\n fallbackSize: ZoneSize = {}\n): EmitZoneConfig | undefined {\n const type = zone.type ?? 'random'\n const source = buildZoneSource(zone, fallbackSize)\n\n if (!source) return undefined\n\n return { type, source }\n}\n\n/**\n * Create an emit zone using layout size as a fallback\n */\nexport function buildEmitZoneFromLayout(\n zone: ParticleZoneConfig,\n width?: SizeValue,\n height?: SizeValue\n): EmitZoneConfig | undefined {\n const fallback: ZoneSize = {}\n const resolvedWidth = resolveNumericSize(width)\n const resolvedHeight = resolveNumericSize(height)\n if (resolvedWidth !== undefined) fallback.width = resolvedWidth\n if (resolvedHeight !== undefined) fallback.height = resolvedHeight\n return buildEmitZone(zone, fallback)\n}\n\n/**\n * Build a Phaser deathZone config from a lightweight death zone definition\n */\nfunction buildDeathZone(\n zone: ParticleDeathZoneConfig,\n fallbackSize: ZoneSize = {},\n owner?: unknown\n): DeathZoneConfig | undefined {\n const type = zone.mode ?? 'onEnter'\n const source = buildZoneSource(zone, fallbackSize)\n\n if (!source) return undefined\n\n return { type, source: createLocalDeathZoneSource(source, owner) }\n}\n\n/**\n * Create death zones using layout size as a fallback\n */\nexport function buildDeathZonesFromLayout(\n zones: ParticleDeathZoneConfig | ParticleDeathZoneConfig[] | undefined,\n width?: SizeValue,\n height?: SizeValue,\n owner?: unknown\n): DeathZoneConfig[] | undefined {\n if (!zones) return undefined\n const list = Array.isArray(zones) ? zones : [zones]\n const fallback: ZoneSize = {}\n const resolvedWidth = resolveNumericSize(width)\n const resolvedHeight = resolveNumericSize(height)\n if (resolvedWidth !== undefined) fallback.width = resolvedWidth\n if (resolvedHeight !== undefined) fallback.height = resolvedHeight\n\n const deathZones = list\n .map((zone) => buildDeathZone(zone, fallback, owner))\n .filter((zone): zone is DeathZoneConfig => Boolean(zone))\n\n return deathZones.length > 0 ? deathZones : undefined\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Particle system utilities and presets
|
|
3
|
+
*/
|
|
4
|
+
export { PARTICLE_PRESET_REGISTRY, resolveParticlePreset, type BuiltInParticlePresetName, type ParticleEmitterConfig, type ParticlePresetDefinition, type ParticlePresetExtensions, type ParticlePresetName, } from './preset-registry';
|
|
5
|
+
export { buildDeathZonesFromLayout, buildEmitZone, buildEmitZoneFromLayout, type DeathZoneConfig, type EmitZoneConfig, type ParticleDeathZoneConfig, type ParticleDeathZoneMode, type ParticleExclusionZoneConfig, type ParticleZoneTransformOwner, type ParticleZoneSource, type ParticleZoneConfig, type ParticleZoneShape, } from './emit-zone';
|
|
6
|
+
export type { ParticleEmitter, ParticleEmitterManagerLike, ParticlesHandle } from './particle-types';
|
|
7
|
+
export { useParticles } from './use-particles';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/particles/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,kBAAkB,GACxB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,yBAAyB,EACzB,aAAa,EACb,uBAAuB,EACvB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,EAChC,KAAK,0BAA0B,EAC/B,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,GACvB,MAAM,aAAa,CAAA;AACpB,YAAY,EAAE,eAAe,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACpG,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Local particle types to avoid reliance on Phaser type exports
|
|
3
|
+
*/
|
|
4
|
+
import type * as Phaser from 'phaser';
|
|
5
|
+
export type ParticleEmitter = Phaser.GameObjects.Particles.ParticleEmitter;
|
|
6
|
+
export type ParticleEmitterManagerLike = Phaser.GameObjects.GameObject & {
|
|
7
|
+
x: number;
|
|
8
|
+
y: number;
|
|
9
|
+
emitters?: ParticleEmitter[] | {
|
|
10
|
+
list?: ParticleEmitter[];
|
|
11
|
+
};
|
|
12
|
+
createEmitter?: (config: unknown) => ParticleEmitter | void;
|
|
13
|
+
setTexture?: (key: string, frame?: string | number) => void;
|
|
14
|
+
setPosition?: (x: number, y: number) => void;
|
|
15
|
+
setScale: (x: number, y?: number) => void;
|
|
16
|
+
setRotation: (rotation: number) => void;
|
|
17
|
+
setDepth: (depth: number) => void;
|
|
18
|
+
setAlpha: (alpha: number) => void;
|
|
19
|
+
visible: boolean;
|
|
20
|
+
__emitter?: ParticleEmitter | null;
|
|
21
|
+
destroy: () => void;
|
|
22
|
+
scene: Phaser.Scene;
|
|
23
|
+
};
|
|
24
|
+
export type ParticlesHandle = ParticleEmitter | ParticleEmitterManagerLike;
|
|
25
|
+
//# sourceMappingURL=particle-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"particle-types.d.ts","sourceRoot":"","sources":["../../src/particles/particle-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,MAAM,QAAQ,CAAA;AAErC,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,eAAe,CAAA;AAE1E,MAAM,MAAM,0BAA0B,GAAG,MAAM,CAAC,WAAW,CAAC,UAAU,GAAG;IACvE,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,QAAQ,CAAC,EAAE,eAAe,EAAE,GAAG;QAAE,IAAI,CAAC,EAAE,eAAe,EAAE,CAAA;KAAE,CAAA;IAC3D,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,eAAe,GAAG,IAAI,CAAA;IAC3D,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAA;IAC3D,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5C,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IACvC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,CAAC,EAAE,eAAe,GAAG,IAAI,CAAA;IAClC,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,eAAe,GAAG,eAAe,GAAG,0BAA0B,CAAA"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const PARTICLE_PRESET_REGISTRY = {
|
|
4
|
+
explosion: {
|
|
5
|
+
speed: { min: 120, max: 320 },
|
|
6
|
+
scale: { start: 1, end: 0 },
|
|
7
|
+
alpha: { start: 1, end: 0 },
|
|
8
|
+
lifespan: 600,
|
|
9
|
+
quantity: 24,
|
|
10
|
+
blendMode: "ADD"
|
|
11
|
+
},
|
|
12
|
+
trail: {
|
|
13
|
+
speed: { min: 30, max: 80 },
|
|
14
|
+
scale: { start: 0.6, end: 0 },
|
|
15
|
+
alpha: { start: 0.8, end: 0 },
|
|
16
|
+
lifespan: 700,
|
|
17
|
+
frequency: 40
|
|
18
|
+
},
|
|
19
|
+
rain: {
|
|
20
|
+
speed: { min: 320, max: 520 },
|
|
21
|
+
angle: { min: 80, max: 100 },
|
|
22
|
+
scale: { start: 0.5, end: 0.2 },
|
|
23
|
+
alpha: { start: 0.6, end: 0.1 },
|
|
24
|
+
lifespan: 1e3,
|
|
25
|
+
frequency: 20
|
|
26
|
+
},
|
|
27
|
+
snow: {
|
|
28
|
+
speed: { min: 40, max: 120 },
|
|
29
|
+
angle: { min: 80, max: 100 },
|
|
30
|
+
gravityY: 8,
|
|
31
|
+
scale: { start: 0.6, end: 0.6 },
|
|
32
|
+
alpha: { start: 0.8, end: 0.3 },
|
|
33
|
+
lifespan: 2600,
|
|
34
|
+
frequency: 80
|
|
35
|
+
},
|
|
36
|
+
sparkle: {
|
|
37
|
+
speed: { min: 20, max: 60 },
|
|
38
|
+
scale: { start: 0.4, end: 0 },
|
|
39
|
+
alpha: { start: 1, end: 0 },
|
|
40
|
+
lifespan: 500,
|
|
41
|
+
frequency: 60,
|
|
42
|
+
blendMode: "ADD"
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
function resolveParticlePreset(preset, config = {}) {
|
|
46
|
+
const base = preset ? PARTICLE_PRESET_REGISTRY[preset] : void 0;
|
|
47
|
+
if (preset && !base) {
|
|
48
|
+
console.warn(`[Particles] Preset "${String(preset)}" not found in registry`);
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
...base ?? {},
|
|
52
|
+
...config
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
exports.PARTICLE_PRESET_REGISTRY = PARTICLE_PRESET_REGISTRY;
|
|
56
|
+
exports.resolveParticlePreset = resolveParticlePreset;
|
|
57
|
+
//# sourceMappingURL=preset-registry.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preset-registry.cjs","sources":["../../src/particles/preset-registry.ts"],"sourcesContent":["/**\n * Particle preset registry - typed presets with extension support\n */\nimport type * as Phaser from 'phaser'\n\n/**\n * Built-in particle preset names\n */\nexport type BuiltInParticlePresetName = 'explosion' | 'trail' | 'rain' | 'snow' | 'sparkle'\n\n/**\n * Extension point for custom particle preset names\n * Use declaration merging to add custom presets:\n * @example\n * ```typescript\n * declare module '@number10/phaserjsx' {\n * interface ParticlePresetExtensions {\n * myPreset: 'myPreset'\n * }\n * }\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface ParticlePresetExtensions {}\n\n/**\n * Available particle preset names (built-in + extensions)\n */\nexport type ParticlePresetName =\n | BuiltInParticlePresetName\n | (keyof ParticlePresetExtensions extends never ? never : keyof ParticlePresetExtensions)\n\n/**\n * Phaser emitter config alias\n */\nexport type ParticleEmitterConfig = Phaser.Types.GameObjects.Particles.ParticleEmitterConfig\n\n/**\n * Preset definition for component/theme props\n */\nexport interface ParticlePresetDefinition {\n preset?: ParticlePresetName\n config?: ParticleEmitterConfig\n}\n\n/**\n * Map of built-in particle presets to emitter configs\n */\nexport const PARTICLE_PRESET_REGISTRY: Record<BuiltInParticlePresetName, ParticleEmitterConfig> = {\n explosion: {\n speed: { min: 120, max: 320 },\n scale: { start: 1, end: 0 },\n alpha: { start: 1, end: 0 },\n lifespan: 600,\n quantity: 24,\n blendMode: 'ADD',\n },\n trail: {\n speed: { min: 30, max: 80 },\n scale: { start: 0.6, end: 0 },\n alpha: { start: 0.8, end: 0 },\n lifespan: 700,\n frequency: 40,\n },\n rain: {\n speed: { min: 320, max: 520 },\n angle: { min: 80, max: 100 },\n scale: { start: 0.5, end: 0.2 },\n alpha: { start: 0.6, end: 0.1 },\n lifespan: 1000,\n frequency: 20,\n },\n snow: {\n speed: { min: 40, max: 120 },\n angle: { min: 80, max: 100 },\n gravityY: 8,\n scale: { start: 0.6, end: 0.6 },\n alpha: { start: 0.8, end: 0.3 },\n lifespan: 2600,\n frequency: 80,\n },\n sparkle: {\n speed: { min: 20, max: 60 },\n scale: { start: 0.4, end: 0 },\n alpha: { start: 1, end: 0 },\n lifespan: 500,\n frequency: 60,\n blendMode: 'ADD',\n },\n}\n\n/**\n * Resolve a preset name with optional overrides\n * @param preset - Preset name (built-in or extension)\n * @param config - Optional overrides applied last\n * @returns Resolved emitter config\n */\nexport function resolveParticlePreset(\n preset?: ParticlePresetName,\n config: ParticleEmitterConfig = {}\n): ParticleEmitterConfig {\n const base = preset ? PARTICLE_PRESET_REGISTRY[preset as BuiltInParticlePresetName] : undefined\n\n if (preset && !base) {\n console.warn(`[Particles] Preset \"${String(preset)}\" not found in registry`)\n }\n\n return {\n ...(base ?? {}),\n ...config,\n }\n}\n"],"names":[],"mappings":";;AAgDO,MAAM,2BAAqF;AAAA,EAChG,WAAW;AAAA,IACT,OAAO,EAAE,KAAK,KAAK,KAAK,IAAA;AAAA,IACxB,OAAO,EAAE,OAAO,GAAG,KAAK,EAAA;AAAA,IACxB,OAAO,EAAE,OAAO,GAAG,KAAK,EAAA;AAAA,IACxB,UAAU;AAAA,IACV,UAAU;AAAA,IACV,WAAW;AAAA,EAAA;AAAA,EAEb,OAAO;AAAA,IACL,OAAO,EAAE,KAAK,IAAI,KAAK,GAAA;AAAA,IACvB,OAAO,EAAE,OAAO,KAAK,KAAK,EAAA;AAAA,IAC1B,OAAO,EAAE,OAAO,KAAK,KAAK,EAAA;AAAA,IAC1B,UAAU;AAAA,IACV,WAAW;AAAA,EAAA;AAAA,EAEb,MAAM;AAAA,IACJ,OAAO,EAAE,KAAK,KAAK,KAAK,IAAA;AAAA,IACxB,OAAO,EAAE,KAAK,IAAI,KAAK,IAAA;AAAA,IACvB,OAAO,EAAE,OAAO,KAAK,KAAK,IAAA;AAAA,IAC1B,OAAO,EAAE,OAAO,KAAK,KAAK,IAAA;AAAA,IAC1B,UAAU;AAAA,IACV,WAAW;AAAA,EAAA;AAAA,EAEb,MAAM;AAAA,IACJ,OAAO,EAAE,KAAK,IAAI,KAAK,IAAA;AAAA,IACvB,OAAO,EAAE,KAAK,IAAI,KAAK,IAAA;AAAA,IACvB,UAAU;AAAA,IACV,OAAO,EAAE,OAAO,KAAK,KAAK,IAAA;AAAA,IAC1B,OAAO,EAAE,OAAO,KAAK,KAAK,IAAA;AAAA,IAC1B,UAAU;AAAA,IACV,WAAW;AAAA,EAAA;AAAA,EAEb,SAAS;AAAA,IACP,OAAO,EAAE,KAAK,IAAI,KAAK,GAAA;AAAA,IACvB,OAAO,EAAE,OAAO,KAAK,KAAK,EAAA;AAAA,IAC1B,OAAO,EAAE,OAAO,GAAG,KAAK,EAAA;AAAA,IACxB,UAAU;AAAA,IACV,WAAW;AAAA,IACX,WAAW;AAAA,EAAA;AAEf;AAQO,SAAS,sBACd,QACA,SAAgC,IACT;AACvB,QAAM,OAAO,SAAS,yBAAyB,MAAmC,IAAI;AAEtF,MAAI,UAAU,CAAC,MAAM;AACnB,YAAQ,KAAK,uBAAuB,OAAO,MAAM,CAAC,yBAAyB;AAAA,EAC7E;AAEA,SAAO;AAAA,IACL,GAAI,QAAQ,CAAA;AAAA,IACZ,GAAG;AAAA,EAAA;AAEP;;;"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Particle preset registry - typed presets with extension support
|
|
3
|
+
*/
|
|
4
|
+
import type * as Phaser from 'phaser';
|
|
5
|
+
/**
|
|
6
|
+
* Built-in particle preset names
|
|
7
|
+
*/
|
|
8
|
+
export type BuiltInParticlePresetName = 'explosion' | 'trail' | 'rain' | 'snow' | 'sparkle';
|
|
9
|
+
/**
|
|
10
|
+
* Extension point for custom particle preset names
|
|
11
|
+
* Use declaration merging to add custom presets:
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* declare module '@number10/phaserjsx' {
|
|
15
|
+
* interface ParticlePresetExtensions {
|
|
16
|
+
* myPreset: 'myPreset'
|
|
17
|
+
* }
|
|
18
|
+
* }
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export interface ParticlePresetExtensions {
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Available particle preset names (built-in + extensions)
|
|
25
|
+
*/
|
|
26
|
+
export type ParticlePresetName = BuiltInParticlePresetName | (keyof ParticlePresetExtensions extends never ? never : keyof ParticlePresetExtensions);
|
|
27
|
+
/**
|
|
28
|
+
* Phaser emitter config alias
|
|
29
|
+
*/
|
|
30
|
+
export type ParticleEmitterConfig = Phaser.Types.GameObjects.Particles.ParticleEmitterConfig;
|
|
31
|
+
/**
|
|
32
|
+
* Preset definition for component/theme props
|
|
33
|
+
*/
|
|
34
|
+
export interface ParticlePresetDefinition {
|
|
35
|
+
preset?: ParticlePresetName;
|
|
36
|
+
config?: ParticleEmitterConfig;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Map of built-in particle presets to emitter configs
|
|
40
|
+
*/
|
|
41
|
+
export declare const PARTICLE_PRESET_REGISTRY: Record<BuiltInParticlePresetName, ParticleEmitterConfig>;
|
|
42
|
+
/**
|
|
43
|
+
* Resolve a preset name with optional overrides
|
|
44
|
+
* @param preset - Preset name (built-in or extension)
|
|
45
|
+
* @param config - Optional overrides applied last
|
|
46
|
+
* @returns Resolved emitter config
|
|
47
|
+
*/
|
|
48
|
+
export declare function resolveParticlePreset(preset?: ParticlePresetName, config?: ParticleEmitterConfig): ParticleEmitterConfig;
|
|
49
|
+
//# sourceMappingURL=preset-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preset-registry.d.ts","sourceRoot":"","sources":["../../src/particles/preset-registry.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,KAAK,MAAM,MAAM,QAAQ,CAAA;AAErC;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;AAE3F;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,wBAAwB;CAAG;AAE5C;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAC1B,yBAAyB,GACzB,CAAC,MAAM,wBAAwB,SAAS,KAAK,GAAG,KAAK,GAAG,MAAM,wBAAwB,CAAC,CAAA;AAE3F;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,qBAAqB,CAAA;AAE5F;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,MAAM,CAAC,EAAE,kBAAkB,CAAA;IAC3B,MAAM,CAAC,EAAE,qBAAqB,CAAA;CAC/B;AAED;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,yBAAyB,EAAE,qBAAqB,CAyC7F,CAAA;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,CAAC,EAAE,kBAAkB,EAC3B,MAAM,GAAE,qBAA0B,GACjC,qBAAqB,CAWvB"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
const PARTICLE_PRESET_REGISTRY = {
|
|
2
|
+
explosion: {
|
|
3
|
+
speed: { min: 120, max: 320 },
|
|
4
|
+
scale: { start: 1, end: 0 },
|
|
5
|
+
alpha: { start: 1, end: 0 },
|
|
6
|
+
lifespan: 600,
|
|
7
|
+
quantity: 24,
|
|
8
|
+
blendMode: "ADD"
|
|
9
|
+
},
|
|
10
|
+
trail: {
|
|
11
|
+
speed: { min: 30, max: 80 },
|
|
12
|
+
scale: { start: 0.6, end: 0 },
|
|
13
|
+
alpha: { start: 0.8, end: 0 },
|
|
14
|
+
lifespan: 700,
|
|
15
|
+
frequency: 40
|
|
16
|
+
},
|
|
17
|
+
rain: {
|
|
18
|
+
speed: { min: 320, max: 520 },
|
|
19
|
+
angle: { min: 80, max: 100 },
|
|
20
|
+
scale: { start: 0.5, end: 0.2 },
|
|
21
|
+
alpha: { start: 0.6, end: 0.1 },
|
|
22
|
+
lifespan: 1e3,
|
|
23
|
+
frequency: 20
|
|
24
|
+
},
|
|
25
|
+
snow: {
|
|
26
|
+
speed: { min: 40, max: 120 },
|
|
27
|
+
angle: { min: 80, max: 100 },
|
|
28
|
+
gravityY: 8,
|
|
29
|
+
scale: { start: 0.6, end: 0.6 },
|
|
30
|
+
alpha: { start: 0.8, end: 0.3 },
|
|
31
|
+
lifespan: 2600,
|
|
32
|
+
frequency: 80
|
|
33
|
+
},
|
|
34
|
+
sparkle: {
|
|
35
|
+
speed: { min: 20, max: 60 },
|
|
36
|
+
scale: { start: 0.4, end: 0 },
|
|
37
|
+
alpha: { start: 1, end: 0 },
|
|
38
|
+
lifespan: 500,
|
|
39
|
+
frequency: 60,
|
|
40
|
+
blendMode: "ADD"
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
function resolveParticlePreset(preset, config = {}) {
|
|
44
|
+
const base = preset ? PARTICLE_PRESET_REGISTRY[preset] : void 0;
|
|
45
|
+
if (preset && !base) {
|
|
46
|
+
console.warn(`[Particles] Preset "${String(preset)}" not found in registry`);
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
...base ?? {},
|
|
50
|
+
...config
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
export {
|
|
54
|
+
PARTICLE_PRESET_REGISTRY,
|
|
55
|
+
resolveParticlePreset
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=preset-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preset-registry.js","sources":["../../src/particles/preset-registry.ts"],"sourcesContent":["/**\n * Particle preset registry - typed presets with extension support\n */\nimport type * as Phaser from 'phaser'\n\n/**\n * Built-in particle preset names\n */\nexport type BuiltInParticlePresetName = 'explosion' | 'trail' | 'rain' | 'snow' | 'sparkle'\n\n/**\n * Extension point for custom particle preset names\n * Use declaration merging to add custom presets:\n * @example\n * ```typescript\n * declare module '@number10/phaserjsx' {\n * interface ParticlePresetExtensions {\n * myPreset: 'myPreset'\n * }\n * }\n * ```\n */\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface ParticlePresetExtensions {}\n\n/**\n * Available particle preset names (built-in + extensions)\n */\nexport type ParticlePresetName =\n | BuiltInParticlePresetName\n | (keyof ParticlePresetExtensions extends never ? never : keyof ParticlePresetExtensions)\n\n/**\n * Phaser emitter config alias\n */\nexport type ParticleEmitterConfig = Phaser.Types.GameObjects.Particles.ParticleEmitterConfig\n\n/**\n * Preset definition for component/theme props\n */\nexport interface ParticlePresetDefinition {\n preset?: ParticlePresetName\n config?: ParticleEmitterConfig\n}\n\n/**\n * Map of built-in particle presets to emitter configs\n */\nexport const PARTICLE_PRESET_REGISTRY: Record<BuiltInParticlePresetName, ParticleEmitterConfig> = {\n explosion: {\n speed: { min: 120, max: 320 },\n scale: { start: 1, end: 0 },\n alpha: { start: 1, end: 0 },\n lifespan: 600,\n quantity: 24,\n blendMode: 'ADD',\n },\n trail: {\n speed: { min: 30, max: 80 },\n scale: { start: 0.6, end: 0 },\n alpha: { start: 0.8, end: 0 },\n lifespan: 700,\n frequency: 40,\n },\n rain: {\n speed: { min: 320, max: 520 },\n angle: { min: 80, max: 100 },\n scale: { start: 0.5, end: 0.2 },\n alpha: { start: 0.6, end: 0.1 },\n lifespan: 1000,\n frequency: 20,\n },\n snow: {\n speed: { min: 40, max: 120 },\n angle: { min: 80, max: 100 },\n gravityY: 8,\n scale: { start: 0.6, end: 0.6 },\n alpha: { start: 0.8, end: 0.3 },\n lifespan: 2600,\n frequency: 80,\n },\n sparkle: {\n speed: { min: 20, max: 60 },\n scale: { start: 0.4, end: 0 },\n alpha: { start: 1, end: 0 },\n lifespan: 500,\n frequency: 60,\n blendMode: 'ADD',\n },\n}\n\n/**\n * Resolve a preset name with optional overrides\n * @param preset - Preset name (built-in or extension)\n * @param config - Optional overrides applied last\n * @returns Resolved emitter config\n */\nexport function resolveParticlePreset(\n preset?: ParticlePresetName,\n config: ParticleEmitterConfig = {}\n): ParticleEmitterConfig {\n const base = preset ? PARTICLE_PRESET_REGISTRY[preset as BuiltInParticlePresetName] : undefined\n\n if (preset && !base) {\n console.warn(`[Particles] Preset \"${String(preset)}\" not found in registry`)\n }\n\n return {\n ...(base ?? {}),\n ...config,\n }\n}\n"],"names":[],"mappings":"AAgDO,MAAM,2BAAqF;AAAA,EAChG,WAAW;AAAA,IACT,OAAO,EAAE,KAAK,KAAK,KAAK,IAAA;AAAA,IACxB,OAAO,EAAE,OAAO,GAAG,KAAK,EAAA;AAAA,IACxB,OAAO,EAAE,OAAO,GAAG,KAAK,EAAA;AAAA,IACxB,UAAU;AAAA,IACV,UAAU;AAAA,IACV,WAAW;AAAA,EAAA;AAAA,EAEb,OAAO;AAAA,IACL,OAAO,EAAE,KAAK,IAAI,KAAK,GAAA;AAAA,IACvB,OAAO,EAAE,OAAO,KAAK,KAAK,EAAA;AAAA,IAC1B,OAAO,EAAE,OAAO,KAAK,KAAK,EAAA;AAAA,IAC1B,UAAU;AAAA,IACV,WAAW;AAAA,EAAA;AAAA,EAEb,MAAM;AAAA,IACJ,OAAO,EAAE,KAAK,KAAK,KAAK,IAAA;AAAA,IACxB,OAAO,EAAE,KAAK,IAAI,KAAK,IAAA;AAAA,IACvB,OAAO,EAAE,OAAO,KAAK,KAAK,IAAA;AAAA,IAC1B,OAAO,EAAE,OAAO,KAAK,KAAK,IAAA;AAAA,IAC1B,UAAU;AAAA,IACV,WAAW;AAAA,EAAA;AAAA,EAEb,MAAM;AAAA,IACJ,OAAO,EAAE,KAAK,IAAI,KAAK,IAAA;AAAA,IACvB,OAAO,EAAE,KAAK,IAAI,KAAK,IAAA;AAAA,IACvB,UAAU;AAAA,IACV,OAAO,EAAE,OAAO,KAAK,KAAK,IAAA;AAAA,IAC1B,OAAO,EAAE,OAAO,KAAK,KAAK,IAAA;AAAA,IAC1B,UAAU;AAAA,IACV,WAAW;AAAA,EAAA;AAAA,EAEb,SAAS;AAAA,IACP,OAAO,EAAE,KAAK,IAAI,KAAK,GAAA;AAAA,IACvB,OAAO,EAAE,OAAO,KAAK,KAAK,EAAA;AAAA,IAC1B,OAAO,EAAE,OAAO,GAAG,KAAK,EAAA;AAAA,IACxB,UAAU;AAAA,IACV,WAAW;AAAA,IACX,WAAW;AAAA,EAAA;AAEf;AAQO,SAAS,sBACd,QACA,SAAgC,IACT;AACvB,QAAM,OAAO,SAAS,yBAAyB,MAAmC,IAAI;AAEtF,MAAI,UAAU,CAAC,MAAM;AACnB,YAAQ,KAAK,uBAAuB,OAAO,MAAM,CAAC,yBAAyB;AAAA,EAC7E;AAEA,SAAO;AAAA,IACL,GAAI,QAAQ,CAAA;AAAA,IACZ,GAAG;AAAA,EAAA;AAEP;"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
require("../hooks.cjs");
|
|
4
|
+
const emitZone = require("./emit-zone.cjs");
|
|
5
|
+
const utils = require("./utils.cjs");
|
|
6
|
+
const jsxCore = require("@number10/jsx-core");
|
|
7
|
+
function useParticles(ref) {
|
|
8
|
+
const getManager = jsxCore.useCallback(() => ref.current ?? null, [ref]);
|
|
9
|
+
const getEmitter = jsxCore.useCallback(() => {
|
|
10
|
+
const current = ref.current;
|
|
11
|
+
if (!current) return null;
|
|
12
|
+
if (utils.isParticleEmitter(current)) return current;
|
|
13
|
+
return utils.getFirstEmitter(current);
|
|
14
|
+
}, [ref]);
|
|
15
|
+
const start = jsxCore.useCallback(() => {
|
|
16
|
+
const emitter = getEmitter();
|
|
17
|
+
emitter?.start();
|
|
18
|
+
}, [getEmitter]);
|
|
19
|
+
const stop = jsxCore.useCallback(() => {
|
|
20
|
+
const emitter = getEmitter();
|
|
21
|
+
emitter?.stop();
|
|
22
|
+
}, [getEmitter]);
|
|
23
|
+
const explode = jsxCore.useCallback(
|
|
24
|
+
(count, x, y) => {
|
|
25
|
+
const emitter = getEmitter();
|
|
26
|
+
emitter?.explode(count, x, y);
|
|
27
|
+
},
|
|
28
|
+
[getEmitter]
|
|
29
|
+
);
|
|
30
|
+
const setConfig = jsxCore.useCallback(
|
|
31
|
+
(config) => {
|
|
32
|
+
const emitter = getEmitter();
|
|
33
|
+
utils.applyEmitterConfig(emitter, config);
|
|
34
|
+
},
|
|
35
|
+
[getEmitter]
|
|
36
|
+
);
|
|
37
|
+
const setEmitZone = jsxCore.useCallback(
|
|
38
|
+
(zone, width, height) => {
|
|
39
|
+
const emitter = getEmitter();
|
|
40
|
+
const emitZone$1 = emitZone.buildEmitZoneFromLayout(zone, width, height);
|
|
41
|
+
utils.applyEmitZone(emitter, emitZone$1);
|
|
42
|
+
},
|
|
43
|
+
[getEmitter]
|
|
44
|
+
);
|
|
45
|
+
const setDeathZones = jsxCore.useCallback(
|
|
46
|
+
(zones, width, height) => {
|
|
47
|
+
const emitter = getEmitter();
|
|
48
|
+
const manager = getManager();
|
|
49
|
+
const deathZones = emitZone.buildDeathZonesFromLayout(zones, width, height, manager ?? void 0);
|
|
50
|
+
utils.applyDeathZone(emitter, deathZones);
|
|
51
|
+
},
|
|
52
|
+
[getEmitter, getManager]
|
|
53
|
+
);
|
|
54
|
+
return {
|
|
55
|
+
getManager,
|
|
56
|
+
getEmitter,
|
|
57
|
+
start,
|
|
58
|
+
stop,
|
|
59
|
+
explode,
|
|
60
|
+
setConfig,
|
|
61
|
+
setEmitZone,
|
|
62
|
+
setDeathZones,
|
|
63
|
+
setExcludeZones: setDeathZones
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
exports.useParticles = useParticles;
|
|
67
|
+
//# sourceMappingURL=use-particles.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-particles.cjs","sources":["../../src/particles/use-particles.ts"],"sourcesContent":["/**\n * Hook for imperative particle control\n */\nimport { useCallback } from '../hooks'\nimport type { RefObject } from '../types'\nimport {\n buildDeathZonesFromLayout,\n buildEmitZoneFromLayout,\n type ParticleDeathZoneConfig,\n type ParticleZoneConfig,\n} from './emit-zone'\nimport type { ParticleEmitter, ParticleEmitterManagerLike, ParticlesHandle } from './particle-types'\nimport type { ParticleEmitterConfig } from './preset-registry'\nimport {\n applyDeathZone,\n applyEmitZone,\n applyEmitterConfig,\n getFirstEmitter,\n isParticleEmitter,\n} from './utils'\n\nexport function useParticles(ref: RefObject<ParticlesHandle | null>): {\n getManager: () => ParticlesHandle | null\n getEmitter: () => ParticleEmitter | null\n start: () => void\n stop: () => void\n explode: (count: number, x?: number, y?: number) => void\n setConfig: (config: ParticleEmitterConfig) => void\n setEmitZone: (zone: ParticleZoneConfig, width?: number, height?: number) => void\n setDeathZones: (\n zones: ParticleDeathZoneConfig | ParticleDeathZoneConfig[],\n width?: number,\n height?: number\n ) => void\n /**\n * @deprecated Use setDeathZones.\n */\n setExcludeZones: (\n zones: ParticleDeathZoneConfig | ParticleDeathZoneConfig[],\n width?: number,\n height?: number\n ) => void\n} {\n const getManager = useCallback(() => ref.current ?? null, [ref])\n const getEmitter = useCallback(() => {\n const current = ref.current\n if (!current) return null\n if (isParticleEmitter(current)) return current\n return getFirstEmitter(current as ParticleEmitterManagerLike)\n }, [ref])\n\n const start = useCallback(() => {\n const emitter = getEmitter()\n emitter?.start()\n }, [getEmitter])\n\n const stop = useCallback(() => {\n const emitter = getEmitter()\n emitter?.stop()\n }, [getEmitter])\n\n const explode = useCallback(\n (count: number, x?: number, y?: number) => {\n const emitter = getEmitter()\n emitter?.explode(count, x, y)\n },\n [getEmitter]\n )\n\n const setConfig = useCallback(\n (config: ParticleEmitterConfig) => {\n const emitter = getEmitter()\n applyEmitterConfig(emitter, config)\n },\n [getEmitter]\n )\n\n const setEmitZone = useCallback(\n (zone: ParticleZoneConfig, width?: number, height?: number) => {\n const emitter = getEmitter()\n const emitZone = buildEmitZoneFromLayout(zone, width, height)\n applyEmitZone(emitter, emitZone)\n },\n [getEmitter]\n )\n\n const setDeathZones = useCallback(\n (\n zones: ParticleDeathZoneConfig | ParticleDeathZoneConfig[],\n width?: number,\n height?: number\n ) => {\n const emitter = getEmitter()\n const manager = getManager()\n const deathZones = buildDeathZonesFromLayout(zones, width, height, manager ?? undefined)\n applyDeathZone(emitter, deathZones)\n },\n [getEmitter, getManager]\n )\n\n return {\n getManager,\n getEmitter,\n start,\n stop,\n explode,\n setConfig,\n setEmitZone,\n setDeathZones,\n setExcludeZones: setDeathZones,\n }\n}\n"],"names":["useCallback","isParticleEmitter","getFirstEmitter","applyEmitterConfig","emitZone","buildEmitZoneFromLayout","applyEmitZone","buildDeathZonesFromLayout","applyDeathZone"],"mappings":";;;;;;AAqBO,SAAS,aAAa,KAqB3B;AACA,QAAM,aAAaA,QAAAA,YAAY,MAAM,IAAI,WAAW,MAAM,CAAC,GAAG,CAAC;AAC/D,QAAM,aAAaA,QAAAA,YAAY,MAAM;AACnC,UAAM,UAAU,IAAI;AACpB,QAAI,CAAC,QAAS,QAAO;AACrB,QAAIC,MAAAA,kBAAkB,OAAO,EAAG,QAAO;AACvC,WAAOC,MAAAA,gBAAgB,OAAqC;AAAA,EAC9D,GAAG,CAAC,GAAG,CAAC;AAER,QAAM,QAAQF,QAAAA,YAAY,MAAM;AAC9B,UAAM,UAAU,WAAA;AAChB,aAAS,MAAA;AAAA,EACX,GAAG,CAAC,UAAU,CAAC;AAEf,QAAM,OAAOA,QAAAA,YAAY,MAAM;AAC7B,UAAM,UAAU,WAAA;AAChB,aAAS,KAAA;AAAA,EACX,GAAG,CAAC,UAAU,CAAC;AAEf,QAAM,UAAUA,QAAAA;AAAAA,IACd,CAAC,OAAe,GAAY,MAAe;AACzC,YAAM,UAAU,WAAA;AAChB,eAAS,QAAQ,OAAO,GAAG,CAAC;AAAA,IAC9B;AAAA,IACA,CAAC,UAAU;AAAA,EAAA;AAGb,QAAM,YAAYA,QAAAA;AAAAA,IAChB,CAAC,WAAkC;AACjC,YAAM,UAAU,WAAA;AAChBG,YAAAA,mBAAmB,SAAS,MAAM;AAAA,IACpC;AAAA,IACA,CAAC,UAAU;AAAA,EAAA;AAGb,QAAM,cAAcH,QAAAA;AAAAA,IAClB,CAAC,MAA0B,OAAgB,WAAoB;AAC7D,YAAM,UAAU,WAAA;AAChB,YAAMI,aAAWC,SAAAA,wBAAwB,MAAM,OAAO,MAAM;AAC5DC,YAAAA,cAAc,SAASF,UAAQ;AAAA,IACjC;AAAA,IACA,CAAC,UAAU;AAAA,EAAA;AAGb,QAAM,gBAAgBJ,QAAAA;AAAAA,IACpB,CACE,OACA,OACA,WACG;AACH,YAAM,UAAU,WAAA;AAChB,YAAM,UAAU,WAAA;AAChB,YAAM,aAAaO,SAAAA,0BAA0B,OAAO,OAAO,QAAQ,WAAW,MAAS;AACvFC,YAAAA,eAAe,SAAS,UAAU;AAAA,IACpC;AAAA,IACA,CAAC,YAAY,UAAU;AAAA,EAAA;AAGzB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,iBAAiB;AAAA,EAAA;AAErB;;"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { RefObject } from '../types';
|
|
2
|
+
import { ParticleDeathZoneConfig, ParticleZoneConfig } from './emit-zone';
|
|
3
|
+
import { ParticleEmitter, ParticlesHandle } from './particle-types';
|
|
4
|
+
import { ParticleEmitterConfig } from './preset-registry';
|
|
5
|
+
export declare function useParticles(ref: RefObject<ParticlesHandle | null>): {
|
|
6
|
+
getManager: () => ParticlesHandle | null;
|
|
7
|
+
getEmitter: () => ParticleEmitter | null;
|
|
8
|
+
start: () => void;
|
|
9
|
+
stop: () => void;
|
|
10
|
+
explode: (count: number, x?: number, y?: number) => void;
|
|
11
|
+
setConfig: (config: ParticleEmitterConfig) => void;
|
|
12
|
+
setEmitZone: (zone: ParticleZoneConfig, width?: number, height?: number) => void;
|
|
13
|
+
setDeathZones: (zones: ParticleDeathZoneConfig | ParticleDeathZoneConfig[], width?: number, height?: number) => void;
|
|
14
|
+
/**
|
|
15
|
+
* @deprecated Use setDeathZones.
|
|
16
|
+
*/
|
|
17
|
+
setExcludeZones: (zones: ParticleDeathZoneConfig | ParticleDeathZoneConfig[], width?: number, height?: number) => void;
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=use-particles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-particles.d.ts","sourceRoot":"","sources":["../../src/particles/use-particles.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACzC,OAAO,EAGL,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,EACxB,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,eAAe,EAA8B,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACpG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAS9D,wBAAgB,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG;IACpE,UAAU,EAAE,MAAM,eAAe,GAAG,IAAI,CAAA;IACxC,UAAU,EAAE,MAAM,eAAe,GAAG,IAAI,CAAA;IACxC,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,IAAI,EAAE,MAAM,IAAI,CAAA;IAChB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IACxD,SAAS,EAAE,CAAC,MAAM,EAAE,qBAAqB,KAAK,IAAI,CAAA;IAClD,WAAW,EAAE,CAAC,IAAI,EAAE,kBAAkB,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAChF,aAAa,EAAE,CACb,KAAK,EAAE,uBAAuB,GAAG,uBAAuB,EAAE,EAC1D,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,KACZ,IAAI,CAAA;IACT;;OAEG;IACH,eAAe,EAAE,CACf,KAAK,EAAE,uBAAuB,GAAG,uBAAuB,EAAE,EAC1D,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,KACZ,IAAI,CAAA;CACV,CAqEA"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import "../hooks.js";
|
|
2
|
+
import { buildEmitZoneFromLayout, buildDeathZonesFromLayout } from "./emit-zone.js";
|
|
3
|
+
import { isParticleEmitter, getFirstEmitter, applyEmitterConfig, applyEmitZone, applyDeathZone } from "./utils.js";
|
|
4
|
+
import { useCallback } from "@number10/jsx-core";
|
|
5
|
+
function useParticles(ref) {
|
|
6
|
+
const getManager = useCallback(() => ref.current ?? null, [ref]);
|
|
7
|
+
const getEmitter = useCallback(() => {
|
|
8
|
+
const current = ref.current;
|
|
9
|
+
if (!current) return null;
|
|
10
|
+
if (isParticleEmitter(current)) return current;
|
|
11
|
+
return getFirstEmitter(current);
|
|
12
|
+
}, [ref]);
|
|
13
|
+
const start = useCallback(() => {
|
|
14
|
+
const emitter = getEmitter();
|
|
15
|
+
emitter?.start();
|
|
16
|
+
}, [getEmitter]);
|
|
17
|
+
const stop = useCallback(() => {
|
|
18
|
+
const emitter = getEmitter();
|
|
19
|
+
emitter?.stop();
|
|
20
|
+
}, [getEmitter]);
|
|
21
|
+
const explode = useCallback(
|
|
22
|
+
(count, x, y) => {
|
|
23
|
+
const emitter = getEmitter();
|
|
24
|
+
emitter?.explode(count, x, y);
|
|
25
|
+
},
|
|
26
|
+
[getEmitter]
|
|
27
|
+
);
|
|
28
|
+
const setConfig = useCallback(
|
|
29
|
+
(config) => {
|
|
30
|
+
const emitter = getEmitter();
|
|
31
|
+
applyEmitterConfig(emitter, config);
|
|
32
|
+
},
|
|
33
|
+
[getEmitter]
|
|
34
|
+
);
|
|
35
|
+
const setEmitZone = useCallback(
|
|
36
|
+
(zone, width, height) => {
|
|
37
|
+
const emitter = getEmitter();
|
|
38
|
+
const emitZone = buildEmitZoneFromLayout(zone, width, height);
|
|
39
|
+
applyEmitZone(emitter, emitZone);
|
|
40
|
+
},
|
|
41
|
+
[getEmitter]
|
|
42
|
+
);
|
|
43
|
+
const setDeathZones = useCallback(
|
|
44
|
+
(zones, width, height) => {
|
|
45
|
+
const emitter = getEmitter();
|
|
46
|
+
const manager = getManager();
|
|
47
|
+
const deathZones = buildDeathZonesFromLayout(zones, width, height, manager ?? void 0);
|
|
48
|
+
applyDeathZone(emitter, deathZones);
|
|
49
|
+
},
|
|
50
|
+
[getEmitter, getManager]
|
|
51
|
+
);
|
|
52
|
+
return {
|
|
53
|
+
getManager,
|
|
54
|
+
getEmitter,
|
|
55
|
+
start,
|
|
56
|
+
stop,
|
|
57
|
+
explode,
|
|
58
|
+
setConfig,
|
|
59
|
+
setEmitZone,
|
|
60
|
+
setDeathZones,
|
|
61
|
+
setExcludeZones: setDeathZones
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
export {
|
|
65
|
+
useParticles
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=use-particles.js.map
|