@urso/core 0.3.2 → 0.3.6

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.
Files changed (143) hide show
  1. package/.babelrc +11 -11
  2. package/README.md +10 -10
  3. package/build/js/index.js +1 -1
  4. package/build/js/index.js.LICENSE.txt +29 -29
  5. package/package.json +51 -51
  6. package/src/js/app.js +77 -77
  7. package/src/js/components/_info.js +8 -8
  8. package/src/js/components/base/_info.js +3 -3
  9. package/src/js/components/base/controller.js +78 -78
  10. package/src/js/components/debug/_info.js +7 -6
  11. package/src/js/components/debug/controller.js +38 -38
  12. package/src/js/components/debug/coords.js +23 -23
  13. package/src/js/components/debug/fps.js +34 -34
  14. package/src/js/components/debug/template.js +55 -33
  15. package/src/js/components/debug/timescale.js +60 -0
  16. package/src/js/components/deviceRotate/_info.js +3 -3
  17. package/src/js/components/deviceRotate/controller.js +86 -86
  18. package/src/js/components/fullscreen/_info.js +6 -6
  19. package/src/js/components/fullscreen/android.js +104 -104
  20. package/src/js/components/fullscreen/controller.js +64 -64
  21. package/src/js/components/fullscreen/desktop.js +49 -49
  22. package/src/js/components/fullscreen/ios.js +111 -111
  23. package/src/js/components/loader/_info.js +4 -4
  24. package/src/js/components/loader/controller.js +66 -66
  25. package/src/js/components/loader/template.js +70 -70
  26. package/src/js/components/soundInitialPopup/_info.js +3 -3
  27. package/src/js/components/soundInitialPopup/controller.js +42 -42
  28. package/src/js/components/soundInitialPopup/template.js +109 -109
  29. package/src/js/components/stateDriven/_info.js +3 -3
  30. package/src/js/components/stateDriven/controller.js +96 -96
  31. package/src/js/config/load.js +5 -5
  32. package/src/js/config/main.js +10 -10
  33. package/src/js/extra/_info.js +21 -21
  34. package/src/js/extra/browserEvents.js +32 -32
  35. package/src/js/index.js +8 -8
  36. package/src/js/lib/_info.js +13 -13
  37. package/src/js/lib/cache.js +98 -98
  38. package/src/js/lib/composition.js +89 -89
  39. package/src/js/lib/device.js +1276 -1276
  40. package/src/js/lib/helper.js +539 -539
  41. package/src/js/lib/loader.js +121 -121
  42. package/src/js/lib/localData.js +15 -15
  43. package/src/js/lib/logger.js +22 -22
  44. package/src/js/lib/math.js +35 -20
  45. package/src/js/lib/objectPool.js +54 -54
  46. package/src/js/lib/time.js +18 -18
  47. package/src/js/lib/tween.js +147 -147
  48. package/src/js/modules/_info.js +11 -11
  49. package/src/js/modules/assets/_info.js +7 -7
  50. package/src/js/modules/assets/baseModel.js +18 -18
  51. package/src/js/modules/assets/config.js +35 -35
  52. package/src/js/modules/assets/controller.js +39 -39
  53. package/src/js/modules/assets/models/_info.js +11 -11
  54. package/src/js/modules/assets/models/atlas.js +8 -8
  55. package/src/js/modules/assets/models/audiosprite.js +27 -27
  56. package/src/js/modules/assets/models/bitmapFont.js +8 -8
  57. package/src/js/modules/assets/models/container.js +16 -16
  58. package/src/js/modules/assets/models/font.js +8 -8
  59. package/src/js/modules/assets/models/image.js +14 -14
  60. package/src/js/modules/assets/models/json.js +8 -8
  61. package/src/js/modules/assets/models/sound.js +14 -14
  62. package/src/js/modules/assets/models/spine.js +8 -8
  63. package/src/js/modules/assets/service.js +327 -327
  64. package/src/js/modules/instances/_info.js +3 -3
  65. package/src/js/modules/instances/controller.js +219 -219
  66. package/src/js/modules/logic/_info.js +4 -4
  67. package/src/js/modules/logic/config/_info.js +2 -2
  68. package/src/js/modules/logic/config/sounds.js +23 -23
  69. package/src/js/modules/logic/controller.js +48 -48
  70. package/src/js/modules/logic/sounds.js +96 -96
  71. package/src/js/modules/objects/_info.js +11 -11
  72. package/src/js/modules/objects/baseModel.js +161 -161
  73. package/src/js/modules/objects/cache.js +99 -99
  74. package/src/js/modules/objects/controller.js +121 -121
  75. package/src/js/modules/objects/create.js +230 -230
  76. package/src/js/modules/objects/find.js +140 -140
  77. package/src/js/modules/objects/models/_info.js +24 -24
  78. package/src/js/modules/objects/models/atlasImage.js +50 -50
  79. package/src/js/modules/objects/models/bitmapText.js +23 -23
  80. package/src/js/modules/objects/models/button.js +184 -184
  81. package/src/js/modules/objects/models/buttonComposite.js +35 -35
  82. package/src/js/modules/objects/models/checkbox.js +96 -95
  83. package/src/js/modules/objects/models/collection.js +54 -54
  84. package/src/js/modules/objects/models/component.js +44 -44
  85. package/src/js/modules/objects/models/container.js +19 -19
  86. package/src/js/modules/objects/models/emitter.js +54 -54
  87. package/src/js/modules/objects/models/graphics.js +38 -38
  88. package/src/js/modules/objects/models/group.js +19 -19
  89. package/src/js/modules/objects/models/hitArea.js +104 -104
  90. package/src/js/modules/objects/models/image.js +34 -34
  91. package/src/js/modules/objects/models/imagesAnimation.js +113 -113
  92. package/src/js/modules/objects/models/mask.js +38 -38
  93. package/src/js/modules/objects/models/scrollbox.js +61 -61
  94. package/src/js/modules/objects/models/slider.js +199 -199
  95. package/src/js/modules/objects/models/spine.js +89 -83
  96. package/src/js/modules/objects/models/text.js +38 -38
  97. package/src/js/modules/objects/models/textInput.js +66 -55
  98. package/src/js/modules/objects/models/toggle.js +178 -169
  99. package/src/js/modules/objects/models/world.js +19 -19
  100. package/src/js/modules/objects/propertyAdapter.js +421 -421
  101. package/src/js/modules/objects/proxy.js +182 -179
  102. package/src/js/modules/objects/styles.js +116 -116
  103. package/src/js/modules/observer/_info.js +4 -4
  104. package/src/js/modules/observer/controller.js +99 -99
  105. package/src/js/modules/observer/events.js +36 -35
  106. package/src/js/modules/scenes/_info.js +8 -8
  107. package/src/js/modules/scenes/controller.js +42 -34
  108. package/src/js/modules/scenes/model.js +35 -35
  109. package/src/js/modules/scenes/pixiWrapper.js +194 -194
  110. package/src/js/modules/scenes/resolutions.js +168 -168
  111. package/src/js/modules/scenes/resolutionsConfig.js +73 -73
  112. package/src/js/modules/scenes/service.js +92 -84
  113. package/src/js/modules/soundManager/_info.js +3 -3
  114. package/src/js/modules/soundManager/controller.js +99 -99
  115. package/src/js/modules/soundManager/soundSprite.js +202 -202
  116. package/src/js/modules/statesManager/_info.js +12 -12
  117. package/src/js/modules/statesManager/action.js +60 -60
  118. package/src/js/modules/statesManager/actions/_info.js +3 -3
  119. package/src/js/modules/statesManager/all.js +23 -23
  120. package/src/js/modules/statesManager/configStates.js +71 -71
  121. package/src/js/modules/statesManager/controller.js +140 -131
  122. package/src/js/modules/statesManager/functionsStorage.js +82 -82
  123. package/src/js/modules/statesManager/helper.js +27 -27
  124. package/src/js/modules/statesManager/race.js +75 -75
  125. package/src/js/modules/statesManager/sequence.js +47 -47
  126. package/src/js/modules/template/_info.js +6 -6
  127. package/src/js/modules/template/controller.js +28 -28
  128. package/src/js/modules/template/model.js +11 -11
  129. package/src/js/modules/template/service.js +125 -125
  130. package/src/js/modules/template/types.js +44 -44
  131. package/src/js/modules/transport/_info.js +8 -8
  132. package/src/js/modules/transport/baseConnectionType.js +24 -24
  133. package/src/js/modules/transport/config.js +13 -22
  134. package/src/js/modules/transport/connectionTypes/_info.js +3 -3
  135. package/src/js/modules/transport/connectionTypes/websocket.js +74 -74
  136. package/src/js/modules/transport/connectionTypes/xhr.js +44 -41
  137. package/src/js/modules/transport/controller.js +48 -48
  138. package/src/js/modules/transport/decorator.js +17 -16
  139. package/src/js/modules/transport/service.js +153 -140
  140. package/src/js/templates/_info.js +4 -4
  141. package/src/js/templates/groups/_info.js +1 -1
  142. package/src/js/templates/scenes/_info.js +1 -1
  143. package/webpack.config.js +47 -47
@@ -1,104 +1,104 @@
1
- class ComponentsFullscreenAndroid {
2
-
3
- constructor() {
4
- this._div = null;
5
- this._orientation = null;
6
- }
7
-
8
- init() {
9
- this._createDom();
10
- this._addListeners();
11
-
12
- this._updateOrientation();
13
- this._updateResize();
14
- }
15
-
16
- _createDom() {
17
- this._div = document.createElement('div');
18
- this._div.className = 'fullscreen fullscreen-android';
19
- document.body.prepend(this._div);
20
-
21
- const infoDiv = document.createElement('div');
22
- infoDiv.className = 'fullscreen-info';
23
- this._div.appendChild(infoDiv);
24
-
25
- const image = document.createElement('img');
26
- image.src = '/assets/images/fullscreen/hand.png'
27
- const span = document.createElement('span');
28
- span.innerText = 'Tap to enter fullscreen';
29
-
30
- infoDiv.appendChild(image);
31
- infoDiv.appendChild(span);
32
-
33
- }
34
-
35
- _updateOrientation() {
36
- this._orientation = innerWidth > innerHeight ? 'landscape' : 'portrait';
37
- }
38
-
39
- get isFullscreen() {
40
- return (
41
- document.webkitIsFullScreen ||
42
- document.mozFullScreen ||
43
- document.fullscreen
44
- );
45
- }
46
-
47
- get _orientationsConfig() {
48
- return Urso.getInstance('Modules.Scenes.ResolutionsConfig').contents || [];
49
- }
50
-
51
- get _isPortrait() {
52
- return this._orientation === 'portrait';
53
- }
54
-
55
- get _needShowOnCurrentOrientation() {
56
- return (this._isPortrait && this._showOnPortrait) ||
57
- (!this._isPortrait && this._showOnLandscape);
58
- }
59
-
60
- get _showOnLandscape() {
61
- return this._orientationsConfig.find(resolution => resolution.orientation === 'landscape');
62
- }
63
-
64
- get _showOnPortrait() {
65
- return this._orientationsConfig.find(resolution => resolution.orientation === 'portrait');
66
- }
67
-
68
- set isVisible(needShowDiv) {
69
- this._div.style.visibility = needShowDiv ? 'visible' : 'hidden';
70
- }
71
-
72
- _requestFullscreen() {
73
- if (document.body.webkitRequestFullScreen)
74
- document.body.webkitRequestFullScreen();
75
- else if (document.body.mozRequestFullScreen)
76
- document.body.mozRequestFullScreen();
77
- else if (document.body.requestFullScreen)
78
- document.body.requestFullScreen();
79
- }
80
-
81
- _updateResize() {
82
- this.isVisible = this._needShowOnCurrentOrientation && !this.isFullscreen;
83
- }
84
-
85
- _resizeHandler() {
86
- this._updateOrientation();
87
- this._updateResize();
88
- }
89
-
90
- _addListeners() {
91
- window.addEventListener('touchend', (e) => {
92
- if (!this.isFullscreen)
93
- this._requestFullscreen();
94
-
95
- this._updateResize();
96
- });
97
- }
98
-
99
- _subscribeOnce() {
100
- this.addListener(Urso.events.EXTRA_BROWSEREVENTS_WINDOW_RESIZE, this._resizeHandler.bind(this));
101
- }
102
- }
103
-
104
- module.exports = ComponentsFullscreenAndroid;
1
+ class ComponentsFullscreenAndroid {
2
+
3
+ constructor() {
4
+ this._div = null;
5
+ this._orientation = null;
6
+ }
7
+
8
+ init() {
9
+ this._createDom();
10
+ this._addListeners();
11
+
12
+ this._updateOrientation();
13
+ this._updateResize();
14
+ }
15
+
16
+ _createDom() {
17
+ this._div = document.createElement('div');
18
+ this._div.className = 'fullscreen fullscreen-android';
19
+ document.body.prepend(this._div);
20
+
21
+ const infoDiv = document.createElement('div');
22
+ infoDiv.className = 'fullscreen-info';
23
+ this._div.appendChild(infoDiv);
24
+
25
+ const image = document.createElement('img');
26
+ image.src = '/assets/images/fullscreen/hand.png'
27
+ const span = document.createElement('span');
28
+ span.innerText = 'Tap to enter fullscreen';
29
+
30
+ infoDiv.appendChild(image);
31
+ infoDiv.appendChild(span);
32
+
33
+ }
34
+
35
+ _updateOrientation() {
36
+ this._orientation = innerWidth > innerHeight ? 'landscape' : 'portrait';
37
+ }
38
+
39
+ get isFullscreen() {
40
+ return (
41
+ document.webkitIsFullScreen ||
42
+ document.mozFullScreen ||
43
+ document.fullscreen
44
+ );
45
+ }
46
+
47
+ get _orientationsConfig() {
48
+ return Urso.getInstance('Modules.Scenes.ResolutionsConfig').contents || [];
49
+ }
50
+
51
+ get _isPortrait() {
52
+ return this._orientation === 'portrait';
53
+ }
54
+
55
+ get _needShowOnCurrentOrientation() {
56
+ return (this._isPortrait && this._showOnPortrait) ||
57
+ (!this._isPortrait && this._showOnLandscape);
58
+ }
59
+
60
+ get _showOnLandscape() {
61
+ return this._orientationsConfig.find(resolution => resolution.orientation === 'landscape');
62
+ }
63
+
64
+ get _showOnPortrait() {
65
+ return this._orientationsConfig.find(resolution => resolution.orientation === 'portrait');
66
+ }
67
+
68
+ set isVisible(needShowDiv) {
69
+ this._div.style.visibility = needShowDiv ? 'visible' : 'hidden';
70
+ }
71
+
72
+ _requestFullscreen() {
73
+ if (document.body.webkitRequestFullScreen)
74
+ document.body.webkitRequestFullScreen();
75
+ else if (document.body.mozRequestFullScreen)
76
+ document.body.mozRequestFullScreen();
77
+ else if (document.body.requestFullScreen)
78
+ document.body.requestFullScreen();
79
+ }
80
+
81
+ _updateResize() {
82
+ this.isVisible = this._needShowOnCurrentOrientation && !this.isFullscreen;
83
+ }
84
+
85
+ _resizeHandler() {
86
+ this._updateOrientation();
87
+ this._updateResize();
88
+ }
89
+
90
+ _addListeners() {
91
+ window.addEventListener('touchend', (e) => {
92
+ if (!this.isFullscreen)
93
+ this._requestFullscreen();
94
+
95
+ this._updateResize();
96
+ });
97
+ }
98
+
99
+ _subscribeOnce() {
100
+ this.addListener(Urso.events.EXTRA_BROWSEREVENTS_WINDOW_RESIZE, this._resizeHandler.bind(this));
101
+ }
102
+ }
103
+
104
+ module.exports = ComponentsFullscreenAndroid;
@@ -1,64 +1,64 @@
1
- ComponentsBaseController = require('./../base/controller.js');
2
-
3
- class ComponentsFullscreenController extends ComponentsBaseController {
4
-
5
- constructor(params) {
6
- super(params);
7
-
8
- this._fullscreenActivator = null;
9
- this._resolutionsConfig = null;
10
-
11
- this.createActivator();
12
- }
13
-
14
- createActivator() {
15
- if (this._isCriOS)
16
- return;
17
-
18
- this._resolutionsConfig = Urso.getInstance('Modules.Scenes.ResolutionsConfig').contents || [];
19
-
20
- if (Urso.device.desktop)
21
- this._fullscreenActivator = this.getInstance('Desktop');
22
- else if (Urso.device.iOS)
23
- this._fullscreenActivator = this.getInstance('Ios');
24
- else if (Urso.device.android)
25
- this._fullscreenActivator = this.getInstance('Android');
26
-
27
- if (this._fullscreenActivator)
28
- this._fullscreenActivator.init();
29
- }
30
-
31
- get _isCriOS() {
32
- return navigator.userAgent.indexOf('CriOS') !== -1;
33
- }
34
-
35
- get _orientationsConfig() {
36
- return Urso.getInstance('Modules.Scenes.ResolutionsConfig')._orientations || [];
37
- }
38
-
39
- get _showOnLandscape() {
40
- return this._resolutionsConfig.find(resolution => resolution.orientation === 'landscape');
41
- }
42
-
43
- get _showOnPortrait() {
44
- return this._resolutionsConfig.find(resolution => resolution.orientation === 'portrait');
45
- }
46
-
47
- get _isPortrait() {
48
- return innerWidth > innerHeight ? 'portrait' : 'landscape';
49
- }
50
-
51
- get isFullscreen() {
52
- return this._fullscreenActivator.isFullscreen;
53
- }
54
-
55
- _resizeHandler() {
56
- Urso.localData.set('fullscreen.isFullscreen', this.isFullscreen);
57
- }
58
-
59
- _subscribeOnce() {
60
- this.addListener(Urso.events.EXTRA_BROWSEREVENTS_WINDOW_RESIZE, this._resizeHandler.bind(this));
61
- }
62
- }
63
-
64
- module.exports = ComponentsFullscreenController;
1
+ ComponentsBaseController = require('./../base/controller.js');
2
+
3
+ class ComponentsFullscreenController extends ComponentsBaseController {
4
+
5
+ constructor(params) {
6
+ super(params);
7
+
8
+ this._fullscreenActivator = null;
9
+ this._resolutionsConfig = null;
10
+
11
+ this.createActivator();
12
+ }
13
+
14
+ createActivator() {
15
+ if (this._isCriOS)
16
+ return;
17
+
18
+ this._resolutionsConfig = Urso.getInstance('Modules.Scenes.ResolutionsConfig').contents || [];
19
+
20
+ if (Urso.device.desktop)
21
+ this._fullscreenActivator = this.getInstance('Desktop');
22
+ else if (Urso.device.iOS)
23
+ this._fullscreenActivator = this.getInstance('Ios');
24
+ else if (Urso.device.android)
25
+ this._fullscreenActivator = this.getInstance('Android');
26
+
27
+ if (this._fullscreenActivator)
28
+ this._fullscreenActivator.init();
29
+ }
30
+
31
+ get _isCriOS() {
32
+ return navigator.userAgent.indexOf('CriOS') !== -1;
33
+ }
34
+
35
+ get _orientationsConfig() {
36
+ return Urso.getInstance('Modules.Scenes.ResolutionsConfig')._orientations || [];
37
+ }
38
+
39
+ get _showOnLandscape() {
40
+ return this._resolutionsConfig.find(resolution => resolution.orientation === 'landscape');
41
+ }
42
+
43
+ get _showOnPortrait() {
44
+ return this._resolutionsConfig.find(resolution => resolution.orientation === 'portrait');
45
+ }
46
+
47
+ get _isPortrait() {
48
+ return innerWidth > innerHeight ? 'portrait' : 'landscape';
49
+ }
50
+
51
+ get isFullscreen() {
52
+ return this._fullscreenActivator.isFullscreen;
53
+ }
54
+
55
+ _resizeHandler() {
56
+ Urso.localData.set('fullscreen.isFullscreen', this.isFullscreen);
57
+ }
58
+
59
+ _subscribeOnce() {
60
+ this.addListener(Urso.events.EXTRA_BROWSEREVENTS_WINDOW_RESIZE, this._resizeHandler.bind(this));
61
+ }
62
+ }
63
+
64
+ module.exports = ComponentsFullscreenController;
@@ -1,49 +1,49 @@
1
- class ComponentsFullscreenDesktop {
2
- init() {}
3
-
4
- get isFullscreen() {
5
- return (
6
- document.webkitIsFullScreen ||
7
- document.mozFullScreen ||
8
- document.fullscreen
9
- );
10
- }
11
-
12
- _requestFullscreen() {
13
- if (document.body.webkitRequestFullScreen)
14
- document.body.webkitRequestFullScreen();
15
- else if (document.body.mozRequestFullScreen)
16
- document.body.mozRequestFullScreen();
17
- else if (document.body.requestFullScreen)
18
- document.body.requestFullScreen();
19
- }
20
-
21
- _cancelFullscreen() {
22
- if (document.webkitCancelFullScreen)
23
- document.webkitCancelFullScreen();
24
- else if (document.mozCancelFullScreen)
25
- document.mozCancelFullScreen();
26
- else if (document.cancelFullScreen)
27
- document.cancelFullScreen();
28
- }
29
-
30
- _switchFullscreen(needGoFullscreen = null) {
31
- if (needGoFullscreen === null)
32
- needGoFullscreen = !this.isFullscreen;
33
-
34
- if (needGoFullscreen)
35
- this._requestFullscreen();
36
- else
37
- this._cancelFullscreen();
38
- }
39
-
40
- _fullscreenSwitchHandler(needGoFullscreen = null) {
41
- this._switchFullscreen(needGoFullscreen);
42
- }
43
-
44
- _subscribeOnce() {
45
- this.addListener('components.fullscreen.switch', this._fullscreenSwitchHandler.bind(this));
46
- }
47
- }
48
-
49
- module.exports = ComponentsFullscreenDesktop;
1
+ class ComponentsFullscreenDesktop {
2
+ init() {}
3
+
4
+ get isFullscreen() {
5
+ return (
6
+ document.webkitIsFullScreen ||
7
+ document.mozFullScreen ||
8
+ document.fullscreen
9
+ );
10
+ }
11
+
12
+ _requestFullscreen() {
13
+ if (document.body.webkitRequestFullScreen)
14
+ document.body.webkitRequestFullScreen();
15
+ else if (document.body.mozRequestFullScreen)
16
+ document.body.mozRequestFullScreen();
17
+ else if (document.body.requestFullScreen)
18
+ document.body.requestFullScreen();
19
+ }
20
+
21
+ _cancelFullscreen() {
22
+ if (document.webkitCancelFullScreen)
23
+ document.webkitCancelFullScreen();
24
+ else if (document.mozCancelFullScreen)
25
+ document.mozCancelFullScreen();
26
+ else if (document.cancelFullScreen)
27
+ document.cancelFullScreen();
28
+ }
29
+
30
+ _switchFullscreen(needGoFullscreen = null) {
31
+ if (needGoFullscreen === null)
32
+ needGoFullscreen = !this.isFullscreen;
33
+
34
+ if (needGoFullscreen)
35
+ this._requestFullscreen();
36
+ else
37
+ this._cancelFullscreen();
38
+ }
39
+
40
+ _fullscreenSwitchHandler(needGoFullscreen = null) {
41
+ this._switchFullscreen(needGoFullscreen);
42
+ }
43
+
44
+ _subscribeOnce() {
45
+ this.addListener('components.fullscreen.switch', this._fullscreenSwitchHandler.bind(this));
46
+ }
47
+ }
48
+
49
+ module.exports = ComponentsFullscreenDesktop;
@@ -1,111 +1,111 @@
1
- class ComponentsFullscreenIos {
2
- constructor() {
3
- this._div = null;
4
- this._orientation = null;
5
- this._scrollTimeout = null;
6
- }
7
-
8
- init() {
9
- this._createDom();
10
- this._addListeners();
11
- this._updateResize();
12
- }
13
-
14
- _createDom() {
15
- this._div = document.createElement('div');
16
- this._div.className = 'fullscreen fullscreen-ios';
17
- document.body.prepend(this._div);
18
-
19
- const infoDiv = document.createElement('div');
20
- infoDiv.className = 'fullscreen-info';
21
- this._div.appendChild(infoDiv);
22
-
23
- const image = document.createElement('img');
24
- image.src = '/assets/images/fullscreen/scroll.png';
25
- const span = document.createElement('span');
26
- span.innerText = 'Swipe up to enter fullscreen';
27
-
28
- infoDiv.appendChild(image);
29
- infoDiv.appendChild(span);
30
- }
31
-
32
- _addListeners() {
33
- window.addEventListener('touchmove', (e) => {
34
- this._updateResize();
35
-
36
- if (e.touches.length > 1) {
37
- e.preventDefault();
38
- return;
39
- }
40
- });
41
- }
42
-
43
- get _isFullscreen() {
44
- const minFactor = 0.51;
45
- const deviceFactor = screen.width / screen.height;
46
- const factor = this._isPortrait ?
47
- innerWidth / innerHeight :
48
- innerHeight / innerWidth;
49
-
50
- return !(
51
- this._isPortrait ?
52
- factor - deviceFactor < 0.1:
53
- factor > minFactor
54
- );
55
- }
56
-
57
- _updateOrientation() {
58
- this._orientation = innerWidth > innerHeight ? 'landscape' : 'portrait';
59
- }
60
-
61
- _updateResize() {
62
- this._updateOrientation();
63
- this.isVisible = this._needShowOnCurrentOrientation && this._isFullscreen;
64
- }
65
-
66
- get _orientationsConfig() {
67
- return Urso.getInstance('Modules.Scenes.ResolutionsConfig').contents || [];
68
- }
69
-
70
- get _isPortrait() {
71
- return this._orientation === 'portrait';
72
- }
73
-
74
- get _needShowOnCurrentOrientation() {
75
- return (this._isPortrait && this._showOnPortrait) || (!this._isPortrait && this._showOnLandscape);
76
- }
77
-
78
- get _showOnLandscape() {
79
- return this._orientationsConfig.find(resolution => resolution.orientation === 'landscape');
80
- }
81
-
82
- get _showOnPortrait() {
83
- return this._orientationsConfig.find(resolution => resolution.orientation === 'portrait');
84
- }
85
-
86
- set isVisible(needShowDiv) {
87
- this._div.style.zIndex = needShowDiv ? 1 : -1;
88
- clearTimeout(this._scrollTimeout)
89
- this._scrollTimeout = setTimeout(() => {
90
- if(needShowDiv)
91
- window.scrollTo(0,0);
92
- }, 200);
93
- }
94
-
95
- _resizeHandler() {
96
- this._updateResize();
97
- }
98
-
99
- _fullscreenSwitchHandler(needGoFullscreen = null) {
100
- this._switchFullscreen(needGoFullscreen);
101
- }
102
-
103
- _subscribeOnce() {
104
- this.addListener(
105
- Urso.events.EXTRA_BROWSEREVENTS_WINDOW_RESIZE,
106
- this._resizeHandler.bind(this)
107
- );
108
- }
109
- }
110
-
111
- module.exports = ComponentsFullscreenIos;
1
+ class ComponentsFullscreenIos {
2
+ constructor() {
3
+ this._div = null;
4
+ this._orientation = null;
5
+ this._scrollTimeout = null;
6
+ }
7
+
8
+ init() {
9
+ this._createDom();
10
+ this._addListeners();
11
+ this._updateResize();
12
+ }
13
+
14
+ _createDom() {
15
+ this._div = document.createElement('div');
16
+ this._div.className = 'fullscreen fullscreen-ios';
17
+ document.body.prepend(this._div);
18
+
19
+ const infoDiv = document.createElement('div');
20
+ infoDiv.className = 'fullscreen-info';
21
+ this._div.appendChild(infoDiv);
22
+
23
+ const image = document.createElement('img');
24
+ image.src = '/assets/images/fullscreen/scroll.png';
25
+ const span = document.createElement('span');
26
+ span.innerText = 'Swipe up to enter fullscreen';
27
+
28
+ infoDiv.appendChild(image);
29
+ infoDiv.appendChild(span);
30
+ }
31
+
32
+ _addListeners() {
33
+ window.addEventListener('touchmove', (e) => {
34
+ this._updateResize();
35
+
36
+ if (e.touches.length > 1) {
37
+ e.preventDefault();
38
+ return;
39
+ }
40
+ });
41
+ }
42
+
43
+ get _isFullscreen() {
44
+ const minFactor = 0.51;
45
+ const deviceFactor = screen.width / screen.height;
46
+ const factor = this._isPortrait ?
47
+ innerWidth / innerHeight :
48
+ innerHeight / innerWidth;
49
+
50
+ return !(
51
+ this._isPortrait ?
52
+ factor - deviceFactor < 0.1:
53
+ factor > minFactor
54
+ );
55
+ }
56
+
57
+ _updateOrientation() {
58
+ this._orientation = innerWidth > innerHeight ? 'landscape' : 'portrait';
59
+ }
60
+
61
+ _updateResize() {
62
+ this._updateOrientation();
63
+ this.isVisible = this._needShowOnCurrentOrientation && this._isFullscreen;
64
+ }
65
+
66
+ get _orientationsConfig() {
67
+ return Urso.getInstance('Modules.Scenes.ResolutionsConfig').contents || [];
68
+ }
69
+
70
+ get _isPortrait() {
71
+ return this._orientation === 'portrait';
72
+ }
73
+
74
+ get _needShowOnCurrentOrientation() {
75
+ return (this._isPortrait && this._showOnPortrait) || (!this._isPortrait && this._showOnLandscape);
76
+ }
77
+
78
+ get _showOnLandscape() {
79
+ return this._orientationsConfig.find(resolution => resolution.orientation === 'landscape');
80
+ }
81
+
82
+ get _showOnPortrait() {
83
+ return this._orientationsConfig.find(resolution => resolution.orientation === 'portrait');
84
+ }
85
+
86
+ set isVisible(needShowDiv) {
87
+ this._div.style.zIndex = needShowDiv ? 1 : -1;
88
+ clearTimeout(this._scrollTimeout)
89
+ this._scrollTimeout = setTimeout(() => {
90
+ if(needShowDiv)
91
+ window.scrollTo(0,0);
92
+ }, 200);
93
+ }
94
+
95
+ _resizeHandler() {
96
+ this._updateResize();
97
+ }
98
+
99
+ _fullscreenSwitchHandler(needGoFullscreen = null) {
100
+ this._switchFullscreen(needGoFullscreen);
101
+ }
102
+
103
+ _subscribeOnce() {
104
+ this.addListener(
105
+ Urso.events.EXTRA_BROWSEREVENTS_WINDOW_RESIZE,
106
+ this._resizeHandler.bind(this)
107
+ );
108
+ }
109
+ }
110
+
111
+ module.exports = ComponentsFullscreenIos;
@@ -1,4 +1,4 @@
1
- Urso.Core.Components.Loader = {
2
- Controller: require('./controller.js'),
3
- Template: require('./template.js')
4
- };
1
+ Urso.Core.Components.Loader = {
2
+ Controller: require('./controller.js'),
3
+ Template: require('./template.js')
4
+ };