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,11 +1,12 @@
1
- import { r as registerInstance, c as createEvent, g as getElement, h } from './index-Bq0K-WqZ.js';
2
- import { a as authStore, c as configStore, v as verifyApiKey, f as fetchAgentInfo, s as sendSSERequest, b as sendHttpRequest, d as synthesizeAudio, u as uploadFileToBackend, g as getCosPresignedUrl, e as getCosPreviewUrl } from './index-GyOE8SlD.js';
3
- import { E as ErrorEventBus, S as SentryReporter } from './sentry-reporter-BFBS363a.js';
4
- import './exports-Bs-zO1WZ.js';
1
+ import { r as registerInstance, i as createEvent, f as getElement, h } from './index-BuVfV0zo.js';
2
+ import { a as authStore, c as configStore, v as verifyApiKey, f as fetchAgentInfo, s as sendSSERequest, b as sendHttpRequest, d as synthesizeAudio, u as uploadFileToBackend, g as getCosPresignedUrl, e as getCosPreviewUrl, P as PCM_DOMAIN, i as isMobile, F as FileUploadState, h as formatFileSize } from './index-BnNqOUZf.js';
3
+ import { E as ErrorEventBus } from './error-event-C0FYX2-Z.js';
4
+ import { S as SentryReporter } from './sentry-reporter-CYzy4_8O.js';
5
+ import { M as Message } from './message.service-DXVhHj6-.js';
5
6
 
6
7
  const pcm1zhanshiMnmsModalCss = "";
7
8
 
8
- const globalCss$9 = ":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)}}";
9
+ const globalCss$d = ":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)}}";
9
10
 
10
11
  const ZhanshiMnmsModal = class {
11
12
  constructor(hostRef) {
@@ -182,7 +183,7 @@ const ZhanshiMnmsModal = class {
182
183
  "isOpen": ["handleIsOpenChange"]
183
184
  }; }
184
185
  };
185
- ZhanshiMnmsModal.style = pcm1zhanshiMnmsModalCss + globalCss$9;
186
+ ZhanshiMnmsModal.style = pcm1zhanshiMnmsModalCss + globalCss$d;
186
187
 
187
188
  /**
188
189
  * marked v9.1.6 - a markdown parser
@@ -3531,7 +3532,7 @@ const ChatAPPModal = class {
3531
3532
  this.videoRef = null;
3532
3533
  }
3533
3534
  }
3534
- // 修改音频转文字方法
3535
+ // 修改音视频转文字方法
3535
3536
  async convertAudioToText(cosKey) {
3536
3537
  try {
3537
3538
  const result = await sendHttpRequest({
@@ -4193,7 +4194,7 @@ const ChatAPPModal = class {
4193
4194
  this.isDrawerOpen = false;
4194
4195
  this.previewUrl = '';
4195
4196
  this.previewContent = '';
4196
- } }, this.previewContentType === 'file' && this.previewUrl && (h("div", { class: "file-preview-container" }, h("iframe", { src: this.previewUrl, frameborder: "0", width: "100%", height: "100%", style: { border: 'none', height: 'calc(100vh - 120px)' } }))), this.previewContentType === 'markdown' && this.previewContent && (h("div", { class: "markdown-preview-container markdown-body", innerHTML: marked(this.previewContent) })), this.previewContentType === 'text' && this.previewContent && (h("div", { class: "text-preview-container" }, h("pre", null, this.previewContent)))), h("pcm-drawer", { isOpen: this.isHistoryDrawerOpen, drawerTitle: "\u5386\u53F2\u4F1A\u8BDD", width: "400px", onClosed: () => {
4197
+ } }, this.previewContentType === 'file' && this.previewUrl && (h("div", { class: "file-preview-container" }, h("iframe", { src: this.previewUrl, frameborder: "0", width: "100%", height: "100%", style: { border: 'none', height: 'calc(100vh - 120px)' } }))), this.previewContentType === 'markdown' && this.previewContent && (h("div", { class: "markdown-preview-container markdown-body", innerHTML: marked(this.previewContent) })), this.previewContentType === 'text' && this.previewContent && (h("div", { class: "text-preview-container" }, h("pre", { style: { whiteSpace: 'pre-wrap', wordWrap: 'break-word' } }, this.previewContent)))), h("pcm-drawer", { isOpen: this.isHistoryDrawerOpen, drawerTitle: "\u5386\u53F2\u4F1A\u8BDD", width: "400px", onClosed: () => {
4197
4198
  this.isHistoryDrawerOpen = false;
4198
4199
  } }, h("div", { class: "history-drawer-content" }, h("div", { class: "conversation-list" }, this.isLoadingConversations ? (h("div", { class: "loading-conversations" }, h("div", { class: "loading-spinner-small" }), h("p", null, "\u52A0\u8F7D\u4E2D..."))) : this.historyConversations.length === 0 ? (h("div", { class: "empty-conversations" }, h("p", null, "\u6682\u65E0\u5386\u53F2\u4F1A\u8BDD"))) : (this.historyConversations.map((conversation) => (h("div", { key: conversation.id, class: {
4199
4200
  'conversation-item': true,
@@ -4304,7 +4305,7 @@ const PcmButton = class {
4304
4305
  if (this.borderStyle) {
4305
4306
  customStyle['borderStyle'] = this.borderStyle;
4306
4307
  }
4307
- return (h("button", { key: 'f8105a4e08d60af62e77185726b2d67f8378ad2a', class: Object.keys(classes).filter(key => classes[key]).join(' '), style: customStyle, disabled: this.disabled, type: "button" }, this.loading && (h("span", { key: '713aaf3ed2e05e933e3813128146cad481179055', class: "loading-icon" })), this.icon && !this.loading && (h("span", { key: 'f680ccc5a0481c8c2eddaef84497475426eba8fb', class: "button-icon" }, h("img", { key: '888b1a7ba7427a91f4c53732ba4583e3cc68fbe5', src: this.icon, alt: "" }))), h("slot", { key: '1ee6ce028c10949dd2d0bc761c52b9e01d8fc673' })));
4308
+ return (h("button", { key: '370d4d7a0676a5d6abdeec7c14b3d15ba3ce9410', class: Object.keys(classes).filter(key => classes[key]).join(' '), style: customStyle, disabled: this.disabled, type: "button" }, this.loading && (h("span", { key: 'c9624a3e95ffb9a325fd3b606689b9176e82930c', class: "loading-icon" })), this.icon && !this.loading && (h("span", { key: 'd2061865c930901f83b0ffc2adc535c13a8c6220', class: "button-icon" }, h("img", { key: '63a726785f5ffe74283915bd69b26a8552c1a593', src: this.icon, alt: "" }))), h("slot", { key: 'e57fecba739bce61f48ffc18c052a5b5923e63d5' })));
4308
4309
  }
4309
4310
  };
4310
4311
  PcmButton.style = pcmButtonCss;
@@ -4449,7 +4450,7 @@ const PcmCard = class {
4449
4450
  const starsCount = this.botData?.follow_count || 0;
4450
4451
  const usageCount = this.botData?.view_count || 0;
4451
4452
 
4452
- 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 || '立即使用'))))));
4453
+ 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 || '立即使用'))))));
4453
4454
  }
4454
4455
  static get watchers() { return {
4455
4456
  "botId": ["watchBotIdHandler"],
@@ -5012,7 +5013,7 @@ const ChatMessageComponent = class {
5012
5013
  }
5013
5014
  }
5014
5015
  render() {
5015
- return (h("div", { key: '5a0c434cc297b60f94398c681145ac8922d0fc70', class: "message-round" }, this.renderUserMessage(), this.renderAssistantMessage()));
5016
+ return (h("div", { key: 'c337dbb59e5236ac112554ec34da6355e63d806f', class: "message-round" }, this.renderUserMessage(), this.renderAssistantMessage()));
5016
5017
  }
5017
5018
  };
5018
5019
  ChatMessageComponent.style = markdownCss + pcmChatMessageCss;
@@ -5144,7 +5145,7 @@ const PcmDrawer = class {
5144
5145
  const maskStyle = {
5145
5146
  zIndex: `${this.zIndex}`,
5146
5147
  };
5147
- return (h("div", { key: 'c0c12a379d5ebfa0dd3cc3d1bbdc3ac758a5006f', class: { 'drawer-container': true, 'drawer-open': this.isOpen } }, this.mask && (h("div", { key: '01a6db65de08dd54fbc1a52efeda576e6f71f4ae', class: { 'drawer-mask': true, 'mask-visible': this.isOpen }, style: maskStyle, onClick: this.handleMaskClick })), h("div", { key: '121cb9463b12c9ff287e1890c03281dd69d074a9', class: { 'drawer-content': true, 'drawer-content-visible': this.isOpen }, style: drawerStyle }, h("div", { key: '839536eb87451599dafdda11185935f51b59ce03', class: "drawer-header" }, this.drawerTitle && h("div", { key: 'f02c896b38f2e089687f0baa96fea06f4303ebf0', class: "drawer-title" }, this.drawerTitle), this.closable && (h("button", { key: '0ed699d106894d01242f105583860376f1228f48', class: "drawer-close", onClick: this.handleClose }, h("svg", { key: '987102bc7f8fb3d86322a8d9029951db6cccb266', viewBox: "64 64 896 896", focusable: "false", "data-icon": "close", width: "1em", height: "1em", fill: "currentColor", "aria-hidden": "true" }, h("path", { key: 'b2e5ea93efbab2fe2a76ed59872144cdb4ee9f6a', d: "M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z" }))))), h("div", { key: 'd882ce5d71c4d2adeecab918a70a56b657e86b63', class: "drawer-body" }, h("slot", { key: '9a822a390e1f2f20d287d29dbbbb0501b0989207' })))));
5148
+ return (h("div", { key: '5ca0630697aaf594d75095a631163a19ed8e4a9b', class: { 'drawer-container': true, 'drawer-open': this.isOpen } }, this.mask && (h("div", { key: '59e9f9f1d48dca079d76ff3ac4f3d4e2f7132bae', class: { 'drawer-mask': true, 'mask-visible': this.isOpen }, style: maskStyle, onClick: this.handleMaskClick })), h("div", { key: 'c9138ac3ff9139d2a199abba971481842eb78ee3', class: { 'drawer-content': true, 'drawer-content-visible': this.isOpen }, style: drawerStyle }, h("div", { key: 'fbcffe58c697b95b188609733afafc1531a87e5f', class: "drawer-header" }, this.drawerTitle && h("div", { key: '7f57ebafc446670961a05c0714a25f2650183e32', class: "drawer-title" }, this.drawerTitle), this.closable && (h("button", { key: '9d6ec03e600639be9c44fd87da0687b1777d0d92', class: "drawer-close", onClick: this.handleClose }, h("svg", { key: '8960f8ce5325339ed8c06b40043f19e17c45aa52', viewBox: "64 64 896 896", focusable: "false", "data-icon": "close", width: "1em", height: "1em", fill: "currentColor", "aria-hidden": "true" }, h("path", { key: '0dede2ac0608601edde40bee26720ee938a8f7d9', d: "M563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8 295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512 196.9 824.9A7.95 7.95 0 00203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1 216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z" }))))), h("div", { key: '28d0ee3ededd2b7ee4b00747acc820227629f91d', class: "drawer-body" }, h("slot", { key: 'bbbd99d68c216d10afa4458fe9e4f384f17cb563' })))));
5148
5149
  }
5149
5150
  static get watchers() { return {
5150
5151
  "isOpen": ["visibleChanged"]
@@ -6467,7 +6468,7 @@ ChatHRModal.style = pcmHrChatModalCss;
6467
6468
 
6468
6469
  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}";
6469
6470
 
6470
- const globalCss$8 = ":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)}}";
6471
+ const globalCss$c = ":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)}}";
6471
6472
 
6472
6473
  const HtwsModal = class {
6473
6474
  constructor(hostRef) {
@@ -6761,11 +6762,11 @@ const HtwsModal = class {
6761
6762
  "isOpen": ["handleIsOpenChange"]
6762
6763
  }; }
6763
6764
  };
6764
- HtwsModal.style = pcmHtwsModalCss + globalCss$8;
6765
+ HtwsModal.style = pcmHtwsModalCss + globalCss$c;
6765
6766
 
6766
6767
  const pcmHyzjModalCss = "";
6767
6768
 
6768
- const globalCss$7 = ":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)}}";
6769
+ const globalCss$b = ":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)}}";
6769
6770
 
6770
6771
  const HyzjModal = class {
6771
6772
  constructor(hostRef) {
@@ -7032,11 +7033,11 @@ const HyzjModal = class {
7032
7033
  "isOpen": ["handleIsOpenChange"]
7033
7034
  }; }
7034
7035
  };
7035
- HyzjModal.style = pcmHyzjModalCss + globalCss$7;
7036
+ HyzjModal.style = pcmHyzjModalCss + globalCss$b;
7036
7037
 
7037
7038
  const pcmJdModalCss = ".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}.toggle-button:disabled{opacity:0.5;cursor:not-allowed}.structured-input{width:100%}.job-name-input{margin-bottom:20px}.job-name-input label{display:block;margin-bottom:8px;font-weight:500;color:#333}.job-name-input input{width:95%;padding:10px 12px;border:1px solid #ddd;border-radius:4px;font-size:14px;background-color:#f9f9f9}.job-name-input input:focus{outline:none;border-color:#2E6EDF;box-shadow:0 0 0 2px rgba(46, 110, 223, 0.2)}.required{color:#f56c6c}.button-container{display:flex;justify-content:center;margin-top:24px;gap:12px;max-width:100%;box-sizing:border-box;flex-wrap:wrap}.next-button{background-color:#2E6EDF;color:white}.next-button:hover{background-color:#2457b8}.next-button:disabled{background-color:#a0c0e8;cursor:not-allowed}.prev-button{background-color:#f0f0f0 !important;color:#333 !important}.prev-button:hover{background-color:#e0e0e0}.tag-selection{width:100%}.tag-selection-content{width:100%}.section-title{font-weight:600;color:#333;margin-bottom:12px;font-size:16px}.ai-tags-section,.basic-tags-section{margin-bottom:24px}.tag-group{margin-bottom:16px}.tag-title{color:#555;margin-bottom:8px;font-weight:500}.tag-container{display:flex;flex-wrap:wrap;gap:8px;max-width:100%;box-sizing:border-box}.tag{display:inline-flex;align-items:center;padding:6px 12px;border-radius:4px;background-color:#f5f5f5;border:1px solid #e0e0e0;color:#333;font-size:13px;cursor:pointer;transition:all 0.2s;max-width:100%;box-sizing:border-box;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tag:hover{background-color:#e8e8e8}.tag-selected{background-color:#e6f0ff;border-color:#2E6EDF;color:#2E6EDF}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 0;background-color:#f9f9f9;border-radius:8px;margin:20px 0;max-width:100%;box-sizing:border-box}.loading-spinner{width:40px;height:40px;border:3px solid rgba(46, 110, 223, 0.2);border-radius:50%;border-top-color:#2E6EDF;animation:spin 1s linear infinite;margin-bottom:16px}@keyframes spin{to{transform:rotate(360deg)}}.loading-text{text-align:center;color:#333;font-weight:500}.loading-subtext{color:#888;font-size:14px;margin-top: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)}.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}@media (max-width: 768px){.tag-container{gap:7px}.tag{padding:4px 8px;font-size:12px}}@media (max-width: 480px){.button-container{flex-direction:column;align-items:center}.next-button,.prev-button,.submit-button{width:100%;margin-bottom:8px}.tag{max-width:calc(50% - 8px)}}.tag-selection,.tag-selection-content,.ai-tags-section,.basic-tags-section,.structured-input,.free-input{max-width:100%;box-sizing:border-box}";
7038
7039
 
7039
- const globalCss$6 = ":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)}}";
7040
+ const globalCss$a = ":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)}}";
7040
7041
 
7041
7042
  const PcmJdModal = class {
7042
7043
  constructor(hostRef) {
@@ -7501,11 +7502,11 @@ const PcmJdModal = class {
7501
7502
  "isOpen": ["handleIsOpenChange"]
7502
7503
  }; }
7503
7504
  };
7504
- PcmJdModal.style = pcmJdModalCss + globalCss$6;
7505
+ PcmJdModal.style = pcmJdModalCss + globalCss$a;
7505
7506
 
7506
7507
  const pcmJlppModalCss = "";
7507
7508
 
7508
- const globalCss$5 = ":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)}}";
7509
+ const globalCss$9 = ":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)}}";
7509
7510
 
7510
7511
  const JlppModal = class {
7511
7512
  constructor(hostRef) {
@@ -7791,11 +7792,11 @@ const JlppModal = class {
7791
7792
  "isOpen": ["handleIsOpenChange"]
7792
7793
  }; }
7793
7794
  };
7794
- JlppModal.style = pcmJlppModalCss + globalCss$5;
7795
+ JlppModal.style = pcmJlppModalCss + globalCss$9;
7795
7796
 
7796
7797
  const pcmMnctModalCss = "";
7797
7798
 
7798
- const globalCss$4 = ":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)}}";
7799
+ const globalCss$8 = ":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)}}";
7799
7800
 
7800
7801
  const MnctModal = class {
7801
7802
  constructor(hostRef) {
@@ -8084,11 +8085,11 @@ const MnctModal = class {
8084
8085
  "isOpen": ["handleIsOpenChange"]
8085
8086
  }; }
8086
8087
  };
8087
- MnctModal.style = pcmMnctModalCss + globalCss$4;
8088
+ MnctModal.style = pcmMnctModalCss + globalCss$8;
8088
8089
 
8089
8090
  const pcmMnmsModalCss = "";
8090
8091
 
8091
- const globalCss$3 = ":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)}}";
8092
+ const globalCss$7 = ":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)}}";
8092
8093
 
8093
8094
  const MnmsModal = class {
8094
8095
  constructor(hostRef) {
@@ -8158,6 +8159,14 @@ const MnmsModal = class {
8158
8159
  * 是否显示工作区历史会话按钮
8159
8160
  */
8160
8161
  showWorkspaceHistory = false;
8162
+ /**
8163
+ * 是否开启移动端上传(仅PC端生效)
8164
+ */
8165
+ mobileJdInputAble = false;
8166
+ /**
8167
+ * 是否开启移动端上传(仅PC端生效)
8168
+ */
8169
+ mobileUploadAble = false;
8161
8170
  /**
8162
8171
  * 上传成功事件
8163
8172
  */
@@ -8222,7 +8231,6 @@ const MnmsModal = class {
8222
8231
  async handleIsOpenChange(newValue) {
8223
8232
  if (!newValue) {
8224
8233
  // 重置状态
8225
- this.clearSelectedFile();
8226
8234
  this.showChatModal = false;
8227
8235
  this.jobDescription = '';
8228
8236
  }
@@ -8266,94 +8274,25 @@ const MnmsModal = class {
8266
8274
  handleClose = () => {
8267
8275
  this.modalClosed.emit();
8268
8276
  };
8269
- handleFileChange = (event) => {
8270
- const input = event.target;
8271
- if (input.files && input.files.length > 0) {
8272
- this.selectedFile = input.files[0];
8273
- }
8274
- };
8275
- handleUploadClick = () => {
8276
- const fileInput = this.hostElement.shadowRoot?.querySelector('.file-input');
8277
- fileInput?.click();
8278
- };
8279
- clearSelectedFile = () => {
8280
- this.selectedFile = null;
8281
- this.uploadedFileInfo = null;
8282
- const fileInput = this.hostElement.shadowRoot?.querySelector('.file-input');
8283
- if (fileInput) {
8284
- fileInput.value = '';
8285
- }
8286
- };
8287
- async uploadFile() {
8288
- if (!this.selectedFile)
8289
- return;
8290
- this.isUploading = true;
8291
- try {
8292
- // 使用 uploadFileToBackend 工具函数上传文件
8293
- const result = await uploadFileToBackend(this.selectedFile, {}, {
8294
- 'tags': ['resume']
8295
- });
8296
- this.uploadedFileInfo = result;
8297
- this.uploadSuccess.emit(result);
8298
- }
8299
- catch (error) {
8300
- console.error('文件上传错误:', error);
8301
- this.clearSelectedFile();
8302
- SentryReporter.captureError(error, {
8303
- action: 'uploadFile',
8304
- component: 'pcm-mnms-modal',
8305
- title: '文件上传失败'
8306
- });
8307
- ErrorEventBus.emitError({
8308
- error: error,
8309
- message: '文件上传失败,请重试'
8310
- });
8311
- }
8312
- finally {
8313
- this.isUploading = false;
8314
- }
8315
- }
8316
8277
  handleJobDescriptionChange = (event) => {
8317
8278
  const textarea = event.target;
8318
8279
  this.jobDescription = textarea.value;
8319
8280
  };
8320
8281
  handleStartInterview = async () => {
8321
- // 判断是否隐藏简历上传区域
8322
- const hideResumeUpload = Boolean(this.customInputs && (this.customInputs.file_url || this.customInputs.resume_content));
8323
8282
  // 如果没有预设的job_info,则需要检查用户输入
8324
8283
  if (!this.customInputs?.job_info && !this.jobDescription.trim()) {
8325
8284
  alert('请输入职位描述');
8326
8285
  return;
8327
8286
  }
8328
8287
  this.isSubmitting = true;
8329
- try {
8330
- // 如果需要上传文件且还没上传,先上传文件(简历为选填)
8331
- if (!hideResumeUpload && this.selectedFile && !this.uploadedFileInfo) {
8332
- await this.uploadFile();
8333
- if (!this.uploadedFileInfo) {
8334
- this.isSubmitting = false;
8335
- return; // 上传失败
8336
- }
8337
- }
8338
- // 直接显示聊天模态框
8339
- this.showChatModal = true;
8340
- }
8341
- catch (error) {
8342
- console.error('开始面试时出错:', error);
8343
- SentryReporter.captureError(error, {
8344
- action: 'handleStartInterview',
8345
- component: 'pcm-mnms-modal',
8346
- title: '开始面试时出错'
8347
- });
8348
- ErrorEventBus.emitError({
8349
- error: error,
8350
- message: '开始面试时出错,请重试'
8351
- });
8352
- }
8353
- finally {
8354
- this.isSubmitting = false;
8288
+ // 判断文件是否正在上传
8289
+ if (await this.pcmUploadRef?.getIsUploading?.()) {
8290
+ Message.info('文件上传中,请稍后');
8291
+ return;
8355
8292
  }
8293
+ this.showChatModal = true;
8356
8294
  };
8295
+ pcmUploadRef;
8357
8296
  render() {
8358
8297
  if (!this.isOpen)
8359
8298
  return null;
@@ -8377,10 +8316,15 @@ const MnmsModal = class {
8377
8316
  const hideResumeUpload = Boolean(this.customInputs && (this.customInputs.file_url || this.customInputs.resume_content));
8378
8317
  // 判断是否同时提供了(file_url或resume_content)和job_info
8379
8318
  const hasFileAndJob = Boolean((this.customInputs?.file_url || this.customInputs?.resume_content) && this.customInputs?.job_info);
8380
- return (h("div", { class: overlayClass, style: modalStyle }, h("div", { class: containerClass }, this.isShowHeader && (h("div", { class: "modal-header" }, h("div", { class: "header-left" }, this.icon && h("img", { src: this.icon, class: "header-icon", alt: "\u5E94\u7528\u56FE\u6807" }), h("div", null, this.modalTitle)), this.isNeedClose && (h("button", { class: "close-button", onClick: this.handleClose }, h("span", null, "\u00D7"))))), !this.showChatModal && !this.conversationId && !hasFileAndJob && (h("div", { class: "input-container" }, !hideJdInput && (h("div", { class: "jd-input-section" }, h("label", { htmlFor: "job-description" }, "\u8BF7\u8F93\u5165\u804C\u4F4D\u63CF\u8FF0 (JD)"), h("textarea", { id: "job-description", class: "job-description-textarea", placeholder: "\u8BF7\u8F93\u5165\u804C\u4F4D\u63CF\u8FF0\uFF0C\u5305\u62EC\u804C\u8D23\u3001\u8981\u6C42\u7B49\u4FE1\u606F...", rows: 6, value: this.jobDescription, onInput: this.handleJobDescriptionChange }))), !hideResumeUpload && (h("div", { class: "resume-upload-section" }, h("label", null, "\u4E0A\u4F20\u7B80\u5386\uFF08\u9009\u586B\uFF09"), h("div", { class: "upload-area", onClick: this.handleUploadClick }, this.selectedFile ? (h("div", { class: "file-item" }, h("div", { class: "file-item-content" }, h("span", { class: "file-icon" }, "\uD83D\uDCDD"), h("span", { class: "file-name" }, this.selectedFile.name)), h("button", { class: "remove-file", onClick: (e) => {
8381
- e.stopPropagation();
8382
- this.clearSelectedFile();
8383
- } }, "\u00D7"))) : (h("div", { class: "upload-placeholder" }, h("img", { src: 'https://pub.pincaimao.com/static/web/images/home/i_upload.png' }), h("p", { class: 'upload-text' }, "\u70B9\u51FB\u4E0A\u4F20\u7B80\u5386"), h("p", { class: "upload-hint" }, "\u652F\u6301 txt\u3001markdown\u3001pdf\u3001docx\u3001doc\u3001md \u683C\u5F0F")))))), h("button", { class: "submit-button", disabled: (!hideJdInput && !this.jobDescription.trim()) || this.isUploading || this.isSubmitting, onClick: this.handleStartInterview }, this.isUploading ? '上传中...' : this.isSubmitting ? '处理中...' : '开始分析'), h("div", { class: "ai-disclaimer" }, h("p", null, "\u6240\u6709\u5185\u5BB9\u5747\u7531AI\u751F\u6210\u4EC5\u4F9B\u53C2\u8003"), h("p", { class: "beian-info" }, h("span", null, "\u4E2D\u592E\u7F51\u4FE1\u529E\u751F\u6210\u5F0F\u4EBA\u5DE5\u667A\u80FD\u670D\u52A1\u5907\u6848\u53F7"), "\uFF1A", h("a", { href: "https://www.pincaimao.com", target: "_blank", rel: "noopener noreferrer" }, "Hunan-PinCaiMao-202412310003"))), h("input", { type: "file", class: "file-input", onChange: this.handleFileChange }))), isLoading && (h("div", { class: "loading-container" }, h("div", { class: "loading-spinner" }), h("p", { class: "loading-text" }, "\u6B63\u5728\u52A0\u8F7D\u5BF9\u8BDD..."))), this.showChatModal && (h("div", null, h("pcm-app-chat-modal", { isOpen: true, modalTitle: this.modalTitle, icon: this.icon, isShowHeader: this.isShowHeader, isNeedClose: this.isShowHeader, fullscreen: this.fullscreen, showWorkspaceHistory: this.showWorkspaceHistory, botId: "3022316191018884", conversationId: this.conversationId, defaultQuery: this.defaultQuery, enableTTS: false, filePreviewMode: this.filePreviewMode, showCopyButton: this.showCopyButton, showFeedbackButtons: this.showFeedbackButtons, customInputs: this.conversationId ? {} : {
8319
+ return (h("div", { class: overlayClass, style: modalStyle }, h("div", { class: containerClass }, this.isShowHeader && (h("div", { class: "modal-header" }, h("div", { class: "header-left" }, this.icon && h("img", { src: this.icon, class: "header-icon", alt: "\u5E94\u7528\u56FE\u6807" }), h("div", null, this.modalTitle)), this.isNeedClose && (h("button", { class: "close-button", onClick: this.handleClose }, h("span", null, "\u00D7"))))), !this.showChatModal && !this.conversationId && !hasFileAndJob && (h("div", { class: "input-container" }, !hideJdInput && (h("div", { class: "jd-input-section" }, h("label", { htmlFor: "job-description" }, "\u8BF7\u8F93\u5165\u804C\u4F4D\u63CF\u8FF0 (JD)"), !!this.mobileJdInputAble && (h("pcm-mobile-input-btn", { name: "\u804C\u4F4D\u63CF\u8FF0", onOk: (e) => {
8320
+ this.jobDescription = e.detail;
8321
+ } })), h("textarea", { id: "job-description", class: "job-description-textarea", placeholder: "\u8BF7\u8F93\u5165\u804C\u4F4D\u63CF\u8FF0\uFF0C\u5305\u62EC\u804C\u8D23\u3001\u8981\u6C42\u7B49\u4FE1\u606F...", rows: 6, value: this.jobDescription, onInput: this.handleJobDescriptionChange }))), !hideResumeUpload && (h("pcm-upload", { ref: el => this.pcmUploadRef = el, maxFileSize: 15 * 1024 * 1024, multiple: false, mobileUploadAble: this.mobileUploadAble, labelText: "\u4E0A\u4F20\u7B80\u5386\uFF08\u9009\u586B\uFF09", acceptFileSuffixList: ['.txt', '.md', '.pdf', '.docx', '.doc'], uploadParams: {
8322
+ tags: ['resume'],
8323
+ }, onUploadChange: (e) => {
8324
+ const result = e.detail ?? [];
8325
+ this.uploadedFileInfo = result[0];
8326
+ this.uploadSuccess.emit(this.uploadedFileInfo);
8327
+ } })), h("button", { class: "submit-button", disabled: (!hideJdInput && !this.jobDescription.trim()) || this.isUploading || this.isSubmitting, onClick: this.handleStartInterview }, this.isUploading ? '上传中...' : this.isSubmitting ? '处理中...' : '开始分析'), h("div", { class: "ai-disclaimer" }, h("p", null, "\u6240\u6709\u5185\u5BB9\u5747\u7531AI\u751F\u6210\u4EC5\u4F9B\u53C2\u8003"), h("p", { class: "beian-info" }, h("span", null, "\u4E2D\u592E\u7F51\u4FE1\u529E\u751F\u6210\u5F0F\u4EBA\u5DE5\u667A\u80FD\u670D\u52A1\u5907\u6848\u53F7"), "\uFF1A", h("a", { href: "https://www.pincaimao.com", target: "_blank", rel: "noopener noreferrer" }, "Hunan-PinCaiMao-202412310003"))))), isLoading && (h("div", { class: "loading-container" }, h("div", { class: "loading-spinner" }), h("p", { class: "loading-text" }, "\u6B63\u5728\u52A0\u8F7D\u5BF9\u8BDD..."))), this.showChatModal && (h("div", null, h("pcm-app-chat-modal", { isOpen: true, modalTitle: this.modalTitle, icon: this.icon, isShowHeader: this.isShowHeader, isNeedClose: this.isShowHeader, fullscreen: this.fullscreen, showWorkspaceHistory: this.showWorkspaceHistory, botId: "3022316191018884", conversationId: this.conversationId, defaultQuery: this.defaultQuery, enableTTS: false, filePreviewMode: this.filePreviewMode, showCopyButton: this.showCopyButton, showFeedbackButtons: this.showFeedbackButtons, customInputs: this.conversationId ? {} : {
8384
8328
  ...this.customInputs,
8385
8329
  file_url: this.customInputs?.file_url || this.uploadedFileInfo?.cos_key,
8386
8330
  file_name: this.customInputs?.file_name || this.uploadedFileInfo?.file_name,
@@ -8393,69 +8337,2968 @@ const MnmsModal = class {
8393
8337
  "isOpen": ["handleIsOpenChange"]
8394
8338
  }; }
8395
8339
  };
8396
- MnmsModal.style = pcmMnmsModalCss + globalCss$3;
8340
+ MnmsModal.style = pcmMnmsModalCss + globalCss$7;
8397
8341
 
8398
- const pcmMsbgModalCss = "";
8342
+ /**
8343
+ * @module QRCode
8344
+ * @package @nuintun/qrcode
8345
+ * @license MIT
8346
+ * @version 5.0.2
8347
+ * @author nuintun <nuintun@qq.com>
8348
+ * @description A pure JavaScript QRCode encode and decode library.
8349
+ * @see https://github.com/nuintun/qrcode#readme
8350
+ */
8399
8351
 
8400
- const globalCss$2 = ":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)}}";
8352
+ /**
8353
+ * @module Charset
8354
+ */
8355
+ const VALUES_TO_CHARSET = new Map();
8356
+ class Charset {
8357
+ #label;
8358
+ #values;
8359
+ // See: https://en.wikipedia.org/wiki/Extended_Channel_Interpretation
8360
+ static CP437 = new Charset('cp437', 2, 0);
8361
+ static ISO_8859_1 = new Charset('iso-8859-1', 3, 1);
8362
+ static ISO_8859_2 = new Charset('iso-8859-2', 4);
8363
+ static ISO_8859_3 = new Charset('iso-8859-3', 5);
8364
+ static ISO_8859_4 = new Charset('iso-8859-4', 6);
8365
+ static ISO_8859_5 = new Charset('iso-8859-5', 7);
8366
+ static ISO_8859_6 = new Charset('iso-8859-6', 8);
8367
+ static ISO_8859_7 = new Charset('iso-8859-7', 9);
8368
+ static ISO_8859_8 = new Charset('iso-8859-8', 10);
8369
+ static ISO_8859_9 = new Charset('iso-8859-9', 11);
8370
+ static ISO_8859_10 = new Charset('iso-8859-10', 12);
8371
+ static ISO_8859_11 = new Charset('iso-8859-11', 13);
8372
+ static ISO_8859_13 = new Charset('iso-8859-13', 15);
8373
+ static ISO_8859_14 = new Charset('iso-8859-14', 16);
8374
+ static ISO_8859_15 = new Charset('iso-8859-15', 17);
8375
+ static ISO_8859_16 = new Charset('iso-8859-16', 18);
8376
+ static SHIFT_JIS = new Charset('shift-jis', 20);
8377
+ static CP1250 = new Charset('cp1250', 21);
8378
+ static CP1251 = new Charset('cp1251', 22);
8379
+ static CP1252 = new Charset('cp1252', 23);
8380
+ static CP1256 = new Charset('cp1256', 24);
8381
+ static UTF_16BE = new Charset('utf-16be', 25);
8382
+ static UTF_8 = new Charset('utf-8', 26);
8383
+ static ASCII = new Charset('ascii', 27);
8384
+ static BIG5 = new Charset('big5', 28);
8385
+ static GB2312 = new Charset('gb2312', 29);
8386
+ static EUC_KR = new Charset('euc-kr', 30);
8387
+ static GBK = new Charset('gbk', 31);
8388
+ static GB18030 = new Charset('gb18030', 32);
8389
+ static UTF_16LE = new Charset('utf-16le', 33);
8390
+ static UTF_32BE = new Charset('utf-32be', 34);
8391
+ static UTF_32LE = new Charset('utf-32le', 35);
8392
+ static ISO_646_INV = new Charset('iso-646-inv', 170);
8393
+ static BINARY = new Charset('binary', 899);
8394
+ /**
8395
+ * @constructor
8396
+ * @param label The label of charset.
8397
+ * @param values The values of charset.
8398
+ */
8399
+ constructor(label, ...values) {
8400
+ this.#label = label;
8401
+ this.#values = Object.freeze(values);
8402
+ for (const value of values) {
8403
+ if (value >= 0 && value <= 999999 && Number.isInteger(value)) {
8404
+ VALUES_TO_CHARSET.set(value, this);
8405
+ } else {
8406
+ throw new Error('illegal extended channel interpretation value');
8407
+ }
8408
+ }
8409
+ }
8410
+ /**
8411
+ * @property label
8412
+ * @description Get the label of charset.
8413
+ */
8414
+ get label() {
8415
+ return this.#label;
8416
+ }
8417
+ /**
8418
+ * @property values
8419
+ * @description Get the values of charset.
8420
+ */
8421
+ get values() {
8422
+ return this.#values;
8423
+ }
8424
+ }
8401
8425
 
8402
- const MsbgModal = class {
8403
- constructor(hostRef) {
8404
- registerInstance(this, hostRef);
8405
- this.modalClosed = createEvent(this, "modalClosed");
8406
- this.uploadSuccess = createEvent(this, "uploadSuccess");
8407
- this.streamComplete = createEvent(this, "streamComplete");
8408
- this.conversationStart = createEvent(this, "conversationStart");
8409
- this.interviewComplete = createEvent(this, "interviewComplete");
8410
- this.tokenInvalid = createEvent(this, "tokenInvalid");
8411
- this.someErrorEvent = createEvent(this, "someErrorEvent");
8426
+ /**
8427
+ * @module QRCode
8428
+ * @package @nuintun/qrcode
8429
+ * @license MIT
8430
+ * @version 5.0.2
8431
+ * @author nuintun <nuintun@qq.com>
8432
+ * @description A pure JavaScript QRCode encode and decode library.
8433
+ * @see https://github.com/nuintun/qrcode#readme
8434
+ */
8435
+
8436
+ /**
8437
+ * @module utils
8438
+ */
8439
+ function toBit(value) {
8440
+ return value & 0x01;
8441
+ }
8442
+ function toInt32(value) {
8443
+ return value | 0;
8444
+ }
8445
+ function getBitMask(value) {
8446
+ return 1 << getBitOffset(value);
8447
+ }
8448
+ function getBitOffset(value) {
8449
+ return value & 0x1f;
8450
+ }
8451
+ // Return the position of the most significant bit set (to one) in the "value". The most
8452
+ // significant bit is position 32. If there is no bit set, return 0. Examples:
8453
+ // - findMSBSet(0) => 0
8454
+ // - findMSBSet(1) => 1
8455
+ // - findMSBSet(255) => 8
8456
+ function findMSBSet(value) {
8457
+ return 32 - Math.clz32(value);
8458
+ }
8459
+ // Calculate BCH (Bose-Chaudhuri-Hocquenghem) code for "value" using polynomial "poly". The BCH
8460
+ // code is used for encoding type information and version information.
8461
+ // Example: Calculation of version information of 7.
8462
+ // f(x) is created from 7.
8463
+ // - 7 = 000111 in 6 bits
8464
+ // - f(x) = x^2 + x^1 + x^0
8465
+ // g(x) is given by the standard (p. 67)
8466
+ // - g(x) = x^12 + x^11 + x^10 + x^9 + x^8 + x^5 + x^2 + 1
8467
+ // Multiply f(x) by x^(18 - 6)
8468
+ // - f'(x) = f(x) * x^(18 - 6)
8469
+ // - f'(x) = x^14 + x^13 + x^12
8470
+ // Calculate the remainder of f'(x) / g(x)
8471
+ // x^2
8472
+ // __________________________________________________
8473
+ // g(x) )x^14 + x^13 + x^12
8474
+ // x^14 + x^13 + x^12 + x^11 + x^10 + x^7 + x^4 + x^2
8475
+ // --------------------------------------------------
8476
+ // x^11 + x^10 + x^7 + x^4 + x^2
8477
+ //
8478
+ // The remainder is x^11 + x^10 + x^7 + x^4 + x^2
8479
+ // Encode it in binary: 110010010100
8480
+ // The return value is 0xc94 (1100 1001 0100)
8481
+ //
8482
+ // Since all coefficients in the polynomials are 1 or 0, we can do the calculation by bit
8483
+ // operations. We don't care if coefficients are positive or negative.
8484
+ function calculateBCHCode(value, poly) {
8485
+ // If poly is "1 1111 0010 0101" (version info poly), msbSetInPoly is 13. We'll subtract 1
8486
+ // from 13 to make it 12.
8487
+ const msbSetInPoly = findMSBSet(poly);
8488
+ value <<= msbSetInPoly - 1;
8489
+ // Do the division business using exclusive-or operations.
8490
+ while (findMSBSet(value) >= msbSetInPoly) {
8491
+ value ^= poly << (findMSBSet(value) - msbSetInPoly);
8492
+ }
8493
+ // Now the "value" is the remainder (i.e. the BCH code).
8494
+ return value;
8495
+ }
8496
+
8497
+ /**
8498
+ * @module QRCode
8499
+ * @package @nuintun/qrcode
8500
+ * @license MIT
8501
+ * @version 5.0.2
8502
+ * @author nuintun <nuintun@qq.com>
8503
+ * @description A pure JavaScript QRCode encode and decode library.
8504
+ * @see https://github.com/nuintun/qrcode#readme
8505
+ */
8506
+
8507
+ /**
8508
+ * @module Mode
8509
+ */
8510
+ const VALUES_TO_MODE = new Map();
8511
+ class Mode {
8512
+ #bits;
8513
+ #characterCountBitsSet;
8514
+ static TERMINATOR = new Mode([0, 0, 0], 0x00);
8515
+ static NUMERIC = new Mode([10, 12, 14], 0x01);
8516
+ static ALPHANUMERIC = new Mode([9, 11, 13], 0x02);
8517
+ static STRUCTURED_APPEND = new Mode([0, 0, 0], 0x03);
8518
+ static BYTE = new Mode([8, 16, 16], 0x04);
8519
+ static ECI = new Mode([0, 0, 0], 0x07);
8520
+ static KANJI = new Mode([8, 10, 12], 0x08);
8521
+ static FNC1_FIRST_POSITION = new Mode([0, 0, 0], 0x05);
8522
+ static FNC1_SECOND_POSITION = new Mode([0, 0, 0], 0x09);
8523
+ static HANZI = new Mode([8, 10, 12], 0x0d);
8524
+ constructor(characterCountBitsSet, bits) {
8525
+ this.#bits = bits;
8526
+ this.#characterCountBitsSet = new Int32Array(characterCountBitsSet);
8527
+ VALUES_TO_MODE.set(bits, this);
8528
+ }
8529
+ get bits() {
8530
+ return this.#bits;
8531
+ }
8532
+ getCharacterCountBits({ version }) {
8533
+ let offset;
8534
+ if (version <= 9) {
8535
+ offset = 0;
8536
+ } else if (version <= 26) {
8537
+ offset = 1;
8538
+ } else {
8539
+ offset = 2;
8540
+ }
8541
+ return this.#characterCountBitsSet[offset];
8542
+ }
8543
+ }
8544
+
8545
+ /**
8546
+ * @module QRCode
8547
+ * @package @nuintun/qrcode
8548
+ * @license MIT
8549
+ * @version 5.0.2
8550
+ * @author nuintun <nuintun@qq.com>
8551
+ * @description A pure JavaScript QRCode encode and decode library.
8552
+ * @see https://github.com/nuintun/qrcode#readme
8553
+ */
8554
+
8555
+
8556
+ /**
8557
+ * @module mask
8558
+ */
8559
+ // Penalty weights.
8560
+ const N1 = 3;
8561
+ const N2 = 3;
8562
+ const N3 = 40;
8563
+ const N4 = 10;
8564
+ // Is dark point.
8565
+ function isDark(matrix, x, y) {
8566
+ return matrix.get(x, y) === 1;
8567
+ }
8568
+ // Helper function for applyMaskPenaltyRule1. We need this for doing this calculation in both
8569
+ // horizontal and vertical orders respectively.
8570
+ function applyMaskPenaltyRule1Internal(matrix, isVertical) {
8571
+ let penalty = 0;
8572
+ const { size } = matrix;
8573
+ for (let y = 0; y < size; y++) {
8574
+ let prevBit = -1;
8575
+ let numSameBitCells = 0;
8576
+ for (let x = 0; x < size; x++) {
8577
+ const bit = isVertical ? matrix.get(y, x) : matrix.get(x, y);
8578
+ if (bit === prevBit) {
8579
+ numSameBitCells++;
8580
+ } else {
8581
+ if (numSameBitCells >= 5) {
8582
+ penalty += N1 + (numSameBitCells - 5);
8583
+ }
8584
+ // set prev bit.
8585
+ prevBit = bit;
8586
+ // include the cell itself.
8587
+ numSameBitCells = 1;
8588
+ }
8589
+ }
8590
+ if (numSameBitCells >= 5) {
8591
+ penalty += N1 + (numSameBitCells - 5);
8592
+ }
8593
+ }
8594
+ return penalty;
8595
+ }
8596
+ // Apply mask penalty rule 1 and return the penalty. Find repetitive cells with the same color and
8597
+ // give penalty to them. Example: 00000 or 11111.
8598
+ function applyMaskPenaltyRule1(matrix) {
8599
+ return applyMaskPenaltyRule1Internal(matrix) + applyMaskPenaltyRule1Internal(matrix, true);
8600
+ }
8601
+ // Apply mask penalty rule 2 and return the penalty. Find 2x2 blocks with the same color and give
8602
+ // penalty to them. This is actually equivalent to the spec's rule, which is to find MxN blocks and give a
8603
+ // penalty proportional to (M-1)x(N-1), because this is the number of 2x2 blocks inside such a block.
8604
+ function applyMaskPenaltyRule2(matrix) {
8605
+ let penalty = 0;
8606
+ const size = matrix.size - 1;
8607
+ for (let y = 0; y < size; y++) {
8608
+ for (let x = 0; x < size; x++) {
8609
+ const bit = matrix.get(x, y);
8610
+ if (
8611
+ // Find 2x2 blocks with the same color.
8612
+ bit === matrix.get(x + 1, y) &&
8613
+ bit === matrix.get(x, y + 1) &&
8614
+ bit === matrix.get(x + 1, y + 1)
8615
+ ) {
8616
+ penalty += N2;
8617
+ }
8618
+ }
8619
+ }
8620
+ return penalty;
8621
+ }
8622
+ // Is is four white, check on horizontal and vertical.
8623
+ function isFourWhite(matrix, offset, from, to, isVertical) {
8624
+ if (from < 0 || to > matrix.size) {
8625
+ return false;
8626
+ }
8627
+ for (let i = from; i < to; i++) {
8628
+ if (isVertical ? isDark(matrix, offset, i) : isDark(matrix, i, offset)) {
8629
+ return false;
8630
+ }
8631
+ }
8632
+ return true;
8633
+ }
8634
+ // Apply mask penalty rule 3 and return the penalty. Find consecutive runs of 1:1:3:1:1:4
8635
+ // starting with black, or 4:1:1:3:1:1 starting with white, and give penalty to them. If we
8636
+ // find patterns like 000010111010000, we give penalty once.
8637
+ function applyMaskPenaltyRule3(matrix) {
8638
+ let numPenalties = 0;
8639
+ const { size } = matrix;
8640
+ for (let y = 0; y < size; y++) {
8641
+ for (let x = 0; x < size; x++) {
8642
+ if (
8643
+ // Find consecutive runs of 1:1:3:1:1:4 or 4:1:1:3:1:1, patterns like 000010111010000.
8644
+ x + 6 < size &&
8645
+ isDark(matrix, x, y) &&
8646
+ !isDark(matrix, x + 1, y) &&
8647
+ isDark(matrix, x + 2, y) &&
8648
+ isDark(matrix, x + 3, y) &&
8649
+ isDark(matrix, x + 4, y) &&
8650
+ !isDark(matrix, x + 5, y) &&
8651
+ isDark(matrix, x + 6, y) &&
8652
+ (isFourWhite(matrix, y, x - 4, x) || isFourWhite(matrix, y, x + 7, x + 11))
8653
+ ) {
8654
+ numPenalties++;
8655
+ }
8656
+ if (
8657
+ // Find consecutive runs of 1:1:3:1:1:4 or 4:1:1:3:1:1, patterns like 000010111010000.
8658
+ y + 6 < size &&
8659
+ isDark(matrix, x, y) &&
8660
+ !isDark(matrix, x, y + 1) &&
8661
+ isDark(matrix, x, y + 2) &&
8662
+ isDark(matrix, x, y + 3) &&
8663
+ isDark(matrix, x, y + 4) &&
8664
+ !isDark(matrix, x, y + 5) &&
8665
+ isDark(matrix, x, y + 6) &&
8666
+ (isFourWhite(matrix, x, y - 4, y, true) || isFourWhite(matrix, x, y + 7, y + 11, true))
8667
+ ) {
8668
+ numPenalties++;
8669
+ }
8670
+ }
8671
+ }
8672
+ return numPenalties * N3;
8673
+ }
8674
+ // Apply mask penalty rule 4 and return the penalty. Calculate the ratio of dark cells and give
8675
+ // penalty if the ratio is far from 50%. It gives 10 penalty for 5% distance.
8676
+ function applyMaskPenaltyRule4(matrix) {
8677
+ let numDarkCells = 0;
8678
+ const { size } = matrix;
8679
+ for (let y = 0; y < size; y++) {
8680
+ for (let x = 0; x < size; x++) {
8681
+ if (isDark(matrix, x, y)) {
8682
+ numDarkCells++;
8683
+ }
8684
+ }
8685
+ }
8686
+ const numTotalCells = size * size;
8687
+ const fivePercentVariances = toInt32((Math.abs(numDarkCells * 2 - numTotalCells) * 10) / numTotalCells);
8688
+ return fivePercentVariances * N4;
8689
+ }
8690
+ // The mask penalty calculation is complicated. See Table 11 of ISO/IEC 18004:2015(E)(p.54) for details.
8691
+ // Basically it applies four rules and summate all penalties.
8692
+ function calculateMaskPenalty(matrix) {
8693
+ return (
8694
+ applyMaskPenaltyRule1(matrix) +
8695
+ applyMaskPenaltyRule2(matrix) +
8696
+ applyMaskPenaltyRule3(matrix) +
8697
+ applyMaskPenaltyRule4(matrix)
8698
+ );
8699
+ }
8700
+ // Return is apply mask at "x" and "y". See 7.8 of ISO/IEC 18004:2015(E)(p.50) for mask pattern conditions.
8701
+ function isApplyMask(mask, x, y) {
8702
+ let temporary;
8703
+ let intermediate;
8704
+ switch (mask) {
8705
+ case 0:
8706
+ intermediate = (y + x) & 0x01;
8707
+ break;
8708
+ case 1:
8709
+ intermediate = y & 0x01;
8710
+ break;
8711
+ case 2:
8712
+ intermediate = x % 3;
8713
+ break;
8714
+ case 3:
8715
+ intermediate = (y + x) % 3;
8716
+ break;
8717
+ case 4:
8718
+ intermediate = (toInt32(y / 2) + toInt32(x / 3)) & 0x01;
8719
+ break;
8720
+ case 5:
8721
+ temporary = y * x;
8722
+ intermediate = (temporary & 0x01) + (temporary % 3);
8723
+ break;
8724
+ case 6:
8725
+ temporary = y * x;
8726
+ intermediate = ((temporary & 0x01) + (temporary % 3)) & 0x01;
8727
+ break;
8728
+ case 7:
8729
+ intermediate = (((y * x) % 3) + ((y + x) & 0x01)) & 0x01;
8730
+ break;
8731
+ default:
8732
+ throw new Error(`illegal mask: ${mask}`);
8733
+ }
8734
+ return intermediate === 0;
8735
+ }
8736
+
8737
+ /**
8738
+ * @module QRCode
8739
+ * @package @nuintun/qrcode
8740
+ * @license MIT
8741
+ * @version 5.0.2
8742
+ * @author nuintun <nuintun@qq.com>
8743
+ * @description A pure JavaScript QRCode encode and decode library.
8744
+ * @see https://github.com/nuintun/qrcode#readme
8745
+ */
8746
+
8747
+ /**
8748
+ * @module ECLevel
8749
+ */
8750
+ const VALUES_TO_ECLEVEL = new Map();
8751
+ class ECLevel {
8752
+ #name;
8753
+ #bits;
8754
+ #level;
8755
+ // L = ~7% correction.
8756
+ static L = new ECLevel('L', 0, 0x01);
8757
+ // L = ~15% correction.
8758
+ static M = new ECLevel('M', 1, 0x00);
8759
+ // L = ~25% correction.
8760
+ static Q = new ECLevel('Q', 2, 0x03);
8761
+ // L = ~30% correction.
8762
+ static H = new ECLevel('H', 3, 0x02);
8763
+ constructor(name, level, bits) {
8764
+ this.#bits = bits;
8765
+ this.#name = name;
8766
+ this.#level = level;
8767
+ VALUES_TO_ECLEVEL.set(bits, this);
8768
+ }
8769
+ get bits() {
8770
+ return this.#bits;
8771
+ }
8772
+ get name() {
8773
+ return this.#name;
8774
+ }
8775
+ get level() {
8776
+ return this.#level;
8777
+ }
8778
+ }
8779
+
8780
+ /**
8781
+ * @module QRCode
8782
+ * @package @nuintun/qrcode
8783
+ * @license MIT
8784
+ * @version 5.0.2
8785
+ * @author nuintun <nuintun@qq.com>
8786
+ * @description A pure JavaScript QRCode encode and decode library.
8787
+ * @see https://github.com/nuintun/qrcode#readme
8788
+ */
8789
+
8790
+ /**
8791
+ * @module ECB
8792
+ */
8793
+ class ECB {
8794
+ #count;
8795
+ #numDataCodewords;
8796
+ constructor(count, numDataCodewords) {
8797
+ this.#count = count;
8798
+ this.#numDataCodewords = numDataCodewords;
8799
+ }
8800
+ get count() {
8801
+ return this.#count;
8802
+ }
8803
+ get numDataCodewords() {
8804
+ return this.#numDataCodewords;
8805
+ }
8806
+ }
8807
+
8808
+ /**
8809
+ * @module QRCode
8810
+ * @package @nuintun/qrcode
8811
+ * @license MIT
8812
+ * @version 5.0.2
8813
+ * @author nuintun <nuintun@qq.com>
8814
+ * @description A pure JavaScript QRCode encode and decode library.
8815
+ * @see https://github.com/nuintun/qrcode#readme
8816
+ */
8817
+
8818
+ /**
8819
+ * @module ECBlocks
8820
+ */
8821
+ class ECBlocks {
8822
+ #ecBlocks;
8823
+ #numTotalCodewords;
8824
+ #numTotalECCodewords;
8825
+ #numTotalDataCodewords;
8826
+ #numECCodewordsPerBlock;
8827
+ constructor(numECCodewordsPerBlock, ...ecBlocks) {
8828
+ let numBlocks = 0;
8829
+ let numTotalDataCodewords = 0;
8830
+ for (const { count, numDataCodewords } of ecBlocks) {
8831
+ numBlocks += count;
8832
+ numTotalDataCodewords += numDataCodewords * count;
8833
+ }
8834
+ const numTotalECCodewords = numECCodewordsPerBlock * numBlocks;
8835
+ this.#ecBlocks = ecBlocks;
8836
+ this.#numTotalECCodewords = numTotalECCodewords;
8837
+ this.#numTotalDataCodewords = numTotalDataCodewords;
8838
+ this.#numECCodewordsPerBlock = numECCodewordsPerBlock;
8839
+ this.#numTotalCodewords = numTotalDataCodewords + numTotalECCodewords;
8840
+ }
8841
+ get ecBlocks() {
8842
+ return this.#ecBlocks;
8843
+ }
8844
+ get numTotalCodewords() {
8845
+ return this.#numTotalCodewords;
8846
+ }
8847
+ get numTotalECCodewords() {
8848
+ return this.#numTotalECCodewords;
8849
+ }
8850
+ get numTotalDataCodewords() {
8851
+ return this.#numTotalDataCodewords;
8852
+ }
8853
+ get numECCodewordsPerBlock() {
8854
+ return this.#numECCodewordsPerBlock;
8855
+ }
8856
+ }
8857
+
8858
+ /**
8859
+ * @module QRCode
8860
+ * @package @nuintun/qrcode
8861
+ * @license MIT
8862
+ * @version 5.0.2
8863
+ * @author nuintun <nuintun@qq.com>
8864
+ * @description A pure JavaScript QRCode encode and decode library.
8865
+ * @see https://github.com/nuintun/qrcode#readme
8866
+ */
8867
+
8868
+ class Version {
8869
+ #size;
8870
+ #version;
8871
+ #ecBlocks;
8872
+ #alignmentPatterns;
8873
+ constructor(version, alignmentPatterns, ...ecBlocks) {
8874
+ this.#version = version;
8875
+ this.#ecBlocks = ecBlocks;
8876
+ this.#size = 17 + 4 * version;
8877
+ this.#alignmentPatterns = alignmentPatterns;
8878
+ }
8879
+ get size() {
8880
+ return this.#size;
8881
+ }
8882
+ get version() {
8883
+ return this.#version;
8884
+ }
8885
+ get alignmentPatterns() {
8886
+ return this.#alignmentPatterns;
8887
+ }
8888
+ getECBlocks({ level }) {
8889
+ return this.#ecBlocks[level];
8890
+ }
8891
+ }
8892
+ const VERSIONS = [
8893
+ new Version(
8894
+ 1,
8895
+ [],
8896
+ new ECBlocks(7, new ECB(1, 19)),
8897
+ new ECBlocks(10, new ECB(1, 16)),
8898
+ new ECBlocks(13, new ECB(1, 13)),
8899
+ new ECBlocks(17, new ECB(1, 9))
8900
+ ),
8901
+ new Version(
8902
+ 2,
8903
+ [6, 18],
8904
+ new ECBlocks(10, new ECB(1, 34)),
8905
+ new ECBlocks(16, new ECB(1, 28)),
8906
+ new ECBlocks(22, new ECB(1, 22)),
8907
+ new ECBlocks(28, new ECB(1, 16))
8908
+ ),
8909
+ new Version(
8910
+ 3,
8911
+ [6, 22],
8912
+ new ECBlocks(15, new ECB(1, 55)),
8913
+ new ECBlocks(26, new ECB(1, 44)),
8914
+ new ECBlocks(18, new ECB(2, 17)),
8915
+ new ECBlocks(22, new ECB(2, 13))
8916
+ ),
8917
+ new Version(
8918
+ 4,
8919
+ [6, 26],
8920
+ new ECBlocks(20, new ECB(1, 80)),
8921
+ new ECBlocks(18, new ECB(2, 32)),
8922
+ new ECBlocks(26, new ECB(2, 24)),
8923
+ new ECBlocks(16, new ECB(4, 9))
8924
+ ),
8925
+ new Version(
8926
+ 5,
8927
+ [6, 30],
8928
+ new ECBlocks(26, new ECB(1, 108)),
8929
+ new ECBlocks(24, new ECB(2, 43)),
8930
+ new ECBlocks(18, new ECB(2, 15), new ECB(2, 16)),
8931
+ new ECBlocks(22, new ECB(2, 11), new ECB(2, 12))
8932
+ ),
8933
+ new Version(
8934
+ 6,
8935
+ [6, 34],
8936
+ new ECBlocks(18, new ECB(2, 68)),
8937
+ new ECBlocks(16, new ECB(4, 27)),
8938
+ new ECBlocks(24, new ECB(4, 19)),
8939
+ new ECBlocks(28, new ECB(4, 15))
8940
+ ),
8941
+ new Version(
8942
+ 7,
8943
+ [6, 22, 38],
8944
+ new ECBlocks(20, new ECB(2, 78)),
8945
+ new ECBlocks(18, new ECB(4, 31)),
8946
+ new ECBlocks(18, new ECB(2, 14), new ECB(4, 15)),
8947
+ new ECBlocks(26, new ECB(4, 13), new ECB(1, 14))
8948
+ ),
8949
+ new Version(
8950
+ 8,
8951
+ [6, 24, 42],
8952
+ new ECBlocks(24, new ECB(2, 97)),
8953
+ new ECBlocks(22, new ECB(2, 38), new ECB(2, 39)),
8954
+ new ECBlocks(22, new ECB(4, 18), new ECB(2, 19)),
8955
+ new ECBlocks(26, new ECB(4, 14), new ECB(2, 15))
8956
+ ),
8957
+ new Version(
8958
+ 9,
8959
+ [6, 26, 46],
8960
+ new ECBlocks(30, new ECB(2, 116)),
8961
+ new ECBlocks(22, new ECB(3, 36), new ECB(2, 37)),
8962
+ new ECBlocks(20, new ECB(4, 16), new ECB(4, 17)),
8963
+ new ECBlocks(24, new ECB(4, 12), new ECB(4, 13))
8964
+ ),
8965
+ new Version(
8966
+ 10,
8967
+ [6, 28, 50],
8968
+ new ECBlocks(18, new ECB(2, 68), new ECB(2, 69)),
8969
+ new ECBlocks(26, new ECB(4, 43), new ECB(1, 44)),
8970
+ new ECBlocks(24, new ECB(6, 19), new ECB(2, 20)),
8971
+ new ECBlocks(28, new ECB(6, 15), new ECB(2, 16))
8972
+ ),
8973
+ new Version(
8974
+ 11,
8975
+ [6, 30, 54],
8976
+ new ECBlocks(20, new ECB(4, 81)),
8977
+ new ECBlocks(30, new ECB(1, 50), new ECB(4, 51)),
8978
+ new ECBlocks(28, new ECB(4, 22), new ECB(4, 23)),
8979
+ new ECBlocks(24, new ECB(3, 12), new ECB(8, 13))
8980
+ ),
8981
+ new Version(
8982
+ 12,
8983
+ [6, 32, 58],
8984
+ new ECBlocks(24, new ECB(2, 92), new ECB(2, 93)),
8985
+ new ECBlocks(22, new ECB(6, 36), new ECB(2, 37)),
8986
+ new ECBlocks(26, new ECB(4, 20), new ECB(6, 21)),
8987
+ new ECBlocks(28, new ECB(7, 14), new ECB(4, 15))
8988
+ ),
8989
+ new Version(
8990
+ 13,
8991
+ [6, 34, 62],
8992
+ new ECBlocks(26, new ECB(4, 107)),
8993
+ new ECBlocks(22, new ECB(8, 37), new ECB(1, 38)),
8994
+ new ECBlocks(24, new ECB(8, 20), new ECB(4, 21)),
8995
+ new ECBlocks(22, new ECB(12, 11), new ECB(4, 12))
8996
+ ),
8997
+ new Version(
8998
+ 14,
8999
+ [6, 26, 46, 66],
9000
+ new ECBlocks(30, new ECB(3, 115), new ECB(1, 116)),
9001
+ new ECBlocks(24, new ECB(4, 40), new ECB(5, 41)),
9002
+ new ECBlocks(20, new ECB(11, 16), new ECB(5, 17)),
9003
+ new ECBlocks(24, new ECB(11, 12), new ECB(5, 13))
9004
+ ),
9005
+ new Version(
9006
+ 15,
9007
+ [6, 26, 48, 70],
9008
+ new ECBlocks(22, new ECB(5, 87), new ECB(1, 88)),
9009
+ new ECBlocks(24, new ECB(5, 41), new ECB(5, 42)),
9010
+ new ECBlocks(30, new ECB(5, 24), new ECB(7, 25)),
9011
+ new ECBlocks(24, new ECB(11, 12), new ECB(7, 13))
9012
+ ),
9013
+ new Version(
9014
+ 16,
9015
+ [6, 26, 50, 74],
9016
+ new ECBlocks(24, new ECB(5, 98), new ECB(1, 99)),
9017
+ new ECBlocks(28, new ECB(7, 45), new ECB(3, 46)),
9018
+ new ECBlocks(24, new ECB(15, 19), new ECB(2, 20)),
9019
+ new ECBlocks(30, new ECB(3, 15), new ECB(13, 16))
9020
+ ),
9021
+ new Version(
9022
+ 17,
9023
+ [6, 30, 54, 78],
9024
+ new ECBlocks(28, new ECB(1, 107), new ECB(5, 108)),
9025
+ new ECBlocks(28, new ECB(10, 46), new ECB(1, 47)),
9026
+ new ECBlocks(28, new ECB(1, 22), new ECB(15, 23)),
9027
+ new ECBlocks(28, new ECB(2, 14), new ECB(17, 15))
9028
+ ),
9029
+ new Version(
9030
+ 18,
9031
+ [6, 30, 56, 82],
9032
+ new ECBlocks(30, new ECB(5, 120), new ECB(1, 121)),
9033
+ new ECBlocks(26, new ECB(9, 43), new ECB(4, 44)),
9034
+ new ECBlocks(28, new ECB(17, 22), new ECB(1, 23)),
9035
+ new ECBlocks(28, new ECB(2, 14), new ECB(19, 15))
9036
+ ),
9037
+ new Version(
9038
+ 19,
9039
+ [6, 30, 58, 86],
9040
+ new ECBlocks(28, new ECB(3, 113), new ECB(4, 114)),
9041
+ new ECBlocks(26, new ECB(3, 44), new ECB(11, 45)),
9042
+ new ECBlocks(26, new ECB(17, 21), new ECB(4, 22)),
9043
+ new ECBlocks(26, new ECB(9, 13), new ECB(16, 14))
9044
+ ),
9045
+ new Version(
9046
+ 20,
9047
+ [6, 34, 62, 90],
9048
+ new ECBlocks(28, new ECB(3, 107), new ECB(5, 108)),
9049
+ new ECBlocks(26, new ECB(3, 41), new ECB(13, 42)),
9050
+ new ECBlocks(30, new ECB(15, 24), new ECB(5, 25)),
9051
+ new ECBlocks(28, new ECB(15, 15), new ECB(10, 16))
9052
+ ),
9053
+ new Version(
9054
+ 21,
9055
+ [6, 28, 50, 72, 94],
9056
+ new ECBlocks(28, new ECB(4, 116), new ECB(4, 117)),
9057
+ new ECBlocks(26, new ECB(17, 42)),
9058
+ new ECBlocks(28, new ECB(17, 22), new ECB(6, 23)),
9059
+ new ECBlocks(30, new ECB(19, 16), new ECB(6, 17))
9060
+ ),
9061
+ new Version(
9062
+ 22,
9063
+ [6, 26, 50, 74, 98],
9064
+ new ECBlocks(28, new ECB(2, 111), new ECB(7, 112)),
9065
+ new ECBlocks(28, new ECB(17, 46)),
9066
+ new ECBlocks(30, new ECB(7, 24), new ECB(16, 25)),
9067
+ new ECBlocks(24, new ECB(34, 13))
9068
+ ),
9069
+ new Version(
9070
+ 23,
9071
+ [6, 30, 54, 78, 102],
9072
+ new ECBlocks(30, new ECB(4, 121), new ECB(5, 122)),
9073
+ new ECBlocks(28, new ECB(4, 47), new ECB(14, 48)),
9074
+ new ECBlocks(30, new ECB(11, 24), new ECB(14, 25)),
9075
+ new ECBlocks(30, new ECB(16, 15), new ECB(14, 16))
9076
+ ),
9077
+ new Version(
9078
+ 24,
9079
+ [6, 28, 54, 80, 106],
9080
+ new ECBlocks(30, new ECB(6, 117), new ECB(4, 118)),
9081
+ new ECBlocks(28, new ECB(6, 45), new ECB(14, 46)),
9082
+ new ECBlocks(30, new ECB(11, 24), new ECB(16, 25)),
9083
+ new ECBlocks(30, new ECB(30, 16), new ECB(2, 17))
9084
+ ),
9085
+ new Version(
9086
+ 25,
9087
+ [6, 32, 58, 84, 110],
9088
+ new ECBlocks(26, new ECB(8, 106), new ECB(4, 107)),
9089
+ new ECBlocks(28, new ECB(8, 47), new ECB(13, 48)),
9090
+ new ECBlocks(30, new ECB(7, 24), new ECB(22, 25)),
9091
+ new ECBlocks(30, new ECB(22, 15), new ECB(13, 16))
9092
+ ),
9093
+ new Version(
9094
+ 26,
9095
+ [6, 30, 58, 86, 114],
9096
+ new ECBlocks(28, new ECB(10, 114), new ECB(2, 115)),
9097
+ new ECBlocks(28, new ECB(19, 46), new ECB(4, 47)),
9098
+ new ECBlocks(28, new ECB(28, 22), new ECB(6, 23)),
9099
+ new ECBlocks(30, new ECB(33, 16), new ECB(4, 17))
9100
+ ),
9101
+ new Version(
9102
+ 27,
9103
+ [6, 34, 62, 90, 118],
9104
+ new ECBlocks(30, new ECB(8, 122), new ECB(4, 123)),
9105
+ new ECBlocks(28, new ECB(22, 45), new ECB(3, 46)),
9106
+ new ECBlocks(30, new ECB(8, 23), new ECB(26, 24)),
9107
+ new ECBlocks(30, new ECB(12, 15), new ECB(28, 16))
9108
+ ),
9109
+ new Version(
9110
+ 28,
9111
+ [6, 26, 50, 74, 98, 122],
9112
+ new ECBlocks(30, new ECB(3, 117), new ECB(10, 118)),
9113
+ new ECBlocks(28, new ECB(3, 45), new ECB(23, 46)),
9114
+ new ECBlocks(30, new ECB(4, 24), new ECB(31, 25)),
9115
+ new ECBlocks(30, new ECB(11, 15), new ECB(31, 16))
9116
+ ),
9117
+ new Version(
9118
+ 29,
9119
+ [6, 30, 54, 78, 102, 126],
9120
+ new ECBlocks(30, new ECB(7, 116), new ECB(7, 117)),
9121
+ new ECBlocks(28, new ECB(21, 45), new ECB(7, 46)),
9122
+ new ECBlocks(30, new ECB(1, 23), new ECB(37, 24)),
9123
+ new ECBlocks(30, new ECB(19, 15), new ECB(26, 16))
9124
+ ),
9125
+ new Version(
9126
+ 30,
9127
+ [6, 26, 52, 78, 104, 130],
9128
+ new ECBlocks(30, new ECB(5, 115), new ECB(10, 116)),
9129
+ new ECBlocks(28, new ECB(19, 47), new ECB(10, 48)),
9130
+ new ECBlocks(30, new ECB(15, 24), new ECB(25, 25)),
9131
+ new ECBlocks(30, new ECB(23, 15), new ECB(25, 16))
9132
+ ),
9133
+ new Version(
9134
+ 31,
9135
+ [6, 30, 56, 82, 108, 134],
9136
+ new ECBlocks(30, new ECB(13, 115), new ECB(3, 116)),
9137
+ new ECBlocks(28, new ECB(2, 46), new ECB(29, 47)),
9138
+ new ECBlocks(30, new ECB(42, 24), new ECB(1, 25)),
9139
+ new ECBlocks(30, new ECB(23, 15), new ECB(28, 16))
9140
+ ),
9141
+ new Version(
9142
+ 32,
9143
+ [6, 34, 60, 86, 112, 138],
9144
+ new ECBlocks(30, new ECB(17, 115)),
9145
+ new ECBlocks(28, new ECB(10, 46), new ECB(23, 47)),
9146
+ new ECBlocks(30, new ECB(10, 24), new ECB(35, 25)),
9147
+ new ECBlocks(30, new ECB(19, 15), new ECB(35, 16))
9148
+ ),
9149
+ new Version(
9150
+ 33,
9151
+ [6, 30, 58, 86, 114, 142],
9152
+ new ECBlocks(30, new ECB(17, 115), new ECB(1, 116)),
9153
+ new ECBlocks(28, new ECB(14, 46), new ECB(21, 47)),
9154
+ new ECBlocks(30, new ECB(29, 24), new ECB(19, 25)),
9155
+ new ECBlocks(30, new ECB(11, 15), new ECB(46, 16))
9156
+ ),
9157
+ new Version(
9158
+ 34,
9159
+ [6, 34, 62, 90, 118, 146],
9160
+ new ECBlocks(30, new ECB(13, 115), new ECB(6, 116)),
9161
+ new ECBlocks(28, new ECB(14, 46), new ECB(23, 47)),
9162
+ new ECBlocks(30, new ECB(44, 24), new ECB(7, 25)),
9163
+ new ECBlocks(30, new ECB(59, 16), new ECB(1, 17))
9164
+ ),
9165
+ new Version(
9166
+ 35,
9167
+ [6, 30, 54, 78, 102, 126, 150],
9168
+ new ECBlocks(30, new ECB(12, 121), new ECB(7, 122)),
9169
+ new ECBlocks(28, new ECB(12, 47), new ECB(26, 48)),
9170
+ new ECBlocks(30, new ECB(39, 24), new ECB(14, 25)),
9171
+ new ECBlocks(30, new ECB(22, 15), new ECB(41, 16))
9172
+ ),
9173
+ new Version(
9174
+ 36,
9175
+ [6, 24, 50, 76, 102, 128, 154],
9176
+ new ECBlocks(30, new ECB(6, 121), new ECB(14, 122)),
9177
+ new ECBlocks(28, new ECB(6, 47), new ECB(34, 48)),
9178
+ new ECBlocks(30, new ECB(46, 24), new ECB(10, 25)),
9179
+ new ECBlocks(30, new ECB(2, 15), new ECB(64, 16))
9180
+ ),
9181
+ new Version(
9182
+ 37,
9183
+ [6, 28, 54, 80, 106, 132, 158],
9184
+ new ECBlocks(30, new ECB(17, 122), new ECB(4, 123)),
9185
+ new ECBlocks(28, new ECB(29, 46), new ECB(14, 47)),
9186
+ new ECBlocks(30, new ECB(49, 24), new ECB(10, 25)),
9187
+ new ECBlocks(30, new ECB(24, 15), new ECB(46, 16))
9188
+ ),
9189
+ new Version(
9190
+ 38,
9191
+ [6, 32, 58, 84, 110, 136, 162],
9192
+ new ECBlocks(30, new ECB(4, 122), new ECB(18, 123)),
9193
+ new ECBlocks(28, new ECB(13, 46), new ECB(32, 47)),
9194
+ new ECBlocks(30, new ECB(48, 24), new ECB(14, 25)),
9195
+ new ECBlocks(30, new ECB(42, 15), new ECB(32, 16))
9196
+ ),
9197
+ new Version(
9198
+ 39,
9199
+ [6, 26, 54, 82, 110, 138, 166],
9200
+ new ECBlocks(30, new ECB(20, 117), new ECB(4, 118)),
9201
+ new ECBlocks(28, new ECB(40, 47), new ECB(7, 48)),
9202
+ new ECBlocks(30, new ECB(43, 24), new ECB(22, 25)),
9203
+ new ECBlocks(30, new ECB(10, 15), new ECB(67, 16))
9204
+ ),
9205
+ new Version(
9206
+ 40,
9207
+ [6, 30, 58, 86, 114, 142, 170],
9208
+ new ECBlocks(30, new ECB(19, 118), new ECB(6, 119)),
9209
+ new ECBlocks(28, new ECB(18, 47), new ECB(31, 48)),
9210
+ new ECBlocks(30, new ECB(34, 24), new ECB(34, 25)),
9211
+ new ECBlocks(30, new ECB(20, 15), new ECB(61, 16))
9212
+ )
9213
+ ];
9214
+
9215
+ /**
9216
+ * @module QRCode
9217
+ * @package @nuintun/qrcode
9218
+ * @license MIT
9219
+ * @version 5.0.2
9220
+ * @author nuintun <nuintun@qq.com>
9221
+ * @description A pure JavaScript QRCode encode and decode library.
9222
+ * @see https://github.com/nuintun/qrcode#readme
9223
+ */
9224
+
9225
+ /**
9226
+ * @module Polynomial
9227
+ */
9228
+ class Polynomial {
9229
+ #field;
9230
+ #coefficients;
9231
+ constructor(field, coefficients) {
9232
+ const { length } = coefficients;
9233
+ if (length <= 0) {
9234
+ throw new Error('polynomial coefficients cannot empty');
9235
+ }
9236
+ this.#field = field;
9237
+ if (length > 1 && coefficients[0] === 0) {
9238
+ // Leading term must be non-zero for anything except the constant polynomial "0".
9239
+ let firstNonZero = 1;
9240
+ while (firstNonZero < length && coefficients[firstNonZero] === 0) {
9241
+ firstNonZero++;
9242
+ }
9243
+ if (firstNonZero === length) {
9244
+ this.#coefficients = new Int32Array([0]);
9245
+ } else {
9246
+ const array = new Int32Array(length - firstNonZero);
9247
+ array.set(coefficients.subarray(firstNonZero));
9248
+ this.#coefficients = array;
9249
+ }
9250
+ } else {
9251
+ this.#coefficients = coefficients;
9252
+ }
9253
+ }
9254
+ get coefficients() {
9255
+ return this.#coefficients;
9256
+ }
9257
+ isZero() {
9258
+ return this.#coefficients[0] === 0;
9259
+ }
9260
+ getDegree() {
9261
+ return this.#coefficients.length - 1;
9262
+ }
9263
+ getCoefficient(degree) {
9264
+ const coefficients = this.#coefficients;
9265
+ return coefficients[coefficients.length - 1 - degree];
9266
+ }
9267
+ evaluate(a) {
9268
+ if (a === 0) {
9269
+ // Just return the x^0 coefficient.
9270
+ return this.getCoefficient(0);
9271
+ }
9272
+ let result;
9273
+ const coefficients = this.#coefficients;
9274
+ if (a === 1) {
9275
+ // Just the sum of the coefficients.
9276
+ result = 0;
9277
+ for (const coefficient of coefficients) {
9278
+ result ^= coefficient;
9279
+ }
9280
+ return result;
9281
+ }
9282
+ [result] = coefficients;
9283
+ const field = this.#field;
9284
+ const { length } = coefficients;
9285
+ for (let i = 1; i < length; i++) {
9286
+ result = field.multiply(a, result) ^ coefficients[i];
9287
+ }
9288
+ return result;
9289
+ }
9290
+ multiply(other) {
9291
+ const field = this.#field;
9292
+ const coefficients = this.#coefficients;
9293
+ const { length } = coefficients;
9294
+ if (other instanceof Polynomial) {
9295
+ if (this.isZero() || other.isZero()) {
9296
+ return field.zero;
9297
+ }
9298
+ const otherCoefficients = other.#coefficients;
9299
+ const otherLength = otherCoefficients.length;
9300
+ const product = new Int32Array(length + otherLength - 1);
9301
+ for (let i = 0; i < length; i++) {
9302
+ const coefficient = coefficients[i];
9303
+ for (let j = 0; j < otherLength; j++) {
9304
+ product[i + j] ^= field.multiply(coefficient, otherCoefficients[j]);
9305
+ }
9306
+ }
9307
+ return new Polynomial(field, product);
9308
+ }
9309
+ if (other === 0) {
9310
+ return field.zero;
9311
+ }
9312
+ if (other === 1) {
9313
+ return this;
9314
+ }
9315
+ const product = new Int32Array(length);
9316
+ for (let i = 0; i < length; i++) {
9317
+ product[i] = field.multiply(coefficients[i], other);
9318
+ }
9319
+ return new Polynomial(field, product);
9320
+ }
9321
+ multiplyByMonomial(degree, coefficient) {
9322
+ const field = this.#field;
9323
+ if (coefficient === 0) {
9324
+ return field.zero;
9325
+ }
9326
+ const coefficients = this.#coefficients;
9327
+ const { length } = coefficients;
9328
+ const product = new Int32Array(length + degree);
9329
+ for (let i = 0; i < length; i++) {
9330
+ product[i] = field.multiply(coefficients[i], coefficient);
9331
+ }
9332
+ return new Polynomial(field, product);
9333
+ }
9334
+ addOrSubtract(other) {
9335
+ if (this.isZero()) {
9336
+ return other;
9337
+ }
9338
+ if (other.isZero()) {
9339
+ return this;
9340
+ }
9341
+ let largerCoefficients = other.#coefficients;
9342
+ let largerLength = largerCoefficients.length;
9343
+ let smallerCoefficients = this.#coefficients;
9344
+ let smallerLength = smallerCoefficients.length;
9345
+ if (largerLength < smallerLength) {
9346
+ [largerLength, smallerLength] = [smallerLength, largerLength];
9347
+ [largerCoefficients, smallerCoefficients] = [smallerCoefficients, largerCoefficients];
9348
+ }
9349
+ // Diff index offset.
9350
+ const offset = largerLength - smallerLength;
9351
+ const coefficients = new Int32Array(largerLength);
9352
+ // Copy high-order terms only found in higher-degree polynomial's coefficients.
9353
+ coefficients.set(largerCoefficients.subarray(0, offset));
9354
+ for (let i = offset; i < largerLength; i++) {
9355
+ coefficients[i] = smallerCoefficients[i - offset] ^ largerCoefficients[i];
9356
+ }
9357
+ return new Polynomial(this.#field, coefficients);
9358
+ }
9359
+ divide(other) {
9360
+ const field = this.#field;
9361
+ let quotient = field.zero;
9362
+ let remainder = this;
9363
+ const denominatorLeadingTerm = other.getCoefficient(other.getDegree());
9364
+ const invertDenominatorLeadingTerm = field.invert(denominatorLeadingTerm);
9365
+ while (remainder.getDegree() >= other.getDegree() && !remainder.isZero()) {
9366
+ const remainderDegree = remainder.getDegree();
9367
+ const degreeDiff = remainderDegree - other.getDegree();
9368
+ const scale = field.multiply(remainder.getCoefficient(remainderDegree), invertDenominatorLeadingTerm);
9369
+ const term = other.multiplyByMonomial(degreeDiff, scale);
9370
+ const iterationQuotient = field.buildPolynomial(degreeDiff, scale);
9371
+ quotient = quotient.addOrSubtract(iterationQuotient);
9372
+ remainder = remainder.addOrSubtract(term);
9373
+ }
9374
+ return [quotient, remainder];
9375
+ }
9376
+ }
9377
+
9378
+ /**
9379
+ * @module QRCode
9380
+ * @package @nuintun/qrcode
9381
+ * @license MIT
9382
+ * @version 5.0.2
9383
+ * @author nuintun <nuintun@qq.com>
9384
+ * @description A pure JavaScript QRCode encode and decode library.
9385
+ * @see https://github.com/nuintun/qrcode#readme
9386
+ */
9387
+
9388
+
9389
+ /**
9390
+ * @module GaloisField
9391
+ */
9392
+ class GaloisField {
9393
+ #size;
9394
+ #one;
9395
+ #zero;
9396
+ #generator;
9397
+ #expTable;
9398
+ #logTable;
9399
+ constructor(primitive, size, generator) {
9400
+ let x = 1;
9401
+ const expTable = new Int32Array(size);
9402
+ for (let i = 0; i < size; i++) {
9403
+ expTable[i] = x;
9404
+ // We're assuming the generator alpha is 2.
9405
+ x *= 2;
9406
+ if (x >= size) {
9407
+ x ^= primitive;
9408
+ x &= size - 1;
9409
+ }
9410
+ }
9411
+ const logTable = new Int32Array(size);
9412
+ for (let i = 0, length = size - 1; i < length; i++) {
9413
+ logTable[expTable[i]] = i;
9414
+ }
9415
+ this.#size = size;
9416
+ this.#expTable = expTable;
9417
+ this.#logTable = logTable;
9418
+ this.#generator = generator;
9419
+ this.#one = new Polynomial(this, new Int32Array([1]));
9420
+ this.#zero = new Polynomial(this, new Int32Array([0]));
9421
+ }
9422
+ get size() {
9423
+ return this.#size;
9424
+ }
9425
+ get one() {
9426
+ return this.#one;
9427
+ }
9428
+ get zero() {
9429
+ return this.#zero;
9430
+ }
9431
+ get generator() {
9432
+ return this.#generator;
9433
+ }
9434
+ exp(a) {
9435
+ return this.#expTable[a];
9436
+ }
9437
+ log(a) {
9438
+ return this.#logTable[a];
9439
+ }
9440
+ invert(a) {
9441
+ return this.#expTable[this.#size - this.#logTable[a] - 1];
9442
+ }
9443
+ multiply(a, b) {
9444
+ if (a === 0 || b === 0) {
9445
+ return 0;
9446
+ }
9447
+ const logTable = this.#logTable;
9448
+ return this.#expTable[(logTable[a] + logTable[b]) % (this.#size - 1)];
9449
+ }
9450
+ buildPolynomial(degree, coefficient) {
9451
+ if (coefficient === 0) {
9452
+ return this.#zero;
9453
+ }
9454
+ const coefficients = new Int32Array(degree + 1);
9455
+ coefficients[0] = coefficient;
9456
+ return new Polynomial(this, coefficients);
9457
+ }
9458
+ }
9459
+ const QR_CODE_FIELD_256 = new GaloisField(0x011d, 256, 0);
9460
+
9461
+ /**
9462
+ * @module QRCode
9463
+ * @package @nuintun/qrcode
9464
+ * @license MIT
9465
+ * @version 5.0.2
9466
+ * @author nuintun <nuintun@qq.com>
9467
+ * @description A pure JavaScript QRCode encode and decode library.
9468
+ * @see https://github.com/nuintun/qrcode#readme
9469
+ */
9470
+
9471
+
9472
+ /**
9473
+ * @module index
9474
+ */
9475
+ function getUnicodeCodes(content, maxCode) {
9476
+ const bytes = [];
9477
+ for (const character of content) {
9478
+ const code = character.codePointAt(0);
9479
+ // If gt max code, push "?".
9480
+ bytes.push(code == null || code > maxCode ? 63 : code);
9481
+ }
9482
+ return new Uint8Array(bytes);
9483
+ }
9484
+ function encode$1(content, charset) {
9485
+ switch (charset) {
9486
+ case Charset.ASCII:
9487
+ return getUnicodeCodes(content, 0x7f);
9488
+ case Charset.ISO_8859_1:
9489
+ return getUnicodeCodes(content, 0xff);
9490
+ case Charset.UTF_8:
9491
+ return new TextEncoder().encode(content);
9492
+ default:
9493
+ throw Error(`built-in encode not support charset: ${charset.label}`);
9494
+ }
9495
+ }
9496
+
9497
+ /**
9498
+ * @module QRCode
9499
+ * @package @nuintun/qrcode
9500
+ * @license MIT
9501
+ * @version 5.0.2
9502
+ * @author nuintun <nuintun@qq.com>
9503
+ * @description A pure JavaScript QRCode encode and decode library.
9504
+ * @see https://github.com/nuintun/qrcode#readme
9505
+ */
9506
+
9507
+
9508
+ /**
9509
+ * @module BitArray
9510
+ */
9511
+ const LOAD_FACTOR = 0.75;
9512
+ function offset(index) {
9513
+ return toInt32(index / 32);
9514
+ }
9515
+ function makeArray(length) {
9516
+ return new Int32Array(Math.ceil(length / 32));
9517
+ }
9518
+ class BitArray {
9519
+ #length;
9520
+ #bits;
9521
+ constructor(length = 0) {
9522
+ this.#length = length;
9523
+ this.#bits = makeArray(length);
9524
+ }
9525
+ #alloc(length) {
9526
+ const bits = this.#bits;
9527
+ if (length > bits.length * 32) {
9528
+ const array = makeArray(Math.ceil(length / LOAD_FACTOR));
9529
+ array.set(bits);
9530
+ this.#bits = array;
9531
+ }
9532
+ this.#length = length;
9533
+ }
9534
+ get length() {
9535
+ return this.#length;
9536
+ }
9537
+ get byteLength() {
9538
+ return Math.ceil(this.#length / 8);
9539
+ }
9540
+ set(index) {
9541
+ this.#bits[offset(index)] |= getBitMask(index);
9542
+ }
9543
+ get(index) {
9544
+ return toBit(this.#bits[offset(index)] >>> getBitOffset(index));
9545
+ }
9546
+ xor(mask) {
9547
+ const bits = this.#bits;
9548
+ const maskBits = mask.#bits;
9549
+ const length = Math.min(this.#length, mask.#length);
9550
+ for (let i = 0; i < length; i++) {
9551
+ // The last int could be incomplete (i.e. not have 32 bits in
9552
+ // it) but there is no problem since 0 XOR 0 == 0.
9553
+ bits[i] ^= maskBits[i];
9554
+ }
9555
+ }
9556
+ append(value, length = 1) {
9557
+ let index = this.#length;
9558
+ if (value instanceof BitArray) {
9559
+ length = value.#length;
9560
+ this.#alloc(index + length);
9561
+ for (let i = 0; i < length; i++) {
9562
+ if (value.get(i) !== 0) {
9563
+ this.set(index);
9564
+ }
9565
+ index++;
9566
+ }
9567
+ } else {
9568
+ this.#alloc(index + length);
9569
+ for (let i = length - 1; i >= 0; i--) {
9570
+ if (toBit(value >>> i) !== 0) {
9571
+ this.set(index);
9572
+ }
9573
+ index++;
9574
+ }
9575
+ }
9576
+ }
9577
+ writeToUint8Array(bitOffset, target, byteOffset, byteLength) {
9578
+ for (let i = 0; i < byteLength; i++) {
9579
+ let byte = 0;
9580
+ for (let j = 0; j < 8; j++) {
9581
+ if (this.get(bitOffset++) !== 0) {
9582
+ byte |= 1 << (7 - j);
9583
+ }
9584
+ }
9585
+ target[byteOffset + i] = byte;
9586
+ }
9587
+ }
9588
+ clear() {
9589
+ this.#bits.fill(0);
9590
+ }
9591
+ }
9592
+
9593
+ /**
9594
+ * @module QRCode
9595
+ * @package @nuintun/qrcode
9596
+ * @license MIT
9597
+ * @version 5.0.2
9598
+ * @author nuintun <nuintun@qq.com>
9599
+ * @description A pure JavaScript QRCode encode and decode library.
9600
+ * @see https://github.com/nuintun/qrcode#readme
9601
+ */
9602
+
9603
+ /**
9604
+ * @module ByteMatrix
9605
+ */
9606
+ class ByteMatrix {
9607
+ #size;
9608
+ #bytes;
9609
+ constructor(size) {
9610
+ this.#size = size;
9611
+ this.#bytes = new Int8Array(size * size);
9612
+ }
9613
+ get size() {
9614
+ return this.#size;
9615
+ }
9616
+ set(x, y, value) {
9617
+ this.#bytes[y * this.#size + x] = value;
9618
+ }
9619
+ get(x, y) {
9620
+ return this.#bytes[y * this.#size + x];
9621
+ }
9622
+ clear(value) {
9623
+ this.#bytes.fill(value);
9624
+ }
9625
+ }
9626
+
9627
+ /**
9628
+ * @module QRCode
9629
+ * @package @nuintun/qrcode
9630
+ * @license MIT
9631
+ * @version 5.0.2
9632
+ * @author nuintun <nuintun@qq.com>
9633
+ * @description A pure JavaScript QRCode encode and decode library.
9634
+ * @see https://github.com/nuintun/qrcode#readme
9635
+ */
9636
+
9637
+
9638
+ /**
9639
+ * @module matrix
9640
+ */
9641
+ // Format information poly: 101 0011 0111.
9642
+ const FORMAT_INFO_POLY = 0x537;
9643
+ // Format information mask.
9644
+ const FORMAT_INFO_MASK = 0x5412;
9645
+ // Version information poly: 1 1111 0010 0101.
9646
+ const VERSION_INFO_POLY = 0x1f25;
9647
+ // Finder pattern shape.
9648
+ const FINDER_PATTERN_SHAPE = [
9649
+ [1, 1, 1, 1, 1, 1, 1],
9650
+ [1, 0, 0, 0, 0, 0, 1],
9651
+ [1, 0, 1, 1, 1, 0, 1],
9652
+ [1, 0, 1, 1, 1, 0, 1],
9653
+ [1, 0, 1, 1, 1, 0, 1],
9654
+ [1, 0, 0, 0, 0, 0, 1],
9655
+ [1, 1, 1, 1, 1, 1, 1]
9656
+ ];
9657
+ // Alignment pattern shape.
9658
+ const ALIGNMENT_PATTERN_SHAPE = [
9659
+ [1, 1, 1, 1, 1],
9660
+ [1, 0, 0, 0, 1],
9661
+ [1, 0, 1, 0, 1],
9662
+ [1, 0, 0, 0, 1],
9663
+ [1, 1, 1, 1, 1]
9664
+ ];
9665
+ // Format information coordinates.
9666
+ const FORMAT_INFO_COORDINATES = [
9667
+ [8, 0],
9668
+ [8, 1],
9669
+ [8, 2],
9670
+ [8, 3],
9671
+ [8, 4],
9672
+ [8, 5],
9673
+ [8, 7],
9674
+ [8, 8],
9675
+ [7, 8],
9676
+ [5, 8],
9677
+ [4, 8],
9678
+ [3, 8],
9679
+ [2, 8],
9680
+ [1, 8],
9681
+ [0, 8]
9682
+ ];
9683
+ // Is empty point.
9684
+ function isEmpty(matrix, x, y) {
9685
+ return matrix.get(x, y) === -1;
9686
+ }
9687
+ function embedFinderPattern(matrix, x, y) {
9688
+ for (let i = 0; i < 7; i++) {
9689
+ const pattern = FINDER_PATTERN_SHAPE[i];
9690
+ for (let j = 0; j < 7; j++) {
9691
+ matrix.set(x + j, y + i, pattern[j]);
8412
9692
  }
8413
- /**
8414
- * 模态框标题
8415
- */
8416
- modalTitle = '面试报告';
8417
- /**
8418
- * SDK鉴权密钥
8419
- */
8420
- token;
8421
- /**
8422
- * 是否显示聊天模态框
8423
- */
8424
- isOpen = false;
8425
- /**
8426
- * 当点击模态框关闭时触发
8427
- */
8428
- modalClosed;
8429
- /**
8430
- * 应用图标URL
8431
- */
8432
- icon;
8433
- /**
8434
- * 聊天框的页面层级
8435
- */
8436
- zIndex = 1000;
8437
- /**
8438
- * 是否展示顶部标题栏
8439
- */
8440
- isShowHeader = true;
8441
- /**
8442
- * 是否展示右上角的关闭按钮
8443
- */
8444
- isNeedClose = true;
8445
- /**
8446
- * 会话ID,传入继续对话,否则创建新会话
8447
- */
8448
- conversationId;
8449
- /**
8450
- * 默认查询文本
8451
- */
8452
- defaultQuery = '请开始分析';
8453
- /**
8454
- * 是否以全屏模式打开,移动端建议设置为true
8455
- */
8456
- fullscreen = false;
8457
- /**
8458
- * 自定义输入参数,传入customInputs.job_info时,会隐藏JD输入区域<br>
9693
+ }
9694
+ }
9695
+ function embedHorizontalSeparator(matrix, x, y) {
9696
+ for (let j = 0; j < 8; j++) {
9697
+ matrix.set(x + j, y, 0);
9698
+ }
9699
+ }
9700
+ function embedVerticalSeparator(matrix, x, y) {
9701
+ for (let i = 0; i < 7; i++) {
9702
+ matrix.set(x, y + i, 0);
9703
+ }
9704
+ }
9705
+ // Embed finder patterns and surrounding vertical/horizontal separators.
9706
+ function embedFinderPatternsAndSeparators(matrix) {
9707
+ // Embed three big squares at corners.
9708
+ const pdpWidth = 7;
9709
+ // Embed horizontal separation patterns around the squares.
9710
+ const hspWidth = 8;
9711
+ // Embed vertical separation patterns around the squares.
9712
+ const vspHeight = 7;
9713
+ // Matrix width
9714
+ const { size } = matrix;
9715
+ // Left top corner.
9716
+ embedFinderPattern(matrix, 0, 0);
9717
+ // Right top corner.
9718
+ embedFinderPattern(matrix, size - pdpWidth, 0);
9719
+ // Left bottom corner.
9720
+ embedFinderPattern(matrix, 0, size - pdpWidth);
9721
+ // Left top corner.
9722
+ embedHorizontalSeparator(matrix, 0, hspWidth - 1);
9723
+ // Right top corner.
9724
+ embedHorizontalSeparator(matrix, size - hspWidth, hspWidth - 1);
9725
+ // Left bottom corner.
9726
+ embedHorizontalSeparator(matrix, 0, size - hspWidth);
9727
+ // Left top corner.
9728
+ embedVerticalSeparator(matrix, vspHeight, 0);
9729
+ // Right top corner.
9730
+ embedVerticalSeparator(matrix, size - vspHeight - 1, 0);
9731
+ // Left bottom corner.
9732
+ embedVerticalSeparator(matrix, vspHeight, size - vspHeight);
9733
+ }
9734
+ function embedTimingPatterns(matrix) {
9735
+ const size = matrix.size - 8;
9736
+ // -8 is for skipping position detection patterns (7: size)
9737
+ // separation patterns (1: size). Thus, 8 = 7 + 1.
9738
+ for (let x = 8; x < size; x++) {
9739
+ const bit = (x + 1) & 0x01;
9740
+ // Horizontal line.
9741
+ if (isEmpty(matrix, x, 6)) {
9742
+ matrix.set(x, 6, bit);
9743
+ }
9744
+ }
9745
+ // -8 is for skipping position detection patterns (7: size)
9746
+ // separation patterns (1: size). Thus, 8 = 7 + 1.
9747
+ for (let y = 8; y < size; y++) {
9748
+ const bit = (y + 1) & 0x01;
9749
+ // Vertical line.
9750
+ if (isEmpty(matrix, 6, y)) {
9751
+ matrix.set(6, y, bit);
9752
+ }
9753
+ }
9754
+ }
9755
+ function embedAlignmentPattern(matrix, x, y) {
9756
+ for (let i = 0; i < 5; i++) {
9757
+ const pattern = ALIGNMENT_PATTERN_SHAPE[i];
9758
+ for (let j = 0; j < 5; j++) {
9759
+ matrix.set(x + j, y + i, pattern[j]);
9760
+ }
9761
+ }
9762
+ }
9763
+ // Embed position alignment patterns if need be.
9764
+ function embedAlignmentPatterns(matrix, { version }) {
9765
+ if (version >= 2) {
9766
+ const { alignmentPatterns } = VERSIONS[version - 1];
9767
+ const { length } = alignmentPatterns;
9768
+ for (let i = 0; i < length; i++) {
9769
+ const y = alignmentPatterns[i];
9770
+ for (let j = 0; j < length; j++) {
9771
+ const x = alignmentPatterns[j];
9772
+ if (isEmpty(matrix, x, y)) {
9773
+ // If the cell is unset, we embed the position alignment pattern here.
9774
+ // -2 is necessary since the x/y coordinates point to the center of the pattern, not the
9775
+ // left top corner.
9776
+ embedAlignmentPattern(matrix, x - 2, y - 2);
9777
+ }
9778
+ }
9779
+ }
9780
+ }
9781
+ }
9782
+ // Embed the lonely dark dot at left bottom corner. ISO/IEC 18004:2015(E)(p.56)
9783
+ function embedDarkModule(matrix) {
9784
+ matrix.set(8, matrix.size - 8, 1);
9785
+ }
9786
+ // Make bit vector of format information. On success, store the result in "bits".
9787
+ // Encode error correction level and mask pattern. See 8.9 of
9788
+ // ISO/IEC 18004:2015(E)(p.55) for details.
9789
+ function makeFormatInfoBits(bits, ecLevel, mask) {
9790
+ const formatInfo = (ecLevel.bits << 3) | mask;
9791
+ bits.append(formatInfo, 5);
9792
+ const bchCode = calculateBCHCode(formatInfo, FORMAT_INFO_POLY);
9793
+ bits.append(bchCode, 10);
9794
+ const maskBits = new BitArray();
9795
+ maskBits.append(FORMAT_INFO_MASK, 15);
9796
+ bits.xor(maskBits);
9797
+ }
9798
+ // Embed format information. On success, modify the matrix.
9799
+ function embedFormatInfo(matrix, ecLevel, mask) {
9800
+ const formatInfoBits = new BitArray();
9801
+ makeFormatInfoBits(formatInfoBits, ecLevel, mask);
9802
+ const { size } = matrix;
9803
+ const { length } = formatInfoBits;
9804
+ for (let i = 0; i < length; i++) {
9805
+ // Type info bits at the left top corner.
9806
+ const [x, y] = FORMAT_INFO_COORDINATES[i];
9807
+ // Place bits in LSB to MSB order. LSB (least significant bit) is the last value in formatInfoBits.
9808
+ const bit = formatInfoBits.get(length - 1 - i);
9809
+ matrix.set(x, y, bit);
9810
+ if (i < 8) {
9811
+ // Right top corner.
9812
+ matrix.set(size - i - 1, 8, bit);
9813
+ } else {
9814
+ // Left bottom corner.
9815
+ matrix.set(8, size - 7 + (i - 8), bit);
9816
+ }
9817
+ }
9818
+ // Then, embed the dark dot at the left bottom corner.
9819
+ embedDarkModule(matrix);
9820
+ }
9821
+ // Make bit vector of version information. On success, store the result in "bits".
9822
+ // See 7.10 of ISO/IEC 18004:2015(E)(p.58) for details.
9823
+ function makeVersionInfoBits(bits, version) {
9824
+ bits.append(version, 6);
9825
+ const bchCode = calculateBCHCode(version, VERSION_INFO_POLY);
9826
+ bits.append(bchCode, 12);
9827
+ }
9828
+ // Embed version information if need be. On success, modify the matrix.
9829
+ // See 7.10 of ISO/IEC 18004:2015(E)(p.58) for how to embed version information.
9830
+ function embedVersionInfo(matrix, { version }) {
9831
+ if (version >= 7) {
9832
+ const versionInfoBits = new BitArray();
9833
+ makeVersionInfoBits(versionInfoBits, version);
9834
+ // It will decrease from 17 to 0.
9835
+ let bitIndex = 6 * 3 - 1;
9836
+ const { size } = matrix;
9837
+ for (let i = 0; i < 6; i++) {
9838
+ for (let j = 0; j < 3; j++) {
9839
+ // Place bits in LSB (least significant bit) to MSB order.
9840
+ const bit = versionInfoBits.get(bitIndex--);
9841
+ // Left bottom corner.
9842
+ matrix.set(i, size - 11 + j, bit);
9843
+ // Right bottom corner.
9844
+ matrix.set(size - 11 + j, i, bit);
9845
+ }
9846
+ }
9847
+ }
9848
+ }
9849
+ // Embed "codewords". On success, modify the matrix.
9850
+ // See 7.7.3 of ISO/IEC 18004:2015(E)(p.46) for how to embed codewords.
9851
+ function embedCodewords(matrix, codewords, mask) {
9852
+ let bitIndex = 0;
9853
+ const { size } = matrix;
9854
+ const { length } = codewords;
9855
+ // Start from the right bottom cell.
9856
+ for (let x = size - 1; x >= 1; x -= 2) {
9857
+ // Skip the vertical timing pattern.
9858
+ if (x === 6) {
9859
+ x = 5;
9860
+ }
9861
+ for (let y = 0; y < size; y++) {
9862
+ for (let i = 0; i < 2; i++) {
9863
+ const offsetX = x - i;
9864
+ const upward = ((x + 1) & 2) === 0;
9865
+ const offsetY = upward ? size - 1 - y : y;
9866
+ // Skip the cell if it's not empty.
9867
+ if (isEmpty(matrix, offsetX, offsetY)) {
9868
+ // Padding bit. If there is no bit left, we'll fill the left cells with 0.
9869
+ let bit = 0;
9870
+ if (bitIndex < length) {
9871
+ bit = codewords.get(bitIndex++);
9872
+ }
9873
+ // Is apply mask.
9874
+ if (isApplyMask(mask, offsetX, offsetY)) {
9875
+ bit ^= 1;
9876
+ }
9877
+ matrix.set(offsetX, offsetY, bit);
9878
+ }
9879
+ }
9880
+ }
9881
+ }
9882
+ }
9883
+ // Embed function patterns. On success, modify the matrix.
9884
+ // The function patterns are:
9885
+ // - Finder patterns and separators
9886
+ // - Alignment patterns, if version >= 2
9887
+ // - Timing patterns
9888
+ function embedFunctionPatterns(matrix, version) {
9889
+ // Let's get started with embedding big squares at corners.
9890
+ embedFinderPatternsAndSeparators(matrix);
9891
+ // Alignment patterns appear if version >= 2.
9892
+ embedAlignmentPatterns(matrix, version);
9893
+ // Timing patterns should be embedded after position adj. patterns.
9894
+ embedTimingPatterns(matrix);
9895
+ }
9896
+ // Embed encoding region. On success, modify the matrix.
9897
+ // The encoding region are:
9898
+ // - Format Info
9899
+ // - Version Info, if version >= 7
9900
+ // - Data with correction
9901
+ function embedEncodingRegion(matrix, codewords, version, ecLevel, mask) {
9902
+ // Type information appear with any version.
9903
+ embedFormatInfo(matrix, ecLevel, mask);
9904
+ // Version info appear if version >= 7.
9905
+ embedVersionInfo(matrix, version);
9906
+ // Data should be embedded at end.
9907
+ embedCodewords(matrix, codewords, mask);
9908
+ }
9909
+ // Build 2D matrix of QR Code from "codewords" with "ecLevel", "version" and "getMaskPattern". On
9910
+ // success, store the result in "matrix".
9911
+ function buildMatrix(codewords, version, ecLevel, mask) {
9912
+ const matrix = new ByteMatrix(version.size);
9913
+ // Clear matrix.
9914
+ matrix.clear(-1);
9915
+ // Embed function patterns.
9916
+ embedFunctionPatterns(matrix, version);
9917
+ // Embed encoding region.
9918
+ embedEncodingRegion(matrix, codewords, version, ecLevel, mask);
9919
+ return matrix;
9920
+ }
9921
+
9922
+ /**
9923
+ * @module QRCode
9924
+ * @package @nuintun/qrcode
9925
+ * @license MIT
9926
+ * @version 5.0.2
9927
+ * @author nuintun <nuintun@qq.com>
9928
+ * @description A pure JavaScript QRCode encode and decode library.
9929
+ * @see https://github.com/nuintun/qrcode#readme
9930
+ */
9931
+
9932
+ /**
9933
+ * @module BlockPair
9934
+ */
9935
+ class BlockPair {
9936
+ #ecCodewords;
9937
+ #dataCodewords;
9938
+ constructor(dataCodewords, ecCodewords) {
9939
+ this.#ecCodewords = ecCodewords;
9940
+ this.#dataCodewords = dataCodewords;
9941
+ }
9942
+ get ecCodewords() {
9943
+ return this.#ecCodewords;
9944
+ }
9945
+ get dataCodewords() {
9946
+ return this.#dataCodewords;
9947
+ }
9948
+ }
9949
+
9950
+ /**
9951
+ * @module QRCode
9952
+ * @package @nuintun/qrcode
9953
+ * @license MIT
9954
+ * @version 5.0.2
9955
+ * @author nuintun <nuintun@qq.com>
9956
+ * @description A pure JavaScript QRCode encode and decode library.
9957
+ * @see https://github.com/nuintun/qrcode#readme
9958
+ */
9959
+
9960
+
9961
+ /**
9962
+ * @module Encoder
9963
+ */
9964
+ function buildGenerator(field, generators, degree) {
9965
+ const { length } = generators;
9966
+ if (degree >= length) {
9967
+ const { generator } = field;
9968
+ let lastGenerator = generators[length - 1];
9969
+ for (let i = length; i <= degree; i++) {
9970
+ const coefficients = new Int32Array([1, field.exp(i - 1 + generator)]);
9971
+ const nextGenerator = lastGenerator.multiply(new Polynomial(field, coefficients));
9972
+ generators.push(nextGenerator);
9973
+ lastGenerator = nextGenerator;
9974
+ }
9975
+ }
9976
+ return generators[degree];
9977
+ }
9978
+ let Encoder$1 = class Encoder {
9979
+ #field;
9980
+ #generators;
9981
+ constructor(field = QR_CODE_FIELD_256) {
9982
+ this.#field = field;
9983
+ this.#generators = [new Polynomial(field, new Int32Array([1]))];
9984
+ }
9985
+ encode(received, ecLength) {
9986
+ const dataBytes = received.length - ecLength;
9987
+ const infoCoefficients = new Int32Array(dataBytes);
9988
+ const generator = buildGenerator(this.#field, this.#generators, ecLength);
9989
+ infoCoefficients.set(received.subarray(0, dataBytes));
9990
+ const base = new Polynomial(this.#field, infoCoefficients);
9991
+ const info = base.multiplyByMonomial(ecLength, 1);
9992
+ const [, remainder] = info.divide(generator);
9993
+ const { coefficients } = remainder;
9994
+ const numZeroCoefficients = ecLength - coefficients.length;
9995
+ const zeroCoefficientsOffset = dataBytes + numZeroCoefficients;
9996
+ received.fill(0, dataBytes, zeroCoefficientsOffset);
9997
+ received.set(coefficients, zeroCoefficientsOffset);
9998
+ }
9999
+ };
10000
+
10001
+ /**
10002
+ * @module QRCode
10003
+ * @package @nuintun/qrcode
10004
+ * @license MIT
10005
+ * @version 5.0.2
10006
+ * @author nuintun <nuintun@qq.com>
10007
+ * @description A pure JavaScript QRCode encode and decode library.
10008
+ * @see https://github.com/nuintun/qrcode#readme
10009
+ */
10010
+
10011
+
10012
+ /**
10013
+ * @module encoder
10014
+ */
10015
+ function generateECCodewords(codewords, numECCodewords) {
10016
+ const numDataCodewords = codewords.length;
10017
+ const buffer = new Int32Array(numDataCodewords + numECCodewords);
10018
+ // Copy data codewords.
10019
+ buffer.set(codewords);
10020
+ // Reed solomon encode.
10021
+ new Encoder$1().encode(buffer, numECCodewords);
10022
+ // Get ec codewords.
10023
+ return new Uint8Array(buffer.subarray(numDataCodewords));
10024
+ }
10025
+ function injectECCodewords(bits, { ecBlocks, numECCodewordsPerBlock }) {
10026
+ // Step 1. Divide data bytes into blocks and generate error correction bytes for them. We'll
10027
+ // store the divided data bytes blocks and error correction bytes blocks into "blocks".
10028
+ let maxNumECCodewords = 0;
10029
+ let maxNumDataCodewords = 0;
10030
+ let dataCodewordsOffset = 0;
10031
+ // Block pair.
10032
+ const blocks = [];
10033
+ for (const { count, numDataCodewords } of ecBlocks) {
10034
+ for (let i = 0; i < count; i++) {
10035
+ const dataCodewords = new Uint8Array(numDataCodewords);
10036
+ bits.writeToUint8Array(dataCodewordsOffset * 8, dataCodewords, 0, numDataCodewords);
10037
+ const ecCodewords = generateECCodewords(dataCodewords, numECCodewordsPerBlock);
10038
+ blocks.push(new BlockPair(dataCodewords, ecCodewords));
10039
+ dataCodewordsOffset += numDataCodewords;
10040
+ maxNumECCodewords = Math.max(maxNumECCodewords, ecCodewords.length);
10041
+ maxNumDataCodewords = Math.max(maxNumDataCodewords, numDataCodewords);
10042
+ }
10043
+ }
10044
+ const codewords = new BitArray();
10045
+ // First, place data blocks.
10046
+ for (let i = 0; i < maxNumDataCodewords; i++) {
10047
+ for (const { dataCodewords } of blocks) {
10048
+ if (i < dataCodewords.length) {
10049
+ codewords.append(dataCodewords[i], 8);
10050
+ }
10051
+ }
10052
+ }
10053
+ // Then, place error correction blocks.
10054
+ for (let i = 0; i < maxNumECCodewords; i++) {
10055
+ for (const { ecCodewords } of blocks) {
10056
+ if (i < ecCodewords.length) {
10057
+ codewords.append(ecCodewords[i], 8);
10058
+ }
10059
+ }
10060
+ }
10061
+ return codewords;
10062
+ }
10063
+ function appendTerminator(bits, numDataCodewords) {
10064
+ const capacity = numDataCodewords * 8;
10065
+ // Append terminator if there is enough space (value is 0000).
10066
+ for (let i = 0; i < 4 && bits.length < capacity; i++) {
10067
+ bits.append(0);
10068
+ }
10069
+ // Append terminator. See 7.4.9 of ISO/IEC 18004:2015(E)(p.32) for details.
10070
+ // If the last byte isn't 8-bit aligned, we'll add padding bits.
10071
+ const numBitsInLastByte = bits.length & 0x07;
10072
+ if (numBitsInLastByte > 0) {
10073
+ for (let i = numBitsInLastByte; i < 8; i++) {
10074
+ bits.append(0);
10075
+ }
10076
+ }
10077
+ // If we have more space, we'll fill the space with padding patterns defined in 8.4.9 (p.24).
10078
+ const numPaddingCodewords = numDataCodewords - bits.byteLength;
10079
+ for (let i = 0; i < numPaddingCodewords; i++) {
10080
+ bits.append(i & 0x01 ? 0x11 : 0xec, 8);
10081
+ }
10082
+ }
10083
+ function isByteMode(segment) {
10084
+ return segment.mode === Mode.BYTE;
10085
+ }
10086
+ function isHanziMode(segment) {
10087
+ return segment.mode === Mode.HANZI;
10088
+ }
10089
+ function appendModeInfo(bits, mode) {
10090
+ bits.append(mode.bits, 4);
10091
+ }
10092
+ function appendECI(bits, segment, currentECIValue) {
10093
+ if (isByteMode(segment)) {
10094
+ const [value] = segment.charset.values;
10095
+ if (value !== currentECIValue) {
10096
+ bits.append(Mode.ECI.bits, 4);
10097
+ // See 7.4.2.2 of ISO/IEC 18004:2015(E)(p.24) for details.
10098
+ if (value <= 127) {
10099
+ bits.append(value, 8);
10100
+ } else if (value <= 16383) {
10101
+ bits.append(0x8000 | value, 16);
10102
+ } else {
10103
+ bits.append(0xc00000 | value, 24);
10104
+ }
10105
+ return value;
10106
+ }
10107
+ }
10108
+ return currentECIValue;
10109
+ }
10110
+ function appendFNC1Info(bits, fnc1) {
10111
+ const [mode, indicator] = fnc1;
10112
+ // Append FNC1 if applicable.
10113
+ switch (mode) {
10114
+ case 'GS1':
10115
+ // GS1 formatted codes are prefixed with a FNC1 in first position mode header.
10116
+ appendModeInfo(bits, Mode.FNC1_FIRST_POSITION);
10117
+ break;
10118
+ case 'AIM':
10119
+ // AIM formatted codes are prefixed with a FNC1 in first position mode header.
10120
+ appendModeInfo(bits, Mode.FNC1_SECOND_POSITION);
10121
+ // Append AIM application indicator.
10122
+ bits.append(indicator, 8);
10123
+ break;
10124
+ }
10125
+ }
10126
+ function getSegmentLength(segment, bits) {
10127
+ // Byte segment use byte Length.
10128
+ if (isByteMode(segment)) {
10129
+ return bits.byteLength;
10130
+ }
10131
+ // Other segments use the real length of characters.
10132
+ // All rest segments content codePointAt at 0x0000 to 0xffff, so use length directly.
10133
+ return segment.content.length;
10134
+ }
10135
+ function appendLengthInfo(bits, mode, version, numLetters) {
10136
+ bits.append(numLetters, mode.getCharacterCountBits(version));
10137
+ }
10138
+ function willFit(numInputBits, version, ecLevel) {
10139
+ // In the following comments, we use numbers of Version 7-H.
10140
+ const ecBlocks = version.getECBlocks(ecLevel);
10141
+ const numInputCodewords = Math.ceil(numInputBits / 8);
10142
+ return ecBlocks.numTotalDataCodewords >= numInputCodewords;
10143
+ }
10144
+ function chooseVersion(numInputBits, ecLevel) {
10145
+ for (const version of VERSIONS) {
10146
+ if (willFit(numInputBits, version, ecLevel)) {
10147
+ return version;
10148
+ }
10149
+ }
10150
+ throw new Error('data too big for all versions');
10151
+ }
10152
+ function calculateBitsNeeded(segmentBlocks, version) {
10153
+ let bitsNeeded = 0;
10154
+ for (const { mode, head, body } of segmentBlocks) {
10155
+ bitsNeeded += head.length + mode.getCharacterCountBits(version) + body.length;
10156
+ }
10157
+ return bitsNeeded;
10158
+ }
10159
+ function chooseRecommendVersion(segmentBlocks, ecLevel) {
10160
+ // Hard part: need to know version to know how many bits length takes. But need to know how many
10161
+ // bits it takes to know version. First we take a guess at version by assuming version will be
10162
+ // the minimum, 1:
10163
+ const provisionalBitsNeeded = calculateBitsNeeded(segmentBlocks, VERSIONS[0]);
10164
+ const provisionalVersion = chooseVersion(provisionalBitsNeeded, ecLevel);
10165
+ // Use that guess to calculate the right version. I am still not sure this works in 100% of cases.
10166
+ const bitsNeeded = calculateBitsNeeded(segmentBlocks, provisionalVersion);
10167
+ return chooseVersion(bitsNeeded, ecLevel);
10168
+ }
10169
+ function chooseBestMaskAndMatrix(codewords, version, ecLevel) {
10170
+ let bestMask = 0;
10171
+ let bestMatrix = buildMatrix(codewords, version, ecLevel, bestMask);
10172
+ let minPenalty = calculateMaskPenalty(bestMatrix);
10173
+ // We try all rest mask patterns to choose the best one.
10174
+ for (let mask = 1; mask < 8; mask++) {
10175
+ const matrix = buildMatrix(codewords, version, ecLevel, mask);
10176
+ const penalty = calculateMaskPenalty(matrix);
10177
+ // Lower penalty is better.
10178
+ if (penalty < minPenalty) {
10179
+ bestMask = mask;
10180
+ bestMatrix = matrix;
10181
+ minPenalty = penalty;
10182
+ }
10183
+ }
10184
+ return [bestMask, bestMatrix];
10185
+ }
10186
+
10187
+ /**
10188
+ * @module QRCode
10189
+ * @package @nuintun/qrcode
10190
+ * @license MIT
10191
+ * @version 5.0.2
10192
+ * @author nuintun <nuintun@qq.com>
10193
+ * @description A pure JavaScript QRCode encode and decode library.
10194
+ * @see https://github.com/nuintun/qrcode#readme
10195
+ */
10196
+
10197
+ /**
10198
+ * @module Dict
10199
+ * @see https://github.com/google/dart-gif-encoder
10200
+ */
10201
+ // The highest code that can be defined in the CodeBook.
10202
+ const MAX_CODE = (1 << 12) - 1;
10203
+ /**
10204
+ * A dict contains codes defined during LZW compression. It's a mapping from a string
10205
+ * of pixels to the code that represents it. The codes are stored in a trie which is
10206
+ * represented as a map. Codes may be up to 12 bits. The size of the codebook is always
10207
+ * the minimum power of 2 needed to represent all the codes and automatically increases
10208
+ * as new codes are defined.
10209
+ */
10210
+ class Dict {
10211
+ #bof;
10212
+ #eof;
10213
+ #bits;
10214
+ #depth;
10215
+ #size;
10216
+ #unused;
10217
+ #codes;
10218
+ constructor(depth) {
10219
+ const bof = 1 << depth;
10220
+ const eof = bof + 1;
10221
+ this.#bof = bof;
10222
+ this.#eof = eof;
10223
+ this.#depth = depth;
10224
+ this.reset();
10225
+ }
10226
+ get bof() {
10227
+ return this.#bof;
10228
+ }
10229
+ get eof() {
10230
+ return this.#eof;
10231
+ }
10232
+ get bits() {
10233
+ return this.#bits;
10234
+ }
10235
+ get depth() {
10236
+ return this.#depth;
10237
+ }
10238
+ reset() {
10239
+ const bits = this.#depth + 1;
10240
+ this.#bits = bits;
10241
+ this.#size = 1 << bits;
10242
+ this.#codes = new Map();
10243
+ this.#unused = this.#eof + 1;
10244
+ }
10245
+ add(code, index) {
10246
+ let unused = this.#unused;
10247
+ if (unused > MAX_CODE) {
10248
+ return false;
10249
+ }
10250
+ this.#codes.set((code << 8) | index, unused++);
10251
+ let bits = this.#bits;
10252
+ let size = this.#size;
10253
+ if (unused > size) {
10254
+ size = 1 << ++bits;
10255
+ }
10256
+ this.#bits = bits;
10257
+ this.#size = size;
10258
+ this.#unused = unused;
10259
+ return true;
10260
+ }
10261
+ get(code, index) {
10262
+ return this.#codes.get((code << 8) | index);
10263
+ }
10264
+ }
10265
+
10266
+ /**
10267
+ * @module QRCode
10268
+ * @package @nuintun/qrcode
10269
+ * @license MIT
10270
+ * @version 5.0.2
10271
+ * @author nuintun <nuintun@qq.com>
10272
+ * @description A pure JavaScript QRCode encode and decode library.
10273
+ * @see https://github.com/nuintun/qrcode#readme
10274
+ */
10275
+
10276
+ /**
10277
+ * @module DictStream
10278
+ * @see https://github.com/google/dart-gif-encoder
10279
+ */
10280
+ class DictStream {
10281
+ #bits = 0;
10282
+ #dict;
10283
+ #buffer = 0;
10284
+ #bytes = [];
10285
+ constructor(dict) {
10286
+ this.#dict = dict;
10287
+ }
10288
+ write(code) {
10289
+ let bits = this.#bits;
10290
+ let buffer = this.#buffer | (code << bits);
10291
+ bits += this.#dict.bits;
10292
+ const bytes = this.#bytes;
10293
+ while (bits >= 8) {
10294
+ bytes.push(buffer & 0xff);
10295
+ buffer >>= 8;
10296
+ bits -= 8;
10297
+ }
10298
+ this.#bits = bits;
10299
+ this.#buffer = buffer;
10300
+ }
10301
+ pipe(stream) {
10302
+ const bytes = this.#bytes;
10303
+ // Add the remaining bits. (Unused bits are set to zero.)
10304
+ if (this.#bits > 0) {
10305
+ bytes.push(this.#buffer);
10306
+ }
10307
+ stream.writeByte(this.#dict.depth);
10308
+ // Divide it up into blocks with a size in front of each block.
10309
+ const { length } = bytes;
10310
+ for (let i = 0; i < length; ) {
10311
+ const remain = length - i;
10312
+ if (remain >= 255) {
10313
+ stream.writeByte(0xff);
10314
+ stream.writeBytes(bytes, i, 255);
10315
+ i += 255;
10316
+ } else {
10317
+ stream.writeByte(remain);
10318
+ stream.writeBytes(bytes, i, remain);
10319
+ i = length;
10320
+ }
10321
+ }
10322
+ stream.writeByte(0);
10323
+ }
10324
+ }
10325
+
10326
+ /**
10327
+ * @module QRCode
10328
+ * @package @nuintun/qrcode
10329
+ * @license MIT
10330
+ * @version 5.0.2
10331
+ * @author nuintun <nuintun@qq.com>
10332
+ * @description A pure JavaScript QRCode encode and decode library.
10333
+ * @see https://github.com/nuintun/qrcode#readme
10334
+ */
10335
+
10336
+
10337
+ /**
10338
+ * @module index
10339
+ * @see https://github.com/google/dart-gif-encoder
10340
+ */
10341
+ function compress(pixels, depth, stream) {
10342
+ const dict = new Dict(depth);
10343
+ const buffer = new DictStream(dict);
10344
+ buffer.write(dict.bof);
10345
+ if (pixels.length > 0) {
10346
+ let code = pixels[0];
10347
+ const { length } = pixels;
10348
+ for (let i = 1; i < length; i++) {
10349
+ const pixelIndex = pixels[i];
10350
+ const nextCode = dict.get(code, pixelIndex);
10351
+ if (nextCode != null) {
10352
+ code = nextCode;
10353
+ } else {
10354
+ buffer.write(code);
10355
+ // Reset dict when full.
10356
+ if (!dict.add(code, pixelIndex)) {
10357
+ buffer.write(dict.bof);
10358
+ dict.reset();
10359
+ }
10360
+ code = pixelIndex;
10361
+ }
10362
+ }
10363
+ buffer.write(code);
10364
+ }
10365
+ buffer.write(dict.eof);
10366
+ buffer.pipe(stream);
10367
+ }
10368
+
10369
+ /**
10370
+ * @module QRCode
10371
+ * @package @nuintun/qrcode
10372
+ * @license MIT
10373
+ * @version 5.0.2
10374
+ * @author nuintun <nuintun@qq.com>
10375
+ * @description A pure JavaScript QRCode encode and decode library.
10376
+ * @see https://github.com/nuintun/qrcode#readme
10377
+ */
10378
+
10379
+ /**
10380
+ * @module ByteStream
10381
+ */
10382
+ class ByteStream {
10383
+ #bytes = [];
10384
+ get bytes() {
10385
+ return this.#bytes;
10386
+ }
10387
+ writeByte(value) {
10388
+ this.#bytes.push(value & 0xff);
10389
+ }
10390
+ writeInt16(value) {
10391
+ this.#bytes.push(value & 0xff, (value >> 8) & 0xff);
10392
+ }
10393
+ writeBytes(bytes, offset = 0, length = bytes.length) {
10394
+ const buffer = this.#bytes;
10395
+ for (let i = 0; i < length; i++) {
10396
+ buffer.push(bytes[offset + i] & 0xff);
10397
+ }
10398
+ }
10399
+ }
10400
+
10401
+ /**
10402
+ * @module QRCode
10403
+ * @package @nuintun/qrcode
10404
+ * @license MIT
10405
+ * @version 5.0.2
10406
+ * @author nuintun <nuintun@qq.com>
10407
+ * @description A pure JavaScript QRCode encode and decode library.
10408
+ * @see https://github.com/nuintun/qrcode#readme
10409
+ */
10410
+
10411
+
10412
+ /**
10413
+ * @module Base64Stream
10414
+ */
10415
+ const { fromCharCode } = String;
10416
+ function encode(byte) {
10417
+ byte &= 0x3f;
10418
+ if (byte >= 0) {
10419
+ if (byte < 26) {
10420
+ // A.
10421
+ return 0x41 + byte;
10422
+ } else if (byte < 52) {
10423
+ // a.
10424
+ return 0x61 + (byte - 26);
10425
+ } else if (byte < 62) {
10426
+ // 0.
10427
+ return 0x30 + (byte - 52);
10428
+ } else if (byte === 62) {
10429
+ // +.
10430
+ return 0x2b;
10431
+ } else if (byte === 63) {
10432
+ // /.
10433
+ return 0x2f;
10434
+ }
10435
+ }
10436
+ throw new Error(`illegal char: ${fromCharCode(byte)}`);
10437
+ }
10438
+ class Base64Stream {
10439
+ #bits = 0;
10440
+ #buffer = 0;
10441
+ #length = 0;
10442
+ #stream = new ByteStream();
10443
+ get bytes() {
10444
+ return this.#stream.bytes;
10445
+ }
10446
+ write(byte) {
10447
+ let bits = this.#bits + 8;
10448
+ const stream = this.#stream;
10449
+ const buffer = (this.#buffer << 8) | (byte & 0xff);
10450
+ while (bits >= 6) {
10451
+ stream.writeByte(encode(buffer >>> (bits - 6)));
10452
+ bits -= 6;
10453
+ }
10454
+ this.#length++;
10455
+ this.#bits = bits;
10456
+ this.#buffer = buffer;
10457
+ }
10458
+ close() {
10459
+ const bits = this.#bits;
10460
+ const stream = this.#stream;
10461
+ if (bits > 0) {
10462
+ stream.writeByte(encode(this.#buffer << (6 - bits)));
10463
+ this.#bits = 0;
10464
+ this.#buffer = 0;
10465
+ }
10466
+ const length = this.#length;
10467
+ if (length % 3 != 0) {
10468
+ // Padding.
10469
+ const pad = 3 - (length % 3);
10470
+ for (let i = 0; i < pad; i++) {
10471
+ // =.
10472
+ stream.writeByte(0x3d);
10473
+ }
10474
+ }
10475
+ }
10476
+ }
10477
+
10478
+ /**
10479
+ * @module QRCode
10480
+ * @package @nuintun/qrcode
10481
+ * @license MIT
10482
+ * @version 5.0.2
10483
+ * @author nuintun <nuintun@qq.com>
10484
+ * @description A pure JavaScript QRCode encode and decode library.
10485
+ * @see https://github.com/nuintun/qrcode#readme
10486
+ */
10487
+
10488
+
10489
+ /**
10490
+ * @module GIFImage
10491
+ */
10492
+ class GIFImage {
10493
+ #width;
10494
+ #height;
10495
+ #foreground;
10496
+ #background;
10497
+ #pixels = [];
10498
+ constructor(width, height, { foreground = [0x00, 0x00, 0x00], background = [0xff, 0xff, 0xff] } = {}) {
10499
+ this.#width = width;
10500
+ this.#height = height;
10501
+ this.#foreground = foreground;
10502
+ this.#background = background;
10503
+ }
10504
+ #encode() {
10505
+ const width = this.#width;
10506
+ const height = this.#height;
10507
+ const stream = new ByteStream();
10508
+ const background = this.#background;
10509
+ const foreground = this.#foreground;
10510
+ // GIF signature: GIF89a.
10511
+ stream.writeBytes([0x47, 0x49, 0x46, 0x38, 0x39, 0x61]);
10512
+ // Logical screen descriptor.
10513
+ stream.writeInt16(width);
10514
+ stream.writeInt16(height);
10515
+ stream.writeBytes([0x80, 0, 0]);
10516
+ // Global background color palette.
10517
+ stream.writeBytes([background[0], background[1], background[2]]);
10518
+ // Global foreground color palette.
10519
+ stream.writeBytes([foreground[0], foreground[1], foreground[2]]);
10520
+ // Image descriptor.
10521
+ stream.writeByte(0x2c);
10522
+ stream.writeInt16(0);
10523
+ stream.writeInt16(0);
10524
+ stream.writeInt16(width);
10525
+ stream.writeInt16(height);
10526
+ stream.writeByte(0);
10527
+ // Compress pixels to stream.
10528
+ compress(this.#pixels, 2, stream);
10529
+ // GIF terminator.
10530
+ stream.writeByte(0x3b);
10531
+ return stream.bytes;
10532
+ }
10533
+ set(x, y, color) {
10534
+ this.#pixels[y * this.#width + x] = color;
10535
+ }
10536
+ toDataURL() {
10537
+ const bytes = this.#encode();
10538
+ const stream = new Base64Stream();
10539
+ for (const byte of bytes) {
10540
+ stream.write(byte);
10541
+ }
10542
+ stream.close();
10543
+ const base64 = stream.bytes;
10544
+ let url = 'data:image/gif;base64,';
10545
+ for (const byte of base64) {
10546
+ url += fromCharCode(byte);
10547
+ }
10548
+ return url;
10549
+ }
10550
+ }
10551
+
10552
+ /**
10553
+ * @module QRCode
10554
+ * @package @nuintun/qrcode
10555
+ * @license MIT
10556
+ * @version 5.0.2
10557
+ * @author nuintun <nuintun@qq.com>
10558
+ * @description A pure JavaScript QRCode encode and decode library.
10559
+ * @see https://github.com/nuintun/qrcode#readme
10560
+ */
10561
+
10562
+
10563
+ /**
10564
+ * @module Encoded
10565
+ */
10566
+ class Encoded {
10567
+ #mask;
10568
+ #level;
10569
+ #version;
10570
+ #matrix;
10571
+ constructor(matrix, version, level, mask) {
10572
+ this.#mask = mask;
10573
+ this.#level = level;
10574
+ this.#matrix = matrix;
10575
+ this.#version = version;
10576
+ }
10577
+ /**
10578
+ * @property matrix
10579
+ * @description Get the size of qrcode.
10580
+ */
10581
+ get size() {
10582
+ return this.#matrix.size;
10583
+ }
10584
+ /**
10585
+ * @property mask
10586
+ * @description Get the mask of qrcode.
10587
+ */
10588
+ get mask() {
10589
+ return this.#mask;
10590
+ }
10591
+ /**
10592
+ * @property level
10593
+ * @description Get the error correction level of qrcode.
10594
+ */
10595
+ get level() {
10596
+ return this.#level.name;
10597
+ }
10598
+ /**
10599
+ * @property version
10600
+ * @description Get the version of qrcode.
10601
+ */
10602
+ get version() {
10603
+ return this.#version.version;
10604
+ }
10605
+ /**
10606
+ * @method get
10607
+ * @description Get the bit value of the specified coordinate of qrcode.
10608
+ */
10609
+ get(x, y) {
10610
+ const { size } = this.#matrix;
10611
+ if (x < 0 || y < 0 || x >= size || y >= size) {
10612
+ throw new Error(`illegal coordinate: [${x}, ${y}]`);
10613
+ }
10614
+ return this.#matrix.get(x, y);
10615
+ }
10616
+ /**
10617
+ * @method toDataURL
10618
+ * @param moduleSize The size of one qrcode module
10619
+ * @param options Set rest options of gif, like margin, foreground and background.
10620
+ */
10621
+ toDataURL(moduleSize = 2, { margin = moduleSize * 4, ...colors } = {}) {
10622
+ moduleSize = Math.max(1, moduleSize >> 0);
10623
+ margin = Math.max(0, margin >> 0);
10624
+ const matrix = this.#matrix;
10625
+ const matrixSize = matrix.size;
10626
+ const size = moduleSize * matrixSize + margin * 2;
10627
+ const gif = new GIFImage(size, size, colors);
10628
+ const max = size - margin;
10629
+ for (let y = 0; y < size; y++) {
10630
+ for (let x = 0; x < size; x++) {
10631
+ if (x >= margin && x < max && y >= margin && y < max) {
10632
+ const offsetX = toInt32((x - margin) / moduleSize);
10633
+ const offsetY = toInt32((y - margin) / moduleSize);
10634
+ gif.set(x, y, matrix.get(offsetX, offsetY));
10635
+ } else {
10636
+ // Margin pixels.
10637
+ gif.set(x, y, 0);
10638
+ }
10639
+ }
10640
+ }
10641
+ return gif.toDataURL();
10642
+ }
10643
+ }
10644
+
10645
+ /**
10646
+ * @module QRCode
10647
+ * @package @nuintun/qrcode
10648
+ * @license MIT
10649
+ * @version 5.0.2
10650
+ * @author nuintun <nuintun@qq.com>
10651
+ * @description A pure JavaScript QRCode encode and decode library.
10652
+ * @see https://github.com/nuintun/qrcode#readme
10653
+ */
10654
+
10655
+
10656
+ /**
10657
+ * @module asserts
10658
+ */
10659
+ function assertContent(content) {
10660
+ if (content === '') {
10661
+ throw new Error('segment content should be at least 1 character');
10662
+ }
10663
+ }
10664
+ function assertCharset(charset) {
10665
+ if (!(charset instanceof Charset)) {
10666
+ throw new Error('illegal charset');
10667
+ }
10668
+ }
10669
+ function assertHints(hints) {
10670
+ const { fnc1 } = hints;
10671
+ // FNC1.
10672
+ if (fnc1 != null) {
10673
+ const [mode] = fnc1;
10674
+ if (mode !== 'GS1' && mode !== 'AIM') {
10675
+ throw new Error('illegal fn1 hint');
10676
+ }
10677
+ if (mode === 'AIM') {
10678
+ const [, indicator] = fnc1;
10679
+ if (indicator < 0 || indicator > 0xff || !Number.isInteger(indicator)) {
10680
+ throw new Error('illegal fn1 application indicator');
10681
+ }
10682
+ }
10683
+ }
10684
+ }
10685
+ function assertLevel(level) {
10686
+ if (['L', 'M', 'Q', 'H'].indexOf(level) < 0) {
10687
+ throw new Error('illegal error correction level');
10688
+ }
10689
+ }
10690
+ function assertVersion(version) {
10691
+ if (version !== 'Auto') {
10692
+ if (version < 1 || version > 40 || !Number.isInteger(version)) {
10693
+ throw new Error('illegal version');
10694
+ }
10695
+ }
10696
+ }
10697
+
10698
+ /**
10699
+ * @module QRCode
10700
+ * @package @nuintun/qrcode
10701
+ * @license MIT
10702
+ * @version 5.0.2
10703
+ * @author nuintun <nuintun@qq.com>
10704
+ * @description A pure JavaScript QRCode encode and decode library.
10705
+ * @see https://github.com/nuintun/qrcode#readme
10706
+ */
10707
+
10708
+
10709
+ /**
10710
+ * @module Encoder
10711
+ */
10712
+ class Encoder {
10713
+ #hints;
10714
+ #level;
10715
+ #encode;
10716
+ #version;
10717
+ /**
10718
+ * @constructor
10719
+ * @param options The options of encoder.
10720
+ */
10721
+ constructor({ hints = {}, level = 'L', version = 'Auto', encode: encode$1$1 = encode$1 } = {}) {
10722
+ assertHints(hints);
10723
+ assertLevel(level);
10724
+ assertVersion(version);
10725
+ this.#hints = hints;
10726
+ this.#encode = encode$1$1;
10727
+ this.#version = version;
10728
+ this.#level = ECLevel[level];
10729
+ }
10730
+ /**
10731
+ * @method encode
10732
+ * @description Encode the segments.
10733
+ * @param segments The segments.
10734
+ */
10735
+ encode(...segments) {
10736
+ const ecLevel = this.#level;
10737
+ const encode = this.#encode;
10738
+ const { fnc1 } = this.#hints;
10739
+ const versionNumber = this.#version;
10740
+ const segmentBlocks = [];
10741
+ // Only append FNC1 once.
10742
+ let isFNC1Appended = false;
10743
+ // Current ECI value.
10744
+ let [currentECIValue] = Charset.ISO_8859_1.values;
10745
+ // Init segments.
10746
+ for (const segment of segments) {
10747
+ const { mode } = segment;
10748
+ const head = new BitArray();
10749
+ const body = segment.encode(encode);
10750
+ const length = getSegmentLength(segment, body);
10751
+ // Append ECI segment if applicable.
10752
+ currentECIValue = appendECI(head, segment, currentECIValue);
10753
+ // Append FNC1 if applicable.
10754
+ if (fnc1 != null && !isFNC1Appended) {
10755
+ isFNC1Appended = true;
10756
+ appendFNC1Info(head, fnc1);
10757
+ }
10758
+ // With ECI in place, Write the mode marker.
10759
+ appendModeInfo(head, mode);
10760
+ // If is Hanzi mode append GB2312 subset.
10761
+ if (isHanziMode(segment)) {
10762
+ head.append(1, 4);
10763
+ }
10764
+ // Push segment block.
10765
+ segmentBlocks.push({ mode, head, body, length });
10766
+ }
10767
+ let version;
10768
+ if (versionNumber === 'Auto') {
10769
+ version = chooseRecommendVersion(segmentBlocks, ecLevel);
10770
+ } else {
10771
+ version = VERSIONS[versionNumber - 1];
10772
+ const bitsNeeded = calculateBitsNeeded(segmentBlocks, version);
10773
+ if (!willFit(bitsNeeded, version, ecLevel)) {
10774
+ throw new Error('data too big for requested version');
10775
+ }
10776
+ }
10777
+ const buffer = new BitArray();
10778
+ for (const { mode, head, body, length } of segmentBlocks) {
10779
+ buffer.append(head);
10780
+ appendLengthInfo(buffer, mode, version, length);
10781
+ buffer.append(body);
10782
+ }
10783
+ const ecBlocks = version.getECBlocks(ecLevel);
10784
+ appendTerminator(buffer, ecBlocks.numTotalDataCodewords);
10785
+ const codewords = injectECCodewords(buffer, ecBlocks);
10786
+ const [mask, matrix] = chooseBestMaskAndMatrix(codewords, version, ecLevel);
10787
+ return new Encoded(matrix, version, ecLevel, mask);
10788
+ }
10789
+ }
10790
+
10791
+ /**
10792
+ * @module QRCode
10793
+ * @package @nuintun/qrcode
10794
+ * @license MIT
10795
+ * @version 5.0.2
10796
+ * @author nuintun <nuintun@qq.com>
10797
+ * @description A pure JavaScript QRCode encode and decode library.
10798
+ * @see https://github.com/nuintun/qrcode#readme
10799
+ */
10800
+
10801
+
10802
+ /**
10803
+ * @module Byte
10804
+ */
10805
+ class Byte {
10806
+ #content;
10807
+ #charset;
10808
+ /**
10809
+ * @constructor
10810
+ * @param content The content to encode.
10811
+ * @param charset The charset of the content.
10812
+ */
10813
+ constructor(content, charset = Charset.ISO_8859_1) {
10814
+ assertContent(content);
10815
+ assertCharset(charset);
10816
+ this.#content = content;
10817
+ this.#charset = charset;
10818
+ }
10819
+ /**
10820
+ * @property mode
10821
+ * @description The mode of the segment.
10822
+ */
10823
+ get mode() {
10824
+ return Mode.BYTE;
10825
+ }
10826
+ /**
10827
+ * @property content
10828
+ * @description The content of the segment.
10829
+ */
10830
+ get content() {
10831
+ return this.#content;
10832
+ }
10833
+ /**
10834
+ * @property charset
10835
+ * @description The charset of the content.
10836
+ */
10837
+ get charset() {
10838
+ return this.#charset;
10839
+ }
10840
+ /**
10841
+ * @method encode
10842
+ * @description Encode the segment.
10843
+ * @param encode The text encode function.
10844
+ */
10845
+ encode(encode) {
10846
+ const bits = new BitArray();
10847
+ const bytes = encode(this.#content, this.#charset);
10848
+ for (const byte of bytes) {
10849
+ bits.append(byte, 8);
10850
+ }
10851
+ return bits;
10852
+ }
10853
+ }
10854
+
10855
+ // 文件上传流水号SDK
10856
+ const uploadNumberSDK$1 = {
10857
+ number: '',
10858
+ isWorking: false,
10859
+ close: async function (params) {
10860
+ const { onOk, onError } = params ?? {};
10861
+ const { number } = this;
10862
+ if (number) {
10863
+ const result = await sendHttpRequest({
10864
+ url: `/resource/update_id/${number}`,
10865
+ method: 'delete',
10866
+ });
10867
+ if (result.success) {
10868
+ this.number = '';
10869
+ onOk?.();
10870
+ }
10871
+ else {
10872
+ onError?.();
10873
+ }
10874
+ }
10875
+ }
10876
+ };
10877
+
10878
+ const pcmMobileInputBtnCss = ".mobile-upload{display:flex;justify-content:flex-end;margin-bottom:4px}.btn{position:relative;padding:4px 8px;border-radius:4px;cursor:pointer;overflow:hidden;display:flex;justify-content:center;align-items:center;white-space:nowrap}.btn::after{content:'';position:absolute;top:0;left:0;width:100%;height:100%}.btn:hover::after{background-color:rgba(0,0,0,0.04)}.btn-link{color:#0D75FB}.btn-default{background-color:#ffffff;color:#0D75FB;border:1px solid #0D75FB}.btn-primary{background-color:#0D75FB;color:#ffffff}.loading{font-size:12px;color:#999999}.mask{position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,0.5);display:flex;justify-content:center;align-items:center;z-index:10000}.mask .upload-wrapper{width:540px;max-width:80%;max-height:80%;background-color:#ffffff;padding:32px 24px;border-radius:16px;overflow-y:auto}.mask .upload-wrapper .upload-box{display:flex;flex-direction:column;align-items:center}.time-expire{margin:8px 0;text-align:center;font-size:12px;color:#555555}.time-count-down{margin-left:8px;color:#0D75FB}.alert-tip{margin-top:8px;text-align:center;font-size:12px;color:#999999}.qrcode-wrapper{width:160px;height:160px;display:flex;justify-content:center;align-items:center;border:1px solid #e5e5e5;border-radius:4px;padding:1px}.qrcode-wrapper .qrcode{width:100%;height:100%}.modal-footer{margin-top:32px;display:flex;justify-content:center;align-items:center;gap:8px}.modal-footer .btn{min-width:100px}.qrcode-textarea{width:calc(100% - 16px);min-height:120px;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}";
10879
+
10880
+ const globalCss$6 = ":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)}}";
10881
+
10882
+ const MobileUploadBtn$1 = class MobileUploadBtn {
10883
+ constructor(hostRef) {
10884
+ registerInstance(this, hostRef);
10885
+ this.ok = createEvent(this, "ok");
10886
+ }
10887
+ // 标题
10888
+ name = '';
10889
+ /**
10890
+ * 最大文件数
10891
+ */
10892
+ rows = 8;
10893
+ /**
10894
+ * 最大文件大小
10895
+ */
10896
+ maxLength = undefined;
10897
+ /**
10898
+ * 填写请求头
10899
+ */
10900
+ uploadHeaders;
10901
+ /**
10902
+ * 填写请求参数
10903
+ */
10904
+ uploadParams;
10905
+ QR_CODE_VALID_TIME = 0;
10906
+ open = false;
10907
+ mobileUrl = '';
10908
+ setStartMobileUpload = false;
10909
+ startMobileUploadLoading = false;
10910
+ qrcodeStatus = 'loading';
10911
+ value = '';
10912
+ ok;
10913
+ setStartMobileUploadWrapper = (e) => {
10914
+ uploadNumberSDK$1.isWorking = e;
10915
+ this.setStartMobileUpload = e;
10916
+ };
10917
+ qrcodeUrl = '';
10918
+ setMobileUrlWrapper = (e) => {
10919
+ this.mobileUrl = e;
10920
+ if (e) {
10921
+ const encoder = new Encoder();
10922
+ const qrcode = encoder.encode(new Byte(e));
10923
+ this.qrcodeUrl = qrcode.toDataURL();
10924
+ }
10925
+ else {
10926
+ this.qrcodeUrl = '';
10927
+ }
10928
+ };
10929
+ // 轮询流水号数据
10930
+ pollingQueryNumberInfo = async (num) => {
10931
+ const res = await sendHttpRequest({
10932
+ url: `/sdk/v1/update_id/${num}/status`,
10933
+ method: 'get',
10934
+ });
10935
+ if (res?.success) {
10936
+ const resData = res.data ?? {};
10937
+ const { custom_data } = resData;
10938
+ this.value = custom_data ?? '';
10939
+ }
10940
+ if (uploadNumberSDK$1.isWorking) {
10941
+ setTimeout(() => {
10942
+ this.pollingQueryNumberInfo(num);
10943
+ }, 3000);
10944
+ }
10945
+ };
10946
+ handleStartMobileUpload = async () => {
10947
+ const that = this;
10948
+ this.qrcodeStatus = 'loading';
10949
+ this.startMobileUploadLoading = true;
10950
+ const params = this.uploadParams ?? {};
10951
+ const reqData = {
10952
+ cfg: {
10953
+ fromUserName: '',
10954
+ fromUserId: '',
10955
+ upload: that.uploadParams,
10956
+ name: that.name,
10957
+ rows: that.rows,
10958
+ maxLength: that.maxLength,
10959
+ params,
10960
+ },
10961
+ };
10962
+ const res = await sendHttpRequest({
10963
+ url: `/sdk/v1/update_id`,
10964
+ method: 'post',
10965
+ data: reqData,
10966
+ });
10967
+ if (res?.success) {
10968
+ const resData = res.data ?? {};
10969
+ uploadNumberSDK$1.number = resData.update_id;
10970
+ this.QR_CODE_VALID_TIME = Number(resData.exp) - Number(resData.now);
10971
+ const theMobileUrl = `${PCM_DOMAIN}/agents/inputByCode?num=${uploadNumberSDK$1.number}`;
10972
+ this.setMobileUrlWrapper(theMobileUrl);
10973
+ this.setStartMobileUploadWrapper(true);
10974
+ this.qrcodeStatus = 'active';
10975
+ // 开启轮询
10976
+ this.pollingQueryNumberInfo(uploadNumberSDK$1.number);
10977
+ }
10978
+ this.startMobileUploadLoading = false;
10979
+ };
10980
+ // 取消手机填写
10981
+ cancelLoading = false;
10982
+ cancelMobileUpload = async () => {
10983
+ this.cancelLoading = true;
10984
+ await uploadNumberSDK$1.close({
10985
+ onError() {
10986
+ Message.info('取消失败');
10987
+ }
10988
+ });
10989
+ this.cancelLoading = false;
10990
+ this.QR_CODE_VALID_TIME = 0;
10991
+ this.setStartMobileUploadWrapper(false);
10992
+ this.setMobileUrlWrapper('');
10993
+ this.qrcodeStatus = 'expired';
10994
+ this.value = '';
10995
+ this.open = false;
10996
+ };
10997
+ render() {
10998
+ const mobile = isMobile();
10999
+ if (mobile) {
11000
+ return null;
11001
+ }
11002
+ else {
11003
+ return (h("div", null, h("div", { class: "mobile-upload" }, h("div", { class: "btn btn-link", onClick: () => {
11004
+ this.open = true;
11005
+ this.handleStartMobileUpload();
11006
+ } }, "\u626B\u7801\u586B\u5199")), this.open && h("div", { class: "mask" }, h("div", { class: "upload-wrapper" }, this.setStartMobileUpload ? h("div", { class: "upload-box" }, h("div", { class: "qrcode-wrapper" }, this.qrcodeStatus === 'active' && h("img", { class: "qrcode", src: this.qrcodeUrl }), this.qrcodeStatus === 'loading' && h("span", { class: "loading" }, "\u52A0\u8F7D\u4E2D..."), this.qrcodeStatus === 'expired' && h("div", { class: "btn btn-link", onClick: this.handleStartMobileUpload }, "\u91CD\u65B0\u83B7\u53D6")), h("div", { class: "time-expire" }, "\u4E8C\u7EF4\u7801\u6709\u6548\u671F", h("span", { class: "time-count-down" }, !!this.QR_CODE_VALID_TIME && h("pcm-time-count-down", { time: this.QR_CODE_VALID_TIME, onFinished: () => {
11007
+ this.qrcodeStatus = 'expired';
11008
+ } }))), h("div", { class: "alert-tip" }, "\u586B\u5199\u8FC7\u7A0B\u4E2D\u8BF7\u4E0D\u8981\u5173\u95ED\u6B64\u5F39\u7A97"), this.qrcodeStatus === 'active' && h("div", { style: { marginTop: '12px', fontSize: '12px' }, class: "btn btn-link", onClick: () => {
11009
+ navigator.clipboard
11010
+ .writeText(this.mobileUrl)
11011
+ .then(() => {
11012
+ Message.success("已复制到剪贴板");
11013
+ })
11014
+ .catch(() => {
11015
+ Message.error("复制失败");
11016
+ });
11017
+ } }, "\u590D\u5236\u4E8C\u7EF4\u7801\u5730\u5740")) : (this.startMobileUploadLoading && h("span", { class: "loading" }, "\u52A0\u8F7D\u4E2D...")), h("div", { style: { marginTop: '12px' } }, !!this.value?.length && h("textarea", { readOnly: true, class: "qrcode-textarea", value: this.value, onChange: (e) => {
11018
+ this.value = e.target.value;
11019
+ } })), h("div", { class: "modal-footer" }, h("div", { class: "btn btn-default", onClick: this.cancelMobileUpload }, "\u53D6\u6D88"), h("div", { class: "btn btn-primary", onClick: () => {
11020
+ if (!this.value) {
11021
+ Message.info(`请输入内容`);
11022
+ return;
11023
+ }
11024
+ if (this.value.length > this.maxLength) {
11025
+ Message.info(`输入内容不能超过${this.maxLength}个字符`);
11026
+ return;
11027
+ }
11028
+ this.ok.emit(this.value);
11029
+ this.cancelMobileUpload();
11030
+ } }, "\u5B8C\u6210"))))));
11031
+ }
11032
+ }
11033
+ };
11034
+ MobileUploadBtn$1.style = pcmMobileInputBtnCss + globalCss$6;
11035
+
11036
+ // 文件上传流水号SDK
11037
+ const uploadNumberSDK = {
11038
+ number: '',
11039
+ isWorking: false,
11040
+ close: async function (params) {
11041
+ const { onOk, onError } = params ?? {};
11042
+ const { number } = this;
11043
+ if (number) {
11044
+ const result = await sendHttpRequest({
11045
+ url: `/resource/update_id/${number}`,
11046
+ method: 'delete',
11047
+ });
11048
+ if (result.success) {
11049
+ this.number = '';
11050
+ onOk?.();
11051
+ }
11052
+ else {
11053
+ onError?.();
11054
+ }
11055
+ }
11056
+ }
11057
+ };
11058
+
11059
+ const pcmMobileUploadBtnCss = ".mobile-upload{display:flex;justify-content:flex-end;margin-bottom:4px}.btn{position:relative;padding:4px 8px;border-radius:4px;cursor:pointer;overflow:hidden;display:flex;justify-content:center;align-items:center;white-space:nowrap}.btn::after{content:'';position:absolute;top:0;left:0;width:100%;height:100%}.btn:hover::after{background-color:rgba(0,0,0,0.04)}.btn-link{color:#0D75FB}.btn-default{background-color:#ffffff;color:#0D75FB;border:1px solid #0D75FB}.btn-primary{background-color:#0D75FB;color:#ffffff}.loading{font-size:12px;color:#999999}.mask{position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,0.5);display:flex;justify-content:center;align-items:center;z-index:10000}.mask .upload-wrapper{width:540px;max-width:80%;max-height:80%;background-color:#ffffff;padding:32px 24px;border-radius:16px;overflow-y:auto}.mask .upload-wrapper .upload-box{display:flex;flex-direction:column;align-items:center}.time-expire{margin:8px 0;text-align:center;font-size:12px;color:#555555}.time-count-down{margin-left:8px;color:#0D75FB}.alert-tip{margin-top:8px;text-align:center;font-size:12px;color:#999999}.qrcode-wrapper{width:160px;height:160px;display:flex;justify-content:center;align-items:center;border:1px solid #e5e5e5;border-radius:4px;padding:1px}.qrcode-wrapper .qrcode{width:100%;height:100%}.modal-footer{margin-top:32px;display:flex;justify-content:center;align-items:center;gap:8px}.modal-footer .btn{min-width:100px}";
11060
+
11061
+ const globalCss$5 = ":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)}}";
11062
+
11063
+ const MobileUploadBtn = class {
11064
+ constructor(hostRef) {
11065
+ registerInstance(this, hostRef);
11066
+ this.ok = createEvent(this, "ok");
11067
+ }
11068
+ /**
11069
+ * 是否支持多文件上传
11070
+ */
11071
+ multiple = false;
11072
+ /**
11073
+ * 支持的文件后缀列表(需要带上小数点.)
11074
+ */
11075
+ acceptFileSuffixList = [];
11076
+ /**
11077
+ * 最大文件数
11078
+ */
11079
+ maxFileCount = Infinity;
11080
+ /**
11081
+ * 最大文件大小
11082
+ */
11083
+ maxFileSize = Infinity;
11084
+ /**
11085
+ * 上传请求头
11086
+ */
11087
+ uploadHeaders;
11088
+ /**
11089
+ * 上传请求参数
11090
+ */
11091
+ uploadParams;
11092
+ QR_CODE_VALID_TIME = 0;
11093
+ open = false;
11094
+ mobileUrl = '';
11095
+ setStartMobileUpload = false;
11096
+ startMobileUploadLoading = false;
11097
+ qrcodeStatus = 'loading';
11098
+ value = [];
11099
+ ok;
11100
+ setStartMobileUploadWrapper = (e) => {
11101
+ uploadNumberSDK.isWorking = e;
11102
+ this.setStartMobileUpload = e;
11103
+ };
11104
+ qrcodeUrl = '';
11105
+ setMobileUrlWrapper = (e) => {
11106
+ this.mobileUrl = e;
11107
+ if (e) {
11108
+ const encoder = new Encoder();
11109
+ const qrcode = encoder.encode(new Byte(e));
11110
+ this.qrcodeUrl = qrcode.toDataURL();
11111
+ }
11112
+ else {
11113
+ this.qrcodeUrl = '';
11114
+ }
11115
+ };
11116
+ // 轮询流水号数据
11117
+ pollingQueryNumberInfo = async (num) => {
11118
+ const res = await sendHttpRequest({
11119
+ url: `/sdk/v1/update_id/${num}/status`,
11120
+ method: 'get',
11121
+ });
11122
+ if (res?.success) {
11123
+ const resData = res.data ?? {};
11124
+ const { file_list } = resData;
11125
+ this.value = file_list ?? [];
11126
+ }
11127
+ if (uploadNumberSDK.isWorking) {
11128
+ setTimeout(() => {
11129
+ this.pollingQueryNumberInfo(num);
11130
+ }, 3000);
11131
+ }
11132
+ };
11133
+ handleStartMobileUpload = async () => {
11134
+ const that = this;
11135
+ this.qrcodeStatus = 'loading';
11136
+ this.startMobileUploadLoading = true;
11137
+ const params = this.uploadParams ?? {};
11138
+ const reqData = {
11139
+ is_knowledge_doc: false,
11140
+ tags: params.tags,
11141
+ cfg: {
11142
+ maxSize: that.maxFileSize,
11143
+ maxCount: that.multiple ? that.maxFileCount : 1,
11144
+ fromUserName: '',
11145
+ fromUserId: '',
11146
+ customAccept: that.acceptFileSuffixList.join(','),
11147
+ upload: that.uploadParams,
11148
+ },
11149
+ };
11150
+ const res = await sendHttpRequest({
11151
+ url: `/sdk/v1/update_id`,
11152
+ method: 'post',
11153
+ data: reqData,
11154
+ });
11155
+ if (res?.success) {
11156
+ const resData = res.data ?? {};
11157
+ uploadNumberSDK.number = resData.update_id;
11158
+ this.QR_CODE_VALID_TIME = Number(resData.exp) - Number(resData.now);
11159
+ const theMobileUrl = `${PCM_DOMAIN}/agents/uploadFileByCode?num=${uploadNumberSDK.number}`;
11160
+ this.setMobileUrlWrapper(theMobileUrl);
11161
+ this.setStartMobileUploadWrapper(true);
11162
+ this.qrcodeStatus = 'active';
11163
+ // 开启轮询
11164
+ this.pollingQueryNumberInfo(uploadNumberSDK.number);
11165
+ }
11166
+ this.startMobileUploadLoading = false;
11167
+ };
11168
+ // 取消手机上传
11169
+ cancelLoading = false;
11170
+ cancelMobileUpload = async () => {
11171
+ this.cancelLoading = true;
11172
+ await uploadNumberSDK.close({
11173
+ onError() {
11174
+ Message.info('取消失败');
11175
+ }
11176
+ });
11177
+ this.cancelLoading = false;
11178
+ this.QR_CODE_VALID_TIME = 0;
11179
+ this.setStartMobileUploadWrapper(false);
11180
+ this.setMobileUrlWrapper('');
11181
+ this.qrcodeStatus = 'expired';
11182
+ this.value = [];
11183
+ this.open = false;
11184
+ };
11185
+ // 删除文件
11186
+ handleDelete = async (cos_key) => {
11187
+ const res = await sendHttpRequest({
11188
+ url: `/sdk/v1/update_id/${uploadNumberSDK.number}/file`,
11189
+ method: 'delete',
11190
+ params: {
11191
+ update_id: uploadNumberSDK.number,
11192
+ cos_key,
11193
+ }
11194
+ });
11195
+ if (res?.success) {
11196
+ this.value = this.value.filter(it => it.cos_key !== cos_key);
11197
+ }
11198
+ };
11199
+ render() {
11200
+ const mobile = isMobile();
11201
+ if (mobile) {
11202
+ return null;
11203
+ }
11204
+ else {
11205
+ return (h("div", null, h("div", { class: "mobile-upload" }, h("div", { class: "btn btn-link", onClick: () => {
11206
+ if (this.maxFileCount < 1) {
11207
+ Message.info('文件数量已达到上限!');
11208
+ return;
11209
+ }
11210
+ this.open = true;
11211
+ this.handleStartMobileUpload();
11212
+ } }, "\u626B\u7801\u4E0A\u4F20")), this.open && h("div", { class: "mask" }, h("div", { class: "upload-wrapper" }, this.setStartMobileUpload ? h("div", { class: "upload-box" }, h("div", { class: "qrcode-wrapper" }, this.qrcodeStatus === 'active' && h("img", { class: "qrcode", src: this.qrcodeUrl }), this.qrcodeStatus === 'loading' && h("span", { class: "loading" }, "\u52A0\u8F7D\u4E2D..."), this.qrcodeStatus === 'expired' && h("div", { class: "btn btn-link", onClick: this.handleStartMobileUpload }, "\u91CD\u65B0\u83B7\u53D6")), h("div", { class: "time-expire" }, "\u4E8C\u7EF4\u7801\u6709\u6548\u671F", h("span", { class: "time-count-down" }, !!this.QR_CODE_VALID_TIME && h("pcm-time-count-down", { time: this.QR_CODE_VALID_TIME, onFinished: () => {
11213
+ this.qrcodeStatus = 'expired';
11214
+ } }))), h("div", { class: "alert-tip" }, "\u4E0A\u4F20\u8FC7\u7A0B\u4E2D\u8BF7\u4E0D\u8981\u5173\u95ED\u6B64\u5F39\u7A97"), this.qrcodeStatus === 'active' && h("div", { style: { marginTop: '12px', fontSize: '12px' }, class: "btn btn-link", onClick: () => {
11215
+ navigator.clipboard
11216
+ .writeText(this.mobileUrl)
11217
+ .then(() => {
11218
+ Message.success("已复制到剪贴板");
11219
+ })
11220
+ .catch(() => {
11221
+ Message.error("复制失败");
11222
+ });
11223
+ } }, "\u590D\u5236\u4E8C\u7EF4\u7801\u5730\u5740")) : (this.startMobileUploadLoading && h("span", { class: "loading" }, "\u52A0\u8F7D\u4E2D...")), h("div", { style: { marginTop: '12px' } }, this.value?.map?.((item, index) => {
11224
+ return h("div", { class: "file-item", key: index }, h("div", { class: "file-item-content" }, h("span", { class: "file-icon" }, "\uD83D\uDCDD"), h("span", { class: "file-name" }, item?.file_name)), h("button", { class: "remove-file", onClick: (e) => {
11225
+ e.stopPropagation();
11226
+ this.handleDelete(item.cos_key);
11227
+ } }, "\u00D7"));
11228
+ })), h("div", { class: "modal-footer" }, h("div", { class: "btn btn-default", onClick: this.cancelMobileUpload }, "\u53D6\u6D88"), h("div", { class: "btn btn-primary", onClick: () => {
11229
+ if (this.value.length > this.maxFileCount) {
11230
+ Message.info(`最多只能选择${this.maxFileCount}个文件,请删除多余文件!`);
11231
+ return;
11232
+ }
11233
+ this.ok.emit(this.value);
11234
+ this.cancelMobileUpload();
11235
+ } }, "\u5B8C\u6210"))))));
11236
+ }
11237
+ }
11238
+ };
11239
+ MobileUploadBtn.style = pcmMobileUploadBtnCss + globalCss$5;
11240
+
11241
+ const pcmMsbgModalCss = "";
11242
+
11243
+ const globalCss$4 = ":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)}}";
11244
+
11245
+ const MsbgModal = class {
11246
+ constructor(hostRef) {
11247
+ registerInstance(this, hostRef);
11248
+ this.modalClosed = createEvent(this, "modalClosed");
11249
+ this.uploadSuccess = createEvent(this, "uploadSuccess");
11250
+ this.streamComplete = createEvent(this, "streamComplete");
11251
+ this.conversationStart = createEvent(this, "conversationStart");
11252
+ this.interviewComplete = createEvent(this, "interviewComplete");
11253
+ this.tokenInvalid = createEvent(this, "tokenInvalid");
11254
+ this.someErrorEvent = createEvent(this, "someErrorEvent");
11255
+ }
11256
+ /**
11257
+ * 模态框标题
11258
+ */
11259
+ modalTitle = '面试报告';
11260
+ /**
11261
+ * SDK鉴权密钥
11262
+ */
11263
+ token;
11264
+ /**
11265
+ * 是否显示聊天模态框
11266
+ */
11267
+ isOpen = false;
11268
+ /**
11269
+ * 当点击模态框关闭时触发
11270
+ */
11271
+ modalClosed;
11272
+ /**
11273
+ * 应用图标URL
11274
+ */
11275
+ icon;
11276
+ /**
11277
+ * 聊天框的页面层级
11278
+ */
11279
+ zIndex = 1000;
11280
+ /**
11281
+ * 是否展示顶部标题栏
11282
+ */
11283
+ isShowHeader = true;
11284
+ /**
11285
+ * 是否展示右上角的关闭按钮
11286
+ */
11287
+ isNeedClose = true;
11288
+ /**
11289
+ * 会话ID,传入继续对话,否则创建新会话
11290
+ */
11291
+ conversationId;
11292
+ /**
11293
+ * 默认查询文本
11294
+ */
11295
+ defaultQuery = '请开始分析';
11296
+ /**
11297
+ * 是否以全屏模式打开,移动端建议设置为true
11298
+ */
11299
+ fullscreen = false;
11300
+ /**
11301
+ * 自定义输入参数,传入customInputs.job_info时,会隐藏JD输入区域<br>
8459
11302
  * 传入customInputs.file_urls时,会隐藏简历上传区域。<br>
8460
11303
  * 传入customInputs.file_urls和customInputs.job_info时,会直接开始聊天。<br>
8461
11304
  */
@@ -8684,11 +11527,11 @@ const MsbgModal = class {
8684
11527
  "isOpen": ["handleIsOpenChange"]
8685
11528
  }; }
8686
11529
  };
8687
- MsbgModal.style = pcmMsbgModalCss + globalCss$2;
11530
+ MsbgModal.style = pcmMsbgModalCss + globalCss$4;
8688
11531
 
8689
11532
  const pcmQgqjlModalCss = "";
8690
11533
 
8691
- const globalCss$1 = ":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)}}";
11534
+ const globalCss$3 = ":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)}}";
8692
11535
 
8693
11536
  const QgqjlModal = class {
8694
11537
  constructor(hostRef) {
@@ -8975,7 +11818,220 @@ const QgqjlModal = class {
8975
11818
  "isOpen": ["handleIsOpenChange"]
8976
11819
  }; }
8977
11820
  };
8978
- QgqjlModal.style = pcmQgqjlModalCss + globalCss$1;
11821
+ QgqjlModal.style = pcmQgqjlModalCss + globalCss$3;
11822
+
11823
+ const pcmTimeCountDownCss = "";
11824
+
11825
+ const globalCss$2 = ":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)}}";
11826
+
11827
+ const formatNumber = (n) => {
11828
+ const str = n.toString();
11829
+ return str[1] ? str : `0${str}`;
11830
+ };
11831
+ // 时间转时分秒
11832
+ const timeToHMS = (time) => {
11833
+ const hour = Math.floor(time / 3600);
11834
+ const minute = Math.floor((time - hour * 3600) / 60);
11835
+ const second = time - hour * 3600 - minute * 60;
11836
+ return `${formatNumber(hour)}:${formatNumber(minute)}:${formatNumber(second)}`;
11837
+ };
11838
+ const TimeCountDown = class {
11839
+ constructor(hostRef) {
11840
+ registerInstance(this, hostRef);
11841
+ this.finished = createEvent(this, "finished");
11842
+ }
11843
+ /**
11844
+ * 倒计时总秒数
11845
+ */
11846
+ time;
11847
+ /**
11848
+ * 倒计时结束事件
11849
+ */
11850
+ finished;
11851
+ currentTime;
11852
+ componentWillLoad() {
11853
+ this.currentTime = this.time;
11854
+ }
11855
+ watchStateHandler(currentTime) {
11856
+ let timer;
11857
+ if (currentTime > 0) {
11858
+ timer = setTimeout(() => {
11859
+ this.currentTime = currentTime - 1;
11860
+ clearTimeout(timer);
11861
+ }, 1000);
11862
+ }
11863
+ else {
11864
+ this.finished.emit();
11865
+ }
11866
+ }
11867
+ render() {
11868
+ return h("span", { key: '88065e0a7955b893f71110ae8389ee1d1d37bdf6' }, timeToHMS(this.currentTime));
11869
+ }
11870
+ static get watchers() { return {
11871
+ "currentTime": ["watchStateHandler"]
11872
+ }; }
11873
+ };
11874
+ TimeCountDown.style = pcmTimeCountDownCss + globalCss$2;
11875
+
11876
+ const pcmUploadCss = "";
11877
+
11878
+ const globalCss$1 = ":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)}}";
11879
+
11880
+ const PcmUpload = class {
11881
+ constructor(hostRef) {
11882
+ registerInstance(this, hostRef);
11883
+ this.uploadFailed = createEvent(this, "uploadFailed");
11884
+ this.uploadChange = createEvent(this, "uploadChange");
11885
+ }
11886
+ /**
11887
+ * 是否支持多文件上传
11888
+ */
11889
+ multiple = false;
11890
+ /**
11891
+ * 是否开启移动端上传(仅PC端生效)
11892
+ */
11893
+ mobileUploadAble = false;
11894
+ /**
11895
+ * label内容
11896
+ */
11897
+ labelText = '上传文件';
11898
+ /**
11899
+ * 支持的文件后缀列表(需要带上小数点.)
11900
+ */
11901
+ acceptFileSuffixList = [];
11902
+ /**
11903
+ * 最大文件数
11904
+ */
11905
+ maxFileCount = Infinity;
11906
+ /**
11907
+ * 最大文件大小
11908
+ */
11909
+ maxFileSize = Infinity;
11910
+ /**
11911
+ * 上传请求头
11912
+ */
11913
+ uploadHeaders;
11914
+ /**
11915
+ * 上传请求参数
11916
+ */
11917
+ uploadParams;
11918
+ /**
11919
+ * 上传失败监听
11920
+ */
11921
+ uploadFailed;
11922
+ /**
11923
+ * 上传文件变化监听
11924
+ */
11925
+ uploadChange;
11926
+ get hostElement() { return getElement(this); }
11927
+ selectedFiles = null;
11928
+ async getIsUploading() {
11929
+ return !!this.selectedFiles?.some(item => item.state === FileUploadState.Uploading);
11930
+ }
11931
+ handleUploadClick = () => {
11932
+ const fileInput = this.hostElement.shadowRoot?.querySelector('.file-input');
11933
+ fileInput?.click();
11934
+ };
11935
+ clearSelectedFile = () => {
11936
+ const fileInput = this.hostElement.shadowRoot?.querySelector('.file-input');
11937
+ if (fileInput) {
11938
+ fileInput.value = '';
11939
+ }
11940
+ };
11941
+ async uploadFile(file) {
11942
+ try {
11943
+ const result = await uploadFileToBackend(file, this.uploadHeaders || {}, this.uploadParams || {});
11944
+ return {
11945
+ ...result,
11946
+ file,
11947
+ file_name: file.name,
11948
+ file_size: file.size,
11949
+ state: FileUploadState.Success,
11950
+ };
11951
+ }
11952
+ catch (error) {
11953
+ this.clearSelectedFile();
11954
+ SentryReporter.captureError(error, {
11955
+ action: 'uploadFile',
11956
+ component: 'pcm-mnms-modal',
11957
+ title: '文件上传失败'
11958
+ });
11959
+ this.uploadFailed.emit({
11960
+ error: error,
11961
+ message: '文件上传失败,请重试'
11962
+ });
11963
+ return {
11964
+ file,
11965
+ error,
11966
+ state: FileUploadState.Failed,
11967
+ };
11968
+ }
11969
+ }
11970
+ handleFileChange = async (event) => {
11971
+ const input = event.target;
11972
+ if (this.multiple) ;
11973
+ else {
11974
+ // 单选
11975
+ const file = input.files?.[0];
11976
+ if (!file)
11977
+ return;
11978
+ // 检测文件是否符合后缀名
11979
+ if (this.acceptFileSuffixList?.length) {
11980
+ const suffix = '.' + file.name.split('.').pop()?.toLowerCase();
11981
+ if (!this.acceptFileSuffixList.includes(suffix)) {
11982
+ Message.info(`请上传 ${this.acceptFileSuffixList.join('、')} 格式的文件`);
11983
+ return;
11984
+ }
11985
+ }
11986
+ // 检测文件大小是否超出限制
11987
+ if (this.maxFileSize < file.size) {
11988
+ Message.info(`文件大小不能超过 ${formatFileSize(this.maxFileSize) ?? '-'}`);
11989
+ return;
11990
+ }
11991
+ this.selectedFiles = [{
11992
+ file,
11993
+ file_name: file.name,
11994
+ file_size: file.size,
11995
+ state: FileUploadState.Uploading,
11996
+ cos_key: '',
11997
+ error: undefined,
11998
+ }];
11999
+ const uploadResult = await this.uploadFile(file);
12000
+ this.selectedFiles = [uploadResult];
12001
+ this.clearSelectedFile();
12002
+ this.emitUploadChange();
12003
+ }
12004
+ };
12005
+ emitUploadChange = () => {
12006
+ this.uploadChange.emit(this.selectedFiles?.map?.(item => ({
12007
+ cos_key: item.cos_key,
12008
+ file_name: item.file_name,
12009
+ file_size: item.file_size,
12010
+ ext: item.ext,
12011
+ })));
12012
+ };
12013
+ uploadBtn() {
12014
+ return h("div", null, !!this.mobileUploadAble && h("pcm-mobile-upload-btn", { multiple: this.multiple, acceptFileSuffixList: this.acceptFileSuffixList, maxFileCount: this.maxFileCount, maxFileSize: this.maxFileSize, uploadHeaders: this.uploadHeaders, uploadParams: this.uploadParams, onOk: e => {
12015
+ this.selectedFiles = [
12016
+ ...(this.selectedFiles ?? []),
12017
+ ...(e.detail ?? []).map(item => ({
12018
+ ...item,
12019
+ state: FileUploadState.Success,
12020
+ }))
12021
+ ];
12022
+ this.emitUploadChange();
12023
+ } }), h("div", { class: "upload-placeholder", onClick: this.handleUploadClick }, h("img", { src: 'https://pub.pincaimao.com/static/web/images/home/i_upload.png' }), h("p", { class: 'upload-text' }, "\u70B9\u51FB\u4E0A\u4F20\u7B80\u5386"), h("p", { class: "upload-hint" }, !!this.acceptFileSuffixList?.length && h("p", null, "\u652F\u6301 ", this.acceptFileSuffixList.join('、'), " \u683C\u5F0F\u3002"), !!this.maxFileSize && this.maxFileSize !== Infinity && h("p", null, "\u6587\u4EF6\u5927\u5C0F\u4E0D\u80FD\u8D85\u8FC7 ", formatFileSize(this.maxFileSize) ?? '', "\u3002"), !!this.maxFileCount && this.maxFileCount !== Infinity && h("p", null, "\u6700\u591A\u4E0A\u4F20 ", this.maxFileCount, " \u4E2A\u6587\u4EF6\u3002"))));
12024
+ }
12025
+ render() {
12026
+ return (h("div", { key: 'faec753d60f8c6bfb1e3996b67552f8a12155c07' }, h("div", { key: '55e1e83f962dc17c033885869d8cb7e73b65bb95', class: "resume-upload-section" }, h("label", { key: '80cb959d043a015267bfb55c20bae44afd509ebd' }, this.labelText), h("div", { key: 'e7aa8c65761f945287de858ea7b3ad036fb4cb6d', class: "upload-area" }, h("div", { key: '48bef805f845bdd6e6a542bccbc1d2b8d30b4a02' }, this.selectedFiles?.map?.((item, index) => {
12027
+ return h("div", { class: "file-item" }, h("div", { class: "file-item-content" }, h("span", { class: "file-icon" }, "\uD83D\uDCDD"), h("span", { class: "file-name", style: item.state === FileUploadState.Failed ? { color: 'red', textDecoration: 'line-through' } : undefined }, item?.file_name), item.state === FileUploadState.Failed && h("span", { style: { color: 'red', marginLeft: '4px' } }, "(", item.error?.message ?? '上传失败', ")")), h("button", { class: "remove-file", onClick: (e) => {
12028
+ e.stopPropagation();
12029
+ this.selectedFiles = this.selectedFiles?.filter((_, itemIndex) => index !== itemIndex);
12030
+ } }, "\u00D7"));
12031
+ })), this.multiple ? h("div", null, (this.selectedFiles?.length ?? 0) < this.maxFileCount && this.uploadBtn()) : h("div", null, !this.selectedFiles?.length && this.uploadBtn()))), h("input", { key: '480b2f35655d4cdb5a99c058e4b894baf0e4c6a8', type: "file", class: "file-input", onChange: this.handleFileChange })));
12032
+ }
12033
+ };
12034
+ PcmUpload.style = pcmUploadCss + globalCss$1;
8979
12035
 
8980
12036
  const pcmZskChatModalCss = ":host{display:block;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;overflow-y:auto;padding:20px;z-index:1000;-webkit-overflow-scrolling:touch;}.fullscreen-overlay{padding:0;position:absolute;width:100%;height:calc(100% - 10px)}.modal-container{background:white;border-radius:8px;width:100%;max-width:900px;display:flex;flex-direction:column;position:relative;margin:auto}.modal-container.fullscreen{width:100%;max-width:none;height:100%;border-radius:0;margin:0;display:flex;flex-direction:column;max-height:100%}.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}.video-preview.placeholder{display:flex;justify-content:center;align-items:center;background:#EAEAEA}.placeholder-status{color:#00000066}.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-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-container{background-image:url(https://pub.pincaimao.com/static/web/images/login/bg_login_m.png);background-size:100%;height:100%;border-radius:0px 0px 8px 8px}.chat-history{position:relative;flex:1;overflow-y:auto;padding:20px;scroll-behavior:smooth;height:400px}.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{width:38px;height:38px;border-radius:16px;background:#0d75fb;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background-color 0.2s ease}.send-button img{width:24px;height:24px}.send-button:hover{background:#0a62d6}.send-button.disabled{background:#d9d9d9;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-preview{padding:8px 16px;border-top:1px solid #eee;background-color:#f9f9f9}.recording-section{border-top:1px solid #eee;display:flex;flex-direction:column;align-items:center;padding:10px 20px 0px 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}.text-input-area{display:flex;flex-direction:column;width:100%;height:100%;padding:0px 16px 16px 16px;border-radius:8px;border:none;}.text-answer-input{flex:1;min-height:80px;padding:12px 12px 0px 12px;border:1px solid #ddd;border-radius:8px 8px 0 0;resize:none;font-size:16px;background-color:#fff;border-bottom:none;outline:none;}.input-toolbar{display:flex;justify-content:end;align-items:center;padding:8px 12px;background-color:#fff;border:1px solid #ddd;border-top:none;border-radius:0 0 8px 8px}.text-answer-input:focus{border-color:rgb(74, 144, 226);border-bottom:none}.text-answer-input:focus+.input-toolbar{border-color:rgb(74, 144, 226);border-top:none}.toolbar-actions{width:32px;height:32px;display:flex;justify-content:center;align-items:center;margin-right:10px;border:1px solid #d9d9d9;border-radius:6px}.toolbar-actions:hover{background-color:#f0f0f0}.toolbar-button{background:transparent;border:none;color:#666;cursor:pointer;padding:0;margin:0;width:100%;height:100%;display:flex;justify-content:center;align-items:center}.toolbar-button>div,.toolbar-button>svg{display:flex;justify-content:center;align-items:center}.toolbar-button img{width:16px;height:16px}.submit-text-button{padding:6px 16px;background-color:#4a90e2;color:white;border:none;border-radius:4px;font-size:14px;font-weight:500;cursor:pointer;transition:background-color 0.2s}.submit-text-button:hover:not(.disabled){background-color:#3a7bc8}.submit-text-button.disabled{background-color:#b3b3b3;cursor:not-allowed}.toolbar-button.recording{background-color:rgba(255, 0, 0, 0.1);color:#ff3b30;animation:pulse 1.5s infinite}.toolbar-button.converting{background-color:rgba(0, 122, 255, 0.1);color:#007aff}.toolbar-button .recording-time{font-size:12px;margin-left:4px}.converting-indicator{display:flex;justify-content:center;align-items:center}.converting-indicator svg{animation:spin 1.5s linear infinite}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(255, 0, 0, 0.4)}70%{box-shadow:0 0 0 6px rgba(255, 0, 0, 0)}100%{box-shadow:0 0 0 0 rgba(255, 0, 0, 0)}}@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)}}.references-section{margin-top:30px;padding:12px;background-color:#f9f9f9;border-radius:8px;border:1px solid #e8e8e8}.references-title{font-size:14px;color:#666;margin:0 0 8px 0;font-weight:500}.references-list{display:flex;flex-direction:column;gap:8px}.reference-item{background-color:#fff;border:1px solid #e8e8e8;border-radius:6px;padding:10px;cursor:pointer;transition:background-color 0.2s, box-shadow 0.2s}.reference-item:hover{background-color:#f5f5f5;box-shadow:0 2px 8px rgba(0, 0, 0, 0.1)}.reference-header{display:flex;align-items:center;gap:6px;position:relative}.reference-icon{color:#1890ff;display:flex;align-items:center}.reference-name{font-size:13px;font-weight:500;color:#333;flex:1}.download-icon{color:#1890ff;display:flex;align-items:center}.reference-content{display:none}.suggested-questions{margin-top:20px;padding:12px;background-color:#f0f7ff;border-radius:8px;border:1px solid #d6e8ff}.suggested-title{font-size:14px;color:#1890ff;margin:0 0 8px 0;font-weight:500}.suggested-question{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background-color:#fff;border:1px solid #e6f7ff;border-radius:6px;cursor:pointer;font-size:14px;color:#1890ff;transition:all 0.3s;margin-bottom:8px}.suggested-question:last-child{margin-bottom:0}.suggested-question:hover{background-color:#e6f7ff;border-color:#91d5ff}.arrow-right{color:#1890ff;display:flex;align-items:center}.loading-suggestions{display:flex;justify-content:center;padding:16px}.loading-spinner-small{width:20px;height:20px;border:2px solid #e6f7ff;border-top-color:#1890ff;border-radius:50%;animation:spin 1s linear infinite}";
8981
12037
 
@@ -9885,7 +12941,7 @@ const ChatKBModal = class {
9885
12941
  };
9886
12942
  ChatKBModal.style = pcmZskChatModalCss;
9887
12943
 
9888
- 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)}}";
12944
+ 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)}}";
9889
12945
 
9890
12946
  const pcmZyghModalCss = ".plan-type-section{display:flex;flex-direction:column;gap:10px;margin-bottom:20px}.plan-type-section label{font-weight:600;color:#333;margin-bottom:8px}.plan-type-options{display:flex;gap:15px;flex-wrap:wrap}.plan-type-option{flex:1;min-width:120px;border:1px solid #e8e8e8;border-radius:8px;padding:15px;cursor:pointer;display:flex;flex-direction:column;align-items:center;transition:all 0.3s}.plan-type-option:hover{border-color:#1890ff;background-color:#f0f7ff}.plan-type-option.selected{border-color:#1890ff;background-color:#e6f7ff;box-shadow:0 2px 8px rgba(24, 144, 255, 0.2)}.option-icon{font-size:24px;margin-bottom:8px}.option-label{font-size:14px;font-weight:500;color:#333}.resume-upload-section{display:flex;flex-direction:column;gap:8px}.resume-upload-section label{font-weight:600;color:#333;margin-bottom:8px}";
9891
12947
 
@@ -10175,7 +13231,7 @@ const ZyghModal = class {
10175
13231
  };
10176
13232
  ZyghModal.style = globalCss + pcmZyghModalCss;
10177
13233
 
10178
- export { ZhanshiMnmsModal as pcm_1zhanshi_mnms_modal, ChatAPPModal as pcm_app_chat_modal, PcmButton as pcm_button, PcmCard as pcm_card, ChatMessageComponent as pcm_chat_message, PcmDrawer as pcm_drawer, ChatHRModal as pcm_hr_chat_modal, HtwsModal as pcm_htws_modal, HyzjModal as pcm_hyzj_modal, PcmJdModal as pcm_jd_modal, JlppModal as pcm_jlpp_modal, MnctModal as pcm_mnct_modal, MnmsModal as pcm_mnms_modal, MsbgModal as pcm_msbg_modal, QgqjlModal as pcm_qgqjl_modal, ChatKBModal as pcm_zsk_chat_modal, ZyghModal as pcm_zygh_modal };
10179
- //# sourceMappingURL=pcm-1zhanshi-mnms-modal.pcm-app-chat-modal.pcm-button.pcm-card.pcm-chat-message.pcm-drawer.pcm-hr-chat-modal.pcm-htws-modal.pcm-hyzj-modal.pcm-jd-modal.pcm-jlpp-modal.pcm-mnct-modal.pcm-mnms-modal.pcm-msbg-modal.pcm-qgqjl-modal.pcm-zsk-chat-modal.pcm-zygh-modal.entry.js.map
13234
+ export { ZhanshiMnmsModal as pcm_1zhanshi_mnms_modal, ChatAPPModal as pcm_app_chat_modal, PcmButton as pcm_button, PcmCard as pcm_card, ChatMessageComponent as pcm_chat_message, PcmDrawer as pcm_drawer, ChatHRModal as pcm_hr_chat_modal, HtwsModal as pcm_htws_modal, HyzjModal as pcm_hyzj_modal, PcmJdModal as pcm_jd_modal, JlppModal as pcm_jlpp_modal, MnctModal as pcm_mnct_modal, MnmsModal as pcm_mnms_modal, MobileUploadBtn$1 as pcm_mobile_input_btn, MobileUploadBtn as pcm_mobile_upload_btn, MsbgModal as pcm_msbg_modal, QgqjlModal as pcm_qgqjl_modal, TimeCountDown as pcm_time_count_down, PcmUpload as pcm_upload, ChatKBModal as pcm_zsk_chat_modal, ZyghModal as pcm_zygh_modal };
13235
+ //# sourceMappingURL=pcm-1zhanshi-mnms-modal.pcm-app-chat-modal.pcm-button.pcm-card.pcm-chat-message.pcm-drawer.pcm-hr-chat-modal.pcm-htws-modal.pcm-hyzj-modal.pcm-jd-modal.pcm-jlpp-modal.pcm-mnct-modal.pcm-mnms-modal.pcm-mobile-input-btn.pcm-mobile-upload-btn.pcm-msbg-modal.pcm-qgqjl-modal.pcm-time-count-down.pcm-upload.pcm-zsk-chat-modal.pcm-zygh-modal.entry.js.map
10180
13236
 
10181
- //# sourceMappingURL=pcm-1zhanshi-mnms-modal_17.entry.js.map
13237
+ //# sourceMappingURL=pcm-1zhanshi-mnms-modal_21.entry.js.map