@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,179 +1,182 @@
1
- class ModulesObjectsProxy {
2
- constructor() {
3
- this.singleton = true;
4
- this._safeFlag = false;
5
-
6
- this._customSetLogic = this._customSetLogic.bind(this);
7
- this._customGetLogic = this._customGetLogic.bind(this);
8
-
9
- this._propertyAdapter = this.getInstance('PropertyAdapter');
10
- };
11
-
12
- get(model) {
13
- const _this = this;
14
-
15
- let proxy = new Proxy(model, {
16
- get(target, key, receiver) {
17
- const rv = Reflect.get(target, key, receiver);
18
- return _this._customGetLogic({ target: target, proxy: receiver }, key, rv);
19
- },
20
-
21
- set(target, key, value, receiver) {
22
- const rv = Reflect.set(target, key, value, receiver);
23
- _this._customSetLogic(target, key, value, proxy);
24
- return rv;
25
- }
26
- });
27
-
28
- return proxy;
29
- }
30
-
31
- /* targetObject - object from models
32
- * propertyName - property to adapt for PIXI object
33
- * value - value to set
34
- */
35
- _setProperty(target, propertyName, value) {
36
- const isAdaptiveProperty = this._propertyAdapter.isAdaptiveProperty(propertyName);
37
-
38
- if (isAdaptiveProperty)
39
- this._propertyAdapter.propertyChangeHandler(target, propertyName);
40
- else
41
- Urso.helper.recursiveSet(propertyName, value, target._baseObject);
42
- }
43
-
44
- safeSetValueToTarget(target, key, value) {
45
- this._safeFlag = true;
46
-
47
- const originalValue = target._originalModel[key];
48
- target[key] = value;
49
- target._originalModel[key] = originalValue;
50
-
51
- this._safeFlag = false;
52
- }
53
-
54
- //returns reflectValue = value that would be used when target[key] is called
55
- _customGetLogic(object, key, reflectValue) {
56
- const target = object.target;
57
- const wrapKey = this._getAliases()[key];
58
- const isReflectValueObject = typeof reflectValue !== 'undefined'; //&& typeof reflectValue !== 'boolean'; //it was for getting width and height
59
-
60
- if ((isReflectValueObject && (typeof wrapKey != 'undefined')) || !wrapKey)
61
- return reflectValue;
62
-
63
- return Urso.helper.recursiveGet(wrapKey, target._baseObject, reflectValue);
64
- }
65
-
66
- _customSetLogic(target, key, value, proxy) {
67
- if (!this._getOriginalModelExceptions().includes(key))
68
- target._originalModel[key] = value;
69
-
70
- //apply to pixi
71
- const propertyName = this._getAliases()[key];
72
-
73
- if (!propertyName)
74
- return false;
75
-
76
- if (propertyName.startsWith('function.')) {
77
- this._runCustomFunction(propertyName, target);
78
- return true;
79
- }
80
-
81
- this._checkSelectorProperties(key);
82
-
83
- this._setProperty(target, propertyName, value);
84
-
85
- //setup dirty to recalc params
86
- if (typeof target._baseObject.dirty !== 'undefined')
87
- target._baseObject.dirty = true;
88
-
89
- return true;
90
- };
91
-
92
- _runCustomFunction(property, target) {
93
- const funcName = property.replace('function.', '');
94
- if (target[funcName])
95
- target[funcName]();
96
- }
97
-
98
- _checkSelectorProperties(key) {
99
- if (!this._safeFlag && this._getSelectorProperties().includes(key)) {
100
- Urso.logger.error('ModulesObjectsProxy error: you are trying to change selector propertie: ' + key);
101
- Urso.logger.error('Notice: use functions addClass, removeClass, setId, setName');
102
- }
103
- }
104
-
105
- _getSelectorProperties() {
106
- return [
107
- 'id', 'name', 'class'
108
- ];
109
- }
110
-
111
- _getOriginalModelExceptions() {
112
- return [
113
- 'parent', 'contents'
114
- ];
115
- }
116
-
117
- _getAliases() {
118
- return {
119
- 'id': 'id',
120
- 'name': 'name',
121
- 'class': 'class',
122
- 'x': 'x',
123
- 'y': 'y',
124
- 'z': 'z',
125
- 'angle': 'angle',
126
- 'anchorX': 'anchor.x', //'anchor.x',
127
- 'anchorY': 'anchor.y', //'anchor.y',
128
- 'width': 'width', //'width',
129
- 'height': 'height', //'height',
130
- 'stretchingType': 'stretchingType',
131
- 'scaleX': 'scale.x', //'scale.x',
132
- 'scaleY': 'scale.y', //'scale.y',
133
- 'alignX': 'alignX', //'alignX',
134
- 'alignY': 'alignY', //'alignY',
135
- 'parent': 'parent',
136
- 'rightOffset': 'rightOffset',
137
- 'bottomOffset': 'bottomOffset',
138
- 'alpha': 'alpha',
139
- 'visible': 'visible',
140
- 'text': 'text',
141
- //'assetKey': 'function.setAssetKey', /todo
142
- 'frame': 'frame',
143
- 'blendMode': 'blendMode',
144
- 'tint': 'tint',
145
- 'action': 'events.onInputUp._bindings.0._listener', //todo
146
- 'btnFrames.over': 'frames.over',
147
- 'btnFrames.out': 'frames.out',
148
- 'btnFrames.down': 'frames.down',
149
- 'btnFrames.up': 'frames.up',
150
- 'align': 'align',
151
- 'filters': 'filters',
152
- 'lineSpacing': 'lineSpacing',
153
- 'maxWidth': 'maxWidth',
154
- 'maxHeight': 'maxHeight',
155
- 'lineHeight': 'style.lineHeight',
156
- 'fontFamily': 'style.fontFamily',
157
- 'fontSize': 'style.fontSize',
158
- 'fontStyle': 'style.fontStyle',
159
- 'fontWeight': 'style.fontWeight',
160
- 'fill': 'style.fill',
161
- 'stroke': 'style.stroke',
162
- 'strokeThickness': 'style.strokeThickness',
163
- 'dropShadow': 'style.dropShadow',
164
- 'dropShadowColor': 'style.dropShadowColor',
165
- 'dropShadowBlur': 'style.dropShadowBlur',
166
- 'dropShadowAngle': 'style.dropShadowAngle',
167
- 'dropShadowDistance': 'style.dropShadowDistance',
168
- 'wordWrap': 'style.wordWrap',
169
- 'wordWrapWidth': 'style.wordWrapWidth',
170
- 'enabled': 'input.enabled',
171
- 'cacheAsBitmap': 'cacheAsBitmap',
172
-
173
- //baseObject functions
174
- 'toGlobal': 'toGlobal'
175
- };
176
- }
177
- }
178
-
179
- module.exports = ModulesObjectsProxy;
1
+ class ModulesObjectsProxy {
2
+ constructor() {
3
+ this.singleton = true;
4
+ this._safeFlag = false;
5
+
6
+ this._customSetLogic = this._customSetLogic.bind(this);
7
+ this._customGetLogic = this._customGetLogic.bind(this);
8
+
9
+ this._propertyAdapter = this.getInstance('PropertyAdapter');
10
+ };
11
+
12
+ get(model) {
13
+ const _this = this;
14
+
15
+ let proxy = new Proxy(model, {
16
+ get(target, key, receiver) {
17
+ const rv = Reflect.get(target, key, receiver);
18
+ return _this._customGetLogic({ target: target, proxy: receiver }, key, rv);
19
+ },
20
+
21
+ set(target, key, value, receiver) {
22
+ const rv = Reflect.set(target, key, value, receiver);
23
+ _this._customSetLogic(target, key, value, proxy);
24
+ return rv;
25
+ }
26
+ });
27
+
28
+ return proxy;
29
+ }
30
+
31
+ /* targetObject - object from models
32
+ * propertyName - property to adapt for PIXI object
33
+ * value - value to set
34
+ */
35
+ _setProperty(target, propertyName, value) {
36
+ const isAdaptiveProperty = this._propertyAdapter.isAdaptiveProperty(propertyName);
37
+
38
+ if (isAdaptiveProperty)
39
+ this._propertyAdapter.propertyChangeHandler(target, propertyName);
40
+ else
41
+ Urso.helper.recursiveSet(propertyName, value, target._baseObject);
42
+ }
43
+
44
+ safeSetValueToTarget(target, key, value) {
45
+ this._safeFlag = true;
46
+
47
+ const originalValue = target._originalModel[key]; // we need to save original value in the end
48
+
49
+ //setting value
50
+ target[key] = value;
51
+
52
+ target._originalModel[key] = originalValue;
53
+
54
+ this._safeFlag = false;
55
+ }
56
+
57
+ //returns reflectValue = value that would be used when target[key] is called
58
+ _customGetLogic(object, key, reflectValue) {
59
+ const target = object.target;
60
+ const wrapKey = this._getAliases()[key];
61
+ const isReflectValueObject = typeof reflectValue !== 'undefined'; //&& typeof reflectValue !== 'boolean'; //it was for getting width and height
62
+
63
+ if ((isReflectValueObject && (typeof wrapKey != 'undefined')) || !wrapKey)
64
+ return reflectValue;
65
+
66
+ return Urso.helper.recursiveGet(wrapKey, target._baseObject, reflectValue);
67
+ }
68
+
69
+ _customSetLogic(target, key, value, proxy) {
70
+ if (!this._getOriginalModelExceptions().includes(key))
71
+ target._originalModel[key] = value;
72
+
73
+ //apply to pixi
74
+ const propertyName = this._getAliases()[key];
75
+
76
+ if (!propertyName)
77
+ return false;
78
+
79
+ if (propertyName.startsWith('function.')) {
80
+ this._runCustomFunction(propertyName, target);
81
+ return true;
82
+ }
83
+
84
+ this._checkSelectorProperties(key);
85
+
86
+ this._setProperty(target, propertyName, value);
87
+
88
+ //setup dirty to recalc params
89
+ if (typeof target._baseObject.dirty !== 'undefined')
90
+ target._baseObject.dirty = true;
91
+
92
+ return true;
93
+ };
94
+
95
+ _runCustomFunction(property, target) {
96
+ const funcName = property.replace('function.', '');
97
+ if (target[funcName])
98
+ target[funcName]();
99
+ }
100
+
101
+ _checkSelectorProperties(key) {
102
+ if (!this._safeFlag && this._getSelectorProperties().includes(key)) {
103
+ Urso.logger.error('ModulesObjectsProxy error: you are trying to change selector propertie: ' + key);
104
+ Urso.logger.error('Notice: use functions addClass, removeClass, setId, setName');
105
+ }
106
+ }
107
+
108
+ _getSelectorProperties() {
109
+ return [
110
+ 'id', 'name', 'class'
111
+ ];
112
+ }
113
+
114
+ _getOriginalModelExceptions() {
115
+ return [
116
+ 'parent', 'contents'
117
+ ];
118
+ }
119
+
120
+ _getAliases() {
121
+ return {
122
+ 'id': 'id',
123
+ 'name': 'name',
124
+ 'class': 'class',
125
+ 'x': 'x',
126
+ 'y': 'y',
127
+ 'z': 'z',
128
+ 'angle': 'angle',
129
+ 'anchorX': 'anchor.x', //'anchor.x',
130
+ 'anchorY': 'anchor.y', //'anchor.y',
131
+ 'width': 'width', //'width',
132
+ 'height': 'height', //'height',
133
+ 'stretchingType': 'stretchingType',
134
+ 'scaleX': 'scale.x', //'scale.x',
135
+ 'scaleY': 'scale.y', //'scale.y',
136
+ 'alignX': 'alignX', //'alignX',
137
+ 'alignY': 'alignY', //'alignY',
138
+ 'parent': 'parent',
139
+ 'rightOffset': 'rightOffset',
140
+ 'bottomOffset': 'bottomOffset',
141
+ 'alpha': 'alpha',
142
+ 'visible': 'visible',
143
+ 'text': 'text',
144
+ //'assetKey': 'function.setAssetKey', /todo
145
+ 'frame': 'frame',
146
+ 'blendMode': 'blendMode',
147
+ 'tint': 'tint',
148
+ 'action': 'events.onInputUp._bindings.0._listener', //todo
149
+ 'btnFrames.over': 'frames.over',
150
+ 'btnFrames.out': 'frames.out',
151
+ 'btnFrames.down': 'frames.down',
152
+ 'btnFrames.up': 'frames.up',
153
+ 'align': 'align',
154
+ 'filters': 'filters',
155
+ 'lineSpacing': 'lineSpacing',
156
+ 'maxWidth': 'maxWidth',
157
+ 'maxHeight': 'maxHeight',
158
+ 'lineHeight': 'style.lineHeight',
159
+ 'fontFamily': 'style.fontFamily',
160
+ 'fontSize': 'style.fontSize',
161
+ 'fontStyle': 'style.fontStyle',
162
+ 'fontWeight': 'style.fontWeight',
163
+ 'fill': 'style.fill',
164
+ 'stroke': 'style.stroke',
165
+ 'strokeThickness': 'style.strokeThickness',
166
+ 'dropShadow': 'style.dropShadow',
167
+ 'dropShadowColor': 'style.dropShadowColor',
168
+ 'dropShadowBlur': 'style.dropShadowBlur',
169
+ 'dropShadowAngle': 'style.dropShadowAngle',
170
+ 'dropShadowDistance': 'style.dropShadowDistance',
171
+ 'wordWrap': 'style.wordWrap',
172
+ 'wordWrapWidth': 'style.wordWrapWidth',
173
+ 'enabled': 'input.enabled',
174
+ 'cacheAsBitmap': 'cacheAsBitmap',
175
+
176
+ //baseObject functions
177
+ 'toGlobal': 'toGlobal'
178
+ };
179
+ }
180
+ }
181
+
182
+ module.exports = ModulesObjectsProxy;
@@ -1,116 +1,116 @@
1
- class ModulesObjectsStyles {
2
- constructor() {
3
- this.singleton = true;
4
-
5
- this._cache = {};
6
- this._tempObject = this.getInstance('BaseModel', {})
7
- }
8
-
9
- refresh(parent) {
10
- if (!parent)
11
- parent = this.getInstance('Controller').getWorld();
12
-
13
- let template = Urso.template.get();
14
- let styles = template.styles;
15
-
16
- this._globalResetStyles();
17
-
18
- //todo consider parent
19
-
20
- for (let [selector, style] of Object.entries(styles))
21
- this._apply(selector, style);
22
- }
23
-
24
- refreshByChangedClassName(className) {
25
- let template = Urso.template.get();
26
- let styles = template.styles;
27
-
28
- this._restoreDefaultsByCache(className);
29
-
30
- for (let [selector, style] of Object.entries(styles))
31
- if (selector.indexOf('.' + className) !== -1)
32
- this._apply(selector, style);
33
- }
34
-
35
- removeFromCache(object) {
36
- for (let selector in this._cache) {
37
- if (this._cache[selector][object._uid]) {
38
- delete this._cache[selector][object._uid];
39
-
40
- if (!Object.keys(this._cache[selector]).length)
41
- delete this._cache[selector];
42
- }
43
- }
44
-
45
- }
46
-
47
- _apply(selector, style) {
48
- let objectsArray = this.getInstance('Controller').findAll(selector);
49
-
50
- for (let object of objectsArray) {
51
- this._addObjectToCache(selector, object);
52
- object._styles[selector] = style;
53
-
54
- for (let [key, value] of Object.entries(style))
55
- if (typeof object._originalModel[key] === 'undefined')
56
- Urso.objects._safeSetValueToTarget(object, key, value);
57
- }
58
- }
59
-
60
- _addObjectToCache(selector, object) {
61
- if (!this._cache[selector])
62
- this._cache[selector] = {};
63
-
64
- this._cache[selector][object._uid] = object;
65
- }
66
-
67
- _globalResetStyles() {
68
- for (let [selector, selectorCache] of Object.entries(this._cache)) {
69
- for (let [uid, object] of Object.entries(selectorCache))
70
- this._removeSelectorStyles(object, selector);
71
-
72
- delete this._cache[selector];
73
- }
74
- }
75
-
76
- _restoreDefaultsByCache(className) {
77
- for (let [selector, selectorCache] of Object.entries(this._cache))
78
- if (selector.indexOf('.' + className) !== -1) {
79
- for (let [uid, object] of Object.entries(selectorCache))
80
- this._removeSelectorStyles(object, selector);
81
-
82
- delete this._cache[selector];
83
- }
84
- }
85
-
86
- _removeSelectorStyles(object, selector) {
87
- delete object._styles[selector];
88
- let template = Urso.template.get();
89
- let styles = template.styles[selector];
90
-
91
- if(!styles){
92
- return;
93
- }
94
-
95
- for (let [key, value] of Object.entries(styles)) {
96
- this._restoreValueByKey(key, object);
97
- }
98
-
99
- }
100
-
101
- _restoreValueByKey(key, object) {
102
- //check own
103
- if (object._originalModel[key])
104
- return;
105
-
106
- //restore defaults
107
- Urso.objects._safeSetValueToTarget(object, key, this._tempObject[key]);
108
-
109
- //check other styles
110
- for (let [selector, style] of Object.entries(object._styles))
111
- if (typeof style[key] !== 'undefined')
112
- Urso.objects._safeSetValueToTarget(object, key, style[key]);
113
- }
114
- }
115
-
116
- module.exports = ModulesObjectsStyles;
1
+ class ModulesObjectsStyles {
2
+ constructor() {
3
+ this.singleton = true;
4
+
5
+ this._cache = {};
6
+ this._tempObject = this.getInstance('BaseModel', {})
7
+ }
8
+
9
+ refresh(parent) {
10
+ if (!parent)
11
+ parent = this.getInstance('Controller').getWorld();
12
+
13
+ let template = Urso.template.get();
14
+ let styles = template.styles;
15
+
16
+ this._globalResetStyles();
17
+
18
+ //todo consider parent
19
+
20
+ for (let [selector, style] of Object.entries(styles))
21
+ this._apply(selector, style);
22
+ }
23
+
24
+ refreshByChangedClassName(className) {
25
+ let template = Urso.template.get();
26
+ let styles = template.styles;
27
+
28
+ this._restoreDefaultsByCache(className);
29
+
30
+ for (let [selector, style] of Object.entries(styles))
31
+ if (selector.indexOf('.' + className) !== -1)
32
+ this._apply(selector, style);
33
+ }
34
+
35
+ removeFromCache(object) {
36
+ for (let selector in this._cache) {
37
+ if (this._cache[selector][object._uid]) {
38
+ delete this._cache[selector][object._uid];
39
+
40
+ if (!Object.keys(this._cache[selector]).length)
41
+ delete this._cache[selector];
42
+ }
43
+ }
44
+
45
+ }
46
+
47
+ _apply(selector, style) {
48
+ let objectsArray = this.getInstance('Controller').findAll(selector);
49
+
50
+ for (let object of objectsArray) {
51
+ this._addObjectToCache(selector, object);
52
+ object._styles[selector] = style;
53
+
54
+ for (let [key, value] of Object.entries(style))
55
+ if (typeof object._originalModel[key] === 'undefined')
56
+ Urso.objects._safeSetValueToTarget(object, key, value);
57
+ }
58
+ }
59
+
60
+ _addObjectToCache(selector, object) {
61
+ if (!this._cache[selector])
62
+ this._cache[selector] = {};
63
+
64
+ this._cache[selector][object._uid] = object;
65
+ }
66
+
67
+ _globalResetStyles() {
68
+ for (let [selector, selectorCache] of Object.entries(this._cache)) {
69
+ for (let [uid, object] of Object.entries(selectorCache))
70
+ this._removeSelectorStyles(object, selector);
71
+
72
+ delete this._cache[selector];
73
+ }
74
+ }
75
+
76
+ _restoreDefaultsByCache(className) {
77
+ for (let [selector, selectorCache] of Object.entries(this._cache))
78
+ if (selector.indexOf('.' + className) !== -1) {
79
+ for (let [uid, object] of Object.entries(selectorCache))
80
+ this._removeSelectorStyles(object, selector);
81
+
82
+ delete this._cache[selector];
83
+ }
84
+ }
85
+
86
+ _removeSelectorStyles(object, selector) {
87
+ delete object._styles[selector];
88
+ let template = Urso.template.get();
89
+ let styles = template.styles[selector];
90
+
91
+ if(!styles){
92
+ return;
93
+ }
94
+
95
+ for (let [key, value] of Object.entries(styles)) {
96
+ this._restoreValueByKey(key, object);
97
+ }
98
+
99
+ }
100
+
101
+ _restoreValueByKey(key, object) {
102
+ //check own
103
+ if (object._originalModel[key])
104
+ return;
105
+
106
+ //restore defaults
107
+ Urso.objects._safeSetValueToTarget(object, key, this._tempObject[key]);
108
+
109
+ //check other styles
110
+ for (let [selector, style] of Object.entries(object._styles))
111
+ if (typeof style[key] !== 'undefined')
112
+ Urso.objects._safeSetValueToTarget(object, key, style[key]);
113
+ }
114
+ }
115
+
116
+ module.exports = ModulesObjectsStyles;
@@ -1,4 +1,4 @@
1
- Urso.Core.Modules.Observer = {
2
- Controller: require('./controller.js'),
3
- Events: require('./events.js')
4
- };
1
+ Urso.Core.Modules.Observer = {
2
+ Controller: require('./controller.js'),
3
+ Events: require('./events.js')
4
+ };