@subiz/widget-v4 4.1.45 → 4.1.48
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/message.less +6 -0
- package/compiled_src/chatbox/Header.js +1 -2
- package/compiled_src/chatbox/ImageAttachments.js +103 -13
- package/compiled_src/chatbox/PoweredBy.js +2 -2
- package/compiled_src/chatbox/main.js +2 -0
- package/compiled_src/store/store.js +18 -2
- package/dist/178.js +406 -0
- package/dist/18bb951fa49.178.js +1 -0
- package/dist/18bb951fa49.213.js +1 -0
- package/dist/18bb951fa49.335.js +1 -0
- package/dist/18bb951fa49.362.js +1 -0
- package/dist/18bb951fa49.605.js +1 -0
- package/dist/18bb951fa49.678.js +1 -0
- package/dist/18bb951fa49.782.js +1 -0
- package/dist/18bb951fa49.841.js +1 -0
- package/dist/18bb951fa49.app.js +1 -0
- package/dist/18bb951fa49.index.html +33 -0
- package/dist/18bb951fa49.library.html +33 -0
- package/dist/18bb951fa49.library.js +1 -0
- package/dist/18bb951fa49.preview.html +759 -0
- package/dist/18bb951fa49.preview.js +1 -0
- package/dist/18bb951fa49.screenshoot.js +1 -0
- package/dist/18bb951fa49.webview.js +1 -0
- package/dist/213.js +2796 -0
- package/dist/335.js +372 -0
- package/dist/362.js +107 -0
- package/dist/605.js +305 -0
- package/dist/678.js +107 -0
- package/dist/782.js +107 -0
- package/dist/841.js +6670 -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/subiz-mono.877e9f5.svg +3 -0
- package/dist/assets/img/x.26fdfa3.svg +5 -0
- package/dist/malicious-app.js +18 -0
- package/dist/screenshoot.html +7 -0
- package/dist/screenshoot.js +6455 -0
- package/malicious-app.js +8 -3
- package/package.json +5 -5
- package/src/chatbox/Header.js +1 -1
- package/src/chatbox/ImageAttachments.js +109 -15
- package/src/chatbox/PoweredBy.js +2 -2
- package/src/chatbox/main.js +2 -0
- package/src/plugin.js +1 -0
- package/src/store/store.js +15 -2
package/malicious-app.js
CHANGED
|
@@ -7,7 +7,12 @@ tag.async = 1
|
|
|
7
7
|
tag.src = 'https://public-gcs.subiz-cdn.com/widget-v4/public/' + hash + '.app.js'
|
|
8
8
|
document.body.appendChild(tag)
|
|
9
9
|
|
|
10
|
+
if (document.readyState === "interactive" || document.readyState === "complete") document.body.appendChild(tag)
|
|
11
|
+
else document.addEventListener("DOMContentLoaded", function(event) {
|
|
12
|
+
document.body.appendChild(tag)
|
|
13
|
+
}) //
|
|
14
|
+
|
|
10
15
|
// record which domain still use old code
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
16
|
+
var xhttp = new XMLHttpRequest()
|
|
17
|
+
xhttp.open('GET', 'https://api.sbz.vn/4.0/old', true)
|
|
18
|
+
xhttp.send()
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@subiz/widget-v4",
|
|
3
|
-
"version": "4.1.
|
|
3
|
+
"version": "4.1.48",
|
|
4
4
|
"main": "./compiled_src/lib.js",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"dev": "npx webpack serve --config webpack.dev.js",
|
|
@@ -19,19 +19,19 @@
|
|
|
19
19
|
"file-loader": "^6.2.0",
|
|
20
20
|
"less": "^4.2.0",
|
|
21
21
|
"less-loader": "^11.1.3",
|
|
22
|
-
"preact": "^10.18.
|
|
22
|
+
"preact": "^10.18.2"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|
|
25
25
|
"@babel/cli": "^7.23.0",
|
|
26
|
-
"@babel/core": "^7.23.
|
|
26
|
+
"@babel/core": "^7.23.3",
|
|
27
27
|
"@babel/plugin-proposal-class-properties": "^7.18.6",
|
|
28
28
|
"@babel/plugin-transform-react-jsx": "^7.22.15",
|
|
29
|
-
"@babel/preset-env": "^7.
|
|
29
|
+
"@babel/preset-env": "^7.23.3",
|
|
30
30
|
"babel-loader": "^9.1.3",
|
|
31
31
|
"babel-plugin-syntax-jsx": "^6.18.0",
|
|
32
32
|
"html-webpack-plugin": "^5.5.3",
|
|
33
33
|
"prettier": "^3.0.3",
|
|
34
|
-
"puppeteer": "^21.
|
|
34
|
+
"puppeteer": "^21.5.1",
|
|
35
35
|
"webpack": "^5.88.2",
|
|
36
36
|
"webpack-bundle-analyzer": "^4.9.1",
|
|
37
37
|
"webpack-cli": "^5.1.4",
|
package/src/chatbox/Header.js
CHANGED
|
@@ -84,7 +84,7 @@ export default class Header extends Com {
|
|
|
84
84
|
|
|
85
85
|
return (
|
|
86
86
|
<div>
|
|
87
|
-
<a href={link.url} target='_blank' title={link.url}
|
|
87
|
+
<a href={link.url} target='_blank' title={link.url}>
|
|
88
88
|
<i class={`social__links-logo social__links-logo--${link.type}`}></i>
|
|
89
89
|
</a>
|
|
90
90
|
</div>
|
|
@@ -1,10 +1,107 @@
|
|
|
1
1
|
import sb from '../util/index.js'
|
|
2
2
|
import {Com} from '../common.js'
|
|
3
|
-
import {h} from 'preact'
|
|
3
|
+
import {h, createRef} from 'preact'
|
|
4
4
|
|
|
5
5
|
export default class ImageAttachment extends Com {
|
|
6
6
|
constructor(props) {
|
|
7
7
|
super(props)
|
|
8
|
+
this.setState({
|
|
9
|
+
ready: false,
|
|
10
|
+
errorIndecies: [],
|
|
11
|
+
})
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
containerRef = createRef()
|
|
15
|
+
componentDidMount() {
|
|
16
|
+
this.setImageFrameDimension()
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
setImageFrameDimension() {
|
|
20
|
+
const MAX_HEIGHT = 240
|
|
21
|
+
const DEFAULT_MAX_WIDTH = 267
|
|
22
|
+
|
|
23
|
+
let $container = this.containerRef.current
|
|
24
|
+
this.frameWidth = $container ? $container.offsetWidth : DEFAULT_MAX_WIDTH
|
|
25
|
+
this.frameHeight = MAX_HEIGHT
|
|
26
|
+
this.setState({
|
|
27
|
+
ready: true,
|
|
28
|
+
})
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
onErrorImage(index) {
|
|
32
|
+
let indecies = this.state.errorIndecies || []
|
|
33
|
+
indecies.push(index)
|
|
34
|
+
indecies = [...indecies]
|
|
35
|
+
|
|
36
|
+
this.setState({errorIndecies: indecies})
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
calculateImageDimension(image) {
|
|
40
|
+
if (!image.width || !image.height) return {width: this.frameWidth, height: this.frameHeight}
|
|
41
|
+
|
|
42
|
+
let ratio = image.width / image.height - this.frameWidth / this.frameHeight
|
|
43
|
+
if (ratio >= 0) {
|
|
44
|
+
let width = this.frameWidth
|
|
45
|
+
let height = (image.height * this.frameWidth) / image.width
|
|
46
|
+
height = Math.round(height)
|
|
47
|
+
return {width, height}
|
|
48
|
+
} else {
|
|
49
|
+
let height = this.frameHeight
|
|
50
|
+
let width = (image.width * this.frameHeight) / image.height
|
|
51
|
+
width = Math.round(width)
|
|
52
|
+
return {width, height}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
renderImage(image, index) {
|
|
57
|
+
if (!this.state.ready) {
|
|
58
|
+
return
|
|
59
|
+
}
|
|
60
|
+
let byType = sb.get(this.props.ev, 'by.type')
|
|
61
|
+
|
|
62
|
+
if (!image.width || !image.height) {
|
|
63
|
+
return (
|
|
64
|
+
<div class={`image-attachment image-attachment--${byType}`}>
|
|
65
|
+
<a href={this.props.store.replaceFileUrl(image.url)} target='_blank'>
|
|
66
|
+
<img
|
|
67
|
+
alt
|
|
68
|
+
class='image-attachment__img'
|
|
69
|
+
src={this.props.store.replaceFileUrl(image.thumbnail_url || image.url)}
|
|
70
|
+
onload={(e) => this.props.onLoad && this.props.onLoad()}
|
|
71
|
+
/>
|
|
72
|
+
</a>
|
|
73
|
+
</div>
|
|
74
|
+
)
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
let {width, height} = this.calculateImageDimension(image)
|
|
78
|
+
let url = this.props.store.replaceFileUrl(image.thumbnail_url || image.url)
|
|
79
|
+
let trueUrl = this.props.store.replaceFileUrl(image.url)
|
|
80
|
+
if (this.state.errorIndecies.includes(index)) {
|
|
81
|
+
url = require('../../assets/img/default.jpg')
|
|
82
|
+
trueUrl = url
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
return (
|
|
86
|
+
<div class={`image-attachment image-attachment--${byType}`}>
|
|
87
|
+
<a href={trueUrl} target='_blank'>
|
|
88
|
+
<img
|
|
89
|
+
alt
|
|
90
|
+
ref={(el) => {
|
|
91
|
+
if (el) {
|
|
92
|
+
// must use this trick because React doesn't support set style important directly
|
|
93
|
+
el.style.setProperty('width', `${width}px`, 'important')
|
|
94
|
+
el.style.setProperty('height', `${height}px`, 'important')
|
|
95
|
+
}
|
|
96
|
+
}}
|
|
97
|
+
class='image-attachment__img'
|
|
98
|
+
src={url}
|
|
99
|
+
onload={(e) => this.props.onLoad && this.props.onLoad()}
|
|
100
|
+
onerror={(e) => this.onErrorImage(index)}
|
|
101
|
+
/>
|
|
102
|
+
</a>
|
|
103
|
+
</div>
|
|
104
|
+
)
|
|
8
105
|
}
|
|
9
106
|
|
|
10
107
|
render() {
|
|
@@ -31,23 +128,20 @@ export default class ImageAttachment extends Com {
|
|
|
31
128
|
|
|
32
129
|
if (images.length === 0) return null
|
|
33
130
|
|
|
34
|
-
|
|
35
|
-
<div class={`image-attachment image-attachment--${byType}`}>
|
|
36
|
-
<a href={this.props.store.replaceFileUrl(image.thumbnail_url || image.url)} target='_blank'>
|
|
37
|
-
<img
|
|
38
|
-
alt
|
|
39
|
-
class='image-attachment__img'
|
|
40
|
-
src={this.props.store.replaceFileUrl(image.thumbnail_url || image.url)}
|
|
41
|
-
onload={(e) => this.props.onLoad && this.props.onLoad()}
|
|
42
|
-
/>
|
|
43
|
-
</a>
|
|
44
|
-
</div>
|
|
45
|
-
))
|
|
131
|
+
let $images = sb.map(images, (image, index) => this.renderImage(image, index))
|
|
46
132
|
|
|
47
133
|
if (byType === 'agent') {
|
|
48
|
-
return
|
|
134
|
+
return (
|
|
135
|
+
<div class='message-agent' ref={this.containerRef}>
|
|
136
|
+
{$images}
|
|
137
|
+
</div>
|
|
138
|
+
)
|
|
49
139
|
} else {
|
|
50
|
-
return
|
|
140
|
+
return (
|
|
141
|
+
<div class='message-user message-user-images-container' ref={this.containerRef}>
|
|
142
|
+
{$images}
|
|
143
|
+
</div>
|
|
144
|
+
)
|
|
51
145
|
}
|
|
52
146
|
}
|
|
53
147
|
}
|
package/src/chatbox/PoweredBy.js
CHANGED
|
@@ -17,8 +17,8 @@ export default class PoweredBy extends Com {
|
|
|
17
17
|
|
|
18
18
|
return (
|
|
19
19
|
<div class='poweredby'>
|
|
20
|
-
<a href={link} class='poweredby--text' target='_blank'
|
|
21
|
-
<img width='14' height='10' class='poweredby--subiz-logo' src={logo} alt='power by' /> Subiz
|
|
20
|
+
<a href={link} class='poweredby--text' target='_blank' title='Subiz'>
|
|
21
|
+
<img width='14' height='10' class='poweredby--subiz-logo' src={logo} alt='power by subiz' /> Subiz
|
|
22
22
|
</a>
|
|
23
23
|
</div>
|
|
24
24
|
)
|
package/src/chatbox/main.js
CHANGED
|
@@ -192,6 +192,7 @@ export default class Main extends Com {
|
|
|
192
192
|
function restoreViewport() {
|
|
193
193
|
// restore scroll attribute for background document
|
|
194
194
|
if (document.body && document.body.classList) document.body.classList.remove('sbz_no_scroll')
|
|
195
|
+
if (document.documentElement && document.documentElement.classList) document.documentElement.classList.remove('sbz_no_scroll')
|
|
195
196
|
let metatag = document.getElementById('subiz-meta-viewport')
|
|
196
197
|
if (metatag) metatag.remove()
|
|
197
198
|
}
|
|
@@ -199,6 +200,7 @@ function restoreViewport() {
|
|
|
199
200
|
function modifyViewport() {
|
|
200
201
|
// dont allow to scroll background document
|
|
201
202
|
if (document.body && document.body.classList) document.body.classList.add('sbz_no_scroll')
|
|
203
|
+
if (document.documentElement && document.documentElement.classList) document.documentElement.classList.add('sbz_no_scroll')
|
|
202
204
|
let metatag = document.createElement('meta')
|
|
203
205
|
metatag.httpEquiv = 'X-UA-Compatible'
|
|
204
206
|
metatag.name = 'viewport'
|
package/src/plugin.js
CHANGED
|
@@ -11,6 +11,7 @@ function Plugin(plugin, store, $container, lib) {
|
|
|
11
11
|
if (!$container) throw '$div must is a valid html node'
|
|
12
12
|
var $div = document.createElement('div')
|
|
13
13
|
$div.id = plugin.id
|
|
14
|
+
$div.setAttribute('sbz-plugin-type', plugin.type)
|
|
14
15
|
$container.appendChild($div) // use body as container
|
|
15
16
|
|
|
16
17
|
// auto detect language first
|
package/src/store/store.js
CHANGED
|
@@ -913,7 +913,10 @@ export default class Store {
|
|
|
913
913
|
if (!att._file) return
|
|
914
914
|
files.push(att)
|
|
915
915
|
if (ImageTypes.includes(att._file.type)) {
|
|
916
|
-
|
|
916
|
+
let {width, height, url} = await loadImage(att._file)
|
|
917
|
+
att.url = url
|
|
918
|
+
att.width = width
|
|
919
|
+
att.height = height
|
|
917
920
|
}
|
|
918
921
|
})
|
|
919
922
|
}
|
|
@@ -1163,7 +1166,17 @@ function loadImage(file) {
|
|
|
1163
1166
|
reader.onload = (e) => {
|
|
1164
1167
|
// after load all img data into the RAM, find update the corresponse attachment
|
|
1165
1168
|
// since the attachment is very deep, we must force rerender
|
|
1166
|
-
rs(e.target.result) // url
|
|
1169
|
+
//rs(e.target.result) // url
|
|
1170
|
+
let src = e.target.result
|
|
1171
|
+
let img = new Image()
|
|
1172
|
+
img.onload = () => {
|
|
1173
|
+
rs({
|
|
1174
|
+
url: src,
|
|
1175
|
+
width: img.width,
|
|
1176
|
+
height: img.height,
|
|
1177
|
+
})
|
|
1178
|
+
}
|
|
1179
|
+
img.src = src
|
|
1167
1180
|
}
|
|
1168
1181
|
reader.readAsDataURL(file)
|
|
1169
1182
|
})
|