@subiz/widget-v4 4.1.185 → 4.1.187
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 +1 -0
- package/assets/less/message.less +20 -0
- package/assets/less/widget.less +50 -13
- package/compiled_src/bot.js +1 -1
- package/compiled_src/chatbox/ChatButton.js +15 -9
- package/compiled_src/chatbox/TextMessage.js +3 -0
- package/compiled_src/chatbox/block.js +1 -0
- package/compiled_src/chatbox/main.js +2 -0
- package/compiled_src/store/store.js +8 -1
- package/compiled_src/util/common.js +1 -0
- package/compiled_src/util/index.js +1 -0
- package/compiled_src/util/op.js +9 -0
- package/dist/127.js +273 -0
- package/dist/132.js +2802 -0
- package/dist/185.js +1827 -0
- package/dist/19a00a03cb8.127.js +1 -0
- package/dist/19a00a03cb8.132.js +1 -0
- package/dist/19a00a03cb8.185.js +1 -0
- package/dist/19a00a03cb8.27.js +1 -0
- package/dist/19a00a03cb8.278.js +1 -0
- package/dist/19a00a03cb8.339.js +1 -0
- package/dist/19a00a03cb8.459.js +1 -0
- package/dist/19a00a03cb8.490.js +1 -0
- package/dist/19a00a03cb8.74.js +1 -0
- package/dist/19a00a03cb8.997.js +1 -0
- package/dist/19a00a03cb8.app.js +1 -0
- package/dist/19a00a03cb8.chat.html +1 -0
- package/dist/19a00a03cb8.chat.js +1 -0
- package/dist/19a00a03cb8.form.html +1 -0
- package/dist/19a00a03cb8.form.js +1 -0
- package/dist/19a00a03cb8.index.html +72 -0
- package/dist/19a00a03cb8.library.html +72 -0
- package/dist/19a00a03cb8.library.js +1 -0
- package/dist/19a00a03cb8.preview.html +759 -0
- package/dist/19a00a03cb8.preview.js +1 -0
- package/dist/19a00a03cb8.webview.js +1 -0
- package/dist/27.js +35 -0
- package/dist/459.js +35 -0
- package/dist/490.js +305 -0
- package/dist/74.js +372 -0
- package/dist/997.js +35 -0
- package/dist/HASH +1 -0
- 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 +20 -0
- package/dist/assets/img/caret.998eb8f.svg +1 -0
- package/dist/assets/img/convos_empty.2353007.svg +72 -0
- 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 +4 -0
- package/dist/assets/img/done_green.b817fd4.svg +4 -0
- 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 +23 -0
- package/dist/assets/img/empty_1.0b98af0.svg +11 -0
- package/dist/assets/img/examplte_logo.f86535f.svg +1 -0
- package/dist/assets/img/external-link.90577cc.svg +1 -0
- package/dist/assets/img/fb_inverse_circle.36c2cfc.png +0 -0
- package/dist/assets/img/ghn.070f8e3.svg +17 -0
- package/dist/assets/img/ghtk.326eac1.svg +18 -0
- package/dist/assets/img/image_default.be0698b.png +0 -0
- package/dist/assets/img/info.ebce7ea.svg +1 -0
- package/dist/assets/img/loader.37000a7.svg +1 -0
- package/dist/assets/img/loading_static.a27f0ac.svg +10 -0
- 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 +5 -0
- package/dist/assets/img/package_fade.763c001.svg +1 -0
- package/dist/assets/img/rating--average.1ea492c.svg +12 -0
- package/dist/assets/img/rating--great.e3d712e.svg +16 -0
- package/dist/assets/img/rating--poor.2938a25.svg +12 -0
- package/dist/assets/img/search.f9705ff.svg +1 -0
- package/dist/assets/img/send.6db52a9.svg +3 -0
- package/dist/assets/img/shop.f7dc7d8.svg +1 -0
- package/dist/assets/img/shop_faded.df7845a.svg +1 -0
- package/dist/assets/img/stars_v2.79cf728.png +0 -0
- package/dist/assets/img/subiz-mono.8fbc067.svg +3 -0
- package/dist/assets/img/x.26fdfa3.svg +5 -0
- package/dist/malicious-app.js +17 -0
- package/dist/screenshoot.html +7 -0
- package/dist/screenshoot.js +12630 -0
- package/package.json +2 -2
- package/src/bot.js +1 -1
- package/src/chatbox/ChatButton.js +16 -8
- package/src/chatbox/TextMessage.js +15 -5
- package/src/chatbox/block.js +1 -0
- package/src/chatbox/main.js +2 -0
- package/src/store/store.js +8 -2
- package/src/util/common.js +1 -0
- package/src/util/index.js +1 -0
- package/src/util/op.js +18 -6
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@subiz/widget-v4",
|
|
3
|
-
"version": "4.1.
|
|
3
|
+
"version": "4.1.187",
|
|
4
4
|
"main": "./compiled_src/lib.js",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"dev": "npx webpack serve --config webpack.dev.js",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"babel-loader": "^10.0.0",
|
|
30
30
|
"babel-plugin-syntax-jsx": "^6.18.0",
|
|
31
31
|
"html-webpack-plugin": "^5.6.4",
|
|
32
|
-
"puppeteer": "^24.
|
|
32
|
+
"puppeteer": "^24.25.0",
|
|
33
33
|
"webpack": "^5.102.1",
|
|
34
34
|
"webpack-bundle-analyzer": "^4.10.2",
|
|
35
35
|
"webpack-cli": "^6.0.1",
|
package/src/bot.js
CHANGED
|
@@ -49,10 +49,13 @@ export default class ChatButton extends Com {
|
|
|
49
49
|
|
|
50
50
|
if (this.props.store.isMobile()) {
|
|
51
51
|
// dont show greeting fro mobile anymore
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
52
|
+
let mobileDisabled = sb.get(this.props.plugin, 'chatbox.greeting.mobile_disabled')
|
|
53
|
+
if (mobileDisabled) {
|
|
54
|
+
// need setState previewEvent for display 1 unread in mobile
|
|
55
|
+
this.props.store.updateLastview({screen: 'button', previewEvent: ev})
|
|
56
|
+
this.forceUpdate()
|
|
57
|
+
return
|
|
58
|
+
}
|
|
56
59
|
}
|
|
57
60
|
|
|
58
61
|
this.props.store.updateLastview({screen: 'preview', previewEvent: ev})
|
|
@@ -212,7 +215,8 @@ export default class ChatButton extends Com {
|
|
|
212
215
|
let text = this.props.t.i18n(sb.get(greeting, 'greeting', {})) || greeting.message
|
|
213
216
|
|
|
214
217
|
let enabled = greeting.enabled
|
|
215
|
-
|
|
218
|
+
let mobileDisabled = this.props.store.isMobile() && greeting.mobile_disabled
|
|
219
|
+
if (!text || !enabled || mobileDisabled) {
|
|
216
220
|
return
|
|
217
221
|
}
|
|
218
222
|
this.ShowGreeting()
|
|
@@ -278,7 +282,7 @@ export default class ChatButton extends Com {
|
|
|
278
282
|
}
|
|
279
283
|
|
|
280
284
|
renderPreview() {
|
|
281
|
-
if (this.props.store.isMobile()) return
|
|
285
|
+
//if (this.props.store.isMobile()) return
|
|
282
286
|
if (!this.state.hasPreviewDom) return
|
|
283
287
|
let previewEvent = this.state.previewEvent
|
|
284
288
|
let agent = this.getAgentOfPreviewEvent(previewEvent)
|
|
@@ -294,6 +298,7 @@ export default class ChatButton extends Com {
|
|
|
294
298
|
let attachments = sb.get(previewEvent, 'data.message.attachments') || []
|
|
295
299
|
let quickReplies = sb.find(attachments, (att) => att.type === 'quick_replies')
|
|
296
300
|
quickReplies = sb.get(quickReplies, 'quick_replies') || []
|
|
301
|
+
quickReplies = sb.take(quickReplies, 10)
|
|
297
302
|
let imgAtt = sb.find(attachments, (att) => sb.includes(att.mimetype, 'image') && att.url)
|
|
298
303
|
let uri = sb.get(imgAtt, 'url') || ''
|
|
299
304
|
if (
|
|
@@ -308,7 +313,7 @@ export default class ChatButton extends Com {
|
|
|
308
313
|
|
|
309
314
|
return (
|
|
310
315
|
<div class={`widget-preview-new-wrapper ${this.state.previewExtraCls}`}>
|
|
311
|
-
<div class={`widget-preview-x-wrapper ${position}`}>
|
|
316
|
+
<div class={`widget-preview-x-wrapper ${position} ${this.props.store.isMobile() ? 'mobile' : ''}`}>
|
|
312
317
|
<div class='widget-preview--btn-close' onClick={(e) => this.closePreview(e)} />
|
|
313
318
|
</div>
|
|
314
319
|
<div class={`widget-preview-text-message ${position}`} onClick={(e) => this.onPreviewClick(e)}>
|
|
@@ -338,11 +343,14 @@ export default class ChatButton extends Com {
|
|
|
338
343
|
</div>
|
|
339
344
|
)}
|
|
340
345
|
{sb.size(quickReplies) > 0 && (
|
|
341
|
-
<div
|
|
346
|
+
<div
|
|
347
|
+
class={`widget-preview-quick-reply-wrapper ${position} ${sb.size(quickReplies) > 4 ? 'horizontal' : ''}`}
|
|
348
|
+
>
|
|
342
349
|
{sb.map(quickReplies, (reply) => {
|
|
343
350
|
if (!(reply.title || '').trim()) return
|
|
344
351
|
return (
|
|
345
352
|
<div
|
|
353
|
+
title={reply.title}
|
|
346
354
|
class='widget-preview-quick-reply-item'
|
|
347
355
|
onClick={() => {
|
|
348
356
|
// copy chooseQuickReply function from Event.js
|
|
@@ -45,13 +45,23 @@ export default class TextMessage extends Com {
|
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
return (
|
|
48
|
-
<a href={url} target='_blank' onClick={(e) => this.props.onLink(e, url)}>
|
|
48
|
+
<a class='text-message-link' href={url} target='_blank' onClick={(e) => this.props.onLink(e, url)}>
|
|
49
49
|
{tag.text}
|
|
50
50
|
</a>
|
|
51
51
|
)
|
|
52
52
|
}
|
|
53
|
-
if (tag.type === 'phone')
|
|
54
|
-
|
|
53
|
+
if (tag.type === 'phone')
|
|
54
|
+
return (
|
|
55
|
+
<a class='text-message-link' href={'tel:' + tag.text}>
|
|
56
|
+
{tag.text}
|
|
57
|
+
</a>
|
|
58
|
+
)
|
|
59
|
+
if (tag.type === 'email')
|
|
60
|
+
return (
|
|
61
|
+
<a class='text-message-link' href={'mailto:' + tag.text}>
|
|
62
|
+
{tag.text}
|
|
63
|
+
</a>
|
|
64
|
+
)
|
|
55
65
|
return tag.text
|
|
56
66
|
})
|
|
57
67
|
|
|
@@ -80,7 +90,7 @@ export default class TextMessage extends Com {
|
|
|
80
90
|
if (byType === 'agent') {
|
|
81
91
|
return (
|
|
82
92
|
<div class='message-agent message-text--agent' title={t}>
|
|
83
|
-
<Block block={block} onLink={this.props.onLink} textMessage/>
|
|
93
|
+
<Block block={block} onLink={this.props.onLink} textMessage />
|
|
84
94
|
{this.renderTime()}
|
|
85
95
|
</div>
|
|
86
96
|
)
|
|
@@ -89,7 +99,7 @@ export default class TextMessage extends Com {
|
|
|
89
99
|
if (this.props.ev._error) msgcls += ' message-user--error'
|
|
90
100
|
return (
|
|
91
101
|
<div class={msgcls} title={t}>
|
|
92
|
-
<Block block={block} onLink={this.props.onLink} textMessage/>
|
|
102
|
+
<Block block={block} onLink={this.props.onLink} textMessage />
|
|
93
103
|
</div>
|
|
94
104
|
)
|
|
95
105
|
}
|
package/src/chatbox/block.js
CHANGED
|
@@ -188,6 +188,7 @@ export default class Block extends Com {
|
|
|
188
188
|
case 'a':
|
|
189
189
|
return (
|
|
190
190
|
<a
|
|
191
|
+
class={this.props.textMessage ? 'message-text-link' : ''}
|
|
191
192
|
href={ele.attrs['href']}
|
|
192
193
|
target={this.props.textMessage ? '_blank' : ele.attrs['target']}
|
|
193
194
|
title={ele.attrs['title']}
|
package/src/chatbox/main.js
CHANGED
|
@@ -26,6 +26,8 @@ export default class Main extends Com {
|
|
|
26
26
|
let chatbox = found.chatbox
|
|
27
27
|
let margin_y = sb.get(chatbox, 'desktop_button.margin_y')
|
|
28
28
|
chatbox.desktop_widget_max_height = margin_y ? `calc(100% - ${margin_y + 10}px)` : 'calc(100% - 40px)'
|
|
29
|
+
const PREVIEW_MAX_WIDTH = 340
|
|
30
|
+
chatbox.preview_max_width = Math.min(PREVIEW_MAX_WIDTH, chatbox.width) + 'px'
|
|
29
31
|
var outcss = sb.replaceCssVariable(css, chatbox)
|
|
30
32
|
sb.setCss(this.props.plugin.id, this.$cssStyleDiv, outcss)
|
|
31
33
|
}
|
package/src/store/store.js
CHANGED
|
@@ -594,8 +594,14 @@ export default class Store {
|
|
|
594
594
|
}
|
|
595
595
|
}
|
|
596
596
|
|
|
597
|
-
|
|
598
|
-
|
|
597
|
+
if (this.isMobile()) {
|
|
598
|
+
lastView.screen = 'preview'
|
|
599
|
+
let plugins = this.matchPlugin() || {}
|
|
600
|
+
let chatbox = sb.find(plugins, (plugin) => plugin.type === 'chatbox') || {}
|
|
601
|
+
if (sb.get(chatbox, 'chatbox.greeting.mobile_disabled')) {
|
|
602
|
+
lastView.screen = 'button'
|
|
603
|
+
}
|
|
604
|
+
}
|
|
599
605
|
this.kv.put('lastview', lastView)
|
|
600
606
|
}
|
|
601
607
|
|
package/src/util/common.js
CHANGED
|
@@ -668,6 +668,7 @@ export function replaceCssVariable(css, setting) {
|
|
|
668
668
|
tokens = tokenize(tokens, "'@desktop_button.margin_x'")
|
|
669
669
|
tokens = tokenize(tokens, "'@desktop_button.margin_y'")
|
|
670
670
|
tokens = tokenize(tokens, "'@desktop_widget_max_height'")
|
|
671
|
+
tokens = tokenize(tokens, "'@preview_max_width'")
|
|
671
672
|
tokens = tokenize(tokens, "'@mobile_button.width'")
|
|
672
673
|
tokens = tokenize(tokens, "'@mobile_button.height'")
|
|
673
674
|
tokens = tokenize(tokens, "'@mobile_button.background'")
|
package/src/util/index.js
CHANGED
package/src/util/op.js
CHANGED
|
@@ -9,26 +9,26 @@ var isArray =
|
|
|
9
9
|
return toStr.call(obj) === '[object Array]'
|
|
10
10
|
}
|
|
11
11
|
|
|
12
|
-
function hasOwnProperty
|
|
12
|
+
function hasOwnProperty(obj, prop) {
|
|
13
13
|
if (obj == null) return false
|
|
14
14
|
//to handle objects with null prototypes (too edge case?)
|
|
15
15
|
return Object.prototype.hasOwnProperty.call(obj, prop)
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
function getKey
|
|
18
|
+
function getKey(key) {
|
|
19
19
|
var intKey = parseInt(key)
|
|
20
20
|
return intKey.toString() === key ? intKey : key
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
function hasShallowProperty
|
|
23
|
+
function hasShallowProperty(obj, prop) {
|
|
24
24
|
return (typeof prop === 'number' && isArray(obj)) || hasOwnProperty(obj, prop)
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
function getShallowProperty
|
|
27
|
+
function getShallowProperty(obj, prop) {
|
|
28
28
|
if (hasShallowProperty(obj, prop)) return obj[prop]
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
export function get
|
|
31
|
+
export function get(obj, path, defaultValue) {
|
|
32
32
|
if (typeof path === 'number') path = [path]
|
|
33
33
|
if (!path || path.length === 0) return obj
|
|
34
34
|
if (obj == null) return defaultValue
|
|
@@ -44,7 +44,7 @@ export function get (obj, path, defaultValue) {
|
|
|
44
44
|
return get(obj[currentPath], path.slice(1), defaultValue)
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
export function set
|
|
47
|
+
export function set(obj, path, value) {
|
|
48
48
|
if (typeof path === 'number') path = [path]
|
|
49
49
|
if (!path || path.length === 0) return obj
|
|
50
50
|
if (typeof path === 'string') {
|
|
@@ -65,3 +65,15 @@ export function set (obj, path, value) {
|
|
|
65
65
|
|
|
66
66
|
return set(obj[currentPath], path.slice(1), value)
|
|
67
67
|
}
|
|
68
|
+
|
|
69
|
+
export function take(arr, n = 1) {
|
|
70
|
+
if (!Array.isArray(arr)) return []
|
|
71
|
+
|
|
72
|
+
let len = arr.length
|
|
73
|
+
if (typeof len !== 'number' || len <= 0) return []
|
|
74
|
+
|
|
75
|
+
if (n <= 0) return []
|
|
76
|
+
let end = Math.min(n, len)
|
|
77
|
+
|
|
78
|
+
return arr.slice(0, end)
|
|
79
|
+
}
|