@tencentcloud/ai-desk-customer-vue 0.1.2 → 0.1.4

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 (225) hide show
  1. package/components/CustomerServiceChat/index-web.vue +7 -14
  2. package/components/CustomerServiceChat/message-input/index-web.vue +17 -16
  3. package/components/CustomerServiceChat/message-input/message-input-editor-web.vue +3 -6
  4. package/components/CustomerServiceChat/message-input/message-input-quote/index.vue +3 -14
  5. package/components/CustomerServiceChat/message-input-toolbar/emoji-dialog-mobile/emoji-dialog-mobile.vue +2 -5
  6. package/components/CustomerServiceChat/message-input-toolbar/emoji-picker/emoji-picker-dialog.vue +8 -15
  7. package/components/CustomerServiceChat/message-input-toolbar/file-upload/index.vue +3 -7
  8. package/components/CustomerServiceChat/message-input-toolbar/image-upload/index.vue +6 -44
  9. package/components/CustomerServiceChat/message-input-toolbar/index-web.vue +1 -14
  10. package/components/CustomerServiceChat/message-input-toolbar/style/uni.scss +0 -56
  11. package/components/CustomerServiceChat/message-input-toolbar/toolbar-item-container/index.vue +4 -7
  12. package/components/CustomerServiceChat/message-input-toolbar/toolbar-item-container/style/index.scss +0 -1
  13. package/components/CustomerServiceChat/message-input-toolbar/video-upload/index.vue +7 -50
  14. package/components/CustomerServiceChat/message-list/index-web.vue +3 -7
  15. package/components/CustomerServiceChat/message-list/message-elements/{plugins/plugin-components → message-desk}/index.ts +1 -1
  16. package/components/{customer-icon.vue → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/customer-icon.vue} +0 -9
  17. package/components/CustomerServiceChat/message-list/message-elements/{plugins/plugin-components/message-customer → message-desk/message-desk-elements}/index.ts +1 -1
  18. package/components/{message-branch.vue → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-branch.vue} +4 -4
  19. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-desk.vue +126 -0
  20. package/components/{message-multi-branch → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-branch}/branch-pc.vue +1 -1
  21. package/components/{message-multi-branch → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-branch}/index.vue +2 -3
  22. package/components/{message-multi-form → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form}/component-mobile/form-popup.vue +2 -3
  23. package/components/{message-multi-form → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form}/component-mobile/input-mobile.vue +1 -1
  24. package/components/{message-multi-form → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form}/component-mobile/radios-mobile.vue +7 -7
  25. package/components/{message-multi-form → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form}/component-pc/input-pc.vue +1 -1
  26. package/components/{message-multi-form → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form}/component-pc/radio-pc.vue +4 -5
  27. package/components/{message-multi-form → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form}/form-mobile.vue +8 -7
  28. package/components/{message-multi-form → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form}/form-pc.vue +5 -5
  29. package/components/{message-multi-form → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form}/index.vue +3 -3
  30. package/components/{message-product-card.vue → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-product-card.vue} +2 -2
  31. package/components/{message-rating → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-rating}/index.vue +4 -4
  32. package/components/{message-rating → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-rating}/message-rating-number.vue +3 -3
  33. package/components/{message-rating → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-rating}/message-rating-star.vue +5 -5
  34. package/components/{message-rich-text.vue → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-rich-text.vue} +5 -17
  35. package/components/{message-robot-welcome.vue → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-robot-welcome.vue} +7 -7
  36. package/components/{message-form → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-single-form}/form-input.vue +5 -5
  37. package/components/{message-form → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-single-form}/index.vue +1 -1
  38. package/components/{message-stream.vue → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-stream.vue} +2 -2
  39. package/{styles → components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/styles}/common.scss +1 -1
  40. package/components/CustomerServiceChat/message-list/message-elements/{plugins/plugin-components → message-desk}/message-plugin-layout-web.vue +2 -9
  41. package/components/CustomerServiceChat/message-list/message-elements/{plugins/plugin-components → message-desk}/message-plugin-web.vue +5 -5
  42. package/components/CustomerServiceChat/message-list/message-elements/message-quote/index-web.vue +2 -4
  43. package/components/CustomerServiceChat/message-list/message-elements/message-record/index.vue +3 -6
  44. package/components/CustomerServiceChat/message-list/message-elements/simple-message-list/index.vue +3 -29
  45. package/components/CustomerServiceChat/style/h5.scss +2 -1
  46. package/components/CustomerServiceChat/style/index.scss +0 -2
  47. package/components/common/Avatar/index.vue +2 -23
  48. package/components/common/BottomPopup/index.vue +2 -3
  49. package/components/common/Dialog/index.vue +2 -2
  50. package/components/common/ImagePreviewer/index-web.vue +2 -84
  51. package/components/common/ProgressMessage/index.vue +0 -8
  52. package/index.ts +4 -13
  53. package/index.vue +1 -60
  54. package/package.json +4 -5
  55. package/server.ts +3 -32
  56. package/utils/chatStorage.ts +2 -11
  57. package/utils/index.ts +2 -1
  58. package/assets/audio-before-delete.svg +0 -4
  59. package/assets/audio-blue.png +0 -0
  60. package/assets/audio-bubble-blue.svg +0 -3
  61. package/assets/audio-bubble-red.svg +0 -3
  62. package/assets/audio-delete.svg +0 -10
  63. package/assets/audio.svg +0 -6
  64. package/assets/camera-uni.png +0 -0
  65. package/assets/face-uni.png +0 -0
  66. package/assets/more-uni.png +0 -0
  67. package/assets/translate.svg +0 -12
  68. package/assets/video-uni.png +0 -0
  69. package/components/CustomerServiceChat/message-input-toolbar/toolbar-item-container/style/uni.scss +0 -36
  70. package/components/CustomerServiceChat/message-list/link/index.ts +0 -23
  71. package/components/CustomerServiceChat/message-list/message-elements/plugins/plugin-components/message-customer/message-customer-service.vue +0 -22
  72. package/components/CustomerServiceChat/style/uni.scss +0 -12
  73. package/components/CustomerServiceChat/style/wx.scss +0 -5
  74. package/components/common/RichText/LICENSE +0 -21
  75. package/components/common/RichText/README.md +0 -244
  76. package/components/common/RichText/dist/mp-alipay/index.acss +0 -1
  77. package/components/common/RichText/dist/mp-alipay/index.axml +0 -1
  78. package/components/common/RichText/dist/mp-alipay/index.js +0 -8
  79. package/components/common/RichText/dist/mp-alipay/index.json +0 -1
  80. package/components/common/RichText/dist/mp-alipay/node/node.acss +0 -1
  81. package/components/common/RichText/dist/mp-alipay/node/node.axml +0 -1
  82. package/components/common/RichText/dist/mp-alipay/node/node.js +0 -1
  83. package/components/common/RichText/dist/mp-alipay/node/node.json +0 -1
  84. package/components/common/RichText/dist/mp-alipay/parser.js +0 -1
  85. package/components/common/RichText/dist/mp-baidu/index.css +0 -1
  86. package/components/common/RichText/dist/mp-baidu/index.js +0 -8
  87. package/components/common/RichText/dist/mp-baidu/index.json +0 -1
  88. package/components/common/RichText/dist/mp-baidu/index.swan +0 -1
  89. package/components/common/RichText/dist/mp-baidu/node/node.css +0 -1
  90. package/components/common/RichText/dist/mp-baidu/node/node.js +0 -1
  91. package/components/common/RichText/dist/mp-baidu/node/node.json +0 -1
  92. package/components/common/RichText/dist/mp-baidu/node/node.swan +0 -1
  93. package/components/common/RichText/dist/mp-baidu/parser.js +0 -1
  94. package/components/common/RichText/dist/mp-qq/index.js +0 -8
  95. package/components/common/RichText/dist/mp-qq/index.json +0 -1
  96. package/components/common/RichText/dist/mp-qq/index.qml +0 -1
  97. package/components/common/RichText/dist/mp-qq/index.qss +0 -1
  98. package/components/common/RichText/dist/mp-qq/node/node.js +0 -1
  99. package/components/common/RichText/dist/mp-qq/node/node.json +0 -1
  100. package/components/common/RichText/dist/mp-qq/node/node.qml +0 -1
  101. package/components/common/RichText/dist/mp-qq/node/node.qss +0 -1
  102. package/components/common/RichText/dist/mp-qq/parser.js +0 -1
  103. package/components/common/RichText/dist/mp-toutiao/index.js +0 -8
  104. package/components/common/RichText/dist/mp-toutiao/index.json +0 -1
  105. package/components/common/RichText/dist/mp-toutiao/index.ttml +0 -1
  106. package/components/common/RichText/dist/mp-toutiao/index.ttss +0 -1
  107. package/components/common/RichText/dist/mp-toutiao/node/node.js +0 -1
  108. package/components/common/RichText/dist/mp-toutiao/node/node.json +0 -1
  109. package/components/common/RichText/dist/mp-toutiao/node/node.ttml +0 -1
  110. package/components/common/RichText/dist/mp-toutiao/node/node.ttss +0 -1
  111. package/components/common/RichText/dist/mp-toutiao/parser.js +0 -1
  112. package/components/common/RichText/dist/mp-weixin/index.js +0 -8
  113. package/components/common/RichText/dist/mp-weixin/index.json +0 -1
  114. package/components/common/RichText/dist/mp-weixin/index.wxml +0 -1
  115. package/components/common/RichText/dist/mp-weixin/index.wxss +0 -1
  116. package/components/common/RichText/dist/mp-weixin/node/node.js +0 -1
  117. package/components/common/RichText/dist/mp-weixin/node/node.json +0 -1
  118. package/components/common/RichText/dist/mp-weixin/node/node.wxml +0 -1
  119. package/components/common/RichText/dist/mp-weixin/node/node.wxss +0 -1
  120. package/components/common/RichText/dist/mp-weixin/parser.js +0 -1
  121. package/components/common/RichText/dist/uni-app/components/mp-html/mp-html.vue +0 -498
  122. package/components/common/RichText/dist/uni-app/components/mp-html/node/node.vue +0 -587
  123. package/components/common/RichText/dist/uni-app/components/mp-html/parser.js +0 -1393
  124. package/components/common/RichText/dist/uni-app/static/app-plus/mp-html/js/handler.js +0 -1
  125. package/components/common/RichText/dist/uni-app/static/app-plus/mp-html/js/uni.webview.min.js +0 -1
  126. package/components/common/RichText/dist/uni-app/static/app-plus/mp-html/local.html +0 -1
  127. package/components/common/RichText/docs/.nojekyll +0 -0
  128. package/components/common/RichText/docs/index.html +0 -50
  129. package/components/common/RichText/docs/lib/docsify.min.js +0 -1
  130. package/components/common/RichText/docs/lib/prism-bash.min.js +0 -1
  131. package/components/common/RichText/docs/lib/search.min.js +0 -1
  132. package/components/common/RichText/docs/lib/vue.css +0 -858
  133. package/components/common/RichText/gulpfile.js +0 -113
  134. package/components/common/RichText/lint.js +0 -63
  135. package/components/common/RichText/package.json +0 -74
  136. package/components/common/RichText/plugins/README.md +0 -2
  137. package/components/common/RichText/plugins/audio/README.md +0 -25
  138. package/components/common/RichText/plugins/audio/build.js +0 -11
  139. package/components/common/RichText/plugins/audio/context.js +0 -7
  140. package/components/common/RichText/plugins/audio/index.js +0 -34
  141. package/components/common/RichText/plugins/audio/miniprogram/audio.js +0 -189
  142. package/components/common/RichText/plugins/audio/miniprogram/audio.json +0 -3
  143. package/components/common/RichText/plugins/audio/miniprogram/audio.wxml +0 -17
  144. package/components/common/RichText/plugins/audio/miniprogram/audio.wxss +0 -127
  145. package/components/common/RichText/plugins/audio/miniprogram/build.js +0 -3
  146. package/components/common/RichText/plugins/audio/uni-app/audio.vue +0 -269
  147. package/components/common/RichText/plugins/audio/uni-app/build.js +0 -3
  148. package/components/common/RichText/plugins/card/README.md +0 -30
  149. package/components/common/RichText/plugins/card/build.js +0 -14
  150. package/components/common/RichText/plugins/card/index.js +0 -7
  151. package/components/common/RichText/plugins/card/miniprogram/build.js +0 -3
  152. package/components/common/RichText/plugins/card/miniprogram/card.js +0 -26
  153. package/components/common/RichText/plugins/card/miniprogram/card.json +0 -3
  154. package/components/common/RichText/plugins/card/miniprogram/card.wxml +0 -9
  155. package/components/common/RichText/plugins/card/miniprogram/card.wxss +0 -55
  156. package/components/common/RichText/plugins/card/uni-app/build.js +0 -3
  157. package/components/common/RichText/plugins/card/uni-app/card.vue +0 -122
  158. package/components/common/RichText/plugins/editable/README.md +0 -137
  159. package/components/common/RichText/plugins/editable/config.js +0 -15
  160. package/components/common/RichText/plugins/editable/miniprogram/build.js +0 -813
  161. package/components/common/RichText/plugins/editable/miniprogram/index.js +0 -551
  162. package/components/common/RichText/plugins/editable/uni-app/build.js +0 -744
  163. package/components/common/RichText/plugins/editable/uni-app/index.js +0 -553
  164. package/components/common/RichText/plugins/emoji/README.md +0 -15
  165. package/components/common/RichText/plugins/emoji/index.js +0 -203
  166. package/components/common/RichText/plugins/highlight/README.md +0 -26
  167. package/components/common/RichText/plugins/highlight/config.js +0 -5
  168. package/components/common/RichText/plugins/highlight/index.js +0 -96
  169. package/components/common/RichText/plugins/highlight/miniprogram/build.js +0 -88
  170. package/components/common/RichText/plugins/highlight/prism.css +0 -125
  171. package/components/common/RichText/plugins/highlight/prism.min.js +0 -7
  172. package/components/common/RichText/plugins/highlight/uni-app/build.js +0 -88
  173. package/components/common/RichText/plugins/img-cache/README.md +0 -24
  174. package/components/common/RichText/plugins/img-cache/build.js +0 -16
  175. package/components/common/RichText/plugins/img-cache/index.js +0 -138
  176. package/components/common/RichText/plugins/latex/README.md +0 -16
  177. package/components/common/RichText/plugins/latex/build.js +0 -14
  178. package/components/common/RichText/plugins/latex/index.js +0 -77
  179. package/components/common/RichText/plugins/latex/katex.css +0 -1070
  180. package/components/common/RichText/plugins/latex/katex.min.js +0 -1
  181. package/components/common/RichText/plugins/markdown/README.md +0 -17
  182. package/components/common/RichText/plugins/markdown/index.js +0 -34
  183. package/components/common/RichText/plugins/markdown/marked.min.js +0 -6
  184. package/components/common/RichText/plugins/markdown/miniprogram/build.js +0 -70
  185. package/components/common/RichText/plugins/markdown/uni-app/build.js +0 -68
  186. package/components/common/RichText/plugins/search/README.md +0 -46
  187. package/components/common/RichText/plugins/search/miniprogram/index.js +0 -137
  188. package/components/common/RichText/plugins/search/uni-app/index.js +0 -132
  189. package/components/common/RichText/plugins/style/README.md +0 -30
  190. package/components/common/RichText/plugins/style/index.js +0 -129
  191. package/components/common/RichText/plugins/style/parser.js +0 -175
  192. package/components/common/RichText/plugins/template/README.md +0 -2
  193. package/components/common/RichText/plugins/template/build.js +0 -65
  194. package/components/common/RichText/plugins/template/index.js +0 -67
  195. package/components/common/RichText/plugins/txv-video/README.md +0 -18
  196. package/components/common/RichText/plugins/txv-video/build.js +0 -3
  197. package/components/common/RichText/plugins/txv-video/index.js +0 -46
  198. package/components/common/RichText/plugins/txv-video/miniprogram/build.js +0 -6
  199. package/components/common/RichText/plugins/txv-video/uni-app/build.js +0 -3
  200. package/components/common/RichText/src/miniprogram/index.js +0 -396
  201. package/components/common/RichText/src/miniprogram/index.json +0 -6
  202. package/components/common/RichText/src/miniprogram/index.wxml +0 -7
  203. package/components/common/RichText/src/miniprogram/index.wxss +0 -13
  204. package/components/common/RichText/src/miniprogram/node/node.js +0 -247
  205. package/components/common/RichText/src/miniprogram/node/node.json +0 -6
  206. package/components/common/RichText/src/miniprogram/node/node.wxml +0 -112
  207. package/components/common/RichText/src/miniprogram/node/node.wxss +0 -164
  208. package/components/common/RichText/src/miniprogram/parser.js +0 -1269
  209. package/components/common/RichText/src/uni-app/components/mp-html/mp-html.vue +0 -498
  210. package/components/common/RichText/src/uni-app/components/mp-html/node/node.vue +0 -585
  211. package/components/common/RichText/src/uni-app/components/mp-html/parser.js +0 -1393
  212. package/components/common/RichText/src/uni-app/static/app-plus/mp-html/js/handler.js +0 -254
  213. package/components/common/RichText/src/uni-app/static/app-plus/mp-html/js/uni.webview.min.js +0 -1
  214. package/components/common/RichText/src/uni-app/static/app-plus/mp-html/local.html +0 -33
  215. package/components/common/RichText/tools/config.js +0 -82
  216. package/components/common/RichText/tools/converter.js +0 -205
  217. package/components/common/RichText/tools/ifdef.js +0 -115
  218. package/components/common/RichText/tools/minifier.js +0 -40
  219. package/components/common/RichText/tools/plugin.js +0 -248
  220. package/components/message-customer-service.vue +0 -114
  221. package/script/fileCopy.js +0 -60
  222. package/script/syncVersion.js +0 -35
  223. /package/components/{message-multi-form → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form}/component-mobile/label-mobile.vue +0 -0
  224. /package/components/{message-multi-form → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form}/component-pc/label-pc.vue +0 -0
  225. /package/components/{message-form → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-single-form}/form-branch.vue +0 -0
@@ -1,585 +0,0 @@
1
- <template>
2
- <view :id="attrs.id" :class="'_block _'+name+' '+attrs.class" :style="attrs.style">
3
- <block v-for="(n, i) in childs" v-bind:key="i">
4
- <!-- 图片 -->
5
- <!-- 占位图 -->
6
- <image v-if="n.name==='img'&&!n.t&&((opts[1]&&!ctrl[i])||ctrl[i]<0)" class="_img" :style="n.attrs.style" :src="ctrl[i]<0?opts[2]:opts[1]" mode="widthFix" />
7
- <!-- 显示图片 -->
8
- <!-- #ifdef H5 || (APP-PLUS && VUE2) -->
9
- <img v-if="n.name==='img'" :id="n.attrs.id" :class="'_img '+n.attrs.class" :style="(ctrl[i]===-1?'display:none;':'')+n.attrs.style" :src="n.attrs.src||(ctrl.load?n.attrs['data-src']:'')" :data-i="i" @load="imgLoad" @error="mediaError" @tap.stop="imgTap" @longpress="imgLongTap" />
10
- <!-- #endif -->
11
- <!-- #ifndef H5 || (APP-PLUS && VUE2) -->
12
- <!-- 表格中的图片,使用 rich-text 防止大小不正确 -->
13
- <rich-text v-if="n.name==='img'&&n.t" :style="'display:'+n.t" :nodes="[{attrs:{style:n.attrs.style||'',src:n.attrs.src},name:'img'}]" :data-i="i" @tap.stop="imgTap" />
14
- <!-- #endif -->
15
- <!-- #ifndef H5 || APP-PLUS || MP-KUAISHOU -->
16
- <image v-else-if="n.name==='img'" :id="n.attrs.id" :class="'_img '+n.attrs.class" :style="(ctrl[i]===-1?'display:none;':'')+'width:'+(ctrl[i]||1)+'px;height:1px;'+n.attrs.style" :src="n.attrs.src" :mode="!n.h?'widthFix':(!n.w?'heightFix':(n.m||'scaleToFill'))" :lazy-load="opts[0]" :webp="n.webp" :show-menu-by-longpress="opts[3]&&!n.attrs.ignore" :image-menu-prevent="!opts[3]||n.attrs.ignore" :data-i="i" @load="imgLoad" @error="mediaError" @tap.stop="imgTap" @longpress="imgLongTap" />
17
- <!-- #endif -->
18
- <!-- #ifdef MP-KUAISHOU -->
19
- <image v-else-if="n.name==='img'" :id="n.attrs.id" :class="'_img '+n.attrs.class" :style="(ctrl[i]===-1?'display:none;':'')+n.attrs.style" :src="n.attrs.src" :lazy-load="opts[0]" :data-i="i" @load="imgLoad" @error="mediaError" @tap.stop="imgTap"></image>
20
- <!-- #endif -->
21
- <!-- #ifdef APP-PLUS && VUE3 -->
22
- <image v-else-if="n.name==='img'" :id="n.attrs.id" :class="'_img '+n.attrs.class" :style="(ctrl[i]===-1?'display:none;':'')+'width:'+(ctrl[i]||1)+'px;'+n.attrs.style" :src="n.attrs.src||(ctrl.load?n.attrs['data-src']:'')" :mode="!n.h?'widthFix':(!n.w?'heightFix':(n.m||''))" :data-i="i" @load="imgLoad" @error="mediaError" @tap.stop="imgTap" @longpress="imgLongTap" />
23
- <!-- #endif -->
24
- <!-- 文本 -->
25
- <!-- #ifdef MP-WEIXIN -->
26
- <text v-else-if="n.text" :user-select="opts[4]=='force'&&isiOS" decode>{{n.text}}</text>
27
- <!-- #endif -->
28
- <!-- #ifndef MP-WEIXIN || MP-BAIDU || MP-ALIPAY || MP-TOUTIAO -->
29
- <text v-else-if="n.text" decode>{{n.text}}</text>
30
- <!-- #endif -->
31
- <text v-else-if="n.name==='br'">\n</text>
32
- <!-- 链接 -->
33
- <view v-else-if="n.name==='a'" :id="n.attrs.id" :class="(n.attrs.href?'_a ':'')+n.attrs.class" hover-class="_hover" :style="'display:inline;'+n.attrs.style" :data-i="i" @tap.stop="linkTap">
34
- <node name="span" :childs="n.children" :opts="opts" style="display:inherit" />
35
- </view>
36
- <!-- 视频 -->
37
- <!-- #ifdef APP-PLUS -->
38
- <view v-else-if="n.html" :id="n.attrs.id" :class="'_video '+n.attrs.class" :style="n.attrs.style" v-html="n.html" @vplay.stop="play" />
39
- <!-- #endif -->
40
- <!-- #ifndef APP-PLUS -->
41
- <video v-else-if="n.name==='video'" :id="n.attrs.id" :class="n.attrs.class" :style="n.attrs.style" :autoplay="n.attrs.autoplay" :controls="n.attrs.controls" :loop="n.attrs.loop" :muted="n.attrs.muted" :object-fit="n.attrs['object-fit']" :poster="n.attrs.poster" :src="n.src[ctrl[i]||0]" :data-i="i" @play="play" @error="mediaError" />
42
- <!-- #endif -->
43
- <!-- #ifdef H5 || APP-PLUS -->
44
- <iframe v-else-if="n.name==='iframe'" :style="n.attrs.style" :allowfullscreen="n.attrs.allowfullscreen" :frameborder="n.attrs.frameborder" :src="n.attrs.src" />
45
- <embed v-else-if="n.name==='embed'" :style="n.attrs.style" :src="n.attrs.src" />
46
- <!-- #endif -->
47
- <!-- #ifndef MP-TOUTIAO || ((H5 || APP-PLUS) && VUE3) -->
48
- <!-- 音频 -->
49
- <audio v-else-if="n.name==='audio'" :id="n.attrs.id" :class="n.attrs.class" :style="n.attrs.style" :author="n.attrs.author" :controls="n.attrs.controls" :loop="n.attrs.loop" :name="n.attrs.name" :poster="n.attrs.poster" :src="n.src[ctrl[i]||0]" :data-i="i" @play="play" @error="mediaError" />
50
- <!-- #endif -->
51
- <view v-else-if="(n.name==='table'&&n.c)||n.name==='li'" :id="n.attrs.id" :class="'_'+n.name+' '+n.attrs.class" :style="n.attrs.style">
52
- <node v-if="n.name==='li'" :childs="n.children" :opts="opts" />
53
- <view v-else v-for="(tbody, x) in n.children" v-bind:key="x" :class="'_'+tbody.name+' '+tbody.attrs.class" :style="tbody.attrs.style">
54
- <node v-if="tbody.name==='td'||tbody.name==='th'" :childs="tbody.children" :opts="opts" />
55
- <block v-else v-for="(tr, y) in tbody.children" v-bind:key="y">
56
- <view v-if="tr.name==='td'||tr.name==='th'" :class="'_'+tr.name+' '+tr.attrs.class" :style="tr.attrs.style">
57
- <node :childs="tr.children" :opts="opts" />
58
- </view>
59
- <view v-else :class="'_'+tr.name+' '+tr.attrs.class" :style="tr.attrs.style">
60
- <view v-for="(td, z) in tr.children" v-bind:key="z" :class="'_'+td.name+' '+td.attrs.class" :style="td.attrs.style">
61
- <node :childs="td.children" :opts="opts" />
62
- </view>
63
- </view>
64
- </block>
65
- </view>
66
- </view>
67
- <!-- insert -->
68
- <!-- 富文本 -->
69
- <!-- #ifdef H5 || ((MP-WEIXIN || MP-QQ || APP-PLUS || MP-360) && VUE2) -->
70
- <rich-text v-else-if="!n.c&&!handler.isInline(n.name, n.attrs.style)" :id="n.attrs.id" :style="n.f" :user-select="opts[4]" :nodes="[n]" />
71
- <!-- #endif -->
72
- <!-- #ifndef H5 || ((MP-WEIXIN || MP-QQ || APP-PLUS || MP-360) && VUE2) -->
73
- <rich-text v-else-if="!n.c" :id="n.attrs.id" :style="'display:inline;'+n.f" :preview="false" :selectable="opts[4]" :user-select="opts[4]" :nodes="[n]" />
74
- <!-- #endif -->
75
- <!-- 继续递归 -->
76
- <view v-else-if="n.c===2" :id="n.attrs.id" :class="'_block _'+n.name+' '+n.attrs.class" :style="n.f+';'+n.attrs.style">
77
- <node v-for="(n2, j) in n.children" v-bind:key="j" :style="n2.f" :name="n2.name" :attrs="n2.attrs" :childs="n2.children" :opts="opts" />
78
- </view>
79
- <node v-else :style="n.f" :name="n.name" :attrs="n.attrs" :childs="n.children" :opts="opts" />
80
- </block>
81
- </view>
82
- </template>
83
- <script module="handler" lang="wxs">
84
- // 行内标签列表
85
- var inlineTags = {
86
- abbr: true,
87
- b: true,
88
- big: true,
89
- code: true,
90
- del: true,
91
- em: true,
92
- i: true,
93
- ins: true,
94
- label: true,
95
- q: true,
96
- small: true,
97
- span: true,
98
- strong: true,
99
- sub: true,
100
- sup: true
101
- }
102
- /**
103
- * @description 判断是否为行内标签
104
- */
105
- module.exports = {
106
- isInline: function (tagName, style) {
107
- return inlineTags[tagName] || (style || '').indexOf('display:inline') !== -1
108
- }
109
- }
110
- </script>
111
- <script>
112
- import node from './node'
113
- export default {
114
- name: 'node',
115
- options: {
116
- // #ifdef MP-WEIXIN
117
- virtualHost: true,
118
- // #endif
119
- // #ifdef MP-TOUTIAO
120
- addGlobalClass: false
121
- // #endif
122
- },
123
- data () {
124
- return {
125
- ctrl: {},
126
- // #ifdef MP-WEIXIN
127
- isiOS: uni.getSystemInfoSync().system.includes('iOS')
128
- // #endif
129
- }
130
- },
131
- props: {
132
- name: String,
133
- attrs: {
134
- type: Object,
135
- default () {
136
- return {}
137
- }
138
- },
139
- childs: Array,
140
- opts: Array
141
- },
142
- components: {
143
- // #ifndef (H5 || APP-PLUS) && VUE3
144
- node
145
- // #endif
146
- },
147
- mounted () {
148
- this.$nextTick(() => {
149
- for (this.root = this.$parent; this.root.$options.name !== 'mp-html'; this.root = this.root.$parent);
150
- })
151
- // #ifdef H5 || APP-PLUS
152
- if (this.opts[0]) {
153
- let i
154
- for (i = this.childs.length; i--;) {
155
- if (this.childs[i].name === 'img') break
156
- }
157
- if (i !== -1) {
158
- this.observer = uni.createIntersectionObserver(this).relativeToViewport({
159
- top: 500,
160
- bottom: 500
161
- })
162
- this.observer.observe('._img', res => {
163
- if (res.intersectionRatio) {
164
- this.$set(this.ctrl, 'load', 1)
165
- this.observer.disconnect()
166
- }
167
- })
168
- }
169
- }
170
- // #endif
171
- },
172
- beforeDestroy () {
173
- // #ifdef H5 || APP-PLUS
174
- if (this.observer) {
175
- this.observer.disconnect()
176
- }
177
- // #endif
178
- },
179
- methods: {
180
- // #ifdef MP-WEIXIN
181
- toJSON () { return this },
182
- // #endif
183
- /**
184
- * @description 播放视频事件
185
- * @param {Event} e
186
- */
187
- play (e) {
188
- const i = e.currentTarget.dataset.i
189
- const node = this.childs[i]
190
- this.root.$emit('play', {
191
- source: node.name,
192
- attrs: {
193
- ...node.attrs,
194
- src: node.src[this.ctrl[i] || 0]
195
- }
196
- })
197
- // #ifndef APP-PLUS
198
- if (this.root.pauseVideo) {
199
- let flag = false
200
- const id = e.target.id
201
- for (let i = this.root._videos.length; i--;) {
202
- if (this.root._videos[i].id === id) {
203
- flag = true
204
- } else {
205
- this.root._videos[i].pause() // 自动暂停其他视频
206
- }
207
- }
208
- // 将自己加入列表
209
- if (!flag) {
210
- const ctx = uni.createVideoContext(id
211
- // #ifndef MP-BAIDU
212
- , this
213
- // #endif
214
- )
215
- ctx.id = id
216
- if (this.root.playbackRate) {
217
- ctx.playbackRate(this.root.playbackRate)
218
- }
219
- this.root._videos.push(ctx)
220
- }
221
- }
222
- // #endif
223
- },
224
-
225
- /**
226
- * @description 图片点击事件
227
- * @param {Event} e
228
- */
229
- imgTap (e) {
230
- const node = this.childs[e.currentTarget.dataset.i]
231
- if (node.a) {
232
- this.linkTap(node.a)
233
- return
234
- }
235
- if (node.attrs.ignore) return
236
- // #ifdef H5 || APP-PLUS
237
- node.attrs.src = node.attrs.src || node.attrs['data-src']
238
- // #endif
239
- this.root.$emit('imgtap', node.attrs)
240
- // 自动预览图片
241
- if (this.root.previewImg) {
242
- uni.previewImage({
243
- // #ifdef MP-WEIXIN
244
- showmenu: this.root.showImgMenu,
245
- // #endif
246
- // #ifdef MP-ALIPAY
247
- enablesavephoto: this.root.showImgMenu,
248
- enableShowPhotoDownload: this.root.showImgMenu,
249
- // #endif
250
- current: parseInt(node.attrs.i),
251
- urls: this.root.imgList
252
- })
253
- }
254
- },
255
-
256
- /**
257
- * @description 图片长按
258
- */
259
- imgLongTap (e) {
260
- // #ifdef APP-PLUS
261
- const attrs = this.childs[e.currentTarget.dataset.i].attrs
262
- if (this.opts[3] && !attrs.ignore) {
263
- uni.showActionSheet({
264
- itemList: ['保存图片'],
265
- success: () => {
266
- const save = path => {
267
- uni.saveImageToPhotosAlbum({
268
- filePath: path,
269
- success () {
270
- uni.showToast({
271
- title: '保存成功'
272
- })
273
- }
274
- })
275
- }
276
- if (this.root.imgList[attrs.i].startsWith('http')) {
277
- uni.downloadFile({
278
- url: this.root.imgList[attrs.i],
279
- success: res => save(res.tempFilePath)
280
- })
281
- } else {
282
- save(this.root.imgList[attrs.i])
283
- }
284
- }
285
- })
286
- }
287
- // #endif
288
- },
289
-
290
- /**
291
- * @description 图片加载完成事件
292
- * @param {Event} e
293
- */
294
- imgLoad (e) {
295
- const i = e.currentTarget.dataset.i
296
- /* #ifndef H5 || (APP-PLUS && VUE2) */
297
- if (!this.childs[i].w) {
298
- // 设置原宽度
299
- this.$set(this.ctrl, i, e.detail.width)
300
- } else /* #endif */ if ((this.opts[1] && !this.ctrl[i]) || this.ctrl[i] === -1) {
301
- // 加载完毕,取消加载中占位图
302
- this.$set(this.ctrl, i, 1)
303
- }
304
- this.checkReady()
305
- },
306
-
307
- /**
308
- * @description 检查是否所有图片加载完毕
309
- */
310
- checkReady () {
311
- if (this.root && !this.root.lazyLoad) {
312
- this.root._unloadimgs -= 1
313
- if (!this.root._unloadimgs) {
314
- setTimeout(() => {
315
- this.root.getRect().then(rect => {
316
- this.root.$emit('ready', rect)
317
- }).catch(() => {
318
- this.root.$emit('ready', {})
319
- })
320
- }, 350)
321
- }
322
- }
323
- },
324
-
325
- /**
326
- * @description 链接点击事件
327
- * @param {Event} e
328
- */
329
- linkTap (e) {
330
- const node = e.currentTarget ? this.childs[e.currentTarget.dataset.i] : {}
331
- const attrs = node.attrs || e
332
- const href = attrs.href
333
- this.root.$emit('linktap', Object.assign({
334
- innerText: this.root.getText(node.children || []) // 链接内的文本内容
335
- }, attrs))
336
- if (href) {
337
- if (href[0] === '#') {
338
- // 跳转锚点
339
- this.root.navigateTo(href.substring(1)).catch(() => { })
340
- } else if (href.split('?')[0].includes('://')) {
341
- // 复制外部链接
342
- if (this.root.copyLink) {
343
- // #ifdef H5
344
- window.open(href)
345
- // #endif
346
- // #ifdef MP
347
- uni.setClipboardData({
348
- data: href,
349
- success: () =>
350
- uni.showToast({
351
- title: '链接已复制'
352
- })
353
- })
354
- // #endif
355
- // #ifdef APP-PLUS
356
- plus.runtime.openWeb(href)
357
- // #endif
358
- }
359
- } else {
360
- // 跳转页面
361
- uni.navigateTo({
362
- url: href,
363
- fail () {
364
- uni.switchTab({
365
- url: href,
366
- fail () { }
367
- })
368
- }
369
- })
370
- }
371
- }
372
- },
373
-
374
- /**
375
- * @description 错误事件
376
- * @param {Event} e
377
- */
378
- mediaError (e) {
379
- const i = e.currentTarget.dataset.i
380
- const node = this.childs[i]
381
- // 加载其他源
382
- if (node.name === 'video' || node.name === 'audio') {
383
- let index = (this.ctrl[i] || 0) + 1
384
- if (index > node.src.length) {
385
- index = 0
386
- }
387
- if (index < node.src.length) {
388
- this.$set(this.ctrl, i, index)
389
- return
390
- }
391
- } else if (node.name === 'img') {
392
- // #ifdef H5 && VUE3
393
- if (this.opts[0] && !this.ctrl.load) return
394
- // #endif
395
- // 显示错误占位图
396
- if (this.opts[2]) {
397
- this.$set(this.ctrl, i, -1)
398
- }
399
- this.checkReady()
400
- }
401
- if (this.root) {
402
- this.root.$emit('error', {
403
- source: node.name,
404
- attrs: node.attrs,
405
- // #ifndef H5 && VUE3
406
- errMsg: e.detail.errMsg
407
- // #endif
408
- })
409
- }
410
- }
411
- }
412
- }
413
- </script>
414
- <style>
415
- /* a 标签默认效果 */
416
- ._a {
417
- padding: 1.5px 0 1.5px 0;
418
- color: #366092;
419
- word-break: break-all;
420
- }
421
-
422
- /* a 标签点击态效果 */
423
- ._hover {
424
- text-decoration: underline;
425
- opacity: 0.7;
426
- }
427
-
428
- /* 图片默认效果 */
429
- ._img {
430
- max-width: 100%;
431
- -webkit-touch-callout: none;
432
- }
433
-
434
- /* 内部样式 */
435
-
436
- ._block {
437
- display: block;
438
- }
439
-
440
- ._b,
441
- ._strong {
442
- font-weight: bold;
443
- }
444
-
445
- ._code {
446
- font-family: monospace;
447
- }
448
-
449
- ._del {
450
- text-decoration: line-through;
451
- }
452
-
453
- ._em,
454
- ._i {
455
- font-style: italic;
456
- }
457
-
458
- ._h1 {
459
- font-size: 2em;
460
- }
461
-
462
- ._h2 {
463
- font-size: 1.5em;
464
- }
465
-
466
- ._h3 {
467
- font-size: 1.17em;
468
- }
469
-
470
- ._h5 {
471
- font-size: 0.83em;
472
- }
473
-
474
- ._h6 {
475
- font-size: 0.67em;
476
- }
477
-
478
- ._h1,
479
- ._h2,
480
- ._h3,
481
- ._h4,
482
- ._h5,
483
- ._h6 {
484
- display: block;
485
- font-weight: bold;
486
- }
487
-
488
- ._image {
489
- height: 1px;
490
- }
491
-
492
- ._ins {
493
- text-decoration: underline;
494
- }
495
-
496
- ._li {
497
- display: list-item;
498
- }
499
-
500
- ._ol {
501
- list-style-type: decimal;
502
- }
503
-
504
- ._ol,
505
- ._ul {
506
- display: block;
507
- padding-left: 40px;
508
- margin: 1em 0;
509
- }
510
-
511
- ._q::before {
512
- content: '"';
513
- }
514
-
515
- ._q::after {
516
- content: '"';
517
- }
518
-
519
- ._sub {
520
- font-size: smaller;
521
- vertical-align: sub;
522
- }
523
-
524
- ._sup {
525
- font-size: smaller;
526
- vertical-align: super;
527
- }
528
-
529
- ._thead,
530
- ._tbody,
531
- ._tfoot {
532
- display: table-row-group;
533
- }
534
-
535
- ._tr {
536
- display: table-row;
537
- }
538
-
539
- ._td,
540
- ._th {
541
- display: table-cell;
542
- vertical-align: middle;
543
- }
544
-
545
- ._th {
546
- font-weight: bold;
547
- text-align: center;
548
- }
549
-
550
- ._ul {
551
- list-style-type: disc;
552
- }
553
-
554
- ._ul ._ul {
555
- margin: 0;
556
- list-style-type: circle;
557
- }
558
-
559
- ._ul ._ul ._ul {
560
- list-style-type: square;
561
- }
562
-
563
- ._abbr,
564
- ._b,
565
- ._code,
566
- ._del,
567
- ._em,
568
- ._i,
569
- ._ins,
570
- ._label,
571
- ._q,
572
- ._span,
573
- ._strong,
574
- ._sub,
575
- ._sup {
576
- display: inline;
577
- }
578
-
579
- /* #ifdef APP-PLUS */
580
- ._video {
581
- width: 300px;
582
- height: 225px;
583
- }
584
- /* #endif */
585
- </style>