@urso/core 0.2.4-dev → 0.2.8

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 (147) 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 +31 -31
  5. package/package.json +52 -52
  6. package/src/js/app.js +77 -76
  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 +6 -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 +33 -33
  15. package/src/js/components/deviceRotate/_info.js +3 -3
  16. package/src/js/components/deviceRotate/controller.js +86 -86
  17. package/src/js/components/fullscreen/_info.js +6 -6
  18. package/src/js/components/fullscreen/android.js +104 -104
  19. package/src/js/components/fullscreen/controller.js +64 -64
  20. package/src/js/components/fullscreen/desktop.js +49 -49
  21. package/src/js/components/fullscreen/ios.js +111 -111
  22. package/src/js/components/loader/_info.js +4 -4
  23. package/src/js/components/loader/controller.js +66 -66
  24. package/src/js/components/loader/template.js +70 -70
  25. package/src/js/components/soundInitialPopup/_info.js +3 -3
  26. package/src/js/components/soundInitialPopup/controller.js +42 -42
  27. package/src/js/components/soundInitialPopup/template.js +109 -109
  28. package/src/js/components/stateDriven/_info.js +3 -4
  29. package/src/js/components/stateDriven/controller.js +96 -96
  30. package/src/js/config/load.js +5 -5
  31. package/src/js/config/main.js +10 -9
  32. package/src/js/extra/_info.js +23 -23
  33. package/src/js/extra/browserEvents.js +32 -32
  34. package/src/js/index.js +8 -8
  35. package/src/js/lib/_info.js +13 -13
  36. package/src/js/lib/cache.js +98 -98
  37. package/src/js/lib/composition.js +89 -89
  38. package/src/js/lib/device.js +1276 -1276
  39. package/src/js/lib/helper.js +539 -524
  40. package/src/js/lib/loader.js +121 -121
  41. package/src/js/lib/localData.js +15 -15
  42. package/src/js/lib/logger.js +22 -22
  43. package/src/js/lib/math.js +20 -20
  44. package/src/js/lib/objectPool.js +54 -54
  45. package/src/js/lib/time.js +18 -18
  46. package/src/js/lib/tween.js +147 -147
  47. package/src/js/modules/_info.js +11 -11
  48. package/src/js/modules/assets/_info.js +7 -7
  49. package/src/js/modules/assets/baseModel.js +18 -18
  50. package/src/js/modules/assets/config.js +35 -35
  51. package/src/js/modules/assets/controller.js +39 -37
  52. package/src/js/modules/assets/models/_info.js +12 -12
  53. package/src/js/modules/assets/models/atlas.js +8 -8
  54. package/src/js/modules/assets/models/audiosprite.js +27 -27
  55. package/src/js/modules/assets/models/bitmapFont.js +8 -8
  56. package/src/js/modules/assets/models/container.js +16 -16
  57. package/src/js/modules/assets/models/dragonBones.js +26 -26
  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 +330 -330
  64. package/src/js/modules/instances/_info.js +3 -3
  65. package/src/js/modules/instances/controller.js +219 -218
  66. package/src/js/modules/logic/_info.js +4 -5
  67. package/src/js/modules/logic/config/_info.js +2 -3
  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 -115
  75. package/src/js/modules/objects/create.js +233 -246
  76. package/src/js/modules/objects/find.js +140 -140
  77. package/src/js/modules/objects/models/_info.js +25 -25
  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 +95 -96
  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/dragonBones.js +250 -250
  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 +199 -154
  96. package/src/js/modules/objects/models/spine.js +83 -83
  97. package/src/js/modules/objects/models/text.js +38 -38
  98. package/src/js/modules/objects/models/textInput.js +55 -55
  99. package/src/js/modules/objects/models/toggle.js +169 -169
  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 +179 -179
  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 +33 -32
  107. package/src/js/modules/scenes/_info.js +8 -8
  108. package/src/js/modules/scenes/controller.js +34 -34
  109. package/src/js/modules/scenes/model.js +35 -35
  110. package/src/js/modules/scenes/pixiWrapper.js +194 -194
  111. package/src/js/modules/scenes/resolutions.js +168 -161
  112. package/src/js/modules/scenes/resolutionsConfig.js +73 -73
  113. package/src/js/modules/scenes/service.js +84 -84
  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 +55 -55
  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 +131 -132
  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 +125 -125
  131. package/src/js/modules/template/types.js +46 -46
  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 +22 -22
  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 +41 -41
  138. package/src/js/modules/transport/controller.js +48 -48
  139. package/src/js/modules/transport/decorator.js +16 -16
  140. package/src/js/modules/transport/service.js +140 -138
  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
  145. package/src/js/components/stateDriven/actionConfig.js +0 -7
  146. package/src/js/modules/logic/buttons.js +0 -120
  147. package/src/js/modules/logic/config/buttons.js +0 -63
@@ -1,179 +1,179 @@
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];
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,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
+ };