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
@@ -1 +1 @@
1
- {"file":"pcm-button.js","mappings":"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","names":["PcmButton","__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/pcm-button/pcm-button.css?tag=pcm-button&encapsulation=shadow","src/components/pcm-button/pcm-button.tsx"],"sourcesContent":[":host {\r\n display: inline-block;\r\n}\r\n\r\n.pcm-button {\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: center;\r\n font-weight: 400;\r\n white-space: nowrap;\r\n text-align: center;\r\n background-image: none;\r\n border: 1px solid transparent;\r\n cursor: pointer;\r\n transition: all 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);\r\n user-select: none;\r\n touch-action: manipulation;\r\n height: 32px;\r\n padding: 0 15px;\r\n font-size: 14px;\r\n border-radius: 4px;\r\n color: rgba(0, 0, 0, 0.85);\r\n background-color: white;\r\n border-color: #d9d9d9;\r\n outline: none;\r\n}\r\n\r\n.pcm-button:hover {\r\n border-color: #40a9ff;\r\n color: #40a9ff;\r\n}\r\n\r\n.pcm-button:active {\r\n border-color: #096dd9;\r\n color: #096dd9;\r\n}\r\n\r\n/* 按钮类型样式 */\r\n.pcm-button-default {\r\n background-color: white;\r\n border-color: #d9d9d9;\r\n color: rgba(0, 0, 0, 0.85);\r\n}\r\n\r\n.pcm-button-primary {\r\n background-color: #1677FF;\r\n border-color: #1677FF;\r\n color: white;\r\n}\r\n\r\n.pcm-button-primary:hover {\r\n background-color: #40a9ff;\r\n border-color: #40a9ff;\r\n color: white;\r\n}\r\n\r\n.pcm-button-primary:active {\r\n background-color: #096dd9;\r\n border-color: #096dd9;\r\n color: white;\r\n}\r\n\r\n.pcm-button-dashed {\r\n background-color: white;\r\n border-color: #d9d9d9;\r\n border-style: dashed;\r\n}\r\n\r\n.pcm-button-text {\r\n background-color: transparent;\r\n border-color: transparent;\r\n color: rgba(0, 0, 0, 0.85);\r\n box-shadow: none;\r\n}\r\n\r\n.pcm-button-text:hover {\r\n background-color: rgba(0, 0, 0, 0.05);\r\n border-color: transparent;\r\n color: rgba(0, 0, 0, 0.85);\r\n}\r\n\r\n.pcm-button-link {\r\n background-color: transparent;\r\n border-color: transparent;\r\n color: #1677FF;\r\n box-shadow: none;\r\n}\r\n\r\n.pcm-button-link:hover {\r\n color: #40a9ff;\r\n background-color: transparent;\r\n border-color: transparent;\r\n}\r\n\r\n/* 按钮尺寸样式 */\r\n.pcm-button-large {\r\n height: 40px;\r\n padding: 0 20px;\r\n font-size: 16px;\r\n}\r\n\r\n.pcm-button-small {\r\n height: 24px;\r\n padding: 0 7px;\r\n font-size: 12px;\r\n}\r\n\r\n/* 按钮形状样式 */\r\n.pcm-button-circle {\r\n min-width: 32px;\r\n padding: 0;\r\n border-radius: 50%;\r\n}\r\n\r\n.pcm-button-large.pcm-button-circle {\r\n min-width: 40px;\r\n}\r\n\r\n.pcm-button-small.pcm-button-circle {\r\n min-width: 24px;\r\n}\r\n\r\n.pcm-button-round {\r\n border-radius: 40px;\r\n}\r\n\r\n/* 按钮加载状态样式 */\r\n.pcm-button-loading {\r\n opacity: 0.65;\r\n cursor: default;\r\n}\r\n\r\n.loading-icon {\r\n width: 14px;\r\n height: 14px;\r\n margin-right: 8px;\r\n border: 2px solid currentColor;\r\n border-top-color: transparent;\r\n border-radius: 50%;\r\n animation: loading-spin 1s infinite linear;\r\n display: inline-block;\r\n}\r\n\r\n@keyframes loading-spin {\r\n 0% { \r\n transform: rotate(0deg); \r\n }\r\n 100% { \r\n transform: rotate(360deg); \r\n }\r\n}\r\n\r\n/* 按钮禁用状态样式 */\r\n.pcm-button-disabled {\r\n cursor: not-allowed;\r\n opacity: 0.65;\r\n}\r\n\r\n.pcm-button-disabled:hover,\r\n.pcm-button-disabled:active {\r\n color: rgba(0, 0, 0, 0.25);\r\n background-color: #f5f5f5;\r\n border-color: #d9d9d9;\r\n}\r\n\r\n.pcm-button-primary.pcm-button-disabled:hover,\r\n.pcm-button-primary.pcm-button-disabled:active {\r\n background-color: #1677FF;\r\n border-color: #1677FF;\r\n color: white;\r\n}\r\n\r\n/* 图标样式 */\r\n.button-icon {\r\n margin-right: 8px;\r\n display: inline-flex;\r\n align-items: center;\r\n}\r\n\r\n.button-icon img {\r\n width: 16px;\r\n height: 16px;\r\n}\r\n\r\n.pcm-button-small .button-icon img {\r\n width: 12px;\r\n height: 12px;\r\n}\r\n\r\n.pcm-button-large .button-icon img {\r\n width: 18px;\r\n height: 18px;\r\n}\r\n\r\n/* 块级按钮样式 */\r\n.pcm-button-block {\r\n width: 100%;\r\n display: flex;\r\n}\r\n","import { Component, Prop, h} from '@stencil/core';\r\n\r\n/**\r\n * 按钮组件\r\n * 一个简化版的类似于 ant-design 的按钮组件,支持自定义文字、颜色、圆角等属性\r\n */\r\n@Component({\r\n tag: 'pcm-button',\r\n styleUrl: 'pcm-button.css',\r\n shadow: true,\r\n})\r\nexport class PcmButton {\r\n /**\r\n * 按钮类型\r\n * 可选值: 'primary', 'default', 'dashed', 'text', 'link'\r\n */\r\n @Prop() type: 'primary' | 'default' | 'dashed' | 'text' | 'link' = 'default';\r\n\r\n /**\r\n * 按钮尺寸\r\n * 可选值: 'large', 'middle', 'small'\r\n */\r\n @Prop() size: 'large' | 'middle' | 'small' = 'middle';\r\n\r\n /**\r\n * 是否为加载状态\r\n */\r\n @Prop() loading: boolean = false;\r\n\r\n /**\r\n * 是否为禁用状态\r\n */\r\n @Prop() disabled: boolean = false;\r\n\r\n /**\r\n * 设置按钮的图标\r\n * 使用图标的URL或者base64字符串\r\n */\r\n @Prop() icon: string = 'https://pub.pincaimao.com/static/common/i_pcm_logo.png';\r\n\r\n\r\n /**\r\n * 自定义按钮形状\r\n * 可选值: 'default', 'circle', 'round'\r\n */\r\n @Prop() shape: 'default' | 'circle' | 'round' = 'default';\r\n\r\n /**\r\n * 自定义按钮背景色\r\n */\r\n @Prop() backgroundColor: string = '';\r\n\r\n /**\r\n * 自定义按钮文字颜色\r\n */\r\n @Prop() textColor: string = '';\r\n\r\n /**\r\n * 自定义按钮边框颜色\r\n */\r\n @Prop() borderColor: string = '';\r\n\r\n /**\r\n * 自定义按钮圆角大小(像素)\r\n */\r\n @Prop() borderRadius: number = null;\r\n\r\n /**\r\n * 按钮宽度(像素或百分比)\r\n */\r\n @Prop() width: string = '';\r\n\r\n /**\r\n * 是否为块级按钮(宽度撑满父元素)\r\n */\r\n @Prop() block: boolean = false;\r\n\r\n /**\r\n * 按钮边框样式\r\n * 可选值: 'solid', 'dashed', 'dotted', 'none'\r\n */\r\n @Prop() borderStyle: 'solid' | 'dashed' | 'dotted' | 'none' = 'solid';\r\n\r\n render() {\r\n // 计算样式类名\r\n const classes = {\r\n 'pcm-button': true,\r\n [`pcm-button-${this.type}`]: true,\r\n [`pcm-button-${this.size}`]: true,\r\n [`pcm-button-${this.shape}`]: true,\r\n 'pcm-button-loading': this.loading,\r\n 'pcm-button-disabled': this.disabled,\r\n 'pcm-button-block': this.block\r\n };\r\n\r\n // 计算自定义样式\r\n const customStyle = {};\r\n if (this.backgroundColor) {\r\n customStyle['backgroundColor'] = this.backgroundColor;\r\n }\r\n if (this.textColor) {\r\n customStyle['color'] = this.textColor;\r\n }\r\n if (this.borderColor) {\r\n customStyle['borderColor'] = this.borderColor;\r\n }\r\n if (this.borderRadius !== null) {\r\n customStyle['borderRadius'] = `${this.borderRadius}px`;\r\n }\r\n if (this.width) {\r\n customStyle['width'] = this.width;\r\n }\r\n if (this.borderStyle) {\r\n customStyle['borderStyle'] = this.borderStyle;\r\n }\r\n\r\n return (\r\n <button\r\n class={Object.keys(classes).filter(key => classes[key]).join(' ')}\r\n style={customStyle}\r\n disabled={this.disabled}\r\n type=\"button\"\r\n >\r\n {this.loading && (\r\n <span class=\"loading-icon\"></span>\r\n )}\r\n {this.icon && !this.loading && (\r\n <span class=\"button-icon\">\r\n <img src={this.icon} alt=\"\" />\r\n </span>\r\n )}\r\n <slot />\r\n </button>\r\n );\r\n }\r\n}\r\n"],"version":3}
1
+ {"file":"pcm-button.js","mappings":"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","names":["PcmButton","__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/pcm-button/pcm-button.css?tag=pcm-button&encapsulation=shadow","src/components/pcm-button/pcm-button.tsx"],"sourcesContent":[":host {\n display: inline-block;\n}\n\n.pcm-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-weight: 400;\n white-space: nowrap;\n text-align: center;\n background-image: none;\n border: 1px solid transparent;\n cursor: pointer;\n transition: all 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);\n user-select: none;\n touch-action: manipulation;\n height: 32px;\n padding: 0 15px;\n font-size: 14px;\n border-radius: 4px;\n color: rgba(0, 0, 0, 0.85);\n background-color: white;\n border-color: #d9d9d9;\n outline: none;\n}\n\n.pcm-button:hover {\n border-color: #40a9ff;\n color: #40a9ff;\n}\n\n.pcm-button:active {\n border-color: #096dd9;\n color: #096dd9;\n}\n\n/* 按钮类型样式 */\n.pcm-button-default {\n background-color: white;\n border-color: #d9d9d9;\n color: rgba(0, 0, 0, 0.85);\n}\n\n.pcm-button-primary {\n background-color: #1677FF;\n border-color: #1677FF;\n color: white;\n}\n\n.pcm-button-primary:hover {\n background-color: #40a9ff;\n border-color: #40a9ff;\n color: white;\n}\n\n.pcm-button-primary:active {\n background-color: #096dd9;\n border-color: #096dd9;\n color: white;\n}\n\n.pcm-button-dashed {\n background-color: white;\n border-color: #d9d9d9;\n border-style: dashed;\n}\n\n.pcm-button-text {\n background-color: transparent;\n border-color: transparent;\n color: rgba(0, 0, 0, 0.85);\n box-shadow: none;\n}\n\n.pcm-button-text:hover {\n background-color: rgba(0, 0, 0, 0.05);\n border-color: transparent;\n color: rgba(0, 0, 0, 0.85);\n}\n\n.pcm-button-link {\n background-color: transparent;\n border-color: transparent;\n color: #1677FF;\n box-shadow: none;\n}\n\n.pcm-button-link:hover {\n color: #40a9ff;\n background-color: transparent;\n border-color: transparent;\n}\n\n/* 按钮尺寸样式 */\n.pcm-button-large {\n height: 40px;\n padding: 0 20px;\n font-size: 16px;\n}\n\n.pcm-button-small {\n height: 24px;\n padding: 0 7px;\n font-size: 12px;\n}\n\n/* 按钮形状样式 */\n.pcm-button-circle {\n min-width: 32px;\n padding: 0;\n border-radius: 50%;\n}\n\n.pcm-button-large.pcm-button-circle {\n min-width: 40px;\n}\n\n.pcm-button-small.pcm-button-circle {\n min-width: 24px;\n}\n\n.pcm-button-round {\n border-radius: 40px;\n}\n\n/* 按钮加载状态样式 */\n.pcm-button-loading {\n opacity: 0.65;\n cursor: default;\n}\n\n.loading-icon {\n width: 14px;\n height: 14px;\n margin-right: 8px;\n border: 2px solid currentColor;\n border-top-color: transparent;\n border-radius: 50%;\n animation: loading-spin 1s infinite linear;\n display: inline-block;\n}\n\n@keyframes loading-spin {\n 0% { \n transform: rotate(0deg); \n }\n 100% { \n transform: rotate(360deg); \n }\n}\n\n/* 按钮禁用状态样式 */\n.pcm-button-disabled {\n cursor: not-allowed;\n opacity: 0.65;\n}\n\n.pcm-button-disabled:hover,\n.pcm-button-disabled:active {\n color: rgba(0, 0, 0, 0.25);\n background-color: #f5f5f5;\n border-color: #d9d9d9;\n}\n\n.pcm-button-primary.pcm-button-disabled:hover,\n.pcm-button-primary.pcm-button-disabled:active {\n background-color: #1677FF;\n border-color: #1677FF;\n color: white;\n}\n\n/* 图标样式 */\n.button-icon {\n margin-right: 8px;\n display: inline-flex;\n align-items: center;\n}\n\n.button-icon img {\n width: 16px;\n height: 16px;\n}\n\n.pcm-button-small .button-icon img {\n width: 12px;\n height: 12px;\n}\n\n.pcm-button-large .button-icon img {\n width: 18px;\n height: 18px;\n}\n\n/* 块级按钮样式 */\n.pcm-button-block {\n width: 100%;\n display: flex;\n}\n","import { Component, Prop, h} from '@stencil/core';\n\n/**\n * 按钮组件\n * 一个简化版的类似于 ant-design 的按钮组件,支持自定义文字、颜色、圆角等属性\n */\n@Component({\n tag: 'pcm-button',\n styleUrl: 'pcm-button.css',\n shadow: true,\n})\nexport class PcmButton {\n /**\n * 按钮类型\n * 可选值: 'primary', 'default', 'dashed', 'text', 'link'\n */\n @Prop() type: 'primary' | 'default' | 'dashed' | 'text' | 'link' = 'default';\n\n /**\n * 按钮尺寸\n * 可选值: 'large', 'middle', 'small'\n */\n @Prop() size: 'large' | 'middle' | 'small' = 'middle';\n\n /**\n * 是否为加载状态\n */\n @Prop() loading: boolean = false;\n\n /**\n * 是否为禁用状态\n */\n @Prop() disabled: boolean = false;\n\n /**\n * 设置按钮的图标\n * 使用图标的URL或者base64字符串\n */\n @Prop() icon: string = 'https://pub.pincaimao.com/static/common/i_pcm_logo.png';\n\n\n /**\n * 自定义按钮形状\n * 可选值: 'default', 'circle', 'round'\n */\n @Prop() shape: 'default' | 'circle' | 'round' = 'default';\n\n /**\n * 自定义按钮背景色\n */\n @Prop() backgroundColor: string = '';\n\n /**\n * 自定义按钮文字颜色\n */\n @Prop() textColor: string = '';\n\n /**\n * 自定义按钮边框颜色\n */\n @Prop() borderColor: string = '';\n\n /**\n * 自定义按钮圆角大小(像素)\n */\n @Prop() borderRadius: number = null;\n\n /**\n * 按钮宽度(像素或百分比)\n */\n @Prop() width: string = '';\n\n /**\n * 是否为块级按钮(宽度撑满父元素)\n */\n @Prop() block: boolean = false;\n\n /**\n * 按钮边框样式\n * 可选值: 'solid', 'dashed', 'dotted', 'none'\n */\n @Prop() borderStyle: 'solid' | 'dashed' | 'dotted' | 'none' = 'solid';\n\n render() {\n // 计算样式类名\n const classes = {\n 'pcm-button': true,\n [`pcm-button-${this.type}`]: true,\n [`pcm-button-${this.size}`]: true,\n [`pcm-button-${this.shape}`]: true,\n 'pcm-button-loading': this.loading,\n 'pcm-button-disabled': this.disabled,\n 'pcm-button-block': this.block\n };\n\n // 计算自定义样式\n const customStyle = {};\n if (this.backgroundColor) {\n customStyle['backgroundColor'] = this.backgroundColor;\n }\n if (this.textColor) {\n customStyle['color'] = this.textColor;\n }\n if (this.borderColor) {\n customStyle['borderColor'] = this.borderColor;\n }\n if (this.borderRadius !== null) {\n customStyle['borderRadius'] = `${this.borderRadius}px`;\n }\n if (this.width) {\n customStyle['width'] = this.width;\n }\n if (this.borderStyle) {\n customStyle['borderStyle'] = this.borderStyle;\n }\n\n return (\n <button\n class={Object.keys(classes).filter(key => classes[key]).join(' ')}\n style={customStyle}\n disabled={this.disabled}\n type=\"button\"\n >\n {this.loading && (\n <span class=\"loading-icon\"></span>\n )}\n {this.icon && !this.loading && (\n <span class=\"button-icon\">\n <img src={this.icon} alt=\"\" />\n </span>\n )}\n <slot />\n </button>\n );\n }\n}\n"],"version":3}
@@ -1,5 +1,5 @@
1
- import { p as proxyCustomElement, H, c as createEvent, h } from './p-CR7WLzmM.js';
2
- import { a as authStore, s as sendHttpRequest } from './p-AYWZDCn8.js';
1
+ import { p as proxyCustomElement, H, d as createEvent, h } from './p-BdiUKin5.js';
2
+ import { a as authStore, s as sendHttpRequest } from './p-B0WOTw9J.js';
3
3
 
4
4
  const pcmCardCss = ":host{display:block}.loading-container,.error-container{display:flex;flex-direction:column;align-items:center;justify-content:center;height:200px;width:100%;color:#86909C;font-size:14px;text-align:center}.loading-spinner{width:32px;height:32px;border:3px solid #f3f3f3;border-top:3px solid #1677FF;border-radius:50%;margin-bottom:12px;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.error-icon{width:32px;height:32px;background-color:#FFF0F0;color:#F53F3F;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:20px;font-weight:bold;margin-bottom:12px}.error-message{color:#86909C;max-width:80%}.card-container{border-radius:8px;padding:16px;cursor:pointer;transition:all 0.2s ease;display:flex;flex-direction:column;background-color:#ffffff;border:1px solid #E5E6EB;position:relative;height:100%;min-width:300px}.card-container:hover{transform:translateY(-2px);box-shadow:0 4px 16px rgba(0, 21, 41, 0.08)}.card-header{display:flex;width:100%;padding-bottom:16px;gap:12px}.card-icon{width:64px;height:64px;margin-right:12px;flex-shrink:0;overflow:hidden;border-radius:2px;background-color:#f8f9fa}.card-icon img{width:100%;height:100%;object-fit:contain}.card-info{flex:1;display:flex;flex-direction:column;overflow:hidden}.title-row{display:flex;align-items:center}.title-wrapper{flex:1;margin-right:8px;overflow:hidden}.card-title{font-size:18px;font-weight:700;color:#1D2129;line-height:24px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;width:100%}.chat-tag{display:flex;align-items:center;justify-content:center;height:24px;padding:0 8px;background-color:#F2F7E8;color:#56961F;font-size:12px;border-radius:4px;font-weight:500;flex-shrink:0}.author-row{display:flex;align-items:center;margin-top:8px}.author-avatar{width:16px;height:16px;border-radius:50%;margin-right:4px;background-color:#f8f9fa;overflow:hidden}.author-name{font-size:12px;color:#86909C}.card-description{font-size:12px;color:#86909C;margin-top:8px;line-height:18px;height:54px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;white-space:pre-line;word-break:break-word}.card-footer{padding-top:16px;display:flex;justify-content:space-between;align-items:center;border-top:1px solid #E5E6EB}.stats-container{display:flex;align-items:center;flex:1}.stat-item{display:flex;align-items:center;margin-right:8px;color:#86909C}.stat-icon{width:16px;height:16px;margin-right:4px;background-repeat:no-repeat;background-position:center;background-size:contain}.user-icon{background-image:url(\"data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' focusable='false' aria-hidden='true'%3E%3Cpath d='M12 14c-3.3 0-6-2.7-6-6s2.7-6 6-6 6 2.7 6 6-2.7 6-6 6Zm0-10C9.8 4 8 5.8 8 8s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4Z' fill='currentColor'%3E%3C/path%3E%3Cpath d='M21.9 20.6c-.1-.2-2.3-5.6-9.9-5.6-7.6 0-9.8 5.4-9.9 5.6-.2.5 0 1.1.6 1.3.5.2 1.1 0 1.3-.5 0-.2 1.8-4.4 8-4.4s8 4.2 8.1 4.4c.2.5.8.8 1.3.5.5-.2.7-.8.5-1.3Z' fill='currentColor'%3E%3C/path%3E%3C/svg%3E\")}.star-icon{background-image:url(\"data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' focusable='false' aria-hidden='true'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M12 5.03 9.57 9.1c-.17.3-.46.5-.8.55l-4.3.79 3 3.46c.22.26.32.6.28.93l-.62 4.46 4.41-1.9c.3-.12.63-.12.92 0l4.4 1.9-.6-4.46c-.05-.34.05-.67.27-.93l3-3.46-4.3-.79a1.17 1.17 0 0 1-.8-.55L12 5.03Zm-1-2.46a1.16 1.16 0 0 1 2 0l3.03 5.07 5.51 1c.89.17 1.26 1.24.68 1.92l-3.8 4.4.77 5.71c.13.9-.78 1.6-1.61 1.23L12 19.5l-5.58 2.4a1.17 1.17 0 0 1-1.61-1.23l.78-5.7-3.8-4.4a1.17 1.17 0 0 1 .67-1.92l5.51-1L11 2.56Z' fill='currentColor'%3E%3C/path%3E%3C/svg%3E\")}.video-icon{background-image:url(\"data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' focusable='false' aria-hidden='true'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M4 2a2 2 0 0 0-2 2v16c0 1.1.9 2 2 2h16a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H4Zm0 2h16v16H4V4Zm5.5 3.13A1 1 0 0 0 8 8v8a1 1 0 0 0 1.5.87l7-4a1 1 0 0 0 0-1.74l-7-4ZM13.98 12 10 14.28V9.72L13.98 12Z' fill='currentColor'%3E%3C/path%3E%3C/svg%3E\")}.stat-value{font-size:12px}.use-button{font-size:12px;color:#86909C;cursor:pointer;white-space:nowrap}.use-button:hover{color:#1677FF}@media screen and (max-width: 768px){.card-container{padding:12px}.card-header{gap:8px;padding-bottom:12px}.card-icon{width:48px;height:48px}.card-title{font-size:16px;line-height:20px}.card-description{font-size:12px;line-height:16px;height:48px}}";
5
5
 
@@ -143,7 +143,7 @@ const PcmCard$1 = /*@__PURE__*/ proxyCustomElement(class PcmCard extends H {
143
143
  const starsCount = this.botData?.follow_count || 0;
144
144
  const usageCount = this.botData?.view_count || 0;
145
145
 
146
- return (h("div", { key: '686774ebe2a5e2942c7e41d73a9fd8ae8e427f5d', class: "card-container" }, this.loading ? (h("div", { class: "loading-container" }, h("div", { class: "loading-spinner" }), h("div", null, "\u52A0\u8F7D\u4E2D..."))) : this.error ? (h("div", { class: "error-container" }, h("div", { class: "error-icon" }, "!"), h("div", { class: "error-message" }, this.error))) : (h("div", null, h("div", { class: "card-header" }, icon && (h("div", { class: "card-icon" }, h("img", { src: icon, alt: title }))), h("div", { class: "card-info" }, h("div", { class: "title-row" }, h("div", { class: "title-wrapper" }, h("div", { class: "card-title" }, title)), this.showChatTag && hasChatTag && h("div", { class: "chat-tag" }, hasChatTag)), authorName && (h("div", { class: "author-row" }, authorAvatar && (h("img", { class: "author-avatar", src: authorAvatar, alt: authorName })), h("div", { class: "author-name" }, authorName))), desc && (h("div", { class: "card-description" }, desc)))), h("div", { class: "card-footer" }, h("div", { class: "stats-container" }, h("div", { class: "stat-item" }, h("span", { class: "stat-icon user-icon" }), h("div", { class: "stat-value" }, usersCount)), h("div", { class: "stat-item" }, h("span", { class: "stat-icon star-icon" }), h("div", { class: "stat-value" }, starsCount)), h("div", { class: "stat-item" }, h("span", { class: "stat-icon video-icon" }), h("div", { class: "stat-value" }, usageCount))), h("div", { class: "use-button" }, this.useButtonText || '立即使用'))))));
146
+ return (h("div", { key: '97827af60487bae41aeb80fcea46d8e2dd4b072a', class: "card-container" }, this.loading ? (h("div", { class: "loading-container" }, h("div", { class: "loading-spinner" }), h("div", null, "\u52A0\u8F7D\u4E2D..."))) : this.error ? (h("div", { class: "error-container" }, h("div", { class: "error-icon" }, "!"), h("div", { class: "error-message" }, this.error))) : (h("div", null, h("div", { class: "card-header" }, icon && (h("div", { class: "card-icon" }, h("img", { src: icon, alt: title }))), h("div", { class: "card-info" }, h("div", { class: "title-row" }, h("div", { class: "title-wrapper" }, h("div", { class: "card-title" }, title)), this.showChatTag && hasChatTag && h("div", { class: "chat-tag" }, hasChatTag)), authorName && (h("div", { class: "author-row" }, authorAvatar && (h("img", { class: "author-avatar", src: authorAvatar, alt: authorName })), h("div", { class: "author-name" }, authorName))), desc && (h("div", { class: "card-description" }, desc)))), h("div", { class: "card-footer" }, h("div", { class: "stats-container" }, h("div", { class: "stat-item" }, h("span", { class: "stat-icon user-icon" }), h("div", { class: "stat-value" }, usersCount)), h("div", { class: "stat-item" }, h("span", { class: "stat-icon star-icon" }), h("div", { class: "stat-value" }, starsCount)), h("div", { class: "stat-item" }, h("span", { class: "stat-icon video-icon" }), h("div", { class: "stat-value" }, usageCount))), h("div", { class: "use-button" }, this.useButtonText || '立即使用'))))));
147
147
  }
148
148
  static get watchers() { return {
149
149
  "botId": ["watchBotIdHandler"],
@@ -1 +1 @@
1
- {"file":"pcm-card.js","mappings":";;;AAAA,MAAM,UAAU,GAAG,0mJAA0mJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["src/components/pcm-card/pcm-card.css?tag=pcm-card&encapsulation=shadow"],"sourcesContent":[":host {\r\n display: block;\r\n}\r\n\r\n/* 加载和错误状态样式 */\r\n.loading-container,\r\n.error-container {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n height: 200px;\r\n width: 100%;\r\n color: #86909C;\r\n font-size: 14px;\r\n text-align: center;\r\n}\r\n\r\n.loading-spinner {\r\n width: 32px;\r\n height: 32px;\r\n border: 3px solid #f3f3f3;\r\n border-top: 3px solid #1677FF;\r\n border-radius: 50%;\r\n margin-bottom: 12px;\r\n animation: spin 1s linear infinite;\r\n}\r\n\r\n@keyframes spin {\r\n 0% { transform: rotate(0deg); }\r\n 100% { transform: rotate(360deg); }\r\n}\r\n\r\n.error-icon {\r\n width: 32px;\r\n height: 32px;\r\n background-color: #FFF0F0;\r\n color: #F53F3F;\r\n border-radius: 50%;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n font-size: 20px;\r\n font-weight: bold;\r\n margin-bottom: 12px;\r\n}\r\n\r\n.error-message {\r\n color: #86909C;\r\n max-width: 80%;\r\n}\r\n\r\n.card-container {\r\n border-radius: 8px;\r\n padding: 16px;\r\n cursor: pointer;\r\n transition: all 0.2s ease;\r\n display: flex;\r\n flex-direction: column;\r\n background-color: #ffffff;\r\n border: 1px solid #E5E6EB;\r\n position: relative;\r\n height: 100%;\r\n min-width: 300px;\r\n}\r\n\r\n.card-container:hover {\r\n transform: translateY(-2px);\r\n box-shadow: 0 4px 16px rgba(0, 21, 41, 0.08);\r\n}\r\n\r\n.card-header {\r\n display: flex;\r\n width: 100%;\r\n padding-bottom: 16px;\r\n gap: 12px;\r\n}\r\n\r\n.card-icon {\r\n width: 64px;\r\n height: 64px;\r\n margin-right: 12px;\r\n flex-shrink: 0;\r\n overflow: hidden;\r\n border-radius: 2px;\r\n background-color: #f8f9fa;\r\n}\r\n\r\n.card-icon img {\r\n width: 100%;\r\n height: 100%;\r\n object-fit: contain;\r\n}\r\n\r\n.card-info {\r\n flex: 1;\r\n display: flex;\r\n flex-direction: column;\r\n overflow: hidden;\r\n}\r\n\r\n.title-row {\r\n display: flex;\r\n align-items: center;\r\n}\r\n\r\n.title-wrapper {\r\n flex: 1;\r\n margin-right: 8px;\r\n overflow: hidden;\r\n}\r\n\r\n.card-title {\r\n font-size: 18px;\r\n font-weight: 700;\r\n color: #1D2129;\r\n line-height: 24px;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n display: block;\r\n width: 100%;\r\n}\r\n\r\n.chat-tag {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n height: 24px;\r\n padding: 0 8px;\r\n background-color: #F2F7E8;\r\n color: #56961F;\r\n font-size: 12px;\r\n border-radius: 4px;\r\n font-weight: 500;\r\n flex-shrink: 0;\r\n}\r\n\r\n.author-row {\r\n display: flex;\r\n align-items: center;\r\n margin-top: 8px;\r\n}\r\n\r\n.author-avatar {\r\n width: 16px;\r\n height: 16px;\r\n border-radius: 50%;\r\n margin-right: 4px;\r\n background-color: #f8f9fa;\r\n overflow: hidden;\r\n}\r\n\r\n.author-name {\r\n font-size: 12px;\r\n color: #86909C;\r\n}\r\n\r\n.card-description {\r\n font-size: 12px;\r\n color: #86909C;\r\n margin-top: 8px;\r\n line-height: 18px;\r\n height: 54px;\r\n display: -webkit-box;\r\n -webkit-line-clamp: 3;\r\n -webkit-box-orient: vertical;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: pre-line;\r\n word-break: break-word;\r\n}\r\n\r\n.card-footer {\r\n padding-top: 16px;\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n border-top: 1px solid #E5E6EB;\r\n}\r\n\r\n.stats-container {\r\n display: flex;\r\n align-items: center;\r\n flex: 1;\r\n}\r\n\r\n.stat-item {\r\n display: flex;\r\n align-items: center;\r\n margin-right: 8px;\r\n color: #86909C;\r\n}\r\n\r\n.stat-icon {\r\n width: 16px;\r\n height: 16px;\r\n margin-right: 4px;\r\n background-repeat: no-repeat;\r\n background-position: center;\r\n background-size: contain;\r\n}\r\n\r\n.user-icon {\r\n /* 为图标添加SVG背景 */\r\n background-image: url(\"data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' focusable='false' aria-hidden='true'%3E%3Cpath d='M12 14c-3.3 0-6-2.7-6-6s2.7-6 6-6 6 2.7 6 6-2.7 6-6 6Zm0-10C9.8 4 8 5.8 8 8s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4Z' fill='currentColor'%3E%3C/path%3E%3Cpath d='M21.9 20.6c-.1-.2-2.3-5.6-9.9-5.6-7.6 0-9.8 5.4-9.9 5.6-.2.5 0 1.1.6 1.3.5.2 1.1 0 1.3-.5 0-.2 1.8-4.4 8-4.4s8 4.2 8.1 4.4c.2.5.8.8 1.3.5.5-.2.7-.8.5-1.3Z' fill='currentColor'%3E%3C/path%3E%3C/svg%3E\");\r\n}\r\n\r\n.star-icon {\r\n /* 为图标添加SVG背景 */\r\n background-image: url(\"data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' focusable='false' aria-hidden='true'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M12 5.03 9.57 9.1c-.17.3-.46.5-.8.55l-4.3.79 3 3.46c.22.26.32.6.28.93l-.62 4.46 4.41-1.9c.3-.12.63-.12.92 0l4.4 1.9-.6-4.46c-.05-.34.05-.67.27-.93l3-3.46-4.3-.79a1.17 1.17 0 0 1-.8-.55L12 5.03Zm-1-2.46a1.16 1.16 0 0 1 2 0l3.03 5.07 5.51 1c.89.17 1.26 1.24.68 1.92l-3.8 4.4.77 5.71c.13.9-.78 1.6-1.61 1.23L12 19.5l-5.58 2.4a1.17 1.17 0 0 1-1.61-1.23l.78-5.7-3.8-4.4a1.17 1.17 0 0 1 .67-1.92l5.51-1L11 2.56Z' fill='currentColor'%3E%3C/path%3E%3C/svg%3E\");\r\n}\r\n\r\n.video-icon {\r\n /* 为图标添加SVG背景 */\r\n background-image: url(\"data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' focusable='false' aria-hidden='true'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M4 2a2 2 0 0 0-2 2v16c0 1.1.9 2 2 2h16a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H4Zm0 2h16v16H4V4Zm5.5 3.13A1 1 0 0 0 8 8v8a1 1 0 0 0 1.5.87l7-4a1 1 0 0 0 0-1.74l-7-4ZM13.98 12 10 14.28V9.72L13.98 12Z' fill='currentColor'%3E%3C/path%3E%3C/svg%3E\");\r\n}\r\n\r\n.stat-value {\r\n font-size: 12px;\r\n}\r\n\r\n.use-button {\r\n font-size: 12px;\r\n color: #86909C;\r\n cursor: pointer;\r\n white-space: nowrap;\r\n}\r\n\r\n.use-button:hover {\r\n color: #1677FF;\r\n}\r\n\r\n/* 响应式样式 */\r\n@media screen and (max-width: 768px) {\r\n .card-container {\r\n padding: 12px;\r\n }\r\n \r\n .card-header {\r\n gap: 8px;\r\n padding-bottom: 12px;\r\n }\r\n \r\n .card-icon {\r\n width: 48px;\r\n height: 48px;\r\n }\r\n \r\n .card-title {\r\n font-size: 16px;\r\n line-height: 20px;\r\n }\r\n \r\n .card-description {\r\n font-size: 12px;\r\n line-height: 16px;\r\n height: 48px;\r\n }\r\n} "],"version":3}
1
+ {"file":"pcm-card.js","mappings":";;;AAAA,MAAM,UAAU,GAAG,0mJAA0mJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["src/components/pcm-card/pcm-card.css?tag=pcm-card&encapsulation=shadow"],"sourcesContent":[":host {\n display: block;\n}\n\n/* 加载和错误状态样式 */\n.loading-container,\n.error-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 200px;\n width: 100%;\n color: #86909C;\n font-size: 14px;\n text-align: center;\n}\n\n.loading-spinner {\n width: 32px;\n height: 32px;\n border: 3px solid #f3f3f3;\n border-top: 3px solid #1677FF;\n border-radius: 50%;\n margin-bottom: 12px;\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n}\n\n.error-icon {\n width: 32px;\n height: 32px;\n background-color: #FFF0F0;\n color: #F53F3F;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 20px;\n font-weight: bold;\n margin-bottom: 12px;\n}\n\n.error-message {\n color: #86909C;\n max-width: 80%;\n}\n\n.card-container {\n border-radius: 8px;\n padding: 16px;\n cursor: pointer;\n transition: all 0.2s ease;\n display: flex;\n flex-direction: column;\n background-color: #ffffff;\n border: 1px solid #E5E6EB;\n position: relative;\n height: 100%;\n min-width: 300px;\n}\n\n.card-container:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 16px rgba(0, 21, 41, 0.08);\n}\n\n.card-header {\n display: flex;\n width: 100%;\n padding-bottom: 16px;\n gap: 12px;\n}\n\n.card-icon {\n width: 64px;\n height: 64px;\n margin-right: 12px;\n flex-shrink: 0;\n overflow: hidden;\n border-radius: 2px;\n background-color: #f8f9fa;\n}\n\n.card-icon img {\n width: 100%;\n height: 100%;\n object-fit: contain;\n}\n\n.card-info {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n}\n\n.title-row {\n display: flex;\n align-items: center;\n}\n\n.title-wrapper {\n flex: 1;\n margin-right: 8px;\n overflow: hidden;\n}\n\n.card-title {\n font-size: 18px;\n font-weight: 700;\n color: #1D2129;\n line-height: 24px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n display: block;\n width: 100%;\n}\n\n.chat-tag {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 24px;\n padding: 0 8px;\n background-color: #F2F7E8;\n color: #56961F;\n font-size: 12px;\n border-radius: 4px;\n font-weight: 500;\n flex-shrink: 0;\n}\n\n.author-row {\n display: flex;\n align-items: center;\n margin-top: 8px;\n}\n\n.author-avatar {\n width: 16px;\n height: 16px;\n border-radius: 50%;\n margin-right: 4px;\n background-color: #f8f9fa;\n overflow: hidden;\n}\n\n.author-name {\n font-size: 12px;\n color: #86909C;\n}\n\n.card-description {\n font-size: 12px;\n color: #86909C;\n margin-top: 8px;\n line-height: 18px;\n height: 54px;\n display: -webkit-box;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: pre-line;\n word-break: break-word;\n}\n\n.card-footer {\n padding-top: 16px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n border-top: 1px solid #E5E6EB;\n}\n\n.stats-container {\n display: flex;\n align-items: center;\n flex: 1;\n}\n\n.stat-item {\n display: flex;\n align-items: center;\n margin-right: 8px;\n color: #86909C;\n}\n\n.stat-icon {\n width: 16px;\n height: 16px;\n margin-right: 4px;\n background-repeat: no-repeat;\n background-position: center;\n background-size: contain;\n}\n\n.user-icon {\n /* 为图标添加SVG背景 */\n background-image: url(\"data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' focusable='false' aria-hidden='true'%3E%3Cpath d='M12 14c-3.3 0-6-2.7-6-6s2.7-6 6-6 6 2.7 6 6-2.7 6-6 6Zm0-10C9.8 4 8 5.8 8 8s1.8 4 4 4 4-1.8 4-4-1.8-4-4-4Z' fill='currentColor'%3E%3C/path%3E%3Cpath d='M21.9 20.6c-.1-.2-2.3-5.6-9.9-5.6-7.6 0-9.8 5.4-9.9 5.6-.2.5 0 1.1.6 1.3.5.2 1.1 0 1.3-.5 0-.2 1.8-4.4 8-4.4s8 4.2 8.1 4.4c.2.5.8.8 1.3.5.5-.2.7-.8.5-1.3Z' fill='currentColor'%3E%3C/path%3E%3C/svg%3E\");\n}\n\n.star-icon {\n /* 为图标添加SVG背景 */\n background-image: url(\"data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' focusable='false' aria-hidden='true'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M12 5.03 9.57 9.1c-.17.3-.46.5-.8.55l-4.3.79 3 3.46c.22.26.32.6.28.93l-.62 4.46 4.41-1.9c.3-.12.63-.12.92 0l4.4 1.9-.6-4.46c-.05-.34.05-.67.27-.93l3-3.46-4.3-.79a1.17 1.17 0 0 1-.8-.55L12 5.03Zm-1-2.46a1.16 1.16 0 0 1 2 0l3.03 5.07 5.51 1c.89.17 1.26 1.24.68 1.92l-3.8 4.4.77 5.71c.13.9-.78 1.6-1.61 1.23L12 19.5l-5.58 2.4a1.17 1.17 0 0 1-1.61-1.23l.78-5.7-3.8-4.4a1.17 1.17 0 0 1 .67-1.92l5.51-1L11 2.56Z' fill='currentColor'%3E%3C/path%3E%3C/svg%3E\");\n}\n\n.video-icon {\n /* 为图标添加SVG背景 */\n background-image: url(\"data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg' width='1em' height='1em' focusable='false' aria-hidden='true'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M4 2a2 2 0 0 0-2 2v16c0 1.1.9 2 2 2h16a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H4Zm0 2h16v16H4V4Zm5.5 3.13A1 1 0 0 0 8 8v8a1 1 0 0 0 1.5.87l7-4a1 1 0 0 0 0-1.74l-7-4ZM13.98 12 10 14.28V9.72L13.98 12Z' fill='currentColor'%3E%3C/path%3E%3C/svg%3E\");\n}\n\n.stat-value {\n font-size: 12px;\n}\n\n.use-button {\n font-size: 12px;\n color: #86909C;\n cursor: pointer;\n white-space: nowrap;\n}\n\n.use-button:hover {\n color: #1677FF;\n}\n\n/* 响应式样式 */\n@media screen and (max-width: 768px) {\n .card-container {\n padding: 12px;\n }\n \n .card-header {\n gap: 8px;\n padding-bottom: 12px;\n }\n \n .card-icon {\n width: 48px;\n height: 48px;\n }\n \n .card-title {\n font-size: 16px;\n line-height: 20px;\n }\n \n .card-description {\n font-size: 12px;\n line-height: 16px;\n height: 48px;\n }\n} "],"version":3}
@@ -1,4 +1,4 @@
1
- import { C as ChatMessageComponent, d as defineCustomElement$1 } from './p-CjbFHLT7.js';
1
+ import { C as ChatMessageComponent, d as defineCustomElement$1 } from './p-De3VHEUn.js';
2
2
 
3
3
  const PcmChatMessage = ChatMessageComponent;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,4 +1,4 @@
1
- import { P as PcmDrawer$1, d as defineCustomElement$1 } from './p-D2Z8casl.js';
1
+ import { P as PcmDrawer$1, d as defineCustomElement$1 } from './p-CuIvbaWY.js';
2
2
 
3
3
  const PcmDrawer = PcmDrawer$1;
4
4
  const defineCustomElement = defineCustomElement$1;
@@ -1,7 +1,8 @@
1
- import { p as proxyCustomElement, H, c as createEvent, h } from './p-CR7WLzmM.js';
2
- import { a as authStore, u as uploadFileToBackend, b as sendSSERequest, c as synthesizeAudio, s as sendHttpRequest, v as verifyApiKey } from './p-AYWZDCn8.js';
3
- import { c as configStore } from './p-DUQ46MUh.js';
4
- import { d as defineCustomElement$2, S as SentryReporter } from './p-CjbFHLT7.js';
1
+ import { p as proxyCustomElement, H, d as createEvent, h } from './p-BdiUKin5.js';
2
+ import { a as authStore, u as uploadFileToBackend, b as sendSSERequest, c as synthesizeAudio, s as sendHttpRequest, v as verifyApiKey } from './p-B0WOTw9J.js';
3
+ import { c as configStore } from './p-BGXbWUJg.js';
4
+ import { S as SentryReporter } from './p-BW3r6Lrf.js';
5
+ import { d as defineCustomElement$2 } from './p-De3VHEUn.js';
5
6
 
6
7
  const pcmHrChatModalCss = ":host{display:block}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0, 0, 0, 0.5);display:flex;justify-content:center;align-items:center;overflow-y:auto;padding:20px;z-index:1000}.fullscreen-overlay{padding:0}.modal-container{background:white;border-radius:8px;width:100%;max-width:800px;display:flex;flex-direction:column;position:relative;margin:auto}.modal-container.fullscreen{width:100vw;max-width:none;height:100%;border-radius:0;margin:0;display:flex;flex-direction:column;height:100vh;max-height:100vh}.modal-container.fullscreen>div:not(.modal-header):not(.initial-upload){display:flex;flex-direction:column;flex:1;overflow:hidden;height:100%}.pc-layout{width:80%;max-width:800px;min-width:320px;min-height:400px}@media screen and (max-width: 768px){.pc-layout{width:95%;}.modal-overlay{padding:0}.modal-container.fullscreen{height:-webkit-fill-available;max-height:-webkit-fill-available;padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom)}}.video-preview.placeholder{display:flex;justify-content:center;align-items:center;background:#EAEAEA}.placeholder-status{color:#00000066}.placeholder-status p{font-size:16px}.waiting-message p{margin:0;font-size:16px;color:white;font-weight:500}.recording-container{width:100%;display:flex;flex-direction:column;align-items:center}.video-area{width:100%;display:flex;flex-direction:column;align-items:center}.stop-recording-button{width:100%;height:100%;font-size:16px;background:#f44336;border-radius:6px;color:white;border:none;cursor:pointer}.stop-recording-button:hover{background:#d32f2f}.play-audio-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:4px 16px;height:50px;border-bottom:1px solid #e8e8e8;flex-shrink:0;}.header-left{display:flex;align-items:center;gap:8px}.header-left div{font-size:16px}.header-icon{width:24px;height:24px}.close-button{background:transparent;border:none;cursor:pointer;padding:8px;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:4px}.close-button:hover{background-color:rgba(0, 0, 0, 0.04)}.close-button span{font-size:24px;line-height:1;color:#999}.close-button:hover span{color:#666}.chat-history{position:relative;flex:1;overflow-y:auto;padding:20px;scroll-behavior:smooth;min-height:200px;background:url(https://pcm-resource-1312611446.cos.ap-guangzhou.myqcloud.com/web/sdk/chat_bg.png);background-size:100%}.fullscreen .chat-history{height:auto;flex:1 1 auto}.message-input{padding:16px;border-top:1px solid #eee;display:flex;gap:8px;align-items:center}.message-input input{flex:1;padding:8px 12px;border:1px solid #ddd;border-radius:4px;outline:none;transition:border-color 0.2s ease}.message-input input:focus{border-color:#bbb}.message{margin-bottom:16px;opacity:1;transition:opacity 0.3s ease}.message-content{max-width:70%;padding:8px 12px;border-radius:8px;word-break:break-word}.message-content p{margin:0;word-break:break-word}.user-message{display:flex;justify-content:flex-end}.agent-message{display:flex;justify-content:flex-start}.user-message .message-content{background-color:#007bff;color:white}.agent-message .message-content{background-color:#f1f1f1}.message-time{font-size:12px;color:#999;margin-top:4px;display:block}.send-button{background-color:#1890ff;color:white;border:none;border-radius:4px;padding:8px 16px;cursor:pointer;font-weight:500}.send-button:disabled{background-color:#ccc;cursor:not-allowed}.empty-state{display:flex;justify-content:center;align-items:center;height:100%;color:#999;text-align:center}.loading-container{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;flex-direction:column;justify-content:center;align-items:center;background-color:rgba(255, 255, 255, 0.98);z-index:1;opacity:1;transition:opacity 0.3s ease}.loading-container p{margin-top:16px;color:#666;font-size:14px}.loading-spinner{width:40px;height:40px;border:3px solid #f3f3f3;border-top:3px solid #1890ff;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.messages-wrapper{width:100%;min-height:100%;display:flex;flex-direction:column;justify-content:flex-end}.messages-wrapper.has-overflow{justify-content:flex-start}.suggested-questions{display:flex;flex-direction:column;gap:8px;padding:16px}.suggested-question{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background-color:#f3f4f6;border-radius:4px;cursor:pointer;font-size:14px;color:#374151;transition:background-color 0.2s}.suggested-question:hover{background-color:#e5e7eb}.arrow-right{margin-left:8px}.loading-suggestions{display:flex;justify-content:center;padding:16px}.loading-spinner-small{width:20px;height:20px;border:2px solid #e5e7eb;border-top-color:#6b7280;border-radius:50%;animation:spin 1s linear infinite}.upload-button{background:transparent;border:none;cursor:pointer;padding:8px;display:flex;align-items:center;justify-content:center;color:#666;border-radius:4px;transition:background-color 0.2s}.upload-button:hover{background-color:rgba(0, 0, 0, 0.04)}.upload-button svg{width:20px;height:20px}.file-input{display:none}.selected-file{font-size:12px;color:#666;margin-left:8px;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.input-wrapper{flex:1;display:flex;align-items:center;border:1px solid #ddd;border-radius:4px;padding:0 4px;background:white}.input-wrapper input{border:none;flex:1;padding:8px;outline:none}.input-wrapper:focus-within{border-color:#bbb}.file-name{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - 50px)}.remove-file{background:transparent;border:none;color:#999;cursor:pointer;padding:4px 8px;font-size:16px;line-height:1;border-radius:4px;transition:all 0.2s}.remove-file:hover{background-color:#f0f0f0;color:#666}.initial-upload{padding:16px;display:flex;flex-direction:column;align-items:center;height:100%}.upload-section{max-width:600px;width:100%;text-align:center}.upload-area{cursor:pointer;width:100%}.upload-placeholder{transition:all 0.3s ease;display:flex;flex-direction:column;align-items:center;background:rgba(0, 0, 0, 0.02);border:1px dashed #d9d9d9;border-radius:8px}.upload-placeholder:hover{border:1px dashed #1890ff}.upload-placeholder img{margin-top:8px;width:50px;height:50px}.upload-placeholder .upload-text{margin:4px 0;color:#332F39;font-size:14px}.upload-placeholder .upload-hint{font-size:14px;color:#949AA5;margin-top:8px;padding:0px 10px}.file-item{position:relative;padding:16px;border:1px solid #e2e8f0;border-radius:8px;transition:border-color 0.3s;cursor:pointer;margin-bottom:16px;display:flex;justify-content:space-between;align-items:center}.file-item:hover{border-color:#0D75FB}.file-item-content{display:flex;align-items:center;gap:8px;flex:1;min-width:0;overflow:hidden}.file-icon{color:#0D75FB;flex-shrink:0}.file-name{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - 50px)}.remove-file{background:transparent;border:none;color:#94a3b8;cursor:pointer;font-size:18px;display:flex;align-items:center;justify-content:center;padding:4px;margin-left:8px;border-radius:4px;transition:all 0.2s}.remove-file:hover{background-color:#f1f5f9;color:#475569}.file-input{display:none}.submit-button{margin-top:10px;padding:10px 30px;background:#0D75FB;color:white;border:none;border-radius:4px;font-size:16px;cursor:pointer;transition:all 0.3s ease;width:100%;max-width:400px}.submit-button:disabled{background:#ccc;cursor:not-allowed}.submit-button:hover:not(:disabled){background:#40a9ff}.category-select,.dimension-select{margin:30px 0}.category-options,.dimension-options{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px}.category-button,.dimension-button{padding:12px 16px;border:1px solid #E5E5E5;border-radius:6px;background:white;cursor:pointer;transition:all 0.3s}.category-button:hover,.dimension-button:hover{background:#f5f5f5}.category-button.selected{background-image:linear-gradient(111deg, #4A9FFF 0%, #1058FF 100%);color:white}.dimension-button.selected{background-image:linear-gradient(111deg, #4A9FFF 0%, #1058FF 100%);color:white}.recording-section{border-top:1px solid #eee;display:flex;flex-direction:column;align-items:center;padding:20px;border-radius:14px 14px 0 0;flex:0 0 auto}.recording-section .video-preview{width:100%;height:200px;max-width:400px;position:relative;margin-bottom:10px;border:1px solid #ddd;border-radius:12px;overflow:hidden}.recording-section video{width:100%;height:100%;object-fit:cover}.recording-status{position:absolute;top:10px;left:10px;background-color:rgba(0, 0, 0, 0.6);color:white;padding:4px 8px;border-radius:4px;display:flex;align-items:center;gap:5px;font-size:14px;z-index:2}.recording-status .recording-dot{display:inline-block;width:10px;height:10px;background-color:red;border-radius:50%;margin-right:5px;animation:blink 1s infinite}.recording-status.warning{color:#ff4d4f;animation:blink 1s infinite}@keyframes blink{0%{opacity:1}50%{opacity:0.5}100%{opacity:1}}.recording-section .stop-recording-button{background-color:#f44336;color:white;border:none;cursor:pointer;font-weight:bold}.recording-section .stop-recording-button:hover{background-color:#d32f2f}.fullscreen{width:100vw;border-radius:0;height:100vh;display:flex;flex-direction:column;overflow-y:auto}.recording-controls{margin-top:10px;height:53px;width:100%;max-width:400px;display:flex;justify-content:center}.recording-controls .waiting-message{text-align:center;color:white;font-size:16px;background-image:linear-gradient(100deg, #4A9FFF 0%, #1058FF 100%);border-radius:6px;box-shadow:0 2px 8px rgba(0, 0, 0, 0.15);width:95%;display:flex;justify-content:center;align-items:center;cursor:pointer}.recording-controls .waiting-message.loading{background:#faad14}.recording-controls .waiting-message p{margin:0;font-size:16px;color:white;font-weight:500}.recording-controls .stop-recording-button{background-color:#dc3545;color:white;border:none;cursor:pointer;font-size:16px}.recording-controls .stop-recording-button:hover{background-color:#c82333}.recording-controls .stop-recording-button.disabled{background:#ccc;cursor:not-allowed}.recording-controls .stop-recording-button.disabled:hover{background:#ccc}.progress-container{display:flex;justify-content:space-between;align-items:center;width:100%;max-width:400px;margin-top:10px;padding:0 5px}.progress-bar-container{height:4px;background-color:#E5E5E5;border-radius:2px;overflow:hidden;margin-right:10px;width:75px}.progress-bar{height:100%;background-image:linear-gradient(111deg, #4A9FFF 0%, #1058FF 100%);border-radius:2px;transition:width 0.3s ease}.progress-text{font-size:14px;color:#666;white-space:nowrap}";
7
8
 
@@ -1 +1 @@
1
- {"file":"pcm-hr-chat-modal.js","mappings":";;;;;AAAA,MAAM,iBAAiB,GAAG,yiVAAyiV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["src/components/pcm-hr-chat-modal/pcm-hr-chat-modal.css?tag=pcm-hr-chat-modal&encapsulation=shadow"],"sourcesContent":[":host {\r\n display: block;\r\n}\r\n\r\n.modal-overlay {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n background-color: rgba(0, 0, 0, 0.5);\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n overflow-y: auto;\r\n padding: 20px;\r\n z-index: 1000;\r\n}\r\n\r\n/* 全屏模式下取消 padding */\r\n.fullscreen-overlay {\r\n padding: 0;\r\n}\r\n\r\n.modal-container {\r\n background: white;\r\n border-radius: 8px;\r\n width: 100%;\r\n max-width: 800px;\r\n display: flex;\r\n flex-direction: column;\r\n position: relative;\r\n margin: auto;\r\n}\r\n\r\n/* 全屏模式样式 */\r\n.modal-container.fullscreen {\r\n width: 100vw;\r\n max-width: none;\r\n height: 100%;\r\n border-radius: 0;\r\n margin: 0;\r\n display: flex;\r\n flex-direction: column;\r\n height: 100vh;\r\n max-height: 100vh;\r\n}\r\n\r\n/* 确保内容区域也使用 flex 布局并占满剩余空间 */\r\n.modal-container.fullscreen > div:not(.modal-header):not(.initial-upload) {\r\n display: flex;\r\n flex-direction: column;\r\n flex: 1;\r\n overflow: hidden; /* 防止内容溢出 */\r\n height: 100%;\r\n}\r\n\r\n/* PC端布局 */\r\n.pc-layout {\r\n width: 80%;\r\n max-width: 800px;\r\n /* height: 80vh; */\r\n /* max-height: 700px; */\r\n min-width: 320px;\r\n min-height: 400px;\r\n}\r\n\r\n\r\n/* 响应式布局 */\r\n@media screen and (max-width: 768px) {\r\n .pc-layout {\r\n width: 95%;\r\n /* height: 90vh; */\r\n }\r\n\r\n .modal-overlay {\r\n padding: 0;\r\n }\r\n\r\n .modal-container.fullscreen {\r\n /* 支持 iOS Safari */\r\n height: -webkit-fill-available;\r\n max-height: -webkit-fill-available;\r\n /* 确保内容不会被顶部状态栏和底部工具栏遮挡 */\r\n padding: env(safe-area-inset-top) 0 env(safe-area-inset-bottom);\r\n }\r\n\r\n}\r\n.video-preview.placeholder {\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n background: #EAEAEA;\r\n}\r\n\r\n.placeholder-status {\r\n color: #00000066;\r\n}\r\n\r\n.placeholder-status p{\r\n font-size: 16px;\r\n}\r\n\r\n.waiting-message p {\r\n margin: 0;\r\n font-size: 16px;\r\n color: white;\r\n font-weight: 500;\r\n}\r\n\r\n.recording-container {\r\n width: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n}\r\n\r\n\r\n\r\n.video-area {\r\n width: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n}\r\n\r\n.stop-recording-button {\r\n width: 100%;\r\n height: 100%;\r\n font-size: 16px;\r\n background: #f44336;\r\n border-radius: 6px;\r\n color: white;\r\n border: none;\r\n cursor: pointer;\r\n}\r\n\r\n.stop-recording-button:hover {\r\n background: #d32f2f;\r\n}\r\n\r\n.play-audio-container {\r\n width: 100%;\r\n height: 100%;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n}\r\n\r\n.modal-header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n padding: 4px 16px;\r\n height: 50px;\r\n border-bottom: 1px solid #e8e8e8;\r\n flex-shrink: 0; /* 防止头部被压缩 */\r\n}\r\n\r\n.header-left {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n}\r\n\r\n.header-left div {\r\n font-size: 16px;\r\n}\r\n\r\n.header-icon {\r\n width: 24px;\r\n height: 24px;\r\n}\r\n\r\n.close-button {\r\n background: transparent;\r\n border: none;\r\n cursor: pointer;\r\n padding: 8px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 32px;\r\n height: 32px;\r\n border-radius: 4px;\r\n}\r\n\r\n.close-button:hover {\r\n background-color: rgba(0, 0, 0, 0.04);\r\n}\r\n\r\n.close-button span {\r\n font-size: 24px;\r\n line-height: 1;\r\n color: #999;\r\n}\r\n\r\n.close-button:hover span {\r\n color: #666;\r\n}\r\n\r\n.chat-history {\r\n position: relative;\r\n flex: 1;\r\n overflow-y: auto;\r\n padding: 20px;\r\n scroll-behavior: smooth;\r\n min-height: 200px;\r\n background: url(https://pcm-resource-1312611446.cos.ap-guangzhou.myqcloud.com/web/sdk/chat_bg.png);\r\n background-size: 100%;\r\n}\r\n\r\n/* 添加全屏模式下的样式 */\r\n.fullscreen .chat-history {\r\n height: auto;\r\n flex: 1 1 auto;\r\n}\r\n\r\n\r\n.message-input {\r\n padding: 16px;\r\n border-top: 1px solid #eee;\r\n display: flex;\r\n gap: 8px;\r\n align-items: center;\r\n}\r\n\r\n.message-input input {\r\n flex: 1;\r\n padding: 8px 12px;\r\n border: 1px solid #ddd;\r\n border-radius: 4px;\r\n outline: none;\r\n transition: border-color 0.2s ease;\r\n}\r\n\r\n.message-input input:focus {\r\n border-color: #bbb;\r\n}\r\n\r\n/* 消息样式 */\r\n.message {\r\n margin-bottom: 16px;\r\n opacity: 1;\r\n transition: opacity 0.3s ease;\r\n}\r\n\r\n.message-content {\r\n max-width: 70%;\r\n padding: 8px 12px;\r\n border-radius: 8px;\r\n word-break: break-word;\r\n}\r\n\r\n.message-content p {\r\n margin: 0;\r\n word-break: break-word;\r\n}\r\n\r\n.user-message {\r\n display: flex;\r\n justify-content: flex-end;\r\n}\r\n\r\n.agent-message {\r\n display: flex;\r\n justify-content: flex-start;\r\n}\r\n\r\n.user-message .message-content {\r\n background-color: #007bff;\r\n color: white;\r\n}\r\n\r\n.agent-message .message-content {\r\n background-color: #f1f1f1;\r\n}\r\n\r\n.message-time {\r\n font-size: 12px;\r\n color: #999;\r\n margin-top: 4px;\r\n display: block;\r\n}\r\n\r\n.send-button {\r\n background-color: #1890ff;\r\n color: white;\r\n border: none;\r\n border-radius: 4px;\r\n padding: 8px 16px;\r\n cursor: pointer;\r\n font-weight: 500;\r\n}\r\n\r\n.send-button:disabled {\r\n background-color: #ccc;\r\n cursor: not-allowed;\r\n}\r\n\r\n.empty-state {\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n height: 100%;\r\n color: #999;\r\n text-align: center;\r\n}\r\n\r\n.loading-container {\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n background-color: rgba(255, 255, 255, 0.98);\r\n z-index: 1;\r\n opacity: 1;\r\n transition: opacity 0.3s ease;\r\n}\r\n\r\n.loading-container p {\r\n margin-top: 16px;\r\n color: #666;\r\n font-size: 14px;\r\n}\r\n\r\n.loading-spinner {\r\n width: 40px;\r\n height: 40px;\r\n border: 3px solid #f3f3f3;\r\n border-top: 3px solid #1890ff;\r\n border-radius: 50%;\r\n animation: spin 1s linear infinite;\r\n}\r\n\r\n@keyframes spin {\r\n 0% {\r\n transform: rotate(0deg);\r\n }\r\n\r\n 100% {\r\n transform: rotate(360deg);\r\n }\r\n}\r\n\r\n/* 修改 messages-wrapper 的样式 */\r\n.messages-wrapper {\r\n width: 100%;\r\n min-height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n /* 当内容少时,将内容放在底部 */\r\n justify-content: flex-end;\r\n}\r\n\r\n/* 当有很多消息时,取消固定在底部 */\r\n.messages-wrapper.has-overflow {\r\n justify-content: flex-start;\r\n}\r\n\r\n.suggested-questions {\r\n display: flex;\r\n flex-direction: column;\r\n gap: 8px;\r\n padding: 16px;\r\n}\r\n\r\n.suggested-question {\r\n display: flex;\r\n align-items: center;\r\n justify-content: space-between;\r\n padding: 8px 12px;\r\n background-color: #f3f4f6;\r\n border-radius: 4px;\r\n cursor: pointer;\r\n font-size: 14px;\r\n color: #374151;\r\n transition: background-color 0.2s;\r\n}\r\n\r\n.suggested-question:hover {\r\n background-color: #e5e7eb;\r\n}\r\n\r\n.arrow-right {\r\n margin-left: 8px;\r\n}\r\n\r\n.loading-suggestions {\r\n display: flex;\r\n justify-content: center;\r\n padding: 16px;\r\n}\r\n\r\n.loading-spinner-small {\r\n width: 20px;\r\n height: 20px;\r\n border: 2px solid #e5e7eb;\r\n border-top-color: #6b7280;\r\n border-radius: 50%;\r\n animation: spin 1s linear infinite;\r\n}\r\n\r\n/* 添加上传按钮样式 */\r\n.upload-button {\r\n background: transparent;\r\n border: none;\r\n cursor: pointer;\r\n padding: 8px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n color: #666;\r\n border-radius: 4px;\r\n transition: background-color 0.2s;\r\n}\r\n\r\n.upload-button:hover {\r\n background-color: rgba(0, 0, 0, 0.04);\r\n}\r\n\r\n.upload-button svg {\r\n width: 20px;\r\n height: 20px;\r\n}\r\n\r\n/* 隐藏原生文件输入框 */\r\n.file-input {\r\n display: none;\r\n}\r\n\r\n/* 添加文件名显示区域样式 */\r\n.selected-file {\r\n font-size: 12px;\r\n color: #666;\r\n margin-left: 8px;\r\n max-width: 150px;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n white-space: nowrap;\r\n}\r\n\r\n.input-wrapper {\r\n flex: 1;\r\n display: flex;\r\n align-items: center;\r\n border: 1px solid #ddd;\r\n border-radius: 4px;\r\n padding: 0 4px;\r\n background: white;\r\n}\r\n\r\n.input-wrapper input {\r\n border: none;\r\n flex: 1;\r\n padding: 8px;\r\n outline: none;\r\n}\r\n\r\n.input-wrapper:focus-within {\r\n border-color: #bbb;\r\n}\r\n\r\n/* 文件预览区域样式 */\r\n\r\n\r\n.file-name {\r\n font-weight: 500;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n max-width: calc(100% - 50px);\r\n}\r\n\r\n.remove-file {\r\n background: transparent;\r\n border: none;\r\n color: #999;\r\n cursor: pointer;\r\n padding: 4px 8px;\r\n font-size: 16px;\r\n line-height: 1;\r\n border-radius: 4px;\r\n transition: all 0.2s;\r\n}\r\n\r\n.remove-file:hover {\r\n background-color: #f0f0f0;\r\n color: #666;\r\n}\r\n\r\n.initial-upload {\r\n padding: 16px;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n height: 100%;\r\n}\r\n\r\n.upload-section {\r\n max-width: 600px;\r\n width: 100%;\r\n text-align: center;\r\n}\r\n\r\n.upload-area {\r\n cursor: pointer;\r\n width: 100%;\r\n}\r\n\r\n.upload-placeholder {\r\n transition: all 0.3s ease;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n background: rgba(0, 0, 0, 0.02);\r\n border: 1px dashed #d9d9d9;\r\n border-radius: 8px;\r\n}\r\n.upload-placeholder:hover {\r\n border: 1px dashed #1890ff;\r\n}\r\n\r\n.upload-placeholder img {\r\n margin-top: 8px;\r\n width: 50px;\r\n height: 50px;\r\n}\r\n\r\n.upload-placeholder .upload-text {\r\n margin: 4px 0;\r\n color: #332F39;\r\n font-size: 14px;\r\n}\r\n\r\n.upload-placeholder .upload-hint {\r\n font-size: 14px;\r\n color: #949AA5;\r\n margin-top: 8px;\r\n padding: 0px 10px;\r\n}\r\n\r\n\r\n/* 文件项样式 */\r\n.file-item {\r\n position: relative;\r\n padding: 16px;\r\n border: 1px solid #e2e8f0;\r\n border-radius: 8px;\r\n transition: border-color 0.3s;\r\n cursor: pointer;\r\n margin-bottom: 16px;\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n}\r\n\r\n.file-item:hover {\r\n border-color: #0D75FB;\r\n}\r\n\r\n.file-item-content {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n flex: 1;\r\n min-width: 0;\r\n overflow: hidden;\r\n}\r\n\r\n.file-icon {\r\n color: #0D75FB;\r\n flex-shrink: 0;\r\n}\r\n\r\n.file-name {\r\n font-weight: 500;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n max-width: calc(100% - 50px);\r\n}\r\n\r\n\r\n.remove-file {\r\n background: transparent;\r\n border: none;\r\n color: #94a3b8;\r\n cursor: pointer;\r\n font-size: 18px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n padding: 4px;\r\n margin-left: 8px;\r\n border-radius: 4px;\r\n transition: all 0.2s;\r\n}\r\n\r\n.remove-file:hover {\r\n background-color: #f1f5f9;\r\n color: #475569;\r\n}\r\n\r\n.file-input {\r\n display: none;\r\n}\r\n\r\n.submit-button {\r\n margin-top: 10px;\r\n padding: 10px 30px;\r\n background: #0D75FB;\r\n color: white;\r\n border: none;\r\n border-radius: 4px;\r\n font-size: 16px;\r\n cursor: pointer;\r\n transition: all 0.3s ease;\r\n width: 100%;\r\n max-width: 400px;\r\n}\r\n\r\n.submit-button:disabled {\r\n background: #ccc;\r\n cursor: not-allowed;\r\n}\r\n\r\n.submit-button:hover:not(:disabled) {\r\n background: #40a9ff;\r\n}\r\n\r\n.category-select,\r\n.dimension-select {\r\n margin: 30px 0;\r\n}\r\n\r\n.category-options,\r\n.dimension-options {\r\n display: flex;\r\n flex-wrap: wrap;\r\n gap: 10px;\r\n margin-top: 10px;\r\n}\r\n\r\n.category-button,\r\n.dimension-button {\r\n padding: 12px 16px;\r\n border: 1px solid #E5E5E5;\r\n border-radius: 6px;\r\n background: white;\r\n cursor: pointer;\r\n transition: all 0.3s;\r\n}\r\n\r\n.category-button:hover,\r\n.dimension-button:hover {\r\n background: #f5f5f5;\r\n}\r\n\r\n.category-button.selected {\r\n background-image: linear-gradient(111deg, #4A9FFF 0%, #1058FF 100%);\r\n color: white;\r\n}\r\n\r\n.dimension-button.selected {\r\n background-image: linear-gradient(111deg, #4A9FFF 0%, #1058FF 100%);\r\n color: white;\r\n}\r\n\r\n.recording-section {\r\n border-top: 1px solid #eee;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n padding: 20px;\r\n border-radius: 14px 14px 0 0;\r\n flex: 0 0 auto;\r\n}\r\n\r\n.recording-section .video-preview {\r\n width: 100%;\r\n height: 200px;\r\n max-width: 400px;\r\n position: relative;\r\n margin-bottom: 10px;\r\n border: 1px solid #ddd;\r\n border-radius: 12px;\r\n overflow: hidden;\r\n}\r\n\r\n.recording-section video {\r\n width: 100%;\r\n height: 100%;\r\n object-fit: cover;\r\n}\r\n\r\n/* 修改 recording-status 样式 */\r\n.recording-status {\r\n position: absolute;\r\n top: 10px;\r\n left: 10px;\r\n background-color: rgba(0, 0, 0, 0.6);\r\n color: white;\r\n padding: 4px 8px;\r\n border-radius: 4px;\r\n display: flex;\r\n align-items: center;\r\n gap: 5px;\r\n font-size: 14px;\r\n z-index: 2;\r\n}\r\n\r\n.recording-status .recording-dot {\r\n display: inline-block;\r\n width: 10px;\r\n height: 10px;\r\n background-color: red;\r\n border-radius: 50%;\r\n margin-right: 5px;\r\n animation: blink 1s infinite;\r\n}\r\n\r\n.recording-status.warning {\r\n color: #ff4d4f;\r\n animation: blink 1s infinite;\r\n}\r\n\r\n@keyframes blink {\r\n 0% {\r\n opacity: 1;\r\n }\r\n\r\n 50% {\r\n opacity: 0.5;\r\n }\r\n\r\n 100% {\r\n opacity: 1;\r\n }\r\n}\r\n\r\n.recording-section .stop-recording-button {\r\n background-color: #f44336;\r\n color: white;\r\n border: none;\r\n cursor: pointer;\r\n font-weight: bold;\r\n}\r\n\r\n.recording-section .stop-recording-button:hover {\r\n background-color: #d32f2f;\r\n}\r\n\r\n.fullscreen {\r\n width: 100vw;\r\n border-radius: 0;\r\n height: 100vh;\r\n display: flex;\r\n flex-direction: column;\r\n overflow-y: auto;\r\n}\r\n\r\n.recording-controls {\r\n margin-top: 10px;\r\n height: 53px;\r\n width: 100%;\r\n max-width: 400px;\r\n display: flex;\r\n justify-content: center;\r\n}\r\n\r\n.recording-controls .waiting-message {\r\n text-align: center;\r\n color: white;\r\n font-size: 16px;\r\n background-image: linear-gradient(100deg, #4A9FFF 0%, #1058FF 100%);\r\n border-radius: 6px;\r\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\r\n width: 95%;\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n cursor: pointer;\r\n}\r\n\r\n.recording-controls .waiting-message.loading {\r\n background: #faad14;\r\n}\r\n\r\n.recording-controls .waiting-message p {\r\n margin: 0;\r\n font-size: 16px;\r\n color: white;\r\n font-weight: 500;\r\n}\r\n\r\n.recording-controls .stop-recording-button {\r\n background-color: #dc3545;\r\n color: white;\r\n border: none;\r\n cursor: pointer;\r\n font-size: 16px;\r\n}\r\n\r\n.recording-controls .stop-recording-button:hover {\r\n background-color: #c82333;\r\n}\r\n\r\n/* 添加禁用状态的样式 */\r\n.recording-controls .stop-recording-button.disabled {\r\n background: #ccc;\r\n cursor: not-allowed;\r\n}\r\n\r\n.recording-controls .stop-recording-button.disabled:hover {\r\n background: #ccc;\r\n}\r\n\r\n/* 添加进度条和数字进度的样式 */\r\n.progress-container {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n width: 100%;\r\n max-width: 400px;\r\n margin-top: 10px;\r\n padding: 0 5px;\r\n}\r\n\r\n.progress-bar-container {\r\n height: 4px;\r\n background-color: #E5E5E5;\r\n border-radius: 2px;\r\n overflow: hidden;\r\n margin-right: 10px;\r\n width: 75px;\r\n}\r\n\r\n.progress-bar {\r\n height: 100%;\r\n background-image: linear-gradient(111deg, #4A9FFF 0%, #1058FF 100%);\r\n border-radius: 2px;\r\n transition: width 0.3s ease;\r\n}\r\n\r\n.progress-text {\r\n font-size: 14px;\r\n color: #666;\r\n white-space: nowrap;\r\n}"],"version":3}
1
+ {"file":"pcm-hr-chat-modal.js","mappings":";;;;;;AAAA,MAAM,iBAAiB,GAAG,yiVAAyiV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["src/components/pcm-hr-chat-modal/pcm-hr-chat-modal.css?tag=pcm-hr-chat-modal&encapsulation=shadow"],"sourcesContent":[":host {\n display: block;\n}\n\n.modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.5);\n display: flex;\n justify-content: center;\n align-items: center;\n overflow-y: auto;\n padding: 20px;\n z-index: 1000;\n}\n\n/* 全屏模式下取消 padding */\n.fullscreen-overlay {\n padding: 0;\n}\n\n.modal-container {\n background: white;\n border-radius: 8px;\n width: 100%;\n max-width: 800px;\n display: flex;\n flex-direction: column;\n position: relative;\n margin: auto;\n}\n\n/* 全屏模式样式 */\n.modal-container.fullscreen {\n width: 100vw;\n max-width: none;\n height: 100%;\n border-radius: 0;\n margin: 0;\n display: flex;\n flex-direction: column;\n height: 100vh;\n max-height: 100vh;\n}\n\n/* 确保内容区域也使用 flex 布局并占满剩余空间 */\n.modal-container.fullscreen > div:not(.modal-header):not(.initial-upload) {\n display: flex;\n flex-direction: column;\n flex: 1;\n overflow: hidden; /* 防止内容溢出 */\n height: 100%;\n}\n\n/* PC端布局 */\n.pc-layout {\n width: 80%;\n max-width: 800px;\n /* height: 80vh; */\n /* max-height: 700px; */\n min-width: 320px;\n min-height: 400px;\n}\n\n\n/* 响应式布局 */\n@media screen and (max-width: 768px) {\n .pc-layout {\n width: 95%;\n /* height: 90vh; */\n }\n\n .modal-overlay {\n padding: 0;\n }\n\n .modal-container.fullscreen {\n /* 支持 iOS Safari */\n height: -webkit-fill-available;\n max-height: -webkit-fill-available;\n /* 确保内容不会被顶部状态栏和底部工具栏遮挡 */\n padding: env(safe-area-inset-top) 0 env(safe-area-inset-bottom);\n }\n\n}\n.video-preview.placeholder {\n display: flex;\n justify-content: center;\n align-items: center;\n background: #EAEAEA;\n}\n\n.placeholder-status {\n color: #00000066;\n}\n\n.placeholder-status p{\n font-size: 16px;\n}\n\n.waiting-message p {\n margin: 0;\n font-size: 16px;\n color: white;\n font-weight: 500;\n}\n\n.recording-container {\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n\n\n.video-area {\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n.stop-recording-button {\n width: 100%;\n height: 100%;\n font-size: 16px;\n background: #f44336;\n border-radius: 6px;\n color: white;\n border: none;\n cursor: pointer;\n}\n\n.stop-recording-button:hover {\n background: #d32f2f;\n}\n\n.play-audio-container {\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n}\n\n.modal-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 4px 16px;\n height: 50px;\n border-bottom: 1px solid #e8e8e8;\n flex-shrink: 0; /* 防止头部被压缩 */\n}\n\n.header-left {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.header-left div {\n font-size: 16px;\n}\n\n.header-icon {\n width: 24px;\n height: 24px;\n}\n\n.close-button {\n background: transparent;\n border: none;\n cursor: pointer;\n padding: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: 4px;\n}\n\n.close-button:hover {\n background-color: rgba(0, 0, 0, 0.04);\n}\n\n.close-button span {\n font-size: 24px;\n line-height: 1;\n color: #999;\n}\n\n.close-button:hover span {\n color: #666;\n}\n\n.chat-history {\n position: relative;\n flex: 1;\n overflow-y: auto;\n padding: 20px;\n scroll-behavior: smooth;\n min-height: 200px;\n background: url(https://pcm-resource-1312611446.cos.ap-guangzhou.myqcloud.com/web/sdk/chat_bg.png);\n background-size: 100%;\n}\n\n/* 添加全屏模式下的样式 */\n.fullscreen .chat-history {\n height: auto;\n flex: 1 1 auto;\n}\n\n\n.message-input {\n padding: 16px;\n border-top: 1px solid #eee;\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.message-input input {\n flex: 1;\n padding: 8px 12px;\n border: 1px solid #ddd;\n border-radius: 4px;\n outline: none;\n transition: border-color 0.2s ease;\n}\n\n.message-input input:focus {\n border-color: #bbb;\n}\n\n/* 消息样式 */\n.message {\n margin-bottom: 16px;\n opacity: 1;\n transition: opacity 0.3s ease;\n}\n\n.message-content {\n max-width: 70%;\n padding: 8px 12px;\n border-radius: 8px;\n word-break: break-word;\n}\n\n.message-content p {\n margin: 0;\n word-break: break-word;\n}\n\n.user-message {\n display: flex;\n justify-content: flex-end;\n}\n\n.agent-message {\n display: flex;\n justify-content: flex-start;\n}\n\n.user-message .message-content {\n background-color: #007bff;\n color: white;\n}\n\n.agent-message .message-content {\n background-color: #f1f1f1;\n}\n\n.message-time {\n font-size: 12px;\n color: #999;\n margin-top: 4px;\n display: block;\n}\n\n.send-button {\n background-color: #1890ff;\n color: white;\n border: none;\n border-radius: 4px;\n padding: 8px 16px;\n cursor: pointer;\n font-weight: 500;\n}\n\n.send-button:disabled {\n background-color: #ccc;\n cursor: not-allowed;\n}\n\n.empty-state {\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n color: #999;\n text-align: center;\n}\n\n.loading-container {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n background-color: rgba(255, 255, 255, 0.98);\n z-index: 1;\n opacity: 1;\n transition: opacity 0.3s ease;\n}\n\n.loading-container p {\n margin-top: 16px;\n color: #666;\n font-size: 14px;\n}\n\n.loading-spinner {\n width: 40px;\n height: 40px;\n border: 3px solid #f3f3f3;\n border-top: 3px solid #1890ff;\n border-radius: 50%;\n animation: spin 1s linear infinite;\n}\n\n@keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n}\n\n/* 修改 messages-wrapper 的样式 */\n.messages-wrapper {\n width: 100%;\n min-height: 100%;\n display: flex;\n flex-direction: column;\n /* 当内容少时,将内容放在底部 */\n justify-content: flex-end;\n}\n\n/* 当有很多消息时,取消固定在底部 */\n.messages-wrapper.has-overflow {\n justify-content: flex-start;\n}\n\n.suggested-questions {\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding: 16px;\n}\n\n.suggested-question {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 12px;\n background-color: #f3f4f6;\n border-radius: 4px;\n cursor: pointer;\n font-size: 14px;\n color: #374151;\n transition: background-color 0.2s;\n}\n\n.suggested-question:hover {\n background-color: #e5e7eb;\n}\n\n.arrow-right {\n margin-left: 8px;\n}\n\n.loading-suggestions {\n display: flex;\n justify-content: center;\n padding: 16px;\n}\n\n.loading-spinner-small {\n width: 20px;\n height: 20px;\n border: 2px solid #e5e7eb;\n border-top-color: #6b7280;\n border-radius: 50%;\n animation: spin 1s linear infinite;\n}\n\n/* 添加上传按钮样式 */\n.upload-button {\n background: transparent;\n border: none;\n cursor: pointer;\n padding: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #666;\n border-radius: 4px;\n transition: background-color 0.2s;\n}\n\n.upload-button:hover {\n background-color: rgba(0, 0, 0, 0.04);\n}\n\n.upload-button svg {\n width: 20px;\n height: 20px;\n}\n\n/* 隐藏原生文件输入框 */\n.file-input {\n display: none;\n}\n\n/* 添加文件名显示区域样式 */\n.selected-file {\n font-size: 12px;\n color: #666;\n margin-left: 8px;\n max-width: 150px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.input-wrapper {\n flex: 1;\n display: flex;\n align-items: center;\n border: 1px solid #ddd;\n border-radius: 4px;\n padding: 0 4px;\n background: white;\n}\n\n.input-wrapper input {\n border: none;\n flex: 1;\n padding: 8px;\n outline: none;\n}\n\n.input-wrapper:focus-within {\n border-color: #bbb;\n}\n\n/* 文件预览区域样式 */\n\n\n.file-name {\n font-weight: 500;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: calc(100% - 50px);\n}\n\n.remove-file {\n background: transparent;\n border: none;\n color: #999;\n cursor: pointer;\n padding: 4px 8px;\n font-size: 16px;\n line-height: 1;\n border-radius: 4px;\n transition: all 0.2s;\n}\n\n.remove-file:hover {\n background-color: #f0f0f0;\n color: #666;\n}\n\n.initial-upload {\n padding: 16px;\n display: flex;\n flex-direction: column;\n align-items: center;\n height: 100%;\n}\n\n.upload-section {\n max-width: 600px;\n width: 100%;\n text-align: center;\n}\n\n.upload-area {\n cursor: pointer;\n width: 100%;\n}\n\n.upload-placeholder {\n transition: all 0.3s ease;\n display: flex;\n flex-direction: column;\n align-items: center;\n background: rgba(0, 0, 0, 0.02);\n border: 1px dashed #d9d9d9;\n border-radius: 8px;\n}\n.upload-placeholder:hover {\n border: 1px dashed #1890ff;\n}\n\n.upload-placeholder img {\n margin-top: 8px;\n width: 50px;\n height: 50px;\n}\n\n.upload-placeholder .upload-text {\n margin: 4px 0;\n color: #332F39;\n font-size: 14px;\n}\n\n.upload-placeholder .upload-hint {\n font-size: 14px;\n color: #949AA5;\n margin-top: 8px;\n padding: 0px 10px;\n}\n\n\n/* 文件项样式 */\n.file-item {\n position: relative;\n padding: 16px;\n border: 1px solid #e2e8f0;\n border-radius: 8px;\n transition: border-color 0.3s;\n cursor: pointer;\n margin-bottom: 16px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.file-item:hover {\n border-color: #0D75FB;\n}\n\n.file-item-content {\n display: flex;\n align-items: center;\n gap: 8px;\n flex: 1;\n min-width: 0;\n overflow: hidden;\n}\n\n.file-icon {\n color: #0D75FB;\n flex-shrink: 0;\n}\n\n.file-name {\n font-weight: 500;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: calc(100% - 50px);\n}\n\n\n.remove-file {\n background: transparent;\n border: none;\n color: #94a3b8;\n cursor: pointer;\n font-size: 18px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 4px;\n margin-left: 8px;\n border-radius: 4px;\n transition: all 0.2s;\n}\n\n.remove-file:hover {\n background-color: #f1f5f9;\n color: #475569;\n}\n\n.file-input {\n display: none;\n}\n\n.submit-button {\n margin-top: 10px;\n padding: 10px 30px;\n background: #0D75FB;\n color: white;\n border: none;\n border-radius: 4px;\n font-size: 16px;\n cursor: pointer;\n transition: all 0.3s ease;\n width: 100%;\n max-width: 400px;\n}\n\n.submit-button:disabled {\n background: #ccc;\n cursor: not-allowed;\n}\n\n.submit-button:hover:not(:disabled) {\n background: #40a9ff;\n}\n\n.category-select,\n.dimension-select {\n margin: 30px 0;\n}\n\n.category-options,\n.dimension-options {\n display: flex;\n flex-wrap: wrap;\n gap: 10px;\n margin-top: 10px;\n}\n\n.category-button,\n.dimension-button {\n padding: 12px 16px;\n border: 1px solid #E5E5E5;\n border-radius: 6px;\n background: white;\n cursor: pointer;\n transition: all 0.3s;\n}\n\n.category-button:hover,\n.dimension-button:hover {\n background: #f5f5f5;\n}\n\n.category-button.selected {\n background-image: linear-gradient(111deg, #4A9FFF 0%, #1058FF 100%);\n color: white;\n}\n\n.dimension-button.selected {\n background-image: linear-gradient(111deg, #4A9FFF 0%, #1058FF 100%);\n color: white;\n}\n\n.recording-section {\n border-top: 1px solid #eee;\n display: flex;\n flex-direction: column;\n align-items: center;\n padding: 20px;\n border-radius: 14px 14px 0 0;\n flex: 0 0 auto;\n}\n\n.recording-section .video-preview {\n width: 100%;\n height: 200px;\n max-width: 400px;\n position: relative;\n margin-bottom: 10px;\n border: 1px solid #ddd;\n border-radius: 12px;\n overflow: hidden;\n}\n\n.recording-section video {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n/* 修改 recording-status 样式 */\n.recording-status {\n position: absolute;\n top: 10px;\n left: 10px;\n background-color: rgba(0, 0, 0, 0.6);\n color: white;\n padding: 4px 8px;\n border-radius: 4px;\n display: flex;\n align-items: center;\n gap: 5px;\n font-size: 14px;\n z-index: 2;\n}\n\n.recording-status .recording-dot {\n display: inline-block;\n width: 10px;\n height: 10px;\n background-color: red;\n border-radius: 50%;\n margin-right: 5px;\n animation: blink 1s infinite;\n}\n\n.recording-status.warning {\n color: #ff4d4f;\n animation: blink 1s infinite;\n}\n\n@keyframes blink {\n 0% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.5;\n }\n\n 100% {\n opacity: 1;\n }\n}\n\n.recording-section .stop-recording-button {\n background-color: #f44336;\n color: white;\n border: none;\n cursor: pointer;\n font-weight: bold;\n}\n\n.recording-section .stop-recording-button:hover {\n background-color: #d32f2f;\n}\n\n.fullscreen {\n width: 100vw;\n border-radius: 0;\n height: 100vh;\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n}\n\n.recording-controls {\n margin-top: 10px;\n height: 53px;\n width: 100%;\n max-width: 400px;\n display: flex;\n justify-content: center;\n}\n\n.recording-controls .waiting-message {\n text-align: center;\n color: white;\n font-size: 16px;\n background-image: linear-gradient(100deg, #4A9FFF 0%, #1058FF 100%);\n border-radius: 6px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n width: 95%;\n display: flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n}\n\n.recording-controls .waiting-message.loading {\n background: #faad14;\n}\n\n.recording-controls .waiting-message p {\n margin: 0;\n font-size: 16px;\n color: white;\n font-weight: 500;\n}\n\n.recording-controls .stop-recording-button {\n background-color: #dc3545;\n color: white;\n border: none;\n cursor: pointer;\n font-size: 16px;\n}\n\n.recording-controls .stop-recording-button:hover {\n background-color: #c82333;\n}\n\n/* 添加禁用状态的样式 */\n.recording-controls .stop-recording-button.disabled {\n background: #ccc;\n cursor: not-allowed;\n}\n\n.recording-controls .stop-recording-button.disabled:hover {\n background: #ccc;\n}\n\n/* 添加进度条和数字进度的样式 */\n.progress-container {\n display: flex;\n justify-content: space-between;\n align-items: center;\n width: 100%;\n max-width: 400px;\n margin-top: 10px;\n padding: 0 5px;\n}\n\n.progress-bar-container {\n height: 4px;\n background-color: #E5E5E5;\n border-radius: 2px;\n overflow: hidden;\n margin-right: 10px;\n width: 75px;\n}\n\n.progress-bar {\n height: 100%;\n background-image: linear-gradient(111deg, #4A9FFF 0%, #1058FF 100%);\n border-radius: 2px;\n transition: width 0.3s ease;\n}\n\n.progress-text {\n font-size: 14px;\n color: #666;\n white-space: nowrap;\n}"],"version":3}
@@ -1,13 +1,14 @@
1
- import { p as proxyCustomElement, H, c as createEvent, h } from './p-CR7WLzmM.js';
2
- import { a as authStore, u as uploadFileToBackend, v as verifyApiKey } from './p-AYWZDCn8.js';
3
- import { d as defineCustomElement$3, E as ErrorEventBus, S as SentryReporter } from './p-CjbFHLT7.js';
4
- import { c as configStore } from './p-DUQ46MUh.js';
5
- import { d as defineCustomElement$4 } from './p-FjtoYPVY.js';
6
- import { d as defineCustomElement$2 } from './p-D2Z8casl.js';
1
+ import { p as proxyCustomElement, H, d as createEvent, h } from './p-BdiUKin5.js';
2
+ import { a as authStore, u as uploadFileToBackend, v as verifyApiKey } from './p-B0WOTw9J.js';
3
+ import { d as defineCustomElement$3, E as ErrorEventBus } from './p-De3VHEUn.js';
4
+ import { c as configStore } from './p-BGXbWUJg.js';
5
+ import { S as SentryReporter } from './p-BW3r6Lrf.js';
6
+ import { d as defineCustomElement$4 } from './p-BywzltXy.js';
7
+ import { d as defineCustomElement$2 } from './p-CuIvbaWY.js';
7
8
 
8
9
  const pcmHtwsModalCss = ".input-mode-toggle{display:flex;align-items:center;margin-bottom:16px}.input-mode-toggle span{color:#333;margin-right:12px}.toggle-button{display:flex;align-items:center;background:none;border:none;color:#2E6EDF;cursor:pointer;font-size:14px;padding:4px 8px}.toggle-button svg{margin-right:4px}.free-input{width:100%}.textarea-container{margin-bottom:16px}.textarea-container label{display:block;margin-bottom:8px;font-weight:500;color:#333}.textarea-container textarea{border:1px solid #ddd;border-radius:4px;font-size:14px;resize:vertical;background-color:#f9f9f9;min-height:150px;width:100%;padding:12px 16px;margin-bottom:20px;max-width:100%;box-sizing:border-box;word-wrap:break-word}.textarea-container textarea:focus{outline:none;border-color:#2E6EDF;box-shadow:0 0 0 2px rgba(46, 110, 223, 0.2)}.required{color:#f56c6c}.input-guide{background-color:#f5f7fa;border-radius:4px;padding:12px 16px;margin-bottom:20px;max-width:100%;box-sizing:border-box;word-wrap:break-word}.guide-title{font-weight:500;color:#333;margin-bottom:8px}.guide-content{color:#666;font-size:13px;max-width:100%;word-wrap:break-word}.guide-content div{margin-bottom:4px}";
9
10
 
10
- const globalCss = ":host{font-size:16px}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0, 0, 0, 0.5);display:flex;justify-content:center;align-items:center;z-index:1000;overflow-y:auto;padding:20px}.fullscreen-overlay{padding:0;background-color:rgba(0, 0, 0, 0.7);position:absolute;width:100%;height:calc(100% - 10px)}.modal-container{background-color:#fff;border-radius:8px;width:100%;display:flex;flex-direction:column;position:relative;margin:auto;transition:all 0.3s ease-out;overflow:hidden}.modal-container.fullscreen{width:100%;max-width:none;height:100%;border-radius:0;margin:0;display:flex;flex-direction:column;max-height:100%}.pc-layout{width:80%;max-width:600px;min-width:320px}@media screen and (max-width: 768px){.pc-layout{width:95%}.modal-overlay{padding:10px 0px 0px 0px}.modal-container.fullscreen{width:100%;height:100%;max-height:100%;border-radius:16px 16px 0 0;padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom)}}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:4px 16px;height:50px;border-bottom:1px solid #e8e8e8;flex-shrink:0}.header-left{display:flex;align-items:center;gap:8px;font-size:16px;font-weight:600;color:#333}.header-icon{width:24px;height:24px}.close-button{background:transparent;border:none;cursor:pointer;padding:8px;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:4px}.close-button:hover{background-color:rgba(0, 0, 0, 0.04)}.close-button span{font-size:24px;line-height:1;color:#999}.close-button:hover span{color:#666}.upload-area{cursor:pointer;width:100%}.upload-placeholder{transition:all 0.3s ease;display:flex;flex-direction:column;align-items:center;background:rgba(0, 0, 0, 0.02);border:1px dashed #d9d9d9;border-radius:8px}.upload-placeholder:hover{border:1px dashed #1890ff}.upload-placeholder img{margin-top:8px;width:50px;height:50px}.upload-placeholder .upload-text{margin:4px 0;color:#332F39;font-size:14px}.upload-placeholder .upload-hint{font-size:14px;color:#949AA5;margin-top:8px;padding:0px 10px}.file-item{position:relative;padding:16px;border:1px solid #e2e8f0;border-radius:8px;transition:border-color 0.3s;cursor:pointer;margin-bottom:16px;display:flex;justify-content:space-between;align-items:center}.file-item:hover{border-color:#0D75FB}.file-item-content{display:flex;align-items:center;gap:8px;flex:1;min-width:0;overflow:hidden}.file-icon{color:#0D75FB;flex-shrink:0}.file-name{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - 50px)}.remove-file{background:transparent;border:none;color:#94a3b8;cursor:pointer;font-size:18px;display:flex;align-items:center;justify-content:center;padding:4px;margin-left:8px;border-radius:4px;transition:all 0.2s}.remove-file:hover{background-color:#f1f5f9;color:#475569}.file-input{display:none}.input-container{padding:20px;display:flex;flex-direction:column;height:calc(100% - 50px);background:linear-gradient(150deg, #2a6ee933, #0000 50%) 0 0 / 400px 200px no-repeat, #fff;overflow-y:auto}.input-container h3{margin-top:0;margin-bottom:20px;font-size:18px;color:#333;text-align:center}.jd-input-section{margin-bottom:20px}.jd-input-section label{display:block;margin-bottom:8px;font-weight:500;color:#333}.job-description-textarea{width:calc(100% - 16px);border:1px solid #ddd;border-radius:4px;resize:vertical;font-family:inherit;font-size:14px;line-height:1.5;transition:border-color 0.3s;padding:8px}.job-description-textarea:focus{outline:none;border-color:#1890ff;box-shadow:0 0 0 2px rgba(24, 144, 255, 0.2)}.resume-upload-section{margin-bottom:20px;width:100%;display:flex;flex-direction:column;align-items:center}.resume-upload-section label{display:block;margin-bottom:8px;font-weight:500;color:#333;align-self:flex-start}.submit-button{margin-top:10px;padding:10px 30px;background:#0D75FB;color:white;border:none;border-radius:4px;font-size:16px;cursor:pointer;transition:all 0.3s ease;width:100%;max-width:400px;align-self:center}.submit-button:hover{background-color:#40a9ff}.submit-button:disabled{background-color:rgba(0,0,0,0.04);color:rgba(0,0,0,0.25);cursor:not-allowed}.ai-disclaimer{margin-top:16px;text-align:center;font-size:12px;color:#999;line-height:1.5}.ai-disclaimer p{margin:4px 0}.beian-info{display:flex;justify-content:center;flex-wrap:wrap;gap:4px}.ai-disclaimer a{color:#666;text-decoration:none;transition:color 0.2s ease}.ai-disclaimer a:hover{color:#1890ff;text-decoration:underline}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:24px}.loading-spinner{width:40px;height:40px;border:4px solid rgba(0, 0, 0, 0.1);border-radius:50%;border-top-color:var(--pcm-primary-color, #1890ff);animation:spin 1s linear infinite;margin-bottom:16px}.loading-text{font-size:16px;color:var(--pcm-text-color, #333)}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}";
11
+ const globalCss = ":host{font-size:16px}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0, 0, 0, 0.5);display:flex;justify-content:center;align-items:center;z-index:1000;overflow-y:auto;padding:20px}.fullscreen-overlay{padding:0;background-color:rgba(0, 0, 0, 0.7);position:absolute;width:100%;height:calc(100% - 10px)}.modal-container{background-color:#fff;border-radius:8px;width:100%;display:flex;flex-direction:column;position:relative;margin:auto;transition:all 0.3s ease-out;overflow:hidden}.modal-container.fullscreen{width:100%;max-width:none;height:100%;border-radius:0;margin:0;display:flex;flex-direction:column;max-height:100%}.pc-layout{width:80%;max-width:600px;min-width:320px}@media screen and (max-width: 768px){.pc-layout{width:95%}.modal-overlay{padding:10px 0px 0px 0px}.modal-container.fullscreen{width:100%;height:100%;max-height:100%;border-radius:16px 16px 0 0;padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom)}}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:4px 16px;height:50px;border-bottom:1px solid #e8e8e8;flex-shrink:0}.header-left{display:flex;align-items:center;gap:8px;font-size:16px;font-weight:600;color:#333}.header-icon{width:24px;height:24px}.close-button{background:transparent;border:none;cursor:pointer;padding:8px;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:4px}.close-button:hover{background-color:rgba(0, 0, 0, 0.04)}.close-button span{font-size:24px;line-height:1;color:#999}.close-button:hover span{color:#666}.upload-area{cursor:pointer;width:100%}.upload-placeholder{transition:all 0.3s ease;display:flex;flex-direction:column;align-items:center;background:rgba(0, 0, 0, 0.02);border:1px dashed #d9d9d9;border-radius:8px}.upload-placeholder:hover{border:1px dashed #1890ff}.upload-placeholder img{margin-top:8px;width:50px;height:50px}.upload-placeholder .upload-text{margin:4px 0;color:#332F39;font-size:14px}.upload-placeholder .upload-hint{font-size:14px;color:#949AA5;margin-top:8px;padding:0px 10px;text-align:center}.file-item{position:relative;padding:16px;border:1px solid #e2e8f0;border-radius:8px;transition:border-color 0.3s;cursor:pointer;margin-bottom:16px;display:flex;justify-content:space-between;align-items:center}.file-item:hover{border-color:#0D75FB}.file-item-content{display:flex;align-items:center;gap:8px;flex:1;min-width:0;overflow:hidden}.file-icon{color:#0D75FB;flex-shrink:0}.file-name{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - 50px)}.remove-file{background:transparent;border:none;color:#94a3b8;cursor:pointer;font-size:18px;display:flex;align-items:center;justify-content:center;padding:4px;margin-left:8px;border-radius:4px;transition:all 0.2s;min-width:30px;min-height:30px}.remove-file:hover{background-color:#f1f5f9;color:#475569}.file-input{display:none}.input-container{padding:20px;display:flex;flex-direction:column;height:calc(100% - 50px);background:linear-gradient(150deg, #2a6ee933, #0000 50%) 0 0 / 400px 200px no-repeat, #fff;overflow-y:auto}.input-container h3{margin-top:0;margin-bottom:20px;font-size:18px;color:#333;text-align:center}.jd-input-section{margin-bottom:20px}.jd-input-section label{display:block;margin-bottom:8px;font-weight:500;color:#333}.job-description-textarea{width:calc(100% - 16px);border:1px solid #ddd;border-radius:4px;resize:vertical;font-family:inherit;font-size:14px;line-height:1.5;transition:border-color 0.3s;padding:8px}.job-description-textarea:focus{outline:none;border-color:#1890ff;box-shadow:0 0 0 2px rgba(24, 144, 255, 0.2)}.resume-upload-section{margin-bottom:20px;width:100%;display:flex;flex-direction:column;align-items:center}.resume-upload-section label{display:block;margin-bottom:8px;font-weight:500;color:#333;align-self:flex-start}.submit-button{margin-top:10px;padding:10px 30px;background:#0D75FB;color:white;border:none;border-radius:4px;font-size:16px;cursor:pointer;transition:all 0.3s ease;width:100%;max-width:400px;align-self:center}.submit-button:hover{background-color:#40a9ff}.submit-button:disabled{background-color:rgba(0,0,0,0.04);color:rgba(0,0,0,0.25);cursor:not-allowed}.ai-disclaimer{margin-top:16px;text-align:center;font-size:12px;color:#999;line-height:1.5}.ai-disclaimer p{margin:4px 0}.beian-info{display:flex;justify-content:center;flex-wrap:wrap;gap:4px}.ai-disclaimer a{color:#666;text-decoration:none;transition:color 0.2s ease}.ai-disclaimer a:hover{color:#1890ff;text-decoration:underline}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:24px}.loading-spinner{width:40px;height:40px;border:4px solid rgba(0, 0, 0, 0.1);border-radius:50%;border-top-color:var(--pcm-primary-color, #1890ff);animation:spin 1s linear infinite;margin-bottom:16px}.loading-text{font-size:16px;color:var(--pcm-text-color, #333)}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}";
11
12
 
12
13
  const HtwsModal = /*@__PURE__*/ proxyCustomElement(class HtwsModal extends H {
13
14
  constructor() {
@@ -1 +1 @@
1
- {"file":"pcm-htws-modal.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/pcm-htws-modal/pcm-htws-modal.css?tag=pcm-htws-modal&encapsulation=shadow","src/global/global.css?tag=pcm-htws-modal&encapsulation=shadow","src/components/pcm-htws-modal/pcm-htws-modal.tsx"],"sourcesContent":["/* 输入模式切换 */\r\n.input-mode-toggle {\r\n display: flex;\r\n align-items: center;\r\n margin-bottom: 16px;\r\n}\r\n \r\n.input-mode-toggle span {\r\n color: #333;\r\n margin-right: 12px;\r\n}\r\n \r\n.toggle-button {\r\n display: flex;\r\n align-items: center;\r\n background: none;\r\n border: none;\r\n color: #2E6EDF;\r\n cursor: pointer;\r\n font-size: 14px;\r\n padding: 4px 8px;\r\n}\r\n \r\n.toggle-button svg {\r\n margin-right: 4px;\r\n}\r\n\r\n/* 自由输入模式 */\r\n.free-input {\r\n width: 100%;\r\n}\r\n\r\n.textarea-container {\r\n margin-bottom: 16px;\r\n}\r\n\r\n.textarea-container label {\r\n display: block;\r\n margin-bottom: 8px;\r\n font-weight: 500;\r\n color: #333;\r\n}\r\n\r\n.textarea-container textarea {\r\n border: 1px solid #ddd;\r\n border-radius: 4px;\r\n font-size: 14px;\r\n resize: vertical;\r\n background-color: #f9f9f9;\r\n min-height: 150px;\r\n width: 100%;\r\n padding: 12px 16px;\r\n margin-bottom: 20px;\r\n max-width: 100%;\r\n box-sizing: border-box;\r\n word-wrap: break-word;\r\n}\r\n\r\n.textarea-container textarea:focus {\r\n outline: none;\r\n border-color: #2E6EDF;\r\n box-shadow: 0 0 0 2px rgba(46, 110, 223, 0.2);\r\n}\r\n\r\n.required {\r\n color: #f56c6c;\r\n}\r\n\r\n.input-guide {\r\n background-color: #f5f7fa;\r\n border-radius: 4px;\r\n padding: 12px 16px;\r\n margin-bottom: 20px;\r\n max-width: 100%;\r\n box-sizing: border-box;\r\n word-wrap: break-word;\r\n}\r\n\r\n.guide-title {\r\n font-weight: 500;\r\n color: #333;\r\n margin-bottom: 8px;\r\n}\r\n\r\n.guide-content {\r\n color: #666;\r\n font-size: 13px;\r\n max-width: 100%;\r\n word-wrap: break-word;\r\n}\r\n\r\n.guide-content div {\r\n margin-bottom: 4px;\r\n}\r\n\r\n",":host {\r\n font-size: 16px;\r\n}\r\n\r\n/* 模态框基础样式 */\r\n.modal-overlay {\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n right: 0;\r\n bottom: 0;\r\n background-color: rgba(0, 0, 0, 0.5);\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n z-index: 1000;\r\n overflow-y: auto;\r\n padding: 20px;\r\n}\r\n\r\n/* 全屏模式下的overlay样式 - 改为基于父组件 */\r\n.fullscreen-overlay {\r\n padding: 0;\r\n background-color: rgba(0, 0, 0, 0.7);\r\n /* 改为基于父组件的全屏 */\r\n position: absolute;\r\n width: 100%;\r\n height: calc(100% - 10px);\r\n}\r\n\r\n.modal-container {\r\n background-color: #fff;\r\n border-radius: 8px;\r\n width: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n position: relative;\r\n margin: auto;\r\n transition: all 0.3s ease-out;\r\n overflow: hidden;\r\n}\r\n\r\n/* 全屏模式样式 - 改为基于父组件 */\r\n.modal-container.fullscreen {\r\n width: 100%;\r\n max-width: none;\r\n height: 100%;\r\n border-radius: 0;\r\n margin: 0;\r\n display: flex;\r\n flex-direction: column;\r\n max-height: 100%;\r\n}\r\n\r\n/* PC端布局 */\r\n.pc-layout {\r\n width: 80%;\r\n max-width: 600px;\r\n min-width: 320px;\r\n}\r\n\r\n/* 响应式布局 */\r\n@media screen and (max-width: 768px) {\r\n .pc-layout {\r\n width: 95%;\r\n }\r\n\r\n .modal-overlay {\r\n padding: 10px 0px 0px 0px;\r\n }\r\n\r\n .modal-container.fullscreen {\r\n /* 移动端也基于父组件尺寸 */\r\n width: 100%;\r\n height: 100%;\r\n max-height: 100%;\r\n border-radius: 16px 16px 0 0;\r\n /* 保留安全区域支持 */\r\n padding: env(safe-area-inset-top) 0 env(safe-area-inset-bottom);\r\n }\r\n}\r\n\r\n/* 模态框头部样式 */\r\n.modal-header {\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n padding: 4px 16px;\r\n height: 50px;\r\n border-bottom: 1px solid #e8e8e8;\r\n flex-shrink: 0;\r\n}\r\n\r\n.header-left {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n font-size: 16px;\r\n font-weight: 600;\r\n color: #333;\r\n}\r\n\r\n.header-icon {\r\n width: 24px;\r\n height: 24px;\r\n}\r\n\r\n.close-button {\r\n background: transparent;\r\n border: none;\r\n cursor: pointer;\r\n padding: 8px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n width: 32px;\r\n height: 32px;\r\n border-radius: 4px;\r\n}\r\n\r\n.close-button:hover {\r\n background-color: rgba(0, 0, 0, 0.04);\r\n}\r\n\r\n.close-button span {\r\n font-size: 24px;\r\n line-height: 1;\r\n color: #999;\r\n}\r\n\r\n.close-button:hover span {\r\n color: #666;\r\n}\r\n\r\n\r\n/* 文件上传区域通用样式 */\r\n.upload-area {\r\n cursor: pointer;\r\n width: 100%;\r\n}\r\n\r\n\r\n.upload-placeholder {\r\n transition: all 0.3s ease;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n background: rgba(0, 0, 0, 0.02);\r\n border: 1px dashed #d9d9d9;\r\n border-radius: 8px;\r\n}\r\n\r\n.upload-placeholder:hover {\r\n border: 1px dashed #1890ff;\r\n}\r\n\r\n.upload-placeholder img {\r\n margin-top: 8px;\r\n width: 50px;\r\n height: 50px;\r\n}\r\n\r\n.upload-placeholder .upload-text {\r\n margin: 4px 0;\r\n color: #332F39;\r\n font-size: 14px;\r\n}\r\n\r\n.upload-placeholder .upload-hint {\r\n font-size: 14px;\r\n color: #949AA5;\r\n margin-top: 8px;\r\n padding: 0px 10px;\r\n}\r\n\r\n\r\n/* 文件项样式 */\r\n.file-item {\r\n position: relative;\r\n padding: 16px;\r\n border: 1px solid #e2e8f0;\r\n border-radius: 8px;\r\n transition: border-color 0.3s;\r\n cursor: pointer;\r\n margin-bottom: 16px;\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n}\r\n\r\n.file-item:hover {\r\n border-color: #0D75FB;\r\n}\r\n\r\n.file-item-content {\r\n display: flex;\r\n align-items: center;\r\n gap: 8px;\r\n flex: 1;\r\n min-width: 0;\r\n overflow: hidden;\r\n}\r\n\r\n.file-icon {\r\n color: #0D75FB;\r\n flex-shrink: 0;\r\n}\r\n\r\n.file-name {\r\n font-weight: 500;\r\n white-space: nowrap;\r\n overflow: hidden;\r\n text-overflow: ellipsis;\r\n max-width: calc(100% - 50px);\r\n}\r\n\r\n.remove-file {\r\n background: transparent;\r\n border: none;\r\n color: #94a3b8;\r\n cursor: pointer;\r\n font-size: 18px;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n padding: 4px;\r\n margin-left: 8px;\r\n border-radius: 4px;\r\n transition: all 0.2s;\r\n}\r\n\r\n.remove-file:hover {\r\n background-color: #f1f5f9;\r\n color: #475569;\r\n}\r\n\r\n.file-input {\r\n display: none;\r\n}\r\n\r\n\r\n\r\n/* 输入容器样式 */\r\n.input-container {\r\n padding: 20px;\r\n display: flex;\r\n flex-direction: column;\r\n height: calc(100% - 50px);\r\n background: linear-gradient(150deg, #2a6ee933, #0000 50%) 0 0 / 400px 200px no-repeat, #fff;\r\n /* 减去header高度 */\r\n overflow-y: auto;\r\n}\r\n\r\n.input-container h3 {\r\n margin-top: 0;\r\n margin-bottom: 20px;\r\n font-size: 18px;\r\n color: #333;\r\n text-align: center;\r\n}\r\n\r\n/* JD输入区域样式 */\r\n.jd-input-section {\r\n margin-bottom: 20px;\r\n}\r\n\r\n.jd-input-section label {\r\n display: block;\r\n margin-bottom: 8px;\r\n font-weight: 500;\r\n color: #333;\r\n}\r\n\r\n.job-description-textarea {\r\n width: calc(100% - 16px);\r\n border: 1px solid #ddd;\r\n border-radius: 4px;\r\n resize: vertical;\r\n font-family: inherit;\r\n font-size: 14px;\r\n line-height: 1.5;\r\n transition: border-color 0.3s;\r\n padding: 8px;\r\n}\r\n\r\n.job-description-textarea:focus {\r\n outline: none;\r\n border-color: #1890ff;\r\n box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);\r\n}\r\n\r\n/* 简历上传区域样式 */\r\n.resume-upload-section {\r\n margin-bottom: 20px;\r\n width: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n}\r\n\r\n.resume-upload-section label {\r\n display: block;\r\n margin-bottom: 8px;\r\n font-weight: 500;\r\n color: #333;\r\n align-self: flex-start;\r\n}\r\n\r\n\r\n/* 提交按钮通用样式 */\r\n.submit-button {\r\n margin-top: 10px;\r\n padding: 10px 30px;\r\n background: #0D75FB;\r\n color: white;\r\n border: none;\r\n border-radius: 4px;\r\n font-size: 16px;\r\n cursor: pointer;\r\n transition: all 0.3s ease;\r\n width: 100%;\r\n max-width: 400px;\r\n align-self: center;\r\n}\r\n\r\n.submit-button:hover {\r\n background-color: #40a9ff;\r\n}\r\n\r\n.submit-button:disabled {\r\n background-color: rgba(0,0,0,0.04);\r\n color: rgba(0,0,0,0.25);\r\n cursor: not-allowed;\r\n}\r\n\r\n\r\n\r\n/* AI免责声明和备案信息样式 */\r\n.ai-disclaimer {\r\n margin-top: 16px;\r\n text-align: center;\r\n font-size: 12px;\r\n color: #999;\r\n line-height: 1.5;\r\n}\r\n\r\n.ai-disclaimer p {\r\n margin: 4px 0;\r\n}\r\n\r\n.beian-info {\r\n display: flex;\r\n justify-content: center;\r\n flex-wrap: wrap;\r\n gap: 4px;\r\n}\r\n\r\n.ai-disclaimer a {\r\n color: #666;\r\n text-decoration: none;\r\n transition: color 0.2s ease;\r\n}\r\n\r\n.ai-disclaimer a:hover {\r\n color: #1890ff;\r\n text-decoration: underline;\r\n}\r\n\r\n/* 添加加载状态的样式 */\r\n.loading-container {\r\n display: flex;\r\n flex-direction: column;\r\n align-items: center;\r\n justify-content: center;\r\n height: 100%;\r\n padding: 24px;\r\n }\r\n \r\n .loading-spinner {\r\n width: 40px;\r\n height: 40px;\r\n border: 4px solid rgba(0, 0, 0, 0.1);\r\n border-radius: 50%;\r\n border-top-color: var(--pcm-primary-color, #1890ff);\r\n animation: spin 1s linear infinite;\r\n margin-bottom: 16px;\r\n }\r\n \r\n .loading-text {\r\n font-size: 16px;\r\n color: var(--pcm-text-color, #333);\r\n }\r\n \r\n @keyframes spin {\r\n 0% { transform: rotate(0deg); }\r\n 100% { transform: rotate(360deg); }\r\n }\r\n \r\n ","import { Component, Prop, h, State, Element, Event, EventEmitter, Watch } from '@stencil/core';\r\nimport { uploadFileToBackend, FileUploadResponse, verifyApiKey } from '../../utils/utils';\r\nimport { ConversationStartEventData, InterviewCompleteEventData, StreamCompleteEventData } from '../../components';\r\nimport { ErrorEventBus, ErrorEventDetail } from '../../utils/error-event';\r\nimport { authStore } from '../../../store/auth.store';\r\nimport { configStore } from '../../../store/config.store';\r\nimport { SentryReporter } from '../../utils/sentry-reporter';\r\n\r\n/**\r\n * 劳动合同卫士\r\n */\r\n\r\n@Component({\r\n tag: 'pcm-htws-modal',\r\n styleUrls: ['pcm-htws-modal.css', '../../global/global.css'],\r\n shadow: true,\r\n})\r\nexport class HtwsModal {\r\n /**\r\n * 模态框标题\r\n */\r\n @Prop() modalTitle: string = '劳动合同卫士';\r\n\r\n /**\r\n * SDK鉴权密钥\r\n */\r\n @Prop({ attribute: 'token' }) token!: string;\r\n\r\n /**\r\n * 是否显示聊天模态框\r\n */\r\n @Prop({ mutable: true }) isOpen: boolean = false;\r\n\r\n /**\r\n * 当点击模态框关闭时触发\r\n */\r\n @Event() modalClosed: EventEmitter<void>;\r\n\r\n /**\r\n * 应用图标URL\r\n */\r\n @Prop() icon?: string;\r\n\r\n /**\r\n * 聊天框的页面层级\r\n */\r\n @Prop() zIndex?: number = 1000;\r\n\r\n /**\r\n * 是否展示顶部标题栏\r\n */\r\n @Prop() isShowHeader: boolean = true;\r\n\r\n /**\r\n * 是否展示右上角的关闭按钮\r\n */\r\n @Prop() isNeedClose: boolean = true;\r\n\r\n /**\r\n * 会话ID,传入继续对话,否则创建新会话\r\n */\r\n @Prop({ mutable: true }) conversationId?: string;\r\n\r\n /**\r\n * 默认查询文本\r\n */\r\n @Prop() defaultQuery: string = '请开始分析';\r\n\r\n /**\r\n * 是否以全屏模式打开,移动端建议设置为true\r\n */\r\n @Prop() fullscreen: boolean = false;\r\n\r\n /**\r\n * 自定义输入参数,传入customInputs.input时,会自动切换到自由输入模式<br>\r\n */\r\n @Prop() customInputs: Record<string, string> = {};\r\n\r\n /**\r\n * 是否显示工作区历史会话按钮\r\n */\r\n @Prop() showWorkspaceHistory: boolean = false;\r\n\r\n /**\r\n * 上传成功事件\r\n */\r\n @Event() uploadSuccess: EventEmitter<FileUploadResponse>;\r\n\r\n /**\r\n * 流式输出完成事件\r\n */\r\n @Event() streamComplete: EventEmitter<StreamCompleteEventData>;\r\n\r\n /**\r\n * 新会话开始的回调,只会在一轮对话开始时触发一次\r\n */\r\n @Event() conversationStart: EventEmitter<ConversationStartEventData>;\r\n\r\n /**\r\n * 当聊天完成时触发\r\n */\r\n @Event() interviewComplete: EventEmitter<InterviewCompleteEventData>;\r\n\r\n /**\r\n * SDK密钥验证失败事件\r\n */\r\n @Event() tokenInvalid: EventEmitter<void>;\r\n\r\n /**\r\n * 错误事件\r\n */\r\n @Event() someErrorEvent: EventEmitter<ErrorEventDetail>;\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 @State() selectedFile: File | null = null;\r\n @State() isUploading: boolean = false;\r\n @State() uploadedFileInfo: FileUploadResponse | null = null;\r\n @State() showChatModal: boolean = false;\r\n\r\n // 使用 @Element 装饰器获取组件的 host 元素\r\n @Element() hostElement: HTMLElement;\r\n\r\n @State() isSubmitting: boolean = false;\r\n\r\n // 添加输入模式状态\r\n @State() inputMode: 'upload' | 'free' = 'upload';\r\n\r\n // 自由输入模式的文本\r\n @State() freeInputText: string = '';\r\n\r\n \r\n private tokenInvalidListener: () => void;\r\n private removeErrorListener: () => void;\r\n\r\n @Watch('token')\r\n handleTokenChange(newToken: string) {\r\n // 当传入的 token 变化时,更新 authStore 中的 token\r\n if (newToken && newToken !== authStore.getToken()) {\r\n authStore.setToken(newToken);\r\n }\r\n }\r\n\r\n componentWillLoad() {\r\n\r\n // 将 zIndex 存入配置缓存\r\n if (this.zIndex) {\r\n configStore.setItem('modal-zIndex', this.zIndex);\r\n }\r\n if (this.token) {\r\n authStore.setToken(this.token);\r\n }\r\n\r\n // 添加全局token无效事件监听器\r\n this.tokenInvalidListener = () => {\r\n this.tokenInvalid.emit();\r\n };\r\n\r\n // 添加全局错误监听\r\n this.removeErrorListener = ErrorEventBus.addErrorListener((errorDetail) => {\r\n this.someErrorEvent.emit(errorDetail);\r\n });\r\n \r\n document.addEventListener('pcm-token-invalid', this.tokenInvalidListener);\r\n }\r\n\r\n disconnectedCallback() {\r\n // 组件销毁时移除事件监听器\r\n document.removeEventListener('pcm-token-invalid', this.tokenInvalidListener);\r\n // 移除错误监听器\r\n if (this.removeErrorListener) {\r\n this.removeErrorListener();\r\n }\r\n }\r\n\r\n private handleClose = () => {\r\n this.modalClosed.emit();\r\n };\r\n\r\n private handleFileChange = (event: Event) => {\r\n const input = event.target as HTMLInputElement;\r\n if (input.files && input.files.length > 0) {\r\n this.selectedFile = input.files[0];\r\n }\r\n };\r\n\r\n private handleUploadClick = () => {\r\n const fileInput = this.hostElement.shadowRoot?.querySelector('.file-input') as HTMLInputElement;\r\n fileInput?.click();\r\n };\r\n\r\n private clearSelectedFile = () => {\r\n this.selectedFile = null;\r\n this.uploadedFileInfo = null;\r\n const fileInput = this.hostElement.shadowRoot?.querySelector('.file-input') as HTMLInputElement;\r\n if (fileInput) {\r\n fileInput.value = '';\r\n }\r\n };\r\n\r\n private async uploadFile() {\r\n if (!this.selectedFile) return;\r\n\r\n this.isUploading = true;\r\n\r\n try {\r\n // 使用 uploadFileToBackend 工具函数上传文件\r\n const result = await uploadFileToBackend(this.selectedFile, {\r\n }, {\r\n 'tags': ['other']\r\n });\r\n\r\n this.uploadedFileInfo = result;\r\n this.uploadSuccess.emit(result);\r\n } catch (error) {\r\n console.error('文件上传错误:', error);\r\n this.clearSelectedFile();\r\n SentryReporter.captureError(error, {\r\n action: 'uploadFile',\r\n component: 'pcm-htws-modal',\r\n title: '文件上传失败'\r\n });\r\n ErrorEventBus.emitError({\r\n error: error,\r\n message: '文件上传失败,请重试'\r\n });\r\n } finally {\r\n this.isUploading = false;\r\n }\r\n }\r\n\r\n // 添加切换输入模式的方法\r\n private handleToggleInput = () => {\r\n this.inputMode = this.inputMode === 'upload' ? 'free' : 'upload';\r\n };\r\n\r\n // 添加自由输入文本变更处理方法\r\n private handleFreeInputChange = (event: Event) => {\r\n const textarea = event.target as HTMLTextAreaElement;\r\n this.freeInputText = textarea.value;\r\n };\r\n\r\n private handleStartInterview = async () => {\r\n if (this.inputMode === 'upload' && !this.selectedFile) {\r\n alert('请上传合同文件');\r\n return;\r\n }\r\n\r\n if (this.inputMode === 'free' && !this.freeInputText.trim()) {\r\n alert('请输入合同内容');\r\n return;\r\n }\r\n\r\n this.isSubmitting = true;\r\n\r\n try {\r\n if (this.inputMode === 'upload') {\r\n // 如果还没上传,先上传文件\r\n if (!this.uploadedFileInfo) {\r\n await this.uploadFile();\r\n if (!this.uploadedFileInfo) {\r\n this.isSubmitting = false;\r\n return; // 上传失败\r\n }\r\n }\r\n }\r\n\r\n // 直接显示聊天模态框\r\n this.showChatModal = true;\r\n } catch (error) {\r\n console.error('开始分析时出错:', error);\r\n SentryReporter.captureError(error, {\r\n action: 'handleStartInterview',\r\n component: 'pcm-htws-modal',\r\n title: '开始分析时出错'\r\n });\r\n ErrorEventBus.emitError({\r\n error: error,\r\n message: '开始分析时出错,请重试'\r\n });\r\n } finally {\r\n this.isSubmitting = false;\r\n }\r\n };\r\n\r\n @Watch('isOpen')\r\n async handleIsOpenChange(newValue: boolean) {\r\n if (!newValue) {\r\n // 重置状态\r\n this.clearSelectedFile();\r\n this.showChatModal = false;\r\n this.freeInputText = '';\r\n this.inputMode = 'upload'; // 重置为默认上传模式\r\n } else {\r\n if (this.customInputs && this.customInputs.input) {\r\n // 如果有 input,直接切换到自由输入模式并填充内容\r\n this.inputMode = 'free';\r\n this.freeInputText = this.customInputs.input;\r\n }\r\n await verifyApiKey(this.token);\r\n\r\n if (this.conversationId) {\r\n // 如果有会话ID,直接显示聊天模态框\r\n this.showChatModal = true;\r\n }\r\n }\r\n }\r\n\r\n\r\n render() {\r\n if (!this.isOpen) return null;\r\n\r\n const modalStyle = {\r\n zIndex: String(this.zIndex)\r\n };\r\n\r\n const containerClass = {\r\n 'modal-container': true,\r\n 'fullscreen': this.fullscreen,\r\n 'pc-layout': true,\r\n };\r\n\r\n const overlayClass = {\r\n 'modal-overlay': true,\r\n 'fullscreen-overlay': this.fullscreen\r\n };\r\n\r\n // 显示加载状态\r\n const isLoading = this.conversationId && !this.showChatModal;\r\n\r\n return (\r\n <div class={overlayClass} style={modalStyle}>\r\n <div class={containerClass}>\r\n {this.isShowHeader && (\r\n <div class=\"modal-header\">\r\n <div class=\"header-left\">\r\n {this.icon && <img src={this.icon} class=\"header-icon\" alt=\"应用图标\" />}\r\n <div>{this.modalTitle}</div>\r\n </div>\r\n {this.isNeedClose && (\r\n <button class=\"close-button\" onClick={this.handleClose}>\r\n <span>×</span>\r\n </button>\r\n )}\r\n </div>\r\n )}\r\n\r\n {/* 输入界面 - 仅在不显示聊天模态框且没有会话ID时显示 */}\r\n {!this.showChatModal && !this.conversationId && (\r\n <div class=\"input-container\">\r\n {/* 输入模式切换 */}\r\n <div class=\"input-mode-toggle\">\r\n <span>合同内容</span>\r\n <button\r\n class=\"toggle-button\"\r\n onClick={this.handleToggleInput}\r\n >\r\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\">\r\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 6h16M4 12h16M4 18h16\" />\r\n </svg>\r\n 切换输入\r\n </button>\r\n </div>\r\n\r\n {/* 上传模式 */}\r\n {this.inputMode === 'upload' && (\r\n <div class=\"resume-upload-section\">\r\n <div class=\"upload-area\" onClick={this.handleUploadClick}>\r\n {this.selectedFile ? (\r\n <div class=\"file-item\">\r\n <div class=\"file-item-content\">\r\n <span class=\"file-icon\">📝</span>\r\n <span class=\"file-name\">{this.selectedFile.name}</span>\r\n </div>\r\n <button class=\"remove-file\" onClick={(e) => {\r\n e.stopPropagation();\r\n this.clearSelectedFile();\r\n }}>×</button>\r\n </div>\r\n ) : (\r\n <div class=\"upload-placeholder\">\r\n <img src='https://pub.pincaimao.com/static/web/images/home/i_upload.png'></img>\r\n <p class='upload-text'>点击上传合同</p>\r\n <p class=\"upload-hint\">支持markdown、pdf、docx、doc、md 格式</p>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n )}\r\n\r\n {/* 自由输入模式 */}\r\n {this.inputMode === 'free' && (\r\n <div class=\"free-input\">\r\n <div class=\"textarea-container\">\r\n <textarea\r\n id=\"free-input-text\"\r\n placeholder=\"请输入合同内容\"\r\n rows={8}\r\n value={this.freeInputText}\r\n onInput={this.handleFreeInputChange}\r\n ></textarea>\r\n </div>\r\n\r\n <div class=\"input-guide\">\r\n <div class=\"guide-title\">输入提示:</div>\r\n <div class=\"guide-content\">\r\n <div>• 请输入完整的劳动合同内容</div>\r\n <div>• 包括甲方(公司)、乙方(员工)信息</div>\r\n <div>• 合同期限、工作内容、工作地点</div>\r\n <div>• 工作时间、休息休假、劳动报酬</div>\r\n <div>• 社会保险、劳动保护、劳动条件</div>\r\n <div>• 合同变更、解除和终止条件等</div>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n\r\n <button\r\n class=\"submit-button\"\r\n disabled={(this.inputMode === 'upload' && !this.selectedFile) ||\r\n (this.inputMode === 'free' && !this.freeInputText.trim()) ||\r\n this.isUploading ||\r\n this.isSubmitting}\r\n onClick={this.handleStartInterview}\r\n >\r\n {this.isUploading ? '上传中...' : this.isSubmitting ? '处理中...' : '开始分析'}\r\n </button>\r\n\r\n <div class=\"ai-disclaimer\">\r\n <p>所有内容均由AI生成仅供参考</p>\r\n <p class=\"beian-info\">\r\n <span>中央网信办生成式人工智能服务备案号</span>:\r\n <a href=\"https://www.pincaimao.com\" target=\"_blank\" rel=\"noopener noreferrer\">Hunan-PinCaiMao-202412310003</a>\r\n </p>\r\n </div>\r\n\r\n <input\r\n type=\"file\"\r\n class=\"file-input\"\r\n onChange={this.handleFileChange}\r\n />\r\n </div>\r\n )}\r\n\r\n {/* 加载状态 - 在有会话ID但聊天模态框尚未显示时展示 */}\r\n {isLoading && (\r\n <div class=\"loading-container\">\r\n <div class=\"loading-spinner\"></div>\r\n <p class=\"loading-text\">正在加载对话...</p>\r\n </div>\r\n )}\r\n\r\n {/* 聊天界面 - 在显示聊天模态框时显示 */}\r\n {this.showChatModal && (\r\n <div>\r\n <pcm-app-chat-modal\r\n isOpen={true}\r\n modalTitle={this.modalTitle}\r\n icon={this.icon}\r\n isShowHeader={this.isShowHeader}\r\n isNeedClose={this.isShowHeader}\r\n fullscreen={this.fullscreen}\r\n showWorkspaceHistory={this.showWorkspaceHistory}\r\n botId=\"3022316191018882\"\r\n conversationId={this.conversationId}\r\n defaultQuery={this.defaultQuery}\r\n enableVoice={false}\r\n filePreviewMode={this.filePreviewMode}\r\n customInputs={this.conversationId ? {} : {\r\n ...this.customInputs,\r\n file_url: this.inputMode === 'upload' ? this.uploadedFileInfo?.cos_key : undefined,\r\n file_name: this.customInputs?.file_name || this.uploadedFileInfo?.file_name,\r\n input: this.inputMode === 'free' ? this.freeInputText : undefined\r\n }}\r\n interviewMode=\"text\"\r\n ></pcm-app-chat-modal>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n }\r\n} "],"version":3}
1
+ {"file":"pcm-htws-modal.js","mappings":"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","names":["__stencil_proxyCustomElement","HTMLElement"],"sources":["src/components/pcm-htws-modal/pcm-htws-modal.css?tag=pcm-htws-modal&encapsulation=shadow","src/global/global.css?tag=pcm-htws-modal&encapsulation=shadow","src/components/pcm-htws-modal/pcm-htws-modal.tsx"],"sourcesContent":["/* 输入模式切换 */\n.input-mode-toggle {\n display: flex;\n align-items: center;\n margin-bottom: 16px;\n}\n \n.input-mode-toggle span {\n color: #333;\n margin-right: 12px;\n}\n \n.toggle-button {\n display: flex;\n align-items: center;\n background: none;\n border: none;\n color: #2E6EDF;\n cursor: pointer;\n font-size: 14px;\n padding: 4px 8px;\n}\n \n.toggle-button svg {\n margin-right: 4px;\n}\n\n/* 自由输入模式 */\n.free-input {\n width: 100%;\n}\n\n.textarea-container {\n margin-bottom: 16px;\n}\n\n.textarea-container label {\n display: block;\n margin-bottom: 8px;\n font-weight: 500;\n color: #333;\n}\n\n.textarea-container textarea {\n border: 1px solid #ddd;\n border-radius: 4px;\n font-size: 14px;\n resize: vertical;\n background-color: #f9f9f9;\n min-height: 150px;\n width: 100%;\n padding: 12px 16px;\n margin-bottom: 20px;\n max-width: 100%;\n box-sizing: border-box;\n word-wrap: break-word;\n}\n\n.textarea-container textarea:focus {\n outline: none;\n border-color: #2E6EDF;\n box-shadow: 0 0 0 2px rgba(46, 110, 223, 0.2);\n}\n\n.required {\n color: #f56c6c;\n}\n\n.input-guide {\n background-color: #f5f7fa;\n border-radius: 4px;\n padding: 12px 16px;\n margin-bottom: 20px;\n max-width: 100%;\n box-sizing: border-box;\n word-wrap: break-word;\n}\n\n.guide-title {\n font-weight: 500;\n color: #333;\n margin-bottom: 8px;\n}\n\n.guide-content {\n color: #666;\n font-size: 13px;\n max-width: 100%;\n word-wrap: break-word;\n}\n\n.guide-content div {\n margin-bottom: 4px;\n}\n\n",":host {\n font-size: 16px;\n}\n\n/* 模态框基础样式 */\n.modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-color: rgba(0, 0, 0, 0.5);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 1000;\n overflow-y: auto;\n padding: 20px;\n}\n\n/* 全屏模式下的overlay样式 - 改为基于父组件 */\n.fullscreen-overlay {\n padding: 0;\n background-color: rgba(0, 0, 0, 0.7);\n /* 改为基于父组件的全屏 */\n position: absolute;\n width: 100%;\n height: calc(100% - 10px);\n}\n\n.modal-container {\n background-color: #fff;\n border-radius: 8px;\n width: 100%;\n display: flex;\n flex-direction: column;\n position: relative;\n margin: auto;\n transition: all 0.3s ease-out;\n overflow: hidden;\n}\n\n/* 全屏模式样式 - 改为基于父组件 */\n.modal-container.fullscreen {\n width: 100%;\n max-width: none;\n height: 100%;\n border-radius: 0;\n margin: 0;\n display: flex;\n flex-direction: column;\n max-height: 100%;\n}\n\n/* PC端布局 */\n.pc-layout {\n width: 80%;\n max-width: 600px;\n min-width: 320px;\n}\n\n/* 响应式布局 */\n@media screen and (max-width: 768px) {\n .pc-layout {\n width: 95%;\n }\n\n .modal-overlay {\n padding: 10px 0px 0px 0px;\n }\n\n .modal-container.fullscreen {\n /* 移动端也基于父组件尺寸 */\n width: 100%;\n height: 100%;\n max-height: 100%;\n border-radius: 16px 16px 0 0;\n /* 保留安全区域支持 */\n padding: env(safe-area-inset-top) 0 env(safe-area-inset-bottom);\n }\n}\n\n/* 模态框头部样式 */\n.modal-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 4px 16px;\n height: 50px;\n border-bottom: 1px solid #e8e8e8;\n flex-shrink: 0;\n}\n\n.header-left {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 16px;\n font-weight: 600;\n color: #333;\n}\n\n.header-icon {\n width: 24px;\n height: 24px;\n}\n\n.close-button {\n background: transparent;\n border: none;\n cursor: pointer;\n padding: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border-radius: 4px;\n}\n\n.close-button:hover {\n background-color: rgba(0, 0, 0, 0.04);\n}\n\n.close-button span {\n font-size: 24px;\n line-height: 1;\n color: #999;\n}\n\n.close-button:hover span {\n color: #666;\n}\n\n\n/* 文件上传区域通用样式 */\n.upload-area {\n cursor: pointer;\n width: 100%;\n}\n\n\n.upload-placeholder {\n transition: all 0.3s ease;\n display: flex;\n flex-direction: column;\n align-items: center;\n background: rgba(0, 0, 0, 0.02);\n border: 1px dashed #d9d9d9;\n border-radius: 8px;\n}\n\n.upload-placeholder:hover {\n border: 1px dashed #1890ff;\n}\n\n.upload-placeholder img {\n margin-top: 8px;\n width: 50px;\n height: 50px;\n}\n\n.upload-placeholder .upload-text {\n margin: 4px 0;\n color: #332F39;\n font-size: 14px;\n}\n\n.upload-placeholder .upload-hint {\n font-size: 14px;\n color: #949AA5;\n margin-top: 8px;\n padding: 0px 10px;\n text-align: center;\n}\n\n\n/* 文件项样式 */\n.file-item {\n position: relative;\n padding: 16px;\n border: 1px solid #e2e8f0;\n border-radius: 8px;\n transition: border-color 0.3s;\n cursor: pointer;\n margin-bottom: 16px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n\n.file-item:hover {\n border-color: #0D75FB;\n}\n\n.file-item-content {\n display: flex;\n align-items: center;\n gap: 8px;\n flex: 1;\n min-width: 0;\n overflow: hidden;\n}\n\n.file-icon {\n color: #0D75FB;\n flex-shrink: 0;\n}\n\n.file-name {\n font-weight: 500;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: calc(100% - 50px);\n}\n\n.remove-file {\n background: transparent;\n border: none;\n color: #94a3b8;\n cursor: pointer;\n font-size: 18px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 4px;\n margin-left: 8px;\n border-radius: 4px;\n transition: all 0.2s;\n min-width: 30px;\n min-height: 30px;\n}\n\n.remove-file:hover {\n background-color: #f1f5f9;\n color: #475569;\n}\n\n.file-input {\n display: none;\n}\n\n\n\n/* 输入容器样式 */\n.input-container {\n padding: 20px;\n display: flex;\n flex-direction: column;\n height: calc(100% - 50px);\n background: linear-gradient(150deg, #2a6ee933, #0000 50%) 0 0 / 400px 200px no-repeat, #fff;\n /* 减去header高度 */\n overflow-y: auto;\n}\n\n.input-container h3 {\n margin-top: 0;\n margin-bottom: 20px;\n font-size: 18px;\n color: #333;\n text-align: center;\n}\n\n/* JD输入区域样式 */\n.jd-input-section {\n margin-bottom: 20px;\n}\n\n.jd-input-section label {\n display: block;\n margin-bottom: 8px;\n font-weight: 500;\n color: #333;\n}\n\n.job-description-textarea {\n width: calc(100% - 16px);\n border: 1px solid #ddd;\n border-radius: 4px;\n resize: vertical;\n font-family: inherit;\n font-size: 14px;\n line-height: 1.5;\n transition: border-color 0.3s;\n padding: 8px;\n}\n\n.job-description-textarea:focus {\n outline: none;\n border-color: #1890ff;\n box-shadow: 0 0 0 2px rgba(24, 144, 255, 0.2);\n}\n\n/* 简历上传区域样式 */\n.resume-upload-section {\n margin-bottom: 20px;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n}\n\n.resume-upload-section label {\n display: block;\n margin-bottom: 8px;\n font-weight: 500;\n color: #333;\n align-self: flex-start;\n}\n\n\n/* 提交按钮通用样式 */\n.submit-button {\n margin-top: 10px;\n padding: 10px 30px;\n background: #0D75FB;\n color: white;\n border: none;\n border-radius: 4px;\n font-size: 16px;\n cursor: pointer;\n transition: all 0.3s ease;\n width: 100%;\n max-width: 400px;\n align-self: center;\n}\n\n.submit-button:hover {\n background-color: #40a9ff;\n}\n\n.submit-button:disabled {\n background-color: rgba(0,0,0,0.04);\n color: rgba(0,0,0,0.25);\n cursor: not-allowed;\n}\n\n\n\n/* AI免责声明和备案信息样式 */\n.ai-disclaimer {\n margin-top: 16px;\n text-align: center;\n font-size: 12px;\n color: #999;\n line-height: 1.5;\n}\n\n.ai-disclaimer p {\n margin: 4px 0;\n}\n\n.beian-info {\n display: flex;\n justify-content: center;\n flex-wrap: wrap;\n gap: 4px;\n}\n\n.ai-disclaimer a {\n color: #666;\n text-decoration: none;\n transition: color 0.2s ease;\n}\n\n.ai-disclaimer a:hover {\n color: #1890ff;\n text-decoration: underline;\n}\n\n/* 添加加载状态的样式 */\n.loading-container {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n padding: 24px;\n }\n \n .loading-spinner {\n width: 40px;\n height: 40px;\n border: 4px solid rgba(0, 0, 0, 0.1);\n border-radius: 50%;\n border-top-color: var(--pcm-primary-color, #1890ff);\n animation: spin 1s linear infinite;\n margin-bottom: 16px;\n }\n \n .loading-text {\n font-size: 16px;\n color: var(--pcm-text-color, #333);\n }\n \n @keyframes spin {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n \n ","import { Component, Prop, h, State, Element, Event, EventEmitter, Watch } from '@stencil/core';\nimport { uploadFileToBackend, FileUploadResponse, verifyApiKey } from '../../utils/utils';\nimport { ConversationStartEventData, InterviewCompleteEventData, StreamCompleteEventData } from '../../components';\nimport { ErrorEventBus, ErrorEventDetail } from '../../utils/error-event';\nimport { authStore } from '../../../store/auth.store';\nimport { configStore } from '../../../store/config.store';\nimport { SentryReporter } from '../../utils/sentry-reporter';\n\n/**\n * 劳动合同卫士\n */\n\n@Component({\n tag: 'pcm-htws-modal',\n styleUrls: ['pcm-htws-modal.css', '../../global/global.css'],\n shadow: true,\n})\nexport class HtwsModal {\n /**\n * 模态框标题\n */\n @Prop() modalTitle: string = '劳动合同卫士';\n\n /**\n * SDK鉴权密钥\n */\n @Prop({ attribute: 'token' }) token!: string;\n\n /**\n * 是否显示聊天模态框\n */\n @Prop({ mutable: true }) isOpen: boolean = false;\n\n /**\n * 当点击模态框关闭时触发\n */\n @Event() modalClosed: EventEmitter<void>;\n\n /**\n * 应用图标URL\n */\n @Prop() icon?: string;\n\n /**\n * 聊天框的页面层级\n */\n @Prop() zIndex?: number = 1000;\n\n /**\n * 是否展示顶部标题栏\n */\n @Prop() isShowHeader: boolean = true;\n\n /**\n * 是否展示右上角的关闭按钮\n */\n @Prop() isNeedClose: boolean = true;\n\n /**\n * 会话ID,传入继续对话,否则创建新会话\n */\n @Prop({ mutable: true }) conversationId?: string;\n\n /**\n * 默认查询文本\n */\n @Prop() defaultQuery: string = '请开始分析';\n\n /**\n * 是否以全屏模式打开,移动端建议设置为true\n */\n @Prop() fullscreen: boolean = false;\n\n /**\n * 自定义输入参数,传入customInputs.input时,会自动切换到自由输入模式<br>\n */\n @Prop() customInputs: Record<string, string> = {};\n\n /**\n * 是否显示工作区历史会话按钮\n */\n @Prop() showWorkspaceHistory: boolean = false;\n\n /**\n * 上传成功事件\n */\n @Event() uploadSuccess: EventEmitter<FileUploadResponse>;\n\n /**\n * 流式输出完成事件\n */\n @Event() streamComplete: EventEmitter<StreamCompleteEventData>;\n\n /**\n * 新会话开始的回调,只会在一轮对话开始时触发一次\n */\n @Event() conversationStart: EventEmitter<ConversationStartEventData>;\n\n /**\n * 当聊天完成时触发\n */\n @Event() interviewComplete: EventEmitter<InterviewCompleteEventData>;\n\n /**\n * SDK密钥验证失败事件\n */\n @Event() tokenInvalid: EventEmitter<void>;\n\n /**\n * 错误事件\n */\n @Event() someErrorEvent: EventEmitter<ErrorEventDetail>;\n\n /**\n * 附件预览模式\n * 'drawer': 在右侧抽屉中预览\n * 'window': 在新窗口中打开\n */\n @Prop() filePreviewMode: 'drawer' | 'window' = 'window';\n\n @State() selectedFile: File | null = null;\n @State() isUploading: boolean = false;\n @State() uploadedFileInfo: FileUploadResponse | null = null;\n @State() showChatModal: boolean = false;\n\n // 使用 @Element 装饰器获取组件的 host 元素\n @Element() hostElement: HTMLElement;\n\n @State() isSubmitting: boolean = false;\n\n // 添加输入模式状态\n @State() inputMode: 'upload' | 'free' = 'upload';\n\n // 自由输入模式的文本\n @State() freeInputText: string = '';\n\n \n private tokenInvalidListener: () => void;\n private removeErrorListener: () => void;\n\n @Watch('token')\n handleTokenChange(newToken: string) {\n // 当传入的 token 变化时,更新 authStore 中的 token\n if (newToken && newToken !== authStore.getToken()) {\n authStore.setToken(newToken);\n }\n }\n\n componentWillLoad() {\n\n // 将 zIndex 存入配置缓存\n if (this.zIndex) {\n configStore.setItem('modal-zIndex', this.zIndex);\n }\n if (this.token) {\n authStore.setToken(this.token);\n }\n\n // 添加全局token无效事件监听器\n this.tokenInvalidListener = () => {\n this.tokenInvalid.emit();\n };\n\n // 添加全局错误监听\n this.removeErrorListener = ErrorEventBus.addErrorListener((errorDetail) => {\n this.someErrorEvent.emit(errorDetail);\n });\n \n document.addEventListener('pcm-token-invalid', this.tokenInvalidListener);\n }\n\n disconnectedCallback() {\n // 组件销毁时移除事件监听器\n document.removeEventListener('pcm-token-invalid', this.tokenInvalidListener);\n // 移除错误监听器\n if (this.removeErrorListener) {\n this.removeErrorListener();\n }\n }\n\n private handleClose = () => {\n this.modalClosed.emit();\n };\n\n private handleFileChange = (event: Event) => {\n const input = event.target as HTMLInputElement;\n if (input.files && input.files.length > 0) {\n this.selectedFile = input.files[0];\n }\n };\n\n private handleUploadClick = () => {\n const fileInput = this.hostElement.shadowRoot?.querySelector('.file-input') as HTMLInputElement;\n fileInput?.click();\n };\n\n private clearSelectedFile = () => {\n this.selectedFile = null;\n this.uploadedFileInfo = null;\n const fileInput = this.hostElement.shadowRoot?.querySelector('.file-input') as HTMLInputElement;\n if (fileInput) {\n fileInput.value = '';\n }\n };\n\n private async uploadFile() {\n if (!this.selectedFile) return;\n\n this.isUploading = true;\n\n try {\n // 使用 uploadFileToBackend 工具函数上传文件\n const result = await uploadFileToBackend(this.selectedFile, {\n }, {\n 'tags': ['other']\n });\n\n this.uploadedFileInfo = result;\n this.uploadSuccess.emit(result);\n } catch (error) {\n console.error('文件上传错误:', error);\n this.clearSelectedFile();\n SentryReporter.captureError(error, {\n action: 'uploadFile',\n component: 'pcm-htws-modal',\n title: '文件上传失败'\n });\n ErrorEventBus.emitError({\n error: error,\n message: '文件上传失败,请重试'\n });\n } finally {\n this.isUploading = false;\n }\n }\n\n // 添加切换输入模式的方法\n private handleToggleInput = () => {\n this.inputMode = this.inputMode === 'upload' ? 'free' : 'upload';\n };\n\n // 添加自由输入文本变更处理方法\n private handleFreeInputChange = (event: Event) => {\n const textarea = event.target as HTMLTextAreaElement;\n this.freeInputText = textarea.value;\n };\n\n private handleStartInterview = async () => {\n if (this.inputMode === 'upload' && !this.selectedFile) {\n alert('请上传合同文件');\n return;\n }\n\n if (this.inputMode === 'free' && !this.freeInputText.trim()) {\n alert('请输入合同内容');\n return;\n }\n\n this.isSubmitting = true;\n\n try {\n if (this.inputMode === 'upload') {\n // 如果还没上传,先上传文件\n if (!this.uploadedFileInfo) {\n await this.uploadFile();\n if (!this.uploadedFileInfo) {\n this.isSubmitting = false;\n return; // 上传失败\n }\n }\n }\n\n // 直接显示聊天模态框\n this.showChatModal = true;\n } catch (error) {\n console.error('开始分析时出错:', error);\n SentryReporter.captureError(error, {\n action: 'handleStartInterview',\n component: 'pcm-htws-modal',\n title: '开始分析时出错'\n });\n ErrorEventBus.emitError({\n error: error,\n message: '开始分析时出错,请重试'\n });\n } finally {\n this.isSubmitting = false;\n }\n };\n\n @Watch('isOpen')\n async handleIsOpenChange(newValue: boolean) {\n if (!newValue) {\n // 重置状态\n this.clearSelectedFile();\n this.showChatModal = false;\n this.freeInputText = '';\n this.inputMode = 'upload'; // 重置为默认上传模式\n } else {\n if (this.customInputs && this.customInputs.input) {\n // 如果有 input,直接切换到自由输入模式并填充内容\n this.inputMode = 'free';\n this.freeInputText = this.customInputs.input;\n }\n await verifyApiKey(this.token);\n\n if (this.conversationId) {\n // 如果有会话ID,直接显示聊天模态框\n this.showChatModal = true;\n }\n }\n }\n\n\n render() {\n if (!this.isOpen) return null;\n\n const modalStyle = {\n zIndex: String(this.zIndex)\n };\n\n const containerClass = {\n 'modal-container': true,\n 'fullscreen': this.fullscreen,\n 'pc-layout': true,\n };\n\n const overlayClass = {\n 'modal-overlay': true,\n 'fullscreen-overlay': this.fullscreen\n };\n\n // 显示加载状态\n const isLoading = this.conversationId && !this.showChatModal;\n\n return (\n <div class={overlayClass} style={modalStyle}>\n <div class={containerClass}>\n {this.isShowHeader && (\n <div class=\"modal-header\">\n <div class=\"header-left\">\n {this.icon && <img src={this.icon} class=\"header-icon\" alt=\"应用图标\" />}\n <div>{this.modalTitle}</div>\n </div>\n {this.isNeedClose && (\n <button class=\"close-button\" onClick={this.handleClose}>\n <span>×</span>\n </button>\n )}\n </div>\n )}\n\n {/* 输入界面 - 仅在不显示聊天模态框且没有会话ID时显示 */}\n {!this.showChatModal && !this.conversationId && (\n <div class=\"input-container\">\n {/* 输入模式切换 */}\n <div class=\"input-mode-toggle\">\n <span>合同内容</span>\n <button\n class=\"toggle-button\"\n onClick={this.handleToggleInput}\n >\n <svg viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\">\n <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 6h16M4 12h16M4 18h16\" />\n </svg>\n 切换输入\n </button>\n </div>\n\n {/* 上传模式 */}\n {this.inputMode === 'upload' && (\n <div class=\"resume-upload-section\">\n <div class=\"upload-area\" onClick={this.handleUploadClick}>\n {this.selectedFile ? (\n <div class=\"file-item\">\n <div class=\"file-item-content\">\n <span class=\"file-icon\">📝</span>\n <span class=\"file-name\">{this.selectedFile.name}</span>\n </div>\n <button class=\"remove-file\" onClick={(e) => {\n e.stopPropagation();\n this.clearSelectedFile();\n }}>×</button>\n </div>\n ) : (\n <div class=\"upload-placeholder\">\n <img src='https://pub.pincaimao.com/static/web/images/home/i_upload.png'></img>\n <p class='upload-text'>点击上传合同</p>\n <p class=\"upload-hint\">支持markdown、pdf、docx、doc、md 格式</p>\n </div>\n )}\n </div>\n </div>\n )}\n\n {/* 自由输入模式 */}\n {this.inputMode === 'free' && (\n <div class=\"free-input\">\n <div class=\"textarea-container\">\n <textarea\n id=\"free-input-text\"\n placeholder=\"请输入合同内容\"\n rows={8}\n value={this.freeInputText}\n onInput={this.handleFreeInputChange}\n ></textarea>\n </div>\n\n <div class=\"input-guide\">\n <div class=\"guide-title\">输入提示:</div>\n <div class=\"guide-content\">\n <div>• 请输入完整的劳动合同内容</div>\n <div>• 包括甲方(公司)、乙方(员工)信息</div>\n <div>• 合同期限、工作内容、工作地点</div>\n <div>• 工作时间、休息休假、劳动报酬</div>\n <div>• 社会保险、劳动保护、劳动条件</div>\n <div>• 合同变更、解除和终止条件等</div>\n </div>\n </div>\n </div>\n )}\n\n <button\n class=\"submit-button\"\n disabled={(this.inputMode === 'upload' && !this.selectedFile) ||\n (this.inputMode === 'free' && !this.freeInputText.trim()) ||\n this.isUploading ||\n this.isSubmitting}\n onClick={this.handleStartInterview}\n >\n {this.isUploading ? '上传中...' : this.isSubmitting ? '处理中...' : '开始分析'}\n </button>\n\n <div class=\"ai-disclaimer\">\n <p>所有内容均由AI生成仅供参考</p>\n <p class=\"beian-info\">\n <span>中央网信办生成式人工智能服务备案号</span>:\n <a href=\"https://www.pincaimao.com\" target=\"_blank\" rel=\"noopener noreferrer\">Hunan-PinCaiMao-202412310003</a>\n </p>\n </div>\n\n <input\n type=\"file\"\n class=\"file-input\"\n onChange={this.handleFileChange}\n />\n </div>\n )}\n\n {/* 加载状态 - 在有会话ID但聊天模态框尚未显示时展示 */}\n {isLoading && (\n <div class=\"loading-container\">\n <div class=\"loading-spinner\"></div>\n <p class=\"loading-text\">正在加载对话...</p>\n </div>\n )}\n\n {/* 聊天界面 - 在显示聊天模态框时显示 */}\n {this.showChatModal && (\n <div>\n <pcm-app-chat-modal\n isOpen={true}\n modalTitle={this.modalTitle}\n icon={this.icon}\n isShowHeader={this.isShowHeader}\n isNeedClose={this.isShowHeader}\n fullscreen={this.fullscreen}\n showWorkspaceHistory={this.showWorkspaceHistory}\n botId=\"3022316191018882\"\n conversationId={this.conversationId}\n defaultQuery={this.defaultQuery}\n enableVoice={false}\n filePreviewMode={this.filePreviewMode}\n customInputs={this.conversationId ? {} : {\n ...this.customInputs,\n file_url: this.inputMode === 'upload' ? this.uploadedFileInfo?.cos_key : undefined,\n file_name: this.customInputs?.file_name || this.uploadedFileInfo?.file_name,\n input: this.inputMode === 'free' ? this.freeInputText : undefined\n }}\n interviewMode=\"text\"\n ></pcm-app-chat-modal>\n </div>\n )}\n </div>\n </div>\n );\n }\n} "],"version":3}
@@ -1,13 +1,14 @@
1
- import { p as proxyCustomElement, H, c as createEvent, h } from './p-CR7WLzmM.js';
2
- import { a as authStore, v as verifyApiKey, u as uploadFileToBackend } from './p-AYWZDCn8.js';
3
- import { d as defineCustomElement$3, E as ErrorEventBus, S as SentryReporter } from './p-CjbFHLT7.js';
4
- import { c as configStore } from './p-DUQ46MUh.js';
5
- import { d as defineCustomElement$4 } from './p-FjtoYPVY.js';
6
- import { d as defineCustomElement$2 } from './p-D2Z8casl.js';
1
+ import { p as proxyCustomElement, H, d as createEvent, h } from './p-BdiUKin5.js';
2
+ import { a as authStore, v as verifyApiKey, u as uploadFileToBackend } from './p-B0WOTw9J.js';
3
+ import { d as defineCustomElement$3, E as ErrorEventBus } from './p-De3VHEUn.js';
4
+ import { c as configStore } from './p-BGXbWUJg.js';
5
+ import { S as SentryReporter } from './p-BW3r6Lrf.js';
6
+ import { d as defineCustomElement$4 } from './p-BywzltXy.js';
7
+ import { d as defineCustomElement$2 } from './p-CuIvbaWY.js';
7
8
 
8
9
  const pcmHyzjModalCss = "";
9
10
 
10
- const globalCss = ":host{font-size:16px}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0, 0, 0, 0.5);display:flex;justify-content:center;align-items:center;z-index:1000;overflow-y:auto;padding:20px}.fullscreen-overlay{padding:0;background-color:rgba(0, 0, 0, 0.7);position:absolute;width:100%;height:calc(100% - 10px)}.modal-container{background-color:#fff;border-radius:8px;width:100%;display:flex;flex-direction:column;position:relative;margin:auto;transition:all 0.3s ease-out;overflow:hidden}.modal-container.fullscreen{width:100%;max-width:none;height:100%;border-radius:0;margin:0;display:flex;flex-direction:column;max-height:100%}.pc-layout{width:80%;max-width:600px;min-width:320px}@media screen and (max-width: 768px){.pc-layout{width:95%}.modal-overlay{padding:10px 0px 0px 0px}.modal-container.fullscreen{width:100%;height:100%;max-height:100%;border-radius:16px 16px 0 0;padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom)}}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:4px 16px;height:50px;border-bottom:1px solid #e8e8e8;flex-shrink:0}.header-left{display:flex;align-items:center;gap:8px;font-size:16px;font-weight:600;color:#333}.header-icon{width:24px;height:24px}.close-button{background:transparent;border:none;cursor:pointer;padding:8px;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:4px}.close-button:hover{background-color:rgba(0, 0, 0, 0.04)}.close-button span{font-size:24px;line-height:1;color:#999}.close-button:hover span{color:#666}.upload-area{cursor:pointer;width:100%}.upload-placeholder{transition:all 0.3s ease;display:flex;flex-direction:column;align-items:center;background:rgba(0, 0, 0, 0.02);border:1px dashed #d9d9d9;border-radius:8px}.upload-placeholder:hover{border:1px dashed #1890ff}.upload-placeholder img{margin-top:8px;width:50px;height:50px}.upload-placeholder .upload-text{margin:4px 0;color:#332F39;font-size:14px}.upload-placeholder .upload-hint{font-size:14px;color:#949AA5;margin-top:8px;padding:0px 10px}.file-item{position:relative;padding:16px;border:1px solid #e2e8f0;border-radius:8px;transition:border-color 0.3s;cursor:pointer;margin-bottom:16px;display:flex;justify-content:space-between;align-items:center}.file-item:hover{border-color:#0D75FB}.file-item-content{display:flex;align-items:center;gap:8px;flex:1;min-width:0;overflow:hidden}.file-icon{color:#0D75FB;flex-shrink:0}.file-name{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - 50px)}.remove-file{background:transparent;border:none;color:#94a3b8;cursor:pointer;font-size:18px;display:flex;align-items:center;justify-content:center;padding:4px;margin-left:8px;border-radius:4px;transition:all 0.2s}.remove-file:hover{background-color:#f1f5f9;color:#475569}.file-input{display:none}.input-container{padding:20px;display:flex;flex-direction:column;height:calc(100% - 50px);background:linear-gradient(150deg, #2a6ee933, #0000 50%) 0 0 / 400px 200px no-repeat, #fff;overflow-y:auto}.input-container h3{margin-top:0;margin-bottom:20px;font-size:18px;color:#333;text-align:center}.jd-input-section{margin-bottom:20px}.jd-input-section label{display:block;margin-bottom:8px;font-weight:500;color:#333}.job-description-textarea{width:calc(100% - 16px);border:1px solid #ddd;border-radius:4px;resize:vertical;font-family:inherit;font-size:14px;line-height:1.5;transition:border-color 0.3s;padding:8px}.job-description-textarea:focus{outline:none;border-color:#1890ff;box-shadow:0 0 0 2px rgba(24, 144, 255, 0.2)}.resume-upload-section{margin-bottom:20px;width:100%;display:flex;flex-direction:column;align-items:center}.resume-upload-section label{display:block;margin-bottom:8px;font-weight:500;color:#333;align-self:flex-start}.submit-button{margin-top:10px;padding:10px 30px;background:#0D75FB;color:white;border:none;border-radius:4px;font-size:16px;cursor:pointer;transition:all 0.3s ease;width:100%;max-width:400px;align-self:center}.submit-button:hover{background-color:#40a9ff}.submit-button:disabled{background-color:rgba(0,0,0,0.04);color:rgba(0,0,0,0.25);cursor:not-allowed}.ai-disclaimer{margin-top:16px;text-align:center;font-size:12px;color:#999;line-height:1.5}.ai-disclaimer p{margin:4px 0}.beian-info{display:flex;justify-content:center;flex-wrap:wrap;gap:4px}.ai-disclaimer a{color:#666;text-decoration:none;transition:color 0.2s ease}.ai-disclaimer a:hover{color:#1890ff;text-decoration:underline}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:24px}.loading-spinner{width:40px;height:40px;border:4px solid rgba(0, 0, 0, 0.1);border-radius:50%;border-top-color:var(--pcm-primary-color, #1890ff);animation:spin 1s linear infinite;margin-bottom:16px}.loading-text{font-size:16px;color:var(--pcm-text-color, #333)}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}";
11
+ const globalCss = ":host{font-size:16px}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:rgba(0, 0, 0, 0.5);display:flex;justify-content:center;align-items:center;z-index:1000;overflow-y:auto;padding:20px}.fullscreen-overlay{padding:0;background-color:rgba(0, 0, 0, 0.7);position:absolute;width:100%;height:calc(100% - 10px)}.modal-container{background-color:#fff;border-radius:8px;width:100%;display:flex;flex-direction:column;position:relative;margin:auto;transition:all 0.3s ease-out;overflow:hidden}.modal-container.fullscreen{width:100%;max-width:none;height:100%;border-radius:0;margin:0;display:flex;flex-direction:column;max-height:100%}.pc-layout{width:80%;max-width:600px;min-width:320px}@media screen and (max-width: 768px){.pc-layout{width:95%}.modal-overlay{padding:10px 0px 0px 0px}.modal-container.fullscreen{width:100%;height:100%;max-height:100%;border-radius:16px 16px 0 0;padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom)}}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:4px 16px;height:50px;border-bottom:1px solid #e8e8e8;flex-shrink:0}.header-left{display:flex;align-items:center;gap:8px;font-size:16px;font-weight:600;color:#333}.header-icon{width:24px;height:24px}.close-button{background:transparent;border:none;cursor:pointer;padding:8px;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:4px}.close-button:hover{background-color:rgba(0, 0, 0, 0.04)}.close-button span{font-size:24px;line-height:1;color:#999}.close-button:hover span{color:#666}.upload-area{cursor:pointer;width:100%}.upload-placeholder{transition:all 0.3s ease;display:flex;flex-direction:column;align-items:center;background:rgba(0, 0, 0, 0.02);border:1px dashed #d9d9d9;border-radius:8px}.upload-placeholder:hover{border:1px dashed #1890ff}.upload-placeholder img{margin-top:8px;width:50px;height:50px}.upload-placeholder .upload-text{margin:4px 0;color:#332F39;font-size:14px}.upload-placeholder .upload-hint{font-size:14px;color:#949AA5;margin-top:8px;padding:0px 10px;text-align:center}.file-item{position:relative;padding:16px;border:1px solid #e2e8f0;border-radius:8px;transition:border-color 0.3s;cursor:pointer;margin-bottom:16px;display:flex;justify-content:space-between;align-items:center}.file-item:hover{border-color:#0D75FB}.file-item-content{display:flex;align-items:center;gap:8px;flex:1;min-width:0;overflow:hidden}.file-icon{color:#0D75FB;flex-shrink:0}.file-name{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - 50px)}.remove-file{background:transparent;border:none;color:#94a3b8;cursor:pointer;font-size:18px;display:flex;align-items:center;justify-content:center;padding:4px;margin-left:8px;border-radius:4px;transition:all 0.2s;min-width:30px;min-height:30px}.remove-file:hover{background-color:#f1f5f9;color:#475569}.file-input{display:none}.input-container{padding:20px;display:flex;flex-direction:column;height:calc(100% - 50px);background:linear-gradient(150deg, #2a6ee933, #0000 50%) 0 0 / 400px 200px no-repeat, #fff;overflow-y:auto}.input-container h3{margin-top:0;margin-bottom:20px;font-size:18px;color:#333;text-align:center}.jd-input-section{margin-bottom:20px}.jd-input-section label{display:block;margin-bottom:8px;font-weight:500;color:#333}.job-description-textarea{width:calc(100% - 16px);border:1px solid #ddd;border-radius:4px;resize:vertical;font-family:inherit;font-size:14px;line-height:1.5;transition:border-color 0.3s;padding:8px}.job-description-textarea:focus{outline:none;border-color:#1890ff;box-shadow:0 0 0 2px rgba(24, 144, 255, 0.2)}.resume-upload-section{margin-bottom:20px;width:100%;display:flex;flex-direction:column;align-items:center}.resume-upload-section label{display:block;margin-bottom:8px;font-weight:500;color:#333;align-self:flex-start}.submit-button{margin-top:10px;padding:10px 30px;background:#0D75FB;color:white;border:none;border-radius:4px;font-size:16px;cursor:pointer;transition:all 0.3s ease;width:100%;max-width:400px;align-self:center}.submit-button:hover{background-color:#40a9ff}.submit-button:disabled{background-color:rgba(0,0,0,0.04);color:rgba(0,0,0,0.25);cursor:not-allowed}.ai-disclaimer{margin-top:16px;text-align:center;font-size:12px;color:#999;line-height:1.5}.ai-disclaimer p{margin:4px 0}.beian-info{display:flex;justify-content:center;flex-wrap:wrap;gap:4px}.ai-disclaimer a{color:#666;text-decoration:none;transition:color 0.2s ease}.ai-disclaimer a:hover{color:#1890ff;text-decoration:underline}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:24px}.loading-spinner{width:40px;height:40px;border:4px solid rgba(0, 0, 0, 0.1);border-radius:50%;border-top-color:var(--pcm-primary-color, #1890ff);animation:spin 1s linear infinite;margin-bottom:16px}.loading-text{font-size:16px;color:var(--pcm-text-color, #333)}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}";
11
12
 
12
13
  const HyzjModal = /*@__PURE__*/ proxyCustomElement(class HyzjModal extends H {
13
14
  constructor() {