@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,42 @@
|
|
|
1
|
+
import { applyNineSliceProps } from "../appliers/applyNineSlice.js";
|
|
2
|
+
import { applyNineSliceLayout } from "../appliers/applyNineSliceLayout.js";
|
|
3
|
+
import { applyPhaserProps } from "../appliers/applyPhaser.js";
|
|
4
|
+
import { applyTransformProps } from "../appliers/applyTransform.js";
|
|
5
|
+
import { createNineSliceLayout } from "../creators/createNineSliceLayout.js";
|
|
6
|
+
import { createPhaser } from "../creators/createPhaser.js";
|
|
7
|
+
import { resolveAnimatableNumber, createTransform } from "../creators/createTransform.js";
|
|
8
|
+
const nineSliceCreator = (scene, props) => {
|
|
9
|
+
const initialWidth = typeof props.width === "number" ? props.width : 64;
|
|
10
|
+
const initialHeight = typeof props.height === "number" ? props.height : 64;
|
|
11
|
+
const nineSlice = scene.add.nineslice(
|
|
12
|
+
resolveAnimatableNumber(props.x) ?? 0,
|
|
13
|
+
resolveAnimatableNumber(props.y) ?? 0,
|
|
14
|
+
props.texture,
|
|
15
|
+
props.frame,
|
|
16
|
+
initialWidth,
|
|
17
|
+
initialHeight,
|
|
18
|
+
props.leftWidth,
|
|
19
|
+
props.rightWidth,
|
|
20
|
+
props.topHeight,
|
|
21
|
+
props.bottomHeight
|
|
22
|
+
);
|
|
23
|
+
nineSlice.setOrigin(0, 0);
|
|
24
|
+
if (props.tint !== void 0) {
|
|
25
|
+
nineSlice.setTint(props.tint);
|
|
26
|
+
}
|
|
27
|
+
createTransform(nineSlice, props);
|
|
28
|
+
createPhaser(nineSlice, props);
|
|
29
|
+
createNineSliceLayout(nineSlice, props);
|
|
30
|
+
return nineSlice;
|
|
31
|
+
};
|
|
32
|
+
const nineSlicePatcher = (node, prev, next) => {
|
|
33
|
+
applyTransformProps(node, prev, next);
|
|
34
|
+
applyPhaserProps(node, prev, next);
|
|
35
|
+
applyNineSliceProps(node, prev, next);
|
|
36
|
+
applyNineSliceLayout(node, prev, next);
|
|
37
|
+
};
|
|
38
|
+
export {
|
|
39
|
+
nineSliceCreator,
|
|
40
|
+
nineSlicePatcher
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=nineslice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nineslice.js","sources":["../../../src/components/primitives/nineslice.ts"],"sourcesContent":["/**\n * NineSlice component - Phaser NineSlice GameObject for scalable UI panels\n * Status: IMPLEMENTED ✅\n *\n * Design Overview:\n * ================\n *\n * 1. Component Role: SCALABLE UI PANELS\n * Purpose: Create resizable UI elements that preserve border/corner integrity\n * Phaser Type: Phaser.GameObjects.NineSlice (9-slice scaling)\n * Use Cases:\n * - Buttons with fixed corner radius\n * - Dialog boxes with preserved borders\n * - Progress bars with capped ends\n * - Panels that scale without distorting decorative edges\n *\n * 2. Nine-Slice Scaling Concept:\n * Texture divided into 9 regions:\n * ┌─────┬─────────┬─────┐\n * │ TL │ Top │ TR │ (corners + edges)\n * ├─────┼─────────┼─────┤\n * │Left │ Center │Right│ (center scales, edges stretch)\n * ├─────┼─────────┼─────┤\n * │ BL │ Bottom │ BR │ (corners stay fixed)\n * └─────┴─────────┴─────┘\n * Behavior:\n * - Corners: Never scale (preserve pixel-perfect)\n * - Edges: Stretch along one axis (top/bottom: horizontal, left/right: vertical)\n * - Center: Scales in both directions\n * Benefit: UI elements scale to any size without visual distortion\n *\n * 3. Three-Slice Mode (Optional):\n * Feature: Omit topHeight/bottomHeight for horizontal-only slicing\n * Use Case: Horizontal buttons, progress bars\n * Layout:\n * ┌─────┬─────────────────┬─────┐\n * │Left │ Center │Right│\n * └─────┴─────────────────┴─────┘\n * Props: Only leftWidth + rightWidth required\n *\n * 4. Headless Default: FALSE ✅\n * Decision: NineSlice participates in layout by default\n * Reasoning:\n * - NineSlice is a UI element (buttons, panels, containers)\n * - Should affect parent container dimensions\n * - Similar to View component (container semantics)\n * Use Cases:\n * - ✅ Layout-aware (default): Buttons, panels, dialogs, cards\n * - ❌ Headless (optional): Background overlays, decorative frames\n * Usage:\n * <NineSlice texture=\"panel\" leftWidth={16} rightWidth={16} width={200} height={100} />\n * <NineSlice texture=\"frame\" headless={true} /> // Decorative\n *\n * 5. Layout Size Provider:\n * Implementation: Uses explicit width/height (required props)\n * Reasoning:\n * - NineSlice requires explicit dimensions (Phaser constructor param)\n * - No auto-sizing (unlike Text)\n * - Dimensions always known and stable\n * __getLayoutSize:\n * return { width: nineSlice.width, height: nineSlice.height }\n * Note: getBounds() not needed (no rotation typically applied)\n *\n * 6. Slice Configuration:\n * Required Props:\n * - texture: string (texture key)\n * - leftWidth: number (pixels)\n * - rightWidth: number (pixels)\n * - width: number (total width)\n * - height: number (total height)\n * Optional Props:\n * - topHeight: number (9-slice mode, default: 0 for 3-slice)\n * - bottomHeight: number (9-slice mode, default: 0 for 3-slice)\n * - frame: string | number (texture atlas frame)\n * Validation:\n * - Width must be >= leftWidth + rightWidth\n * - Height must be >= topHeight + bottomHeight\n * - Slice widths/heights define source texture regions\n *\n * 7. Inner Bounds Feature:\n * Purpose: Calculate content area excluding slices\n * Use Case: Position children inside panel borders\n * Calculation:\n * innerBounds = {\n * x: leftWidth,\n * y: topHeight,\n * width: totalWidth - leftWidth - rightWidth,\n * height: totalHeight - topHeight - bottomHeight\n * }\n * Access:\n * const ref = useRef<NineSliceRef>(null)\n * <NineSlice ref={ref} ... />\n * console.log(ref.current?.innerBounds) // { x, y, width, height }\n * Pattern: Useful for padding-aware content positioning\n *\n * 8. Ref Extension:\n * Feature: NineSliceRef provides slice metadata\n * Properties:\n * - node: Phaser.GameObjects.NineSlice (the GameObject)\n * - leftWidth, rightWidth, topHeight, bottomHeight: Slice dimensions\n * - innerBounds: Content area calculation\n * Usage:\n * const panelRef = useRef<NineSliceRef>(null)\n * // Access slice info for child positioning\n * const { innerBounds } = panelRef.current\n *\n * 9. Common Patterns:\n * Button:\n * <NineSlice\n * texture=\"button\"\n * leftWidth={16} rightWidth={16}\n * topHeight={16} bottomHeight={16}\n * width={200} height={60}\n * >\n * <Text text=\"Click Me\" />\n * </NineSlice>\n * Dialog Box:\n * <NineSlice\n * texture=\"panel\"\n * leftWidth={32} rightWidth={32}\n * topHeight={32} bottomHeight={32}\n * width={400} height={300}\n * >\n * <View padding={32}> {/* Padding matches slice sizes * }\n * <Text text=\"Dialog Content\" />\n * </View>\n * </NineSlice>\n * Progress Bar (3-slice):\n * <NineSlice\n * texture=\"progressbar\"\n * leftWidth={8} rightWidth={8}\n * width={progress * 200} height={20}\n * />\n *\n * 10. Performance Considerations:\n * - Efficient rendering (single draw call per NineSlice)\n * - Texture atlases recommended (reduce texture switches)\n * - Scaling performance: No geometry regeneration needed\n * - Slice configuration: Calculated once on creation\n * - Dynamic resizing: Efficiently handled by Phaser\n *\n * 11. Known Limitations:\n * - Requires pre-designed 9-slice texture\n * - Slice dimensions must match source texture layout exactly\n * - Rotation not recommended (distorts slice alignment)\n * - Can't animate slice dimensions (only width/height)\n * - No rounded corner support (must be in texture)\n *\n * Implementation Status:\n * ======================\n * [✅] Phaser NineSlice creation with slice configuration\n * [✅] Transform props (position, scale, alpha, depth)\n * [✅] Layout system integration (__layoutProps, __getLayoutSize)\n * [✅] Width/height as layout props (explicit sizing)\n * [✅] Three-slice mode support (optional topHeight/bottomHeight)\n * [✅] NineSliceRef with innerBounds calculation\n * [✅] Slice dimension validation\n * [✅] Theme system integration\n * [✅] Dynamic resizing support (width/height patching)\n */\nimport type * as Phaser from 'phaser'\nimport type { LayoutProps, PhaserProps, TransformProps } from '../../core-props'\nimport type { HostCreator, HostPatcher } from '../../host'\nimport type { PropsDefaultExtension } from '../../types'\nimport { applyNineSliceProps } from '../appliers/applyNineSlice'\nimport { applyNineSliceLayout } from '../appliers/applyNineSliceLayout'\nimport { applyPhaserProps } from '../appliers/applyPhaser'\nimport { applyTransformProps } from '../appliers/applyTransform'\nimport { createNineSliceLayout } from '../creators/createNineSliceLayout'\nimport { createPhaser } from '../creators/createPhaser'\nimport { createTransform, resolveAnimatableNumber } from '../creators/createTransform'\n\n/**\n * Inner bounds of a NineSlice - the content area excluding slices\n */\nexport interface NineSliceInnerBounds {\n /**\n * X offset from left edge (equals leftWidth)\n */\n x: number\n /**\n * Y offset from top edge (equals topHeight)\n */\n y: number\n /**\n * Width of inner content area (totalWidth - leftWidth - rightWidth)\n */\n width: number\n /**\n * Height of inner content area (totalHeight - topHeight - bottomHeight)\n */\n height: number\n}\n\n/**\n * Extended NineSlice reference with slice information and inner bounds\n */\nexport interface NineSliceRef {\n /**\n * The underlying Phaser NineSlice GameObject\n */\n node: Phaser.GameObjects.NineSlice | null\n /**\n * Width of the left slice in pixels\n */\n leftWidth: number\n /**\n * Width of the right slice in pixels\n */\n rightWidth: number\n /**\n * Height of the top slice in pixels (0 for 3-slice mode)\n */\n topHeight: number\n /**\n * Height of the bottom slice in pixels (0 for 3-slice mode)\n */\n bottomHeight: number\n /**\n * Inner content bounds excluding slices\n * Useful for positioning content within the NineSlice\n */\n innerBounds: NineSliceInnerBounds\n}\n\n/**\n * NineSlice-specific properties for texture and slice configuration\n */\nexport interface NineSliceSpecificProps {\n /**\n * Texture key to use for the NineSlice\n */\n texture: string\n\n /**\n * Optional tint to apply to the NineSlice\n */\n tint?: number | undefined\n\n /**\n * Optional frame within the texture atlas\n */\n frame?: string | number\n\n /**\n * Width of the left slice (in pixels of source texture)\n */\n leftWidth: number\n\n /**\n * Width of the right slice (in pixels of source texture)\n */\n rightWidth: number\n\n /**\n * Height of the top slice (in pixels of source texture)\n * Optional - omit for 3-slice mode (horizontal only)\n */\n topHeight?: number\n\n /**\n * Height of the bottom slice (in pixels of source texture)\n * Optional - omit for 3-slice mode (horizontal only)\n */\n bottomHeight?: number\n}\n\n/**\n * Base props for NineSlice - composing shared prop groups\n * Note: No InteractionProps - interaction should be handled by parent View container\n */\nexport interface NineSliceBaseProps\n extends TransformProps, PhaserProps, LayoutProps, NineSliceSpecificProps {}\n\n/**\n * Props for NineSlice primitive - extends base props with JSX-specific props\n * Renamed to avoid conflict with custom NineSlice wrapper\n */\nexport interface NineSlicePrimitiveProps\n extends NineSliceBaseProps, PropsDefaultExtension<Phaser.GameObjects.NineSlice> {}\n\n/**\n * NineSlice creator - creates a Phaser NineSlice object\n */\nexport const nineSliceCreator: HostCreator<'NineSlice'> = (scene, props) => {\n // For width/height, use a small default that will be overridden by layout system\n // This prevents the NineSlice from being created with huge dimensions\n const initialWidth = typeof props.width === 'number' ? props.width : 64\n const initialHeight = typeof props.height === 'number' ? props.height : 64\n\n const nineSlice = scene.add.nineslice(\n resolveAnimatableNumber(props.x) ?? 0,\n resolveAnimatableNumber(props.y) ?? 0,\n props.texture,\n props.frame,\n initialWidth,\n initialHeight,\n props.leftWidth,\n props.rightWidth,\n props.topHeight,\n props.bottomHeight\n )\n nineSlice.setOrigin(0, 0) // Top-left origin for easier layout handling as it is in UI\n\n // Apply tint if provided\n if (props.tint !== undefined) {\n nineSlice.setTint(props.tint)\n }\n\n // Apply transform props (scale, rotation)\n createTransform(nineSlice, props)\n\n // Apply Phaser display props (alpha, depth, visible)\n createPhaser(nineSlice, props)\n\n // Setup layout system (props and size provider)\n createNineSliceLayout(nineSlice, props)\n\n return nineSlice\n}\n\n/**\n * NineSlice patcher - updates NineSlice properties\n */\nexport const nineSlicePatcher: HostPatcher<'NineSlice'> = (node, prev, next) => {\n // Apply transform props (position, rotation, scale)\n applyTransformProps(node, prev, next)\n\n // Apply Phaser display props (alpha, depth, visible)\n applyPhaserProps(node, prev, next)\n\n // Apply NineSlice-specific props (texture, frame, slice dimensions)\n applyNineSliceProps(node, prev, next)\n\n // Apply layout props and update size provider if needed\n applyNineSliceLayout(node, prev, next)\n}\n"],"names":[],"mappings":";;;;;;;AA4RO,MAAM,mBAA6C,CAAC,OAAO,UAAU;AAG1E,QAAM,eAAe,OAAO,MAAM,UAAU,WAAW,MAAM,QAAQ;AACrE,QAAM,gBAAgB,OAAO,MAAM,WAAW,WAAW,MAAM,SAAS;AAExE,QAAM,YAAY,MAAM,IAAI;AAAA,IAC1B,wBAAwB,MAAM,CAAC,KAAK;AAAA,IACpC,wBAAwB,MAAM,CAAC,KAAK;AAAA,IACpC,MAAM;AAAA,IACN,MAAM;AAAA,IACN;AAAA,IACA;AAAA,IACA,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,EAAA;AAER,YAAU,UAAU,GAAG,CAAC;AAGxB,MAAI,MAAM,SAAS,QAAW;AAC5B,cAAU,QAAQ,MAAM,IAAI;AAAA,EAC9B;AAGA,kBAAgB,WAAW,KAAK;AAGhC,eAAa,WAAW,KAAK;AAG7B,wBAAsB,WAAW,KAAK;AAEtC,SAAO;AACT;AAKO,MAAM,mBAA6C,CAAC,MAAM,MAAM,SAAS;AAE9E,sBAAoB,MAAM,MAAM,IAAI;AAGpC,mBAAiB,MAAM,MAAM,IAAI;AAGjC,sBAAoB,MAAM,MAAM,IAAI;AAGpC,uBAAqB,MAAM,MAAM,IAAI;AACvC;"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const emitZone = require("../../particles/emit-zone.cjs");
|
|
4
|
+
const presetRegistry = require("../../particles/preset-registry.cjs");
|
|
5
|
+
const utils = require("../../particles/utils.cjs");
|
|
6
|
+
const applyParticles = require("../appliers/applyParticles.cjs");
|
|
7
|
+
const applyParticlesLayout = require("../appliers/applyParticlesLayout.cjs");
|
|
8
|
+
const applyPhaser = require("../appliers/applyPhaser.cjs");
|
|
9
|
+
const applyTransform = require("../appliers/applyTransform.cjs");
|
|
10
|
+
const createParticlesLayout = require("../creators/createParticlesLayout.cjs");
|
|
11
|
+
const createPhaser = require("../creators/createPhaser.cjs");
|
|
12
|
+
const createTransform = require("../creators/createTransform.cjs");
|
|
13
|
+
const particlesCreator = (scene, props) => {
|
|
14
|
+
const resolvedConfig = {
|
|
15
|
+
...presetRegistry.resolveParticlePreset(props.preset, props.config)
|
|
16
|
+
};
|
|
17
|
+
const emitZoneProps = props.emitZone ?? props.zone;
|
|
18
|
+
const deathZoneProps = props.deathZones ?? props.excludeZones;
|
|
19
|
+
if (emitZoneProps) {
|
|
20
|
+
const emitZone$1 = emitZone.buildEmitZoneFromLayout(emitZoneProps, props.width, props.height);
|
|
21
|
+
if (emitZone$1) {
|
|
22
|
+
const configWithZone = resolvedConfig;
|
|
23
|
+
configWithZone.emitZone = emitZone$1;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
const particles = scene.add.particles(
|
|
27
|
+
createTransform.resolveAnimatableNumber(props.x) ?? 0,
|
|
28
|
+
createTransform.resolveAnimatableNumber(props.y) ?? 0,
|
|
29
|
+
props.texture,
|
|
30
|
+
resolvedConfig
|
|
31
|
+
);
|
|
32
|
+
if (props.frame !== void 0) {
|
|
33
|
+
const configWithFrame = resolvedConfig;
|
|
34
|
+
configWithFrame.frame = props.frame;
|
|
35
|
+
if ("setTexture" in particles && particles.setTexture) {
|
|
36
|
+
particles.setTexture(props.texture, props.frame);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
const emitter = utils.isParticleEmitter(particles) ? particles : utils.getFirstEmitter(particles);
|
|
40
|
+
if (!utils.isParticleEmitter(particles)) {
|
|
41
|
+
particles.__emitter = emitter;
|
|
42
|
+
}
|
|
43
|
+
if ("setOrigin" in particles && typeof particles.setOrigin === "function") {
|
|
44
|
+
particles.setOrigin(0, 0);
|
|
45
|
+
}
|
|
46
|
+
createTransform.createTransform(particles, props);
|
|
47
|
+
createPhaser.createPhaser(particles, props);
|
|
48
|
+
createParticlesLayout.createParticlesLayout(particles, props);
|
|
49
|
+
if (deathZoneProps && emitter) {
|
|
50
|
+
const deathZones = emitZone.buildDeathZonesFromLayout(
|
|
51
|
+
deathZoneProps,
|
|
52
|
+
props.width,
|
|
53
|
+
props.height,
|
|
54
|
+
particles
|
|
55
|
+
);
|
|
56
|
+
const combinedDeathZones = utils.mergeDeathZones(
|
|
57
|
+
resolvedConfig.deathZone,
|
|
58
|
+
deathZones
|
|
59
|
+
);
|
|
60
|
+
if (combinedDeathZones) {
|
|
61
|
+
utils.applyDeathZone(emitter, combinedDeathZones);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if (props.onReady) {
|
|
65
|
+
props.onReady(particles);
|
|
66
|
+
}
|
|
67
|
+
return particles;
|
|
68
|
+
};
|
|
69
|
+
const particlesPatcher = (node, prev, next) => {
|
|
70
|
+
applyTransform.applyTransformProps(node, prev, next);
|
|
71
|
+
applyPhaser.applyPhaserProps(node, prev, next);
|
|
72
|
+
applyParticles.applyParticlesProps(node, prev, next);
|
|
73
|
+
applyParticlesLayout.applyParticlesLayout(node, prev, next);
|
|
74
|
+
};
|
|
75
|
+
exports.particlesCreator = particlesCreator;
|
|
76
|
+
exports.particlesPatcher = particlesPatcher;
|
|
77
|
+
//# sourceMappingURL=particles.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"particles.cjs","sources":["../../../src/components/primitives/particles.ts"],"sourcesContent":["/**\n * Particles component - Phaser ParticleEmitterManager wrapper\n * Status: IMPLEMENTED ✅\n *\n * Design Overview:\n * ================\n * - Always headless (does not affect layout)\n * - Emits particles via a single emitter (configurable)\n * - Optional emit zone support (rect, circle, ellipse, line)\n */\nimport type { LayoutProps, PhaserProps, TransformProps } from '../../core-props'\nimport type { HostCreator, HostPatcher } from '../../host'\nimport type { ParticleDeathZoneConfig, ParticleZoneConfig } from '../../particles/emit-zone'\nimport { buildDeathZonesFromLayout, buildEmitZoneFromLayout } from '../../particles/emit-zone'\nimport type { ParticleEmitterManagerLike, ParticlesHandle } from '../../particles/particle-types'\nimport type { ParticleEmitterConfig, ParticlePresetName } from '../../particles/preset-registry'\nimport { resolveParticlePreset } from '../../particles/preset-registry'\nimport {\n applyDeathZone,\n getFirstEmitter,\n isParticleEmitter,\n mergeDeathZones,\n} from '../../particles/utils'\nimport type { PropsDefaultExtension } from '../../types'\nimport { applyParticlesProps } from '../appliers/applyParticles'\nimport { applyParticlesLayout } from '../appliers/applyParticlesLayout'\nimport { applyPhaserProps } from '../appliers/applyPhaser'\nimport { applyTransformProps } from '../appliers/applyTransform'\nimport { createParticlesLayout } from '../creators/createParticlesLayout'\nimport { createPhaser } from '../creators/createPhaser'\nimport { createTransform, resolveAnimatableNumber } from '../creators/createTransform'\n\n/**\n * Base props for Particles component\n */\nexport interface ParticlesBaseProps extends TransformProps, PhaserProps, LayoutProps {\n /** Texture key (loaded via Phaser's texture manager) */\n texture: string\n\n /** Optional frame from texture atlas or spritesheet */\n frame?: string | number\n\n /** Built-in preset name */\n preset?: ParticlePresetName\n\n /** Optional emitter config overrides */\n config?: ParticleEmitterConfig\n\n /** Optional emit zone: where particles are born */\n emitZone?: ParticleZoneConfig\n\n /**\n * Optional emit zone: where particles are born.\n * @deprecated Use emitZone.\n */\n zone?: ParticleZoneConfig\n\n /** Optional death zones: where particles are removed */\n deathZones?: ParticleDeathZoneConfig | ParticleDeathZoneConfig[] | undefined\n\n /**\n * Optional death zones: where particles are removed.\n * @deprecated Use deathZones.\n */\n excludeZones?: ParticleDeathZoneConfig | ParticleDeathZoneConfig[] | undefined\n}\n\n/**\n * Props for primitive Particles component (internal use only)\n */\nexport interface ParticlesPrimitiveProps\n extends ParticlesBaseProps, PropsDefaultExtension<ParticlesHandle> {}\n\n/**\n * Particles creator - creates a Phaser ParticleEmitterManager with a single emitter\n */\nexport const particlesCreator: HostCreator<'Particles'> = (scene, props) => {\n const resolvedConfig = {\n ...resolveParticlePreset(props.preset, props.config),\n } as ParticleEmitterConfig\n\n const emitZoneProps = props.emitZone ?? props.zone\n const deathZoneProps = props.deathZones ?? props.excludeZones\n\n if (emitZoneProps) {\n const emitZone = buildEmitZoneFromLayout(emitZoneProps, props.width, props.height)\n if (emitZone) {\n const configWithZone = resolvedConfig as unknown as { emitZone?: unknown }\n configWithZone.emitZone = emitZone\n }\n }\n\n // Don't set death zones yet - will be applied after transform\n\n const particles = scene.add.particles(\n resolveAnimatableNumber(props.x) ?? 0,\n resolveAnimatableNumber(props.y) ?? 0,\n props.texture,\n resolvedConfig\n ) as unknown as ParticlesHandle\n if (props.frame !== undefined) {\n const configWithFrame = resolvedConfig as unknown as { frame?: string | number }\n configWithFrame.frame = props.frame\n if ('setTexture' in particles && particles.setTexture) {\n particles.setTexture(props.texture, props.frame)\n }\n }\n\n const emitter = isParticleEmitter(particles)\n ? particles\n : getFirstEmitter(particles as ParticleEmitterManagerLike)\n\n if (!isParticleEmitter(particles)) {\n ;(particles as ParticleEmitterManagerLike).__emitter = emitter\n }\n\n // Set origin to (0, 0) for consistent coordinate system (top-left)\n if ('setOrigin' in particles && typeof particles.setOrigin === 'function') {\n particles.setOrigin(0, 0)\n }\n\n // Apply transform props\n createTransform(particles, props)\n\n // Apply Phaser display props (alpha, depth, visible)\n createPhaser(particles, props)\n\n // Setup layout system (headless)\n createParticlesLayout(particles, props)\n\n // Now apply death zones with container-relative coordinates\n if (deathZoneProps && emitter) {\n const deathZones = buildDeathZonesFromLayout(\n deathZoneProps,\n props.width,\n props.height,\n particles\n )\n const combinedDeathZones = mergeDeathZones(\n (resolvedConfig as unknown as { deathZone?: unknown }).deathZone,\n deathZones\n )\n if (combinedDeathZones) {\n applyDeathZone(emitter, combinedDeathZones as Parameters<typeof applyDeathZone>[1])\n }\n }\n\n // Call onReady callback if provided\n if (props.onReady) {\n props.onReady(particles)\n }\n\n return particles\n}\n\n/**\n * Particles patcher - updates ParticleEmitterManager properties\n */\nexport const particlesPatcher: HostPatcher<'Particles'> = (node, prev, next) => {\n // Apply transform props\n applyTransformProps(node, prev, next)\n\n // Apply Phaser display props\n applyPhaserProps(node, prev, next)\n\n // Apply particle-specific props\n applyParticlesProps(node, prev, next)\n\n // Apply layout props\n applyParticlesLayout(node, prev, next)\n}\n"],"names":["resolveParticlePreset","emitZone","buildEmitZoneFromLayout","resolveAnimatableNumber","isParticleEmitter","getFirstEmitter","createTransform","createPhaser","createParticlesLayout","buildDeathZonesFromLayout","mergeDeathZones","applyDeathZone","applyTransformProps","applyPhaserProps","applyParticlesProps","applyParticlesLayout"],"mappings":";;;;;;;;;;;;AA4EO,MAAM,mBAA6C,CAAC,OAAO,UAAU;AAC1E,QAAM,iBAAiB;AAAA,IACrB,GAAGA,qCAAsB,MAAM,QAAQ,MAAM,MAAM;AAAA,EAAA;AAGrD,QAAM,gBAAgB,MAAM,YAAY,MAAM;AAC9C,QAAM,iBAAiB,MAAM,cAAc,MAAM;AAEjD,MAAI,eAAe;AACjB,UAAMC,aAAWC,SAAAA,wBAAwB,eAAe,MAAM,OAAO,MAAM,MAAM;AACjF,QAAID,YAAU;AACZ,YAAM,iBAAiB;AACvB,qBAAe,WAAWA;AAAAA,IAC5B;AAAA,EACF;AAIA,QAAM,YAAY,MAAM,IAAI;AAAA,IAC1BE,wCAAwB,MAAM,CAAC,KAAK;AAAA,IACpCA,wCAAwB,MAAM,CAAC,KAAK;AAAA,IACpC,MAAM;AAAA,IACN;AAAA,EAAA;AAEF,MAAI,MAAM,UAAU,QAAW;AAC7B,UAAM,kBAAkB;AACxB,oBAAgB,QAAQ,MAAM;AAC9B,QAAI,gBAAgB,aAAa,UAAU,YAAY;AACrD,gBAAU,WAAW,MAAM,SAAS,MAAM,KAAK;AAAA,IACjD;AAAA,EACF;AAEA,QAAM,UAAUC,MAAAA,kBAAkB,SAAS,IACvC,YACAC,MAAAA,gBAAgB,SAAuC;AAE3D,MAAI,CAACD,MAAAA,kBAAkB,SAAS,GAAG;AAC/B,cAAyC,YAAY;AAAA,EACzD;AAGA,MAAI,eAAe,aAAa,OAAO,UAAU,cAAc,YAAY;AACzE,cAAU,UAAU,GAAG,CAAC;AAAA,EAC1B;AAGAE,kBAAAA,gBAAgB,WAAW,KAAK;AAGhCC,eAAAA,aAAa,WAAW,KAAK;AAG7BC,wBAAAA,sBAAsB,WAAW,KAAK;AAGtC,MAAI,kBAAkB,SAAS;AAC7B,UAAM,aAAaC,SAAAA;AAAAA,MACjB;AAAA,MACA,MAAM;AAAA,MACN,MAAM;AAAA,MACN;AAAA,IAAA;AAEF,UAAM,qBAAqBC,MAAAA;AAAAA,MACxB,eAAsD;AAAA,MACvD;AAAA,IAAA;AAEF,QAAI,oBAAoB;AACtBC,YAAAA,eAAe,SAAS,kBAA0D;AAAA,IACpF;AAAA,EACF;AAGA,MAAI,MAAM,SAAS;AACjB,UAAM,QAAQ,SAAS;AAAA,EACzB;AAEA,SAAO;AACT;AAKO,MAAM,mBAA6C,CAAC,MAAM,MAAM,SAAS;AAE9EC,qCAAoB,MAAM,MAAM,IAAI;AAGpCC,+BAAiB,MAAM,MAAM,IAAI;AAGjCC,qCAAoB,MAAM,MAAM,IAAI;AAGpCC,4CAAqB,MAAM,MAAM,IAAI;AACvC;;;"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { LayoutProps, PhaserProps, TransformProps } from '../../core-props';
|
|
2
|
+
import { HostCreator, HostPatcher } from '../../host';
|
|
3
|
+
import { ParticleDeathZoneConfig, ParticleZoneConfig } from '../../particles/emit-zone';
|
|
4
|
+
import { ParticlesHandle } from '../../particles/particle-types';
|
|
5
|
+
import { ParticleEmitterConfig, ParticlePresetName } from '../../particles/preset-registry';
|
|
6
|
+
import { PropsDefaultExtension } from '../../types';
|
|
7
|
+
/**
|
|
8
|
+
* Base props for Particles component
|
|
9
|
+
*/
|
|
10
|
+
export interface ParticlesBaseProps extends TransformProps, PhaserProps, LayoutProps {
|
|
11
|
+
/** Texture key (loaded via Phaser's texture manager) */
|
|
12
|
+
texture: string;
|
|
13
|
+
/** Optional frame from texture atlas or spritesheet */
|
|
14
|
+
frame?: string | number;
|
|
15
|
+
/** Built-in preset name */
|
|
16
|
+
preset?: ParticlePresetName;
|
|
17
|
+
/** Optional emitter config overrides */
|
|
18
|
+
config?: ParticleEmitterConfig;
|
|
19
|
+
/** Optional emit zone: where particles are born */
|
|
20
|
+
emitZone?: ParticleZoneConfig;
|
|
21
|
+
/**
|
|
22
|
+
* Optional emit zone: where particles are born.
|
|
23
|
+
* @deprecated Use emitZone.
|
|
24
|
+
*/
|
|
25
|
+
zone?: ParticleZoneConfig;
|
|
26
|
+
/** Optional death zones: where particles are removed */
|
|
27
|
+
deathZones?: ParticleDeathZoneConfig | ParticleDeathZoneConfig[] | undefined;
|
|
28
|
+
/**
|
|
29
|
+
* Optional death zones: where particles are removed.
|
|
30
|
+
* @deprecated Use deathZones.
|
|
31
|
+
*/
|
|
32
|
+
excludeZones?: ParticleDeathZoneConfig | ParticleDeathZoneConfig[] | undefined;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Props for primitive Particles component (internal use only)
|
|
36
|
+
*/
|
|
37
|
+
export interface ParticlesPrimitiveProps extends ParticlesBaseProps, PropsDefaultExtension<ParticlesHandle> {
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Particles creator - creates a Phaser ParticleEmitterManager with a single emitter
|
|
41
|
+
*/
|
|
42
|
+
export declare const particlesCreator: HostCreator<'Particles'>;
|
|
43
|
+
/**
|
|
44
|
+
* Particles patcher - updates ParticleEmitterManager properties
|
|
45
|
+
*/
|
|
46
|
+
export declare const particlesPatcher: HostPatcher<'Particles'>;
|
|
47
|
+
//# sourceMappingURL=particles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"particles.d.ts","sourceRoot":"","sources":["../../../src/components/primitives/particles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAC1D,OAAO,KAAK,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAE5F,OAAO,KAAK,EAA8B,eAAe,EAAE,MAAM,gCAAgC,CAAA;AACjG,OAAO,KAAK,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AAQhG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AASxD;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,cAAc,EAAE,WAAW,EAAE,WAAW;IAClF,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAA;IAEf,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAEvB,2BAA2B;IAC3B,MAAM,CAAC,EAAE,kBAAkB,CAAA;IAE3B,wCAAwC;IACxC,MAAM,CAAC,EAAE,qBAAqB,CAAA;IAE9B,mDAAmD;IACnD,QAAQ,CAAC,EAAE,kBAAkB,CAAA;IAE7B;;;OAGG;IACH,IAAI,CAAC,EAAE,kBAAkB,CAAA;IAEzB,wDAAwD;IACxD,UAAU,CAAC,EAAE,uBAAuB,GAAG,uBAAuB,EAAE,GAAG,SAAS,CAAA;IAE5E;;;OAGG;IACH,YAAY,CAAC,EAAE,uBAAuB,GAAG,uBAAuB,EAAE,GAAG,SAAS,CAAA;CAC/E;AAED;;GAEG;AACH,MAAM,WAAW,uBACf,SAAQ,kBAAkB,EAAE,qBAAqB,CAAC,eAAe,CAAC;CAAG;AAEvE;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,WAAW,CA6ErD,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,WAAW,CAYrD,CAAA"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { buildEmitZoneFromLayout, buildDeathZonesFromLayout } from "../../particles/emit-zone.js";
|
|
2
|
+
import { resolveParticlePreset } from "../../particles/preset-registry.js";
|
|
3
|
+
import { isParticleEmitter, getFirstEmitter, mergeDeathZones, applyDeathZone } from "../../particles/utils.js";
|
|
4
|
+
import { applyParticlesProps } from "../appliers/applyParticles.js";
|
|
5
|
+
import { applyParticlesLayout } from "../appliers/applyParticlesLayout.js";
|
|
6
|
+
import { applyPhaserProps } from "../appliers/applyPhaser.js";
|
|
7
|
+
import { applyTransformProps } from "../appliers/applyTransform.js";
|
|
8
|
+
import { createParticlesLayout } from "../creators/createParticlesLayout.js";
|
|
9
|
+
import { createPhaser } from "../creators/createPhaser.js";
|
|
10
|
+
import { resolveAnimatableNumber, createTransform } from "../creators/createTransform.js";
|
|
11
|
+
const particlesCreator = (scene, props) => {
|
|
12
|
+
const resolvedConfig = {
|
|
13
|
+
...resolveParticlePreset(props.preset, props.config)
|
|
14
|
+
};
|
|
15
|
+
const emitZoneProps = props.emitZone ?? props.zone;
|
|
16
|
+
const deathZoneProps = props.deathZones ?? props.excludeZones;
|
|
17
|
+
if (emitZoneProps) {
|
|
18
|
+
const emitZone = buildEmitZoneFromLayout(emitZoneProps, props.width, props.height);
|
|
19
|
+
if (emitZone) {
|
|
20
|
+
const configWithZone = resolvedConfig;
|
|
21
|
+
configWithZone.emitZone = emitZone;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const particles = scene.add.particles(
|
|
25
|
+
resolveAnimatableNumber(props.x) ?? 0,
|
|
26
|
+
resolveAnimatableNumber(props.y) ?? 0,
|
|
27
|
+
props.texture,
|
|
28
|
+
resolvedConfig
|
|
29
|
+
);
|
|
30
|
+
if (props.frame !== void 0) {
|
|
31
|
+
const configWithFrame = resolvedConfig;
|
|
32
|
+
configWithFrame.frame = props.frame;
|
|
33
|
+
if ("setTexture" in particles && particles.setTexture) {
|
|
34
|
+
particles.setTexture(props.texture, props.frame);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
const emitter = isParticleEmitter(particles) ? particles : getFirstEmitter(particles);
|
|
38
|
+
if (!isParticleEmitter(particles)) {
|
|
39
|
+
particles.__emitter = emitter;
|
|
40
|
+
}
|
|
41
|
+
if ("setOrigin" in particles && typeof particles.setOrigin === "function") {
|
|
42
|
+
particles.setOrigin(0, 0);
|
|
43
|
+
}
|
|
44
|
+
createTransform(particles, props);
|
|
45
|
+
createPhaser(particles, props);
|
|
46
|
+
createParticlesLayout(particles, props);
|
|
47
|
+
if (deathZoneProps && emitter) {
|
|
48
|
+
const deathZones = buildDeathZonesFromLayout(
|
|
49
|
+
deathZoneProps,
|
|
50
|
+
props.width,
|
|
51
|
+
props.height,
|
|
52
|
+
particles
|
|
53
|
+
);
|
|
54
|
+
const combinedDeathZones = mergeDeathZones(
|
|
55
|
+
resolvedConfig.deathZone,
|
|
56
|
+
deathZones
|
|
57
|
+
);
|
|
58
|
+
if (combinedDeathZones) {
|
|
59
|
+
applyDeathZone(emitter, combinedDeathZones);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
if (props.onReady) {
|
|
63
|
+
props.onReady(particles);
|
|
64
|
+
}
|
|
65
|
+
return particles;
|
|
66
|
+
};
|
|
67
|
+
const particlesPatcher = (node, prev, next) => {
|
|
68
|
+
applyTransformProps(node, prev, next);
|
|
69
|
+
applyPhaserProps(node, prev, next);
|
|
70
|
+
applyParticlesProps(node, prev, next);
|
|
71
|
+
applyParticlesLayout(node, prev, next);
|
|
72
|
+
};
|
|
73
|
+
export {
|
|
74
|
+
particlesCreator,
|
|
75
|
+
particlesPatcher
|
|
76
|
+
};
|
|
77
|
+
//# sourceMappingURL=particles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"particles.js","sources":["../../../src/components/primitives/particles.ts"],"sourcesContent":["/**\n * Particles component - Phaser ParticleEmitterManager wrapper\n * Status: IMPLEMENTED ✅\n *\n * Design Overview:\n * ================\n * - Always headless (does not affect layout)\n * - Emits particles via a single emitter (configurable)\n * - Optional emit zone support (rect, circle, ellipse, line)\n */\nimport type { LayoutProps, PhaserProps, TransformProps } from '../../core-props'\nimport type { HostCreator, HostPatcher } from '../../host'\nimport type { ParticleDeathZoneConfig, ParticleZoneConfig } from '../../particles/emit-zone'\nimport { buildDeathZonesFromLayout, buildEmitZoneFromLayout } from '../../particles/emit-zone'\nimport type { ParticleEmitterManagerLike, ParticlesHandle } from '../../particles/particle-types'\nimport type { ParticleEmitterConfig, ParticlePresetName } from '../../particles/preset-registry'\nimport { resolveParticlePreset } from '../../particles/preset-registry'\nimport {\n applyDeathZone,\n getFirstEmitter,\n isParticleEmitter,\n mergeDeathZones,\n} from '../../particles/utils'\nimport type { PropsDefaultExtension } from '../../types'\nimport { applyParticlesProps } from '../appliers/applyParticles'\nimport { applyParticlesLayout } from '../appliers/applyParticlesLayout'\nimport { applyPhaserProps } from '../appliers/applyPhaser'\nimport { applyTransformProps } from '../appliers/applyTransform'\nimport { createParticlesLayout } from '../creators/createParticlesLayout'\nimport { createPhaser } from '../creators/createPhaser'\nimport { createTransform, resolveAnimatableNumber } from '../creators/createTransform'\n\n/**\n * Base props for Particles component\n */\nexport interface ParticlesBaseProps extends TransformProps, PhaserProps, LayoutProps {\n /** Texture key (loaded via Phaser's texture manager) */\n texture: string\n\n /** Optional frame from texture atlas or spritesheet */\n frame?: string | number\n\n /** Built-in preset name */\n preset?: ParticlePresetName\n\n /** Optional emitter config overrides */\n config?: ParticleEmitterConfig\n\n /** Optional emit zone: where particles are born */\n emitZone?: ParticleZoneConfig\n\n /**\n * Optional emit zone: where particles are born.\n * @deprecated Use emitZone.\n */\n zone?: ParticleZoneConfig\n\n /** Optional death zones: where particles are removed */\n deathZones?: ParticleDeathZoneConfig | ParticleDeathZoneConfig[] | undefined\n\n /**\n * Optional death zones: where particles are removed.\n * @deprecated Use deathZones.\n */\n excludeZones?: ParticleDeathZoneConfig | ParticleDeathZoneConfig[] | undefined\n}\n\n/**\n * Props for primitive Particles component (internal use only)\n */\nexport interface ParticlesPrimitiveProps\n extends ParticlesBaseProps, PropsDefaultExtension<ParticlesHandle> {}\n\n/**\n * Particles creator - creates a Phaser ParticleEmitterManager with a single emitter\n */\nexport const particlesCreator: HostCreator<'Particles'> = (scene, props) => {\n const resolvedConfig = {\n ...resolveParticlePreset(props.preset, props.config),\n } as ParticleEmitterConfig\n\n const emitZoneProps = props.emitZone ?? props.zone\n const deathZoneProps = props.deathZones ?? props.excludeZones\n\n if (emitZoneProps) {\n const emitZone = buildEmitZoneFromLayout(emitZoneProps, props.width, props.height)\n if (emitZone) {\n const configWithZone = resolvedConfig as unknown as { emitZone?: unknown }\n configWithZone.emitZone = emitZone\n }\n }\n\n // Don't set death zones yet - will be applied after transform\n\n const particles = scene.add.particles(\n resolveAnimatableNumber(props.x) ?? 0,\n resolveAnimatableNumber(props.y) ?? 0,\n props.texture,\n resolvedConfig\n ) as unknown as ParticlesHandle\n if (props.frame !== undefined) {\n const configWithFrame = resolvedConfig as unknown as { frame?: string | number }\n configWithFrame.frame = props.frame\n if ('setTexture' in particles && particles.setTexture) {\n particles.setTexture(props.texture, props.frame)\n }\n }\n\n const emitter = isParticleEmitter(particles)\n ? particles\n : getFirstEmitter(particles as ParticleEmitterManagerLike)\n\n if (!isParticleEmitter(particles)) {\n ;(particles as ParticleEmitterManagerLike).__emitter = emitter\n }\n\n // Set origin to (0, 0) for consistent coordinate system (top-left)\n if ('setOrigin' in particles && typeof particles.setOrigin === 'function') {\n particles.setOrigin(0, 0)\n }\n\n // Apply transform props\n createTransform(particles, props)\n\n // Apply Phaser display props (alpha, depth, visible)\n createPhaser(particles, props)\n\n // Setup layout system (headless)\n createParticlesLayout(particles, props)\n\n // Now apply death zones with container-relative coordinates\n if (deathZoneProps && emitter) {\n const deathZones = buildDeathZonesFromLayout(\n deathZoneProps,\n props.width,\n props.height,\n particles\n )\n const combinedDeathZones = mergeDeathZones(\n (resolvedConfig as unknown as { deathZone?: unknown }).deathZone,\n deathZones\n )\n if (combinedDeathZones) {\n applyDeathZone(emitter, combinedDeathZones as Parameters<typeof applyDeathZone>[1])\n }\n }\n\n // Call onReady callback if provided\n if (props.onReady) {\n props.onReady(particles)\n }\n\n return particles\n}\n\n/**\n * Particles patcher - updates ParticleEmitterManager properties\n */\nexport const particlesPatcher: HostPatcher<'Particles'> = (node, prev, next) => {\n // Apply transform props\n applyTransformProps(node, prev, next)\n\n // Apply Phaser display props\n applyPhaserProps(node, prev, next)\n\n // Apply particle-specific props\n applyParticlesProps(node, prev, next)\n\n // Apply layout props\n applyParticlesLayout(node, prev, next)\n}\n"],"names":[],"mappings":";;;;;;;;;;AA4EO,MAAM,mBAA6C,CAAC,OAAO,UAAU;AAC1E,QAAM,iBAAiB;AAAA,IACrB,GAAG,sBAAsB,MAAM,QAAQ,MAAM,MAAM;AAAA,EAAA;AAGrD,QAAM,gBAAgB,MAAM,YAAY,MAAM;AAC9C,QAAM,iBAAiB,MAAM,cAAc,MAAM;AAEjD,MAAI,eAAe;AACjB,UAAM,WAAW,wBAAwB,eAAe,MAAM,OAAO,MAAM,MAAM;AACjF,QAAI,UAAU;AACZ,YAAM,iBAAiB;AACvB,qBAAe,WAAW;AAAA,IAC5B;AAAA,EACF;AAIA,QAAM,YAAY,MAAM,IAAI;AAAA,IAC1B,wBAAwB,MAAM,CAAC,KAAK;AAAA,IACpC,wBAAwB,MAAM,CAAC,KAAK;AAAA,IACpC,MAAM;AAAA,IACN;AAAA,EAAA;AAEF,MAAI,MAAM,UAAU,QAAW;AAC7B,UAAM,kBAAkB;AACxB,oBAAgB,QAAQ,MAAM;AAC9B,QAAI,gBAAgB,aAAa,UAAU,YAAY;AACrD,gBAAU,WAAW,MAAM,SAAS,MAAM,KAAK;AAAA,IACjD;AAAA,EACF;AAEA,QAAM,UAAU,kBAAkB,SAAS,IACvC,YACA,gBAAgB,SAAuC;AAE3D,MAAI,CAAC,kBAAkB,SAAS,GAAG;AAC/B,cAAyC,YAAY;AAAA,EACzD;AAGA,MAAI,eAAe,aAAa,OAAO,UAAU,cAAc,YAAY;AACzE,cAAU,UAAU,GAAG,CAAC;AAAA,EAC1B;AAGA,kBAAgB,WAAW,KAAK;AAGhC,eAAa,WAAW,KAAK;AAG7B,wBAAsB,WAAW,KAAK;AAGtC,MAAI,kBAAkB,SAAS;AAC7B,UAAM,aAAa;AAAA,MACjB;AAAA,MACA,MAAM;AAAA,MACN,MAAM;AAAA,MACN;AAAA,IAAA;AAEF,UAAM,qBAAqB;AAAA,MACxB,eAAsD;AAAA,MACvD;AAAA,IAAA;AAEF,QAAI,oBAAoB;AACtB,qBAAe,SAAS,kBAA0D;AAAA,IACpF;AAAA,EACF;AAGA,MAAI,MAAM,SAAS;AACjB,UAAM,QAAQ,SAAS;AAAA,EACzB;AAEA,SAAO;AACT;AAKO,MAAM,mBAA6C,CAAC,MAAM,MAAM,SAAS;AAE9E,sBAAoB,MAAM,MAAM,IAAI;AAGpC,mBAAiB,MAAM,MAAM,IAAI;AAGjC,sBAAoB,MAAM,MAAM,IAAI;AAGpC,uBAAqB,MAAM,MAAM,IAAI;AACvC;"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const applyPhaser = require("../appliers/applyPhaser.cjs");
|
|
4
|
+
const applySprite = require("../appliers/applySprite.cjs");
|
|
5
|
+
const applySpriteLayout = require("../appliers/applySpriteLayout.cjs");
|
|
6
|
+
const applyTransform = require("../appliers/applyTransform.cjs");
|
|
7
|
+
const createPhaser = require("../creators/createPhaser.cjs");
|
|
8
|
+
const createSpriteLayout = require("../creators/createSpriteLayout.cjs");
|
|
9
|
+
const createTransform = require("../creators/createTransform.cjs");
|
|
10
|
+
const spriteCreator = (scene, props) => {
|
|
11
|
+
const sprite = scene.add.sprite(
|
|
12
|
+
createTransform.resolveAnimatableNumber(props.x) ?? 0,
|
|
13
|
+
createTransform.resolveAnimatableNumber(props.y) ?? 0,
|
|
14
|
+
props.texture,
|
|
15
|
+
props.frame
|
|
16
|
+
);
|
|
17
|
+
sprite.setOrigin(0.5, 0.5);
|
|
18
|
+
if (props.originX !== void 0 || props.originY !== void 0) {
|
|
19
|
+
sprite.setOrigin(props.originX ?? sprite.originX, props.originY ?? sprite.originY);
|
|
20
|
+
}
|
|
21
|
+
createTransform.createTransform(sprite, props);
|
|
22
|
+
createPhaser.createPhaser(sprite, props);
|
|
23
|
+
if (props.tint !== void 0) {
|
|
24
|
+
sprite.setTint(props.tint);
|
|
25
|
+
}
|
|
26
|
+
if (props.displayWidth !== void 0 || props.displayHeight !== void 0) {
|
|
27
|
+
if (props.displayWidth !== void 0 && props.displayHeight !== void 0) {
|
|
28
|
+
const fit = props.fit ?? "fill";
|
|
29
|
+
const textureWidth = sprite.width;
|
|
30
|
+
const textureHeight = sprite.height;
|
|
31
|
+
if (textureWidth > 0 && textureHeight > 0) {
|
|
32
|
+
if (fit === "fill") {
|
|
33
|
+
sprite.setDisplaySize(props.displayWidth, props.displayHeight);
|
|
34
|
+
} else if (fit === "contain") {
|
|
35
|
+
const targetAspect = props.displayWidth / props.displayHeight;
|
|
36
|
+
const textureAspect = textureWidth / textureHeight;
|
|
37
|
+
const scale = targetAspect > textureAspect ? props.displayHeight / textureHeight : props.displayWidth / textureWidth;
|
|
38
|
+
sprite.setScale(scale);
|
|
39
|
+
} else if (fit === "cover") {
|
|
40
|
+
const targetAspect = props.displayWidth / props.displayHeight;
|
|
41
|
+
const textureAspect = textureWidth / textureHeight;
|
|
42
|
+
const scale = targetAspect < textureAspect ? props.displayHeight / textureHeight : props.displayWidth / textureWidth;
|
|
43
|
+
sprite.setScale(scale);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
} else if (props.displayWidth !== void 0) {
|
|
47
|
+
const scale = props.displayWidth / sprite.width;
|
|
48
|
+
sprite.setScale(scale);
|
|
49
|
+
} else if (props.displayHeight !== void 0) {
|
|
50
|
+
const scale = props.displayHeight / sprite.height;
|
|
51
|
+
sprite.setScale(scale);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (props.animationKey) {
|
|
55
|
+
if (sprite.scene && sprite.scene.anims.exists(props.animationKey)) {
|
|
56
|
+
sprite.anims.play({
|
|
57
|
+
key: props.animationKey,
|
|
58
|
+
repeat: props.loop ? -1 : 0,
|
|
59
|
+
repeatDelay: props.repeatDelay ?? 0
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (props.onAnimationStart) {
|
|
64
|
+
sprite.on("animationstart", (anim) => {
|
|
65
|
+
props.onAnimationStart?.(anim.key);
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
if (props.onAnimationComplete) {
|
|
69
|
+
sprite.on("animationcomplete", (anim) => {
|
|
70
|
+
props.onAnimationComplete?.(anim.key);
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
if (props.onAnimationRepeat) {
|
|
74
|
+
sprite.on("animationrepeat", (anim) => {
|
|
75
|
+
props.onAnimationRepeat?.(anim.key);
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
if (props.onAnimationUpdate) {
|
|
79
|
+
sprite.on(
|
|
80
|
+
"animationupdate",
|
|
81
|
+
(anim, frame) => {
|
|
82
|
+
props.onAnimationUpdate?.(anim.key, frame);
|
|
83
|
+
}
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
createSpriteLayout.createSpriteLayout(sprite, props);
|
|
87
|
+
if (props.onReady) {
|
|
88
|
+
props.onReady(sprite);
|
|
89
|
+
}
|
|
90
|
+
return sprite;
|
|
91
|
+
};
|
|
92
|
+
const spritePatcher = (node, prev, next) => {
|
|
93
|
+
applyTransform.applyTransformProps(node, prev, next);
|
|
94
|
+
applyPhaser.applyPhaserProps(node, prev, next);
|
|
95
|
+
applySprite.applySpriteProps(node, prev, next);
|
|
96
|
+
applySpriteLayout.applySpriteLayout(node, prev, next);
|
|
97
|
+
};
|
|
98
|
+
exports.spriteCreator = spriteCreator;
|
|
99
|
+
exports.spritePatcher = spritePatcher;
|
|
100
|
+
//# sourceMappingURL=sprite.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sprite.cjs","sources":["../../../src/components/primitives/sprite.ts"],"sourcesContent":["/**\n * Sprite component - Phaser Sprite GameObject (animated texture)\n * Status: IMPLEMENTED ✅\n *\n * Design Overview:\n * ================\n *\n * 1. Component Role: ANIMATED GAME OBJECTS\n * Purpose: Display animated sprites in game scenes (characters, effects, particles)\n * Phaser Type: Phaser.GameObjects.Sprite (animation-capable texture rendering)\n * Characteristics:\n * - Always headless (does not affect parent layout)\n * - Supports Phaser Animation system\n * - Free positioning with rotation/scale\n *\n * 2. Headless Behavior: MANDATORY ✅\n * Decision: Sprites are ALWAYS headless (not configurable)\n * Reasoning:\n * - Sprites are game objects, not UI elements\n * - Should NOT affect parent layout dimensions\n * - Free positioning with full transform support (rotation, scale)\n * Layout Impact: Returns minimal size (0.01x0.01) - participates in alignment only\n * Use Cases:\n * - ✅ Game characters, particles, effects, free-floating objects\n * - ✅ Animated decorations, background elements\n * - ❌ NOT for layout-based UIs (use Image component instead)\n *\n * 3. Layout Size Provider: MINIMAL SIZE ✅\n * Implementation: Always returns { width: 0.01, height: 0.01 }\n * Reasoning:\n * - Sprites don't affect layout spacing\n * - Minimal size allows alignment but no spacing impact\n * - Simpler than getBounds() with same result\n *\n * 4. Animation System: PHASER ANIMATIONS ✅\n * Features:\n * - animationKey: Play pre-registered animation\n * - loop: Repeat animation indefinitely\n * - repeatDelay: Delay between animation repeats (ms)\n * Callbacks:\n * - onAnimationStart: Triggered when animation begins\n * - onAnimationComplete: Triggered when animation ends\n * - onAnimationRepeat: Triggered on each repeat\n * - onAnimationUpdate: Triggered on each frame update\n * Note: Animations must be pre-registered in Phaser AnimationManager\n *\n * 5. Texture & Sizing: LIKE IMAGE ✅\n * Props:\n * - texture: Texture key (required)\n * - frame: Frame from atlas/spritesheet\n * - tint: Color tint (0xRRGGBB)\n * - displayWidth/displayHeight: Scale sprite to fit\n * - fit: 'fill' | 'contain' | 'cover' (aspect ratio handling)\n * Error Handling: Missing texture → Phaser default (white square)\n *\n * 6. Origin Behavior: CENTERED (0.5, 0.5) ✅\n * Decision: Default origin (0.5, 0.5) - centered\n * Reasoning:\n * - Phaser sprite default\n * - Natural for rotation/scale pivot\n * - Game object semantics\n * Override: Use originX/originY props for custom origin\n *\n * 7. Performance: SPRITE BATCHING ✅\n * Strategy:\n * - Leverages Phaser's sprite batching (WebGL)\n * - Props that preserve batching: tint, alpha, scale, position\n * - Props that break batching: custom shaders, blend modes (use sparingly)\n * - Texture atlases strongly recommended for multiple sprites\n *\n * 8. Common Patterns:\n * Character:\n * <Sprite texture=\"player\" animationKey=\"walk\" loop={true} />\n * Particle Effect:\n * <Sprite texture=\"explosion\" animationKey=\"explode\" onAnimationComplete={destroy} />\n * Scaled Sprite:\n * <Sprite texture=\"coin\" displayWidth={32} displayHeight={32} fit=\"contain\" />\n *\n * Implementation Status:\n * ======================\n * [✅] Phaser Sprite creation with texture/frame support\n * [✅] Transform props (position, rotation, scale, alpha)\n * [✅] Layout system integration (always headless)\n * [✅] Origin handling (0.5, 0.5 default)\n * [✅] Display size with fit modes (contain/cover/fill)\n * [✅] Tint support\n * [✅] Animation system (play, loop, callbacks)\n * [✅] Texture and frame patching\n */\nimport type * as Phaser from 'phaser'\nimport type { LayoutProps, PhaserProps, TransformProps } from '../../core-props'\nimport type { HostCreator, HostPatcher } from '../../host'\nimport type { PropsDefaultExtension } from '../../types'\nimport { applyPhaserProps } from '../appliers/applyPhaser'\nimport { applySpriteProps } from '../appliers/applySprite'\nimport { applySpriteLayout } from '../appliers/applySpriteLayout'\nimport { applyTransformProps } from '../appliers/applyTransform'\nimport { createPhaser } from '../creators/createPhaser'\nimport { createSpriteLayout } from '../creators/createSpriteLayout'\nimport { createTransform, resolveAnimatableNumber } from '../creators/createTransform'\n\n/**\n * Base props for Sprite component\n */\nexport interface SpriteBaseProps extends TransformProps, PhaserProps, LayoutProps {\n /** Texture key (loaded via Phaser's texture manager) */\n texture: string\n\n /** Optional frame from texture atlas or spritesheet */\n frame?: string | number\n\n /** Tint color applied to sprite (0xRRGGBB) */\n tint?: number\n\n /** Display width (scales sprite to fit) */\n displayWidth?: number\n\n /** Display height (scales sprite to fit) */\n displayHeight?: number\n\n /**\n * How sprite should fit within bounds (if displayWidth/displayHeight set)\n * - 'fill': Stretch to fill (default, may distort aspect ratio)\n * - 'contain': Scale to fit within bounds, preserve aspect ratio\n * - 'cover': Scale to cover bounds, preserve aspect ratio (may crop)\n */\n fit?: 'fill' | 'contain' | 'cover'\n\n /** Animation key to play (pre-registered in Phaser AnimationManager) */\n animationKey?: string\n\n /** Loop animation (default: false) */\n loop?: boolean\n\n /** Delay between animation repeats in ms (default: 0) */\n repeatDelay?: number\n\n /** Callback when animation starts */\n onAnimationStart?: (key: string) => void\n\n /** Callback when animation completes */\n onAnimationComplete?: (key: string) => void\n\n /** Callback when animation repeats */\n onAnimationRepeat?: (key: string) => void\n\n /** Callback on each animation frame update */\n onAnimationUpdate?: (key: string, frame: Phaser.Animations.AnimationFrame) => void\n\n /** Origin X (0-1, default 0.5) */\n originX?: number\n\n /** Origin Y (0-1, default 0.5) */\n originY?: number\n}\n\n/**\n * Props for Sprite component\n */\nexport interface SpriteProps\n extends SpriteBaseProps, PropsDefaultExtension<Phaser.GameObjects.Sprite> {}\n\n/**\n * Sprite creator - creates a Phaser Sprite object with animations\n */\nexport const spriteCreator: HostCreator<'Sprite'> = (scene, props) => {\n const sprite = scene.add.sprite(\n resolveAnimatableNumber(props.x) ?? 0,\n resolveAnimatableNumber(props.y) ?? 0,\n props.texture,\n props.frame\n )\n\n // Set origin - always centered (0.5, 0.5) for sprites\n sprite.setOrigin(0.5, 0.5)\n\n // Apply custom origin if specified\n if (props.originX !== undefined || props.originY !== undefined) {\n sprite.setOrigin(props.originX ?? sprite.originX, props.originY ?? sprite.originY)\n }\n\n // Apply transform props (scale, rotation)\n createTransform(sprite, props)\n\n // Apply Phaser display props (alpha, depth, visible)\n createPhaser(sprite, props)\n\n // Apply sprite-specific props (tint, displaySize, fit)\n if (props.tint !== undefined) {\n sprite.setTint(props.tint)\n }\n\n // Apply displayWidth/displayHeight if specified\n if (props.displayWidth !== undefined || props.displayHeight !== undefined) {\n if (props.displayWidth !== undefined && props.displayHeight !== undefined) {\n // Both specified - use fit mode\n const fit = props.fit ?? 'fill'\n const textureWidth = sprite.width\n const textureHeight = sprite.height\n\n if (textureWidth > 0 && textureHeight > 0) {\n if (fit === 'fill') {\n sprite.setDisplaySize(props.displayWidth, props.displayHeight)\n } else if (fit === 'contain') {\n const targetAspect = props.displayWidth / props.displayHeight\n const textureAspect = textureWidth / textureHeight\n const scale =\n targetAspect > textureAspect\n ? props.displayHeight / textureHeight\n : props.displayWidth / textureWidth\n sprite.setScale(scale)\n } else if (fit === 'cover') {\n const targetAspect = props.displayWidth / props.displayHeight\n const textureAspect = textureWidth / textureHeight\n const scale =\n targetAspect < textureAspect\n ? props.displayHeight / textureHeight\n : props.displayWidth / textureWidth\n sprite.setScale(scale)\n }\n }\n } else if (props.displayWidth !== undefined) {\n const scale = props.displayWidth / sprite.width\n sprite.setScale(scale)\n } else if (props.displayHeight !== undefined) {\n const scale = props.displayHeight / sprite.height\n sprite.setScale(scale)\n }\n }\n\n // Setup animation system\n // Only play if the animation is already registered in the AnimationManager.\n // Calling `sprite.anims.play` with a missing key causes Phaser to log\n // \"Missing animation: <key>\". Many examples register animations in a\n // separate effect that may run after the Sprite is created, so avoid\n // attempting to play until the animation actually exists.\n if (props.animationKey) {\n if (sprite.scene && sprite.scene.anims.exists(props.animationKey)) {\n sprite.anims.play({\n key: props.animationKey,\n repeat: props.loop ? -1 : 0,\n repeatDelay: props.repeatDelay ?? 0,\n })\n }\n }\n\n // Setup animation callbacks\n if (props.onAnimationStart) {\n sprite.on('animationstart', (anim: Phaser.Animations.Animation) => {\n props.onAnimationStart?.(anim.key)\n })\n }\n\n if (props.onAnimationComplete) {\n sprite.on('animationcomplete', (anim: Phaser.Animations.Animation) => {\n props.onAnimationComplete?.(anim.key)\n })\n }\n\n if (props.onAnimationRepeat) {\n sprite.on('animationrepeat', (anim: Phaser.Animations.Animation) => {\n props.onAnimationRepeat?.(anim.key)\n })\n }\n\n if (props.onAnimationUpdate) {\n sprite.on(\n 'animationupdate',\n (anim: Phaser.Animations.Animation, frame: Phaser.Animations.AnimationFrame) => {\n props.onAnimationUpdate?.(anim.key, frame)\n }\n )\n }\n\n // Setup layout system (props and size provider)\n createSpriteLayout(sprite, props)\n\n // Call onReady callback if provided\n if (props.onReady) {\n props.onReady(sprite)\n }\n\n return sprite\n}\n\n/**\n * Sprite patcher - updates Sprite properties\n */\nexport const spritePatcher: HostPatcher<'Sprite'> = (node, prev, next) => {\n // Apply transform props (position, rotation, scale)\n applyTransformProps(node, prev, next)\n\n // Apply Phaser display props (alpha, depth, visible)\n applyPhaserProps(node, prev, next)\n\n // Apply sprite-specific props (texture, frame, tint, displaySize, fit, animations)\n applySpriteProps(node, prev, next)\n\n // Apply layout props and update size provider if needed\n applySpriteLayout(node, prev, next)\n}\n"],"names":["resolveAnimatableNumber","createTransform","createPhaser","createSpriteLayout","applyTransformProps","applyPhaserProps","applySpriteProps","applySpriteLayout"],"mappings":";;;;;;;;;AAqKO,MAAM,gBAAuC,CAAC,OAAO,UAAU;AACpE,QAAM,SAAS,MAAM,IAAI;AAAA,IACvBA,wCAAwB,MAAM,CAAC,KAAK;AAAA,IACpCA,wCAAwB,MAAM,CAAC,KAAK;AAAA,IACpC,MAAM;AAAA,IACN,MAAM;AAAA,EAAA;AAIR,SAAO,UAAU,KAAK,GAAG;AAGzB,MAAI,MAAM,YAAY,UAAa,MAAM,YAAY,QAAW;AAC9D,WAAO,UAAU,MAAM,WAAW,OAAO,SAAS,MAAM,WAAW,OAAO,OAAO;AAAA,EACnF;AAGAC,kBAAAA,gBAAgB,QAAQ,KAAK;AAG7BC,eAAAA,aAAa,QAAQ,KAAK;AAG1B,MAAI,MAAM,SAAS,QAAW;AAC5B,WAAO,QAAQ,MAAM,IAAI;AAAA,EAC3B;AAGA,MAAI,MAAM,iBAAiB,UAAa,MAAM,kBAAkB,QAAW;AACzE,QAAI,MAAM,iBAAiB,UAAa,MAAM,kBAAkB,QAAW;AAEzE,YAAM,MAAM,MAAM,OAAO;AACzB,YAAM,eAAe,OAAO;AAC5B,YAAM,gBAAgB,OAAO;AAE7B,UAAI,eAAe,KAAK,gBAAgB,GAAG;AACzC,YAAI,QAAQ,QAAQ;AAClB,iBAAO,eAAe,MAAM,cAAc,MAAM,aAAa;AAAA,QAC/D,WAAW,QAAQ,WAAW;AAC5B,gBAAM,eAAe,MAAM,eAAe,MAAM;AAChD,gBAAM,gBAAgB,eAAe;AACrC,gBAAM,QACJ,eAAe,gBACX,MAAM,gBAAgB,gBACtB,MAAM,eAAe;AAC3B,iBAAO,SAAS,KAAK;AAAA,QACvB,WAAW,QAAQ,SAAS;AAC1B,gBAAM,eAAe,MAAM,eAAe,MAAM;AAChD,gBAAM,gBAAgB,eAAe;AACrC,gBAAM,QACJ,eAAe,gBACX,MAAM,gBAAgB,gBACtB,MAAM,eAAe;AAC3B,iBAAO,SAAS,KAAK;AAAA,QACvB;AAAA,MACF;AAAA,IACF,WAAW,MAAM,iBAAiB,QAAW;AAC3C,YAAM,QAAQ,MAAM,eAAe,OAAO;AAC1C,aAAO,SAAS,KAAK;AAAA,IACvB,WAAW,MAAM,kBAAkB,QAAW;AAC5C,YAAM,QAAQ,MAAM,gBAAgB,OAAO;AAC3C,aAAO,SAAS,KAAK;AAAA,IACvB;AAAA,EACF;AAQA,MAAI,MAAM,cAAc;AACtB,QAAI,OAAO,SAAS,OAAO,MAAM,MAAM,OAAO,MAAM,YAAY,GAAG;AACjE,aAAO,MAAM,KAAK;AAAA,QAChB,KAAK,MAAM;AAAA,QACX,QAAQ,MAAM,OAAO,KAAK;AAAA,QAC1B,aAAa,MAAM,eAAe;AAAA,MAAA,CACnC;AAAA,IACH;AAAA,EACF;AAGA,MAAI,MAAM,kBAAkB;AAC1B,WAAO,GAAG,kBAAkB,CAAC,SAAsC;AACjE,YAAM,mBAAmB,KAAK,GAAG;AAAA,IACnC,CAAC;AAAA,EACH;AAEA,MAAI,MAAM,qBAAqB;AAC7B,WAAO,GAAG,qBAAqB,CAAC,SAAsC;AACpE,YAAM,sBAAsB,KAAK,GAAG;AAAA,IACtC,CAAC;AAAA,EACH;AAEA,MAAI,MAAM,mBAAmB;AAC3B,WAAO,GAAG,mBAAmB,CAAC,SAAsC;AAClE,YAAM,oBAAoB,KAAK,GAAG;AAAA,IACpC,CAAC;AAAA,EACH;AAEA,MAAI,MAAM,mBAAmB;AAC3B,WAAO;AAAA,MACL;AAAA,MACA,CAAC,MAAmC,UAA4C;AAC9E,cAAM,oBAAoB,KAAK,KAAK,KAAK;AAAA,MAC3C;AAAA,IAAA;AAAA,EAEJ;AAGAC,qBAAAA,mBAAmB,QAAQ,KAAK;AAGhC,MAAI,MAAM,SAAS;AACjB,UAAM,QAAQ,MAAM;AAAA,EACtB;AAEA,SAAO;AACT;AAKO,MAAM,gBAAuC,CAAC,MAAM,MAAM,SAAS;AAExEC,qCAAoB,MAAM,MAAM,IAAI;AAGpCC,+BAAiB,MAAM,MAAM,IAAI;AAGjCC,+BAAiB,MAAM,MAAM,IAAI;AAGjCC,sCAAkB,MAAM,MAAM,IAAI;AACpC;;;"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { LayoutProps, PhaserProps, TransformProps } from '../../core-props';
|
|
2
|
+
import { HostCreator, HostPatcher } from '../../host';
|
|
3
|
+
import { PropsDefaultExtension } from '../../types';
|
|
4
|
+
/**
|
|
5
|
+
* Sprite component - Phaser Sprite GameObject (animated texture)
|
|
6
|
+
* Status: IMPLEMENTED ✅
|
|
7
|
+
*
|
|
8
|
+
* Design Overview:
|
|
9
|
+
* ================
|
|
10
|
+
*
|
|
11
|
+
* 1. Component Role: ANIMATED GAME OBJECTS
|
|
12
|
+
* Purpose: Display animated sprites in game scenes (characters, effects, particles)
|
|
13
|
+
* Phaser Type: Phaser.GameObjects.Sprite (animation-capable texture rendering)
|
|
14
|
+
* Characteristics:
|
|
15
|
+
* - Always headless (does not affect parent layout)
|
|
16
|
+
* - Supports Phaser Animation system
|
|
17
|
+
* - Free positioning with rotation/scale
|
|
18
|
+
*
|
|
19
|
+
* 2. Headless Behavior: MANDATORY ✅
|
|
20
|
+
* Decision: Sprites are ALWAYS headless (not configurable)
|
|
21
|
+
* Reasoning:
|
|
22
|
+
* - Sprites are game objects, not UI elements
|
|
23
|
+
* - Should NOT affect parent layout dimensions
|
|
24
|
+
* - Free positioning with full transform support (rotation, scale)
|
|
25
|
+
* Layout Impact: Returns minimal size (0.01x0.01) - participates in alignment only
|
|
26
|
+
* Use Cases:
|
|
27
|
+
* - ✅ Game characters, particles, effects, free-floating objects
|
|
28
|
+
* - ✅ Animated decorations, background elements
|
|
29
|
+
* - ❌ NOT for layout-based UIs (use Image component instead)
|
|
30
|
+
*
|
|
31
|
+
* 3. Layout Size Provider: MINIMAL SIZE ✅
|
|
32
|
+
* Implementation: Always returns { width: 0.01, height: 0.01 }
|
|
33
|
+
* Reasoning:
|
|
34
|
+
* - Sprites don't affect layout spacing
|
|
35
|
+
* - Minimal size allows alignment but no spacing impact
|
|
36
|
+
* - Simpler than getBounds() with same result
|
|
37
|
+
*
|
|
38
|
+
* 4. Animation System: PHASER ANIMATIONS ✅
|
|
39
|
+
* Features:
|
|
40
|
+
* - animationKey: Play pre-registered animation
|
|
41
|
+
* - loop: Repeat animation indefinitely
|
|
42
|
+
* - repeatDelay: Delay between animation repeats (ms)
|
|
43
|
+
* Callbacks:
|
|
44
|
+
* - onAnimationStart: Triggered when animation begins
|
|
45
|
+
* - onAnimationComplete: Triggered when animation ends
|
|
46
|
+
* - onAnimationRepeat: Triggered on each repeat
|
|
47
|
+
* - onAnimationUpdate: Triggered on each frame update
|
|
48
|
+
* Note: Animations must be pre-registered in Phaser AnimationManager
|
|
49
|
+
*
|
|
50
|
+
* 5. Texture & Sizing: LIKE IMAGE ✅
|
|
51
|
+
* Props:
|
|
52
|
+
* - texture: Texture key (required)
|
|
53
|
+
* - frame: Frame from atlas/spritesheet
|
|
54
|
+
* - tint: Color tint (0xRRGGBB)
|
|
55
|
+
* - displayWidth/displayHeight: Scale sprite to fit
|
|
56
|
+
* - fit: 'fill' | 'contain' | 'cover' (aspect ratio handling)
|
|
57
|
+
* Error Handling: Missing texture → Phaser default (white square)
|
|
58
|
+
*
|
|
59
|
+
* 6. Origin Behavior: CENTERED (0.5, 0.5) ✅
|
|
60
|
+
* Decision: Default origin (0.5, 0.5) - centered
|
|
61
|
+
* Reasoning:
|
|
62
|
+
* - Phaser sprite default
|
|
63
|
+
* - Natural for rotation/scale pivot
|
|
64
|
+
* - Game object semantics
|
|
65
|
+
* Override: Use originX/originY props for custom origin
|
|
66
|
+
*
|
|
67
|
+
* 7. Performance: SPRITE BATCHING ✅
|
|
68
|
+
* Strategy:
|
|
69
|
+
* - Leverages Phaser's sprite batching (WebGL)
|
|
70
|
+
* - Props that preserve batching: tint, alpha, scale, position
|
|
71
|
+
* - Props that break batching: custom shaders, blend modes (use sparingly)
|
|
72
|
+
* - Texture atlases strongly recommended for multiple sprites
|
|
73
|
+
*
|
|
74
|
+
* 8. Common Patterns:
|
|
75
|
+
* Character:
|
|
76
|
+
* <Sprite texture="player" animationKey="walk" loop={true} />
|
|
77
|
+
* Particle Effect:
|
|
78
|
+
* <Sprite texture="explosion" animationKey="explode" onAnimationComplete={destroy} />
|
|
79
|
+
* Scaled Sprite:
|
|
80
|
+
* <Sprite texture="coin" displayWidth={32} displayHeight={32} fit="contain" />
|
|
81
|
+
*
|
|
82
|
+
* Implementation Status:
|
|
83
|
+
* ======================
|
|
84
|
+
* [✅] Phaser Sprite creation with texture/frame support
|
|
85
|
+
* [✅] Transform props (position, rotation, scale, alpha)
|
|
86
|
+
* [✅] Layout system integration (always headless)
|
|
87
|
+
* [✅] Origin handling (0.5, 0.5 default)
|
|
88
|
+
* [✅] Display size with fit modes (contain/cover/fill)
|
|
89
|
+
* [✅] Tint support
|
|
90
|
+
* [✅] Animation system (play, loop, callbacks)
|
|
91
|
+
* [✅] Texture and frame patching
|
|
92
|
+
*/
|
|
93
|
+
import type * as Phaser from 'phaser';
|
|
94
|
+
/**
|
|
95
|
+
* Base props for Sprite component
|
|
96
|
+
*/
|
|
97
|
+
export interface SpriteBaseProps extends TransformProps, PhaserProps, LayoutProps {
|
|
98
|
+
/** Texture key (loaded via Phaser's texture manager) */
|
|
99
|
+
texture: string;
|
|
100
|
+
/** Optional frame from texture atlas or spritesheet */
|
|
101
|
+
frame?: string | number;
|
|
102
|
+
/** Tint color applied to sprite (0xRRGGBB) */
|
|
103
|
+
tint?: number;
|
|
104
|
+
/** Display width (scales sprite to fit) */
|
|
105
|
+
displayWidth?: number;
|
|
106
|
+
/** Display height (scales sprite to fit) */
|
|
107
|
+
displayHeight?: number;
|
|
108
|
+
/**
|
|
109
|
+
* How sprite should fit within bounds (if displayWidth/displayHeight set)
|
|
110
|
+
* - 'fill': Stretch to fill (default, may distort aspect ratio)
|
|
111
|
+
* - 'contain': Scale to fit within bounds, preserve aspect ratio
|
|
112
|
+
* - 'cover': Scale to cover bounds, preserve aspect ratio (may crop)
|
|
113
|
+
*/
|
|
114
|
+
fit?: 'fill' | 'contain' | 'cover';
|
|
115
|
+
/** Animation key to play (pre-registered in Phaser AnimationManager) */
|
|
116
|
+
animationKey?: string;
|
|
117
|
+
/** Loop animation (default: false) */
|
|
118
|
+
loop?: boolean;
|
|
119
|
+
/** Delay between animation repeats in ms (default: 0) */
|
|
120
|
+
repeatDelay?: number;
|
|
121
|
+
/** Callback when animation starts */
|
|
122
|
+
onAnimationStart?: (key: string) => void;
|
|
123
|
+
/** Callback when animation completes */
|
|
124
|
+
onAnimationComplete?: (key: string) => void;
|
|
125
|
+
/** Callback when animation repeats */
|
|
126
|
+
onAnimationRepeat?: (key: string) => void;
|
|
127
|
+
/** Callback on each animation frame update */
|
|
128
|
+
onAnimationUpdate?: (key: string, frame: Phaser.Animations.AnimationFrame) => void;
|
|
129
|
+
/** Origin X (0-1, default 0.5) */
|
|
130
|
+
originX?: number;
|
|
131
|
+
/** Origin Y (0-1, default 0.5) */
|
|
132
|
+
originY?: number;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Props for Sprite component
|
|
136
|
+
*/
|
|
137
|
+
export interface SpriteProps extends SpriteBaseProps, PropsDefaultExtension<Phaser.GameObjects.Sprite> {
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Sprite creator - creates a Phaser Sprite object with animations
|
|
141
|
+
*/
|
|
142
|
+
export declare const spriteCreator: HostCreator<'Sprite'>;
|
|
143
|
+
/**
|
|
144
|
+
* Sprite patcher - updates Sprite properties
|
|
145
|
+
*/
|
|
146
|
+
export declare const spritePatcher: HostPatcher<'Sprite'>;
|
|
147
|
+
//# sourceMappingURL=sprite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sprite.d.ts","sourceRoot":"","sources":["../../../src/components/primitives/sprite.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwFG;AACH,OAAO,KAAK,KAAK,MAAM,MAAM,QAAQ,CAAA;AACrC,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAC1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AASxD;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,cAAc,EAAE,WAAW,EAAE,WAAW;IAC/E,wDAAwD;IACxD,OAAO,EAAE,MAAM,CAAA;IAEf,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAEvB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,CAAA;IAEb,2CAA2C;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB,4CAA4C;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB;;;;;OAKG;IACH,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAA;IAElC,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB,sCAAsC;IACtC,IAAI,CAAC,EAAE,OAAO,CAAA;IAEd,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAA;IAEpB,qCAAqC;IACrC,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAExC,wCAAwC;IACxC,mBAAmB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAE3C,sCAAsC;IACtC,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;IAEzC,8CAA8C;IAC9C,iBAAiB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,cAAc,KAAK,IAAI,CAAA;IAElF,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAA;IAEhB,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,WACf,SAAQ,eAAe,EAAE,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC;CAAG;AAE9E;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,WAAW,CAAC,QAAQ,CAsH/C,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,WAAW,CAAC,QAAQ,CAY/C,CAAA"}
|