fmode-ng 0.0.113 → 0.0.115

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 (275) hide show
  1. package/LICENSE.md +8 -0
  2. package/README.md +37 -37
  3. package/esm2022/fmode-ng.mjs +10 -5
  4. package/esm2022/lib/aigc/agent/fm-agent-task/fm-agent-task.component.mjs +8 -92
  5. package/esm2022/lib/aigc/agent/index.mjs +10 -3
  6. package/esm2022/lib/aigc/avatar/avatar.module.mjs +10 -45
  7. package/esm2022/lib/aigc/avatar/comp-avatar-particle/avatar.role.mjs +10 -2
  8. package/esm2022/lib/aigc/avatar/comp-avatar-particle/comp-avatar-particle.component.mjs +10 -315
  9. package/esm2022/lib/aigc/avatar/comp-avatar-particle/index.mjs +10 -3
  10. package/esm2022/lib/aigc/avatar/comp-avatar-particle/role-points.class.mjs +10 -57
  11. package/esm2022/lib/aigc/avatar/comp-avatar-role-image/comp-avatar-role-image.component.mjs +10 -98
  12. package/esm2022/lib/aigc/avatar/comp-avatar-role-video/comp-avatar-role-video.component.mjs +10 -107
  13. package/esm2022/lib/aigc/avatar/comp-avatar-talk/comp-avatar-talk.component.mjs +10 -113
  14. package/esm2022/lib/aigc/avatar/index.mjs +10 -8
  15. package/esm2022/lib/aigc/avatar/interface-avatar-role.mjs +10 -2
  16. package/esm2022/lib/aigc/avatar/modal-chat-voice-input/modal-chat-voice-input.component.mjs +8 -164
  17. package/esm2022/lib/aigc/chat/chat-header-area/comp-header-area.component.mjs +10 -49
  18. package/esm2022/lib/aigc/chat/chat-header-area/index.mjs +10 -2
  19. package/esm2022/lib/aigc/chat/chat-list/chat-list.component.mjs +8 -155
  20. package/esm2022/lib/aigc/chat/chat-list/index.mjs +10 -2
  21. package/esm2022/lib/aigc/chat/chat-message-area/comp-message-area.component.mjs +10 -40
  22. package/esm2022/lib/aigc/chat/chat-message-area/index.mjs +10 -2
  23. package/esm2022/lib/aigc/chat/chat-message-card/comp-message-card.component.mjs +10 -140
  24. package/esm2022/lib/aigc/chat/chat-message-card/duration-str.pipe.mjs +10 -29
  25. package/esm2022/lib/aigc/chat/chat-message-card/index.mjs +10 -3
  26. package/esm2022/lib/aigc/chat/chat-modal-input/index.mjs +10 -3
  27. package/esm2022/lib/aigc/chat/chat-modal-input/modal-audio-message/modal-audio-message.component.mjs +8 -193
  28. package/esm2022/lib/aigc/chat/chat-modal-input/modal-input.component.mjs +10 -331
  29. package/esm2022/lib/aigc/chat/chat-panel/chat-panel.component.mjs +8 -249
  30. package/esm2022/lib/aigc/chat/comp-role-prompt/comp-role-prompt.component.mjs +10 -83
  31. package/esm2022/lib/aigc/chat/comp-role-prompt/index.mjs +10 -2
  32. package/esm2022/lib/aigc/chat/index.mjs +10 -8
  33. package/esm2022/lib/aigc/comp-markdown-preview/clipboard.service.mjs +10 -82
  34. package/esm2022/lib/aigc/comp-markdown-preview/markdown-parse.mjs +8 -367
  35. package/esm2022/lib/aigc/comp-markdown-preview/markdown-preview.component.mjs +10 -51
  36. package/esm2022/lib/aigc/comp-markdown-preview/markdown-preview.module.mjs +10 -24
  37. package/esm2022/lib/aigc/comp-markdown-preview/plugins/md-mathjax/index.mjs +10 -115
  38. package/esm2022/lib/aigc/index.mjs +10 -14
  39. package/esm2022/lib/aigc/service-fmai/fmai.service.mjs +10 -21
  40. package/esm2022/lib/aigc/service-fmai/service-chat/chat-class.mjs +10 -2
  41. package/esm2022/lib/aigc/service-fmai/service-chat/chat.service.mjs +8 -174
  42. package/esm2022/lib/aigc/service-fmai/service-chat/index.mjs +10 -7
  43. package/esm2022/lib/aigc/service-fmai/service-chat/mask-list.mjs +9 -194
  44. package/esm2022/lib/aigc/service-fmai/service-chat/pipes/chat-content.pipe.mjs +10 -27
  45. package/esm2022/lib/aigc/service-fmai/service-chat/pipes/hidexml.pipe.mjs +10 -27
  46. package/esm2022/lib/aigc/service-fmai/service-chat/utilnow.pipe.mjs +10 -68
  47. package/esm2022/lib/aigc/service-fmai/service-imagine/imagine-func.mjs +9 -162
  48. package/esm2022/lib/aigc/service-fmai/service-imagine/imagine-work.mjs +10 -68
  49. package/esm2022/lib/aigc/service-fmai/service-imagine/imagine.service.mjs +8 -313
  50. package/esm2022/lib/aigc/service-fmai/service-imagine/index.mjs +10 -4
  51. package/esm2022/lib/aigc/story/fm-office-viewer/fm-office-viewer.component.mjs +10 -62
  52. package/esm2022/lib/aigc/story/fm-story-card/fm-story-card.component.mjs +10 -87
  53. package/esm2022/lib/aigc/story/fm-story-list/fm-story-list.component.mjs +10 -345
  54. package/esm2022/lib/aigc/story/fm-story-list/story-preview.mjs +10 -81
  55. package/esm2022/lib/aigc/story/fm-story-loader/fm-story-loader.component.mjs +10 -152
  56. package/esm2022/lib/aigc/story/fm-story-splitter/fm-story-splitter.component.mjs +10 -42
  57. package/esm2022/lib/aigc/story/index.mjs +10 -6
  58. package/esm2022/lib/aigc/story/modal-chat-story/comp-chat-story-json/comp-chat-story-json.component.mjs +10 -47
  59. package/esm2022/lib/aigc/story/modal-chat-story/comp-diary-story/comp-diary-story.component.mjs +10 -95
  60. package/esm2022/lib/aigc/story/modal-chat-story/modal-chat-story.component.mjs +10 -253
  61. package/esm2022/lib/aigc/story/story.service.mjs +10 -35
  62. package/esm2022/lib/aigc/voice/fmode-voice.service.mjs +10 -636
  63. package/esm2022/lib/aigc/voice/index.mjs +10 -7
  64. package/esm2022/lib/aigc/voice/lib/audio/audio.player.mjs +10 -55
  65. package/esm2022/lib/aigc/voice/lib/audio/audio.streamer.mjs +10 -2
  66. package/esm2022/lib/aigc/voice/lib/audio/streamer.microsoft.mjs +10 -96
  67. package/esm2022/lib/aigc/voice/lib/audio/streamer.pcm.mjs +8 -177
  68. package/esm2022/lib/aigc/voice/lib/pcm2wav.mjs +10 -38
  69. package/esm2022/lib/aigc/voice/lib/recorder/extension-waveview.mjs +10 -215
  70. package/esm2022/lib/aigc/voice/lib/resample.mjs +10 -34
  71. package/esm2022/lib/aigc/voice/tts/fmode-tts-class.mjs +10 -189
  72. package/esm2022/lib/aigc/voice/tts/index.mjs +10 -5
  73. package/esm2022/lib/aigc/voice/tts/int-tts-provider.mjs +10 -2
  74. package/esm2022/lib/aigc/voice/tts/provider-doubao.mjs +8 -346
  75. package/esm2022/lib/code/fm-codemirror/fm-codemirror.component.mjs +8 -342
  76. package/esm2022/lib/code/index.mjs +10 -2
  77. package/esm2022/lib/core/agent/chat/completion/fmode-completion.mjs +8 -430
  78. package/esm2022/lib/core/agent/chat/completion/index.mjs +10 -2
  79. package/esm2022/lib/core/agent/chat/completion/int-gpt-chat-options.mjs +10 -2
  80. package/esm2022/lib/core/agent/chat/fmode-chat.mjs +8 -617
  81. package/esm2022/lib/core/agent/chat/index.mjs +10 -4
  82. package/esm2022/lib/core/agent/chat/interface.mjs +10 -2
  83. package/esm2022/lib/core/agent/index.mjs +10 -6
  84. package/esm2022/lib/core/agent/prompt/agent.prompt.mjs +10 -133
  85. package/esm2022/lib/core/agent/prompt/index.mjs +10 -2
  86. package/esm2022/lib/core/agent/prompt/prompt-util.mjs +10 -16
  87. package/esm2022/lib/core/agent/story/agent.story.mjs +10 -64
  88. package/esm2022/lib/core/agent/story/index.mjs +10 -2
  89. package/esm2022/lib/core/agent/task/agent.task.mjs +10 -90
  90. package/esm2022/lib/core/agent/task/index.mjs +10 -2
  91. package/esm2022/lib/core/agent/waiting/index.mjs +10 -3
  92. package/esm2022/lib/core/agent/waiting/loading/loading.ctrl.mjs +10 -279
  93. package/esm2022/lib/core/agent/waiting/tips/tips.ctrl.mjs +8 -190
  94. package/esm2022/lib/core/index.mjs +10 -4
  95. package/esm2022/lib/core/parse/datatype/acl.mjs +10 -57
  96. package/esm2022/lib/core/parse/datatype/file.mjs +10 -69
  97. package/esm2022/lib/core/parse/datatype/geopoint.mjs +10 -57
  98. package/esm2022/lib/core/parse/datatype/relation.mjs +10 -56
  99. package/esm2022/lib/core/parse/fmode.cloud.mjs +10 -0
  100. package/esm2022/lib/core/parse/fmode.object.mjs +10 -232
  101. package/esm2022/lib/core/parse/fmode.parse.mjs +10 -84
  102. package/esm2022/lib/core/parse/fmode.query.mjs +8 -500
  103. package/esm2022/lib/core/parse/fmode.user.mjs +10 -275
  104. package/esm2022/lib/core/parse/index.mjs +10 -5
  105. package/esm2022/lib/core/parse/types.mjs +10 -2
  106. package/esm2022/lib/core/voice/index.mjs +10 -3
  107. package/esm2022/lib/core/voice/tts/index.mjs +10 -2
  108. package/esm2022/lib/icon/filetype/audio.svg.mjs +10 -3
  109. package/esm2022/lib/icon/filetype/avatar.svg.mjs +10 -14
  110. package/esm2022/lib/icon/filetype/chat.svg.mjs +10 -3
  111. package/esm2022/lib/icon/filetype/docx.svg.mjs +10 -3
  112. package/esm2022/lib/icon/filetype/file.svg.mjs +10 -3
  113. package/esm2022/lib/icon/filetype/filetype.pipe.mjs +10 -57
  114. package/esm2022/lib/icon/filetype/index.mjs +10 -12
  115. package/esm2022/lib/icon/filetype/md.svg.mjs +10 -3
  116. package/esm2022/lib/icon/filetype/pdf.svg.mjs +10 -3
  117. package/esm2022/lib/icon/filetype/pptx.svg.mjs +10 -3
  118. package/esm2022/lib/icon/filetype/svgtoblob.mjs +10 -8
  119. package/esm2022/lib/icon/filetype/video.svg.mjs +10 -3
  120. package/esm2022/lib/icon/filetype/xlsx.svg.mjs +10 -3
  121. package/esm2022/lib/icon/index.mjs +10 -2
  122. package/esm2022/lib/map/comp-poi-picker/comp-poi-picker.component.mjs +10 -209
  123. package/esm2022/lib/map/comp-poi-picker/comp-poi-picker.module.mjs +10 -33
  124. package/esm2022/lib/map/index.mjs +10 -4
  125. package/esm2022/lib/map/map.module.mjs +10 -61
  126. package/esm2022/lib/map/page-loca-scatter/page-loca-scatter.component.mjs +10 -132
  127. package/esm2022/lib/map/page-map.start/page-map.start.component.mjs +8 -115
  128. package/esm2022/lib/map/page-plan-route/page-plan-route.component.mjs +8 -118
  129. package/esm2022/lib/nova-cloud/index.mjs +10 -3
  130. package/esm2022/lib/nova-cloud/ncloud-api-func.mjs +10 -91
  131. package/esm2022/lib/nova-cloud/nova-cloud.service.mjs +10 -53
  132. package/esm2022/lib/payment/index.mjs +10 -2
  133. package/esm2022/lib/payment/payment/payment.component.mjs +10 -543
  134. package/esm2022/lib/payment/payment.service.mjs +10 -202
  135. package/esm2022/lib/person/comp-person-gender-icon/comp-person-gender-icon.component.mjs +10 -48
  136. package/esm2022/lib/person/comp-person-item/comp-person-item.component.mjs +10 -29
  137. package/esm2022/lib/person/comp-person-story/comp-person-story.component.mjs +10 -211
  138. package/esm2022/lib/person/edit-upload/edit-upload.component.mjs +8 -412
  139. package/esm2022/lib/person/edit-upload/edit-upload.module.mjs +10 -50
  140. package/esm2022/lib/person/index.mjs +10 -5
  141. package/esm2022/lib/person/modal-person-select/modal-person-select.component.mjs +10 -144
  142. package/esm2022/lib/person/modal-user-verify/secret-text.pipe.mjs +10 -41
  143. package/esm2022/lib/person/modal-user-verify/user-verify.component.mjs +10 -595
  144. package/esm2022/lib/person/person-detail/person-detail.component.mjs +10 -172
  145. package/esm2022/lib/person/person.service.mjs +8 -193
  146. package/esm2022/lib/platform/cross.service.mjs +10 -62
  147. package/esm2022/lib/platform/index.mjs +10 -2
  148. package/esm2022/lib/social/index.mjs +10 -2
  149. package/esm2022/lib/social/wechat/wechat-jssdk.service.mjs +8 -230
  150. package/esm2022/lib/storage/comp-hwobs-manager/hwobs-manager.component.mjs +10 -59
  151. package/esm2022/lib/storage/index.mjs +10 -5
  152. package/esm2022/lib/storage/service-hwobs/hwobs.service.mjs +8 -131
  153. package/esm2022/lib/storage/service-hwobs/index.mjs +10 -3
  154. package/esm2022/lib/storage/service-hwobs/typings/esdk-obs-browser.mjs +1 -1
  155. package/esm2022/lib/storage/service-upload/index.mjs +10 -2
  156. package/esm2022/lib/storage/service-upload/nova-upload.service.mjs +8 -513
  157. package/esm2022/lib/storage/service-upload/util-file-md5.mjs +10 -28
  158. package/esm2022/lib/storage/service-upload/util-file-metadata.mjs +10 -93
  159. package/esm2022/lib/storage/storage.module.mjs +10 -42
  160. package/esm2022/lib/text/fm-article-editor/article-editor-topbar/article-editor-topbar.component.mjs +10 -72
  161. package/esm2022/lib/text/fm-article-editor/article.service.mjs +10 -237
  162. package/esm2022/lib/text/fm-article-editor/comp-upload-book-banners/comp-upload-book-banners.component.mjs +8 -72
  163. package/esm2022/lib/text/fm-article-editor/draft.service.mjs +10 -207
  164. package/esm2022/lib/text/fm-article-editor/fm-article-aitool/fm-article-aitool.component.mjs +8 -227
  165. package/esm2022/lib/text/fm-article-editor/fm-article-draft/fm-article-draft.component.mjs +10 -303
  166. package/esm2022/lib/text/fm-article-editor/fm-article-editor.component.mjs +8 -371
  167. package/esm2022/lib/text/fm-article-editor/fm-article-outline/fm-article-outline.component.mjs +10 -94
  168. package/esm2022/lib/text/fm-article-editor/fm-article-outline-leftitem/fm-article-outline-leftitem.component.mjs +10 -36
  169. package/esm2022/lib/text/fm-article-editor/fm-article-preview/fm-article-preview.component.mjs +10 -281
  170. package/esm2022/lib/text/fm-article-editor/fm-article-write-options/fm-article-write-options.component.mjs +10 -72
  171. package/esm2022/lib/text/fm-article-editor/outline-count.pipe.mjs +10 -22
  172. package/esm2022/lib/text/fm-article-editor/prompt/prompt-insertion-article.mjs +10 -169
  173. package/esm2022/lib/text/fm-article-editor/task-article-generation.mjs +10 -69
  174. package/esm2022/lib/text/fm-article-editor/tasks/task-article-draft-create.mjs +10 -65
  175. package/esm2022/lib/text/fm-article-editor/tasks/task-article-outline-edit.mjs +10 -55
  176. package/esm2022/lib/text/fm-article-editor/tasks/task-article-outline.mjs +10 -142
  177. package/esm2022/lib/text/fm-article-editor/tasks/task-article-preview.mjs +10 -35
  178. package/esm2022/lib/text/fm-article-editor/tasks/task-article-writing-options.mjs +10 -81
  179. package/esm2022/lib/text/fm-article-editor/tasks/task-document-select.mjs +10 -50
  180. package/esm2022/lib/text/fm-text-quill/fm-text-quill.component.mjs +10 -145
  181. package/esm2022/lib/text/index.mjs +10 -4
  182. package/esm2022/lib/user/account/account.service.mjs +10 -222
  183. package/esm2022/lib/user/captcha/captcha.component.mjs +10 -135
  184. package/esm2022/lib/user/comp-user-avatar/comp-user-avatar.component.mjs +10 -66
  185. package/esm2022/lib/user/index.mjs +10 -17
  186. package/esm2022/lib/user/login/auth.guard.mjs +10 -28
  187. package/esm2022/lib/user/login/auth.service.mjs +8 -433
  188. package/esm2022/lib/user/login/login.component.mjs +10 -916
  189. package/esm2022/lib/user/modal-user-login/modal-user-login.component.mjs +10 -311
  190. package/esm2022/lib/user/profile/auth-profile.guard.mjs +10 -27
  191. package/esm2022/lib/user/profile/auth-profile.service.mjs +10 -122
  192. package/esm2022/lib/user/profile/profile-bind/profile-bind.component.mjs +10 -164
  193. package/esm2022/lib/user/profile/profile-bind/profile-confirm-modal.component.mjs +10 -79
  194. package/esm2022/lib/user/profile/profile.module.mjs +10 -54
  195. package/esm2022/lib/user/staff/index.mjs +10 -4
  196. package/esm2022/lib/user/staff/staff.guard.mjs +10 -26
  197. package/esm2022/lib/user/staff/staff.module.mjs +10 -18
  198. package/esm2022/lib/user/staff/staff.service.mjs +10 -85
  199. package/esm2022/lib/user/user-name.pipe.mjs +10 -29
  200. package/esm2022/lib/user/user.module.mjs +10 -102
  201. package/esm2022/lib/video/fm-video/fm-video.component.mjs +10 -67
  202. package/esm2022/lib/video/index.mjs +10 -2
  203. package/esm2022/public-api.mjs +10 -21
  204. package/fesm2022/fmode-ng.mjs +7 -19788
  205. package/fesm2022/fmode-ng.mjs.map +1 -1
  206. package/lib/aigc/avatar/comp-avatar-role-image/comp-avatar-role-image.component.d.ts +2 -2
  207. package/lib/aigc/avatar/comp-avatar-role-video/comp-avatar-role-video.component.d.ts +2 -2
  208. package/lib/aigc/avatar/comp-avatar-talk/comp-avatar-talk.component.d.ts +2 -2
  209. package/lib/aigc/chat/chat-list/chat-list.component.d.ts +3 -2
  210. package/lib/aigc/chat/chat-message-card/comp-message-card.component.d.ts +3 -3
  211. package/lib/aigc/chat/chat-modal-input/modal-audio-message/modal-audio-message.component.d.ts +2 -2
  212. package/lib/aigc/chat/chat-modal-input/modal-input.component.d.ts +3 -3
  213. package/lib/aigc/service-fmai/service-imagine/imagine-func.d.ts +3 -3
  214. package/lib/aigc/service-fmai/service-imagine/imagine-work.d.ts +4 -4
  215. package/lib/aigc/service-fmai/service-imagine/imagine.service.d.ts +6 -6
  216. package/lib/aigc/story/fm-office-viewer/fm-office-viewer.component.d.ts +2 -2
  217. package/lib/aigc/story/fm-story-card/fm-story-card.component.d.ts +2 -1
  218. package/lib/aigc/story/fm-story-list/fm-story-list.component.d.ts +6 -6
  219. package/lib/aigc/story/fm-story-list/story-preview.d.ts +4 -4
  220. package/lib/aigc/story/fm-story-loader/fm-story-loader.component.d.ts +3 -3
  221. package/lib/aigc/story/fm-story-splitter/fm-story-splitter.component.d.ts +2 -2
  222. package/lib/aigc/story/modal-chat-story/comp-chat-story-json/comp-chat-story-json.component.d.ts +3 -2
  223. package/lib/aigc/story/modal-chat-story/comp-diary-story/comp-diary-story.component.d.ts +3 -2
  224. package/lib/aigc/story/modal-chat-story/modal-chat-story.component.d.ts +6 -6
  225. package/lib/aigc/story/story.service.d.ts +3 -2
  226. package/lib/aigc/voice/tts/fmode-tts-class.d.ts +2 -2
  227. package/lib/core/agent/chat/fmode-chat.d.ts +11 -11
  228. package/lib/core/agent/story/agent.story.d.ts +8 -8
  229. package/lib/core/parse/datatype/geopoint.d.ts +5 -1
  230. package/lib/core/parse/fmode.cloud.d.ts +32 -0
  231. package/lib/core/parse/fmode.object.d.ts +2 -2
  232. package/lib/core/parse/fmode.parse.d.ts +15 -9
  233. package/lib/core/parse/fmode.query.d.ts +41 -2
  234. package/lib/core/parse/fmode.user.d.ts +1 -0
  235. package/lib/core/parse/index.d.ts +1 -0
  236. package/lib/core/parse/types.d.ts +2 -0
  237. package/lib/map/comp-poi-picker/comp-poi-picker.component.d.ts +5 -5
  238. package/lib/payment/payment/payment.component.d.ts +3 -3
  239. package/lib/payment/payment.service.d.ts +4 -4
  240. package/lib/person/comp-person-gender-icon/comp-person-gender-icon.component.d.ts +2 -1
  241. package/lib/person/comp-person-item/comp-person-item.component.d.ts +2 -1
  242. package/lib/person/comp-person-story/comp-person-story.component.d.ts +13 -13
  243. package/lib/person/edit-upload/edit-upload.component.d.ts +1 -1
  244. package/lib/person/modal-person-select/modal-person-select.component.d.ts +5 -5
  245. package/lib/person/modal-user-verify/user-verify.component.d.ts +5 -5
  246. package/lib/person/person-detail/person-detail.component.d.ts +4 -4
  247. package/lib/person/person.service.d.ts +7 -7
  248. package/lib/storage/service-hwobs/hwobs.service.d.ts +4 -5
  249. package/lib/storage/service-upload/nova-upload.service.d.ts +5 -5
  250. package/lib/text/fm-article-editor/article-editor-topbar/article-editor-topbar.component.d.ts +2 -1
  251. package/lib/text/fm-article-editor/article.service.d.ts +12 -12
  252. package/lib/text/fm-article-editor/draft.service.d.ts +5 -5
  253. package/lib/text/fm-article-editor/fm-article-aitool/fm-article-aitool.component.d.ts +3 -2
  254. package/lib/text/fm-article-editor/fm-article-draft/fm-article-draft.component.d.ts +16 -17
  255. package/lib/text/fm-article-editor/fm-article-editor.component.d.ts +3 -3
  256. package/lib/text/fm-article-editor/fm-article-outline/fm-article-outline.component.d.ts +11 -10
  257. package/lib/text/fm-article-editor/fm-article-preview/fm-article-preview.component.d.ts +2 -2
  258. package/lib/text/fm-article-editor/prompt/prompt-insertion-article.d.ts +3 -3
  259. package/lib/text/fm-article-editor/task-article-generation.d.ts +5 -4
  260. package/lib/text/fm-article-editor/tasks/task-article-draft-create.d.ts +3 -3
  261. package/lib/text/fm-article-editor/tasks/task-article-outline-edit.d.ts +3 -3
  262. package/lib/text/fm-article-editor/tasks/task-article-outline.d.ts +3 -3
  263. package/lib/text/fm-article-editor/tasks/task-article-preview.d.ts +2 -1
  264. package/lib/text/fm-article-editor/tasks/task-article-writing-options.d.ts +3 -3
  265. package/lib/text/fm-article-editor/tasks/task-document-select.d.ts +3 -3
  266. package/lib/user/account/account.service.d.ts +2 -2
  267. package/lib/user/comp-user-avatar/comp-user-avatar.component.d.ts +2 -2
  268. package/lib/user/login/auth.service.d.ts +5 -5
  269. package/lib/user/login/login.component.d.ts +3 -3
  270. package/lib/user/profile/auth-profile.service.d.ts +8 -8
  271. package/lib/user/profile/profile-bind/profile-bind.component.d.ts +7 -7
  272. package/lib/user/profile/profile-bind/profile-confirm-modal.component.d.ts +2 -2
  273. package/lib/user/staff/staff.service.d.ts +3 -3
  274. package/lib/user/user-name.pipe.d.ts +2 -2
  275. package/package.json +12 -18
@@ -1,251 +1,10 @@
1
- import { CommonModule } from '@angular/common';
2
- import { Component, ElementRef, Input, ViewChild } from '@angular/core';
3
- import { ActivatedRoute, Router } from '@angular/router';
4
- import { ChatService } from '../../service-fmai/service-chat';
5
- import { combineLatest } from 'rxjs';
6
- import { FmChatHeaderArea } from '../chat-header-area';
7
- import { FmChatMesssageArea } from '../chat-message-area';
8
- import { FmChatModalInput } from '../chat-modal-input';
9
- import { ModalController } from '@ionic/angular/standalone';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "@angular/router";
12
- import * as i2 from "../../service-fmai/service-chat";
13
- import * as i3 from "@angular/common";
14
- // import { IonContent, IonHeader } from '@ionic/angular/standalone';
15
- export class ChatPanelComponent {
16
- constructor(route, router, chatServ) {
17
- this.route = route;
18
- this.router = router;
19
- this.chatServ = chatServ;
20
- this.mode = 'page';
21
- this.isDirect = false;
22
- this.showInputModal = true;
23
- this.showMessageArea = true;
24
- this.showHeaderArea = true;
25
- // 界面功能显示控制
26
- this.hideShare = false;
27
- this.hideModalSelect = false;
28
- this.hideInputPreview = false;
29
- if (window.location.pathname?.indexOf("chat/session") > -1) {
30
- document.body.classList.add('dark');
31
- }
32
- }
1
+
33
2
  /**
34
- * 监听DIV变化自动滚动至底部,改为更新内容区域组件
3
+ * @copyright © 未来飞马 © 未来全栈 www.fmode.cn
4
+ * 版权所有 © 未来飞马 © 江西脑控科技有限公司 Copyright © Fmode Technology Co., Ltd.
5
+ * 保留所有权利 All Rights Reserved.
6
+ * /home/ryan/workspace/nova/nova-admin/dist/fmode-ng/esm2022/lib/aigc/chat/chat-panel/chat-panel.component.mjs
35
7
  */
36
- listenDivChange() {
37
- // return // 暂时关闭,切换为输入时变化至底部
38
- // 创建 MutationObserver 实例
39
- let observer = new MutationObserver(() => {
40
- this.fmodeChat.scrollComp = this.contentComp;
41
- // console.log(this.fmodeChat.scrollComp,this.contentComp)
42
- // this.scrollToBottom(this.contentComp);
43
- });
44
- // 配置观察选项
45
- let config = { childList: true, subtree: true, attributes: true };
46
- // 开始观察
47
- if (this.contentComp?.nativeElement) {
48
- observer.observe(this.contentComp?.nativeElement, config);
49
- }
50
- }
51
- ngAfterViewInit() {
52
- }
53
- ngOnInit() {
54
- if (this.mode == "modal") {
55
- this.initChat();
56
- }
57
- if (this.mode == "page") {
58
- // 同步路由参数优先级:组件属性传参 > 路由传参
59
- combineLatest([this.route.params, this.route.queryParams]).subscribe(async (data) => {
60
- this.initChat(data);
61
- });
62
- }
63
- }
64
- async initChat(data) {
65
- console.log("ChatComp OnInit");
66
- let params = data?.[0];
67
- // console.log("params",data)
68
- // 会话入口,加载历史消息
69
- this.chatId = params?.chatId || this.chatId || null;
70
- if (this.chatId) { // 存在ID,则加载历史Session
71
- await this.chatServ.initChatMap(this.chatId);
72
- }
73
- // 角色入口,加载角色设置
74
- this.roleId = params?.roleId || this.roleId || "2DXJkRsjXK" || null;
75
- if (this.roleId) { // 存在ID,则加载历史Session
76
- let chat = await this.chatServ.createNewRoleChat(this.roleId);
77
- this.fmodeChat = chat;
78
- // console.log(chat)
79
- }
80
- // 加载Chat类
81
- if (this.chatId) {
82
- this.fmodeChat = this.chatServ.chatMap[this.chatId];
83
- if (!this.fmodeChat) { // 不存在ID,则跳出面具选择
84
- this.router.navigate(['/chat/pro/mask'], { queryParams: { type: "employee" } });
85
- }
86
- this.fmodeChat = this.chatServ.chatMap[this.chatId];
87
- }
88
- if (this.leftButtons) {
89
- this.fmodeChat.leftButtons = this.leftButtons;
90
- }
91
- if (window.location.pathname?.indexOf("chat/session") > -1) {
92
- this.fmodeChat.isVoiceInputMode = true;
93
- }
94
- else {
95
- this.fmodeChat.isVoiceInputMode = false;
96
- }
97
- if (this.modelList) {
98
- this.fmodeChat.modelList = this.modelList;
99
- this.fmodeChat.currentModel = this.modelList[0];
100
- }
101
- if (this.isDirect) {
102
- this.fmodeChat.isDirect = this.isDirect;
103
- }
104
- if (this.hideShare) {
105
- this.fmodeChat.hideShare = this.hideShare;
106
- }
107
- if (this.hideModalSelect) {
108
- this.fmodeChat.hideModalSelect = this.hideModalSelect;
109
- }
110
- if (this.hideInputPreview) {
111
- this.fmodeChat.hideInputPreview = this.hideInputPreview;
112
- }
113
- this.fmodeChat.mode = this.mode;
114
- // 注入生命周期函数
115
- this.fmodeChat.onChatSaved = this.onChatSaved,
116
- this.fmodeChat.onMessage = this.onMessage,
117
- this.fmodeChat.onUserSend = this.onUserSend,
118
- this.fmodeChat.onClose = this.onClose,
119
- this.onChatInit && this.onChatInit(this.fmodeChat);
120
- setTimeout(() => {
121
- this.fmodeChat.scrollComp = this.contentComp;
122
- // console.log(this.fmodeChat.scrollComp,this.contentComp)
123
- this.listenDivChange();
124
- }, 1000);
125
- this.sayWelcome();
126
- }
127
- sayWelcome() {
128
- if (this.fmodeChat.voiceConfig?.welcome?.enabled) {
129
- // console.log("sayWelcome")
130
- this.fmodeChat.welcome();
131
- }
132
- }
133
- loadMask() {
134
- }
135
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChatPanelComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.ChatService }], target: i0.ɵɵFactoryTarget.Component }); }
136
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ChatPanelComponent, isStandalone: true, selector: "fm-chat-panel", inputs: { goBack: "goBack", onChatSaved: "onChatSaved", onChatInit: "onChatInit", onMessage: "onMessage", onUserSend: "onUserSend", onClose: "onClose", mode: "mode", chatId: "chatId", maskId: "maskId", roleId: "roleId", leftButtons: "leftButtons", modelList: "modelList", isDirect: "isDirect", showInputModal: "showInputModal", showMessageArea: "showMessageArea", showHeaderArea: "showHeaderArea", hideShare: "hideShare", hideModalSelect: "hideModalSelect", hideInputPreview: "hideInputPreview" }, providers: [
137
- ModalController
138
- ], viewQueries: [{ propertyName: "headerArea", first: true, predicate: FmChatHeaderArea, descendants: true }, { propertyName: "contentComp", first: true, predicate: ["contentComp"], descendants: true }], ngImport: i0, template: "\r\n<!-- <ion-header></ion-header> -->\r\n<!-- <ion-content class=\"ion-padding\"> -->\r\n <div class=\"chat-page\" *ngIf=\"fmodeChat\">\r\n <div class=\"header\" [class.avatarHeader]=\"fmodeChat?.isAvatarShow\">\r\n <ng-content select=\"[chat-header]\"></ng-content>\r\n <fm-chat-header-area [goBack]=\"goBack\" *ngIf=\"showHeaderArea\" [chat]=\"fmodeChat\"></fm-chat-header-area>\r\n </div>\r\n \r\n <div class=\"content\" #contentComp>\r\n <ng-content select=\"[chat-content]\"></ng-content>\r\n <fm-chat-message-area *ngIf=\"showMessageArea\" [chat]=\"fmodeChat\"></fm-chat-message-area>\r\n </div>\r\n \r\n <div class=\"footer\">\r\n <ng-content select=\"[chat-footer]\"></ng-content>\r\n <fm-chat-modal-input *ngIf=\"showInputModal\" [chat]=\"fmodeChat\"></fm-chat-modal-input>\r\n </div>\r\n </div>\r\n\r\n<!-- </ion-content> -->", styles: [".chat-page{display:flex;flex-direction:column;height:100%;background:#f3f3f3}.chat-page .content,.chat-page .header,.chat-page .footer{justify-content:center;align-items:center}.chat-page .content{flex-grow:1;flex:1;overflow-y:auto}.chat-page .avatarHeader{height:35vh!important;overflow:hidden}.chat-page .header{height:44px;margin-bottom:-1px}.chat-page .footer{height:auto;min-height:130px}:host-context(body.dark) .chat-page{background:#000}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type:
139
- // IonHeader,IonContent,
140
- FmChatHeaderArea, selector: "fm-chat-header-area", inputs: ["chat", "goBack"] }, { kind: "component", type: FmChatMesssageArea, selector: "fm-chat-message-area", inputs: ["chatId", "chat"] }, { kind: "component", type: FmChatModalInput, selector: "fm-chat-modal-input", inputs: ["chat", "message", "role"] }] }); }
141
- }
142
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChatPanelComponent, decorators: [{
143
- type: Component,
144
- args: [{ selector: 'fm-chat-panel', standalone: true, providers: [
145
- ModalController
146
- ], imports: [
147
- CommonModule,
148
- // IonHeader,IonContent,
149
- FmChatHeaderArea,
150
- FmChatMesssageArea,
151
- FmChatModalInput,
152
- ], template: "\r\n<!-- <ion-header></ion-header> -->\r\n<!-- <ion-content class=\"ion-padding\"> -->\r\n <div class=\"chat-page\" *ngIf=\"fmodeChat\">\r\n <div class=\"header\" [class.avatarHeader]=\"fmodeChat?.isAvatarShow\">\r\n <ng-content select=\"[chat-header]\"></ng-content>\r\n <fm-chat-header-area [goBack]=\"goBack\" *ngIf=\"showHeaderArea\" [chat]=\"fmodeChat\"></fm-chat-header-area>\r\n </div>\r\n \r\n <div class=\"content\" #contentComp>\r\n <ng-content select=\"[chat-content]\"></ng-content>\r\n <fm-chat-message-area *ngIf=\"showMessageArea\" [chat]=\"fmodeChat\"></fm-chat-message-area>\r\n </div>\r\n \r\n <div class=\"footer\">\r\n <ng-content select=\"[chat-footer]\"></ng-content>\r\n <fm-chat-modal-input *ngIf=\"showInputModal\" [chat]=\"fmodeChat\"></fm-chat-modal-input>\r\n </div>\r\n </div>\r\n\r\n<!-- </ion-content> -->", styles: [".chat-page{display:flex;flex-direction:column;height:100%;background:#f3f3f3}.chat-page .content,.chat-page .header,.chat-page .footer{justify-content:center;align-items:center}.chat-page .content{flex-grow:1;flex:1;overflow-y:auto}.chat-page .avatarHeader{height:35vh!important;overflow:hidden}.chat-page .header{height:44px;margin-bottom:-1px}.chat-page .footer{height:auto;min-height:130px}:host-context(body.dark) .chat-page{background:#000}\n"] }]
153
- }], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.ChatService }], propDecorators: { headerArea: [{
154
- type: ViewChild,
155
- args: [FmChatHeaderArea]
156
- }], goBack: [{
157
- type: Input
158
- }], onChatSaved: [{
159
- type: Input
160
- }], onChatInit: [{
161
- type: Input
162
- }], onMessage: [{
163
- type: Input
164
- }], onUserSend: [{
165
- type: Input
166
- }], onClose: [{
167
- type: Input
168
- }], mode: [{
169
- type: Input
170
- }], chatId: [{
171
- type: Input
172
- }], maskId: [{
173
- type: Input
174
- }], roleId: [{
175
- type: Input
176
- }], leftButtons: [{
177
- type: Input
178
- }], modelList: [{
179
- type: Input
180
- }], isDirect: [{
181
- type: Input
182
- }], showInputModal: [{
183
- type: Input
184
- }], showMessageArea: [{
185
- type: Input
186
- }], showHeaderArea: [{
187
- type: Input
188
- }], hideShare: [{
189
- type: Input
190
- }], hideModalSelect: [{
191
- type: Input
192
- }], hideInputPreview: [{
193
- type: Input
194
- }], contentComp: [{
195
- type: ViewChild,
196
- args: ["contentComp"]
197
- }] } });
198
- export async function openChatPanelModal(modalCtrl, options) {
199
- let modal = await modalCtrl.create({
200
- component: ChatPanelComponent,
201
- componentProps: {
202
- roleId: options.roleId,
203
- chatId: options.chatId,
204
- leftButtons: options.leftButtons,
205
- modelList: options.modelList,
206
- isDirect: options.isDirect,
207
- hideModalSelect: options.hideModalSelect,
208
- hideShare: options.hideShare,
209
- hideInputPreview: options.hideInputPreview,
210
- // 生命周期与事件
211
- mode: "modal",
212
- onChatInit: options?.onChatInit,
213
- onChatSaved: options?.onChatSaved,
214
- onMessage: options?.onMessage,
215
- onUserSend: options?.onUserSend,
216
- onClose: options?.onClose,
217
- goBack: () => { modalCtrl.dismiss(); }
218
- },
219
- cssClass: 'modal-chat-panel', // 可选的自定义样式类
220
- backdropDismiss: false, // 点击背景是否关闭模态框
221
- keyboardClose: false,
222
- htmlAttributes: options.htmlAttributes,
223
- });
224
- if (options?.fullscreen) {
225
- addModalChatPanelStyle();
226
- }
227
- await modal.present();
228
- return modal;
229
- }
230
- function addModalChatPanelStyle() {
231
- // 判断 head 是否已经包含目标样式
232
- const styleId = 'custom-modal-chat-panel-style';
233
- if (document.getElementById(styleId)) {
234
- return; // 已存在,不执行
235
- }
236
- // 创建 style 元素
237
- const style = document.createElement('style');
238
- style.id = styleId;
239
- style.textContent = `
240
- .modal-chat-panel {
241
- --width: 100%!important;
242
- --height: 100%!important;
243
- --max-width: 100%;
244
- --max-height: 100%;
245
- --border-radius: 0;
246
- }
247
- `;
248
- // 插入到 head
249
- document.head.appendChild(style);
250
- }
251
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC1wYW5lbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mbW9kZS1uZy9zcmMvbGliL2FpZ2MvY2hhdC9jaGF0LXBhbmVsL2NoYXQtcGFuZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm1vZGUtbmcvc3JjL2xpYi9haWdjL2NoYXQvY2hhdC1wYW5lbC9jaGF0LXBhbmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQWlCLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXpELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM5RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7QUFFNUQscUVBQXFFO0FBa0JyRSxNQUFNLE9BQU8sa0JBQWtCO0lBK0I3QixZQUNVLEtBQW9CLEVBQ3BCLE1BQWEsRUFDYixRQUFvQjtRQUZwQixVQUFLLEdBQUwsS0FBSyxDQUFlO1FBQ3BCLFdBQU0sR0FBTixNQUFNLENBQU87UUFDYixhQUFRLEdBQVIsUUFBUSxDQUFZO1FBdkJyQixTQUFJLEdBQWtCLE1BQU0sQ0FBQTtRQVM1QixhQUFRLEdBQVcsS0FBSyxDQUFDO1FBQ3pCLG1CQUFjLEdBQVcsSUFBSSxDQUFDO1FBQzlCLG9CQUFlLEdBQVcsSUFBSSxDQUFDO1FBQy9CLG1CQUFjLEdBQVcsSUFBSSxDQUFDO1FBRXZDLFdBQVc7UUFDRixjQUFTLEdBQVcsS0FBSyxDQUFDO1FBQzFCLG9CQUFlLEdBQVcsS0FBSyxDQUFDO1FBQ2hDLHFCQUFnQixHQUFXLEtBQUssQ0FBQztRQVF4QyxJQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBQyxDQUFDLENBQUMsRUFBQyxDQUFDO1lBQ3ZELFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QyxDQUFDO0lBQ0gsQ0FBQztJQUdEOztPQUVHO0lBQ0gsZUFBZTtRQUNiLDZCQUE2QjtRQUM3Qix5QkFBeUI7UUFDekIsSUFBSSxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUU7WUFDdkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUM3QywwREFBMEQ7WUFDMUQseUNBQXlDO1FBQzNDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsU0FBUztRQUNULElBQUksTUFBTSxHQUFHLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBQyxJQUFJLEVBQUUsQ0FBQztRQUNqRSxPQUFPO1FBQ1AsSUFBRyxJQUFJLENBQUMsV0FBVyxFQUFFLGFBQWEsRUFBQyxDQUFDO1lBQ2xDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDNUQsQ0FBQztJQUNILENBQUM7SUFFRCxlQUFlO0lBQ2YsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFHLElBQUksQ0FBQyxJQUFJLElBQUUsT0FBTyxFQUFDLENBQUM7WUFDckIsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2xCLENBQUM7UUFFRCxJQUFHLElBQUksQ0FBQyxJQUFJLElBQUUsTUFBTSxFQUFDLENBQUM7WUFFcEIsMEJBQTBCO1lBQzFCLGFBQWEsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFDLElBQUksRUFBQSxFQUFFO2dCQUM5RSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQ3JCLENBQUMsQ0FBQyxDQUFBO1FBQ0osQ0FBQztJQUVILENBQUM7SUFDRCxLQUFLLENBQUMsUUFBUSxDQUFDLElBQVM7UUFDdEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO1FBQzVCLElBQUksTUFBTSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ3RCLDZCQUE2QjtRQUM3QixjQUFjO1FBQ2QsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFBO1FBQ25ELElBQUcsSUFBSSxDQUFDLE1BQU0sRUFBQyxDQUFDLENBQUMsb0JBQW9CO1lBQ25DLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQzlDLENBQUM7UUFFRCxjQUFjO1FBQ2QsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksWUFBWSxJQUFJLElBQUksQ0FBQTtRQUNuRSxJQUFHLElBQUksQ0FBQyxNQUFNLEVBQUMsQ0FBQyxDQUFDLG9CQUFvQjtZQUNuQyxJQUFJLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQzdELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFBO1lBQ3JCLG9CQUFvQjtRQUN0QixDQUFDO1FBRUQsVUFBVTtRQUNWLElBQUcsSUFBSSxDQUFDLE1BQU0sRUFBQyxDQUFDO1lBQ2QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDcEQsSUFBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUMsQ0FBQyxDQUFDLGdCQUFnQjtnQkFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFDLEVBQUMsV0FBVyxFQUFDLEVBQUMsSUFBSSxFQUFDLFVBQVUsRUFBQyxFQUFDLENBQUMsQ0FBQTtZQUMxRSxDQUFDO1lBQ0QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEQsQ0FBQztRQUdELElBQUcsSUFBSSxDQUFDLFdBQVcsRUFBQyxDQUFDO1lBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUE7UUFDL0MsQ0FBQztRQUNELElBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLGNBQWMsQ0FBQyxHQUFDLENBQUMsQ0FBQyxFQUFDLENBQUM7WUFDdkQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7UUFDekMsQ0FBQzthQUFJLENBQUM7WUFDSixJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixHQUFHLEtBQUssQ0FBQztRQUMxQyxDQUFDO1FBQ0QsSUFBRyxJQUFJLENBQUMsU0FBUyxFQUFDLENBQUM7WUFDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQTtZQUN6QyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ2pELENBQUM7UUFDRCxJQUFHLElBQUksQ0FBQyxRQUFRLEVBQUMsQ0FBQztZQUNoQixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFBO1FBQ3pDLENBQUM7UUFDRCxJQUFHLElBQUksQ0FBQyxTQUFTLEVBQUMsQ0FBQztZQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFBO1FBQzNDLENBQUM7UUFDRCxJQUFHLElBQUksQ0FBQyxlQUFlLEVBQUMsQ0FBQztZQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFBO1FBQ3ZELENBQUM7UUFDRCxJQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBQyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFBO1FBQ3pELENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBRWhDLFdBQVc7UUFDWCxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsV0FBVztZQUM3QyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUztZQUN6QyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVTtZQUMzQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTztZQUNyQyxJQUFJLENBQUMsVUFBVSxJQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO1FBRWhELFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1lBQzdDLDBEQUEwRDtZQUMxRCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUE7UUFDeEIsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ1QsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFBO0lBQ3JCLENBQUM7SUFDRCxVQUFVO1FBQ1IsSUFBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFDLENBQUM7WUFDL0MsNEJBQTRCO1lBQzVCLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUE7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFDRCxRQUFRO0lBRVIsQ0FBQzsrR0ExSlUsa0JBQWtCO21HQUFsQixrQkFBa0IsOGlCQVhuQjtZQUNSLGVBQWU7U0FDaEIsc0VBV1UsZ0JBQWdCLDZJQy9CN0IsczhCQW9CdUIsd2ZERW5CLFlBQVk7Z0JBQ1osd0JBQXdCO2dCQUN4QixnQkFBZ0IsNEZBQ2hCLGtCQUFrQiw2RkFDbEIsZ0JBQWdCOzs0RkFHUCxrQkFBa0I7a0JBaEI5QixTQUFTOytCQUNFLGVBQWUsY0FHZCxJQUFJLGFBQ0w7d0JBQ1IsZUFBZTtxQkFDaEIsV0FDTzt3QkFDTixZQUFZO3dCQUNaLHdCQUF3Qjt3QkFDeEIsZ0JBQWdCO3dCQUNoQixrQkFBa0I7d0JBQ2xCLGdCQUFnQjtxQkFDakI7a0lBSTRCLFVBQVU7c0JBQXRDLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUNsQixNQUFNO3NCQUFkLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUlHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBYW9CLFdBQVc7c0JBQXBDLFNBQVM7dUJBQUMsYUFBYTs7QUF3STFCLE1BQU0sQ0FBQyxLQUFLLFVBQVUsa0JBQWtCLENBQUMsU0FBeUIsRUFBQyxPQUF3QjtJQUN6RixJQUFJLEtBQUssR0FBRyxNQUFNLFNBQVMsQ0FBQyxNQUFNLENBQUM7UUFDL0IsU0FBUyxFQUFFLGtCQUFrQjtRQUM3QixjQUFjLEVBQUU7WUFDWixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07WUFDdEIsTUFBTSxFQUFFLE9BQU8sQ0FBQyxNQUFNO1lBQ3RCLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVztZQUNoQyxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7WUFDNUIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO1lBQzFCLGVBQWUsRUFBRSxPQUFPLENBQUMsZUFBZTtZQUN4QyxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7WUFDNUIsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLGdCQUFnQjtZQUMxQyxVQUFVO1lBQ1YsSUFBSSxFQUFDLE9BQU87WUFDWixVQUFVLEVBQUMsT0FBTyxFQUFFLFVBQVU7WUFDOUIsV0FBVyxFQUFDLE9BQU8sRUFBRSxXQUFXO1lBQ2hDLFNBQVMsRUFBQyxPQUFPLEVBQUUsU0FBUztZQUM1QixVQUFVLEVBQUMsT0FBTyxFQUFFLFVBQVU7WUFDOUIsT0FBTyxFQUFDLE9BQU8sRUFBRSxPQUFPO1lBQ3hCLE1BQU0sRUFBQyxHQUFFLEVBQUUsR0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUEsQ0FBQSxDQUFDO1NBQ25DO1FBQ0QsUUFBUSxFQUFFLGtCQUFrQixFQUFFLFlBQVk7UUFDMUMsZUFBZSxFQUFFLEtBQUssRUFBRSxjQUFjO1FBQ3RDLGFBQWEsRUFBQyxLQUFLO1FBQ25CLGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYztLQUV6QyxDQUFDLENBQUM7SUFFSCxJQUFHLE9BQU8sRUFBRSxVQUFVLEVBQUMsQ0FBQztRQUN0QixzQkFBc0IsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxNQUFNLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUV0QixPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFFRCxTQUFTLHNCQUFzQjtJQUM3QixxQkFBcUI7SUFDckIsTUFBTSxPQUFPLEdBQUcsK0JBQStCLENBQUM7SUFDaEQsSUFBSSxRQUFRLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDbkMsT0FBTyxDQUFDLFVBQVU7SUFDdEIsQ0FBQztJQUVELGNBQWM7SUFDZCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLEtBQUssQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFDO0lBQ25CLEtBQUssQ0FBQyxXQUFXLEdBQUc7Ozs7Ozs7O0dBUW5CLENBQUM7SUFFRixXQUFXO0lBQ1gsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBGbW9kZUNoYXQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlLWZtYWkvc2VydmljZS1jaGF0JztcclxuaW1wb3J0IHsgQ2hhdFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlLWZtYWkvc2VydmljZS1jaGF0JztcclxuaW1wb3J0IHsgY29tYmluZUxhdGVzdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBGbUNoYXRIZWFkZXJBcmVhIH0gZnJvbSAnLi4vY2hhdC1oZWFkZXItYXJlYSc7XHJcbmltcG9ydCB7IEZtQ2hhdE1lc3NzYWdlQXJlYSB9IGZyb20gJy4uL2NoYXQtbWVzc2FnZS1hcmVhJztcclxuaW1wb3J0IHsgRm1DaGF0TW9kYWxJbnB1dCB9IGZyb20gJy4uL2NoYXQtbW9kYWwtaW5wdXQnO1xyXG5pbXBvcnQgeyBNb2RhbENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcclxuaW1wb3J0IHsgRm1vZGVDaGF0TWVzc2FnZSB9IGZyb20gJy4uLy4uLy4uL2NvcmUvYWdlbnQvY2hhdC9pbnRlcmZhY2UnO1xyXG4vLyBpbXBvcnQgeyBJb25Db250ZW50LCBJb25IZWFkZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZm0tY2hhdC1wYW5lbCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXQtcGFuZWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NoYXQtcGFuZWwuY29tcG9uZW50LnNjc3MnXSxcclxuICBzdGFuZGFsb25lOnRydWUsXHJcbiAgcHJvdmlkZXJzOltcclxuICAgIE1vZGFsQ29udHJvbGxlclxyXG4gIF0sXHJcbiAgaW1wb3J0czpbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICAvLyBJb25IZWFkZXIsSW9uQ29udGVudCxcclxuICAgIEZtQ2hhdEhlYWRlckFyZWEsXHJcbiAgICBGbUNoYXRNZXNzc2FnZUFyZWEsXHJcbiAgICBGbUNoYXRNb2RhbElucHV0LFxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIENoYXRQYW5lbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCxBZnRlclZpZXdJbml0IHtcclxuXHJcbiAgQFZpZXdDaGlsZChGbUNoYXRIZWFkZXJBcmVhKSBoZWFkZXJBcmVhOkZtQ2hhdEhlYWRlckFyZWFcclxuICBASW5wdXQoKSBnb0JhY2s6RnVuY3Rpb25cclxuXHJcbiAgQElucHV0KCkgb25DaGF0U2F2ZWQ6KGNoYXQ6Rm1vZGVDaGF0KT0+dm9pZFxyXG4gIEBJbnB1dCgpIG9uQ2hhdEluaXQ6KGNoYXQ6Rm1vZGVDaGF0KT0+dm9pZFxyXG4gIEBJbnB1dCgpIG9uTWVzc2FnZTooY2hhdDpGbW9kZUNoYXQsbWVzc2FnZTpGbW9kZUNoYXRNZXNzYWdlKT0+dm9pZFxyXG4gIEBJbnB1dCgpIG9uVXNlclNlbmQ6KGNoYXQ6Rm1vZGVDaGF0LG1lc3NhZ2U6Rm1vZGVDaGF0TWVzc2FnZSk9PmJvb2xlYW58UHJvbWlzZTxib29sZWFuPlxyXG4gIEBJbnB1dCgpIG9uQ2xvc2U6KGNoYXQ6Rm1vZGVDaGF0KT0+Ym9vbGVhbnxQcm9taXNlPGJvb2xlYW4+XHJcblxyXG4gIEBJbnB1dCgpIG1vZGU6J21vZGFsJ3wncGFnZScgPSAncGFnZSdcclxuICBASW5wdXQoKSBjaGF0SWQ6c3RyaW5nXHJcbiAgQElucHV0KCkgbWFza0lkOmFueVxyXG4gIEBJbnB1dCgpIHJvbGVJZDpzdHJpbmdcclxuICBmbW9kZUNoYXQ6Rm1vZGVDaGF0XHJcblxyXG4gIC8vIOe7p+aJv+iHquWumuS5iee7hOS7tu+8jOWunueOsOimhuebluaTjeS9nOWMuuaMiemSruWPiuaooeWei+WQjeensFxyXG4gIEBJbnB1dCgpIGxlZnRCdXR0b25zOmFueVtdfHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBtb2RlbExpc3Q6YW55W118dW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpIGlzRGlyZWN0OmJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzaG93SW5wdXRNb2RhbDpib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93TWVzc2FnZUFyZWE6Ym9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd0hlYWRlckFyZWE6Ym9vbGVhbiA9IHRydWU7XHJcblxyXG4gIC8vIOeVjOmdouWKn+iDveaYvuekuuaOp+WItlxyXG4gIEBJbnB1dCgpIGhpZGVTaGFyZTpib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaGlkZU1vZGFsU2VsZWN0OmJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBoaWRlSW5wdXRQcmV2aWV3OmJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByb3V0ZTpBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgcm91dGVyOlJvdXRlcixcclxuICAgIHByaXZhdGUgY2hhdFNlcnY6Q2hhdFNlcnZpY2UsXHJcbiAgKXtcclxuICAgIGlmKHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZT8uaW5kZXhPZihcImNoYXQvc2Vzc2lvblwiKT4tMSl7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnZGFyaycpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQFZpZXdDaGlsZChcImNvbnRlbnRDb21wXCIpIGNvbnRlbnRDb21wOkVsZW1lbnRSZWZcclxuICAvKipcclxuICAgKiDnm5HlkKxESVblj5jljJboh6rliqjmu5rliqjoh7PlupXpg6jvvIzmlLnkuLrmm7TmlrDlhoXlrrnljLrln5/nu4Tku7ZcclxuICAgKi9cclxuICBsaXN0ZW5EaXZDaGFuZ2UoKXtcclxuICAgIC8vIHJldHVybiAvLyDmmoLml7blhbPpl63vvIzliIfmjaLkuLrovpPlhaXml7blj5jljJboh7PlupXpg6hcclxuICAgIC8vIOWIm+W7uiBNdXRhdGlvbk9ic2VydmVyIOWunuS+i1xyXG4gICAgbGV0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoKCkgPT4ge1xyXG4gICAgICB0aGlzLmZtb2RlQ2hhdC5zY3JvbGxDb21wID0gdGhpcy5jb250ZW50Q29tcDtcclxuICAgICAgLy8gY29uc29sZS5sb2codGhpcy5mbW9kZUNoYXQuc2Nyb2xsQ29tcCx0aGlzLmNvbnRlbnRDb21wKVxyXG4gICAgICAvLyB0aGlzLnNjcm9sbFRvQm90dG9tKHRoaXMuY29udGVudENvbXApO1xyXG4gICAgfSk7XHJcbiAgICAvLyDphY3nva7op4Llr5/pgInpoblcclxuICAgIGxldCBjb25maWcgPSB7IGNoaWxkTGlzdDogdHJ1ZSwgc3VidHJlZTogdHJ1ZSwgYXR0cmlidXRlczp0cnVlIH07XHJcbiAgICAvLyDlvIDlp4vop4Llr59cclxuICAgIGlmKHRoaXMuY29udGVudENvbXA/Lm5hdGl2ZUVsZW1lbnQpe1xyXG4gICAgICBvYnNlcnZlci5vYnNlcnZlKHRoaXMuY29udGVudENvbXA/Lm5hdGl2ZUVsZW1lbnQsIGNvbmZpZyk7XHJcbiAgICB9XHJcbiAgfVxyXG4gXHJcbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZih0aGlzLm1vZGU9PVwibW9kYWxcIil7XHJcbiAgICAgIHRoaXMuaW5pdENoYXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZih0aGlzLm1vZGU9PVwicGFnZVwiKXtcclxuXHJcbiAgICAgIC8vIOWQjOatpei3r+eUseWPguaVsOS8mOWFiOe6p++8mue7hOS7tuWxnuaAp+S8oOWPgiA+IOi3r+eUseS8oOWPglxyXG4gICAgICBjb21iaW5lTGF0ZXN0KFt0aGlzLnJvdXRlLnBhcmFtcyx0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zXSkuc3Vic2NyaWJlKGFzeW5jIGRhdGE9PntcclxuICAgICAgICB0aGlzLmluaXRDaGF0KGRhdGEpXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcblxyXG4gIH1cclxuICBhc3luYyBpbml0Q2hhdChkYXRhPzphbnkpe1xyXG4gICAgY29uc29sZS5sb2coXCJDaGF0Q29tcCBPbkluaXRcIilcclxuICAgICAgbGV0IHBhcmFtcyA9IGRhdGE/LlswXVxyXG4gICAgICAvLyBjb25zb2xlLmxvZyhcInBhcmFtc1wiLGRhdGEpXHJcbiAgICAgIC8vIOS8muivneWFpeWPo++8jOWKoOi9veWOhuWPsua2iOaBr1xyXG4gICAgICB0aGlzLmNoYXRJZCA9IHBhcmFtcz8uY2hhdElkIHx8IHRoaXMuY2hhdElkIHx8IG51bGxcclxuICAgICAgaWYodGhpcy5jaGF0SWQpeyAvLyDlrZjlnKhJRO+8jOWImeWKoOi9veWOhuWPslNlc3Npb25cclxuICAgICAgICBhd2FpdCB0aGlzLmNoYXRTZXJ2LmluaXRDaGF0TWFwKHRoaXMuY2hhdElkKVxyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyDop5LoibLlhaXlj6PvvIzliqDovb3op5LoibLorr7nva5cclxuICAgICAgdGhpcy5yb2xlSWQgPSBwYXJhbXM/LnJvbGVJZCB8fCB0aGlzLnJvbGVJZCB8fCBcIjJEWEprUnNqWEtcIiB8fCBudWxsXHJcbiAgICAgIGlmKHRoaXMucm9sZUlkKXsgLy8g5a2Y5ZyoSUTvvIzliJnliqDovb3ljoblj7JTZXNzaW9uXHJcbiAgICAgICAgbGV0IGNoYXQgPSBhd2FpdCB0aGlzLmNoYXRTZXJ2LmNyZWF0ZU5ld1JvbGVDaGF0KHRoaXMucm9sZUlkKVxyXG4gICAgICAgIHRoaXMuZm1vZGVDaGF0ID0gY2hhdFxyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGNoYXQpXHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIOWKoOi9vUNoYXTnsbtcclxuICAgICAgaWYodGhpcy5jaGF0SWQpe1xyXG4gICAgICAgIHRoaXMuZm1vZGVDaGF0ID0gdGhpcy5jaGF0U2Vydi5jaGF0TWFwW3RoaXMuY2hhdElkXTtcclxuICAgICAgICBpZighdGhpcy5mbW9kZUNoYXQpeyAvLyDkuI3lrZjlnKhJRO+8jOWImei3s+WHuumdouWFt+mAieaLqVxyXG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWycvY2hhdC9wcm8vbWFzayddLHtxdWVyeVBhcmFtczp7dHlwZTpcImVtcGxveWVlXCJ9fSlcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5mbW9kZUNoYXQgPSB0aGlzLmNoYXRTZXJ2LmNoYXRNYXBbdGhpcy5jaGF0SWRdOyBcclxuICAgICAgfVxyXG5cclxuXHJcbiAgICAgIGlmKHRoaXMubGVmdEJ1dHRvbnMpe1xyXG4gICAgICAgIHRoaXMuZm1vZGVDaGF0LmxlZnRCdXR0b25zID0gdGhpcy5sZWZ0QnV0dG9uc1xyXG4gICAgICB9XHJcbiAgICAgIGlmKHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZT8uaW5kZXhPZihcImNoYXQvc2Vzc2lvblwiKT4tMSl7XHJcbiAgICAgICAgdGhpcy5mbW9kZUNoYXQuaXNWb2ljZUlucHV0TW9kZSA9IHRydWU7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIHRoaXMuZm1vZGVDaGF0LmlzVm9pY2VJbnB1dE1vZGUgPSBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBpZih0aGlzLm1vZGVsTGlzdCl7XHJcbiAgICAgICAgdGhpcy5mbW9kZUNoYXQubW9kZWxMaXN0ID0gdGhpcy5tb2RlbExpc3RcclxuICAgICAgICB0aGlzLmZtb2RlQ2hhdC5jdXJyZW50TW9kZWwgPSB0aGlzLm1vZGVsTGlzdFswXVxyXG4gICAgICB9XHJcbiAgICAgIGlmKHRoaXMuaXNEaXJlY3Qpe1xyXG4gICAgICAgIHRoaXMuZm1vZGVDaGF0LmlzRGlyZWN0ID0gdGhpcy5pc0RpcmVjdFxyXG4gICAgICB9XHJcbiAgICAgIGlmKHRoaXMuaGlkZVNoYXJlKXtcclxuICAgICAgICB0aGlzLmZtb2RlQ2hhdC5oaWRlU2hhcmUgPSB0aGlzLmhpZGVTaGFyZVxyXG4gICAgICB9XHJcbiAgICAgIGlmKHRoaXMuaGlkZU1vZGFsU2VsZWN0KXtcclxuICAgICAgICB0aGlzLmZtb2RlQ2hhdC5oaWRlTW9kYWxTZWxlY3QgPSB0aGlzLmhpZGVNb2RhbFNlbGVjdFxyXG4gICAgICB9XHJcbiAgICAgIGlmKHRoaXMuaGlkZUlucHV0UHJldmlldyl7XHJcbiAgICAgICAgdGhpcy5mbW9kZUNoYXQuaGlkZUlucHV0UHJldmlldyA9IHRoaXMuaGlkZUlucHV0UHJldmlld1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZm1vZGVDaGF0Lm1vZGUgPSB0aGlzLm1vZGU7XHJcblxyXG4gICAgICAvLyDms6jlhaXnlJ/lkb3lkajmnJ/lh73mlbBcclxuICAgICAgdGhpcy5mbW9kZUNoYXQub25DaGF0U2F2ZWQgPSB0aGlzLm9uQ2hhdFNhdmVkLFxyXG4gICAgICB0aGlzLmZtb2RlQ2hhdC5vbk1lc3NhZ2UgPSB0aGlzLm9uTWVzc2FnZSxcclxuICAgICAgdGhpcy5mbW9kZUNoYXQub25Vc2VyU2VuZCA9IHRoaXMub25Vc2VyU2VuZCxcclxuICAgICAgdGhpcy5mbW9kZUNoYXQub25DbG9zZSA9IHRoaXMub25DbG9zZSxcclxuICAgICAgdGhpcy5vbkNoYXRJbml0JiZ0aGlzLm9uQ2hhdEluaXQodGhpcy5mbW9kZUNoYXQpXHJcbiAgICAgIFxyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICB0aGlzLmZtb2RlQ2hhdC5zY3JvbGxDb21wID0gdGhpcy5jb250ZW50Q29tcDtcclxuICAgICAgICAvLyBjb25zb2xlLmxvZyh0aGlzLmZtb2RlQ2hhdC5zY3JvbGxDb21wLHRoaXMuY29udGVudENvbXApXHJcbiAgICAgICAgdGhpcy5saXN0ZW5EaXZDaGFuZ2UoKVxyXG4gICAgICB9LCAxMDAwKTtcclxuICAgICAgdGhpcy5zYXlXZWxjb21lKClcclxuICB9XHJcbiAgc2F5V2VsY29tZSgpe1xyXG4gICAgaWYodGhpcy5mbW9kZUNoYXQudm9pY2VDb25maWc/LndlbGNvbWU/LmVuYWJsZWQpe1xyXG4gICAgICAvLyBjb25zb2xlLmxvZyhcInNheVdlbGNvbWVcIilcclxuICAgICAgdGhpcy5mbW9kZUNoYXQud2VsY29tZSgpXHJcbiAgICB9XHJcbiAgfVxyXG4gIGxvYWRNYXNrKCl7XHJcblxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDaGF0UGFuZWxPcHRpb25ze1xyXG4gICAgcm9sZUlkOiBzdHJpbmcsIC8vIOinkuiJskF2YXRhclJvbGUub2JqZWN0SWRcclxuICAgIGNoYXRJZD86IHN0cmluZywgLy8g57uY55S7Q2hhdFNlc3Npb24ub2JqZWN0SWRcclxuICAgIHBpZD86IHN0cmluZywgLy8g6Ieq5LygUGVyc29uLm9iamVjdElkXHJcbiAgICBsZWZ0QnV0dG9ucz86IGFueVtdLFxyXG4gICAgbW9kZWxMaXN0PzogYW55W10sXHJcbiAgICBpc0RpcmVjdD86IGJvb2xlYW4sXHJcbiAgICBoaWRlTW9kYWxTZWxlY3Q/OiBib29sZWFuLFxyXG4gICAgaGlkZVNoYXJlPzogYm9vbGVhbiwgLy8g5piv5ZCm6ZqQ6JeP77ya5YiG5Lqr5oyJ6ZKuXHJcbiAgICBoaWRlSW5wdXRQcmV2aWV3PzogYm9vbGVhbiwgLy8g5piv5ZCm6ZqQ6JeP77ya6L6T5YWl6aKE6KeIXHJcbiAgICBodG1sQXR0cmlidXRlcz86YW55LFxyXG4gICAgZnVsbHNjcmVlbj86Ym9vbGVhbixcclxuICAgIG9uQ2hhdEluaXQ/OihjaGF0OkZtb2RlQ2hhdCk9PnZvaWQgLy8gRm1vZGVDaGF05Yid5aeL5YyWXHJcbiAgICBvbkNoYXRTYXZlZD86KGNoYXQ6Rm1vZGVDaGF0KT0+dm9pZCAvLyBGbW9kZUNoYXTliJ3lp4vljJZcclxuICAgIG9uVXNlclNlbmQ/OihjaGF0OkZtb2RlQ2hhdCxtZXNzYWdlOkZtb2RlQ2hhdE1lc3NhZ2UpPT5ib29sZWFufFByb21pc2U8Ym9vbGVhbj4gLy8g55So5oi35Y+R6YCB5raI5oGvXHJcbiAgICAvLyBvblVzZXJJbnB1dD86KGNoYXQ6Rm1vZGVDaGF0LG1lc3NhZ2U6Rm1vZGVDaGF0TWVzc2FnZSk9PmJvb2xlYW58UHJvbWlzZTxib29sZWFuPiAvLyDnlKjmiLfovpPlhaXkv6Hmga9cclxuICAgIG9uTWVzc2FnZT86KGNoYXQ6Rm1vZGVDaGF0LG1lc3NhZ2U6Rm1vZGVDaGF0TWVzc2FnZSk9PnZvaWQgLy8g5paw5raI5oGv5o6l5pS25a6M5oiQXHJcbiAgICBvbkNsb3NlPzooY2hhdDpGbW9kZUNoYXQpPT5ib29sZWFufFByb21pc2U8Ym9vbGVhbj4gLy8g57uT5p2f5b2T5YmN5Lya6K+dXHJcbn1cclxuXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBvcGVuQ2hhdFBhbmVsTW9kYWwobW9kYWxDdHJsOk1vZGFsQ29udHJvbGxlcixvcHRpb25zOkNoYXRQYW5lbE9wdGlvbnMpe1xyXG4gIGxldCBtb2RhbCA9IGF3YWl0IG1vZGFsQ3RybC5jcmVhdGUoe1xyXG4gICAgICBjb21wb25lbnQ6IENoYXRQYW5lbENvbXBvbmVudCxcclxuICAgICAgY29tcG9uZW50UHJvcHM6IHtcclxuICAgICAgICAgIHJvbGVJZDogb3B0aW9ucy5yb2xlSWQsXHJcbiAgICAgICAgICBjaGF0SWQ6IG9wdGlvbnMuY2hhdElkLFxyXG4gICAgICAgICAgbGVmdEJ1dHRvbnM6IG9wdGlvbnMubGVmdEJ1dHRvbnMsXHJcbiAgICAgICAgICBtb2RlbExpc3Q6IG9wdGlvbnMubW9kZWxMaXN0LFxyXG4gICAgICAgICAgaXNEaXJlY3Q6IG9wdGlvbnMuaXNEaXJlY3QsXHJcbiAgICAgICAgICBoaWRlTW9kYWxTZWxlY3Q6IG9wdGlvbnMuaGlkZU1vZGFsU2VsZWN0LFxyXG4gICAgICAgICAgaGlkZVNoYXJlOiBvcHRpb25zLmhpZGVTaGFyZSxcclxuICAgICAgICAgIGhpZGVJbnB1dFByZXZpZXc6IG9wdGlvbnMuaGlkZUlucHV0UHJldmlldyxcclxuICAgICAgICAgIC8vIOeUn+WRveWRqOacn+S4juS6i+S7tlxyXG4gICAgICAgICAgbW9kZTpcIm1vZGFsXCIsXHJcbiAgICAgICAgICBvbkNoYXRJbml0Om9wdGlvbnM/Lm9uQ2hhdEluaXQsXHJcbiAgICAgICAgICBvbkNoYXRTYXZlZDpvcHRpb25zPy5vbkNoYXRTYXZlZCxcclxuICAgICAgICAgIG9uTWVzc2FnZTpvcHRpb25zPy5vbk1lc3NhZ2UsXHJcbiAgICAgICAgICBvblVzZXJTZW5kOm9wdGlvbnM/Lm9uVXNlclNlbmQsXHJcbiAgICAgICAgICBvbkNsb3NlOm9wdGlvbnM/Lm9uQ2xvc2UsXHJcbiAgICAgICAgICBnb0JhY2s6KCk9Pnttb2RhbEN0cmwuZGlzbWlzcygpfVxyXG4gICAgICB9LFxyXG4gICAgICBjc3NDbGFzczogJ21vZGFsLWNoYXQtcGFuZWwnLCAvLyDlj6/pgInnmoToh6rlrprkuYnmoLflvI/nsbtcclxuICAgICAgYmFja2Ryb3BEaXNtaXNzOiBmYWxzZSwgLy8g54K55Ye76IOM5pmv5piv5ZCm5YWz6Zet5qih5oCB5qGGXHJcbiAgICAgIGtleWJvYXJkQ2xvc2U6ZmFsc2UsXHJcbiAgICAgIGh0bWxBdHRyaWJ1dGVzOiBvcHRpb25zLmh0bWxBdHRyaWJ1dGVzLFxyXG5cclxuICB9KTtcclxuXHJcbiAgaWYob3B0aW9ucz8uZnVsbHNjcmVlbil7XHJcbiAgICBhZGRNb2RhbENoYXRQYW5lbFN0eWxlKCk7XHJcbiAgfVxyXG5cclxuICBhd2FpdCBtb2RhbC5wcmVzZW50KCk7XHJcblxyXG4gIHJldHVybiBtb2RhbDtcclxufVxyXG5cclxuZnVuY3Rpb24gYWRkTW9kYWxDaGF0UGFuZWxTdHlsZSgpIHtcclxuICAvLyDliKTmlq0gaGVhZCDmmK/lkKblt7Lnu4/ljIXlkKvnm67moIfmoLflvI9cclxuICBjb25zdCBzdHlsZUlkID0gJ2N1c3RvbS1tb2RhbC1jaGF0LXBhbmVsLXN0eWxlJztcclxuICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoc3R5bGVJZCkpIHtcclxuICAgICAgcmV0dXJuOyAvLyDlt7LlrZjlnKjvvIzkuI3miafooYxcclxuICB9XHJcblxyXG4gIC8vIOWIm+W7uiBzdHlsZSDlhYPntKBcclxuICBjb25zdCBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XHJcbiAgc3R5bGUuaWQgPSBzdHlsZUlkO1xyXG4gIHN0eWxlLnRleHRDb250ZW50ID0gYFxyXG4gICAgLm1vZGFsLWNoYXQtcGFuZWwge1xyXG4gICAgICAtLXdpZHRoOiAxMDAlIWltcG9ydGFudDtcclxuICAgICAgLS1oZWlnaHQ6IDEwMCUhaW1wb3J0YW50O1xyXG4gICAgICAtLW1heC13aWR0aDogMTAwJTtcclxuICAgICAgLS1tYXgtaGVpZ2h0OiAxMDAlO1xyXG4gICAgICAtLWJvcmRlci1yYWRpdXM6IDA7XHJcbiAgICB9XHJcbiAgYDtcclxuXHJcbiAgLy8g5o+S5YWl5YiwIGhlYWRcclxuICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHN0eWxlKTtcclxufSIsIlxyXG48IS0tIDxpb24taGVhZGVyPjwvaW9uLWhlYWRlcj4gLS0+XHJcbjwhLS0gPGlvbi1jb250ZW50IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj4gLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY2hhdC1wYWdlXCIgKm5nSWY9XCJmbW9kZUNoYXRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCIgW2NsYXNzLmF2YXRhckhlYWRlcl09XCJmbW9kZUNoYXQ/LmlzQXZhdGFyU2hvd1wiPlxyXG4gICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbY2hhdC1oZWFkZXJdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgICAgICAgICA8Zm0tY2hhdC1oZWFkZXItYXJlYSBbZ29CYWNrXT1cImdvQmFja1wiICpuZ0lmPVwic2hvd0hlYWRlckFyZWFcIiBbY2hhdF09XCJmbW9kZUNoYXRcIj48L2ZtLWNoYXQtaGVhZGVyLWFyZWE+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIiAjY29udGVudENvbXA+XHJcbiAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltjaGF0LWNvbnRlbnRdXCI+PC9uZy1jb250ZW50PlxyXG4gICAgICAgICAgICA8Zm0tY2hhdC1tZXNzYWdlLWFyZWEgKm5nSWY9XCJzaG93TWVzc2FnZUFyZWFcIiBbY2hhdF09XCJmbW9kZUNoYXRcIj48L2ZtLWNoYXQtbWVzc2FnZS1hcmVhPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIFxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXJcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2NoYXQtZm9vdGVyXVwiPjwvbmctY29udGVudD5cclxuICAgICAgICAgICAgPGZtLWNoYXQtbW9kYWwtaW5wdXQgKm5nSWY9XCJzaG93SW5wdXRNb2RhbFwiIFtjaGF0XT1cImZtb2RlQ2hhdFwiPjwvZm0tY2hhdC1tb2RhbC1pbnB1dD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuPCEtLSA8L2lvbi1jb250ZW50PiAtLT4iXX0=
8
+ import{CommonModule}from"@angular/common";import{Component,ElementRef,Input,ViewChild}from"@angular/core";import{ActivatedRoute,Router}from"@angular/router";import{ChatService}from"../../service-fmai/service-chat";import{combineLatest}from"rxjs";import{FmChatHeaderArea}from"../chat-header-area";import{FmChatMesssageArea}from"../chat-message-area";import{FmChatModalInput}from"../chat-modal-input";import{ModalController}from"@ionic/angular/standalone";import*as i0 from"@angular/core";import*as i1 from"@angular/router";import*as i2 from"../../service-fmai/service-chat";import*as i3 from"@angular/common";export class ChatPanelComponent{constructor(e,t,a){this.route=e,this.router=t,this.chatServ=a,this.mode="page",this.isDirect=!1,this.showInputModal=!0,this.showMessageArea=!0,this.showHeaderArea=!0,this.hideShare=!1,this.hideModalSelect=!1,this.hideInputPreview=!1,window.location.pathname?.indexOf("chat/session")>-1&&document.body.classList.add("dark")}listenDivChange(){let e=new MutationObserver((()=>{this.fmodeChat.scrollComp=this.contentComp})),t={childList:!0,subtree:!0,attributes:!0};this.contentComp?.nativeElement&&e.observe(this.contentComp?.nativeElement,t)}ngAfterViewInit(){}ngOnInit(){"modal"==this.mode&&this.initChat(),"page"==this.mode&&combineLatest([this.route.params,this.route.queryParams]).subscribe((async e=>{this.initChat(e)}))}async initChat(e){console.log("ChatComp OnInit");let t=e?.[0];if(this.chatId=t?.chatId||this.chatId||null,this.chatId&&await this.chatServ.initChatMap(this.chatId),this.roleId=t?.roleId||this.roleId||"2DXJkRsjXK",this.roleId){let e=await this.chatServ.createNewRoleChat(this.roleId);this.fmodeChat=e}this.chatId&&(this.fmodeChat=this.chatServ.chatMap[this.chatId],this.fmodeChat||this.router.navigate(["/chat/pro/mask"],{queryParams:{type:"employee"}}),this.fmodeChat=this.chatServ.chatMap[this.chatId]),this.leftButtons&&(this.fmodeChat.leftButtons=this.leftButtons),window.location.pathname?.indexOf("chat/session")>-1?this.fmodeChat.isVoiceInputMode=!0:this.fmodeChat.isVoiceInputMode=!1,this.modelList&&(this.fmodeChat.modelList=this.modelList,this.fmodeChat.currentModel=this.modelList[0]),this.isDirect&&(this.fmodeChat.isDirect=this.isDirect),this.hideShare&&(this.fmodeChat.hideShare=this.hideShare),this.hideModalSelect&&(this.fmodeChat.hideModalSelect=this.hideModalSelect),this.hideInputPreview&&(this.fmodeChat.hideInputPreview=this.hideInputPreview),this.fmodeChat.mode=this.mode,this.fmodeChat.onChatSaved=this.onChatSaved,this.fmodeChat.onMessage=this.onMessage,this.fmodeChat.onUserSend=this.onUserSend,this.fmodeChat.onClose=this.onClose,this.onChatInit&&this.onChatInit(this.fmodeChat),setTimeout((()=>{this.fmodeChat.scrollComp=this.contentComp,this.listenDivChange()}),1e3),this.sayWelcome()}sayWelcome(){this.fmodeChat.voiceConfig?.welcome?.enabled&&this.fmodeChat.welcome()}loadMask(){}static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:ChatPanelComponent,deps:[{token:i1.ActivatedRoute},{token:i1.Router},{token:i2.ChatService}],target:i0.ɵɵFactoryTarget.Component})}static{this.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"17.3.12",type:ChatPanelComponent,isStandalone:!0,selector:"fm-chat-panel",inputs:{goBack:"goBack",onChatSaved:"onChatSaved",onChatInit:"onChatInit",onMessage:"onMessage",onUserSend:"onUserSend",onClose:"onClose",mode:"mode",chatId:"chatId",maskId:"maskId",roleId:"roleId",leftButtons:"leftButtons",modelList:"modelList",isDirect:"isDirect",showInputModal:"showInputModal",showMessageArea:"showMessageArea",showHeaderArea:"showHeaderArea",hideShare:"hideShare",hideModalSelect:"hideModalSelect",hideInputPreview:"hideInputPreview"},providers:[ModalController],viewQueries:[{propertyName:"headerArea",first:!0,predicate:FmChatHeaderArea,descendants:!0},{propertyName:"contentComp",first:!0,predicate:["contentComp"],descendants:!0}],ngImport:i0,template:'\n\x3c!-- <ion-header></ion-header> --\x3e\n\x3c!-- <ion-content class="ion-padding"> --\x3e\n <div class="chat-page" *ngIf="fmodeChat">\n <div class="header" [class.avatarHeader]="fmodeChat?.isAvatarShow">\n <ng-content select="[chat-header]"></ng-content>\n <fm-chat-header-area [goBack]="goBack" *ngIf="showHeaderArea" [chat]="fmodeChat"></fm-chat-header-area>\n </div>\n \n <div class="content" #contentComp>\n <ng-content select="[chat-content]"></ng-content>\n <fm-chat-message-area *ngIf="showMessageArea" [chat]="fmodeChat"></fm-chat-message-area>\n </div>\n \n <div class="footer">\n <ng-content select="[chat-footer]"></ng-content>\n <fm-chat-modal-input *ngIf="showInputModal" [chat]="fmodeChat"></fm-chat-modal-input>\n </div>\n </div>\n\n\x3c!-- </ion-content> --\x3e',styles:[".chat-page{display:flex;flex-direction:column;height:100%;background:#f3f3f3}.chat-page .content,.chat-page .header,.chat-page .footer{justify-content:center;align-items:center}.chat-page .content{flex-grow:1;flex:1;overflow-y:auto}.chat-page .avatarHeader{height:35vh!important;overflow:hidden}.chat-page .header{height:44px;margin-bottom:-1px}.chat-page .footer{height:auto;min-height:130px}:host-context(body.dark) .chat-page{background:#000}\n"],dependencies:[{kind:"ngmodule",type:CommonModule},{kind:"directive",type:i3.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{kind:"component",type:FmChatHeaderArea,selector:"fm-chat-header-area",inputs:["chat","goBack"]},{kind:"component",type:FmChatMesssageArea,selector:"fm-chat-message-area",inputs:["chatId","chat"]},{kind:"component",type:FmChatModalInput,selector:"fm-chat-modal-input",inputs:["chat","message","role"]}]})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:ChatPanelComponent,decorators:[{type:Component,args:[{selector:"fm-chat-panel",standalone:!0,providers:[ModalController],imports:[CommonModule,FmChatHeaderArea,FmChatMesssageArea,FmChatModalInput],template:'\n\x3c!-- <ion-header></ion-header> --\x3e\n\x3c!-- <ion-content class="ion-padding"> --\x3e\n <div class="chat-page" *ngIf="fmodeChat">\n <div class="header" [class.avatarHeader]="fmodeChat?.isAvatarShow">\n <ng-content select="[chat-header]"></ng-content>\n <fm-chat-header-area [goBack]="goBack" *ngIf="showHeaderArea" [chat]="fmodeChat"></fm-chat-header-area>\n </div>\n \n <div class="content" #contentComp>\n <ng-content select="[chat-content]"></ng-content>\n <fm-chat-message-area *ngIf="showMessageArea" [chat]="fmodeChat"></fm-chat-message-area>\n </div>\n \n <div class="footer">\n <ng-content select="[chat-footer]"></ng-content>\n <fm-chat-modal-input *ngIf="showInputModal" [chat]="fmodeChat"></fm-chat-modal-input>\n </div>\n </div>\n\n\x3c!-- </ion-content> --\x3e',styles:[".chat-page{display:flex;flex-direction:column;height:100%;background:#f3f3f3}.chat-page .content,.chat-page .header,.chat-page .footer{justify-content:center;align-items:center}.chat-page .content{flex-grow:1;flex:1;overflow-y:auto}.chat-page .avatarHeader{height:35vh!important;overflow:hidden}.chat-page .header{height:44px;margin-bottom:-1px}.chat-page .footer{height:auto;min-height:130px}:host-context(body.dark) .chat-page{background:#000}\n"]}]}],ctorParameters:()=>[{type:i1.ActivatedRoute},{type:i1.Router},{type:i2.ChatService}],propDecorators:{headerArea:[{type:ViewChild,args:[FmChatHeaderArea]}],goBack:[{type:Input}],onChatSaved:[{type:Input}],onChatInit:[{type:Input}],onMessage:[{type:Input}],onUserSend:[{type:Input}],onClose:[{type:Input}],mode:[{type:Input}],chatId:[{type:Input}],maskId:[{type:Input}],roleId:[{type:Input}],leftButtons:[{type:Input}],modelList:[{type:Input}],isDirect:[{type:Input}],showInputModal:[{type:Input}],showMessageArea:[{type:Input}],showHeaderArea:[{type:Input}],hideShare:[{type:Input}],hideModalSelect:[{type:Input}],hideInputPreview:[{type:Input}],contentComp:[{type:ViewChild,args:["contentComp"]}]}});export async function openChatPanelModal(e,t){let a=await e.create({component:ChatPanelComponent,componentProps:{roleId:t.roleId,chatId:t.chatId,leftButtons:t.leftButtons,modelList:t.modelList,isDirect:t.isDirect,hideModalSelect:t.hideModalSelect,hideShare:t.hideShare,hideInputPreview:t.hideInputPreview,mode:"modal",onChatInit:t?.onChatInit,onChatSaved:t?.onChatSaved,onMessage:t?.onMessage,onUserSend:t?.onUserSend,onClose:t?.onClose,goBack:()=>{e.dismiss()}},cssClass:"modal-chat-panel",backdropDismiss:!1,keyboardClose:!1,htmlAttributes:t.htmlAttributes});return t?.fullscreen&&addModalChatPanelStyle(),await a.present(),a}function addModalChatPanelStyle(){const e="custom-modal-chat-panel-style";if(document.getElementById(e))return;const t=document.createElement("style");t.id=e,t.textContent="\n .modal-chat-panel {\n --width: 100%!important;\n --height: 100%!important;\n --max-width: 100%;\n --max-height: 100%;\n --border-radius: 0;\n }\n ",document.head.appendChild(t)}
9
+ var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9haWdjL2NoYXQvY2hhdC1wYW5lbC9jaGF0LXBhbmVsLmNvbXBvbmVudC5tanM=`
10
+
@@ -1,83 +1,10 @@
1
- import { Component, Input } from '@angular/core';
2
- import { FmodeChat } from '../../service-fmai/service-chat';
3
- import * as Parse from 'parse';
4
- import { IonButton, IonIcon, IonLabel, IonModal, IonSegment
5
- // ,ModalController
6
- } from '@ionic/angular/standalone';
7
- import { CommonModule } from '@angular/common';
8
- import { FormsModule, ReactiveFormsModule } from '@angular/forms';
9
- import { CrossService } from '../../../platform/cross.service';
10
- import { addIcons } from 'ionicons';
11
- import { chevronForward } from 'ionicons/icons';
12
- import * as i0 from "@angular/core";
13
- import * as i1 from "../../../platform/cross.service";
14
- import * as i2 from "@angular/common";
15
- addIcons({ chevronForward });
16
- export class CompRolePromptComponent {
17
- constructor(cross) {
18
- this.cross = cross;
19
- this.role = ``;
20
- this.showModal = false;
21
- this.cateIndex = 0;
22
- this.isDarkMode = false;
23
- this.company = "E4KpGvTEto"; // 飞码AI
24
- }
25
- ngOnInit() {
26
- this.getChatPrompt();
27
- if (document.body.classList.contains("dark")) {
28
- this.isDarkMode = true;
29
- }
30
- }
31
- applyPrompt(message) {
32
- this.chat.userInput = message;
33
- this.chat.isVoiceInputMode = false;
34
- this.chat.focusUserInput();
35
- if (this.cross?.navMenuType == 'mobile') {
36
- // this.modalController.dismiss();
37
- this.chat.isPromptModalOpen = false;
38
- }
39
- }
40
- async getChatPrompt() {
41
- if (this.chat.promptList?.length)
42
- return; // 已设置则无需再次获取
43
- let query = new Parse.Query('ChatPrompt');
44
- query.notEqualTo('isDeleted', true);
45
- // query.equalTo('company', this.company)
46
- query.equalTo('role', this.role);
47
- query.include('role');
48
- let promptData = await query.find();
49
- if (!promptData?.length)
50
- return;
51
- console.log("this.chat.promptList?.length", this.chat.promptList);
52
- if (this.chat.promptList?.length)
53
- return; // 已设置则无需再次获取
54
- this.chat.promptList = promptData;
55
- this.chat.promptList.forEach(item => {
56
- let cate = item.get('role').get('promptCates').filter(cate => cate.name == item.get('cate'));
57
- item.img = cate[0].img;
58
- });
59
- console.log(this.chat.promptList);
60
- }
61
- checkCate(index) {
62
- this.cateIndex = index;
63
- }
64
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CompRolePromptComponent, deps: [{ token: i1.CrossService }], target: i0.ɵɵFactoryTarget.Component }); }
65
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CompRolePromptComponent, isStandalone: true, selector: "app-comp-role-prompt", inputs: { chat: "chat", role: "role" }, providers: [
66
- // ModalController,
67
- ], ngImport: i0, template: "<ng-container *ngIf=\"chat?.messageList?.length<4 && chat?.isPromptMessageAreaShow && !chat?.userInput\">\r\n <!-- PC\u7AEF\u6837\u5F0F -->\r\n <div class=\"prompt\" *ngIf=\"cross?.navMenuType!='mobile'\">\r\n <ng-container *ngFor=\"let content of chat?.promptList\">\r\n <div class=\"prompt_cate\">\r\n <div class=\"cate_info\">\r\n <div>\r\n <img [src]=\"content.img\" alt=\"\">\r\n </div>\r\n <div class=\"cate_name\">\r\n {{content.get('cate')}}\r\n </div>\r\n </div>\r\n <ng-container *ngFor=\"let message of content.get('messageList')\">\r\n <div class=\"message\" (click)=\"applyPrompt(message)\">\r\n {{message}}\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <!-- \u624B\u673A\u7AEF\u6837\u5F0F -->\r\n <ng-container *ngIf=\"cross?.navMenuType=='mobile'\">\r\n <div class=\"prompt_mobile\">\r\n <ng-container *ngFor=\"let content of chat?.promptList\">\r\n <div class=\"prompt_cate\">\r\n <div class=\"cate_info\">\r\n <div>\r\n <img [src]=\"content.img\" alt=\"\">\r\n </div>\r\n <div class=\"cate_name\">\r\n {{content.get('cate')}}\r\n </div>\r\n </div>\r\n <ng-container *ngFor=\"let message of content.get('messageList');let idx = index\">\r\n <div *ngIf=\"idx<3\" class=\"message\" (click)=\"applyPrompt(message)\">\r\n {{message}}\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"view_more\" *ngIf=\"chat?.promptList?.length\">\r\n <button (click)=\"chat.isPromptModalOpen=true\" expand=\"block\">\u67E5\u770B\u66F4\u591A<ion-icon name=\"chevron-forward\"></ion-icon></button>\r\n </div>\r\n </ng-container>\r\n</ng-container>\r\n\r\n <ion-modal [isOpen]=\"chat.isPromptModalOpen\" (willDismiss)=\"chat.isPromptModalOpen=false\" [initialBreakpoint]=\"1\" [breakpoints]=\"[0, 1]\">\r\n <ng-template>\r\n <div class=\"block\">\r\n <ion-label>\u8BDD\u9898\u7075\u611F</ion-label>\r\n <div class=\"block_cate\">\r\n <!-- <ion-segment [(ngModel)]=\"cateIndex\">\r\n <ng-container *ngFor=\"let prompt of chat?.promptList;let i = index\">\r\n <ion-segment-button value=\"i\">\r\n <ion-label>{{prompt?.get(\"cate\")}}</ion-label>\r\n </ion-segment-button>\r\n </ng-container>\r\n </ion-segment> -->\r\n <ng-container *ngFor=\"let prompt of chat?.promptList;let i = index\">\r\n <ion-button [color]=\"i==cateIndex?'secondary':'light'\" (click)=\"checkCate(i)\">{{prompt?.get(\"cate\")}}</ion-button>\r\n <!-- <div [class]=\"i==cateIndex?'active_cate':''\" (click)=\"checkCate(i)\">{{prompt?.get(\"cate\")}}</div> -->\r\n </ng-container>\r\n </div>\r\n <div class=\"message_mobile\">\r\n <ng-container *ngFor=\"let message of chat?.promptList[cateIndex]?.get('messageList')\">\r\n <div class=\"message-box\" [style.backgroundColor]=\"isDarkMode?'rgba(255,255,255,0.2)':'white'\" [style.color]=\"isDarkMode?'rgba(255,255,255,0.5)':'black'\" (click)=\"applyPrompt(message)\">{{message}}</div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ion-modal>", styles: [":host-context(body.dark) .prompt_cate .message{background:#fff3;border:1px solid #333;box-shadow:0 2px 8px #333;color:#ffffff80}:host-context(body.dark) .cate_info{color:#fff}:host-context(body.dark) ion-modal .block h4{color:#fff!important}:host-context(body.dark) ion-modal .block .message-box{color:#ccc!important;background-color:#333!important}:host-context(body.dark) .message-box{color:#ccc!important;background-color:#333!important}.prompt{color:#000;display:flex;justify-content:space-between;align-items:flex-start}.prompt .prompt_cate{flex:1;height:inherit;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-direction:column;display:flex;justify-content:center}.prompt .prompt_cate .cate_info{font-size:1.5em;font-weight:700;display:flex;justify-content:center;flex-direction:column;align-items:center}.prompt .prompt_cate .cate_info div img{border-radius:15px;width:58px;height:58px}.prompt .prompt_cate .cate_info .cate_name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.prompt .prompt_cate .message{padding:1em;margin:1em;background:#fff;border:1px solid #eef2f2;border-radius:12px;box-shadow:0 2px 8px #f5f6f8;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}@media screen and (max-width: 390.4px){.prompt .prompt_cate .message{width:100px;height:64px;padding:unset;margin:.8em;background:#fff;border:1px solid #eef2f2;border-radius:12px;box-shadow:0 2px 8px #f5f6f8;cursor:pointer;overflow:hidden;white-space:pre-wrap;text-overflow:ellipsis}}.prompt_mobile{color:#000;display:flex;justify-content:space-between;align-items:flex-start}.prompt_mobile .prompt_cate{flex:1;height:inherit}.prompt_mobile .prompt_cate .cate_info{display:flex;justify-content:center;align-items:center;font-size:1.2em}.prompt_mobile .prompt_cate .cate_info div img{width:48px;height:48px}.prompt_mobile .prompt_cate .cate_info .cate_name{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;overflow:hidden;text-overflow:ellipsis;margin-top:2vw}.prompt_mobile .prompt_cate .message{min-height:48px;padding:0 2vw;margin:4vw 1vw;background:#fff;border:1px solid #eef2f2;border-radius:12px;box-shadow:0 2px 8px #f5f6f8;cursor:pointer;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;text-overflow:ellipsis}.view_more{text-align:center;color:#999;margin:4vw 0}.view_more>button{background-color:transparent}.block{width:100%;height:80vh;padding:2vw}.block .block_cate{display:flex;justify-content:space-evenly}.block .message_mobile{overflow-y:auto;height:65vh;color:#000}.message-box{background-color:#fff;text-align:center;padding:8px 0;margin:8px 0;border-radius:4px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}ion-modal{--height: auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: IonModal, selector: "ion-modal" }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
68
- }
69
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CompRolePromptComponent, decorators: [{
70
- type: Component,
71
- args: [{ selector: 'app-comp-role-prompt', standalone: true, imports: [
72
- CommonModule, FormsModule, ReactiveFormsModule,
73
- IonModal, IonButton, IonSegment, IonLabel,
74
- IonIcon
75
- ], providers: [
76
- // ModalController,
77
- ], template: "<ng-container *ngIf=\"chat?.messageList?.length<4 && chat?.isPromptMessageAreaShow && !chat?.userInput\">\r\n <!-- PC\u7AEF\u6837\u5F0F -->\r\n <div class=\"prompt\" *ngIf=\"cross?.navMenuType!='mobile'\">\r\n <ng-container *ngFor=\"let content of chat?.promptList\">\r\n <div class=\"prompt_cate\">\r\n <div class=\"cate_info\">\r\n <div>\r\n <img [src]=\"content.img\" alt=\"\">\r\n </div>\r\n <div class=\"cate_name\">\r\n {{content.get('cate')}}\r\n </div>\r\n </div>\r\n <ng-container *ngFor=\"let message of content.get('messageList')\">\r\n <div class=\"message\" (click)=\"applyPrompt(message)\">\r\n {{message}}\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <!-- \u624B\u673A\u7AEF\u6837\u5F0F -->\r\n <ng-container *ngIf=\"cross?.navMenuType=='mobile'\">\r\n <div class=\"prompt_mobile\">\r\n <ng-container *ngFor=\"let content of chat?.promptList\">\r\n <div class=\"prompt_cate\">\r\n <div class=\"cate_info\">\r\n <div>\r\n <img [src]=\"content.img\" alt=\"\">\r\n </div>\r\n <div class=\"cate_name\">\r\n {{content.get('cate')}}\r\n </div>\r\n </div>\r\n <ng-container *ngFor=\"let message of content.get('messageList');let idx = index\">\r\n <div *ngIf=\"idx<3\" class=\"message\" (click)=\"applyPrompt(message)\">\r\n {{message}}\r\n </div>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"view_more\" *ngIf=\"chat?.promptList?.length\">\r\n <button (click)=\"chat.isPromptModalOpen=true\" expand=\"block\">\u67E5\u770B\u66F4\u591A<ion-icon name=\"chevron-forward\"></ion-icon></button>\r\n </div>\r\n </ng-container>\r\n</ng-container>\r\n\r\n <ion-modal [isOpen]=\"chat.isPromptModalOpen\" (willDismiss)=\"chat.isPromptModalOpen=false\" [initialBreakpoint]=\"1\" [breakpoints]=\"[0, 1]\">\r\n <ng-template>\r\n <div class=\"block\">\r\n <ion-label>\u8BDD\u9898\u7075\u611F</ion-label>\r\n <div class=\"block_cate\">\r\n <!-- <ion-segment [(ngModel)]=\"cateIndex\">\r\n <ng-container *ngFor=\"let prompt of chat?.promptList;let i = index\">\r\n <ion-segment-button value=\"i\">\r\n <ion-label>{{prompt?.get(\"cate\")}}</ion-label>\r\n </ion-segment-button>\r\n </ng-container>\r\n </ion-segment> -->\r\n <ng-container *ngFor=\"let prompt of chat?.promptList;let i = index\">\r\n <ion-button [color]=\"i==cateIndex?'secondary':'light'\" (click)=\"checkCate(i)\">{{prompt?.get(\"cate\")}}</ion-button>\r\n <!-- <div [class]=\"i==cateIndex?'active_cate':''\" (click)=\"checkCate(i)\">{{prompt?.get(\"cate\")}}</div> -->\r\n </ng-container>\r\n </div>\r\n <div class=\"message_mobile\">\r\n <ng-container *ngFor=\"let message of chat?.promptList[cateIndex]?.get('messageList')\">\r\n <div class=\"message-box\" [style.backgroundColor]=\"isDarkMode?'rgba(255,255,255,0.2)':'white'\" [style.color]=\"isDarkMode?'rgba(255,255,255,0.5)':'black'\" (click)=\"applyPrompt(message)\">{{message}}</div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-template>\r\n </ion-modal>", styles: [":host-context(body.dark) .prompt_cate .message{background:#fff3;border:1px solid #333;box-shadow:0 2px 8px #333;color:#ffffff80}:host-context(body.dark) .cate_info{color:#fff}:host-context(body.dark) ion-modal .block h4{color:#fff!important}:host-context(body.dark) ion-modal .block .message-box{color:#ccc!important;background-color:#333!important}:host-context(body.dark) .message-box{color:#ccc!important;background-color:#333!important}.prompt{color:#000;display:flex;justify-content:space-between;align-items:flex-start}.prompt .prompt_cate{flex:1;height:inherit;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-direction:column;display:flex;justify-content:center}.prompt .prompt_cate .cate_info{font-size:1.5em;font-weight:700;display:flex;justify-content:center;flex-direction:column;align-items:center}.prompt .prompt_cate .cate_info div img{border-radius:15px;width:58px;height:58px}.prompt .prompt_cate .cate_info .cate_name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.prompt .prompt_cate .message{padding:1em;margin:1em;background:#fff;border:1px solid #eef2f2;border-radius:12px;box-shadow:0 2px 8px #f5f6f8;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}@media screen and (max-width: 390.4px){.prompt .prompt_cate .message{width:100px;height:64px;padding:unset;margin:.8em;background:#fff;border:1px solid #eef2f2;border-radius:12px;box-shadow:0 2px 8px #f5f6f8;cursor:pointer;overflow:hidden;white-space:pre-wrap;text-overflow:ellipsis}}.prompt_mobile{color:#000;display:flex;justify-content:space-between;align-items:flex-start}.prompt_mobile .prompt_cate{flex:1;height:inherit}.prompt_mobile .prompt_cate .cate_info{display:flex;justify-content:center;align-items:center;font-size:1.2em}.prompt_mobile .prompt_cate .cate_info div img{width:48px;height:48px}.prompt_mobile .prompt_cate .cate_info .cate_name{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;overflow:hidden;text-overflow:ellipsis;margin-top:2vw}.prompt_mobile .prompt_cate .message{min-height:48px;padding:0 2vw;margin:4vw 1vw;background:#fff;border:1px solid #eef2f2;border-radius:12px;box-shadow:0 2px 8px #f5f6f8;cursor:pointer;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;text-overflow:ellipsis}.view_more{text-align:center;color:#999;margin:4vw 0}.view_more>button{background-color:transparent}.block{width:100%;height:80vh;padding:2vw}.block .block_cate{display:flex;justify-content:space-evenly}.block .message_mobile{overflow-y:auto;height:65vh;color:#000}.message-box{background-color:#fff;text-align:center;padding:8px 0;margin:8px 0;border-radius:4px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}ion-modal{--height: auto}\n"] }]
78
- }], ctorParameters: () => [{ type: i1.CrossService }], propDecorators: { chat: [{
79
- type: Input
80
- }], role: [{
81
- type: Input
82
- }] } });
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcC1yb2xlLXByb21wdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mbW9kZS1uZy9zcmMvbGliL2FpZ2MvY2hhdC9jb21wLXJvbGUtcHJvbXB0L2NvbXAtcm9sZS1wcm9tcHQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm1vZGUtbmcvc3JjL2xpYi9haWdjL2NoYXQvY29tcC1yb2xlLXByb21wdC9jb21wLXJvbGUtcHJvbXB0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVMsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUM1RCxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQTtBQUM5QixPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFDLFVBQVU7QUFDeEQsbUJBQW1CO0VBQ25CLE1BQU0sMkJBQTJCLENBQUM7QUFDcEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFL0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFDOUMsUUFBUSxDQUFDLEVBQUMsY0FBYyxFQUFDLENBQUMsQ0FBQTtBQWlCMUIsTUFBTSxPQUFPLHVCQUF1QjtJQU9sQyxZQUNTLEtBQW1CO1FBQW5CLFVBQUssR0FBTCxLQUFLLENBQWM7UUFObkIsU0FBSSxHQUFVLEVBQUUs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dUJBQXVCO2tCQWRuQyxTQUFTOytCQUNFLHNCQUFzQixjQUdyQixJQUFJLFdBQ1A7d0JBQ04sWUFBWSxFQUFDLFdBQVcsRUFBQyxtQkFBbUI7d0JBQzVDLFFBQVEsRUFBQyxTQUFTLEVBQUMsVUFBVSxFQUFDLFFBQVE7d0JBQ3RDLE9BQU87cUJBQ1IsYUFDUztvQkFDUixtQkFBbUI7cUJBQ3BCO2lGQUdRLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCxJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGbW9kZUNoYXQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlLWZtYWkvc2VydmljZS1jaGF0JztcclxuaW1wb3J0ICogYXMgUGFyc2UgZnJvbSAncGFyc2UnXHJcbmltcG9ydCB7IElvbkJ1dHRvbiwgSW9uSWNvbiwgSW9uTGFiZWwsIElvbk1vZGFsLElvblNlZ21lbnRcclxuICAvLyAsTW9kYWxDb250cm9sbGVyXHJcbiB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgQ3Jvc3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vcGxhdGZvcm0vY3Jvc3Muc2VydmljZSc7XHJcblxyXG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcclxuaW1wb3J0IHtjaGV2cm9uRm9yd2FyZH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xyXG5hZGRJY29ucyh7Y2hldnJvbkZvcndhcmR9KVxyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWNvbXAtcm9sZS1wcm9tcHQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb21wLXJvbGUtcHJvbXB0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb21wLXJvbGUtcHJvbXB0LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgc3RhbmRhbG9uZTp0cnVlLFxyXG4gIGltcG9ydHM6W1xyXG4gICAgQ29tbW9uTW9kdWxlLEZvcm1zTW9kdWxlLFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBJb25Nb2RhbCxJb25CdXR0b24sSW9uU2VnbWVudCxJb25MYWJlbCxcclxuICAgIElvbkljb25cclxuICBdLFxyXG4gIHByb3ZpZGVyczpbXHJcbiAgICAvLyBNb2RhbENvbnRyb2xsZXIsXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29tcFJvbGVQcm9tcHRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBJbnB1dCgpIGNoYXQ6Rm1vZGVDaGF0XHJcbiAgQElucHV0KCkgcm9sZTpzdHJpbmcgPSBgYFxyXG4gIGNvbXBhbnk6c3RyaW5nXHJcbiAgc2hvd01vZGFsOmJvb2xlYW4gPSBmYWxzZVxyXG4gIGNhdGVJbmRleCA9IDA7XHJcbiAgaXNEYXJrTW9kZTpib29sZWFuID0gZmFsc2U7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgY3Jvc3M6IENyb3NzU2VydmljZSxcclxuICAgIC8vIHByaXZhdGUgbW9kYWxDb250cm9sbGVyOiBNb2RhbENvbnRyb2xsZXJcclxuKSB7XHJcbiAgICB0aGlzLmNvbXBhbnkgPSBcIkU0S3BHdlRFdG9cIiAvLyDpo57noIFBSVxyXG4gICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5nZXRDaGF0UHJvbXB0KClcclxuICAgIGlmKGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKFwiZGFya1wiKSl7XHJcbiAgICAgIHRoaXMuaXNEYXJrTW9kZSA9IHRydWVcclxuICAgIH1cclxuICB9XHJcbiAgYXBwbHlQcm9tcHQobWVzc2FnZSl7XHJcbiAgICB0aGlzLmNoYXQudXNlcklucHV0ID0gbWVzc2FnZTtcclxuICAgIHRoaXMuY2hhdC5pc1ZvaWNlSW5wdXRNb2RlID0gZmFsc2U7XHJcbiAgICB0aGlzLmNoYXQuZm9jdXNVc2VySW5wdXQoKTtcclxuICAgIGlmKHRoaXMuY3Jvc3M/Lm5hdk1lbnVUeXBlPT0nbW9iaWxlJyl7XHJcbiAgICAgIC8vIHRoaXMubW9kYWxDb250cm9sbGVyLmRpc21pc3MoKTtcclxuICAgICAgdGhpcy5jaGF0LmlzUHJvbXB0TW9kYWxPcGVuID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGFzeW5jIGdldENoYXRQcm9tcHQoKXtcclxuICAgIGlmKHRoaXMuY2hhdC5wcm9tcHRMaXN0Py5sZW5ndGgpIHJldHVybjsgLy8g5bey6K6+572u5YiZ5peg6ZyA5YaN5qyh6I635Y+WXHJcbiAgICBsZXQgcXVlcnkgPSBuZXcgUGFyc2UuUXVlcnkoJ0NoYXRQcm9tcHQnKVxyXG4gICAgcXVlcnkubm90RXF1YWxUbygnaXNEZWxldGVkJywgdHJ1ZSlcclxuICAgIC8vIHF1ZXJ5LmVxdWFsVG8oJ2NvbXBhbnknLCB0aGlzLmNvbXBhbnkpXHJcbiAgICBxdWVyeS5lcXVhbFRvKCdyb2xlJywgdGhpcy5yb2xlKVxyXG4gICAgcXVlcnkuaW5jbHVkZSgncm9sZScpXHJcbiAgICBsZXQgcHJvbXB0RGF0YSA9IGF3YWl0IHF1ZXJ5LmZpbmQoKVxyXG4gICAgaWYoIXByb21wdERhdGE/Lmxlbmd0aCkgcmV0dXJuO1xyXG4gICAgY29uc29sZS5sb2coXCJ0aGlzLmNoYXQucHJvbXB0TGlzdD8ubGVuZ3RoXCIsdGhpcy5jaGF0LnByb21wdExpc3QpXHJcbiAgICBpZih0aGlzLmNoYXQucHJvbXB0TGlzdD8ubGVuZ3RoKSByZXR1cm47IC8vIOW3suiuvue9ruWImeaXoOmcgOWGjeasoeiOt+WPllxyXG4gICAgdGhpcy5jaGF0LnByb21wdExpc3QgPSBwcm9tcHREYXRhXHJcbiAgICB0aGlzLmNoYXQucHJvbXB0TGlzdC5mb3JFYWNoKGl0ZW09PntcclxuICAgICAgbGV0IGNhdGUgPSBpdGVtLmdldCgncm9sZScpLmdldCgncHJvbXB0Q2F0ZXMnKS5maWx0ZXIoY2F0ZSA9PiBjYXRlLm5hbWUgPT0gaXRlbS5nZXQoJ2NhdGUnKSlcclxuICAgICAgaXRlbS5pbWcgPSBjYXRlWzBdLmltZ1xyXG4gICAgfSlcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuY2hhdC5wcm9tcHRMaXN0KTtcclxuICB9XHJcbiAgY2hlY2tDYXRlKGluZGV4Om51bWJlcil7XHJcbiAgICB0aGlzLmNhdGVJbmRleCA9IGluZGV4O1xyXG4gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiY2hhdD8ubWVzc2FnZUxpc3Q/Lmxlbmd0aDw0ICYmIGNoYXQ/LmlzUHJvbXB0TWVzc2FnZUFyZWFTaG93ICYmICFjaGF0Py51c2VySW5wdXRcIj5cclxuICA8IS0tIFBD56uv5qC35byPIC0tPlxyXG4gIDxkaXYgY2xhc3M9XCJwcm9tcHRcIiAqbmdJZj1cImNyb3NzPy5uYXZNZW51VHlwZSE9J21vYmlsZSdcIj5cclxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbnRlbnQgb2YgY2hhdD8ucHJvbXB0TGlzdFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicHJvbXB0X2NhdGVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2F0ZV9pbmZvXCI+XHJcbiAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICA8aW1nIFtzcmNdPVwiY29udGVudC5pbWdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhdGVfbmFtZVwiPlxyXG4gICAgICAgICAgICB7e2NvbnRlbnQuZ2V0KCdjYXRlJyl9fVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbWVzc2FnZSBvZiBjb250ZW50LmdldCgnbWVzc2FnZUxpc3QnKVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1lc3NhZ2VcIiAoY2xpY2spPVwiYXBwbHlQcm9tcHQobWVzc2FnZSlcIj5cclxuICAgICAgICAgICAge3ttZXNzYWdlfX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gIDwvZGl2PlxyXG4gIDwhLS0g5omL5py656uv5qC35byPIC0tPlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjcm9zcz8ubmF2TWVudVR5cGU9PSdtb2JpbGUnXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwcm9tcHRfbW9iaWxlXCI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29udGVudCBvZiBjaGF0Py5wcm9tcHRMaXN0XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvbXB0X2NhdGVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhdGVfaW5mb1wiPlxyXG4gICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiY29udGVudC5pbWdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2F0ZV9uYW1lXCI+XHJcbiAgICAgICAgICAgICAgICB7e2NvbnRlbnQuZ2V0KCdjYXRlJyl9fVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbWVzc2FnZSBvZiBjb250ZW50LmdldCgnbWVzc2FnZUxpc3QnKTtsZXQgaWR4ID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaWR4PDNcIiBjbGFzcz1cIm1lc3NhZ2VcIiAoY2xpY2spPVwiYXBwbHlQcm9tcHQobWVzc2FnZSlcIj5cclxuICAgICAgICAgICAgICAgIHt7bWVzc2FnZX19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidmlld19tb3JlXCIgKm5nSWY9XCJjaGF0Py5wcm9tcHRMaXN0Py5sZW5ndGhcIj5cclxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJjaGF0LmlzUHJvbXB0TW9kYWxPcGVuPXRydWVcIiBleHBhbmQ9XCJibG9ja1wiPuafpeeci+abtOWkmjxpb24taWNvbiBuYW1lPVwiY2hldnJvbi1mb3J3YXJkXCI+PC9pb24taWNvbj48L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvbmctY29udGFpbmVyPlxyXG5cclxuICA8aW9uLW1vZGFsIFtpc09wZW5dPVwiY2hhdC5pc1Byb21wdE1vZGFsT3BlblwiICh3aWxsRGlzbWlzcyk9XCJjaGF0LmlzUHJvbXB0TW9kYWxPcGVuPWZhbHNlXCIgW2luaXRpYWxCcmVha3BvaW50XT1cIjFcIiBbYnJlYWtwb2ludHNdPVwiWzAsIDFdXCI+XHJcbiAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJibG9ja1wiPlxyXG4gICAgICAgIDxpb24tbGFiZWw+6K+d6aKY54G15oSfPC9pb24tbGFiZWw+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImJsb2NrX2NhdGVcIj5cclxuICAgICAgICAgIDwhLS0gPGlvbi1zZWdtZW50IFsobmdNb2RlbCldPVwiY2F0ZUluZGV4XCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHByb21wdCBvZiBjaGF0Py5wcm9tcHRMaXN0O2xldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICA8aW9uLXNlZ21lbnQtYnV0dG9uIHZhbHVlPVwiaVwiPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1sYWJlbD57e3Byb21wdD8uZ2V0KFwiY2F0ZVwiKX19PC9pb24tbGFiZWw+XHJcbiAgICAgICAgICAgICAgPC9pb24tc2VnbWVudC1idXR0b24+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9pb24tc2VnbWVudD4gLS0+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwcm9tcHQgb2YgY2hhdD8ucHJvbXB0TGlzdDtsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgIDxpb24tYnV0dG9uIFtjb2xvcl09XCJpPT1jYXRlSW5kZXg/J3NlY29uZGFyeSc6J2xpZ2h0J1wiIChjbGljayk9XCJjaGVja0NhdGUoaSlcIj57e3Byb21wdD8uZ2V0KFwiY2F0ZVwiKX19PC9pb24tYnV0dG9uPlxyXG4gICAgICAgICAgICA8IS0tIDxkaXYgW2NsYXNzXT1cImk9PWNhdGVJbmRleD8nYWN0aXZlX2NhdGUnOicnXCIgKGNsaWNrKT1cImNoZWNrQ2F0ZShpKVwiPnt7cHJvbXB0Py5nZXQoXCJjYXRlXCIpfX08L2Rpdj4gLS0+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibWVzc2FnZV9tb2JpbGVcIj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG1lc3NhZ2Ugb2YgY2hhdD8ucHJvbXB0TGlzdFtjYXRlSW5kZXhdPy5nZXQoJ21lc3NhZ2VMaXN0JylcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lc3NhZ2UtYm94XCIgW3N0eWxlLmJhY2tncm91bmRDb2xvcl09XCJpc0RhcmtNb2RlPydyZ2JhKDI1NSwyNTUsMjU1LDAuMiknOid3aGl0ZSdcIiBbc3R5bGUuY29sb3JdPVwiaXNEYXJrTW9kZT8ncmdiYSgyNTUsMjU1LDI1NSwwLjUpJzonYmxhY2snXCIgKGNsaWNrKT1cImFwcGx5UHJvbXB0KG1lc3NhZ2UpXCI+e3ttZXNzYWdlfX08L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9pb24tbW9kYWw+Il19
1
+
2
+ /**
3
+ * @copyright © 未来飞马 © 未来全栈 www.fmode.cn
4
+ * 版权所有 © 未来飞马 © 江西脑控科技有限公司 Copyright © Fmode Technology Co., Ltd.
5
+ * 保留所有权利 All Rights Reserved.
6
+ * /home/ryan/workspace/nova/nova-admin/dist/fmode-ng/esm2022/lib/aigc/chat/comp-role-prompt/comp-role-prompt.component.mjs
7
+ */
8
+ import{Component,Input}from"@angular/core";import{FmodeChat}from"../../service-fmai/service-chat";import{FmodeParse}from"@fmode/parse";import{IonButton,IonIcon,IonLabel,IonModal,IonSegment}from"@ionic/angular/standalone";import{CommonModule}from"@angular/common";import{FormsModule,ReactiveFormsModule}from"@angular/forms";import{CrossService}from"../../../platform/cross.service";import{addIcons}from"ionicons";import{chevronForward}from"ionicons/icons";import*as i0 from"@angular/core";import*as i1 from"../../../platform/cross.service";import*as i2 from"@angular/common";const Parse=FmodeParse.with("nova");addIcons({chevronForward:chevronForward});export class CompRolePromptComponent{constructor(e){this.cross=e,this.role="",this.showModal=!1,this.cateIndex=0,this.isDarkMode=!1,this.company="E4KpGvTEto"}ngOnInit(){this.getChatPrompt(),document.body.classList.contains("dark")&&(this.isDarkMode=!0)}applyPrompt(e){this.chat.userInput=e,this.chat.isVoiceInputMode=!1,this.chat.focusUserInput(),"mobile"==this.cross?.navMenuType&&(this.chat.isPromptModalOpen=!1)}async getChatPrompt(){if(this.chat.promptList?.length)return;let e=new Parse.Query("ChatPrompt");e.notEqualTo("isDeleted",!0),e.equalTo("role",this.role),e.include("role");let o=await e.find();o?.length&&(console.log("this.chat.promptList?.length",this.chat.promptList),this.chat.promptList?.length||(this.chat.promptList=o,this.chat.promptList.forEach((e=>{let o=e.get("role").get("promptCates").filter((o=>o.name==e.get("cate")));e.img=o[0].img})),console.log(this.chat.promptList)))}checkCate(e){this.cateIndex=e}static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:CompRolePromptComponent,deps:[{token:i1.CrossService}],target:i0.ɵɵFactoryTarget.Component})}static{this.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"17.3.12",type:CompRolePromptComponent,isStandalone:!0,selector:"app-comp-role-prompt",inputs:{chat:"chat",role:"role"},providers:[],ngImport:i0,template:'<ng-container *ngIf="chat?.messageList?.length<4 && chat?.isPromptMessageAreaShow && !chat?.userInput">\n \x3c!-- PC端样式 --\x3e\n <div class="prompt" *ngIf="cross?.navMenuType!=\'mobile\'">\n <ng-container *ngFor="let content of chat?.promptList">\n <div class="prompt_cate">\n <div class="cate_info">\n <div>\n <img [src]="content.img" alt="">\n </div>\n <div class="cate_name">\n {{content.get(\'cate\')}}\n </div>\n </div>\n <ng-container *ngFor="let message of content.get(\'messageList\')">\n <div class="message" (click)="applyPrompt(message)">\n {{message}}\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n \x3c!-- 手机端样式 --\x3e\n <ng-container *ngIf="cross?.navMenuType==\'mobile\'">\n <div class="prompt_mobile">\n <ng-container *ngFor="let content of chat?.promptList">\n <div class="prompt_cate">\n <div class="cate_info">\n <div>\n <img [src]="content.img" alt="">\n </div>\n <div class="cate_name">\n {{content.get(\'cate\')}}\n </div>\n </div>\n <ng-container *ngFor="let message of content.get(\'messageList\');let idx = index">\n <div *ngIf="idx<3" class="message" (click)="applyPrompt(message)">\n {{message}}\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n <div class="view_more" *ngIf="chat?.promptList?.length">\n <button (click)="chat.isPromptModalOpen=true" expand="block">查看更多<ion-icon name="chevron-forward"></ion-icon></button>\n </div>\n </ng-container>\n</ng-container>\n\n <ion-modal [isOpen]="chat.isPromptModalOpen" (willDismiss)="chat.isPromptModalOpen=false" [initialBreakpoint]="1" [breakpoints]="[0, 1]">\n <ng-template>\n <div class="block">\n <ion-label>话题灵感</ion-label>\n <div class="block_cate">\n \x3c!-- <ion-segment [(ngModel)]="cateIndex">\n <ng-container *ngFor="let prompt of chat?.promptList;let i = index">\n <ion-segment-button value="i">\n <ion-label>{{prompt?.get("cate")}}</ion-label>\n </ion-segment-button>\n </ng-container>\n </ion-segment> --\x3e\n <ng-container *ngFor="let prompt of chat?.promptList;let i = index">\n <ion-button [color]="i==cateIndex?\'secondary\':\'light\'" (click)="checkCate(i)">{{prompt?.get("cate")}}</ion-button>\n \x3c!-- <div [class]="i==cateIndex?\'active_cate\':\'\'" (click)="checkCate(i)">{{prompt?.get("cate")}}</div> --\x3e\n </ng-container>\n </div>\n <div class="message_mobile">\n <ng-container *ngFor="let message of chat?.promptList[cateIndex]?.get(\'messageList\')">\n <div class="message-box" [style.backgroundColor]="isDarkMode?\'rgba(255,255,255,0.2)\':\'white\'" [style.color]="isDarkMode?\'rgba(255,255,255,0.5)\':\'black\'" (click)="applyPrompt(message)">{{message}}</div>\n </ng-container>\n </div>\n </div>\n </ng-template>\n </ion-modal>',styles:[":host-context(body.dark) .prompt_cate .message{background:#fff3;border:1px solid #333;box-shadow:0 2px 8px #333;color:#ffffff80}:host-context(body.dark) .cate_info{color:#fff}:host-context(body.dark) ion-modal .block h4{color:#fff!important}:host-context(body.dark) ion-modal .block .message-box{color:#ccc!important;background-color:#333!important}:host-context(body.dark) .message-box{color:#ccc!important;background-color:#333!important}.prompt{color:#000;display:flex;justify-content:space-between;align-items:flex-start}.prompt .prompt_cate{flex:1;height:inherit;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-direction:column;display:flex;justify-content:center}.prompt .prompt_cate .cate_info{font-size:1.5em;font-weight:700;display:flex;justify-content:center;flex-direction:column;align-items:center}.prompt .prompt_cate .cate_info div img{border-radius:15px;width:58px;height:58px}.prompt .prompt_cate .cate_info .cate_name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.prompt .prompt_cate .message{padding:1em;margin:1em;background:#fff;border:1px solid #eef2f2;border-radius:12px;box-shadow:0 2px 8px #f5f6f8;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}@media screen and (max-width: 390.4px){.prompt .prompt_cate .message{width:100px;height:64px;padding:unset;margin:.8em;background:#fff;border:1px solid #eef2f2;border-radius:12px;box-shadow:0 2px 8px #f5f6f8;cursor:pointer;overflow:hidden;white-space:pre-wrap;text-overflow:ellipsis}}.prompt_mobile{color:#000;display:flex;justify-content:space-between;align-items:flex-start}.prompt_mobile .prompt_cate{flex:1;height:inherit}.prompt_mobile .prompt_cate .cate_info{display:flex;justify-content:center;align-items:center;font-size:1.2em}.prompt_mobile .prompt_cate .cate_info div img{width:48px;height:48px}.prompt_mobile .prompt_cate .cate_info .cate_name{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;overflow:hidden;text-overflow:ellipsis;margin-top:2vw}.prompt_mobile .prompt_cate .message{min-height:48px;padding:0 2vw;margin:4vw 1vw;background:#fff;border:1px solid #eef2f2;border-radius:12px;box-shadow:0 2px 8px #f5f6f8;cursor:pointer;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;text-overflow:ellipsis}.view_more{text-align:center;color:#999;margin:4vw 0}.view_more>button{background-color:transparent}.block{width:100%;height:80vh;padding:2vw}.block .block_cate{display:flex;justify-content:space-evenly}.block .message_mobile{overflow-y:auto;height:65vh;color:#000}.message-box{background-color:#fff;text-align:center;padding:8px 0;margin:8px 0;border-radius:4px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}ion-modal{--height: auto}\n"],dependencies:[{kind:"ngmodule",type:CommonModule},{kind:"directive",type:i2.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{kind:"directive",type:i2.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{kind:"ngmodule",type:FormsModule},{kind:"ngmodule",type:ReactiveFormsModule},{kind:"component",type:IonModal,selector:"ion-modal"},{kind:"component",type:IonButton,selector:"ion-button",inputs:["buttonType","color","disabled","download","expand","fill","form","href","mode","rel","routerAnimation","routerDirection","shape","size","strong","target","type"]},{kind:"component",type:IonLabel,selector:"ion-label",inputs:["color","mode","position"]},{kind:"component",type:IonIcon,selector:"ion-icon",inputs:["color","flipRtl","icon","ios","lazy","md","mode","name","sanitize","size","src"]}]})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:CompRolePromptComponent,decorators:[{type:Component,args:[{selector:"app-comp-role-prompt",standalone:!0,imports:[CommonModule,FormsModule,ReactiveFormsModule,IonModal,IonButton,IonSegment,IonLabel,IonIcon],providers:[],template:'<ng-container *ngIf="chat?.messageList?.length<4 && chat?.isPromptMessageAreaShow && !chat?.userInput">\n \x3c!-- PC端样式 --\x3e\n <div class="prompt" *ngIf="cross?.navMenuType!=\'mobile\'">\n <ng-container *ngFor="let content of chat?.promptList">\n <div class="prompt_cate">\n <div class="cate_info">\n <div>\n <img [src]="content.img" alt="">\n </div>\n <div class="cate_name">\n {{content.get(\'cate\')}}\n </div>\n </div>\n <ng-container *ngFor="let message of content.get(\'messageList\')">\n <div class="message" (click)="applyPrompt(message)">\n {{message}}\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n \x3c!-- 手机端样式 --\x3e\n <ng-container *ngIf="cross?.navMenuType==\'mobile\'">\n <div class="prompt_mobile">\n <ng-container *ngFor="let content of chat?.promptList">\n <div class="prompt_cate">\n <div class="cate_info">\n <div>\n <img [src]="content.img" alt="">\n </div>\n <div class="cate_name">\n {{content.get(\'cate\')}}\n </div>\n </div>\n <ng-container *ngFor="let message of content.get(\'messageList\');let idx = index">\n <div *ngIf="idx<3" class="message" (click)="applyPrompt(message)">\n {{message}}\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n <div class="view_more" *ngIf="chat?.promptList?.length">\n <button (click)="chat.isPromptModalOpen=true" expand="block">查看更多<ion-icon name="chevron-forward"></ion-icon></button>\n </div>\n </ng-container>\n</ng-container>\n\n <ion-modal [isOpen]="chat.isPromptModalOpen" (willDismiss)="chat.isPromptModalOpen=false" [initialBreakpoint]="1" [breakpoints]="[0, 1]">\n <ng-template>\n <div class="block">\n <ion-label>话题灵感</ion-label>\n <div class="block_cate">\n \x3c!-- <ion-segment [(ngModel)]="cateIndex">\n <ng-container *ngFor="let prompt of chat?.promptList;let i = index">\n <ion-segment-button value="i">\n <ion-label>{{prompt?.get("cate")}}</ion-label>\n </ion-segment-button>\n </ng-container>\n </ion-segment> --\x3e\n <ng-container *ngFor="let prompt of chat?.promptList;let i = index">\n <ion-button [color]="i==cateIndex?\'secondary\':\'light\'" (click)="checkCate(i)">{{prompt?.get("cate")}}</ion-button>\n \x3c!-- <div [class]="i==cateIndex?\'active_cate\':\'\'" (click)="checkCate(i)">{{prompt?.get("cate")}}</div> --\x3e\n </ng-container>\n </div>\n <div class="message_mobile">\n <ng-container *ngFor="let message of chat?.promptList[cateIndex]?.get(\'messageList\')">\n <div class="message-box" [style.backgroundColor]="isDarkMode?\'rgba(255,255,255,0.2)\':\'white\'" [style.color]="isDarkMode?\'rgba(255,255,255,0.5)\':\'black\'" (click)="applyPrompt(message)">{{message}}</div>\n </ng-container>\n </div>\n </div>\n </ng-template>\n </ion-modal>',styles:[":host-context(body.dark) .prompt_cate .message{background:#fff3;border:1px solid #333;box-shadow:0 2px 8px #333;color:#ffffff80}:host-context(body.dark) .cate_info{color:#fff}:host-context(body.dark) ion-modal .block h4{color:#fff!important}:host-context(body.dark) ion-modal .block .message-box{color:#ccc!important;background-color:#333!important}:host-context(body.dark) .message-box{color:#ccc!important;background-color:#333!important}.prompt{color:#000;display:flex;justify-content:space-between;align-items:flex-start}.prompt .prompt_cate{flex:1;height:inherit;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex-direction:column;display:flex;justify-content:center}.prompt .prompt_cate .cate_info{font-size:1.5em;font-weight:700;display:flex;justify-content:center;flex-direction:column;align-items:center}.prompt .prompt_cate .cate_info div img{border-radius:15px;width:58px;height:58px}.prompt .prompt_cate .cate_info .cate_name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.prompt .prompt_cate .message{padding:1em;margin:1em;background:#fff;border:1px solid #eef2f2;border-radius:12px;box-shadow:0 2px 8px #f5f6f8;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}@media screen and (max-width: 390.4px){.prompt .prompt_cate .message{width:100px;height:64px;padding:unset;margin:.8em;background:#fff;border:1px solid #eef2f2;border-radius:12px;box-shadow:0 2px 8px #f5f6f8;cursor:pointer;overflow:hidden;white-space:pre-wrap;text-overflow:ellipsis}}.prompt_mobile{color:#000;display:flex;justify-content:space-between;align-items:flex-start}.prompt_mobile .prompt_cate{flex:1;height:inherit}.prompt_mobile .prompt_cate .cate_info{display:flex;justify-content:center;align-items:center;font-size:1.2em}.prompt_mobile .prompt_cate .cate_info div img{width:48px;height:48px}.prompt_mobile .prompt_cate .cate_info .cate_name{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;overflow:hidden;text-overflow:ellipsis;margin-top:2vw}.prompt_mobile .prompt_cate .message{min-height:48px;padding:0 2vw;margin:4vw 1vw;background:#fff;border:1px solid #eef2f2;border-radius:12px;box-shadow:0 2px 8px #f5f6f8;cursor:pointer;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;text-overflow:ellipsis}.view_more{text-align:center;color:#999;margin:4vw 0}.view_more>button{background-color:transparent}.block{width:100%;height:80vh;padding:2vw}.block .block_cate{display:flex;justify-content:space-evenly}.block .message_mobile{overflow-y:auto;height:65vh;color:#000}.message-box{background-color:#fff;text-align:center;padding:8px 0;margin:8px 0;border-radius:4px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}ion-modal{--height: auto}\n"]}]}],ctorParameters:()=>[{type:i1.CrossService}],propDecorators:{chat:[{type:Input}],role:[{type:Input}]}});
9
+ var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9haWdjL2NoYXQvY29tcC1yb2xlLXByb21wdC9jb21wLXJvbGUtcHJvbXB0LmNvbXBvbmVudC5tanM=`
10
+
@@ -1,2 +1,10 @@
1
- export * from "./comp-role-prompt.component";
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mbW9kZS1uZy9zcmMvbGliL2FpZ2MvY2hhdC9jb21wLXJvbGUtcHJvbXB0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsOEJBQThCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9jb21wLXJvbGUtcHJvbXB0LmNvbXBvbmVudFwiIl19
1
+
2
+ /**
3
+ * @copyright © 未来飞马 © 未来全栈 www.fmode.cn
4
+ * 版权所有 © 未来飞马 © 江西脑控科技有限公司 Copyright © Fmode Technology Co., Ltd.
5
+ * 保留所有权利 All Rights Reserved.
6
+ * /home/ryan/workspace/nova/nova-admin/dist/fmode-ng/esm2022/lib/aigc/chat/comp-role-prompt/index.mjs
7
+ */
8
+ export*from"./comp-role-prompt.component";
9
+ var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9haWdjL2NoYXQvY29tcC1yb2xlLXByb21wdC9pbmRleC5tanM=`
10
+
@@ -1,8 +1,10 @@
1
- export * from "./chat-list";
2
- export * from "./chat-header-area";
3
- export * from "./chat-message-area";
4
- export * from "./chat-message-card";
5
- export * from "./comp-role-prompt";
6
- export * from "./chat-modal-input";
7
- export * from "./chat-panel/chat-panel.component";
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mbW9kZS1uZy9zcmMvbGliL2FpZ2MvY2hhdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGFBQWEsQ0FBQTtBQUMzQixjQUFjLG9CQUFvQixDQUFBO0FBQ2xDLGNBQWMscUJBQXFCLENBQUE7QUFDbkMsY0FBYyxxQkFBcUIsQ0FBQTtBQUNuQyxjQUFjLG9CQUFvQixDQUFBO0FBRWxDLGNBQWMsb0JBQW9CLENBQUE7QUFFbEMsY0FBYyxtQ0FBbUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2NoYXQtbGlzdFwiXHJcbmV4cG9ydCAqIGZyb20gXCIuL2NoYXQtaGVhZGVyLWFyZWFcIlxyXG5leHBvcnQgKiBmcm9tIFwiLi9jaGF0LW1lc3NhZ2UtYXJlYVwiXHJcbmV4cG9ydCAqIGZyb20gXCIuL2NoYXQtbWVzc2FnZS1jYXJkXCJcclxuZXhwb3J0ICogZnJvbSBcIi4vY29tcC1yb2xlLXByb21wdFwiXHJcblxyXG5leHBvcnQgKiBmcm9tIFwiLi9jaGF0LW1vZGFsLWlucHV0XCJcclxuXHJcbmV4cG9ydCAqIGZyb20gXCIuL2NoYXQtcGFuZWwvY2hhdC1wYW5lbC5jb21wb25lbnRcIiJdfQ==
1
+
2
+ /**
3
+ * @copyright © 未来飞马 © 未来全栈 www.fmode.cn
4
+ * 版权所有 © 未来飞马 © 江西脑控科技有限公司 Copyright © Fmode Technology Co., Ltd.
5
+ * 保留所有权利 All Rights Reserved.
6
+ * /home/ryan/workspace/nova/nova-admin/dist/fmode-ng/esm2022/lib/aigc/chat/index.mjs
7
+ */
8
+ export*from"./chat-list";export*from"./chat-header-area";export*from"./chat-message-area";export*from"./chat-message-card";export*from"./comp-role-prompt";export*from"./chat-modal-input";export*from"./chat-panel/chat-panel.component";
9
+ var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9haWdjL2NoYXQvaW5kZXgubWpz`
10
+