@subiz/widget-v4 4.0.46 → 4.0.51

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 (92) hide show
  1. package/assets/img/default.jpg +0 -0
  2. package/assets/img/external-link.svg +1 -0
  3. package/assets/less/message.less +210 -42
  4. package/compiled_src/chatbox/ChatButton.js +12 -6
  5. package/compiled_src/chatbox/Event.js +22 -2
  6. package/compiled_src/chatbox/MessageInput.js +8 -3
  7. package/compiled_src/chatbox/OrderAttachments.js +113 -0
  8. package/compiled_src/chatbox/ProductAttachments.js +79 -0
  9. package/compiled_src/chatbox/TextMessage.js +1 -1
  10. package/compiled_src/chatbox/Widget.js +18 -3
  11. package/compiled_src/chatbox/main.js +5 -4
  12. package/compiled_src/chatbox/time.js +94 -7
  13. package/compiled_src/common.js +1 -1
  14. package/compiled_src/contact/contact.js +1 -1
  15. package/compiled_src/plugin.js +8 -2
  16. package/compiled_src/store/store.js +150 -5
  17. package/compiled_src/util/campaign.js +2 -2
  18. package/compiled_src/util/common.js +78 -49
  19. package/compiled_src/util/extractor.js +3 -3
  20. package/compiled_src/util/pubsub.js +6 -3
  21. package/dist/17d02a15859.178.js +1 -0
  22. package/dist/17d02a15859.213.js +1 -0
  23. package/dist/17d02a15859.362.js +1 -0
  24. package/dist/17d02a15859.441.js +1 -0
  25. package/dist/17d02a15859.605.js +1 -0
  26. package/dist/17d02a15859.619.js +1 -0
  27. package/dist/17d02a15859.678.js +1 -0
  28. package/dist/17d02a15859.712.js +1 -0
  29. package/dist/17d02a15859.782.js +1 -0
  30. package/dist/17d02a15859.app.js +1 -0
  31. package/dist/17d02a15859.index.html +21 -0
  32. package/dist/17d02a15859.library.html +21 -0
  33. package/dist/17d02a15859.library.js +1 -0
  34. package/dist/17d02a15859.preview.html +759 -0
  35. package/dist/17d02a15859.preview.js +1 -0
  36. package/dist/HASH +1 -1
  37. package/dist/assets/img/Facebook.64607ec.png +0 -0
  38. package/dist/assets/img/Zalo.6845707.png +0 -0
  39. package/dist/assets/img/award1a.1a58e10.png +0 -0
  40. package/dist/assets/img/award3a.3b74423.png +0 -0
  41. package/dist/assets/img/award4a.ed6ccd4.png +0 -0
  42. package/dist/assets/img/award5.39eb7ae.png +0 -0
  43. package/dist/assets/img/bubble_default.7d5e4ab.svg +20 -0
  44. package/dist/assets/img/convos_empty.2353007.svg +72 -0
  45. package/dist/assets/img/default_avatar.5b74dc1.png +0 -0
  46. package/dist/assets/img/done_gray.d7e8203.svg +4 -0
  47. package/dist/assets/img/emoji/messenger/sub_23.529_58.824.d5faf14.png +0 -0
  48. package/dist/assets/img/emoji/messenger/sub_23.529_60.784.1420241.png +0 -0
  49. package/dist/assets/img/emoji/messenger/sub_25.490_0.000.1e6b2c0.png +0 -0
  50. package/dist/assets/img/emoji/messenger/sub_25.490_45.098.3dfbc08.png +0 -0
  51. package/dist/assets/img/emoji/messenger/sub_25.490_5.882.4b49e94.png +0 -0
  52. package/dist/assets/img/emoji/messenger/sub_27.451_72.549.7114f58.png +0 -0
  53. package/dist/assets/img/emoji/messenger/sub_27.451_84.314.231e2b7.png +0 -0
  54. package/dist/assets/img/emoji/messenger/sub_27.451_96.078.ddbb008.png +0 -0
  55. package/dist/assets/img/emoji/messenger/sub_29.412_5.882.61f3359.png +0 -0
  56. package/dist/assets/img/emoji/messenger/sub_58.824_100.000.6df72bc.png +0 -0
  57. package/dist/assets/img/emoji/messenger/sub_58.824_45.098.3d7a7ad.png +0 -0
  58. package/dist/assets/img/emoji/messenger/sub_58.824_47.059.0f4d6e2.png +0 -0
  59. package/dist/assets/img/emoji/messenger/sub_58.824_54.902.65724c1.png +0 -0
  60. package/dist/assets/img/emoji/messenger/sub_58.824_64.706.9da3cba.png +0 -0
  61. package/dist/assets/img/emoji/messenger/sub_58.824_72.549.edca5cf.png +0 -0
  62. package/dist/assets/img/emoji/messenger/sub_58.824_78.431.f910f2a.png +0 -0
  63. package/dist/assets/img/emoji/messenger/sub_58.824_88.235.def4e71.png +0 -0
  64. package/dist/assets/img/emoji/messenger/sub_60.784_11.765.49c03d0.png +0 -0
  65. package/dist/assets/img/emoji/messenger/sub_60.784_27.451.46b54e5.png +0 -0
  66. package/dist/assets/img/emoji/messenger/sub_60.784_29.412.e36d284.png +0 -0
  67. package/dist/assets/img/emoji/messenger/sub_60.784_3.922.bb191b0.png +0 -0
  68. package/dist/assets/img/emoji/messenger/sub_60.784_35.294.af7b927.png +0 -0
  69. package/dist/assets/img/emoji/messenger/sub_60.784_7.843.98f2a99.png +0 -0
  70. package/dist/assets/img/empty.29bed2d.svg +23 -0
  71. package/dist/assets/img/examplte_logo.f86535f.svg +1 -0
  72. package/dist/assets/img/external-link.90577cc.svg +1 -0
  73. package/dist/assets/img/fb_inverse_circle.36c2cfc.png +0 -0
  74. package/dist/assets/img/image_default.be0698b.png +0 -0
  75. package/dist/assets/img/loading_static.8f403ae.svg +10 -0
  76. package/dist/assets/img/main-service1.d536cc2.png +0 -0
  77. package/dist/assets/img/main-service2.9b99549.png +0 -0
  78. package/dist/assets/img/rating--average.1ea492c.svg +12 -0
  79. package/dist/assets/img/rating--great.e3d712e.svg +16 -0
  80. package/dist/assets/img/rating--poor.2938a25.svg +12 -0
  81. package/dist/assets/img/send.6db52a9.svg +3 -0
  82. package/dist/assets/img/subiz-mono.877e9f5.svg +3 -0
  83. package/package.json +20 -19
  84. package/src/chatbox/ChatButton.js +10 -6
  85. package/src/chatbox/Event.js +72 -56
  86. package/src/chatbox/OrderAttachments.js +112 -0
  87. package/src/chatbox/ProductAttachments.js +70 -0
  88. package/src/chatbox/TextMessage.js +1 -1
  89. package/src/chatbox/main.js +6 -4
  90. package/src/plugin.js +9 -4
  91. package/src/store/store.js +146 -8
  92. package/src/util/common.js +6 -0
@@ -62,6 +62,7 @@ class Main extends _common.Com {
62
62
  widgetView: '',
63
63
  widgetConvoId: ''
64
64
  });
65
+ this.checkExpand();
65
66
  this.props.store.onResetCSS(this, () => this.refreshCSS());
66
67
  this.props.store.onConvoEvent(this, _ => this.checkExpand());
67
68
  this.props.store.onUpdate(this, _ => this.checkExpand());
@@ -131,7 +132,7 @@ class Main extends _common.Com {
131
132
  }
132
133
 
133
134
  async showWidget(p) {
134
- this.refButton.current && this.refButton.current.clearPreview();
135
+ this.refButton.current && this.refButton.current.ClearPreview();
135
136
 
136
137
  if (!p.view) {
137
138
  let lastview = this.props.store.matchLastview() || {};
@@ -156,11 +157,11 @@ class Main extends _common.Com {
156
157
  }
157
158
 
158
159
  showGreeting() {
159
- this.refButton.current && this.refButton.current.showGreeting();
160
+ this.refButton.current && this.refButton.current.ShowGreeting();
160
161
  }
161
162
 
162
163
  hideGreeting() {
163
- this.refButton.current && this.refButton.current.hideGreeting();
164
+ this.refButton.current && this.refButton.current.HideGreeting();
164
165
  }
165
166
 
166
167
  hideWidget() {
@@ -172,7 +173,7 @@ class Main extends _common.Com {
172
173
  }
173
174
 
174
175
  onWidgetClose() {
175
- this.refButton.current && this.refButton.current.clearPreview();
176
+ this.refButton.current && this.refButton.current.ClearPreview();
176
177
  this.props.store.setHasManuallyClosed();
177
178
  this.hideWidget();
178
179
  }
@@ -13,11 +13,6 @@ var _preact = require("preact");
13
13
 
14
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
15
15
 
16
- var dayjs = require('dayjs');
17
-
18
- var relativeTime = require('dayjs/plugin/relativeTime');
19
-
20
- dayjs.extend(relativeTime);
21
16
  var g_pub = new _index.default.Pubsub();
22
17
  setInterval(() => g_pub.publish('time'), 20 * 1000);
23
18
 
@@ -34,7 +29,22 @@ class Time extends _common.Com {
34
29
  var t = '';
35
30
 
36
31
  if (this.props.ago) {
37
- if (this.props.time > 0) t = dayjs(this.props.time).fromNow(true);else t = '';
32
+ if (this.props.short) {
33
+ if (Math.abs(this.props.time - new _index.default.Date().getTime()) > 86400000 * 10) {
34
+ let tim = new _index.default.Date(this.props.time);
35
+ let tzyear = tim.getFullYear();
36
+
37
+ let locale = _index.default.get(navigator, 'languages.0', 'en-US');
38
+
39
+ let tzmonthname = tim.toLocaleDateString(locale, {
40
+ month: 'short'
41
+ });
42
+ let tzdate = tim.getDate();
43
+ t = tzdate + ' ' + tzmonthname + ' ' + tzyear;
44
+ }
45
+ }
46
+
47
+ if (!t && this.props.time > 0) t = ago(this.props.time, new _index.default.Date().getTime());
38
48
  } else t = _index.default.shortTime(this.props.time, this.props.tzoffset);
39
49
 
40
50
  if (this.props.uppercase) t = t.toUpperCase();
@@ -55,4 +65,81 @@ class Time extends _common.Com {
55
65
 
56
66
  }
57
67
 
58
- exports.default = Time;
68
+ exports.default = Time;
69
+
70
+ function ago(timeA, timeB) {
71
+ const relObj = {
72
+ s: '%d s',
73
+ m: '1m',
74
+ mm: '%dm',
75
+ h: '1h',
76
+ hh: '%dh',
77
+ d: '1d',
78
+ dd: '%dd',
79
+ M: '1M',
80
+ MM: '%M',
81
+ y: '1y',
82
+ yy: '%dy'
83
+ };
84
+ const loc = relObj;
85
+ const T = [{
86
+ l: 's',
87
+ r: 44,
88
+ d: 1000
89
+ }, {
90
+ l: 'm',
91
+ r: 89
92
+ }, {
93
+ l: 'mm',
94
+ r: 44,
95
+ d: 60000
96
+ }, {
97
+ l: 'h',
98
+ r: 89
99
+ }, {
100
+ l: 'hh',
101
+ r: 21,
102
+ d: 3600000
103
+ }, {
104
+ l: 'd',
105
+ r: 35
106
+ }, {
107
+ l: 'dd',
108
+ r: 25,
109
+ d: 86400000
110
+ }, {
111
+ l: 'M',
112
+ r: 45
113
+ }, {
114
+ l: 'MM',
115
+ r: 10,
116
+ d: 30 * 86400000
117
+ }, {
118
+ l: 'y',
119
+ r: 17
120
+ }, {
121
+ l: 'yy',
122
+ d: 365 * 86400000
123
+ }];
124
+ const Tl = T.length;
125
+ let result;
126
+ let out;
127
+
128
+ for (let i = 0; i < Tl; i += 1) {
129
+ let t = T[i];
130
+
131
+ if (t.d) {
132
+ result = (timeA - timeB) / t.d;
133
+ }
134
+
135
+ let abs = Math.round(Math.abs(result));
136
+
137
+ if (abs <= t.r || !t.r) {
138
+ if (abs <= 1 && i > 0) t = T[i - 1];
139
+ out = loc[t.l].replace('%d', abs);
140
+ break;
141
+ }
142
+ }
143
+
144
+ return out;
145
+ }
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.Clickaway = exports.Com = void 0;
6
+ exports.Com = exports.Clickaway = void 0;
7
7
 
8
8
  var _preact = require("preact");
9
9
 
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.default = exports.DEFVAL = void 0;
6
7
  exports.replaceCssVariable = replaceCssVariable;
7
- exports.DEFVAL = exports.default = void 0;
8
8
 
9
9
  var _index = _interopRequireDefault(require("../util/index.js"));
10
10
 
@@ -407,10 +407,16 @@ function downloadLanguage(store, locale, force) {
407
407
  }
408
408
 
409
409
  const getLocale = (plugin, loc) => {
410
- let found = _index.default.find(plugin.locales, l => l === loc);
410
+ if (!loc) loc = '';
411
+
412
+ let found = _index.default.find(plugin.locales, l => l.toLowerCase().trim() === loc.toLowerCase().trim());
411
413
 
412
414
  if (found) return loc;
413
- found = _index.default.find(plugin.locales, l => (l || '').toLowerCase().includes(loc.toLowerCase()));
415
+ found = _index.default.find(plugin.locales, l => {
416
+ l = l.replace('-', '_').split('_')[0].trim().toLowerCase();
417
+ let compareloc = loc.replace('-', '_').split('_')[0].trim().toLowerCase();
418
+ return l == compareloc;
419
+ });
414
420
  if (found) return found;
415
421
  return plugin.locale || 'en-US';
416
422
  };
@@ -28,11 +28,6 @@ var cookie = require('cookie_js');
28
28
  cookie.defaults.path = '/';
29
29
  cookie.expiresMultiplier = 60 * 60 * 24;
30
30
  cookie.defaults.expires = 3650;
31
-
32
- var dayjs = require('dayjs');
33
-
34
- require('dayjs/locale/vi');
35
-
36
31
  const MAX_CONVO = 20;
37
32
 
38
33
  const page_loaded = _index.default.Date.now();
@@ -1020,6 +1015,156 @@ class Store {
1020
1015
  setTimeout(() => this.loopTime(), 60000);
1021
1016
  }
1022
1017
 
1018
+ getPrice(obj, field, currency) {
1019
+ if (!obj) return 0;
1020
+ if (!currency) return obj[field] || 0;
1021
+
1022
+ let defcur = _index.default.get(this.matchAccount(), 'currency');
1023
+
1024
+ if (currency != defcur) return _index.default.get(obj, [field + '_locale', currency], 0);
1025
+ return obj[field] || 0;
1026
+ }
1027
+
1028
+ getOrderTotal(order) {
1029
+ let subtotal = 0;
1030
+
1031
+ _index.default.map(order.items, item => {
1032
+ if (!item.product) return 0;
1033
+ let price = this.getPrice(item.product, 'price', order.currency) * item.quantity;
1034
+
1035
+ if (item.discount_type) {
1036
+ if (item.discount_type == 'percentage') {
1037
+ if (item.discount_before_tax && item.discount_percentage > 0) {
1038
+ price = price * (1 - item.discount_percentage / 10000);
1039
+ }
1040
+ } else if (item.discount_type == 'amount') {
1041
+ let computed_discount = this.getPrice(item, 'discount', order.currency);
1042
+
1043
+ if (item.discount_before_tax && computed_discount > 0) {
1044
+ price = price - computed_discount;
1045
+ if (price <= 0) price = 0;
1046
+ }
1047
+ }
1048
+ }
1049
+
1050
+ subtotal += price;
1051
+ });
1052
+
1053
+ let computed_discount = 0;
1054
+
1055
+ _index.default.map(order.items, item => {
1056
+ if (!item.discount_type) return;
1057
+ if (!item.product) return 0;
1058
+ let price = this.getPrice(item.product, 'price', order.currency) * item.quantity;
1059
+ let tax = item.product.tax;
1060
+ let taxprice = 0;
1061
+ if (tax && tax.id) taxprice = price * tax.percentage / 10000;
1062
+
1063
+ if (item.discount_type == 'percentage' && !item.discount_before_tax && item.discount_percentage > 0) {
1064
+ computed_discount += (price + taxprice) * item.discount_percentage / 10000;
1065
+ } else if (item.discount_type == 'amount') {
1066
+ let itemdiscount = this.getPrice(item, 'discount', order.currency);
1067
+
1068
+ if (!item.discount_before_tax && itemdiscount > 0) {
1069
+ if (itemdiscount > price + taxprice) itemdiscount = price + taxprice;
1070
+ computed_discount += itemdiscount;
1071
+ }
1072
+ }
1073
+ });
1074
+
1075
+ let totaltax = 0;
1076
+ let taxM = {};
1077
+
1078
+ _index.default.map(order.items, (item, i) => {
1079
+ if (!item.product) return;
1080
+ let tax = item.product.tax;
1081
+ if (!tax) return;
1082
+ if (!tax.id) return;
1083
+ let price = this.getPrice(item.product, 'price', order.currency) * item.quantity;
1084
+
1085
+ if (item.discount_type) {
1086
+ if (item.discount_type == 'percentage') {
1087
+ if (item.discount_before_tax && item.discount_percentage > 0) {
1088
+ price = price * (1 - item.discount_percentage / 10000);
1089
+ }
1090
+ } else if (item.discount_type == 'amount') {
1091
+ let computed_discount = this.getPrice(item, 'discount', order.currency);
1092
+
1093
+ if (item.discount_before_tax && computed_discount > 0) {
1094
+ price = price - computed_discount;
1095
+ if (price <= 0) price = 0;
1096
+ }
1097
+ }
1098
+ }
1099
+
1100
+ let taxprice = price * tax.percentage / 10000;
1101
+ taxM[i] = {
1102
+ tax: tax,
1103
+ taxprice: taxprice
1104
+ };
1105
+ });
1106
+
1107
+ if (order.discount_before_tax) {
1108
+ if (order.discount_type == 'percentage' && order.discount_percentage > 0) {
1109
+ _index.default.map(taxM, t => {
1110
+ t.taxprice = t.taxprice * (1 - order.discount_percentage / 10000);
1111
+ });
1112
+
1113
+ computed_discount += subtotal * order.discount_percentage / 10000;
1114
+ } else if (order.discount_type == 'amount') {
1115
+ let discount = this.getPrice(order, 'discount', order.currency);
1116
+
1117
+ if (subtotal > 0) {
1118
+ _index.default.map(taxM, t => {
1119
+ if (discount > subtotal) discount = subtotal;
1120
+ t.taxprice = t.taxprice * (1 - discount / subtotal);
1121
+ });
1122
+ }
1123
+
1124
+ computed_discount += discount;
1125
+ }
1126
+ } else {
1127
+ if (order.discount_type == 'percentage' && order.discount_percentage > 0) {
1128
+ let taxprice = 0;
1129
+
1130
+ _index.default.map(taxM, t => taxprice += t.taxprice);
1131
+
1132
+ computed_discount += (subtotal + taxprice) * order.discount_percentage / 10000;
1133
+ } else if (order.discount_type == 'amount') {
1134
+ let discount = this.getPrice(order, 'discount', order.currency);
1135
+ computed_discount += discount;
1136
+ }
1137
+ }
1138
+
1139
+ let shippingfee = this.getPrice(order.shipping, 'fee', order.currency);
1140
+
1141
+ if (shippingfee > 0) {
1142
+ if (_index.default.get(order, 'shipping.tax.id')) {
1143
+ let tax = order.shipping.tax;
1144
+ let taxprice = shippingfee * tax.percentage / 10000;
1145
+ taxM['ship'] = {
1146
+ tax: tax,
1147
+ taxprice: taxprice
1148
+ };
1149
+ }
1150
+ }
1151
+
1152
+ let taxprice = 0;
1153
+
1154
+ _index.default.map(taxM, t => taxprice += t.taxprice);
1155
+
1156
+ let total = subtotal + taxprice - computed_discount + shippingfee;
1157
+ let adj = this.getPrice(order, 'adjustment', order.currency);
1158
+ total += adj;
1159
+ if (total < 0) total = 0;
1160
+ return {
1161
+ subtotal,
1162
+ computed_discount,
1163
+ taxM,
1164
+ total
1165
+ };
1166
+ }
1167
+
1023
1168
  replaceFileUrl(src) {
1024
1169
  if (!src) return '';
1025
1170
  if (_index.default.startsWith(src, '/')) return src;
@@ -3,10 +3,10 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.trackExitIntent = trackExitIntent;
7
- exports.trackScrollingPercentage = trackScrollingPercentage;
8
6
  exports.trackAreaClicked = trackAreaClicked;
7
+ exports.trackExitIntent = trackExitIntent;
9
8
  exports.trackInactivity = trackInactivity;
9
+ exports.trackScrollingPercentage = trackScrollingPercentage;
10
10
  exports.trackTimeOnPage = trackTimeOnPage;
11
11
 
12
12
  var common = require('./common.js');
@@ -3,65 +3,69 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.parseJSON = parseJSON;
6
+ exports.Date = exports.DEF_CHAT_BUTTON_BACKGROUND_IMAGE_URL = exports.DEFVAL = void 0;
7
+ exports.agentsOfConvo = agentsOfConvo;
8
+ exports.checkRunConditions = checkRunConditions;
9
+ exports.cloneDeep = cloneDeep;
7
10
  exports.convoOfEv = convoOfEv;
8
11
  exports.convoToEv = convoToEv;
9
- exports.setMsgField = setMsgField;
10
- exports.getMsgField = getMsgField;
11
- exports.merge = merge;
12
- exports.cloneDeep = cloneDeep;
13
- exports.randomString = randomString;
14
- exports.filter = filter;
15
- exports.includes = includes;
16
- exports.map = map;
12
+ exports.detectLang = detectLang;
13
+ exports.diffDay = diffDay;
14
+ exports.diffYear = diffYear;
17
15
  exports.each = each;
18
- exports.usersOfConvo = usersOfConvo;
19
- exports.isConvoSeen = isConvoSeen;
20
- exports.agentsOfConvo = agentsOfConvo;
21
- exports.startsWith = startsWith;
22
- exports.size = size;
23
- exports.replaceAll = replaceAll;
24
- exports.trim = trim;
25
- exports.trimStart = trimStart;
26
- exports.throttle = throttle;
16
+ exports.filter = filter;
27
17
  exports.find = find;
28
- exports.orderBy = orderBy;
18
+ exports.formatCurrency = formatCurrency;
19
+ exports.getAgentDisplayName = getAgentDisplayName;
20
+ exports.getDayName = getDayName;
29
21
  exports.getIntegrationId = getIntegrationId;
22
+ exports.getMs = getMs;
23
+ exports.getMsgField = getMsgField;
24
+ exports.getUrlParameter = getUrlParameter;
25
+ exports.getUserAttr = getUserAttr;
26
+ exports.includes = includes;
27
+ exports.isConvoSeen = isConvoSeen;
28
+ exports.isEmail = isEmail;
29
+ exports.isNumber = isNumber;
30
30
  exports.isPhone = isPhone;
31
31
  exports.isURL = isURL;
32
- exports.isNumber = isNumber;
33
- exports.isEmail = isEmail;
34
- exports.last = last;
35
- exports.getAgentDisplayName = getAgentDisplayName;
36
32
  exports.isUserBanned = isUserBanned;
37
- exports.setUserAttr = setUserAttr;
38
- exports.getUserAttr = getUserAttr;
39
- exports.norm = norm;
40
- exports.noop = noop;
41
- exports.replaceCssVariablePlugin = replaceCssVariablePlugin;
42
- exports.replaceCssVariable = replaceCssVariable;
43
- exports.tokenize = tokenize;
44
- exports.setCss = setCss;
45
33
  exports.js2css = js2css;
46
- exports.checkRunConditions = checkRunConditions;
47
- exports.getDayName = getDayName;
48
- exports.preloadWebfonts = preloadWebfonts;
49
- exports.preloadImg = preloadImg;
34
+ exports.last = last;
35
+ exports.map = map;
36
+ exports.merge = merge;
37
+ exports.noop = noop;
38
+ exports.norm = norm;
50
39
  exports.offsetToMin = offsetToMin;
51
- exports.diffDay = diffDay;
52
- exports.diffYear = diffYear;
40
+ exports.orderBy = orderBy;
41
+ exports.parseJSON = parseJSON;
42
+ exports.preloadImg = preloadImg;
43
+ exports.preloadWebfonts = preloadWebfonts;
44
+ exports.randomString = randomString;
45
+ exports.replaceAll = replaceAll;
46
+ exports.replaceCssVariable = replaceCssVariable;
47
+ exports.replaceCssVariablePlugin = replaceCssVariablePlugin;
48
+ exports.requestAnimationFrame = void 0;
53
49
  exports.sameDay = sameDay;
50
+ exports.setCss = setCss;
51
+ exports.setInterval = void 0;
52
+ exports.setMsgField = setMsgField;
53
+ exports.setTimeout = void 0;
54
+ exports.setUserAttr = setUserAttr;
54
55
  exports.shortTime = shortTime;
56
+ exports.size = size;
57
+ exports.sleep = void 0;
58
+ exports.startsWith = startsWith;
59
+ exports.stringify = void 0;
60
+ exports.throttle = throttle;
61
+ exports.tokenize = tokenize;
62
+ exports.trim = trim;
63
+ exports.trimStart = trimStart;
55
64
  exports.unixSec = unixSec;
56
- exports.getMs = getMs;
57
- exports.detectLang = detectLang;
58
- exports.getUrlParameter = getUrlParameter;
59
- exports.sleep = exports.DEFVAL = exports.DEF_CHAT_BUTTON_BACKGROUND_IMAGE_URL = exports.setInterval = exports.setTimeout = exports.requestAnimationFrame = exports.Date = exports.stringify = void 0;
65
+ exports.usersOfConvo = usersOfConvo;
60
66
 
61
67
  var op = require('./op.js');
62
68
 
63
- var dayjs = require('dayjs');
64
-
65
69
  function parseJSON(str) {
66
70
  try {
67
71
  return parse(str);
@@ -164,7 +168,11 @@ function isObject(item) {
164
168
  return item && typeof item === 'object' && !Array.isArray(item);
165
169
  }
166
170
 
167
- function merge(target, ...sources) {
171
+ function merge(target) {
172
+ for (var _len = arguments.length, sources = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
173
+ sources[_key - 1] = arguments[_key];
174
+ }
175
+
168
176
  if (!sources.length) return target;
169
177
  const source = sources.shift();
170
178
 
@@ -1059,12 +1067,27 @@ function shortTime(utcms, tzoffset, now) {
1059
1067
  var offsetmin = machineoffsetmin;
1060
1068
  if (tzoffset) offsetmin = offsetToMin(tzoffset);
1061
1069
  var time = new Date(getMs(utcms));
1062
- var tztime = dayjs(time).add(offsetmin - machineoffsetmin, 'minute');
1070
+ let tztime = new Date(time);
1071
+ tztime.setMinutes(time.getMinutes() + offsetmin - machineoffsetmin);
1063
1072
  if (!now) now = new Date();
1064
- if (sameDay(time, now, tzoffset)) return dayjs(tztime).format('HH:mm');
1065
- if (diffDay(time, now, tzoffset) <= 5) return dayjs(tztime).format('dddd, HH:mm');
1066
- if (diffYear(time, now, tzoffset) === 0) return dayjs(tztime).format('MMM D, HH:mm');
1067
- return dayjs(tztime).format('YYYY/M/D, HH:mm');
1073
+ let tzhour = tztime.getHours();
1074
+ let tzmin = tztime.getMinutes();
1075
+ let locale = op.get(navigator, 'languages.0', 'en-US');
1076
+ let tzdddd = tztime.toLocaleDateString(locale, {
1077
+ weekday: 'long'
1078
+ });
1079
+ let tzyear = tztime.getFullYear();
1080
+ let tzmonth = tztime.getMonth() + 1;
1081
+ let tzmonthname = tztime.toLocaleDateString(locale, {
1082
+ month: 'long'
1083
+ });
1084
+ let tzdate = tztime.getDate();
1085
+ if (tzhour < 10) tzhour = '0' + tzhour;
1086
+ if (tzmin < 10) tzmin = '0' + tzmin;
1087
+ if (sameDay(time, now, tzoffset)) return tzhour + ':' + tzmin;
1088
+ if (diffDay(time, now, tzoffset) <= 5) return tzdddd + ', ' + tzhour + ':' + tzmin;
1089
+ if (diffYear(time, now, tzoffset) === 0) return tzmonthname + ' ' + tzdate + ', ' + tzhour + ':' + tzmin;
1090
+ return tzyear + '/' + tzmonth + '/' + tzdate + ', ' + tzhour + ':' + tzmin;
1068
1091
  }
1069
1092
 
1070
1093
  function unixSec(t) {
@@ -1107,6 +1130,12 @@ var sleep = ms => new Promise(res => setTimeout(res, ms));
1107
1130
 
1108
1131
  exports.sleep = sleep;
1109
1132
 
1133
+ function formatCurrency(val) {
1134
+ if (!val) return 0;
1135
+ val = Math.round(val);
1136
+ return val.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, '$1,');
1137
+ }
1138
+
1110
1139
  function replaceFileUrl(src) {
1111
1140
  let fileurl = 'https://vcdn.subiz-cdn.com/file/';
1112
1141
  if (!src) return '';
@@ -3,13 +3,13 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
+ exports.extract = extract;
7
+ exports.extractEmails = extractEmails;
6
8
  exports.extractEmojis = extractEmojis;
7
9
  exports.extractLinks = extractLinks;
8
- exports.extractEmails = extractEmails;
9
10
  exports.extractPhones = extractPhones;
10
- exports.extract = extract;
11
- exports.pipeExtracts = pipeExtracts;
12
11
  exports.extractText = extractText;
12
+ exports.pipeExtracts = pipeExtracts;
13
13
 
14
14
  var common = require('./common.js');
15
15
 
@@ -17,9 +17,12 @@ class Pubsub {
17
17
 
18
18
  publish(topic, payload, payload2, payload3) {
19
19
  this.listeners[topic] = filter(this.listeners[topic], sub => sub.obj._isMounted);
20
- map(this.listeners[topic], ({
21
- cb
22
- }) => cb(payload, payload2, payload3));
20
+ map(this.listeners[topic], _ref => {
21
+ let {
22
+ cb
23
+ } = _ref;
24
+ return cb(payload, payload2, payload3);
25
+ });
23
26
  }
24
27
 
25
28
  on2(obj, topic, cb) {