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.
- package/LICENSE.md +8 -0
- package/README.md +37 -37
- package/esm2022/fmode-ng.mjs +10 -5
- package/esm2022/lib/aigc/agent/fm-agent-task/fm-agent-task.component.mjs +8 -92
- package/esm2022/lib/aigc/agent/index.mjs +10 -3
- package/esm2022/lib/aigc/avatar/avatar.module.mjs +10 -45
- package/esm2022/lib/aigc/avatar/comp-avatar-particle/avatar.role.mjs +10 -2
- package/esm2022/lib/aigc/avatar/comp-avatar-particle/comp-avatar-particle.component.mjs +10 -315
- package/esm2022/lib/aigc/avatar/comp-avatar-particle/index.mjs +10 -3
- package/esm2022/lib/aigc/avatar/comp-avatar-particle/role-points.class.mjs +10 -57
- package/esm2022/lib/aigc/avatar/comp-avatar-role-image/comp-avatar-role-image.component.mjs +10 -98
- package/esm2022/lib/aigc/avatar/comp-avatar-role-video/comp-avatar-role-video.component.mjs +10 -107
- package/esm2022/lib/aigc/avatar/comp-avatar-talk/comp-avatar-talk.component.mjs +10 -113
- package/esm2022/lib/aigc/avatar/index.mjs +10 -8
- package/esm2022/lib/aigc/avatar/interface-avatar-role.mjs +10 -2
- package/esm2022/lib/aigc/avatar/modal-chat-voice-input/modal-chat-voice-input.component.mjs +8 -164
- package/esm2022/lib/aigc/chat/chat-header-area/comp-header-area.component.mjs +10 -49
- package/esm2022/lib/aigc/chat/chat-header-area/index.mjs +10 -2
- package/esm2022/lib/aigc/chat/chat-list/chat-list.component.mjs +8 -155
- package/esm2022/lib/aigc/chat/chat-list/index.mjs +10 -2
- package/esm2022/lib/aigc/chat/chat-message-area/comp-message-area.component.mjs +10 -40
- package/esm2022/lib/aigc/chat/chat-message-area/index.mjs +10 -2
- package/esm2022/lib/aigc/chat/chat-message-card/comp-message-card.component.mjs +10 -140
- package/esm2022/lib/aigc/chat/chat-message-card/duration-str.pipe.mjs +10 -29
- package/esm2022/lib/aigc/chat/chat-message-card/index.mjs +10 -3
- package/esm2022/lib/aigc/chat/chat-modal-input/index.mjs +10 -3
- package/esm2022/lib/aigc/chat/chat-modal-input/modal-audio-message/modal-audio-message.component.mjs +8 -193
- package/esm2022/lib/aigc/chat/chat-modal-input/modal-input.component.mjs +10 -331
- package/esm2022/lib/aigc/chat/chat-panel/chat-panel.component.mjs +8 -249
- package/esm2022/lib/aigc/chat/comp-role-prompt/comp-role-prompt.component.mjs +10 -83
- package/esm2022/lib/aigc/chat/comp-role-prompt/index.mjs +10 -2
- package/esm2022/lib/aigc/chat/index.mjs +10 -8
- package/esm2022/lib/aigc/comp-markdown-preview/clipboard.service.mjs +10 -82
- package/esm2022/lib/aigc/comp-markdown-preview/markdown-parse.mjs +8 -367
- package/esm2022/lib/aigc/comp-markdown-preview/markdown-preview.component.mjs +10 -51
- package/esm2022/lib/aigc/comp-markdown-preview/markdown-preview.module.mjs +10 -24
- package/esm2022/lib/aigc/comp-markdown-preview/plugins/md-mathjax/index.mjs +10 -115
- package/esm2022/lib/aigc/index.mjs +10 -14
- package/esm2022/lib/aigc/service-fmai/fmai.service.mjs +10 -21
- package/esm2022/lib/aigc/service-fmai/service-chat/chat-class.mjs +10 -2
- package/esm2022/lib/aigc/service-fmai/service-chat/chat.service.mjs +8 -174
- package/esm2022/lib/aigc/service-fmai/service-chat/index.mjs +10 -7
- package/esm2022/lib/aigc/service-fmai/service-chat/mask-list.mjs +9 -194
- package/esm2022/lib/aigc/service-fmai/service-chat/pipes/chat-content.pipe.mjs +10 -27
- package/esm2022/lib/aigc/service-fmai/service-chat/pipes/hidexml.pipe.mjs +10 -27
- package/esm2022/lib/aigc/service-fmai/service-chat/utilnow.pipe.mjs +10 -68
- package/esm2022/lib/aigc/service-fmai/service-imagine/imagine-func.mjs +9 -162
- package/esm2022/lib/aigc/service-fmai/service-imagine/imagine-work.mjs +10 -68
- package/esm2022/lib/aigc/service-fmai/service-imagine/imagine.service.mjs +8 -313
- package/esm2022/lib/aigc/service-fmai/service-imagine/index.mjs +10 -4
- package/esm2022/lib/aigc/story/fm-office-viewer/fm-office-viewer.component.mjs +10 -62
- package/esm2022/lib/aigc/story/fm-story-card/fm-story-card.component.mjs +10 -87
- package/esm2022/lib/aigc/story/fm-story-list/fm-story-list.component.mjs +10 -345
- package/esm2022/lib/aigc/story/fm-story-list/story-preview.mjs +10 -81
- package/esm2022/lib/aigc/story/fm-story-loader/fm-story-loader.component.mjs +10 -152
- package/esm2022/lib/aigc/story/fm-story-splitter/fm-story-splitter.component.mjs +10 -42
- package/esm2022/lib/aigc/story/index.mjs +10 -6
- package/esm2022/lib/aigc/story/modal-chat-story/comp-chat-story-json/comp-chat-story-json.component.mjs +10 -47
- package/esm2022/lib/aigc/story/modal-chat-story/comp-diary-story/comp-diary-story.component.mjs +10 -95
- package/esm2022/lib/aigc/story/modal-chat-story/modal-chat-story.component.mjs +10 -253
- package/esm2022/lib/aigc/story/story.service.mjs +10 -35
- package/esm2022/lib/aigc/voice/fmode-voice.service.mjs +10 -636
- package/esm2022/lib/aigc/voice/index.mjs +10 -7
- package/esm2022/lib/aigc/voice/lib/audio/audio.player.mjs +10 -55
- package/esm2022/lib/aigc/voice/lib/audio/audio.streamer.mjs +10 -2
- package/esm2022/lib/aigc/voice/lib/audio/streamer.microsoft.mjs +10 -96
- package/esm2022/lib/aigc/voice/lib/audio/streamer.pcm.mjs +8 -177
- package/esm2022/lib/aigc/voice/lib/pcm2wav.mjs +10 -38
- package/esm2022/lib/aigc/voice/lib/recorder/extension-waveview.mjs +10 -215
- package/esm2022/lib/aigc/voice/lib/resample.mjs +10 -34
- package/esm2022/lib/aigc/voice/tts/fmode-tts-class.mjs +10 -189
- package/esm2022/lib/aigc/voice/tts/index.mjs +10 -5
- package/esm2022/lib/aigc/voice/tts/int-tts-provider.mjs +10 -2
- package/esm2022/lib/aigc/voice/tts/provider-doubao.mjs +8 -346
- package/esm2022/lib/code/fm-codemirror/fm-codemirror.component.mjs +8 -342
- package/esm2022/lib/code/index.mjs +10 -2
- package/esm2022/lib/core/agent/chat/completion/fmode-completion.mjs +8 -430
- package/esm2022/lib/core/agent/chat/completion/index.mjs +10 -2
- package/esm2022/lib/core/agent/chat/completion/int-gpt-chat-options.mjs +10 -2
- package/esm2022/lib/core/agent/chat/fmode-chat.mjs +8 -617
- package/esm2022/lib/core/agent/chat/index.mjs +10 -4
- package/esm2022/lib/core/agent/chat/interface.mjs +10 -2
- package/esm2022/lib/core/agent/index.mjs +10 -6
- package/esm2022/lib/core/agent/prompt/agent.prompt.mjs +10 -133
- package/esm2022/lib/core/agent/prompt/index.mjs +10 -2
- package/esm2022/lib/core/agent/prompt/prompt-util.mjs +10 -16
- package/esm2022/lib/core/agent/story/agent.story.mjs +10 -64
- package/esm2022/lib/core/agent/story/index.mjs +10 -2
- package/esm2022/lib/core/agent/task/agent.task.mjs +10 -90
- package/esm2022/lib/core/agent/task/index.mjs +10 -2
- package/esm2022/lib/core/agent/waiting/index.mjs +10 -3
- package/esm2022/lib/core/agent/waiting/loading/loading.ctrl.mjs +10 -279
- package/esm2022/lib/core/agent/waiting/tips/tips.ctrl.mjs +8 -190
- package/esm2022/lib/core/index.mjs +10 -4
- package/esm2022/lib/core/parse/datatype/acl.mjs +10 -57
- package/esm2022/lib/core/parse/datatype/file.mjs +10 -69
- package/esm2022/lib/core/parse/datatype/geopoint.mjs +10 -57
- package/esm2022/lib/core/parse/datatype/relation.mjs +10 -56
- package/esm2022/lib/core/parse/fmode.cloud.mjs +10 -0
- package/esm2022/lib/core/parse/fmode.object.mjs +10 -232
- package/esm2022/lib/core/parse/fmode.parse.mjs +10 -84
- package/esm2022/lib/core/parse/fmode.query.mjs +8 -500
- package/esm2022/lib/core/parse/fmode.user.mjs +10 -275
- package/esm2022/lib/core/parse/index.mjs +10 -5
- package/esm2022/lib/core/parse/types.mjs +10 -2
- package/esm2022/lib/core/voice/index.mjs +10 -3
- package/esm2022/lib/core/voice/tts/index.mjs +10 -2
- package/esm2022/lib/icon/filetype/audio.svg.mjs +10 -3
- package/esm2022/lib/icon/filetype/avatar.svg.mjs +10 -14
- package/esm2022/lib/icon/filetype/chat.svg.mjs +10 -3
- package/esm2022/lib/icon/filetype/docx.svg.mjs +10 -3
- package/esm2022/lib/icon/filetype/file.svg.mjs +10 -3
- package/esm2022/lib/icon/filetype/filetype.pipe.mjs +10 -57
- package/esm2022/lib/icon/filetype/index.mjs +10 -12
- package/esm2022/lib/icon/filetype/md.svg.mjs +10 -3
- package/esm2022/lib/icon/filetype/pdf.svg.mjs +10 -3
- package/esm2022/lib/icon/filetype/pptx.svg.mjs +10 -3
- package/esm2022/lib/icon/filetype/svgtoblob.mjs +10 -8
- package/esm2022/lib/icon/filetype/video.svg.mjs +10 -3
- package/esm2022/lib/icon/filetype/xlsx.svg.mjs +10 -3
- package/esm2022/lib/icon/index.mjs +10 -2
- package/esm2022/lib/map/comp-poi-picker/comp-poi-picker.component.mjs +10 -209
- package/esm2022/lib/map/comp-poi-picker/comp-poi-picker.module.mjs +10 -33
- package/esm2022/lib/map/index.mjs +10 -4
- package/esm2022/lib/map/map.module.mjs +10 -61
- package/esm2022/lib/map/page-loca-scatter/page-loca-scatter.component.mjs +10 -132
- package/esm2022/lib/map/page-map.start/page-map.start.component.mjs +8 -115
- package/esm2022/lib/map/page-plan-route/page-plan-route.component.mjs +8 -118
- package/esm2022/lib/nova-cloud/index.mjs +10 -3
- package/esm2022/lib/nova-cloud/ncloud-api-func.mjs +10 -91
- package/esm2022/lib/nova-cloud/nova-cloud.service.mjs +10 -53
- package/esm2022/lib/payment/index.mjs +10 -2
- package/esm2022/lib/payment/payment/payment.component.mjs +10 -543
- package/esm2022/lib/payment/payment.service.mjs +10 -202
- package/esm2022/lib/person/comp-person-gender-icon/comp-person-gender-icon.component.mjs +10 -48
- package/esm2022/lib/person/comp-person-item/comp-person-item.component.mjs +10 -29
- package/esm2022/lib/person/comp-person-story/comp-person-story.component.mjs +10 -211
- package/esm2022/lib/person/edit-upload/edit-upload.component.mjs +8 -412
- package/esm2022/lib/person/edit-upload/edit-upload.module.mjs +10 -50
- package/esm2022/lib/person/index.mjs +10 -5
- package/esm2022/lib/person/modal-person-select/modal-person-select.component.mjs +10 -144
- package/esm2022/lib/person/modal-user-verify/secret-text.pipe.mjs +10 -41
- package/esm2022/lib/person/modal-user-verify/user-verify.component.mjs +10 -595
- package/esm2022/lib/person/person-detail/person-detail.component.mjs +10 -172
- package/esm2022/lib/person/person.service.mjs +8 -193
- package/esm2022/lib/platform/cross.service.mjs +10 -62
- package/esm2022/lib/platform/index.mjs +10 -2
- package/esm2022/lib/social/index.mjs +10 -2
- package/esm2022/lib/social/wechat/wechat-jssdk.service.mjs +8 -230
- package/esm2022/lib/storage/comp-hwobs-manager/hwobs-manager.component.mjs +10 -59
- package/esm2022/lib/storage/index.mjs +10 -5
- package/esm2022/lib/storage/service-hwobs/hwobs.service.mjs +8 -131
- package/esm2022/lib/storage/service-hwobs/index.mjs +10 -3
- package/esm2022/lib/storage/service-hwobs/typings/esdk-obs-browser.mjs +1 -1
- package/esm2022/lib/storage/service-upload/index.mjs +10 -2
- package/esm2022/lib/storage/service-upload/nova-upload.service.mjs +8 -513
- package/esm2022/lib/storage/service-upload/util-file-md5.mjs +10 -28
- package/esm2022/lib/storage/service-upload/util-file-metadata.mjs +10 -93
- package/esm2022/lib/storage/storage.module.mjs +10 -42
- package/esm2022/lib/text/fm-article-editor/article-editor-topbar/article-editor-topbar.component.mjs +10 -72
- package/esm2022/lib/text/fm-article-editor/article.service.mjs +10 -237
- package/esm2022/lib/text/fm-article-editor/comp-upload-book-banners/comp-upload-book-banners.component.mjs +8 -72
- package/esm2022/lib/text/fm-article-editor/draft.service.mjs +10 -207
- package/esm2022/lib/text/fm-article-editor/fm-article-aitool/fm-article-aitool.component.mjs +8 -227
- package/esm2022/lib/text/fm-article-editor/fm-article-draft/fm-article-draft.component.mjs +10 -303
- package/esm2022/lib/text/fm-article-editor/fm-article-editor.component.mjs +8 -371
- package/esm2022/lib/text/fm-article-editor/fm-article-outline/fm-article-outline.component.mjs +10 -94
- package/esm2022/lib/text/fm-article-editor/fm-article-outline-leftitem/fm-article-outline-leftitem.component.mjs +10 -36
- package/esm2022/lib/text/fm-article-editor/fm-article-preview/fm-article-preview.component.mjs +10 -281
- package/esm2022/lib/text/fm-article-editor/fm-article-write-options/fm-article-write-options.component.mjs +10 -72
- package/esm2022/lib/text/fm-article-editor/outline-count.pipe.mjs +10 -22
- package/esm2022/lib/text/fm-article-editor/prompt/prompt-insertion-article.mjs +10 -169
- package/esm2022/lib/text/fm-article-editor/task-article-generation.mjs +10 -69
- package/esm2022/lib/text/fm-article-editor/tasks/task-article-draft-create.mjs +10 -65
- package/esm2022/lib/text/fm-article-editor/tasks/task-article-outline-edit.mjs +10 -55
- package/esm2022/lib/text/fm-article-editor/tasks/task-article-outline.mjs +10 -142
- package/esm2022/lib/text/fm-article-editor/tasks/task-article-preview.mjs +10 -35
- package/esm2022/lib/text/fm-article-editor/tasks/task-article-writing-options.mjs +10 -81
- package/esm2022/lib/text/fm-article-editor/tasks/task-document-select.mjs +10 -50
- package/esm2022/lib/text/fm-text-quill/fm-text-quill.component.mjs +10 -145
- package/esm2022/lib/text/index.mjs +10 -4
- package/esm2022/lib/user/account/account.service.mjs +10 -222
- package/esm2022/lib/user/captcha/captcha.component.mjs +10 -135
- package/esm2022/lib/user/comp-user-avatar/comp-user-avatar.component.mjs +10 -66
- package/esm2022/lib/user/index.mjs +10 -17
- package/esm2022/lib/user/login/auth.guard.mjs +10 -28
- package/esm2022/lib/user/login/auth.service.mjs +8 -433
- package/esm2022/lib/user/login/login.component.mjs +10 -916
- package/esm2022/lib/user/modal-user-login/modal-user-login.component.mjs +10 -311
- package/esm2022/lib/user/profile/auth-profile.guard.mjs +10 -27
- package/esm2022/lib/user/profile/auth-profile.service.mjs +10 -122
- package/esm2022/lib/user/profile/profile-bind/profile-bind.component.mjs +10 -164
- package/esm2022/lib/user/profile/profile-bind/profile-confirm-modal.component.mjs +10 -79
- package/esm2022/lib/user/profile/profile.module.mjs +10 -54
- package/esm2022/lib/user/staff/index.mjs +10 -4
- package/esm2022/lib/user/staff/staff.guard.mjs +10 -26
- package/esm2022/lib/user/staff/staff.module.mjs +10 -18
- package/esm2022/lib/user/staff/staff.service.mjs +10 -85
- package/esm2022/lib/user/user-name.pipe.mjs +10 -29
- package/esm2022/lib/user/user.module.mjs +10 -102
- package/esm2022/lib/video/fm-video/fm-video.component.mjs +10 -67
- package/esm2022/lib/video/index.mjs +10 -2
- package/esm2022/public-api.mjs +10 -21
- package/fesm2022/fmode-ng.mjs +7 -19788
- package/fesm2022/fmode-ng.mjs.map +1 -1
- package/lib/aigc/avatar/comp-avatar-role-image/comp-avatar-role-image.component.d.ts +2 -2
- package/lib/aigc/avatar/comp-avatar-role-video/comp-avatar-role-video.component.d.ts +2 -2
- package/lib/aigc/avatar/comp-avatar-talk/comp-avatar-talk.component.d.ts +2 -2
- package/lib/aigc/chat/chat-list/chat-list.component.d.ts +3 -2
- package/lib/aigc/chat/chat-message-card/comp-message-card.component.d.ts +3 -3
- package/lib/aigc/chat/chat-modal-input/modal-audio-message/modal-audio-message.component.d.ts +2 -2
- package/lib/aigc/chat/chat-modal-input/modal-input.component.d.ts +3 -3
- package/lib/aigc/service-fmai/service-imagine/imagine-func.d.ts +3 -3
- package/lib/aigc/service-fmai/service-imagine/imagine-work.d.ts +4 -4
- package/lib/aigc/service-fmai/service-imagine/imagine.service.d.ts +6 -6
- package/lib/aigc/story/fm-office-viewer/fm-office-viewer.component.d.ts +2 -2
- package/lib/aigc/story/fm-story-card/fm-story-card.component.d.ts +2 -1
- package/lib/aigc/story/fm-story-list/fm-story-list.component.d.ts +6 -6
- package/lib/aigc/story/fm-story-list/story-preview.d.ts +4 -4
- package/lib/aigc/story/fm-story-loader/fm-story-loader.component.d.ts +3 -3
- package/lib/aigc/story/fm-story-splitter/fm-story-splitter.component.d.ts +2 -2
- package/lib/aigc/story/modal-chat-story/comp-chat-story-json/comp-chat-story-json.component.d.ts +3 -2
- package/lib/aigc/story/modal-chat-story/comp-diary-story/comp-diary-story.component.d.ts +3 -2
- package/lib/aigc/story/modal-chat-story/modal-chat-story.component.d.ts +6 -6
- package/lib/aigc/story/story.service.d.ts +3 -2
- package/lib/aigc/voice/tts/fmode-tts-class.d.ts +2 -2
- package/lib/core/agent/chat/fmode-chat.d.ts +11 -11
- package/lib/core/agent/story/agent.story.d.ts +8 -8
- package/lib/core/parse/datatype/geopoint.d.ts +5 -1
- package/lib/core/parse/fmode.cloud.d.ts +32 -0
- package/lib/core/parse/fmode.object.d.ts +2 -2
- package/lib/core/parse/fmode.parse.d.ts +15 -9
- package/lib/core/parse/fmode.query.d.ts +41 -2
- package/lib/core/parse/fmode.user.d.ts +1 -0
- package/lib/core/parse/index.d.ts +1 -0
- package/lib/core/parse/types.d.ts +2 -0
- package/lib/map/comp-poi-picker/comp-poi-picker.component.d.ts +5 -5
- package/lib/payment/payment/payment.component.d.ts +3 -3
- package/lib/payment/payment.service.d.ts +4 -4
- package/lib/person/comp-person-gender-icon/comp-person-gender-icon.component.d.ts +2 -1
- package/lib/person/comp-person-item/comp-person-item.component.d.ts +2 -1
- package/lib/person/comp-person-story/comp-person-story.component.d.ts +13 -13
- package/lib/person/edit-upload/edit-upload.component.d.ts +1 -1
- package/lib/person/modal-person-select/modal-person-select.component.d.ts +5 -5
- package/lib/person/modal-user-verify/user-verify.component.d.ts +5 -5
- package/lib/person/person-detail/person-detail.component.d.ts +4 -4
- package/lib/person/person.service.d.ts +7 -7
- package/lib/storage/service-hwobs/hwobs.service.d.ts +4 -5
- package/lib/storage/service-upload/nova-upload.service.d.ts +5 -5
- package/lib/text/fm-article-editor/article-editor-topbar/article-editor-topbar.component.d.ts +2 -1
- package/lib/text/fm-article-editor/article.service.d.ts +12 -12
- package/lib/text/fm-article-editor/draft.service.d.ts +5 -5
- package/lib/text/fm-article-editor/fm-article-aitool/fm-article-aitool.component.d.ts +3 -2
- package/lib/text/fm-article-editor/fm-article-draft/fm-article-draft.component.d.ts +16 -17
- package/lib/text/fm-article-editor/fm-article-editor.component.d.ts +3 -3
- package/lib/text/fm-article-editor/fm-article-outline/fm-article-outline.component.d.ts +11 -10
- package/lib/text/fm-article-editor/fm-article-preview/fm-article-preview.component.d.ts +2 -2
- package/lib/text/fm-article-editor/prompt/prompt-insertion-article.d.ts +3 -3
- package/lib/text/fm-article-editor/task-article-generation.d.ts +5 -4
- package/lib/text/fm-article-editor/tasks/task-article-draft-create.d.ts +3 -3
- package/lib/text/fm-article-editor/tasks/task-article-outline-edit.d.ts +3 -3
- package/lib/text/fm-article-editor/tasks/task-article-outline.d.ts +3 -3
- package/lib/text/fm-article-editor/tasks/task-article-preview.d.ts +2 -1
- package/lib/text/fm-article-editor/tasks/task-article-writing-options.d.ts +3 -3
- package/lib/text/fm-article-editor/tasks/task-document-select.d.ts +3 -3
- package/lib/user/account/account.service.d.ts +2 -2
- package/lib/user/comp-user-avatar/comp-user-avatar.component.d.ts +2 -2
- package/lib/user/login/auth.service.d.ts +5 -5
- package/lib/user/login/login.component.d.ts +3 -3
- package/lib/user/profile/auth-profile.service.d.ts +8 -8
- package/lib/user/profile/profile-bind/profile-bind.component.d.ts +7 -7
- package/lib/user/profile/profile-bind/profile-confirm-modal.component.d.ts +2 -2
- package/lib/user/staff/staff.service.d.ts +3 -3
- package/lib/user/user-name.pipe.d.ts +2 -2
- package/package.json +12 -18
|
@@ -1,24 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
type: NgModule,
|
|
12
|
-
args: [{
|
|
13
|
-
declarations: [
|
|
14
|
-
MarkdownPreviewComponent
|
|
15
|
-
],
|
|
16
|
-
imports: [
|
|
17
|
-
CommonModule,
|
|
18
|
-
],
|
|
19
|
-
exports: [
|
|
20
|
-
MarkdownPreviewComponent
|
|
21
|
-
]
|
|
22
|
-
}]
|
|
23
|
-
}] });
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFya2Rvd24tcHJldmlldy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mbW9kZS1uZy9zcmMvbGliL2FpZ2MvY29tcC1tYXJrZG93bi1wcmV2aWV3L21hcmtkb3duLXByZXZpZXcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQWN4RSxNQUFNLE9BQU8scUJBQXFCOytHQUFyQixxQkFBcUI7Z0hBQXJCLHFCQUFxQixpQkFUOUIsd0JBQXdCLGFBR3hCLFlBQVksYUFHWix3QkFBd0I7Z0hBR2YscUJBQXFCLFlBTjlCLFlBQVk7OzRGQU1ILHFCQUFxQjtrQkFYakMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osd0JBQXdCO3FCQUN6QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsWUFBWTtxQkFDYjtvQkFDRCxPQUFPLEVBQUM7d0JBQ04sd0JBQXdCO3FCQUN6QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE1hcmtkb3duUHJldmlld0NvbXBvbmVudCB9IGZyb20gJy4vbWFya2Rvd24tcHJldmlldy5jb21wb25lbnQnO1xyXG5cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgICBNYXJrZG93blByZXZpZXdDb21wb25lbnRcclxuICBdLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICBdLFxyXG4gIGV4cG9ydHM6W1xyXG4gICAgTWFya2Rvd25QcmV2aWV3Q29tcG9uZW50XHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTWFya2Rvd25QcmV2aWV3TW9kdWxlIHsgfVxyXG4iXX0=
|
|
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/comp-markdown-preview/markdown-preview.module.mjs
|
|
7
|
+
*/
|
|
8
|
+
import{NgModule}from"@angular/core";import{CommonModule}from"@angular/common";import{MarkdownPreviewComponent}from"./markdown-preview.component";import*as i0 from"@angular/core";export class MarkdownPreviewModule{static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:MarkdownPreviewModule,deps:[],target:i0.ɵɵFactoryTarget.NgModule})}static{this.ɵmod=i0.ɵɵngDeclareNgModule({minVersion:"14.0.0",version:"17.3.12",ngImport:i0,type:MarkdownPreviewModule,declarations:[MarkdownPreviewComponent],imports:[CommonModule],exports:[MarkdownPreviewComponent]})}static{this.ɵinj=i0.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:MarkdownPreviewModule,imports:[CommonModule]})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:MarkdownPreviewModule,decorators:[{type:NgModule,args:[{declarations:[MarkdownPreviewComponent],imports:[CommonModule],exports:[MarkdownPreviewComponent]}]}]});
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9haWdjL2NvbXAtbWFya2Rvd24tcHJldmlldy9tYXJrZG93bi1wcmV2aWV3Lm1vZHVsZS5tanM=`
|
|
10
|
+
|
|
@@ -1,115 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
// import { CHTML } from "mathjax-full";
|
|
12
|
-
// import { AllPackages } from "mathjax-full";
|
|
13
|
-
// import { liteAdaptor } from "mathjax-full";
|
|
14
|
-
// import { RegisterHTMLHandler } from "mathjax-full";
|
|
15
|
-
export class MarkdownMathJax {
|
|
16
|
-
constructor(options) {
|
|
17
|
-
this.options = options;
|
|
18
|
-
this.adaptor = liteAdaptor();
|
|
19
|
-
RegisterHTMLHandler(this.adaptor);
|
|
20
|
-
}
|
|
21
|
-
text_to_mathjax(math, options) {
|
|
22
|
-
if (!math?.length)
|
|
23
|
-
return "";
|
|
24
|
-
if (!math?.replace)
|
|
25
|
-
return "";
|
|
26
|
-
options = options || this.options;
|
|
27
|
-
let output = new SVG({ fontCache: 'local' });
|
|
28
|
-
if (options?.output == "chtml") {
|
|
29
|
-
output = new CHTML();
|
|
30
|
-
}
|
|
31
|
-
// 设置输入输出参数
|
|
32
|
-
const mathjax_document = mathjax.document('', {
|
|
33
|
-
skipHtmlTags: [
|
|
34
|
-
'script', "noscript", 'style', "textarea", "pre", "code", "annotation", "annotation-xml"
|
|
35
|
-
],
|
|
36
|
-
InputJax: new TeX({
|
|
37
|
-
// displayMath: [['\$\$', '\$\$'], ['\\\[', '\\\]']],
|
|
38
|
-
// inlineMath: [['\$', '\$'],['\\\(', '\\\)']],
|
|
39
|
-
processEscapes: true,
|
|
40
|
-
packages: AllPackages,
|
|
41
|
-
}),
|
|
42
|
-
OutputJax: output
|
|
43
|
-
});
|
|
44
|
-
const mathjax_options = {
|
|
45
|
-
em: 16,
|
|
46
|
-
ex: 8,
|
|
47
|
-
containerWidth: 1280
|
|
48
|
-
};
|
|
49
|
-
// Preprocess the input to handle inline and block math separately
|
|
50
|
-
let regxList = [
|
|
51
|
-
/\$\$\ (.+?)\ \$\$/g, // 匹配$$\ \ $$
|
|
52
|
-
/\$\$(.+?)\$\$/g, // 匹配$$ $$
|
|
53
|
-
/\$\$\n(.+?)\n\$\$/g, // 匹配$$\n \n$$
|
|
54
|
-
/\$(.+?)\$/g, // 匹配$ $
|
|
55
|
-
/\\\((.+?)\\\)/g, // 匹配\()
|
|
56
|
-
/\\\[(.+?)\\\]/g // 匹配\[]
|
|
57
|
-
];
|
|
58
|
-
regxList.forEach(regx => {
|
|
59
|
-
math = math
|
|
60
|
-
.replace(regx, (match, p1) => {
|
|
61
|
-
console.log(regx, match, p1);
|
|
62
|
-
// Inline math
|
|
63
|
-
let node;
|
|
64
|
-
try {
|
|
65
|
-
node = mathjax_document.convert(`${p1}`, mathjax_options);
|
|
66
|
-
}
|
|
67
|
-
catch (errReplace) { }
|
|
68
|
-
if (node) {
|
|
69
|
-
let nodeHtml = `<span class="mathjax raw" style="margin-left:10px;margin-right:10px;">${this.adaptor.innerHTML(node)}</span>`;
|
|
70
|
-
return nodeHtml;
|
|
71
|
-
}
|
|
72
|
-
else {
|
|
73
|
-
return p1;
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
return math;
|
|
78
|
-
// math
|
|
79
|
-
// .replace(/\$\$\ (.+?)\ \$\$/g, (match, p1) => {
|
|
80
|
-
// // Inline math
|
|
81
|
-
// let node = mathjax_document.convert(`${p1}`, mathjax_options) as any;
|
|
82
|
-
// return this.adaptor.innerHTML(node);
|
|
83
|
-
// })
|
|
84
|
-
// .replace(/\$\$(.+?)\$\$/g, (match, p1) => {
|
|
85
|
-
// // Inline math
|
|
86
|
-
// let node = mathjax_document.convert(`${p1}`, mathjax_options) as any;
|
|
87
|
-
// return this.adaptor.innerHTML(node);
|
|
88
|
-
// })
|
|
89
|
-
// .replace(/\$\$\n(.+?)\n\$\$/g, (match, p1) => {
|
|
90
|
-
// // Inline math
|
|
91
|
-
// let node = mathjax_document.convert(`${p1}`, mathjax_options) as any;
|
|
92
|
-
// return this.adaptor.innerHTML(node);
|
|
93
|
-
// })
|
|
94
|
-
// .replace(/\$(.+?)\$/g, (match, p1) => {
|
|
95
|
-
// // Inline math
|
|
96
|
-
// let node = mathjax_document.convert(`${p1}`, mathjax_options) as any;
|
|
97
|
-
// return this.adaptor.innerHTML(node);
|
|
98
|
-
// })
|
|
99
|
-
// .replace(/\\\((.+?)\\\)/g, (match, p1) => {
|
|
100
|
-
// // Inline math
|
|
101
|
-
// let node = mathjax_document.convert(`${p1}`, mathjax_options) as any;
|
|
102
|
-
// return this.adaptor.innerHTML(node);
|
|
103
|
-
// })
|
|
104
|
-
// .replace(/\\\[(.+?)\\\]/g, (match, p1) => {
|
|
105
|
-
// // Inline math
|
|
106
|
-
// let node = mathjax_document.convert(`${p1}`, mathjax_options) as any;
|
|
107
|
-
// return this.adaptor.innerHTML(node);
|
|
108
|
-
// })
|
|
109
|
-
// return processedMath;
|
|
110
|
-
// 内置Tex内容筛选(不如正则准确)
|
|
111
|
-
// let node:any = mathjax_document.convert(math,mathjax_options) as any;
|
|
112
|
-
// return adaptor.innerHTML(node);
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mbW9kZS1uZy9zcmMvbGliL2FpZ2MvY29tcC1tYXJrZG93bi1wcmV2aWV3L3BsdWdpbnMvbWQtbWF0aGpheC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUVwRSwwQ0FBMEM7QUFDMUMsc0NBQXNDO0FBQ3RDLHNDQUFzQztBQUN0Qyx3Q0FBd0M7QUFDeEMsOENBQThDO0FBQzlDLDhDQUE4QztBQUM5QyxzREFBc0Q7QUFFdEQsTUFBTSxPQUFPLGVBQWU7SUFJeEIsWUFBWSxPQUFZO1FBQ3BCLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsV0FBVyxFQUFFLENBQUM7UUFDN0IsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRCxlQUFlLENBQUMsSUFBUSxFQUFDLE9BQVk7UUFDakMsSUFBRyxDQUFDLElBQUksRUFBRSxNQUFNO1lBQUUsT0FBTyxFQUFFLENBQUE7UUFDM0IsSUFBRyxDQUFDLElBQUksRUFBRSxPQUFPO1lBQUUsT0FBTyxFQUFFLENBQUE7UUFDNUIsT0FBTyxHQUFHLE9B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O0lBQ3RDLENBQUM7Q0FFSiIsInNvdXJjZXNDb250ZW50IjpbIlxyXG5cclxuaW1wb3J0IHsgbWF0aGpheCB9IGZyb20gXCJtYXRoamF4LWZ1bGwvanMvbWF0aGpheFwiO1xyXG5pbXBvcnQgeyBUZVggfSBmcm9tIFwibWF0aGpheC1mdWxsL2pzL2lucHV0L3RleFwiO1xyXG5pbXBvcnQgeyBTVkcgfSBmcm9tIFwibWF0aGpheC1mdWxsL2pzL291dHB1dC9zdmdcIjtcclxuaW1wb3J0IHsgQ0hUTUwgfSBmcm9tIFwibWF0aGpheC1mdWxsL2pzL291dHB1dC9jaHRtbFwiO1xyXG5pbXBvcnQgeyBBbGxQYWNrYWdlcyB9IGZyb20gXCJtYXRoamF4LWZ1bGwvanMvaW5wdXQvdGV4L0FsbFBhY2thZ2VzXCI7XHJcbmltcG9ydCB7IGxpdGVBZGFwdG9yIH0gZnJvbSBcIm1hdGhqYXgtZnVsbC9qcy9hZGFwdG9ycy9saXRlQWRhcHRvclwiO1xyXG5pbXBvcnQgeyBSZWdpc3RlckhUTUxIYW5kbGVyIH0gZnJvbSBcIm1hdGhqYXgtZnVsbC9qcy9oYW5kbGVycy9odG1sXCI7XHJcblxyXG4vLyBpbXBvcnQgeyBtYXRoamF4IH0gZnJvbSBcIm1hdGhqYXgtZnVsbFwiO1xyXG4vLyBpbXBvcnQgeyBUZVggfSBmcm9tIFwibWF0aGpheC1mdWxsXCI7XHJcbi8vIGltcG9ydCB7IFNWRyB9IGZyb20gXCJtYXRoamF4LWZ1bGxcIjtcclxuLy8gaW1wb3J0IHsgQ0hUTUwgfSBmcm9tIFwibWF0aGpheC1mdWxsXCI7XHJcbi8vIGltcG9ydCB7IEFsbFBhY2thZ2VzIH0gZnJvbSBcIm1hdGhqYXgtZnVsbFwiO1xyXG4vLyBpbXBvcnQgeyBsaXRlQWRhcHRvciB9IGZyb20gXCJtYXRoamF4LWZ1bGxcIjtcclxuLy8gaW1wb3J0IHsgUmVnaXN0ZXJIVE1MSGFuZGxlciB9IGZyb20gXCJtYXRoamF4LWZ1bGxcIjtcclxuXHJcbmV4cG9ydCBjbGFzcyBNYXJrZG93bk1hdGhKYXh7XHJcblxyXG4gICAgb3B0aW9uczphbnlcclxuICAgIGFkYXB0b3I6YW55XHJcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zPzphbnkpe1xyXG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XHJcbiAgICAgICAgdGhpcy5hZGFwdG9yID0gbGl0ZUFkYXB0b3IoKTtcclxuICAgICAgICBSZWdpc3RlckhUTUxIYW5kbGVyKHRoaXMuYWRhcHRvcik7XHJcbiAgICB9XHJcbiAgICB0ZXh0X3RvX21hdGhqYXgobWF0aDphbnksb3B0aW9ucz86YW55KTphbnl7XHJcbiAgICAgICAgaWYoIW1hdGg/Lmxlbmd0aCkgcmV0dXJuIFwiXCJcclxuICAgICAgICBpZighbWF0aD8ucmVwbGFjZSkgcmV0dXJuIFwiXCJcclxuICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB0aGlzLm9wdGlvbnNcclxuICAgICAgICBsZXQgb3V0cHV0OmFueSA9IG5ldyBTVkcoe2ZvbnRDYWNoZTonbG9jYWwnfSk7XHJcbiAgICAgICAgaWYob3B0aW9ucz8ub3V0cHV0PT1cImNodG1sXCIpe1xyXG4gICAgICAgIG91dHB1dCA9IG5ldyBDSFRNTCgpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIOiuvue9rui+k+WFpei+k+WHuuWPguaVsFxyXG4gICAgICAgIGNvbnN0IG1hdGhqYXhfZG9jdW1lbnQ6YW55ID0gbWF0aGpheC5kb2N1bWVudCgnJyx7XHJcbiAgICAgICAgc2tpcEh0bWxUYWdzOltcclxuICAgICAgICAgICAgJ3NjcmlwdCcsXCJub3NjcmlwdFwiLCdzdHlsZScsXCJ0ZXh0YXJlYVwiLFwicHJlXCIsXCJjb2RlXCIsXCJhbm5vdGF0aW9uXCIsXCJhbm5vdGF0aW9uLXhtbFwiXHJcbiAgICAgICAgXSxcclxuICAgICAgICBJbnB1dEpheDpuZXcgVGVYKHtcclxuICAgICAgICAgICAgLy8gZGlzcGxheU1hdGg6IFtbJ1xcJFxcJCcsICdcXCRcXCQnXSwgWydcXFxcXFxbJywgJ1xcXFxcXF0nXV0sXHJcbiAgICAgICAgICAgIC8vIGlubGluZU1hdGg6IFtbJ1xcJCcsICdcXCQnXSxbJ1xcXFxcXCgnLCAnXFxcXFxcKSddXSxcclxuICAgICAgICAgICAgcHJvY2Vzc0VzY2FwZXM6IHRydWUsXHJcbiAgICAgICAgICAgIHBhY2thZ2VzOkFsbFBhY2thZ2VzLFxyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIE91dHB1dEpheDpvdXRwdXRcclxuICAgICAgICB9KVxyXG4gICAgICAgIGNvbnN0IG1hdGhqYXhfb3B0aW9ucyA9IHtcclxuICAgICAgICBlbToxNixcclxuICAgICAgICBleDo4LFxyXG4gICAgICAgIGNvbnRhaW5lcldpZHRoOjEyODBcclxuICAgICAgICB9XHJcbiAgICBcclxuICAgICAgICAvLyBQcmVwcm9jZXNzIHRoZSBpbnB1dCB0byBoYW5kbGUgaW5saW5lIGFuZCBibG9jayBtYXRoIHNlcGFyYXRlbHlcclxuICAgICAgICBsZXQgcmVneExpc3QgPSBbXHJcbiAgICAgICAgICAgIC9cXCRcXCRcXCAoLis/KVxcIFxcJFxcJC9nLCAvLyDljLnphY0kJFxcIFxcICQkXHJcbiAgICAgICAgICAgIC9cXCRcXCQoLis/KVxcJFxcJC9nLCAvLyDljLnphY0kJCAkJFxyXG4gICAgICAgICAgICAvXFwkXFwkXFxuKC4rPylcXG5cXCRcXCQvZywgLy8g5Yy56YWNJCRcXG4gXFxuJCRcclxuICAgICAgICAgICAgL1xcJCguKz8pXFwkL2csIC8vIOWMuemFjSQgJFxyXG4gICAgICAgICAgICAvXFxcXFxcKCguKz8pXFxcXFxcKS9nLCAvLyDljLnphY1cXCgpXHJcbiAgICAgICAgICAgIC9cXFxcXFxbKC4rPylcXFxcXFxdL2cgLy8g5Yy56YWNXFxbXVxyXG4gICAgICAgIF1cclxuICAgICAgICByZWd4TGlzdC5mb3JFYWNoKHJlZ3g9PntcclxuICAgICAgICAgICAgbWF0aCA9IG1hdGhcclxuICAgICAgICAgICAgLnJlcGxhY2UocmVneCwgKG1hdGNoLCBwMSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVneCxtYXRjaCxwMSlcclxuICAgICAgICAgICAgLy8gSW5saW5lIG1hdGhcclxuICAgICAgICAgICAgbGV0IG5vZGVcclxuICAgICAgICAgICAgdHJ5e1xyXG4gICAgICAgICAgICAgICAgbm9kZSA9IG1hdGhqYXhfZG9jdW1lbnQuY29udmVydChgJHtwMX1gLCBtYXRoamF4X29wdGlvbnMpIGFzIGFueTtcclxuICAgICAgICAgICAgfWNhdGNoKGVyclJlcGxhY2Upe31cclxuICAgICAgICAgICAgaWYobm9kZSl7XHJcbiAgICAgICAgICAgICAgICBsZXQgbm9kZUh0bWwgPSBgPHNwYW4gY2xhc3M9XCJtYXRoamF4IHJhd1wiIHN0eWxlPVwibWFyZ2luLWxlZnQ6MTBweDttYXJnaW4tcmlnaHQ6MTBweDtcIj4ke3RoaXMuYWRhcHRvci5pbm5lckhUTUwobm9kZSl9PC9zcGFuPmBcclxuICAgICAgICAgICAgICAgIHJldHVybiBub2RlSHRtbDtcclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcDFcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgcmV0dXJuICBtYXRoXHJcbiAgICAgICAgLy8gbWF0aFxyXG4gICAgICAgIC8vIC5yZXBsYWNlKC9cXCRcXCRcXCAoLis/KVxcIFxcJFxcJC9nLCAobWF0Y2gsIHAxKSA9PiB7XHJcbiAgICAgICAgLy8gLy8gSW5saW5lIG1hdGhcclxuICAgICAgICAvLyBsZXQgbm9kZSA9IG1hdGhqYXhfZG9jdW1lbnQuY29udmVydChgJHtwMX1gLCBtYXRoamF4X29wdGlvbnMpIGFzIGFueTtcclxuICAgICAgICAvLyByZXR1cm4gdGhpcy5hZGFwdG9yLmlubmVySFRNTChub2RlKTtcclxuICAgICAgICAvLyB9KVxyXG4gICAgICAgIC8vIC5yZXBsYWNlKC9cXCRcXCQoLis/KVxcJFxcJC9nLCAobWF0Y2gsIHAxKSA9PiB7XHJcbiAgICAgICAgLy8gICAgIC8vIElubGluZSBtYXRoXHJcbiAgICAgICAgLy8gICAgIGxldCBub2RlID0gbWF0aGpheF9kb2N1bWVudC5jb252ZXJ0KGAke3AxfWAsIG1hdGhqYXhfb3B0aW9ucykgYXMgYW55O1xyXG4gICAgICAgIC8vICAgICByZXR1cm4gdGhpcy5hZGFwdG9yLmlubmVySFRNTChub2RlKTtcclxuICAgICAgICAvLyB9KVxyXG4gICAgICAgIC8vIC5yZXBsYWNlKC9cXCRcXCRcXG4oLis/KVxcblxcJFxcJC9nLCAobWF0Y2gsIHAxKSA9PiB7XHJcbiAgICAgICAgLy8gICAgIC8vIElubGluZSBtYXRoXHJcbiAgICAgICAgLy8gICAgIGxldCBub2RlID0gbWF0aGpheF9kb2N1bWVudC5jb252ZXJ0KGAke3AxfWAsIG1hdGhqYXhfb3B0aW9ucykgYXMgYW55O1xyXG4gICAgICAgIC8vICAgICByZXR1cm4gdGhpcy5hZGFwdG9yLmlubmVySFRNTChub2RlKTtcclxuICAgICAgICAvLyB9KVxyXG4gICAgICAgIC8vIC5yZXBsYWNlKC9cXCQoLis/KVxcJC9nLCAobWF0Y2gsIHAxKSA9PiB7XHJcbiAgICAgICAgLy8gICAgIC8vIElubGluZSBtYXRoXHJcbiAgICAgICAgLy8gICAgIGxldCBub2RlID0gbWF0aGpheF9kb2N1bWVudC5jb252ZXJ0KGAke3AxfWAsIG1hdGhqYXhfb3B0aW9ucykgYXMgYW55O1xyXG4gICAgICAgIC8vICAgICByZXR1cm4gdGhpcy5hZGFwdG9yLmlubmVySFRNTChub2RlKTtcclxuICAgICAgICAvLyB9KVxyXG4gICAgICAgIC8vIC5yZXBsYWNlKC9cXFxcXFwoKC4rPylcXFxcXFwpL2csIChtYXRjaCwgcDEpID0+IHtcclxuICAgICAgICAvLyAgICAgLy8gSW5saW5lIG1hdGhcclxuICAgICAgICAvLyAgICAgbGV0IG5vZGUgPSBtYXRoamF4X2RvY3VtZW50LmNvbnZlcnQoYCR7cDF9YCwgbWF0aGpheF9vcHRpb25zKSBhcyBhbnk7XHJcbiAgICAgICAgLy8gICAgIHJldHVybiB0aGlzLmFkYXB0b3IuaW5uZXJIVE1MKG5vZGUpO1xyXG4gICAgICAgIC8vIH0pXHJcbiAgICAgICAgLy8gLnJlcGxhY2UoL1xcXFxcXFsoLis/KVxcXFxcXF0vZywgKG1hdGNoLCBwMSkgPT4ge1xyXG4gICAgICAgIC8vICAgICAvLyBJbmxpbmUgbWF0aFxyXG4gICAgICAgIC8vICAgICBsZXQgbm9kZSA9IG1hdGhqYXhfZG9jdW1lbnQuY29udmVydChgJHtwMX1gLCBtYXRoamF4X29wdGlvbnMpIGFzIGFueTtcclxuICAgICAgICAvLyAgICAgcmV0dXJuIHRoaXMuYWRhcHRvci5pbm5lckhUTUwobm9kZSk7XHJcbiAgICAgICAgLy8gfSlcclxuICAgICAgICAvLyByZXR1cm4gcHJvY2Vzc2VkTWF0aDtcclxuICAgICAgICBcclxuICAgICAgICAvLyDlhoXnva5UZXjlhoXlrrnnrZvpgIko5LiN5aaC5q2j5YiZ5YeG56GuKVxyXG4gICAgICAgIC8vIGxldCBub2RlOmFueSA9IG1hdGhqYXhfZG9jdW1lbnQuY29udmVydChtYXRoLG1hdGhqYXhfb3B0aW9ucykgYXMgYW55O1xyXG4gICAgICAgIC8vIHJldHVybiBhZGFwdG9yLmlubmVySFRNTChub2RlKTtcclxuICAgIH1cclxuICBcclxufSJdfQ==
|
|
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/comp-markdown-preview/plugins/md-mathjax/index.mjs
|
|
7
|
+
*/
|
|
8
|
+
import{mathjax}from"mathjax-full/js/mathjax";import{TeX}from"mathjax-full/js/input/tex";import{SVG}from"mathjax-full/js/output/svg";import{CHTML}from"mathjax-full/js/output/chtml";import{AllPackages}from"mathjax-full/js/input/tex/AllPackages";import{liteAdaptor}from"mathjax-full/js/adaptors/liteAdaptor";import{RegisterHTMLHandler}from"mathjax-full/js/handlers/html";export class MarkdownMathJax{constructor(t){this.options=t,this.adaptor=liteAdaptor(),RegisterHTMLHandler(this.adaptor)}text_to_mathjax(t,a){if(!t?.length)return"";if(!t?.replace)return"";a=a||this.options;let r=new SVG({fontCache:"local"});"chtml"==a?.output&&(r=new CHTML);const e=mathjax.document("",{skipHtmlTags:["script","noscript","style","textarea","pre","code","annotation","annotation-xml"],InputJax:new TeX({processEscapes:!0,packages:AllPackages}),OutputJax:r}),o={em:16,ex:8,containerWidth:1280};return[/\$\$\ (.+?)\ \$\$/g,/\$\$(.+?)\$\$/g,/\$\$\n(.+?)\n\$\$/g,/\$(.+?)\$/g,/\\\((.+?)\\\)/g,/\\\[(.+?)\\\]/g].forEach((a=>{t=t.replace(a,((t,r)=>{let l;console.log(a,t,r);try{l=e.convert(`${r}`,o)}catch(t){}if(l){return`<span class="mathjax raw" style="margin-left:10px;margin-right:10px;">${this.adaptor.innerHTML(l)}</span>`}return r}))})),t}}
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9haWdjL2NvbXAtbWFya2Rvd24tcHJldmlldy9wbHVnaW5zL21kLW1hdGhqYXgvaW5kZXgubWpz`
|
|
10
|
+
|
|
@@ -1,14 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
export
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
export * from "./agent";
|
|
12
|
-
export * from "./chat";
|
|
13
|
-
export * from "./story";
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mbW9kZS1uZy9zcmMvbGliL2FpZ2MvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyw2QkFBNkIsQ0FBQTtBQUMzQyxjQUFjLGdDQUFnQyxDQUFBO0FBQzlDLGNBQWMsNkJBQTZCLENBQUE7QUFDM0MsY0FBYyxrREFBa0QsQ0FBQTtBQUNoRSxjQUFjLHdDQUF3QyxDQUFBO0FBQ3RELGNBQWMsaURBQWlELENBQUE7QUFDL0QsY0FBYyxvREFBb0QsQ0FBQTtBQUNsRSxjQUFjLDJDQUEyQyxDQUFBO0FBQ3pELGNBQWMsU0FBUyxDQUFBO0FBQ3ZCLGNBQWMsVUFBVSxDQUFBO0FBQ3hCLGNBQWMsU0FBUyxDQUFBO0FBQ3ZCLGNBQWMsUUFBUSxDQUFBO0FBQ3RCLGNBQWMsU0FBUyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vc2VydmljZS1mbWFpL2ZtYWkuc2VydmljZVwiXHJcbmV4cG9ydCAqIGZyb20gXCIuL3NlcnZpY2UtZm1haS9zZXJ2aWNlLWltYWdpbmVcIlxyXG5leHBvcnQgKiBmcm9tIFwiLi9zZXJ2aWNlLWZtYWkvc2VydmljZS1jaGF0XCJcclxuZXhwb3J0ICogZnJvbSBcIi4vY29tcC1tYXJrZG93bi1wcmV2aWV3L3BsdWdpbnMvbWQtbWF0aGpheC9pbmRleFwiXHJcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXAtbWFya2Rvd24tcHJldmlldy9tYXJrZG93bi1wYXJzZVwiXHJcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXAtbWFya2Rvd24tcHJldmlldy9tYXJrZG93bi1wcmV2aWV3Lm1vZHVsZVwiXHJcbmV4cG9ydCAqIGZyb20gXCIuL2NvbXAtbWFya2Rvd24tcHJldmlldy9tYXJrZG93bi1wcmV2aWV3LmNvbXBvbmVudFwiIFxyXG5leHBvcnQgKiBmcm9tIFwiLi9jb21wLW1hcmtkb3duLXByZXZpZXcvY2xpcGJvYXJkLnNlcnZpY2VcIiBcclxuZXhwb3J0ICogZnJvbSBcIi4vdm9pY2VcIlxyXG5leHBvcnQgKiBmcm9tIFwiLi9hdmF0YXJcIlxyXG5leHBvcnQgKiBmcm9tIFwiLi9hZ2VudFwiXHJcbmV4cG9ydCAqIGZyb20gXCIuL2NoYXRcIlxyXG5leHBvcnQgKiBmcm9tIFwiLi9zdG9yeVwiIl19
|
|
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/index.mjs
|
|
7
|
+
*/
|
|
8
|
+
export*from"./service-fmai/fmai.service";export*from"./service-fmai/service-imagine";export*from"./service-fmai/service-chat";export*from"./comp-markdown-preview/plugins/md-mathjax/index";export*from"./comp-markdown-preview/markdown-parse";export*from"./comp-markdown-preview/markdown-preview.module";export*from"./comp-markdown-preview/markdown-preview.component";export*from"./comp-markdown-preview/clipboard.service";export*from"./voice";export*from"./avatar";export*from"./agent";export*from"./chat";export*from"./story";
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9haWdjL2luZGV4Lm1qcw==`
|
|
10
|
+
|
|
@@ -1,21 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
constructor(imagine,
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
}
|
|
12
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FmaiService, deps: [{ token: i1.ImagineService }, { token: i2.ChatService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
13
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FmaiService, providedIn: 'root' }); }
|
|
14
|
-
}
|
|
15
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FmaiService, decorators: [{
|
|
16
|
-
type: Injectable,
|
|
17
|
-
args: [{
|
|
18
|
-
providedIn: 'root'
|
|
19
|
-
}]
|
|
20
|
-
}], ctorParameters: () => [{ type: i1.ImagineService }, { type: i2.ChatService }] });
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm1haS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm1vZGUtbmcvc3JjL2xpYi9haWdjL3NlcnZpY2UtZm1haS9mbWFpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDOzs7O0FBS25FLE1BQU0sT0FBTyxXQUFXO0lBRXRCLFlBQ1UsT0FBc0IsRUFDdEIsSUFBZ0I7UUFEaEIsWUFBTyxHQUFQLE9BQU8sQ0FBZTtRQUN0QixTQUFJLEdBQUosSUFBSSxDQUFZO0lBQ3RCLENBQUM7K0dBTE0sV0FBVzttSEFBWCxXQUFXLGNBRlYsTUFBTTs7NEZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENoYXRTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlLWNoYXQvY2hhdC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSW1hZ2luZVNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2UtaW1hZ2luZS9pbWFnaW5lLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgRm1haVNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaW1hZ2luZTpJbWFnaW5lU2VydmljZSxcclxuICAgIHByaXZhdGUgY2hhdDpDaGF0U2VydmljZVxyXG4gICkgeyB9XHJcblxyXG4gIFxyXG5cclxufVxyXG4iXX0=
|
|
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/service-fmai/fmai.service.mjs
|
|
7
|
+
*/
|
|
8
|
+
import{Injectable}from"@angular/core";import{ChatService}from"./service-chat/chat.service";import{ImagineService}from"./service-imagine/imagine.service";import*as i0 from"@angular/core";import*as i1 from"./service-imagine/imagine.service";import*as i2 from"./service-chat/chat.service";export class FmaiService{constructor(e,i){this.imagine=e,this.chat=i}static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:FmaiService,deps:[{token:i1.ImagineService},{token:i2.ChatService}],target:i0.ɵɵFactoryTarget.Injectable})}static{this.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:FmaiService,providedIn:"root"})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:FmaiService,decorators:[{type:Injectable,args:[{providedIn:"root"}]}],ctorParameters:()=>[{type:i1.ImagineService},{type:i2.ChatService}]});
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9haWdjL3NlcnZpY2UtZm1haS9mbWFpLnNlcnZpY2UubWpz`
|
|
10
|
+
|
|
@@ -1,2 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
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/service-fmai/service-chat/chat-class.mjs
|
|
7
|
+
*/
|
|
8
|
+
export*from"../../../core/agent/chat";
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9haWdjL3NlcnZpY2UtZm1haS9zZXJ2aWNlLWNoYXQvY2hhdC1jbGFzcy5tanM=`
|
|
10
|
+
|
|
@@ -1,176 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
import { Router } from '@angular/router';
|
|
3
|
-
// import { MASK_LIST } from './mask-list';
|
|
4
|
-
import { FmodeChat } from './chat-class';
|
|
5
|
-
import Parse from "parse";
|
|
6
|
-
import { NovaCloudService } from '../../../nova-cloud';
|
|
7
|
-
import { AlertController, NavController, Platform } from '@ionic/angular';
|
|
8
|
-
import { CrossService } from '../../../platform';
|
|
9
|
-
import { NovaUploadService } from '../../../storage/service-upload/nova-upload.service';
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
import * as i1 from "@angular/router";
|
|
12
|
-
import * as i2 from "../../../nova-cloud";
|
|
13
|
-
import * as i3 from "@ionic/angular";
|
|
14
|
-
import * as i4 from "../../../platform";
|
|
15
|
-
import * as i5 from "../../../storage/service-upload/nova-upload.service";
|
|
16
|
-
export class ChatService {
|
|
17
|
-
constructor(router, ncloud, platform, alertCtrl, navCtrl, cross, uploadServ) {
|
|
18
|
-
this.router = router;
|
|
19
|
-
this.ncloud = ncloud;
|
|
20
|
-
this.platform = platform;
|
|
21
|
-
this.alertCtrl = alertCtrl;
|
|
22
|
-
this.navCtrl = navCtrl;
|
|
23
|
-
this.cross = cross;
|
|
24
|
-
this.uploadServ = uploadServ;
|
|
25
|
-
// 已加载聊天信息临时存储
|
|
26
|
-
this.chatMap = {};
|
|
27
|
-
this.isCapacitor = false;
|
|
28
|
-
this.platformMap = {
|
|
29
|
-
"pc": "电脑端",
|
|
30
|
-
"mobile": "移动端",
|
|
31
|
-
};
|
|
32
|
-
this.isCapacitor = this.platform.is("capacitor");
|
|
33
|
-
}
|
|
34
|
-
async doButtonAction(button) {
|
|
35
|
-
let type = this.cross.navMenuType;
|
|
36
|
-
let platforms = button?.platform?.map(item => this.platformMap[item]).join("、");
|
|
37
|
-
if (button?.platform?.length > 0 && button?.platform?.indexOf(type) == -1) {
|
|
38
|
-
let alert = await this.alertCtrl.create({
|
|
39
|
-
header: "注意",
|
|
40
|
-
subHeader: "终端不符",
|
|
41
|
-
message: `请您使用${platforms}开启本功能。`,
|
|
42
|
-
buttons: [
|
|
43
|
-
{
|
|
44
|
-
role: "ok", text: "知道了",
|
|
45
|
-
},
|
|
46
|
-
]
|
|
47
|
-
});
|
|
48
|
-
alert.present();
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
if (button?.path) {
|
|
52
|
-
this.navCtrl.navigateRoot(button?.path);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
// 初始化未加载会话
|
|
56
|
-
async initChatMap(sessionId) {
|
|
57
|
-
if (this.chatMap[sessionId])
|
|
58
|
-
return this.chatMap[sessionId];
|
|
59
|
-
let query = new Parse.Query("ChatSession");
|
|
60
|
-
query.include("user", "role", "role.model", "story", "story.person", 'person', 'person.userVerify');
|
|
61
|
-
let session = await query.get(sessionId);
|
|
62
|
-
let chat = new FmodeChat(session?.id, session?.get("role"), session, this, this.navCtrl, this.ncloud, this.uploadServ);
|
|
63
|
-
this.chatMap[sessionId] = chat;
|
|
64
|
-
return this.chatMap[sessionId];
|
|
65
|
-
}
|
|
66
|
-
async getChatSession(queryParams) {
|
|
67
|
-
if (!Parse?.User?.current()?.id)
|
|
68
|
-
return; // 用户必须登录
|
|
69
|
-
let limit = 30; // 普通用户限查看10条历史记录
|
|
70
|
-
let query = new Parse.Query("ChatSession");
|
|
71
|
-
if (queryParams) {
|
|
72
|
-
query = Parse.Query.fromJSON("ChatSession", queryParams);
|
|
73
|
-
}
|
|
74
|
-
query.include("user", "role", "role.model", "story", "story.person", "story.person.userVerify", "person", "person.userVerify");
|
|
75
|
-
query.addDescending("updatedAt");
|
|
76
|
-
query.equalTo("user", Parse.User.current().toPointer());
|
|
77
|
-
query.notEqualTo('isDeleted', true);
|
|
78
|
-
query.limit(limit);
|
|
79
|
-
let list = await query.find();
|
|
80
|
-
this.chatList = list.map(item => {
|
|
81
|
-
// 添加缓存
|
|
82
|
-
this.chatMap[item?.id] = new FmodeChat(item?.id, item?.get("role"), item, this, this.navCtrl, this.ncloud, this.uploadServ);
|
|
83
|
-
return {
|
|
84
|
-
session: item,
|
|
85
|
-
sid: item?.id,
|
|
86
|
-
isHidden: false,
|
|
87
|
-
rid: item?.get("role")?.id,
|
|
88
|
-
name: item?.get("role")?.get("name"),
|
|
89
|
-
thumb: item?.get("role")?.get("thumb"),
|
|
90
|
-
title: item?.get("title") || item?.get("role")?.get("name"),
|
|
91
|
-
message: item?.get("messageList")?.[item?.get("messageList")?.length - 1]?.content?.slice(0, 20),
|
|
92
|
-
latest: item?.createdAt
|
|
93
|
-
};
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
async getChatSessionDistinct() {
|
|
97
|
-
let limit = 10; // 普通用户限查看10条历史记录
|
|
98
|
-
let sql = `SELECT t1."objectId" as sid , "AvatarRole"."objectId" as rid, * FROM (
|
|
99
|
-
SELECT *,ROW_NUMBER() OVER (PARTITION BY "user", "role" ORDER BY "createdAt" DESC) AS rn
|
|
100
|
-
FROM "ChatSession" WHERE "user"=$1
|
|
101
|
-
) as t1
|
|
102
|
-
LEFT JOIN "AvatarRole" ON "AvatarRole"."objectId" = t1."role"
|
|
103
|
-
WHERE t1.rn=1
|
|
104
|
-
LIMIT $2
|
|
105
|
-
;`;
|
|
106
|
-
let result = await this.ncloud.novaql(sql, [Parse.User.current()?.id, limit]);
|
|
107
|
-
let chatList = result?.map(item => {
|
|
108
|
-
return {
|
|
109
|
-
sid: item?.sid,
|
|
110
|
-
rid: item?.rid,
|
|
111
|
-
name: item?.name,
|
|
112
|
-
message: item?.messageList?.[item?.messageList?.length - 1]?.content?.slice(0, 20),
|
|
113
|
-
latest: item?.createdAt
|
|
114
|
-
};
|
|
115
|
-
});
|
|
116
|
-
this.chatList = chatList;
|
|
117
|
-
return this.chatList;
|
|
118
|
-
}
|
|
1
|
+
|
|
119
2
|
/**
|
|
120
|
-
*
|
|
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/service-fmai/service-chat/chat.service.mjs
|
|
121
7
|
*/
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
this.chatMap[sessionId] = chat; // new 窗口如果没有消息转换成带ID的,每次就会清空
|
|
126
|
-
this.router.navigate(["/chat/pro/chat/" + sessionId]);
|
|
127
|
-
}
|
|
128
|
-
async createNewRoleChat(roleId) {
|
|
129
|
-
let query = new Parse.Query("AvatarRole");
|
|
130
|
-
query.include("model");
|
|
131
|
-
let role = await query.get(roleId);
|
|
132
|
-
// console.log("role",role)
|
|
133
|
-
let chat = new FmodeChat("new", role, null, this, this.navCtrl, this.ncloud, this.uploadServ);
|
|
134
|
-
return chat;
|
|
135
|
-
}
|
|
136
|
-
async restoreChatPanel(options) {
|
|
137
|
-
let queryr = new Parse.Query("AvatarRole");
|
|
138
|
-
let querys = new Parse.Query("ChatSession");
|
|
139
|
-
let role = await queryr.get(options?.rid);
|
|
140
|
-
let session = await querys.get(options?.sid);
|
|
141
|
-
// let sessionId = "new"
|
|
142
|
-
let chat = new FmodeChat(options?.sid, role, session, this, this.navCtrl, this.ncloud, this.uploadServ);
|
|
143
|
-
this.chatMap[options?.sid] = chat;
|
|
144
|
-
this.router.navigate(["/chat/pro/chat/" + options?.sid]);
|
|
145
|
-
}
|
|
146
|
-
async callRole(role) {
|
|
147
|
-
// 暂时开启全端进入语音对话
|
|
148
|
-
if (false && !this.isCapacitor) {
|
|
149
|
-
let alert = await this.alertCtrl.create({
|
|
150
|
-
header: "注意",
|
|
151
|
-
subHeader: "语音对话,限手机APP端可用",
|
|
152
|
-
message: "请联系客服获取内测资格哦!",
|
|
153
|
-
buttons: [
|
|
154
|
-
{
|
|
155
|
-
role: "ok", text: "知道了",
|
|
156
|
-
},
|
|
157
|
-
]
|
|
158
|
-
});
|
|
159
|
-
alert.present();
|
|
160
|
-
return;
|
|
161
|
-
}
|
|
162
|
-
document.body.classList.add('dark');
|
|
163
|
-
this.router.navigate([`/avatar/role/${role.id}`, {
|
|
164
|
-
type: "phone"
|
|
165
|
-
}]);
|
|
166
|
-
}
|
|
167
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChatService, deps: [{ token: i1.Router }, { token: i2.NovaCloudService }, { token: i3.Platform }, { token: i3.AlertController }, { token: i3.NavController }, { token: i4.CrossService }, { token: i5.NovaUploadService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
168
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChatService, providedIn: 'root' }); }
|
|
169
|
-
}
|
|
170
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ChatService, decorators: [{
|
|
171
|
-
type: Injectable,
|
|
172
|
-
args: [{
|
|
173
|
-
providedIn: 'root'
|
|
174
|
-
}]
|
|
175
|
-
}], ctorParameters: () => [{ type: i1.Router }, { type: i2.NovaCloudService }, { type: i3.Platform }, { type: i3.AlertController }, { type: i3.NavController }, { type: i4.CrossService }, { type: i5.NovaUploadService }] });
|
|
176
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm1vZGUtbmcvc3JjL2xpYi9haWdjL3NlcnZpY2UtZm1haS9zZXJ2aWNlLWNoYXQvY2hhdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pDLDJDQUEyQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQW1CLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0YsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDOzs7Ozs7O0FBS3hGLE1BQU0sT0FBTyxXQUFXO0lBUXRCLFlBQ1UsTUFBYSxFQUNiLE1BQXVCLEVBQ3ZCLFFBQWlCLEVBQ2pCLFNBQXlCLEVBQ3pCLE9BQXFCLEVBQ3JCLEtBQWtCLEVBQ2xCLFVBQTRCO1FBTjVCLFdBQU0sR0FBTixNQUFNLENBQU87UUFDYixXQUFNLEdBQU4sTUFBTSxDQUFpQjtRQUN2QixhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQ2pCLGNBQVMsR0FBVCxTQUFTLENBQWdCO1FBQ3pCLFlBQU8sR0FBUCxPQUFPLENBQWM7UUFDckIsVUFBSyxHQUFMLEtBQUssQ0FBYTtRQUNsQixlQUFVLEdBQVYsVUFBVSxDQUFrQjtRQWJ0QyxjQUFjO1FBQ2QsWUFBTyxHQUVILEVBQUUsQ0FBQTtRQUNOLGdCQUFXLEdBQVcs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QUksRUFBQyxJQUFJLEVBQUMsSUFBSSxFQUFDLEtBQUs7cUJBQ3JCO2lCQUNGO2FBQ0YsQ0FBQyxDQUFBO1lBQ0YsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2hCLE9BQU07UUFFUixDQUFDO1FBQ0QsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxFQUFFLEVBQUUsRUFBQztnQkFDOUMsSUFBSSxFQUFDLE9BQU87YUFDYixDQUFDLENBQUMsQ0FBQTtJQUNMLENBQUM7K0dBcEtVLFdBQVc7bUhBQVgsV0FBVyxjQUZWLE1BQU07OzRGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG4vLyBpbXBvcnQgeyBNQVNLX0xJU1QgfSBmcm9tICcuL21hc2stbGlzdCc7XHJcbmltcG9ydCB7IEZtb2RlQ2hhdCB9IGZyb20gJy4vY2hhdC1jbGFzcyc7XHJcbmltcG9ydCBQYXJzZSBmcm9tIFwicGFyc2VcIjtcclxuaW1wb3J0IHsgTm92YUNsb3VkU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL25vdmEtY2xvdWQnO1xyXG5pbXBvcnQgeyBBbGVydENvbnRyb2xsZXIsIE5hdkNvbnRyb2xsZXIsIFBsYXRmb3JtLCBUb2FzdENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XHJcbmltcG9ydCB7IENyb3NzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3BsYXRmb3JtJztcclxuaW1wb3J0IHsgTm92YVVwbG9hZFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zdG9yYWdlL3NlcnZpY2UtdXBsb2FkL25vdmEtdXBsb2FkLnNlcnZpY2UnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2hhdFNlcnZpY2Uge1xyXG5cclxuICAvLyDlt7LliqDovb3ogYrlpKnkv6Hmga/kuLTml7blrZjlgqhcclxuICBjaGF0TWFwOntcclxuICAgIFtrZXk6c3RyaW5nXTpGbW9kZUNoYXRcclxuICB9ID0ge31cclxuICBpc0NhcGFjaXRvcjpib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByb3V0ZXI6Um91dGVyLFxyXG4gICAgcHJpdmF0ZSBuY2xvdWQ6Tm92YUNsb3VkU2VydmljZSxcclxuICAgIHByaXZhdGUgcGxhdGZvcm06UGxhdGZvcm0sXHJcbiAgICBwcml2YXRlIGFsZXJ0Q3RybDpBbGVydENvbnRyb2xsZXIsXHJcbiAgICBwcml2YXRlIG5hdkN0cmw6TmF2Q29udHJvbGxlcixcclxuICAgIHByaXZhdGUgY3Jvc3M6Q3Jvc3NTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB1cGxvYWRTZXJ2Ok5vdmFVcGxvYWRTZXJ2aWNlXHJcbiAgKSB7IFxyXG4gICAgdGhpcy5pc0NhcGFjaXRvciA9IHRoaXMucGxhdGZvcm0uaXMoXCJjYXBhY2l0b3JcIilcclxuXHJcbiAgfVxyXG5cclxuICBcclxuICBwbGF0Zm9ybU1hcCA9IHtcclxuICAgIFwicGNcIjpcIueUteiEkeerr1wiLFxyXG4gICAgXCJtb2JpbGVcIjpcIuenu+WKqOerr1wiLFxyXG4gIH1cclxuICBhc3luYyBkb0J1dHRvbkFjdGlvbihidXR0b24pe1xyXG4gICAgbGV0IHR5cGUgPSB0aGlzLmNyb3NzLm5hdk1lbnVUeXBlXHJcbiAgICBsZXQgcGxhdGZvcm1zID0gYnV0dG9uPy5wbGF0Zm9ybT8ubWFwKGl0ZW09PnRoaXMucGxhdGZvcm1NYXBbaXRlbV0pLmpvaW4oXCLjgIFcIilcclxuICAgIGlmKGJ1dHRvbj8ucGxhdGZvcm0/Lmxlbmd0aD4wICYmIGJ1dHRvbj8ucGxhdGZvcm0/LmluZGV4T2YodHlwZSk9PS0xKXtcclxuICAgICAgbGV0IGFsZXJ0ID0gYXdhaXQgdGhpcy5hbGVydEN0cmwuY3JlYXRlKHtcclxuICAgICAgICBoZWFkZXI6XCLms6jmhI9cIixcclxuICAgICAgICBzdWJIZWFkZXI6XCLnu4jnq6/kuI3nrKZcIixcclxuICAgICAgICBtZXNzYWdlOmDor7fmgqjkvb/nlKgke3BsYXRmb3Jtc33lvIDlkK/mnKzlip/og73jgIJgLFxyXG4gICAgICAgIGJ1dHRvbnM6W1xyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICByb2xlOlwib2tcIix0ZXh0Olwi55+l6YGT5LqGXCIsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIF1cclxuICAgICAgfSlcclxuICAgICAgYWxlcnQucHJlc2VudCgpO1xyXG4gICAgICByZXR1cm5cclxuICAgIH1cclxuICAgIGlmKGJ1dHRvbj8ucGF0aCl7XHJcbiAgICAgIHRoaXMubmF2Q3RybC5uYXZpZ2F0ZVJvb3QoYnV0dG9uPy5wYXRoKTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8g5Yid5aeL5YyW5pyq5Yqg6L295Lya6K+dXHJcbiAgYXN5bmMgaW5pdENoYXRNYXAoc2Vzc2lvbklkKXtcclxuICAgIGlmKHRoaXMuY2hhdE1hcFtzZXNzaW9uSWRdKSByZXR1cm4gdGhpcy5jaGF0TWFwW3Nlc3Npb25JZF1cclxuICAgIGxldCBxdWVyeSA9IG5ldyBQYXJzZS5RdWVyeShcIkNoYXRTZXNzaW9uXCIpXHJcbiAgICBxdWVyeS5pbmNsdWRlKFwidXNlclwiLFwicm9sZVwiLFwicm9sZS5tb2RlbFwiLFwic3RvcnlcIixcInN0b3J5LnBlcnNvblwiLCdwZXJzb24nLCdwZXJzb24udXNlclZlcmlmeScpXHJcbiAgICBsZXQgc2Vzc2lvbiA9IGF3YWl0IHF1ZXJ5LmdldChzZXNzaW9uSWQpXHJcbiAgICBsZXQgY2hhdCA9IG5ldyBGbW9kZUNoYXQoc2Vzc2lvbj8uaWQsc2Vzc2lvbj8uZ2V0KFwicm9sZVwiKSxzZXNzaW9uLHRoaXMsdGhpcy5uYXZDdHJsLHRoaXMubmNsb3VkLHRoaXMudXBsb2FkU2Vydik7XHJcbiAgICB0aGlzLmNoYXRNYXBbc2Vzc2lvbklkXSA9IGNoYXQ7XHJcbiAgICByZXR1cm4gdGhpcy5jaGF0TWFwW3Nlc3Npb25JZF1cclxuICB9XHJcbiAgLy8g6I635b6X5Y6G5Y+y5Lya6K+d56qX5Y+jXHJcbiAgY2hhdExpc3Q6QXJyYXk8YW55PlxyXG4gIGFzeW5jIGdldENoYXRTZXNzaW9uKHF1ZXJ5UGFyYW1zPzphbnkpe1xyXG4gICAgaWYoIVBhcnNlPy5Vc2VyPy5jdXJyZW50KCk/LmlkKSByZXR1cm4gLy8g55So5oi35b+F6aG755m75b2VXHJcbiAgICBsZXQgbGltaXQgPSAzMCAvLyDmma7pgJrnlKjmiLfpmZDmn6XnnIsxMOadoeWOhuWPsuiusOW9lVxyXG4gICAgbGV0IHF1ZXJ5ID0gbmV3IFBhcnNlLlF1ZXJ5KFwiQ2hhdFNlc3Npb25cIik7XHJcbiAgICBpZihxdWVyeVBhcmFtcyl7XHJcbiAgICAgIHF1ZXJ5ID0gUGFyc2UuUXVlcnkuZnJvbUpTT04oXCJDaGF0U2Vzc2lvblwiLHF1ZXJ5UGFyYW1zKTtcclxuICAgIH1cclxuICAgIHF1ZXJ5LmluY2x1ZGUoXCJ1c2VyXCIsXCJyb2xlXCIsXCJyb2xlLm1vZGVsXCIsXCJzdG9yeVwiLFwic3RvcnkucGVyc29uXCIsXCJzdG9yeS5wZXJzb24udXNlclZlcmlmeVwiLFwicGVyc29uXCIsXCJwZXJzb24udXNlclZlcmlmeVwiKTtcclxuICAgIHF1ZXJ5LmFkZERlc2NlbmRpbmcoXCJ1cGRhdGVkQXRcIilcclxuICAgIHF1ZXJ5LmVxdWFsVG8oXCJ1c2VyXCIsUGFyc2UuVXNlci5jdXJyZW50KCkudG9Qb2ludGVyKCkpXHJcbiAgICBxdWVyeS5ub3RFcXVhbFRvKCdpc0RlbGV0ZWQnLCB0cnVlKTtcclxuICAgIHF1ZXJ5LmxpbWl0KGxpbWl0KVxyXG4gICAgbGV0IGxpc3QgPSBhd2FpdCBxdWVyeS5maW5kKCk7XHJcbiAgICB0aGlzLmNoYXRMaXN0ID0gbGlzdC5tYXAoaXRlbT0+e1xyXG4gICAgICAvLyDmt7vliqDnvJPlrZhcclxuICAgICAgdGhpcy5jaGF0TWFwW2l0ZW0/LmlkXSA9IG5ldyBGbW9kZUNoYXQoaXRlbT8uaWQsaXRlbT8uZ2V0KFwicm9sZVwiKSxpdGVtLHRoaXMsdGhpcy5uYXZDdHJsLHRoaXMubmNsb3VkLHRoaXMudXBsb2FkU2Vydik7IFxyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHNlc3Npb246aXRlbSxcclxuICAgICAgICBzaWQ6aXRlbT8uaWQsXHJcbiAgICAgICAgaXNIaWRkZW46ZmFsc2UsXHJcbiAgICAgICAgcmlkOml0ZW0/LmdldChcInJvbGVcIik/LmlkLFxyXG4gICAgICAgIG5hbWU6aXRlbT8uZ2V0KFwicm9sZVwiKT8uZ2V0KFwibmFtZVwiKSxcclxuICAgICAgICB0aHVtYjppdGVtPy5nZXQoXCJyb2xlXCIpPy5nZXQoXCJ0aHVtYlwiKSxcclxuICAgICAgICB0aXRsZTppdGVtPy5nZXQoXCJ0aXRsZVwiKSB8fCBpdGVtPy5nZXQoXCJyb2xlXCIpPy5nZXQoXCJuYW1lXCIpLFxyXG4gICAgICAgIG1lc3NhZ2U6aXRlbT8uZ2V0KFwibWVzc2FnZUxpc3RcIik/LltpdGVtPy5nZXQoXCJtZXNzYWdlTGlzdFwiKT8ubGVuZ3RoLTFdPy5jb250ZW50Py5zbGljZSgwLDIwKSxcclxuICAgICAgICBsYXRlc3Q6aXRlbT8uY3JlYXRlZEF0XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIGFzeW5jIGdldENoYXRTZXNzaW9uRGlzdGluY3QoKXtcclxuICAgIGxldCBsaW1pdCA9IDEwIC8vIOaZrumAmueUqOaIt+mZkOafpeecizEw5p2h5Y6G5Y+y6K6w5b2VXHJcbiAgICBsZXQgc3FsID0gYFNFTEVDVCB0MS5cIm9iamVjdElkXCIgYXMgc2lkICwgXCJBdmF0YXJSb2xlXCIuXCJvYmplY3RJZFwiIGFzIHJpZCwgKiBGUk9NIChcclxuICAgICAgU0VMRUNUICosUk9XX05VTUJFUigpIE9WRVIgKFBBUlRJVElPTiBCWSBcInVzZXJcIiwgXCJyb2xlXCIgT1JERVIgQlkgXCJjcmVhdGVkQXRcIiBERVNDKSBBUyByblxyXG4gICAgICAgRlJPTSBcIkNoYXRTZXNzaW9uXCIgV0hFUkUgXCJ1c2VyXCI9JDFcclxuICAgICAgKSBhcyB0MVxyXG4gICAgICBMRUZUIEpPSU4gXCJBdmF0YXJSb2xlXCIgT04gXCJBdmF0YXJSb2xlXCIuXCJvYmplY3RJZFwiID0gdDEuXCJyb2xlXCJcclxuICAgIFdIRVJFIHQxLnJuPTFcclxuICAgIExJTUlUICQyXHJcbiAgICA7YFxyXG4gICAgbGV0IHJlc3VsdDphbnkgPSBhd2FpdCB0aGlzLm5jbG91ZC5ub3ZhcWwoc3FsLFtQYXJzZS5Vc2VyLmN1cnJlbnQoKT8uaWQsbGltaXRdKVxyXG4gICAgbGV0IGNoYXRMaXN0ID0gcmVzdWx0Py5tYXAoaXRlbT0+e1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIHNpZDppdGVtPy5zaWQsXHJcbiAgICAgICAgcmlkOml0ZW0/LnJpZCxcclxuICAgICAgICBuYW1lOml0ZW0/Lm5hbWUsXHJcbiAgICAgICAgbWVzc2FnZTppdGVtPy5tZXNzYWdlTGlzdD8uW2l0ZW0/Lm1lc3NhZ2VMaXN0Py5sZW5ndGgtMV0/LmNvbnRlbnQ/LnNsaWNlKDAsMjApLFxyXG4gICAgICAgIGxhdGVzdDppdGVtPy5jcmVhdGVkQXRcclxuICAgICAgfVxyXG4gICAgfSlcclxuICAgIHRoaXMuY2hhdExpc3QgPSBjaGF0TGlzdFxyXG4gICAgcmV0dXJuIHRoaXMuY2hhdExpc3RcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOmHjeW7uuaWsOWvueivneeql+WPo1xyXG4gICAqL1xyXG4gIGNyZWF0ZUNoYXRQYW5lbChyb2xlPzphbnksY2hhdD86YW55KXtcclxuICAgIGxldCBzZXNzaW9uSWQgPSBjaGF0Py5pZHx8XCJuZXdcIlxyXG4gICAgY2hhdCA9IG5ldyBGbW9kZUNoYXQoc2Vzc2lvbklkLHJvbGUsY2hhdCx0aGlzLHRoaXMubmF2Q3RybCx0aGlzLm5jbG91ZCx0aGlzLnVwbG9hZFNlcnYpO1xyXG4gICAgdGhpcy5jaGF0TWFwW3Nlc3Npb25JZF0gPSBjaGF0OyAvLyBuZXcg56qX5Y+j5aaC5p6c5rKh5pyJ5raI5oGv6L2s5o2i5oiQ5bimSUTnmoTvvIzmr4/mrKHlsLHkvJrmuIXnqbpcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9jaGF0L3Byby9jaGF0L1wiK3Nlc3Npb25JZF0pXHJcbiAgfVxyXG4gIGFzeW5jIGNyZWF0ZU5ld1JvbGVDaGF0KHJvbGVJZCk6UHJvbWlzZTxGbW9kZUNoYXQ+e1xyXG4gICAgbGV0IHF1ZXJ5ID0gbmV3IFBhcnNlLlF1ZXJ5KFwiQXZhdGFyUm9sZVwiKVxyXG4gICAgcXVlcnkuaW5jbHVkZShcIm1vZGVsXCIpXHJcbiAgICBsZXQgcm9sZSA9IGF3YWl0IHF1ZXJ5LmdldChyb2xlSWQpO1xyXG4gICAgLy8gY29uc29sZS5sb2coXCJyb2xlXCIscm9sZSlcclxuICAgIGxldCBjaGF0ID0gbmV3IEZtb2RlQ2hhdChcIm5ld1wiLHJvbGUsbnVsbCx0aGlzLHRoaXMubmF2Q3RybCx0aGlzLm5jbG91ZCx0aGlzLnVwbG9hZFNlcnYpO1xyXG4gICAgcmV0dXJuIGNoYXRcclxuICB9XHJcbiAgYXN5bmMgcmVzdG9yZUNoYXRQYW5lbChvcHRpb25zPzp7XHJcbiAgICByaWQ6c3RyaW5nLFxyXG4gICAgc2lkOnN0cmluZyxcclxuICB9KXtcclxuICAgIGxldCBxdWVyeXIgPSBuZXcgUGFyc2UuUXVlcnkoXCJBdmF0YXJSb2xlXCIpXHJcbiAgICBsZXQgcXVlcnlzID0gbmV3IFBhcnNlLlF1ZXJ5KFwiQ2hhdFNlc3Npb25cIilcclxuICAgIGxldCByb2xlID0gYXdhaXQgcXVlcnlyLmdldChvcHRpb25zPy5yaWQpO1xyXG4gICAgbGV0IHNlc3Npb24gPSBhd2FpdCBxdWVyeXMuZ2V0KG9wdGlvbnM/LnNpZCk7XHJcbiAgICAvLyBsZXQgc2Vzc2lvbklkID0gXCJuZXdcIlxyXG4gICAgbGV0IGNoYXQgPSBuZXcgRm1vZGVDaGF0KG9wdGlvbnM/LnNpZCxyb2xlLHNlc3Npb24sdGhpcyx0aGlzLm5hdkN0cmwsdGhpcy5uY2xvdWQsdGhpcy51cGxvYWRTZXJ2KTtcclxuICAgIHRoaXMuY2hhdE1hcFtvcHRpb25zPy5zaWRdID0gY2hhdDtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9jaGF0L3Byby9jaGF0L1wiK29wdGlvbnM/LnNpZF0pXHJcblxyXG4gIH1cclxuICBhc3luYyBjYWxsUm9sZShyb2xlKXtcclxuICAgIC8vIOaaguaXtuW8gOWQr+WFqOerr+i/m+WFpeivremfs+WvueivnVxyXG4gICAgaWYoZmFsc2UgJiYgIXRoaXMuaXNDYXBhY2l0b3Ipe1xyXG4gICAgICBsZXQgYWxlcnQgPSBhd2FpdCB0aGlzLmFsZXJ0Q3RybC5jcmVhdGUoe1xyXG4gICAgICAgIGhlYWRlcjpcIuazqOaEj1wiLFxyXG4gICAgICAgIHN1YkhlYWRlcjpcIuivremfs+Wvueivne+8jOmZkOaJi+acukFQUOerr+WPr+eUqFwiLFxyXG4gICAgICAgIG1lc3NhZ2U6XCLor7fogZTns7vlrqLmnI3ojrflj5blhoXmtYvotYTmoLzlk6bvvIFcIixcclxuICAgICAgICBidXR0b25zOltcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgcm9sZTpcIm9rXCIsdGV4dDpcIuefpemBk+S6hlwiLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICBdXHJcbiAgICAgIH0pXHJcbiAgICAgIGFsZXJ0LnByZXNlbnQoKTtcclxuICAgICAgcmV0dXJuXHJcblxyXG4gICAgfVxyXG4gICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCdkYXJrJyk7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYC9hdmF0YXIvcm9sZS8ke3JvbGUuaWR9YCx7XHJcbiAgICAgIHR5cGU6XCJwaG9uZVwiXHJcbiAgICB9XSlcclxuICB9XHJcbn1cclxuIl19
|
|
8
|
+
import{Injectable}from"@angular/core";import{Router}from"@angular/router";import{FmodeChat}from"./chat-class";import{FmodeParse}from"@fmode/parse";import{NovaCloudService}from"../../../nova-cloud";import{AlertController,NavController,Platform}from"@ionic/angular";import{CrossService}from"../../../platform";import{NovaUploadService}from"../../../storage/service-upload/nova-upload.service";import*as i0 from"@angular/core";import*as i1 from"@angular/router";import*as i2 from"../../../nova-cloud";import*as i3 from"@ionic/angular";import*as i4 from"../../../platform";import*as i5 from"../../../storage/service-upload/nova-upload.service";const Parse=FmodeParse.with("nova");export class ChatService{constructor(e,t,r,a,o,i,s){this.router=e,this.ncloud=t,this.platform=r,this.alertCtrl=a,this.navCtrl=o,this.cross=i,this.uploadServ=s,this.chatMap={},this.isCapacitor=!1,this.platformMap={pc:"电脑端",mobile:"移动端"},this.isCapacitor=this.platform.is("capacitor")}async doButtonAction(e){let t=this.cross.navMenuType,r=e?.platform?.map((e=>this.platformMap[e])).join("、");if(e?.platform?.length>0&&-1==e?.platform?.indexOf(t)){(await this.alertCtrl.create({header:"注意",subHeader:"终端不符",message:`请您使用${r}开启本功能。`,buttons:[{role:"ok",text:"知道了"}]})).present()}else e?.path&&this.navCtrl.navigateRoot(e?.path)}async initChatMap(e){if(this.chatMap[e])return this.chatMap[e];let t=new Parse.Query("ChatSession");t.include("user","role","role.model","story","story.person","person","person.userVerify");let r=await t.get(e),a=new FmodeChat(r?.id,r?.get("role"),r,this,this.navCtrl,this.ncloud,this.uploadServ);return this.chatMap[e]=a,this.chatMap[e]}async getChatSession(e){if(!Parse?.User?.current()?.id)return;let t=new Parse.Query("ChatSession");e&&(t=Parse.Query.fromJSON("ChatSession",e)),t.include("user","role","role.model","story","story.person","story.person.userVerify","person","person.userVerify"),t.addDescending("updatedAt"),t.equalTo("user",Parse.User.current().toPointer()),t.notEqualTo("isDeleted",!0),t.limit(30);let r=await t.find();this.chatList=r.map((e=>(this.chatMap[e?.id]=new FmodeChat(e?.id,e?.get("role"),e,this,this.navCtrl,this.ncloud,this.uploadServ),{session:e,sid:e?.id,isHidden:!1,rid:e?.get("role")?.id,name:e?.get("role")?.get("name"),thumb:e?.get("role")?.get("thumb"),title:e?.get("title")||e?.get("role")?.get("name"),message:e?.get("messageList")?.[e?.get("messageList")?.length-1]?.content?.slice(0,20),latest:e?.createdAt})))}async getChatSessionDistinct(){let e=await this.ncloud.novaql('SELECT t1."objectId" as sid , "AvatarRole"."objectId" as rid, * FROM (\n SELECT *,ROW_NUMBER() OVER (PARTITION BY "user", "role" ORDER BY "createdAt" DESC) AS rn\n FROM "ChatSession" WHERE "user"=$1\n ) as t1\n LEFT JOIN "AvatarRole" ON "AvatarRole"."objectId" = t1."role"\n WHERE t1.rn=1\n LIMIT $2\n ;',[Parse.User.current()?.id,10]),t=e?.map((e=>({sid:e?.sid,rid:e?.rid,name:e?.name,message:e?.messageList?.[e?.messageList?.length-1]?.content?.slice(0,20),latest:e?.createdAt})));return this.chatList=t,this.chatList}createChatPanel(e,t){let r=t?.id||"new";t=new FmodeChat(r,e,t,this,this.navCtrl,this.ncloud,this.uploadServ),this.chatMap[r]=t,this.router.navigate(["/chat/pro/chat/"+r])}async createNewRoleChat(e){let t=new Parse.Query("AvatarRole");t.include("model");let r=await t.get(e);return new FmodeChat("new",r,null,this,this.navCtrl,this.ncloud,this.uploadServ)}async restoreChatPanel(e){let t=new Parse.Query("AvatarRole"),r=new Parse.Query("ChatSession"),a=await t.get(e?.rid),o=await r.get(e?.sid),i=new FmodeChat(e?.sid,a,o,this,this.navCtrl,this.ncloud,this.uploadServ);this.chatMap[e?.sid]=i,this.router.navigate(["/chat/pro/chat/"+e?.sid])}async callRole(e){document.body.classList.add("dark"),this.router.navigate([`/avatar/role/${e.id}`,{type:"phone"}])}static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:ChatService,deps:[{token:i1.Router},{token:i2.NovaCloudService},{token:i3.Platform},{token:i3.AlertController},{token:i3.NavController},{token:i4.CrossService},{token:i5.NovaUploadService}],target:i0.ɵɵFactoryTarget.Injectable})}static{this.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:ChatService,providedIn:"root"})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:ChatService,decorators:[{type:Injectable,args:[{providedIn:"root"}]}],ctorParameters:()=>[{type:i1.Router},{type:i2.NovaCloudService},{type:i3.Platform},{type:i3.AlertController},{type:i3.NavController},{type:i4.CrossService},{type:i5.NovaUploadService}]});
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9haWdjL3NlcnZpY2UtZm1haS9zZXJ2aWNlLWNoYXQvY2hhdC5zZXJ2aWNlLm1qcw==`
|
|
10
|
+
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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/service-fmai/service-chat/index.mjs
|
|
7
|
+
*/
|
|
8
|
+
export*from"./chat.service";export*from"./chat-class";export*from"./mask-list";export*from"./utilnow.pipe";export*from"./pipes/chat-content.pipe";export*from"./pipes/hidexml.pipe";
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9haWdjL3NlcnZpY2UtZm1haS9zZXJ2aWNlLWNoYXQvaW5kZXgubWpz`
|
|
10
|
+
|