@codexo/exojs 0.7.11 → 0.7.12
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/CHANGELOG.md +108 -0
- package/dist/esm/animation/Tween.d.ts +60 -1
- package/dist/esm/animation/Tween.js +60 -1
- package/dist/esm/animation/Tween.js.map +1 -1
- package/dist/esm/animation/TweenManager.d.ts +10 -0
- package/dist/esm/animation/TweenManager.js +10 -0
- package/dist/esm/animation/TweenManager.js.map +1 -1
- package/dist/esm/animation/types.d.ts +15 -0
- package/dist/esm/animation/types.js +6 -0
- package/dist/esm/animation/types.js.map +1 -1
- package/dist/esm/audio/AbstractMedia.d.ts +11 -0
- package/dist/esm/audio/AbstractMedia.js +10 -0
- package/dist/esm/audio/AbstractMedia.js.map +1 -1
- package/dist/esm/audio/AudioAnalyser.d.ts +21 -0
- package/dist/esm/audio/AudioAnalyser.js +16 -0
- package/dist/esm/audio/AudioAnalyser.js.map +1 -1
- package/dist/esm/audio/AudioBus.d.ts +37 -0
- package/dist/esm/audio/AudioBus.js +36 -0
- package/dist/esm/audio/AudioBus.js.map +1 -1
- package/dist/esm/audio/AudioFilter.d.ts +7 -0
- package/dist/esm/audio/AudioFilter.js +6 -0
- package/dist/esm/audio/AudioFilter.js.map +1 -1
- package/dist/esm/audio/AudioListener.d.ts +19 -0
- package/dist/esm/audio/AudioListener.js +11 -0
- package/dist/esm/audio/AudioListener.js.map +1 -1
- package/dist/esm/audio/AudioManager.d.ts +37 -0
- package/dist/esm/audio/AudioManager.js +37 -0
- package/dist/esm/audio/AudioManager.js.map +1 -1
- package/dist/esm/audio/BeatDetector.d.ts +21 -0
- package/dist/esm/audio/BeatDetector.js +21 -0
- package/dist/esm/audio/BeatDetector.js.map +1 -1
- package/dist/esm/audio/Media.d.ts +11 -0
- package/dist/esm/audio/Music.d.ts +12 -0
- package/dist/esm/audio/Music.js +12 -0
- package/dist/esm/audio/Music.js.map +1 -1
- package/dist/esm/audio/Sound.d.ts +25 -0
- package/dist/esm/audio/Sound.js +18 -0
- package/dist/esm/audio/Sound.js.map +1 -1
- package/dist/esm/audio/audio-context.d.ts +48 -0
- package/dist/esm/audio/audio-context.js +48 -5
- package/dist/esm/audio/audio-context.js.map +1 -1
- package/dist/esm/audio/filters/ChorusFilter.d.ts +5 -0
- package/dist/esm/audio/filters/ChorusFilter.js +4 -0
- package/dist/esm/audio/filters/ChorusFilter.js.map +1 -1
- package/dist/esm/audio/filters/CompressorFilter.d.ts +12 -0
- package/dist/esm/audio/filters/CompressorFilter.js +11 -0
- package/dist/esm/audio/filters/CompressorFilter.js.map +1 -1
- package/dist/esm/audio/filters/DelayFilter.d.ts +11 -0
- package/dist/esm/audio/filters/DelayFilter.js +10 -0
- package/dist/esm/audio/filters/DelayFilter.js.map +1 -1
- package/dist/esm/audio/filters/DuckingFilter.d.ts +13 -0
- package/dist/esm/audio/filters/DuckingFilter.js +12 -0
- package/dist/esm/audio/filters/DuckingFilter.js.map +1 -1
- package/dist/esm/audio/filters/EqualizerFilter.d.ts +20 -0
- package/dist/esm/audio/filters/EqualizerFilter.js +40 -0
- package/dist/esm/audio/filters/EqualizerFilter.js.map +1 -1
- package/dist/esm/audio/filters/GranularFilter.d.ts +6 -0
- package/dist/esm/audio/filters/GranularFilter.js +6 -0
- package/dist/esm/audio/filters/GranularFilter.js.map +1 -1
- package/dist/esm/audio/filters/HighpassFilter.d.ts +10 -0
- package/dist/esm/audio/filters/HighpassFilter.js +9 -0
- package/dist/esm/audio/filters/HighpassFilter.js.map +1 -1
- package/dist/esm/audio/filters/LowpassFilter.d.ts +10 -0
- package/dist/esm/audio/filters/LowpassFilter.js +9 -0
- package/dist/esm/audio/filters/LowpassFilter.js.map +1 -1
- package/dist/esm/audio/filters/PitchShiftFilter.d.ts +2 -0
- package/dist/esm/audio/filters/PitchShiftFilter.js +2 -0
- package/dist/esm/audio/filters/PitchShiftFilter.js.map +1 -1
- package/dist/esm/audio/filters/ReverbFilter.d.ts +12 -0
- package/dist/esm/audio/filters/ReverbFilter.js +11 -0
- package/dist/esm/audio/filters/ReverbFilter.js.map +1 -1
- package/dist/esm/audio/filters/VocoderFilter.d.ts +11 -0
- package/dist/esm/audio/filters/VocoderFilter.js +11 -0
- package/dist/esm/audio/filters/VocoderFilter.js.map +1 -1
- package/dist/esm/audio/filters/WorkletFilter.d.ts +6 -1
- package/dist/esm/audio/filters/WorkletFilter.js +6 -1
- package/dist/esm/audio/filters/WorkletFilter.js.map +1 -1
- package/dist/esm/core/Application.d.ts +63 -0
- package/dist/esm/core/Application.js +61 -0
- package/dist/esm/core/Application.js.map +1 -1
- package/dist/esm/core/Bounds.d.ts +23 -0
- package/dist/esm/core/Bounds.js +23 -0
- package/dist/esm/core/Bounds.js.map +1 -1
- package/dist/esm/core/Clock.d.ts +21 -0
- package/dist/esm/core/Clock.js +21 -0
- package/dist/esm/core/Clock.js.map +1 -1
- package/dist/esm/core/Color.d.ts +35 -0
- package/dist/esm/core/Color.js +35 -0
- package/dist/esm/core/Color.js.map +1 -1
- package/dist/esm/core/Scene.d.ts +46 -0
- package/dist/esm/core/Scene.js +27 -0
- package/dist/esm/core/Scene.js.map +1 -1
- package/dist/esm/core/SceneManager.d.ts +62 -0
- package/dist/esm/core/SceneManager.js +49 -0
- package/dist/esm/core/SceneManager.js.map +1 -1
- package/dist/esm/core/SceneNode.d.ts +31 -0
- package/dist/esm/core/SceneNode.js +31 -0
- package/dist/esm/core/SceneNode.js.map +1 -1
- package/dist/esm/core/Signal.d.ts +44 -0
- package/dist/esm/core/Signal.js +39 -0
- package/dist/esm/core/Signal.js.map +1 -1
- package/dist/esm/core/Time.d.ts +21 -0
- package/dist/esm/core/Time.js +21 -0
- package/dist/esm/core/Time.js.map +1 -1
- package/dist/esm/core/Timer.d.ts +7 -0
- package/dist/esm/core/Timer.js +7 -0
- package/dist/esm/core/Timer.js.map +1 -1
- package/dist/esm/core/capabilities.d.ts +12 -0
- package/dist/esm/core/capabilities.js +12 -0
- package/dist/esm/core/capabilities.js.map +1 -1
- package/dist/esm/core/types.d.ts +37 -0
- package/dist/esm/core/utils.d.ts +48 -0
- package/dist/esm/core/utils.js +48 -0
- package/dist/esm/core/utils.js.map +1 -1
- package/dist/esm/debug/BoundingBoxesLayer.d.ts +8 -0
- package/dist/esm/debug/BoundingBoxesLayer.js +8 -0
- package/dist/esm/debug/BoundingBoxesLayer.js.map +1 -1
- package/dist/esm/debug/DebugLayer.d.ts +16 -3
- package/dist/esm/debug/DebugLayer.js +11 -3
- package/dist/esm/debug/DebugLayer.js.map +1 -1
- package/dist/esm/debug/DebugOverlay.d.ts +11 -0
- package/dist/esm/debug/DebugOverlay.js +6 -0
- package/dist/esm/debug/DebugOverlay.js.map +1 -1
- package/dist/esm/debug/HitTestLayer.d.ts +9 -0
- package/dist/esm/debug/HitTestLayer.js +9 -0
- package/dist/esm/debug/HitTestLayer.js.map +1 -1
- package/dist/esm/debug/PerformanceLayer.d.ts +17 -1
- package/dist/esm/debug/PerformanceLayer.js +18 -0
- package/dist/esm/debug/PerformanceLayer.js.map +1 -1
- package/dist/esm/debug/PointerStackLayer.d.ts +8 -0
- package/dist/esm/debug/PointerStackLayer.js +10 -2
- package/dist/esm/debug/PointerStackLayer.js.map +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/input/ArcadeStickGamepadMapping.d.ts +7 -0
- package/dist/esm/input/ArcadeStickGamepadMapping.js +7 -0
- package/dist/esm/input/ArcadeStickGamepadMapping.js.map +1 -1
- package/dist/esm/input/GameCubeGamepadMapping.d.ts +9 -0
- package/dist/esm/input/GameCubeGamepadMapping.js +9 -0
- package/dist/esm/input/GameCubeGamepadMapping.js.map +1 -1
- package/dist/esm/input/Gamepad.d.ts +48 -0
- package/dist/esm/input/Gamepad.js +43 -0
- package/dist/esm/input/Gamepad.js.map +1 -1
- package/dist/esm/input/GamepadChannels.d.ts +8 -0
- package/dist/esm/input/GamepadChannels.js +8 -0
- package/dist/esm/input/GamepadChannels.js.map +1 -1
- package/dist/esm/input/GamepadControl.d.ts +18 -0
- package/dist/esm/input/GamepadControl.js +13 -0
- package/dist/esm/input/GamepadControl.js.map +1 -1
- package/dist/esm/input/GamepadDefinitions.d.ts +64 -1
- package/dist/esm/input/GamepadDefinitions.js +40 -1
- package/dist/esm/input/GamepadDefinitions.js.map +1 -1
- package/dist/esm/input/GamepadMapping.d.ts +32 -2
- package/dist/esm/input/GamepadMapping.js +24 -0
- package/dist/esm/input/GamepadMapping.js.map +1 -1
- package/dist/esm/input/GamepadPromptLayouts.d.ts +32 -1
- package/dist/esm/input/GamepadPromptLayouts.js +25 -1
- package/dist/esm/input/GamepadPromptLayouts.js.map +1 -1
- package/dist/esm/input/GenericDualAnalogGamepadMapping.d.ts +10 -0
- package/dist/esm/input/GenericDualAnalogGamepadMapping.js +10 -0
- package/dist/esm/input/GenericDualAnalogGamepadMapping.js.map +1 -1
- package/dist/esm/input/GestureRecognizer.d.ts +11 -2
- package/dist/esm/input/GestureRecognizer.js +11 -2
- package/dist/esm/input/GestureRecognizer.js.map +1 -1
- package/dist/esm/input/Input.d.ts +24 -0
- package/dist/esm/input/Input.js +22 -0
- package/dist/esm/input/Input.js.map +1 -1
- package/dist/esm/input/InputManager.d.ts +33 -0
- package/dist/esm/input/InputManager.js +33 -0
- package/dist/esm/input/InputManager.js.map +1 -1
- package/dist/esm/input/InteractionEvent.d.ts +13 -0
- package/dist/esm/input/InteractionEvent.js +8 -0
- package/dist/esm/input/InteractionEvent.js.map +1 -1
- package/dist/esm/input/InteractionManager.d.ts +33 -4
- package/dist/esm/input/InteractionManager.js +33 -4
- package/dist/esm/input/InteractionManager.js.map +1 -1
- package/dist/esm/input/JoyConLeftGamepadMapping.d.ts +9 -0
- package/dist/esm/input/JoyConLeftGamepadMapping.js +9 -0
- package/dist/esm/input/JoyConLeftGamepadMapping.js.map +1 -1
- package/dist/esm/input/JoyConRightGamepadMapping.d.ts +9 -0
- package/dist/esm/input/JoyConRightGamepadMapping.js +9 -0
- package/dist/esm/input/JoyConRightGamepadMapping.js.map +1 -1
- package/dist/esm/input/PlayStationGamepadMapping.d.ts +8 -0
- package/dist/esm/input/PlayStationGamepadMapping.js +8 -0
- package/dist/esm/input/PlayStationGamepadMapping.js.map +1 -1
- package/dist/esm/input/Pointer.d.ts +22 -0
- package/dist/esm/input/Pointer.js +22 -0
- package/dist/esm/input/Pointer.js.map +1 -1
- package/dist/esm/input/SteamControllerGamepadMapping.d.ts +8 -0
- package/dist/esm/input/SteamControllerGamepadMapping.js +8 -0
- package/dist/esm/input/SteamControllerGamepadMapping.js.map +1 -1
- package/dist/esm/input/SwitchProGamepadMapping.d.ts +9 -0
- package/dist/esm/input/SwitchProGamepadMapping.js +9 -0
- package/dist/esm/input/SwitchProGamepadMapping.js.map +1 -1
- package/dist/esm/input/XboxGamepadMapping.d.ts +8 -0
- package/dist/esm/input/XboxGamepadMapping.js +8 -0
- package/dist/esm/input/XboxGamepadMapping.js.map +1 -1
- package/dist/esm/input/types.d.ts +20 -0
- package/dist/esm/input/types.js +20 -0
- package/dist/esm/input/types.js.map +1 -1
- package/dist/esm/math/AbstractVector.d.ts +83 -0
- package/dist/esm/math/AbstractVector.js +83 -0
- package/dist/esm/math/AbstractVector.js.map +1 -1
- package/dist/esm/math/Circle.d.ts +32 -0
- package/dist/esm/math/Circle.js +34 -2
- package/dist/esm/math/Circle.js.map +1 -1
- package/dist/esm/math/CircleLike.d.ts +1 -0
- package/dist/esm/math/Collision.d.ts +39 -0
- package/dist/esm/math/Collision.js +5 -0
- package/dist/esm/math/Collision.js.map +1 -1
- package/dist/esm/math/Ellipse.d.ts +11 -0
- package/dist/esm/math/Ellipse.js +18 -2
- package/dist/esm/math/Ellipse.js.map +1 -1
- package/dist/esm/math/EllipseLike.d.ts +3 -0
- package/dist/esm/math/Flags.d.ts +31 -0
- package/dist/esm/math/Flags.js +31 -0
- package/dist/esm/math/Flags.js.map +1 -1
- package/dist/esm/math/Interval.d.ts +15 -0
- package/dist/esm/math/Interval.js +15 -0
- package/dist/esm/math/Interval.js.map +1 -1
- package/dist/esm/math/Line.d.ts +17 -1
- package/dist/esm/math/Line.js +17 -1
- package/dist/esm/math/Line.js.map +1 -1
- package/dist/esm/math/LineLike.d.ts +1 -0
- package/dist/esm/math/Matrix.d.ts +44 -3
- package/dist/esm/math/Matrix.js +44 -3
- package/dist/esm/math/Matrix.js.map +1 -1
- package/dist/esm/math/ObservableSize.d.ts +7 -0
- package/dist/esm/math/ObservableSize.js +7 -0
- package/dist/esm/math/ObservableSize.js.map +1 -1
- package/dist/esm/math/ObservableVector.d.ts +9 -0
- package/dist/esm/math/ObservableVector.js +9 -0
- package/dist/esm/math/ObservableVector.js.map +1 -1
- package/dist/esm/math/PointLike.d.ts +1 -0
- package/dist/esm/math/PolarVector.d.ts +15 -0
- package/dist/esm/math/PolarVector.js +16 -1
- package/dist/esm/math/PolarVector.js.map +1 -1
- package/dist/esm/math/Polygon.d.ts +20 -0
- package/dist/esm/math/Polygon.js +20 -0
- package/dist/esm/math/Polygon.js.map +1 -1
- package/dist/esm/math/PolygonLike.d.ts +4 -0
- package/dist/esm/math/Quadtree.d.ts +40 -3
- package/dist/esm/math/Quadtree.js +39 -3
- package/dist/esm/math/Quadtree.js.map +1 -1
- package/dist/esm/math/Random.d.ts +25 -0
- package/dist/esm/math/Random.js +25 -0
- package/dist/esm/math/Random.js.map +1 -1
- package/dist/esm/math/Rectangle.d.ts +15 -0
- package/dist/esm/math/Rectangle.js +17 -2
- package/dist/esm/math/Rectangle.js.map +1 -1
- package/dist/esm/math/RectangleLike.d.ts +1 -0
- package/dist/esm/math/Segment.d.ts +7 -0
- package/dist/esm/math/Segment.js +7 -0
- package/dist/esm/math/Segment.js.map +1 -1
- package/dist/esm/math/ShapeLike.d.ts +6 -0
- package/dist/esm/math/Size.d.ts +9 -0
- package/dist/esm/math/Size.js +9 -0
- package/dist/esm/math/Size.js.map +1 -1
- package/dist/esm/math/Vector.d.ts +16 -0
- package/dist/esm/math/Vector.js +16 -0
- package/dist/esm/math/Vector.js.map +1 -1
- package/dist/esm/math/collision-detection.d.ts +47 -1
- package/dist/esm/math/collision-detection.js +228 -17
- package/dist/esm/math/collision-detection.js.map +1 -1
- package/dist/esm/math/collision-primitives.d.ts +23 -0
- package/dist/esm/math/collision-primitives.js +23 -0
- package/dist/esm/math/collision-primitives.js.map +1 -1
- package/dist/esm/math/geometry.d.ts +42 -0
- package/dist/esm/math/geometry.js +37 -0
- package/dist/esm/math/geometry.js.map +1 -1
- package/dist/esm/math/utils.d.ts +41 -0
- package/dist/esm/math/utils.js +41 -0
- package/dist/esm/math/utils.js.map +1 -1
- package/dist/esm/particles/Particle.d.ts +37 -0
- package/dist/esm/particles/Particle.js +37 -0
- package/dist/esm/particles/Particle.js.map +1 -1
- package/dist/esm/particles/ParticleProperties.d.ts +15 -0
- package/dist/esm/particles/ParticleSystem.d.ts +69 -0
- package/dist/esm/particles/ParticleSystem.js +69 -0
- package/dist/esm/particles/ParticleSystem.js.map +1 -1
- package/dist/esm/particles/affectors/ColorAffector.d.ts +13 -0
- package/dist/esm/particles/affectors/ColorAffector.js +13 -0
- package/dist/esm/particles/affectors/ColorAffector.js.map +1 -1
- package/dist/esm/particles/affectors/ForceAffector.d.ts +11 -0
- package/dist/esm/particles/affectors/ForceAffector.js +11 -0
- package/dist/esm/particles/affectors/ForceAffector.js.map +1 -1
- package/dist/esm/particles/affectors/ParticleAffector.d.ts +13 -0
- package/dist/esm/particles/affectors/ScaleAffector.d.ts +10 -0
- package/dist/esm/particles/affectors/ScaleAffector.js +10 -0
- package/dist/esm/particles/affectors/ScaleAffector.js.map +1 -1
- package/dist/esm/particles/affectors/TorqueAffector.d.ts +11 -0
- package/dist/esm/particles/affectors/TorqueAffector.js +11 -0
- package/dist/esm/particles/affectors/TorqueAffector.js.map +1 -1
- package/dist/esm/particles/emitters/ParticleEmitter.d.ts +13 -0
- package/dist/esm/particles/emitters/ParticleOptions.d.ts +16 -0
- package/dist/esm/particles/emitters/ParticleOptions.js +16 -0
- package/dist/esm/particles/emitters/ParticleOptions.js.map +1 -1
- package/dist/esm/particles/emitters/UniversalEmitter.d.ts +23 -0
- package/dist/esm/particles/emitters/UniversalEmitter.js +23 -0
- package/dist/esm/particles/emitters/UniversalEmitter.js.map +1 -1
- package/dist/esm/rendering/CallbackRenderPass.d.ts +12 -0
- package/dist/esm/rendering/CallbackRenderPass.js +12 -0
- package/dist/esm/rendering/CallbackRenderPass.js.map +1 -1
- package/dist/esm/rendering/Container.d.ts +43 -0
- package/dist/esm/rendering/Container.js +43 -0
- package/dist/esm/rendering/Container.js.map +1 -1
- package/dist/esm/rendering/Drawable.d.ts +22 -0
- package/dist/esm/rendering/Drawable.js +22 -0
- package/dist/esm/rendering/Drawable.js.map +1 -1
- package/dist/esm/rendering/RenderBackend.d.ts +13 -0
- package/dist/esm/rendering/RenderBackendType.d.ts +4 -0
- package/dist/esm/rendering/RenderBackendType.js +4 -0
- package/dist/esm/rendering/RenderBackendType.js.map +1 -1
- package/dist/esm/rendering/RenderNode.d.ts +18 -0
- package/dist/esm/rendering/RenderNode.js +18 -0
- package/dist/esm/rendering/RenderNode.js.map +1 -1
- package/dist/esm/rendering/RenderPass.d.ts +8 -0
- package/dist/esm/rendering/RenderStats.d.ts +19 -0
- package/dist/esm/rendering/RenderStats.js +7 -0
- package/dist/esm/rendering/RenderStats.js.map +1 -1
- package/dist/esm/rendering/RenderTarget.d.ts +17 -0
- package/dist/esm/rendering/RenderTarget.js +17 -0
- package/dist/esm/rendering/RenderTarget.js.map +1 -1
- package/dist/esm/rendering/RenderTargetPass.d.ts +11 -0
- package/dist/esm/rendering/RenderTargetPass.js +7 -0
- package/dist/esm/rendering/RenderTargetPass.js.map +1 -1
- package/dist/esm/rendering/Renderer.d.ts +15 -0
- package/dist/esm/rendering/RendererRegistry.d.ts +7 -0
- package/dist/esm/rendering/RendererRegistry.js +7 -0
- package/dist/esm/rendering/RendererRegistry.js.map +1 -1
- package/dist/esm/rendering/View.d.ts +67 -2
- package/dist/esm/rendering/View.js +57 -0
- package/dist/esm/rendering/View.js.map +1 -1
- package/dist/esm/rendering/filters/BlurFilter.d.ts +9 -0
- package/dist/esm/rendering/filters/BlurFilter.js +8 -0
- package/dist/esm/rendering/filters/BlurFilter.js.map +1 -1
- package/dist/esm/rendering/filters/ColorFilter.d.ts +7 -0
- package/dist/esm/rendering/filters/ColorFilter.js +7 -0
- package/dist/esm/rendering/filters/ColorFilter.js.map +1 -1
- package/dist/esm/rendering/filters/Filter.d.ts +23 -0
- package/dist/esm/rendering/filters/Filter.js +20 -0
- package/dist/esm/rendering/filters/Filter.js.map +1 -1
- package/dist/esm/rendering/filters/WebGl2ShaderFilter.d.ts +5 -0
- package/dist/esm/rendering/filters/WebGl2ShaderFilter.js +5 -0
- package/dist/esm/rendering/filters/WebGl2ShaderFilter.js.map +1 -1
- package/dist/esm/rendering/filters/WebGpuShaderFilter.d.ts +5 -0
- package/dist/esm/rendering/filters/WebGpuShaderFilter.js +5 -0
- package/dist/esm/rendering/filters/WebGpuShaderFilter.js.map +1 -1
- package/dist/esm/rendering/mesh/Mesh.d.ts +2 -0
- package/dist/esm/rendering/mesh/Mesh.js +2 -0
- package/dist/esm/rendering/mesh/Mesh.js.map +1 -1
- package/dist/esm/rendering/primitives/Graphics.d.ts +34 -0
- package/dist/esm/rendering/primitives/Graphics.js +34 -0
- package/dist/esm/rendering/primitives/Graphics.js.map +1 -1
- package/dist/esm/rendering/shader/Shader.d.ts +36 -0
- package/dist/esm/rendering/shader/Shader.js +26 -0
- package/dist/esm/rendering/shader/Shader.js.map +1 -1
- package/dist/esm/rendering/shader/ShaderAttribute.d.ts +13 -0
- package/dist/esm/rendering/shader/ShaderAttribute.js +13 -0
- package/dist/esm/rendering/shader/ShaderAttribute.js.map +1 -1
- package/dist/esm/rendering/shader/ShaderUniform.d.ts +27 -0
- package/dist/esm/rendering/shader/ShaderUniform.js +28 -1
- package/dist/esm/rendering/shader/ShaderUniform.js.map +1 -1
- package/dist/esm/rendering/sprite/AnimatedSprite.d.ts +38 -0
- package/dist/esm/rendering/sprite/AnimatedSprite.js +36 -0
- package/dist/esm/rendering/sprite/AnimatedSprite.js.map +1 -1
- package/dist/esm/rendering/sprite/Sprite.d.ts +56 -0
- package/dist/esm/rendering/sprite/Sprite.js +56 -0
- package/dist/esm/rendering/sprite/Sprite.js.map +1 -1
- package/dist/esm/rendering/sprite/Spritesheet.d.ts +25 -0
- package/dist/esm/rendering/sprite/Spritesheet.js +20 -0
- package/dist/esm/rendering/sprite/Spritesheet.js.map +1 -1
- package/dist/esm/rendering/text/Text.d.ts +2 -0
- package/dist/esm/rendering/text/Text.js +2 -0
- package/dist/esm/rendering/text/Text.js.map +1 -1
- package/dist/esm/rendering/text/TextStyle.d.ts +29 -0
- package/dist/esm/rendering/text/TextStyle.js +24 -0
- package/dist/esm/rendering/text/TextStyle.js.map +1 -1
- package/dist/esm/rendering/text/types.d.ts +1 -0
- package/dist/esm/rendering/texture/RenderTexture.d.ts +16 -0
- package/dist/esm/rendering/texture/RenderTexture.js +16 -0
- package/dist/esm/rendering/texture/RenderTexture.js.map +1 -1
- package/dist/esm/rendering/texture/Sampler.d.ts +23 -0
- package/dist/esm/rendering/texture/Sampler.js +13 -0
- package/dist/esm/rendering/texture/Sampler.js.map +1 -1
- package/dist/esm/rendering/texture/Texture.d.ts +30 -0
- package/dist/esm/rendering/texture/Texture.js +30 -0
- package/dist/esm/rendering/texture/Texture.js.map +1 -1
- package/dist/esm/rendering/types.d.ts +29 -0
- package/dist/esm/rendering/types.js +29 -0
- package/dist/esm/rendering/types.js.map +1 -1
- package/dist/esm/rendering/utils.d.ts +20 -0
- package/dist/esm/rendering/utils.js +10 -0
- package/dist/esm/rendering/utils.js.map +1 -1
- package/dist/esm/rendering/video/Video.d.ts +35 -1
- package/dist/esm/rendering/video/Video.js +36 -2
- package/dist/esm/rendering/video/Video.js.map +1 -1
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.d.ts +7 -0
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js +7 -0
- package/dist/esm/rendering/webgl2/AbstractWebGl2BatchedRenderer.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2Backend.d.ts +13 -0
- package/dist/esm/rendering/webgl2/WebGl2Backend.js +13 -0
- package/dist/esm/rendering/webgl2/WebGl2Backend.js.map +1 -1
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.d.ts +8 -0
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js +8 -0
- package/dist/esm/rendering/webgl2/WebGl2RenderBuffer.js.map +1 -1
- package/dist/esm/rendering/webgpu/WebGpuBackend.d.ts +35 -0
- package/dist/esm/rendering/webgpu/WebGpuBackend.js +135 -5
- package/dist/esm/rendering/webgpu/WebGpuBackend.js.map +1 -1
- package/dist/esm/resources/AbstractAssetFactory.d.ts +20 -0
- package/dist/esm/resources/AbstractAssetFactory.js +20 -0
- package/dist/esm/resources/AbstractAssetFactory.js.map +1 -1
- package/dist/esm/resources/AssetFactory.d.ts +26 -0
- package/dist/esm/resources/AssetManifest.d.ts +45 -0
- package/dist/esm/resources/AssetManifest.js +25 -0
- package/dist/esm/resources/AssetManifest.js.map +1 -1
- package/dist/esm/resources/CacheFirstStrategy.d.ts +12 -0
- package/dist/esm/resources/CacheFirstStrategy.js +12 -0
- package/dist/esm/resources/CacheFirstStrategy.js.map +1 -1
- package/dist/esm/resources/CacheStore.d.ts +23 -0
- package/dist/esm/resources/CacheStrategy.d.ts +20 -0
- package/dist/esm/resources/Database.d.ts +45 -0
- package/dist/esm/resources/FactoryRegistry.d.ts +28 -0
- package/dist/esm/resources/FactoryRegistry.js +24 -0
- package/dist/esm/resources/FactoryRegistry.js.map +1 -1
- package/dist/esm/resources/IndexedDbDatabase.d.ts +22 -1
- package/dist/esm/resources/IndexedDbDatabase.js +21 -0
- package/dist/esm/resources/IndexedDbDatabase.js.map +1 -1
- package/dist/esm/resources/IndexedDbStore.d.ts +20 -0
- package/dist/esm/resources/IndexedDbStore.js +12 -0
- package/dist/esm/resources/IndexedDbStore.js.map +1 -1
- package/dist/esm/resources/Loader.d.ts +167 -0
- package/dist/esm/resources/Loader.js +110 -0
- package/dist/esm/resources/Loader.js.map +1 -1
- package/dist/esm/resources/NetworkOnlyStrategy.d.ts +8 -0
- package/dist/esm/resources/NetworkOnlyStrategy.js +8 -0
- package/dist/esm/resources/NetworkOnlyStrategy.js.map +1 -1
- package/dist/esm/resources/factories/BinaryFactory.d.ts +13 -0
- package/dist/esm/resources/factories/BinaryFactory.js +13 -0
- package/dist/esm/resources/factories/BinaryFactory.js.map +1 -1
- package/dist/esm/resources/factories/FontFactory.d.ts +37 -0
- package/dist/esm/resources/factories/FontFactory.js +26 -0
- package/dist/esm/resources/factories/FontFactory.js.map +1 -1
- package/dist/esm/resources/factories/ImageFactory.d.ts +24 -0
- package/dist/esm/resources/factories/ImageFactory.js +19 -0
- package/dist/esm/resources/factories/ImageFactory.js.map +1 -1
- package/dist/esm/resources/factories/JsonFactory.d.ts +13 -0
- package/dist/esm/resources/factories/JsonFactory.js +13 -0
- package/dist/esm/resources/factories/JsonFactory.js.map +1 -1
- package/dist/esm/resources/factories/MusicFactory.d.ts +36 -0
- package/dist/esm/resources/factories/MusicFactory.js +44 -4
- package/dist/esm/resources/factories/MusicFactory.js.map +1 -1
- package/dist/esm/resources/factories/SoundFactory.d.ts +29 -0
- package/dist/esm/resources/factories/SoundFactory.js +18 -0
- package/dist/esm/resources/factories/SoundFactory.js.map +1 -1
- package/dist/esm/resources/factories/SvgFactory.d.ts +19 -0
- package/dist/esm/resources/factories/SvgFactory.js +19 -0
- package/dist/esm/resources/factories/SvgFactory.js.map +1 -1
- package/dist/esm/resources/factories/TextFactory.d.ts +11 -0
- package/dist/esm/resources/factories/TextFactory.js +11 -0
- package/dist/esm/resources/factories/TextFactory.js.map +1 -1
- package/dist/esm/resources/factories/TextureFactory.d.ts +25 -0
- package/dist/esm/resources/factories/TextureFactory.js +20 -0
- package/dist/esm/resources/factories/TextureFactory.js.map +1 -1
- package/dist/esm/resources/factories/VideoFactory.d.ts +37 -0
- package/dist/esm/resources/factories/VideoFactory.js +48 -5
- package/dist/esm/resources/factories/VideoFactory.js.map +1 -1
- package/dist/esm/resources/factories/VttFactory.d.ts +18 -0
- package/dist/esm/resources/factories/VttFactory.js +24 -0
- package/dist/esm/resources/factories/VttFactory.js.map +1 -1
- package/dist/esm/resources/factories/WasmFactory.d.ts +16 -0
- package/dist/esm/resources/factories/WasmFactory.js +16 -0
- package/dist/esm/resources/factories/WasmFactory.js.map +1 -1
- package/dist/esm/resources/utils.d.ts +10 -0
- package/dist/esm/resources/utils.js +10 -0
- package/dist/esm/resources/utils.js.map +1 -1
- package/dist/exo.esm.js +3392 -59
- package/dist/exo.esm.js.map +1 -1
- package/package.json +7 -8
|
@@ -2,6 +2,11 @@ import { Signal } from '@/core/Signal';
|
|
|
2
2
|
import type { GamepadChannel } from './GamepadChannels';
|
|
3
3
|
import type { BrowserGamepad, ResolvedGamepadDefinition } from './GamepadDefinitions';
|
|
4
4
|
import type { GamepadMappingFamily, GamepadMapping } from './GamepadMapping';
|
|
5
|
+
/**
|
|
6
|
+
* Human-readable identity metadata for a connected gamepad.
|
|
7
|
+
* Populated from a {@link ResolvedGamepadDefinition} on connect and available
|
|
8
|
+
* through the matching getters on {@link Gamepad}.
|
|
9
|
+
*/
|
|
5
10
|
export interface GamepadInfo {
|
|
6
11
|
name: string;
|
|
7
12
|
label: string;
|
|
@@ -9,6 +14,15 @@ export interface GamepadInfo {
|
|
|
9
14
|
productId: string | null;
|
|
10
15
|
productKey: string | null;
|
|
11
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* Runtime wrapper for a single browser gamepad slot.
|
|
19
|
+
*
|
|
20
|
+
* Owns the slot's {@link GamepadMapping}, reads raw button and axis values from
|
|
21
|
+
* the browser's Gamepad API each frame via {@link update}, and writes transformed
|
|
22
|
+
* values into the shared `Float32Array` channel buffer. Emits {@link onConnect},
|
|
23
|
+
* {@link onDisconnect}, and per-channel {@link onUpdate} signals so consumers can
|
|
24
|
+
* react without polling.
|
|
25
|
+
*/
|
|
12
26
|
export declare class Gamepad {
|
|
13
27
|
readonly onConnect: Signal<[Gamepad]>;
|
|
14
28
|
readonly onDisconnect: Signal<[Gamepad]>;
|
|
@@ -23,23 +37,57 @@ export declare class Gamepad {
|
|
|
23
37
|
constructor(gamepad: BrowserGamepad, channels: Float32Array, definition: ResolvedGamepadDefinition);
|
|
24
38
|
get mapping(): GamepadMapping;
|
|
25
39
|
set mapping(mapping: GamepadMapping);
|
|
40
|
+
/** The {@link GamepadMappingFamily} of the currently active mapping. */
|
|
26
41
|
get mappingFamily(): GamepadMappingFamily;
|
|
27
42
|
get channels(): Float32Array;
|
|
28
43
|
get gamepad(): BrowserGamepad | null;
|
|
29
44
|
get index(): number;
|
|
45
|
+
/** Whether a browser gamepad is currently attached to this slot. */
|
|
30
46
|
get connected(): boolean;
|
|
31
47
|
get name(): string;
|
|
32
48
|
get label(): string;
|
|
33
49
|
get vendorId(): string | null;
|
|
34
50
|
get productId(): string | null;
|
|
35
51
|
get productKey(): string | null;
|
|
52
|
+
/**
|
|
53
|
+
* Replaces the gamepad's identity metadata.
|
|
54
|
+
* Called automatically during construction when a {@link BrowserGamepad} is
|
|
55
|
+
* provided; exposed publicly to allow runtime overrides.
|
|
56
|
+
*/
|
|
36
57
|
setInfo(info: GamepadInfo): this;
|
|
58
|
+
/**
|
|
59
|
+
* Attaches a live browser gamepad to this slot and dispatches {@link onConnect}
|
|
60
|
+
* if the slot was previously disconnected.
|
|
61
|
+
*/
|
|
37
62
|
connect(gamepad: BrowserGamepad): this;
|
|
63
|
+
/**
|
|
64
|
+
* Detaches the browser gamepad, zeros all mapped channels, and dispatches
|
|
65
|
+
* {@link onDisconnect}. No-op when already disconnected.
|
|
66
|
+
*/
|
|
38
67
|
disconnect(): this;
|
|
68
|
+
/**
|
|
69
|
+
* Samples the browser gamepad's current state and writes transformed values
|
|
70
|
+
* into the shared channel buffer, dispatching {@link onUpdate} for each channel
|
|
71
|
+
* whose value changed. Should be called once per frame by the engine's input loop.
|
|
72
|
+
* No-op when disconnected.
|
|
73
|
+
*/
|
|
39
74
|
update(): this;
|
|
75
|
+
/** Zeroes all channel buffer entries that belong to this gamepad's mapping. */
|
|
40
76
|
clearChannels(): this;
|
|
77
|
+
/**
|
|
78
|
+
* Disconnects the gamepad, clears its channels, and destroys all signals.
|
|
79
|
+
* The instance must not be used after this call.
|
|
80
|
+
*/
|
|
41
81
|
destroy(): void;
|
|
82
|
+
/**
|
|
83
|
+
* Converts a {@link GamepadChannel} to its absolute index in the shared channel
|
|
84
|
+
* buffer for this gamepad instance.
|
|
85
|
+
*/
|
|
42
86
|
resolveChannelOffset(channel: GamepadChannel): number;
|
|
87
|
+
/**
|
|
88
|
+
* Converts a gamepad slot index and {@link GamepadChannel} to an absolute
|
|
89
|
+
* channel buffer offset without requiring a {@link Gamepad} instance.
|
|
90
|
+
*/
|
|
43
91
|
static resolveChannelOffset(gamepadIndex: number, channel: GamepadChannel): number;
|
|
44
92
|
private clearMappedChannels;
|
|
45
93
|
}
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import { Signal } from '../core/Signal.js';
|
|
2
2
|
import { ChannelOffset, ChannelSize } from './types.js';
|
|
3
3
|
|
|
4
|
+
/**
|
|
5
|
+
* Runtime wrapper for a single browser gamepad slot.
|
|
6
|
+
*
|
|
7
|
+
* Owns the slot's {@link GamepadMapping}, reads raw button and axis values from
|
|
8
|
+
* the browser's Gamepad API each frame via {@link update}, and writes transformed
|
|
9
|
+
* values into the shared `Float32Array` channel buffer. Emits {@link onConnect},
|
|
10
|
+
* {@link onDisconnect}, and per-channel {@link onUpdate} signals so consumers can
|
|
11
|
+
* react without polling.
|
|
12
|
+
*/
|
|
4
13
|
class Gamepad {
|
|
5
14
|
onConnect = new Signal();
|
|
6
15
|
onDisconnect = new Signal();
|
|
@@ -45,6 +54,7 @@ class Gamepad {
|
|
|
45
54
|
set mapping(mapping) {
|
|
46
55
|
this.mappingValue = mapping;
|
|
47
56
|
}
|
|
57
|
+
/** The {@link GamepadMappingFamily} of the currently active mapping. */
|
|
48
58
|
get mappingFamily() {
|
|
49
59
|
return this.mappingValue.family;
|
|
50
60
|
}
|
|
@@ -57,6 +67,7 @@ class Gamepad {
|
|
|
57
67
|
get index() {
|
|
58
68
|
return this.indexValue;
|
|
59
69
|
}
|
|
70
|
+
/** Whether a browser gamepad is currently attached to this slot. */
|
|
60
71
|
get connected() {
|
|
61
72
|
return this.browserGamepad !== null;
|
|
62
73
|
}
|
|
@@ -75,10 +86,19 @@ class Gamepad {
|
|
|
75
86
|
get productKey() {
|
|
76
87
|
return this.info.productKey;
|
|
77
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* Replaces the gamepad's identity metadata.
|
|
91
|
+
* Called automatically during construction when a {@link BrowserGamepad} is
|
|
92
|
+
* provided; exposed publicly to allow runtime overrides.
|
|
93
|
+
*/
|
|
78
94
|
setInfo(info) {
|
|
79
95
|
this.info = info;
|
|
80
96
|
return this;
|
|
81
97
|
}
|
|
98
|
+
/**
|
|
99
|
+
* Attaches a live browser gamepad to this slot and dispatches {@link onConnect}
|
|
100
|
+
* if the slot was previously disconnected.
|
|
101
|
+
*/
|
|
82
102
|
connect(gamepad) {
|
|
83
103
|
const wasConnected = this.connected;
|
|
84
104
|
this.browserGamepad = gamepad;
|
|
@@ -87,6 +107,10 @@ class Gamepad {
|
|
|
87
107
|
}
|
|
88
108
|
return this;
|
|
89
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* Detaches the browser gamepad, zeros all mapped channels, and dispatches
|
|
112
|
+
* {@link onDisconnect}. No-op when already disconnected.
|
|
113
|
+
*/
|
|
90
114
|
disconnect() {
|
|
91
115
|
if (this.connected) {
|
|
92
116
|
this.browserGamepad = null;
|
|
@@ -95,6 +119,12 @@ class Gamepad {
|
|
|
95
119
|
}
|
|
96
120
|
return this;
|
|
97
121
|
}
|
|
122
|
+
/**
|
|
123
|
+
* Samples the browser gamepad's current state and writes transformed values
|
|
124
|
+
* into the shared channel buffer, dispatching {@link onUpdate} for each channel
|
|
125
|
+
* whose value changed. Should be called once per frame by the engine's input loop.
|
|
126
|
+
* No-op when disconnected.
|
|
127
|
+
*/
|
|
98
128
|
update() {
|
|
99
129
|
if (this.browserGamepad === null) {
|
|
100
130
|
return this;
|
|
@@ -123,10 +153,15 @@ class Gamepad {
|
|
|
123
153
|
}
|
|
124
154
|
return this;
|
|
125
155
|
}
|
|
156
|
+
/** Zeroes all channel buffer entries that belong to this gamepad's mapping. */
|
|
126
157
|
clearChannels() {
|
|
127
158
|
this.clearMappedChannels();
|
|
128
159
|
return this;
|
|
129
160
|
}
|
|
161
|
+
/**
|
|
162
|
+
* Disconnects the gamepad, clears its channels, and destroys all signals.
|
|
163
|
+
* The instance must not be used after this call.
|
|
164
|
+
*/
|
|
130
165
|
destroy() {
|
|
131
166
|
this.disconnect();
|
|
132
167
|
this.clearMappedChannels();
|
|
@@ -134,9 +169,17 @@ class Gamepad {
|
|
|
134
169
|
this.onDisconnect.destroy();
|
|
135
170
|
this.onUpdate.destroy();
|
|
136
171
|
}
|
|
172
|
+
/**
|
|
173
|
+
* Converts a {@link GamepadChannel} to its absolute index in the shared channel
|
|
174
|
+
* buffer for this gamepad instance.
|
|
175
|
+
*/
|
|
137
176
|
resolveChannelOffset(channel) {
|
|
138
177
|
return this.channelOffset + (channel ^ ChannelOffset.Gamepads);
|
|
139
178
|
}
|
|
179
|
+
/**
|
|
180
|
+
* Converts a gamepad slot index and {@link GamepadChannel} to an absolute
|
|
181
|
+
* channel buffer offset without requiring a {@link Gamepad} instance.
|
|
182
|
+
*/
|
|
140
183
|
static resolveChannelOffset(gamepadIndex, channel) {
|
|
141
184
|
return ChannelOffset.Gamepads + (gamepadIndex * ChannelSize.Gamepad) + (channel ^ ChannelOffset.Gamepads);
|
|
142
185
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Gamepad.js","sources":["../../../../src/input/Gamepad.ts"],"sourcesContent":[null],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"Gamepad.js","sources":["../../../../src/input/Gamepad.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical channel identifiers for every control a standard gamepad can expose.
|
|
3
|
+
*
|
|
4
|
+
* Values are absolute offsets into the engine's shared {@link Float32Array} input
|
|
5
|
+
* channel buffer — each member equals `ChannelOffset.Gamepads + localIndex`.
|
|
6
|
+
* Use {@link Gamepad.resolveChannelOffset} to account for per-slot skew when
|
|
7
|
+
* reading a specific gamepad's data.
|
|
8
|
+
*/
|
|
1
9
|
export declare enum GamepadChannel {
|
|
2
10
|
ButtonSouth = 512,
|
|
3
11
|
ButtonWest = 513,
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
import './types.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Canonical channel identifiers for every control a standard gamepad can expose.
|
|
5
|
+
*
|
|
6
|
+
* Values are absolute offsets into the engine's shared {@link Float32Array} input
|
|
7
|
+
* channel buffer — each member equals `ChannelOffset.Gamepads + localIndex`.
|
|
8
|
+
* Use {@link Gamepad.resolveChannelOffset} to account for per-slot skew when
|
|
9
|
+
* reading a specific gamepad's data.
|
|
10
|
+
*/
|
|
3
11
|
var GamepadChannel;
|
|
4
12
|
(function (GamepadChannel) {
|
|
5
13
|
GamepadChannel[GamepadChannel["ButtonSouth"] = 512] = "ButtonSouth";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GamepadChannels.js","sources":["../../../../src/input/GamepadChannels.ts"],"sourcesContent":[null],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"GamepadChannels.js","sources":["../../../../src/input/GamepadChannels.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,21 @@
|
|
|
1
1
|
import type { GamepadChannel } from './GamepadChannels';
|
|
2
|
+
/**
|
|
3
|
+
* Construction options for a single {@link GamepadControl}.
|
|
4
|
+
* All fields are optional; defaults produce a plain pass-through control
|
|
5
|
+
* with a 0.2 dead-zone.
|
|
6
|
+
*/
|
|
2
7
|
export interface GamepadControlOptions {
|
|
3
8
|
invert?: boolean;
|
|
4
9
|
normalize?: boolean;
|
|
5
10
|
threshold?: number;
|
|
6
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Represents a single mappable control — one button or one axis — on a physical gamepad.
|
|
14
|
+
*
|
|
15
|
+
* Stores the raw Gamepad API `index`, the target {@link GamepadChannel}, and the
|
|
16
|
+
* transform parameters (`invert`, `normalize`, `threshold`) applied each frame
|
|
17
|
+
* by {@link transformValue} before the value is written to the channel buffer.
|
|
18
|
+
*/
|
|
7
19
|
export declare class GamepadControl {
|
|
8
20
|
readonly index: number;
|
|
9
21
|
readonly channel: GamepadChannel;
|
|
@@ -11,5 +23,11 @@ export declare class GamepadControl {
|
|
|
11
23
|
readonly normalize: boolean;
|
|
12
24
|
readonly threshold: number;
|
|
13
25
|
constructor(index: number, channel: GamepadChannel, options?: GamepadControlOptions);
|
|
26
|
+
/**
|
|
27
|
+
* Applies the control's transform pipeline to a raw browser value.
|
|
28
|
+
*
|
|
29
|
+
* Pipeline: clamp to [-1, 1] → optional invert → optional normalize to [0, 1]
|
|
30
|
+
* → dead-zone (returns 0 when the absolute result is at or below `threshold`).
|
|
31
|
+
*/
|
|
14
32
|
transformValue(value: number): number;
|
|
15
33
|
}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import { clamp } from '../math/utils.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Represents a single mappable control — one button or one axis — on a physical gamepad.
|
|
5
|
+
*
|
|
6
|
+
* Stores the raw Gamepad API `index`, the target {@link GamepadChannel}, and the
|
|
7
|
+
* transform parameters (`invert`, `normalize`, `threshold`) applied each frame
|
|
8
|
+
* by {@link transformValue} before the value is written to the channel buffer.
|
|
9
|
+
*/
|
|
3
10
|
class GamepadControl {
|
|
4
11
|
index;
|
|
5
12
|
channel;
|
|
@@ -13,6 +20,12 @@ class GamepadControl {
|
|
|
13
20
|
this.normalize = options.normalize ?? false;
|
|
14
21
|
this.threshold = clamp(options.threshold ?? 0.2, 0, 1);
|
|
15
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Applies the control's transform pipeline to a raw browser value.
|
|
25
|
+
*
|
|
26
|
+
* Pipeline: clamp to [-1, 1] → optional invert → optional normalize to [0, 1]
|
|
27
|
+
* → dead-zone (returns 0 when the absolute result is at or below `threshold`).
|
|
28
|
+
*/
|
|
16
29
|
transformValue(value) {
|
|
17
30
|
let result = clamp(value, -1, 1);
|
|
18
31
|
if (this.invert) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GamepadControl.js","sources":["../../../../src/input/GamepadControl.ts"],"sourcesContent":[null],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"GamepadControl.js","sources":["../../../../src/input/GamepadControl.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAeA;;;;;;AAMG;MACU,cAAc,CAAA;AACP,IAAA,KAAK;AACL,IAAA,OAAO;AACP,IAAA,MAAM;AACN,IAAA,SAAS;AACT,IAAA,SAAS;AAEzB,IAAA,WAAA,CAAmB,KAAa,EAAE,OAAuB,EAAE,UAAiC,EAAE,EAAA;AAC1F,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AAClB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;QACtB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK;QACrC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK;AAC3C,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1D;AAEA;;;;;AAKG;AACI,IAAA,cAAc,CAAC,KAAa,EAAA;QAC/B,IAAI,MAAM,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;AAEhC,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,MAAM,IAAI,EAAE;QAChB;AAEA,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC;QAC7B;AAEA,QAAA,OAAO,MAAM,GAAG,IAAI,CAAC,SAAS,GAAG,MAAM,GAAG,CAAC;IAC/C;AACH;;;;"}
|
|
@@ -1,9 +1,25 @@
|
|
|
1
1
|
import type { GamepadMapping } from './GamepadMapping';
|
|
2
|
+
/** Convenience alias for the non-null element type returned by `navigator.getGamepads()`. */
|
|
2
3
|
export type BrowserGamepad = NonNullable<ReturnType<Navigator['getGamepads']>[number]>;
|
|
4
|
+
/**
|
|
5
|
+
* Value a {@link GamepadDefinition.resolve} callback may return.
|
|
6
|
+
*
|
|
7
|
+
* Return a bare {@link GamepadMapping} to accept the device with the definition's
|
|
8
|
+
* default name, an object with an optional `name` override, or `null`/`undefined`
|
|
9
|
+
* to decline the device and let the next definition in the list try.
|
|
10
|
+
*/
|
|
3
11
|
export type GamepadDefinitionResult = GamepadMapping | {
|
|
4
12
|
name?: string;
|
|
5
13
|
mapping: GamepadMapping;
|
|
6
14
|
} | null | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* Parsed metadata extracted from a browser `Gamepad.id` string.
|
|
17
|
+
*
|
|
18
|
+
* `vendorId` and `productId` are four-hex-digit strings (e.g. `"045e"`, `"028e"`).
|
|
19
|
+
* `productKey` is the colon-joined pair (`"045e:028e"`), used as a compact lookup key.
|
|
20
|
+
* `name` is the human-readable portion of the id with the vendor/product tokens removed,
|
|
21
|
+
* or `null` when the id contained only identifiers.
|
|
22
|
+
*/
|
|
7
23
|
export interface GamepadDescriptor {
|
|
8
24
|
id: string;
|
|
9
25
|
index: number;
|
|
@@ -13,19 +29,66 @@ export interface GamepadDescriptor {
|
|
|
13
29
|
productKey: string | null;
|
|
14
30
|
name: string | null;
|
|
15
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* A rule that matches one or more physical gamepads and produces a {@link GamepadMapping}.
|
|
34
|
+
*
|
|
35
|
+
* `ids` is an optional allow-list of vendor IDs (`"045e"`) or `vendorId:productId`
|
|
36
|
+
* pairs (`"045e:028e"`); when omitted the definition matches every device.
|
|
37
|
+
* `resolve` is called with the parsed {@link GamepadDescriptor} and must return a
|
|
38
|
+
* {@link GamepadDefinitionResult} — `null`/`undefined` to skip, a mapping otherwise.
|
|
39
|
+
*/
|
|
16
40
|
export interface GamepadDefinition {
|
|
17
41
|
ids?: string | Array<string>;
|
|
18
42
|
name?: string;
|
|
19
43
|
resolve: (descriptor: GamepadDescriptor) => GamepadDefinitionResult;
|
|
20
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* The fully resolved product of running a {@link GamepadDefinition} against a
|
|
47
|
+
* connected gamepad — bundles the original descriptor, the resolved display name,
|
|
48
|
+
* and the chosen {@link GamepadMapping} together for use by {@link Gamepad}.
|
|
49
|
+
*/
|
|
21
50
|
export interface ResolvedGamepadDefinition {
|
|
22
51
|
descriptor: GamepadDescriptor;
|
|
23
52
|
name: string;
|
|
24
53
|
mapping: GamepadMapping;
|
|
25
54
|
}
|
|
26
|
-
|
|
55
|
+
/**
|
|
56
|
+
* Returns `true` when `descriptor` matches any entry in `ids`.
|
|
57
|
+
*
|
|
58
|
+
* A colon-containing id (e.g. `"045e:028e"`) is matched against
|
|
59
|
+
* `descriptor.productKey`; a bare four-hex id is matched against
|
|
60
|
+
* `descriptor.vendorId`. Passing no `ids` always returns `true`.
|
|
61
|
+
*/
|
|
27
62
|
export declare const matchesIds: (descriptor: GamepadDescriptor, ids?: string | Array<string>) => boolean;
|
|
63
|
+
/**
|
|
64
|
+
* Parses the raw browser `Gamepad.id` string into a structured {@link GamepadDescriptor}.
|
|
65
|
+
*
|
|
66
|
+
* Attempts multiple vendor/product ID patterns (hex-prefixed, plain, VID/PID, bare pair)
|
|
67
|
+
* in order of specificity, then strips the matched tokens to derive a clean `name`.
|
|
68
|
+
*/
|
|
28
69
|
export declare const parseGamepadDescriptor: (gamepad: BrowserGamepad) => GamepadDescriptor;
|
|
70
|
+
/**
|
|
71
|
+
* Runs a single {@link GamepadDefinition} against a descriptor, respecting its
|
|
72
|
+
* `ids` filter. Returns `null` when the definition declines the device.
|
|
73
|
+
*/
|
|
29
74
|
export declare const resolveDefinition: (definition: GamepadDefinition, descriptor: GamepadDescriptor) => ResolvedGamepadDefinition | null;
|
|
75
|
+
/**
|
|
76
|
+
* Resolves the best-matching {@link ResolvedGamepadDefinition} for a connected gamepad.
|
|
77
|
+
*
|
|
78
|
+
* Iterates `definitions` in order — exact product IDs first, then vendor fallbacks,
|
|
79
|
+
* then a generic catch-all — and returns the first match. Falls back to
|
|
80
|
+
* {@link GenericDualAnalogGamepadMapping} when no definition matches.
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* const resolved = resolveGamepadDefinition(navigator.getGamepads()[0]!);
|
|
84
|
+
* const gamepad = new Gamepad(browserGamepad, channels, resolved);
|
|
85
|
+
*/
|
|
30
86
|
export declare const resolveGamepadDefinition: (gamepadOrDescriptor: BrowserGamepad | GamepadDescriptor, definitions?: ReadonlyArray<GamepadDefinition>) => ResolvedGamepadDefinition;
|
|
87
|
+
/**
|
|
88
|
+
* The default ordered list of {@link GamepadDefinition} entries used by
|
|
89
|
+
* {@link resolveGamepadDefinition} when no custom list is supplied.
|
|
90
|
+
*
|
|
91
|
+
* Ordered as: exact product-ID matches → vendor-ID fallbacks → generic catch-all.
|
|
92
|
+
* Register custom definitions by prepending to a copy and passing it explicitly.
|
|
93
|
+
*/
|
|
31
94
|
export declare const builtInGamepadDefinitions: Array<GamepadDefinition>;
|
|
@@ -59,6 +59,10 @@ const resolveDefinitionResult = (definition, descriptor) => {
|
|
|
59
59
|
mapping: result,
|
|
60
60
|
};
|
|
61
61
|
};
|
|
62
|
+
/**
|
|
63
|
+
* Normalises an `ids` value into a trimmed, lower-case string array ready for
|
|
64
|
+
* comparison against a {@link GamepadDescriptor}.
|
|
65
|
+
*/
|
|
62
66
|
const normalizeIds = (ids) => {
|
|
63
67
|
if (!ids) {
|
|
64
68
|
return [];
|
|
@@ -66,6 +70,13 @@ const normalizeIds = (ids) => {
|
|
|
66
70
|
const values = Array.isArray(ids) ? ids : [ids];
|
|
67
71
|
return values.map(normalizeId);
|
|
68
72
|
};
|
|
73
|
+
/**
|
|
74
|
+
* Returns `true` when `descriptor` matches any entry in `ids`.
|
|
75
|
+
*
|
|
76
|
+
* A colon-containing id (e.g. `"045e:028e"`) is matched against
|
|
77
|
+
* `descriptor.productKey`; a bare four-hex id is matched against
|
|
78
|
+
* `descriptor.vendorId`. Passing no `ids` always returns `true`.
|
|
79
|
+
*/
|
|
69
80
|
const matchesIds = (descriptor, ids) => {
|
|
70
81
|
if (!ids) {
|
|
71
82
|
return true;
|
|
@@ -83,6 +94,12 @@ const matchesIds = (descriptor, ids) => {
|
|
|
83
94
|
}
|
|
84
95
|
return false;
|
|
85
96
|
};
|
|
97
|
+
/**
|
|
98
|
+
* Parses the raw browser `Gamepad.id` string into a structured {@link GamepadDescriptor}.
|
|
99
|
+
*
|
|
100
|
+
* Attempts multiple vendor/product ID patterns (hex-prefixed, plain, VID/PID, bare pair)
|
|
101
|
+
* in order of specificity, then strips the matched tokens to derive a clean `name`.
|
|
102
|
+
*/
|
|
86
103
|
const parseGamepadDescriptor = (gamepad) => {
|
|
87
104
|
const label = gamepad.id.trim() || `Gamepad ${gamepad.index}`;
|
|
88
105
|
const productKey = parseProductKey(label);
|
|
@@ -98,12 +115,27 @@ const parseGamepadDescriptor = (gamepad) => {
|
|
|
98
115
|
name: parseName(label),
|
|
99
116
|
};
|
|
100
117
|
};
|
|
118
|
+
/**
|
|
119
|
+
* Runs a single {@link GamepadDefinition} against a descriptor, respecting its
|
|
120
|
+
* `ids` filter. Returns `null` when the definition declines the device.
|
|
121
|
+
*/
|
|
101
122
|
const resolveDefinition = (definition, descriptor) => {
|
|
102
123
|
if (!matchesIds(descriptor, definition.ids)) {
|
|
103
124
|
return null;
|
|
104
125
|
}
|
|
105
126
|
return resolveDefinitionResult(definition, descriptor);
|
|
106
127
|
};
|
|
128
|
+
/**
|
|
129
|
+
* Resolves the best-matching {@link ResolvedGamepadDefinition} for a connected gamepad.
|
|
130
|
+
*
|
|
131
|
+
* Iterates `definitions` in order — exact product IDs first, then vendor fallbacks,
|
|
132
|
+
* then a generic catch-all — and returns the first match. Falls back to
|
|
133
|
+
* {@link GenericDualAnalogGamepadMapping} when no definition matches.
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* const resolved = resolveGamepadDefinition(navigator.getGamepads()[0]!);
|
|
137
|
+
* const gamepad = new Gamepad(browserGamepad, channels, resolved);
|
|
138
|
+
*/
|
|
107
139
|
const resolveGamepadDefinition = (gamepadOrDescriptor, definitions = builtInGamepadDefinitions) => {
|
|
108
140
|
const descriptor = 'connected' in gamepadOrDescriptor
|
|
109
141
|
? parseGamepadDescriptor(gamepadOrDescriptor)
|
|
@@ -165,11 +197,18 @@ const vendorFallbackDefinitions = [
|
|
|
165
197
|
createStaticGamepadDefinition('Sony Controller', () => new PlayStationGamepadMapping(), '054c'),
|
|
166
198
|
];
|
|
167
199
|
const genericFallbackDefinition = createStaticGamepadDefinition('Generic Gamepad', () => new GenericDualAnalogGamepadMapping());
|
|
200
|
+
/**
|
|
201
|
+
* The default ordered list of {@link GamepadDefinition} entries used by
|
|
202
|
+
* {@link resolveGamepadDefinition} when no custom list is supplied.
|
|
203
|
+
*
|
|
204
|
+
* Ordered as: exact product-ID matches → vendor-ID fallbacks → generic catch-all.
|
|
205
|
+
* Register custom definitions by prepending to a copy and passing it explicitly.
|
|
206
|
+
*/
|
|
168
207
|
const builtInGamepadDefinitions = [
|
|
169
208
|
...exactDeviceDefinitions,
|
|
170
209
|
...vendorFallbackDefinitions,
|
|
171
210
|
genericFallbackDefinition,
|
|
172
211
|
];
|
|
173
212
|
|
|
174
|
-
export { builtInGamepadDefinitions, matchesIds,
|
|
213
|
+
export { builtInGamepadDefinitions, matchesIds, parseGamepadDescriptor, resolveDefinition, resolveGamepadDefinition };
|
|
175
214
|
//# sourceMappingURL=GamepadDefinitions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GamepadDefinitions.js","sources":["../../../../src/input/GamepadDefinitions.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"GamepadDefinitions.js","sources":["../../../../src/input/GamepadDefinitions.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { GamepadControl } from './GamepadControl';
|
|
2
2
|
import type { GamepadControlOptions } from './GamepadControl';
|
|
3
3
|
import type { GamepadChannel } from './GamepadChannels';
|
|
4
|
+
/**
|
|
5
|
+
* Discriminant tag identifying which device family a {@link GamepadMapping} belongs to.
|
|
6
|
+
* Used to select the correct mapping at runtime when a gamepad connects.
|
|
7
|
+
*/
|
|
4
8
|
export declare enum GamepadMappingFamily {
|
|
5
9
|
GenericDualAnalog = "genericDualAnalog",
|
|
6
10
|
Xbox = "xbox",
|
|
@@ -12,12 +16,38 @@ export declare enum GamepadMappingFamily {
|
|
|
12
16
|
SteamController = "steamController",
|
|
13
17
|
ArcadeStick = "arcadeStick"
|
|
14
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Compact descriptor for a single gamepad control.
|
|
21
|
+
* Tuple of `[rawIndex, channel, options?]` where `rawIndex` is the
|
|
22
|
+
* Gamepad API button or axis index reported by the browser.
|
|
23
|
+
*/
|
|
15
24
|
export type GamepadControlDefinition = readonly [number, GamepadChannel, GamepadControlOptions?];
|
|
25
|
+
/**
|
|
26
|
+
* Abstract translation layer between the browser's raw {@link https://developer.mozilla.org/en-US/docs/Web/API/Gamepad Gamepad API}
|
|
27
|
+
* indices and ExoJS-canonical {@link GamepadChannel} controls.
|
|
28
|
+
*
|
|
29
|
+
* Each concrete subclass encodes one device family's button/axis layout as
|
|
30
|
+
* ordered arrays of {@link GamepadControl} objects. The engine selects the
|
|
31
|
+
* appropriate mapping when a gamepad connects and uses it to route raw
|
|
32
|
+
* values to the correct input channels every frame.
|
|
33
|
+
*/
|
|
16
34
|
export declare abstract class GamepadMapping {
|
|
35
|
+
/** Identifies the device family this mapping targets. */
|
|
17
36
|
abstract readonly family: GamepadMappingFamily;
|
|
18
|
-
|
|
19
|
-
readonly
|
|
37
|
+
/** Ordered list of button controls, indexed by the Gamepad API button index. */
|
|
38
|
+
readonly buttons: ReadonlyArray<GamepadControl>;
|
|
39
|
+
/** Ordered list of axis controls, indexed by the Gamepad API axis index. */
|
|
40
|
+
readonly axes: ReadonlyArray<GamepadControl>;
|
|
20
41
|
protected constructor(buttons: Array<GamepadControl>, axes: Array<GamepadControl>);
|
|
42
|
+
/**
|
|
43
|
+
* Releases all button and axis control references held by this mapping.
|
|
44
|
+
* Call when the associated gamepad disconnects to allow garbage collection.
|
|
45
|
+
*/
|
|
21
46
|
destroy(): void;
|
|
47
|
+
/**
|
|
48
|
+
* Converts an array of {@link GamepadControlDefinition} tuples into fully
|
|
49
|
+
* constructed {@link GamepadControl} instances.
|
|
50
|
+
* Shared factory used by all concrete mapping constructors.
|
|
51
|
+
*/
|
|
22
52
|
static createControls(definitions: ReadonlyArray<GamepadControlDefinition>): Array<GamepadControl>;
|
|
23
53
|
}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import { GamepadControl } from './GamepadControl.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Discriminant tag identifying which device family a {@link GamepadMapping} belongs to.
|
|
5
|
+
* Used to select the correct mapping at runtime when a gamepad connects.
|
|
6
|
+
*/
|
|
3
7
|
var GamepadMappingFamily;
|
|
4
8
|
(function (GamepadMappingFamily) {
|
|
5
9
|
GamepadMappingFamily["GenericDualAnalog"] = "genericDualAnalog";
|
|
@@ -12,17 +16,37 @@ var GamepadMappingFamily;
|
|
|
12
16
|
GamepadMappingFamily["SteamController"] = "steamController";
|
|
13
17
|
GamepadMappingFamily["ArcadeStick"] = "arcadeStick";
|
|
14
18
|
})(GamepadMappingFamily || (GamepadMappingFamily = {}));
|
|
19
|
+
/**
|
|
20
|
+
* Abstract translation layer between the browser's raw {@link https://developer.mozilla.org/en-US/docs/Web/API/Gamepad Gamepad API}
|
|
21
|
+
* indices and ExoJS-canonical {@link GamepadChannel} controls.
|
|
22
|
+
*
|
|
23
|
+
* Each concrete subclass encodes one device family's button/axis layout as
|
|
24
|
+
* ordered arrays of {@link GamepadControl} objects. The engine selects the
|
|
25
|
+
* appropriate mapping when a gamepad connects and uses it to route raw
|
|
26
|
+
* values to the correct input channels every frame.
|
|
27
|
+
*/
|
|
15
28
|
class GamepadMapping {
|
|
29
|
+
/** Ordered list of button controls, indexed by the Gamepad API button index. */
|
|
16
30
|
buttons;
|
|
31
|
+
/** Ordered list of axis controls, indexed by the Gamepad API axis index. */
|
|
17
32
|
axes;
|
|
18
33
|
constructor(buttons, axes) {
|
|
19
34
|
this.buttons = buttons;
|
|
20
35
|
this.axes = axes;
|
|
21
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* Releases all button and axis control references held by this mapping.
|
|
39
|
+
* Call when the associated gamepad disconnects to allow garbage collection.
|
|
40
|
+
*/
|
|
22
41
|
destroy() {
|
|
23
42
|
this.buttons.length = 0;
|
|
24
43
|
this.axes.length = 0;
|
|
25
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Converts an array of {@link GamepadControlDefinition} tuples into fully
|
|
47
|
+
* constructed {@link GamepadControl} instances.
|
|
48
|
+
* Shared factory used by all concrete mapping constructors.
|
|
49
|
+
*/
|
|
26
50
|
static createControls(definitions) {
|
|
27
51
|
return definitions.map(([index, channel, options]) => new GamepadControl(index, channel, options));
|
|
28
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GamepadMapping.js","sources":["../../../../src/input/GamepadMapping.ts"],"sourcesContent":[null],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"GamepadMapping.js","sources":["../../../../src/input/GamepadMapping.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAKA;;;AAGG;IACS;AAAZ,CAAA,UAAY,oBAAoB,EAAA;AAC5B,IAAA,oBAAA,CAAA,mBAAA,CAAA,GAAA,mBAAuC;AACvC,IAAA,oBAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,oBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,oBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACvB,IAAA,oBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB;AACzB,IAAA,oBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,oBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,oBAAA,CAAA,iBAAA,CAAA,GAAA,iBAAmC;AACnC,IAAA,oBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC/B,CAAC,EAVW,oBAAoB,KAApB,oBAAoB,GAAA,EAAA,CAAA,CAAA;AAmBhC;;;;;;;;AAQG;MACmB,cAAc,CAAA;;AAKhB,IAAA,OAAO;;AAGP,IAAA,IAAI;IAEpB,WAAA,CAAsB,OAA8B,EAAE,IAA2B,EAAA;AAC7E,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACtB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;IACpB;AAEA;;;AAGG;IACI,OAAO,GAAA;AACT,QAAA,IAAI,CAAC,OAAiC,CAAC,MAAM,GAAG,CAAC;AACjD,QAAA,IAAI,CAAC,IAA8B,CAAC,MAAM,GAAG,CAAC;IACnD;AAEA;;;;AAIG;IACI,OAAO,cAAc,CAAC,WAAoD,EAAA;QAC7E,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,IAAI,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACtG;AACH;;;;"}
|