@urso/core 0.1.91 → 0.2.0-dev

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/package.json +49 -49
  5. package/src/js/app.js +76 -75
  6. package/src/js/components/_info.js +8 -8
  7. package/src/js/components/base/_info.js +3 -3
  8. package/src/js/components/base/controller.js +78 -78
  9. package/src/js/components/debug/_info.js +6 -6
  10. package/src/js/components/debug/controller.js +38 -38
  11. package/src/js/components/debug/coords.js +23 -23
  12. package/src/js/components/debug/fps.js +34 -34
  13. package/src/js/components/debug/template.js +33 -33
  14. package/src/js/components/deviceRotate/_info.js +3 -3
  15. package/src/js/components/deviceRotate/controller.js +86 -86
  16. package/src/js/components/fullscreen/_info.js +6 -6
  17. package/src/js/components/fullscreen/android.js +104 -104
  18. package/src/js/components/fullscreen/controller.js +64 -64
  19. package/src/js/components/fullscreen/desktop.js +49 -49
  20. package/src/js/components/fullscreen/ios.js +111 -111
  21. package/src/js/components/loader/_info.js +4 -4
  22. package/src/js/components/loader/controller.js +66 -66
  23. package/src/js/components/loader/template.js +70 -70
  24. package/src/js/components/soundInitialPopup/_info.js +3 -3
  25. package/src/js/components/soundInitialPopup/controller.js +42 -42
  26. package/src/js/components/soundInitialPopup/template.js +109 -109
  27. package/src/js/components/stateDriven/_info.js +4 -3
  28. package/src/js/components/stateDriven/actionConfig.js +7 -0
  29. package/src/js/components/stateDriven/controller.js +61 -52
  30. package/src/js/config/load.js +5 -5
  31. package/src/js/config/main.js +9 -8
  32. package/src/js/extra/_info.js +22 -22
  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 +513 -513
  40. package/src/js/lib/loader.js +121 -100
  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 -25
  51. package/src/js/modules/assets/controller.js +37 -21
  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 -303
  64. package/src/js/modules/instances/_info.js +3 -3
  65. package/src/js/modules/instances/controller.js +218 -218
  66. package/src/js/modules/logic/_info.js +5 -5
  67. package/src/js/modules/logic/buttons.js +120 -120
  68. package/src/js/modules/logic/config/_info.js +3 -3
  69. package/src/js/modules/logic/config/buttons.js +63 -63
  70. package/src/js/modules/logic/config/sounds.js +23 -23
  71. package/src/js/modules/logic/controller.js +48 -48
  72. package/src/js/modules/logic/sounds.js +96 -96
  73. package/src/js/modules/objects/_info.js +11 -11
  74. package/src/js/modules/objects/baseModel.js +161 -161
  75. package/src/js/modules/objects/cache.js +99 -99
  76. package/src/js/modules/objects/controller.js +115 -115
  77. package/src/js/modules/objects/create.js +231 -231
  78. package/src/js/modules/objects/find.js +140 -140
  79. package/src/js/modules/objects/models/_info.js +20 -20
  80. package/src/js/modules/objects/models/atlasImage.js +50 -50
  81. package/src/js/modules/objects/models/bitmapText.js +23 -23
  82. package/src/js/modules/objects/models/button.js +184 -184
  83. package/src/js/modules/objects/models/buttonComposite.js +35 -35
  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/dragonBones.js +250 -250
  88. package/src/js/modules/objects/models/emitter.js +54 -54
  89. package/src/js/modules/objects/models/graphics.js +38 -38
  90. package/src/js/modules/objects/models/group.js +19 -19
  91. package/src/js/modules/objects/models/hitArea.js +104 -104
  92. package/src/js/modules/objects/models/image.js +34 -34
  93. package/src/js/modules/objects/models/imagesAnimation.js +113 -113
  94. package/src/js/modules/objects/models/mask.js +38 -38
  95. package/src/js/modules/objects/models/spine.js +83 -83
  96. package/src/js/modules/objects/models/text.js +38 -38
  97. package/src/js/modules/objects/models/world.js +19 -19
  98. package/src/js/modules/objects/propertyAdapter.js +416 -416
  99. package/src/js/modules/objects/proxy.js +179 -179
  100. package/src/js/modules/objects/styles.js +116 -116
  101. package/src/js/modules/observer/_info.js +4 -4
  102. package/src/js/modules/observer/controller.js +99 -99
  103. package/src/js/modules/observer/events.js +28 -28
  104. package/src/js/modules/scenes/_info.js +8 -8
  105. package/src/js/modules/scenes/controller.js +34 -34
  106. package/src/js/modules/scenes/model.js +35 -35
  107. package/src/js/modules/scenes/pixiWrapper.js +194 -194
  108. package/src/js/modules/scenes/resolutions.js +161 -161
  109. package/src/js/modules/scenes/resolutionsConfig.js +73 -73
  110. package/src/js/modules/scenes/service.js +84 -84
  111. package/src/js/modules/soundManager/_info.js +3 -3
  112. package/src/js/modules/soundManager/controller.js +99 -99
  113. package/src/js/modules/soundManager/soundSprite.js +202 -202
  114. package/src/js/modules/statesManager/_info.js +12 -12
  115. package/src/js/modules/statesManager/action.js +55 -113
  116. package/src/js/modules/statesManager/actions/_info.js +3 -3
  117. package/src/js/modules/statesManager/all.js +23 -23
  118. package/src/js/modules/statesManager/configStates.js +71 -86
  119. package/src/js/modules/statesManager/controller.js +132 -91
  120. package/src/js/modules/statesManager/functionsStorage.js +83 -0
  121. package/src/js/modules/statesManager/helper.js +27 -37
  122. package/src/js/modules/statesManager/race.js +75 -80
  123. package/src/js/modules/statesManager/sequence.js +47 -47
  124. package/src/js/modules/template/_info.js +6 -6
  125. package/src/js/modules/template/controller.js +28 -28
  126. package/src/js/modules/template/model.js +11 -11
  127. package/src/js/modules/template/service.js +125 -122
  128. package/src/js/modules/template/types.js +41 -41
  129. package/src/js/modules/transport/_info.js +8 -8
  130. package/src/js/modules/transport/baseConnectionType.js +24 -24
  131. package/src/js/modules/transport/config.js +22 -22
  132. package/src/js/modules/transport/connectionTypes/_info.js +3 -3
  133. package/src/js/modules/transport/connectionTypes/websocket.js +74 -74
  134. package/src/js/modules/transport/connectionTypes/xhr.js +41 -41
  135. package/src/js/modules/transport/controller.js +48 -48
  136. package/src/js/modules/transport/decorator.js +16 -16
  137. package/src/js/modules/transport/service.js +138 -138
  138. package/src/js/templates/_info.js +4 -4
  139. package/src/js/templates/groups/_info.js +1 -1
  140. package/src/js/templates/scenes/_info.js +1 -1
  141. package/webpack.config.js +47 -47
  142. package/src/js/modules/statesManager/actionModel.js +0 -48
  143. package/src/js/modules/statesManager/configActions.js +0 -54
@@ -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
+ };