@subiz/widget-v4 4.1.45 → 4.1.46

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/assets/less/message.less +6 -0
  2. package/compiled_src/bot.js +2 -2
  3. package/compiled_src/call/call.js +2 -2
  4. package/compiled_src/call/css.js +2 -1
  5. package/compiled_src/chatbox/ImageAttachments.js +89 -13
  6. package/compiled_src/chatbox/css.js +2 -1
  7. package/compiled_src/chatbox/main.js +2 -2
  8. package/compiled_src/common.js +2 -1
  9. package/compiled_src/contact/contact.js +5 -4
  10. package/compiled_src/contact/css.js +2 -1
  11. package/compiled_src/lib.js +2 -1
  12. package/compiled_src/notif/css.js +2 -1
  13. package/compiled_src/notif/notif.js +2 -2
  14. package/compiled_src/order/icon.js +2 -2
  15. package/compiled_src/order/index.js +2 -2
  16. package/compiled_src/order/order.js +2 -2
  17. package/compiled_src/plugin.js +2 -2
  18. package/compiled_src/popup/css.js +2 -1
  19. package/compiled_src/popup/popup.js +2 -2
  20. package/compiled_src/popup/tick.core.commonjs.js +2 -1
  21. package/compiled_src/store/store.js +18 -2
  22. package/compiled_src/util/campaign.js +6 -2
  23. package/compiled_src/util/common.js +26 -12
  24. package/compiled_src/util/index.js +4 -3
  25. package/compiled_src/util/order.js +4 -2
  26. package/compiled_src/util/pubsub.js +6 -3
  27. package/dist/132.js +6661 -0
  28. package/dist/178.js +406 -0
  29. package/dist/18a02a9c54e.132.js +1 -0
  30. package/dist/18a02a9c54e.178.js +1 -0
  31. package/dist/18a02a9c54e.213.js +1 -0
  32. package/dist/18a02a9c54e.335.js +1 -0
  33. package/dist/18a02a9c54e.362.js +1 -0
  34. package/dist/18a02a9c54e.441.js +1 -0
  35. package/dist/18a02a9c54e.605.js +1 -0
  36. package/dist/18a02a9c54e.678.js +1 -0
  37. package/dist/18a02a9c54e.782.js +1 -0
  38. package/dist/18a02a9c54e.app.js +1 -0
  39. package/dist/18a02a9c54e.index.html +33 -0
  40. package/dist/18a02a9c54e.library.html +33 -0
  41. package/dist/18a02a9c54e.library.js +1 -0
  42. package/dist/18a02a9c54e.preview.html +759 -0
  43. package/dist/18a02a9c54e.preview.js +1 -0
  44. package/dist/18a02a9c54e.screenshoot.js +1 -0
  45. package/dist/18a02a9c54e.webview.js +1 -0
  46. package/dist/213.js +2780 -0
  47. package/dist/335.js +372 -0
  48. package/dist/362.js +107 -0
  49. package/dist/441.js +2855 -0
  50. package/dist/605.js +305 -0
  51. package/dist/678.js +107 -0
  52. package/dist/782.js +107 -0
  53. package/dist/HASH +1 -0
  54. package/dist/assets/img/Facebook.64607ec.png +0 -0
  55. package/dist/assets/img/Zalo.6845707.png +0 -0
  56. package/dist/assets/img/award1a.1a58e10.png +0 -0
  57. package/dist/assets/img/award3a.3b74423.png +0 -0
  58. package/dist/assets/img/award4a.ed6ccd4.png +0 -0
  59. package/dist/assets/img/award5.39eb7ae.png +0 -0
  60. package/dist/assets/img/bubble_default.7d5e4ab.svg +20 -0
  61. package/dist/assets/img/caret.998eb8f.svg +1 -0
  62. package/dist/assets/img/convos_empty.2353007.svg +72 -0
  63. package/dist/assets/img/default.06e6ee0.jpg +0 -0
  64. package/dist/assets/img/default_avatar.5b74dc1.png +0 -0
  65. package/dist/assets/img/done_gray.d7e8203.svg +4 -0
  66. package/dist/assets/img/done_green.b817fd4.svg +4 -0
  67. package/dist/assets/img/emoji/messenger/sub_23.529_58.824.d5faf14.png +0 -0
  68. package/dist/assets/img/emoji/messenger/sub_23.529_60.784.1420241.png +0 -0
  69. package/dist/assets/img/emoji/messenger/sub_25.490_0.000.1e6b2c0.png +0 -0
  70. package/dist/assets/img/emoji/messenger/sub_25.490_45.098.3dfbc08.png +0 -0
  71. package/dist/assets/img/emoji/messenger/sub_25.490_5.882.4b49e94.png +0 -0
  72. package/dist/assets/img/emoji/messenger/sub_27.451_72.549.7114f58.png +0 -0
  73. package/dist/assets/img/emoji/messenger/sub_27.451_84.314.231e2b7.png +0 -0
  74. package/dist/assets/img/emoji/messenger/sub_27.451_96.078.ddbb008.png +0 -0
  75. package/dist/assets/img/emoji/messenger/sub_29.412_5.882.61f3359.png +0 -0
  76. package/dist/assets/img/emoji/messenger/sub_58.824_100.000.6df72bc.png +0 -0
  77. package/dist/assets/img/emoji/messenger/sub_58.824_45.098.3d7a7ad.png +0 -0
  78. package/dist/assets/img/emoji/messenger/sub_58.824_47.059.0f4d6e2.png +0 -0
  79. package/dist/assets/img/emoji/messenger/sub_58.824_54.902.65724c1.png +0 -0
  80. package/dist/assets/img/emoji/messenger/sub_58.824_64.706.9da3cba.png +0 -0
  81. package/dist/assets/img/emoji/messenger/sub_58.824_72.549.edca5cf.png +0 -0
  82. package/dist/assets/img/emoji/messenger/sub_58.824_78.431.f910f2a.png +0 -0
  83. package/dist/assets/img/emoji/messenger/sub_58.824_88.235.def4e71.png +0 -0
  84. package/dist/assets/img/emoji/messenger/sub_60.784_11.765.49c03d0.png +0 -0
  85. package/dist/assets/img/emoji/messenger/sub_60.784_27.451.46b54e5.png +0 -0
  86. package/dist/assets/img/emoji/messenger/sub_60.784_29.412.e36d284.png +0 -0
  87. package/dist/assets/img/emoji/messenger/sub_60.784_3.922.bb191b0.png +0 -0
  88. package/dist/assets/img/emoji/messenger/sub_60.784_35.294.af7b927.png +0 -0
  89. package/dist/assets/img/emoji/messenger/sub_60.784_7.843.98f2a99.png +0 -0
  90. package/dist/assets/img/empty.29bed2d.svg +23 -0
  91. package/dist/assets/img/empty_1.0b98af0.svg +11 -0
  92. package/dist/assets/img/examplte_logo.f86535f.svg +1 -0
  93. package/dist/assets/img/external-link.90577cc.svg +1 -0
  94. package/dist/assets/img/fb_inverse_circle.36c2cfc.png +0 -0
  95. package/dist/assets/img/ghn.070f8e3.svg +17 -0
  96. package/dist/assets/img/ghtk.326eac1.svg +18 -0
  97. package/dist/assets/img/image_default.be0698b.png +0 -0
  98. package/dist/assets/img/info.ebce7ea.svg +1 -0
  99. package/dist/assets/img/loader.37000a7.svg +1 -0
  100. package/dist/assets/img/loading_static.a27f0ac.svg +10 -0
  101. package/dist/assets/img/main-service1.d536cc2.png +0 -0
  102. package/dist/assets/img/main-service2.9b99549.png +0 -0
  103. package/dist/assets/img/not_found_search.2ddb8d1.png +0 -0
  104. package/dist/assets/img/package.8d37d0f.svg +5 -0
  105. package/dist/assets/img/package_fade.763c001.svg +1 -0
  106. package/dist/assets/img/rating--average.1ea492c.svg +12 -0
  107. package/dist/assets/img/rating--great.e3d712e.svg +16 -0
  108. package/dist/assets/img/rating--poor.2938a25.svg +12 -0
  109. package/dist/assets/img/search.f9705ff.svg +1 -0
  110. package/dist/assets/img/send.6db52a9.svg +3 -0
  111. package/dist/assets/img/shop.f7dc7d8.svg +1 -0
  112. package/dist/assets/img/shop_faded.df7845a.svg +1 -0
  113. package/dist/assets/img/subiz-mono.877e9f5.svg +3 -0
  114. package/dist/assets/img/x.26fdfa3.svg +5 -0
  115. package/dist/malicious-app.js +13 -0
  116. package/dist/screenshoot.html +7 -0
  117. package/dist/screenshoot.js +6434 -0
  118. package/package.json +1 -1
  119. package/src/chatbox/ImageAttachments.js +93 -15
  120. package/src/store/store.js +15 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@subiz/widget-v4",
3
- "version": "4.1.45",
3
+ "version": "4.1.46",
4
4
  "main": "./compiled_src/lib.js",
5
5
  "scripts": {
6
6
  "dev": "npx webpack serve --config webpack.dev.js",
@@ -1,10 +1,91 @@
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
+ })
11
+ }
12
+
13
+ containerRef = createRef()
14
+ componentDidMount() {
15
+ this.setImageFrameDimension()
16
+ }
17
+
18
+ setImageFrameDimension() {
19
+ const MAX_HEIGHT = 240
20
+ const DEFAULT_MAX_WIDTH = 267
21
+
22
+ let $container = this.containerRef.current
23
+ this.frameWidth = $container ? $container.offsetWidth : DEFAULT_MAX_WIDTH
24
+ this.frameHeight = MAX_HEIGHT
25
+ this.setState({
26
+ ready: true,
27
+ })
28
+ }
29
+
30
+ calculateImageDimension(image) {
31
+ if (!image.width || !image.height) return {width: this.frameWidth, height: this.frameHeight}
32
+
33
+ let ratio = image.width / image.height - this.frameWidth / this.frameHeight
34
+ if (ratio >= 0) {
35
+ let width = this.frameWidth
36
+ let height = (image.height * this.frameWidth) / image.width
37
+ height = Math.round(height)
38
+ return {width, height}
39
+ } else {
40
+ let height = this.frameHeight
41
+ let width = (image.width * this.frameHeight) / image.height
42
+ width = Math.round(width)
43
+ return {width, height}
44
+ }
45
+ }
46
+
47
+ renderImage(image, index) {
48
+ if (!this.state.ready) {
49
+ return
50
+ }
51
+ let byType = sb.get(this.props.ev, 'by.type')
52
+
53
+ if (!image.width || !image.height) {
54
+ return (
55
+ <div class={`image-attachment image-attachment--${byType}`}>
56
+ <a href={this.props.store.replaceFileUrl(image.thumbnail_url || image.url)} target='_blank'>
57
+ <img
58
+ alt
59
+ class='image-attachment__img'
60
+ src={this.props.store.replaceFileUrl(image.thumbnail_url || image.url)}
61
+ onload={(e) => this.props.onLoad && this.props.onLoad()}
62
+ />
63
+ </a>
64
+ </div>
65
+ )
66
+ }
67
+
68
+ let {width, height} = this.calculateImageDimension(image)
69
+
70
+ return (
71
+ <div class={`image-attachment image-attachment--${byType}`}>
72
+ <a href={this.props.store.replaceFileUrl(image.thumbnail_url || image.url)} target='_blank'>
73
+ <img
74
+ alt
75
+ ref={(el) => {
76
+ if (el) {
77
+ // must use this trick because React doesn't support set style important directly
78
+ el.style.setProperty('width', `${width}px`, 'important')
79
+ el.style.setProperty('height', `${height}px`, 'important')
80
+ }
81
+ }}
82
+ class='image-attachment__img'
83
+ src={this.props.store.replaceFileUrl(image.thumbnail_url || image.url)}
84
+ onload={(e) => this.props.onLoad && this.props.onLoad()}
85
+ />
86
+ </a>
87
+ </div>
88
+ )
8
89
  }
9
90
 
10
91
  render() {
@@ -31,23 +112,20 @@ export default class ImageAttachment extends Com {
31
112
 
32
113
  if (images.length === 0) return null
33
114
 
34
- var $images = sb.map(images, (image, index) => (
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
- ))
115
+ let $images = sb.map(images, (image, index) => this.renderImage(image, index))
46
116
 
47
117
  if (byType === 'agent') {
48
- return <div class='message-agent'>{$images}</div>
118
+ return (
119
+ <div class='message-agent' ref={this.containerRef}>
120
+ {$images}
121
+ </div>
122
+ )
49
123
  } else {
50
- return <div class='message-user'>{$images}</div>
124
+ return (
125
+ <div class='message-user message-user-images-container' ref={this.containerRef}>
126
+ {$images}
127
+ </div>
128
+ )
51
129
  }
52
130
  }
53
131
  }
@@ -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
- att.url = await loadImage(att._file)
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
  })