@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.
- package/assets/less/chatbox.less +8 -0
- package/assets/less/message.less +8 -3
- package/assets/less/order.less +10 -0
- package/compiled_src/bot.js +0 -11
- package/compiled_src/call/call.js +0 -61
- package/compiled_src/call/css.js +0 -2
- package/compiled_src/chatbox/AgentsAvatar.js +0 -16
- package/compiled_src/chatbox/AudioAttachments.js +0 -14
- package/compiled_src/chatbox/ButtonAttachments.js +1 -14
- package/compiled_src/chatbox/Buttons.js +0 -13
- package/compiled_src/chatbox/ChatButton.js +1 -78
- package/compiled_src/chatbox/DropdownSelect.js +3 -44
- package/compiled_src/chatbox/Emoji.js +0 -7
- package/compiled_src/chatbox/Event.js +0 -59
- package/compiled_src/chatbox/Events.js +4 -44
- package/compiled_src/chatbox/FileAttachments.js +0 -14
- package/compiled_src/chatbox/FormAttachment.js +1 -52
- package/compiled_src/chatbox/FormAttachments.js +0 -14
- package/compiled_src/chatbox/FormSubmitAttachments.js +0 -11
- package/compiled_src/chatbox/GenericTemplateAttachments.js +1 -20
- package/compiled_src/chatbox/Header.js +1 -46
- package/compiled_src/chatbox/ImageAttachments.js +0 -16
- package/compiled_src/chatbox/InfoMessage.js +0 -13
- package/compiled_src/chatbox/ListField.js +0 -16
- package/compiled_src/chatbox/MessageInput.js +1 -47
- package/compiled_src/chatbox/Order.js +0 -35
- package/compiled_src/chatbox/OrderAttachments.js +98 -39
- package/compiled_src/chatbox/PoweredBy.js +0 -7
- package/compiled_src/chatbox/ProductAttachments.js +0 -19
- package/compiled_src/chatbox/QuickReplies.js +0 -18
- package/compiled_src/chatbox/Rating.js +0 -37
- package/compiled_src/chatbox/ShadowDomRoot.js +0 -9
- package/compiled_src/chatbox/TextMessage.js +0 -64
- package/compiled_src/chatbox/Typing.js +0 -15
- package/compiled_src/chatbox/VideoAttachments.js +0 -14
- package/compiled_src/chatbox/Widget.js +6 -167
- package/compiled_src/chatbox/css.js +0 -2
- package/compiled_src/chatbox/dragscroll.js +1 -5
- package/compiled_src/chatbox/main.js +1 -40
- package/compiled_src/chatbox/releaseAnimation.js +0 -11
- package/compiled_src/chatbox/spinner.js +0 -10
- package/compiled_src/chatbox/time.js +0 -22
- package/compiled_src/chatbox/touchscroll.js +0 -7
- package/compiled_src/common.js +0 -22
- package/compiled_src/contact/contact.js +2 -52
- package/compiled_src/contact/css.js +0 -2
- package/compiled_src/lib.js +19 -46
- package/compiled_src/notif/css.js +0 -2
- package/compiled_src/notif/notif.js +0 -63
- package/compiled_src/order/address_picker.js +4 -38
- package/compiled_src/order/icon.js +0 -16
- package/compiled_src/order/index.js +1 -34
- package/compiled_src/order/order.js +2 -156
- package/compiled_src/plugin.js +1 -77
- package/compiled_src/popup/countdown.js +2 -33
- package/compiled_src/popup/css.js +0 -2
- package/compiled_src/popup/popup.js +2 -165
- package/compiled_src/popup/tick.core.commonjs.js +72 -222
- package/compiled_src/popup/tick.view.flip.commonjs.js +23 -31
- package/compiled_src/store/api.js +99 -65
- package/compiled_src/store/api_fake.js +3 -39
- package/compiled_src/store/realtime_fake.js +0 -6
- package/compiled_src/store/store.js +46 -249
- package/compiled_src/util/campaign.js +0 -13
- package/compiled_src/util/common.js +15 -185
- package/compiled_src/util/common.test.js +0 -4
- package/compiled_src/util/extractor.js +1 -21
- package/compiled_src/util/extractor.test.js +0 -3
- package/compiled_src/util/gate.js +0 -7
- package/compiled_src/util/gate.test.js +1 -2
- package/compiled_src/util/index.js +3 -7
- package/compiled_src/util/mutex.js +31 -0
- package/compiled_src/util/op.js +1 -14
- package/compiled_src/util/order.js +118 -0
- package/compiled_src/util/pubsub.js +0 -6
- package/compiled_src/util/pubsub.test.js +0 -2
- package/package.json +12 -13
- package/src/chatbox/OrderAttachments.js +111 -18
- package/src/lib.js +24 -2
- package/src/store/api.js +110 -21
- package/src/store/api_fake.js +5 -6
- package/src/store/store.js +47 -17
- package/src/util/index.js +4 -0
- package/src/util/mutex.js +27 -0
- package/src/util/order.js +120 -0
- package/dist/132.js +0 -7092
- package/dist/178.js +0 -406
- package/dist/18364d15f37.132.js +0 -1
- package/dist/18364d15f37.178.js +0 -1
- package/dist/18364d15f37.213.js +0 -1
- package/dist/18364d15f37.335.js +0 -1
- package/dist/18364d15f37.362.js +0 -1
- package/dist/18364d15f37.441.js +0 -1
- package/dist/18364d15f37.605.js +0 -1
- package/dist/18364d15f37.678.js +0 -1
- package/dist/18364d15f37.782.js +0 -1
- package/dist/18364d15f37.app.js +0 -1
- package/dist/18364d15f37.index.html +0 -26
- package/dist/18364d15f37.library.html +0 -26
- package/dist/18364d15f37.library.js +0 -1
- package/dist/18364d15f37.preview.html +0 -759
- package/dist/18364d15f37.preview.js +0 -1
- package/dist/18364d15f37.screenshoot.js +0 -1
- package/dist/213.js +0 -3215
- package/dist/335.js +0 -411
- package/dist/362.js +0 -107
- package/dist/441.js +0 -2834
- package/dist/605.js +0 -328
- package/dist/678.js +0 -107
- package/dist/782.js +0 -107
- package/dist/HASH +0 -1
- package/dist/assets/img/Facebook.64607ec.png +0 -0
- package/dist/assets/img/Zalo.6845707.png +0 -0
- package/dist/assets/img/award1a.1a58e10.png +0 -0
- package/dist/assets/img/award3a.3b74423.png +0 -0
- package/dist/assets/img/award4a.ed6ccd4.png +0 -0
- package/dist/assets/img/award5.39eb7ae.png +0 -0
- package/dist/assets/img/bubble_default.7d5e4ab.svg +0 -20
- package/dist/assets/img/caret.998eb8f.svg +0 -1
- package/dist/assets/img/convos_empty.2353007.svg +0 -72
- package/dist/assets/img/default.06e6ee0.jpg +0 -0
- package/dist/assets/img/default_avatar.5b74dc1.png +0 -0
- package/dist/assets/img/done_gray.d7e8203.svg +0 -4
- package/dist/assets/img/done_green.b817fd4.svg +0 -4
- package/dist/assets/img/emoji/messenger/sub_23.529_58.824.d5faf14.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_23.529_60.784.1420241.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_25.490_0.000.1e6b2c0.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_25.490_45.098.3dfbc08.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_25.490_5.882.4b49e94.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_27.451_72.549.7114f58.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_27.451_84.314.231e2b7.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_27.451_96.078.ddbb008.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_29.412_5.882.61f3359.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_58.824_100.000.6df72bc.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_58.824_45.098.3d7a7ad.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_58.824_47.059.0f4d6e2.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_58.824_54.902.65724c1.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_58.824_64.706.9da3cba.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_58.824_72.549.edca5cf.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_58.824_78.431.f910f2a.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_58.824_88.235.def4e71.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_60.784_11.765.49c03d0.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_60.784_27.451.46b54e5.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_60.784_29.412.e36d284.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_60.784_3.922.bb191b0.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_60.784_35.294.af7b927.png +0 -0
- package/dist/assets/img/emoji/messenger/sub_60.784_7.843.98f2a99.png +0 -0
- package/dist/assets/img/empty.29bed2d.svg +0 -23
- package/dist/assets/img/empty_1.0b98af0.svg +0 -11
- package/dist/assets/img/examplte_logo.f86535f.svg +0 -1
- package/dist/assets/img/external-link.90577cc.svg +0 -1
- package/dist/assets/img/fb_inverse_circle.36c2cfc.png +0 -0
- package/dist/assets/img/ghn.070f8e3.svg +0 -17
- package/dist/assets/img/ghtk.326eac1.svg +0 -18
- package/dist/assets/img/image_default.be0698b.png +0 -0
- package/dist/assets/img/info.ebce7ea.svg +0 -1
- package/dist/assets/img/loader.37000a7.svg +0 -1
- package/dist/assets/img/loading_static.8f403ae.svg +0 -10
- package/dist/assets/img/main-service1.d536cc2.png +0 -0
- package/dist/assets/img/main-service2.9b99549.png +0 -0
- package/dist/assets/img/not_found_search.2ddb8d1.png +0 -0
- package/dist/assets/img/package.8d37d0f.svg +0 -5
- package/dist/assets/img/package_fade.763c001.svg +0 -1
- package/dist/assets/img/rating--average.1ea492c.svg +0 -12
- package/dist/assets/img/rating--great.e3d712e.svg +0 -16
- package/dist/assets/img/rating--poor.2938a25.svg +0 -12
- package/dist/assets/img/search.f9705ff.svg +0 -1
- package/dist/assets/img/send.6db52a9.svg +0 -3
- package/dist/assets/img/shop.f7dc7d8.svg +0 -1
- package/dist/assets/img/shop_faded.df7845a.svg +0 -1
- package/dist/assets/img/subiz-mono.877e9f5.svg +0 -3
- package/dist/assets/img/x.26fdfa3.svg +0 -5
- package/dist/malicious-app.js +0 -13
- package/dist/screenshoot.html +0 -7
- 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;
|
|
@@ -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;
|
package/compiled_src/util/op.js
CHANGED
|
@@ -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;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@subiz/widget-v4",
|
|
3
|
-
"version": "4.0.
|
|
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.
|
|
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.
|
|
22
|
-
"marked": "^4.
|
|
23
|
-
"preact": "^10.11.
|
|
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.
|
|
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.
|
|
31
|
-
"babel-loader": "^
|
|
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
|
-
"
|
|
35
|
-
"
|
|
36
|
-
"webpack": "^
|
|
37
|
-
"webpack-
|
|
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
|
}
|