@subiz/widget-v4 4.0.91 → 4.0.93

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 (194) hide show
  1. package/compiled_src/bot.js +0 -11
  2. package/compiled_src/call/call.js +0 -61
  3. package/compiled_src/call/css.js +0 -2
  4. package/compiled_src/chatbox/AgentsAvatar.js +0 -16
  5. package/compiled_src/chatbox/AudioAttachments.js +0 -14
  6. package/compiled_src/chatbox/ButtonAttachments.js +1 -14
  7. package/compiled_src/chatbox/Buttons.js +0 -13
  8. package/compiled_src/chatbox/ChatButton.js +1 -78
  9. package/compiled_src/chatbox/DropdownSelect.js +3 -44
  10. package/compiled_src/chatbox/Emoji.js +0 -7
  11. package/compiled_src/chatbox/Event.js +0 -59
  12. package/compiled_src/chatbox/Events.js +4 -44
  13. package/compiled_src/chatbox/FileAttachments.js +0 -14
  14. package/compiled_src/chatbox/FormAttachment.js +1 -52
  15. package/compiled_src/chatbox/FormAttachments.js +0 -14
  16. package/compiled_src/chatbox/FormSubmitAttachments.js +0 -11
  17. package/compiled_src/chatbox/GenericTemplateAttachments.js +1 -20
  18. package/compiled_src/chatbox/Header.js +1 -46
  19. package/compiled_src/chatbox/ImageAttachments.js +0 -16
  20. package/compiled_src/chatbox/InfoMessage.js +0 -13
  21. package/compiled_src/chatbox/ListField.js +0 -16
  22. package/compiled_src/chatbox/MessageInput.js +1 -47
  23. package/compiled_src/chatbox/Order.js +0 -35
  24. package/compiled_src/chatbox/OrderAttachments.js +1 -23
  25. package/compiled_src/chatbox/PoweredBy.js +0 -7
  26. package/compiled_src/chatbox/ProductAttachments.js +0 -19
  27. package/compiled_src/chatbox/QuickReplies.js +0 -18
  28. package/compiled_src/chatbox/Rating.js +0 -37
  29. package/compiled_src/chatbox/ShadowDomRoot.js +0 -9
  30. package/compiled_src/chatbox/TextMessage.js +0 -64
  31. package/compiled_src/chatbox/Typing.js +0 -15
  32. package/compiled_src/chatbox/VideoAttachments.js +0 -14
  33. package/compiled_src/chatbox/Widget.js +6 -167
  34. package/compiled_src/chatbox/css.js +0 -2
  35. package/compiled_src/chatbox/dragscroll.js +1 -5
  36. package/compiled_src/chatbox/main.js +3 -43
  37. package/compiled_src/chatbox/releaseAnimation.js +0 -11
  38. package/compiled_src/chatbox/spinner.js +0 -10
  39. package/compiled_src/chatbox/time.js +0 -22
  40. package/compiled_src/chatbox/touchscroll.js +0 -7
  41. package/compiled_src/common.js +0 -22
  42. package/compiled_src/contact/contact.js +2 -52
  43. package/compiled_src/contact/css.js +0 -2
  44. package/compiled_src/lib.js +19 -46
  45. package/compiled_src/notif/css.js +0 -2
  46. package/compiled_src/notif/notif.js +0 -63
  47. package/compiled_src/order/address_picker.js +4 -38
  48. package/compiled_src/order/icon.js +0 -16
  49. package/compiled_src/order/index.js +1 -34
  50. package/compiled_src/order/order.js +2 -156
  51. package/compiled_src/plugin.js +1 -77
  52. package/compiled_src/popup/countdown.js +2 -33
  53. package/compiled_src/popup/css.js +0 -2
  54. package/compiled_src/popup/popup.js +2 -165
  55. package/compiled_src/popup/tick.core.commonjs.js +72 -222
  56. package/compiled_src/popup/tick.view.flip.commonjs.js +23 -31
  57. package/compiled_src/store/api.js +103 -66
  58. package/compiled_src/store/api_fake.js +3 -39
  59. package/compiled_src/store/realtime_fake.js +0 -6
  60. package/compiled_src/store/store.js +46 -257
  61. package/compiled_src/util/campaign.js +0 -13
  62. package/compiled_src/util/common.js +15 -190
  63. package/compiled_src/util/common.test.js +0 -4
  64. package/compiled_src/util/extractor.js +1 -21
  65. package/compiled_src/util/extractor.test.js +0 -3
  66. package/compiled_src/util/gate.js +0 -7
  67. package/compiled_src/util/gate.test.js +1 -2
  68. package/compiled_src/util/index.js +1 -7
  69. package/compiled_src/util/mutex.js +31 -0
  70. package/compiled_src/util/op.js +1 -14
  71. package/compiled_src/util/pubsub.js +0 -6
  72. package/compiled_src/util/pubsub.test.js +0 -2
  73. package/package.json +12 -12
  74. package/src/chatbox/main.js +3 -3
  75. package/src/lib.js +24 -2
  76. package/src/store/api.js +111 -22
  77. package/src/store/api_fake.js +5 -6
  78. package/src/store/store.js +38 -14
  79. package/src/util/common.js +0 -4
  80. package/src/util/index.js +1 -0
  81. package/src/util/mutex.js +27 -0
  82. package/dist/0b82fa7e5c3b07b40a44.png +0 -1
  83. package/dist/0f4af006e38ee8b93633.png +0 -1
  84. package/dist/132.js +0 -6777
  85. package/dist/178.js +0 -573
  86. package/dist/17f00e48d38.132.js +0 -1
  87. package/dist/17f00e48d38.178.js +0 -1
  88. package/dist/17f00e48d38.213.js +0 -1
  89. package/dist/17f00e48d38.335.js +0 -1
  90. package/dist/17f00e48d38.362.js +0 -1
  91. package/dist/17f00e48d38.441.js +0 -1
  92. package/dist/17f00e48d38.605.js +0 -1
  93. package/dist/17f00e48d38.678.js +0 -1
  94. package/dist/17f00e48d38.782.js +0 -1
  95. package/dist/17f00e48d38.app.js +0 -1
  96. package/dist/17f00e48d38.index.html +0 -22
  97. package/dist/17f00e48d38.library.html +0 -22
  98. package/dist/17f00e48d38.library.js +0 -1
  99. package/dist/17f00e48d38.preview.html +0 -759
  100. package/dist/17f00e48d38.preview.js +0 -1
  101. package/dist/17f00e48d38.screenshoot.js +0 -1
  102. package/dist/1ea1c6cd21d25176810c.png +0 -1
  103. package/dist/213.js +0 -3188
  104. package/dist/292d42404e1b03398f61.png +0 -1
  105. package/dist/312d376370831b7bea83.png +0 -1
  106. package/dist/313d1bfc1cf776d1aefe.png +0 -1
  107. package/dist/335.js +0 -411
  108. package/dist/362.js +0 -157
  109. package/dist/441.js +0 -2732
  110. package/dist/4aa58bb7a66bb44975aa.png +0 -1
  111. package/dist/56ce063bc6c81adb7322.png +0 -1
  112. package/dist/605.js +0 -328
  113. package/dist/678.js +0 -157
  114. package/dist/6a411166ef5cc79e0714.png +0 -1
  115. package/dist/6faf403782fefacc1649.png +0 -1
  116. package/dist/782.js +0 -204
  117. package/dist/79dca33c68fab79c067f.png +0 -1
  118. package/dist/82da1578fa84f9debaeb.png +0 -1
  119. package/dist/8b8e0f0824743974b282.png +0 -1
  120. package/dist/8d551390d81e39130a3c.png +0 -1
  121. package/dist/9fc61b9479877ebdb6c7.png +0 -1
  122. package/dist/HASH +0 -1
  123. package/dist/a165d31dcb3dc90f1057.png +0 -1
  124. package/dist/a98d4a5698812c4426b3.png +0 -1
  125. package/dist/assets/img/Facebook.64607ec.png +0 -0
  126. package/dist/assets/img/Zalo.6845707.png +0 -0
  127. package/dist/assets/img/award1a.1a58e10.png +0 -0
  128. package/dist/assets/img/award3a.3b74423.png +0 -0
  129. package/dist/assets/img/award4a.ed6ccd4.png +0 -0
  130. package/dist/assets/img/award5.39eb7ae.png +0 -0
  131. package/dist/assets/img/bubble_default.7d5e4ab.svg +0 -20
  132. package/dist/assets/img/caret.998eb8f.svg +0 -1
  133. package/dist/assets/img/convos_empty.2353007.svg +0 -72
  134. package/dist/assets/img/default.06e6ee0.jpg +0 -0
  135. package/dist/assets/img/default_avatar.5b74dc1.png +0 -0
  136. package/dist/assets/img/done_gray.d7e8203.svg +0 -4
  137. package/dist/assets/img/done_green.b817fd4.svg +0 -4
  138. package/dist/assets/img/emoji/messenger/sub_23.529_58.824.d5faf14.png +0 -0
  139. package/dist/assets/img/emoji/messenger/sub_23.529_60.784.1420241.png +0 -0
  140. package/dist/assets/img/emoji/messenger/sub_25.490_0.000.1e6b2c0.png +0 -0
  141. package/dist/assets/img/emoji/messenger/sub_25.490_45.098.3dfbc08.png +0 -0
  142. package/dist/assets/img/emoji/messenger/sub_25.490_5.882.4b49e94.png +0 -0
  143. package/dist/assets/img/emoji/messenger/sub_27.451_72.549.7114f58.png +0 -0
  144. package/dist/assets/img/emoji/messenger/sub_27.451_84.314.231e2b7.png +0 -0
  145. package/dist/assets/img/emoji/messenger/sub_27.451_96.078.ddbb008.png +0 -0
  146. package/dist/assets/img/emoji/messenger/sub_29.412_5.882.61f3359.png +0 -0
  147. package/dist/assets/img/emoji/messenger/sub_58.824_100.000.6df72bc.png +0 -0
  148. package/dist/assets/img/emoji/messenger/sub_58.824_45.098.3d7a7ad.png +0 -0
  149. package/dist/assets/img/emoji/messenger/sub_58.824_47.059.0f4d6e2.png +0 -0
  150. package/dist/assets/img/emoji/messenger/sub_58.824_54.902.65724c1.png +0 -0
  151. package/dist/assets/img/emoji/messenger/sub_58.824_64.706.9da3cba.png +0 -0
  152. package/dist/assets/img/emoji/messenger/sub_58.824_72.549.edca5cf.png +0 -0
  153. package/dist/assets/img/emoji/messenger/sub_58.824_78.431.f910f2a.png +0 -0
  154. package/dist/assets/img/emoji/messenger/sub_58.824_88.235.def4e71.png +0 -0
  155. package/dist/assets/img/emoji/messenger/sub_60.784_11.765.49c03d0.png +0 -0
  156. package/dist/assets/img/emoji/messenger/sub_60.784_27.451.46b54e5.png +0 -0
  157. package/dist/assets/img/emoji/messenger/sub_60.784_29.412.e36d284.png +0 -0
  158. package/dist/assets/img/emoji/messenger/sub_60.784_3.922.bb191b0.png +0 -0
  159. package/dist/assets/img/emoji/messenger/sub_60.784_35.294.af7b927.png +0 -0
  160. package/dist/assets/img/emoji/messenger/sub_60.784_7.843.98f2a99.png +0 -0
  161. package/dist/assets/img/empty.29bed2d.svg +0 -23
  162. package/dist/assets/img/empty_1.0b98af0.svg +0 -11
  163. package/dist/assets/img/examplte_logo.f86535f.svg +0 -1
  164. package/dist/assets/img/external-link.90577cc.svg +0 -1
  165. package/dist/assets/img/fb_inverse_circle.36c2cfc.png +0 -0
  166. package/dist/assets/img/ghn.070f8e3.svg +0 -17
  167. package/dist/assets/img/ghtk.326eac1.svg +0 -18
  168. package/dist/assets/img/image_default.be0698b.png +0 -0
  169. package/dist/assets/img/info.ebce7ea.svg +0 -1
  170. package/dist/assets/img/loader.37000a7.svg +0 -1
  171. package/dist/assets/img/loading_static.8f403ae.svg +0 -10
  172. package/dist/assets/img/main-service1.d536cc2.png +0 -0
  173. package/dist/assets/img/main-service2.9b99549.png +0 -0
  174. package/dist/assets/img/not_found_search.2ddb8d1.png +0 -0
  175. package/dist/assets/img/package.8d37d0f.svg +0 -5
  176. package/dist/assets/img/package_fade.763c001.svg +0 -1
  177. package/dist/assets/img/rating--average.1ea492c.svg +0 -12
  178. package/dist/assets/img/rating--great.e3d712e.svg +0 -16
  179. package/dist/assets/img/rating--poor.2938a25.svg +0 -12
  180. package/dist/assets/img/search.f9705ff.svg +0 -1
  181. package/dist/assets/img/send.6db52a9.svg +0 -3
  182. package/dist/assets/img/shop.f7dc7d8.svg +0 -1
  183. package/dist/assets/img/shop_faded.df7845a.svg +0 -1
  184. package/dist/assets/img/subiz-mono.877e9f5.svg +0 -3
  185. package/dist/assets/img/x.26fdfa3.svg +0 -5
  186. package/dist/c41606bf9d1b604e46d5.png +0 -1
  187. package/dist/ce1f7450ce6c1aacd330.png +0 -1
  188. package/dist/cf8c01e88f4770a6e3e5.png +0 -1
  189. package/dist/dfbcfeab1d5622a737e2.png +0 -1
  190. package/dist/e4893ed8c2f7b8329919.png +0 -1
  191. package/dist/ec2ab4eb4ef73d186186.png +0 -1
  192. package/dist/malicious-app.js +0 -13
  193. package/dist/screenshoot.html +0 -7
  194. package/dist/screenshoot.js +0 -5919
@@ -4,31 +4,31 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _index = _interopRequireDefault(require("../util/index.js"));
9
-
10
8
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
9
 
12
10
  let obj = function () {
13
11
  var module = {};
12
+
14
13
  var ExtensionType = {
15
14
  VIEW: 'view',
16
15
  EASING_FUNCTION: 'easing-function'
17
16
  };
17
+
18
18
  var Extensions = {};
19
19
  Extensions[ExtensionType.VIEW] = {};
20
20
  Extensions[ExtensionType.EASING_FUNCTION] = {};
21
21
 
22
22
  var addExtensions = function addExtensions(type, extensions) {
23
23
  if (!Extensions[type]) return null;
24
-
25
24
  for (var name in extensions) {
26
25
  if (!extensions.hasOwnProperty(name)) continue;
26
+
27
27
  if (Extensions[type][name]) return null;
28
+
28
29
  Extensions[type][name] = extensions[name];
29
30
  }
30
31
  };
31
-
32
32
  var isVisible = function isVisible(element) {
33
33
  var elementRect = element.getBoundingClientRect();
34
34
 
@@ -39,7 +39,6 @@ let obj = function () {
39
39
  if (elementRect.top > window.scrollY + window.innerHeight) {
40
40
  return false;
41
41
  }
42
-
43
42
  return true;
44
43
  };
45
44
 
@@ -67,7 +66,6 @@ let obj = function () {
67
66
  if (!Extensions[type][name]) {
68
67
  throw 'Can\'t get extension with name "' + name + '", "' + name + '" is not available. The following extensions are available: ' + keysToList(Extensions[type]);
69
68
  }
70
-
71
69
  return Extensions[type][name];
72
70
  };
73
71
 
@@ -75,19 +73,15 @@ let obj = function () {
75
73
  return {
76
74
  destroy: function destroy() {
77
75
  state.destroyed = true;
78
-
79
76
  if (state.frame) {
80
77
  cancelAnimationFrame(state.frame);
81
78
  }
82
-
83
79
  if (state.styleObserver) {
84
80
  state.styleObserver.disconnect();
85
81
  }
86
-
87
82
  if (state.didResizeWindow) {
88
83
  window.removeEventListener('resize', state.didResizeWindow);
89
84
  }
90
-
91
85
  if (state.root && state.root.parentNode) {
92
86
  state.root.parentNode.removeChild(state.root);
93
87
  }
@@ -101,16 +95,13 @@ let obj = function () {
101
95
  state.root = root;
102
96
  state.aligned = null;
103
97
  state.destroyed = false;
104
-
105
98
  if (root && name) {
106
99
  state.root.classList.add('tick-' + name);
107
100
  state.root.setAttribute('data-view', name);
108
101
  }
109
-
110
102
  if (root && root.dataset.layout) {
111
103
  state.align = (root.dataset.layout.match(/left|right|center/) || [])[0] || 'left';
112
104
  }
113
-
114
105
  return {
115
106
  appendTo: function appendTo(element) {
116
107
  var location = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'last';
@@ -118,27 +109,25 @@ let obj = function () {
118
109
  if (!state.root || state.root && state.root.parentNode) {
119
110
  return;
120
111
  }
121
-
122
112
  if (location === 'last') {
123
113
  if (element.childNodes.length && element.childNodes[element.childNodes.length - 1].nodeType === Node.TEXT_NODE) {
124
114
  element.insertBefore(state.root, element.childNodes[element.childNodes.length - 1]);
125
115
  } else {
126
116
  element.appendChild(state.root);
127
117
  }
128
-
129
118
  return;
130
119
  }
131
-
132
120
  if (location === 'first') {
133
121
  if (element.childNodes.length === 0) {
134
122
  element.appendChild(state.root);
135
- } else if (element.children.length === 0 && element.childNodes.length) {
123
+ }
124
+ else if (element.children.length === 0 && element.childNodes.length) {
136
125
  element.insertBefore(state.root, element.childNodes[element.childNodes.length - 1]);
137
- } else {
126
+ }
127
+ else {
138
128
  element.insertBefore(state.root, element.children[0]);
139
129
  }
140
130
  }
141
-
142
131
  if (typeof location !== 'string') {
143
132
  element.insertBefore(state.root, location);
144
133
  }
@@ -161,24 +150,22 @@ let obj = function () {
161
150
  if (!state.dirty) {
162
151
  if (drawViews) {
163
152
  var redrawn = drawViews(state);
164
-
165
153
  if (redrawn) {
166
154
  fit(state);
167
155
  }
168
156
  }
169
-
170
157
  return false;
171
158
  }
172
159
 
173
160
  _draw(state, present);
174
161
 
175
162
  fit(state);
163
+
176
164
  state.dirty = false;
177
165
  return true;
178
166
  }
179
167
  };
180
168
  };
181
-
182
169
  var fit = function fit(state) {
183
170
  if (!state.fit) {
184
171
  if (!state.root || !(state.root.getAttribute('data-layout') || '').match(/fit/)) {
@@ -194,14 +181,15 @@ let obj = function () {
194
181
  }
195
182
 
196
183
  state.fitInfo.availableWidth = state.root.parentNode.clientWidth;
184
+
197
185
  state.fitInfo.currentWidth = state.root.scrollWidth;
186
+
198
187
  var newFontSize = Math.min(Math.max(4, state.fitInfo.availableWidth / state.fitInfo.currentWidth * state.fitInfo.currentFontSize), 1024);
199
- var dist = Math.abs(newFontSize - state.fitInfo.currentFontSize);
200
188
 
189
+ var dist = Math.abs(newFontSize - state.fitInfo.currentFontSize);
201
190
  if (dist <= 1) {
202
191
  return;
203
192
  }
204
-
205
193
  state.fitInfo.currentFontSize = newFontSize;
206
194
  state.root.style.setProperties('fontSize', state.fitInfo.currentFontSize + 'px', 'important');
207
195
  };
@@ -210,11 +198,9 @@ let obj = function () {
210
198
  state.dirty = true;
211
199
  state.value = null;
212
200
  state.valueUpdateCount = 0;
213
-
214
201
  state.isInitialValue = function () {
215
202
  return state.valueUpdateCount <= 1;
216
203
  };
217
-
218
204
  return {
219
205
  reset: function reset() {
220
206
  state.dirty = true;
@@ -225,7 +211,6 @@ let obj = function () {
225
211
  if (equal(state.value, value)) {
226
212
  return;
227
213
  }
228
-
229
214
  state.value = value;
230
215
  state.valueUpdateCount++;
231
216
  state.dirty = true;
@@ -237,22 +222,18 @@ let obj = function () {
237
222
  state.didResizeWindow = function () {
238
223
  state.dirty = true;
239
224
  };
240
-
241
225
  window.addEventListener('resize', state.didResizeWindow);
242
226
  };
243
-
244
227
  var _typeof = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? function (obj) {
245
228
  return typeof obj;
246
229
  } : function (obj) {
247
230
  return obj && typeof Symbol === 'function' && obj.constructor === Symbol && obj !== Symbol.prototype ? 'symbol' : typeof obj;
248
231
  };
249
-
250
232
  var classCallCheck = function (instance, Constructor) {
251
233
  if (!(instance instanceof Constructor)) {
252
234
  throw new TypeError('Cannot call a class as a function');
253
235
  }
254
236
  };
255
-
256
237
  var createClass = function () {
257
238
  function defineProperties(target, props) {
258
239
  for (var i = 0; i < props.length; i++) {
@@ -263,54 +244,43 @@ let obj = function () {
263
244
  Object.defineProperty(target, descriptor.key, descriptor);
264
245
  }
265
246
  }
266
-
267
247
  return function (Constructor, protoProps, staticProps) {
268
248
  if (protoProps) defineProperties(Constructor.prototype, protoProps);
269
249
  if (staticProps) defineProperties(Constructor, staticProps);
270
250
  return Constructor;
271
251
  };
272
252
  }();
273
-
274
253
  var _extends = Object.assign || function (target) {
275
254
  for (var i = 1; i < arguments.length; i++) {
276
255
  var source = arguments[i];
277
-
278
256
  for (var key in source) {
279
257
  if (Object.prototype.hasOwnProperty.call(source, key)) {
280
258
  target[key] = source[key];
281
259
  }
282
260
  }
283
261
  }
284
-
285
262
  return target;
286
263
  };
287
-
288
264
  var toConsumableArray = function (arr) {
289
265
  if (Array.isArray(arr)) {
290
266
  for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
291
-
292
267
  return arr2;
293
268
  } else {
294
269
  return Array.from(arr);
295
270
  }
296
271
  };
297
-
298
272
  var draw = function draw(state, present) {
299
273
  var views = (state.definition || []).concat();
300
-
301
274
  if (state.align === 'right') {
302
275
  views.reverse();
303
276
  }
304
-
305
277
  var value = Array.isArray(state.value) ? state.value.concat() : _typeof(state.value) === 'object' ? clone(state.value) : state.value;
306
278
  views.forEach(function (view) {
307
279
  if (!view.presenter) {
308
280
  state.update = present(view);
309
-
310
281
  if (!view.presenter) {
311
282
  return;
312
283
  }
313
-
314
284
  view.presenter.appendTo(state.root);
315
285
  }
316
286
  });
@@ -326,9 +296,9 @@ let obj = function () {
326
296
  }
327
297
  });
328
298
  state.views = views;
299
+
329
300
  drawViews(state);
330
301
  };
331
-
332
302
  var drawViews = function drawViews(state) {
333
303
  var redrawn = false;
334
304
  state.views.filter(function (view) {
@@ -340,7 +310,6 @@ let obj = function () {
340
310
  });
341
311
  return redrawn;
342
312
  };
343
-
344
313
  var createRoot = function (root, definition, present) {
345
314
  var state = {
346
315
  valueMapping: null
@@ -351,10 +320,8 @@ let obj = function () {
351
320
  var mapping = root.dataset.valueMapping;
352
321
  state.valueMapping = allowed.indexOf(mapping) !== -1 ? mapping : null;
353
322
  }
354
-
355
323
  return Object.assign({}, rooter(state, root), resizer(state), updater(state), grouper(state, definition), drawer(state, draw, drawViews, present), destroyer(state));
356
324
  };
357
-
358
325
  var draw$1 = function draw(state, present, ready) {
359
326
  var value = copyArray(Array.isArray(state.value) ? state.value : (state.value + '').split(''));
360
327
 
@@ -371,20 +338,20 @@ let obj = function () {
371
338
 
372
339
  value.forEach(function (value, index) {
373
340
  var def = state.definitions[index];
374
-
375
341
  if (!def) {
376
342
  def = state.definitions[index] = cloneDefinition(state.definition);
377
343
  state.update = present(def);
378
344
  def.presenter.appendTo(state.root, state.align === 'right' ? 'first' : 'last');
379
345
  }
380
346
  });
347
+
381
348
  value.forEach(function (value, index) {
382
349
  return state.update(state.definitions[index], value);
383
350
  });
384
351
  state.views = value;
352
+
385
353
  drawViews$1(state);
386
354
  };
387
-
388
355
  var drawViews$1 = function drawViews(state) {
389
356
  var redrawn = false;
390
357
  state.views.forEach(function (view, index) {
@@ -394,17 +361,14 @@ let obj = function () {
394
361
  });
395
362
  return redrawn;
396
363
  };
397
-
398
364
  var createRepeater = function (root, definition, present) {
399
365
  var state = {
400
366
  definitions: []
401
367
  };
402
368
  return Object.assign({}, rooter(state, root), updater(state), grouper(state, definition), drawer(state, draw$1, drawViews$1, present), destroyer(state));
403
369
  };
404
-
405
370
  var text = function text(node, value) {
406
371
  var textNode = node.childNodes[0];
407
-
408
372
  if (!textNode) {
409
373
  textNode = document.createTextNode(value);
410
374
  node.appendChild(textNode);
@@ -412,17 +376,13 @@ let obj = function () {
412
376
  textNode.nodeValue = value;
413
377
  }
414
378
  };
415
-
416
379
  var create$1 = function create(name, className) {
417
380
  var el = document.createElement(name);
418
-
419
381
  if (className) {
420
382
  el.className = className;
421
383
  }
422
-
423
384
  return el;
424
385
  };
425
-
426
386
  var observeAttributes = function observeAttributes(element, attributes, cb) {
427
387
  var observer = new MutationObserver(function (mutations) {
428
388
  attributes.forEach(function (attr) {
@@ -438,22 +398,18 @@ let obj = function () {
438
398
  });
439
399
  return observer;
440
400
  };
441
-
442
401
  var isHTMLElement = function isHTMLElement(value) {
443
402
  return value instanceof HTMLElement;
444
403
  };
445
404
 
446
405
  var setTransform = function setTransform(element, name, value) {
447
406
  var unit = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';
448
-
449
407
  if (!element.transforms) {
450
408
  element.transforms = [];
451
409
  }
452
-
453
410
  var t = element.transforms.find(function (t) {
454
411
  return t.name === name;
455
412
  });
456
-
457
413
  if (t) {
458
414
  t.value = value;
459
415
  } else {
@@ -463,10 +419,8 @@ let obj = function () {
463
419
  unit: unit
464
420
  });
465
421
  }
466
-
467
422
  setTransformStyle(element, element.transforms);
468
423
  };
469
-
470
424
  var setTransformStyle = function setTransformStyle(element, transforms) {
471
425
  element.style.setProperty('transform', transforms.map(function (t) {
472
426
  return t.name + '(' + t.value + t.unit + ')';
@@ -476,23 +430,17 @@ let obj = function () {
476
430
  var capitalizeFirstLetter$1 = function capitalizeFirstLetter(string) {
477
431
  return string.charAt(0).toUpperCase() + string.slice(1);
478
432
  };
479
-
480
433
  var CACHE = {};
481
-
482
434
  var cache = function (value, fn) {
483
435
  var fns = fn.toString();
484
-
485
436
  if (!CACHE[fns]) {
486
437
  CACHE[fns] = {};
487
438
  }
488
-
489
439
  if (!CACHE[fns][value]) {
490
440
  CACHE[fns][value] = fn(value);
491
441
  }
492
-
493
442
  return CACHE[fns][value];
494
443
  };
495
-
496
444
  var isInt = new RegExp('^[0-9]+$');
497
445
  var isBoolean$1 = new RegExp('^(true|false)$');
498
446
  var isFloat = new RegExp('^[0-9.]+$');
@@ -502,23 +450,23 @@ let obj = function () {
502
450
  var isDuration = new RegExp('^[.0-9]+(?:ms|s){1}$');
503
451
  var isTransition = new RegExp('^transition-?(?:in|out)?$');
504
452
  var isURL = new RegExp('^url\\(');
505
-
506
453
  var toDuration = function toDuration(string) {
507
454
  return string ? parseFloat(string) * (/ms$/.test(string) ? 1 : 1000) : 0;
508
455
  };
509
-
510
456
  var toTransition = function toTransition(string) {
511
457
  return string.match(/[a-z]+(?:\(.*?\))?\s?(?:origin\(.*?\))?\s?(?:[a-z]+\(.*?\))?[ .a-z-0-9]*/g).map(toTransitionPartial);
512
458
  };
513
-
514
459
  var toTransitionPartial = function toTransitionPartial(string) {
515
460
  var parts = string.match(/([a-z]+(?:\(.*?\))?)\s?(?:origin\((.*?)\))?\s?([a-z]+(?:\(.*?\))?)?\s?(?:([.0-9ms]+)?\s?(?:(ease-[a-z-]+))?\s?([.0-9ms]+)?)?/);
461
+
516
462
  var fn = toFunctionOutline(parts[1]);
463
+
517
464
  var origin = undefined;
518
465
  var duration = undefined;
519
466
  var ease = undefined;
520
467
  var delay = undefined;
521
468
  var resolver = undefined;
469
+
522
470
  parts.slice(2).filter(function (part) {
523
471
  return typeof part !== 'undefined';
524
472
  }).forEach(function (part) {
@@ -528,11 +476,17 @@ let obj = function () {
528
476
  } else {
529
477
  delay = toDuration(part);
530
478
  }
531
- } else if (/ /.test(part)) {
479
+ }
480
+
481
+ else if (/ /.test(part)) {
532
482
  origin = part;
533
- } else if (/^ease-[a-z-]+$/.test(part)) {
483
+ }
484
+
485
+ else if (/^ease-[a-z-]+$/.test(part)) {
534
486
  ease = part;
535
- } else if (/^[a-z]+/.test(part)) {
487
+ }
488
+
489
+ else if (/^[a-z]+/.test(part)) {
536
490
  resolver = toFunctionOutline(part);
537
491
  }
538
492
  });
@@ -561,9 +515,7 @@ let obj = function () {
561
515
  colors: colors
562
516
  };
563
517
  };
564
-
565
518
  var gradientOffsetRegex = /\s([\d]{1,3})%?$/;
566
-
567
519
  var toGradientColor = function toGradientColor(string) {
568
520
  var offset = string.match(gradientOffsetRegex);
569
521
  return {
@@ -578,7 +530,6 @@ let obj = function () {
578
530
  if (string === 'transparent') {
579
531
  return 'rgba(0,0,0,0)';
580
532
  }
581
-
582
533
  var pipette = document.createElement('span');
583
534
  pipette.style.cssText = 'position:absolute !important;visibility:hidden !important;color:' + string + ' !important';
584
535
  document.body.appendChild(pipette);
@@ -587,76 +538,65 @@ let obj = function () {
587
538
  });
588
539
  return window.getComputedStyle(pipette).getPropertyValue('color');
589
540
  };
590
-
591
541
  var toShadow = function toShadow(style) {
592
542
  if (typeof style !== 'string') {
593
543
  return style;
594
544
  }
595
-
596
545
  return style.match(/([-.\d]+(?:%|ms|s|deg|cm|em|ch|ex|q|in|mm|pc|pt|px|vh|vw|vmin|vmax)?)|[%#A-Za-z0-9,.()]+/g);
597
546
  };
598
-
599
547
  var toURL = function toURL(style) {
600
548
  var urls = style.match(/url\((.*?)\)/g).map(function (url) {
601
549
  return url.substring(4, url.length - 1);
602
550
  });
603
551
  return urls.length === 1 ? urls[0] : urls;
604
552
  };
605
-
606
553
  var toStyleProperty = function toStyleProperty(key) {
607
554
  return key.trim().split('-').map(function (key, index) {
608
555
  return index > 0 ? capitalizeFirstLetter$1(key) : key;
609
556
  }).join('');
610
557
  };
611
-
612
558
  var toStyleValue = function toStyleValue(value, property) {
613
559
  if (isBoolean$1.test(value)) {
614
560
  return typeof value === 'string' ? value === 'true' : value;
615
561
  }
616
-
617
562
  if (isInt.test(value)) return parseInt(value, 10);
618
563
  if (isFloat.test(value)) return parseFloat(value);
619
564
  if (isURL.test(value)) return toURL(value);
620
-
621
565
  if (isColor.test(property)) {
622
566
  if (isGradient.test(value)) {
623
567
  return cache(value, toGradient);
624
568
  }
625
-
626
569
  return cache(value, toColor);
627
570
  }
628
-
629
571
  if (isShadow.test(property)) return cache(value, toShadow);
630
-
631
572
  if (isTransition.test(property)) {
632
573
  if (value === 'none') return value;
633
574
  return cache(value, toTransition);
634
575
  }
635
-
636
576
  return value;
637
577
  };
638
-
639
578
  var toStyle = function toStyle(string) {
640
579
  var parts = string.split(':').map(trim);
641
580
  var property = toStyleProperty(parts[0]);
642
581
  var value = toStyleValue(parts[1], parts[0]);
643
-
644
582
  if (!property || value === null || typeof value === 'undefined') {
645
583
  return null;
646
584
  }
647
-
648
585
  return {
649
586
  property: property,
650
587
  value: value
651
588
  };
652
589
  };
653
-
654
590
  var toStyles = function toStyles(string) {
655
- return string.split(';').filter(function (style) {
591
+ return string.split(';').
592
+ filter(function (style) {
656
593
  return style.trim().length;
657
- }).map(toStyle).filter(function (style) {
594
+ }).
595
+ map(toStyle).
596
+ filter(function (style) {
658
597
  return style !== null;
659
- }).reduce(function (styles, style) {
598
+ }).
599
+ reduce(function (styles, style) {
660
600
  styles[style.property] = style.value;
661
601
  return styles;
662
602
  }, {});
@@ -665,15 +605,12 @@ let obj = function () {
665
605
  var easeOutSine = function easeOutSine(t) {
666
606
  return Math.sin(t * (Math.PI / 2));
667
607
  };
668
-
669
608
  var easeOutCubic = function easeOutCubic(t) {
670
609
  var t1 = t - 1;
671
610
  return t1 * t1 * t1 + 1;
672
611
  };
673
-
674
612
  var easeOutBounce = function easeOutBounce(t) {
675
613
  var scaledTime = t / 1;
676
-
677
614
  if (scaledTime < 1 / 2.75) {
678
615
  return 7.5625 * scaledTime * scaledTime;
679
616
  } else if (scaledTime < 2 / 2.75) {
@@ -681,15 +618,12 @@ let obj = function () {
681
618
  return 7.5625 * scaledTime2 * scaledTime2 + 0.75;
682
619
  } else if (scaledTime < 2.5 / 2.75) {
683
620
  var _scaledTime = scaledTime - 2.25 / 2.75;
684
-
685
621
  return 7.5625 * _scaledTime * _scaledTime + 0.9375;
686
622
  } else {
687
623
  var _scaledTime2 = scaledTime - 2.625 / 2.75;
688
-
689
624
  return 7.5625 * _scaledTime2 * _scaledTime2 + 0.984375;
690
625
  }
691
626
  };
692
-
693
627
  var EasingFunctions = {
694
628
  'ease-out-sine': easeOutSine,
695
629
  'ease-out-cubic': easeOutCubic,
@@ -699,18 +633,21 @@ let obj = function () {
699
633
 
700
634
  var styler = function (state) {
701
635
  var base = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
636
+
702
637
  state.lastAppliedStyles = null;
638
+
703
639
  updateStyles(state, base, state.root.dataset.style);
640
+
704
641
  state.styleObserver = observeAttributes(state.root, ['data-style'], function (string) {
705
642
  updateStyles(state, base, string);
706
643
  });
644
+
707
645
  return {
708
646
  setStyle: function setStyle(css) {
709
647
  updateStyles(state, base, css);
710
648
  }
711
649
  };
712
650
  };
713
-
714
651
  var updateStyles = function updateStyles(state, base, css) {
715
652
  if (state.lastAppliedStyles === css) {
716
653
  return;
@@ -725,12 +662,10 @@ let obj = function () {
725
662
  text: function text$$1() {
726
663
  return function (root) {
727
664
  var state = {};
728
-
729
665
  var draw = function draw(state) {
730
666
  state.root.setAttribute('data-value', state.value);
731
667
  text(state.root, state.value);
732
668
  };
733
-
734
669
  return Object.assign({}, rooter(state, root, 'text'), updater(state), drawer(state, draw), destroyer(state));
735
670
  };
736
671
  }
@@ -750,7 +685,9 @@ let obj = function () {
750
685
  create: create$1,
751
686
  transform: setTransform
752
687
  },
753
- Animation: {},
688
+ Animation: {
689
+ },
690
+
754
691
  Date: {
755
692
  performance: now
756
693
  },
@@ -769,67 +706,52 @@ let obj = function () {
769
706
  var createPresenterRoot = function createPresenterRoot(root, definition, presentDefinition) {
770
707
  return createRoot(root, definition, presentDefinition);
771
708
  };
772
-
773
709
  var createPresenterRepeater = function createPresenterRepeater(root, definition, presentDefinition) {
774
710
  return createRepeater(root, definition, presentDefinition);
775
711
  };
776
-
777
712
  var createPresenterView = function createPresenterView(name, root, style) {
778
713
  var view = getExtension(ExtensionType.VIEW, name);
779
714
  return view ? view(API$2())(root, style) : null;
780
715
  };
781
-
782
716
  var arrow = function arrow(str, i) {
783
717
  return str[i] === '-' && str[i + 1] === '>';
784
718
  };
785
-
786
719
  var string = function string(c) {
787
720
  return c === "'" || c === '"';
788
721
  };
789
-
790
722
  var comma = function comma(c) {
791
723
  return c === ',';
792
724
  };
793
-
794
725
  var opener = function opener(c) {
795
726
  return c === '(';
796
727
  };
797
-
798
728
  var closer = function closer(c) {
799
729
  return c === ')';
800
730
  };
801
-
802
731
  var value = function value(v) {
803
732
  return v.trim().length !== 0;
804
733
  };
805
-
806
734
  var add = function add(r, v) {
807
735
  return r.push(v.trim());
808
736
  };
809
-
810
737
  var token = function token(r, v) {
811
738
  if (value(v)) {
812
739
  add(r, v);
813
740
  return '';
814
741
  }
815
-
816
742
  return v;
817
743
  };
818
-
819
744
  var chain = function chain(_chain, output) {
820
745
  if (_chain.length) {
821
746
  output.push(_chain.length > 1 ? _chain.concat() : _chain[0]);
822
747
  }
823
-
824
748
  return [];
825
749
  };
826
-
827
750
  var parse$1 = function parse(i, str, result) {
828
751
  var v = '';
829
752
  var fns = [];
830
753
  var quote = null;
831
754
  var hitArrow = false;
832
-
833
755
  while (i < str.length) {
834
756
  var c = str[i];
835
757
 
@@ -840,30 +762,35 @@ let obj = function () {
840
762
  c = str[i];
841
763
  fns.push(fn);
842
764
  v = '';
843
- } else if (closer(c)) {
765
+ }
766
+
767
+ else if (closer(c)) {
844
768
  if (hitArrow && v.trim().length) {
845
769
  fns.push([v.trim()]);
846
770
  v = '';
847
771
  hitArrow = false;
848
772
  }
849
-
850
773
  if (value(v)) {
851
774
  add(fns, v);
852
775
  }
853
-
854
776
  fns = chain(fns, result);
855
777
  return i + 1;
856
- } else {
778
+ }
779
+
780
+ else {
857
781
  if (quote !== null && c !== quote) {
858
782
  v += c;
859
- } else if (c === quote) {
783
+ }
784
+ else if (c === quote) {
860
785
  fns.push(v);
861
786
  v = '';
862
787
  quote = null;
863
- } else if (string(c)) {
788
+ }
789
+ else if (string(c)) {
864
790
  v = '';
865
791
  quote = c;
866
792
  } else {
793
+
867
794
  if (arrow(str, i)) {
868
795
  hitArrow = true;
869
796
 
@@ -873,14 +800,15 @@ let obj = function () {
873
800
  }
874
801
 
875
802
  i += 2;
876
- } else if (comma(c)) {
803
+ }
804
+ else if (comma(c)) {
877
805
  if (hitArrow && v.trim().length) {
878
806
  fns.push([v.trim()]);
879
807
  v = '';
880
808
  hitArrow = false;
881
809
  }
882
-
883
810
  fns = chain(fns, result);
811
+
884
812
  v = token(result, v);
885
813
  } else {
886
814
  v += c;
@@ -890,53 +818,43 @@ let obj = function () {
890
818
  i++;
891
819
  }
892
820
  }
893
-
894
821
  if (hitArrow && v.trim().length || !hitArrow && v.trim().length && !fns.length) {
895
822
  fns.push([v.trim()]);
896
823
  v = '';
897
824
  }
898
-
899
825
  chain(fns, result);
826
+
900
827
  token(result, v);
901
828
  return i;
902
829
  };
903
-
904
830
  var parseTransformChain = function parseTransformChain(string) {
905
831
  var result = [];
906
832
  parse$1(0, string, result);
907
833
  return result;
908
834
  };
909
-
910
835
  var isRootDefinition = function isRootDefinition(definition) {
911
836
  return definition.children && definition.children.length;
912
837
  };
913
-
914
838
  var cloneDefinition = function cloneDefinition(definition) {
915
839
  var clone = {};
916
-
917
840
  for (var key in definition) {
918
841
  if (!definition.hasOwnProperty(key)) {
919
842
  continue;
920
843
  }
921
-
922
844
  if (key === 'root') {
923
845
  clone[key] = definition[key].cloneNode();
924
846
  continue;
925
847
  }
926
-
927
848
  if (key === 'children') {
928
849
  clone[key] = definition[key] === null ? null : definition[key].map(cloneDefinition);
929
850
  continue;
930
851
  }
931
-
932
852
  if (key === 'repeat') {
933
853
  clone[key] = definition[key] === null ? null : cloneDefinition(definition[key]);
934
854
  continue;
935
855
  }
936
-
937
856
  clone[key] = definition[key];
938
857
  }
939
-
940
858
  clone.presenter = null;
941
859
  return clone;
942
860
  };
@@ -954,9 +872,9 @@ let obj = function () {
954
872
  children: null,
955
873
  className: null
956
874
  };
957
-
958
875
  var toPresenterDefinitionTree = function toPresenterDefinitionTree(nodes) {
959
- return Array.from(nodes).map(function (node) {
876
+ return Array.from(nodes).
877
+ map(function (node) {
960
878
  var definition = mergeObjects(definitionOutline, {
961
879
  root: node
962
880
  });
@@ -965,62 +883,52 @@ let obj = function () {
965
883
  if (!node.dataset.hasOwnProperty(key)) {
966
884
  continue;
967
885
  }
968
-
969
886
  if (typeof definition[key] === 'undefined') {
970
887
  continue;
971
888
  }
972
-
973
889
  definition[key] = node.dataset[key];
974
890
  }
975
891
 
976
892
  if (definition.repeat) {
977
893
  definition.repeat = toPresenterDefinitionTree(node.children).pop();
894
+
978
895
  Array.from(node.children).forEach(function (node) {
979
896
  node.parentNode.removeChild(node);
980
897
  });
981
- } else if (node.children.length) {
898
+ }
899
+ else if (node.children.length) {
982
900
  definition.children = toPresenterDefinitionTree(node.children);
983
901
  }
984
-
985
902
  return definition;
986
903
  });
987
904
  };
988
-
989
905
  var createDOMTreeForDefinition = function createDOMTreeForDefinition(definition) {
990
906
  return definition.map(function (def) {
991
907
  def = mergeObjects(definitionOutline, def);
992
-
993
908
  if (typeof def.root === 'string') {
994
909
  def.root = document.createElement(def.root);
995
910
  } else {
996
911
  def.root = document.createElement('span');
997
912
  }
998
-
999
913
  if (def.transform) {
1000
914
  def.root.dataset.transform = def.transform;
1001
915
  }
1002
-
1003
916
  if (def.className) {
1004
917
  def.root.className = def.className;
1005
918
  }
1006
-
1007
919
  if (def.overlay) {
1008
920
  def.root.dataset.overlay = def.overlay;
1009
921
  }
1010
-
1011
922
  if (def.view) {
1012
923
  def.root.dataset.view = def.view;
1013
-
1014
924
  if (def.style) {
1015
925
  def.root.dataset.style = def.style;
1016
926
  }
1017
-
1018
927
  def.repeat = null;
1019
928
  } else {
1020
929
  if (def.layout) {
1021
930
  def.root.dataset.layout = def.layout;
1022
931
  }
1023
-
1024
932
  if (def.repeat) {
1025
933
  def.root.dataset.repeat = true;
1026
934
  def.repeat = createDOMTreeForDefinition(def.children).pop();
@@ -1031,14 +939,12 @@ let obj = function () {
1031
939
  });
1032
940
  }
1033
941
  }
1034
-
1035
942
  return def;
1036
943
  });
1037
944
  };
1038
945
 
1039
946
  var createPresenterByDefinition = function createPresenterByDefinition(definition, presentDefinition) {
1040
947
  var presenter = void 0;
1041
-
1042
948
  if (definition.repeat) {
1043
949
  presenter = createPresenterRepeater(definition.root, definition.repeat, presentDefinition);
1044
950
  } else if (typeof definition.view === 'string') {
@@ -1046,35 +952,28 @@ let obj = function () {
1046
952
  } else if (isRootDefinition(definition)) {
1047
953
  presenter = createPresenterRoot(definition.root, definition.children, presentDefinition);
1048
954
  }
1049
-
1050
955
  return presenter;
1051
956
  };
1052
-
1053
957
  var presentTick = function presentTick(instance) {
1054
958
  var isDrawing = false;
1055
-
1056
959
  var update = function update(definition, value) {
1057
960
  definition.transform(value, function (output) {
1058
961
  definition.presenter.update(output);
1059
962
  }, instance);
1060
-
1061
963
  if (!isDrawing) {
1062
964
  isDrawing = true;
1063
965
  draw();
1064
966
  }
1065
967
  };
1066
-
1067
968
  var draw = function draw() {
1068
969
  instance.baseDefinition.presenter.draw();
1069
970
  requestAnimationFrame(draw);
1070
971
  };
1071
-
1072
972
  var presentDefinition = function presentDefinition(definition) {
1073
973
  definition.presenter = createPresenterByDefinition(definition, presentDefinition);
1074
974
  definition.transform = toTransformComposition(definition.transform, instance);
1075
975
  return update;
1076
976
  };
1077
-
1078
977
  return presentDefinition(instance.baseDefinition);
1079
978
  };
1080
979
 
@@ -1082,21 +981,17 @@ let obj = function () {
1082
981
  for (var _len = arguments.length, funcs = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
1083
982
  funcs[_key - 1] = arguments[_key];
1084
983
  }
1085
-
1086
984
  return function (initialValue, callback) {
1087
985
  function compose(i, value) {
1088
986
  if (funcs.length <= i) {
1089
987
  callback(value);
1090
988
  return;
1091
989
  }
1092
-
1093
990
  funcs[i](value, partial(compose, [i + 1]), instance);
1094
991
  }
1095
-
1096
992
  compose(0, initialValue);
1097
993
  };
1098
994
  };
1099
-
1100
995
  var partial = function partial(fn) {
1101
996
  var initialArgs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
1102
997
  var ctx = arguments[2];
@@ -1106,7 +1001,6 @@ let obj = function () {
1106
1001
  return fn.apply(ctx, args);
1107
1002
  };
1108
1003
  };
1109
-
1110
1004
  var toTransformComposition = function toTransformComposition(string, instance) {
1111
1005
  if (!string) {
1112
1006
  return function (value, cb) {
@@ -1121,7 +1015,6 @@ let obj = function () {
1121
1015
  var result = parseTransformChain('transform(' + (/^[a-z]+$/.test(string) ? string + '()' : string) + ')');
1122
1016
  return compose(result, instance);
1123
1017
  };
1124
-
1125
1018
  var compose = function compose(chain, instance) {
1126
1019
  var composition = chain.map(function (item) {
1127
1020
  var name = item.shift();
@@ -1138,14 +1031,12 @@ let obj = function () {
1138
1031
 
1139
1032
  return compose(parameter, instance);
1140
1033
  }
1141
-
1142
1034
  return toParameter(parameter);
1143
1035
  });
1144
1036
  return func.apply(undefined, toConsumableArray(params));
1145
1037
  });
1146
1038
  return composeAsync.apply(undefined, [instance].concat(toConsumableArray(composition)));
1147
1039
  };
1148
-
1149
1040
  var toFunctionOutline = function toFunctionOutline(string) {
1150
1041
  var name = string.match(/[a-z]+/)[0];
1151
1042
  var parameters = toParameters(string.substring(name.length));
@@ -1154,18 +1045,15 @@ let obj = function () {
1154
1045
  parameters: parameters
1155
1046
  };
1156
1047
  };
1157
-
1158
1048
  var toParameters = function toParameters(string) {
1159
1049
  var arr = string.match(/('.+?')|(".+?")|(\[.+?])|([.:\-\d\sa-zA-Z]+%?)/g) || [];
1160
1050
  arr.map(trim).filter(function (str) {
1161
1051
  return str.length;
1162
1052
  }).map(toParameter);
1163
1053
  };
1164
-
1165
1054
  var trimEdges = function trimEdges(string) {
1166
1055
  return string.substring(1, string.length - 1);
1167
1056
  };
1168
-
1169
1057
  var isProbablyISODate = /^([\d]{4}-[\d]{1,2}-[\d]{1,2})/;
1170
1058
  var isBoolean = /^(true|false)$/;
1171
1059
  var isString = /^[\a-zA-Z]+$/;
@@ -1173,35 +1061,28 @@ let obj = function () {
1173
1061
  var isQuotedString = /^('|")/;
1174
1062
  var isNumber = /^-?(?:\d+)?(?:\.|0\.)?[\d]+$/;
1175
1063
  var isArray = /^(\[)/;
1176
-
1177
1064
  var toParameter = function toParameter(string) {
1178
1065
  if (isBoolean.test(string)) {
1179
1066
  return string === 'true';
1180
1067
  }
1181
-
1182
1068
  if (isArray.test(string)) {
1183
1069
  return toParameters(trimEdges(string));
1184
1070
  }
1185
-
1186
1071
  if (isProbablyISODate.test(string)) {
1187
1072
  return dateFromISO(string);
1188
1073
  }
1189
-
1190
1074
  if (isQuotedString.test(string)) {
1191
1075
  return trimEdges(string);
1192
1076
  }
1193
-
1194
1077
  if (isString.test(string) || isZeroString.test(string)) {
1195
1078
  return string;
1196
1079
  }
1197
-
1198
1080
  if (isNumber.test(string)) {
1199
1081
  return parseFloat(string);
1200
1082
  }
1201
1083
 
1202
1084
  return string;
1203
1085
  };
1204
-
1205
1086
  var toCSSValue = function toCSSValue(value) {
1206
1087
  var parts = (value + '').match(/(-?[.\d]+)(%|ms|s|deg|cm|em|ch|ex|q|in|mm|pc|pt|px|vh|vw|vmin|vmax)?/);
1207
1088
  return {
@@ -1214,15 +1095,12 @@ let obj = function () {
1214
1095
  var b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1215
1096
  var key = void 0;
1216
1097
  var obj = {};
1217
-
1218
1098
  for (key in a) {
1219
1099
  if (!a.hasOwnProperty(key)) {
1220
1100
  continue;
1221
1101
  }
1222
-
1223
1102
  obj[key] = typeof b[key] === 'undefined' ? a[key] : b[key];
1224
1103
  }
1225
-
1226
1104
  return obj;
1227
1105
  };
1228
1106
 
@@ -1233,7 +1111,6 @@ let obj = function () {
1233
1111
  if (!ref[levels[index]]) {
1234
1112
  return;
1235
1113
  }
1236
-
1237
1114
  ref = ref[levels[index]];
1238
1115
  });
1239
1116
  return ref !== window ? ref : null;
@@ -1273,50 +1150,39 @@ let obj = function () {
1273
1150
  if ((typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object' && obj !== null) {
1274
1151
  return _index.default.parseJSON(_index.default.stringify(obj));
1275
1152
  }
1276
-
1277
1153
  return obj;
1278
1154
  };
1279
-
1280
1155
  var copyArray = function copyArray(arr) {
1281
1156
  return arr.slice();
1282
1157
  };
1283
-
1284
1158
  var now = function now() {
1285
1159
  return window.performance.now();
1286
1160
  };
1287
-
1288
1161
  var equal = function equal(a, b) {
1289
1162
  if (isObject(a)) {
1290
1163
  return equalObjects(a, b);
1291
1164
  }
1292
-
1293
1165
  if (Array.isArray(a)) {
1294
1166
  return equalArrays(a, b);
1295
1167
  }
1296
-
1297
1168
  return a === b;
1298
1169
  };
1299
-
1300
1170
  var isObject = function isObject(obj) {
1301
1171
  return obj === Object(obj);
1302
1172
  };
1303
-
1304
1173
  var equalObjects = function equalObjects(a, b) {
1305
1174
  for (var i in a) {
1306
1175
  if (!b.hasOwnProperty(i) || a[i] !== b[i]) {
1307
1176
  return false;
1308
1177
  }
1309
1178
  }
1310
-
1311
1179
  return true;
1312
1180
  };
1313
-
1314
1181
  var equalArrays = function equalArrays(a, b) {
1315
1182
  return a.length == b.length && a.every(function (v, i) {
1316
1183
  return v === b[i];
1317
1184
  });
1318
1185
  };
1319
-
1320
1186
  var keysToList = function keysToList(obj) {
1321
1187
  return Object.keys(obj).map(function (k) {
1322
1188
  return '"' + k + '"';
@@ -1328,12 +1194,15 @@ let obj = function () {
1328
1194
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1329
1195
  var element = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document.createElement('div');
1330
1196
  classCallCheck(this, Tick);
1197
+
1331
1198
  this._options = mergeObjects(Tick.options(), options);
1199
+
1332
1200
  this._element = element;
1333
1201
  this._value = null;
1334
1202
  this._observer = null;
1335
1203
  this._viewDefinition = null;
1336
1204
  this._updater = null;
1205
+
1337
1206
  this._didInit = null;
1338
1207
  this._didDestroy = null;
1339
1208
  this._willDestroy = null;
@@ -1355,7 +1224,6 @@ let obj = function () {
1355
1224
  this._observer.disconnect();
1356
1225
 
1357
1226
  this.baseDefinition.presenter.destroy();
1358
-
1359
1227
  this._didDestroy(this);
1360
1228
  }
1361
1229
  }, {
@@ -1364,9 +1232,9 @@ let obj = function () {
1364
1232
  if (!this.baseDefinition || !this.baseDefinition.presenter) return;
1365
1233
  this.baseDefinition.presenter.reset();
1366
1234
  this.baseDefinition.presenter.draw();
1367
-
1368
1235
  this._updater(this.baseDefinition, this._value);
1369
1236
  }
1237
+
1370
1238
  }, {
1371
1239
  key: '_init',
1372
1240
  value: function _init() {
@@ -1412,7 +1280,6 @@ let obj = function () {
1412
1280
  key: '_update',
1413
1281
  value: function _update(value) {
1414
1282
  this._updater(this.baseDefinition, value);
1415
-
1416
1283
  this._didUpdate(this, value);
1417
1284
  }
1418
1285
  }, {
@@ -1432,7 +1299,6 @@ let obj = function () {
1432
1299
  },
1433
1300
  set: function set$$1(value) {
1434
1301
  this._value = typeof value === 'string' ? toValue(value) : value;
1435
-
1436
1302
  this._update(value);
1437
1303
  }
1438
1304
  }], [{
@@ -1459,7 +1325,6 @@ let obj = function () {
1459
1325
  didDestroy: toFunctionReference,
1460
1326
  willDestroy: toFunctionReference
1461
1327
  };
1462
-
1463
1328
  var getOptionsFromAttributes = function getOptionsFromAttributes(element) {
1464
1329
  var transfomers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
1465
1330
  var defaults$$1 = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
@@ -1467,65 +1332,53 @@ let obj = function () {
1467
1332
  var options = {
1468
1333
  meta: {}
1469
1334
  };
1470
-
1471
1335
  for (var prop in dataset) {
1472
1336
  if (!dataset.hasOwnProperty(prop)) {
1473
1337
  continue;
1474
1338
  }
1475
-
1476
1339
  var valueTransformer = transfomers[prop];
1477
1340
  var value = dataset[prop];
1478
-
1479
1341
  if (valueTransformer) {
1480
1342
  value = valueTransformer(value);
1481
1343
  value = value === null ? clone(defaults$$1[prop]) : value;
1482
1344
  options[prop] = value;
1483
1345
  }
1484
1346
  }
1485
-
1486
1347
  return options;
1487
1348
  };
1488
-
1489
1349
  var indexOfElement = function indexOfElement(instances, element) {
1490
1350
  var i = 0;
1491
1351
  var l = instances.length;
1492
-
1493
1352
  for (; i < l; i++) {
1494
1353
  if (instances[i].isRootElement(element)) {
1495
1354
  return i;
1496
1355
  }
1497
1356
  }
1498
-
1499
1357
  return -1;
1500
1358
  };
1501
-
1502
1359
  var parse = function parse(context) {
1503
1360
  var elements = void 0;
1504
1361
  var element = void 0;
1505
1362
  var i = void 0;
1506
1363
  var instances = [];
1364
+
1507
1365
  elements = context.querySelectorAll('.tick:not([data-state])');
1508
1366
  i = elements.length;
1509
-
1510
1367
  while (i--) {
1511
1368
  element = elements[i];
1512
1369
  instances.push(create(element));
1513
1370
  }
1514
-
1515
1371
  return instances;
1516
1372
  };
1517
-
1518
1373
  var find = function find(element) {
1519
1374
  var result = instances.filter(function (instance) {
1520
1375
  return instance.isRootElement(element);
1521
1376
  });
1522
1377
  return result ? result[0] : null;
1523
1378
  };
1524
-
1525
1379
  var getDefaultOptions = function getDefaultOptions() {
1526
1380
  return _extends({}, Tick.options());
1527
1381
  };
1528
-
1529
1382
  var create = function create() {
1530
1383
  var element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;
1531
1384
  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;
@@ -1558,10 +1411,11 @@ let obj = function () {
1558
1411
  }
1559
1412
 
1560
1413
  var instance = new Tick(options, element);
1414
+
1561
1415
  instances.push(instance);
1416
+
1562
1417
  return instance;
1563
1418
  };
1564
-
1565
1419
  var destroy = function destroy(element) {
1566
1420
  var index = indexOfElement(instances, element);
1567
1421
  if (index < 0) return false;
@@ -1569,18 +1423,20 @@ let obj = function () {
1569
1423
  instances.splice(index, 1);
1570
1424
  return true;
1571
1425
  };
1572
-
1573
1426
  var support = function () {
1574
1427
  var w = window;
1575
-
1576
1428
  if (typeof w === 'undefined') {
1577
1429
  return false;
1578
1430
  }
1579
1431
 
1580
1432
  var canSupport = w.CSS && w.CSS.supports;
1433
+
1581
1434
  var isIE11 = !!w.MSInputMethodContext && !!document.documentMode;
1435
+
1582
1436
  var canTransform = canSupport && CSS.supports('transform', 'translateX(0)');
1437
+
1583
1438
  var features = ['MutationObserver', 'requestAnimationFrame'];
1439
+
1584
1440
  return isIE11 || canSupport && canTransform && !!features.filter(function (p) {
1585
1441
  return p in w;
1586
1442
  }).length;
@@ -1601,7 +1457,6 @@ let obj = function () {
1601
1457
  var extension = type;
1602
1458
  return addExtension(extension.identifier.type, extension.identifier.name, extension);
1603
1459
  }
1604
-
1605
1460
  return addExtension(type, name, fn);
1606
1461
  }
1607
1462
  }
@@ -1609,21 +1464,16 @@ let obj = function () {
1609
1464
 
1610
1465
  var _loop = function _loop(type) {
1611
1466
  if (!ExtensionType.hasOwnProperty(type)) return 'continue';
1612
-
1613
1467
  API.plugin[dashesToCamels('add-' + ExtensionType[type])] = function (name, fn) {
1614
1468
  addExtension(ExtensionType[type], name, fn);
1615
1469
  };
1616
1470
  };
1617
-
1618
1471
  for (var type in ExtensionType) {
1619
1472
  var _ret = _loop(type);
1620
-
1621
1473
  if (_ret === 'continue') continue;
1622
1474
  }
1623
-
1624
1475
  module.exports = API;
1625
1476
  return module.exports;
1626
1477
  }();
1627
-
1628
1478
  var _default = obj;
1629
1479
  exports.default = _default;