@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
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  const test = require('tape');
4
-
5
4
  const util = require('./common.js');
6
-
7
5
  test('util.getNotiDescription', t => {
8
6
  var tcs = [{
9
7
  desc: 'not a message sent',
@@ -442,11 +440,9 @@ test('mapize', t => {
442
440
  value: 4
443
441
  }];
444
442
  var m = util.mapize(arr, 'id');
445
-
446
443
  for (var i = 0; i < arr.length; i++) {
447
444
  t.equal(m[i], arr[i]);
448
445
  }
449
-
450
446
  t.end();
451
447
  });
452
448
  test('convo id from topic', t => {
@@ -10,15 +10,11 @@ exports.extractLinks = extractLinks;
10
10
  exports.extractPhones = extractPhones;
11
11
  exports.extractText = extractText;
12
12
  exports.pipeExtracts = pipeExtracts;
13
-
14
13
  var common = require('./common.js');
15
-
16
14
  let emojis = ['like', 'unlike', 'wink', 'tongue-out', 'tired', 'surprised', 'smiling', 'sleepy', 'sad', 'neutral', 'heart-eyes', 'grinning', 'crying', 'confused', 'angry', 'cry', 'heart_eyes', 'neutral_face', 'emoji--disappointed', 'smile', 'open_mouth', 'tired_face', 'stuck_out_tongue', 'moyai', 'thumbsdown', 'dislike', 'thumbsup', 'ok_hand', 'octopus', 'pig2', 'wave', 'mouse', 'mouse2', 'rat'];
17
15
  emojis = common.map(emojis, e => ':' + e + ':');
18
-
19
16
  function extractEmojis(text) {
20
17
  var out = [];
21
-
22
18
  for (var i = 0; i < text.length; i++) {
23
19
  for (var e = 0; e < emojis.length; e++) {
24
20
  if (text.indexOf(emojis[e], i) !== i) continue;
@@ -30,77 +26,63 @@ function extractEmojis(text) {
30
26
  break;
31
27
  }
32
28
  }
33
-
34
29
  return out;
35
30
  }
36
-
37
31
  function extractLinks(text) {
38
32
  text = text || '';
39
33
  var reg = /(https?:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.,~#?&//=]*)/gim;
40
34
  var out = [];
41
35
  var match;
42
-
43
36
  while (match = reg.exec(text)) {
44
37
  out.push({
45
38
  index: match.index,
46
39
  length: reg.lastIndex - match.index
47
40
  });
48
41
  }
49
-
50
42
  return out;
51
43
  }
52
-
53
44
  function extractEmails(text) {
54
45
  text = text || '';
55
46
  var reg = /(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))/gim;
56
47
  var out = [];
57
48
  var match;
58
-
59
49
  while (match = reg.exec(text)) {
60
50
  out.push({
61
51
  index: match.index,
62
52
  length: reg.lastIndex - match.index
63
53
  });
64
54
  }
65
-
66
55
  return out;
67
56
  }
68
-
69
57
  function extractPhones(msg) {
70
58
  msg = msg || '';
71
59
  var fgmsg = '';
72
- var realchmap = {};
73
60
 
61
+ var realchmap = {};
74
62
  for (var i = 0; i < msg.length; i++) {
75
63
  var ch = msg.charAt(i);
76
-
77
64
  if (ch !== '.' && ch !== '-' && ch !== ' ') {
78
65
  fgmsg += ch;
79
66
  realchmap[fgmsg.length - 1] = i;
80
67
  continue;
81
68
  }
82
-
83
69
  var prevCh = i > 0 ? msg.charAt(i - 1) : '-';
84
70
  var nextCh = i < msg.length - 1 ? msg.charAt(i + 1) : '-';
85
71
  if ('0123456789'.indexOf(prevCh) !== -1 && '0123456789'.indexOf(nextCh) !== -1) continue;
86
72
  fgmsg += ch;
87
73
  realchmap[fgmsg.length - 1] = i;
88
74
  }
89
-
90
75
  var reg = /([0-9]{8,13})/gim;
91
76
  var out = [];
92
77
  var match;
93
-
94
78
  while (match = reg.exec(fgmsg)) {
95
79
  out.push({
96
80
  index: realchmap[match.index],
97
81
  length: realchmap[reg.lastIndex - 1] - realchmap[match.index] + 1
98
82
  });
99
83
  }
100
-
101
84
  return out;
102
85
  }
103
-
104
86
  function extract(text, extractor, type) {
105
87
  if (!text) return [];
106
88
  var out = [];
@@ -128,7 +110,6 @@ function extract(text, extractor, type) {
128
110
  });
129
111
  return common.filter(out, o => o.text !== '');
130
112
  }
131
-
132
113
  function pipeExtracts(text, extractors) {
133
114
  var out = [];
134
115
  if (common.size(extractors) === 0) return [{
@@ -143,7 +124,6 @@ function pipeExtracts(text, extractors) {
143
124
  });
144
125
  return out;
145
126
  }
146
-
147
127
  function extractText(text) {
148
128
  var link = extractLinks;
149
129
  link.type = 'link';
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  var test = require('tape');
4
-
5
4
  var lo = require('lodash');
6
-
7
5
  let {
8
6
  extractEmails,
9
7
  extractPhones,
@@ -12,7 +10,6 @@ let {
12
10
  extractEmojis,
13
11
  maskEmojis
14
12
  } = require('./extractor.js');
15
-
16
13
  test('extract emails', t => {
17
14
  var tcs = [{
18
15
  text: 'email',
@@ -4,13 +4,11 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  class Gate {
9
8
  constructor(isOpen) {
10
9
  this.isOpen = isOpen === true;
11
10
  this.cbs = [];
12
11
  }
13
-
14
12
  open() {
15
13
  this.isOpen = true;
16
14
  let newcbs = [];
@@ -19,18 +17,15 @@ class Gate {
19
17
  });
20
18
  this.cbs = newcbs;
21
19
  }
22
-
23
20
  close() {
24
21
  this.isOpen = false;
25
22
  }
26
-
27
23
  entry(cb, lock) {
28
24
  if (this.isOpen) {
29
25
  if (lock) this.isOpen = false;
30
26
  cb && cb();
31
27
  return Promise.resolve();
32
28
  }
33
-
34
29
  return new Promise(resolve => {
35
30
  this.cbs.push(() => {
36
31
  if (lock) this.isOpen = false;
@@ -39,7 +34,5 @@ class Gate {
39
34
  });
40
35
  });
41
36
  }
42
-
43
37
  }
44
-
45
38
  exports.default = Gate;
@@ -1,11 +1,10 @@
1
1
  "use strict";
2
2
 
3
3
  var test = require('tape');
4
-
5
4
  var Gate = require('./gate.js');
6
-
7
5
  test('gate', async t => {
8
6
  var gate = new Gate();
7
+
9
8
  var flip = 0;
10
9
  setTimeout(function () {
11
10
  flip = 1;
@@ -4,27 +4,23 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var common = _interopRequireWildcard(require("./common.js"));
9
-
10
8
  var extractor = _interopRequireWildcard(require("./extractor.js"));
11
-
12
9
  var campaign = _interopRequireWildcard(require("./campaign.js"));
13
-
10
+ var order = _interopRequireWildcard(require("./order.js"));
14
11
  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); }
15
-
16
12
  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; }
17
13
 
18
14
  var sb = {};
19
15
  sb = Object.assign(sb, common);
20
16
  sb.Gate = require('./gate.js').default;
21
-
17
+ sb.Mutex = require('./mutex.js').default;
22
18
  var op = require('./op.js');
23
-
24
19
  sb.get = op.get;
25
20
  sb.set = op.set;
26
21
  sb.Pubsub = require('./pubsub.js').default;
27
22
  sb = Object.assign(sb, extractor);
28
23
  sb = Object.assign(sb, campaign);
24
+ sb = Object.assign(sb, order);
29
25
  var _default = sb;
30
26
  exports.default = _default;
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ class Mutex {
8
+ constructor() {
9
+ this.isOpen = true;
10
+ this.cbs = [];
11
+ }
12
+ _check() {
13
+ if (!this.isOpen) return;
14
+ let cb = this.cbs.pop();
15
+ if (!cb) return;
16
+ this.isOpen = false;
17
+ cb();
18
+ }
19
+ lock() {
20
+ return new Promise(resolve => {
21
+ this.cbs.push(resolve);
22
+ this._check();
23
+ });
24
+ }
25
+ unlock() {
26
+ if (this.isOpen) return;
27
+ this.isOpen = true;
28
+ this._check();
29
+ }
30
+ }
31
+ exports.default = Mutex;
@@ -5,65 +5,52 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.get = get;
7
7
  exports.set = set;
8
- var toStr = Object.prototype.toString;
9
8
 
9
+ var toStr = Object.prototype.toString;
10
10
  var isArray = Array.isArray || function (obj) {
11
11
  return toStr.call(obj) === '[object Array]';
12
12
  };
13
-
14
13
  function hasOwnProperty(obj, prop) {
15
14
  if (obj == null) return false;
16
15
  return Object.prototype.hasOwnProperty.call(obj, prop);
17
16
  }
18
-
19
17
  function getKey(key) {
20
18
  var intKey = parseInt(key);
21
19
  return intKey.toString() === key ? intKey : key;
22
20
  }
23
-
24
21
  function hasShallowProperty(obj, prop) {
25
22
  return typeof prop === 'number' && isArray(obj) || hasOwnProperty(obj, prop);
26
23
  }
27
-
28
24
  function getShallowProperty(obj, prop) {
29
25
  if (hasShallowProperty(obj, prop)) return obj[prop];
30
26
  }
31
-
32
27
  function get(obj, path, defaultValue) {
33
28
  if (typeof path === 'number') path = [path];
34
29
  if (!path || path.length === 0) return obj;
35
30
  if (obj == null) return defaultValue;
36
-
37
31
  if (typeof path === 'string') {
38
32
  return get(obj, path.split('.'), defaultValue);
39
33
  }
40
-
41
34
  var currentPath = getKey(path[0]);
42
35
  var nextObj = getShallowProperty(obj, currentPath);
43
36
  if (nextObj === void 0) return defaultValue;
44
37
  if (path.length === 1) return nextObj;
45
38
  return get(obj[currentPath], path.slice(1), defaultValue);
46
39
  }
47
-
48
40
  function set(obj, path, value) {
49
41
  if (typeof path === 'number') path = [path];
50
42
  if (!path || path.length === 0) return obj;
51
-
52
43
  if (typeof path === 'string') {
53
44
  return set(obj, path.split('.').map(getKey), value);
54
45
  }
55
-
56
46
  var currentPath = path[0];
57
47
  var currentValue = getShallowProperty(obj, currentPath);
58
-
59
48
  if (path.length === 1) {
60
49
  obj[currentPath] = value;
61
50
  return currentValue;
62
51
  }
63
-
64
52
  if (currentValue === void 0) {
65
53
  obj[currentPath] = typeof path[1] === 'number' ? [] : {};
66
54
  }
67
-
68
55
  return set(obj[currentPath], path.slice(1), value);
69
56
  }
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.calcOrderTotal = calcOrderTotal;
7
+ exports.displayOrderShippingAddress = displayOrderShippingAddress;
8
+ exports.getOrderDisplayName = getOrderDisplayName;
9
+ exports.getProductPropName = getProductPropName;
10
+ const op = require('./op.js');
11
+ const common = require('./common');
12
+ op.filter = common.filter;
13
+ op.map = common.map;
14
+ op.each = common.each;
15
+ op.size = common.size;
16
+ op.find = common.find;
17
+ function getProductPropName(product) {
18
+ let seperator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ' - ';
19
+ let options = op.get(product, 'options', []);
20
+ let props = op.get(product, 'props', []);
21
+ let multiPropsOptions = op.filter(options, option => op.size(option.values) > 1);
22
+ let names = [];
23
+ op.each(multiPropsOptions, option => {
24
+ let prop = op.find(props, prop => prop.key === option.key) || {};
25
+ if (prop.value) names.push(prop.value);
26
+ });
27
+ return names.join(seperator);
28
+ }
29
+ function getOrderDisplayName() {
30
+ let order = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
31
+ return order.number || order.id || '';
32
+ }
33
+ function displayOrderShippingAddress(order, isShorten) {
34
+ let addr = op.get(order, 'shipping.address', {});
35
+ let fulladdr = [addr.address, addr.ward, addr.district, addr.province].filter(a => a).join(', ').trim();
36
+ if (isShorten) fulladdr = shortenAddr(fulladdr);
37
+ return fulladdr;
38
+ }
39
+ function shortenAddr(str) {
40
+ str = str || '';
41
+ str = str.replace(/Hà Nội/gi, 'HN');
42
+ str = str.replace(/Hồ Chí Minh/gi, 'HCM');
43
+ str = str.replace(/Thành Phố/gi, 'TP');
44
+ return str;
45
+ }
46
+ function calcOrderTotal(order) {
47
+ let subtotal = 0;
48
+ let beforeTaxDiscount = 0;
49
+ let ordervalue = 0;
50
+ op.map(order.items, item => {
51
+ if (!item.product) return 0;
52
+ let price = op.get(item, 'product.price', 0) * (item.quantity || 0);
53
+ ordervalue += price;
54
+
55
+ if (item.discount_type == 'percentage') {
56
+ if (item.discount_percentage > 0) {
57
+ beforeTaxDiscount += price * item.discount_percentage / 10000;
58
+ price = price * (1 - (item.discount_percentage || 0) / 10000);
59
+ }
60
+ } else if (item.discount_type == 'amount') {
61
+ if (item.discount_amount > 0) {
62
+ beforeTaxDiscount += item.discount_amount;
63
+ price = price - (item.discount_amount || 0);
64
+ if (price <= 0) price = 0;
65
+ }
66
+ }
67
+ item.total = price;
68
+ subtotal += price;
69
+ });
70
+
71
+ let taxM = {};
72
+ op.map(order.items, (item, i) => {
73
+ if (!item.product) return;
74
+ let tax = item.product.tax;
75
+ if (!tax) return;
76
+ if (!tax.id) return;
77
+ let taxprice = item.total * tax.percentage / 10000;
78
+ item.total_tax = taxprice;
79
+ taxM[i] = {
80
+ tax: tax,
81
+ taxprice: taxprice
82
+ };
83
+ });
84
+ let totaltax = 0;
85
+ op.map(taxM, t => totaltax += t.taxprice);
86
+ let computed_discount = 0;
87
+ if (order.discount_type == 'percentage' && order.discount_percentage > 0) {
88
+ computed_discount = (subtotal + totaltax) * order.discount_percentage / 10000;
89
+ } else if (order.discount_type == 'amount') {
90
+ computed_discount = order.discount_amount || 0;
91
+ }
92
+
93
+ let shippingfee = op.get(order, 'shipping.nominal_fee', 0);
94
+ if (shippingfee > 0) {
95
+ if (op.get(order, 'shipping.tax.id')) {
96
+ let tax = order.shipping.tax;
97
+ let taxprice = shippingfee * (tax.percentage / 10000);
98
+ taxM['ship'] = {
99
+ tax: tax,
100
+ taxprice: taxprice
101
+ };
102
+ order.shipping.total_tax = taxprice;
103
+ }
104
+ }
105
+ totaltax = 0;
106
+ op.map(taxM, t => totaltax += t.taxprice);
107
+ let total = subtotal + totaltax - computed_discount + shippingfee;
108
+
109
+ total += order.adjustment || 0;
110
+ if (total < 0) total = 0;
111
+ order.subtotal = subtotal;
112
+ order._computed_discount = computed_discount;
113
+ order._taxM = taxM;
114
+ order.total = total;
115
+ order.total_tax = totaltax;
116
+ order._discount_before_tax = beforeTaxDiscount;
117
+ order._order_value = ordervalue;
118
+ }
@@ -4,17 +4,14 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var {
9
8
  filter,
10
9
  map
11
10
  } = require('./common.js');
12
-
13
11
  class Pubsub {
14
12
  constructor() {
15
13
  this.listeners = {};
16
14
  }
17
-
18
15
  publish(topic, payload, payload2, payload3) {
19
16
  this.listeners[topic] = filter(this.listeners[topic], sub => sub.obj._isMounted);
20
17
  map(this.listeners[topic], _ref => {
@@ -24,7 +21,6 @@ class Pubsub {
24
21
  return cb(payload, payload2, payload3);
25
22
  });
26
23
  }
27
-
28
24
  on2(obj, topic, cb) {
29
25
  if (!this.listeners[topic]) this.listeners[topic] = [];
30
26
  this.listeners[topic].push({
@@ -32,7 +28,5 @@ class Pubsub {
32
28
  cb
33
29
  });
34
30
  }
35
-
36
31
  }
37
-
38
32
  exports.default = Pubsub;
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  var test = require('tape');
4
-
5
4
  var Pubsub = require('./pubsub.js');
6
-
7
5
  test('pubsub simple', t => {
8
6
  var ps = new Pubsub();
9
7
  var msg = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@subiz/widget-v4",
3
- "version": "4.0.92",
3
+ "version": "4.0.94",
4
4
  "main": "./compiled_src/lib.js",
5
5
  "scripts": {
6
6
  "dev": "npx webpack serve --config webpack.dev.js",
@@ -14,28 +14,27 @@
14
14
  "@subiz/storage": "0.0.8",
15
15
  "@subiz/wsclient": "^3.1.7",
16
16
  "cookie_js": "1.4.2",
17
- "core-js": "^3.25.5",
17
+ "core-js": "^3.26.1",
18
18
  "css-loader": "5.2.7",
19
19
  "file-loader": "^6.2.0",
20
20
  "less": "^4.1.3",
21
- "less-loader": "^11.0.0",
22
- "marked": "^4.1.1",
23
- "preact": "^10.11.1"
21
+ "less-loader": "^11.1.0",
22
+ "marked": "^4.2.3",
23
+ "preact": "^10.11.3"
24
24
  },
25
25
  "devDependencies": {
26
26
  "@babel/cli": "^7.19.3",
27
- "@babel/core": "^7.19.3",
27
+ "@babel/core": "^7.20.2",
28
28
  "@babel/plugin-proposal-class-properties": "^7.18.6",
29
29
  "@babel/plugin-transform-react-jsx": "^7.19.0",
30
- "@babel/preset-env": "^7.19.4",
31
- "babel-loader": "^8.2.5",
30
+ "@babel/preset-env": "^7.20.2",
31
+ "babel-loader": "^9.1.0",
32
32
  "babel-plugin-syntax-jsx": "^6.18.0",
33
33
  "html-webpack-plugin": "^5.5.0",
34
- "prettier": "^2.7.1",
35
- "puppeteer": "^18.2.1",
36
- "webpack": "^5.74.0",
37
- "webpack-bundle-analyzer": "^4.6.1",
38
- "webpack-cli": "^4.10.0",
34
+ "puppeteer": "^19.3.0",
35
+ "webpack": "^5.75.0",
36
+ "webpack-bundle-analyzer": "^4.7.0",
37
+ "webpack-cli": "^5.0.0",
39
38
  "webpack-dev-server": "^4.11.1"
40
39
  }
41
40
  }