@base-framework/base 2.6.0 → 2.6.1

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 (190) hide show
  1. package/base.min.js +1 -0
  2. package/es5/base.js +2968 -0
  3. package/es5/modules/ajax.js +663 -0
  4. package/es5/modules/animation.js +188 -0
  5. package/es5/modules/animations.js +1080 -0
  6. package/es5/modules/atom.js +65 -0
  7. package/es5/modules/component.js +1310 -0
  8. package/es5/modules/data-binder.js +1131 -0
  9. package/es5/modules/data.js +1808 -0
  10. package/es5/modules/date.js +525 -0
  11. package/es5/modules/form-validator.js +324 -0
  12. package/es5/modules/history.js +126 -0
  13. package/es5/modules/html-builder.js +461 -0
  14. package/es5/modules/layout.js +1679 -0
  15. package/es5/modules/mouse.js +124 -0
  16. package/es5/modules/nav-link.js +123 -0
  17. package/es5/modules/olderversions/animations-ease.js +1095 -0
  18. package/es5/modules/olderversions/animations-update.js +1048 -0
  19. package/es5/modules/olderversions/base-animations.js +636 -0
  20. package/es5/modules/olderversions/base-component-class.js +100 -0
  21. package/es5/modules/olderversions/base-data-binder-1.js +407 -0
  22. package/es5/modules/olderversions/base-data-binder-class.js +358 -0
  23. package/es5/modules/olderversions/base-layout-parser-class.js +172 -0
  24. package/es5/modules/olderversions/base-mode-1.js +777 -0
  25. package/es5/modules/olderversions/base-model-class.js +585 -0
  26. package/es5/modules/olderversions/data-binder/element-binding/base-data-binder-class.js +358 -0
  27. package/es5/modules/olderversions/data-binder/element-binding/base-model-class.js +585 -0
  28. package/es5/modules/olderversions/data-binder/model-binding/base-data-binder-class.js +353 -0
  29. package/es5/modules/olderversions/data-binder/model-binding/base-model-class.js +604 -0
  30. package/es5/modules/olderversions/data-binder-update-watcher.js +640 -0
  31. package/es5/modules/olderversions/data-tracker.js +187 -0
  32. package/es5/modules/olderversions/event-update.js +666 -0
  33. package/es5/modules/olderversions/nav-link.js +119 -0
  34. package/es5/modules/olderversions/router-with-templates-1.js +785 -0
  35. package/es5/modules/olderversions/router-with-templates.js +701 -0
  36. package/es5/modules/prototypes/ajax.js +657 -0
  37. package/es5/modules/prototypes/atom.js +65 -0
  38. package/es5/modules/prototypes/component.js +972 -0
  39. package/es5/modules/prototypes/data-binder.js +1089 -0
  40. package/es5/modules/prototypes/data.js +1290 -0
  41. package/es5/modules/prototypes/html-builder.js +414 -0
  42. package/es5/modules/prototypes/layout.js +879 -0
  43. package/es5/modules/router.js +1680 -0
  44. package/es5/modules/state.js +274 -0
  45. package/es6/.jshintrc +3 -0
  46. package/es6/base.js +41 -0
  47. package/es6/core.js +1 -0
  48. package/es6/data-tracker.js +351 -0
  49. package/es6/events.js +602 -0
  50. package/es6/legacy/es5/base.js +2968 -0
  51. package/es6/legacy/es5/modules/ajax.js +663 -0
  52. package/es6/legacy/es5/modules/animation.js +188 -0
  53. package/es6/legacy/es5/modules/animations.js +1080 -0
  54. package/es6/legacy/es5/modules/atom.js +65 -0
  55. package/es6/legacy/es5/modules/component.js +1310 -0
  56. package/es6/legacy/es5/modules/data-binder.js +1131 -0
  57. package/es6/legacy/es5/modules/data.js +1808 -0
  58. package/es6/legacy/es5/modules/date.js +525 -0
  59. package/es6/legacy/es5/modules/form-validator.js +324 -0
  60. package/es6/legacy/es5/modules/history.js +126 -0
  61. package/es6/legacy/es5/modules/html-builder.js +461 -0
  62. package/es6/legacy/es5/modules/layout.js +1679 -0
  63. package/es6/legacy/es5/modules/mouse.js +124 -0
  64. package/es6/legacy/es5/modules/nav-link.js +123 -0
  65. package/es6/legacy/es5/modules/olderversions/animations-ease.js +1095 -0
  66. package/es6/legacy/es5/modules/olderversions/animations-update.js +1048 -0
  67. package/es6/legacy/es5/modules/olderversions/base-animations.js +636 -0
  68. package/es6/legacy/es5/modules/olderversions/base-component-class.js +100 -0
  69. package/es6/legacy/es5/modules/olderversions/base-data-binder-1.js +407 -0
  70. package/es6/legacy/es5/modules/olderversions/base-data-binder-class.js +358 -0
  71. package/es6/legacy/es5/modules/olderversions/base-layout-parser-class.js +172 -0
  72. package/es6/legacy/es5/modules/olderversions/base-mode-1.js +777 -0
  73. package/es6/legacy/es5/modules/olderversions/base-model-class.js +585 -0
  74. package/es6/legacy/es5/modules/olderversions/data-binder/element-binding/base-data-binder-class.js +358 -0
  75. package/es6/legacy/es5/modules/olderversions/data-binder/element-binding/base-model-class.js +585 -0
  76. package/es6/legacy/es5/modules/olderversions/data-binder/model-binding/base-data-binder-class.js +353 -0
  77. package/es6/legacy/es5/modules/olderversions/data-binder/model-binding/base-model-class.js +604 -0
  78. package/es6/legacy/es5/modules/olderversions/data-binder-update-watcher.js +640 -0
  79. package/es6/legacy/es5/modules/olderversions/data-tracker.js +187 -0
  80. package/es6/legacy/es5/modules/olderversions/event-update.js +666 -0
  81. package/es6/legacy/es5/modules/olderversions/nav-link.js +119 -0
  82. package/es6/legacy/es5/modules/olderversions/router-with-templates-1.js +785 -0
  83. package/es6/legacy/es5/modules/olderversions/router-with-templates.js +701 -0
  84. package/es6/legacy/es5/modules/prototypes/ajax.js +657 -0
  85. package/es6/legacy/es5/modules/prototypes/atom.js +65 -0
  86. package/es6/legacy/es5/modules/prototypes/component.js +972 -0
  87. package/es6/legacy/es5/modules/prototypes/data-binder.js +1089 -0
  88. package/es6/legacy/es5/modules/prototypes/data.js +1290 -0
  89. package/es6/legacy/es5/modules/prototypes/html-builder.js +414 -0
  90. package/es6/legacy/es5/modules/prototypes/layout.js +879 -0
  91. package/es6/legacy/es5/modules/router.js +1680 -0
  92. package/es6/legacy/es5/modules/state.js +274 -0
  93. package/es6/main.js +1331 -0
  94. package/es6/modules/ajax/ajax.js +514 -0
  95. package/es6/modules/animation/animation.js +236 -0
  96. package/es6/modules/animations/animation-controller.js +231 -0
  97. package/es6/modules/animations/animation.js +64 -0
  98. package/es6/modules/animations/attr-movement.js +66 -0
  99. package/es6/modules/animations/css-movement.js +170 -0
  100. package/es6/modules/animations/movement.js +131 -0
  101. package/es6/modules/animations/value.js +187 -0
  102. package/es6/modules/atom/atom.js +54 -0
  103. package/es6/modules/component/component.js +230 -0
  104. package/es6/modules/component/event-helper.js +119 -0
  105. package/es6/modules/component/jot.js +144 -0
  106. package/es6/modules/component/state-helper.js +262 -0
  107. package/es6/modules/component/unit.js +551 -0
  108. package/es6/modules/data/attrs.js +40 -0
  109. package/es6/modules/data/basic-data.js +500 -0
  110. package/es6/modules/data/data-utils.js +29 -0
  111. package/es6/modules/data/data.js +3 -0
  112. package/es6/modules/data/deep-data.js +541 -0
  113. package/es6/modules/data/model-service.js +528 -0
  114. package/es6/modules/data/model.js +133 -0
  115. package/es6/modules/data/simple-data.js +33 -0
  116. package/es6/modules/data-binder/connection-tracker.js +113 -0
  117. package/es6/modules/data-binder/connection.js +16 -0
  118. package/es6/modules/data-binder/data-binder.js +352 -0
  119. package/es6/modules/data-binder/data-pub-sub.js +141 -0
  120. package/es6/modules/data-binder/data-source.js +56 -0
  121. package/es6/modules/data-binder/element-source.js +219 -0
  122. package/es6/modules/data-binder/one-way-connection.js +46 -0
  123. package/es6/modules/data-binder/one-way-source.js +43 -0
  124. package/es6/modules/data-binder/source.js +36 -0
  125. package/es6/modules/data-binder/two-way-connection.js +75 -0
  126. package/es6/modules/data-binder/two-way-source.js +41 -0
  127. package/es6/modules/date/date.js +544 -0
  128. package/es6/modules/history/history.js +89 -0
  129. package/es6/modules/html-builder/html-builder.js +434 -0
  130. package/es6/modules/import/import.js +390 -0
  131. package/es6/modules/layout/layout-builder.js +1269 -0
  132. package/es6/modules/layout/layout-parser.js +134 -0
  133. package/es6/modules/layout/watcher-helper.js +282 -0
  134. package/es6/modules/mouse/mouse.js +114 -0
  135. package/es6/modules/router/component-helper.js +163 -0
  136. package/es6/modules/router/history-controller.js +216 -0
  137. package/es6/modules/router/nav-link.js +124 -0
  138. package/es6/modules/router/route.js +401 -0
  139. package/es6/modules/router/router.js +789 -0
  140. package/es6/modules/router/utils.js +31 -0
  141. package/es6/modules/state/state-target.js +91 -0
  142. package/es6/modules/state/state.js +171 -0
  143. package/es6/package-lock.json +13 -0
  144. package/es6/package.json +28 -0
  145. package/es6/shared/objects.js +99 -0
  146. package/legacy/es5/base.js +2968 -0
  147. package/legacy/es5/modules/ajax.js +663 -0
  148. package/legacy/es5/modules/animation.js +188 -0
  149. package/legacy/es5/modules/animations.js +1080 -0
  150. package/legacy/es5/modules/atom.js +65 -0
  151. package/legacy/es5/modules/component.js +1310 -0
  152. package/legacy/es5/modules/data-binder.js +1131 -0
  153. package/legacy/es5/modules/data.js +1808 -0
  154. package/legacy/es5/modules/date.js +525 -0
  155. package/legacy/es5/modules/form-validator.js +324 -0
  156. package/legacy/es5/modules/history.js +126 -0
  157. package/legacy/es5/modules/html-builder.js +461 -0
  158. package/legacy/es5/modules/layout.js +1679 -0
  159. package/legacy/es5/modules/mouse.js +124 -0
  160. package/legacy/es5/modules/nav-link.js +123 -0
  161. package/legacy/es5/modules/olderversions/animations-ease.js +1095 -0
  162. package/legacy/es5/modules/olderversions/animations-update.js +1048 -0
  163. package/legacy/es5/modules/olderversions/base-animations.js +636 -0
  164. package/legacy/es5/modules/olderversions/base-component-class.js +100 -0
  165. package/legacy/es5/modules/olderversions/base-data-binder-1.js +407 -0
  166. package/legacy/es5/modules/olderversions/base-data-binder-class.js +358 -0
  167. package/legacy/es5/modules/olderversions/base-layout-parser-class.js +172 -0
  168. package/legacy/es5/modules/olderversions/base-mode-1.js +777 -0
  169. package/legacy/es5/modules/olderversions/base-model-class.js +585 -0
  170. package/legacy/es5/modules/olderversions/data-binder/element-binding/base-data-binder-class.js +358 -0
  171. package/legacy/es5/modules/olderversions/data-binder/element-binding/base-model-class.js +585 -0
  172. package/legacy/es5/modules/olderversions/data-binder/model-binding/base-data-binder-class.js +353 -0
  173. package/legacy/es5/modules/olderversions/data-binder/model-binding/base-model-class.js +604 -0
  174. package/legacy/es5/modules/olderversions/data-binder-update-watcher.js +640 -0
  175. package/legacy/es5/modules/olderversions/data-tracker.js +187 -0
  176. package/legacy/es5/modules/olderversions/event-update.js +666 -0
  177. package/legacy/es5/modules/olderversions/nav-link.js +119 -0
  178. package/legacy/es5/modules/olderversions/router-with-templates-1.js +785 -0
  179. package/legacy/es5/modules/olderversions/router-with-templates.js +701 -0
  180. package/legacy/es5/modules/prototypes/ajax.js +657 -0
  181. package/legacy/es5/modules/prototypes/atom.js +65 -0
  182. package/legacy/es5/modules/prototypes/component.js +972 -0
  183. package/legacy/es5/modules/prototypes/data-binder.js +1089 -0
  184. package/legacy/es5/modules/prototypes/data.js +1290 -0
  185. package/legacy/es5/modules/prototypes/html-builder.js +414 -0
  186. package/legacy/es5/modules/prototypes/layout.js +879 -0
  187. package/legacy/es5/modules/router.js +1680 -0
  188. package/legacy/es5/modules/state.js +274 -0
  189. package/package.json +8 -3
  190. package/update +16 -0
@@ -0,0 +1,262 @@
1
+ import {state} from '../state/state.js';
2
+
3
+ /**
4
+ * StateHelper
5
+ *
6
+ * This is a helper to manage component states.
7
+ */
8
+ export class StateHelper
9
+ {
10
+ /**
11
+ * @constructor
12
+ * @param {object} state
13
+ * @param {object} states
14
+ */
15
+ constructor(state, states)
16
+ {
17
+ this.remoteStates = [];
18
+
19
+ let actions = this.convertStates(states);
20
+ this.addStatesToTarget(state, actions);
21
+ }
22
+
23
+ /**
24
+ * This will add states to a state.
25
+ *
26
+ * @param {object} state
27
+ * @param {object} states
28
+ */
29
+ addStates(state, states)
30
+ {
31
+ let actions = this.convertStates(states);
32
+ this.addStatesToTarget(state, actions);
33
+ }
34
+
35
+ /**
36
+ * This will create a state object.
37
+ *
38
+ * @param {string} action
39
+ * @param {*} state
40
+ * @param {function} callBack
41
+ * @param {string} [targetId]
42
+ * @return {object}
43
+ */
44
+ createState(action, state, callBack, targetId)
45
+ {
46
+ return {
47
+ action,
48
+ state,
49
+ callBack,
50
+ targetId,
51
+ token: null
52
+ };
53
+ }
54
+
55
+ /**
56
+ * This will convert an action object to a state array.
57
+ *
58
+ * @protected
59
+ * @param {object} action
60
+ * @return {array}
61
+ */
62
+ convertStates(action)
63
+ {
64
+ let actions = [];
65
+ for(var prop in action)
66
+ {
67
+ if(action.hasOwnProperty(prop) === false)
68
+ {
69
+ continue;
70
+ }
71
+ else if(prop === 'remotes')
72
+ {
73
+ this.setupRemoteStates(action[prop], actions);
74
+ continue;
75
+ }
76
+
77
+ var targetId = null,
78
+ callBack = null,
79
+ state = action[prop];
80
+ if(state && typeof state === 'object')
81
+ {
82
+ callBack = state.callBack;
83
+ targetId = state.id || state.targetId;
84
+ state = state.state;
85
+ }
86
+
87
+ actions.push(this.createState(
88
+ prop,
89
+ state,
90
+ callBack,
91
+ targetId
92
+ ));
93
+ }
94
+ return actions;
95
+ }
96
+
97
+ setupRemoteStates(remotes, actions)
98
+ {
99
+ let remote;
100
+ for(var i = 0, length = remotes.length; i < length; i++)
101
+ {
102
+ remote = remotes[i];
103
+ if(!remote)
104
+ {
105
+ continue;
106
+ }
107
+
108
+ for(var prop in remote)
109
+ {
110
+ if(remote.hasOwnProperty(prop) === false || prop === 'id')
111
+ {
112
+ continue;
113
+ }
114
+
115
+ var callBack = null,
116
+ value = remote[prop],
117
+ state = (value !== null)? value : undefined;
118
+ if(state && typeof state === 'object')
119
+ {
120
+ callBack = state.callBack;
121
+ state = state.state;
122
+ }
123
+
124
+ actions.push(this.createState(
125
+ prop,
126
+ state,
127
+ callBack,
128
+ remote.id
129
+ ));
130
+ }
131
+ }
132
+ }
133
+
134
+ /**
135
+ * This will remove remote states.
136
+ */
137
+ removeRemoteStates()
138
+ {
139
+ let remoteStates = this.remoteStates;
140
+ if(remoteStates)
141
+ {
142
+ this.removeActions(remoteStates);
143
+ }
144
+ }
145
+
146
+ /**
147
+ * This will remove the actions.
148
+ *
149
+ * @param {array} actions
150
+ */
151
+ removeActions(actions)
152
+ {
153
+ if(actions.length < 1)
154
+ {
155
+ return;
156
+ }
157
+
158
+ for(var i = 0, length = actions.length; i < length; i++)
159
+ {
160
+ var action = actions[i];
161
+ state.remove(action.targetId, action.action, action.token);
162
+ }
163
+ }
164
+
165
+ /**
166
+ * This will restore a state.
167
+ *
168
+ * @param {object} state
169
+ */
170
+ restore(state)
171
+ {
172
+ state.restore();
173
+
174
+ let remotes = this.remoteStates;
175
+ if(!remotes)
176
+ {
177
+ return;
178
+ }
179
+
180
+ for(var i = 0, length = remotes.length; i < length; i++)
181
+ {
182
+ var action = remotes[i];
183
+ action.token = this.bindRemoteState(state, action.action, action.targetId);
184
+ }
185
+ }
186
+
187
+ /**
188
+ * This will setup a two way bind to a remote state.
189
+ *
190
+ * @param {object} target
191
+ * @param {string} actionEvent
192
+ * @param {string} remoteTargetId
193
+ * @return {string}
194
+ */
195
+ bindRemoteState(target, actionEvent, remoteTargetId)
196
+ {
197
+ const remoteTarget = state.getTarget(remoteTargetId);
198
+
199
+ return target.link(remoteTarget, actionEvent);
200
+ }
201
+
202
+ /**
203
+ * This will add the states to the target.
204
+ *
205
+ * @protected
206
+ * @param {object} state
207
+ * @param {array} actions
208
+ */
209
+ addStatesToTarget(state, actions)
210
+ {
211
+ let remotes = this.remoteStates;
212
+
213
+ for(var i = 0, length = actions.length; i < length; i++)
214
+ {
215
+ var action = actions[i],
216
+ token = this.addAction(state, action);
217
+
218
+ if(action.targetId)
219
+ {
220
+ action.token = token;
221
+ remotes.push(action);
222
+ }
223
+ }
224
+
225
+ if(remotes.length < 1)
226
+ {
227
+ this.remoteStates = null;
228
+ }
229
+ }
230
+
231
+ /**
232
+ * This will add an action.
233
+ *
234
+ * @param {object} target
235
+ * @param {object} action
236
+ */
237
+ addAction(target, action)
238
+ {
239
+ let token,
240
+ actionEvent = action.action;
241
+
242
+ /* this will check to select the remote target if set */
243
+ let targetId = action.targetId;
244
+ if(targetId)
245
+ {
246
+ token = this.bindRemoteState(target, actionEvent, targetId);
247
+ }
248
+
249
+ if(typeof action.state !== 'undefined')
250
+ {
251
+ target.addAction(actionEvent, action.state);
252
+ }
253
+
254
+ let callBack = action.callBack;
255
+ if(typeof callBack === 'function')
256
+ {
257
+ target.on(actionEvent, callBack);
258
+ }
259
+
260
+ return token;
261
+ }
262
+ }