@urso/core 0.2.6 → 0.2.7

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 (146) 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 +76 -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 -3
  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 +9 -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 +524 -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 +37 -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 +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 +246 -246
  78. package/src/js/modules/objects/find.js +140 -140
  79. package/src/js/modules/objects/models/_info.js +25 -25
  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/checkbox.js +95 -96
  85. package/src/js/modules/objects/models/collection.js +54 -54
  86. package/src/js/modules/objects/models/component.js +44 -44
  87. package/src/js/modules/objects/models/container.js +19 -19
  88. package/src/js/modules/objects/models/dragonBones.js +250 -250
  89. package/src/js/modules/objects/models/emitter.js +54 -54
  90. package/src/js/modules/objects/models/graphics.js +38 -38
  91. package/src/js/modules/objects/models/group.js +19 -19
  92. package/src/js/modules/objects/models/hitArea.js +104 -104
  93. package/src/js/modules/objects/models/image.js +34 -34
  94. package/src/js/modules/objects/models/imagesAnimation.js +113 -113
  95. package/src/js/modules/objects/models/mask.js +38 -38
  96. package/src/js/modules/objects/models/scrollbox.js +61 -61
  97. package/src/js/modules/objects/models/slider.js +199 -154
  98. package/src/js/modules/objects/models/spine.js +83 -83
  99. package/src/js/modules/objects/models/text.js +38 -38
  100. package/src/js/modules/objects/models/textInput.js +55 -55
  101. package/src/js/modules/objects/models/toggle.js +169 -169
  102. package/src/js/modules/objects/models/world.js +19 -19
  103. package/src/js/modules/objects/propertyAdapter.js +421 -421
  104. package/src/js/modules/objects/proxy.js +179 -179
  105. package/src/js/modules/objects/styles.js +116 -116
  106. package/src/js/modules/observer/_info.js +4 -4
  107. package/src/js/modules/observer/controller.js +99 -99
  108. package/src/js/modules/observer/events.js +32 -32
  109. package/src/js/modules/scenes/_info.js +8 -8
  110. package/src/js/modules/scenes/controller.js +34 -34
  111. package/src/js/modules/scenes/model.js +35 -35
  112. package/src/js/modules/scenes/pixiWrapper.js +194 -194
  113. package/src/js/modules/scenes/resolutions.js +161 -161
  114. package/src/js/modules/scenes/resolutionsConfig.js +73 -73
  115. package/src/js/modules/scenes/service.js +84 -84
  116. package/src/js/modules/soundManager/_info.js +3 -3
  117. package/src/js/modules/soundManager/controller.js +99 -99
  118. package/src/js/modules/soundManager/soundSprite.js +202 -202
  119. package/src/js/modules/statesManager/_info.js +12 -12
  120. package/src/js/modules/statesManager/action.js +55 -55
  121. package/src/js/modules/statesManager/actions/_info.js +3 -3
  122. package/src/js/modules/statesManager/all.js +23 -23
  123. package/src/js/modules/statesManager/configStates.js +71 -71
  124. package/src/js/modules/statesManager/controller.js +132 -132
  125. package/src/js/modules/statesManager/functionsStorage.js +82 -82
  126. package/src/js/modules/statesManager/helper.js +27 -27
  127. package/src/js/modules/statesManager/race.js +75 -75
  128. package/src/js/modules/statesManager/sequence.js +47 -47
  129. package/src/js/modules/template/_info.js +6 -6
  130. package/src/js/modules/template/controller.js +28 -28
  131. package/src/js/modules/template/model.js +11 -11
  132. package/src/js/modules/template/service.js +125 -125
  133. package/src/js/modules/template/types.js +46 -46
  134. package/src/js/modules/transport/_info.js +8 -8
  135. package/src/js/modules/transport/baseConnectionType.js +24 -24
  136. package/src/js/modules/transport/config.js +22 -22
  137. package/src/js/modules/transport/connectionTypes/_info.js +3 -3
  138. package/src/js/modules/transport/connectionTypes/websocket.js +74 -74
  139. package/src/js/modules/transport/connectionTypes/xhr.js +41 -41
  140. package/src/js/modules/transport/controller.js +48 -48
  141. package/src/js/modules/transport/decorator.js +16 -16
  142. package/src/js/modules/transport/service.js +138 -138
  143. package/src/js/templates/_info.js +4 -4
  144. package/src/js/templates/groups/_info.js +1 -1
  145. package/src/js/templates/scenes/_info.js +1 -1
  146. package/webpack.config.js +47 -47
@@ -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
+ };