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,87 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
import { MatIconModule } from '@angular/material/icon';
|
|
12
|
-
import { FiletypePipe } from '../../../icon/filetype';
|
|
13
|
-
import * as i0 from "@angular/core";
|
|
14
|
-
import * as i1 from "@angular/forms";
|
|
15
|
-
import * as i2 from "@angular/material/card";
|
|
16
|
-
import * as i3 from "@angular/material/button";
|
|
17
|
-
import * as i4 from "@angular/material/progress-bar";
|
|
18
|
-
import * as i5 from "@angular/material/checkbox";
|
|
19
|
-
import * as i6 from "@angular/material/icon";
|
|
20
|
-
import * as i7 from "ng-zorro-antd/pipes";
|
|
21
|
-
export class FmStoryCardComponent {
|
|
22
|
-
get checked() {
|
|
23
|
-
return this._checked;
|
|
24
|
-
}
|
|
25
|
-
set checked(value) {
|
|
26
|
-
this.checkedChange.emit(value);
|
|
27
|
-
this._checked = value;
|
|
28
|
-
}
|
|
29
|
-
constructor() {
|
|
30
|
-
this.isSelectMode = false;
|
|
31
|
-
this._checked = false;
|
|
32
|
-
this.checkedChange = new EventEmitter;
|
|
33
|
-
this.onCheckStory = new EventEmitter;
|
|
34
|
-
this.onPreviewStory = new EventEmitter;
|
|
35
|
-
this.onDestoryStory = new EventEmitter;
|
|
36
|
-
this.colorMap = {
|
|
37
|
-
"chat": "#673ab7",
|
|
38
|
-
"diary": "#1179ff",
|
|
39
|
-
"document": "#00c80c"
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
checkStory(agentStory, event) {
|
|
43
|
-
this.checked = event;
|
|
44
|
-
this.onCheckStory.emit({
|
|
45
|
-
agentStory: agentStory,
|
|
46
|
-
event: event
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
previewStory(agentStory) {
|
|
50
|
-
this.onPreviewStory.emit(agentStory);
|
|
51
|
-
}
|
|
52
|
-
destroyStory(agentStory) {
|
|
53
|
-
this.onDestoryStory.emit(agentStory);
|
|
54
|
-
}
|
|
55
|
-
ngOnInit() {
|
|
56
|
-
this.agentStory = new AgentStory(this.story, this.story?.get("person"), this.story?.get("book"));
|
|
57
|
-
}
|
|
58
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FmStoryCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
59
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: FmStoryCardComponent, isStandalone: true, selector: "fm-story-card", inputs: { story: "story", isSelectMode: "isSelectMode", _checked: ["checked", "_checked"] }, outputs: { checkedChange: "checkedChange", onCheckStory: "onCheckStory", onPreviewStory: "onPreviewStory", onDestoryStory: "onDestoryStory" }, ngImport: i0, template: "<mat-card class=\"story-card\">\r\n <mat-card-header>\r\n <!-- \u65B0\u6545\u4E8B\u5361\u7247\u6807\u9898 -->\r\n <ng-container *ngIf=\"!agentStory?.story?.get('attach') && !agentStory?.story?.get('chatSession')\"> \r\n <mat-card-subtitle>{{ 0 | nzBytes: 0 : 'B' : 'MB' }}</mat-card-subtitle>\r\n <mat-card-title>\u65B0\u6545\u4E8B</mat-card-title>\r\n </ng-container>\r\n <!-- \u9644\u4EF6\u6545\u4E8B\u5361\u7247\u6807\u9898 + \u5BF9\u8BDD\u6545\u4E8B\u5361\u7247\u6807\u9898 -->\r\n\r\n <mat-card-subtitle>\r\n <div class=\"filebar\">\r\n <!-- \u6587\u4EF6\u4FE1\u606F -->\r\n <div class=\"file-info\" style=\"display:flex;align-items:center;\">\r\n <!-- \u56FE\u6807+\u5927\u5C0F -->\r\n @if(agentStory?.story?.get('attach')){\r\n <ion-icon [src]=\"agentStory?.story?.get('attach')?.get('url') | filetype\"></ion-icon>\r\n <span class=\"size\">{{agentStory?.story?.get(\"attach\")?.get(\"size\") | nzBytes }}</span>\r\n }\r\n @if(agentStory?.story?.get('chatSession')?.id){\r\n <ion-icon [src]=\"'.chat'|filetype\"></ion-icon>\r\n <span class=\"size\">{{agentStory?.story?.get(\"chatSession\")?.get(\"messageList\")?.length }}\u6761</span>\r\n }\r\n </div>\r\n <!-- \u6807\u9898 -->\r\n <div class=\"title\">\r\n @if(agentStory?.story?.get('attach')){\r\n {{agentStory?.story?.get(\"attach\")?.get(\"name\")}}\r\n }\r\n @if(agentStory?.story?.get('chatSession')?.id){\r\n {{agentStory?.story?.get(\"title\")}}\r\n }\r\n </div>\r\n <!-- \u64CD\u4F5C\u533A\u57DF -->\r\n <div class=\"actions\" style=\"display:flex;align-items:center;justify-content: flex-end;\">\r\n <!-- \u9884\u89C8 -->\r\n <button mat-button (click)=\"previewStory(agentStory)\" aria-label=\"\u9884\u89C8\">\r\n \u9884\u89C8\r\n </button>\r\n <!-- \u9009\u62E9 -->\r\n <mat-checkbox *ngIf=\"isSelectMode\"\r\n [ngModel]=\"checked\" (ngModelChange)=\"checkStory(agentStory,$event)\"\r\n [labelPosition]=\"'before'\">\r\n </mat-checkbox>\r\n </div>\r\n </div>\r\n </mat-card-subtitle>\r\n <!-- <mat-card-title></mat-card-title> -->\r\n </mat-card-header>\r\n <mat-card-content>\r\n {{agentStory?.story?.get(\"desc\")}}\r\n <!-- <p>This card has divider and indeterminate progress as footer</p>\r\n <p>----</p>\r\n <mat-divider></mat-divider> -->\r\n <ng-container>\r\n <br/>\r\n <div style=\"width:100%;display:flex;flex:1;flex-wrap:wrap;overflow-x:auto;align-items: center;justify-content: space-between;\">\r\n <div style=\"display:flex;flex-wrap:wrap;max-width: calc(100% - 50px);\">\r\n @if(agentStory?.story?.get('keywords')?.length){\r\n @for(item of agentStory?.story?.get('keywords'); track item){\r\n <ion-chip style=\"white-space:nowrap;\" color=\"light\" [outline]=\"true\">#{{item}}</ion-chip>\r\n }\r\n }\r\n\r\n </div>\r\n <!-- \u5220\u9664 -->\r\n @if(!isSelectMode){\r\n <button style=\"min-width:30px;\" mat-icon-button color=\"warn\" (click)=\"destroyStory(agentStory)\" aria-label=\"\u5220\u9664\">\r\n <mat-icon>delete</mat-icon>\r\n </button>\r\n }\r\n\r\n </div>\r\n </ng-container>\r\n </mat-card-content>\r\n <mat-card-actions *ngIf=\"false\">\r\n <!-- <button mat-button color=\"primary\" (click)=\"previewStory(agentStory)\">\u9884\u89C8</button> -->\r\n <!-- <button *ngIf=\"isSelectMode\" mat-button [color]=\"checked?'warn':'primary'\" (click)=\"checkStory(agentStory,!checked)\">{{checked?'\u53D6\u6D88':'\u9009\u62E9'}}</button> -->\r\n <!-- <button *ngIf=\"!isSelectMode\" mat-button color=\"primary\" (click)=\"previewStory(agentStory)\">\u5B66\u4E60</button> -->\r\n <!-- <button *ngIf=\"!isSelectMode\" mat-button color=\"warn\" (click)=\"destroyStory(agentStory)\">\u5220\u9664</button> -->\r\n </mat-card-actions>\r\n <mat-card-footer>\r\n <!-- [color]=\"colorMap[agentStory?.story?.get('type') || 'document']\" -->\r\n <mat-progress-bar [style.--mdc-linear-progress-active-indicator-color]=\"colorMap[agentStory?.story?.get('type') || 'document']\" *ngIf=\"!agentStory?.story?.get('attach')?.id && !agentStory?.story?.get('chatSession')?.id\" mode=\"buffer\" [value]=\"10\" [bufferValue]=\"20\"></mat-progress-bar>\r\n <mat-progress-bar [style.--mdc-linear-progress-active-indicator-color]=\"colorMap[agentStory?.story?.get('type') || 'document']\" *ngIf=\"agentStory?.story?.get('attach')?.id || agentStory?.story?.get('chatSession')?.id\" mode=\"determinate\" [value]=\"100\" ></mat-progress-bar>\r\n </mat-card-footer>\r\n</mat-card>", styles: [":host-context(body.dark) .story-card .title{color:#fff}:host-context(body.dark) .story-card mat-card-content{color:#ccc}:host-context(body.dark) .story-card ion-chip{color:#ccc}:host-context(body.dark) .story-card .file-info,:host-context(body.dark) .story-card button{color:#ccc}.story-card{border-radius:10px}.story-card .filebar{display:flex;justify-content:space-between;align-items:center}.story-card .filebar .file-info{max-width:80px}.story-card .filebar .title{flex:1;font-weight:700;margin-left:5px;margin-right:5px;max-width:220px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;font-size:1.2rem;font-weight:400}.story-card .filebar mat-card-content{color:#333}.story-card .filebar ion-chip{color:#333}.story-card .filebar .actions{max-width:104px}.story-card .size{min-width:40px}.story-card ion-icon{font-size:28px;min-width:30px}.story-card ion-chip{font-size:12px;padding:0 5px}.story-card mat-card-header{flex-direction:column}.story-card mat-card-footer{padding-top:10px;border-radius:10px;overflow:hidden}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: IonChip, selector: "ion-chip", inputs: ["color", "disabled", "mode", "outline"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "ngmodule", type: MatCardModule }, { kind: "component", type: i2.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i2.MatCardActions, selector: "mat-card-actions", inputs: ["align"], exportAs: ["matCardActions"] }, { kind: "directive", type: i2.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i2.MatCardFooter, selector: "mat-card-footer" }, { kind: "component", type: i2.MatCardHeader, selector: "mat-card-header" }, { kind: "directive", type: i2.MatCardSubtitle, selector: "mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]" }, { kind: "directive", type: i2.MatCardTitle, selector: "mat-card-title, [mat-card-title], [matCardTitle]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i3.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i3.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i4.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "ngmodule", type: MatCheckboxModule }, { kind: "component", type: i5.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: NzPipesModule }, { kind: "pipe", type: i7.NzBytesPipe, name: "nzBytes" }, { kind: "pipe", type: FiletypePipe, name: "filetype" }] }); }
|
|
60
|
-
}
|
|
61
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FmStoryCardComponent, decorators: [{
|
|
62
|
-
type: Component,
|
|
63
|
-
args: [{ selector: 'fm-story-card', standalone: true, imports: [
|
|
64
|
-
NgIf, FormsModule, ReactiveFormsModule,
|
|
65
|
-
IonChip, IonIcon,
|
|
66
|
-
MatCardModule, MatButtonModule, MatProgressBarModule,
|
|
67
|
-
MatCheckboxModule, MatIconModule,
|
|
68
|
-
NzPipesModule,
|
|
69
|
-
FiletypePipe
|
|
70
|
-
], template: "<mat-card class=\"story-card\">\r\n <mat-card-header>\r\n <!-- \u65B0\u6545\u4E8B\u5361\u7247\u6807\u9898 -->\r\n <ng-container *ngIf=\"!agentStory?.story?.get('attach') && !agentStory?.story?.get('chatSession')\"> \r\n <mat-card-subtitle>{{ 0 | nzBytes: 0 : 'B' : 'MB' }}</mat-card-subtitle>\r\n <mat-card-title>\u65B0\u6545\u4E8B</mat-card-title>\r\n </ng-container>\r\n <!-- \u9644\u4EF6\u6545\u4E8B\u5361\u7247\u6807\u9898 + \u5BF9\u8BDD\u6545\u4E8B\u5361\u7247\u6807\u9898 -->\r\n\r\n <mat-card-subtitle>\r\n <div class=\"filebar\">\r\n <!-- \u6587\u4EF6\u4FE1\u606F -->\r\n <div class=\"file-info\" style=\"display:flex;align-items:center;\">\r\n <!-- \u56FE\u6807+\u5927\u5C0F -->\r\n @if(agentStory?.story?.get('attach')){\r\n <ion-icon [src]=\"agentStory?.story?.get('attach')?.get('url') | filetype\"></ion-icon>\r\n <span class=\"size\">{{agentStory?.story?.get(\"attach\")?.get(\"size\") | nzBytes }}</span>\r\n }\r\n @if(agentStory?.story?.get('chatSession')?.id){\r\n <ion-icon [src]=\"'.chat'|filetype\"></ion-icon>\r\n <span class=\"size\">{{agentStory?.story?.get(\"chatSession\")?.get(\"messageList\")?.length }}\u6761</span>\r\n }\r\n </div>\r\n <!-- \u6807\u9898 -->\r\n <div class=\"title\">\r\n @if(agentStory?.story?.get('attach')){\r\n {{agentStory?.story?.get(\"attach\")?.get(\"name\")}}\r\n }\r\n @if(agentStory?.story?.get('chatSession')?.id){\r\n {{agentStory?.story?.get(\"title\")}}\r\n }\r\n </div>\r\n <!-- \u64CD\u4F5C\u533A\u57DF -->\r\n <div class=\"actions\" style=\"display:flex;align-items:center;justify-content: flex-end;\">\r\n <!-- \u9884\u89C8 -->\r\n <button mat-button (click)=\"previewStory(agentStory)\" aria-label=\"\u9884\u89C8\">\r\n \u9884\u89C8\r\n </button>\r\n <!-- \u9009\u62E9 -->\r\n <mat-checkbox *ngIf=\"isSelectMode\"\r\n [ngModel]=\"checked\" (ngModelChange)=\"checkStory(agentStory,$event)\"\r\n [labelPosition]=\"'before'\">\r\n </mat-checkbox>\r\n </div>\r\n </div>\r\n </mat-card-subtitle>\r\n <!-- <mat-card-title></mat-card-title> -->\r\n </mat-card-header>\r\n <mat-card-content>\r\n {{agentStory?.story?.get(\"desc\")}}\r\n <!-- <p>This card has divider and indeterminate progress as footer</p>\r\n <p>----</p>\r\n <mat-divider></mat-divider> -->\r\n <ng-container>\r\n <br/>\r\n <div style=\"width:100%;display:flex;flex:1;flex-wrap:wrap;overflow-x:auto;align-items: center;justify-content: space-between;\">\r\n <div style=\"display:flex;flex-wrap:wrap;max-width: calc(100% - 50px);\">\r\n @if(agentStory?.story?.get('keywords')?.length){\r\n @for(item of agentStory?.story?.get('keywords'); track item){\r\n <ion-chip style=\"white-space:nowrap;\" color=\"light\" [outline]=\"true\">#{{item}}</ion-chip>\r\n }\r\n }\r\n\r\n </div>\r\n <!-- \u5220\u9664 -->\r\n @if(!isSelectMode){\r\n <button style=\"min-width:30px;\" mat-icon-button color=\"warn\" (click)=\"destroyStory(agentStory)\" aria-label=\"\u5220\u9664\">\r\n <mat-icon>delete</mat-icon>\r\n </button>\r\n }\r\n\r\n </div>\r\n </ng-container>\r\n </mat-card-content>\r\n <mat-card-actions *ngIf=\"false\">\r\n <!-- <button mat-button color=\"primary\" (click)=\"previewStory(agentStory)\">\u9884\u89C8</button> -->\r\n <!-- <button *ngIf=\"isSelectMode\" mat-button [color]=\"checked?'warn':'primary'\" (click)=\"checkStory(agentStory,!checked)\">{{checked?'\u53D6\u6D88':'\u9009\u62E9'}}</button> -->\r\n <!-- <button *ngIf=\"!isSelectMode\" mat-button color=\"primary\" (click)=\"previewStory(agentStory)\">\u5B66\u4E60</button> -->\r\n <!-- <button *ngIf=\"!isSelectMode\" mat-button color=\"warn\" (click)=\"destroyStory(agentStory)\">\u5220\u9664</button> -->\r\n </mat-card-actions>\r\n <mat-card-footer>\r\n <!-- [color]=\"colorMap[agentStory?.story?.get('type') || 'document']\" -->\r\n <mat-progress-bar [style.--mdc-linear-progress-active-indicator-color]=\"colorMap[agentStory?.story?.get('type') || 'document']\" *ngIf=\"!agentStory?.story?.get('attach')?.id && !agentStory?.story?.get('chatSession')?.id\" mode=\"buffer\" [value]=\"10\" [bufferValue]=\"20\"></mat-progress-bar>\r\n <mat-progress-bar [style.--mdc-linear-progress-active-indicator-color]=\"colorMap[agentStory?.story?.get('type') || 'document']\" *ngIf=\"agentStory?.story?.get('attach')?.id || agentStory?.story?.get('chatSession')?.id\" mode=\"determinate\" [value]=\"100\" ></mat-progress-bar>\r\n </mat-card-footer>\r\n</mat-card>", styles: [":host-context(body.dark) .story-card .title{color:#fff}:host-context(body.dark) .story-card mat-card-content{color:#ccc}:host-context(body.dark) .story-card ion-chip{color:#ccc}:host-context(body.dark) .story-card .file-info,:host-context(body.dark) .story-card button{color:#ccc}.story-card{border-radius:10px}.story-card .filebar{display:flex;justify-content:space-between;align-items:center}.story-card .filebar .file-info{max-width:80px}.story-card .filebar .title{flex:1;font-weight:700;margin-left:5px;margin-right:5px;max-width:220px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;font-size:1.2rem;font-weight:400}.story-card .filebar mat-card-content{color:#333}.story-card .filebar ion-chip{color:#333}.story-card .filebar .actions{max-width:104px}.story-card .size{min-width:40px}.story-card ion-icon{font-size:28px;min-width:30px}.story-card ion-chip{font-size:12px;padding:0 5px}.story-card mat-card-header{flex-direction:column}.story-card mat-card-footer{padding-top:10px;border-radius:10px;overflow:hidden}\n"] }]
|
|
71
|
-
}], ctorParameters: () => [], propDecorators: { story: [{
|
|
72
|
-
type: Input
|
|
73
|
-
}], isSelectMode: [{
|
|
74
|
-
type: Input
|
|
75
|
-
}], _checked: [{
|
|
76
|
-
type: Input,
|
|
77
|
-
args: ["checked"]
|
|
78
|
-
}], checkedChange: [{
|
|
79
|
-
type: Output
|
|
80
|
-
}], onCheckStory: [{
|
|
81
|
-
type: Output
|
|
82
|
-
}], onPreviewStory: [{
|
|
83
|
-
type: Output
|
|
84
|
-
}], onDestoryStory: [{
|
|
85
|
-
type: Output
|
|
86
|
-
}] } });
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm0tc3RvcnktY2FyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mbW9kZS1uZy9zcmMvbGliL2FpZ2Mvc3RvcnkvZm0tc3RvcnktY2FyZC9mbS1zdG9yeS1jYXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Ztb2RlLW5nL3NyYy9saWIvYWlnYy9zdG9yeS9mbS1zdG9yeS1jYXJkL2ZtLXN0b3J5LWNhcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7Ozs7Ozs7QUFnQnRELE1BQU0sT0FBTyxvQkFBb0I7SUFNL0IsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFhO1FBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQy9CLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLENBQUM7SUFZRDtRQXBCUyxpQkFBWSxHQUFXLEtBQUssQ0FBQztRQUNwQixhQUFRLEdBQVcsS0FBSyxDQUFDO1FBU2pDLGtCQUFhLEdBQXlCLElBQUksWUFBcUIsQ0FBQztRQUNoRSxpQkFBWSxHQUFxRCxJQUFJLFlBQWlELENBQUM7UUFDdkgsbUJBQWMsR0FBNEIsSUFBSSxZQUF3QixDQUFDO1FBQ3ZFLG1CQUFjLEdBQTRCLElBQUksWUFBd0IsQ0FBQztRQUVqRixhQUFRLEdBQU87WUFDYixNQUFNLEVBQUMsU0FBUztZQUNoQixPQUFPLEVBQUMsU0FBUztZQUNqQixVQUFVLEVBQUMsU0FBUztTQUNyQixDQUFBO0lBSUQsQ0FBQztJQUVELFVBQVUsQ0FBQyxVQUFVLEVBQUMsS0FBSztRQUN6QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztZQUNyQixVQUFVLEVBQUMsVUFBVTtZQUNyQixLQUFLLEVBQUMsS0FBSztTQUNaLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFDRCxZQUFZLENBQUMsVUFBVTtRQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUN0QyxDQUFDO0lBQ0QsWUFBWSxDQUFDLFVBQVU7UUFDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDdEMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtJQUNoRyxDQUFDOytHQTdDVSxvQkFBb0I7bUdBQXBCLG9CQUFvQixxVEMzQmpDLDQ1SkFxRlcsb2tDRGxFUCxJQUFJLDRGQUFDLFdBQVcsOFZBQUMsbUJBQW1CLCtCQUNwQyxPQUFPLHVHQUFDLE9BQU8sMEpBQ2YsYUFBYSxxdEJBQUMsZUFBZSx3VUFBQyxvQkFBb0Isd05BQ2xELGlCQUFpQiw2V0FBQyxhQUFhLG1MQUMvQixhQUFhLG1GQUNiLFlBQVk7OzRGQUdILG9CQUFvQjtrQkFkaEMsU0FBUzsrQkFDRSxlQUFlLGNBR2IsSUFBSSxXQUNSO3dCQUNOLElBQUksRUFBQyxXQUFXLEVBQUMsbUJBQW1CO3dCQUNwQyxPQUFPLEVBQUMsT0FBTzt3QkFDZixhQUFhLEVBQUMsZUFBZSxFQUFDLG9CQUFvQjt3QkFDbEQsaUJBQWlCLEVBQUMsYUFBYTt3QkFDL0IsYUFBYTt3QkFDYixZQUFZO3FCQUNiO3dEQUtRLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNZLFFBQVE7c0JBQXpCLEtBQUs7dUJBQUMsU0FBUztnQkFTTixhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXRDYXJkTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2NhcmRcIjtcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2J1dHRvblwiO1xyXG5pbXBvcnQgeyBNYXRQcm9ncmVzc0Jhck1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXJcIjtcclxuaW1wb3J0IHsgQWdlbnRTdG9yeSB9IGZyb20gJy4uLy4uLy4uL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgSW9uQ2hpcCwgSW9uSWNvbiB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xyXG5pbXBvcnQgeyBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcclxuaW1wb3J0IHsgTnpQaXBlc01vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvcGlwZXMnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xyXG5pbXBvcnQgeyBGaWxldHlwZVBpcGUgfSBmcm9tICcuLi8uLi8uLi9pY29uL2ZpbGV0eXBlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZm0tc3RvcnktY2FyZCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2ZtLXN0b3J5LWNhcmQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2ZtLXN0b3J5LWNhcmQuY29tcG9uZW50LnNjc3MnXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6W1xyXG4gICAgTmdJZixGb3Jtc01vZHVsZSxSZWFjdGl2ZUZvcm1zTW9kdWxlLFxyXG4gICAgSW9uQ2hpcCxJb25JY29uLFxyXG4gICAgTWF0Q2FyZE1vZHVsZSxNYXRCdXR0b25Nb2R1bGUsTWF0UHJvZ3Jlc3NCYXJNb2R1bGUsXHJcbiAgICBNYXRDaGVja2JveE1vZHVsZSxNYXRJY29uTW9kdWxlLFxyXG4gICAgTnpQaXBlc01vZHVsZSxcclxuICAgIEZpbGV0eXBlUGlwZVxyXG4gIF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEZtU3RvcnlDYXJkQ29tcG9uZW50ICBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIGFnZW50U3Rvcnk6QWdlbnRTdG9yeXx1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgc3Rvcnk6UGFyc2UuT2JqZWN0fHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBpc1NlbGVjdE1vZGU6Ym9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dChcImNoZWNrZWRcIikgX2NoZWNrZWQ6Ym9vbGVhbiA9IGZhbHNlO1xyXG4gIGdldCBjaGVja2VkKCl7XHJcbiAgICByZXR1cm4gdGhpcy5fY2hlY2tlZDtcclxuICB9XHJcbiAgc2V0IGNoZWNrZWQodmFsdWU6Ym9vbGVhbil7XHJcbiAgICB0aGlzLmNoZWNrZWRDaGFuZ2UuZW1pdCh2YWx1ZSk7XHJcbiAgICB0aGlzLl9jaGVja2VkID0gdmFsdWU7XHJcbiAgfVxyXG4gIFxyXG4gIEBPdXRwdXQoKSBjaGVja2VkQ2hhbmdlOkV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj47XHJcbiAgQE91dHB1dCgpIG9uQ2hlY2tTdG9yeTpFdmVudEVtaXR0ZXI8e2FnZW50U3Rvcnk6QWdlbnRTdG9yeSxldmVudDpFdmVudH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7YWdlbnRTdG9yeTpBZ2VudFN0b3J5LGV2ZW50OkV2ZW50fT47XHJcbiAgQE91dHB1dCgpIG9uUHJldmlld1N0b3J5OkV2ZW50RW1pdHRlcjxBZ2VudFN0b3J5PiA9IG5ldyBFdmVudEVtaXR0ZXI8QWdlbnRTdG9yeT47XHJcbiAgQE91dHB1dCgpIG9uRGVzdG9yeVN0b3J5OkV2ZW50RW1pdHRlcjxBZ2VudFN0b3J5PiA9IG5ldyBFdmVudEVtaXR0ZXI8QWdlbnRTdG9yeT47XHJcblxyXG4gIGNvbG9yTWFwOmFueSA9IHtcclxuICAgIFwiY2hhdFwiOlwiIzY3M2FiN1wiLFxyXG4gICAgXCJkaWFyeVwiOlwiIzExNzlmZlwiLFxyXG4gICAgXCJkb2N1bWVudFwiOlwiIzAwYzgwY1wiXHJcbiAgfVxyXG4gIGNvbnN0cnVjdG9yKCkgeyBcclxuXHJcblxyXG4gIH1cclxuXHJcbiAgY2hlY2tTdG9yeShhZ2VudFN0b3J5LGV2ZW50KXtcclxuICAgIHRoaXMuY2hlY2tlZCA9IGV2ZW50O1xyXG4gICAgdGhpcy5vbkNoZWNrU3RvcnkuZW1pdCh7XHJcbiAgICAgIGFnZW50U3Rvcnk6YWdlbnRTdG9yeSxcclxuICAgICAgZXZlbnQ6ZXZlbnRcclxuICAgIH0pXHJcbiAgfVxyXG4gIHByZXZpZXdTdG9yeShhZ2VudFN0b3J5KXtcclxuICAgIHRoaXMub25QcmV2aWV3U3RvcnkuZW1pdChhZ2VudFN0b3J5KVxyXG4gIH1cclxuICBkZXN0cm95U3RvcnkoYWdlbnRTdG9yeSl7XHJcbiAgICB0aGlzLm9uRGVzdG9yeVN0b3J5LmVtaXQoYWdlbnRTdG9yeSlcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5hZ2VudFN0b3J5ID0gbmV3IEFnZW50U3RvcnkodGhpcy5zdG9yeSx0aGlzLnN0b3J5Py5nZXQoXCJwZXJzb25cIiksdGhpcy5zdG9yeT8uZ2V0KFwiYm9va1wiKSlcclxuICB9XHJcblxyXG59XHJcbiIsIjxtYXQtY2FyZCBjbGFzcz1cInN0b3J5LWNhcmRcIj5cclxuICA8bWF0LWNhcmQtaGVhZGVyPlxyXG4gICAgPCEtLSDmlrDmlYXkuovljaHniYfmoIfpopggLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWFnZW50U3Rvcnk/LnN0b3J5Py5nZXQoJ2F0dGFjaCcpICYmICFhZ2VudFN0b3J5Py5zdG9yeT8uZ2V0KCdjaGF0U2Vzc2lvbicpXCI+IFxyXG4gICAgICA8bWF0LWNhcmQtc3VidGl0bGU+e3sgMCB8IG56Qnl0ZXM6IDAgOiAnQicgOiAnTUInIH19PC9tYXQtY2FyZC1zdWJ0aXRsZT5cclxuICAgICAgPG1hdC1jYXJkLXRpdGxlPuaWsOaVheS6izwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwhLS0g6ZmE5Lu25pWF5LqL5Y2h54mH5qCH6aKYICsg5a+56K+d5pWF5LqL5Y2h54mH5qCH6aKYIC0tPlxyXG5cclxuICAgICAgPG1hdC1jYXJkLXN1YnRpdGxlPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlYmFyXCI+XHJcbiAgICAgICAgICA8IS0tIOaWh+S7tuS/oeaBryAtLT5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWluZm9cIiBzdHlsZT1cImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7XCI+XHJcbiAgICAgICAgICAgIDwhLS0g5Zu+5qCHK+Wkp+WwjyAtLT5cclxuICAgICAgICAgICAgQGlmKGFnZW50U3Rvcnk/LnN0b3J5Py5nZXQoJ2F0dGFjaCcpKXtcclxuICAgICAgICAgICAgICA8aW9uLWljb24gW3NyY109XCJhZ2VudFN0b3J5Py5zdG9yeT8uZ2V0KCdhdHRhY2gnKT8uZ2V0KCd1cmwnKSB8IGZpbGV0eXBlXCI+PC9pb24taWNvbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNpemVcIj57e2FnZW50U3Rvcnk/LnN0b3J5Py5nZXQoXCJhdHRhY2hcIik/LmdldChcInNpemVcIikgfCBuekJ5dGVzIH19PC9zcGFuPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIEBpZihhZ2VudFN0b3J5Py5zdG9yeT8uZ2V0KCdjaGF0U2Vzc2lvbicpPy5pZCl7XHJcbiAgICAgICAgICAgICAgPGlvbi1pY29uIFtzcmNdPVwiJy5jaGF0J3xmaWxldHlwZVwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzaXplXCI+e3thZ2VudFN0b3J5Py5zdG9yeT8uZ2V0KFwiY2hhdFNlc3Npb25cIik/LmdldChcIm1lc3NhZ2VMaXN0XCIpPy5sZW5ndGggfX3mnaE8L3NwYW4+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPCEtLSDmoIfpopggLS0+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5cclxuICAgICAgICAgICAgICBAaWYoYWdlbnRTdG9yeT8uc3Rvcnk/LmdldCgnYXR0YWNoJykpe1xyXG4gICAgICAgICAgICAgICAge3thZ2VudFN0b3J5Py5zdG9yeT8uZ2V0KFwiYXR0YWNoXCIpPy5nZXQoXCJuYW1lXCIpfX1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgQGlmKGFnZW50U3Rvcnk/LnN0b3J5Py5nZXQoJ2NoYXRTZXNzaW9uJyk/LmlkKXtcclxuICAgICAgICAgICAgICAgIHt7YWdlbnRTdG9yeT8uc3Rvcnk/LmdldChcInRpdGxlXCIpfX1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwhLS0g5pON5L2c5Yy65Z+fIC0tPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFjdGlvbnNcIiBzdHlsZT1cImRpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7anVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcIj5cclxuICAgICAgICAgICAgPCEtLSDpooTop4ggLS0+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwicHJldmlld1N0b3J5KGFnZW50U3RvcnkpXCIgYXJpYS1sYWJlbD1cIumihOiniFwiPlxyXG4gICAgICAgICAgICAgIOmihOiniFxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPCEtLSDpgInmi6kgLS0+XHJcbiAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggKm5nSWY9XCJpc1NlbGVjdE1vZGVcIlxyXG4gICAgICAgICAgICBbbmdNb2RlbF09XCJjaGVja2VkXCIgKG5nTW9kZWxDaGFuZ2UpPVwiY2hlY2tTdG9yeShhZ2VudFN0b3J5LCRldmVudClcIlxyXG4gICAgICAgICAgICBbbGFiZWxQb3NpdGlvbl09XCInYmVmb3JlJ1wiPlxyXG4gICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvbWF0LWNhcmQtc3VidGl0bGU+XHJcbiAgICAgIDwhLS0gPG1hdC1jYXJkLXRpdGxlPjwvbWF0LWNhcmQtdGl0bGU+IC0tPlxyXG4gIDwvbWF0LWNhcmQtaGVhZGVyPlxyXG4gIDxtYXQtY2FyZC1jb250ZW50PlxyXG4gICAge3thZ2VudFN0b3J5Py5zdG9yeT8uZ2V0KFwiZGVzY1wiKX19XHJcbiAgICA8IS0tIDxwPlRoaXMgY2FyZCBoYXMgZGl2aWRlciBhbmQgaW5kZXRlcm1pbmF0ZSBwcm9ncmVzcyBhcyBmb290ZXI8L3A+XHJcbiAgICAgIDxwPi0tLS08L3A+XHJcbiAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPiAtLT5cclxuICAgICAgPG5nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDxici8+XHJcbiAgICAgICAgICA8ZGl2IHN0eWxlPVwid2lkdGg6MTAwJTtkaXNwbGF5OmZsZXg7ZmxleDoxO2ZsZXgtd3JhcDp3cmFwO292ZXJmbG93LXg6YXV0bzthbGlnbi1pdGVtczogY2VudGVyO2p1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcIj5cclxuICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6ZmxleDtmbGV4LXdyYXA6d3JhcDttYXgtd2lkdGg6IGNhbGMoMTAwJSAtIDUwcHgpO1wiPlxyXG4gICAgICAgICAgICBAaWYoYWdlbnRTdG9yeT8uc3Rvcnk/LmdldCgna2V5d29yZHMnKT8ubGVuZ3RoKXtcclxuICAgICAgICAgICAgICAgICAgQGZvcihpdGVtIG9mIGFnZW50U3Rvcnk/LnN0b3J5Py5nZXQoJ2tleXdvcmRzJyk7IHRyYWNrIGl0ZW0pe1xyXG4gICAgICAgICAgICAgICAgICAgIDxpb24tY2hpcCBzdHlsZT1cIndoaXRlLXNwYWNlOm5vd3JhcDtcIiBjb2xvcj1cImxpZ2h0XCIgW291dGxpbmVdPVwidHJ1ZVwiPiN7e2l0ZW19fTwvaW9uLWNoaXA+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICA8IS0tIOWIoOmZpCAtLT5cclxuICAgICAgICAgICAgIEBpZighaXNTZWxlY3RNb2RlKXtcclxuICAgICAgICAgICAgICA8YnV0dG9uIHN0eWxlPVwibWluLXdpZHRoOjMwcHg7XCIgbWF0LWljb24tYnV0dG9uIGNvbG9yPVwid2FyblwiIChjbGljayk9XCJkZXN0cm95U3RvcnkoYWdlbnRTdG9yeSlcIiBhcmlhLWxhYmVsPVwi5Yig6ZmkXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWljb24+ZGVsZXRlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcbiAgPG1hdC1jYXJkLWFjdGlvbnMgKm5nSWY9XCJmYWxzZVwiPlxyXG4gICAgPCEtLSA8YnV0dG9uIG1hdC1idXR0b24gY29sb3I9XCJwcmltYXJ5XCIgKGNsaWNrKT1cInByZXZpZXdTdG9yeShhZ2VudFN0b3J5KVwiPumihOiniDwvYnV0dG9uPiAtLT5cclxuICAgIDwhLS0gPGJ1dHRvbiAqbmdJZj1cImlzU2VsZWN0TW9kZVwiIG1hdC1idXR0b24gW2NvbG9yXT1cImNoZWNrZWQ/J3dhcm4nOidwcmltYXJ5J1wiIChjbGljayk9XCJjaGVja1N0b3J5KGFnZW50U3RvcnksIWNoZWNrZWQpXCI+e3tjaGVja2VkPyflj5bmtognOifpgInmi6knfX08L2J1dHRvbj4gLS0+XHJcbiAgICA8IS0tIDxidXR0b24gKm5nSWY9XCIhaXNTZWxlY3RNb2RlXCIgbWF0LWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwicHJldmlld1N0b3J5KGFnZW50U3RvcnkpXCI+5a2m5LmgPC9idXR0b24+IC0tPlxyXG4gICAgPCEtLSA8YnV0dG9uICpuZ0lmPVwiIWlzU2VsZWN0TW9kZVwiIG1hdC1idXR0b24gY29sb3I9XCJ3YXJuXCIgKGNsaWNrKT1cImRlc3Ryb3lTdG9yeShhZ2VudFN0b3J5KVwiPuWIoOmZpDwvYnV0dG9uPiAtLT5cclxuICA8L21hdC1jYXJkLWFjdGlvbnM+XHJcbiAgPG1hdC1jYXJkLWZvb3Rlcj5cclxuICAgIDwhLS0gW2NvbG9yXT1cImNvbG9yTWFwW2FnZW50U3Rvcnk/LnN0b3J5Py5nZXQoJ3R5cGUnKSB8fCAnZG9jdW1lbnQnXVwiIC0tPlxyXG4gICAgPG1hdC1wcm9ncmVzcy1iYXIgW3N0eWxlLi0tbWRjLWxpbmVhci1wcm9ncmVzcy1hY3RpdmUtaW5kaWNhdG9yLWNvbG9yXT1cImNvbG9yTWFwW2FnZW50U3Rvcnk/LnN0b3J5Py5nZXQoJ3R5cGUnKSB8fCAnZG9jdW1lbnQnXVwiICpuZ0lmPVwiIWFnZW50U3Rvcnk/LnN0b3J5Py5nZXQoJ2F0dGFjaCcpPy5pZCAmJiAhYWdlbnRTdG9yeT8uc3Rvcnk/LmdldCgnY2hhdFNlc3Npb24nKT8uaWRcIiBtb2RlPVwiYnVmZmVyXCIgW3ZhbHVlXT1cIjEwXCIgW2J1ZmZlclZhbHVlXT1cIjIwXCI+PC9tYXQtcHJvZ3Jlc3MtYmFyPlxyXG4gICAgPG1hdC1wcm9ncmVzcy1iYXIgW3N0eWxlLi0tbWRjLWxpbmVhci1wcm9ncmVzcy1hY3RpdmUtaW5kaWNhdG9yLWNvbG9yXT1cImNvbG9yTWFwW2FnZW50U3Rvcnk/LnN0b3J5Py5nZXQoJ3R5cGUnKSB8fCAnZG9jdW1lbnQnXVwiICpuZ0lmPVwiYWdlbnRTdG9yeT8uc3Rvcnk/LmdldCgnYXR0YWNoJyk/LmlkIHx8IGFnZW50U3Rvcnk/LnN0b3J5Py5nZXQoJ2NoYXRTZXNzaW9uJyk/LmlkXCIgbW9kZT1cImRldGVybWluYXRlXCIgW3ZhbHVlXT1cIjEwMFwiID48L21hdC1wcm9ncmVzcy1iYXI+XHJcbiAgPC9tYXQtY2FyZC1mb290ZXI+XHJcbjwvbWF0LWNhcmQ+Il19
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* @copyright © 未来飞马 © 未来全栈 www.fmode.cn
|
|
4
|
+
* 版权所有 © 未来飞马 © 江西脑控科技有限公司 Copyright © Fmode Technology Co., Ltd.
|
|
5
|
+
* 保留所有权利 All Rights Reserved.
|
|
6
|
+
* /home/ryan/workspace/nova/nova-admin/dist/fmode-ng/esm2022/lib/aigc/story/fm-story-card/fm-story-card.component.mjs
|
|
7
|
+
*/
|
|
8
|
+
import{Component,EventEmitter,Input,Output}from"@angular/core";import{MatCardModule}from"@angular/material/card";import{MatButtonModule}from"@angular/material/button";import{MatProgressBarModule}from"@angular/material/progress-bar";import{AgentStory}from"../../../core";import{NgIf}from"@angular/common";import{IonChip,IonIcon}from"@ionic/angular/standalone";import{MatCheckboxModule}from"@angular/material/checkbox";import{NzPipesModule}from"ng-zorro-antd/pipes";import{FormsModule,ReactiveFormsModule}from"@angular/forms";import{MatIconModule}from"@angular/material/icon";import{FiletypePipe}from"../../../icon/filetype";import{FmodeObject}from"@fmode/parse";import*as i0 from"@angular/core";import*as i1 from"@angular/forms";import*as i2 from"@angular/material/card";import*as i3 from"@angular/material/button";import*as i4 from"@angular/material/progress-bar";import*as i5 from"@angular/material/checkbox";import*as i6 from"@angular/material/icon";import*as i7 from"ng-zorro-antd/pipes";export class FmStoryCardComponent{get checked(){return this._checked}set checked(t){this.checkedChange.emit(t),this._checked=t}constructor(){this.isSelectMode=!1,this._checked=!1,this.checkedChange=new EventEmitter,this.onCheckStory=new EventEmitter,this.onPreviewStory=new EventEmitter,this.onDestoryStory=new EventEmitter,this.colorMap={chat:"#673ab7",diary:"#1179ff",document:"#00c80c"}}checkStory(t,e){this.checked=e,this.onCheckStory.emit({agentStory:t,event:e})}previewStory(t){this.onPreviewStory.emit(t)}destroyStory(t){this.onDestoryStory.emit(t)}ngOnInit(){this.agentStory=new AgentStory(this.story,this.story?.get("person"),this.story?.get("book"))}static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:FmStoryCardComponent,deps:[],target:i0.ɵɵFactoryTarget.Component})}static{this.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"17.0.0",version:"17.3.12",type:FmStoryCardComponent,isStandalone:!0,selector:"fm-story-card",inputs:{story:"story",isSelectMode:"isSelectMode",_checked:["checked","_checked"]},outputs:{checkedChange:"checkedChange",onCheckStory:"onCheckStory",onPreviewStory:"onPreviewStory",onDestoryStory:"onDestoryStory"},ngImport:i0,template:'<mat-card class="story-card">\n <mat-card-header>\n \x3c!-- 新故事卡片标题 --\x3e\n <ng-container *ngIf="!agentStory?.story?.get(\'attach\') && !agentStory?.story?.get(\'chatSession\')"> \n <mat-card-subtitle>{{ 0 | nzBytes: 0 : \'B\' : \'MB\' }}</mat-card-subtitle>\n <mat-card-title>新故事</mat-card-title>\n </ng-container>\n \x3c!-- 附件故事卡片标题 + 对话故事卡片标题 --\x3e\n\n <mat-card-subtitle>\n <div class="filebar">\n \x3c!-- 文件信息 --\x3e\n <div class="file-info" style="display:flex;align-items:center;">\n \x3c!-- 图标+大小 --\x3e\n @if(agentStory?.story?.get(\'attach\')){\n <ion-icon [src]="agentStory?.story?.get(\'attach\')?.get(\'url\') | filetype"></ion-icon>\n <span class="size">{{agentStory?.story?.get("attach")?.get("size") | nzBytes }}</span>\n }\n @if(agentStory?.story?.get(\'chatSession\')?.id){\n <ion-icon [src]="\'.chat\'|filetype"></ion-icon>\n <span class="size">{{agentStory?.story?.get("chatSession")?.get("messageList")?.length }}条</span>\n }\n </div>\n \x3c!-- 标题 --\x3e\n <div class="title">\n @if(agentStory?.story?.get(\'attach\')){\n {{agentStory?.story?.get("attach")?.get("name")}}\n }\n @if(agentStory?.story?.get(\'chatSession\')?.id){\n {{agentStory?.story?.get("title")}}\n }\n </div>\n \x3c!-- 操作区域 --\x3e\n <div class="actions" style="display:flex;align-items:center;justify-content: flex-end;">\n \x3c!-- 预览 --\x3e\n <button mat-button (click)="previewStory(agentStory)" aria-label="预览">\n 预览\n </button>\n \x3c!-- 选择 --\x3e\n <mat-checkbox *ngIf="isSelectMode"\n [ngModel]="checked" (ngModelChange)="checkStory(agentStory,$event)"\n [labelPosition]="\'before\'">\n </mat-checkbox>\n </div>\n </div>\n </mat-card-subtitle>\n \x3c!-- <mat-card-title></mat-card-title> --\x3e\n </mat-card-header>\n <mat-card-content>\n {{agentStory?.story?.get("desc")}}\n \x3c!-- <p>This card has divider and indeterminate progress as footer</p>\n <p>----</p>\n <mat-divider></mat-divider> --\x3e\n <ng-container>\n <br/>\n <div style="width:100%;display:flex;flex:1;flex-wrap:wrap;overflow-x:auto;align-items: center;justify-content: space-between;">\n <div style="display:flex;flex-wrap:wrap;max-width: calc(100% - 50px);">\n @if(agentStory?.story?.get(\'keywords\')?.length){\n @for(item of agentStory?.story?.get(\'keywords\'); track item){\n <ion-chip style="white-space:nowrap;" color="light" [outline]="true">#{{item}}</ion-chip>\n }\n }\n\n </div>\n \x3c!-- 删除 --\x3e\n @if(!isSelectMode){\n <button style="min-width:30px;" mat-icon-button color="warn" (click)="destroyStory(agentStory)" aria-label="删除">\n <mat-icon>delete</mat-icon>\n </button>\n }\n\n </div>\n </ng-container>\n </mat-card-content>\n <mat-card-actions *ngIf="false">\n \x3c!-- <button mat-button color="primary" (click)="previewStory(agentStory)">预览</button> --\x3e\n \x3c!-- <button *ngIf="isSelectMode" mat-button [color]="checked?\'warn\':\'primary\'" (click)="checkStory(agentStory,!checked)">{{checked?\'取消\':\'选择\'}}</button> --\x3e\n \x3c!-- <button *ngIf="!isSelectMode" mat-button color="primary" (click)="previewStory(agentStory)">学习</button> --\x3e\n \x3c!-- <button *ngIf="!isSelectMode" mat-button color="warn" (click)="destroyStory(agentStory)">删除</button> --\x3e\n </mat-card-actions>\n <mat-card-footer>\n \x3c!-- [color]="colorMap[agentStory?.story?.get(\'type\') || \'document\']" --\x3e\n <mat-progress-bar [style.--mdc-linear-progress-active-indicator-color]="colorMap[agentStory?.story?.get(\'type\') || \'document\']" *ngIf="!agentStory?.story?.get(\'attach\')?.id && !agentStory?.story?.get(\'chatSession\')?.id" mode="buffer" [value]="10" [bufferValue]="20"></mat-progress-bar>\n <mat-progress-bar [style.--mdc-linear-progress-active-indicator-color]="colorMap[agentStory?.story?.get(\'type\') || \'document\']" *ngIf="agentStory?.story?.get(\'attach\')?.id || agentStory?.story?.get(\'chatSession\')?.id" mode="determinate" [value]="100" ></mat-progress-bar>\n </mat-card-footer>\n</mat-card>',styles:[":host-context(body.dark) .story-card .title{color:#fff}:host-context(body.dark) .story-card mat-card-content{color:#ccc}:host-context(body.dark) .story-card ion-chip{color:#ccc}:host-context(body.dark) .story-card .file-info,:host-context(body.dark) .story-card button{color:#ccc}.story-card{border-radius:10px}.story-card .filebar{display:flex;justify-content:space-between;align-items:center}.story-card .filebar .file-info{max-width:80px}.story-card .filebar .title{flex:1;font-weight:700;margin-left:5px;margin-right:5px;max-width:220px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;font-size:1.2rem;font-weight:400}.story-card .filebar mat-card-content{color:#333}.story-card .filebar ion-chip{color:#333}.story-card .filebar .actions{max-width:104px}.story-card .size{min-width:40px}.story-card ion-icon{font-size:28px;min-width:30px}.story-card ion-chip{font-size:12px;padding:0 5px}.story-card mat-card-header{flex-direction:column}.story-card mat-card-footer{padding-top:10px;border-radius:10px;overflow:hidden}\n"],dependencies:[{kind:"directive",type:NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{kind:"ngmodule",type:FormsModule},{kind:"directive",type:i1.NgControlStatus,selector:"[formControlName],[ngModel],[formControl]"},{kind:"directive",type:i1.NgModel,selector:"[ngModel]:not([formControlName]):not([formControl])",inputs:["name","disabled","ngModel","ngModelOptions"],outputs:["ngModelChange"],exportAs:["ngModel"]},{kind:"ngmodule",type:ReactiveFormsModule},{kind:"component",type:IonChip,selector:"ion-chip",inputs:["color","disabled","mode","outline"]},{kind:"component",type:IonIcon,selector:"ion-icon",inputs:["color","flipRtl","icon","ios","lazy","md","mode","name","sanitize","size","src"]},{kind:"ngmodule",type:MatCardModule},{kind:"component",type:i2.MatCard,selector:"mat-card",inputs:["appearance"],exportAs:["matCard"]},{kind:"directive",type:i2.MatCardActions,selector:"mat-card-actions",inputs:["align"],exportAs:["matCardActions"]},{kind:"directive",type:i2.MatCardContent,selector:"mat-card-content"},{kind:"directive",type:i2.MatCardFooter,selector:"mat-card-footer"},{kind:"component",type:i2.MatCardHeader,selector:"mat-card-header"},{kind:"directive",type:i2.MatCardSubtitle,selector:"mat-card-subtitle, [mat-card-subtitle], [matCardSubtitle]"},{kind:"directive",type:i2.MatCardTitle,selector:"mat-card-title, [mat-card-title], [matCardTitle]"},{kind:"ngmodule",type:MatButtonModule},{kind:"component",type:i3.MatButton,selector:" button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ",exportAs:["matButton"]},{kind:"component",type:i3.MatIconButton,selector:"button[mat-icon-button]",exportAs:["matButton"]},{kind:"ngmodule",type:MatProgressBarModule},{kind:"component",type:i4.MatProgressBar,selector:"mat-progress-bar",inputs:["color","value","bufferValue","mode"],outputs:["animationEnd"],exportAs:["matProgressBar"]},{kind:"ngmodule",type:MatCheckboxModule},{kind:"component",type:i5.MatCheckbox,selector:"mat-checkbox",inputs:["aria-label","aria-labelledby","aria-describedby","id","required","labelPosition","name","value","disableRipple","tabIndex","color","checked","disabled","indeterminate"],outputs:["change","indeterminateChange"],exportAs:["matCheckbox"]},{kind:"ngmodule",type:MatIconModule},{kind:"component",type:i6.MatIcon,selector:"mat-icon",inputs:["color","inline","svgIcon","fontSet","fontIcon"],exportAs:["matIcon"]},{kind:"ngmodule",type:NzPipesModule},{kind:"pipe",type:i7.NzBytesPipe,name:"nzBytes"},{kind:"pipe",type:FiletypePipe,name:"filetype"}]})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:FmStoryCardComponent,decorators:[{type:Component,args:[{selector:"fm-story-card",standalone:!0,imports:[NgIf,FormsModule,ReactiveFormsModule,IonChip,IonIcon,MatCardModule,MatButtonModule,MatProgressBarModule,MatCheckboxModule,MatIconModule,NzPipesModule,FiletypePipe],template:'<mat-card class="story-card">\n <mat-card-header>\n \x3c!-- 新故事卡片标题 --\x3e\n <ng-container *ngIf="!agentStory?.story?.get(\'attach\') && !agentStory?.story?.get(\'chatSession\')"> \n <mat-card-subtitle>{{ 0 | nzBytes: 0 : \'B\' : \'MB\' }}</mat-card-subtitle>\n <mat-card-title>新故事</mat-card-title>\n </ng-container>\n \x3c!-- 附件故事卡片标题 + 对话故事卡片标题 --\x3e\n\n <mat-card-subtitle>\n <div class="filebar">\n \x3c!-- 文件信息 --\x3e\n <div class="file-info" style="display:flex;align-items:center;">\n \x3c!-- 图标+大小 --\x3e\n @if(agentStory?.story?.get(\'attach\')){\n <ion-icon [src]="agentStory?.story?.get(\'attach\')?.get(\'url\') | filetype"></ion-icon>\n <span class="size">{{agentStory?.story?.get("attach")?.get("size") | nzBytes }}</span>\n }\n @if(agentStory?.story?.get(\'chatSession\')?.id){\n <ion-icon [src]="\'.chat\'|filetype"></ion-icon>\n <span class="size">{{agentStory?.story?.get("chatSession")?.get("messageList")?.length }}条</span>\n }\n </div>\n \x3c!-- 标题 --\x3e\n <div class="title">\n @if(agentStory?.story?.get(\'attach\')){\n {{agentStory?.story?.get("attach")?.get("name")}}\n }\n @if(agentStory?.story?.get(\'chatSession\')?.id){\n {{agentStory?.story?.get("title")}}\n }\n </div>\n \x3c!-- 操作区域 --\x3e\n <div class="actions" style="display:flex;align-items:center;justify-content: flex-end;">\n \x3c!-- 预览 --\x3e\n <button mat-button (click)="previewStory(agentStory)" aria-label="预览">\n 预览\n </button>\n \x3c!-- 选择 --\x3e\n <mat-checkbox *ngIf="isSelectMode"\n [ngModel]="checked" (ngModelChange)="checkStory(agentStory,$event)"\n [labelPosition]="\'before\'">\n </mat-checkbox>\n </div>\n </div>\n </mat-card-subtitle>\n \x3c!-- <mat-card-title></mat-card-title> --\x3e\n </mat-card-header>\n <mat-card-content>\n {{agentStory?.story?.get("desc")}}\n \x3c!-- <p>This card has divider and indeterminate progress as footer</p>\n <p>----</p>\n <mat-divider></mat-divider> --\x3e\n <ng-container>\n <br/>\n <div style="width:100%;display:flex;flex:1;flex-wrap:wrap;overflow-x:auto;align-items: center;justify-content: space-between;">\n <div style="display:flex;flex-wrap:wrap;max-width: calc(100% - 50px);">\n @if(agentStory?.story?.get(\'keywords\')?.length){\n @for(item of agentStory?.story?.get(\'keywords\'); track item){\n <ion-chip style="white-space:nowrap;" color="light" [outline]="true">#{{item}}</ion-chip>\n }\n }\n\n </div>\n \x3c!-- 删除 --\x3e\n @if(!isSelectMode){\n <button style="min-width:30px;" mat-icon-button color="warn" (click)="destroyStory(agentStory)" aria-label="删除">\n <mat-icon>delete</mat-icon>\n </button>\n }\n\n </div>\n </ng-container>\n </mat-card-content>\n <mat-card-actions *ngIf="false">\n \x3c!-- <button mat-button color="primary" (click)="previewStory(agentStory)">预览</button> --\x3e\n \x3c!-- <button *ngIf="isSelectMode" mat-button [color]="checked?\'warn\':\'primary\'" (click)="checkStory(agentStory,!checked)">{{checked?\'取消\':\'选择\'}}</button> --\x3e\n \x3c!-- <button *ngIf="!isSelectMode" mat-button color="primary" (click)="previewStory(agentStory)">学习</button> --\x3e\n \x3c!-- <button *ngIf="!isSelectMode" mat-button color="warn" (click)="destroyStory(agentStory)">删除</button> --\x3e\n </mat-card-actions>\n <mat-card-footer>\n \x3c!-- [color]="colorMap[agentStory?.story?.get(\'type\') || \'document\']" --\x3e\n <mat-progress-bar [style.--mdc-linear-progress-active-indicator-color]="colorMap[agentStory?.story?.get(\'type\') || \'document\']" *ngIf="!agentStory?.story?.get(\'attach\')?.id && !agentStory?.story?.get(\'chatSession\')?.id" mode="buffer" [value]="10" [bufferValue]="20"></mat-progress-bar>\n <mat-progress-bar [style.--mdc-linear-progress-active-indicator-color]="colorMap[agentStory?.story?.get(\'type\') || \'document\']" *ngIf="agentStory?.story?.get(\'attach\')?.id || agentStory?.story?.get(\'chatSession\')?.id" mode="determinate" [value]="100" ></mat-progress-bar>\n </mat-card-footer>\n</mat-card>',styles:[":host-context(body.dark) .story-card .title{color:#fff}:host-context(body.dark) .story-card mat-card-content{color:#ccc}:host-context(body.dark) .story-card ion-chip{color:#ccc}:host-context(body.dark) .story-card .file-info,:host-context(body.dark) .story-card button{color:#ccc}.story-card{border-radius:10px}.story-card .filebar{display:flex;justify-content:space-between;align-items:center}.story-card .filebar .file-info{max-width:80px}.story-card .filebar .title{flex:1;font-weight:700;margin-left:5px;margin-right:5px;max-width:220px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;font-size:1.2rem;font-weight:400}.story-card .filebar mat-card-content{color:#333}.story-card .filebar ion-chip{color:#333}.story-card .filebar .actions{max-width:104px}.story-card .size{min-width:40px}.story-card ion-icon{font-size:28px;min-width:30px}.story-card ion-chip{font-size:12px;padding:0 5px}.story-card mat-card-header{flex-direction:column}.story-card mat-card-footer{padding-top:10px;border-radius:10px;overflow:hidden}\n"]}]}],ctorParameters:()=>[],propDecorators:{story:[{type:Input}],isSelectMode:[{type:Input}],_checked:[{type:Input,args:["checked"]}],checkedChange:[{type:Output}],onCheckStory:[{type:Output}],onPreviewStory:[{type:Output}],onDestoryStory:[{type:Output}]}});
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9haWdjL3N0b3J5L2ZtLXN0b3J5LWNhcmQvZm0tc3RvcnktY2FyZC5jb21wb25lbnQubWpz`
|
|
10
|
+
|