@caperjs/core 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 +22 -0
- package/README.md +62 -0
- package/cli/add.mjs +197 -0
- package/cli/audio/cc.mjs +128 -0
- package/cli/audio/index.mjs +42 -0
- package/cli/audio/utils.mjs +56 -0
- package/cli/create-caper.mjs +8 -0
- package/cli/create.mjs +351 -0
- package/cli/install-peerdeps.mjs +57 -0
- package/cli/update.mjs +9 -0
- package/cli/utils.mjs +81 -0
- package/cli/vite.mjs +55 -0
- package/cli/voiceover/generateVoiceoverCSV.mjs +158 -0
- package/cli/voiceover/index.mjs +1 -0
- package/cli.mjs +157 -0
- package/client.d.ts +7 -0
- package/config/assetpack.mjs +212 -0
- package/config/tsconfig.base.json +28 -0
- package/config/vite.mjs +2464 -0
- package/extras/css/accessibility.css +9 -0
- package/extras/css/fullscreen.css +28 -0
- package/extras/css/loader.css +67 -0
- package/extras/llms.txt +1602 -0
- package/lib/CaptionsPlugin-Dc8fIrjy.js +277 -0
- package/lib/CaptionsPlugin-Dc8fIrjy.js.map +1 -0
- package/lib/DataAdapter-BY2114sp.js +84 -0
- package/lib/DataAdapter-BY2114sp.js.map +1 -0
- package/lib/DebugRenderer-BJMLILqI.js +1385 -0
- package/lib/DebugRenderer-BJMLILqI.js.map +1 -0
- package/lib/DevToolsPlugin-wQ5rOkn0.js +31 -0
- package/lib/DevToolsPlugin-wQ5rOkn0.js.map +1 -0
- package/lib/GSAPPlugin-DHhSZKv8.js +350 -0
- package/lib/GSAPPlugin-DHhSZKv8.js.map +1 -0
- package/lib/LayoutPlugin-B-DF9SYM.js +1271 -0
- package/lib/LayoutPlugin-B-DF9SYM.js.map +1 -0
- package/lib/SpinePlugin-Dz_3dljz.js +6077 -0
- package/lib/SpinePlugin-Dz_3dljz.js.map +1 -0
- package/lib/StatsPlugin-Cg82JMBD.js +70 -0
- package/lib/StatsPlugin-Cg82JMBD.js.map +1 -0
- package/lib/VoiceOverPlugin-BR3ImT8C.js +114 -0
- package/lib/VoiceOverPlugin-BR3ImT8C.js.map +1 -0
- package/lib/caper.mjs +1233 -0
- package/lib/caper.mjs.map +1 -0
- package/lib/core/Application.d.ts +268 -0
- package/lib/core/Application.d.ts.map +1 -0
- package/lib/core/config.d.ts +39 -0
- package/lib/core/config.d.ts.map +1 -0
- package/lib/core/create.d.ts +41 -0
- package/lib/core/create.d.ts.map +1 -0
- package/lib/core/globals.d.ts +51 -0
- package/lib/core/globals.d.ts.map +1 -0
- package/lib/core/index.d.ts +7 -0
- package/lib/core/index.d.ts.map +1 -0
- package/lib/core/interfaces/IApplication.d.ts +566 -0
- package/lib/core/interfaces/IApplication.d.ts.map +1 -0
- package/lib/core/interfaces/IApplicationOptions.d.ts +65 -0
- package/lib/core/interfaces/IApplicationOptions.d.ts.map +1 -0
- package/lib/core/interfaces/ICoreFunctions.d.ts +49 -0
- package/lib/core/interfaces/ICoreFunctions.d.ts.map +1 -0
- package/lib/core/interfaces/ICoreSignals.d.ts +57 -0
- package/lib/core/interfaces/ICoreSignals.d.ts.map +1 -0
- package/lib/core/interfaces/IStorageCapability.d.ts +20 -0
- package/lib/core/interfaces/IStorageCapability.d.ts.map +1 -0
- package/lib/core/interfaces/IStorageCapability.test.d.ts +2 -0
- package/lib/core/interfaces/IStorageCapability.test.d.ts.map +1 -0
- package/lib/core/interfaces/index.d.ts +7 -0
- package/lib/core/interfaces/index.d.ts.map +1 -0
- package/lib/core/registries.d.ts +8 -0
- package/lib/core/registries.d.ts.map +1 -0
- package/lib/core/types.d.ts +12 -0
- package/lib/core/types.d.ts.map +1 -0
- package/lib/display/AnimatedSprite.d.ts +40 -0
- package/lib/display/AnimatedSprite.d.ts.map +1 -0
- package/lib/display/Camera.d.ts +102 -0
- package/lib/display/Camera.d.ts.map +1 -0
- package/lib/display/Container.d.ts +115 -0
- package/lib/display/Container.d.ts.map +1 -0
- package/lib/display/Entity.d.ts +46 -0
- package/lib/display/Entity.d.ts.map +1 -0
- package/lib/display/ParticleContainer.d.ts +58 -0
- package/lib/display/ParticleContainer.d.ts.map +1 -0
- package/lib/display/Scene.d.ts +250 -0
- package/lib/display/Scene.d.ts.map +1 -0
- package/lib/display/SceneTransition.d.ts +41 -0
- package/lib/display/SceneTransition.d.ts.map +1 -0
- package/lib/display/SpineAnimation.d.ts +76 -0
- package/lib/display/SpineAnimation.d.ts.map +1 -0
- package/lib/display/Svg.d.ts +5 -0
- package/lib/display/Svg.d.ts.map +1 -0
- package/lib/display/index.d.ts +10 -0
- package/lib/display/index.d.ts.map +1 -0
- package/lib/env.d.ts +6 -0
- package/lib/hello.d.ts +2 -0
- package/lib/hello.d.ts.map +1 -0
- package/lib/index.d.ts +15 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/mixins/animated.d.ts +53 -0
- package/lib/mixins/animated.d.ts.map +1 -0
- package/lib/mixins/factory/Factory.d.ts +8 -0
- package/lib/mixins/factory/Factory.d.ts.map +1 -0
- package/lib/mixins/factory/const.d.ts +67 -0
- package/lib/mixins/factory/const.d.ts.map +1 -0
- package/lib/mixins/factory/index.d.ts +8 -0
- package/lib/mixins/factory/index.d.ts.map +1 -0
- package/lib/mixins/factory/methods.d.ts +3 -0
- package/lib/mixins/factory/methods.d.ts.map +1 -0
- package/lib/mixins/factory/props.d.ts +160 -0
- package/lib/mixins/factory/props.d.ts.map +1 -0
- package/lib/mixins/factory/registry.d.ts +27 -0
- package/lib/mixins/factory/registry.d.ts.map +1 -0
- package/lib/mixins/factory/registry.test.d.ts +2 -0
- package/lib/mixins/factory/registry.test.d.ts.map +1 -0
- package/lib/mixins/factory/schema.d.ts +71 -0
- package/lib/mixins/factory/schema.d.ts.map +1 -0
- package/lib/mixins/factory/ui-registry.d.ts +20 -0
- package/lib/mixins/factory/ui-registry.d.ts.map +1 -0
- package/lib/mixins/factory/utils.d.ts +11 -0
- package/lib/mixins/factory/utils.d.ts.map +1 -0
- package/lib/mixins/focus.d.ts +15 -0
- package/lib/mixins/focus.d.ts.map +1 -0
- package/lib/mixins/index.d.ts +6 -0
- package/lib/mixins/index.d.ts.map +1 -0
- package/lib/mixins/interaction.d.ts +20 -0
- package/lib/mixins/interaction.d.ts.map +1 -0
- package/lib/mixins/signals.d.ts +15 -0
- package/lib/mixins/signals.d.ts.map +1 -0
- package/lib/plugins/AssetsPlugin.d.ts +79 -0
- package/lib/plugins/AssetsPlugin.d.ts.map +1 -0
- package/lib/plugins/DataAdapter.d.ts +95 -0
- package/lib/plugins/DataAdapter.d.ts.map +1 -0
- package/lib/plugins/DevToolsPlugin.d.ts +97 -0
- package/lib/plugins/DevToolsPlugin.d.ts.map +1 -0
- package/lib/plugins/FullScreenPlugin.d.ts +240 -0
- package/lib/plugins/FullScreenPlugin.d.ts.map +1 -0
- package/lib/plugins/GSAPPlugin.d.ts +634 -0
- package/lib/plugins/GSAPPlugin.d.ts.map +1 -0
- package/lib/plugins/KeyboardPlugin.d.ts +53 -0
- package/lib/plugins/KeyboardPlugin.d.ts.map +1 -0
- package/lib/plugins/LayoutPlugin.d.ts +100 -0
- package/lib/plugins/LayoutPlugin.d.ts.map +1 -0
- package/lib/plugins/LookupPlugin.d.ts +223 -0
- package/lib/plugins/LookupPlugin.d.ts.map +1 -0
- package/lib/plugins/Plugin.d.ts +132 -0
- package/lib/plugins/Plugin.d.ts.map +1 -0
- package/lib/plugins/Plugin.test.d.ts +2 -0
- package/lib/plugins/Plugin.test.d.ts.map +1 -0
- package/lib/plugins/PopupManagerPlugin.d.ts +108 -0
- package/lib/plugins/PopupManagerPlugin.d.ts.map +1 -0
- package/lib/plugins/ResizerPlugin.d.ts +62 -0
- package/lib/plugins/ResizerPlugin.d.ts.map +1 -0
- package/lib/plugins/SceneManagerPlugin.d.ts +122 -0
- package/lib/plugins/SceneManagerPlugin.d.ts.map +1 -0
- package/lib/plugins/StatsPlugin.d.ts +8 -0
- package/lib/plugins/StatsPlugin.d.ts.map +1 -0
- package/lib/plugins/TimerPlugin.d.ts +401 -0
- package/lib/plugins/TimerPlugin.d.ts.map +1 -0
- package/lib/plugins/WebEventsPlugin.d.ts +60 -0
- package/lib/plugins/WebEventsPlugin.d.ts.map +1 -0
- package/lib/plugins/actions/ActionsPlugin.d.ts +39 -0
- package/lib/plugins/actions/ActionsPlugin.d.ts.map +1 -0
- package/lib/plugins/actions/constants.d.ts +52 -0
- package/lib/plugins/actions/constants.d.ts.map +1 -0
- package/lib/plugins/actions/index.d.ts +5 -0
- package/lib/plugins/actions/index.d.ts.map +1 -0
- package/lib/plugins/actions/methods.d.ts +11 -0
- package/lib/plugins/actions/methods.d.ts.map +1 -0
- package/lib/plugins/actions/types.d.ts +25 -0
- package/lib/plugins/actions/types.d.ts.map +1 -0
- package/lib/plugins/audio/AudioChannel.d.ts +46 -0
- package/lib/plugins/audio/AudioChannel.d.ts.map +1 -0
- package/lib/plugins/audio/AudioChannel.test.d.ts +2 -0
- package/lib/plugins/audio/AudioChannel.test.d.ts.map +1 -0
- package/lib/plugins/audio/AudioInstance.d.ts +79 -0
- package/lib/plugins/audio/AudioInstance.d.ts.map +1 -0
- package/lib/plugins/audio/AudioManagerPlugin.d.ts +323 -0
- package/lib/plugins/audio/AudioManagerPlugin.d.ts.map +1 -0
- package/lib/plugins/audio/VoiceOverPlugin.d.ts +69 -0
- package/lib/plugins/audio/VoiceOverPlugin.d.ts.map +1 -0
- package/lib/plugins/audio/index.d.ts +4 -0
- package/lib/plugins/audio/index.d.ts.map +1 -0
- package/lib/plugins/breakpoints/BreakpointPlugin.d.ts +109 -0
- package/lib/plugins/breakpoints/BreakpointPlugin.d.ts.map +1 -0
- package/lib/plugins/breakpoints/BreakpointPlugin.test.d.ts +2 -0
- package/lib/plugins/breakpoints/BreakpointPlugin.test.d.ts.map +1 -0
- package/lib/plugins/breakpoints/evaluate.d.ts +53 -0
- package/lib/plugins/breakpoints/evaluate.d.ts.map +1 -0
- package/lib/plugins/breakpoints/evaluate.test.d.ts +2 -0
- package/lib/plugins/breakpoints/evaluate.test.d.ts.map +1 -0
- package/lib/plugins/breakpoints/index.d.ts +4 -0
- package/lib/plugins/breakpoints/index.d.ts.map +1 -0
- package/lib/plugins/breakpoints/methods.d.ts +23 -0
- package/lib/plugins/breakpoints/methods.d.ts.map +1 -0
- package/lib/plugins/breakpoints/types.d.ts +70 -0
- package/lib/plugins/breakpoints/types.d.ts.map +1 -0
- package/lib/plugins/captions/CaptionsPlugin.d.ts +150 -0
- package/lib/plugins/captions/CaptionsPlugin.d.ts.map +1 -0
- package/lib/plugins/captions/CaptionsRenderer.d.ts +37 -0
- package/lib/plugins/captions/CaptionsRenderer.d.ts.map +1 -0
- package/lib/plugins/captions/index.d.ts +3 -0
- package/lib/plugins/captions/index.d.ts.map +1 -0
- package/lib/plugins/defaults.d.ts +4 -0
- package/lib/plugins/defaults.d.ts.map +1 -0
- package/lib/plugins/focus/FocusManagerPlugin.d.ts +148 -0
- package/lib/plugins/focus/FocusManagerPlugin.d.ts.map +1 -0
- package/lib/plugins/focus/FocusOutliner.d.ts +32 -0
- package/lib/plugins/focus/FocusOutliner.d.ts.map +1 -0
- package/lib/plugins/focus/index.d.ts +3 -0
- package/lib/plugins/focus/index.d.ts.map +1 -0
- package/lib/plugins/i18nPlugin.d.ts +128 -0
- package/lib/plugins/i18nPlugin.d.ts.map +1 -0
- package/lib/plugins/index.d.ts +18 -0
- package/lib/plugins/index.d.ts.map +1 -0
- package/lib/plugins/input/AbstractControls.d.ts +8 -0
- package/lib/plugins/input/AbstractControls.d.ts.map +1 -0
- package/lib/plugins/input/Controls.d.ts +16 -0
- package/lib/plugins/input/Controls.d.ts.map +1 -0
- package/lib/plugins/input/InputPlugin.d.ts +52 -0
- package/lib/plugins/input/InputPlugin.d.ts.map +1 -0
- package/lib/plugins/input/constants.d.ts +8 -0
- package/lib/plugins/input/constants.d.ts.map +1 -0
- package/lib/plugins/input/index.d.ts +10 -0
- package/lib/plugins/input/index.d.ts.map +1 -0
- package/lib/plugins/input/interfaces.d.ts +30 -0
- package/lib/plugins/input/interfaces.d.ts.map +1 -0
- package/lib/plugins/input/keyboard/KeyboardContols.d.ts +28 -0
- package/lib/plugins/input/keyboard/KeyboardContols.d.ts.map +1 -0
- package/lib/plugins/input/keyboard/index.d.ts +3 -0
- package/lib/plugins/input/keyboard/index.d.ts.map +1 -0
- package/lib/plugins/input/keyboard/interfaces.d.ts +18 -0
- package/lib/plugins/input/keyboard/interfaces.d.ts.map +1 -0
- package/lib/plugins/input/methods.d.ts +4 -0
- package/lib/plugins/input/methods.d.ts.map +1 -0
- package/lib/plugins/input/touch/TouchControls.d.ts +35 -0
- package/lib/plugins/input/touch/TouchControls.d.ts.map +1 -0
- package/lib/plugins/input/touch/constants.d.ts +14 -0
- package/lib/plugins/input/touch/constants.d.ts.map +1 -0
- package/lib/plugins/input/touch/index.d.ts +4 -0
- package/lib/plugins/input/touch/index.d.ts.map +1 -0
- package/lib/plugins/input/touch/interfaces.d.ts +15 -0
- package/lib/plugins/input/touch/interfaces.d.ts.map +1 -0
- package/lib/plugins/input/types.d.ts +32 -0
- package/lib/plugins/input/types.d.ts.map +1 -0
- package/lib/plugins/input/utils.d.ts +23 -0
- package/lib/plugins/input/utils.d.ts.map +1 -0
- package/lib/plugins/spine/SpinePlugin.d.ts +6 -0
- package/lib/plugins/spine/SpinePlugin.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/BatchableSpineSlot.d.ts +31 -0
- package/lib/plugins/spine/pixi-spine/BatchableSpineSlot.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/Spine.d.ts +211 -0
- package/lib/plugins/spine/pixi-spine/Spine.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/SpineDebugRenderer.d.ts +81 -0
- package/lib/plugins/spine/pixi-spine/SpineDebugRenderer.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/SpinePipe.d.ts +21 -0
- package/lib/plugins/spine/pixi-spine/SpinePipe.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/SpineTexture.d.ts +16 -0
- package/lib/plugins/spine/pixi-spine/SpineTexture.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/assets/atlasLoader.d.ts +10 -0
- package/lib/plugins/spine/pixi-spine/assets/atlasLoader.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/assets/skeletonLoader.d.ts +6 -0
- package/lib/plugins/spine/pixi-spine/assets/skeletonLoader.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/darktint/DarkTintBatchGeometry.d.ts +5 -0
- package/lib/plugins/spine/pixi-spine/darktint/DarkTintBatchGeometry.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/darktint/DarkTintBatcher.d.ts +22 -0
- package/lib/plugins/spine/pixi-spine/darktint/DarkTintBatcher.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/darktint/DarkTintShader.d.ts +5 -0
- package/lib/plugins/spine/pixi-spine/darktint/DarkTintShader.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/darktint/darkTintBit.d.ts +51 -0
- package/lib/plugins/spine/pixi-spine/darktint/darkTintBit.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/index.d.ts +9 -0
- package/lib/plugins/spine/pixi-spine/index.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/require-shim.d.ts +34 -0
- package/lib/plugins/spine/pixi-spine/require-shim.d.ts.map +1 -0
- package/lib/registries-CYCaYKZI.js +6885 -0
- package/lib/registries-CYCaYKZI.js.map +1 -0
- package/lib/signals/Signal.d.ts +16 -0
- package/lib/signals/Signal.d.ts.map +1 -0
- package/lib/signals/Signal.test.d.ts +2 -0
- package/lib/signals/Signal.test.d.ts.map +1 -0
- package/lib/signals/index.d.ts +3 -0
- package/lib/signals/index.d.ts.map +1 -0
- package/lib/store/Store.d.ts +56 -0
- package/lib/store/Store.d.ts.map +1 -0
- package/lib/store/Store.test.d.ts +2 -0
- package/lib/store/Store.test.d.ts.map +1 -0
- package/lib/store/index.d.ts +2 -0
- package/lib/store/index.d.ts.map +1 -0
- package/lib/types/framework.d.ts +46 -0
- package/lib/types/gsap.d.ts +23 -0
- package/lib/ui/Button.d.ts +162 -0
- package/lib/ui/Button.d.ts.map +1 -0
- package/lib/ui/FlexContainer.d.ts +109 -0
- package/lib/ui/FlexContainer.d.ts.map +1 -0
- package/lib/ui/Input.d.ts +384 -0
- package/lib/ui/Input.d.ts.map +1 -0
- package/lib/ui/Joystick.d.ts +61 -0
- package/lib/ui/Joystick.d.ts.map +1 -0
- package/lib/ui/Popup.d.ts +109 -0
- package/lib/ui/Popup.d.ts.map +1 -0
- package/lib/ui/Toast.d.ts +131 -0
- package/lib/ui/Toast.d.ts.map +1 -0
- package/lib/ui/Toaster.d.ts +188 -0
- package/lib/ui/Toaster.d.ts.map +1 -0
- package/lib/ui/UICanvas.d.ts +155 -0
- package/lib/ui/UICanvas.d.ts.map +1 -0
- package/lib/ui/index.d.ts +9 -0
- package/lib/ui/index.d.ts.map +1 -0
- package/lib/utils/array.d.ts +11 -0
- package/lib/utils/array.d.ts.map +1 -0
- package/lib/utils/bind.d.ts +21 -0
- package/lib/utils/bind.d.ts.map +1 -0
- package/lib/utils/canvas.d.ts +2 -0
- package/lib/utils/canvas.d.ts.map +1 -0
- package/lib/utils/color.d.ts +66 -0
- package/lib/utils/color.d.ts.map +1 -0
- package/lib/utils/console/Logger.d.ts +15 -0
- package/lib/utils/console/Logger.d.ts.map +1 -0
- package/lib/utils/console/index.d.ts +2 -0
- package/lib/utils/console/index.d.ts.map +1 -0
- package/lib/utils/debug.d.ts +34 -0
- package/lib/utils/debug.d.ts.map +1 -0
- package/lib/utils/define.d.ts +100 -0
- package/lib/utils/define.d.ts.map +1 -0
- package/lib/utils/env.d.ts +4 -0
- package/lib/utils/env.d.ts.map +1 -0
- package/lib/utils/events.d.ts +12 -0
- package/lib/utils/events.d.ts.map +1 -0
- package/lib/utils/framework.d.ts +12 -0
- package/lib/utils/framework.d.ts.map +1 -0
- package/lib/utils/index.d.ts +28 -0
- package/lib/utils/index.d.ts.map +1 -0
- package/lib/utils/map.d.ts +31 -0
- package/lib/utils/map.d.ts.map +1 -0
- package/lib/utils/math.d.ts +15 -0
- package/lib/utils/math.d.ts.map +1 -0
- package/lib/utils/misc.d.ts +13 -0
- package/lib/utils/misc.d.ts.map +1 -0
- package/lib/utils/number.d.ts +2 -0
- package/lib/utils/number.d.ts.map +1 -0
- package/lib/utils/object.d.ts +21 -0
- package/lib/utils/object.d.ts.map +1 -0
- package/lib/utils/padding.d.ts +4 -0
- package/lib/utils/padding.d.ts.map +1 -0
- package/lib/utils/pixi.d.ts +42 -0
- package/lib/utils/pixi.d.ts.map +1 -0
- package/lib/utils/platform.d.ts +20 -0
- package/lib/utils/platform.d.ts.map +1 -0
- package/lib/utils/point.d.ts +66 -0
- package/lib/utils/point.d.ts.map +1 -0
- package/lib/utils/promise/Queue.d.ts +60 -0
- package/lib/utils/promise/Queue.d.ts.map +1 -0
- package/lib/utils/promise/functions.d.ts +14 -0
- package/lib/utils/promise/functions.d.ts.map +1 -0
- package/lib/utils/promise/index.d.ts +3 -0
- package/lib/utils/promise/index.d.ts.map +1 -0
- package/lib/utils/random.d.ts +42 -0
- package/lib/utils/random.d.ts.map +1 -0
- package/lib/utils/rect.d.ts +26 -0
- package/lib/utils/rect.d.ts.map +1 -0
- package/lib/utils/set.d.ts +15 -0
- package/lib/utils/set.d.ts.map +1 -0
- package/lib/utils/string.d.ts +3 -0
- package/lib/utils/string.d.ts.map +1 -0
- package/lib/utils/text.d.ts +3 -0
- package/lib/utils/text.d.ts.map +1 -0
- package/lib/utils/typefilters.d.ts +4 -0
- package/lib/utils/typefilters.d.ts.map +1 -0
- package/lib/utils/types.d.ts +209 -0
- package/lib/utils/types.d.ts.map +1 -0
- package/lib/utils/vite.d.ts +25 -0
- package/lib/utils/vite.d.ts.map +1 -0
- package/lib/utils/web.d.ts +3 -0
- package/lib/utils/web.d.ts.map +1 -0
- package/lib/version.d.ts +3 -0
- package/lib/version.d.ts.map +1 -0
- package/lib/webgl-check.d.ts +2 -0
- package/lib/webgl-check.d.ts.map +1 -0
- package/package.json +138 -0
- package/src/core/Application.ts +1091 -0
- package/src/core/config.ts +168 -0
- package/src/core/create.ts +186 -0
- package/src/core/globals.ts +299 -0
- package/src/core/index.ts +6 -0
- package/src/core/interfaces/IApplication.ts +628 -0
- package/src/core/interfaces/IApplicationOptions.ts +81 -0
- package/src/core/interfaces/ICoreFunctions.ts +86 -0
- package/src/core/interfaces/ICoreSignals.ts +77 -0
- package/src/core/interfaces/IStorageCapability.test.ts +27 -0
- package/src/core/interfaces/IStorageCapability.ts +26 -0
- package/src/core/interfaces/index.ts +6 -0
- package/src/core/registries.ts +7 -0
- package/src/core/types.ts +13 -0
- package/src/display/AnimatedSprite.ts +227 -0
- package/src/display/Camera.ts +371 -0
- package/src/display/Container.ts +240 -0
- package/src/display/Entity.ts +50 -0
- package/src/display/ParticleContainer.ts +107 -0
- package/src/display/Scene.ts +305 -0
- package/src/display/SceneTransition.ts +108 -0
- package/src/display/SpineAnimation.ts +170 -0
- package/src/display/Svg.ts +9 -0
- package/src/display/index.ts +11 -0
- package/src/env.d.ts +6 -0
- package/src/hello.ts +20 -0
- package/src/index.ts +17 -0
- package/src/mixins/animated.ts +340 -0
- package/src/mixins/factory/Factory.ts +24 -0
- package/src/mixins/factory/const.ts +363 -0
- package/src/mixins/factory/index.ts +7 -0
- package/src/mixins/factory/methods.ts +21 -0
- package/src/mixins/factory/props.ts +207 -0
- package/src/mixins/factory/registry.test.ts +83 -0
- package/src/mixins/factory/registry.ts +61 -0
- package/src/mixins/factory/schema.ts +153 -0
- package/src/mixins/factory/ui-registry.ts +54 -0
- package/src/mixins/factory/utils.ts +130 -0
- package/src/mixins/focus.ts +124 -0
- package/src/mixins/index.ts +5 -0
- package/src/mixins/interaction.ts +74 -0
- package/src/mixins/signals.ts +49 -0
- package/src/plugins/AssetsPlugin.ts +407 -0
- package/src/plugins/DataAdapter.ts +259 -0
- package/src/plugins/DevToolsPlugin.ts +103 -0
- package/src/plugins/FullScreenPlugin.ts +359 -0
- package/src/plugins/GSAPPlugin.ts +811 -0
- package/src/plugins/KeyboardPlugin.ts +160 -0
- package/src/plugins/LayoutPlugin.ts +127 -0
- package/src/plugins/LookupPlugin.ts +308 -0
- package/src/plugins/Plugin.test.ts +73 -0
- package/src/plugins/Plugin.ts +200 -0
- package/src/plugins/PopupManagerPlugin.ts +263 -0
- package/src/plugins/ResizerPlugin.ts +220 -0
- package/src/plugins/SceneManagerPlugin.ts +669 -0
- package/src/plugins/StatsPlugin.ts +24 -0
- package/src/plugins/TimerPlugin.ts +841 -0
- package/src/plugins/WebEventsPlugin.ts +132 -0
- package/src/plugins/actions/ActionsPlugin.ts +113 -0
- package/src/plugins/actions/constants.ts +45 -0
- package/src/plugins/actions/index.ts +4 -0
- package/src/plugins/actions/methods.ts +28 -0
- package/src/plugins/actions/types.ts +47 -0
- package/src/plugins/audio/AudioChannel.test.ts +101 -0
- package/src/plugins/audio/AudioChannel.ts +164 -0
- package/src/plugins/audio/AudioInstance.ts +228 -0
- package/src/plugins/audio/AudioManagerPlugin.ts +903 -0
- package/src/plugins/audio/VoiceOverPlugin.ts +354 -0
- package/src/plugins/audio/index.ts +3 -0
- package/src/plugins/breakpoints/BreakpointPlugin.test.ts +228 -0
- package/src/plugins/breakpoints/BreakpointPlugin.ts +293 -0
- package/src/plugins/breakpoints/evaluate.test.ts +239 -0
- package/src/plugins/breakpoints/evaluate.ts +201 -0
- package/src/plugins/breakpoints/index.ts +3 -0
- package/src/plugins/breakpoints/methods.ts +22 -0
- package/src/plugins/breakpoints/types.ts +86 -0
- package/src/plugins/captions/CaptionsPlugin.ts +468 -0
- package/src/plugins/captions/CaptionsRenderer.ts +184 -0
- package/src/plugins/captions/font/Sans.fnt +116 -0
- package/src/plugins/captions/font/Sans.png +0 -0
- package/src/plugins/captions/index.ts +2 -0
- package/src/plugins/defaults.ts +95 -0
- package/src/plugins/focus/FocusManagerPlugin.ts +773 -0
- package/src/plugins/focus/FocusOutliner.ts +111 -0
- package/src/plugins/focus/index.ts +2 -0
- package/src/plugins/i18nPlugin.ts +284 -0
- package/src/plugins/index.ts +17 -0
- package/src/plugins/input/AbstractControls.ts +15 -0
- package/src/plugins/input/Controls.ts +55 -0
- package/src/plugins/input/InputPlugin.ts +168 -0
- package/src/plugins/input/constants.ts +12 -0
- package/src/plugins/input/index.ts +9 -0
- package/src/plugins/input/interfaces.ts +37 -0
- package/src/plugins/input/keyboard/KeyboardContols.ts +182 -0
- package/src/plugins/input/keyboard/index.ts +2 -0
- package/src/plugins/input/keyboard/interfaces.ts +21 -0
- package/src/plugins/input/methods.ts +9 -0
- package/src/plugins/input/touch/TouchControls.ts +237 -0
- package/src/plugins/input/touch/constants.ts +34 -0
- package/src/plugins/input/touch/index.ts +3 -0
- package/src/plugins/input/touch/interfaces.ts +15 -0
- package/src/plugins/input/types.ts +41 -0
- package/src/plugins/input/utils.ts +10 -0
- package/src/plugins/spine/SpinePlugin.ts +14 -0
- package/src/plugins/spine/pixi-spine/BatchableSpineSlot.ts +138 -0
- package/src/plugins/spine/pixi-spine/Spine.ts +897 -0
- package/src/plugins/spine/pixi-spine/SpineDebugRenderer.ts +615 -0
- package/src/plugins/spine/pixi-spine/SpinePipe.ts +197 -0
- package/src/plugins/spine/pixi-spine/SpineTexture.ts +143 -0
- package/src/plugins/spine/pixi-spine/assets/atlasLoader.ts +156 -0
- package/src/plugins/spine/pixi-spine/assets/skeletonLoader.ts +80 -0
- package/src/plugins/spine/pixi-spine/darktint/DarkTintBatchGeometry.ts +92 -0
- package/src/plugins/spine/pixi-spine/darktint/DarkTintBatcher.ts +186 -0
- package/src/plugins/spine/pixi-spine/darktint/DarkTintShader.ts +74 -0
- package/src/plugins/spine/pixi-spine/darktint/darkTintBit.ts +77 -0
- package/src/plugins/spine/pixi-spine/index.ts +43 -0
- package/src/plugins/spine/pixi-spine/require-shim.ts +43 -0
- package/src/signals/Signal.test.ts +54 -0
- package/src/signals/Signal.ts +68 -0
- package/src/signals/index.ts +10 -0
- package/src/store/Store.test.ts +146 -0
- package/src/store/Store.ts +192 -0
- package/src/store/index.ts +1 -0
- package/src/types/framework.d.ts +47 -0
- package/src/types/gsap.d.ts +26 -0
- package/src/ui/Button.ts +454 -0
- package/src/ui/FlexContainer.ts +526 -0
- package/src/ui/Input.ts +1274 -0
- package/src/ui/Joystick.ts +288 -0
- package/src/ui/Popup.ts +242 -0
- package/src/ui/Toast.ts +399 -0
- package/src/ui/Toaster.ts +409 -0
- package/src/ui/UICanvas.ts +812 -0
- package/src/ui/index.ts +8 -0
- package/src/utils/array.ts +24 -0
- package/src/utils/bind.ts +79 -0
- package/src/utils/canvas.ts +26 -0
- package/src/utils/color.ts +126 -0
- package/src/utils/console/Logger.ts +86 -0
- package/src/utils/console/index.ts +1 -0
- package/src/utils/debug.ts +69 -0
- package/src/utils/define.ts +120 -0
- package/src/utils/env.ts +3 -0
- package/src/utils/events.ts +10 -0
- package/src/utils/framework.ts +45 -0
- package/src/utils/index.ts +27 -0
- package/src/utils/map.ts +59 -0
- package/src/utils/math.ts +19 -0
- package/src/utils/misc.ts +45 -0
- package/src/utils/number.ts +3 -0
- package/src/utils/object.ts +43 -0
- package/src/utils/padding.ts +43 -0
- package/src/utils/pixi.ts +116 -0
- package/src/utils/platform.ts +33 -0
- package/src/utils/point.ts +123 -0
- package/src/utils/promise/Queue.ts +125 -0
- package/src/utils/promise/functions.ts +16 -0
- package/src/utils/promise/index.ts +2 -0
- package/src/utils/random.ts +69 -0
- package/src/utils/rect.ts +50 -0
- package/src/utils/set.ts +32 -0
- package/src/utils/string.ts +9 -0
- package/src/utils/text.ts +30 -0
- package/src/utils/typefilters.ts +29 -0
- package/src/utils/types.ts +426 -0
- package/src/utils/vite.ts +41 -0
- package/src/utils/web.ts +7 -0
- package/src/version.ts +3 -0
- package/src/webgl-check.ts +12 -0
- package/templates/app/default/.eslintrc.json +21 -0
- package/templates/app/default/.meta.json +4 -0
- package/templates/app/default/.nvmrc +1 -0
- package/templates/app/default/.prettierrc.json +7 -0
- package/templates/app/default/README.md +8 -0
- package/templates/app/default/assets/audio{m}/music/Cheerful Annoyance.ogg +0 -0
- package/templates/app/default/assets/audio{m}/music/Drumming Sticks.ogg +0 -0
- package/templates/app/default/assets/audio{m}/music/Game Over.ogg +0 -0
- package/templates/app/default/assets/audio{m}/music/Mishief Stroll.ogg +0 -0
- package/templates/app/default/assets/audio{m}/music/Night at the Beach.ogg +0 -0
- package/templates/app/default/assets/audio{m}/sfx/click.ogg +0 -0
- package/templates/app/default/assets/audio{m}/sfx/hover.ogg +0 -0
- package/templates/app/default/assets/required{m}/caper.png +0 -0
- package/templates/app/default/assets/required{m}/fonts{fix}/SpaceGrotesk-Bold{family=Space Grotesk}{wf}.ttf +0 -0
- package/templates/app/default/assets/required{m}/fonts{fix}/SpaceGrotesk-Medium{family=Space Grotesk}{wf}.ttf +0 -0
- package/templates/app/default/assets/required{m}/fonts{fix}/SpaceGrotesk-Regular{family=Space Grotesk}{wf}.ttf +0 -0
- package/templates/app/default/assets/required{m}/fonts{fix}/Syncopate-Bold{family=Syncopate}{wf}.ttf +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn/blue.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn/green.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn/grey.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn/orange.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn/purple.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn/red.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn/yellow.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn_a/down.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn_a/over.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn_a/up.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn_b/down.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn_b/over.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn_b/up.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/joystick/base.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/joystick/handle.png +0 -0
- package/templates/app/default/assets/required{m}/wordmark.svg +1 -0
- package/templates/app/default/assets/spine{m}/spineboy-pro.png +0 -0
- package/templates/app/default/assets/spine{m}/spineboy-pro.skel +0 -0
- package/templates/app/default/assets/spine{m}/spineboy-pro{fix}.atlas +94 -0
- package/templates/app/default/caper.config.ts +60 -0
- package/templates/app/default/index.html +23 -0
- package/templates/app/default/package.template.json +17 -0
- package/templates/app/default/public/favicon.ico +0 -0
- package/templates/app/default/src/__APPLICATION_NAME__.ts +3 -0
- package/templates/app/default/src/main.ts +9 -0
- package/templates/app/default/src/scenes/Base.ts +39 -0
- package/templates/app/default/src/scenes/Game.ts +34 -0
- package/templates/app/default/src/scenes/Splash.ts +70 -0
- package/templates/app/default/src/scenes/Start.ts +90 -0
- package/templates/app/default/src/utils/Constants.ts +3 -0
- package/templates/app/default/tsconfig.json +1 -0
- package/templates/plugin/package.template.json +33 -0
- package/templates/plugin/src/Plugin.template.ts +24 -0
- package/templates/plugin/src/index.template.ts +3 -0
- package/templates/plugin/tsconfig.template.json +43 -0
- package/templates/plugin/vite-env.template.d.ts +16 -0
- package/templates/plugin/vite.config.template.ts +19 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { initDevtools } from '@pixi/devtools';
|
|
2
|
+
import { Application } from 'pixi.js';
|
|
3
|
+
import { Plugin, type IPlugin } from './Plugin';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Interface for the DevTools plugin providing development debugging capabilities.
|
|
7
|
+
* Enables PIXI.js developer tools integration for enhanced debugging and inspection.
|
|
8
|
+
*/
|
|
9
|
+
export interface IDevToolsPlugin extends IPlugin {
|
|
10
|
+
/**
|
|
11
|
+
* Initializes the PIXI DevTools for the given application instance.
|
|
12
|
+
* Enables the browser developer tools extension for PIXI.js debugging.
|
|
13
|
+
*
|
|
14
|
+
* @param app - The PIXI Application instance to attach devtools to
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* const devToolsPlugin = app.plugins.get<IDevToolsPlugin>('DevToolsPlugin');
|
|
19
|
+
* if (devToolsPlugin && process.env.NODE_ENV === 'development') {
|
|
20
|
+
* devToolsPlugin.initializeDevTools(pixiApp);
|
|
21
|
+
* }
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
initializeDevTools(app: Application): void;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Developer tools plugin for enhanced PIXI.js debugging and inspection.
|
|
29
|
+
*
|
|
30
|
+
* Integrates the official PIXI.js developer tools browser extension, providing
|
|
31
|
+
* visual debugging capabilities, scene graph inspection, and performance monitoring
|
|
32
|
+
* directly in the browser's developer tools panel.
|
|
33
|
+
*
|
|
34
|
+
* Features:
|
|
35
|
+
* - Scene graph visualization and navigation
|
|
36
|
+
* - Real-time property inspection and editing
|
|
37
|
+
* - Performance metrics and rendering statistics
|
|
38
|
+
* - Texture atlas and asset inspection
|
|
39
|
+
* - Interactive debugging tools
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```typescript
|
|
43
|
+
* // Plugin is typically initialized automatically in development builds
|
|
44
|
+
* // Manual initialization example:
|
|
45
|
+
* const devToolsPlugin = app.plugins.get<IDevToolsPlugin>('DevToolsPlugin');
|
|
46
|
+
* if (devToolsPlugin && process.env.NODE_ENV === 'development') {
|
|
47
|
+
* devToolsPlugin.initializeDevTools(pixiApp);
|
|
48
|
+
* }
|
|
49
|
+
*
|
|
50
|
+
* // The devtools will then be available in browser developer tools
|
|
51
|
+
* // Look for the "PIXI" tab in Chrome/Firefox developer tools
|
|
52
|
+
* ```
|
|
53
|
+
*
|
|
54
|
+
* @remarks
|
|
55
|
+
* - Should only be enabled in development environments
|
|
56
|
+
* - Requires the PIXI DevTools browser extension to be installed
|
|
57
|
+
* - May impact performance and should be disabled in production builds
|
|
58
|
+
* - Provides comprehensive debugging capabilities for PIXI.js applications
|
|
59
|
+
*/
|
|
60
|
+
export class DevToolsPlugin extends Plugin implements IDevToolsPlugin {
|
|
61
|
+
/** Plugin identifier for framework registration */
|
|
62
|
+
public readonly id = 'DevToolsPlugin';
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Initializes the DevTools plugin.
|
|
66
|
+
* Sets up the plugin for later DevTools activation when needed.
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```typescript
|
|
70
|
+
* // Called automatically by the plugin system
|
|
71
|
+
* // No manual initialization required
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
async initialize() {}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Initializes and activates PIXI DevTools for the specified application.
|
|
78
|
+
* Connects the application to the browser's PIXI DevTools extension for debugging.
|
|
79
|
+
*
|
|
80
|
+
* @param app - The PIXI Application instance to enable debugging for
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```typescript
|
|
84
|
+
* // Typically called conditionally based on environment
|
|
85
|
+
* const pixiApp = new PIXI.Application();
|
|
86
|
+
* const devToolsPlugin = app.plugins.get<IDevToolsPlugin>('DevToolsPlugin');
|
|
87
|
+
*
|
|
88
|
+
* if (devToolsPlugin && process.env.NODE_ENV === 'development') {
|
|
89
|
+
* devToolsPlugin.initializeDevTools(pixiApp);
|
|
90
|
+
* console.log('PIXI DevTools enabled - check browser developer tools');
|
|
91
|
+
* }
|
|
92
|
+
* ```
|
|
93
|
+
*
|
|
94
|
+
* @remarks
|
|
95
|
+
* - Should only be called in development environments
|
|
96
|
+
* - Requires the PIXI DevTools browser extension to be installed
|
|
97
|
+
* - Once initialized, debugging tools will be available in the browser's developer tools
|
|
98
|
+
* - The extension provides a "PIXI" tab with comprehensive debugging features
|
|
99
|
+
*/
|
|
100
|
+
public initializeDevTools(app: Application) {
|
|
101
|
+
initDevtools({ app });
|
|
102
|
+
}
|
|
103
|
+
}
|
|
@@ -0,0 +1,359 @@
|
|
|
1
|
+
import { Application } from '../core/Application';
|
|
2
|
+
import { Signal } from '../signals';
|
|
3
|
+
import { bindAllMethods, Logger } from '../utils';
|
|
4
|
+
import type { IPlugin } from './Plugin';
|
|
5
|
+
import { Plugin } from './Plugin';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Interface for the FullScreen plugin providing cross-browser fullscreen functionality.
|
|
9
|
+
* Handles fullscreen mode management with comprehensive browser compatibility.
|
|
10
|
+
*/
|
|
11
|
+
export interface IFullScreenPlugin extends IPlugin {
|
|
12
|
+
/** Current fullscreen state */
|
|
13
|
+
isFullScreen: boolean;
|
|
14
|
+
/** The HTML element or Window object used for fullscreen operations */
|
|
15
|
+
fullScreenElement: HTMLElement | Window | null;
|
|
16
|
+
/** Signal emitted when fullscreen state changes */
|
|
17
|
+
onFullScreenChange: Signal<(isFullscreen: boolean) => void>;
|
|
18
|
+
/** Toggles between fullscreen and windowed mode */
|
|
19
|
+
toggleFullScreen: () => void;
|
|
20
|
+
/** Sets the fullscreen state explicitly */
|
|
21
|
+
setFullScreen: (value: boolean) => void;
|
|
22
|
+
/** Sets the element to be used for fullscreen operations */
|
|
23
|
+
setFullScreenElement: (element: HTMLElement | Window | null) => void;
|
|
24
|
+
/** Whether the current environment supports fullscreen functionality */
|
|
25
|
+
readonly canFullscreen: boolean;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Cross-browser fullscreen functionality plugin for web applications.
|
|
30
|
+
*
|
|
31
|
+
* Provides comprehensive fullscreen mode management with automatic browser
|
|
32
|
+
* compatibility handling, event management, and flexible element targeting.
|
|
33
|
+
* Supports all major browsers including Chrome, Firefox, Safari, and Edge.
|
|
34
|
+
*
|
|
35
|
+
* Key Features:
|
|
36
|
+
* - Cross-browser fullscreen API compatibility
|
|
37
|
+
* - Automatic event handling and state synchronization
|
|
38
|
+
* - Flexible element targeting (container, window, or custom elements)
|
|
39
|
+
* - Signal-based event system for reactive programming
|
|
40
|
+
* - Graceful fallback handling for unsupported browsers
|
|
41
|
+
* - Automatic cleanup and error handling
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```typescript
|
|
45
|
+
* // Get the fullscreen plugin
|
|
46
|
+
* const fullscreen = app.plugins.get<IFullScreenPlugin>('fullscreen');
|
|
47
|
+
*
|
|
48
|
+
* // Listen for fullscreen changes
|
|
49
|
+
* fullscreen.onFullScreenChange.connect((isFullscreen) => {
|
|
50
|
+
* console.log('Fullscreen state:', isFullscreen);
|
|
51
|
+
* updateUIForFullscreen(isFullscreen);
|
|
52
|
+
* });
|
|
53
|
+
*
|
|
54
|
+
* // Toggle fullscreen mode
|
|
55
|
+
* document.getElementById('fullscreenBtn').addEventListener('click', () => {
|
|
56
|
+
* if (fullscreen.canFullscreen) {
|
|
57
|
+
* fullscreen.toggleFullScreen();
|
|
58
|
+
* } else {
|
|
59
|
+
* console.warn('Fullscreen not supported');
|
|
60
|
+
* }
|
|
61
|
+
* });
|
|
62
|
+
*
|
|
63
|
+
* // Set custom element for fullscreen
|
|
64
|
+
* const gameContainer = document.getElementById('gameContainer');
|
|
65
|
+
* fullscreen.setFullScreenElement(gameContainer);
|
|
66
|
+
* fullscreen.setFullScreen(true);
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
export class FullScreenPlugin extends Plugin implements IFullScreenPlugin {
|
|
70
|
+
/** Plugin identifier for framework registration */
|
|
71
|
+
public readonly id = 'fullscreen';
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Signal emitted when fullscreen state changes.
|
|
75
|
+
* Provides the new fullscreen state as a boolean parameter.
|
|
76
|
+
*/
|
|
77
|
+
public onFullScreenChange: Signal<(isFullscreen: boolean) => void> = new Signal<(isFullscreen: boolean) => void>();
|
|
78
|
+
|
|
79
|
+
/** Internal fullscreen state tracking */
|
|
80
|
+
private _isFullScreen: boolean = false;
|
|
81
|
+
/** Internal reference to the fullscreen target element */
|
|
82
|
+
private _fullScreenElement: HTMLElement | Window | null = null;
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Sets the fullscreen state and triggers the appropriate fullscreen operation.
|
|
86
|
+
* @param value - True to enter fullscreen, false to exit
|
|
87
|
+
*/
|
|
88
|
+
set isFullScreen(value: boolean) {
|
|
89
|
+
this._isFullScreen = value;
|
|
90
|
+
this.setFullScreen(value);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Gets the current fullscreen state.
|
|
95
|
+
* @returns True if currently in fullscreen mode
|
|
96
|
+
*/
|
|
97
|
+
get isFullScreen(): boolean {
|
|
98
|
+
return this._isFullScreen;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Sets the element to be used for fullscreen operations.
|
|
103
|
+
* @param value - The HTML element or Window object to use for fullscreen
|
|
104
|
+
*/
|
|
105
|
+
set fullScreenElement(value: HTMLElement | Window | null) {
|
|
106
|
+
this.setFullScreenElement(value);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Gets the current fullscreen target element.
|
|
111
|
+
* @returns The element currently set for fullscreen operations
|
|
112
|
+
*/
|
|
113
|
+
get fullScreenElement(): HTMLElement | Window | null {
|
|
114
|
+
return this._fullScreenElement;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Creates the fullscreen plugin instance.
|
|
119
|
+
* Binds all methods to maintain proper context when used as event handlers.
|
|
120
|
+
*/
|
|
121
|
+
constructor() {
|
|
122
|
+
super();
|
|
123
|
+
bindAllMethods(this);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Gets the application instance.
|
|
128
|
+
* @returns The singleton Application instance
|
|
129
|
+
*/
|
|
130
|
+
get app(): Application {
|
|
131
|
+
return Application.getInstance();
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Initializes the fullscreen plugin by setting up browser event listeners.
|
|
136
|
+
* Registers listeners for all major browser fullscreen change events.
|
|
137
|
+
*
|
|
138
|
+
* @example
|
|
139
|
+
* ```typescript
|
|
140
|
+
* // Called automatically by the plugin system
|
|
141
|
+
* // Registers listeners for: fullscreenchange, webkitfullscreenchange,
|
|
142
|
+
* // mozfullscreenchange, msfullscreenchange
|
|
143
|
+
* ```
|
|
144
|
+
*/
|
|
145
|
+
public initialize(): void {
|
|
146
|
+
document.addEventListener('fullscreenchange', this._onFullScreenChange);
|
|
147
|
+
document.addEventListener('webkitfullscreenchange', this._onFullScreenChange);
|
|
148
|
+
document.addEventListener('mozfullscreenchange', this._onFullScreenChange);
|
|
149
|
+
document.addEventListener('msfullscreenchange', this._onFullScreenChange);
|
|
150
|
+
document.addEventListener('fullscreenchange', this._onFullScreenChange);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Cleans up the plugin by removing all event listeners.
|
|
155
|
+
* Called automatically when the plugin is destroyed.
|
|
156
|
+
*/
|
|
157
|
+
public destroy() {
|
|
158
|
+
document.removeEventListener('fullscreenchange', this._onFullScreenChange);
|
|
159
|
+
document.removeEventListener('webkitfullscreenchange', this._onFullScreenChange);
|
|
160
|
+
document.removeEventListener('mozfullscreenchange', this._onFullScreenChange);
|
|
161
|
+
document.removeEventListener('msfullscreenchange', this._onFullScreenChange);
|
|
162
|
+
document.removeEventListener('fullscreenchange', this._onFullScreenChange);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Toggles between fullscreen and windowed mode.
|
|
167
|
+
*
|
|
168
|
+
* @example
|
|
169
|
+
* ```typescript
|
|
170
|
+
* // Toggle fullscreen on button click
|
|
171
|
+
* button.addEventListener('click', () => {
|
|
172
|
+
* fullscreenPlugin.toggleFullScreen();
|
|
173
|
+
* });
|
|
174
|
+
*
|
|
175
|
+
* // Keyboard shortcut for fullscreen
|
|
176
|
+
* document.addEventListener('keydown', (e) => {
|
|
177
|
+
* if (e.key === 'F11') {
|
|
178
|
+
* e.preventDefault();
|
|
179
|
+
* fullscreenPlugin.toggleFullScreen();
|
|
180
|
+
* }
|
|
181
|
+
* });
|
|
182
|
+
* ```
|
|
183
|
+
*/
|
|
184
|
+
public toggleFullScreen() {
|
|
185
|
+
this.setFullScreen(!this._isFullScreen);
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Sets the fullscreen state explicitly.
|
|
190
|
+
*
|
|
191
|
+
* @param value - True to enter fullscreen, false to exit fullscreen
|
|
192
|
+
*
|
|
193
|
+
* @example
|
|
194
|
+
* ```typescript
|
|
195
|
+
* // Enter fullscreen mode
|
|
196
|
+
* fullscreenPlugin.setFullScreen(true);
|
|
197
|
+
*
|
|
198
|
+
* // Exit fullscreen mode
|
|
199
|
+
* fullscreenPlugin.setFullScreen(false);
|
|
200
|
+
*
|
|
201
|
+
* // Conditional fullscreen based on game state
|
|
202
|
+
* if (gameState === 'playing') {
|
|
203
|
+
* fullscreenPlugin.setFullScreen(true);
|
|
204
|
+
* }
|
|
205
|
+
* ```
|
|
206
|
+
*/
|
|
207
|
+
public setFullScreen(value: boolean) {
|
|
208
|
+
this._isFullScreen = value;
|
|
209
|
+
if (value) {
|
|
210
|
+
this._requestFullscreen();
|
|
211
|
+
} else {
|
|
212
|
+
this._exitFullscreen();
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Sets the element to be used for fullscreen operations.
|
|
218
|
+
* If no element is provided, uses the default application container.
|
|
219
|
+
*
|
|
220
|
+
* @param value - The HTML element or Window to use for fullscreen operations
|
|
221
|
+
*
|
|
222
|
+
* @example
|
|
223
|
+
* ```typescript
|
|
224
|
+
* // Use a specific game container
|
|
225
|
+
* const gameDiv = document.getElementById('game-container');
|
|
226
|
+
* fullscreenPlugin.setFullScreenElement(gameDiv);
|
|
227
|
+
*
|
|
228
|
+
* // Use the entire window
|
|
229
|
+
* fullscreenPlugin.setFullScreenElement(window);
|
|
230
|
+
*
|
|
231
|
+
* // Reset to default (application container)
|
|
232
|
+
* fullscreenPlugin.setFullScreenElement(null);
|
|
233
|
+
* ```
|
|
234
|
+
*/
|
|
235
|
+
public setFullScreenElement(value: HTMLElement | Window | null) {
|
|
236
|
+
if (!value) {
|
|
237
|
+
Logger.warn('No element passed to setFullScreenElement for fullscreen mode');
|
|
238
|
+
}
|
|
239
|
+
this._fullScreenElement = value;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
/**
|
|
243
|
+
* Checks if the current environment and element support fullscreen functionality.
|
|
244
|
+
*
|
|
245
|
+
* @returns True if fullscreen is supported and available
|
|
246
|
+
*
|
|
247
|
+
* @example
|
|
248
|
+
* ```typescript
|
|
249
|
+
* if (fullscreenPlugin.canFullscreen) {
|
|
250
|
+
* // Show fullscreen button
|
|
251
|
+
* fullscreenButton.style.display = 'block';
|
|
252
|
+
* } else {
|
|
253
|
+
* // Hide fullscreen button or show alternative
|
|
254
|
+
* fullscreenButton.style.display = 'none';
|
|
255
|
+
* console.log('Fullscreen not supported on this device');
|
|
256
|
+
* }
|
|
257
|
+
* ```
|
|
258
|
+
*/
|
|
259
|
+
public get canFullscreen(): boolean {
|
|
260
|
+
const element = this._fullScreenElement || Application.containerElement;
|
|
261
|
+
if (!element) return false;
|
|
262
|
+
|
|
263
|
+
const fullscreenElement = element as HTMLElement;
|
|
264
|
+
return !!(
|
|
265
|
+
fullscreenElement.requestFullscreen ||
|
|
266
|
+
(fullscreenElement as any).webkitRequestFullscreen ||
|
|
267
|
+
(fullscreenElement as any).msRequestFullscreen ||
|
|
268
|
+
(fullscreenElement as any).mozRequestFullScreen
|
|
269
|
+
);
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
/**
|
|
273
|
+
* Checks if the document is currently in fullscreen mode.
|
|
274
|
+
* Uses browser-specific properties for cross-browser compatibility.
|
|
275
|
+
*
|
|
276
|
+
* @returns True if any element is currently in fullscreen mode
|
|
277
|
+
*/
|
|
278
|
+
public get isFullscreen(): boolean {
|
|
279
|
+
return !!(
|
|
280
|
+
document.fullscreenElement ||
|
|
281
|
+
(document as any).webkitFullscreenElement ||
|
|
282
|
+
(document as any).msFullscreenElement ||
|
|
283
|
+
(document as any).mozFullScreenElement
|
|
284
|
+
);
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* Gets the core signals exposed by this plugin.
|
|
289
|
+
* @returns Array of signal names available on the plugin
|
|
290
|
+
* @protected
|
|
291
|
+
*/
|
|
292
|
+
protected getCoreSignals(): string[] {
|
|
293
|
+
return ['onFullScreenChange'];
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
/**
|
|
297
|
+
* Gets the core functions exposed by this plugin.
|
|
298
|
+
* @returns Array of function names available on the plugin
|
|
299
|
+
* @protected
|
|
300
|
+
*/
|
|
301
|
+
protected getCoreFunctions(): string[] {
|
|
302
|
+
return ['toggleFullScreen', 'setFullScreen', 'setFullScreenElement'];
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
/**
|
|
306
|
+
* Requests fullscreen mode using the appropriate browser API.
|
|
307
|
+
* Handles cross-browser compatibility and error cases.
|
|
308
|
+
* @private
|
|
309
|
+
*/
|
|
310
|
+
private _requestFullscreen() {
|
|
311
|
+
const element = this._fullScreenElement || Application.containerElement;
|
|
312
|
+
if (!element) {
|
|
313
|
+
throw new Error('No element available for fullscreen mode');
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
const fullscreenElement = element as HTMLElement;
|
|
317
|
+
try {
|
|
318
|
+
if (fullscreenElement.requestFullscreen) {
|
|
319
|
+
fullscreenElement.requestFullscreen();
|
|
320
|
+
} else if ((fullscreenElement as any).webkitRequestFullscreen) {
|
|
321
|
+
(fullscreenElement as any).webkitRequestFullscreen();
|
|
322
|
+
} else if ((fullscreenElement as any).msRequestFullscreen) {
|
|
323
|
+
(fullscreenElement as any).msRequestFullscreen();
|
|
324
|
+
} else if ((fullscreenElement as any).mozRequestFullScreen) {
|
|
325
|
+
(fullscreenElement as any).mozRequestFullScreen();
|
|
326
|
+
}
|
|
327
|
+
} catch (error) {
|
|
328
|
+
Logger.error('Failed to request fullscreen:', error);
|
|
329
|
+
// Reset the fullscreen state since it failed
|
|
330
|
+
this._isFullScreen = false;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
/**
|
|
335
|
+
* Exits fullscreen mode using the appropriate browser API.
|
|
336
|
+
* Handles cross-browser compatibility for fullscreen exit.
|
|
337
|
+
* @private
|
|
338
|
+
*/
|
|
339
|
+
private _exitFullscreen() {
|
|
340
|
+
if (document.exitFullscreen) {
|
|
341
|
+
document.exitFullscreen();
|
|
342
|
+
} else if ((document as any).webkitExitFullscreen) {
|
|
343
|
+
(document as any).webkitExitFullscreen();
|
|
344
|
+
} else if ((document as any).msExitFullscreen) {
|
|
345
|
+
(document as any).msExitFullscreen();
|
|
346
|
+
} else if ((document as any).mozCancelFullScreen) {
|
|
347
|
+
(document as any).mozCancelFullScreen();
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
/**
|
|
352
|
+
* Handles browser fullscreen change events.
|
|
353
|
+
* Updates internal state and emits the onFullScreenChange signal.
|
|
354
|
+
* @private
|
|
355
|
+
*/
|
|
356
|
+
private _onFullScreenChange(): void {
|
|
357
|
+
this.onFullScreenChange.emit(document.fullscreenElement !== null);
|
|
358
|
+
}
|
|
359
|
+
}
|