pcm-agents 0.6.11 → 0.6.13

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 (292) hide show
  1. package/dist/cjs/error-event-J_ZWIqWF.js +33 -0
  2. package/dist/cjs/error-event-J_ZWIqWF.js.map +1 -0
  3. package/dist/cjs/{index-CvEfNyEj.js → index-CRlt8Nv6.js} +53 -3
  4. package/dist/cjs/index-CRlt8Nv6.js.map +1 -0
  5. package/dist/cjs/index-WNdOTXnX.js +11068 -0
  6. package/dist/cjs/index-WNdOTXnX.js.map +1 -0
  7. package/dist/cjs/index.cjs.js +2 -2
  8. package/dist/cjs/loader.cjs.js +3 -5
  9. package/dist/cjs/loader.cjs.js.map +1 -1
  10. package/dist/cjs/message.service-DGUsA-FY.js +135 -0
  11. package/dist/cjs/message.service-DGUsA-FY.js.map +1 -0
  12. package/dist/cjs/{pcm-1zhanshi-mnms-modal_17.cjs.entry.js → pcm-1zhanshi-mnms-modal_21.cjs.entry.js} +3276 -216
  13. package/dist/cjs/pcm-1zhanshi-mnms-modal_21.cjs.entry.js.map +1 -0
  14. package/dist/cjs/pcm-agents.cjs.js +4 -6
  15. package/dist/cjs/pcm-agents.cjs.js.map +1 -1
  16. package/dist/cjs/pcm-message.cjs.entry.js +3 -3
  17. package/dist/cjs/pcm-message.cjs.entry.js.map +1 -1
  18. package/dist/cjs/pcm-message.entry.cjs.js.map +1 -1
  19. package/dist/cjs/pcm-mnms-video-modal.cjs.entry.js +8 -8
  20. package/dist/cjs/pcm-mnms-video-modal.cjs.entry.js.map +1 -1
  21. package/dist/cjs/pcm-mnms-video-modal.entry.cjs.js.map +1 -1
  22. package/dist/cjs/pcm-mnms-zp-modal.cjs.entry.js +29 -86
  23. package/dist/cjs/pcm-mnms-zp-modal.cjs.entry.js.map +1 -1
  24. package/dist/cjs/pcm-mnms-zp-modal.entry.cjs.js.map +1 -1
  25. package/dist/cjs/{sentry-reporter-BWFtw_aT.js → sentry-reporter-tpI4WdkE.js} +12 -40
  26. package/dist/cjs/sentry-reporter-tpI4WdkE.js.map +1 -0
  27. package/dist/collection/collection-manifest.json +5 -1
  28. package/dist/collection/components/pcm-1zhanshi-mnms-modal/pcm-1zhanshi-mnms-modal.js.map +1 -1
  29. package/dist/collection/components/pcm-app-chat-modal/pcm-app-chat-modal.css +986 -986
  30. package/dist/collection/components/pcm-app-chat-modal/pcm-app-chat-modal.js +7 -9
  31. package/dist/collection/components/pcm-app-chat-modal/pcm-app-chat-modal.js.map +1 -1
  32. package/dist/collection/components/pcm-button/pcm-button.css +199 -199
  33. package/dist/collection/components/pcm-button/pcm-button.js +6 -6
  34. package/dist/collection/components/pcm-button/pcm-button.js.map +1 -1
  35. package/dist/collection/components/pcm-card/pcm-card.css +259 -259
  36. package/dist/collection/components/pcm-card/pcm-card.js +1 -1
  37. package/dist/collection/components/pcm-card/pcm-card.js.map +1 -1
  38. package/dist/collection/components/pcm-chat-message/pcm-chat-message.css +554 -554
  39. package/dist/collection/components/pcm-chat-message/pcm-chat-message.js +3 -3
  40. package/dist/collection/components/pcm-chat-message/pcm-chat-message.js.map +1 -1
  41. package/dist/collection/components/pcm-drawer/pcm-drawer.css +102 -102
  42. package/dist/collection/components/pcm-drawer/pcm-drawer.js +1 -1
  43. package/dist/collection/components/pcm-drawer/pcm-drawer.js.map +1 -1
  44. package/dist/collection/components/pcm-hr-chat-modal/pcm-hr-chat-modal.css +854 -854
  45. package/dist/collection/components/pcm-hr-chat-modal/pcm-hr-chat-modal.js +5 -7
  46. package/dist/collection/components/pcm-hr-chat-modal/pcm-hr-chat-modal.js.map +1 -1
  47. package/dist/collection/components/pcm-htws-modal/pcm-htws-modal.css +95 -95
  48. package/dist/collection/components/pcm-htws-modal/pcm-htws-modal.js +1 -1
  49. package/dist/collection/components/pcm-htws-modal/pcm-htws-modal.js.map +1 -1
  50. package/dist/collection/components/pcm-hyzj-modal/pcm-hyzj-modal.js +2 -2
  51. package/dist/collection/components/pcm-hyzj-modal/pcm-hyzj-modal.js.map +1 -1
  52. package/dist/collection/components/pcm-jd-modal/pcm-jd-modal.css +312 -312
  53. package/dist/collection/components/pcm-jd-modal/pcm-jd-modal.js +1 -1
  54. package/dist/collection/components/pcm-jd-modal/pcm-jd-modal.js.map +1 -1
  55. package/dist/collection/components/pcm-jlpp-modal/pcm-jlpp-modal.js +2 -2
  56. package/dist/collection/components/pcm-jlpp-modal/pcm-jlpp-modal.js.map +1 -1
  57. package/dist/collection/components/pcm-message/pcm-message.css +64 -64
  58. package/dist/collection/components/pcm-message/pcm-message.js +2 -2
  59. package/dist/collection/components/pcm-message/pcm-message.js.map +1 -1
  60. package/dist/collection/components/pcm-mnct-modal/pcm-mnct-modal.css +1 -1
  61. package/dist/collection/components/pcm-mnct-modal/pcm-mnct-modal.js +2 -2
  62. package/dist/collection/components/pcm-mnct-modal/pcm-mnct-modal.js.map +1 -1
  63. package/dist/collection/components/pcm-mnms-modal/pcm-mnms-modal.js +67 -84
  64. package/dist/collection/components/pcm-mnms-modal/pcm-mnms-modal.js.map +1 -1
  65. package/dist/collection/components/pcm-mnms-video-modal/pcm-mnms-video-modal.js +2 -2
  66. package/dist/collection/components/pcm-mnms-video-modal/pcm-mnms-video-modal.js.map +1 -1
  67. package/dist/collection/components/pcm-mnms-zp-modal/pcm-mnms-zp-modal.js +67 -84
  68. package/dist/collection/components/pcm-mnms-zp-modal/pcm-mnms-zp-modal.js.map +1 -1
  69. package/dist/collection/components/pcm-mobile-input-btn/pcm-mobile-input-btn.css +140 -0
  70. package/dist/collection/components/pcm-mobile-input-btn/pcm-mobile-input-btn.js +307 -0
  71. package/dist/collection/components/pcm-mobile-input-btn/pcm-mobile-input-btn.js.map +1 -0
  72. package/dist/collection/components/pcm-mobile-input-btn/uploadNumberSDK.js +25 -0
  73. package/dist/collection/components/pcm-mobile-input-btn/uploadNumberSDK.js.map +1 -0
  74. package/dist/collection/components/pcm-mobile-upload-btn/pcm-mobile-upload-btn.css +127 -0
  75. package/dist/collection/components/pcm-mobile-upload-btn/pcm-mobile-upload-btn.js +350 -0
  76. package/dist/collection/components/pcm-mobile-upload-btn/pcm-mobile-upload-btn.js.map +1 -0
  77. package/dist/collection/components/pcm-mobile-upload-btn/uploadNumberSDK.js +25 -0
  78. package/dist/collection/components/pcm-mobile-upload-btn/uploadNumberSDK.js.map +1 -0
  79. package/dist/collection/components/pcm-msbg-modal/pcm-msbg-modal.js +2 -2
  80. package/dist/collection/components/pcm-msbg-modal/pcm-msbg-modal.js.map +1 -1
  81. package/dist/collection/components/pcm-qgqjl-modal/pcm-qgqjl-modal.css +1 -1
  82. package/dist/collection/components/pcm-qgqjl-modal/pcm-qgqjl-modal.js +2 -2
  83. package/dist/collection/components/pcm-qgqjl-modal/pcm-qgqjl-modal.js.map +1 -1
  84. package/dist/collection/components/pcm-time-count-down/pcm-time-count-down.css +0 -0
  85. package/dist/collection/components/pcm-time-count-down/pcm-time-count-down.js +106 -0
  86. package/dist/collection/components/pcm-time-count-down/pcm-time-count-down.js.map +1 -0
  87. package/dist/collection/components/pcm-upload/pcm-upload.css +0 -0
  88. package/dist/collection/components/pcm-upload/pcm-upload.js +408 -0
  89. package/dist/collection/components/pcm-upload/pcm-upload.js.map +1 -0
  90. package/dist/collection/components/pcm-zsk-chat-modal/pcm-zsk-chat-modal.css +969 -969
  91. package/dist/collection/components/pcm-zsk-chat-modal/pcm-zsk-chat-modal.js +3 -5
  92. package/dist/collection/components/pcm-zsk-chat-modal/pcm-zsk-chat-modal.js.map +1 -1
  93. package/dist/collection/components/pcm-zygh-modal/pcm-zygh-modal.css +68 -68
  94. package/dist/collection/components/pcm-zygh-modal/pcm-zygh-modal.js +4 -4
  95. package/dist/collection/components/pcm-zygh-modal/pcm-zygh-modal.js.map +1 -1
  96. package/dist/collection/global/global.css +401 -398
  97. package/dist/collection/global/markdown.css +1233 -1233
  98. package/dist/collection/global/message.js.map +1 -1
  99. package/dist/collection/index.js.map +1 -1
  100. package/dist/collection/interfaces/chat.js.map +1 -1
  101. package/dist/collection/interfaces/events.js.map +1 -1
  102. package/dist/collection/services/message.service.js.map +1 -1
  103. package/dist/collection/utils/env.js +3 -0
  104. package/dist/collection/utils/env.js.map +1 -1
  105. package/dist/collection/utils/error-event.js.map +1 -1
  106. package/dist/collection/utils/init.js.map +1 -1
  107. package/dist/collection/utils/sentry-reporter.js.map +1 -1
  108. package/dist/collection/utils/utils.js +48 -24
  109. package/dist/collection/utils/utils.js.map +1 -1
  110. package/dist/components/index.js +3 -5482
  111. package/dist/components/index.js.map +1 -1
  112. package/dist/components/{p-AYWZDCn8.js → p-B0WOTw9J.js} +51 -4
  113. package/dist/components/p-B0WOTw9J.js.map +1 -0
  114. package/dist/components/{p-DUQ46MUh.js → p-BGXbWUJg.js} +3 -3
  115. package/dist/components/{p-DUQ46MUh.js.map → p-BGXbWUJg.js.map} +1 -1
  116. package/dist/{esm/sentry-reporter-BFBS363a.js → components/p-BW3r6Lrf.js} +5 -32
  117. package/dist/components/p-BW3r6Lrf.js.map +1 -0
  118. package/dist/{esm/app-globals-Chti62re.js → components/p-BdiUKin5.js} +9619 -4296
  119. package/dist/components/p-BdiUKin5.js.map +1 -0
  120. package/dist/components/{p-FjtoYPVY.js → p-BywzltXy.js} +10 -9
  121. package/dist/components/p-BywzltXy.js.map +1 -0
  122. package/dist/components/p-C2OsjtRx.js +208 -0
  123. package/dist/components/p-C2OsjtRx.js.map +1 -0
  124. package/dist/components/{p-D2Z8casl.js → p-CuIvbaWY.js} +5 -5
  125. package/dist/components/p-CuIvbaWY.js.map +1 -0
  126. package/dist/components/p-D0ZMoyH8.js +251 -0
  127. package/dist/components/p-D0ZMoyH8.js.map +1 -0
  128. package/dist/components/{p-CjbFHLT7.js → p-De3VHEUn.js} +7 -71
  129. package/dist/components/p-De3VHEUn.js.map +1 -0
  130. package/dist/components/p-Dv8qvK0w.js +2646 -0
  131. package/dist/components/p-Dv8qvK0w.js.map +1 -0
  132. package/dist/components/p-RD3mwuBX.js +226 -0
  133. package/dist/components/p-RD3mwuBX.js.map +1 -0
  134. package/dist/components/p-njngFX_n.js +80 -0
  135. package/dist/components/p-njngFX_n.js.map +1 -0
  136. package/dist/components/pcm-1zhanshi-mnms-modal.js +7 -7
  137. package/dist/components/pcm-1zhanshi-mnms-modal.js.map +1 -1
  138. package/dist/components/pcm-app-chat-modal.js +1 -1
  139. package/dist/components/pcm-button.js +2 -2
  140. package/dist/components/pcm-button.js.map +1 -1
  141. package/dist/components/pcm-card.js +3 -3
  142. package/dist/components/pcm-card.js.map +1 -1
  143. package/dist/components/pcm-chat-message.js +1 -1
  144. package/dist/components/pcm-drawer.js +1 -1
  145. package/dist/components/pcm-hr-chat-modal.js +5 -4
  146. package/dist/components/pcm-hr-chat-modal.js.map +1 -1
  147. package/dist/components/pcm-htws-modal.js +8 -7
  148. package/dist/components/pcm-htws-modal.js.map +1 -1
  149. package/dist/components/pcm-hyzj-modal.js +8 -7
  150. package/dist/components/pcm-hyzj-modal.js.map +1 -1
  151. package/dist/components/pcm-jd-modal.js +8 -7
  152. package/dist/components/pcm-jd-modal.js.map +1 -1
  153. package/dist/components/pcm-jlpp-modal.js +8 -7
  154. package/dist/components/pcm-jlpp-modal.js.map +1 -1
  155. package/dist/components/pcm-message.js +3 -3
  156. package/dist/components/pcm-message.js.map +1 -1
  157. package/dist/components/pcm-mnct-modal.js +8 -7
  158. package/dist/components/pcm-mnct-modal.js.map +1 -1
  159. package/dist/components/pcm-mnms-modal.js +60 -90
  160. package/dist/components/pcm-mnms-modal.js.map +1 -1
  161. package/dist/components/pcm-mnms-video-modal.js +8 -7
  162. package/dist/components/pcm-mnms-video-modal.js.map +1 -1
  163. package/dist/components/pcm-mnms-zp-modal.js +60 -90
  164. package/dist/components/pcm-mnms-zp-modal.js.map +1 -1
  165. package/dist/components/pcm-mobile-input-btn.d.ts +11 -0
  166. package/dist/components/pcm-mobile-input-btn.js +9 -0
  167. package/dist/components/pcm-mobile-input-btn.js.map +1 -0
  168. package/dist/components/pcm-mobile-upload-btn.d.ts +11 -0
  169. package/dist/components/pcm-mobile-upload-btn.js +9 -0
  170. package/dist/components/pcm-mobile-upload-btn.js.map +1 -0
  171. package/dist/components/pcm-msbg-modal.js +8 -7
  172. package/dist/components/pcm-msbg-modal.js.map +1 -1
  173. package/dist/components/pcm-qgqjl-modal.js +8 -7
  174. package/dist/components/pcm-qgqjl-modal.js.map +1 -1
  175. package/dist/components/pcm-time-count-down.d.ts +11 -0
  176. package/dist/components/pcm-time-count-down.js +9 -0
  177. package/dist/components/pcm-time-count-down.js.map +1 -0
  178. package/dist/components/pcm-upload.d.ts +11 -0
  179. package/dist/components/pcm-upload.js +9 -0
  180. package/dist/components/pcm-upload.js.map +1 -0
  181. package/dist/components/pcm-zsk-chat-modal.js +4 -4
  182. package/dist/components/pcm-zsk-chat-modal.js.map +1 -1
  183. package/dist/components/pcm-zygh-modal.js +8 -7
  184. package/dist/components/pcm-zygh-modal.js.map +1 -1
  185. package/dist/esm/error-event-C0FYX2-Z.js +31 -0
  186. package/dist/esm/error-event-C0FYX2-Z.js.map +1 -0
  187. package/dist/esm/{index-GyOE8SlD.js → index-BnNqOUZf.js} +51 -4
  188. package/dist/esm/index-BnNqOUZf.js.map +1 -0
  189. package/dist/esm/index-BuVfV0zo.js +11035 -0
  190. package/dist/esm/index-BuVfV0zo.js.map +1 -0
  191. package/dist/esm/index.js +2 -2
  192. package/dist/esm/loader.js +3 -5
  193. package/dist/esm/loader.js.map +1 -1
  194. package/dist/esm/message.service-DXVhHj6-.js +133 -0
  195. package/dist/esm/message.service-DXVhHj6-.js.map +1 -0
  196. package/dist/esm/{pcm-1zhanshi-mnms-modal_17.entry.js → pcm-1zhanshi-mnms-modal_21.entry.js} +3225 -169
  197. package/dist/esm/pcm-1zhanshi-mnms-modal_21.entry.js.map +1 -0
  198. package/dist/esm/pcm-agents.js +4 -6
  199. package/dist/esm/pcm-agents.js.map +1 -1
  200. package/dist/esm/pcm-message.entry.js +3 -3
  201. package/dist/esm/pcm-message.entry.js.map +1 -1
  202. package/dist/esm/pcm-mnms-video-modal.entry.js +5 -5
  203. package/dist/esm/pcm-mnms-video-modal.entry.js.map +1 -1
  204. package/dist/esm/pcm-mnms-zp-modal.entry.js +28 -85
  205. package/dist/esm/pcm-mnms-zp-modal.entry.js.map +1 -1
  206. package/dist/esm/sentry-reporter-CYzy4_8O.js +70 -0
  207. package/dist/esm/sentry-reporter-CYzy4_8O.js.map +1 -0
  208. package/dist/pcm-agents/index.esm.js +1 -1
  209. package/dist/pcm-agents/loader.esm.js.map +1 -1
  210. package/dist/pcm-agents/p-18a06873.entry.js +2 -0
  211. package/dist/pcm-agents/p-18a06873.entry.js.map +1 -0
  212. package/dist/pcm-agents/p-47e2e1d0.entry.js +2 -0
  213. package/dist/pcm-agents/p-47e2e1d0.entry.js.map +1 -0
  214. package/dist/pcm-agents/{p-3608c0c6.entry.js → p-7a582f00.entry.js} +2 -2
  215. package/dist/pcm-agents/p-7a582f00.entry.js.map +1 -0
  216. package/dist/pcm-agents/p-BhFnI70g.js +2 -0
  217. package/dist/pcm-agents/p-BhFnI70g.js.map +1 -0
  218. package/dist/pcm-agents/p-BuVfV0zo.js +3 -0
  219. package/dist/pcm-agents/p-BuVfV0zo.js.map +1 -0
  220. package/dist/pcm-agents/p-C0FYX2-Z.js +2 -0
  221. package/dist/pcm-agents/p-C0FYX2-Z.js.map +1 -0
  222. package/dist/pcm-agents/p-DXVhHj6-.js +2 -0
  223. package/dist/pcm-agents/p-DXVhHj6-.js.map +1 -0
  224. package/dist/pcm-agents/p-DkeaAFic.js +2 -0
  225. package/dist/pcm-agents/p-DkeaAFic.js.map +1 -0
  226. package/dist/pcm-agents/p-f5f96853.entry.js +245 -0
  227. package/dist/pcm-agents/p-f5f96853.entry.js.map +1 -0
  228. package/dist/pcm-agents/pcm-agents.esm.js +1 -1
  229. package/dist/pcm-agents/pcm-agents.esm.js.map +1 -1
  230. package/dist/pcm-agents/pcm-message.entry.esm.js.map +1 -1
  231. package/dist/pcm-agents/pcm-mnms-video-modal.entry.esm.js.map +1 -1
  232. package/dist/pcm-agents/pcm-mnms-zp-modal.entry.esm.js.map +1 -1
  233. package/dist/store/auth.store.js.map +1 -1
  234. package/dist/store/config.store.js.map +1 -1
  235. package/dist/types/components/pcm-mnms-modal/pcm-mnms-modal.d.ts +9 -4
  236. package/dist/types/components/pcm-mnms-zp-modal/pcm-mnms-zp-modal.d.ts +9 -4
  237. package/dist/types/components/pcm-mobile-input-btn/pcm-mobile-input-btn.d.ts +36 -0
  238. package/dist/types/components/pcm-mobile-input-btn/uploadNumberSDK.d.ts +9 -0
  239. package/dist/types/components/pcm-mobile-upload-btn/pcm-mobile-upload-btn.d.ts +44 -0
  240. package/dist/types/components/pcm-mobile-upload-btn/uploadNumberSDK.d.ts +9 -0
  241. package/dist/types/components/pcm-time-count-down/pcm-time-count-down.d.ts +15 -0
  242. package/dist/types/components/pcm-upload/pcm-upload.d.ts +54 -0
  243. package/dist/types/components/pcm-upload/type.d.ts +4 -0
  244. package/dist/types/components.d.ts +798 -30
  245. package/dist/types/stencil-public-runtime.d.ts +1 -1
  246. package/dist/types/utils/env.d.ts +2 -0
  247. package/dist/types/utils/utils.d.ts +30 -12
  248. package/package.json +70 -69
  249. package/dist/cjs/app-globals-BIO4q6tX.js +0 -5487
  250. package/dist/cjs/app-globals-BIO4q6tX.js.map +0 -1
  251. package/dist/cjs/exports-Dc-pQh4A.js +0 -4087
  252. package/dist/cjs/exports-Dc-pQh4A.js.map +0 -1
  253. package/dist/cjs/index-C_qhED9Z.js +0 -1538
  254. package/dist/cjs/index-C_qhED9Z.js.map +0 -1
  255. package/dist/cjs/index-CvEfNyEj.js.map +0 -1
  256. package/dist/cjs/pcm-1zhanshi-mnms-modal_17.cjs.entry.js.map +0 -1
  257. package/dist/cjs/sentry-reporter-BWFtw_aT.js.map +0 -1
  258. package/dist/components/p-75J0r72D.js +0 -4017
  259. package/dist/components/p-75J0r72D.js.map +0 -1
  260. package/dist/components/p-AYWZDCn8.js.map +0 -1
  261. package/dist/components/p-CR7WLzmM.js +0 -1303
  262. package/dist/components/p-CR7WLzmM.js.map +0 -1
  263. package/dist/components/p-CjbFHLT7.js.map +0 -1
  264. package/dist/components/p-D2Z8casl.js.map +0 -1
  265. package/dist/components/p-FjtoYPVY.js.map +0 -1
  266. package/dist/esm/app-globals-Chti62re.js.map +0 -1
  267. package/dist/esm/exports-Bs-zO1WZ.js +0 -4017
  268. package/dist/esm/exports-Bs-zO1WZ.js.map +0 -1
  269. package/dist/esm/index-Bq0K-WqZ.js +0 -1528
  270. package/dist/esm/index-Bq0K-WqZ.js.map +0 -1
  271. package/dist/esm/index-GyOE8SlD.js.map +0 -1
  272. package/dist/esm/pcm-1zhanshi-mnms-modal_17.entry.js.map +0 -1
  273. package/dist/esm/sentry-reporter-BFBS363a.js.map +0 -1
  274. package/dist/pcm-agents/p-2Gpw8rvH.js +0 -2
  275. package/dist/pcm-agents/p-2Gpw8rvH.js.map +0 -1
  276. package/dist/pcm-agents/p-3608c0c6.entry.js.map +0 -1
  277. package/dist/pcm-agents/p-60d7a0b0.entry.js +0 -2
  278. package/dist/pcm-agents/p-60d7a0b0.entry.js.map +0 -1
  279. package/dist/pcm-agents/p-9e6efc2d.entry.js +0 -2
  280. package/dist/pcm-agents/p-9e6efc2d.entry.js.map +0 -1
  281. package/dist/pcm-agents/p-BUV0S8Cc.js +0 -2
  282. package/dist/pcm-agents/p-BUV0S8Cc.js.map +0 -1
  283. package/dist/pcm-agents/p-Bq0K-WqZ.js +0 -3
  284. package/dist/pcm-agents/p-Bq0K-WqZ.js.map +0 -1
  285. package/dist/pcm-agents/p-Bs-zO1WZ.js +0 -2
  286. package/dist/pcm-agents/p-Bs-zO1WZ.js.map +0 -1
  287. package/dist/pcm-agents/p-CeRTfvY9.js +0 -2
  288. package/dist/pcm-agents/p-CeRTfvY9.js.map +0 -1
  289. package/dist/pcm-agents/p-e6c87a78.entry.js +0 -2
  290. package/dist/pcm-agents/p-e6c87a78.entry.js.map +0 -1
  291. /package/dist/types/{code/agents-sdk → Users/debugksir/Documents/pcm/sdk}/packages/pcm-agents/.stencil/store/auth.store.d.ts +0 -0
  292. /package/dist/types/{code/agents-sdk → Users/debugksir/Documents/pcm/sdk}/packages/pcm-agents/.stencil/store/config.store.d.ts +0 -0
@@ -315,7 +315,7 @@ export class ChatMessageComponent {
315
315
  }
316
316
  }
317
317
  render() {
318
- return (h("div", { key: '5a0c434cc297b60f94398c681145ac8922d0fc70', class: "message-round" }, this.renderUserMessage(), this.renderAssistantMessage()));
318
+ return (h("div", { key: 'c337dbb59e5236ac112554ec34da6355e63d806f', class: "message-round" }, this.renderUserMessage(), this.renderAssistantMessage()));
319
319
  }
320
320
  static get is() { return "pcm-chat-message"; }
321
321
  static get encapsulation() { return "shadow"; }
@@ -465,7 +465,7 @@ export class ChatMessageComponent {
465
465
  "optional": false,
466
466
  "docs": {
467
467
  "tags": [],
468
- "text": "\u9644\u4EF6\u9884\u89C8\u6A21\u5F0F\r\n'drawer': \u5728\u53F3\u4FA7\u62BD\u5C49\u4E2D\u9884\u89C8\r\n'window': \u5728\u65B0\u7A97\u53E3\u4E2D\u6253\u5F00"
468
+ "text": "\u9644\u4EF6\u9884\u89C8\u6A21\u5F0F\n'drawer': \u5728\u53F3\u4FA7\u62BD\u5C49\u4E2D\u9884\u89C8\n'window': \u5728\u65B0\u7A97\u53E3\u4E2D\u6253\u5F00"
469
469
  },
470
470
  "getter": false,
471
471
  "setter": false,
@@ -517,7 +517,7 @@ export class ChatMessageComponent {
517
517
  "text": ""
518
518
  },
519
519
  "complexType": {
520
- "original": "{\r\n url?: string,\r\n fileName: string,\r\n content?: string,\r\n contentType: 'file' | 'markdown' | 'text'\r\n }",
520
+ "original": "{\n url?: string,\n fileName: string,\n content?: string,\n contentType: 'file' | 'markdown' | 'text'\n }",
521
521
  "resolved": "{ url?: string; fileName: string; content?: string; contentType: \"text\" | \"file\" | \"markdown\"; }",
522
522
  "references": {}
523
523
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pcm-chat-message.js","sourceRoot":"","sources":["../../../../src/components/pcm-chat-message/pcm-chat-message.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, h, Element, Event, EventEmitter, State } from '@stencil/core';\r\nimport { marked } from 'marked';\r\nimport extendedTables from 'marked-extended-tables';\r\nimport { ChatMessage } from '../../interfaces/chat';\r\nimport { sendHttpRequest, getCosPresignedUrl, getCosPreviewUrl } from '../../utils/utils';\r\nimport { ErrorEventBus } from '../../utils/error-event';\r\nimport { SentryReporter } from '../../utils/sentry-reporter';\r\n\r\n@Component({\r\n tag: 'pcm-chat-message',\r\n styleUrls: ['../../global/markdown.css', 'pcm-chat-message.css'],\r\n shadow: true,\r\n})\r\nexport class ChatMessageComponent {\r\n /**\r\n * 消息数据\r\n */\r\n @Prop() message: ChatMessage;\r\n\r\n /**\r\n * 是否显示点赞点踩按钮 \r\n */\r\n @Prop() showFeedbackButtons: boolean = true;\r\n\r\n /**\r\n * 机器人ID\r\n */\r\n @Prop() botId?: string;\r\n\r\n /**\r\n * 消息变更事件\r\n */\r\n @Event() messageChange: EventEmitter<Partial<ChatMessage>>;\r\n\r\n // 使用 @Element 装饰器获取组件的 host 元素\r\n @Element() hostElement: HTMLElement;\r\n\r\n /**\r\n * 点赞点踩状态\r\n */\r\n @State() feedbackStatus: 'like' | 'dislike' | null = null;\r\n\r\n /**\r\n * 视频播放URLs缓存\r\n */\r\n @State() videoUrls: { [key: string]: string } = {};\r\n\r\n /**\r\n * 用户头像URL\r\n */\r\n @Prop() userAvatar?: string;\r\n\r\n /**\r\n * 助手头像URL\r\n */\r\n @Prop() assistantAvatar?: string;\r\n\r\n /**\r\n * 是否显示复制按钮\r\n */\r\n @Prop() showCopyButton: boolean = true;\r\n\r\n /**\r\n * 附件预览模式\r\n * 'drawer': 在右侧抽屉中预览\r\n * 'window': 在新窗口中打开\r\n */\r\n @Prop() filePreviewMode: 'drawer' | 'window' = 'window';\r\n\r\n @Event() filePreviewRequest: EventEmitter<{\r\n url?: string,\r\n fileName: string,\r\n content?: string,\r\n contentType: 'file' | 'markdown' | 'text'\r\n }>;\r\n\r\n /**\r\n * 重试事件\r\n */\r\n @Event() retryRequest: EventEmitter<string>; // 传递消息ID\r\n\r\n constructor() {\r\n // 配置 marked 选项\r\n marked.use(extendedTables);\r\n marked.setOptions({\r\n breaks: true,\r\n gfm: true\r\n });\r\n }\r\n\r\n /**\r\n * 组件加载时检查消息是否已有反馈状态\r\n */\r\n componentWillLoad() {\r\n\r\n // 如果消息已经有反馈状态,初始化feedbackStatus\r\n if (this.message && this.message.feedback) {\r\n this.feedbackStatus = this.message.feedback.rating as 'like' | 'dislike' | null;\r\n }\r\n }\r\n\r\n // 复制消息内容到剪贴板\r\n private copyMessageContent() {\r\n if (this.message.answer) {\r\n navigator.clipboard.writeText(this.message.answer)\r\n .then(() => {\r\n // 可以添加复制成功的提示\r\n console.log('内容已复制到剪贴板');\r\n alert('内容已复制到剪贴板');\r\n })\r\n .catch(err => {\r\n // 使用全局事件总线发送错误\r\n ErrorEventBus.emitError({\r\n error: err,\r\n message: '复制内容失败',\r\n });\r\n console.error('复制失败:', err);\r\n });\r\n }\r\n }\r\n\r\n // 渲染用户消息部分\r\n private renderUserMessage() {\r\n if (!this.message?.query?.trim()) return null;\r\n const htmlContent = this.message.query ? marked(this.message.query) : '';\r\n\r\n return (\r\n <div class={{ 'user-message-container': true }}>\r\n {this.userAvatar && (\r\n <div class=\"avatar user-avatar\">\r\n <img src={this.userAvatar} alt=\"用户头像\" />\r\n </div>\r\n )}\r\n <div class=\"message-bubble user-message\">\r\n <div innerHTML={htmlContent}></div>\r\n {this.renderInputs()}\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n // 渲染助手消息部分\r\n private renderAssistantMessage() {\r\n if (!this.message.answer && !this.message.isStreaming) return null;\r\n\r\n // 只有在开始流式输出且还没有内容时才显示loading\r\n const showLoading = this.message.isStreaming && !this.message.answer;\r\n const htmlContent = this.message.answer ? marked(this.message.answer) : '';\r\n\r\n return (\r\n <div class={{ 'assistant-message-container': true }}>\r\n {this.assistantAvatar && (\r\n <div class=\"avatar assistant-avatar\">\r\n <img src={this.assistantAvatar} alt=\"助手头像\" />\r\n </div>\r\n )}\r\n <div class=\"message-bubble \">\r\n <div class=\"assistant-message\">\r\n <div\r\n class=\"markdown-content markdown-body\"\r\n innerHTML={showLoading ?\r\n `请稍等...` :\r\n htmlContent\r\n }\r\n ></div>\r\n </div>\r\n {!showLoading && this.message.answer && !this.message.isStreaming && (\r\n <div class=\"message-actions\">\r\n {/* 根据父组件传入的属性决定是否显示重试按钮 */}\r\n {this.message.showRetryButton && (\r\n <button class=\"action-button retry-button\" onClick={() => this.handleRetry()} title=\"重试\">\r\n <span class=\"button-icon\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <polyline points=\"23 4 23 10 17 10\"></polyline>\r\n <polyline points=\"1 20 1 14 7 14\"></polyline>\r\n <path d=\"M20.49 9A9 9 0 0 0 5.64 5.64L1 10m22 4l-4.64 4.36A9 9 0 0 1 3.51 15\"></path>\r\n </svg>\r\n </span>\r\n 重试\r\n </button>\r\n )}\r\n\r\n {this.showCopyButton && (\r\n <button class=\"action-button\" onClick={() => this.copyMessageContent()} title=\"复制内容\">\r\n <span class=\"button-icon\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\"></rect>\r\n <path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"></path>\r\n </svg>\r\n </span>\r\n 复制\r\n </button>\r\n )}\r\n {this.showFeedbackButtons && (\r\n <>\r\n <button\r\n class={`action-button icon-only ${this.feedbackStatus === 'like' ? 'active' : ''}`}\r\n title=\"赞\"\r\n onClick={() => this.handleLike()}\r\n >\r\n <span class=\"button-icon\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3\"></path>\r\n </svg>\r\n </span>\r\n </button>\r\n <button\r\n class={`action-button icon-only ${this.feedbackStatus === 'dislike' ? 'active' : ''}`}\r\n title=\"踩\"\r\n onClick={() => this.handleDislike()}\r\n >\r\n <span class=\"button-icon\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17\"></path>\r\n </svg>\r\n </span>\r\n </button>\r\n </>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n private getFileName(fileUrl: string): string {\r\n const parts = fileUrl.split('/');\r\n return parts[parts.length - 1];\r\n }\r\n\r\n\r\n // 添加处理文本内容点击的方法\r\n private handleContentClick(title: string, content: string, contentType: 'markdown' | 'text' = 'text') {\r\n this.filePreviewRequest.emit({\r\n fileName: title,\r\n content: content,\r\n contentType: contentType\r\n });\r\n }\r\n\r\n // 加载视频播放URL\r\n private async loadVideoUrl(cosKey: string) {\r\n if (this.videoUrls[cosKey]) {\r\n return; // 已经加载过了\r\n }\r\n\r\n const videoUrl = await getCosPresignedUrl(cosKey);\r\n if (videoUrl) {\r\n this.videoUrls = {\r\n ...this.videoUrls,\r\n [cosKey]: videoUrl\r\n };\r\n }\r\n }\r\n\r\n // 修改处理文件点击的方法\r\n private async handleFileClick(fileUrl: string, fileName: string) {\r\n const previewUrl = await getCosPreviewUrl(fileUrl);\r\n if (previewUrl) {\r\n if (this.filePreviewMode === 'drawer') {\r\n this.filePreviewRequest.emit({\r\n url: previewUrl,\r\n fileName: fileName,\r\n contentType: 'file'\r\n });\r\n } else {\r\n window.open(previewUrl, '_blank');\r\n }\r\n } else {\r\n console.error('无法获取预览URL');\r\n SentryReporter.captureError('无法获取预览URL', {\r\n action: 'handleFileClick',\r\n component: 'pcm-chat-message',\r\n title: '无法获取预览URL'\r\n });\r\n ErrorEventBus.emitError({\r\n error: '无法获取预览URL',\r\n message: '无法获取预览URL',\r\n });\r\n }\r\n }\r\n\r\n // 修改渲染文件项的部分\r\n private renderFileItem(fileName: string, fileUrl: string, index: number) {\r\n return (\r\n <div key={index} class=\"file-card\" onClick={() => this.handleFileClick(fileUrl, fileName)}>\r\n <div class=\"file-card-icon\" style={{ background: 'linear-gradient(45deg, #ff5600, #ff8344)' }}>\r\n <img src=\"https://pub.pincaimao.com/static/web/images/home/i_file.png\"></img>\r\n </div>\r\n <div class=\"file-card-content\">\r\n <div class=\"file-card-type\">[附件信息]</div>\r\n <div class=\"file-card-name\">{fileName}</div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n // 修改渲染输入数据的方法\r\n private renderInputs() {\r\n if (!this.message.inputs) return null;\r\n\r\n // 检查是否所有字段都为 null、undefined 或空字符串\r\n const hasValidInput = Object.keys(this.message.inputs).some(key => {\r\n const value = this.message.inputs[key];\r\n return value !== null && value !== undefined && value !== '' &&\r\n !key.startsWith('hide_') && key !== 'answer';\r\n });\r\n\r\n // 如果没有有效输入,返回 null\r\n if (!hasValidInput) return null;\r\n\r\n return (\r\n <div class=\"inputs-container\">\r\n {Object.keys(this.message.inputs).map((key, index) => {\r\n const value = this.message.inputs[key];\r\n if (value && !key.startsWith('hide_') && key !== 'answer') {\r\n if (key === 'video_url') {\r\n // 渲染视频播放区域\r\n const cosKey = value;\r\n const videoUrl = this.videoUrls[cosKey];\r\n\r\n // 如果还没有加载视频URL,异步加载\r\n if (!videoUrl) {\r\n this.loadVideoUrl(cosKey);\r\n }\r\n\r\n return (\r\n <div class=\"video-inputs-container\">\r\n <div key={index} class=\"video-container\">\r\n {videoUrl ? (\r\n <video\r\n key={cosKey}\r\n controls\r\n preload=\"metadata\"\r\n onLoadedMetaData={(e) => {\r\n // 确保进度条正确显示\r\n const video = e.target as HTMLVideoElement;\r\n video.currentTime = 0.01;\r\n }}\r\n controlsList=\"nodownload\"\r\n style={{\r\n width: '250px',\r\n height: 'auto',\r\n maxHeight: '250px',\r\n borderRadius: '8px',\r\n marginTop: '8px'\r\n }}\r\n >\r\n <source src={videoUrl} type=\"video/webm\" />\r\n <source src={videoUrl} type=\"video/mp4\" />\r\n <source src={videoUrl} type=\"video/ogg\" />\r\n 您的浏览器不支持视频播放。\r\n </video>\r\n ) : (\r\n <div class=\"video-loading\">\r\n <div class=\"loading-spinner\"></div>\r\n <span>正在加载视频...</span>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n } else if (key === 'file_url') {\r\n // 优先使用 file_name 属性,如果不存在则从 file_url 提取文件名\r\n const fileName = this.message.inputs.file_name || this.getFileName(value);\r\n return this.renderFileItem(fileName, value, index);\r\n } else if (key === 'file_urls') {\r\n // 始终将 file_urls 视为逗号分隔的字符串\r\n const fileList = typeof value === 'string' ? value.split(',') : [value.toString()];\r\n\r\n // 同样将 file_names 视为逗号分隔的字符串\r\n const fileNames = this.message.inputs.file_names ?\r\n (typeof this.message.inputs.file_names === 'string' ?\r\n this.message.inputs.file_names.split(',') :\r\n [this.message.inputs.file_names.toString()]) :\r\n [];\r\n\r\n return (\r\n <div key={index}>\r\n {fileList.map((fileUrl, fileIndex) => {\r\n // 使用对应的文件名,如果不存在则从URL提取\r\n const fileName = fileNames[fileIndex] || this.getFileName(fileUrl);\r\n return this.renderFileItem(fileName, fileUrl, fileIndex);\r\n })}\r\n </div>\r\n );\r\n } else if (key === 'job_info' || key === 'rule') {\r\n const title = key === 'job_info' ? '职位信息' : '评估规则';\r\n const content = typeof value === 'string' ? value : JSON.stringify(value, null, 2);\r\n\r\n return (\r\n <div key={index} class=\"file-card\" onClick={() => this.handleContentClick(title, content)}>\r\n <div class=\"file-card-icon\" style={{ background: '#0d75fb' }}>\r\n <img src=\"https://pub.pincaimao.com/static/web/images/home/i_position.png\"></img>\r\n </div>\r\n <div class=\"file-card-content\">\r\n <div class=\"file-card-type\">[{title}]</div>\r\n <div class=\"file-card-name\">{content.length > 50 ? content.substring(0, 50) + '...' : content}</div>\r\n </div>\r\n </div>\r\n );\r\n } else if (key === 'input') {\r\n return <div key={index} class=\"input-metadata\">{`${value}`}</div>;\r\n }\r\n }\r\n return null;\r\n })}\r\n </div>\r\n );\r\n }\r\n\r\n /**\r\n * 处理点赞操作\r\n */\r\n private async handleLike() {\r\n // 如果当前已经是点赞状态,则取消点赞\r\n const newStatus = this.feedbackStatus === 'like' ? null : 'like';\r\n\r\n // 发送请求到服务器\r\n await this.submitFeedback(newStatus);\r\n }\r\n\r\n /**\r\n * 处理点踩操作\r\n */\r\n private async handleDislike() {\r\n // 如果当前已经是点踩状态,则取消点踩\r\n const newStatus = this.feedbackStatus === 'dislike' ? null : 'dislike';\r\n\r\n // 发送请求到服务器\r\n await this.submitFeedback(newStatus);\r\n }\r\n\r\n /**\r\n * 提交反馈到服务器\r\n */\r\n private async submitFeedback(rating: 'like' | 'dislike' | null) {\r\n if (!this.message.id) {\r\n console.error('消息ID不存在,无法提交反馈');\r\n SentryReporter.captureError('消息ID不存在,无法提交反馈', {\r\n action: 'submitFeedback',\r\n component: 'pcm-chat-message',\r\n title: '无法提交反馈'\r\n });\r\n ErrorEventBus.emitError({\r\n error: '消息ID不存在,无法提交反馈',\r\n message: '消息ID不存在,无法提交反馈',\r\n });\r\n return;\r\n }\r\n\r\n try {\r\n const result = await sendHttpRequest({\r\n url: `/sdk/v1/chat/messages/${this.message.id}/feedbacks`,\r\n method: 'POST',\r\n data: {\r\n rating,\r\n bot_id: this.botId,\r\n content: '',\r\n }\r\n });\r\n if (result.success) {\r\n // 更新本地状态\r\n this.feedbackStatus = rating;\r\n\r\n // 更新消息对象中的反馈状态,创建新对象以确保引用变化\r\n if (this.message && this.message.feedback) {\r\n this.message = {\r\n ...this.message,\r\n feedback: {\r\n ...this.message.feedback,\r\n rating\r\n }\r\n };\r\n }\r\n\r\n console.log('反馈提交成功');\r\n } else {\r\n console.error('反馈提交失败:', result.message);\r\n }\r\n } catch (error) {\r\n console.error('提交反馈时发生错误:', error);\r\n SentryReporter.captureError(error, {\r\n action: 'submitFeedback',\r\n component: 'pcm-chat-message',\r\n title: '提交反馈失败'\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * 处理重试操作\r\n */\r\n private handleRetry() {\r\n if (this.message.id) {\r\n this.retryRequest.emit(this.message.id);\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <div class=\"message-round\">\r\n {this.renderUserMessage()}\r\n {this.renderAssistantMessage()}\r\n </div>\r\n );\r\n }\r\n} "]}
1
+ {"version":3,"file":"pcm-chat-message.js","sourceRoot":"","sources":["../../../../src/components/pcm-chat-message/pcm-chat-message.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, h, Element, Event, EventEmitter, State } from '@stencil/core';\nimport { marked } from 'marked';\nimport extendedTables from 'marked-extended-tables';\nimport { ChatMessage } from '../../interfaces/chat';\nimport { sendHttpRequest, getCosPresignedUrl, getCosPreviewUrl } from '../../utils/utils';\nimport { ErrorEventBus } from '../../utils/error-event';\nimport { SentryReporter } from '../../utils/sentry-reporter';\n\n@Component({\n tag: 'pcm-chat-message',\n styleUrls: ['../../global/markdown.css', 'pcm-chat-message.css'],\n shadow: true,\n})\nexport class ChatMessageComponent {\n /**\n * 消息数据\n */\n @Prop() message: ChatMessage;\n\n /**\n * 是否显示点赞点踩按钮 \n */\n @Prop() showFeedbackButtons: boolean = true;\n\n /**\n * 机器人ID\n */\n @Prop() botId?: string;\n\n /**\n * 消息变更事件\n */\n @Event() messageChange: EventEmitter<Partial<ChatMessage>>;\n\n // 使用 @Element 装饰器获取组件的 host 元素\n @Element() hostElement: HTMLElement;\n\n /**\n * 点赞点踩状态\n */\n @State() feedbackStatus: 'like' | 'dislike' | null = null;\n\n /**\n * 视频播放URLs缓存\n */\n @State() videoUrls: { [key: string]: string } = {};\n\n /**\n * 用户头像URL\n */\n @Prop() userAvatar?: string;\n\n /**\n * 助手头像URL\n */\n @Prop() assistantAvatar?: string;\n\n /**\n * 是否显示复制按钮\n */\n @Prop() showCopyButton: boolean = true;\n\n /**\n * 附件预览模式\n * 'drawer': 在右侧抽屉中预览\n * 'window': 在新窗口中打开\n */\n @Prop() filePreviewMode: 'drawer' | 'window' = 'window';\n\n @Event() filePreviewRequest: EventEmitter<{\n url?: string,\n fileName: string,\n content?: string,\n contentType: 'file' | 'markdown' | 'text'\n }>;\n\n /**\n * 重试事件\n */\n @Event() retryRequest: EventEmitter<string>; // 传递消息ID\n\n constructor() {\n // 配置 marked 选项\n marked.use(extendedTables);\n marked.setOptions({\n breaks: true,\n gfm: true\n });\n }\n\n /**\n * 组件加载时检查消息是否已有反馈状态\n */\n componentWillLoad() {\n\n // 如果消息已经有反馈状态,初始化feedbackStatus\n if (this.message && this.message.feedback) {\n this.feedbackStatus = this.message.feedback.rating as 'like' | 'dislike' | null;\n }\n }\n\n // 复制消息内容到剪贴板\n private copyMessageContent() {\n if (this.message.answer) {\n navigator.clipboard.writeText(this.message.answer)\n .then(() => {\n // 可以添加复制成功的提示\n console.log('内容已复制到剪贴板');\n alert('内容已复制到剪贴板');\n })\n .catch(err => {\n // 使用全局事件总线发送错误\n ErrorEventBus.emitError({\n error: err,\n message: '复制内容失败',\n });\n console.error('复制失败:', err);\n });\n }\n }\n\n // 渲染用户消息部分\n private renderUserMessage() {\n if (!this.message?.query?.trim()) return null;\n const htmlContent = this.message.query ? marked(this.message.query) : '';\n\n return (\n <div class={{ 'user-message-container': true }}>\n {this.userAvatar && (\n <div class=\"avatar user-avatar\">\n <img src={this.userAvatar} alt=\"用户头像\" />\n </div>\n )}\n <div class=\"message-bubble user-message\">\n <div innerHTML={htmlContent}></div>\n {this.renderInputs()}\n </div>\n </div>\n );\n }\n\n // 渲染助手消息部分\n private renderAssistantMessage() {\n if (!this.message.answer && !this.message.isStreaming) return null;\n\n // 只有在开始流式输出且还没有内容时才显示loading\n const showLoading = this.message.isStreaming && !this.message.answer;\n const htmlContent = this.message.answer ? marked(this.message.answer) : '';\n\n return (\n <div class={{ 'assistant-message-container': true }}>\n {this.assistantAvatar && (\n <div class=\"avatar assistant-avatar\">\n <img src={this.assistantAvatar} alt=\"助手头像\" />\n </div>\n )}\n <div class=\"message-bubble \">\n <div class=\"assistant-message\">\n <div\n class=\"markdown-content markdown-body\"\n innerHTML={showLoading ?\n `请稍等...` :\n htmlContent\n }\n ></div>\n </div>\n {!showLoading && this.message.answer && !this.message.isStreaming && (\n <div class=\"message-actions\">\n {/* 根据父组件传入的属性决定是否显示重试按钮 */}\n {this.message.showRetryButton && (\n <button class=\"action-button retry-button\" onClick={() => this.handleRetry()} title=\"重试\">\n <span class=\"button-icon\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <polyline points=\"23 4 23 10 17 10\"></polyline>\n <polyline points=\"1 20 1 14 7 14\"></polyline>\n <path d=\"M20.49 9A9 9 0 0 0 5.64 5.64L1 10m22 4l-4.64 4.36A9 9 0 0 1 3.51 15\"></path>\n </svg>\n </span>\n 重试\n </button>\n )}\n\n {this.showCopyButton && (\n <button class=\"action-button\" onClick={() => this.copyMessageContent()} title=\"复制内容\">\n <span class=\"button-icon\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\"></rect>\n <path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"></path>\n </svg>\n </span>\n 复制\n </button>\n )}\n {this.showFeedbackButtons && (\n <>\n <button\n class={`action-button icon-only ${this.feedbackStatus === 'like' ? 'active' : ''}`}\n title=\"赞\"\n onClick={() => this.handleLike()}\n >\n <span class=\"button-icon\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3\"></path>\n </svg>\n </span>\n </button>\n <button\n class={`action-button icon-only ${this.feedbackStatus === 'dislike' ? 'active' : ''}`}\n title=\"踩\"\n onClick={() => this.handleDislike()}\n >\n <span class=\"button-icon\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17\"></path>\n </svg>\n </span>\n </button>\n </>\n )}\n </div>\n )}\n </div>\n </div>\n );\n }\n\n private getFileName(fileUrl: string): string {\n const parts = fileUrl.split('/');\n return parts[parts.length - 1];\n }\n\n\n // 添加处理文本内容点击的方法\n private handleContentClick(title: string, content: string, contentType: 'markdown' | 'text' = 'text') {\n this.filePreviewRequest.emit({\n fileName: title,\n content: content,\n contentType: contentType\n });\n }\n\n // 加载视频播放URL\n private async loadVideoUrl(cosKey: string) {\n if (this.videoUrls[cosKey]) {\n return; // 已经加载过了\n }\n\n const videoUrl = await getCosPresignedUrl(cosKey);\n if (videoUrl) {\n this.videoUrls = {\n ...this.videoUrls,\n [cosKey]: videoUrl\n };\n }\n }\n\n // 修改处理文件点击的方法\n private async handleFileClick(fileUrl: string, fileName: string) {\n const previewUrl = await getCosPreviewUrl(fileUrl);\n if (previewUrl) {\n if (this.filePreviewMode === 'drawer') {\n this.filePreviewRequest.emit({\n url: previewUrl,\n fileName: fileName,\n contentType: 'file'\n });\n } else {\n window.open(previewUrl, '_blank');\n }\n } else {\n console.error('无法获取预览URL');\n SentryReporter.captureError('无法获取预览URL', {\n action: 'handleFileClick',\n component: 'pcm-chat-message',\n title: '无法获取预览URL'\n });\n ErrorEventBus.emitError({\n error: '无法获取预览URL',\n message: '无法获取预览URL',\n });\n }\n }\n\n // 修改渲染文件项的部分\n private renderFileItem(fileName: string, fileUrl: string, index: number) {\n return (\n <div key={index} class=\"file-card\" onClick={() => this.handleFileClick(fileUrl, fileName)}>\n <div class=\"file-card-icon\" style={{ background: 'linear-gradient(45deg, #ff5600, #ff8344)' }}>\n <img src=\"https://pub.pincaimao.com/static/web/images/home/i_file.png\"></img>\n </div>\n <div class=\"file-card-content\">\n <div class=\"file-card-type\">[附件信息]</div>\n <div class=\"file-card-name\">{fileName}</div>\n </div>\n </div>\n );\n }\n\n // 修改渲染输入数据的方法\n private renderInputs() {\n if (!this.message.inputs) return null;\n\n // 检查是否所有字段都为 null、undefined 或空字符串\n const hasValidInput = Object.keys(this.message.inputs).some(key => {\n const value = this.message.inputs[key];\n return value !== null && value !== undefined && value !== '' &&\n !key.startsWith('hide_') && key !== 'answer';\n });\n\n // 如果没有有效输入,返回 null\n if (!hasValidInput) return null;\n\n return (\n <div class=\"inputs-container\">\n {Object.keys(this.message.inputs).map((key, index) => {\n const value = this.message.inputs[key];\n if (value && !key.startsWith('hide_') && key !== 'answer') {\n if (key === 'video_url') {\n // 渲染视频播放区域\n const cosKey = value;\n const videoUrl = this.videoUrls[cosKey];\n\n // 如果还没有加载视频URL,异步加载\n if (!videoUrl) {\n this.loadVideoUrl(cosKey);\n }\n\n return (\n <div class=\"video-inputs-container\">\n <div key={index} class=\"video-container\">\n {videoUrl ? (\n <video\n key={cosKey}\n controls\n preload=\"metadata\"\n onLoadedMetaData={(e) => {\n // 确保进度条正确显示\n const video = e.target as HTMLVideoElement;\n video.currentTime = 0.01;\n }}\n controlsList=\"nodownload\"\n style={{\n width: '250px',\n height: 'auto',\n maxHeight: '250px',\n borderRadius: '8px',\n marginTop: '8px'\n }}\n >\n <source src={videoUrl} type=\"video/webm\" />\n <source src={videoUrl} type=\"video/mp4\" />\n <source src={videoUrl} type=\"video/ogg\" />\n 您的浏览器不支持视频播放。\n </video>\n ) : (\n <div class=\"video-loading\">\n <div class=\"loading-spinner\"></div>\n <span>正在加载视频...</span>\n </div>\n )}\n </div>\n </div>\n );\n } else if (key === 'file_url') {\n // 优先使用 file_name 属性,如果不存在则从 file_url 提取文件名\n const fileName = this.message.inputs.file_name || this.getFileName(value);\n return this.renderFileItem(fileName, value, index);\n } else if (key === 'file_urls') {\n // 始终将 file_urls 视为逗号分隔的字符串\n const fileList = typeof value === 'string' ? value.split(',') : [value.toString()];\n\n // 同样将 file_names 视为逗号分隔的字符串\n const fileNames = this.message.inputs.file_names ?\n (typeof this.message.inputs.file_names === 'string' ?\n this.message.inputs.file_names.split(',') :\n [this.message.inputs.file_names.toString()]) :\n [];\n\n return (\n <div key={index}>\n {fileList.map((fileUrl, fileIndex) => {\n // 使用对应的文件名,如果不存在则从URL提取\n const fileName = fileNames[fileIndex] || this.getFileName(fileUrl);\n return this.renderFileItem(fileName, fileUrl, fileIndex);\n })}\n </div>\n );\n } else if (key === 'job_info' || key === 'rule') {\n const title = key === 'job_info' ? '职位信息' : '评估规则';\n const content = typeof value === 'string' ? value : JSON.stringify(value, null, 2);\n\n return (\n <div key={index} class=\"file-card\" onClick={() => this.handleContentClick(title, content)}>\n <div class=\"file-card-icon\" style={{ background: '#0d75fb' }}>\n <img src=\"https://pub.pincaimao.com/static/web/images/home/i_position.png\"></img>\n </div>\n <div class=\"file-card-content\">\n <div class=\"file-card-type\">[{title}]</div>\n <div class=\"file-card-name\">{content.length > 50 ? content.substring(0, 50) + '...' : content}</div>\n </div>\n </div>\n );\n } else if (key === 'input') {\n return <div key={index} class=\"input-metadata\">{`${value}`}</div>;\n }\n }\n return null;\n })}\n </div>\n );\n }\n\n /**\n * 处理点赞操作\n */\n private async handleLike() {\n // 如果当前已经是点赞状态,则取消点赞\n const newStatus = this.feedbackStatus === 'like' ? null : 'like';\n\n // 发送请求到服务器\n await this.submitFeedback(newStatus);\n }\n\n /**\n * 处理点踩操作\n */\n private async handleDislike() {\n // 如果当前已经是点踩状态,则取消点踩\n const newStatus = this.feedbackStatus === 'dislike' ? null : 'dislike';\n\n // 发送请求到服务器\n await this.submitFeedback(newStatus);\n }\n\n /**\n * 提交反馈到服务器\n */\n private async submitFeedback(rating: 'like' | 'dislike' | null) {\n if (!this.message.id) {\n console.error('消息ID不存在,无法提交反馈');\n SentryReporter.captureError('消息ID不存在,无法提交反馈', {\n action: 'submitFeedback',\n component: 'pcm-chat-message',\n title: '无法提交反馈'\n });\n ErrorEventBus.emitError({\n error: '消息ID不存在,无法提交反馈',\n message: '消息ID不存在,无法提交反馈',\n });\n return;\n }\n\n try {\n const result = await sendHttpRequest({\n url: `/sdk/v1/chat/messages/${this.message.id}/feedbacks`,\n method: 'POST',\n data: {\n rating,\n bot_id: this.botId,\n content: '',\n }\n });\n if (result.success) {\n // 更新本地状态\n this.feedbackStatus = rating;\n\n // 更新消息对象中的反馈状态,创建新对象以确保引用变化\n if (this.message && this.message.feedback) {\n this.message = {\n ...this.message,\n feedback: {\n ...this.message.feedback,\n rating\n }\n };\n }\n\n console.log('反馈提交成功');\n } else {\n console.error('反馈提交失败:', result.message);\n }\n } catch (error) {\n console.error('提交反馈时发生错误:', error);\n SentryReporter.captureError(error, {\n action: 'submitFeedback',\n component: 'pcm-chat-message',\n title: '提交反馈失败'\n });\n }\n }\n\n /**\n * 处理重试操作\n */\n private handleRetry() {\n if (this.message.id) {\n this.retryRequest.emit(this.message.id);\n }\n }\n\n render() {\n return (\n <div class=\"message-round\">\n {this.renderUserMessage()}\n {this.renderAssistantMessage()}\n </div>\n );\n }\n} "]}
@@ -1,103 +1,103 @@
1
- :host {
2
- display: block;
3
- }
4
-
5
- .drawer-container {
6
- position: fixed;
7
- top: 0;
8
- left: 0;
9
- width: 0;
10
- height: 0;
11
- overflow: visible;
12
- }
13
-
14
- .drawer-mask {
15
- position: fixed;
16
- top: 0;
17
- left: 0;
18
- right: 0;
19
- bottom: 0;
20
- background-color: rgba(0, 0, 0, 0.45);
21
- opacity: 0;
22
- visibility: hidden;
23
- transition: opacity 0.3s ease, visibility 0.3s ease;
24
- }
25
-
26
- .mask-visible {
27
- opacity: 1;
28
- visibility: visible;
29
- }
30
-
31
- .drawer-content {
32
- position: fixed;
33
- top: 0;
34
- right: 0;
35
- bottom: 0;
36
- display: flex;
37
- flex-direction: column;
38
- background-color: #fff;
39
- box-shadow: -2px 0 8px rgba(0, 0, 0, 0.15);
40
- transform: translateX(100%);
41
- transition: transform 0.3s cubic-bezier(0.23, 1, 0.32, 1);
42
- }
43
-
44
- .drawer-content-visible {
45
- transform: translateX(0);
46
- }
47
-
48
- .drawer-header {
49
- display: flex;
50
- align-items: center;
51
- justify-content: space-between;
52
- padding: 16px 24px;
53
- color: rgba(0, 0, 0, 0.85);
54
- border-bottom: 1px solid #f0f0f0;
55
- }
56
-
57
- .drawer-title {
58
- flex: 1;
59
- margin: 0;
60
- font-size: 16px;
61
- line-height: 22px;
62
- font-weight: 500;
63
- color: rgba(0, 0, 0, 0.85);
64
- overflow: hidden;
65
- text-overflow: ellipsis;
66
- white-space: nowrap;
67
- }
68
-
69
- .drawer-close {
70
- padding: 0;
71
- background: transparent;
72
- border: none;
73
- outline: none;
74
- cursor: pointer;
75
- font-size: 16px;
76
- color: rgba(0, 0, 0, 0.45);
77
- transition: color 0.3s;
78
- }
79
-
80
- .drawer-close:hover {
81
- color: rgba(0, 0, 0, 0.85);
82
- }
83
-
84
- .drawer-body {
85
- flex: 1;
86
- padding: 24px;
87
- overflow: auto;
88
- }
89
-
90
- /* 响应式样式 */
91
- @media (max-width: 768px) {
92
- .drawer-content {
93
- width: 100% !important;
94
- }
95
-
96
- .drawer-header {
97
- padding: 12px 16px;
98
- }
99
-
100
- .drawer-body {
101
- padding: 16px;
102
- }
1
+ :host {
2
+ display: block;
3
+ }
4
+
5
+ .drawer-container {
6
+ position: fixed;
7
+ top: 0;
8
+ left: 0;
9
+ width: 0;
10
+ height: 0;
11
+ overflow: visible;
12
+ }
13
+
14
+ .drawer-mask {
15
+ position: fixed;
16
+ top: 0;
17
+ left: 0;
18
+ right: 0;
19
+ bottom: 0;
20
+ background-color: rgba(0, 0, 0, 0.45);
21
+ opacity: 0;
22
+ visibility: hidden;
23
+ transition: opacity 0.3s ease, visibility 0.3s ease;
24
+ }
25
+
26
+ .mask-visible {
27
+ opacity: 1;
28
+ visibility: visible;
29
+ }
30
+
31
+ .drawer-content {
32
+ position: fixed;
33
+ top: 0;
34
+ right: 0;
35
+ bottom: 0;
36
+ display: flex;
37
+ flex-direction: column;
38
+ background-color: #fff;
39
+ box-shadow: -2px 0 8px rgba(0, 0, 0, 0.15);
40
+ transform: translateX(100%);
41
+ transition: transform 0.3s cubic-bezier(0.23, 1, 0.32, 1);
42
+ }
43
+
44
+ .drawer-content-visible {
45
+ transform: translateX(0);
46
+ }
47
+
48
+ .drawer-header {
49
+ display: flex;
50
+ align-items: center;
51
+ justify-content: space-between;
52
+ padding: 16px 24px;
53
+ color: rgba(0, 0, 0, 0.85);
54
+ border-bottom: 1px solid #f0f0f0;
55
+ }
56
+
57
+ .drawer-title {
58
+ flex: 1;
59
+ margin: 0;
60
+ font-size: 16px;
61
+ line-height: 22px;
62
+ font-weight: 500;
63
+ color: rgba(0, 0, 0, 0.85);
64
+ overflow: hidden;
65
+ text-overflow: ellipsis;
66
+ white-space: nowrap;
67
+ }
68
+
69
+ .drawer-close {
70
+ padding: 0;
71
+ background: transparent;
72
+ border: none;
73
+ outline: none;
74
+ cursor: pointer;
75
+ font-size: 16px;
76
+ color: rgba(0, 0, 0, 0.45);
77
+ transition: color 0.3s;
78
+ }
79
+
80
+ .drawer-close:hover {
81
+ color: rgba(0, 0, 0, 0.85);
82
+ }
83
+
84
+ .drawer-body {
85
+ flex: 1;
86
+ padding: 24px;
87
+ overflow: auto;
88
+ }
89
+
90
+ /* 响应式样式 */
91
+ @media (max-width: 768px) {
92
+ .drawer-content {
93
+ width: 100% !important;
94
+ }
95
+
96
+ .drawer-header {
97
+ padding: 12px 16px;
98
+ }
99
+
100
+ .drawer-body {
101
+ padding: 16px;
102
+ }
103
103
  }
@@ -123,7 +123,7 @@ export class PcmDrawer {
123
123
  const maskStyle = {
124
124
  zIndex: `${this.zIndex}`,
125
125
  };
126
- return (h("div", { key: 'c0c12a379d5ebfa0dd3cc3d1bbdc3ac758a5006f', class: { 'drawer-container': true, 'drawer-open': this.isOpen } }, this.mask && (h("div", { key: '01a6db65de08dd54fbc1a52efeda576e6f71f4ae', class: { 'drawer-mask': true, 'mask-visible': this.isOpen }, style: maskStyle, onClick: this.handleMaskClick })), h("div", { key: '121cb9463b12c9ff287e1890c03281dd69d074a9', class: { 'drawer-content': true, 'drawer-content-visible': this.isOpen }, style: drawerStyle }, h("div", { key: '839536eb87451599dafdda11185935f51b59ce03', class: "drawer-header" }, this.drawerTitle && h("div", { key: 'f02c896b38f2e089687f0baa96fea06f4303ebf0', class: "drawer-title" }, this.drawerTitle), this.closable && (h("button", { key: '0ed699d106894d01242f105583860376f1228f48', class: "drawer-close", onClick: this.handleClose }, h("svg", { key: '987102bc7f8fb3d86322a8d9029951db6cccb266', viewBox: "64 64 896 896", focusable: "false", "data-icon": "close", width: "1em", height: "1em", fill: "currentColor", "aria-hidden": "true" }, h("path", { key: 'b2e5ea93efbab2fe2a76ed59872144cdb4ee9f6a', d: "M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z" }))))), h("div", { key: 'd882ce5d71c4d2adeecab918a70a56b657e86b63', class: "drawer-body" }, h("slot", { key: '9a822a390e1f2f20d287d29dbbbb0501b0989207' })))));
126
+ return (h("div", { key: '5ca0630697aaf594d75095a631163a19ed8e4a9b', class: { 'drawer-container': true, 'drawer-open': this.isOpen } }, this.mask && (h("div", { key: '59e9f9f1d48dca079d76ff3ac4f3d4e2f7132bae', class: { 'drawer-mask': true, 'mask-visible': this.isOpen }, style: maskStyle, onClick: this.handleMaskClick })), h("div", { key: 'c9138ac3ff9139d2a199abba971481842eb78ee3', class: { 'drawer-content': true, 'drawer-content-visible': this.isOpen }, style: drawerStyle }, h("div", { key: 'fbcffe58c697b95b188609733afafc1531a87e5f', class: "drawer-header" }, this.drawerTitle && h("div", { key: '7f57ebafc446670961a05c0714a25f2650183e32', class: "drawer-title" }, this.drawerTitle), this.closable && (h("button", { key: '9d6ec03e600639be9c44fd87da0687b1777d0d92', class: "drawer-close", onClick: this.handleClose }, h("svg", { key: '8960f8ce5325339ed8c06b40043f19e17c45aa52', viewBox: "64 64 896 896", focusable: "false", "data-icon": "close", width: "1em", height: "1em", fill: "currentColor", "aria-hidden": "true" }, h("path", { key: '0dede2ac0608601edde40bee26720ee938a8f7d9', d: "M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z" }))))), h("div", { key: '28d0ee3ededd2b7ee4b00747acc820227629f91d', class: "drawer-body" }, h("slot", { key: 'bbbd99d68c216d10afa4458fe9e4f384f17cb563' })))));
127
127
  }
128
128
  static get is() { return "pcm-drawer"; }
129
129
  static get encapsulation() { return "shadow"; }
@@ -1 +1 @@
1
- {"version":3,"file":"pcm-drawer.js","sourceRoot":"","sources":["../../../../src/components/pcm-drawer/pcm-drawer.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, h, Event, EventEmitter, Watch, Method, Element, State } from '@stencil/core';\r\nimport { configStore } from '../../../store/config.store';\r\n\r\n/**\r\n * 抽屉组件\r\n * 从屏幕边缘滑出的浮层面板,类似 Ant Design 的 Drawer 组件\r\n */\r\n@Component({\r\n tag: 'pcm-drawer',\r\n styleUrl: 'pcm-drawer.css',\r\n shadow: true,\r\n})\r\nexport class PcmDrawer {\r\n /**\r\n * 抽屉是否可见\r\n */\r\n @Prop({ mutable: true, reflect: true }) isOpen: boolean = false;\r\n\r\n /**\r\n * 抽屉标题\r\n */\r\n @Prop() drawerTitle: string = '';\r\n\r\n /**\r\n * 宽度,可以是像素值或百分比\r\n */\r\n @Prop() width: string = '378px';\r\n\r\n /**\r\n * 高度,在 placement 为 top 或 bottom 时使用\r\n */\r\n @Prop() height: string = '378px';\r\n\r\n /**\r\n * 是否显示关闭按钮\r\n */\r\n @Prop() closable: boolean = true;\r\n\r\n /**\r\n * 点击蒙层是否允许关闭\r\n */\r\n @Prop() maskClosable: boolean = true;\r\n\r\n /**\r\n * 是否显示蒙层\r\n */\r\n @Prop() mask: boolean = true;\r\n\r\n /**\r\n * 抽屉关闭后的回调\r\n */\r\n @Event() closed: EventEmitter<void>;\r\n\r\n /**\r\n * 抽屉打开后的回调\r\n */\r\n @Event() afterOpen: EventEmitter<void>;\r\n\r\n /**\r\n * 抽屉关闭后的回调\r\n */\r\n @Event() afterClose: EventEmitter<void>;\r\n\r\n @Element() hostElement: HTMLElement;\r\n\r\n @State() zIndex: number = 1000;\r\n\r\n private bodyOverflowBeforeOpen: string = '';\r\n private transitionEndHandler: () => void;\r\n\r\n /**\r\n * 打开抽屉\r\n */\r\n @Method()\r\n async open() {\r\n this.isOpen = true;\r\n }\r\n\r\n /**\r\n * 关闭抽屉\r\n */\r\n @Method()\r\n async close() {\r\n this.isOpen = false;\r\n }\r\n\r\n @Watch('isOpen')\r\n visibleChanged(newValue: boolean) {\r\n if (newValue) {\r\n // 打开抽屉时,禁止背景滚动\r\n this.bodyOverflowBeforeOpen = document.body.style.overflow;\r\n document.body.style.overflow = 'hidden';\r\n \r\n // 添加过渡结束事件监听器\r\n const drawer = this.hostElement.shadowRoot.querySelector('.drawer-content') as HTMLElement;\r\n if (drawer) {\r\n this.transitionEndHandler = () => {\r\n this.afterOpen.emit();\r\n };\r\n drawer.addEventListener('transitionend', this.transitionEndHandler, { once: true });\r\n }\r\n } else {\r\n // 关闭抽屉时,恢复背景滚动\r\n document.body.style.overflow = this.bodyOverflowBeforeOpen;\r\n \r\n // 添加过渡结束事件监听器\r\n const drawer = this.hostElement.shadowRoot.querySelector('.drawer-content') as HTMLElement;\r\n if (drawer) {\r\n this.transitionEndHandler = () => {\r\n this.afterClose.emit();\r\n };\r\n drawer.addEventListener('transitionend', this.transitionEndHandler, { once: true });\r\n }\r\n }\r\n }\r\n\r\n componentWillLoad() {\r\n // 尝试从缓存中读取 zIndex\r\n const cachedZIndex = configStore.getItem<number>('modal-zIndex');\r\n if (cachedZIndex) {\r\n this.zIndex = cachedZIndex;\r\n }\r\n }\r\n\r\n disconnectedCallback() {\r\n // 组件卸载时恢复背景滚动\r\n if (this.isOpen) {\r\n document.body.style.overflow = this.bodyOverflowBeforeOpen;\r\n }\r\n \r\n // 移除事件监听器\r\n const drawer = this.hostElement.shadowRoot?.querySelector('.drawer-content') as HTMLElement;\r\n if (drawer && this.transitionEndHandler) {\r\n drawer.removeEventListener('transitionend', this.transitionEndHandler);\r\n }\r\n }\r\n\r\n private handleMaskClick = () => {\r\n if (this.maskClosable) {\r\n this.handleClose();\r\n }\r\n };\r\n\r\n private handleClose = () => {\r\n this.isOpen = false;\r\n this.closed.emit();\r\n };\r\n\r\n render() {\r\n const drawerStyle = {\r\n width: this.width,\r\n zIndex: `${this.zIndex + 1}`,\r\n };\r\n\r\n const maskStyle = {\r\n zIndex: `${this.zIndex}`,\r\n };\r\n\r\n return (\r\n <div class={{ 'drawer-container': true, 'drawer-open': this.isOpen }}>\r\n {this.mask && (\r\n <div \r\n class={{ 'drawer-mask': true, 'mask-visible': this.isOpen }} \r\n style={maskStyle}\r\n onClick={this.handleMaskClick}\r\n ></div>\r\n )}\r\n <div \r\n class={{ 'drawer-content': true, 'drawer-content-visible': this.isOpen }} \r\n style={drawerStyle}\r\n >\r\n <div class=\"drawer-header\">\r\n {this.drawerTitle && <div class=\"drawer-title\">{this.drawerTitle}</div>}\r\n {this.closable && (\r\n <button class=\"drawer-close\" onClick={this.handleClose}>\r\n <svg viewBox=\"64 64 896 896\" focusable=\"false\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\">\r\n <path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path>\r\n </svg>\r\n </button>\r\n )}\r\n </div>\r\n <div class=\"drawer-body\">\r\n <slot></slot>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n} "]}
1
+ {"version":3,"file":"pcm-drawer.js","sourceRoot":"","sources":["../../../../src/components/pcm-drawer/pcm-drawer.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, h, Event, EventEmitter, Watch, Method, Element, State } from '@stencil/core';\nimport { configStore } from '../../../store/config.store';\n\n/**\n * 抽屉组件\n * 从屏幕边缘滑出的浮层面板,类似 Ant Design 的 Drawer 组件\n */\n@Component({\n tag: 'pcm-drawer',\n styleUrl: 'pcm-drawer.css',\n shadow: true,\n})\nexport class PcmDrawer {\n /**\n * 抽屉是否可见\n */\n @Prop({ mutable: true, reflect: true }) isOpen: boolean = false;\n\n /**\n * 抽屉标题\n */\n @Prop() drawerTitle: string = '';\n\n /**\n * 宽度,可以是像素值或百分比\n */\n @Prop() width: string = '378px';\n\n /**\n * 高度,在 placement 为 top 或 bottom 时使用\n */\n @Prop() height: string = '378px';\n\n /**\n * 是否显示关闭按钮\n */\n @Prop() closable: boolean = true;\n\n /**\n * 点击蒙层是否允许关闭\n */\n @Prop() maskClosable: boolean = true;\n\n /**\n * 是否显示蒙层\n */\n @Prop() mask: boolean = true;\n\n /**\n * 抽屉关闭后的回调\n */\n @Event() closed: EventEmitter<void>;\n\n /**\n * 抽屉打开后的回调\n */\n @Event() afterOpen: EventEmitter<void>;\n\n /**\n * 抽屉关闭后的回调\n */\n @Event() afterClose: EventEmitter<void>;\n\n @Element() hostElement: HTMLElement;\n\n @State() zIndex: number = 1000;\n\n private bodyOverflowBeforeOpen: string = '';\n private transitionEndHandler: () => void;\n\n /**\n * 打开抽屉\n */\n @Method()\n async open() {\n this.isOpen = true;\n }\n\n /**\n * 关闭抽屉\n */\n @Method()\n async close() {\n this.isOpen = false;\n }\n\n @Watch('isOpen')\n visibleChanged(newValue: boolean) {\n if (newValue) {\n // 打开抽屉时,禁止背景滚动\n this.bodyOverflowBeforeOpen = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n \n // 添加过渡结束事件监听器\n const drawer = this.hostElement.shadowRoot.querySelector('.drawer-content') as HTMLElement;\n if (drawer) {\n this.transitionEndHandler = () => {\n this.afterOpen.emit();\n };\n drawer.addEventListener('transitionend', this.transitionEndHandler, { once: true });\n }\n } else {\n // 关闭抽屉时,恢复背景滚动\n document.body.style.overflow = this.bodyOverflowBeforeOpen;\n \n // 添加过渡结束事件监听器\n const drawer = this.hostElement.shadowRoot.querySelector('.drawer-content') as HTMLElement;\n if (drawer) {\n this.transitionEndHandler = () => {\n this.afterClose.emit();\n };\n drawer.addEventListener('transitionend', this.transitionEndHandler, { once: true });\n }\n }\n }\n\n componentWillLoad() {\n // 尝试从缓存中读取 zIndex\n const cachedZIndex = configStore.getItem<number>('modal-zIndex');\n if (cachedZIndex) {\n this.zIndex = cachedZIndex;\n }\n }\n\n disconnectedCallback() {\n // 组件卸载时恢复背景滚动\n if (this.isOpen) {\n document.body.style.overflow = this.bodyOverflowBeforeOpen;\n }\n \n // 移除事件监听器\n const drawer = this.hostElement.shadowRoot?.querySelector('.drawer-content') as HTMLElement;\n if (drawer && this.transitionEndHandler) {\n drawer.removeEventListener('transitionend', this.transitionEndHandler);\n }\n }\n\n private handleMaskClick = () => {\n if (this.maskClosable) {\n this.handleClose();\n }\n };\n\n private handleClose = () => {\n this.isOpen = false;\n this.closed.emit();\n };\n\n render() {\n const drawerStyle = {\n width: this.width,\n zIndex: `${this.zIndex + 1}`,\n };\n\n const maskStyle = {\n zIndex: `${this.zIndex}`,\n };\n\n return (\n <div class={{ 'drawer-container': true, 'drawer-open': this.isOpen }}>\n {this.mask && (\n <div \n class={{ 'drawer-mask': true, 'mask-visible': this.isOpen }} \n style={maskStyle}\n onClick={this.handleMaskClick}\n ></div>\n )}\n <div \n class={{ 'drawer-content': true, 'drawer-content-visible': this.isOpen }} \n style={drawerStyle}\n >\n <div class=\"drawer-header\">\n {this.drawerTitle && <div class=\"drawer-title\">{this.drawerTitle}</div>}\n {this.closable && (\n <button class=\"drawer-close\" onClick={this.handleClose}>\n <svg viewBox=\"64 64 896 896\" focusable=\"false\" data-icon=\"close\" width=\"1em\" height=\"1em\" fill=\"currentColor\" aria-hidden=\"true\">\n <path d=\"M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z\"></path>\n </svg>\n </button>\n )}\n </div>\n <div class=\"drawer-body\">\n <slot></slot>\n </div>\n </div>\n </div>\n );\n }\n} "]}