@subiz/widget-v4 4.0.92 → 4.0.94

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 (175) hide show
  1. package/assets/less/chatbox.less +8 -0
  2. package/assets/less/message.less +8 -3
  3. package/assets/less/order.less +10 -0
  4. package/compiled_src/bot.js +0 -11
  5. package/compiled_src/call/call.js +0 -61
  6. package/compiled_src/call/css.js +0 -2
  7. package/compiled_src/chatbox/AgentsAvatar.js +0 -16
  8. package/compiled_src/chatbox/AudioAttachments.js +0 -14
  9. package/compiled_src/chatbox/ButtonAttachments.js +1 -14
  10. package/compiled_src/chatbox/Buttons.js +0 -13
  11. package/compiled_src/chatbox/ChatButton.js +1 -78
  12. package/compiled_src/chatbox/DropdownSelect.js +3 -44
  13. package/compiled_src/chatbox/Emoji.js +0 -7
  14. package/compiled_src/chatbox/Event.js +0 -59
  15. package/compiled_src/chatbox/Events.js +4 -44
  16. package/compiled_src/chatbox/FileAttachments.js +0 -14
  17. package/compiled_src/chatbox/FormAttachment.js +1 -52
  18. package/compiled_src/chatbox/FormAttachments.js +0 -14
  19. package/compiled_src/chatbox/FormSubmitAttachments.js +0 -11
  20. package/compiled_src/chatbox/GenericTemplateAttachments.js +1 -20
  21. package/compiled_src/chatbox/Header.js +1 -46
  22. package/compiled_src/chatbox/ImageAttachments.js +0 -16
  23. package/compiled_src/chatbox/InfoMessage.js +0 -13
  24. package/compiled_src/chatbox/ListField.js +0 -16
  25. package/compiled_src/chatbox/MessageInput.js +1 -47
  26. package/compiled_src/chatbox/Order.js +0 -35
  27. package/compiled_src/chatbox/OrderAttachments.js +98 -39
  28. package/compiled_src/chatbox/PoweredBy.js +0 -7
  29. package/compiled_src/chatbox/ProductAttachments.js +0 -19
  30. package/compiled_src/chatbox/QuickReplies.js +0 -18
  31. package/compiled_src/chatbox/Rating.js +0 -37
  32. package/compiled_src/chatbox/ShadowDomRoot.js +0 -9
  33. package/compiled_src/chatbox/TextMessage.js +0 -64
  34. package/compiled_src/chatbox/Typing.js +0 -15
  35. package/compiled_src/chatbox/VideoAttachments.js +0 -14
  36. package/compiled_src/chatbox/Widget.js +6 -167
  37. package/compiled_src/chatbox/css.js +0 -2
  38. package/compiled_src/chatbox/dragscroll.js +1 -5
  39. package/compiled_src/chatbox/main.js +1 -40
  40. package/compiled_src/chatbox/releaseAnimation.js +0 -11
  41. package/compiled_src/chatbox/spinner.js +0 -10
  42. package/compiled_src/chatbox/time.js +0 -22
  43. package/compiled_src/chatbox/touchscroll.js +0 -7
  44. package/compiled_src/common.js +0 -22
  45. package/compiled_src/contact/contact.js +2 -52
  46. package/compiled_src/contact/css.js +0 -2
  47. package/compiled_src/lib.js +19 -46
  48. package/compiled_src/notif/css.js +0 -2
  49. package/compiled_src/notif/notif.js +0 -63
  50. package/compiled_src/order/address_picker.js +4 -38
  51. package/compiled_src/order/icon.js +0 -16
  52. package/compiled_src/order/index.js +1 -34
  53. package/compiled_src/order/order.js +2 -156
  54. package/compiled_src/plugin.js +1 -77
  55. package/compiled_src/popup/countdown.js +2 -33
  56. package/compiled_src/popup/css.js +0 -2
  57. package/compiled_src/popup/popup.js +2 -165
  58. package/compiled_src/popup/tick.core.commonjs.js +72 -222
  59. package/compiled_src/popup/tick.view.flip.commonjs.js +23 -31
  60. package/compiled_src/store/api.js +99 -65
  61. package/compiled_src/store/api_fake.js +3 -39
  62. package/compiled_src/store/realtime_fake.js +0 -6
  63. package/compiled_src/store/store.js +46 -249
  64. package/compiled_src/util/campaign.js +0 -13
  65. package/compiled_src/util/common.js +15 -185
  66. package/compiled_src/util/common.test.js +0 -4
  67. package/compiled_src/util/extractor.js +1 -21
  68. package/compiled_src/util/extractor.test.js +0 -3
  69. package/compiled_src/util/gate.js +0 -7
  70. package/compiled_src/util/gate.test.js +1 -2
  71. package/compiled_src/util/index.js +3 -7
  72. package/compiled_src/util/mutex.js +31 -0
  73. package/compiled_src/util/op.js +1 -14
  74. package/compiled_src/util/order.js +118 -0
  75. package/compiled_src/util/pubsub.js +0 -6
  76. package/compiled_src/util/pubsub.test.js +0 -2
  77. package/package.json +12 -13
  78. package/src/chatbox/OrderAttachments.js +111 -18
  79. package/src/lib.js +24 -2
  80. package/src/store/api.js +110 -21
  81. package/src/store/api_fake.js +5 -6
  82. package/src/store/store.js +47 -17
  83. package/src/util/index.js +4 -0
  84. package/src/util/mutex.js +27 -0
  85. package/src/util/order.js +120 -0
  86. package/dist/132.js +0 -7092
  87. package/dist/178.js +0 -406
  88. package/dist/18364d15f37.132.js +0 -1
  89. package/dist/18364d15f37.178.js +0 -1
  90. package/dist/18364d15f37.213.js +0 -1
  91. package/dist/18364d15f37.335.js +0 -1
  92. package/dist/18364d15f37.362.js +0 -1
  93. package/dist/18364d15f37.441.js +0 -1
  94. package/dist/18364d15f37.605.js +0 -1
  95. package/dist/18364d15f37.678.js +0 -1
  96. package/dist/18364d15f37.782.js +0 -1
  97. package/dist/18364d15f37.app.js +0 -1
  98. package/dist/18364d15f37.index.html +0 -26
  99. package/dist/18364d15f37.library.html +0 -26
  100. package/dist/18364d15f37.library.js +0 -1
  101. package/dist/18364d15f37.preview.html +0 -759
  102. package/dist/18364d15f37.preview.js +0 -1
  103. package/dist/18364d15f37.screenshoot.js +0 -1
  104. package/dist/213.js +0 -3215
  105. package/dist/335.js +0 -411
  106. package/dist/362.js +0 -107
  107. package/dist/441.js +0 -2834
  108. package/dist/605.js +0 -328
  109. package/dist/678.js +0 -107
  110. package/dist/782.js +0 -107
  111. package/dist/HASH +0 -1
  112. package/dist/assets/img/Facebook.64607ec.png +0 -0
  113. package/dist/assets/img/Zalo.6845707.png +0 -0
  114. package/dist/assets/img/award1a.1a58e10.png +0 -0
  115. package/dist/assets/img/award3a.3b74423.png +0 -0
  116. package/dist/assets/img/award4a.ed6ccd4.png +0 -0
  117. package/dist/assets/img/award5.39eb7ae.png +0 -0
  118. package/dist/assets/img/bubble_default.7d5e4ab.svg +0 -20
  119. package/dist/assets/img/caret.998eb8f.svg +0 -1
  120. package/dist/assets/img/convos_empty.2353007.svg +0 -72
  121. package/dist/assets/img/default.06e6ee0.jpg +0 -0
  122. package/dist/assets/img/default_avatar.5b74dc1.png +0 -0
  123. package/dist/assets/img/done_gray.d7e8203.svg +0 -4
  124. package/dist/assets/img/done_green.b817fd4.svg +0 -4
  125. package/dist/assets/img/emoji/messenger/sub_23.529_58.824.d5faf14.png +0 -0
  126. package/dist/assets/img/emoji/messenger/sub_23.529_60.784.1420241.png +0 -0
  127. package/dist/assets/img/emoji/messenger/sub_25.490_0.000.1e6b2c0.png +0 -0
  128. package/dist/assets/img/emoji/messenger/sub_25.490_45.098.3dfbc08.png +0 -0
  129. package/dist/assets/img/emoji/messenger/sub_25.490_5.882.4b49e94.png +0 -0
  130. package/dist/assets/img/emoji/messenger/sub_27.451_72.549.7114f58.png +0 -0
  131. package/dist/assets/img/emoji/messenger/sub_27.451_84.314.231e2b7.png +0 -0
  132. package/dist/assets/img/emoji/messenger/sub_27.451_96.078.ddbb008.png +0 -0
  133. package/dist/assets/img/emoji/messenger/sub_29.412_5.882.61f3359.png +0 -0
  134. package/dist/assets/img/emoji/messenger/sub_58.824_100.000.6df72bc.png +0 -0
  135. package/dist/assets/img/emoji/messenger/sub_58.824_45.098.3d7a7ad.png +0 -0
  136. package/dist/assets/img/emoji/messenger/sub_58.824_47.059.0f4d6e2.png +0 -0
  137. package/dist/assets/img/emoji/messenger/sub_58.824_54.902.65724c1.png +0 -0
  138. package/dist/assets/img/emoji/messenger/sub_58.824_64.706.9da3cba.png +0 -0
  139. package/dist/assets/img/emoji/messenger/sub_58.824_72.549.edca5cf.png +0 -0
  140. package/dist/assets/img/emoji/messenger/sub_58.824_78.431.f910f2a.png +0 -0
  141. package/dist/assets/img/emoji/messenger/sub_58.824_88.235.def4e71.png +0 -0
  142. package/dist/assets/img/emoji/messenger/sub_60.784_11.765.49c03d0.png +0 -0
  143. package/dist/assets/img/emoji/messenger/sub_60.784_27.451.46b54e5.png +0 -0
  144. package/dist/assets/img/emoji/messenger/sub_60.784_29.412.e36d284.png +0 -0
  145. package/dist/assets/img/emoji/messenger/sub_60.784_3.922.bb191b0.png +0 -0
  146. package/dist/assets/img/emoji/messenger/sub_60.784_35.294.af7b927.png +0 -0
  147. package/dist/assets/img/emoji/messenger/sub_60.784_7.843.98f2a99.png +0 -0
  148. package/dist/assets/img/empty.29bed2d.svg +0 -23
  149. package/dist/assets/img/empty_1.0b98af0.svg +0 -11
  150. package/dist/assets/img/examplte_logo.f86535f.svg +0 -1
  151. package/dist/assets/img/external-link.90577cc.svg +0 -1
  152. package/dist/assets/img/fb_inverse_circle.36c2cfc.png +0 -0
  153. package/dist/assets/img/ghn.070f8e3.svg +0 -17
  154. package/dist/assets/img/ghtk.326eac1.svg +0 -18
  155. package/dist/assets/img/image_default.be0698b.png +0 -0
  156. package/dist/assets/img/info.ebce7ea.svg +0 -1
  157. package/dist/assets/img/loader.37000a7.svg +0 -1
  158. package/dist/assets/img/loading_static.8f403ae.svg +0 -10
  159. package/dist/assets/img/main-service1.d536cc2.png +0 -0
  160. package/dist/assets/img/main-service2.9b99549.png +0 -0
  161. package/dist/assets/img/not_found_search.2ddb8d1.png +0 -0
  162. package/dist/assets/img/package.8d37d0f.svg +0 -5
  163. package/dist/assets/img/package_fade.763c001.svg +0 -1
  164. package/dist/assets/img/rating--average.1ea492c.svg +0 -12
  165. package/dist/assets/img/rating--great.e3d712e.svg +0 -16
  166. package/dist/assets/img/rating--poor.2938a25.svg +0 -12
  167. package/dist/assets/img/search.f9705ff.svg +0 -1
  168. package/dist/assets/img/send.6db52a9.svg +0 -3
  169. package/dist/assets/img/shop.f7dc7d8.svg +0 -1
  170. package/dist/assets/img/shop_faded.df7845a.svg +0 -1
  171. package/dist/assets/img/subiz-mono.877e9f5.svg +0 -3
  172. package/dist/assets/img/x.26fdfa3.svg +0 -5
  173. package/dist/malicious-app.js +0 -13
  174. package/dist/screenshoot.html +0 -7
  175. package/dist/screenshoot.js +0 -5953
@@ -4,7 +4,5 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _default = require('css-loader!less-loader!../../assets/less/chatbox.less');
9
-
10
8
  exports.default = _default;
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = bind;
7
-
8
7
  /**
9
8
  * @fileoverview dragscroll - scroll area by dragging
10
9
  * @version 0.0.8
@@ -12,13 +11,13 @@ exports.default = bind;
12
11
  * @license MIT, see http://github.com/asvd/dragscroll
13
12
  * @copyright 2015 asvd <heliosframework@gmail.com>
14
13
  */
14
+
15
15
  function bind(el) {
16
16
  if (!el) return;
17
17
  el.removeEventListener('mousedown', el.md, 0);
18
18
  window.removeEventListener('mouseup', el.mu, 0);
19
19
  window.removeEventListener('mousemove', el.mm, 0);
20
20
  var lastClientX, pushed;
21
-
22
21
  el.md = function (e) {
23
22
  if (!el.hasAttribute('nochilddrag') || !document.elementFromPoint(e.pageX, e.pageY)) {
24
23
  pushed = 1;
@@ -26,17 +25,14 @@ function bind(el) {
26
25
  e.preventDefault();
27
26
  }
28
27
  };
29
-
30
28
  el.mu = () => {
31
29
  pushed = 0;
32
30
  };
33
-
34
31
  el.mm = function (e) {
35
32
  if (!pushed) return;
36
33
  el.scrollLeft -= -lastClientX + e.clientX;
37
34
  lastClientX = e.clientX;
38
35
  };
39
-
40
36
  el.addEventListener('mousedown', el.md, 0);
41
37
  window.addEventListener('mouseup', el.mu, 0);
42
38
  window.addEventListener('mousemove', el.mm, 0);
@@ -4,58 +4,39 @@ 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
  var _ChatButton = _interopRequireDefault(require("./ChatButton.js"));
11
-
12
9
  var _Widget = _interopRequireDefault(require("./Widget.js"));
13
-
14
10
  var _common = require("../common.js");
15
-
16
11
  var _preact = require("preact");
17
-
18
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
-
20
13
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
21
-
22
14
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
23
-
24
15
  let promiseMainCSS = (() => Promise.resolve().then(() => _interopRequireWildcard(require('./css.js'))))();
25
-
26
16
  class Main extends _common.Com {
27
17
  constructor(props) {
28
18
  super(props);
29
19
  this.refButton = (0, _preact.createRef)();
30
20
  }
31
-
32
21
  async refreshCSS() {
33
22
  let plugins = this.props.store.matchPlugin();
34
-
35
23
  let found = _index.default.find(plugins, plugin => plugin.id === this.props.plugin.id);
36
-
37
24
  if (!found) return;
38
25
  let css = (await promiseMainCSS).default.default.toString();
39
-
40
26
  var outcss = _index.default.replaceCssVariable(css, found.chatbox);
41
-
42
27
  _index.default.setCss(this.props.plugin.id, this.$cssStyleDiv, outcss);
43
28
  }
44
-
45
29
  componentWillUnmount() {
46
30
  _index.default.setCss(this.props.plugin.id, this.$cssStyleDiv, '');
47
31
  }
48
-
49
32
  async componentDidMount() {
50
33
  this.$cssStyleDiv = document.getElementById('subiz-style-for-' + this.props.plugin.id);
51
-
52
34
  if (!this.$cssStyleDiv) {
53
35
  this.$cssStyleDiv = document.createElement('style');
54
36
  document.head.appendChild(this.$cssStyleDiv);
55
37
  this.$cssStyleDiv.type = 'text/css';
56
38
  this.$cssStyleDiv.id = 'subiz-style-for-' + this.props.plugin.id;
57
39
  }
58
-
59
40
  this.setState({
60
41
  cssready: false,
61
42
  isShowWidget: false,
@@ -70,7 +51,6 @@ class Main extends _common.Com {
70
51
  this.setState({
71
52
  cssready: true
72
53
  });
73
-
74
54
  if (this.props.store.matchIsOpen() && this.props.store.matchLastview().view) {
75
55
  if (this.props.store.isMobile()) return;
76
56
  this.showWidget(Object.assign({}, this.props.store.matchLastview().opts, {
@@ -81,7 +61,6 @@ class Main extends _common.Com {
81
61
  if (!this.state.isShowWidget) this.hideWidget();
82
62
  }
83
63
  }
84
-
85
64
  render() {
86
65
  if (!this.state.cssready) return null;
87
66
  if (_index.default.isUserBanned(this.props.store.matchUser())) return null;
@@ -107,22 +86,18 @@ class Main extends _common.Com {
107
86
  t: this.props.t
108
87
  }));
109
88
  }
110
-
111
89
  checkExpand() {
112
90
  if (this.props.store.isMobile()) return;
113
91
  if (this.props.plugin._no_auto_expand) return;
114
92
  if (this.props.store.matchHasManuallyClosed()) return;
115
93
  let convoM = this.props.store.matchConvo('*');
116
-
117
94
  let redconvo = _index.default.find(convoM, convo => !_index.default.isConvoSeen(convo, this.props.store.matchUser().id));
118
-
119
95
  if (!redconvo || !redconvo.id) return;
120
96
  if (!this.state.isShowWidget) this.showWidget({
121
97
  view: 'chat',
122
98
  cid: redconvo.id
123
99
  });
124
100
  }
125
-
126
101
  getCurrentView() {
127
102
  return {
128
103
  is_show_widget: this.state.isShowWidget,
@@ -130,33 +105,27 @@ class Main extends _common.Com {
130
105
  view: this.state.widgetView
131
106
  };
132
107
  }
133
-
134
108
  async showWidget(p) {
135
109
  this.refButton.current && this.refButton.current.ClearPreview();
136
-
137
110
  if (!p.view) {
138
111
  let lastview = this.props.store.matchLastview() || {};
139
112
  p.view = _index.default.get(lastview, 'view');
140
113
  p.cid = _index.default.get(lastview, 'opts.cid');
141
114
  }
142
-
143
115
  p = p || {};
144
-
145
116
  if (!p.view && !p.cid) {
146
117
  let convoM = this.props.store.matchConvo('*');
147
-
148
118
  let redconvo = _index.default.find(convoM, convo => !_index.default.isConvoSeen(convo, this.props.store.matchUser().id));
149
-
150
119
  p.cid = _index.default.get(redconvo, 'id', _index.default.get(convoM, '0.id'));
151
120
  p.view = 'chat';
152
121
  }
153
-
154
122
  if (this.props.store.isMobile()) modifyViewport();
155
123
  this.setState({
156
124
  widgetConvoId: p.cid,
157
125
  widgetView: p.view
158
126
  });
159
127
  this.props.store.setIsOpen(true);
128
+
160
129
  this.forceUpdate();
161
130
  this.setState({
162
131
  isShowWidget: true
@@ -165,15 +134,12 @@ class Main extends _common.Com {
165
134
  cid: p.cid
166
135
  });
167
136
  }
168
-
169
137
  showGreeting() {
170
138
  this.refButton.current && this.refButton.current.ShowGreeting();
171
139
  }
172
-
173
140
  hideGreeting() {
174
141
  this.refButton.current && this.refButton.current.HideGreeting();
175
142
  }
176
-
177
143
  hideWidget() {
178
144
  restoreViewport();
179
145
  this.props.store.setIsOpen(false);
@@ -181,23 +147,18 @@ class Main extends _common.Com {
181
147
  isShowWidget: false
182
148
  });
183
149
  }
184
-
185
150
  onWidgetClose() {
186
151
  this.refButton.current && this.refButton.current.ClearPreview();
187
152
  this.props.store.setHasManuallyClosed();
188
153
  this.hideWidget();
189
154
  }
190
-
191
155
  }
192
-
193
156
  exports.default = Main;
194
-
195
157
  function restoreViewport() {
196
158
  if (document.body && document.body.classList) document.body.classList.remove('sbz_no_scroll');
197
159
  let metatag = document.getElementById('subiz-meta-viewport');
198
160
  if (metatag) metatag.remove();
199
161
  }
200
-
201
162
  function modifyViewport() {
202
163
  if (document.body && document.body.classList) document.body.classList.add('sbz_no_scroll');
203
164
  let metatag = document.createElement('meta');
@@ -4,11 +4,8 @@ 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
-
12
9
  class _default {
13
10
  constructor(config) {
14
11
  this.duration = config.duration || 100;
@@ -16,11 +13,9 @@ class _default {
16
13
  this.maxY = config.maxY || 500;
17
14
  this.minY = config.minY || 0;
18
15
  }
19
-
20
16
  play(v, y0, cb) {
21
17
  this.stop();
22
18
  var t0;
23
-
24
19
  var run = t => {
25
20
  if (!t) t = new _index.default.Date().getTime();
26
21
  var deltaT = t - t0;
@@ -29,7 +24,6 @@ class _default {
29
24
  if (done) return this.stop();
30
25
  this.animationframe = window.requestAnimationFrame(run);
31
26
  };
32
-
33
27
  this.animationframe = window.requestAnimationFrame(t => {
34
28
  t0 = t || new _index.default.Date().getTime();
35
29
  run(t0);
@@ -50,15 +44,11 @@ class _default {
50
44
  var y = linearTransform(y0, towardY, t, this.duration);
51
45
  return [y, eqFloat(y, towardY)];
52
46
  }
53
-
54
47
  stop() {
55
48
  window.cancelAnimationFrame(this.animationframe);
56
49
  }
57
-
58
50
  }
59
-
60
51
  exports.default = _default;
61
-
62
52
  function linearTransform(from, to, t, duration) {
63
53
  if (eqFloat(from, to)) return from;
64
54
  var s = to - from;
@@ -67,7 +57,6 @@ function linearTransform(from, to, t, duration) {
67
57
  if (from < to && x > to) x = to;else if (to < from && x < to) x = to;
68
58
  return x;
69
59
  }
70
-
71
60
  function eqFloat(a, b) {
72
61
  return Math.abs(a - b) <= 0.001;
73
62
  }
@@ -4,13 +4,9 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _common = require("../common.js");
9
-
10
8
  var _preact = require("preact");
11
-
12
9
  const loadingimg = require('../../assets/img/loading_static.svg');
13
-
14
10
  class Spinner extends _common.Com {
15
11
  render() {
16
12
  let mode = (this.props.mode + '').toLowerCase();
@@ -21,14 +17,12 @@ class Spinner extends _common.Com {
21
17
  let style = `width: ${size}px !important;height: ${size}px!important;color: ${borderColor} !important;border-width: ${borderWidth}px !important;
22
18
  border-left-color: ${borderColor} !important;border-top-color: ${borderColor} !important;
23
19
  border-bottom-color: ${borderColor} !important;border-right-color: ${mainColor} !important;`;
24
-
25
20
  if (this.props.static) {
26
21
  let style = `width: ${size}px !important;height: ${size}px !important;`;
27
22
  if (size < 40) return (0, _preact.h)(LoaderIcon, {
28
23
  size: size + '',
29
24
  style: `stroke:${mainColor}`
30
25
  });
31
-
32
26
  if (this.props.center) {
33
27
  return (0, _preact.h)("div", {
34
28
  class: "loading"
@@ -38,20 +32,16 @@ class Spinner extends _common.Com {
38
32
  src: loadingimg
39
33
  }));
40
34
  }
41
-
42
35
  return (0, _preact.h)("img", {
43
36
  alt: "loading",
44
37
  style: style,
45
38
  src: loadingimg
46
39
  });
47
40
  }
48
-
49
41
  return (0, _preact.h)("div", {
50
42
  class: "spinner1",
51
43
  style: style
52
44
  });
53
45
  }
54
-
55
46
  }
56
-
57
47
  exports.default = Spinner;
@@ -4,18 +4,12 @@ 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
  var _common = require("../common.js");
11
-
12
9
  var _preact = require("preact");
13
-
14
10
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
-
16
11
  var g_pub = new _index.default.Pubsub();
17
12
  setInterval(() => g_pub.publish('time'), 20 * 1000);
18
-
19
13
  class Time extends _common.Com {
20
14
  constructor(props) {
21
15
  super(props);
@@ -24,18 +18,14 @@ class Time extends _common.Com {
24
18
  langCode: 'en_US'
25
19
  });
26
20
  }
27
-
28
21
  updateTime() {
29
22
  var t = '';
30
-
31
23
  if (this.props.ago) {
32
24
  if (this.props.short) {
33
25
  if (Math.abs(this.props.time - new _index.default.Date().getTime()) > 86400000 * 10) {
34
26
  let tim = new _index.default.Date(this.props.time);
35
27
  let tzyear = tim.getFullYear();
36
-
37
28
  let locale = _index.default.get(navigator, 'languages.0', 'en-US');
38
-
39
29
  let tzmonthname = tim.toLocaleDateString(locale, {
40
30
  month: 'short'
41
31
  });
@@ -43,32 +33,25 @@ class Time extends _common.Com {
43
33
  t = tzdate + ' ' + tzmonthname + ' ' + tzyear;
44
34
  }
45
35
  }
46
-
47
36
  if (!t && this.props.time > 0) t = ago(this.props.time, new _index.default.Date().getTime());
48
37
  } else t = _index.default.shortTime(this.props.time, this.props.tzoffset);
49
-
50
38
  if (this.props.uppercase) t = t.toUpperCase();
51
39
  if (t === this.state.t) return;
52
40
  this.setState({
53
41
  t
54
42
  });
55
43
  }
56
-
57
44
  componentDidMount() {
58
45
  g_pub.on2(this, 'time', () => this.updateTime());
59
46
  this.updateTime();
60
47
  }
61
-
62
48
  render() {
63
49
  return (0, _preact.h)("span", {
64
50
  style: this.props.style
65
51
  }, this.state.t);
66
52
  }
67
-
68
53
  }
69
-
70
54
  exports.default = Time;
71
-
72
55
  function ago(timeA, timeB) {
73
56
  const relObj = {
74
57
  s: '%d s',
@@ -126,22 +109,17 @@ function ago(timeA, timeB) {
126
109
  const Tl = T.length;
127
110
  let result;
128
111
  let out;
129
-
130
112
  for (let i = 0; i < Tl; i += 1) {
131
113
  let t = T[i];
132
-
133
114
  if (t.d) {
134
115
  result = (timeA - timeB) / t.d;
135
116
  }
136
-
137
117
  let abs = Math.round(Math.abs(result));
138
-
139
118
  if (abs <= t.r || !t.r) {
140
119
  if (abs <= 1 && i > 0) t = T[i - 1];
141
120
  out = loc[t.l].replace('%d', abs);
142
121
  break;
143
122
  }
144
123
  }
145
-
146
124
  return out;
147
125
  }
@@ -4,35 +4,29 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = bind;
7
-
8
7
  function bind(el) {
9
8
  if (!el) return;
10
9
  el.removeEventListener('touchstart', el.md, 0);
11
10
  window.removeEventListener('touchend', el.mu, 0);
12
11
  window.removeEventListener('touchmove', el.mm, 0);
13
12
  var lastClientX, pushed;
14
-
15
13
  el.md = function (e) {
16
14
  let touch = getFirstTouch(e);
17
-
18
15
  if (!el.hasAttribute('nochilddrag') || !document.elementFromPoint(touch.pageX, touch.pageY)) {
19
16
  pushed = 1;
20
17
  lastClientX = touch.clientX;
21
18
  e.preventDefault();
22
19
  }
23
20
  };
24
-
25
21
  el.mu = () => {
26
22
  pushed = 0;
27
23
  };
28
-
29
24
  el.mm = function (e) {
30
25
  if (!pushed) return;
31
26
  let touch = getFirstTouch(e);
32
27
  el.scrollLeft -= -lastClientX + touch.clientX;
33
28
  lastClientX = touch.clientX;
34
29
  };
35
-
36
30
  el.addEventListener('touchstart', el.md, {
37
31
  passive: true
38
32
  });
@@ -43,7 +37,6 @@ function bind(el) {
43
37
  passive: true
44
38
  });
45
39
  }
46
-
47
40
  function getFirstTouch(ev) {
48
41
  if (!ev.touches) return {};
49
42
  if (!ev.touches.length) return {};
@@ -6,13 +6,9 @@ Object.defineProperty(exports, "__esModule", {
6
6
  exports.Com = exports.Clickaway = void 0;
7
7
  exports.downloadLanguage = downloadLanguage;
8
8
  exports.langMessages = exports.getLocale = void 0;
9
-
10
9
  var _preact = require("preact");
11
-
12
10
  var _index = _interopRequireDefault(require("./util/index.js"));
13
-
14
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
-
16
12
  class Com extends _preact.Component {
17
13
  constructor(props) {
18
14
  super(props);
@@ -20,7 +16,6 @@ class Com extends _preact.Component {
20
16
  setTimeout(() => {
21
17
  if (this.componentWillUnmount) {
22
18
  let old = this.componentWillUnmount.bind(this);
23
-
24
19
  this.componentWillUnmount = () => {
25
20
  old();
26
21
  this._isMounted = false;
@@ -28,51 +23,38 @@ class Com extends _preact.Component {
28
23
  }
29
24
  }, 10);
30
25
  }
31
-
32
26
  }
33
-
34
27
  exports.Com = Com;
35
-
36
28
  class Clickaway extends Com {
37
29
  constructor(props) {
38
30
  super(props);
39
31
  this.setWrapperRef = this.setWrapperRef.bind(this);
40
32
  this.onClick = this.onClick.bind(this);
41
33
  }
42
-
43
34
  componentDidMount() {
44
35
  document.addEventListener('mousedown', this.onClick);
45
36
  }
46
-
47
37
  componentWillUnmount() {
48
38
  document.removeEventListener('mousedown', this.onClick);
49
39
  }
50
-
51
40
  setWrapperRef(node) {
52
41
  this.wrapperRef = node;
53
42
  }
54
-
55
43
  onClick(event) {
56
44
  if (this.wrapperRef && !this.wrapperRef.contains(event.target)) {
57
45
  this.props.onClickaway && this.props.onClickaway();
58
46
  }
59
47
  }
60
-
61
48
  render() {
62
49
  return (0, _preact.h)("div", {
63
50
  ref: this.setWrapperRef
64
51
  }, this.props.children);
65
52
  }
66
-
67
53
  }
68
-
69
54
  exports.Clickaway = Clickaway;
70
-
71
55
  const getLocale = (plugin, loc) => {
72
56
  if (!loc) loc = '';
73
-
74
57
  let found = _index.default.find(plugin.locales, l => l.toLowerCase().trim() === loc.toLowerCase().trim());
75
-
76
58
  if (found) return found;
77
59
  found = _index.default.find(plugin.locales, l => {
78
60
  l = l.replace('-', '_').split('_')[0].trim().toLowerCase();
@@ -82,22 +64,18 @@ const getLocale = (plugin, loc) => {
82
64
  if (found) return found;
83
65
  return plugin.locale || 'en-US';
84
66
  };
85
-
86
67
  exports.getLocale = getLocale;
87
68
  let langMessages = {};
88
69
  exports.langMessages = langMessages;
89
70
  let downloadLock = false;
90
-
91
71
  function downloadLanguage(store, locale, force) {
92
72
  if (downloadLock) return new Promise(resolve => setTimeout(() => downloadLanguage(store, locale, force).then(resolve), 100));
93
73
  downloadLock = true;
94
74
  let messages;
95
-
96
75
  if (locale === 'debug' || langMessages[locale] && !force) {
97
76
  downloadLock = false;
98
77
  return Promise.resolve();
99
78
  }
100
-
101
79
  return store.getLocaleContent(locale).then(res => {
102
80
  downloadLock = false;
103
81
  messages = _index.default.get(res, 'body.messages', []);