@number10/phaserjsx 0.1.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 +238 -0
- package/dist/TransformOriginView-BYPbRH8N.cjs +17045 -0
- package/dist/TransformOriginView-BYPbRH8N.cjs.map +1 -0
- package/dist/TransformOriginView-CO-tJCmV.js +17046 -0
- package/dist/TransformOriginView-CO-tJCmV.js.map +1 -0
- package/dist/animation/animated-signal.d.ts +35 -0
- package/dist/animation/animated-signal.d.ts.map +1 -0
- package/dist/animation/index.d.ts +7 -0
- package/dist/animation/index.d.ts.map +1 -0
- package/dist/animation/spring-physics.d.ts +120 -0
- package/dist/animation/spring-physics.d.ts.map +1 -0
- package/dist/animation/useSpring.d.ts +54 -0
- package/dist/animation/useSpring.d.ts.map +1 -0
- package/dist/colors/color-presets.d.ts +89 -0
- package/dist/colors/color-presets.d.ts.map +1 -0
- package/dist/colors/color-theme-helpers.d.ts +65 -0
- package/dist/colors/color-theme-helpers.d.ts.map +1 -0
- package/dist/colors/color-types.d.ts +100 -0
- package/dist/colors/color-types.d.ts.map +1 -0
- package/dist/colors/color-utils.d.ts +171 -0
- package/dist/colors/color-utils.d.ts.map +1 -0
- package/dist/colors/index.d.ts +17 -0
- package/dist/colors/index.d.ts.map +1 -0
- package/dist/colors/preset-manager.d.ts +35 -0
- package/dist/colors/preset-manager.d.ts.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-colors.d.ts +40 -0
- package/dist/colors/use-colors.d.ts.map +1 -0
- package/dist/components/appliers/applyBackground.d.ts +13 -0
- package/dist/components/appliers/applyBackground.d.ts.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/applyGraphics.d.ts +10 -0
- package/dist/components/appliers/applyGraphics.d.ts.map +1 -0
- package/dist/components/appliers/applyGraphicsLayout.d.ts +10 -0
- package/dist/components/appliers/applyGraphicsLayout.d.ts.map +1 -0
- package/dist/components/appliers/applyImage.d.ts +10 -0
- package/dist/components/appliers/applyImage.d.ts.map +1 -0
- package/dist/components/appliers/applyImageLayout.d.ts +15 -0
- package/dist/components/appliers/applyImageLayout.d.ts.map +1 -0
- package/dist/components/appliers/applyLayout.d.ts +15 -0
- package/dist/components/appliers/applyLayout.d.ts.map +1 -0
- package/dist/components/appliers/applyNineSlice.d.ts +11 -0
- package/dist/components/appliers/applyNineSlice.d.ts.map +1 -0
- package/dist/components/appliers/applyNineSliceLayout.d.ts +15 -0
- package/dist/components/appliers/applyNineSliceLayout.d.ts.map +1 -0
- package/dist/components/appliers/applyPhaser.d.ts +22 -0
- package/dist/components/appliers/applyPhaser.d.ts.map +1 -0
- package/dist/components/appliers/applySprite.d.ts +10 -0
- package/dist/components/appliers/applySprite.d.ts.map +1 -0
- package/dist/components/appliers/applySpriteLayout.d.ts +14 -0
- package/dist/components/appliers/applySpriteLayout.d.ts.map +1 -0
- package/dist/components/appliers/applyText.d.ts +25 -0
- package/dist/components/appliers/applyText.d.ts.map +1 -0
- package/dist/components/appliers/applyTextLayout.d.ts +15 -0
- package/dist/components/appliers/applyTextLayout.d.ts.map +1 -0
- package/dist/components/appliers/applyTooltip.d.ts +12 -0
- package/dist/components/appliers/applyTooltip.d.ts.map +1 -0
- package/dist/components/appliers/applyTransform.d.ts +21 -0
- package/dist/components/appliers/applyTransform.d.ts.map +1 -0
- package/dist/components/creators/createBackground.d.ts +15 -0
- package/dist/components/creators/createBackground.d.ts.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/createGraphicsLayout.d.ts +9 -0
- package/dist/components/creators/createGraphicsLayout.d.ts.map +1 -0
- package/dist/components/creators/createImageLayout.d.ts +14 -0
- package/dist/components/creators/createImageLayout.d.ts.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/createNineSliceLayout.d.ts +14 -0
- package/dist/components/creators/createNineSliceLayout.d.ts.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/createSpriteLayout.d.ts +15 -0
- package/dist/components/creators/createSpriteLayout.d.ts.map +1 -0
- package/dist/components/creators/createTextLayout.d.ts +14 -0
- package/dist/components/creators/createTextLayout.d.ts.map +1 -0
- package/dist/components/creators/createTransform.d.ts +11 -0
- package/dist/components/creators/createTransform.d.ts.map +1 -0
- package/dist/components/custom/Accordion.d.ts +34 -0
- package/dist/components/custom/Accordion.d.ts.map +1 -0
- package/dist/components/custom/AlertDialog.d.ts +63 -0
- package/dist/components/custom/AlertDialog.d.ts.map +1 -0
- package/dist/components/custom/Button.d.ts +44 -0
- package/dist/components/custom/Button.d.ts.map +1 -0
- package/dist/components/custom/CharText/CharText.d.ts +8 -0
- package/dist/components/custom/CharText/CharText.d.ts.map +1 -0
- package/dist/components/custom/CharText/index.d.ts +3 -0
- package/dist/components/custom/CharText/index.d.ts.map +1 -0
- package/dist/components/custom/CharText/types.d.ts +117 -0
- package/dist/components/custom/CharText/types.d.ts.map +1 -0
- package/dist/components/custom/CharText/utils.d.ts +34 -0
- package/dist/components/custom/CharText/utils.d.ts.map +1 -0
- package/dist/components/custom/CharTextInput.d.ts +62 -0
- package/dist/components/custom/CharTextInput.d.ts.map +1 -0
- package/dist/components/custom/Dialog.d.ts +60 -0
- package/dist/components/custom/Dialog.d.ts.map +1 -0
- package/dist/components/custom/Divider.d.ts +21 -0
- package/dist/components/custom/Divider.d.ts.map +1 -0
- package/dist/components/custom/Dropdown.d.ts +91 -0
- package/dist/components/custom/Dropdown.d.ts.map +1 -0
- package/dist/components/custom/Icon.d.ts +75 -0
- package/dist/components/custom/Icon.d.ts.map +1 -0
- package/dist/components/custom/Image.d.ts +50 -0
- package/dist/components/custom/Image.d.ts.map +1 -0
- package/dist/components/custom/Modal.d.ts +37 -0
- package/dist/components/custom/Modal.d.ts.map +1 -0
- package/dist/components/custom/NineSlice.d.ts +81 -0
- package/dist/components/custom/NineSlice.d.ts.map +1 -0
- package/dist/components/custom/NineSliceButton.d.ts +128 -0
- package/dist/components/custom/NineSliceButton.d.ts.map +1 -0
- package/dist/components/custom/Portal.d.ts +43 -0
- package/dist/components/custom/Portal.d.ts.map +1 -0
- package/dist/components/custom/Portal.test.d.ts +2 -0
- package/dist/components/custom/Portal.test.d.ts.map +1 -0
- package/dist/components/custom/RadioButton.d.ts +20 -0
- package/dist/components/custom/RadioButton.d.ts.map +1 -0
- package/dist/components/custom/RadioGroup.d.ts +33 -0
- package/dist/components/custom/RadioGroup.d.ts.map +1 -0
- package/dist/components/custom/RefOriginView.d.ts +45 -0
- package/dist/components/custom/RefOriginView.d.ts.map +1 -0
- package/dist/components/custom/ScrollSlider.d.ts +36 -0
- package/dist/components/custom/ScrollSlider.d.ts.map +1 -0
- package/dist/components/custom/ScrollView.d.ts +48 -0
- package/dist/components/custom/ScrollView.d.ts.map +1 -0
- package/dist/components/custom/Sidebar.d.ts +50 -0
- package/dist/components/custom/Sidebar.d.ts.map +1 -0
- package/dist/components/custom/Slider.d.ts +131 -0
- package/dist/components/custom/Slider.d.ts.map +1 -0
- package/dist/components/custom/Text.d.ts +26 -0
- package/dist/components/custom/Text.d.ts.map +1 -0
- package/dist/components/custom/Toggle.d.ts +51 -0
- package/dist/components/custom/Toggle.d.ts.map +1 -0
- package/dist/components/custom/TransformOriginView.d.ts +34 -0
- package/dist/components/custom/TransformOriginView.d.ts.map +1 -0
- package/dist/components/custom/View.d.ts +33 -0
- package/dist/components/custom/View.d.ts.map +1 -0
- package/dist/components/custom/WrapText.d.ts +60 -0
- package/dist/components/custom/WrapText.d.ts.map +1 -0
- package/dist/components/custom/index.cjs +32 -0
- package/dist/components/custom/index.cjs.map +1 -0
- package/dist/components/custom/index.d.ts +29 -0
- package/dist/components/custom/index.d.ts.map +1 -0
- package/dist/components/custom/index.js +32 -0
- package/dist/components/custom/index.js.map +1 -0
- package/dist/components/index.d.ts +28 -0
- package/dist/components/index.d.ts.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/primitives/graphics.d.ts +40 -0
- package/dist/components/primitives/graphics.d.ts.map +1 -0
- package/dist/components/primitives/image.d.ts +45 -0
- package/dist/components/primitives/image.d.ts.map +1 -0
- package/dist/components/primitives/nineslice.d.ts +111 -0
- package/dist/components/primitives/nineslice.d.ts.map +1 -0
- package/dist/components/primitives/sprite.d.ts +58 -0
- package/dist/components/primitives/sprite.d.ts.map +1 -0
- package/dist/components/primitives/text.d.ts +26 -0
- package/dist/components/primitives/text.d.ts.map +1 -0
- package/dist/components/primitives/tilesprite.d.ts +47 -0
- package/dist/components/primitives/tilesprite.d.ts.map +1 -0
- package/dist/components/primitives/view.d.ts +23 -0
- package/dist/components/primitives/view.d.ts.map +1 -0
- package/dist/core-props.d.ts +605 -0
- package/dist/core-props.d.ts.map +1 -0
- package/dist/core-types.d.ts +59 -0
- package/dist/core-types.d.ts.map +1 -0
- package/dist/design-tokens/design-token-presets.d.ts +26 -0
- package/dist/design-tokens/design-token-presets.d.ts.map +1 -0
- package/dist/design-tokens/design-token-types.d.ts +109 -0
- package/dist/design-tokens/design-token-types.d.ts.map +1 -0
- package/dist/design-tokens/index.d.ts +8 -0
- package/dist/design-tokens/index.d.ts.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/dev-config.d.ts +238 -0
- package/dist/dev-config.d.ts.map +1 -0
- package/dist/effects/effect-registry.d.ts +54 -0
- package/dist/effects/effect-registry.d.ts.map +1 -0
- package/dist/effects/index.d.ts +56 -0
- package/dist/effects/index.d.ts.map +1 -0
- package/dist/effects/use-effect.d.ts +172 -0
- package/dist/effects/use-effect.d.ts.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.d.ts +21 -0
- package/dist/fx/convenience-hooks/use-blur.d.ts.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-shadow.d.ts +21 -0
- package/dist/fx/convenience-hooks/use-shadow.d.ts.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/color-matrix.d.ts +31 -0
- package/dist/fx/fx-creators/color-matrix.d.ts.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/index.d.ts +10 -0
- package/dist/fx/fx-creators/index.d.ts.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/shadow.d.ts +43 -0
- package/dist/fx/fx-creators/shadow.d.ts.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-registry.d.ts +59 -0
- package/dist/fx/fx-registry.d.ts.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.d.ts +53 -0
- package/dist/fx/use-fx.d.ts.map +1 -0
- package/dist/gestures/gesture-manager.d.ts +149 -0
- package/dist/gestures/gesture-manager.d.ts.map +1 -0
- package/dist/gestures/gesture-types.d.ts +229 -0
- package/dist/gestures/gesture-types.d.ts.map +1 -0
- package/dist/hooks-svg.d.ts +104 -0
- package/dist/hooks-svg.d.ts.map +1 -0
- package/dist/hooks.d.ts +135 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/host.d.ts +74 -0
- package/dist/host.d.ts.map +1 -0
- package/dist/index.cjs +584 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +582 -0
- package/dist/index.js.map +1 -0
- package/dist/jsx-dev-runtime.cjs +10 -0
- package/dist/jsx-dev-runtime.cjs.map +1 -0
- package/dist/jsx-dev-runtime.d.ts +5 -0
- package/dist/jsx-dev-runtime.d.ts.map +1 -0
- package/dist/jsx-dev-runtime.js +11 -0
- package/dist/jsx-dev-runtime.js.map +1 -0
- package/dist/jsx-runtime.cjs +43 -0
- package/dist/jsx-runtime.cjs.map +1 -0
- package/dist/jsx-runtime.d.ts +25 -0
- package/dist/jsx-runtime.d.ts.map +1 -0
- package/dist/jsx-runtime.js +43 -0
- package/dist/jsx-runtime.js.map +1 -0
- package/dist/jsx-types.d.ts +33 -0
- package/dist/jsx-types.d.ts.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/container-applier.d.ts +9 -0
- package/dist/layout/appliers/container-applier.d.ts.map +1 -0
- package/dist/layout/appliers/position-applier.d.ts +8 -0
- package/dist/layout/appliers/position-applier.d.ts.map +1 -0
- package/dist/layout/index.d.ts +22 -0
- package/dist/layout/index.d.ts.map +1 -0
- package/dist/layout/layout-engine-test-utils.d.ts +19 -0
- package/dist/layout/layout-engine-test-utils.d.ts.map +1 -0
- package/dist/layout/layout-engine.d.ts +98 -0
- package/dist/layout/layout-engine.d.ts.map +1 -0
- package/dist/layout/strategies/base-strategy.d.ts +59 -0
- package/dist/layout/strategies/base-strategy.d.ts.map +1 -0
- package/dist/layout/strategies/column-layout.d.ts +38 -0
- package/dist/layout/strategies/column-layout.d.ts.map +1 -0
- package/dist/layout/strategies/row-layout.d.ts +38 -0
- package/dist/layout/strategies/row-layout.d.ts.map +1 -0
- package/dist/layout/strategies/stack-layout.d.ts +30 -0
- package/dist/layout/strategies/stack-layout.d.ts.map +1 -0
- package/dist/layout/types.d.ts +137 -0
- package/dist/layout/types.d.ts.map +1 -0
- package/dist/layout/utils/child-utils.d.ts +74 -0
- package/dist/layout/utils/child-utils.d.ts.map +1 -0
- package/dist/layout/utils/dimension-calculator.d.ts +59 -0
- package/dist/layout/utils/dimension-calculator.d.ts.map +1 -0
- package/dist/layout/utils/flex-distributor.d.ts +18 -0
- package/dist/layout/utils/flex-distributor.d.ts.map +1 -0
- package/dist/layout/utils/size-resolver.d.ts +84 -0
- package/dist/layout/utils/size-resolver.d.ts.map +1 -0
- package/dist/layout/utils/spacing-calculator.d.ts +27 -0
- package/dist/layout/utils/spacing-calculator.d.ts.map +1 -0
- package/dist/memo.d.ts +29 -0
- package/dist/memo.d.ts.map +1 -0
- package/dist/portal/index.d.ts +6 -0
- package/dist/portal/index.d.ts.map +1 -0
- package/dist/portal/portal-registry.d.ts +97 -0
- package/dist/portal/portal-registry.d.ts.map +1 -0
- package/dist/portal/portal-types.d.ts +20 -0
- package/dist/portal/portal-types.d.ts.map +1 -0
- package/dist/render-context.d.ts +118 -0
- package/dist/render-context.d.ts.map +1 -0
- package/dist/scripts/generate-icon-loaders.d.ts +2 -0
- package/dist/scripts/generate-icon-loaders.d.ts.map +1 -0
- package/dist/scripts/generate-icon-loaders.js +195 -0
- package/dist/scripts/generate-icon-types.d.ts +2 -0
- package/dist/scripts/generate-icon-types.d.ts.map +1 -0
- package/dist/scripts/generate-icon-types.js +124 -0
- package/dist/scripts/generate-icons.d.ts +37 -0
- package/dist/scripts/generate-icons.d.ts.map +1 -0
- package/dist/scripts/generate-icons.js +494 -0
- package/dist/scripts/icon-generator-config.d.ts +87 -0
- package/dist/scripts/icon-generator-config.d.ts.map +1 -0
- package/dist/scripts/icon-generator-config.js +6 -0
- package/dist/theme-base.d.ts +116 -0
- package/dist/theme-base.d.ts.map +1 -0
- package/dist/theme-custom.d.ts +262 -0
- package/dist/theme-custom.d.ts.map +1 -0
- package/dist/theme-defaults.d.ts +6 -0
- package/dist/theme-defaults.d.ts.map +1 -0
- package/dist/theme.d.ts +132 -0
- package/dist/theme.d.ts.map +1 -0
- package/dist/tooltip/tooltip-types.d.ts +57 -0
- package/dist/tooltip/tooltip-types.d.ts.map +1 -0
- package/dist/types.d.ts +34 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/utils/KeyboardInputManager.d.ts +48 -0
- package/dist/utils/KeyboardInputManager.d.ts.map +1 -0
- package/dist/utils/dom-input-manager.d.ts +109 -0
- package/dist/utils/dom-input-manager.d.ts.map +1 -0
- package/dist/utils/svg-texture.d.ts +30 -0
- package/dist/utils/svg-texture.d.ts.map +1 -0
- package/dist/utils/texture-registry.d.ts +49 -0
- package/dist/utils/texture-registry.d.ts.map +1 -0
- package/dist/vdom.d.ts +60 -0
- package/dist/vdom.d.ts.map +1 -0
- package/dist/viewport-context.d.ts +39 -0
- package/dist/viewport-context.d.ts.map +1 -0
- package/dist/vite-plugin-icons.d.ts +29 -0
- package/dist/vite-plugin-icons.d.ts.map +1 -0
- package/dist/vite-plugin-icons.js +95 -0
- package/package.json +117 -0
|
@@ -0,0 +1,605 @@
|
|
|
1
|
+
import { FocusEventData, GestureEventData, InputEventData, KeyboardEventData, TouchMoveState, WheelEventData } from './gestures/gesture-types';
|
|
2
|
+
export type { FocusEventData, GestureEventData, InputEventData, KeyboardEventData, TouchMoveState, WheelEventData, };
|
|
3
|
+
/**
|
|
4
|
+
* Valid CSS-like size values with type safety
|
|
5
|
+
* - Fixed pixels: number or "20px"
|
|
6
|
+
* - Percentage: "50%", "100%"
|
|
7
|
+
* - Viewport units: "100vw", "50vh"
|
|
8
|
+
* - Keywords: "auto", "fill"
|
|
9
|
+
* - Calc expressions: "calc(100% - 20px)"
|
|
10
|
+
*/
|
|
11
|
+
export type SizeValue = number | 'auto' | 'fill' | `${number}%` | `${number}px` | `${number}vw` | `${number}vh` | `calc(${string})`;
|
|
12
|
+
/**
|
|
13
|
+
* Flex basis size values (subset of SizeValue, no "fill" keyword)
|
|
14
|
+
* - Fixed pixels: number or "20px"
|
|
15
|
+
* - Percentage: "50%", "100%"
|
|
16
|
+
* - Viewport units: "100vw", "50vh"
|
|
17
|
+
* - Keyword: "auto"
|
|
18
|
+
* - Calc expressions: "calc(50% + 10px)"
|
|
19
|
+
*/
|
|
20
|
+
export type FlexBasisValue = number | 'auto' | `${number}%` | `${number}px` | `${number}vw` | `${number}vh` | `calc(${string})`;
|
|
21
|
+
/**
|
|
22
|
+
* Display mode for visibility control
|
|
23
|
+
* - 'visible': Rendered and takes up layout space (default)
|
|
24
|
+
* - 'invisible': Not rendered but takes up layout space (like CSS visibility: hidden)
|
|
25
|
+
* - 'none': Not rendered and does not take up layout space (like CSS display: none)
|
|
26
|
+
*/
|
|
27
|
+
export type Display = 'visible' | 'invisible' | 'none';
|
|
28
|
+
/**
|
|
29
|
+
* Transform properties - geometric transformations (position, rotation, scale)
|
|
30
|
+
*/
|
|
31
|
+
export interface TransformProps {
|
|
32
|
+
x?: number;
|
|
33
|
+
y?: number;
|
|
34
|
+
rotation?: number;
|
|
35
|
+
scale?: number;
|
|
36
|
+
scaleX?: number;
|
|
37
|
+
scaleY?: number;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Phaser GameObject display properties - rendering and display list API
|
|
41
|
+
*/
|
|
42
|
+
export interface PhaserProps {
|
|
43
|
+
/**
|
|
44
|
+
* Alpha transparency of the game object
|
|
45
|
+
* - 0: Fully transparent
|
|
46
|
+
* - 1: Fully opaque
|
|
47
|
+
*/
|
|
48
|
+
alpha?: number;
|
|
49
|
+
/**
|
|
50
|
+
* Depth (Z-index) of the game object in the display list
|
|
51
|
+
* Higher values are rendered on top of lower values
|
|
52
|
+
* Allows manual control over rendering order independent of child array order
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* // Layer system in stack layout
|
|
56
|
+
* <View direction="stack">
|
|
57
|
+
* <View depth={1}>Background</View>
|
|
58
|
+
* <View depth={2}>Content</View>
|
|
59
|
+
* <View depth={3}>Overlay</View>
|
|
60
|
+
* </View>
|
|
61
|
+
*/
|
|
62
|
+
depth?: number;
|
|
63
|
+
/**
|
|
64
|
+
* Callback invoked when GameObject is created and fully initialized
|
|
65
|
+
* Useful for accessing GameObject properties (dimensions, bounds, etc.)
|
|
66
|
+
* without needing useRef
|
|
67
|
+
*
|
|
68
|
+
* @param node - The created Phaser GameObject
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* // Display image dimensions
|
|
72
|
+
* <Image
|
|
73
|
+
* texture="icon"
|
|
74
|
+
* onReady={(img) => console.log(`${img.width}x${img.height}`)}
|
|
75
|
+
* />
|
|
76
|
+
*
|
|
77
|
+
* // Access View bounds
|
|
78
|
+
* <View
|
|
79
|
+
* width={200}
|
|
80
|
+
* height={100}
|
|
81
|
+
* onReady={(view) => console.log(view.getBounds())}
|
|
82
|
+
* />
|
|
83
|
+
*/
|
|
84
|
+
onReady?: (node: Phaser.GameObjects.GameObject) => void;
|
|
85
|
+
/**
|
|
86
|
+
* Tooltip configuration callback (desktop/mouse only)
|
|
87
|
+
* Called when hover starts to determine tooltip configuration
|
|
88
|
+
* Return null/undefined to disable tooltip
|
|
89
|
+
* Return string as shortcut for { content: string }
|
|
90
|
+
*
|
|
91
|
+
* Note: Tooltips only work on desktop/mouse devices, not on touch devices (iPhone, iPad)
|
|
92
|
+
*
|
|
93
|
+
* @returns Tooltip configuration, string, or null to disable
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* // Simple text tooltip
|
|
97
|
+
* <Button onTooltip={() => "Click to delete"} />
|
|
98
|
+
*
|
|
99
|
+
* // With i18n/translation
|
|
100
|
+
* <Button onTooltip={() => t('buttons.delete')} />
|
|
101
|
+
*
|
|
102
|
+
* // Conditional tooltip
|
|
103
|
+
* <Button onTooltip={() => isAdmin ? "Admin action" : null} />
|
|
104
|
+
*
|
|
105
|
+
* // Full configuration
|
|
106
|
+
* <Button onTooltip={() => ({
|
|
107
|
+
* content: "Delete item",
|
|
108
|
+
* position: "top",
|
|
109
|
+
* showDelay: 100
|
|
110
|
+
* })} />
|
|
111
|
+
*
|
|
112
|
+
* // From repository/API
|
|
113
|
+
* <Button onTooltip={() => tooltipRepo.get('delete-btn')} />
|
|
114
|
+
*/
|
|
115
|
+
onTooltip?: import('./tooltip/tooltip-types').TooltipCallback;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Edge insets for margins and padding
|
|
119
|
+
*/
|
|
120
|
+
export interface EdgeInsets {
|
|
121
|
+
top?: number;
|
|
122
|
+
right?: number;
|
|
123
|
+
bottom?: number;
|
|
124
|
+
left?: number;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Gap insets for horizontal and vertical gaps
|
|
128
|
+
*/
|
|
129
|
+
export interface GapInsets {
|
|
130
|
+
horizontal?: number;
|
|
131
|
+
vertical?: number;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Corner radius specification
|
|
135
|
+
*/
|
|
136
|
+
export interface CornerRadiusInsets {
|
|
137
|
+
tl?: number;
|
|
138
|
+
tr?: number;
|
|
139
|
+
bl?: number;
|
|
140
|
+
br?: number;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Normalize edge insets - converts number to all-sides object
|
|
144
|
+
* @param value - Number (all sides) or edge insets object
|
|
145
|
+
* @returns Normalized EdgeInsets object
|
|
146
|
+
*/
|
|
147
|
+
export declare function normalizeEdgeInsets(value: number | EdgeInsets | undefined): EdgeInsets;
|
|
148
|
+
/**
|
|
149
|
+
* Normalize corner radius - converts number to all-corners object
|
|
150
|
+
* @param value - Number (all corners) or corner radius object
|
|
151
|
+
* @returns Normalized CornerRadiusInsets object or number
|
|
152
|
+
*/
|
|
153
|
+
export declare function normalizeCornerRadius(value: number | CornerRadiusInsets | undefined): number | CornerRadiusInsets;
|
|
154
|
+
/**
|
|
155
|
+
* Normalize gap values - converts number to GapInsets object
|
|
156
|
+
* @param value - Number (uniform gap) or gap insets object
|
|
157
|
+
* @returns Normalized GapInsets object with horizontal and vertical values
|
|
158
|
+
*/
|
|
159
|
+
export declare function normalizeGap(value: number | GapInsets | undefined): {
|
|
160
|
+
horizontal: number;
|
|
161
|
+
vertical: number;
|
|
162
|
+
};
|
|
163
|
+
/**
|
|
164
|
+
* Layout properties - sizing, spacing, and layout participation
|
|
165
|
+
*/
|
|
166
|
+
export interface LayoutProps {
|
|
167
|
+
/**
|
|
168
|
+
* Visibility and layout participation
|
|
169
|
+
* - true / 'visible': Rendered and takes layout space (default)
|
|
170
|
+
* - false / 'invisible': Not rendered but takes layout space (like CSS visibility: hidden)
|
|
171
|
+
* - 'none': Not rendered and no layout space (like CSS display: none)
|
|
172
|
+
*
|
|
173
|
+
* @example
|
|
174
|
+
* <View visible={true}>Always visible</View>
|
|
175
|
+
* <View visible={false}>Hidden but occupies space</View>
|
|
176
|
+
* <View visible="none">Hidden and no space</View>
|
|
177
|
+
*/
|
|
178
|
+
visible?: boolean | Display;
|
|
179
|
+
/**
|
|
180
|
+
* If true, object is rendered but excluded from layout calculations
|
|
181
|
+
* Use for decorative elements, sprites, particles, or absolute-positioned objects
|
|
182
|
+
* - true: Object is visual-only, doesn't affect parent/sibling layout
|
|
183
|
+
* - false/undefined: Object participates in layout (default for UI elements)
|
|
184
|
+
*
|
|
185
|
+
* @example
|
|
186
|
+
* // Decorative sprite that doesn't affect layout
|
|
187
|
+
* <Sprite texture="particle" headless={true} />
|
|
188
|
+
*
|
|
189
|
+
* // Text that participates in layout
|
|
190
|
+
* <Text text="Label" headless={false} />
|
|
191
|
+
*/
|
|
192
|
+
headless?: boolean;
|
|
193
|
+
/**
|
|
194
|
+
* Width of the container
|
|
195
|
+
* - number: Fixed width in pixels (e.g., 200)
|
|
196
|
+
* - Percentage: "50%", "100%"
|
|
197
|
+
* - Viewport: "100vw"
|
|
198
|
+
* - Keywords: "auto", "fill"
|
|
199
|
+
* - Calc: "calc(100% - 20px)"
|
|
200
|
+
* - undefined: Auto - size to content
|
|
201
|
+
*
|
|
202
|
+
* @example
|
|
203
|
+
* width={200} // 200px fixed width
|
|
204
|
+
* width="75%" // 75% of parent width
|
|
205
|
+
* width="100vw" // 100% of viewport width
|
|
206
|
+
* width="fill" // Fill available space
|
|
207
|
+
* width="calc(50% + 10px)" // Calculated width
|
|
208
|
+
* width={undefined} // Auto-size to content
|
|
209
|
+
*/
|
|
210
|
+
width?: SizeValue | undefined;
|
|
211
|
+
/**
|
|
212
|
+
* Height of the container
|
|
213
|
+
* - number: Fixed height in pixels (e.g., 100)
|
|
214
|
+
* - Percentage: "50%", "100%"
|
|
215
|
+
* - Viewport: "100vh"
|
|
216
|
+
* - Keywords: "auto", "fill"
|
|
217
|
+
* - Calc: "calc(100vh - 50px)"
|
|
218
|
+
* - undefined: Auto - size to content
|
|
219
|
+
*
|
|
220
|
+
* @example
|
|
221
|
+
* height={100} // 100px fixed height
|
|
222
|
+
* height="50%" // 50% of parent height
|
|
223
|
+
* height="100vh" // 100% of viewport height
|
|
224
|
+
* height="fill" // Fill available space
|
|
225
|
+
* height="calc(100% - 20px)" // Calculated height
|
|
226
|
+
* height={undefined} // Auto-size to content
|
|
227
|
+
*/
|
|
228
|
+
height?: SizeValue | undefined;
|
|
229
|
+
/**
|
|
230
|
+
* Minimum width constraint
|
|
231
|
+
* Prevents element from shrinking below this size
|
|
232
|
+
* Works with flex, percentages, and auto sizing
|
|
233
|
+
* Supports all SizeValue formats (pixels, percentage, viewport units, calc)
|
|
234
|
+
*
|
|
235
|
+
* @example
|
|
236
|
+
* // Fixed minimum
|
|
237
|
+
* <View flex={1} minWidth={200}>Sidebar</View>
|
|
238
|
+
*
|
|
239
|
+
* // Percentage of parent
|
|
240
|
+
* <View width="100%" minWidth="20%" maxWidth="80%">Flexible</View>
|
|
241
|
+
*
|
|
242
|
+
* // Viewport-based
|
|
243
|
+
* <View flex={1} minWidth="200px">Responsive sidebar</View>
|
|
244
|
+
*
|
|
245
|
+
* // Calc expression
|
|
246
|
+
* <View width="100%" minWidth="calc(50% - 20px)">Dynamic</View>
|
|
247
|
+
*/
|
|
248
|
+
minWidth?: SizeValue | undefined;
|
|
249
|
+
/**
|
|
250
|
+
* Minimum height constraint
|
|
251
|
+
* Prevents element from shrinking below this size
|
|
252
|
+
* Works with flex, percentages, and auto sizing
|
|
253
|
+
* Supports all SizeValue formats (pixels, percentage, viewport units, calc)
|
|
254
|
+
*
|
|
255
|
+
* @example
|
|
256
|
+
* // Fixed minimum
|
|
257
|
+
* <View height="auto" minHeight={100}>
|
|
258
|
+
* <Text text={dynamicContent} />
|
|
259
|
+
* </View>
|
|
260
|
+
*
|
|
261
|
+
* // Percentage of parent
|
|
262
|
+
* <View height="100%" minHeight="30%">Flexible height</View>
|
|
263
|
+
*
|
|
264
|
+
* // Viewport-based
|
|
265
|
+
* <View flex={1} minHeight="50vh">Half viewport min</View>
|
|
266
|
+
*/
|
|
267
|
+
minHeight?: SizeValue | undefined;
|
|
268
|
+
/**
|
|
269
|
+
* Maximum width constraint
|
|
270
|
+
* Prevents element from growing beyond this size
|
|
271
|
+
* Works with flex, percentages, and auto sizing
|
|
272
|
+
* Supports all SizeValue formats (pixels, percentage, viewport units, calc)
|
|
273
|
+
*
|
|
274
|
+
* @example
|
|
275
|
+
* // Fixed maximum
|
|
276
|
+
* <View flex={1} maxWidth={800}>
|
|
277
|
+
* <Text text="Long content..." />
|
|
278
|
+
* </View>
|
|
279
|
+
*
|
|
280
|
+
* // Percentage of parent
|
|
281
|
+
* <View width="100%" maxWidth="80%">Responsive</View>
|
|
282
|
+
*
|
|
283
|
+
* // Viewport-based
|
|
284
|
+
* <View flex={1} maxWidth="90vw">Full width modal</View>
|
|
285
|
+
*/
|
|
286
|
+
maxWidth?: SizeValue | undefined;
|
|
287
|
+
/**
|
|
288
|
+
* Maximum height constraint
|
|
289
|
+
* Prevents element from growing beyond this size
|
|
290
|
+
* Works with flex, percentages, and auto sizing
|
|
291
|
+
* Supports all SizeValue formats (pixels, percentage, viewport units, calc)
|
|
292
|
+
*
|
|
293
|
+
* @example
|
|
294
|
+
* // Fixed maximum
|
|
295
|
+
* <Image texture="photo" width="100%" maxHeight={400} />
|
|
296
|
+
*
|
|
297
|
+
* // Percentage of parent
|
|
298
|
+
* <View height="100%" maxHeight="80%">Constrained</View>
|
|
299
|
+
*
|
|
300
|
+
* // Viewport-based
|
|
301
|
+
* <View flex={1} maxHeight="80vh">Scrollable content</View>
|
|
302
|
+
*/
|
|
303
|
+
maxHeight?: SizeValue | undefined;
|
|
304
|
+
/**
|
|
305
|
+
* * Margin outside the container
|
|
306
|
+
* - number: Uniform margin on all sides
|
|
307
|
+
* - EdgeInsets: Individual margin per side
|
|
308
|
+
* - undefined: No margin
|
|
309
|
+
*/
|
|
310
|
+
margin?: number | EdgeInsets | undefined;
|
|
311
|
+
/**
|
|
312
|
+
* Padding inside the container
|
|
313
|
+
* - number: Uniform padding on all sides
|
|
314
|
+
* - EdgeInsets: Individual padding per side
|
|
315
|
+
* - undefined: No padding
|
|
316
|
+
*/
|
|
317
|
+
padding?: number | EdgeInsets | undefined;
|
|
318
|
+
/**
|
|
319
|
+
* Layout direction for children
|
|
320
|
+
* - 'column': Stack children vertically (default, like SwiftUI's VStack)
|
|
321
|
+
* - 'row': Stack children horizontally (like SwiftUI's HStack)
|
|
322
|
+
* - 'stack': Overlay children at the same position (like SwiftUI's ZStack)
|
|
323
|
+
*/
|
|
324
|
+
direction?: 'row' | 'column' | 'stack';
|
|
325
|
+
/**
|
|
326
|
+
* Gap between children
|
|
327
|
+
* - number: Uniform gap between all children
|
|
328
|
+
* - GapInsets: Separate horizontal and vertical gaps
|
|
329
|
+
* Applied between each child along the main axis (or both axes for GapInsets)
|
|
330
|
+
*/
|
|
331
|
+
gap?: number | GapInsets | undefined;
|
|
332
|
+
/**
|
|
333
|
+
* Main axis alignment (along direction)
|
|
334
|
+
* - 'start': Align children to start (top for column, left for row)
|
|
335
|
+
* - 'center': Center children along main axis
|
|
336
|
+
* - 'end': Align children to end (bottom for column, right for row)
|
|
337
|
+
* - 'space-between': Distribute children evenly, first at start, last at end
|
|
338
|
+
* - 'space-around': Distribute children evenly with space around each
|
|
339
|
+
* - 'space-evenly': Distribute children with equal space between and around
|
|
340
|
+
*/
|
|
341
|
+
justifyContent?: 'start' | 'center' | 'end' | 'space-between' | 'space-around' | 'space-evenly';
|
|
342
|
+
/**
|
|
343
|
+
* Cross axis alignment (perpendicular to direction)
|
|
344
|
+
* - 'start': Align to start (left for column, top for row)
|
|
345
|
+
* - 'center': Center along cross axis
|
|
346
|
+
* - 'end': Align to end (right for column, bottom for row)
|
|
347
|
+
* - 'stretch': Stretch children to fill cross axis (requires fixed container size)
|
|
348
|
+
*/
|
|
349
|
+
alignItems?: 'start' | 'center' | 'end' | 'stretch';
|
|
350
|
+
/**
|
|
351
|
+
* Flex grow factor - how much of the remaining space this element should take
|
|
352
|
+
* Similar to CSS flexbox flex-grow
|
|
353
|
+
* - 0: Don't grow, use explicit width/height
|
|
354
|
+
* - 1: Take equal share of remaining space
|
|
355
|
+
* - 2+: Take proportionally more space
|
|
356
|
+
*
|
|
357
|
+
* @example
|
|
358
|
+
* // Sidebar fixed, main content fills rest
|
|
359
|
+
* <View direction="row">
|
|
360
|
+
* <View width={200}>Sidebar</View>
|
|
361
|
+
* <View flex={1}>Main</View>
|
|
362
|
+
* </View>
|
|
363
|
+
*
|
|
364
|
+
* // Two columns, second twice as wide
|
|
365
|
+
* <View direction="row">
|
|
366
|
+
* <View flex={1}>Col 1</View>
|
|
367
|
+
* <View flex={2}>Col 2</View>
|
|
368
|
+
* </View>
|
|
369
|
+
*/
|
|
370
|
+
flex?: number;
|
|
371
|
+
/**
|
|
372
|
+
* Flex shrink factor - how much this element should shrink when space is limited
|
|
373
|
+
* Similar to CSS flexbox flex-shrink
|
|
374
|
+
* - 0: Don't shrink, maintain size even if container overflows
|
|
375
|
+
* - 1: Shrink proportionally with other flex items (default)
|
|
376
|
+
* - 2+: Shrink more than other items proportionally
|
|
377
|
+
*
|
|
378
|
+
* @example
|
|
379
|
+
* // Text that can shrink, icon that stays fixed
|
|
380
|
+
* <View direction="row" width={150}>
|
|
381
|
+
* <View width={50} flexShrink={0}>Icon</View>
|
|
382
|
+
* <View flex={1} flexShrink={1}>Long Text...</View>
|
|
383
|
+
* </View>
|
|
384
|
+
*
|
|
385
|
+
* // Two items, second shrinks twice as fast
|
|
386
|
+
* <View direction="row" width={100}>
|
|
387
|
+
* <View width={80} flexShrink={1}>Item 1</View>
|
|
388
|
+
* <View width={80} flexShrink={2}>Item 2</View>
|
|
389
|
+
* </View>
|
|
390
|
+
*/
|
|
391
|
+
flexShrink?: number;
|
|
392
|
+
/**
|
|
393
|
+
* Flex basis - initial size before flex distribution
|
|
394
|
+
* Similar to CSS flexbox flex-basis
|
|
395
|
+
* - number: Fixed initial size in pixels
|
|
396
|
+
* - Percentage: "50%", "100%"
|
|
397
|
+
* - Viewport: "100vw", "50vh"
|
|
398
|
+
* - Keyword: "auto"
|
|
399
|
+
* - Calc: "calc(50% + 10px)"
|
|
400
|
+
* - undefined: Use width/height as basis
|
|
401
|
+
*
|
|
402
|
+
* Defines the starting size before flexGrow/flexShrink is applied
|
|
403
|
+
* Overrides width/height when flex is used
|
|
404
|
+
*
|
|
405
|
+
* @example
|
|
406
|
+
* // Item starts at 200px, then grows with flex
|
|
407
|
+
* <View flex={1} flexBasis={200}>Content</View>
|
|
408
|
+
*
|
|
409
|
+
* // Item starts at 50% of parent, then shrinks if needed
|
|
410
|
+
* <View flexBasis="50%" flexShrink={1}>Content</View>
|
|
411
|
+
*
|
|
412
|
+
* // Auto basis - uses content size
|
|
413
|
+
* <View flex={1} flexBasis="auto">Content</View>
|
|
414
|
+
*
|
|
415
|
+
* // Calc basis
|
|
416
|
+
* <View flex={1} flexBasis="calc(100% / 3)">Content</View>
|
|
417
|
+
*/
|
|
418
|
+
flexBasis?: FlexBasisValue | undefined;
|
|
419
|
+
/**
|
|
420
|
+
* Controls how content that overflows the container bounds is displayed
|
|
421
|
+
* - 'visible': Content can overflow container bounds (default)
|
|
422
|
+
* - 'hidden': Content is clipped to container bounds using Phaser mask
|
|
423
|
+
*
|
|
424
|
+
* @example
|
|
425
|
+
* <View width={100} height={50} overflow="hidden">
|
|
426
|
+
* <Text text="This long text will be clipped" />
|
|
427
|
+
* </View>
|
|
428
|
+
*/
|
|
429
|
+
overflow?: 'visible' | 'hidden';
|
|
430
|
+
/**
|
|
431
|
+
* Controls wrapping behavior for flex layouts
|
|
432
|
+
* - 'nowrap': All items in single line (default, current behavior)
|
|
433
|
+
* - 'wrap': Items wrap to new line/column when space exhausted
|
|
434
|
+
* - 'wrap-reverse': Items wrap in reverse order
|
|
435
|
+
*
|
|
436
|
+
* Only applies to 'row' and 'column' directions, ignored for 'stack'
|
|
437
|
+
* When wrapping, flex distribution is calculated per line
|
|
438
|
+
*
|
|
439
|
+
* @example
|
|
440
|
+
* // Auto-wrap grid with 100px items
|
|
441
|
+
* <View direction="row" flexWrap="wrap" gap={10} width={400}>
|
|
442
|
+
* {items.map(item => <Card width={100} />)}
|
|
443
|
+
* </View>
|
|
444
|
+
*
|
|
445
|
+
* // Responsive card grid
|
|
446
|
+
* <View direction="row" flexWrap="wrap" gap={15}>
|
|
447
|
+
* {cards.map(card => <View minWidth={180} flex={1}>{card}</View>)}
|
|
448
|
+
* </View>
|
|
449
|
+
*/
|
|
450
|
+
flexWrap?: 'nowrap' | 'wrap' | 'wrap-reverse';
|
|
451
|
+
/**
|
|
452
|
+
* Alignment of wrapped lines in multi-line flex container
|
|
453
|
+
* Only applies when flexWrap !== 'nowrap' and there are multiple lines
|
|
454
|
+
* Controls distribution of lines along cross axis (perpendicular to direction)
|
|
455
|
+
*
|
|
456
|
+
* - 'start': Pack lines to start (top for row, left for column)
|
|
457
|
+
* - 'center': Center lines in container
|
|
458
|
+
* - 'end': Pack lines to end (bottom for row, right for column)
|
|
459
|
+
* - 'space-between': First line at start, last at end, equal space between
|
|
460
|
+
* - 'space-around': Equal space around each line
|
|
461
|
+
* - 'stretch': Lines stretch to fill cross axis (default)
|
|
462
|
+
*
|
|
463
|
+
* Difference from alignItems:
|
|
464
|
+
* - alignItems: Aligns items within each line
|
|
465
|
+
* - alignContent: Aligns the lines themselves within container
|
|
466
|
+
*
|
|
467
|
+
* @example
|
|
468
|
+
* ```tsx
|
|
469
|
+
* // Grid with lines distributed vertically
|
|
470
|
+
* <View
|
|
471
|
+
* direction="row"
|
|
472
|
+
* flexWrap="wrap"
|
|
473
|
+
* alignContent="space-between"
|
|
474
|
+
* height={400}
|
|
475
|
+
* >
|
|
476
|
+
* {items}
|
|
477
|
+
* </View>
|
|
478
|
+
* ```
|
|
479
|
+
*/
|
|
480
|
+
alignContent?: 'start' | 'center' | 'end' | 'space-between' | 'space-around' | 'stretch';
|
|
481
|
+
}
|
|
482
|
+
/**
|
|
483
|
+
* Background styling properties
|
|
484
|
+
*/
|
|
485
|
+
export interface BackgroundProps {
|
|
486
|
+
backgroundColor?: number | undefined;
|
|
487
|
+
backgroundAlpha?: number | undefined;
|
|
488
|
+
cornerRadius?: number | CornerRadiusInsets | undefined;
|
|
489
|
+
borderWidth?: number | undefined;
|
|
490
|
+
borderColor?: number | undefined;
|
|
491
|
+
borderAlpha?: number;
|
|
492
|
+
}
|
|
493
|
+
/**
|
|
494
|
+
* Text-specific styling properties
|
|
495
|
+
*/
|
|
496
|
+
export interface TextSpecificProps {
|
|
497
|
+
text: string | undefined;
|
|
498
|
+
/**
|
|
499
|
+
* Maximum width for text wrapping
|
|
500
|
+
* Supports all SizeValue formats (pixels, percentage, viewport units, calc)
|
|
501
|
+
*/
|
|
502
|
+
maxWidth?: SizeValue;
|
|
503
|
+
}
|
|
504
|
+
/**
|
|
505
|
+
* High-level gesture props - unified touch and mouse interaction
|
|
506
|
+
* These provide cross-platform gesture detection with transparent mouse/touch support
|
|
507
|
+
*/
|
|
508
|
+
export interface GestureProps {
|
|
509
|
+
/**
|
|
510
|
+
* Enable gesture system for this container
|
|
511
|
+
* Must be true to receive any gesture events
|
|
512
|
+
* Default: false (no overhead for non-interactive containers)
|
|
513
|
+
*/
|
|
514
|
+
enableGestures?: boolean;
|
|
515
|
+
/**
|
|
516
|
+
* Called on pointer down + up on the same target (click/tap)
|
|
517
|
+
* Works for both mouse click and touch tap
|
|
518
|
+
* Only fires if touch duration is within maxTouchDuration
|
|
519
|
+
*/
|
|
520
|
+
onTouch?: (data: GestureEventData) => void;
|
|
521
|
+
/**
|
|
522
|
+
* Called when pointer up occurs outside the container
|
|
523
|
+
* Useful for click-outside detection (dropdowns, modals, tooltips)
|
|
524
|
+
* Only fires if touch duration is within maxTouchDuration
|
|
525
|
+
* Requires enableGestures: true
|
|
526
|
+
*/
|
|
527
|
+
onTouchOutside?: (data: GestureEventData) => void;
|
|
528
|
+
/**
|
|
529
|
+
* Called during pointer movement - continues even when outside bounds
|
|
530
|
+
* Provides dx/dy deltas for tracking drag operations
|
|
531
|
+
* Includes isInside flag and state ('start' | 'move' | 'end')
|
|
532
|
+
* Requires enableGestures: true
|
|
533
|
+
*/
|
|
534
|
+
onTouchMove?: (data: GestureEventData) => void;
|
|
535
|
+
/**
|
|
536
|
+
* Called when double tap/click is detected within configured delay
|
|
537
|
+
* Optional - only enable if needed to reduce overhead
|
|
538
|
+
*/
|
|
539
|
+
onDoubleTap?: (data: GestureEventData) => void;
|
|
540
|
+
/**
|
|
541
|
+
* Called when pointer is held down for configured duration
|
|
542
|
+
* Optional - only enable if needed to reduce overhead
|
|
543
|
+
*/
|
|
544
|
+
onLongPress?: (data: GestureEventData) => void;
|
|
545
|
+
/**
|
|
546
|
+
* Duration in ms to trigger long press
|
|
547
|
+
* Default: 500ms
|
|
548
|
+
*/
|
|
549
|
+
longPressDuration?: number;
|
|
550
|
+
/**
|
|
551
|
+
* Max time in ms between taps for double tap detection
|
|
552
|
+
* Default: 300ms
|
|
553
|
+
*/
|
|
554
|
+
doubleTapDelay?: number;
|
|
555
|
+
/**
|
|
556
|
+
* Max time in ms for a valid touch/click (prevents delayed touch after long hold)
|
|
557
|
+
* Default: 500ms
|
|
558
|
+
*/
|
|
559
|
+
maxTouchDuration?: number;
|
|
560
|
+
/**
|
|
561
|
+
* Called when a key is pressed down
|
|
562
|
+
* Requires enableGestures: true
|
|
563
|
+
*/
|
|
564
|
+
onKeyDown?: (data: KeyboardEventData) => void;
|
|
565
|
+
/**
|
|
566
|
+
* Called when a key is released
|
|
567
|
+
* Requires enableGestures: true
|
|
568
|
+
*/
|
|
569
|
+
onKeyUp?: (data: KeyboardEventData) => void;
|
|
570
|
+
/**
|
|
571
|
+
* Called when input value changes
|
|
572
|
+
* Requires enableGestures: true
|
|
573
|
+
*/
|
|
574
|
+
onInput?: (data: InputEventData) => void;
|
|
575
|
+
/**
|
|
576
|
+
* Called when element receives focus
|
|
577
|
+
* Requires enableGestures: true
|
|
578
|
+
*/
|
|
579
|
+
onFocus?: (data: FocusEventData) => void;
|
|
580
|
+
/**
|
|
581
|
+
* Called when element loses focus
|
|
582
|
+
* Requires enableGestures: true
|
|
583
|
+
*/
|
|
584
|
+
onBlur?: (data: FocusEventData) => void;
|
|
585
|
+
/**
|
|
586
|
+
* Called when pointer enters the container (desktop/mouse only)
|
|
587
|
+
* Does not work on touch devices (iPhone, iPad)
|
|
588
|
+
* Requires enableGestures: true
|
|
589
|
+
*/
|
|
590
|
+
onHoverStart?: (data: import('./gestures/gesture-types').HoverEventData) => void;
|
|
591
|
+
/**
|
|
592
|
+
* Called when pointer exits the container (desktop/mouse only)
|
|
593
|
+
* Does not work on touch devices (iPhone, iPad)
|
|
594
|
+
* Requires enableGestures: true
|
|
595
|
+
*/
|
|
596
|
+
onHoverEnd?: (data: import('./gestures/gesture-types').HoverEventData) => void;
|
|
597
|
+
/**
|
|
598
|
+
* Called when mouse wheel is scrolled over container (desktop/mouse only)
|
|
599
|
+
* Does not work on touch devices (iPhone, iPad)
|
|
600
|
+
* Provides deltaX/deltaY for scroll amounts
|
|
601
|
+
* Requires enableGestures: true
|
|
602
|
+
*/
|
|
603
|
+
onWheel?: (data: WheelEventData) => void;
|
|
604
|
+
}
|
|
605
|
+
//# sourceMappingURL=core-props.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-props.d.ts","sourceRoot":"","sources":["../src/core-props.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { default as Phaser } from 'phaser';
|
|
2
|
+
import { GraphicsBaseProps } from './components/primitives/graphics';
|
|
3
|
+
import { ImageBaseProps } from './components/primitives/image';
|
|
4
|
+
import { NineSliceBaseProps } from './components/primitives/nineslice';
|
|
5
|
+
import { SpriteBaseProps } from './components/primitives/sprite';
|
|
6
|
+
import { TextBaseProps } from './components/primitives/text';
|
|
7
|
+
import { TileSpriteBaseProps } from './components/primitives/tilesprite';
|
|
8
|
+
import { ViewBaseProps } from './components/primitives/view';
|
|
9
|
+
/**
|
|
10
|
+
* Maps node type names to Phaser GameObject classes
|
|
11
|
+
*/
|
|
12
|
+
export interface NodeMap {
|
|
13
|
+
view: Phaser.GameObjects.Container;
|
|
14
|
+
text: Phaser.GameObjects.Text;
|
|
15
|
+
nineslice: Phaser.GameObjects.NineSlice;
|
|
16
|
+
sprite: Phaser.GameObjects.Sprite;
|
|
17
|
+
image: Phaser.GameObjects.Image;
|
|
18
|
+
graphics: Phaser.GameObjects.Graphics;
|
|
19
|
+
tilesprite: Phaser.GameObjects.TileSprite;
|
|
20
|
+
View: Phaser.GameObjects.Container;
|
|
21
|
+
Text: Phaser.GameObjects.Text;
|
|
22
|
+
NineSlice: Phaser.GameObjects.NineSlice;
|
|
23
|
+
Sprite: Phaser.GameObjects.Sprite;
|
|
24
|
+
Image: Phaser.GameObjects.Image;
|
|
25
|
+
Graphics: Phaser.GameObjects.Graphics;
|
|
26
|
+
TileSprite: Phaser.GameObjects.TileSprite;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Maps node type names to their props interfaces
|
|
30
|
+
*/
|
|
31
|
+
export interface NodePropsMap {
|
|
32
|
+
view: ViewBaseProps;
|
|
33
|
+
text: TextBaseProps;
|
|
34
|
+
nineslice: NineSliceBaseProps;
|
|
35
|
+
sprite: SpriteBaseProps;
|
|
36
|
+
image: ImageBaseProps;
|
|
37
|
+
graphics: GraphicsBaseProps;
|
|
38
|
+
tilesprite: TileSpriteBaseProps;
|
|
39
|
+
View: ViewBaseProps;
|
|
40
|
+
Text: TextBaseProps;
|
|
41
|
+
NineSlice: NineSliceBaseProps;
|
|
42
|
+
Sprite: SpriteBaseProps;
|
|
43
|
+
Image: ImageBaseProps;
|
|
44
|
+
Graphics: GraphicsBaseProps;
|
|
45
|
+
TileSprite: TileSpriteBaseProps;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Union of all supported node type names
|
|
49
|
+
*/
|
|
50
|
+
export type NodeType = keyof NodeMap;
|
|
51
|
+
/**
|
|
52
|
+
* Get the instance type for a given node type
|
|
53
|
+
*/
|
|
54
|
+
export type NodeInstance<T extends NodeType = NodeType> = NodeMap[T];
|
|
55
|
+
/**
|
|
56
|
+
* Get the props type for a given node type
|
|
57
|
+
*/
|
|
58
|
+
export type NodeProps<T extends NodeType = NodeType> = NodePropsMap[T];
|
|
59
|
+
//# sourceMappingURL=core-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core-types.d.ts","sourceRoot":"","sources":["../src/core-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAA;AAChC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAA;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AAC3E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAEjE;;GAEG;AACH,MAAM,WAAW,OAAO;IAEtB,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,SAAS,CAAA;IAClC,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAA;IAC7B,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,SAAS,CAAA;IACvC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAA;IACjC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAA;IAC/B,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAA;IACrC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,UAAU,CAAA;IAEzC,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,SAAS,CAAA;IAClC,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAA;IAC7B,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,SAAS,CAAA;IACvC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAA;IACjC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK,CAAA;IAC/B,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAA;IACrC,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,UAAU,CAAA;CAC1C;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAE3B,IAAI,EAAE,aAAa,CAAA;IACnB,IAAI,EAAE,aAAa,CAAA;IACnB,SAAS,EAAE,kBAAkB,CAAA;IAC7B,MAAM,EAAE,eAAe,CAAA;IACvB,KAAK,EAAE,cAAc,CAAA;IACrB,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,UAAU,EAAE,mBAAmB,CAAA;IAE/B,IAAI,EAAE,aAAa,CAAA;IACnB,IAAI,EAAE,aAAa,CAAA;IACnB,SAAS,EAAE,kBAAkB,CAAA;IAC7B,MAAM,EAAE,eAAe,CAAA;IACvB,KAAK,EAAE,cAAc,CAAA;IACrB,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,UAAU,EAAE,mBAAmB,CAAA;CAChC;AAED;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAA;AAEpC;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,CAAA;AAEpE;;GAEG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,IAAI,YAAY,CAAC,CAAC,CAAC,CAAA"}
|