@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,29 +4,19 @@ 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
  class ProductAttachments extends _common.Com {
17
12
  render() {
18
13
  let byType = _index.default.get(this.props.ev, 'by.type');
19
-
20
14
  if (byType === 'user') return null;
21
-
22
15
  let attachments = _index.default.get(this.props.ev, 'data.message.attachments', []);
23
-
24
16
  let products = _index.default.filter(attachments, att => _index.default.get(att, 'type') === 'product' || _index.default.get(att, 'type') === 'product_preview');
25
-
26
17
  products = products.filter(product => product.product && product.product.name);
27
18
  if (products.length === 0) return null;
28
19
  let acc = this.props.store.matchAccount();
29
-
30
20
  let $products = _index.default.map(products, (att, index) => {
31
21
  let product = att.product;
32
22
  let $detailbtns = [];
@@ -41,7 +31,6 @@ class ProductAttachments extends _common.Com {
41
31
  class: "product_attachment__btn_external_link"
42
32
  })));
43
33
  console.log('P', product);
44
-
45
34
  if (_index.default.size(product.buttons) > 0) {
46
35
  $detailbtns = $detailbtns.concat(_index.default.map(product.buttons, (button, index) => {
47
36
  if (button.type === 'call_button') {
@@ -52,7 +41,6 @@ class ProductAttachments extends _common.Com {
52
41
  title: button.title
53
42
  }, this.props.t.i18n(button.i18n_title) || button.title);
54
43
  }
55
-
56
44
  if (button.type === 'url_button') {
57
45
  return (0, _preact.h)("a", {
58
46
  class: "product_attachment__btn",
@@ -65,7 +53,6 @@ class ProductAttachments extends _common.Com {
65
53
  class: "product_attachment__btn_external_link"
66
54
  }));
67
55
  }
68
-
69
56
  if (button.type === 'postback_button') {
70
57
  return (0, _preact.h)("a", {
71
58
  class: "product_attachment__btn",
@@ -75,7 +62,6 @@ class ProductAttachments extends _common.Com {
75
62
  }
76
63
  }));
77
64
  }
78
-
79
65
  let $title = (0, _preact.h)("a", {
80
66
  href: url,
81
67
  class: "product_attachment__title",
@@ -87,13 +73,11 @@ class ProductAttachments extends _common.Com {
87
73
  class: "product_attachment__subtitle"
88
74
  }, desc);
89
75
  let $price = null;
90
-
91
76
  if (product.price) {
92
77
  $price = (0, _preact.h)("div", {
93
78
  class: "product_attachment__price"
94
79
  }, product.currency || _index.default.get(acc, 'currency', ''), " ", _index.default.formatCurrency(product.price));
95
80
  }
96
-
97
81
  return (0, _preact.h)("div", {
98
82
  class: 'product_attachment product_attachment__' + byType
99
83
  }, (0, _preact.h)("div", null, (0, _preact.h)("a", {
@@ -106,10 +90,7 @@ class ProductAttachments extends _common.Com {
106
90
  class: "product_attachment__btns"
107
91
  }, $detailbtns));
108
92
  });
109
-
110
93
  return $products;
111
94
  }
112
-
113
95
  }
114
-
115
96
  exports.default = ProductAttachments;
@@ -4,66 +4,48 @@ 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
  class QuickReplies extends _common.Com {
17
12
  constructor(props) {
18
13
  super(props);
19
14
  }
20
-
21
15
  render() {
22
16
  if (_index.default.get(this.props.ev, 'by.type') === 'user') return null;
23
17
  let quickreplies = [];
24
-
25
18
  _index.default.map(_index.default.get(this.props.ev, 'data.message.attachments', []), att => {
26
19
  if (!att) return;
27
-
28
20
  if (att.type === 'quick_replies') {
29
21
  quickreplies = _index.default.get(att, 'quick_replies', []);
30
22
  }
31
23
  });
32
-
33
24
  quickreplies = _index.default.filter(quickreplies, r => r.title);
34
25
  if (quickreplies.length === 0) return null;
35
-
36
26
  let cid = _index.default.convoOfEv(this.props.ev);
37
-
38
27
  let convo = this.props.store.matchConvo(cid);
39
28
  if (_index.default.get(convo, 'state') === 'ended') return null;
40
29
 
41
30
  let events = _index.default.map(this.props.store.listEvents(cid));
42
-
43
31
  events = _index.default.orderBy(events, 'created', 'asc').filter(ev => ev.type === 'message_sent');
44
32
  let evindex = 0;
45
-
46
33
  for (var i = 0; i < events.length; i++) {
47
34
  if (events[i].id === this.props.ev.id) {
48
35
  evindex = i;
49
36
  break;
50
37
  }
51
38
  }
52
-
53
39
  for (var i = evindex + 1; i < events.length; i++) {
54
40
  if (_index.default.get(events[i], 'by.type') === 'user') return null;
55
41
  }
56
-
57
42
  let $replies = _index.default.map(quickreplies, r => (0, _preact.h)("div", {
58
43
  class: "message_quick_reply",
59
44
  onClick: e => this.props.onSelect(r)
60
45
  }, r.title));
61
-
62
46
  return (0, _preact.h)("div", {
63
47
  class: "message_quick_replies"
64
48
  }, $replies);
65
49
  }
66
-
67
50
  }
68
-
69
51
  exports.default = QuickReplies;
@@ -4,56 +4,40 @@ 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 _releaseAnimation = _interopRequireDefault(require("./releaseAnimation.js"));
11
-
12
9
  var _common = require("../common.js");
13
-
14
10
  var _preact = require("preact");
15
-
16
11
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
-
18
12
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
19
-
20
13
  const POPUP_MAX_HEIGHT = 400;
21
14
  const POPUP_HARD_MAX_HEIGHT = 500;
22
15
  const POPUP_MIN_HEIGHT = 0;
23
-
24
16
  class Rating extends _common.Com {
25
17
  constructor(props) {
26
18
  super(props);
27
-
28
19
  _defineProperty(this, "state", {
29
20
  hide: true,
30
21
  ratingHeight: 0,
31
22
  overlayOpacity: 0.3,
32
23
  comment: ''
33
24
  });
34
-
35
25
  this.refComment = (0, _preact.createRef)();
36
26
  this.refRating = (0, _preact.createRef)();
37
27
  this.refHandle = (0, _preact.createRef)();
38
28
  }
39
-
40
29
  componentDidMount() {
41
30
  this.props.store.onUpdate(this, () => {
42
31
  if (this.shoudDisplay()) this.open();
43
32
  });
44
33
  this.props.store.onConvoEvent(this, ev => {
45
34
  var cid = _index.default.convoOfEv(ev);
46
-
47
35
  if (cid !== this.props.cid) return;
48
36
  if (this.shoudDisplay()) this.open();
49
37
  });
50
-
51
38
  this.mouseUp = e => this.onMouseUp(e);
52
-
53
39
  this.mouseMove = e => this.onMouseMove(e);
54
-
55
40
  this.mouseDown = e => this.onMouseDown(e);
56
-
57
41
  var $ratingHandle = this.refHandle.current;
58
42
  $ratingHandle.addEventListener('mousedown', this.mouseDown, {
59
43
  passive: true
@@ -81,7 +65,6 @@ class Rating extends _common.Com {
81
65
  this.close();
82
66
  if (this.shoudDisplay() || this.props.forceView === 'rating') this.open();
83
67
  }
84
-
85
68
  componentWillUnmount() {
86
69
  var $ratingHandle = this.refHandle.current;
87
70
  $ratingHandle.removeEventListener('mousedown', this.mouseDown, 0);
@@ -91,7 +74,6 @@ class Rating extends _common.Com {
91
74
  window.removeEventListener('mousemove', this.mouseMove, 0);
92
75
  window.removeEventListener('touchmove', this.mouseMove, 0);
93
76
  }
94
-
95
77
  render() {
96
78
  let cls = this.state.hide ? 'd-none' : '';
97
79
  return (0, _preact.h)("div", {
@@ -152,29 +134,24 @@ class Rating extends _common.Com {
152
134
  onClick: e => this.onCloseRating(e)
153
135
  }, this.props.t('no_thanks')))));
154
136
  }
155
-
156
137
  shoudDisplay() {
157
138
  if (!this.props.cid) return false;
158
139
  var requested;
159
140
  var rated;
160
141
  var ended;
161
142
  let user = this.props.store.matchUser();
162
-
163
143
  _index.default.map(this.props.store.listEvents(this.props.cid), ev => {
164
144
  if (_index.default.get(ev, 'type') === 'conversation_state_updated' && _index.default.get(ev, 'data.conversation.state') === 'ended') {
165
145
  ended = ev;
166
146
  }
167
-
168
147
  if (_index.default.get(ev, 'type') === 'conversation_rating_requested') requested = ev;
169
148
  if (_index.default.get(ev, 'type') === 'conversation_rated' && _index.default.get(ev, 'by.id') === user.id) rated = ev;
170
149
  });
171
-
172
150
  if (rated) return false;
173
151
  let accountSetting = this.props.plugin.chatbox;
174
152
  var auto = accountSetting.auto_request_rating && ended;
175
153
  return requested || auto;
176
154
  }
177
-
178
155
  onCloseRating() {
179
156
  this.props.onRate && this.props.onRate({
180
157
  no_rating: true,
@@ -182,7 +159,6 @@ class Rating extends _common.Com {
182
159
  });
183
160
  this.close();
184
161
  }
185
-
186
162
  onRatingPoor() {
187
163
  this.props.onRate && this.props.onRate({
188
164
  rating: 1,
@@ -190,7 +166,6 @@ class Rating extends _common.Com {
190
166
  });
191
167
  this.close();
192
168
  }
193
-
194
169
  onRatingAverage() {
195
170
  this.props.onRate && this.props.onRate({
196
171
  rating: 3,
@@ -198,7 +173,6 @@ class Rating extends _common.Com {
198
173
  });
199
174
  this.close();
200
175
  }
201
-
202
176
  onRatingGreat() {
203
177
  this.props.onRate && this.props.onRate({
204
178
  rating: 5,
@@ -206,7 +180,6 @@ class Rating extends _common.Com {
206
180
  });
207
181
  this.close();
208
182
  }
209
-
210
183
  open() {
211
184
  if (!this.state.hide) return;
212
185
  this.setState({
@@ -226,7 +199,6 @@ class Rating extends _common.Com {
226
199
  });
227
200
  });
228
201
  }
229
-
230
202
  close() {
231
203
  if (this.state.hide) return;
232
204
  if (!this.refRating.current) return;
@@ -237,7 +209,6 @@ class Rating extends _common.Com {
237
209
  ratingHeight: h,
238
210
  overlayOpacity: Math.min(1, (h - POPUP_MIN_HEIGHT) / (POPUP_HARD_MAX_HEIGHT - POPUP_MIN_HEIGHT))
239
211
  });
240
-
241
212
  if (h < POPUP_MIN_HEIGHT + 10) {
242
213
  if (!this.state.hide) {
243
214
  this.setState({
@@ -247,7 +218,6 @@ class Rating extends _common.Com {
247
218
  }
248
219
  });
249
220
  }
250
-
251
221
  onMouseDown(e) {
252
222
  this.mousePushed = true;
253
223
  this.animation.stop();
@@ -255,7 +225,6 @@ class Rating extends _common.Com {
255
225
  if (e.touches && e.touches[0]) e = e.touches[0];
256
226
  this.mousePushedDy = e.pageY - window.pageYOffset - this.refRating.current.getBoundingClientRect().y;
257
227
  }
258
-
259
228
  onMouseUp(e) {
260
229
  if (!this.mousePushed) return;
261
230
  if (e.touches && e.touches[0]) e = e.touches[0];
@@ -267,7 +236,6 @@ class Rating extends _common.Com {
267
236
  ratingHeight: h,
268
237
  overlayOpacity: Math.min(1, (h - POPUP_MIN_HEIGHT) / (POPUP_HARD_MAX_HEIGHT - POPUP_MIN_HEIGHT))
269
238
  });
270
-
271
239
  if (h < POPUP_MIN_HEIGHT + 10) {
272
240
  if (!this.state.hide) {
273
241
  this.setState({
@@ -280,7 +248,6 @@ class Rating extends _common.Com {
280
248
  }
281
249
  });
282
250
  }
283
-
284
251
  onMouseMove(e) {
285
252
  if (!this.mousePushed) return;
286
253
  if (e.touches && e.touches[0]) e = e.touches[0];
@@ -290,18 +257,14 @@ class Rating extends _common.Com {
290
257
  my = my - this.mousePushedDy;
291
258
  var K = 10000;
292
259
  var height = this.refRating.current.getBoundingClientRect().bottom - my;
293
-
294
260
  if (height > POPUP_MAX_HEIGHT) {
295
261
  var beta = K / (POPUP_HARD_MAX_HEIGHT - POPUP_MAX_HEIGHT) - POPUP_MAX_HEIGHT;
296
262
  height = POPUP_HARD_MAX_HEIGHT - K / (height + beta);
297
263
  }
298
-
299
264
  this.setState({
300
265
  ratingHeight: height,
301
266
  overlayOpacity: Math.min(1, (height - POPUP_MIN_HEIGHT) / (POPUP_HARD_MAX_HEIGHT - POPUP_MIN_HEIGHT))
302
267
  });
303
268
  }
304
-
305
269
  }
306
-
307
270
  exports.default = Rating;
@@ -4,24 +4,19 @@ 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
  class ShadowDomRoot extends _common.Com {
13
10
  constructor(props) {
14
11
  super(props);
15
12
  this.ref = (0, _preact.createRef)();
16
13
  }
17
-
18
14
  componentDidMount() {
19
15
  this.shadowRoot = this.ref.current.attachShadow({
20
16
  mode: 'open'
21
17
  });
22
18
  this.update(this.props.html);
23
19
  }
24
-
25
20
  update(html) {
26
21
  this.shadowRoot.innerHTML = `<style type="text/css">
27
22
  body { font-family: 'Roboto', sans-serif!important; font-size: 14px!important; line-height: 20px; overflow-y: hidden; margin:0 }
@@ -35,17 +30,13 @@ p { margin-bottom: 0; margin-top: 0;}
35
30
  </style>
36
31
  <div>${html}</div>`;
37
32
  let links = this.shadowRoot.querySelectorAll('a');
38
-
39
33
  for (var i = 0; i < links.length; i++) links[i].target = '_blank';
40
34
  }
41
-
42
35
  render() {
43
36
  return (0, _preact.h)("div", {
44
37
  ref: this.ref,
45
38
  style: "white-space: normal !important"
46
39
  });
47
40
  }
48
-
49
41
  }
50
-
51
42
  exports.default = ShadowDomRoot;
@@ -4,79 +4,54 @@ 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
  var _Emoji = _interopRequireDefault(require("./Emoji.js"));
15
-
16
11
  var _ShadowDomRoot = _interopRequireDefault(require("./ShadowDomRoot.js"));
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 mustrerender = [];
25
-
26
16
  let marked = (obj, text) => {
27
17
  mustrerender.push(obj);
28
18
  return '';
29
19
  };
30
-
31
20
  const loadMarked = () => Promise.resolve().then(() => _interopRequireWildcard(require('marked')));
32
-
33
21
  (async () => {
34
22
  let markedf = (await loadMarked()).marked;
35
-
36
23
  marked = (obj, text) => markedf(text);
37
-
38
24
  _index.default.map(mustrerender, obj => obj.forceUpdate());
39
-
40
25
  mustrerender = [];
41
26
  })();
42
-
43
27
  class TextMessage extends _common.Com {
44
28
  render() {
45
29
  var format = _index.default.get(this.props.ev, 'data.message.format', 'plaintext');
46
-
47
30
  if (format === 'markdown') return this.renderMarkdown();
48
31
  if (format === 'delta') return this.renderDelta();
49
32
  return this.renderPlainText();
50
33
  }
51
-
52
34
  renderPlainText() {
53
35
  var text = _index.default.get(this.props.ev, 'data.message.text');
54
-
55
36
  text = _index.default.trim(text);
56
37
  if (_index.default.size(text) === 0) return null;
57
-
58
38
  let byType = _index.default.get(this.props.ev, 'by.type');
59
-
60
39
  var tags = _index.default.extractText(text).map(tag => {
61
40
  if (tag.type === 'emoji') return (0, _preact.h)(_Emoji.default, {
62
41
  emojiCode: tag.text,
63
42
  byType: byType
64
43
  });
65
-
66
44
  if (tag.type === 'link') {
67
45
  let url = tag.text || '';
68
-
69
46
  if (!url.startsWith('//') && !url.startsWith('https://') && !url.startsWith('http://') && !url.startsWith('data:')) {
70
47
  url = '//' + url;
71
48
  }
72
-
73
49
  return (0, _preact.h)("a", {
74
50
  href: url,
75
51
  target: "_blank",
76
52
  onClick: e => this.props.onLink(e, url)
77
53
  }, tag.text);
78
54
  }
79
-
80
55
  if (tag.type === 'phone') return (0, _preact.h)("a", {
81
56
  href: 'tel:' + tag.text
82
57
  }, tag.text);
@@ -85,58 +60,45 @@ class TextMessage extends _common.Com {
85
60
  }, tag.text);
86
61
  return tag.text;
87
62
  });
88
-
89
63
  if (_index.default.size(tags) === 0) return null;
90
-
91
64
  if (byType === 'agent') {
92
65
  return (0, _preact.h)("div", {
93
66
  class: "message-agent message-text--agent"
94
67
  }, tags);
95
68
  }
96
-
97
69
  return (0, _preact.h)("div", {
98
70
  class: "message-user message-text--user"
99
71
  }, tags);
100
72
  }
101
-
102
73
  renderDelta() {
103
74
  let deltas = _index.default.get(this.props.ev, 'data.message.quill_delta') || _index.default.get(this.props.ev, 'data.message.text');
104
-
105
75
  let quilldeltas = _index.default.parseJSON(deltas) || {};
106
76
  quilldeltas = trimQuillDelta(quilldeltas);
107
77
  if (!quilldeltas || _index.default.size(quilldeltas.ops) === 0) return null;
108
-
109
78
  let $deltas = _index.default.map(quilldeltas.ops, delta => {
110
79
  let html = '';
111
80
  let insert = delta.insert;
112
81
  let attributes = delta.attributes;
113
-
114
82
  if (insert.dynamicField) {
115
83
  return _index.default.get(insert, 'dynamicField.text', '');
116
84
  }
117
-
118
85
  if (insert.mention) {
119
86
  if (insert.mention.id == '*' || insert.mention.id == 'all') {
120
87
  return (0, _preact.h)("span", {
121
88
  class: "mention"
122
89
  }, "@", this.$t('all'));
123
90
  }
124
-
125
91
  let ag = store.matchAgent(insert.mention.id);
126
-
127
92
  let name = _index.default.getAgentDisplayName(ag, insert.mention.fullname);
128
-
129
93
  return (0, _preact.h)("span", {
130
94
  class: "mention",
131
95
  "data-agent-id": ag.id,
132
96
  "data-agent-fullname": name
133
97
  }, "@", name);
134
98
  }
135
-
136
99
  if (insert.emoji) return (0, _preact.h)(_Emoji.default, {
137
100
  emojiCode: `:${insert.emoji}:`
138
101
  });
139
-
140
102
  if (typeof insert === 'string') {
141
103
  let $tags = _index.default.extractText(insert).map((tag, i) => {
142
104
  if (tag.type === 'link') {
@@ -145,10 +107,8 @@ class TextMessage extends _common.Com {
145
107
  target: "_blank"
146
108
  }, tag.text);
147
109
  }
148
-
149
110
  return tag.text;
150
111
  });
151
-
152
112
  if (attributes) {
153
113
  if (attributes.italic && attributes.bold) return (0, _preact.h)("span", {
154
114
  style: "font-weight: bold !important; font-style: italic !important"
@@ -160,38 +120,28 @@ class TextMessage extends _common.Com {
160
120
  style: "font-weight: bold !important"
161
121
  }, $tags);
162
122
  }
163
-
164
123
  return (0, _preact.h)("span", null, $tags);
165
124
  }
166
-
167
125
  return null;
168
126
  });
169
-
170
127
  let byType = _index.default.get(this.ev, 'by.type');
171
-
172
128
  if (byType !== 'user') byType = 'agent';
173
129
  if (_index.default.size($deltas) === 0) return null;
174
-
175
130
  if (byType === 'agent') {
176
131
  return (0, _preact.h)("div", {
177
132
  class: "message-agent message-text--agent"
178
133
  }, $deltas);
179
134
  }
180
-
181
135
  return (0, _preact.h)("div", {
182
136
  class: "message-user message-text--user"
183
137
  }, $deltas);
184
138
  }
185
-
186
139
  renderMarkdown(text) {
187
140
  if (!text) text = _index.default.get(this.props.ev, 'data.message.text');
188
141
  if (_index.default.size(text) === 0) return null;
189
-
190
142
  let byType = _index.default.get(this.props.ev, 'by.type');
191
-
192
143
  text = _index.default.trim(text);
193
144
  if (_index.default.size(text) === 0) return null;
194
-
195
145
  if (byType === 'agent') {
196
146
  return (0, _preact.h)("div", {
197
147
  class: "markdown-message message-agent message-text--agent"
@@ -199,7 +149,6 @@ class TextMessage extends _common.Com {
199
149
  html: marked(this, text)
200
150
  }));
201
151
  }
202
-
203
152
  return (0, _preact.h)("div", {
204
153
  class: "d-flex flex-column align-items-end"
205
154
  }, (0, _preact.h)("div", {
@@ -208,37 +157,27 @@ class TextMessage extends _common.Com {
208
157
  html: marked(this, text)
209
158
  })));
210
159
  }
211
-
212
160
  }
213
-
214
161
  exports.default = TextMessage;
215
-
216
162
  function deltaToMarkdown(deltas) {
217
163
  let output = '';
218
-
219
164
  _index.default.each(deltas, (delta, idx) => {
220
165
  let text = '';
221
166
  let insert = delta.insert;
222
167
  let attributes = delta.attributes;
223
168
  if (insert.emoji) text = emojiCodes[insert.emoji] || '';
224
-
225
169
  if (attributes) {
226
170
  if (attributes.italic && attributes.bold) text = `*__${insert}__*`;else if (attributes.italic) text = `*${insert}*`;else if (attributes.bold) text = `**${insert}**`;else text = insert;
227
171
  }
228
-
229
172
  if (insert.dynamicField) text = `${_index.default.get(insert, 'dynamicField.text', '')}`;
230
-
231
173
  if (!insert.emoji && !attributes && !insert.dynamicField) {
232
174
  text = insert || '';
233
175
  text = text.replace(/\n/g, '<br/>');
234
176
  }
235
-
236
177
  output += text;
237
178
  });
238
-
239
179
  return output;
240
180
  }
241
-
242
181
  const emojiCodes = {
243
182
  like: '👍',
244
183
  unlike: '👎',
@@ -256,14 +195,12 @@ const emojiCodes = {
256
195
  surprised: '😮',
257
196
  wink: '😉'
258
197
  };
259
-
260
198
  function trimQuillDelta(delta) {
261
199
  if (!delta) return delta;
262
200
  if (!delta.ops || !delta.ops.length) return delta;
263
201
  let last = delta.ops[delta.ops.length - 1];
264
202
  if (typeof last.insert != 'string') return delta;
265
203
  let insert = last.insert.trim();
266
-
267
204
  if (insert) {
268
205
  if (last.insert != insert) {
269
206
  let newops = delta.ops.slice();
@@ -284,7 +221,6 @@ function trimQuillDelta(delta) {
284
221
  ops: newops
285
222
  });
286
223
  }
287
-
288
224
  function absLink(url) {
289
225
  if (!url.startsWith('http://') && !url.startsWith('https://') && !url.startsWith('//')) return 'http://' + url;
290
226
  return url;
@@ -4,20 +4,14 @@ 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
  class Typing extends _common.Com {
17
12
  constructor(props) {
18
13
  super(props);
19
14
  }
20
-
21
15
  componentDidMount() {
22
16
  this.setState({
23
17
  isShow: false,
@@ -27,11 +21,8 @@ class Typing extends _common.Com {
27
21
  if (_index.default.convoOfEv(ev) !== this.props.cid) return;
28
22
  let user = this.props.store.matchUser();
29
23
  if (_index.default.get(ev, 'by.id') === user.id) return;
30
-
31
24
  let oldby = _index.default.get(this.state.ev, 'by.id');
32
-
33
25
  if (oldby && _index.default.get(ev, 'by.id') !== oldby) return;
34
-
35
26
  if (_index.default.get(ev, 'type') === 'message_sent') {
36
27
  if (this.timer) clearTimeout(this.timer);
37
28
  this.timer = null;
@@ -58,20 +49,14 @@ class Typing extends _common.Com {
58
49
  }, 5000);
59
50
  });
60
51
  }
61
-
62
52
  render() {
63
53
  let account = this.props.store.matchAccount();
64
54
  var cls = this.state.isShow ? '' : 'typing--hidden';
65
-
66
55
  let byid = _index.default.get(this.state.ev, 'by.display_id', _index.default.get(this.state.ev, 'by.id'));
67
-
68
56
  let agentName = _index.default.getAgentDisplayName(account, this.props.store.matchAgent(byid));
69
-
70
57
  return (0, _preact.h)("div", {
71
58
  class: `typing ${cls}`
72
59
  }, agentName, " ", this.props.t('typing'));
73
60
  }
74
-
75
61
  }
76
-
77
62
  exports.default = Typing;