@vpmedia/phaser 1.112.0 → 1.113.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/dist/index.js +1261 -1314
- package/dist/index.js.map +1 -1
- package/dist/phaser/core/animation.d.ts +14 -10
- package/dist/phaser/core/animation.d.ts.map +1 -1
- package/dist/phaser/core/animation_manager.d.ts +10 -8
- package/dist/phaser/core/animation_manager.d.ts.map +1 -1
- package/dist/phaser/core/animation_parser.d.ts +5 -4
- package/dist/phaser/core/animation_parser.d.ts.map +1 -1
- package/dist/phaser/core/array_set.d.ts.map +1 -1
- package/dist/phaser/core/cache.d.ts +4 -3
- package/dist/phaser/core/cache.d.ts.map +1 -1
- package/dist/phaser/core/const.d.ts.map +1 -1
- package/dist/phaser/core/device.d.ts.map +1 -1
- package/dist/phaser/core/device_util.d.ts.map +1 -1
- package/dist/phaser/core/dom.d.ts +3 -2
- package/dist/phaser/core/dom.d.ts.map +1 -1
- package/dist/phaser/core/event_manager.d.ts.map +1 -1
- package/dist/phaser/core/factory.d.ts +1 -1
- package/dist/phaser/core/factory.d.ts.map +1 -1
- package/dist/phaser/core/frame.d.ts.map +1 -1
- package/dist/phaser/core/frame_data.d.ts.map +1 -1
- package/dist/phaser/core/game.d.ts.map +1 -1
- package/dist/phaser/core/input.d.ts +8 -6
- package/dist/phaser/core/input.d.ts.map +1 -1
- package/dist/phaser/core/input_handler.d.ts +40 -30
- package/dist/phaser/core/input_handler.d.ts.map +1 -1
- package/dist/phaser/core/input_mouse.d.ts +3 -2
- package/dist/phaser/core/input_mouse.d.ts.map +1 -1
- package/dist/phaser/core/input_mspointer.d.ts +3 -2
- package/dist/phaser/core/input_mspointer.d.ts.map +1 -1
- package/dist/phaser/core/input_pointer.d.ts +6 -4
- package/dist/phaser/core/input_pointer.d.ts.map +1 -1
- package/dist/phaser/core/input_touch.d.ts +3 -2
- package/dist/phaser/core/input_touch.d.ts.map +1 -1
- package/dist/phaser/core/loader.d.ts +4 -3
- package/dist/phaser/core/loader.d.ts.map +1 -1
- package/dist/phaser/core/loader_parser.d.ts +9 -8
- package/dist/phaser/core/loader_parser.d.ts.map +1 -1
- package/dist/phaser/core/raf.d.ts +3 -2
- package/dist/phaser/core/raf.d.ts.map +1 -1
- package/dist/phaser/core/registry.d.ts +7 -0
- package/dist/phaser/core/registry.d.ts.map +1 -0
- package/dist/phaser/core/scale_manager.d.ts +1 -1
- package/dist/phaser/core/scale_manager.d.ts.map +1 -1
- package/dist/phaser/core/scene.d.ts +0 -1
- package/dist/phaser/core/scene.d.ts.map +1 -1
- package/dist/phaser/core/scene_manager.d.ts +1 -1
- package/dist/phaser/core/scene_manager.d.ts.map +1 -1
- package/dist/phaser/core/signal.d.ts +0 -1
- package/dist/phaser/core/signal.d.ts.map +1 -1
- package/dist/phaser/core/signal_binding.d.ts +4 -3
- package/dist/phaser/core/signal_binding.d.ts.map +1 -1
- package/dist/phaser/core/sound.d.ts +6 -4
- package/dist/phaser/core/sound.d.ts.map +1 -1
- package/dist/phaser/core/sound_manager.d.ts +3 -2
- package/dist/phaser/core/sound_manager.d.ts.map +1 -1
- package/dist/phaser/core/sound_sprite.d.ts +5 -4
- package/dist/phaser/core/sound_sprite.d.ts.map +1 -1
- package/dist/phaser/core/stage.d.ts +3 -2
- package/dist/phaser/core/stage.d.ts.map +1 -1
- package/dist/phaser/core/time.d.ts +1 -1
- package/dist/phaser/core/time.d.ts.map +1 -1
- package/dist/phaser/core/timer.d.ts +1 -1
- package/dist/phaser/core/timer.d.ts.map +1 -1
- package/dist/phaser/core/timer_event.d.ts.map +1 -1
- package/dist/phaser/core/tween.d.ts +10 -7
- package/dist/phaser/core/tween.d.ts.map +1 -1
- package/dist/phaser/core/tween_data.d.ts +3 -2
- package/dist/phaser/core/tween_data.d.ts.map +1 -1
- package/dist/phaser/core/tween_easing.d.ts.map +1 -1
- package/dist/phaser/core/tween_manager.d.ts +3 -2
- package/dist/phaser/core/tween_manager.d.ts.map +1 -1
- package/dist/phaser/core/world.d.ts +3 -2
- package/dist/phaser/core/world.d.ts.map +1 -1
- package/dist/phaser/display/bitmap_text.d.ts +3 -2
- package/dist/phaser/display/bitmap_text.d.ts.map +1 -1
- package/dist/phaser/display/button.d.ts +3 -2
- package/dist/phaser/display/button.d.ts.map +1 -1
- package/dist/phaser/display/canvas/buffer.d.ts.map +1 -1
- package/dist/phaser/display/canvas/graphics.d.ts +7 -6
- package/dist/phaser/display/canvas/graphics.d.ts.map +1 -1
- package/dist/phaser/display/canvas/pool.d.ts +2 -2
- package/dist/phaser/display/canvas/pool.d.ts.map +1 -1
- package/dist/phaser/display/canvas/renderer.d.ts +10 -8
- package/dist/phaser/display/canvas/renderer.d.ts.map +1 -1
- package/dist/phaser/display/canvas/tinter.d.ts +3 -2
- package/dist/phaser/display/canvas/tinter.d.ts.map +1 -1
- package/dist/phaser/display/canvas/util.d.ts +2 -2
- package/dist/phaser/display/canvas/util.d.ts.map +1 -1
- package/dist/phaser/display/display_object.d.ts +14 -12
- package/dist/phaser/display/display_object.d.ts.map +1 -1
- package/dist/phaser/display/graphics.d.ts +8 -5
- package/dist/phaser/display/graphics.d.ts.map +1 -1
- package/dist/phaser/display/graphics_data.d.ts.map +1 -1
- package/dist/phaser/display/graphics_data_util.d.ts.map +1 -1
- package/dist/phaser/display/group.d.ts +4 -3
- package/dist/phaser/display/group.d.ts.map +1 -1
- package/dist/phaser/display/image.d.ts +13 -10
- package/dist/phaser/display/image.d.ts.map +1 -1
- package/dist/phaser/display/sprite_batch.d.ts +3 -2
- package/dist/phaser/display/sprite_batch.d.ts.map +1 -1
- package/dist/phaser/display/sprite_util.d.ts +18 -15
- package/dist/phaser/display/sprite_util.d.ts.map +1 -1
- package/dist/phaser/display/text.d.ts +11 -9
- package/dist/phaser/display/text.d.ts.map +1 -1
- package/dist/phaser/display/webgl/abstract_filter.d.ts.map +1 -1
- package/dist/phaser/display/webgl/base_texture.d.ts.map +1 -1
- package/dist/phaser/display/webgl/blend_manager.d.ts +0 -1
- package/dist/phaser/display/webgl/blend_manager.d.ts.map +1 -1
- package/dist/phaser/display/webgl/earcut.d.ts +1 -1
- package/dist/phaser/display/webgl/earcut.d.ts.map +1 -1
- package/dist/phaser/display/webgl/earcut_node.d.ts.map +1 -1
- package/dist/phaser/display/webgl/fast_sprite_batch.d.ts +4 -3
- package/dist/phaser/display/webgl/fast_sprite_batch.d.ts.map +1 -1
- package/dist/phaser/display/webgl/filter_manager.d.ts +2 -1
- package/dist/phaser/display/webgl/filter_manager.d.ts.map +1 -1
- package/dist/phaser/display/webgl/filter_texture.d.ts +2 -1
- package/dist/phaser/display/webgl/filter_texture.d.ts.map +1 -1
- package/dist/phaser/display/webgl/graphics.d.ts +7 -6
- package/dist/phaser/display/webgl/graphics.d.ts.map +1 -1
- package/dist/phaser/display/webgl/graphics_data.d.ts +2 -1
- package/dist/phaser/display/webgl/graphics_data.d.ts.map +1 -1
- package/dist/phaser/display/webgl/render_texture.d.ts +4 -2
- package/dist/phaser/display/webgl/render_texture.d.ts.map +1 -1
- package/dist/phaser/display/webgl/renderer.d.ts +16 -11
- package/dist/phaser/display/webgl/renderer.d.ts.map +1 -1
- package/dist/phaser/display/webgl/shader/complex.d.ts +16 -6
- package/dist/phaser/display/webgl/shader/complex.d.ts.map +1 -1
- package/dist/phaser/display/webgl/shader/fast.d.ts +19 -7
- package/dist/phaser/display/webgl/shader/fast.d.ts.map +1 -1
- package/dist/phaser/display/webgl/shader/normal.d.ts +33 -12
- package/dist/phaser/display/webgl/shader/normal.d.ts.map +1 -1
- package/dist/phaser/display/webgl/shader/primitive.d.ts +15 -6
- package/dist/phaser/display/webgl/shader/primitive.d.ts.map +1 -1
- package/dist/phaser/display/webgl/shader/strip.d.ts +15 -6
- package/dist/phaser/display/webgl/shader/strip.d.ts.map +1 -1
- package/dist/phaser/display/webgl/shader_manager.d.ts +16 -11
- package/dist/phaser/display/webgl/shader_manager.d.ts.map +1 -1
- package/dist/phaser/display/webgl/sprite_batch.d.ts +29 -20
- package/dist/phaser/display/webgl/sprite_batch.d.ts.map +1 -1
- package/dist/phaser/display/webgl/stencil_manager.d.ts +12 -10
- package/dist/phaser/display/webgl/stencil_manager.d.ts.map +1 -1
- package/dist/phaser/display/webgl/texture.d.ts +3 -2
- package/dist/phaser/display/webgl/texture.d.ts.map +1 -1
- package/dist/phaser/display/webgl/texture_util.d.ts.map +1 -1
- package/dist/phaser/display/webgl/util.d.ts.map +1 -1
- package/dist/phaser/geom/circle.d.ts +4 -1
- package/dist/phaser/geom/circle.d.ts.map +1 -1
- package/dist/phaser/geom/ellipse.d.ts.map +1 -1
- package/dist/phaser/geom/line.d.ts +1 -1
- package/dist/phaser/geom/line.d.ts.map +1 -1
- package/dist/phaser/geom/matrix.d.ts.map +1 -1
- package/dist/phaser/geom/point.d.ts.map +1 -1
- package/dist/phaser/geom/polygon.d.ts.map +1 -1
- package/dist/phaser/geom/rectangle.d.ts.map +1 -1
- package/dist/phaser/geom/rounded_rectangle.d.ts.map +1 -1
- package/dist/phaser/geom/util/circle.d.ts.map +1 -1
- package/dist/phaser/geom/util/ellipse.d.ts +3 -2
- package/dist/phaser/geom/util/ellipse.d.ts.map +1 -1
- package/dist/phaser/geom/util/line.d.ts.map +1 -1
- package/dist/phaser/geom/util/matrix.d.ts +2 -2
- package/dist/phaser/geom/util/matrix.d.ts.map +1 -1
- package/dist/phaser/geom/util/point.d.ts.map +1 -1
- package/dist/phaser/geom/util/rectangle.d.ts +1 -1
- package/dist/phaser/geom/util/rectangle.d.ts.map +1 -1
- package/dist/phaser/util/math.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/phaser/core/animation.ts +64 -60
- package/src/phaser/core/animation_manager.ts +50 -53
- package/src/phaser/core/animation_parser.ts +9 -9
- package/src/phaser/core/array_set.ts +16 -17
- package/src/phaser/core/cache.ts +92 -93
- package/src/phaser/core/const.ts +1 -1
- package/src/phaser/core/device.ts +24 -29
- package/src/phaser/core/device_util.ts +22 -26
- package/src/phaser/core/dom.ts +54 -65
- package/src/phaser/core/event_manager.ts +64 -94
- package/src/phaser/core/factory.ts +14 -14
- package/src/phaser/core/frame.ts +28 -28
- package/src/phaser/core/frame_data.test.ts +100 -0
- package/src/phaser/core/frame_data.ts +24 -24
- package/src/phaser/core/frame_util.ts +2 -2
- package/src/phaser/core/game.ts +47 -48
- package/src/phaser/core/input.ts +104 -110
- package/src/phaser/core/input_handler.test.ts +113 -0
- package/src/phaser/core/input_handler.ts +199 -218
- package/src/phaser/core/input_mouse.ts +71 -54
- package/src/phaser/core/input_mspointer.ts +52 -39
- package/src/phaser/core/input_pointer.ts +81 -80
- package/src/phaser/core/input_touch.ts +49 -36
- package/src/phaser/core/loader.ts +173 -152
- package/src/phaser/core/loader_parser.ts +39 -57
- package/src/phaser/core/raf.ts +8 -7
- package/src/phaser/core/registry.test.ts +31 -0
- package/src/phaser/core/registry.ts +9 -0
- package/src/phaser/core/scale_manager.ts +156 -152
- package/src/phaser/core/scene.ts +9 -13
- package/src/phaser/core/scene_manager.ts +47 -47
- package/src/phaser/core/signal.test.ts +4 -4
- package/src/phaser/core/signal.ts +41 -52
- package/src/phaser/core/signal_binding.ts +26 -25
- package/src/phaser/core/signal_dispatch.test.ts +180 -0
- package/src/phaser/core/sound.ts +75 -83
- package/src/phaser/core/sound_manager.ts +52 -51
- package/src/phaser/core/sound_sprite.ts +17 -16
- package/src/phaser/core/stage.ts +25 -24
- package/src/phaser/core/time.ts +52 -52
- package/src/phaser/core/timer.test.ts +187 -0
- package/src/phaser/core/timer.ts +82 -69
- package/src/phaser/core/timer_event.ts +10 -10
- package/src/phaser/core/tween.ts +90 -93
- package/src/phaser/core/tween_data.ts +45 -51
- package/src/phaser/core/tween_easing.test.ts +106 -0
- package/src/phaser/core/tween_easing.ts +151 -123
- package/src/phaser/core/tween_manager.ts +19 -18
- package/src/phaser/core/world.ts +4 -3
- package/src/phaser/display/bitmap_text.ts +56 -64
- package/src/phaser/display/button.ts +33 -32
- package/src/phaser/display/canvas/buffer.ts +8 -8
- package/src/phaser/display/canvas/graphics.ts +36 -37
- package/src/phaser/display/canvas/masker.ts +2 -2
- package/src/phaser/display/canvas/pool.test.ts +106 -0
- package/src/phaser/display/canvas/pool.ts +25 -27
- package/src/phaser/display/canvas/renderer.ts +32 -31
- package/src/phaser/display/canvas/tinter.ts +25 -25
- package/src/phaser/display/canvas/util.ts +7 -10
- package/src/phaser/display/display_object.ts +114 -118
- package/src/phaser/display/graphics.ts +121 -119
- package/src/phaser/display/graphics_data.ts +12 -12
- package/src/phaser/display/graphics_data_util.ts +2 -3
- package/src/phaser/display/group.ts +50 -57
- package/src/phaser/display/image.ts +55 -52
- package/src/phaser/display/sprite_batch.ts +3 -2
- package/src/phaser/display/sprite_util.ts +48 -54
- package/src/phaser/display/text.ts +199 -204
- package/src/phaser/display/webgl/abstract_filter.ts +9 -9
- package/src/phaser/display/webgl/base_texture.ts +21 -24
- package/src/phaser/display/webgl/blend_manager.ts +6 -10
- package/src/phaser/display/webgl/earcut.ts +73 -37
- package/src/phaser/display/webgl/earcut_node.ts +10 -10
- package/src/phaser/display/webgl/fast_sprite_batch.ts +34 -34
- package/src/phaser/display/webgl/filter_manager.ts +13 -12
- package/src/phaser/display/webgl/filter_texture.ts +14 -13
- package/src/phaser/display/webgl/graphics.ts +51 -57
- package/src/phaser/display/webgl/graphics_data.ts +15 -14
- package/src/phaser/display/webgl/mask_manager.ts +2 -2
- package/src/phaser/display/webgl/render_texture.ts +26 -25
- package/src/phaser/display/webgl/renderer.ts +57 -62
- package/src/phaser/display/webgl/shader/complex.ts +28 -12
- package/src/phaser/display/webgl/shader/fast.ts +30 -12
- package/src/phaser/display/webgl/shader/normal.ts +70 -57
- package/src/phaser/display/webgl/shader/primitive.ts +26 -11
- package/src/phaser/display/webgl/shader/shader.test.ts +148 -0
- package/src/phaser/display/webgl/shader/strip.ts +27 -12
- package/src/phaser/display/webgl/shader_manager.test.ts +124 -0
- package/src/phaser/display/webgl/shader_manager.ts +26 -34
- package/src/phaser/display/webgl/sprite_batch.ts +67 -61
- package/src/phaser/display/webgl/stencil_manager.ts +23 -34
- package/src/phaser/display/webgl/texture.ts +43 -50
- package/src/phaser/display/webgl/texture_util.ts +2 -3
- package/src/phaser/display/webgl/util.ts +26 -25
- package/src/phaser/geom/circle.test.ts +2 -3
- package/src/phaser/geom/circle.ts +36 -36
- package/src/phaser/geom/ellipse.test.ts +73 -71
- package/src/phaser/geom/ellipse.ts +14 -14
- package/src/phaser/geom/line.test.ts +5 -5
- package/src/phaser/geom/line.ts +35 -35
- package/src/phaser/geom/matrix.test.ts +1 -1
- package/src/phaser/geom/matrix.ts +27 -27
- package/src/phaser/geom/point.test.ts +1 -2
- package/src/phaser/geom/point.ts +35 -35
- package/src/phaser/geom/polygon.test.ts +82 -0
- package/src/phaser/geom/polygon.ts +16 -16
- package/src/phaser/geom/rectangle.test.ts +14 -14
- package/src/phaser/geom/rectangle.ts +83 -75
- package/src/phaser/geom/rounded_rectangle.test.ts +1 -7
- package/src/phaser/geom/rounded_rectangle.ts +9 -9
- package/src/phaser/geom/util/circle.test.ts +25 -23
- package/src/phaser/geom/util/circle.ts +9 -18
- package/src/phaser/geom/util/ellipse.test.ts +7 -5
- package/src/phaser/geom/util/ellipse.ts +3 -2
- package/src/phaser/geom/util/line.test.ts +10 -8
- package/src/phaser/geom/util/line.ts +6 -16
- package/src/phaser/geom/util/matrix.test.ts +20 -18
- package/src/phaser/geom/util/matrix.ts +8 -15
- package/src/phaser/geom/util/point.test.ts +8 -6
- package/src/phaser/geom/util/point.ts +24 -28
- package/src/phaser/geom/util/polygon.test.ts +12 -10
- package/src/phaser/geom/util/polygon.ts +2 -2
- package/src/phaser/geom/util/rectangle.test.ts +10 -8
- package/src/phaser/geom/util/rectangle.ts +18 -37
- package/src/phaser/geom/util/rounded_rectangle.test.ts +11 -9
- package/src/phaser/geom/util/rounded_rectangle.ts +1 -1
- package/src/phaser/util/math.test.ts +11 -11
- package/src/phaser/util/math.ts +29 -46
|
@@ -1,37 +1,32 @@
|
|
|
1
1
|
export class Device {
|
|
2
|
-
desktop
|
|
3
|
-
iOS
|
|
4
|
-
android
|
|
5
|
-
chromeOS
|
|
6
|
-
linux
|
|
7
|
-
macOS!: boolean;
|
|
8
|
-
windows!: boolean;
|
|
9
|
-
windowsPhone!: boolean;
|
|
10
|
-
canvas!: boolean;
|
|
11
|
-
touch!: boolean;
|
|
12
|
-
mspointer!: boolean;
|
|
13
|
-
wheelEvent!: string | null;
|
|
14
|
-
chrome!: boolean;
|
|
15
|
-
firefox!: boolean;
|
|
16
|
-
edge!: boolean;
|
|
17
|
-
safari!: boolean;
|
|
18
|
-
fullscreen!: boolean;
|
|
19
|
-
requestFullscreen!: string;
|
|
20
|
-
cancelFullscreen!: string;
|
|
21
|
-
fullscreenKeyboard!: boolean;
|
|
22
|
-
noAudioFormat!: boolean;
|
|
23
|
-
supportedAudioFormats!: Record<string, boolean>;
|
|
24
|
-
supportedImageFormats!: Record<string, boolean>;
|
|
2
|
+
public desktop: boolean = false;
|
|
3
|
+
public iOS: boolean = false;
|
|
4
|
+
public android: boolean = false;
|
|
5
|
+
public chromeOS: boolean = false;
|
|
6
|
+
public linux: boolean = false;
|
|
7
|
+
public macOS!: boolean;
|
|
8
|
+
public windows!: boolean;
|
|
9
|
+
public windowsPhone!: boolean;
|
|
10
|
+
public canvas!: boolean;
|
|
11
|
+
public touch!: boolean;
|
|
12
|
+
public mspointer!: boolean;
|
|
13
|
+
public wheelEvent!: string | null;
|
|
14
|
+
public chrome!: boolean;
|
|
15
|
+
public firefox!: boolean;
|
|
16
|
+
public edge!: boolean;
|
|
17
|
+
public safari!: boolean;
|
|
18
|
+
public fullscreen!: boolean;
|
|
19
|
+
public requestFullscreen!: string;
|
|
20
|
+
public cancelFullscreen!: string;
|
|
21
|
+
public fullscreenKeyboard!: boolean;
|
|
22
|
+
public noAudioFormat!: boolean;
|
|
23
|
+
public supportedAudioFormats!: Record<string, boolean>;
|
|
24
|
+
public supportedImageFormats!: Record<string, boolean>;
|
|
25
25
|
/**
|
|
26
26
|
* Creates a new Device instance.
|
|
27
27
|
* This class provides information about the current device and browser capabilities.
|
|
28
28
|
*/
|
|
29
|
-
constructor() {
|
|
30
|
-
this.desktop = false;
|
|
31
|
-
this.iOS = false;
|
|
32
|
-
this.android = false;
|
|
33
|
-
this.chromeOS = false;
|
|
34
|
-
this.linux = false;
|
|
29
|
+
public constructor() {
|
|
35
30
|
this.macOS = false;
|
|
36
31
|
this.windows = false;
|
|
37
32
|
this.windowsPhone = false;
|
|
@@ -9,9 +9,7 @@ const logger = getLogger(['phaser', 'device']);
|
|
|
9
9
|
* @param {string} type - The audio format type to check.
|
|
10
10
|
* @returns {boolean} True if the device can play this audio format, false otherwise.
|
|
11
11
|
*/
|
|
12
|
-
export const canPlayAudio = (device: Device, type: string) =>
|
|
13
|
-
return device.supportedAudioFormats[type] === true;
|
|
14
|
-
};
|
|
12
|
+
export const canPlayAudio = (device: Device, type: string) => device.supportedAudioFormats[type] === true;
|
|
15
13
|
|
|
16
14
|
/**
|
|
17
15
|
* Detect the operating system of the device.
|
|
@@ -19,19 +17,19 @@ export const canPlayAudio = (device: Device, type: string) => {
|
|
|
19
17
|
*/
|
|
20
18
|
export const checkOS = (device: Device) => {
|
|
21
19
|
const ua = navigator.userAgent;
|
|
22
|
-
if (
|
|
20
|
+
if (ua.includes('Android')) {
|
|
23
21
|
device.android = true;
|
|
24
|
-
} else if (
|
|
22
|
+
} else if (ua.includes('CrOS')) {
|
|
25
23
|
device.chromeOS = true;
|
|
26
24
|
} else if (/iP[ao]d|iPhone/i.test(ua)) {
|
|
27
25
|
device.iOS = true;
|
|
28
26
|
} else if (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1) {
|
|
29
27
|
device.iOS = true;
|
|
30
|
-
} else if (
|
|
28
|
+
} else if (ua.includes('Mac OS')) {
|
|
31
29
|
device.macOS = true;
|
|
32
|
-
} else if (
|
|
30
|
+
} else if (ua.includes('Linux')) {
|
|
33
31
|
device.linux = true;
|
|
34
|
-
} else if (
|
|
32
|
+
} else if (ua.includes('Windows')) {
|
|
35
33
|
device.windows = true;
|
|
36
34
|
}
|
|
37
35
|
if (/Windows Phone/i.test(ua) || /IEMobile/i.test(ua)) {
|
|
@@ -57,7 +55,7 @@ export const checkOS = (device: Device) => {
|
|
|
57
55
|
export const checkInput = (device: Device) => {
|
|
58
56
|
if (
|
|
59
57
|
'ontouchstart' in document.documentElement ||
|
|
60
|
-
(
|
|
58
|
+
(globalThis.navigator.maxTouchPoints && globalThis.navigator.maxTouchPoints >= 1)
|
|
61
59
|
) {
|
|
62
60
|
device.touch = true;
|
|
63
61
|
}
|
|
@@ -65,7 +63,7 @@ export const checkInput = (device: Device) => {
|
|
|
65
63
|
// device.mspointer = true;
|
|
66
64
|
// }
|
|
67
65
|
// See https://developer.mozilla.org/en-US/docs/Web/Events/wheel
|
|
68
|
-
if ('onwheel' in
|
|
66
|
+
if ('onwheel' in globalThis || 'WheelEvent' in globalThis) {
|
|
69
67
|
device.wheelEvent = 'wheel';
|
|
70
68
|
}
|
|
71
69
|
};
|
|
@@ -97,23 +95,23 @@ export const checkFullScreenSupport = (device: Device) => {
|
|
|
97
95
|
];
|
|
98
96
|
const element = document.createElement('div');
|
|
99
97
|
const elementApi = element as unknown as Record<string, unknown>;
|
|
100
|
-
for (
|
|
101
|
-
if (elementApi[
|
|
98
|
+
for (const name of fs) {
|
|
99
|
+
if (elementApi[name]) {
|
|
102
100
|
device.fullscreen = true;
|
|
103
|
-
device.requestFullscreen =
|
|
101
|
+
device.requestFullscreen = name;
|
|
104
102
|
break;
|
|
105
103
|
}
|
|
106
104
|
}
|
|
107
105
|
if (device.fullscreen) {
|
|
108
106
|
const documentApi = document as unknown as Record<string, unknown>;
|
|
109
|
-
for (
|
|
110
|
-
if (documentApi[
|
|
111
|
-
device.cancelFullscreen =
|
|
107
|
+
for (const name of cfs) {
|
|
108
|
+
if (documentApi[name]) {
|
|
109
|
+
device.cancelFullscreen = name;
|
|
112
110
|
break;
|
|
113
111
|
}
|
|
114
112
|
}
|
|
115
|
-
// @ts-
|
|
116
|
-
if (
|
|
113
|
+
// @ts-expect-error
|
|
114
|
+
if (globalThis.Element && Element.ALLOW_KEYBOARD_INPUT) {
|
|
117
115
|
device.fullscreenKeyboard = true;
|
|
118
116
|
}
|
|
119
117
|
}
|
|
@@ -159,7 +157,7 @@ export const canPlayType = (audioElement: HTMLAudioElement, type: string) => {
|
|
|
159
157
|
* @returns {boolean} True if the media source type is supported, false otherwise.
|
|
160
158
|
*/
|
|
161
159
|
export const isMediaSourceTypeSupported = (type: string) => {
|
|
162
|
-
if ('MediaSource' in
|
|
160
|
+
if ('MediaSource' in globalThis) {
|
|
163
161
|
try {
|
|
164
162
|
return MediaSource.isTypeSupported(type);
|
|
165
163
|
} catch (error) {
|
|
@@ -215,8 +213,8 @@ export const checkImage = (device: Device) => {
|
|
|
215
213
|
const avif = new Image();
|
|
216
214
|
avif.src =
|
|
217
215
|
'data:image/avif;base64,AAAAIGZ0eXBhdmlmAAAAAGF2aWZtaWYxbWlhZk1BMUIAAADybWV0YQAAAAAAAAAoaGRscgAAAAAAAAAAcGljdAAAAAAAAAAAAAAAAGxpYmF2aWYAAAAADnBpdG0AAAAAAAEAAAAeaWxvYwAAAABEAAABAAEAAAABAAABGgAAAB0AAAAoaWluZgAAAAAAAQAAABppbmZlAgAAAAABAABhdjAxQ29sb3IAAAAAamlwcnAAAABLaXBjbwAAABRpc3BlAAAAAAAAAAIAAAACAAAAEHBpeGkAAAAAAwgICAAAAAxhdjFDgQ0MAAAAABNjb2xybmNseAACAAIAAYAAAAAXaXBtYQAAAAAAAAABAAEEAQKDBAAAACVtZGF0EgAKCBgANogQEAwgMg8f8D///8WfhwB8+ErK42A=';
|
|
218
|
-
avif.onload = function () {
|
|
219
|
-
device.supportedImageFormats
|
|
216
|
+
avif.onload = function onload() {
|
|
217
|
+
device.supportedImageFormats['avif'] = true;
|
|
220
218
|
};
|
|
221
219
|
} catch (error) {
|
|
222
220
|
const typedError = error instanceof Error ? error : new Error(String(error));
|
|
@@ -225,8 +223,8 @@ export const checkImage = (device: Device) => {
|
|
|
225
223
|
try {
|
|
226
224
|
const webp = new Image();
|
|
227
225
|
webp.src = 'data:image/webp;base64,UklGRh4AAABXRUJQVlA4TBEAAAAvAAAAAAfQ//73v/+BiOh/AAA=';
|
|
228
|
-
webp.onload = function () {
|
|
229
|
-
device.supportedImageFormats
|
|
226
|
+
webp.onload = function onload() {
|
|
227
|
+
device.supportedImageFormats['webp'] = true;
|
|
230
228
|
};
|
|
231
229
|
} catch (error) {
|
|
232
230
|
const typedError = error instanceof Error ? error : new Error(String(error));
|
|
@@ -252,6 +250,4 @@ export const initialize = (device: Device) => {
|
|
|
252
250
|
* Create a new Device instance.
|
|
253
251
|
* @returns {Device} A new Device instance.
|
|
254
252
|
*/
|
|
255
|
-
export const createDevice = () =>
|
|
256
|
-
return new Device();
|
|
257
|
-
};
|
|
253
|
+
export const createDevice = () => new Device();
|
package/src/phaser/core/dom.ts
CHANGED
|
@@ -1,27 +1,28 @@
|
|
|
1
1
|
import { Point } from '../geom/point.js';
|
|
2
|
+
import type { Device } from './device.js';
|
|
2
3
|
|
|
3
4
|
class VisualBoundsDesktopRectangle {
|
|
4
5
|
/**
|
|
5
6
|
* Gets the horizontal scroll position of the window.
|
|
6
7
|
* @returns {number} The horizontal scroll position in pixels.
|
|
7
8
|
*/
|
|
8
|
-
get x() {
|
|
9
|
-
return
|
|
9
|
+
public get x() {
|
|
10
|
+
return globalThis && 'pageXOffset' in globalThis ? window.pageXOffset : document.documentElement.scrollLeft;
|
|
10
11
|
}
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* Gets the vertical scroll position of the window.
|
|
14
15
|
* @returns {number} The vertical scroll position in pixels.
|
|
15
16
|
*/
|
|
16
|
-
get y() {
|
|
17
|
-
return
|
|
17
|
+
public get y() {
|
|
18
|
+
return globalThis && 'pageYOffset' in globalThis ? window.pageYOffset : document.documentElement.scrollTop;
|
|
18
19
|
}
|
|
19
20
|
|
|
20
21
|
/**
|
|
21
22
|
* Gets the width of the window.
|
|
22
23
|
* @returns {number} The width of the window in pixels.
|
|
23
24
|
*/
|
|
24
|
-
get width() {
|
|
25
|
+
public get width() {
|
|
25
26
|
return Math.max(window.innerWidth, document.documentElement.clientWidth);
|
|
26
27
|
}
|
|
27
28
|
|
|
@@ -29,7 +30,7 @@ class VisualBoundsDesktopRectangle {
|
|
|
29
30
|
* Gets the height of the window.
|
|
30
31
|
* @returns {number} The height of the window in pixels.
|
|
31
32
|
*/
|
|
32
|
-
get height() {
|
|
33
|
+
public get height() {
|
|
33
34
|
return Math.max(window.innerHeight, document.documentElement.clientHeight);
|
|
34
35
|
}
|
|
35
36
|
}
|
|
@@ -39,23 +40,19 @@ class LayoutBoundsDesktopRectangle {
|
|
|
39
40
|
* Gets the horizontal scroll position of the window.
|
|
40
41
|
* @returns {number} The horizontal scroll position in pixels.
|
|
41
42
|
*/
|
|
42
|
-
|
|
43
|
-
return 0;
|
|
44
|
-
}
|
|
43
|
+
public readonly x = 0;
|
|
45
44
|
|
|
46
45
|
/**
|
|
47
46
|
* Gets the vertical scroll position of the window.
|
|
48
47
|
* @returns {number} The vertical scroll position in pixels.
|
|
49
48
|
*/
|
|
50
|
-
|
|
51
|
-
return 0;
|
|
52
|
-
}
|
|
49
|
+
public readonly y = 0;
|
|
53
50
|
|
|
54
51
|
/**
|
|
55
52
|
* Gets the width of the window.
|
|
56
53
|
* @returns {number} The width of the window in pixels.
|
|
57
54
|
*/
|
|
58
|
-
get width() {
|
|
55
|
+
public get width() {
|
|
59
56
|
return Math.max(window.innerWidth, document.documentElement.clientWidth);
|
|
60
57
|
}
|
|
61
58
|
|
|
@@ -63,7 +60,7 @@ class LayoutBoundsDesktopRectangle {
|
|
|
63
60
|
* Gets the height of the window.
|
|
64
61
|
* @returns {number} The height of the window in pixels.
|
|
65
62
|
*/
|
|
66
|
-
get height() {
|
|
63
|
+
public get height() {
|
|
67
64
|
return Math.max(window.innerHeight, document.documentElement.clientHeight);
|
|
68
65
|
}
|
|
69
66
|
}
|
|
@@ -73,23 +70,23 @@ class VisualBoundsRectangle {
|
|
|
73
70
|
* Gets the horizontal scroll position of the document.
|
|
74
71
|
* @returns {number} The horizontal scroll position in pixels.
|
|
75
72
|
*/
|
|
76
|
-
get x() {
|
|
77
|
-
return
|
|
73
|
+
public get x() {
|
|
74
|
+
return globalThis && 'pageXOffset' in globalThis ? window.pageXOffset : document.documentElement.scrollLeft;
|
|
78
75
|
}
|
|
79
76
|
|
|
80
77
|
/**
|
|
81
78
|
* Gets the vertical scroll position of the document.
|
|
82
79
|
* @returns {number} The vertical scroll position in pixels.
|
|
83
80
|
*/
|
|
84
|
-
get y() {
|
|
85
|
-
return
|
|
81
|
+
public get y() {
|
|
82
|
+
return globalThis && 'pageYOffset' in globalThis ? window.pageYOffset : document.documentElement.scrollTop;
|
|
86
83
|
}
|
|
87
84
|
|
|
88
85
|
/**
|
|
89
86
|
* TBD.
|
|
90
87
|
* @returns {number} TBD.
|
|
91
88
|
*/
|
|
92
|
-
get width() {
|
|
89
|
+
public get width() {
|
|
93
90
|
return window.innerWidth;
|
|
94
91
|
}
|
|
95
92
|
|
|
@@ -97,7 +94,7 @@ class VisualBoundsRectangle {
|
|
|
97
94
|
* TBD.
|
|
98
95
|
* @returns {number} TBD.
|
|
99
96
|
*/
|
|
100
|
-
get height() {
|
|
97
|
+
public get height() {
|
|
101
98
|
return window.innerHeight;
|
|
102
99
|
}
|
|
103
100
|
}
|
|
@@ -107,23 +104,19 @@ class LayoutBoundsRectangle {
|
|
|
107
104
|
* TBD.
|
|
108
105
|
* @returns {number} TBD.
|
|
109
106
|
*/
|
|
110
|
-
|
|
111
|
-
return 0;
|
|
112
|
-
}
|
|
107
|
+
public readonly x = 0;
|
|
113
108
|
|
|
114
109
|
/**
|
|
115
110
|
* TBD.
|
|
116
111
|
* @returns {number} TBD.
|
|
117
112
|
*/
|
|
118
|
-
|
|
119
|
-
return 0;
|
|
120
|
-
}
|
|
113
|
+
public readonly y = 0;
|
|
121
114
|
|
|
122
115
|
/**
|
|
123
116
|
* TBD.
|
|
124
117
|
* @returns {number} TBD.
|
|
125
118
|
*/
|
|
126
|
-
get width() {
|
|
119
|
+
public get width() {
|
|
127
120
|
const a = document.documentElement.clientWidth;
|
|
128
121
|
const b = window.innerWidth;
|
|
129
122
|
return a < b ? b : a; // max
|
|
@@ -133,7 +126,7 @@ class LayoutBoundsRectangle {
|
|
|
133
126
|
* TBD.
|
|
134
127
|
* @returns {number} TBD.
|
|
135
128
|
*/
|
|
136
|
-
get height() {
|
|
129
|
+
public get height() {
|
|
137
130
|
const a = document.documentElement.clientHeight;
|
|
138
131
|
const b = window.innerHeight;
|
|
139
132
|
return a < b ? b : a; // max
|
|
@@ -148,23 +141,19 @@ class DocumentBoundsRectangle {
|
|
|
148
141
|
* TBD.
|
|
149
142
|
* @returns {number} TBD.
|
|
150
143
|
*/
|
|
151
|
-
|
|
152
|
-
return 0;
|
|
153
|
-
}
|
|
144
|
+
public readonly x = 0;
|
|
154
145
|
|
|
155
146
|
/**
|
|
156
147
|
* TBD.
|
|
157
148
|
* @returns {number} TBD.
|
|
158
149
|
*/
|
|
159
|
-
|
|
160
|
-
return 0;
|
|
161
|
-
}
|
|
150
|
+
public readonly y = 0;
|
|
162
151
|
|
|
163
152
|
/**
|
|
164
153
|
* TBD.
|
|
165
154
|
* @returns {number} TBD.
|
|
166
155
|
*/
|
|
167
|
-
get width() {
|
|
156
|
+
public get width() {
|
|
168
157
|
const d = document.documentElement;
|
|
169
158
|
return Math.max(d.clientWidth, d.offsetWidth, d.scrollWidth);
|
|
170
159
|
}
|
|
@@ -173,25 +162,25 @@ class DocumentBoundsRectangle {
|
|
|
173
162
|
* TBD.
|
|
174
163
|
* @returns {number} TBD.
|
|
175
164
|
*/
|
|
176
|
-
get height() {
|
|
165
|
+
public get height() {
|
|
177
166
|
const d = document.documentElement;
|
|
178
167
|
return Math.max(d.clientHeight, d.offsetHeight, d.scrollHeight);
|
|
179
168
|
}
|
|
180
169
|
}
|
|
181
170
|
|
|
182
171
|
export class DOM {
|
|
183
|
-
treatAsDesktop: boolean;
|
|
184
|
-
visualBounds: any;
|
|
185
|
-
layoutBounds: any;
|
|
186
|
-
documentBounds: any;
|
|
187
|
-
scrollXProvider: () => number;
|
|
188
|
-
scrollYProvider: () => number;
|
|
172
|
+
public treatAsDesktop: boolean;
|
|
173
|
+
public visualBounds: any;
|
|
174
|
+
public layoutBounds: any;
|
|
175
|
+
public documentBounds: any;
|
|
176
|
+
public scrollXProvider: () => number;
|
|
177
|
+
public scrollYProvider: () => number;
|
|
189
178
|
|
|
190
179
|
/**
|
|
191
180
|
* TBD.
|
|
192
|
-
* @param {
|
|
181
|
+
* @param {Device} device - TBD.
|
|
193
182
|
*/
|
|
194
|
-
constructor(device:
|
|
183
|
+
public constructor(device: Device) {
|
|
195
184
|
this.treatAsDesktop =
|
|
196
185
|
device.desktop &&
|
|
197
186
|
document.documentElement.clientWidth <= window.innerWidth &&
|
|
@@ -200,9 +189,9 @@ export class DOM {
|
|
|
200
189
|
this.layoutBounds = this.treatAsDesktop ? new LayoutBoundsDesktopRectangle() : new LayoutBoundsRectangle();
|
|
201
190
|
this.documentBounds = new DocumentBoundsRectangle();
|
|
202
191
|
this.scrollXProvider =
|
|
203
|
-
|
|
192
|
+
globalThis && 'pageXOffset' in globalThis ? () => window.pageXOffset : () => document.documentElement.scrollLeft;
|
|
204
193
|
this.scrollYProvider =
|
|
205
|
-
|
|
194
|
+
globalThis && 'pageYOffset' in globalThis ? () => window.pageYOffset : () => document.documentElement.scrollTop;
|
|
206
195
|
}
|
|
207
196
|
|
|
208
197
|
/**
|
|
@@ -211,13 +200,13 @@ export class DOM {
|
|
|
211
200
|
* @param {Point} point - Optional Point object to store the result.
|
|
212
201
|
* @returns {Point} The offset position of the element.
|
|
213
202
|
*/
|
|
214
|
-
getOffset(element: HTMLCanvasElement, point: Point | null = null) {
|
|
215
|
-
point = point
|
|
203
|
+
public getOffset(element: HTMLCanvasElement, point: Point | null = null) {
|
|
204
|
+
point = point ?? new Point();
|
|
216
205
|
const box = element.getBoundingClientRect();
|
|
217
206
|
const scrollTop = this.scrollY;
|
|
218
207
|
const scrollLeft = this.scrollX;
|
|
219
|
-
const clientTop = document.documentElement
|
|
220
|
-
const clientLeft = document.documentElement
|
|
208
|
+
const { clientTop } = document.documentElement;
|
|
209
|
+
const { clientLeft } = document.documentElement;
|
|
221
210
|
point.x = box.left + scrollLeft - clientLeft;
|
|
222
211
|
point.y = box.top + scrollTop - clientTop;
|
|
223
212
|
return point;
|
|
@@ -229,8 +218,8 @@ export class DOM {
|
|
|
229
218
|
* @param {number} cushion - Optional padding to add around the element.
|
|
230
219
|
* @returns {boolean} True if bounds were successfully retrieved, false otherwise.
|
|
231
220
|
*/
|
|
232
|
-
getBounds(element: HTMLCanvasElement, cushion
|
|
233
|
-
element = element && !element.nodeType ? (element as unknown as HTMLCanvasElement[])[0] : element;
|
|
221
|
+
public getBounds(element: HTMLCanvasElement, cushion = 0) {
|
|
222
|
+
element = element && !element.nodeType ? (element as unknown as HTMLCanvasElement[])[0]! : element;
|
|
234
223
|
if (!element || element.nodeType !== 1) {
|
|
235
224
|
return false;
|
|
236
225
|
}
|
|
@@ -243,7 +232,7 @@ export class DOM {
|
|
|
243
232
|
* @param {number} cushion - Optional padding to add around the rectangle.
|
|
244
233
|
* @returns {{width: number, height: number, left: number, right: number, top: number, bottom: number}} The calibrated rectangle.
|
|
245
234
|
*/
|
|
246
|
-
calibrate(coords: DOMRect, cushion
|
|
235
|
+
public calibrate(coords: DOMRect, cushion = 0) {
|
|
247
236
|
const output = {
|
|
248
237
|
width: 0,
|
|
249
238
|
height: 0,
|
|
@@ -262,9 +251,9 @@ export class DOM {
|
|
|
262
251
|
* @param {string} primaryFallback - The fallback method to use if screen orientation API is not available.
|
|
263
252
|
* @returns {string} The screen orientation ('portrait-primary', 'landscape-primary', etc.).
|
|
264
253
|
*/
|
|
265
|
-
getScreenOrientation(primaryFallback: string | null = null) {
|
|
266
|
-
const screen =
|
|
267
|
-
// @ts-
|
|
254
|
+
public getScreenOrientation(primaryFallback: string | null = null) {
|
|
255
|
+
const { screen } = globalThis;
|
|
256
|
+
// @ts-expect-error
|
|
268
257
|
const orientation = screen.orientation || screen.mozOrientation || screen.msOrientation;
|
|
269
258
|
if (orientation && typeof orientation.type === 'string') {
|
|
270
259
|
// Screen Orientation API specification
|
|
@@ -279,13 +268,13 @@ export class DOM {
|
|
|
279
268
|
return screen.height > screen.width ? PORTRAIT : LANDSCAPE;
|
|
280
269
|
} else if (primaryFallback === 'viewport') {
|
|
281
270
|
return this.visualBounds.height > this.visualBounds.width ? PORTRAIT : LANDSCAPE;
|
|
282
|
-
} else if (primaryFallback === 'window.orientation' && typeof
|
|
271
|
+
} else if (primaryFallback === 'window.orientation' && typeof globalThis.orientation === 'number') {
|
|
283
272
|
// This may change by device based on "natural" orientation.
|
|
284
|
-
return
|
|
285
|
-
} else if (
|
|
286
|
-
if (
|
|
273
|
+
return globalThis.orientation === 0 || globalThis.orientation === 180 ? PORTRAIT : LANDSCAPE;
|
|
274
|
+
} else if (globalThis.matchMedia) {
|
|
275
|
+
if (globalThis.matchMedia('(orientation: portrait)').matches) {
|
|
287
276
|
return PORTRAIT;
|
|
288
|
-
} else if (
|
|
277
|
+
} else if (globalThis.matchMedia('(orientation: landscape)').matches) {
|
|
289
278
|
return LANDSCAPE;
|
|
290
279
|
}
|
|
291
280
|
}
|
|
@@ -296,7 +285,7 @@ export class DOM {
|
|
|
296
285
|
* Gets the horizontal scroll position of the window.
|
|
297
286
|
* @returns {number} The horizontal scroll position in pixels.
|
|
298
287
|
*/
|
|
299
|
-
get scrollX() {
|
|
288
|
+
public get scrollX() {
|
|
300
289
|
return this.scrollXProvider();
|
|
301
290
|
}
|
|
302
291
|
|
|
@@ -304,7 +293,7 @@ export class DOM {
|
|
|
304
293
|
* Gets the vertical scroll position of the window.
|
|
305
294
|
* @returns {number} The vertical scroll position in pixels.
|
|
306
295
|
*/
|
|
307
|
-
get scrollY() {
|
|
296
|
+
public get scrollY() {
|
|
308
297
|
return this.scrollYProvider();
|
|
309
298
|
}
|
|
310
299
|
|
|
@@ -312,7 +301,7 @@ export class DOM {
|
|
|
312
301
|
* Gets the width of the window's client area.
|
|
313
302
|
* @returns {number} The width of the client area in pixels.
|
|
314
303
|
*/
|
|
315
|
-
get clientWidth() {
|
|
304
|
+
public get clientWidth() {
|
|
316
305
|
return Math.max(window.innerWidth, document.documentElement.clientWidth);
|
|
317
306
|
}
|
|
318
307
|
|
|
@@ -320,7 +309,7 @@ export class DOM {
|
|
|
320
309
|
* Gets the height of the window's client area.
|
|
321
310
|
* @returns {number} The height of the client area in pixels.
|
|
322
311
|
*/
|
|
323
|
-
get clientHeight() {
|
|
312
|
+
public get clientHeight() {
|
|
324
313
|
return Math.max(window.innerHeight, document.documentElement.clientHeight);
|
|
325
314
|
}
|
|
326
315
|
}
|