@urso/core 0.3.9 → 0.4.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.
Files changed (144) 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 -7
  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 -55
  15. package/src/js/components/debug/timescale.js +60 -60
  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 +118 -118
  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 +22 -22
  34. package/src/js/extra/browserEvents.js +38 -38
  35. package/src/js/extra/setTimeout.js +7 -7
  36. package/src/js/index.js +8 -8
  37. package/src/js/lib/_info.js +13 -13
  38. package/src/js/lib/cache.js +105 -105
  39. package/src/js/lib/composition.js +85 -89
  40. package/src/js/lib/device.js +1286 -1276
  41. package/src/js/lib/helper.js +539 -539
  42. package/src/js/lib/loader.js +127 -127
  43. package/src/js/lib/localData.js +15 -15
  44. package/src/js/lib/logger.js +22 -22
  45. package/src/js/lib/math.js +35 -35
  46. package/src/js/lib/objectPool.js +54 -54
  47. package/src/js/lib/time.js +18 -18
  48. package/src/js/lib/tween.js +147 -147
  49. package/src/js/modules/_info.js +11 -11
  50. package/src/js/modules/assets/_info.js +7 -7
  51. package/src/js/modules/assets/baseModel.js +18 -18
  52. package/src/js/modules/assets/config.js +37 -35
  53. package/src/js/modules/assets/controller.js +46 -39
  54. package/src/js/modules/assets/models/_info.js +11 -11
  55. package/src/js/modules/assets/models/atlas.js +8 -8
  56. package/src/js/modules/assets/models/audiosprite.js +27 -27
  57. package/src/js/modules/assets/models/bitmapFont.js +8 -8
  58. package/src/js/modules/assets/models/container.js +16 -16
  59. package/src/js/modules/assets/models/font.js +8 -8
  60. package/src/js/modules/assets/models/image.js +13 -13
  61. package/src/js/modules/assets/models/json.js +8 -8
  62. package/src/js/modules/assets/models/sound.js +14 -14
  63. package/src/js/modules/assets/models/spine.js +14 -14
  64. package/src/js/modules/assets/service.js +356 -353
  65. package/src/js/modules/instances/_info.js +3 -3
  66. package/src/js/modules/instances/controller.js +251 -219
  67. package/src/js/modules/logic/_info.js +4 -4
  68. package/src/js/modules/logic/config/_info.js +2 -2
  69. package/src/js/modules/logic/config/sounds.js +23 -23
  70. package/src/js/modules/logic/controller.js +48 -48
  71. package/src/js/modules/logic/sounds.js +96 -96
  72. package/src/js/modules/objects/_info.js +11 -11
  73. package/src/js/modules/objects/baseModel.js +171 -161
  74. package/src/js/modules/objects/cache.js +99 -99
  75. package/src/js/modules/objects/controller.js +131 -121
  76. package/src/js/modules/objects/create.js +234 -230
  77. package/src/js/modules/objects/find.js +140 -140
  78. package/src/js/modules/objects/models/_info.js +24 -24
  79. package/src/js/modules/objects/models/atlasImage.js +50 -50
  80. package/src/js/modules/objects/models/bitmapText.js +23 -23
  81. package/src/js/modules/objects/models/button.js +184 -184
  82. package/src/js/modules/objects/models/buttonComposite.js +35 -35
  83. package/src/js/modules/objects/models/checkbox.js +96 -96
  84. package/src/js/modules/objects/models/collection.js +54 -54
  85. package/src/js/modules/objects/models/component.js +44 -44
  86. package/src/js/modules/objects/models/container.js +19 -19
  87. package/src/js/modules/objects/models/emitter.js +54 -54
  88. package/src/js/modules/objects/models/graphics.js +38 -38
  89. package/src/js/modules/objects/models/group.js +19 -19
  90. package/src/js/modules/objects/models/hitArea.js +104 -104
  91. package/src/js/modules/objects/models/image.js +34 -34
  92. package/src/js/modules/objects/models/imagesAnimation.js +113 -113
  93. package/src/js/modules/objects/models/mask.js +38 -38
  94. package/src/js/modules/objects/models/scrollbox.js +61 -61
  95. package/src/js/modules/objects/models/slider.js +223 -223
  96. package/src/js/modules/objects/models/spine.js +89 -89
  97. package/src/js/modules/objects/models/text.js +38 -38
  98. package/src/js/modules/objects/models/textInput.js +66 -66
  99. package/src/js/modules/objects/models/toggle.js +178 -178
  100. package/src/js/modules/objects/models/world.js +19 -19
  101. package/src/js/modules/objects/propertyAdapter.js +421 -421
  102. package/src/js/modules/objects/proxy.js +182 -182
  103. package/src/js/modules/objects/styles.js +116 -116
  104. package/src/js/modules/observer/_info.js +4 -4
  105. package/src/js/modules/observer/controller.js +99 -99
  106. package/src/js/modules/observer/events.js +38 -38
  107. package/src/js/modules/scenes/_info.js +8 -8
  108. package/src/js/modules/scenes/controller.js +46 -42
  109. package/src/js/modules/scenes/model.js +35 -35
  110. package/src/js/modules/scenes/pixiWrapper.js +202 -202
  111. package/src/js/modules/scenes/resolutions.js +172 -176
  112. package/src/js/modules/scenes/resolutionsConfig.js +73 -73
  113. package/src/js/modules/scenes/service.js +105 -92
  114. package/src/js/modules/soundManager/_info.js +3 -3
  115. package/src/js/modules/soundManager/controller.js +99 -99
  116. package/src/js/modules/soundManager/soundSprite.js +202 -202
  117. package/src/js/modules/statesManager/_info.js +12 -12
  118. package/src/js/modules/statesManager/action.js +60 -60
  119. package/src/js/modules/statesManager/actions/_info.js +3 -3
  120. package/src/js/modules/statesManager/all.js +23 -23
  121. package/src/js/modules/statesManager/configStates.js +71 -71
  122. package/src/js/modules/statesManager/controller.js +170 -170
  123. package/src/js/modules/statesManager/functionsStorage.js +82 -82
  124. package/src/js/modules/statesManager/helper.js +27 -27
  125. package/src/js/modules/statesManager/race.js +75 -75
  126. package/src/js/modules/statesManager/sequence.js +47 -47
  127. package/src/js/modules/template/_info.js +6 -6
  128. package/src/js/modules/template/controller.js +28 -28
  129. package/src/js/modules/template/model.js +11 -11
  130. package/src/js/modules/template/service.js +137 -125
  131. package/src/js/modules/template/types.js +44 -44
  132. package/src/js/modules/transport/_info.js +8 -8
  133. package/src/js/modules/transport/baseConnectionType.js +24 -24
  134. package/src/js/modules/transport/config.js +13 -13
  135. package/src/js/modules/transport/connectionTypes/_info.js +3 -3
  136. package/src/js/modules/transport/connectionTypes/websocket.js +74 -74
  137. package/src/js/modules/transport/connectionTypes/xhr.js +44 -44
  138. package/src/js/modules/transport/controller.js +48 -48
  139. package/src/js/modules/transport/decorator.js +17 -17
  140. package/src/js/modules/transport/service.js +153 -153
  141. package/src/js/templates/_info.js +4 -4
  142. package/src/js/templates/groups/_info.js +1 -1
  143. package/src/js/templates/scenes/_info.js +1 -1
  144. package/webpack.config.js +47 -47
@@ -1,182 +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]; // 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
+ 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
+ };