@tencentcloud/ai-desk-customer-vue 0.1.3 → 0.1.5

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 (223) hide show
  1. package/components/CustomerServiceChat/index-web.vue +6 -14
  2. package/components/CustomerServiceChat/message-input/message-input-quote/index.vue +3 -14
  3. package/components/CustomerServiceChat/message-input-toolbar/emoji-dialog-mobile/emoji-dialog-mobile.vue +2 -5
  4. package/components/CustomerServiceChat/message-input-toolbar/emoji-picker/emoji-picker-dialog.vue +8 -15
  5. package/components/CustomerServiceChat/message-input-toolbar/file-upload/index.vue +3 -7
  6. package/components/CustomerServiceChat/message-input-toolbar/image-upload/index.vue +6 -44
  7. package/components/CustomerServiceChat/message-input-toolbar/index-web.vue +1 -14
  8. package/components/CustomerServiceChat/message-input-toolbar/style/uni.scss +0 -56
  9. package/components/CustomerServiceChat/message-input-toolbar/toolbar-item-container/index.vue +4 -7
  10. package/components/CustomerServiceChat/message-input-toolbar/toolbar-item-container/style/index.scss +0 -1
  11. package/components/CustomerServiceChat/message-input-toolbar/video-upload/index.vue +7 -50
  12. package/components/CustomerServiceChat/message-list/index-web.vue +3 -7
  13. package/components/CustomerServiceChat/message-list/message-elements/{plugins/plugin-components → message-desk}/index.ts +1 -1
  14. package/components/{customer-icon.vue → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/customer-icon.vue} +0 -9
  15. package/components/CustomerServiceChat/message-list/message-elements/{plugins/plugin-components/message-customer → message-desk/message-desk-elements}/index.ts +1 -1
  16. package/components/{message-branch.vue → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-branch.vue} +4 -4
  17. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-desk.vue +126 -0
  18. package/components/{message-multi-branch → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-branch}/branch-pc.vue +1 -1
  19. package/components/{message-multi-branch → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-branch}/index.vue +2 -3
  20. 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
  21. 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
  22. 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
  23. 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
  24. 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
  25. package/components/{message-multi-form → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form}/form-mobile.vue +8 -7
  26. package/components/{message-multi-form → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form}/form-pc.vue +5 -5
  27. package/components/{message-multi-form → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form}/index.vue +3 -3
  28. package/components/{message-product-card.vue → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-product-card.vue} +2 -2
  29. package/components/{message-rating → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-rating}/index.vue +4 -4
  30. package/components/{message-rating → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-rating}/message-rating-number.vue +3 -3
  31. package/components/{message-rating → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-rating}/message-rating-star.vue +5 -5
  32. package/components/{message-rich-text.vue → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-rich-text.vue} +5 -17
  33. package/components/{message-robot-welcome.vue → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-robot-welcome.vue} +7 -7
  34. package/components/{message-form → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-single-form}/form-input.vue +5 -5
  35. package/components/{message-form → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-single-form}/index.vue +1 -1
  36. package/components/{message-stream.vue → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-stream.vue} +2 -2
  37. package/{styles → components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/styles}/common.scss +1 -1
  38. package/components/CustomerServiceChat/message-list/message-elements/{plugins/plugin-components → message-desk}/message-plugin-layout-web.vue +2 -9
  39. package/components/CustomerServiceChat/message-list/message-elements/{plugins/plugin-components → message-desk}/message-plugin-web.vue +5 -5
  40. package/components/CustomerServiceChat/message-list/message-elements/message-quote/index-web.vue +2 -4
  41. package/components/CustomerServiceChat/message-list/message-elements/message-record/index.vue +3 -6
  42. package/components/CustomerServiceChat/message-list/message-elements/simple-message-list/index.vue +3 -29
  43. package/components/CustomerServiceChat/style/index.scss +0 -2
  44. package/components/common/Avatar/index.vue +2 -23
  45. package/components/common/BottomPopup/index.vue +2 -3
  46. package/components/common/Dialog/index.vue +2 -2
  47. package/components/common/ImagePreviewer/index-web.vue +2 -84
  48. package/components/common/ProgressMessage/index.vue +0 -8
  49. package/excluded-list.txt +3 -4
  50. package/index.ts +4 -13
  51. package/index.vue +1 -60
  52. package/package.json +9 -19
  53. package/server.ts +2 -12
  54. package/utils/chatStorage.ts +2 -11
  55. package/utils/index.ts +2 -1
  56. package/assets/audio-before-delete.svg +0 -4
  57. package/assets/audio-blue.png +0 -0
  58. package/assets/audio-bubble-blue.svg +0 -3
  59. package/assets/audio-bubble-red.svg +0 -3
  60. package/assets/audio-delete.svg +0 -10
  61. package/assets/audio.svg +0 -6
  62. package/assets/camera-uni.png +0 -0
  63. package/assets/face-uni.png +0 -0
  64. package/assets/more-uni.png +0 -0
  65. package/assets/translate.svg +0 -12
  66. package/assets/video-uni.png +0 -0
  67. package/components/CustomerServiceChat/message-input-toolbar/toolbar-item-container/style/uni.scss +0 -36
  68. package/components/CustomerServiceChat/message-list/link/index.ts +0 -23
  69. package/components/CustomerServiceChat/message-list/message-elements/plugins/plugin-components/message-customer/message-customer-service.vue +0 -22
  70. package/components/CustomerServiceChat/style/uni.scss +0 -12
  71. package/components/CustomerServiceChat/style/wx.scss +0 -5
  72. package/components/common/RichText/LICENSE +0 -21
  73. package/components/common/RichText/README.md +0 -244
  74. package/components/common/RichText/dist/mp-alipay/index.acss +0 -1
  75. package/components/common/RichText/dist/mp-alipay/index.axml +0 -1
  76. package/components/common/RichText/dist/mp-alipay/index.js +0 -8
  77. package/components/common/RichText/dist/mp-alipay/index.json +0 -1
  78. package/components/common/RichText/dist/mp-alipay/node/node.acss +0 -1
  79. package/components/common/RichText/dist/mp-alipay/node/node.axml +0 -1
  80. package/components/common/RichText/dist/mp-alipay/node/node.js +0 -1
  81. package/components/common/RichText/dist/mp-alipay/node/node.json +0 -1
  82. package/components/common/RichText/dist/mp-alipay/parser.js +0 -1
  83. package/components/common/RichText/dist/mp-baidu/index.css +0 -1
  84. package/components/common/RichText/dist/mp-baidu/index.js +0 -8
  85. package/components/common/RichText/dist/mp-baidu/index.json +0 -1
  86. package/components/common/RichText/dist/mp-baidu/index.swan +0 -1
  87. package/components/common/RichText/dist/mp-baidu/node/node.css +0 -1
  88. package/components/common/RichText/dist/mp-baidu/node/node.js +0 -1
  89. package/components/common/RichText/dist/mp-baidu/node/node.json +0 -1
  90. package/components/common/RichText/dist/mp-baidu/node/node.swan +0 -1
  91. package/components/common/RichText/dist/mp-baidu/parser.js +0 -1
  92. package/components/common/RichText/dist/mp-qq/index.js +0 -8
  93. package/components/common/RichText/dist/mp-qq/index.json +0 -1
  94. package/components/common/RichText/dist/mp-qq/index.qml +0 -1
  95. package/components/common/RichText/dist/mp-qq/index.qss +0 -1
  96. package/components/common/RichText/dist/mp-qq/node/node.js +0 -1
  97. package/components/common/RichText/dist/mp-qq/node/node.json +0 -1
  98. package/components/common/RichText/dist/mp-qq/node/node.qml +0 -1
  99. package/components/common/RichText/dist/mp-qq/node/node.qss +0 -1
  100. package/components/common/RichText/dist/mp-qq/parser.js +0 -1
  101. package/components/common/RichText/dist/mp-toutiao/index.js +0 -8
  102. package/components/common/RichText/dist/mp-toutiao/index.json +0 -1
  103. package/components/common/RichText/dist/mp-toutiao/index.ttml +0 -1
  104. package/components/common/RichText/dist/mp-toutiao/index.ttss +0 -1
  105. package/components/common/RichText/dist/mp-toutiao/node/node.js +0 -1
  106. package/components/common/RichText/dist/mp-toutiao/node/node.json +0 -1
  107. package/components/common/RichText/dist/mp-toutiao/node/node.ttml +0 -1
  108. package/components/common/RichText/dist/mp-toutiao/node/node.ttss +0 -1
  109. package/components/common/RichText/dist/mp-toutiao/parser.js +0 -1
  110. package/components/common/RichText/dist/mp-weixin/index.js +0 -8
  111. package/components/common/RichText/dist/mp-weixin/index.json +0 -1
  112. package/components/common/RichText/dist/mp-weixin/index.wxml +0 -1
  113. package/components/common/RichText/dist/mp-weixin/index.wxss +0 -1
  114. package/components/common/RichText/dist/mp-weixin/node/node.js +0 -1
  115. package/components/common/RichText/dist/mp-weixin/node/node.json +0 -1
  116. package/components/common/RichText/dist/mp-weixin/node/node.wxml +0 -1
  117. package/components/common/RichText/dist/mp-weixin/node/node.wxss +0 -1
  118. package/components/common/RichText/dist/mp-weixin/parser.js +0 -1
  119. package/components/common/RichText/dist/uni-app/components/mp-html/mp-html.vue +0 -498
  120. package/components/common/RichText/dist/uni-app/components/mp-html/node/node.vue +0 -587
  121. package/components/common/RichText/dist/uni-app/components/mp-html/parser.js +0 -1393
  122. package/components/common/RichText/dist/uni-app/static/app-plus/mp-html/js/handler.js +0 -1
  123. package/components/common/RichText/dist/uni-app/static/app-plus/mp-html/js/uni.webview.min.js +0 -1
  124. package/components/common/RichText/dist/uni-app/static/app-plus/mp-html/local.html +0 -1
  125. package/components/common/RichText/docs/.nojekyll +0 -0
  126. package/components/common/RichText/docs/index.html +0 -50
  127. package/components/common/RichText/docs/lib/docsify.min.js +0 -1
  128. package/components/common/RichText/docs/lib/prism-bash.min.js +0 -1
  129. package/components/common/RichText/docs/lib/search.min.js +0 -1
  130. package/components/common/RichText/docs/lib/vue.css +0 -858
  131. package/components/common/RichText/gulpfile.js +0 -113
  132. package/components/common/RichText/lint.js +0 -63
  133. package/components/common/RichText/package.json +0 -74
  134. package/components/common/RichText/plugins/README.md +0 -2
  135. package/components/common/RichText/plugins/audio/README.md +0 -25
  136. package/components/common/RichText/plugins/audio/build.js +0 -11
  137. package/components/common/RichText/plugins/audio/context.js +0 -7
  138. package/components/common/RichText/plugins/audio/index.js +0 -34
  139. package/components/common/RichText/plugins/audio/miniprogram/audio.js +0 -189
  140. package/components/common/RichText/plugins/audio/miniprogram/audio.json +0 -3
  141. package/components/common/RichText/plugins/audio/miniprogram/audio.wxml +0 -17
  142. package/components/common/RichText/plugins/audio/miniprogram/audio.wxss +0 -127
  143. package/components/common/RichText/plugins/audio/miniprogram/build.js +0 -3
  144. package/components/common/RichText/plugins/audio/uni-app/audio.vue +0 -269
  145. package/components/common/RichText/plugins/audio/uni-app/build.js +0 -3
  146. package/components/common/RichText/plugins/card/README.md +0 -30
  147. package/components/common/RichText/plugins/card/build.js +0 -14
  148. package/components/common/RichText/plugins/card/index.js +0 -7
  149. package/components/common/RichText/plugins/card/miniprogram/build.js +0 -3
  150. package/components/common/RichText/plugins/card/miniprogram/card.js +0 -26
  151. package/components/common/RichText/plugins/card/miniprogram/card.json +0 -3
  152. package/components/common/RichText/plugins/card/miniprogram/card.wxml +0 -9
  153. package/components/common/RichText/plugins/card/miniprogram/card.wxss +0 -55
  154. package/components/common/RichText/plugins/card/uni-app/build.js +0 -3
  155. package/components/common/RichText/plugins/card/uni-app/card.vue +0 -122
  156. package/components/common/RichText/plugins/editable/README.md +0 -137
  157. package/components/common/RichText/plugins/editable/config.js +0 -15
  158. package/components/common/RichText/plugins/editable/miniprogram/build.js +0 -813
  159. package/components/common/RichText/plugins/editable/miniprogram/index.js +0 -551
  160. package/components/common/RichText/plugins/editable/uni-app/build.js +0 -744
  161. package/components/common/RichText/plugins/editable/uni-app/index.js +0 -553
  162. package/components/common/RichText/plugins/emoji/README.md +0 -15
  163. package/components/common/RichText/plugins/emoji/index.js +0 -203
  164. package/components/common/RichText/plugins/highlight/README.md +0 -26
  165. package/components/common/RichText/plugins/highlight/config.js +0 -5
  166. package/components/common/RichText/plugins/highlight/index.js +0 -96
  167. package/components/common/RichText/plugins/highlight/miniprogram/build.js +0 -88
  168. package/components/common/RichText/plugins/highlight/prism.css +0 -125
  169. package/components/common/RichText/plugins/highlight/prism.min.js +0 -7
  170. package/components/common/RichText/plugins/highlight/uni-app/build.js +0 -88
  171. package/components/common/RichText/plugins/img-cache/README.md +0 -24
  172. package/components/common/RichText/plugins/img-cache/build.js +0 -16
  173. package/components/common/RichText/plugins/img-cache/index.js +0 -138
  174. package/components/common/RichText/plugins/latex/README.md +0 -16
  175. package/components/common/RichText/plugins/latex/build.js +0 -14
  176. package/components/common/RichText/plugins/latex/index.js +0 -77
  177. package/components/common/RichText/plugins/latex/katex.css +0 -1070
  178. package/components/common/RichText/plugins/latex/katex.min.js +0 -1
  179. package/components/common/RichText/plugins/markdown/README.md +0 -17
  180. package/components/common/RichText/plugins/markdown/index.js +0 -34
  181. package/components/common/RichText/plugins/markdown/marked.min.js +0 -6
  182. package/components/common/RichText/plugins/markdown/miniprogram/build.js +0 -70
  183. package/components/common/RichText/plugins/markdown/uni-app/build.js +0 -68
  184. package/components/common/RichText/plugins/search/README.md +0 -46
  185. package/components/common/RichText/plugins/search/miniprogram/index.js +0 -137
  186. package/components/common/RichText/plugins/search/uni-app/index.js +0 -132
  187. package/components/common/RichText/plugins/style/README.md +0 -30
  188. package/components/common/RichText/plugins/style/index.js +0 -129
  189. package/components/common/RichText/plugins/style/parser.js +0 -175
  190. package/components/common/RichText/plugins/template/README.md +0 -2
  191. package/components/common/RichText/plugins/template/build.js +0 -65
  192. package/components/common/RichText/plugins/template/index.js +0 -67
  193. package/components/common/RichText/plugins/txv-video/README.md +0 -18
  194. package/components/common/RichText/plugins/txv-video/build.js +0 -3
  195. package/components/common/RichText/plugins/txv-video/index.js +0 -46
  196. package/components/common/RichText/plugins/txv-video/miniprogram/build.js +0 -6
  197. package/components/common/RichText/plugins/txv-video/uni-app/build.js +0 -3
  198. package/components/common/RichText/src/miniprogram/index.js +0 -396
  199. package/components/common/RichText/src/miniprogram/index.json +0 -6
  200. package/components/common/RichText/src/miniprogram/index.wxml +0 -7
  201. package/components/common/RichText/src/miniprogram/index.wxss +0 -13
  202. package/components/common/RichText/src/miniprogram/node/node.js +0 -247
  203. package/components/common/RichText/src/miniprogram/node/node.json +0 -6
  204. package/components/common/RichText/src/miniprogram/node/node.wxml +0 -112
  205. package/components/common/RichText/src/miniprogram/node/node.wxss +0 -164
  206. package/components/common/RichText/src/miniprogram/parser.js +0 -1269
  207. package/components/common/RichText/src/uni-app/components/mp-html/mp-html.vue +0 -498
  208. package/components/common/RichText/src/uni-app/components/mp-html/node/node.vue +0 -585
  209. package/components/common/RichText/src/uni-app/components/mp-html/parser.js +0 -1393
  210. package/components/common/RichText/src/uni-app/static/app-plus/mp-html/js/handler.js +0 -254
  211. package/components/common/RichText/src/uni-app/static/app-plus/mp-html/js/uni.webview.min.js +0 -1
  212. package/components/common/RichText/src/uni-app/static/app-plus/mp-html/local.html +0 -33
  213. package/components/common/RichText/tools/config.js +0 -82
  214. package/components/common/RichText/tools/converter.js +0 -205
  215. package/components/common/RichText/tools/ifdef.js +0 -115
  216. package/components/common/RichText/tools/minifier.js +0 -40
  217. package/components/common/RichText/tools/plugin.js +0 -248
  218. package/components/message-customer-service.vue +0 -114
  219. package/script/fileCopy.js +0 -60
  220. package/script/syncVersion.js +0 -35
  221. /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
  222. /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
  223. /package/components/{message-form → CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-single-form}/form-branch.vue +0 -0
@@ -1,551 +0,0 @@
1
- /**
2
- * @fileoverview editable 插件
3
- */
4
- const config = require('./config')
5
- const Parser = require('../parser')
6
-
7
- function Editable (vm) {
8
- this.vm = vm
9
- this.editHistory = [] // 历史记录
10
- this.editI = -1 // 历史记录指针
11
- vm._mask = [] // 蒙版被点击时进行的操作
12
-
13
- /**
14
- * @description 移动历史记录指针
15
- * @param {Number} num 移动距离
16
- */
17
- const move = num => {
18
- const item = this.editHistory[this.editI + num]
19
- if (item) {
20
- this.editI += num
21
- vm.setData({
22
- [item.key]: item.value
23
- })
24
- }
25
- }
26
- vm.undo = () => move(-1) // 撤销
27
- vm.redo = () => move(1) // 重做
28
-
29
- /**
30
- * @description 更新记录
31
- * @param {String} path 路径
32
- * @param {*} oldVal 旧值
33
- * @param {*} newVal 新值
34
- * @param {Boolean} set 是否更新到视图
35
- * @private
36
- */
37
- vm._editVal = (path, oldVal, newVal, set) => {
38
- // 当前指针后的内容去除
39
- while (this.editI < this.editHistory.length - 1) {
40
- this.editHistory.pop()
41
- }
42
-
43
- // 最多存储 30 条操作记录
44
- while (this.editHistory.length > 30) {
45
- this.editHistory.pop()
46
- this.editI--
47
- }
48
-
49
- const last = this.editHistory[this.editHistory.length - 1]
50
- if (!last || last.key !== path) {
51
- if (last) {
52
- // 去掉上一次的新值
53
- this.editHistory.pop()
54
- this.editI--
55
- }
56
- // 存入这一次的旧值
57
- this.editHistory.push({
58
- key: path,
59
- value: oldVal
60
- })
61
- this.editI++
62
- }
63
-
64
- // 存入本次的新值
65
- this.editHistory.push({
66
- key: path,
67
- value: newVal
68
- })
69
- this.editI++
70
-
71
- // 更新到视图
72
- if (set) {
73
- vm.setData({
74
- [path]: newVal
75
- })
76
- }
77
- }
78
-
79
- /**
80
- * @description 获取菜单项
81
- * @private
82
- */
83
- vm._getItem = function (node, up, down) {
84
- let items
85
- let i
86
- if (node === 'color') {
87
- return config.color
88
- }
89
- if (node.name === 'img') {
90
- items = config.img.slice(0)
91
- if (!vm.getSrc) {
92
- i = items.indexOf('换图')
93
- if (i !== -1) {
94
- items.splice(i, 1)
95
- }
96
- i = items.indexOf('超链接')
97
- if (i !== -1) {
98
- items.splice(i, 1)
99
- }
100
- i = items.indexOf('预览图')
101
- if (i !== -1) {
102
- items.splice(i, 1)
103
- }
104
- }
105
- i = items.indexOf('禁用预览')
106
- if (i !== -1 && node.attrs.ignore) {
107
- items[i] = '启用预览'
108
- }
109
- } else if (node.name === 'a') {
110
- items = config.link.slice(0)
111
- if (!vm.getSrc) {
112
- i = items.indexOf('更换链接')
113
- if (i !== -1) {
114
- items.splice(i, 1)
115
- }
116
- }
117
- } else if (node.name === 'video' || node.name === 'audio') {
118
- items = config.media.slice(0)
119
- i = items.indexOf('封面')
120
- if (!vm.getSrc && i !== -1) {
121
- items.splice(i, 1)
122
- }
123
- i = items.indexOf('循环')
124
- if (node.attrs.loop && i !== -1) {
125
- items[i] = '不循环'
126
- }
127
- i = items.indexOf('自动播放')
128
- if (node.attrs.autoplay && i !== -1) {
129
- items[i] = '不自动播放'
130
- }
131
- } else if (node.name === 'card') {
132
- items = config.card.slice(0)
133
- } else {
134
- items = config.node.slice(0)
135
- }
136
- if (!up) {
137
- i = items.indexOf('上移')
138
- if (i !== -1) {
139
- items.splice(i, 1)
140
- }
141
- }
142
- if (!down) {
143
- i = items.indexOf('下移')
144
- if (i !== -1) {
145
- items.splice(i, 1)
146
- }
147
- }
148
- return items
149
- }
150
-
151
- /**
152
- * @description 显示 tooltip
153
- * @param {object} obj
154
- * @private
155
- */
156
- vm._tooltip = function (obj) {
157
- vm.setData({
158
- tooltip: {
159
- top: obj.top,
160
- items: obj.items
161
- }
162
- })
163
- vm._tooltipcb = obj.success
164
- }
165
-
166
- /**
167
- * @description 显示滚动条
168
- * @param {object} obj
169
- * @private
170
- */
171
- vm._slider = function (obj) {
172
- vm.setData({
173
- slider: {
174
- min: obj.min,
175
- max: obj.max,
176
- value: obj.value,
177
- top: obj.top
178
- }
179
- })
180
- vm._slideringcb = obj.changing
181
- vm._slidercb = obj.change
182
- }
183
-
184
- /**
185
- * @description 显示颜色选择
186
- * @param {object} obj
187
- * @private
188
- */
189
- vm._color = function (obj) {
190
- vm.setData({
191
- color: {
192
- items: obj.items,
193
- top: obj.top
194
- }
195
- })
196
- vm._colorcb = obj.success
197
- }
198
-
199
- /**
200
- * @description 点击蒙版
201
- * @private
202
- */
203
- vm._maskTap = function () {
204
- // 隐藏所有悬浮窗
205
- while (this._mask.length) {
206
- (this._mask.pop())()
207
- }
208
- const data = {}
209
- if (this.data.tooltip) {
210
- data.tooltip = null
211
- }
212
- if (this.data.slider) {
213
- data.slider = null
214
- }
215
- if (this.data.color) {
216
- data.color = null
217
- }
218
- if (this.data.tooltip || this.data.slider || this.data.color) {
219
- this.setData(data)
220
- }
221
- }
222
-
223
- /**
224
- * @description 插入节点
225
- * @param {Object} node
226
- */
227
- function insert (node) {
228
- if (vm._edit) {
229
- vm._edit.insert(node)
230
- } else {
231
- const nodes = vm.data.nodes.slice(0)
232
- nodes.push(node)
233
- vm._editVal('nodes', vm.data.nodes, nodes, true)
234
- }
235
- }
236
-
237
- /**
238
- * @description 在光标处插入指定 html 内容
239
- * @param {String} html 内容
240
- */
241
- vm.insertHtml = html => {
242
- this.inserting = true
243
- const arr = new Parser(vm).parse(html)
244
- this.inserting = undefined
245
- for (let i = 0; i < arr.length; i++) {
246
- insert(arr[i])
247
- }
248
- }
249
-
250
- /**
251
- * @description 在光标处插入图片
252
- */
253
- vm.insertImg = function () {
254
- vm.getSrc && vm.getSrc('img').then(src => {
255
- if (typeof src === 'string') {
256
- src = [src]
257
- }
258
- const parser = new Parser(vm)
259
- for (let i = 0; i < src.length; i++) {
260
- insert({
261
- name: 'img',
262
- attrs: {
263
- src: parser.getUrl(src[i])
264
- }
265
- })
266
- }
267
- }).catch(() => { })
268
- }
269
-
270
- /**
271
- * @description 在光标处插入一个链接
272
- */
273
- vm.insertLink = function () {
274
- vm.getSrc && vm.getSrc('link').then(url => {
275
- insert({
276
- name: 'a',
277
- attrs: {
278
- href: url
279
- },
280
- children: [{
281
- type: 'text',
282
- text: url
283
- }]
284
- })
285
- }).catch(() => { })
286
- }
287
-
288
- /**
289
- * @description 在光标处插入一个表格
290
- * @param {Number} rows 行数
291
- * @param {Number} cols 列数
292
- */
293
- vm.insertTable = function (rows, cols) {
294
- const table = {
295
- name: 'table',
296
- attrs: {
297
- style: 'display:table;width:100%;margin:10px 0;text-align:center;border-spacing:0;border-collapse:collapse;border:1px solid gray'
298
- },
299
- children: []
300
- }
301
- for (let i = 0; i < rows; i++) {
302
- const tr = {
303
- name: 'tr',
304
- attrs: {},
305
- children: []
306
- }
307
- for (let j = 0; j < cols; j++) {
308
- tr.children.push({
309
- name: 'td',
310
- attrs: {
311
- style: 'padding:2px;border:1px solid gray'
312
- },
313
- children: [{
314
- type: 'text',
315
- text: ''
316
- }]
317
- })
318
- }
319
- table.children.push(tr)
320
- }
321
- insert(table)
322
- }
323
-
324
- /**
325
- * @description 插入视频/音频
326
- * @param {Object} node
327
- */
328
- function insertMedia (node) {
329
- if (typeof node.src === 'string') {
330
- node.src = [node.src]
331
- }
332
- const parser = new Parser(vm)
333
- // 拼接主域名
334
- for (let i = 0; i < node.src.length; i++) {
335
- node.src[i] = parser.getUrl(node.src[i])
336
- }
337
- insert({
338
- name: 'div',
339
- attrs: {
340
- style: 'text-align:center'
341
- },
342
- children: [node]
343
- })
344
- }
345
-
346
- /**
347
- * @description 在光标处插入一个视频
348
- */
349
- vm.insertVideo = function () {
350
- vm.getSrc && vm.getSrc('video').then(src => {
351
- insertMedia({
352
- name: 'video',
353
- attrs: {
354
- controls: 'T'
355
- },
356
- src
357
- })
358
- }).catch(() => { })
359
- }
360
-
361
- /**
362
- * @description 在光标处插入一个音频
363
- */
364
- vm.insertAudio = function () {
365
- vm.getSrc && vm.getSrc('audio').then(attrs => {
366
- let src
367
- if (attrs.src) {
368
- src = attrs.src
369
- attrs.src = undefined
370
- } else {
371
- src = attrs
372
- attrs = {}
373
- }
374
- attrs.controls = 'T'
375
- insertMedia({
376
- name: 'audio',
377
- attrs,
378
- src
379
- })
380
- }).catch(() => { })
381
- }
382
-
383
- /**
384
- * @description 在光标处插入一段文本
385
- */
386
- vm.insertText = function () {
387
- insert({
388
- name: 'p',
389
- attrs: {},
390
- children: [{
391
- type: 'text',
392
- text: ''
393
- }]
394
- })
395
- }
396
-
397
- /**
398
- * @description 清空内容
399
- */
400
- vm.clear = function () {
401
- vm._maskTap()
402
- vm._edit = undefined
403
- vm.setData({
404
- nodes: [{
405
- name: 'p',
406
- attrs: {},
407
- children: [{
408
- type: 'text',
409
- text: ''
410
- }]
411
- }]
412
- })
413
- }
414
-
415
- /**
416
- * @description 获取编辑后的 html
417
- */
418
- vm.getContent = function () {
419
- let html = '';
420
- // 递归遍历获取
421
- (function traversal (nodes, table) {
422
- for (let i = 0; i < nodes.length; i++) {
423
- let item = nodes[i]
424
- if (item.type === 'text') {
425
- // 编码实体
426
- html += item.text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\n/g, '<br>').replace(/\xa0/g, '&nbsp;')
427
- } else {
428
- // 还原被转换的 svg
429
- if (item.name === 'img' && (item.attrs.src || '').includes('data:image/svg+xml;utf8,')) {
430
- html += item.attrs.src.substr(24).replace(/%23/g, '#').replace('<svg', '<svg style="' + (item.attrs.style || '') + '"')
431
- continue
432
- } else if (item.name === 'video' || item.name === 'audio') {
433
- // 还原 video 和 audio 的 source
434
- if (item.src.length > 1) {
435
- item.children = []
436
- for (let j = 0; j < item.src.length; j++) {
437
- item.children.push({
438
- name: 'source',
439
- attrs: {
440
- src: item.src[j]
441
- }
442
- })
443
- }
444
- } else {
445
- item.attrs.src = item.src[0]
446
- }
447
- } else if (item.name === 'div' && (item.attrs.style || '').includes('overflow:auto') && (item.children[0] || {}).name === 'table') {
448
- // 还原滚动层
449
- item = item.children[0]
450
- }
451
- // 还原 table
452
- if (item.name === 'table') {
453
- table = item.attrs
454
- if ((item.attrs.style || '').includes('display:grid')) {
455
- item.attrs.style = item.attrs.style.split('display:grid')[0]
456
- const children = [{
457
- name: 'tr',
458
- attrs: {},
459
- children: []
460
- }]
461
- for (let j = 0; j < item.children.length; j++) {
462
- item.children[j].attrs.style = item.children[j].attrs.style.replace(/grid-[^;]+;*/g, '')
463
- if (item.children[j].r !== children.length) {
464
- children.push({
465
- name: 'tr',
466
- attrs: {},
467
- children: [item.children[j]]
468
- })
469
- } else {
470
- children[children.length - 1].children.push(item.children[j])
471
- }
472
- }
473
- item.children = children
474
- }
475
- }
476
- html += '<' + item.name
477
- for (const attr in item.attrs) {
478
- let val = item.attrs[attr]
479
- if (!val) continue
480
- // bool 型省略值
481
- if (val === 'T' || val === true) {
482
- html += ' ' + attr
483
- continue
484
- } else if (item.name[0] === 't' && attr === 'style' && table) {
485
- // 取消为了显示 table 添加的 style
486
- val = val.replace(/;*display:table[^;]*/, '')
487
- if (table.border) {
488
- val = val.replace(/border[^;]+;*/g, $ => $.includes('collapse') ? $ : '')
489
- }
490
- if (table.cellpadding) {
491
- val = val.replace(/padding[^;]+;*/g, '')
492
- }
493
- if (!val) continue
494
- }
495
- html += ' ' + attr + '="' + val.replace(/"/g, '&quot;') + '"'
496
- }
497
- html += '>'
498
- if (item.children) {
499
- traversal(item.children, table)
500
- html += '</' + item.name + '>'
501
- }
502
- }
503
- }
504
- })(vm.data.nodes)
505
-
506
- // 其他插件处理
507
- for (let i = vm.plugins.length; i--;) {
508
- if (vm.plugins[i].onGetContent) {
509
- html = vm.plugins[i].onGetContent(html) || html
510
- }
511
- }
512
-
513
- return html
514
- }
515
- }
516
-
517
- Editable.prototype.onUpdate = function (content, config) {
518
- if (this.vm.properties.editable) {
519
- this.vm._maskTap()
520
- config.entities.amp = '&'
521
- if (!this.inserting) {
522
- this.vm._edit = undefined
523
- if (!content) {
524
- setTimeout(() => {
525
- this.vm.setData({
526
- nodes: [{
527
- name: 'p',
528
- attrs: {},
529
- children: [{
530
- type: 'text',
531
- text: ''
532
- }]
533
- }]
534
- })
535
- }, 0)
536
- }
537
- }
538
- }
539
- }
540
-
541
- Editable.prototype.onParse = function (node) {
542
- // 空白单元格可编辑
543
- if (this.vm.properties.editable && (node.name === 'td' || node.name === 'th') && !this.vm.getText(node.children)) {
544
- node.children.push({
545
- type: 'text',
546
- text: ''
547
- })
548
- }
549
- }
550
-
551
- module.exports = Editable