@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
|
@@ -4,31 +4,22 @@ 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 _ListField = _interopRequireDefault(require("./ListField.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
|
class FormAttachment extends _common.Com {
|
|
19
13
|
constructor(props) {
|
|
20
14
|
super(props);
|
|
21
15
|
this.props.store.onUpdate(this, _ => this.forceUpdate());
|
|
22
16
|
let user = this.props.store.matchUser();
|
|
23
17
|
let fields = _index.default.get(this.props.form, 'fields') || [];
|
|
24
|
-
|
|
25
18
|
let formData = _index.default.map(fields, field => {
|
|
26
19
|
let is_required = field.is_required || false;
|
|
27
20
|
var state = _index.default.parseJSON(field.state) || {};
|
|
28
21
|
if (!is_required) is_required = state.require || false;
|
|
29
|
-
|
|
30
22
|
var userattr = _index.default.getUserAttr(user, field.name, state.type || 'text');
|
|
31
|
-
|
|
32
23
|
return {
|
|
33
24
|
name: field.name,
|
|
34
25
|
items: field.items,
|
|
@@ -38,25 +29,20 @@ class FormAttachment extends _common.Com {
|
|
|
38
29
|
type: field.input_type
|
|
39
30
|
};
|
|
40
31
|
});
|
|
41
|
-
|
|
42
32
|
this.setState({
|
|
43
33
|
formData
|
|
44
34
|
});
|
|
45
35
|
}
|
|
46
|
-
|
|
47
36
|
isSummited() {
|
|
48
37
|
let found = _index.default.find(this.state.formData, field => !!field.answered);
|
|
49
|
-
|
|
50
38
|
if (found) return true;
|
|
51
39
|
let convo = this.props.store.matchConvo(_index.default.convoOfEv(this.props.ev));
|
|
52
40
|
return convo.state === 'ended';
|
|
53
41
|
}
|
|
54
|
-
|
|
55
42
|
render() {
|
|
56
43
|
if (_index.default.size(this.state.formData) === 0) return null;
|
|
57
44
|
let $fields = this.renderFields();
|
|
58
45
|
let $submitbutton = null;
|
|
59
|
-
|
|
60
46
|
if (!this.isSummited()) {
|
|
61
47
|
$submitbutton = (0, _preact.h)("div", {
|
|
62
48
|
class: "mt-2"
|
|
@@ -66,18 +52,16 @@ class FormAttachment extends _common.Com {
|
|
|
66
52
|
class: "form-attachment--submit-btn"
|
|
67
53
|
}, this.props.t('btn_submit_form_attachment')));
|
|
68
54
|
}
|
|
69
|
-
|
|
70
55
|
return (0, _preact.h)("div", {
|
|
71
56
|
class: "form-attachment",
|
|
72
57
|
onClick: e => e.stopPropagation()
|
|
73
58
|
}, this.props.t(this.props.form.title) || this.props.t('capture_lead_title'), $fields, $submitbutton);
|
|
74
59
|
}
|
|
75
|
-
|
|
76
60
|
focus() {
|
|
77
61
|
if (this.props.store.isPreview) return;
|
|
78
62
|
if (_index.default.size(this.state.formData) === 0) return;
|
|
79
|
-
let $field;
|
|
80
63
|
|
|
64
|
+
let $field;
|
|
81
65
|
if (this.isFormFilled()) {
|
|
82
66
|
var keys = Object.keys(this.state.formData);
|
|
83
67
|
var lastkey = keys[_index.default.size(keys) - 1];
|
|
@@ -88,30 +72,23 @@ class FormAttachment extends _common.Com {
|
|
|
88
72
|
if (!firstunfilledfield) return;
|
|
89
73
|
$field = this['field.' + encode(firstunfilledfield.name)];
|
|
90
74
|
}
|
|
91
|
-
|
|
92
75
|
if ($field) $field.focus();
|
|
93
76
|
}
|
|
94
|
-
|
|
95
77
|
firstUnfilledField() {
|
|
96
78
|
return _index.default.find(this.state.formData, field => field.value == null || field.value === '');
|
|
97
79
|
}
|
|
98
|
-
|
|
99
80
|
isFormFilled() {
|
|
100
81
|
return !_index.default.find(this.state.formData, field => field.value == null || field.value === '');
|
|
101
82
|
}
|
|
102
|
-
|
|
103
83
|
onInputChange(index, val) {
|
|
104
84
|
let formData = _index.default.cloneDeep(this.state.formData);
|
|
105
|
-
|
|
106
85
|
formData[index].value = val;
|
|
107
86
|
this.setState({
|
|
108
87
|
formData
|
|
109
88
|
});
|
|
110
89
|
}
|
|
111
|
-
|
|
112
90
|
onListAddItem(index, val) {
|
|
113
91
|
let formData = _index.default.cloneDeep(this.state.formData);
|
|
114
|
-
|
|
115
92
|
let field = formData[index];
|
|
116
93
|
field.value = field.value || [];
|
|
117
94
|
field.value.push(val);
|
|
@@ -119,10 +96,8 @@ class FormAttachment extends _common.Com {
|
|
|
119
96
|
formData
|
|
120
97
|
});
|
|
121
98
|
}
|
|
122
|
-
|
|
123
99
|
onListRemoveItem(index, vindex) {
|
|
124
100
|
let formData = _index.default.cloneDeep(this.state.formData);
|
|
125
|
-
|
|
126
101
|
let field = formData[index];
|
|
127
102
|
field.value = field.value || [];
|
|
128
103
|
field.value.splice(vindex, 1);
|
|
@@ -130,14 +105,12 @@ class FormAttachment extends _common.Com {
|
|
|
130
105
|
formData
|
|
131
106
|
});
|
|
132
107
|
}
|
|
133
|
-
|
|
134
108
|
renderFields() {
|
|
135
109
|
if (_index.default.size(this.state.formData) === 0) return null;
|
|
136
110
|
let $fields = null;
|
|
137
111
|
$fields = _index.default.map(this.state.formData, (field, index) => {
|
|
138
112
|
let $field = null;
|
|
139
113
|
var errclass = field.error ? 'input--error' : '';
|
|
140
|
-
|
|
141
114
|
if (field.type === 'text') {
|
|
142
115
|
if (this.isSummited()) {
|
|
143
116
|
$field = (0, _preact.h)("div", {
|
|
@@ -211,9 +184,7 @@ class FormAttachment extends _common.Com {
|
|
|
211
184
|
}, (0, _preact.h)("div", null)));
|
|
212
185
|
} else if (field.type === 'list') {
|
|
213
186
|
let selected = field.value || [];
|
|
214
|
-
|
|
215
187
|
let items = _index.default.filter(_index.default.get(field, 'items', []), item => !selected.includes(item));
|
|
216
|
-
|
|
217
188
|
$field = (0, _preact.h)(_ListField.default, {
|
|
218
189
|
selected: selected,
|
|
219
190
|
items: items,
|
|
@@ -231,9 +202,7 @@ class FormAttachment extends _common.Com {
|
|
|
231
202
|
type: "date"
|
|
232
203
|
});
|
|
233
204
|
}
|
|
234
|
-
|
|
235
205
|
let label = field.label;
|
|
236
|
-
|
|
237
206
|
if (field.name === 'fullname') {
|
|
238
207
|
label = this.props.t('fullname');
|
|
239
208
|
} else if (field.name === 'emails') {
|
|
@@ -241,7 +210,6 @@ class FormAttachment extends _common.Com {
|
|
|
241
210
|
} else if (field.name === 'phones') {
|
|
242
211
|
label = this.props.t('phones');
|
|
243
212
|
}
|
|
244
|
-
|
|
245
213
|
return (0, _preact.h)("div", null, (0, _preact.h)("p", {
|
|
246
214
|
class: "label mt-3"
|
|
247
215
|
}, label, field.is_required ? (0, _preact.h)("span", {
|
|
@@ -252,10 +220,8 @@ class FormAttachment extends _common.Com {
|
|
|
252
220
|
});
|
|
253
221
|
return (0, _preact.h)("div", null, $fields);
|
|
254
222
|
}
|
|
255
|
-
|
|
256
223
|
async submit() {
|
|
257
224
|
var hasError = false;
|
|
258
|
-
|
|
259
225
|
_index.default.map(this.state.formData, field => {
|
|
260
226
|
if (field.is_required && (field.value === undefined || field.value === '' || _index.default.size(field.value) === 0 && Array.isArray(field.value))) {
|
|
261
227
|
field.error = this.props.t('error_empty');
|
|
@@ -263,7 +229,6 @@ class FormAttachment extends _common.Com {
|
|
|
263
229
|
} else {
|
|
264
230
|
field.error = '';
|
|
265
231
|
}
|
|
266
|
-
|
|
267
232
|
if (field.name === 'emails' && field.value) {
|
|
268
233
|
if (!_index.default.isEmail(field.value)) {
|
|
269
234
|
field.error = this.props.t('error_email_invalid');
|
|
@@ -271,49 +236,38 @@ class FormAttachment extends _common.Com {
|
|
|
271
236
|
}
|
|
272
237
|
}
|
|
273
238
|
});
|
|
274
|
-
|
|
275
239
|
this.forceUpdate();
|
|
276
240
|
if (hasError) return;
|
|
277
241
|
let user = {};
|
|
278
|
-
|
|
279
242
|
let formData = _index.default.cloneDeep(this.state.formData);
|
|
280
|
-
|
|
281
243
|
_index.default.map(formData, field => {
|
|
282
244
|
var attr = {
|
|
283
245
|
key: field.name
|
|
284
246
|
};
|
|
285
247
|
field.answered = new _index.default.Date().getTime();
|
|
286
|
-
|
|
287
248
|
if (field.type === 'number') {
|
|
288
249
|
attr.number = parseInt(field.value);
|
|
289
250
|
field.answer = _index.default.stringify(attr.number);
|
|
290
251
|
}
|
|
291
|
-
|
|
292
252
|
if (field.type === 'datetime') {
|
|
293
253
|
attr.datetime = new _index.default.Date(field.value).toISOString();
|
|
294
254
|
field.answer = _index.default.stringify(attr.datetime);
|
|
295
255
|
}
|
|
296
|
-
|
|
297
256
|
if (field.type === 'list') {
|
|
298
257
|
attr.list = field.value;
|
|
299
258
|
field.answer = _index.default.stringify(attr.list);
|
|
300
259
|
}
|
|
301
|
-
|
|
302
260
|
if (field.type === 'text' || field.type === 'boolean') {
|
|
303
261
|
attr[field.type] = field.value;
|
|
304
262
|
field.answer = _index.default.stringify(field.value);
|
|
305
263
|
}
|
|
306
|
-
|
|
307
264
|
_index.default.setUserAttr(user, attr);
|
|
308
265
|
});
|
|
309
|
-
|
|
310
266
|
_index.default.map(formData, field => {
|
|
311
267
|
let ffield = _index.default.find(this.props.form.fields, ffield => ffield.name === field.name);
|
|
312
|
-
|
|
313
268
|
if (!ffield) return;
|
|
314
269
|
ffield.answered = field.answered;
|
|
315
270
|
});
|
|
316
|
-
|
|
317
271
|
this.setState({
|
|
318
272
|
formData
|
|
319
273
|
});
|
|
@@ -328,19 +282,14 @@ class FormAttachment extends _common.Com {
|
|
|
328
282
|
}
|
|
329
283
|
}]
|
|
330
284
|
};
|
|
331
|
-
|
|
332
285
|
let cid = _index.default.convoOfEv(this.props.ev);
|
|
333
|
-
|
|
334
286
|
this.props.store.sendConvoEvent(cid, 'message_sent', {
|
|
335
287
|
message
|
|
336
288
|
});
|
|
337
289
|
this.props.onSubmit && this.props.onSubmit();
|
|
338
290
|
}
|
|
339
|
-
|
|
340
291
|
}
|
|
341
|
-
|
|
342
292
|
exports.default = FormAttachment;
|
|
343
|
-
|
|
344
293
|
function encode(key) {
|
|
345
294
|
return btoa(key).split('=').join('');
|
|
346
295
|
}
|
|
@@ -4,36 +4,26 @@ 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 _FormAttachment = _interopRequireDefault(require("./FormAttachment.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
|
class FormAttachments extends _common.Com {
|
|
19
13
|
constructor(props) {
|
|
20
14
|
super(props);
|
|
21
15
|
}
|
|
22
|
-
|
|
23
16
|
render() {
|
|
24
17
|
let byType = _index.default.get(this.props.ev, 'by.type');
|
|
25
|
-
|
|
26
18
|
if (byType === 'user') return;
|
|
27
19
|
let forms = [];
|
|
28
20
|
let attachments = _index.default.get(this.props.ev, 'data.message.attachments') || [];
|
|
29
|
-
|
|
30
21
|
_index.default.each(attachments, att => {
|
|
31
22
|
if (!att) return;
|
|
32
23
|
if (att.type !== 'form' && att.type !== 'ask_info_form') return;
|
|
33
24
|
att.form._type = att.type;
|
|
34
25
|
forms.push(att.form);
|
|
35
26
|
});
|
|
36
|
-
|
|
37
27
|
let $forms = _index.default.map(forms, (form, formIndex) => {
|
|
38
28
|
return (0, _preact.h)(_FormAttachment.default, {
|
|
39
29
|
store: this.props.store,
|
|
@@ -47,18 +37,14 @@ class FormAttachments extends _common.Com {
|
|
|
47
37
|
t: this.props.t
|
|
48
38
|
});
|
|
49
39
|
});
|
|
50
|
-
|
|
51
40
|
if ($forms.length === 0) return null;
|
|
52
41
|
return (0, _preact.h)("div", {
|
|
53
42
|
class: "message-agent"
|
|
54
43
|
}, $forms);
|
|
55
44
|
}
|
|
56
|
-
|
|
57
45
|
focus() {
|
|
58
46
|
var $form = this['form.0'];
|
|
59
47
|
if ($form) $form.focus();
|
|
60
48
|
}
|
|
61
|
-
|
|
62
49
|
}
|
|
63
|
-
|
|
64
50
|
exports.default = FormAttachments;
|
|
@@ -4,39 +4,28 @@ 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 FormSubmitAttachments extends _common.Com {
|
|
17
12
|
constructor(props) {
|
|
18
13
|
super(props);
|
|
19
14
|
}
|
|
20
|
-
|
|
21
15
|
render() {
|
|
22
16
|
return null;
|
|
23
17
|
let submits = [];
|
|
24
18
|
let attachments = _index.default.get(this.props.ev, 'data.message.attachments') || [];
|
|
25
|
-
|
|
26
19
|
_index.default.each(attachments, att => {
|
|
27
20
|
if (!att) return;
|
|
28
21
|
if (att.type !== 'form_submit') return;
|
|
29
22
|
if (!att.form_submit) return;
|
|
30
23
|
submits.push(att.form_submit);
|
|
31
24
|
});
|
|
32
|
-
|
|
33
25
|
let $submits = _index.default.map(submits, (submit, index) => (0, _preact.h)("div", {
|
|
34
26
|
class: "info-message"
|
|
35
27
|
}, (0, _preact.h)("span", null, this.props.tt('prechat_form_thanks'))));
|
|
36
|
-
|
|
37
28
|
return (0, _preact.h)("div", null, $submits);
|
|
38
29
|
}
|
|
39
|
-
|
|
40
30
|
}
|
|
41
|
-
|
|
42
31
|
exports.default = FormSubmitAttachments;
|
|
@@ -4,32 +4,24 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _Buttons = _interopRequireDefault(require("./Buttons.js"));
|
|
9
|
-
|
|
10
8
|
var _index = _interopRequireDefault(require("../util/index.js"));
|
|
11
|
-
|
|
12
9
|
var _touchscroll = _interopRequireDefault(require("./touchscroll"));
|
|
13
|
-
|
|
14
10
|
var _common = require("../common.js");
|
|
15
|
-
|
|
16
11
|
var _preact = require("preact");
|
|
17
|
-
|
|
18
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
-
|
|
20
13
|
class GenericTemplateAttachments extends _common.Com {
|
|
21
14
|
constructor(props) {
|
|
22
15
|
super(props);
|
|
23
16
|
this.state = {
|
|
24
17
|
focusing: 0
|
|
25
18
|
};
|
|
19
|
+
|
|
26
20
|
this.galleryRef = (0, _preact.createRef)();
|
|
27
21
|
}
|
|
28
|
-
|
|
29
22
|
componentDidMount() {
|
|
30
23
|
this.bindDrag();
|
|
31
24
|
}
|
|
32
|
-
|
|
33
25
|
focus(eleindex) {
|
|
34
26
|
this.setState({
|
|
35
27
|
focusing: eleindex
|
|
@@ -42,15 +34,11 @@ class GenericTemplateAttachments extends _common.Com {
|
|
|
42
34
|
|
|
43
35
|
render() {
|
|
44
36
|
let byType = _index.default.get(this.props.ev, 'by.type');
|
|
45
|
-
|
|
46
37
|
if (byType === 'user') return null;
|
|
47
38
|
|
|
48
39
|
let attachments = _index.default.get(this.props.ev, 'data.message.attachments', []);
|
|
49
|
-
|
|
50
40
|
let generics = _index.default.filter(attachments, att => _index.default.get(att, 'type') === 'generic');
|
|
51
|
-
|
|
52
41
|
if (generics.length === 0) return null;
|
|
53
|
-
|
|
54
42
|
var $generics = _index.default.map(generics, (gen, index) => {
|
|
55
43
|
var $eles = _index.default.map(gen.elements, ele => {
|
|
56
44
|
let title = this.props.t.i18n(ele.i18n_title) || ele.title;
|
|
@@ -75,9 +63,7 @@ class GenericTemplateAttachments extends _common.Com {
|
|
|
75
63
|
t: this.props.t
|
|
76
64
|
}));
|
|
77
65
|
});
|
|
78
|
-
|
|
79
66
|
let elements = _index.default.get(attachments, '0.elements', []);
|
|
80
|
-
|
|
81
67
|
let leftNavigatorCls = 'generic-attachment-navigator generic-attachment-navigator--left';
|
|
82
68
|
let rightNavigatorCls = 'generic-attachment-navigator generic-attachment-navigator--right';
|
|
83
69
|
if (this.state.focusing === 0) leftNavigatorCls += ' generic-attachment-navigator--disabled';
|
|
@@ -99,17 +85,12 @@ class GenericTemplateAttachments extends _common.Com {
|
|
|
99
85
|
class: "generic-attachment-navigator-icon"
|
|
100
86
|
}, "\u203A"))));
|
|
101
87
|
});
|
|
102
|
-
|
|
103
88
|
return $generics;
|
|
104
89
|
}
|
|
105
|
-
|
|
106
90
|
bindDrag() {
|
|
107
91
|
if (!this.props.store.isMobile()) return;
|
|
108
92
|
let eles = document.getElementsByClassName('generic-attachment');
|
|
109
|
-
|
|
110
93
|
_index.default.map(eles, ele => (0, _touchscroll.default)(ele, () => {}));
|
|
111
94
|
}
|
|
112
|
-
|
|
113
95
|
}
|
|
114
|
-
|
|
115
96
|
exports.default = GenericTemplateAttachments;
|
|
@@ -4,34 +4,25 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
|
|
8
7
|
var _AgentsAvatar = _interopRequireDefault(require("./AgentsAvatar.js"));
|
|
9
|
-
|
|
10
8
|
var _index = _interopRequireDefault(require("../util/index.js"));
|
|
11
|
-
|
|
12
9
|
var _common = require("../common.js");
|
|
13
|
-
|
|
14
10
|
var _preact = require("preact");
|
|
15
|
-
|
|
16
11
|
var _Emoji = _interopRequireDefault(require("./Emoji.js"));
|
|
17
|
-
|
|
18
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
-
|
|
20
13
|
class Header extends _common.Com {
|
|
21
14
|
constructor(props) {
|
|
22
15
|
super(props);
|
|
23
16
|
}
|
|
24
|
-
|
|
25
17
|
render() {
|
|
26
18
|
let headerMode = 'collapsed';
|
|
27
19
|
let cls = 'widget-header';
|
|
28
20
|
let renderSocial = false;
|
|
29
21
|
let renderTeam = false;
|
|
30
22
|
let renderCollapsed = this.props.view !== 'list' && headerMode === 'collapsed';
|
|
31
|
-
let accSetting = this.props.plugin.chatbox || {};
|
|
32
23
|
|
|
24
|
+
let accSetting = this.props.plugin.chatbox || {};
|
|
33
25
|
let layout = _index.default.get(accSetting, 'header.layout');
|
|
34
|
-
|
|
35
26
|
if (renderCollapsed) {
|
|
36
27
|
cls += ' widget-header--collapsed';
|
|
37
28
|
} else {
|
|
@@ -39,23 +30,17 @@ class Header extends _common.Com {
|
|
|
39
30
|
renderSocial = layout === 'social';
|
|
40
31
|
renderTeam = !renderSocial;
|
|
41
32
|
}
|
|
42
|
-
|
|
43
33
|
return (0, _preact.h)("div", {
|
|
44
34
|
class: cls
|
|
45
35
|
}, this.renderCollapsedHeader(renderCollapsed), this.renderSocial(renderSocial), this.renderTeam(renderTeam));
|
|
46
36
|
}
|
|
47
|
-
|
|
48
37
|
renderCollapsedHeader(show) {
|
|
49
38
|
let accSetting = this.props.plugin.chatbox || {};
|
|
50
39
|
let acc = this.props.store.matchAccount();
|
|
51
40
|
let state = acc.is_online ? this.props.t('agent_online') : this.props.t('agent_offline');
|
|
52
|
-
|
|
53
41
|
let tagline = _index.default.get(accSetting, `tagline`, {});
|
|
54
|
-
|
|
55
42
|
let desc = this.props.t.i18n(tagline) || accSetting.introduction || state;
|
|
56
|
-
|
|
57
43
|
let agentIdsJoined = _index.default.map(this.getAgentJoined(this.props.cid), agent => agent.id);
|
|
58
|
-
|
|
59
44
|
let cls = 'widget-header--inner widget-header--inner--collapsed';
|
|
60
45
|
if (!show) cls += ' widget-header--inner--hidden';
|
|
61
46
|
return (0, _preact.h)("div", {
|
|
@@ -74,15 +59,12 @@ class Header extends _common.Com {
|
|
|
74
59
|
title: desc
|
|
75
60
|
}, desc)), this.renderCloseButton());
|
|
76
61
|
}
|
|
77
|
-
|
|
78
62
|
renderSocial(show) {
|
|
79
63
|
let accSetting = this.props.plugin.chatbox || {};
|
|
80
64
|
let acc = this.props.store.matchAccount();
|
|
81
65
|
let links = _index.default.get(accSetting, 'header.links') || [];
|
|
82
|
-
|
|
83
66
|
let $links = _index.default.map(links, link => {
|
|
84
67
|
if (!link.url || !link.type || link.type === 'subiz') return null;
|
|
85
|
-
|
|
86
68
|
if (link.type === 'email') {
|
|
87
69
|
return (0, _preact.h)("div", null, (0, _preact.h)("a", {
|
|
88
70
|
href: `mailto:${link.url}`,
|
|
@@ -91,7 +73,6 @@ class Header extends _common.Com {
|
|
|
91
73
|
class: `social__links-logo social__links-logo--${link.type}`
|
|
92
74
|
})));
|
|
93
75
|
}
|
|
94
|
-
|
|
95
76
|
return (0, _preact.h)("div", null, (0, _preact.h)("a", {
|
|
96
77
|
href: link.url,
|
|
97
78
|
target: "_blank",
|
|
@@ -101,21 +82,16 @@ class Header extends _common.Com {
|
|
|
101
82
|
class: `social__links-logo social__links-logo--${link.type}`
|
|
102
83
|
})));
|
|
103
84
|
});
|
|
104
|
-
|
|
105
85
|
const DEFTEAMINTO = `Chúng tôi sẵn sàng trợ giúp :wave:.
|
|
106
86
|
Vui lòng hỏi chúng tôi bất cứ điều gì hoặc chia sẻ phản hồi của bạn`;
|
|
107
|
-
|
|
108
87
|
let tagline = _index.default.get(accSetting, `tagline`, {});
|
|
109
|
-
|
|
110
88
|
var teamintro = this.props.t.i18n(tagline) || accSetting.introduction || this.props.t('team_intro') || DEFTEAMINTO;
|
|
111
|
-
|
|
112
89
|
var tags = _index.default.extractText(teamintro).map(tag => {
|
|
113
90
|
if (tag.type === 'emoji') return (0, _preact.h)(_Emoji.default, {
|
|
114
91
|
emojiCode: tag.text
|
|
115
92
|
});
|
|
116
93
|
return tag.text;
|
|
117
94
|
});
|
|
118
|
-
|
|
119
95
|
let cls = 'widget-header--inner widget-header--inner--expanded';
|
|
120
96
|
if (!show) cls += ' widget-header--inner--hidden';
|
|
121
97
|
return (0, _preact.h)("div", {
|
|
@@ -138,23 +114,18 @@ Vui lòng hỏi chúng tôi bất cứ điều gì hoặc chia sẻ phản hồi
|
|
|
138
114
|
class: "social__links"
|
|
139
115
|
}, $links)))));
|
|
140
116
|
}
|
|
141
|
-
|
|
142
117
|
renderTeam(show) {
|
|
143
118
|
let accSetting = this.props.plugin.chatbox || {};
|
|
144
119
|
const DEFTEAMINTO = `Chúng tôi sẵn sàng trợ giúp :wave:.
|
|
145
120
|
Vui lòng hỏi chúng tôi bất cứ điều gì hoặc chia sẻ phản hồi của bạn`;
|
|
146
|
-
|
|
147
121
|
let tagline = _index.default.get(accSetting, `tagline`, {});
|
|
148
|
-
|
|
149
122
|
var teamintro = this.props.t.i18n(tagline) || accSetting.introduction || this.props.t('team_intro') || DEFTEAMINTO;
|
|
150
|
-
|
|
151
123
|
var tags = _index.default.extractText(teamintro).map(tag => {
|
|
152
124
|
if (tag.type === 'emoji') return (0, _preact.h)(_Emoji.default, {
|
|
153
125
|
emojiCode: tag.text
|
|
154
126
|
});
|
|
155
127
|
return tag.text;
|
|
156
128
|
});
|
|
157
|
-
|
|
158
129
|
let cls = 'widget-header--inner widget-header--inner--expanded';
|
|
159
130
|
if (!show) cls += ' widget-header--inner--hidden';
|
|
160
131
|
return (0, _preact.h)("div", {
|
|
@@ -179,36 +150,29 @@ Vui lòng hỏi chúng tôi bất cứ điều gì hoặc chia sẻ phản hồi
|
|
|
179
150
|
class: "widget-header--description"
|
|
180
151
|
}, tags)))));
|
|
181
152
|
}
|
|
182
|
-
|
|
183
153
|
getTitle() {
|
|
184
154
|
let accSetting = this.props.plugin.chatbox || {};
|
|
185
155
|
let acc = this.props.store.matchAccount();
|
|
186
156
|
let agentsJoined = this.getAgentJoined(this.props.cid);
|
|
187
|
-
|
|
188
157
|
let caption = _index.default.get(this.props.plugin, 'chatbox.caption', {});
|
|
189
|
-
|
|
190
158
|
let title = this.props.t.i18n(caption) || accSetting.title;
|
|
191
159
|
return getJoinedNameMember(agentsJoined) || title || acc.name || this.props.t('widget_title');
|
|
192
160
|
}
|
|
193
|
-
|
|
194
161
|
renderBackButton() {
|
|
195
162
|
let allconvos = this.props.store.matchConvo('*');
|
|
196
163
|
if (_index.default.size(allconvos) === 0) return null;
|
|
197
164
|
var $unreadcount = null;
|
|
198
165
|
let user = this.props.store.matchUser();
|
|
199
166
|
let unreadcount = 0;
|
|
200
|
-
|
|
201
167
|
_index.default.map(allconvos, convo => {
|
|
202
168
|
if (convo.id == this.props.cid) return;
|
|
203
169
|
if (!_index.default.isConvoSeen(convo, user.id)) unreadcount++;
|
|
204
170
|
});
|
|
205
|
-
|
|
206
171
|
if (unreadcount !== 0) {
|
|
207
172
|
$unreadcount = (0, _preact.h)("span", {
|
|
208
173
|
class: "widget-header--total-unread-convo"
|
|
209
174
|
}, unreadcount);
|
|
210
175
|
}
|
|
211
|
-
|
|
212
176
|
return (0, _preact.h)("div", {
|
|
213
177
|
class: `widget-header--wrap-button-back ${unreadcount ? 'widget-header--has-convo-unred' : ''}`,
|
|
214
178
|
onClick: e => this.onBackClick(e)
|
|
@@ -217,7 +181,6 @@ Vui lòng hỏi chúng tôi bất cứ điều gì hoặc chia sẻ phản hồi
|
|
|
217
181
|
"data-tooltip": this.props.t('menu_back')
|
|
218
182
|
}), $unreadcount);
|
|
219
183
|
}
|
|
220
|
-
|
|
221
184
|
renderCloseButton() {
|
|
222
185
|
let accSetting = this.props.plugin.chatbox || {};
|
|
223
186
|
if (accSetting.hide_close_button) return null;
|
|
@@ -230,29 +193,21 @@ Vui lòng hỏi chúng tôi bất cứ điều gì hoặc chia sẻ phản hồi
|
|
|
230
193
|
class: "widget-header--button-close-icon"
|
|
231
194
|
}));
|
|
232
195
|
}
|
|
233
|
-
|
|
234
196
|
onBackClick(e) {
|
|
235
197
|
e.stopPropagation();
|
|
236
198
|
e.preventDefault();
|
|
237
199
|
this.props.onGotoList && this.props.onGotoList();
|
|
238
200
|
}
|
|
239
|
-
|
|
240
201
|
onCloseClick(e) {
|
|
241
202
|
e.stopPropagation();
|
|
242
203
|
e.preventDefault();
|
|
243
204
|
this.props.onClose && this.props.onClose();
|
|
244
205
|
}
|
|
245
|
-
|
|
246
206
|
getAgentJoined(cid) {
|
|
247
207
|
var convo = this.props.store.matchConvo(cid) || {};
|
|
248
|
-
|
|
249
208
|
let joined = _index.default.filter(convo.members, mem => mem.type === 'agent' && mem.membership === 'active');
|
|
250
|
-
|
|
251
209
|
return joined;
|
|
252
210
|
}
|
|
253
|
-
|
|
254
211
|
}
|
|
255
|
-
|
|
256
212
|
exports.default = Header;
|
|
257
|
-
|
|
258
213
|
let getJoinedNameMember = agents => _index.default.map(agents, agent => agent.name).join(', ');
|
|
@@ -4,42 +4,29 @@ 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 ImageAttachment extends _common.Com {
|
|
17
12
|
constructor(props) {
|
|
18
13
|
super(props);
|
|
19
14
|
}
|
|
20
|
-
|
|
21
15
|
render() {
|
|
22
16
|
var attachments = _index.default.get(this.props.ev, 'data.message.attachments', []);
|
|
23
|
-
|
|
24
17
|
var images = [];
|
|
25
|
-
|
|
26
18
|
let byType = _index.default.get(this.props.ev, 'by.type');
|
|
27
|
-
|
|
28
19
|
_index.default.each(attachments, (att, i) => {
|
|
29
20
|
if (!att) return;
|
|
30
21
|
if (!_index.default.includes(att.mimetype, 'image')) return;
|
|
31
22
|
if (!att.url) return;
|
|
32
23
|
var uri = att.url;
|
|
33
|
-
|
|
34
24
|
if (!uri.startsWith('https://') && !uri.startsWith('http://') && !uri.startsWith('content://') && !uri.startsWith('data:')) {
|
|
35
25
|
att.url = this.props.store.FileURL + uri;
|
|
36
26
|
}
|
|
37
|
-
|
|
38
27
|
images.push(att);
|
|
39
28
|
});
|
|
40
|
-
|
|
41
29
|
if (images.length === 0) return null;
|
|
42
|
-
|
|
43
30
|
var $images = _index.default.map(images, (image, index) => (0, _preact.h)("div", {
|
|
44
31
|
class: `image-attachment image-attachment--${byType}`
|
|
45
32
|
}, (0, _preact.h)("a", {
|
|
@@ -51,7 +38,6 @@ class ImageAttachment extends _common.Com {
|
|
|
51
38
|
src: this.props.store.replaceFileUrl(image.thumbnail_url || image.url),
|
|
52
39
|
onload: e => this.props.onLoad && this.props.onLoad()
|
|
53
40
|
}))));
|
|
54
|
-
|
|
55
41
|
if (byType === 'agent') {
|
|
56
42
|
return (0, _preact.h)("div", {
|
|
57
43
|
class: "message-agent"
|
|
@@ -62,7 +48,5 @@ class ImageAttachment extends _common.Com {
|
|
|
62
48
|
}, $images);
|
|
63
49
|
}
|
|
64
50
|
}
|
|
65
|
-
|
|
66
51
|
}
|
|
67
|
-
|
|
68
52
|
exports.default = ImageAttachment;
|