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,98 +1,10 @@
1
- import { Component, ElementRef, Input, ViewChild } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import Recorder from 'recorder-core';
4
- import '../../voice/lib/recorder/extension-waveview';
5
- // import 'recorder-core/src/extensions/waveview'
6
- import Parse from "parse";
7
- import { FormsModule } from '@angular/forms';
8
- import { FmodeChat } from '../../service-fmai/service-chat/chat-class';
9
- import * as i0 from "@angular/core";
10
- export class CompAvatarRoleImageComponent {
11
- constructor() {
12
- this.animClass = "waiting";
13
- this.imageMap = {};
14
- }
15
- playWave() {
16
- if (!this.wave && Recorder.WaveView) {
17
- this.wave = Recorder.WaveView({ elem: ".record-wave-avatar", keep: false });
18
- }
19
- // 生成随机的pcmData
20
- function generatePcmData(length) {
21
- const pcmData = [];
22
- for (let i = 0; i < length; i++) {
23
- pcmData.push(Math.floor(Math.random() * 65536) - 32768);
24
- }
25
- return pcmData;
26
- }
27
- // 生成随机的powerLevel
28
- function generatePowerLevel() {
29
- return Math.random() * 100;
30
- }
31
- // 生成随机的sampleRate
32
- function generateSampleRate() {
33
- const sampleRates = [44100, 48000, 88200, 96000];
34
- return sampleRates[Math.floor(Math.random() * sampleRates.length)];
35
- }
36
- // 生成示例数据
37
- let powerLevel = generatePowerLevel(); // 生成随机的powerLevel
38
- // 使用生成的数据调用wave.input函数
39
- this.waveInterval = setInterval(() => {
40
- let sampleRate = generateSampleRate(); // 生成随机的sampleRate
41
- let pcmData = generatePcmData(1000); // 生成长度为1000的pcmData数组
42
- this.wave.input(pcmData, powerLevel, sampleRate);
43
- }, 40);
44
- }
45
- stopWave() {
46
- clearInterval(this.waveInterval);
47
- }
48
- ngAfterViewInit() {
49
- }
50
- ngOnInit() {
51
- setTimeout(() => {
52
- this.imageMap = this.fmodeChat.avatarConfig?.image;
53
- this.avatarImage.nativeElement.src = this.imageMap?.waiting;
54
- // 绑定当前形象插件动作函数
55
- this.fmodeChat.playAnimation = this.playAnimation;
56
- }, 1500);
57
- }
58
- playAnimation() {
59
- let that = this;
60
- return (name) => {
61
- let img = that.avatarImage.nativeElement;
62
- that.animClass = name;
63
- that.stopWave();
64
- switch (name) {
65
- case "thinking":
66
- img.style.animationPlayState = 'running';
67
- break;
68
- case "talking":
69
- img.style.animationPlayState = 'running';
70
- that.playWave();
71
- break;
72
- case "listening":
73
- img.style.animationPlayState = 'pause';
74
- break;
75
- case "waiting":
76
- img.style.animationPlayState = 'running';
77
- break;
78
- default:
79
- img.style.animationPlayState = 'paused';
80
- break;
81
- }
82
- };
83
- }
84
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CompAvatarRoleImageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
85
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CompAvatarRoleImageComponent, isStandalone: true, selector: "fm-avatar-role-image", inputs: { fmodeChat: "fmodeChat", role: "role" }, viewQueries: [{ propertyName: "avatarImage", first: true, predicate: ["avatarImage"], descendants: true }], ngImport: i0, template: "<div class=\"page\">\r\n <div class=\"avatar\" [class]=\"animClass\">\r\n <div class=\"avatar-photo\">\r\n <img #avatarImage alt=\"\">\r\n <!-- \u97F3\u9891\u6CE2\u52A8 -->\r\n <div class=\"record-wave-avatar\">\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".page{position:relative;width:100vw;height:100%;top:0;left:0;display:flex;justify-content:center;align-items:center;background-color:#000}.avatar{width:100%;display:flex;justify-content:center;align-items:center}.avatar .avatar-photo{position:relative;margin-top:-10vh;width:80%}.avatar .avatar-photo img{border-radius:10px}.avatar .record-wave-avatar{height:50px;width:100%;position:absolute;float:left;left:0;bottom:0}.thinking,.listening,.waiting,.talking{animation-duration:2s;animation-play-state:running;animation-iteration-count:infinite;animation-timing-function:ease-in-out}@keyframes waitingAnimation{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}@keyframes thinkingAnimation{0%{transform:rotate(0)}30%{transform:rotate(10deg)}60%{transform:rotate(-10deg)}to{transform:rotate(0)}}.thinking{animation-name:thinkingAnimation}.waiting{animation-name:waitingAnimation}.listening{animation-name:listeningAnimation}.talking{animation-name:talkingAnimation}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }] }); }
86
- }
87
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CompAvatarRoleImageComponent, decorators: [{
88
- type: Component,
89
- args: [{ selector: 'fm-avatar-role-image', standalone: true, imports: [CommonModule, FormsModule], template: "<div class=\"page\">\r\n <div class=\"avatar\" [class]=\"animClass\">\r\n <div class=\"avatar-photo\">\r\n <img #avatarImage alt=\"\">\r\n <!-- \u97F3\u9891\u6CE2\u52A8 -->\r\n <div class=\"record-wave-avatar\">\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".page{position:relative;width:100vw;height:100%;top:0;left:0;display:flex;justify-content:center;align-items:center;background-color:#000}.avatar{width:100%;display:flex;justify-content:center;align-items:center}.avatar .avatar-photo{position:relative;margin-top:-10vh;width:80%}.avatar .avatar-photo img{border-radius:10px}.avatar .record-wave-avatar{height:50px;width:100%;position:absolute;float:left;left:0;bottom:0}.thinking,.listening,.waiting,.talking{animation-duration:2s;animation-play-state:running;animation-iteration-count:infinite;animation-timing-function:ease-in-out}@keyframes waitingAnimation{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}@keyframes thinkingAnimation{0%{transform:rotate(0)}30%{transform:rotate(10deg)}60%{transform:rotate(-10deg)}to{transform:rotate(0)}}.thinking{animation-name:thinkingAnimation}.waiting{animation-name:waitingAnimation}.listening{animation-name:listeningAnimation}.talking{animation-name:talkingAnimation}\n"] }]
90
- }], propDecorators: { avatarImage: [{
91
- type: ViewChild,
92
- args: ["avatarImage"]
93
- }], fmodeChat: [{
94
- type: Input
95
- }], role: [{
96
- type: Input
97
- }] } });
98
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcC1hdmF0YXItcm9sZS1pbWFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mbW9kZS1uZy9zcmMvbGliL2FpZ2MvYXZhdGFyL2NvbXAtYXZhdGFyLXJvbGUtaW1hZ2UvY29tcC1hdmF0YXItcm9sZS1pbWFnZS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mbW9kZS1uZy9zcmMvbGliL2FpZ2MvYXZhdGFyL2NvbXAtYXZhdGFyLXJvbGUtaW1hZ2UvY29tcC1hdmF0YXItcm9sZS1pbWFnZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXdCLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFHL0MsT0FBTyxRQUFRLE1BQU0sZUFBZSxDQUFBO0FBQ3BDLE9BQU8sNkNBQTZDLENBQUE7QUFDcEQsaURBQWlEO0FBRWpELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDRDQUE0QyxDQUFDOztBQVN2RSxNQUFNLE9BQU8sNEJBQTRCO0lBUHpDO1FBU0UsY0FBUyxHQUFVLFNBQVMsQ0FBQTtRQStDNUIsYUFBUSxHQUFPLEVBQUUsQ0FBQTtLQW1DbEI7SUE1RUMsUUFBUTtRQUNOLElBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFFLFFBQVEsQ0FBQyxRQUFRLEVBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsSUFBSSxHQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBQyxJQUFJLEVBQUMscUJBQXFCLEVBQUMsSUFBSSxFQUFDLEtBQUssRUFB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LEdBQUcsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEdBQUcsU0FBUyxDQUFDO29CQUN6QyxNQUFNO2dCQUNSO29CQUNFLEdBQUcsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEdBQUcsUUFBUSxDQUFDO29CQUN4QyxNQUFNO1lBQ1YsQ0FBQztRQUNILENBQUMsQ0FBQTtJQUNILENBQUM7K0dBbkZVLDRCQUE0QjttR0FBNUIsNEJBQTRCLDhPQ25CekMsZ1VBU00sb2hDRE1NLFlBQVksOEJBQUMsV0FBVzs7NEZBSXZCLDRCQUE0QjtrQkFQeEMsU0FBUzsrQkFDRSxzQkFBc0IsY0FDcEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFDLFdBQVcsQ0FBQzs4QkFLVCxXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBR2YsU0FBUztzQkFBakIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LE9uSW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZtb2RlQXZhdGFyUm9sZUNvbXAgfSBmcm9tICcuLi9pbnRlcmZhY2UtYXZhdGFyLXJvbGUnO1xyXG5cclxuaW1wb3J0IFJlY29yZGVyIGZyb20gJ3JlY29yZGVyLWNvcmUnXHJcbmltcG9ydCAnLi4vLi4vdm9pY2UvbGliL3JlY29yZGVyL2V4dGVuc2lvbi13YXZldmlldydcclxuLy8gaW1wb3J0ICdyZWNvcmRlci1jb3JlL3NyYy9leHRlbnNpb25zL3dhdmV2aWV3J1xyXG5cclxuaW1wb3J0IFBhcnNlIGZyb20gXCJwYXJzZVwiO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgRm1vZGVDaGF0IH0gZnJvbSAnLi4vLi4vc2VydmljZS1mbWFpL3NlcnZpY2UtY2hhdC9jaGF0LWNsYXNzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZm0tYXZhdGFyLXJvbGUtaW1hZ2UnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSxGb3Jtc01vZHVsZV0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbXAtYXZhdGFyLXJvbGUtaW1hZ2UuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvbXAtYXZhdGFyLXJvbGUtaW1hZ2UuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29tcEF2YXRhclJvbGVJbWFnZUNvbXBvbmVudCBpbXBsZW1lbnRzIEZtb2RlQXZhdGFyUm9sZUNvbXAsQWZ0ZXJWaWV3SW5pdCxPbkluaXQge1xyXG4gIEBWaWV3Q2hpbGQoXCJhdmF0YXJJbWFnZVwiKSBhdmF0YXJJbWFnZTpFbGVtZW50UmVmXHJcbiAgYW5pbUNsYXNzOnN0cmluZyA9IFwid2FpdGluZ1wiXHJcblxyXG4gIEBJbnB1dCgpIGZtb2RlQ2hhdDpGbW9kZUNoYXQ7XHJcbiAgQElucHV0KCkgcm9sZTpQYXJzZS5PYmplY3Q7XHJcbiAgd2F2ZTphbnlcclxuICB3YXZlSW50ZXJ2YWw6YW55XHJcbiAgcGxheVdhdmUoKXtcclxuICAgIGlmKCF0aGlzLndhdmUmJlJlY29yZGVyLldhdmVWaWV3KXtcclxuICAgICAgdGhpcy53YXZlPVJlY29yZGVyLldhdmVWaWV3KHtlbGVtOlwiLnJlY29yZC13YXZlLWF2YXRhclwiLGtlZXA6ZmFsc2V9KTtcclxuICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIOeUn+aIkOmaj+acuueahHBjbURhdGFcclxuICAgICAgICBmdW5jdGlvbiBnZW5lcmF0ZVBjbURhdGEobGVuZ3RoKSB7XHJcbiAgICAgICAgICBjb25zdCBwY21EYXRhID0gW107XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHBjbURhdGEucHVzaChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiA2NTUzNikgLSAzMjc2OCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gcGNtRGF0YTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIOeUn+aIkOmaj+acuueahHBvd2VyTGV2ZWxcclxuICAgICAgICBmdW5jdGlvbiBnZW5lcmF0ZVBvd2VyTGV2ZWwoKSB7XHJcbiAgICAgICAgICByZXR1cm4gTWF0aC5yYW5kb20oKSAqIDEwMDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIOeUn+aIkOmaj+acuueahHNhbXBsZVJhdGVcclxuICAgICAgICBmdW5jdGlvbiBnZW5lcmF0ZVNhbXBsZVJhdGUoKSB7XHJcbiAgICAgICAgICBjb25zdCBzYW1wbGVSYXRlcyA9IFs0NDEwMCwgNDgwMDAsIDg4MjAwLCA5NjAwMF07XHJcbiAgICAgICAgICByZXR1cm4gc2FtcGxlUmF0ZXNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogc2FtcGxlUmF0ZXMubGVuZ3RoKV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIOeUn+aIkOekuuS+i+aVsOaNrlxyXG4gICAgICAgIFxyXG4gICAgICAgIGxldCBwb3dlckxldmVsID0gZ2VuZXJhdGVQb3dlckxldmVsKCk7IC8vIOeUn+aIkOmaj+acuueahHBvd2VyTGV2ZWxcclxuICAgICAgICAvLyDkvb/nlKjnlJ/miJDnmoTmlbDmja7osIPnlKh3YXZlLmlucHV05Ye95pWwXHJcbiAgICAgICAgdGhpcy53YXZlSW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKT0+e1xyXG4gICAgICAgICAgbGV0IHNhbXBsZVJhdGUgPSBnZW5lcmF0ZVNhbXBsZVJhdGUoKTsgLy8g55Sf5oiQ6ZqP5py655qEc2FtcGxlUmF0ZVxyXG4gICAgICAgICAgbGV0IHBjbURhdGEgPSBnZW5lcmF0ZVBjbURhdGEoMTAwMCk7IC8vIOeUn+aIkOmVv+W6puS4ujEwMDDnmoRwY21EYXRh5pWw57uEXHJcbiAgICAgICAgICB0aGlzLndhdmUuaW5wdXQocGNtRGF0YSwgcG93ZXJMZXZlbCwgc2FtcGxlUmF0ZSk7XHJcbiAgICAgICAgfSw0MClcclxuICB9XHJcbiAgc3RvcFdhdmUoKXtcclxuICAgIGNsZWFySW50ZXJ2YWwodGhpcy53YXZlSW50ZXJ2YWwpXHJcbiAgfVxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpe1xyXG5cclxuICB9XHJcblxyXG4gIGltYWdlTWFwOmFueSA9IHt9XHJcbiAgbmdPbkluaXQoKXtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLmltYWdlTWFwID0gdGhpcy5mbW9kZUNoYXQuYXZhdGFyQ29uZmlnPy5pbWFnZTtcclxuICAgICAgdGhpcy5hdmF0YXJJbWFnZS5uYXRpdmVFbGVtZW50LnNyYyA9IHRoaXMuaW1hZ2VNYXA/LndhaXRpbmc7XHJcbiAgICAgIC8vIOe7keWumuW9k+WJjeW9ouixoeaPkuS7tuWKqOS9nOWHveaVsFxyXG4gICAgICB0aGlzLmZtb2RlQ2hhdC5wbGF5QW5pbWF0aW9uID0gdGhpcy5wbGF5QW5pbWF0aW9uIFxyXG4gICAgfSwgMTUwMCk7XHJcbiAgfVxyXG4gIHBsYXlBbmltYXRpb24oKXtcclxuICAgIGxldCB0aGF0ID0gdGhpc1xyXG4gICAgcmV0dXJuIChuYW1lOnN0cmluZyk9PntcclxuICAgICAgbGV0IGltZyA9ICB0aGF0LmF2YXRhckltYWdlLm5hdGl2ZUVsZW1lbnRcclxuICAgICAgdGhhdC5hbmltQ2xhc3MgPSBuYW1lXHJcbiAgICAgIHRoYXQuc3RvcFdhdmUoKVxyXG4gICAgICBzd2l0Y2ggKG5hbWUpIHtcclxuICAgICAgICBjYXNlIFwidGhpbmtpbmdcIjpcclxuICAgICAgICAgIGltZy5zdHlsZS5hbmltYXRpb25QbGF5U3RhdGUgPSAncnVubmluZyc7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFwidGFsa2luZ1wiOlxyXG4gICAgICAgICAgaW1nLnN0eWxlLmFuaW1hdGlvblBsYXlTdGF0ZSA9ICdydW5uaW5nJztcclxuICAgICAgICAgIHRoYXQucGxheVdhdmUoKVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBcImxpc3RlbmluZ1wiOlxyXG4gICAgICAgICAgaW1nLnN0eWxlLmFuaW1hdGlvblBsYXlTdGF0ZSA9ICdwYXVzZSc7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIFwid2FpdGluZ1wiOlxyXG4gICAgICAgICAgaW1nLnN0eWxlLmFuaW1hdGlvblBsYXlTdGF0ZSA9ICdydW5uaW5nJztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBpbWcuc3R5bGUuYW5pbWF0aW9uUGxheVN0YXRlID0gJ3BhdXNlZCc7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwicGFnZVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImF2YXRhclwiIFtjbGFzc109XCJhbmltQ2xhc3NcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyLXBob3RvXCI+XHJcbiAgICAgICAgICAgIDxpbWcgI2F2YXRhckltYWdlIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICA8IS0tIOmfs+mikeazouWKqCAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlY29yZC13YXZlLWF2YXRhclwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
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/avatar/comp-avatar-role-image/comp-avatar-role-image.component.mjs
7
+ */
8
+ import{Component,ElementRef,Input,ViewChild}from"@angular/core";import{CommonModule}from"@angular/common";import Recorder from"recorder-core";import"../../voice/lib/recorder/extension-waveview";import{FmodeParse,FmodeObject}from"@fmode/parse";import{FormsModule}from"@angular/forms";import{FmodeChat}from"../../service-fmai/service-chat/chat-class";import*as i0 from"@angular/core";const Parse=FmodeParse.with("nova");export class CompAvatarRoleImageComponent{constructor(){this.animClass="waiting",this.imageMap={}}playWave(){!this.wave&&Recorder.WaveView&&(this.wave=Recorder.WaveView({elem:".record-wave-avatar",keep:!1}));let a=function generatePowerLevel(){return 100*Math.random()}();this.waveInterval=setInterval((()=>{let t=function generateSampleRate(){const a=[44100,48e3,88200,96e3];return a[Math.floor(Math.random()*a.length)]}(),e=function generatePcmData(a){const t=[];for(let e=0;e<a;e++)t.push(Math.floor(65536*Math.random())-32768);return t}(1e3);this.wave.input(e,a,t)}),40)}stopWave(){clearInterval(this.waveInterval)}ngAfterViewInit(){}ngOnInit(){setTimeout((()=>{this.imageMap=this.fmodeChat.avatarConfig?.image,this.avatarImage.nativeElement.src=this.imageMap?.waiting,this.fmodeChat.playAnimation=this.playAnimation}),1500)}playAnimation(){let a=this;return t=>{let e=a.avatarImage.nativeElement;switch(a.animClass=t,a.stopWave(),t){case"thinking":case"waiting":e.style.animationPlayState="running";break;case"talking":e.style.animationPlayState="running",a.playWave();break;case"listening":e.style.animationPlayState="pause";break;default:e.style.animationPlayState="paused"}}}static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:CompAvatarRoleImageComponent,deps:[],target:i0.ɵɵFactoryTarget.Component})}static{this.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"17.3.12",type:CompAvatarRoleImageComponent,isStandalone:!0,selector:"fm-avatar-role-image",inputs:{fmodeChat:"fmodeChat",role:"role"},viewQueries:[{propertyName:"avatarImage",first:!0,predicate:["avatarImage"],descendants:!0}],ngImport:i0,template:'<div class="page">\n <div class="avatar" [class]="animClass">\n <div class="avatar-photo">\n <img #avatarImage alt="">\n \x3c!-- 音频波动 --\x3e\n <div class="record-wave-avatar">\n </div>\n </div>\n </div>\n</div>',styles:[".page{position:relative;width:100vw;height:100%;top:0;left:0;display:flex;justify-content:center;align-items:center;background-color:#000}.avatar{width:100%;display:flex;justify-content:center;align-items:center}.avatar .avatar-photo{position:relative;margin-top:-10vh;width:80%}.avatar .avatar-photo img{border-radius:10px}.avatar .record-wave-avatar{height:50px;width:100%;position:absolute;float:left;left:0;bottom:0}.thinking,.listening,.waiting,.talking{animation-duration:2s;animation-play-state:running;animation-iteration-count:infinite;animation-timing-function:ease-in-out}@keyframes waitingAnimation{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}@keyframes thinkingAnimation{0%{transform:rotate(0)}30%{transform:rotate(10deg)}60%{transform:rotate(-10deg)}to{transform:rotate(0)}}.thinking{animation-name:thinkingAnimation}.waiting{animation-name:waitingAnimation}.listening{animation-name:listeningAnimation}.talking{animation-name:talkingAnimation}\n"],dependencies:[{kind:"ngmodule",type:CommonModule},{kind:"ngmodule",type:FormsModule}]})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:CompAvatarRoleImageComponent,decorators:[{type:Component,args:[{selector:"fm-avatar-role-image",standalone:!0,imports:[CommonModule,FormsModule],template:'<div class="page">\n <div class="avatar" [class]="animClass">\n <div class="avatar-photo">\n <img #avatarImage alt="">\n \x3c!-- 音频波动 --\x3e\n <div class="record-wave-avatar">\n </div>\n </div>\n </div>\n</div>',styles:[".page{position:relative;width:100vw;height:100%;top:0;left:0;display:flex;justify-content:center;align-items:center;background-color:#000}.avatar{width:100%;display:flex;justify-content:center;align-items:center}.avatar .avatar-photo{position:relative;margin-top:-10vh;width:80%}.avatar .avatar-photo img{border-radius:10px}.avatar .record-wave-avatar{height:50px;width:100%;position:absolute;float:left;left:0;bottom:0}.thinking,.listening,.waiting,.talking{animation-duration:2s;animation-play-state:running;animation-iteration-count:infinite;animation-timing-function:ease-in-out}@keyframes waitingAnimation{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}@keyframes thinkingAnimation{0%{transform:rotate(0)}30%{transform:rotate(10deg)}60%{transform:rotate(-10deg)}to{transform:rotate(0)}}.thinking{animation-name:thinkingAnimation}.waiting{animation-name:waitingAnimation}.listening{animation-name:listeningAnimation}.talking{animation-name:talkingAnimation}\n"]}]}],propDecorators:{avatarImage:[{type:ViewChild,args:["avatarImage"]}],fmodeChat:[{type:Input}],role:[{type:Input}]}});
9
+ var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9haWdjL2F2YXRhci9jb21wLWF2YXRhci1yb2xlLWltYWdlL2NvbXAtYXZhdGFyLXJvbGUtaW1hZ2UuY29tcG9uZW50Lm1qcw==`
10
+
@@ -1,107 +1,10 @@
1
- import { Component, Input, ViewChild, Output, EventEmitter } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import Recorder from 'recorder-core';
4
- // import 'recorder-core/src/extensions/waveview'
5
- import '../../voice/lib/recorder/extension-waveview';
6
- import Parse from "parse";
7
- import { FormsModule } from '@angular/forms';
8
- import { FmodeChat } from '../../service-fmai/service-chat/chat-class';
9
- import { FmVideoComponent } from '../../../video';
10
- import { IonButton, IonButtons, IonIcon, IonToolbar, NavController } from '@ionic/angular/standalone';
11
- import * as i0 from "@angular/core";
12
- import * as i1 from "@ionic/angular/standalone";
13
- export class CompAvatarRoleVideoComponent {
14
- constructor(navCtrl) {
15
- this.navCtrl = navCtrl;
16
- this.animClass = "waiting";
17
- this.onClose = new EventEmitter;
18
- this.goBack = () => {
19
- this.navCtrl.back();
20
- };
21
- this.videoMap = {};
22
- }
23
- close() {
24
- this.onClose.emit(true);
25
- this.fmodeChat.isAvatarShow = false;
26
- }
27
- playWave() {
28
- if (!this.wave && Recorder.WaveView) {
29
- this.wave = Recorder.WaveView({ elem: ".record-wave-avatar", keep: false });
30
- }
31
- // 生成随机的pcmData
32
- function generatePcmData(length) {
33
- const pcmData = [];
34
- for (let i = 0; i < length; i++) {
35
- pcmData.push(Math.floor(Math.random() * 65536) - 32768);
36
- }
37
- return pcmData;
38
- }
39
- // 生成随机的powerLevel
40
- function generatePowerLevel() {
41
- return Math.random() * 100;
42
- }
43
- // 生成随机的sampleRate
44
- function generateSampleRate() {
45
- const sampleRates = [44100, 48000, 88200, 96000];
46
- return sampleRates[Math.floor(Math.random() * sampleRates.length)];
47
- }
48
- // 生成示例数据
49
- let powerLevel = generatePowerLevel(); // 生成随机的powerLevel
50
- // 使用生成的数据调用wave.input函数
51
- this.waveInterval = setInterval(() => {
52
- let sampleRate = generateSampleRate(); // 生成随机的sampleRate
53
- let pcmData = generatePcmData(1000); // 生成长度为1000的pcmData数组
54
- this.wave.input(pcmData, powerLevel, sampleRate);
55
- }, 40);
56
- }
57
- stopWave() {
58
- clearInterval(this.waveInterval);
59
- }
60
- ngAfterViewInit() {
61
- }
62
- ngOnInit() {
63
- setTimeout(() => {
64
- this.videoMap = this.fmodeChat.avatarConfig?.video;
65
- this.playVideo(this.videoMap?.waiting);
66
- // 绑定当前形象插件动作函数
67
- this.fmodeChat.playAnimation = this.playAnimation;
68
- }, 1500);
69
- }
70
- playAnimation() {
71
- let that = this;
72
- return (name) => {
73
- that.animClass = name;
74
- that.stopWave();
75
- that.playVideo(that.videoMap[name]);
76
- };
77
- }
78
- playVideo(src) {
79
- this.avatarVideo.play(src);
80
- // this.avatarVideo.nativeElement.autoplay = true;
81
- // this.avatarVideo.nativeElement.loop = true;
82
- // this.avatarVideo.nativeElement.controls = false;
83
- // this.avatarVideo.nativeElement.src = src;
84
- // this.avatarVideo.nativeElement.play();
85
- }
86
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CompAvatarRoleVideoComponent, deps: [{ token: i1.NavController }], target: i0.ɵɵFactoryTarget.Component }); }
87
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CompAvatarRoleVideoComponent, isStandalone: true, selector: "fm-avatar-role-video", inputs: { fmodeChat: "fmodeChat", role: "role", goBack: "goBack" }, outputs: { onClose: "onClose" }, viewQueries: [{ propertyName: "avatarVideo", first: true, predicate: FmVideoComponent, descendants: true }], ngImport: i0, template: "<div class=\"page\">\r\n <ion-toolbar>\r\n <ion-buttons slot=\"start\">\r\n <ion-button (click)=\"goBack()\">\r\n <ion-icon name=\"chevron-back-outline\"></ion-icon>\r\n </ion-button>\r\n </ion-buttons>\r\n <ion-buttons slot=\"end\">\r\n <ion-button (click)=\"close()\"> <ion-icon name=\"chevron-collapse-outline\"></ion-icon> </ion-button>\r\n </ion-buttons>\r\n </ion-toolbar>\r\n <div class=\"avatar\" [class]=\"animClass\">\r\n <div class=\"avatar-photo\">\r\n <fm-video #avatarVideo alt=\"\"></fm-video>\r\n <!-- \u97F3\u9891\u6CE2\u52A8 -->\r\n <div class=\"record-wave-avatar\">\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: ["ion-toolbar{position:fixed;top:0;left:0;width:100vw;--background:transparent}.page{position:relative;width:100vw;height:100%;top:0;left:0;display:flex;justify-content:center;align-items:center;background-color:#000}.avatar{height:100%;width:100%;display:flex;justify-content:center;align-items:center}.avatar .avatar-photo{position:relative;display:flex;justify-content:center;width:80%;max-height:100%}.avatar .avatar-photo fm-video{border-radius:50%;max-height:100%;max-width:100%}.avatar .record-wave-avatar{height:50px;width:100%;position:absolute;float:left;left:0;bottom:0}.thinking,.listening,.waiting,.talking{animation-duration:2s;animation-play-state:running;animation-iteration-count:infinite;animation-timing-function:ease-in-out}@keyframes waitingAnimation{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}@keyframes thinkingAnimation{0%{transform:rotate(0)}30%{transform:rotate(10deg)}60%{transform:rotate(-10deg)}to{transform:rotate(0)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: FmVideoComponent, selector: "fm-video", inputs: ["url", "canvasStyle"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { 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"] }] }); }
88
- }
89
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CompAvatarRoleVideoComponent, decorators: [{
90
- type: Component,
91
- args: [{ selector: 'fm-avatar-role-video', standalone: true, imports: [CommonModule, FormsModule, FmVideoComponent,
92
- IonIcon,
93
- IonToolbar, IonButtons, IonButton,
94
- ], template: "<div class=\"page\">\r\n <ion-toolbar>\r\n <ion-buttons slot=\"start\">\r\n <ion-button (click)=\"goBack()\">\r\n <ion-icon name=\"chevron-back-outline\"></ion-icon>\r\n </ion-button>\r\n </ion-buttons>\r\n <ion-buttons slot=\"end\">\r\n <ion-button (click)=\"close()\"> <ion-icon name=\"chevron-collapse-outline\"></ion-icon> </ion-button>\r\n </ion-buttons>\r\n </ion-toolbar>\r\n <div class=\"avatar\" [class]=\"animClass\">\r\n <div class=\"avatar-photo\">\r\n <fm-video #avatarVideo alt=\"\"></fm-video>\r\n <!-- \u97F3\u9891\u6CE2\u52A8 -->\r\n <div class=\"record-wave-avatar\">\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: ["ion-toolbar{position:fixed;top:0;left:0;width:100vw;--background:transparent}.page{position:relative;width:100vw;height:100%;top:0;left:0;display:flex;justify-content:center;align-items:center;background-color:#000}.avatar{height:100%;width:100%;display:flex;justify-content:center;align-items:center}.avatar .avatar-photo{position:relative;display:flex;justify-content:center;width:80%;max-height:100%}.avatar .avatar-photo fm-video{border-radius:50%;max-height:100%;max-width:100%}.avatar .record-wave-avatar{height:50px;width:100%;position:absolute;float:left;left:0;bottom:0}.thinking,.listening,.waiting,.talking{animation-duration:2s;animation-play-state:running;animation-iteration-count:infinite;animation-timing-function:ease-in-out}@keyframes waitingAnimation{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}@keyframes thinkingAnimation{0%{transform:rotate(0)}30%{transform:rotate(10deg)}60%{transform:rotate(-10deg)}to{transform:rotate(0)}}\n"] }]
95
- }], ctorParameters: () => [{ type: i1.NavController }], propDecorators: { avatarVideo: [{
96
- type: ViewChild,
97
- args: [FmVideoComponent]
98
- }], fmodeChat: [{
99
- type: Input
100
- }], role: [{
101
- type: Input
102
- }], onClose: [{
103
- type: Output
104
- }], goBack: [{
105
- type: Input
106
- }] } });
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcC1hdmF0YXItcm9sZS12aWRlby5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mbW9kZS1uZy9zcmMvbGliL2FpZ2MvYXZhdGFyL2NvbXAtYXZhdGFyLXJvbGUtdmlkZW8vY29tcC1hdmF0YXItcm9sZS12aWRlby5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mbW9kZS1uZy9zcmMvbGliL2FpZ2MvYXZhdGFyL2NvbXAtYXZhdGFyLXJvbGUtdmlkZW8vY29tcC1hdmF0YXItcm9sZS12aWRlby5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXdCLFNBQVMsRUFBYyxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRy9DLE9BQU8sUUFBUSxNQUFNLGVBQWUsQ0FBQTtBQUNwQyxpREFBaUQ7QUFDakQsT0FBTyw2Q0FBNkMsQ0FBQTtBQUVwRCxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUN2RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7QUFXdEcsTUFBTSxPQUFPLDRCQUE0QjtJQVV2QyxZQUNVLE9BQXFCO1FBQXJCLFlBQU8sR0FBUCxPQUFPLENBQWM7UUFUL0IsY0FBUyxHQUFVLFNBQVMsQ0FBQTtRQU9sQixZQUFPLEdBQXlCLElB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SUFBSSxDQUFBO1lBQ3JCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQTtZQUVmLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBRXRDLENBQUMsQ0FBQTtJQUNILENBQUM7SUFDRCxTQUFTLENBQUMsR0FBVTtRQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUzQixrREFBa0Q7UUFDbEQsOENBQThDO1FBQzlDLG1EQUFtRDtRQUNuRCw0Q0FBNEM7UUFDNUMseUNBQXlDO0lBQzNDLENBQUM7K0dBNUZVLDRCQUE0QjttR0FBNUIsNEJBQTRCLGtPQUM1QixnQkFBZ0IsZ0RDeEI3Qiwwd0JBbUJNLHlnQ0RITSxZQUFZLDhCQUFDLFdBQVcsK0JBQUMsZ0JBQWdCLHFGQUNqRCxPQUFPLDJKQUNQLFVBQVUsbUZBQUMsVUFBVSw4RUFBQyxTQUFTOzs0RkFLdEIsNEJBQTRCO2tCQVZ4QyxTQUFTOytCQUNFLHNCQUFzQixjQUNwQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUMsV0FBVyxFQUFDLGdCQUFnQjt3QkFDakQsT0FBTzt3QkFDUCxVQUFVLEVBQUMsVUFBVSxFQUFDLFNBQVM7cUJBQ2hDO2tGQUs0QixXQUFXO3NCQUF2QyxTQUFTO3VCQUFDLGdCQUFnQjtnQkFHbEIsU0FBUztzQkFBakIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBSUksT0FBTztzQkFBaEIsTUFBTTtnQkFZUCxNQUFNO3NCQURMLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LE9uSW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgVmlld0NoaWxkLCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBGbW9kZUF2YXRhclJvbGVDb21wIH0gZnJvbSAnLi4vaW50ZXJmYWNlLWF2YXRhci1yb2xlJztcclxuXHJcbmltcG9ydCBSZWNvcmRlciBmcm9tICdyZWNvcmRlci1jb3JlJ1xyXG4vLyBpbXBvcnQgJ3JlY29yZGVyLWNvcmUvc3JjL2V4dGVuc2lvbnMvd2F2ZXZpZXcnXHJcbmltcG9ydCAnLi4vLi4vdm9pY2UvbGliL3JlY29yZGVyL2V4dGVuc2lvbi13YXZldmlldydcclxuXHJcbmltcG9ydCBQYXJzZSBmcm9tIFwicGFyc2VcIjtcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZtb2RlQ2hhdCB9IGZyb20gJy4uLy4uL3NlcnZpY2UtZm1haS9zZXJ2aWNlLWNoYXQvY2hhdC1jbGFzcyc7XHJcbmltcG9ydCB7IEZtVmlkZW9Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi92aWRlbyc7XHJcbmltcG9ydCB7IElvbkJ1dHRvbiwgSW9uQnV0dG9ucywgSW9uSWNvbiwgSW9uVG9vbGJhciwgTmF2Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2ZtLWF2YXRhci1yb2xlLXZpZGVvJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsRm9ybXNNb2R1bGUsRm1WaWRlb0NvbXBvbmVudCxcclxuICAgIElvbkljb24sXHJcbiAgICBJb25Ub29sYmFyLElvbkJ1dHRvbnMsSW9uQnV0dG9uLFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbXAtYXZhdGFyLXJvbGUtdmlkZW8uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NvbXAtYXZhdGFyLXJvbGUtdmlkZW8uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29tcEF2YXRhclJvbGVWaWRlb0NvbXBvbmVudCBpbXBsZW1lbnRzIEZtb2RlQXZhdGFyUm9sZUNvbXAsQWZ0ZXJWaWV3SW5pdCxPbkluaXQge1xyXG4gIEBWaWV3Q2hpbGQoRm1WaWRlb0NvbXBvbmVudCkgYXZhdGFyVmlkZW86Rm1WaWRlb0NvbXBvbmVudFxyXG4gIGFuaW1DbGFzczpzdHJpbmcgPSBcIndhaXRpbmdcIlxyXG5cclxuICBASW5wdXQoKSBmbW9kZUNoYXQ6Rm1vZGVDaGF0O1xyXG4gIEBJbnB1dCgpIHJvbGU6UGFyc2UuT2JqZWN0O1xyXG4gIHdhdmU6YW55XHJcbiAgd2F2ZUludGVydmFsOmFueVxyXG5cclxuICBAT3V0cHV0KCkgb25DbG9zZTpFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIG5hdkN0cmw6TmF2Q29udHJvbGxlclxyXG4gICl7XHJcblxyXG4gIH1cclxuICBjbG9zZSgpe1xyXG4gICAgdGhpcy5vbkNsb3NlLmVtaXQodHJ1ZSk7XHJcbiAgICB0aGlzLmZtb2RlQ2hhdC5pc0F2YXRhclNob3cgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ29CYWNrID0gKCk9PntcclxuICAgIHRoaXMubmF2Q3RybC5iYWNrKCk7XHJcbiAgfVxyXG4gIHBsYXlXYXZlKCl7XHJcbiAgICBpZighdGhpcy53YXZlJiZSZWNvcmRlci5XYXZlVmlldyl7XHJcbiAgICAgIHRoaXMud2F2ZT1SZWNvcmRlci5XYXZlVmlldyh7ZWxlbTpcIi5yZWNvcmQtd2F2ZS1hdmF0YXJcIixrZWVwOmZhbHNlfSk7XHJcbiAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyDnlJ/miJDpmo/mnLrnmoRwY21EYXRhXHJcbiAgICAgICAgZnVuY3Rpb24gZ2VuZXJhdGVQY21EYXRhKGxlbmd0aCkge1xyXG4gICAgICAgICAgY29uc3QgcGNtRGF0YSA9IFtdO1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBwY21EYXRhLnB1c2goTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogNjU1MzYpIC0gMzI3NjgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIHBjbURhdGE7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDnlJ/miJDpmo/mnLrnmoRwb3dlckxldmVsXHJcbiAgICAgICAgZnVuY3Rpb24gZ2VuZXJhdGVQb3dlckxldmVsKCkge1xyXG4gICAgICAgICAgcmV0dXJuIE1hdGgucmFuZG9tKCkgKiAxMDA7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDnlJ/miJDpmo/mnLrnmoRzYW1wbGVSYXRlXHJcbiAgICAgICAgZnVuY3Rpb24gZ2VuZXJhdGVTYW1wbGVSYXRlKCkge1xyXG4gICAgICAgICAgY29uc3Qgc2FtcGxlUmF0ZXMgPSBbNDQxMDAsIDQ4MDAwLCA4ODIwMCwgOTYwMDBdO1xyXG4gICAgICAgICAgcmV0dXJuIHNhbXBsZVJhdGVzW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIHNhbXBsZVJhdGVzLmxlbmd0aCldO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyDnlJ/miJDnpLrkvovmlbDmja5cclxuICAgICAgICBcclxuICAgICAgICBsZXQgcG93ZXJMZXZlbCA9IGdlbmVyYXRlUG93ZXJMZXZlbCgpOyAvLyDnlJ/miJDpmo/mnLrnmoRwb3dlckxldmVsXHJcbiAgICAgICAgLy8g5L2/55So55Sf5oiQ55qE5pWw5o2u6LCD55Sod2F2ZS5pbnB1dOWHveaVsFxyXG4gICAgICAgIHRoaXMud2F2ZUludGVydmFsID0gc2V0SW50ZXJ2YWwoKCk9PntcclxuICAgICAgICAgIGxldCBzYW1wbGVSYXRlID0gZ2VuZXJhdGVTYW1wbGVSYXRlKCk7IC8vIOeUn+aIkOmaj+acuueahHNhbXBsZVJhdGVcclxuICAgICAgICAgIGxldCBwY21EYXRhID0gZ2VuZXJhdGVQY21EYXRhKDEwMDApOyAvLyDnlJ/miJDplb/luqbkuLoxMDAw55qEcGNtRGF0YeaVsOe7hFxyXG4gICAgICAgICAgdGhpcy53YXZlLmlucHV0KHBjbURhdGEsIHBvd2VyTGV2ZWwsIHNhbXBsZVJhdGUpO1xyXG4gICAgICAgIH0sNDApXHJcbiAgfVxyXG4gIHN0b3BXYXZlKCl7XHJcbiAgICBjbGVhckludGVydmFsKHRoaXMud2F2ZUludGVydmFsKVxyXG4gIH1cclxuICBuZ0FmdGVyVmlld0luaXQoKXtcclxuXHJcbiAgfVxyXG5cclxuICB2aWRlb01hcDphbnkgPSB7fVxyXG4gIG5nT25Jbml0KCl7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy52aWRlb01hcCA9IHRoaXMuZm1vZGVDaGF0LmF2YXRhckNvbmZpZz8udmlkZW87XHJcbiAgICAgIHRoaXMucGxheVZpZGVvKHRoaXMudmlkZW9NYXA/LndhaXRpbmcpXHJcbiAgICAgIC8vIOe7keWumuW9k+WJjeW9ouixoeaPkuS7tuWKqOS9nOWHveaVsFxyXG4gICAgICB0aGlzLmZtb2RlQ2hhdC5wbGF5QW5pbWF0aW9uID0gdGhpcy5wbGF5QW5pbWF0aW9uIFxyXG4gICAgfSwgMTUwMCk7XHJcbiAgfVxyXG4gIHBsYXlBbmltYXRpb24oKXtcclxuICAgIGxldCB0aGF0ID0gdGhpc1xyXG4gICAgcmV0dXJuIChuYW1lOnN0cmluZyk9PntcclxuICAgICAgdGhhdC5hbmltQ2xhc3MgPSBuYW1lXHJcbiAgICAgIHRoYXQuc3RvcFdhdmUoKVxyXG5cclxuICAgICAgdGhhdC5wbGF5VmlkZW8odGhhdC52aWRlb01hcFtuYW1lXSk7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuICBwbGF5VmlkZW8oc3JjOnN0cmluZyl7XHJcbiAgICB0aGlzLmF2YXRhclZpZGVvLnBsYXkoc3JjKTtcclxuXHJcbiAgICAvLyB0aGlzLmF2YXRhclZpZGVvLm5hdGl2ZUVsZW1lbnQuYXV0b3BsYXkgPSB0cnVlO1xyXG4gICAgLy8gdGhpcy5hdmF0YXJWaWRlby5uYXRpdmVFbGVtZW50Lmxvb3AgPSB0cnVlO1xyXG4gICAgLy8gdGhpcy5hdmF0YXJWaWRlby5uYXRpdmVFbGVtZW50LmNvbnRyb2xzID0gZmFsc2U7XHJcbiAgICAvLyB0aGlzLmF2YXRhclZpZGVvLm5hdGl2ZUVsZW1lbnQuc3JjID0gc3JjO1xyXG4gICAgLy8gdGhpcy5hdmF0YXJWaWRlby5uYXRpdmVFbGVtZW50LnBsYXkoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInBhZ2VcIj5cclxuICAgIDxpb24tdG9vbGJhcj5cclxuICAgICAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCI+XHJcbiAgICAgICAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJnb0JhY2soKVwiPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjaGV2cm9uLWJhY2stb3V0bGluZVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgIDwvaW9uLWJ1dHRvbnM+XHJcbiAgICAgICAgPGlvbi1idXR0b25zIHNsb3Q9XCJlbmRcIj5cclxuICAgICAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImNsb3NlKClcIj4gPGlvbi1pY29uIG5hbWU9XCJjaGV2cm9uLWNvbGxhcHNlLW91dGxpbmVcIj48L2lvbi1pY29uPiA8L2lvbi1idXR0b24+XHJcbiAgICAgICAgPC9pb24tYnV0dG9ucz5cclxuICAgIDwvaW9uLXRvb2xiYXI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyXCIgW2NsYXNzXT1cImFuaW1DbGFzc1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhdmF0YXItcGhvdG9cIj5cclxuICAgICAgICAgICAgPGZtLXZpZGVvICNhdmF0YXJWaWRlbyBhbHQ9XCJcIj48L2ZtLXZpZGVvPlxyXG4gICAgICAgICAgICA8IS0tIOmfs+mikeazouWKqCAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlY29yZC13YXZlLWF2YXRhclwiPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj4iXX0=
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/avatar/comp-avatar-role-video/comp-avatar-role-video.component.mjs
7
+ */
8
+ import{Component,Input,ViewChild,Output,EventEmitter}from"@angular/core";import{CommonModule}from"@angular/common";import Recorder from"recorder-core";import"../../voice/lib/recorder/extension-waveview";import{FmodeParse,FmodeObject}from"@fmode/parse";import{FormsModule}from"@angular/forms";import{FmodeChat}from"../../service-fmai/service-chat/chat-class";import{FmVideoComponent}from"../../../video";import{IonButton,IonButtons,IonIcon,IonToolbar,NavController}from"@ionic/angular/standalone";import*as i0 from"@angular/core";import*as i1 from"@ionic/angular/standalone";const Parse=FmodeParse.with("nova");export class CompAvatarRoleVideoComponent{constructor(t){this.navCtrl=t,this.animClass="waiting",this.onClose=new EventEmitter,this.goBack=()=>{this.navCtrl.back()},this.videoMap={}}close(){this.onClose.emit(!0),this.fmodeChat.isAvatarShow=!1}playWave(){!this.wave&&Recorder.WaveView&&(this.wave=Recorder.WaveView({elem:".record-wave-avatar",keep:!1}));let t=function generatePowerLevel(){return 100*Math.random()}();this.waveInterval=setInterval((()=>{let o=function generateSampleRate(){const t=[44100,48e3,88200,96e3];return t[Math.floor(Math.random()*t.length)]}(),n=function generatePcmData(t){const o=[];for(let n=0;n<t;n++)o.push(Math.floor(65536*Math.random())-32768);return o}(1e3);this.wave.input(n,t,o)}),40)}stopWave(){clearInterval(this.waveInterval)}ngAfterViewInit(){}ngOnInit(){setTimeout((()=>{this.videoMap=this.fmodeChat.avatarConfig?.video,this.playVideo(this.videoMap?.waiting),this.fmodeChat.playAnimation=this.playAnimation}),1500)}playAnimation(){let t=this;return o=>{t.animClass=o,t.stopWave(),t.playVideo(t.videoMap[o])}}playVideo(t){this.avatarVideo.play(t)}static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:CompAvatarRoleVideoComponent,deps:[{token:i1.NavController}],target:i0.ɵɵFactoryTarget.Component})}static{this.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"17.3.12",type:CompAvatarRoleVideoComponent,isStandalone:!0,selector:"fm-avatar-role-video",inputs:{fmodeChat:"fmodeChat",role:"role",goBack:"goBack"},outputs:{onClose:"onClose"},viewQueries:[{propertyName:"avatarVideo",first:!0,predicate:FmVideoComponent,descendants:!0}],ngImport:i0,template:'<div class="page">\n <ion-toolbar>\n <ion-buttons slot="start">\n <ion-button (click)="goBack()">\n <ion-icon name="chevron-back-outline"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-buttons slot="end">\n <ion-button (click)="close()"> <ion-icon name="chevron-collapse-outline"></ion-icon> </ion-button>\n </ion-buttons>\n </ion-toolbar>\n <div class="avatar" [class]="animClass">\n <div class="avatar-photo">\n <fm-video #avatarVideo alt=""></fm-video>\n \x3c!-- 音频波动 --\x3e\n <div class="record-wave-avatar">\n </div>\n </div>\n </div>\n</div>',styles:["ion-toolbar{position:fixed;top:0;left:0;width:100vw;--background:transparent}.page{position:relative;width:100vw;height:100%;top:0;left:0;display:flex;justify-content:center;align-items:center;background-color:#000}.avatar{height:100%;width:100%;display:flex;justify-content:center;align-items:center}.avatar .avatar-photo{position:relative;display:flex;justify-content:center;width:80%;max-height:100%}.avatar .avatar-photo fm-video{border-radius:50%;max-height:100%;max-width:100%}.avatar .record-wave-avatar{height:50px;width:100%;position:absolute;float:left;left:0;bottom:0}.thinking,.listening,.waiting,.talking{animation-duration:2s;animation-play-state:running;animation-iteration-count:infinite;animation-timing-function:ease-in-out}@keyframes waitingAnimation{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}@keyframes thinkingAnimation{0%{transform:rotate(0)}30%{transform:rotate(10deg)}60%{transform:rotate(-10deg)}to{transform:rotate(0)}}\n"],dependencies:[{kind:"ngmodule",type:CommonModule},{kind:"ngmodule",type:FormsModule},{kind:"component",type:FmVideoComponent,selector:"fm-video",inputs:["url","canvasStyle"]},{kind:"component",type:IonIcon,selector:"ion-icon",inputs:["color","flipRtl","icon","ios","lazy","md","mode","name","sanitize","size","src"]},{kind:"component",type:IonToolbar,selector:"ion-toolbar",inputs:["color","mode"]},{kind:"component",type:IonButtons,selector:"ion-buttons",inputs:["collapse"]},{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"]}]})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:CompAvatarRoleVideoComponent,decorators:[{type:Component,args:[{selector:"fm-avatar-role-video",standalone:!0,imports:[CommonModule,FormsModule,FmVideoComponent,IonIcon,IonToolbar,IonButtons,IonButton],template:'<div class="page">\n <ion-toolbar>\n <ion-buttons slot="start">\n <ion-button (click)="goBack()">\n <ion-icon name="chevron-back-outline"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-buttons slot="end">\n <ion-button (click)="close()"> <ion-icon name="chevron-collapse-outline"></ion-icon> </ion-button>\n </ion-buttons>\n </ion-toolbar>\n <div class="avatar" [class]="animClass">\n <div class="avatar-photo">\n <fm-video #avatarVideo alt=""></fm-video>\n \x3c!-- 音频波动 --\x3e\n <div class="record-wave-avatar">\n </div>\n </div>\n </div>\n</div>',styles:["ion-toolbar{position:fixed;top:0;left:0;width:100vw;--background:transparent}.page{position:relative;width:100vw;height:100%;top:0;left:0;display:flex;justify-content:center;align-items:center;background-color:#000}.avatar{height:100%;width:100%;display:flex;justify-content:center;align-items:center}.avatar .avatar-photo{position:relative;display:flex;justify-content:center;width:80%;max-height:100%}.avatar .avatar-photo fm-video{border-radius:50%;max-height:100%;max-width:100%}.avatar .record-wave-avatar{height:50px;width:100%;position:absolute;float:left;left:0;bottom:0}.thinking,.listening,.waiting,.talking{animation-duration:2s;animation-play-state:running;animation-iteration-count:infinite;animation-timing-function:ease-in-out}@keyframes waitingAnimation{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}@keyframes thinkingAnimation{0%{transform:rotate(0)}30%{transform:rotate(10deg)}60%{transform:rotate(-10deg)}to{transform:rotate(0)}}\n"]}]}],ctorParameters:()=>[{type:i1.NavController}],propDecorators:{avatarVideo:[{type:ViewChild,args:[FmVideoComponent]}],fmodeChat:[{type:Input}],role:[{type:Input}],onClose:[{type:Output}],goBack:[{type:Input}]}});
9
+ var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9haWdjL2F2YXRhci9jb21wLWF2YXRhci1yb2xlLXZpZGVvL2NvbXAtYXZhdGFyLXJvbGUtdmlkZW8uY29tcG9uZW50Lm1qcw==`
10
+
@@ -1,113 +1,10 @@
1
- import { Component, ElementRef, ViewChild } from '@angular/core';
2
- import { FmodeVoiceService } from '../../voice';
3
- import { ChatService } from '../../service-fmai/service-chat';
4
- import { IonicModule, NavController, Platform, ModalController } from "@ionic/angular";
5
- import { CommonModule } from '@angular/common';
6
- import { CompAvatarParticleComponent } from "../comp-avatar-particle/comp-avatar-particle.component";
7
- import { CompAvatarRoleImageComponent } from "../comp-avatar-role-image/comp-avatar-role-image.component";
8
- import { FormsModule } from '@angular/forms';
9
- import { ActivatedRoute, Router, RouterModule } from '@angular/router';
10
- import * as Parse from "parse";
11
- import { NovaCloudService } from '../../../nova-cloud/nova-cloud.service';
12
- import { HidexmlPipe } from '../../service-fmai/service-chat';
13
- import { ModalChatVoiceInputComponent } from '../modal-chat-voice-input/modal-chat-voice-input.component';
14
- // import { Diagnostic } from '@awesome-cordova-plugins/diagnostic/ngx';
15
- import { Diagnostic } from '@awesome-cordova-plugins/diagnostic/ngx';
16
- import * as i0 from "@angular/core";
17
- import * as i1 from "@angular/router";
18
- import * as i2 from "@ionic/angular";
19
- import * as i3 from "../../service-fmai/service-chat";
20
- import * as i4 from "../../../nova-cloud/nova-cloud.service";
21
- import * as i5 from "@awesome-cordova-plugins/diagnostic/ngx";
22
- import * as i6 from "@angular/common";
23
- export class CompAvatarTalkComponent {
24
- constructor(router, navCtrl, route, chatServ, ncloud, platform, diagnostic) {
25
- this.router = router;
26
- this.navCtrl = navCtrl;
27
- this.route = route;
28
- this.chatServ = chatServ;
29
- this.ncloud = ncloud;
30
- this.platform = platform;
31
- this.diagnostic = diagnostic;
32
- this.voiceServ = new FmodeVoiceService(this.platform, this.diagnostic);
33
- this.route.paramMap.subscribe(params => {
34
- this.roleId = params.get("roleId");
35
- this.loadAvatarRole(this.roleId);
36
- });
37
- // 切换黑暗模式
38
- document.body.classList.add('dark');
39
- }
40
- ngOnInit() {
41
- }
42
- ngOnDestroy() {
43
- document.body.classList.remove('dark');
44
- this.voiceServ.resultText = null;
45
- if (this.fmodeChat) {
46
- this.fmodeChat.latestAIResponse = null;
47
- }
48
- }
49
- goBack() {
50
- document.body.classList.remove('dark');
51
- let backUrl = this.avatarRole?.get("backUrl");
52
- try {
53
- if (backUrl) {
54
- this.navCtrl.navigateRoot(backUrl);
55
- return;
56
- }
57
- this.navCtrl.navigateRoot('/chat/pro/role/' + this.roleId);
58
- }
59
- catch (err) {
60
- this.navCtrl.navigateRoot('/chat/pro/role/' + this.roleId);
61
- }
62
- }
63
- // 根据ID加载数字角色
64
- async loadAvatarRole(roleId) {
65
- let query = new Parse.Query("AvatarRole");
66
- this.avatarRole = await query.get(roleId);
67
- let chat = await this.chatServ.createNewRoleChat(this.roleId);
68
- chat.isTalkMode = true;
69
- this.fmodeChat = chat;
70
- this.fmodeChat.showAvatar();
71
- }
72
- ngAfterViewInit() {
73
- this.listenDivChange();
74
- }
75
- listenDivChange() {
76
- // 创建 MutationObserver 实例
77
- let observer = new MutationObserver(() => {
78
- this.scrollToBottom(this.aiRespComp);
79
- });
80
- // 配置观察选项
81
- let config = { childList: true, subtree: true, attributes: true };
82
- // 开始观察
83
- observer.observe(this.aiRespComp.nativeElement, config);
84
- }
85
- scrollToBottom(comp) {
86
- if (comp?.nativeElement?.scrollHeight) {
87
- comp.nativeElement.scrollTop = comp.nativeElement.scrollHeight;
88
- }
89
- }
90
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CompAvatarTalkComponent, deps: [{ token: i1.Router }, { token: i2.NavController }, { token: i1.ActivatedRoute }, { token: i3.ChatService }, { token: i4.NovaCloudService }, { token: i2.Platform }, { token: i5.Diagnostic }], target: i0.ɵɵFactoryTarget.Component }); }
91
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CompAvatarTalkComponent, isStandalone: true, selector: "app-comp-avatar-talk", providers: [
92
- NovaCloudService, ChatService, Diagnostic,
93
- ModalController,
94
- ], viewQueries: [{ propertyName: "avatarComp", first: true, predicate: ["avatar"], descendants: true }, { propertyName: "aiRespComp", first: true, predicate: ["aiRespComp"], descendants: true }], ngImport: i0, template: "<ion-menu #menu contentId=\"main-content\" side=\"end\">\r\n <ion-header>\r\n <ion-toolbar>\r\n <ion-title>\u8D44\u6599</ion-title>\r\n </ion-toolbar>\r\n </ion-header>\r\n <ion-content class=\"ion-padding\">\r\n\r\n <ion-card style=\"margin: 0px;\">\r\n <img [src]=\"avatarRole?.get('thumb')\" alt=\"\">\r\n <ion-card-header>\r\n <ion-card-subtitle>{{avatarRole?.get('tags')}}</ion-card-subtitle>\r\n <ion-card-title>{{avatarRole?.get(\"name\")}}</ion-card-title>\r\n </ion-card-header>\r\n \r\n <ion-card-content>\r\n {{avatarRole?.get(\"desc\")}}\r\n\r\n <ion-list [inset]=\"true\" style=\"margin:0px;\">\r\n <!-- <ion-item>\r\n <ion-avatar *ngIf=\"avatarRole?.get('thumb')\" aria-hidden=\"true\" slot=\"start\">\r\n <img [src]=\"avatarRole?.get('thumb')\" />\r\n </ion-avatar>\r\n <ion-label>{{avatarRole?.get(\"name\")}}</ion-label>\r\n </ion-item> -->\r\n <ion-item lines=\"none\" *ngIf=\"avatarRole?.get('age')\">\r\n <ion-note slot=\"start\">\u5E74\u9F84</ion-note>\r\n <ion-label>{{avatarRole?.get(\"age\")}}</ion-label>\r\n </ion-item>\r\n <ion-item lines=\"none\" *ngIf=\"avatarRole?.get('gender')\">\r\n <ion-note slot=\"start\">\u6027\u522B</ion-note>\r\n <ion-label>{{avatarRole?.get(\"gender\")}}</ion-label>\r\n </ion-item>\r\n <ion-item lines=\"none\">\r\n <ion-note slot=\"start\">\u79F0\u53F7</ion-note>\r\n <ion-label>{{avatarRole?.get(\"title\")}}</ion-label>\r\n </ion-item>\r\n \r\n <ion-item lines=\"none\">\r\n <ion-note slot=\"start\">\u64C5\u957F</ion-note>\r\n <ion-label>{{avatarRole?.get(\"tags\")?.join(',')}}</ion-label>\r\n </ion-item>\r\n\r\n </ion-list>\r\n </ion-card-content>\r\n </ion-card>\r\n \r\n \r\n \r\n </ion-content>\r\n</ion-menu>\r\n\r\n<div class=\"ion-page\" id=\"main-content\">\r\n <ion-header class=\"ion-no-border\">\r\n <ion-toolbar>\r\n <ion-buttons slot=\"start\">\r\n <ion-button (click)=\"goBack()\"> <ion-icon name=\"chevron-back-outline\"></ion-icon> </ion-button>\r\n </ion-buttons>\r\n <ion-title>\r\n <ion-chip *ngIf=\"avatarRole?.get('title')\">{{avatarRole?.get(\"title\")}}</ion-chip>\r\n </ion-title>\r\n <ion-buttons slot=\"end\">\r\n <!-- <ion-button (click)=\"playTTSTeting()\">TTS\u6D4B\u8BD5</ion-button> -->\r\n {{avatarRole?.get(\"name\")}}\r\n <ion-button (click)=\"menu.toggle()\"> <ion-icon name=\"ellipsis-horizontal-outline\"></ion-icon> </ion-button>\r\n </ion-buttons>\r\n </ion-toolbar>\r\n </ion-header>\r\n\r\n <!-- <ion-segment value=\"voice\">\r\n <ion-segment-button (click)=\"chatServ.createChatPanel(avatarRole)\" value=\"chat\">\r\n <ion-label>\u804A\u5929</ion-label>\r\n </ion-segment-button>\r\n <ion-segment-button routerLink=\"{{'/avatar/role/'+avatarRole?.id}}\" value=\"voice\">\r\n <ion-label>\u8BED\u97F3</ion-label>\r\n </ion-segment-button>\r\n </ion-segment> -->\r\n\r\n <!-- \u6570\u5B57\u5F62\u8C61\uFF1A\u52A8\u753B\u6548\u679C -->\r\n <fm-avatar-role-image *ngIf=\"avatarRole&&fmodeChat\" [fmodeChat]=\"fmodeChat\" [role]=\"avatarRole\" #avatar class=\"avatar\"></fm-avatar-role-image>\r\n <!-- <fm-avatar-role-particle #avatar class=\"avatar\"></fm-avatar-role-particle> -->\r\n\r\n <!-- AI\u56DE\u590D\u7684\u6700\u65B0\u6D88\u606F -->\r\n <div class=\"ai-resp-input\" #aiRespComp>{{fmodeChat?.latestAIResponse | hidexml}}</div>\r\n\r\n <fm-modal-chat-voice-input *ngIf=\"fmodeChat\" [fmodeChat]=\"fmodeChat\"></fm-modal-chat-voice-input>\r\n\r\n</div>\r\n\r\n", styles: ["ion-menu ion-note{color:#ccc;font-weight:700}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.avatar{display:block;width:100%;height:100%}.ai-resp-input{font-size:1rem;color:#fff;position:fixed;top:60px;max-height:15vh;overflow-y:scroll;padding:0 10px}.user-asr-input{font-size:1rem;color:#fff;position:fixed;bottom:6vh;padding:0 10px}.test-button-group{color:#00f;position:fixed;bottom:20vh}.test-button-group button{padding:10px;margin:10px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: RouterModule }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: IonicModule }, { kind: "component", type: i2.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: i2.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i2.IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i2.IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: i2.IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: i2.IonCardSubtitle, selector: "ion-card-subtitle", inputs: ["color", "mode"] }, { kind: "component", type: i2.IonCardTitle, selector: "ion-card-title", inputs: ["color", "mode"] }, { kind: "component", type: i2.IonChip, selector: "ion-chip", inputs: ["color", "disabled", "mode", "outline"] }, { kind: "component", type: i2.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i2.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i2.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i2.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i2.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i2.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i2.IonMenu, selector: "ion-menu", inputs: ["contentId", "disabled", "maxEdgeStart", "menuId", "side", "swipeGesture", "type"] }, { kind: "component", type: i2.IonNote, selector: "ion-note", inputs: ["color", "mode"] }, { kind: "component", type: i2.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i2.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: CompAvatarRoleImageComponent, selector: "fm-avatar-role-image", inputs: ["fmodeChat", "role"] }, { kind: "component", type: ModalChatVoiceInputComponent, selector: "fm-modal-chat-voice-input", inputs: ["fmodeChat", "talkMode"] }, { kind: "pipe", type: HidexmlPipe, name: "hidexml" }] }); }
95
- }
96
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CompAvatarTalkComponent, decorators: [{
97
- type: Component,
98
- args: [{ selector: 'app-comp-avatar-talk', standalone: true, imports: [
99
- CommonModule, RouterModule, FormsModule, IonicModule, CompAvatarParticleComponent, CompAvatarRoleImageComponent,
100
- ModalChatVoiceInputComponent,
101
- HidexmlPipe
102
- ], providers: [
103
- NovaCloudService, ChatService, Diagnostic,
104
- ModalController,
105
- ], template: "<ion-menu #menu contentId=\"main-content\" side=\"end\">\r\n <ion-header>\r\n <ion-toolbar>\r\n <ion-title>\u8D44\u6599</ion-title>\r\n </ion-toolbar>\r\n </ion-header>\r\n <ion-content class=\"ion-padding\">\r\n\r\n <ion-card style=\"margin: 0px;\">\r\n <img [src]=\"avatarRole?.get('thumb')\" alt=\"\">\r\n <ion-card-header>\r\n <ion-card-subtitle>{{avatarRole?.get('tags')}}</ion-card-subtitle>\r\n <ion-card-title>{{avatarRole?.get(\"name\")}}</ion-card-title>\r\n </ion-card-header>\r\n \r\n <ion-card-content>\r\n {{avatarRole?.get(\"desc\")}}\r\n\r\n <ion-list [inset]=\"true\" style=\"margin:0px;\">\r\n <!-- <ion-item>\r\n <ion-avatar *ngIf=\"avatarRole?.get('thumb')\" aria-hidden=\"true\" slot=\"start\">\r\n <img [src]=\"avatarRole?.get('thumb')\" />\r\n </ion-avatar>\r\n <ion-label>{{avatarRole?.get(\"name\")}}</ion-label>\r\n </ion-item> -->\r\n <ion-item lines=\"none\" *ngIf=\"avatarRole?.get('age')\">\r\n <ion-note slot=\"start\">\u5E74\u9F84</ion-note>\r\n <ion-label>{{avatarRole?.get(\"age\")}}</ion-label>\r\n </ion-item>\r\n <ion-item lines=\"none\" *ngIf=\"avatarRole?.get('gender')\">\r\n <ion-note slot=\"start\">\u6027\u522B</ion-note>\r\n <ion-label>{{avatarRole?.get(\"gender\")}}</ion-label>\r\n </ion-item>\r\n <ion-item lines=\"none\">\r\n <ion-note slot=\"start\">\u79F0\u53F7</ion-note>\r\n <ion-label>{{avatarRole?.get(\"title\")}}</ion-label>\r\n </ion-item>\r\n \r\n <ion-item lines=\"none\">\r\n <ion-note slot=\"start\">\u64C5\u957F</ion-note>\r\n <ion-label>{{avatarRole?.get(\"tags\")?.join(',')}}</ion-label>\r\n </ion-item>\r\n\r\n </ion-list>\r\n </ion-card-content>\r\n </ion-card>\r\n \r\n \r\n \r\n </ion-content>\r\n</ion-menu>\r\n\r\n<div class=\"ion-page\" id=\"main-content\">\r\n <ion-header class=\"ion-no-border\">\r\n <ion-toolbar>\r\n <ion-buttons slot=\"start\">\r\n <ion-button (click)=\"goBack()\"> <ion-icon name=\"chevron-back-outline\"></ion-icon> </ion-button>\r\n </ion-buttons>\r\n <ion-title>\r\n <ion-chip *ngIf=\"avatarRole?.get('title')\">{{avatarRole?.get(\"title\")}}</ion-chip>\r\n </ion-title>\r\n <ion-buttons slot=\"end\">\r\n <!-- <ion-button (click)=\"playTTSTeting()\">TTS\u6D4B\u8BD5</ion-button> -->\r\n {{avatarRole?.get(\"name\")}}\r\n <ion-button (click)=\"menu.toggle()\"> <ion-icon name=\"ellipsis-horizontal-outline\"></ion-icon> </ion-button>\r\n </ion-buttons>\r\n </ion-toolbar>\r\n </ion-header>\r\n\r\n <!-- <ion-segment value=\"voice\">\r\n <ion-segment-button (click)=\"chatServ.createChatPanel(avatarRole)\" value=\"chat\">\r\n <ion-label>\u804A\u5929</ion-label>\r\n </ion-segment-button>\r\n <ion-segment-button routerLink=\"{{'/avatar/role/'+avatarRole?.id}}\" value=\"voice\">\r\n <ion-label>\u8BED\u97F3</ion-label>\r\n </ion-segment-button>\r\n </ion-segment> -->\r\n\r\n <!-- \u6570\u5B57\u5F62\u8C61\uFF1A\u52A8\u753B\u6548\u679C -->\r\n <fm-avatar-role-image *ngIf=\"avatarRole&&fmodeChat\" [fmodeChat]=\"fmodeChat\" [role]=\"avatarRole\" #avatar class=\"avatar\"></fm-avatar-role-image>\r\n <!-- <fm-avatar-role-particle #avatar class=\"avatar\"></fm-avatar-role-particle> -->\r\n\r\n <!-- AI\u56DE\u590D\u7684\u6700\u65B0\u6D88\u606F -->\r\n <div class=\"ai-resp-input\" #aiRespComp>{{fmodeChat?.latestAIResponse | hidexml}}</div>\r\n\r\n <fm-modal-chat-voice-input *ngIf=\"fmodeChat\" [fmodeChat]=\"fmodeChat\"></fm-modal-chat-voice-input>\r\n\r\n</div>\r\n\r\n", styles: ["ion-menu ion-note{color:#ccc;font-weight:700}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.avatar{display:block;width:100%;height:100%}.ai-resp-input{font-size:1rem;color:#fff;position:fixed;top:60px;max-height:15vh;overflow-y:scroll;padding:0 10px}.user-asr-input{font-size:1rem;color:#fff;position:fixed;bottom:6vh;padding:0 10px}.test-button-group{color:#00f;position:fixed;bottom:20vh}.test-button-group button{padding:10px;margin:10px}\n"] }]
106
- }], ctorParameters: () => [{ type: i1.Router }, { type: i2.NavController }, { type: i1.ActivatedRoute }, { type: i3.ChatService }, { type: i4.NovaCloudService }, { type: i2.Platform }, { type: i5.Diagnostic }], propDecorators: { avatarComp: [{
107
- type: ViewChild,
108
- args: ["avatar"]
109
- }], aiRespComp: [{
110
- type: ViewChild,
111
- args: ["aiRespComp"]
112
- }] } });
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcC1hdmF0YXItdGFsay5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mbW9kZS1uZy9zcmMvbGliL2FpZ2MvYXZhdGFyL2NvbXAtYXZhdGFyLXRhbGsvY29tcC1hdmF0YXItdGFsay5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mbW9kZS1uZy9zcmMvbGliL2FpZ2MvYXZhdGFyL2NvbXAtYXZhdGFyLXRhbGsvY29tcC1hdmF0YXItdGFsay5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxVQUFVLEVBQW9CLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBdUIsTUFBTSxpQ0FBaUMsQ0FBQztBQUVuRixPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUMsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDckYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLHdEQUF3RCxDQUFBO0FBQ2xHLE9BQU8sRUFBQyw0QkFBNEIsRUFBQyxNQUFNLDREQUE0RCxDQUFBO0FBQ3ZHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RSxPQUFPLEtBQUssS0FBSyxNQUFNLE9BQU8sQ0FBQTtBQUM5QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMxRSxPQUFPLEVBQVksV0FBVyxFQUFFLE1BQU0saUNBQWlD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LFdBQVc7cUJBQ1osYUFDUzt3QkFDUixnQkFBZ0IsRUFBQyxXQUFXLEVBQUMsVUFBVTt3QkFDdkMsZUFBZTtxQkFDaEI7Nk9BS3NCLFVBQVU7c0JBQTlCLFNBQVM7dUJBQUMsUUFBUTtnQkE4RE0sVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25EZXN0cm95LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm1vZGVWb2ljZVNlcnZpY2UgfSBmcm9tICcuLi8uLi92b2ljZSc7XHJcbmltcG9ydCB7IENoYXRTZXJ2aWNlLCBGbW9kZUNoYXRDb21wbGV0aW9uIH0gZnJvbSAnLi4vLi4vc2VydmljZS1mbWFpL3NlcnZpY2UtY2hhdCc7XHJcbmltcG9ydCB7IEZtb2RlQXZhdGFyUm9sZUNvbXAgfSBmcm9tICcuLi9pbnRlcmZhY2UtYXZhdGFyLXJvbGUnO1xyXG5pbXBvcnQgeyBJb25pY01vZHVsZSwgTmF2Q29udHJvbGxlciwgUGxhdGZvcm0sTW9kYWxDb250cm9sbGVyIH0gZnJvbSBcIkBpb25pYy9hbmd1bGFyXCJcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtDb21wQXZhdGFyUGFydGljbGVDb21wb25lbnR9IGZyb20gXCIuLi9jb21wLWF2YXRhci1wYXJ0aWNsZS9jb21wLWF2YXRhci1wYXJ0aWNsZS5jb21wb25lbnRcIlxyXG5pbXBvcnQge0NvbXBBdmF0YXJSb2xlSW1hZ2VDb21wb25lbnR9IGZyb20gXCIuLi9jb21wLWF2YXRhci1yb2xlLWltYWdlL2NvbXAtYXZhdGFyLXJvbGUtaW1hZ2UuY29tcG9uZW50XCJcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIsIFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCAqIGFzIFBhcnNlIGZyb20gXCJwYXJzZVwiXHJcbmltcG9ydCB7IE5vdmFDbG91ZFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9ub3ZhLWNsb3VkL25vdmEtY2xvdWQuc2VydmljZSc7XHJcbmltcG9ydCB7IEZtb2RlQ2hhdCxIaWRleG1sUGlwZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UtZm1haS9zZXJ2aWNlLWNoYXQnO1xyXG5pbXBvcnQgeyBNb2RhbENoYXRWb2ljZUlucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vbW9kYWwtY2hhdC12b2ljZS1pbnB1dC9tb2RhbC1jaGF0LXZvaWNlLWlucHV0LmNvbXBvbmVudCc7XHJcbi8vIGltcG9ydCB7IERpYWdub3N0aWMgfSBmcm9tICdAYXdlc29tZS1jb3Jkb3ZhLXBsdWdpbnMvZGlhZ25vc3RpYy9uZ3gnO1xyXG5pbXBvcnQgeyBEaWFnbm9zdGljIH0gZnJvbSAnQGF3ZXNvbWUtY29yZG92YS1wbHVnaW5zL2RpYWdub3N0aWMvbmd4JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXBwLWNvbXAtYXZhdGFyLXRhbGsnLFxyXG4gIHN0YW5kYWxvbmU6dHJ1ZSxcclxuICBpbXBvcnRzOltcclxuICAgIENvbW1vbk1vZHVsZSxSb3V0ZXJNb2R1bGUsRm9ybXNNb2R1bGUsSW9uaWNNb2R1bGUsQ29tcEF2YXRhclBhcnRpY2xlQ29tcG9uZW50LENvbXBBdmF0YXJSb2xlSW1hZ2VDb21wb25lbnQsXHJcbiAgICBNb2RhbENoYXRWb2ljZUlucHV0Q29tcG9uZW50LFxyXG4gICAgSGlkZXhtbFBpcGVcclxuICBdLFxyXG4gIHByb3ZpZGVyczpbXHJcbiAgICBOb3ZhQ2xvdWRTZXJ2aWNlLENoYXRTZXJ2aWNlLERpYWdub3N0aWMsXHJcbiAgICBNb2RhbENvbnRyb2xsZXIsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29tcC1hdmF0YXItdGFsay5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29tcC1hdmF0YXItdGFsay5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb21wQXZhdGFyVGFsa0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsT25EZXN0cm95e1xyXG4gICAgQFZpZXdDaGlsZChcImF2YXRhclwiKSBhdmF0YXJDb21wOkZtb2RlQXZhdGFyUm9sZUNvbXBcclxuICAgIHJvbGVJZDpzdHJpbmdcclxuICAgIGF2YXRhclJvbGU6UGFyc2UuT2JqZWN0O1xyXG4gICAgZm1vZGVDaGF0OkZtb2RlQ2hhdDtcclxuICAgIHZvaWNlU2VydjpGbW9kZVZvaWNlU2VydmljZVxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgIHByaXZhdGUgcm91dGVyOlJvdXRlcixcclxuICAgICAgcHJpdmF0ZSBuYXZDdHJsOk5hdkNvbnRyb2xsZXIsXHJcbiAgICAgIHByaXZhdGUgcm91dGU6QWN0aXZhdGVkUm91dGUsXHJcbiAgICAgIHB1YmxpYyBjaGF0U2VydjpDaGF0U2VydmljZSxcclxuICAgICAgcHJpdmF0ZSBuY2xvdWQ6Tm92YUNsb3VkU2VydmljZSxcclxuICAgICAgcHJpdmF0ZSBwbGF0Zm9ybTpQbGF0Zm9ybSxcclxuICAgICAgcHJpdmF0ZSBkaWFnbm9zdGljOkRpYWdub3N0aWNcclxuICAgICl7XHJcbiAgICAgIHRoaXMudm9pY2VTZXJ2ID0gbmV3IEZtb2RlVm9pY2VTZXJ2aWNlKHRoaXMucGxhdGZvcm0sdGhpcy5kaWFnbm9zdGljKTtcclxuXHJcbiAgICAgIHRoaXMucm91dGUucGFyYW1NYXAuc3Vic2NyaWJlKHBhcmFtcz0+e1xyXG4gICAgICAgIHRoaXMucm9sZUlkID0gcGFyYW1zLmdldChcInJvbGVJZFwiKTtcclxuICAgICAgICB0aGlzLmxvYWRBdmF0YXJSb2xlKHRoaXMucm9sZUlkKVxyXG4gICAgICB9KVxyXG4gICAgICAvLyDliIfmjaLpu5HmmpfmqKHlvI9cclxuICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdkYXJrJyk7XHJcbiAgICB9XHJcbiAgIFxyXG4gICAgbmdPbkluaXQoKXtcclxuXHJcbiAgICB9XHJcbiAgICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdkYXJrJyk7XHJcbiAgICAgIHRoaXMudm9pY2VTZXJ2LnJlc3VsdFRleHQgPSBudWxsO1xyXG4gICAgICBpZih0aGlzLmZtb2RlQ2hhdCl7XHJcbiAgICAgICAgdGhpcy5mbW9kZUNoYXQubGF0ZXN0QUlSZXNwb25zZSA9IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGdvQmFjaygpe1xyXG4gICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ2RhcmsnKTtcclxuICAgICAgbGV0IGJhY2tVcmwgPSB0aGlzLmF2YXRhclJvbGU/LmdldChcImJhY2tVcmxcIilcclxuICAgICAgdHJ5e1xyXG4gICAgICAgIGlmKGJhY2tVcmwpe1xyXG4gICAgICAgICAgdGhpcy5uYXZDdHJsLm5hdmlnYXRlUm9vdChiYWNrVXJsKVxyXG4gICAgICAgICAgcmV0dXJuXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMubmF2Q3RybC5uYXZpZ2F0ZVJvb3QoJy9jaGF0L3Byby9yb2xlLycrdGhpcy5yb2xlSWQpXHJcbiAgICAgIH1jYXRjaChlcnIpe1xyXG4gICAgICAgIHRoaXMubmF2Q3RybC5uYXZpZ2F0ZVJvb3QoJy9jaGF0L3Byby9yb2xlLycrdGhpcy5yb2xlSWQpXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8vIOagueaNrklE5Yqg6L295pWw5a2X6KeS6ImyXHJcbiAgICBhc3luYyBsb2FkQXZhdGFyUm9sZShyb2xlSWQpe1xyXG4gICAgICBsZXQgcXVlcnkgPSBuZXcgUGFyc2UuUXVlcnkoXCJBdmF0YXJSb2xlXCIpXHJcbiAgICAgIHRoaXMuYXZhdGFyUm9sZSA9IGF3YWl0IHF1ZXJ5LmdldChyb2xlSWQpO1xyXG4gICAgICBsZXQgY2hhdCA9IGF3YWl0IHRoaXMuY2hhdFNlcnYuY3JlYXRlTmV3Um9sZUNoYXQodGhpcy5yb2xlSWQpXHJcbiAgICAgIGNoYXQuaXNUYWxrTW9kZSA9IHRydWU7XHJcbiAgICAgIHRoaXMuZm1vZGVDaGF0ID0gY2hhdDtcclxuICAgICAgdGhpcy5mbW9kZUNoYXQuc2hvd0F2YXRhcigpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKXtcclxuICBcclxuICAgICAgdGhpcy5saXN0ZW5EaXZDaGFuZ2UoKVxyXG4gICAgfVxyXG4gICAgQFZpZXdDaGlsZChcImFpUmVzcENvbXBcIikgYWlSZXNwQ29tcDpFbGVtZW50UmVmXHJcbiAgICBsaXN0ZW5EaXZDaGFuZ2UoKXtcclxuICAgICAgLy8g5Yib5bu6IE11dGF0aW9uT2JzZXJ2ZXIg5a6e5L6LXHJcbiAgICAgIGxldCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCgpID0+IHtcclxuICAgICAgICB0aGlzLnNjcm9sbFRvQm90dG9tKHRoaXMuYWlSZXNwQ29tcCk7XHJcbiAgICAgIH0pO1xyXG4gICAgICAvLyDphY3nva7op4Llr5/pgInpoblcclxuICAgICAgbGV0IGNvbmZpZyA9IHsgY2hpbGRMaXN0OiB0cnVlLCBzdWJ0cmVlOiB0cnVlLCBhdHRyaWJ1dGVzOnRydWUgfTtcclxuICAgICAgLy8g5byA5aeL6KeC5a+fXHJcbiAgICAgIG9ic2VydmVyLm9ic2VydmUodGhpcy5haVJlc3BDb21wLm5hdGl2ZUVsZW1lbnQsIGNvbmZpZyk7XHJcbiAgICB9XHJcbiAgICBzY3JvbGxUb0JvdHRvbShjb21wOkVsZW1lbnRSZWYpe1xyXG4gICAgICBpZihjb21wPy5uYXRpdmVFbGVtZW50Py5zY3JvbGxIZWlnaHQpe1xyXG4gICAgICAgIGNvbXAubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPSBjb21wLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBSeWTjeW6lOWGheWuuSBmbW9kZUNoYXQubGF0ZXN0QUlSZXNwb25zZVxyXG4gICAgICovXHJcbiAgICBcclxuICAgXHJcbn1cclxuIiwiPGlvbi1tZW51ICNtZW51IGNvbnRlbnRJZD1cIm1haW4tY29udGVudFwiIHNpZGU9XCJlbmRcIj5cclxuICA8aW9uLWhlYWRlcj5cclxuICAgIDxpb24tdG9vbGJhcj5cclxuICAgICAgPGlvbi10aXRsZT7otYTmlpk8L2lvbi10aXRsZT5cclxuICAgIDwvaW9uLXRvb2xiYXI+XHJcbiAgPC9pb24taGVhZGVyPlxyXG4gIDxpb24tY29udGVudCBjbGFzcz1cImlvbi1wYWRkaW5nXCI+XHJcblxyXG4gICAgPGlvbi1jYXJkIHN0eWxlPVwibWFyZ2luOiAwcHg7XCI+XHJcbiAgICAgIDxpbWcgW3NyY109XCJhdmF0YXJSb2xlPy5nZXQoJ3RodW1iJylcIiBhbHQ9XCJcIj5cclxuICAgICAgPGlvbi1jYXJkLWhlYWRlcj5cclxuICAgICAgICA8aW9uLWNhcmQtc3VidGl0bGU+e3thdmF0YXJSb2xlPy5nZXQoJ3RhZ3MnKX19PC9pb24tY2FyZC1zdWJ0aXRsZT5cclxuICAgICAgICA8aW9uLWNhcmQtdGl0bGU+e3thdmF0YXJSb2xlPy5nZXQoXCJuYW1lXCIpfX08L2lvbi1jYXJkLXRpdGxlPlxyXG4gICAgICA8L2lvbi1jYXJkLWhlYWRlcj5cclxuICAgIFxyXG4gICAgICA8aW9uLWNhcmQtY29udGVudD5cclxuICAgICAgICB7e2F2YXRhclJvbGU/LmdldChcImRlc2NcIil9fVxyXG5cclxuICAgICAgICAgICAgPGlvbi1saXN0IFtpbnNldF09XCJ0cnVlXCIgc3R5bGU9XCJtYXJnaW46MHB4O1wiPlxyXG4gICAgICAgICAgICAgIDwhLS0gPGlvbi1pdGVtPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1hdmF0YXIgKm5nSWY9XCJhdmF0YXJSb2xlPy5nZXQoJ3RodW1iJylcIiBhcmlhLWhpZGRlbj1cInRydWVcIiBzbG90PVwic3RhcnRcIj5cclxuICAgICAgICAgICAgICAgICAgPGltZyBbc3JjXT1cImF2YXRhclJvbGU/LmdldCgndGh1bWInKVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L2lvbi1hdmF0YXI+XHJcbiAgICAgICAgICAgICAgICA8aW9uLWxhYmVsPnt7YXZhdGFyUm9sZT8uZ2V0KFwibmFtZVwiKX19PC9pb24tbGFiZWw+XHJcbiAgICAgICAgICAgICAgPC9pb24taXRlbT4gLS0+XHJcbiAgICAgICAgICAgICAgPGlvbi1pdGVtIGxpbmVzPVwibm9uZVwiICpuZ0lmPVwiYXZhdGFyUm9sZT8uZ2V0KCdhZ2UnKVwiPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1ub3RlIHNsb3Q9XCJzdGFydFwiPuW5tOm+hDwvaW9uLW5vdGU+XHJcbiAgICAgICAgICAgICAgICA8aW9uLWxhYmVsPnt7YXZhdGFyUm9sZT8uZ2V0KFwiYWdlXCIpfX08L2lvbi1sYWJlbD5cclxuICAgICAgICAgICAgICA8L2lvbi1pdGVtPlxyXG4gICAgICAgICAgICAgIDxpb24taXRlbSBsaW5lcz1cIm5vbmVcIiAqbmdJZj1cImF2YXRhclJvbGU/LmdldCgnZ2VuZGVyJylcIj5cclxuICAgICAgICAgICAgICAgIDxpb24tbm90ZSBzbG90PVwic3RhcnRcIj7mgKfliKs8L2lvbi1ub3RlPlxyXG4gICAgICAgICAgICAgICAgPGlvbi1sYWJlbD57e2F2YXRhclJvbGU/LmdldChcImdlbmRlclwiKX19PC9pb24tbGFiZWw+XHJcbiAgICAgICAgICAgICAgPC9pb24taXRlbT5cclxuICAgICAgICAgICAgICA8aW9uLWl0ZW0gbGluZXM9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICA8aW9uLW5vdGUgc2xvdD1cInN0YXJ0XCI+56ew5Y+3PC9pb24tbm90ZT5cclxuICAgICAgICAgICAgICAgIDxpb24tbGFiZWw+e3thdmF0YXJSb2xlPy5nZXQoXCJ0aXRsZVwiKX19PC9pb24tbGFiZWw+XHJcbiAgICAgICAgICAgICAgPC9pb24taXRlbT5cclxuICAgICAgICBcclxuICAgICAgICAgICAgICA8aW9uLWl0ZW0gbGluZXM9XCJub25lXCI+XHJcbiAgICAgICAgICAgICAgICA8aW9uLW5vdGUgc2xvdD1cInN0YXJ0XCI+5pOF6ZW/PC9pb24tbm90ZT5cclxuICAgICAgICAgICAgICAgIDxpb24tbGFiZWw+e3thdmF0YXJSb2xlPy5nZXQoXCJ0YWdzXCIpPy5qb2luKCcsJyl9fTwvaW9uLWxhYmVsPlxyXG4gICAgICAgICAgICAgIDwvaW9uLWl0ZW0+XHJcblxyXG4gICAgICAgICAgICA8L2lvbi1saXN0PlxyXG4gICAgICAgICAgPC9pb24tY2FyZC1jb250ZW50PlxyXG4gICAgPC9pb24tY2FyZD5cclxuICAgIFxyXG4gIFxyXG4gICAgXHJcbiAgPC9pb24tY29udGVudD5cclxuPC9pb24tbWVudT5cclxuXHJcbjxkaXYgY2xhc3M9XCJpb24tcGFnZVwiIGlkPVwibWFpbi1jb250ZW50XCI+XHJcbiAgPGlvbi1oZWFkZXIgY2xhc3M9XCJpb24tbm8tYm9yZGVyXCI+XHJcbiAgICA8aW9uLXRvb2xiYXI+XHJcbiAgICAgIDxpb24tYnV0dG9ucyBzbG90PVwic3RhcnRcIj5cclxuICAgICAgICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwiZ29CYWNrKClcIj4gPGlvbi1pY29uIG5hbWU9XCJjaGV2cm9uLWJhY2stb3V0bGluZVwiPjwvaW9uLWljb24+IDwvaW9uLWJ1dHRvbj5cclxuICAgICAgPC9pb24tYnV0dG9ucz5cclxuICAgICAgPGlvbi10aXRsZT5cclxuICAgICAgICA8aW9uLWNoaXAgKm5nSWY9XCJhdmF0YXJSb2xlPy5nZXQoJ3RpdGxlJylcIj57e2F2YXRhclJvbGU/LmdldChcInRpdGxlXCIpfX08L2lvbi1jaGlwPlxyXG4gICAgICA8L2lvbi10aXRsZT5cclxuICAgICAgPGlvbi1idXR0b25zIHNsb3Q9XCJlbmRcIj5cclxuICAgICAgICA8IS0tIDxpb24tYnV0dG9uIChjbGljayk9XCJwbGF5VFRTVGV0aW5nKClcIj5UVFPmtYvor5U8L2lvbi1idXR0b24+IC0tPlxyXG4gICAgICAgIHt7YXZhdGFyUm9sZT8uZ2V0KFwibmFtZVwiKX19XHJcbiAgICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cIm1lbnUudG9nZ2xlKClcIj4gPGlvbi1pY29uIG5hbWU9XCJlbGxpcHNpcy1ob3Jpem9udGFsLW91dGxpbmVcIj48L2lvbi1pY29uPiA8L2lvbi1idXR0b24+XHJcbiAgICAgIDwvaW9uLWJ1dHRvbnM+XHJcbiAgICA8L2lvbi10b29sYmFyPlxyXG4gIDwvaW9uLWhlYWRlcj5cclxuXHJcbiAgPCEtLSA8aW9uLXNlZ21lbnQgdmFsdWU9XCJ2b2ljZVwiPlxyXG4gICAgPGlvbi1zZWdtZW50LWJ1dHRvbiAoY2xpY2spPVwiY2hhdFNlcnYuY3JlYXRlQ2hhdFBhbmVsKGF2YXRhclJvbGUpXCIgdmFsdWU9XCJjaGF0XCI+XHJcbiAgICAgIDxpb24tbGFiZWw+6IGK5aSpPC9pb24tbGFiZWw+XHJcbiAgICA8L2lvbi1zZWdtZW50LWJ1dHRvbj5cclxuICAgIDxpb24tc2VnbWVudC1idXR0b24gcm91dGVyTGluaz1cInt7Jy9hdmF0YXIvcm9sZS8nK2F2YXRhclJvbGU/LmlkfX1cIiB2YWx1ZT1cInZvaWNlXCI+XHJcbiAgICAgIDxpb24tbGFiZWw+6K+t6Z+zPC9pb24tbGFiZWw+XHJcbiAgICA8L2lvbi1zZWdtZW50LWJ1dHRvbj5cclxuICA8L2lvbi1zZWdtZW50PiAtLT5cclxuXHJcbiAgICA8IS0tIOaVsOWtl+W9ouixoe+8muWKqOeUu+aViOaenCAtLT5cclxuICAgIDxmbS1hdmF0YXItcm9sZS1pbWFnZSAqbmdJZj1cImF2YXRhclJvbGUmJmZtb2RlQ2hhdFwiIFtmbW9kZUNoYXRdPVwiZm1vZGVDaGF0XCIgW3JvbGVdPVwiYXZhdGFyUm9sZVwiICNhdmF0YXIgY2xhc3M9XCJhdmF0YXJcIj48L2ZtLWF2YXRhci1yb2xlLWltYWdlPlxyXG4gICAgPCEtLSA8Zm0tYXZhdGFyLXJvbGUtcGFydGljbGUgI2F2YXRhciBjbGFzcz1cImF2YXRhclwiPjwvZm0tYXZhdGFyLXJvbGUtcGFydGljbGU+IC0tPlxyXG5cclxuICAgIDwhLS0gQUnlm57lpI3nmoTmnIDmlrDmtojmga8gIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImFpLXJlc3AtaW5wdXRcIiAjYWlSZXNwQ29tcD57e2Ztb2RlQ2hhdD8ubGF0ZXN0QUlSZXNwb25zZSB8IGhpZGV4bWx9fTwvZGl2PlxyXG5cclxuICAgIDxmbS1tb2RhbC1jaGF0LXZvaWNlLWlucHV0ICpuZ0lmPVwiZm1vZGVDaGF0XCIgW2Ztb2RlQ2hhdF09XCJmbW9kZUNoYXRcIj48L2ZtLW1vZGFsLWNoYXQtdm9pY2UtaW5wdXQ+XHJcblxyXG48L2Rpdj5cclxuXHJcbiJdfQ==
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/avatar/comp-avatar-talk/comp-avatar-talk.component.mjs
7
+ */
8
+ import{Component,ElementRef,ViewChild}from"@angular/core";import{FmodeVoiceService}from"../../voice";import{ChatService}from"../../service-fmai/service-chat";import{IonicModule,NavController,Platform,ModalController}from"@ionic/angular";import{CommonModule}from"@angular/common";import{CompAvatarParticleComponent}from"../comp-avatar-particle/comp-avatar-particle.component";import{CompAvatarRoleImageComponent}from"../comp-avatar-role-image/comp-avatar-role-image.component";import{FormsModule}from"@angular/forms";import{ActivatedRoute,Router,RouterModule}from"@angular/router";import{FmodeParse}from"@fmode/parse";import{NovaCloudService}from"../../../nova-cloud/nova-cloud.service";import{HidexmlPipe}from"../../service-fmai/service-chat";import{ModalChatVoiceInputComponent}from"../modal-chat-voice-input/modal-chat-voice-input.component";import{Diagnostic}from"@awesome-cordova-plugins/diagnostic/ngx";import*as i0 from"@angular/core";import*as i1 from"@angular/router";import*as i2 from"@ionic/angular";import*as i3 from"../../service-fmai/service-chat";import*as i4 from"../../../nova-cloud/nova-cloud.service";import*as i5 from"@awesome-cordova-plugins/diagnostic/ngx";import*as i6 from"@angular/common";const Parse=FmodeParse.with("nova");export class CompAvatarTalkComponent{constructor(o,e,n,t,i,a,r){this.router=o,this.navCtrl=e,this.route=n,this.chatServ=t,this.ncloud=i,this.platform=a,this.diagnostic=r,this.voiceServ=new FmodeVoiceService(this.platform,this.diagnostic),this.route.paramMap.subscribe((o=>{this.roleId=o.get("roleId"),this.loadAvatarRole(this.roleId)})),document.body.classList.add("dark")}ngOnInit(){}ngOnDestroy(){document.body.classList.remove("dark"),this.voiceServ.resultText=null,this.fmodeChat&&(this.fmodeChat.latestAIResponse=null)}goBack(){document.body.classList.remove("dark");let o=this.avatarRole?.get("backUrl");try{if(o)return void this.navCtrl.navigateRoot(o);this.navCtrl.navigateRoot("/chat/pro/role/"+this.roleId)}catch(o){this.navCtrl.navigateRoot("/chat/pro/role/"+this.roleId)}}async loadAvatarRole(o){let e=new Parse.Query("AvatarRole");this.avatarRole=await e.get(o);let n=await this.chatServ.createNewRoleChat(this.roleId);n.isTalkMode=!0,this.fmodeChat=n,this.fmodeChat.showAvatar()}ngAfterViewInit(){this.listenDivChange()}listenDivChange(){new MutationObserver((()=>{this.scrollToBottom(this.aiRespComp)})).observe(this.aiRespComp.nativeElement,{childList:!0,subtree:!0,attributes:!0})}scrollToBottom(o){o?.nativeElement?.scrollHeight&&(o.nativeElement.scrollTop=o.nativeElement.scrollHeight)}static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:CompAvatarTalkComponent,deps:[{token:i1.Router},{token:i2.NavController},{token:i1.ActivatedRoute},{token:i3.ChatService},{token:i4.NovaCloudService},{token:i2.Platform},{token:i5.Diagnostic}],target:i0.ɵɵFactoryTarget.Component})}static{this.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"17.3.12",type:CompAvatarTalkComponent,isStandalone:!0,selector:"app-comp-avatar-talk",providers:[NovaCloudService,ChatService,Diagnostic,ModalController],viewQueries:[{propertyName:"avatarComp",first:!0,predicate:["avatar"],descendants:!0},{propertyName:"aiRespComp",first:!0,predicate:["aiRespComp"],descendants:!0}],ngImport:i0,template:'<ion-menu #menu contentId="main-content" side="end">\n <ion-header>\n <ion-toolbar>\n <ion-title>资料</ion-title>\n </ion-toolbar>\n </ion-header>\n <ion-content class="ion-padding">\n\n <ion-card style="margin: 0px;">\n <img [src]="avatarRole?.get(\'thumb\')" alt="">\n <ion-card-header>\n <ion-card-subtitle>{{avatarRole?.get(\'tags\')}}</ion-card-subtitle>\n <ion-card-title>{{avatarRole?.get("name")}}</ion-card-title>\n </ion-card-header>\n \n <ion-card-content>\n {{avatarRole?.get("desc")}}\n\n <ion-list [inset]="true" style="margin:0px;">\n \x3c!-- <ion-item>\n <ion-avatar *ngIf="avatarRole?.get(\'thumb\')" aria-hidden="true" slot="start">\n <img [src]="avatarRole?.get(\'thumb\')" />\n </ion-avatar>\n <ion-label>{{avatarRole?.get("name")}}</ion-label>\n </ion-item> --\x3e\n <ion-item lines="none" *ngIf="avatarRole?.get(\'age\')">\n <ion-note slot="start">年龄</ion-note>\n <ion-label>{{avatarRole?.get("age")}}</ion-label>\n </ion-item>\n <ion-item lines="none" *ngIf="avatarRole?.get(\'gender\')">\n <ion-note slot="start">性别</ion-note>\n <ion-label>{{avatarRole?.get("gender")}}</ion-label>\n </ion-item>\n <ion-item lines="none">\n <ion-note slot="start">称号</ion-note>\n <ion-label>{{avatarRole?.get("title")}}</ion-label>\n </ion-item>\n \n <ion-item lines="none">\n <ion-note slot="start">擅长</ion-note>\n <ion-label>{{avatarRole?.get("tags")?.join(\',\')}}</ion-label>\n </ion-item>\n\n </ion-list>\n </ion-card-content>\n </ion-card>\n \n \n \n </ion-content>\n</ion-menu>\n\n<div class="ion-page" id="main-content">\n <ion-header class="ion-no-border">\n <ion-toolbar>\n <ion-buttons slot="start">\n <ion-button (click)="goBack()"> <ion-icon name="chevron-back-outline"></ion-icon> </ion-button>\n </ion-buttons>\n <ion-title>\n <ion-chip *ngIf="avatarRole?.get(\'title\')">{{avatarRole?.get("title")}}</ion-chip>\n </ion-title>\n <ion-buttons slot="end">\n \x3c!-- <ion-button (click)="playTTSTeting()">TTS测试</ion-button> --\x3e\n {{avatarRole?.get("name")}}\n <ion-button (click)="menu.toggle()"> <ion-icon name="ellipsis-horizontal-outline"></ion-icon> </ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n\n \x3c!-- <ion-segment value="voice">\n <ion-segment-button (click)="chatServ.createChatPanel(avatarRole)" value="chat">\n <ion-label>聊天</ion-label>\n </ion-segment-button>\n <ion-segment-button routerLink="{{\'/avatar/role/\'+avatarRole?.id}}" value="voice">\n <ion-label>语音</ion-label>\n </ion-segment-button>\n </ion-segment> --\x3e\n\n \x3c!-- 数字形象:动画效果 --\x3e\n <fm-avatar-role-image *ngIf="avatarRole&&fmodeChat" [fmodeChat]="fmodeChat" [role]="avatarRole" #avatar class="avatar"></fm-avatar-role-image>\n \x3c!-- <fm-avatar-role-particle #avatar class="avatar"></fm-avatar-role-particle> --\x3e\n\n \x3c!-- AI回复的最新消息 --\x3e\n <div class="ai-resp-input" #aiRespComp>{{fmodeChat?.latestAIResponse | hidexml}}</div>\n\n <fm-modal-chat-voice-input *ngIf="fmodeChat" [fmodeChat]="fmodeChat"></fm-modal-chat-voice-input>\n\n</div>\n\n',styles:["ion-menu ion-note{color:#ccc;font-weight:700}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.avatar{display:block;width:100%;height:100%}.ai-resp-input{font-size:1rem;color:#fff;position:fixed;top:60px;max-height:15vh;overflow-y:scroll;padding:0 10px}.user-asr-input{font-size:1rem;color:#fff;position:fixed;bottom:6vh;padding:0 10px}.test-button-group{color:#00f;position:fixed;bottom:20vh}.test-button-group button{padding:10px;margin:10px}\n"],dependencies:[{kind:"ngmodule",type:CommonModule},{kind:"directive",type:i6.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{kind:"ngmodule",type:RouterModule},{kind:"ngmodule",type:FormsModule},{kind:"ngmodule",type:IonicModule},{kind:"component",type:i2.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:i2.IonButtons,selector:"ion-buttons",inputs:["collapse"]},{kind:"component",type:i2.IonCard,selector:"ion-card",inputs:["button","color","disabled","download","href","mode","rel","routerAnimation","routerDirection","target","type"]},{kind:"component",type:i2.IonCardContent,selector:"ion-card-content",inputs:["mode"]},{kind:"component",type:i2.IonCardHeader,selector:"ion-card-header",inputs:["color","mode","translucent"]},{kind:"component",type:i2.IonCardSubtitle,selector:"ion-card-subtitle",inputs:["color","mode"]},{kind:"component",type:i2.IonCardTitle,selector:"ion-card-title",inputs:["color","mode"]},{kind:"component",type:i2.IonChip,selector:"ion-chip",inputs:["color","disabled","mode","outline"]},{kind:"component",type:i2.IonContent,selector:"ion-content",inputs:["color","fixedSlotPlacement","forceOverscroll","fullscreen","scrollEvents","scrollX","scrollY"]},{kind:"component",type:i2.IonHeader,selector:"ion-header",inputs:["collapse","mode","translucent"]},{kind:"component",type:i2.IonIcon,selector:"ion-icon",inputs:["color","flipRtl","icon","ios","lazy","md","mode","name","sanitize","size","src"]},{kind:"component",type:i2.IonItem,selector:"ion-item",inputs:["button","color","detail","detailIcon","disabled","download","href","lines","mode","rel","routerAnimation","routerDirection","target","type"]},{kind:"component",type:i2.IonLabel,selector:"ion-label",inputs:["color","mode","position"]},{kind:"component",type:i2.IonList,selector:"ion-list",inputs:["inset","lines","mode"]},{kind:"component",type:i2.IonMenu,selector:"ion-menu",inputs:["contentId","disabled","maxEdgeStart","menuId","side","swipeGesture","type"]},{kind:"component",type:i2.IonNote,selector:"ion-note",inputs:["color","mode"]},{kind:"component",type:i2.IonTitle,selector:"ion-title",inputs:["color","size"]},{kind:"component",type:i2.IonToolbar,selector:"ion-toolbar",inputs:["color","mode"]},{kind:"component",type:CompAvatarRoleImageComponent,selector:"fm-avatar-role-image",inputs:["fmodeChat","role"]},{kind:"component",type:ModalChatVoiceInputComponent,selector:"fm-modal-chat-voice-input",inputs:["fmodeChat","talkMode"]},{kind:"pipe",type:HidexmlPipe,name:"hidexml"}]})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:CompAvatarTalkComponent,decorators:[{type:Component,args:[{selector:"app-comp-avatar-talk",standalone:!0,imports:[CommonModule,RouterModule,FormsModule,IonicModule,CompAvatarParticleComponent,CompAvatarRoleImageComponent,ModalChatVoiceInputComponent,HidexmlPipe],providers:[NovaCloudService,ChatService,Diagnostic,ModalController],template:'<ion-menu #menu contentId="main-content" side="end">\n <ion-header>\n <ion-toolbar>\n <ion-title>资料</ion-title>\n </ion-toolbar>\n </ion-header>\n <ion-content class="ion-padding">\n\n <ion-card style="margin: 0px;">\n <img [src]="avatarRole?.get(\'thumb\')" alt="">\n <ion-card-header>\n <ion-card-subtitle>{{avatarRole?.get(\'tags\')}}</ion-card-subtitle>\n <ion-card-title>{{avatarRole?.get("name")}}</ion-card-title>\n </ion-card-header>\n \n <ion-card-content>\n {{avatarRole?.get("desc")}}\n\n <ion-list [inset]="true" style="margin:0px;">\n \x3c!-- <ion-item>\n <ion-avatar *ngIf="avatarRole?.get(\'thumb\')" aria-hidden="true" slot="start">\n <img [src]="avatarRole?.get(\'thumb\')" />\n </ion-avatar>\n <ion-label>{{avatarRole?.get("name")}}</ion-label>\n </ion-item> --\x3e\n <ion-item lines="none" *ngIf="avatarRole?.get(\'age\')">\n <ion-note slot="start">年龄</ion-note>\n <ion-label>{{avatarRole?.get("age")}}</ion-label>\n </ion-item>\n <ion-item lines="none" *ngIf="avatarRole?.get(\'gender\')">\n <ion-note slot="start">性别</ion-note>\n <ion-label>{{avatarRole?.get("gender")}}</ion-label>\n </ion-item>\n <ion-item lines="none">\n <ion-note slot="start">称号</ion-note>\n <ion-label>{{avatarRole?.get("title")}}</ion-label>\n </ion-item>\n \n <ion-item lines="none">\n <ion-note slot="start">擅长</ion-note>\n <ion-label>{{avatarRole?.get("tags")?.join(\',\')}}</ion-label>\n </ion-item>\n\n </ion-list>\n </ion-card-content>\n </ion-card>\n \n \n \n </ion-content>\n</ion-menu>\n\n<div class="ion-page" id="main-content">\n <ion-header class="ion-no-border">\n <ion-toolbar>\n <ion-buttons slot="start">\n <ion-button (click)="goBack()"> <ion-icon name="chevron-back-outline"></ion-icon> </ion-button>\n </ion-buttons>\n <ion-title>\n <ion-chip *ngIf="avatarRole?.get(\'title\')">{{avatarRole?.get("title")}}</ion-chip>\n </ion-title>\n <ion-buttons slot="end">\n \x3c!-- <ion-button (click)="playTTSTeting()">TTS测试</ion-button> --\x3e\n {{avatarRole?.get("name")}}\n <ion-button (click)="menu.toggle()"> <ion-icon name="ellipsis-horizontal-outline"></ion-icon> </ion-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n\n \x3c!-- <ion-segment value="voice">\n <ion-segment-button (click)="chatServ.createChatPanel(avatarRole)" value="chat">\n <ion-label>聊天</ion-label>\n </ion-segment-button>\n <ion-segment-button routerLink="{{\'/avatar/role/\'+avatarRole?.id}}" value="voice">\n <ion-label>语音</ion-label>\n </ion-segment-button>\n </ion-segment> --\x3e\n\n \x3c!-- 数字形象:动画效果 --\x3e\n <fm-avatar-role-image *ngIf="avatarRole&&fmodeChat" [fmodeChat]="fmodeChat" [role]="avatarRole" #avatar class="avatar"></fm-avatar-role-image>\n \x3c!-- <fm-avatar-role-particle #avatar class="avatar"></fm-avatar-role-particle> --\x3e\n\n \x3c!-- AI回复的最新消息 --\x3e\n <div class="ai-resp-input" #aiRespComp>{{fmodeChat?.latestAIResponse | hidexml}}</div>\n\n <fm-modal-chat-voice-input *ngIf="fmodeChat" [fmodeChat]="fmodeChat"></fm-modal-chat-voice-input>\n\n</div>\n\n',styles:["ion-menu ion-note{color:#ccc;font-weight:700}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.avatar{display:block;width:100%;height:100%}.ai-resp-input{font-size:1rem;color:#fff;position:fixed;top:60px;max-height:15vh;overflow-y:scroll;padding:0 10px}.user-asr-input{font-size:1rem;color:#fff;position:fixed;bottom:6vh;padding:0 10px}.test-button-group{color:#00f;position:fixed;bottom:20vh}.test-button-group button{padding:10px;margin:10px}\n"]}]}],ctorParameters:()=>[{type:i1.Router},{type:i2.NavController},{type:i1.ActivatedRoute},{type:i3.ChatService},{type:i4.NovaCloudService},{type:i2.Platform},{type:i5.Diagnostic}],propDecorators:{avatarComp:[{type:ViewChild,args:["avatar"]}],aiRespComp:[{type:ViewChild,args:["aiRespComp"]}]}});
9
+ var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9haWdjL2F2YXRhci9jb21wLWF2YXRhci10YWxrL2NvbXAtYXZhdGFyLXRhbGsuY29tcG9uZW50Lm1qcw==`
10
+
@@ -1,8 +1,10 @@
1
- export * from "./avatar.module";
2
- export * from "./interface-avatar-role";
3
- export * from "./comp-avatar-particle";
4
- export * from "./comp-avatar-role-image/comp-avatar-role-image.component";
5
- export * from "./comp-avatar-role-video/comp-avatar-role-video.component";
6
- export * from "./comp-avatar-talk/comp-avatar-talk.component";
7
- export * from "./modal-chat-voice-input/modal-chat-voice-input.component";
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mbW9kZS1uZy9zcmMvbGliL2FpZ2MvYXZhdGFyL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsaUJBQWlCLENBQUE7QUFFL0IsY0FBYyx5QkFBeUIsQ0FBQTtBQUN2QyxjQUFjLHdCQUF3QixDQUFBO0FBQ3RDLGNBQWMsMkRBQTJELENBQUE7QUFDekUsY0FBYywyREFBMkQsQ0FBQTtBQUN6RSxjQUFjLCtDQUErQyxDQUFBO0FBQzdELGNBQWMsMkRBQTJELENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9hdmF0YXIubW9kdWxlXCJcclxuXHJcbmV4cG9ydCAqIGZyb20gXCIuL2ludGVyZmFjZS1hdmF0YXItcm9sZVwiXHJcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXAtYXZhdGFyLXBhcnRpY2xlXCJcclxuZXhwb3J0ICogZnJvbSBcIi4vY29tcC1hdmF0YXItcm9sZS1pbWFnZS9jb21wLWF2YXRhci1yb2xlLWltYWdlLmNvbXBvbmVudFwiXHJcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXAtYXZhdGFyLXJvbGUtdmlkZW8vY29tcC1hdmF0YXItcm9sZS12aWRlby5jb21wb25lbnRcIlxyXG5leHBvcnQgKiBmcm9tIFwiLi9jb21wLWF2YXRhci10YWxrL2NvbXAtYXZhdGFyLXRhbGsuY29tcG9uZW50XCJcclxuZXhwb3J0ICogZnJvbSBcIi4vbW9kYWwtY2hhdC12b2ljZS1pbnB1dC9tb2RhbC1jaGF0LXZvaWNlLWlucHV0LmNvbXBvbmVudFwiXHJcbiJdfQ==
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/avatar/index.mjs
7
+ */
8
+ export*from"./avatar.module";export*from"./interface-avatar-role";export*from"./comp-avatar-particle";export*from"./comp-avatar-role-image/comp-avatar-role-image.component";export*from"./comp-avatar-role-video/comp-avatar-role-video.component";export*from"./comp-avatar-talk/comp-avatar-talk.component";export*from"./modal-chat-voice-input/modal-chat-voice-input.component";
9
+ var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9haWdjL2F2YXRhci9pbmRleC5tanM=`
10
+
@@ -1,2 +1,10 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlLWF2YXRhci1yb2xlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm1vZGUtbmcvc3JjL2xpYi9haWdjL2F2YXRhci9pbnRlcmZhY2UtYXZhdGFyLXJvbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgRm1vZGVBdmF0YXJSb2xlQ29tcCB7XHJcbiAgICBwbGF5QW5pbWF0aW9uKG5hbWU6XCJ0YWxraW5nXCJ8XCJ3YWl0aW5nXCJ8XCJ0aGlua2luZ1wifFwibGlzdGVuaW5nXCIpXHJcbn0iXX0=
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/avatar/interface-avatar-role.mjs
7
+ */
8
+ export{};
9
+ var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9haWdjL2F2YXRhci9pbnRlcmZhY2UtYXZhdGFyLXJvbGUubWpz`
10
+