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,28 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const hash = spark.end();
|
|
12
|
-
resolve(hash);
|
|
13
|
-
}
|
|
14
|
-
else {
|
|
15
|
-
reject(new Error("Failed to load file"));
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
catch (error) {
|
|
19
|
-
reject(error);
|
|
20
|
-
}
|
|
21
|
-
};
|
|
22
|
-
reader.onerror = (error) => {
|
|
23
|
-
reject(error);
|
|
24
|
-
};
|
|
25
|
-
reader.readAsArrayBuffer(file);
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC1maWxlLW1kNS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Ztb2RlLW5nL3NyYy9saWIvc3RvcmFnZS9zZXJ2aWNlLXVwbG9hZC91dGlsLWZpbGUtbWQ1LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sUUFBUSxNQUFNLFdBQVcsQ0FBQztBQUNqQyxNQUFNLFVBQVUsV0FBVyxDQUFDLElBQVU7SUFDbEMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNuQyxNQUFNLE1BQU0sR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN0QixJQUFJLENBQUM7Z0JBQ0QsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUM7Z0JBQ2xDLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ1AsTUFBTSxLQUFLLEdBQUcsSUFBSSxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ3pDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBbUIsQ0FBQyxDQUFDO29CQUNsQyxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7b0JBQ3pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbEIsQ0FBQztxQkFBTSxDQUFDO29CQUNKLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLENBQUM7Z0JBQzdDLENBQUM7WUFDTCxDQUFDO1lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztnQkFDYixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbEIsQ0FBQztRQUNMLENBQUMsQ0FBQztRQUNGLE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUN2QixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEIsQ0FBQyxDQUFDO1FBQ0YsTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBTcGFya01ENSBmcm9tICdzcGFyay1tZDUnO1xyXG5leHBvcnQgZnVuY3Rpb24gY2FsY0ZpbGVNZDUoZmlsZTogRmlsZSk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XHJcbiAgICAgICAgcmVhZGVyLm9ubG9hZCA9IChldmVudCkgPT4ge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IGV2ZW50LnRhcmdldD8ucmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgaWYgKGRhdGEpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBzcGFyayA9IG5ldyBTcGFya01ENS5BcnJheUJ1ZmZlcigpO1xyXG4gICAgICAgICAgICAgICAgICAgIHNwYXJrLmFwcGVuZChkYXRhIGFzIEFycmF5QnVmZmVyKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBoYXNoID0gc3BhcmsuZW5kKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShoYXNoKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihcIkZhaWxlZCB0byBsb2FkIGZpbGVcIikpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmVhZGVyLm9uZXJyb3IgPSAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihmaWxlKTtcclxuICAgIH0pO1xyXG59XHJcbiJdfQ==
|
|
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/storage/service-upload/util-file-md5.mjs
|
|
7
|
+
*/
|
|
8
|
+
import SparkMD5 from"spark-md5";export function calcFileMd5(r){return new Promise(((e,o)=>{const n=new FileReader;n.onload=r=>{try{const n=r.target?.result;if(n){const r=new SparkMD5.ArrayBuffer;r.append(n);const o=r.end();e(o)}else o(new Error("Failed to load file"))}catch(r){o(r)}},n.onerror=r=>{o(r)},n.readAsArrayBuffer(r)}))}
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9zdG9yYWdlL3NlcnZpY2UtdXBsb2FkL3V0aWwtZmlsZS1tZDUubWpz`
|
|
10
|
+
|
|
@@ -1,93 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
type: file.type,
|
|
12
|
-
lastModified: file.lastModified,
|
|
13
|
-
metadata: {},
|
|
14
|
-
};
|
|
15
|
-
baseInfo.metadata.lastModified = file.lastModified;
|
|
16
|
-
// 根据文件类型获取额外元数据(第二层)
|
|
17
|
-
if (file.type.startsWith('image/')) {
|
|
18
|
-
await extractImageMetadata(file, baseInfo.metadata);
|
|
19
|
-
}
|
|
20
|
-
else if (file.type.startsWith('audio/') || file.type.startsWith('video/')) {
|
|
21
|
-
await extractMediaMetadata(file, baseInfo.metadata);
|
|
22
|
-
}
|
|
23
|
-
return baseInfo;
|
|
24
|
-
}
|
|
25
|
-
// 提取图片元数据(分辨率、色彩深度等)
|
|
26
|
-
async function extractImageMetadata(file, metadata) {
|
|
27
|
-
try {
|
|
28
|
-
const img = new Image();
|
|
29
|
-
const objectUrl = URL.createObjectURL(file);
|
|
30
|
-
await new Promise((resolve, reject) => {
|
|
31
|
-
img.onload = () => resolve();
|
|
32
|
-
img.onerror = reject;
|
|
33
|
-
img.src = objectUrl;
|
|
34
|
-
});
|
|
35
|
-
metadata.width = img.naturalWidth;
|
|
36
|
-
metadata.height = img.naturalHeight;
|
|
37
|
-
// 尝试获取更详细的元数据(如EXIF)
|
|
38
|
-
try {
|
|
39
|
-
const arrayBuffer = await file.arrayBuffer();
|
|
40
|
-
const exifData = await parseExifData(arrayBuffer); // 需要实现或使用exif-js库
|
|
41
|
-
if (exifData)
|
|
42
|
-
Object.assign(metadata, exifData);
|
|
43
|
-
}
|
|
44
|
-
catch (e) {
|
|
45
|
-
console.warn('无法解析EXIF数据:', e);
|
|
46
|
-
}
|
|
47
|
-
URL.revokeObjectURL(objectUrl);
|
|
48
|
-
}
|
|
49
|
-
catch (error) {
|
|
50
|
-
console.error('提取图片元数据失败:', error);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
// 提取音视频元数据(时长、编码等)
|
|
54
|
-
async function extractMediaMetadata(file, metadata) {
|
|
55
|
-
try {
|
|
56
|
-
const mediaElement = file.type.startsWith('audio/')
|
|
57
|
-
? new Audio()
|
|
58
|
-
: document.createElement('video');
|
|
59
|
-
const objectUrl = URL.createObjectURL(file);
|
|
60
|
-
await new Promise((resolve, reject) => {
|
|
61
|
-
mediaElement.onloadedmetadata = () => resolve();
|
|
62
|
-
mediaElement.onerror = reject;
|
|
63
|
-
mediaElement.src = objectUrl;
|
|
64
|
-
});
|
|
65
|
-
metadata.duration = mediaElement.duration;
|
|
66
|
-
// 视频特有元数据
|
|
67
|
-
if ('videoWidth' in mediaElement) {
|
|
68
|
-
metadata.width = mediaElement.videoWidth;
|
|
69
|
-
}
|
|
70
|
-
if ('videoHeight' in mediaElement) {
|
|
71
|
-
metadata.height = mediaElement.videoHeight;
|
|
72
|
-
}
|
|
73
|
-
// 注意:浏览器通常不直接暴露编解码器信息,需要额外处理
|
|
74
|
-
URL.revokeObjectURL(objectUrl);
|
|
75
|
-
}
|
|
76
|
-
catch (error) {
|
|
77
|
-
console.error('提取媒体元数据失败:', error);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
// 示例:解析EXIF数据(简化版,实际应使用exif-js等库)
|
|
81
|
-
async function parseExifData(arrayBuffer) {
|
|
82
|
-
// 这里只是示例,实际EXIF解析更复杂
|
|
83
|
-
const view = new DataView(arrayBuffer);
|
|
84
|
-
if (view.getUint16(0) !== 0xFFD8)
|
|
85
|
-
return null; // 不是JPEG文件
|
|
86
|
-
// 简化的EXIF解析逻辑(实际项目请使用库)
|
|
87
|
-
return {
|
|
88
|
-
colorDepth: 24, // 示例值
|
|
89
|
-
orientation: view.getUint16(16, false) || 1,
|
|
90
|
-
// 其他EXIF字段...
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC1maWxlLW1ldGFkYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm1vZGUtbmcvc3JjL2xpYi9zdG9yYWdlL3NlcnZpY2UtdXBsb2FkL3V0aWwtZmlsZS1tZXRhZGF0YS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxlQUFlLENBQUMsSUFBVTtJQWU1QyxZQUFZO0lBQ1osTUFBTSxRQUFRLEdBQUc7UUFDZixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7UUFDZixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7UUFDZixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7UUFDZixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7UUFDL0IsUUFBUSxFQUFFLEVBQXlCO0tBQ3BDLENBQUM7SUFFRixRQUFRLENBQUMsUUFBUSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFBO0lBRWxELHFCQUFxQjtJQUNyQixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDbkMsTUFBTSxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RELENBQUM7U0FBTSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDNUUsTUFBTSxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBRUQscUJBQXFCO0FBQ3JCLEtBQUssVUFBVSxvQkFBb0IsQ0FBQyxJQUFVLEVBQUUsUUFBNkI7SUFDM0UsSUFBSSxDQUFDO1FBQ0gsTUFBTSxHQUFHLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUN4QixNQUFNLFNBQVMsR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTVDLE1BQU0sSUFBSSxPQUFPLENBQU8sQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDMUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUM3QixHQUFHLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztZQUNyQixHQUFHLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztRQUVILFFBQVEsQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQztRQUNsQyxRQUFRLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUM7UUFFcEMscUJBQXFCO1FBQ3JCLElBQUksQ0FBQztZQUNILE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzdDLE1BQU0sUUFBUSxHQUFHLE1BQU0sYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsa0JBQWtCO1lBQ3JFLElBQUksUUFBUTtnQkFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUNsRCxDQUFDO1FBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNYLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLENBQUM7UUFFRCxHQUFHLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQztBQUNILENBQUM7QUFFRCxtQkFBbUI7QUFDbkIsS0FBSyxVQUFVLG9CQUFvQixDQUFDLElBQVUsRUFBRSxRQUE2QjtJQUMzRSxJQUFJLENBQUM7UUFDSCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7WUFDakQsQ0FBQyxDQUFDLElBQUksS0FBSyxFQUFFO1lBQ2IsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEMsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU1QyxNQUFNLElBQUksT0FBTyxDQUFPLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQzFDLFlBQVksQ0FBQyxnQkFBZ0IsR0FBRyxHQUFHLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNoRCxZQUFZLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztZQUM5QixZQUFZLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQztRQUMvQixDQUFDLENBQUMsQ0FBQztRQUVILFFBQVEsQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQztRQUUxQyxVQUFVO1FBQ1YsSUFBSSxZQUFZLElBQUksWUFBWSxFQUFFLENBQUM7WUFDakMsUUFBUSxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUMsVUFBVSxDQUFDO1FBQzNDLENBQUM7UUFDRCxJQUFJLGFBQWEsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNsQyxRQUFRLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxXQUFXLENBQUM7UUFDN0MsQ0FBQztRQUVELDZCQUE2QjtRQUM3QixHQUFHLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsT0FBTyxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckMsQ0FBQztBQUNILENBQUM7QUFFRCxrQ0FBa0M7QUFDbEMsS0FBSyxVQUFVLGFBQWEsQ0FBQyxXQUF3QjtJQUNuRCxxQkFBcUI7SUFDckIsTUFBTSxJQUFJLEdBQUcsSUFBSSxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdkMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLE1BQU07UUFBRSxPQUFPLElBQUksQ0FBQyxDQUFDLFdBQVc7SUFFMUQsd0JBQXdCO0lBQ3hCLE9BQU87UUFDTCxVQUFVLEVBQUUsRUFBRSxFQUFFLE1BQU07UUFDdEIsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDM0MsY0FBYztLQUNmLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIOiOt+WPluaWh+S7tueahOWFg+aVsOaNru+8iOWbvueJh+WIhui+qOeOh+OAgemfs+inhumikeaXtumVv+etie+8iVxyXG4gKiBAcGFyYW0ge0ZpbGV9IGZpbGUgLSDnlKjmiLfpgInmi6nnmoTmlofku7ZcclxuICogQHJldHVybnMge1Byb21pc2U8T2JqZWN0Pn0gLSDov5Tlm57ljIXlkKvlhYPmlbDmja7nmoTlr7nosaFcclxuICovXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRGaWxlTWV0YWRhdGEoZmlsZTogRmlsZSk6IFByb21pc2U8e1xyXG4gICAgbmFtZTogc3RyaW5nO1xyXG4gICAgc2l6ZTogbnVtYmVyO1xyXG4gICAgdHlwZTogc3RyaW5nO1xyXG4gICAgbGFzdE1vZGlmaWVkOiBudW1iZXI7XHJcbiAgICBtZXRhZGF0YToge1xyXG4gICAgICB3aWR0aD86IG51bWJlcjtcclxuICAgICAgaGVpZ2h0PzogbnVtYmVyO1xyXG4gICAgICBkdXJhdGlvbj86IG51bWJlcjtcclxuICAgICAgYml0cmF0ZT86IG51bWJlcjtcclxuICAgICAgY29kZWM/OiBzdHJpbmc7XHJcbiAgICAgIGNvbG9yRGVwdGg/OiBudW1iZXI7XHJcbiAgICAgIC8vIOWPr+aJqeWxleWFtuS7luWFg+aVsOaNruWtl+autVxyXG4gICAgfTtcclxuICB9PiB7XHJcbiAgICAvLyDln7rnoYDkv6Hmga/vvIjnrKzkuIDlsYLvvIlcclxuICAgIGNvbnN0IGJhc2VJbmZvID0ge1xyXG4gICAgICBuYW1lOiBmaWxlLm5hbWUsXHJcbiAgICAgIHNpemU6IGZpbGUuc2l6ZSxcclxuICAgICAgdHlwZTogZmlsZS50eXBlLFxyXG4gICAgICBsYXN0TW9kaWZpZWQ6IGZpbGUubGFzdE1vZGlmaWVkLFxyXG4gICAgICBtZXRhZGF0YToge30gYXMgUmVjb3JkPHN0cmluZywgYW55PixcclxuICAgIH07XHJcblxyXG4gICAgYmFzZUluZm8ubWV0YWRhdGEubGFzdE1vZGlmaWVkID0gZmlsZS5sYXN0TW9kaWZpZWRcclxuICBcclxuICAgIC8vIOagueaNruaWh+S7tuexu+Wei+iOt+WPlumineWkluWFg+aVsOaNru+8iOesrOS6jOWxgu+8iVxyXG4gICAgaWYgKGZpbGUudHlwZS5zdGFydHNXaXRoKCdpbWFnZS8nKSkge1xyXG4gICAgICBhd2FpdCBleHRyYWN0SW1hZ2VNZXRhZGF0YShmaWxlLCBiYXNlSW5mby5tZXRhZGF0YSk7XHJcbiAgICB9IGVsc2UgaWYgKGZpbGUudHlwZS5zdGFydHNXaXRoKCdhdWRpby8nKSB8fCBmaWxlLnR5cGUuc3RhcnRzV2l0aCgndmlkZW8vJykpIHtcclxuICAgICAgYXdhaXQgZXh0cmFjdE1lZGlhTWV0YWRhdGEoZmlsZSwgYmFzZUluZm8ubWV0YWRhdGEpO1xyXG4gICAgfVxyXG4gIFxyXG4gICAgcmV0dXJuIGJhc2VJbmZvO1xyXG4gIH1cclxuICBcclxuICAvLyDmj5Dlj5blm77niYflhYPmlbDmja7vvIjliIbovqjnjofjgIHoibLlvanmt7HluqbnrYnvvIlcclxuICBhc3luYyBmdW5jdGlvbiBleHRyYWN0SW1hZ2VNZXRhZGF0YShmaWxlOiBGaWxlLCBtZXRhZGF0YTogUmVjb3JkPHN0cmluZywgYW55Pikge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgaW1nID0gbmV3IEltYWdlKCk7XHJcbiAgICAgIGNvbnN0IG9iamVjdFVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSk7XHJcbiAgXHJcbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICBpbWcub25sb2FkID0gKCkgPT4gcmVzb2x2ZSgpO1xyXG4gICAgICAgIGltZy5vbmVycm9yID0gcmVqZWN0O1xyXG4gICAgICAgIGltZy5zcmMgPSBvYmplY3RVcmw7XHJcbiAgICAgIH0pO1xyXG4gIFxyXG4gICAgICBtZXRhZGF0YS53aWR0aCA9IGltZy5uYXR1cmFsV2lkdGg7XHJcbiAgICAgIG1ldGFkYXRhLmhlaWdodCA9IGltZy5uYXR1cmFsSGVpZ2h0O1xyXG4gIFxyXG4gICAgICAvLyDlsJ3or5Xojrflj5bmm7Tor6bnu4bnmoTlhYPmlbDmja7vvIjlpoJFWElG77yJXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSBhd2FpdCBmaWxlLmFycmF5QnVmZmVyKCk7XHJcbiAgICAgICAgY29uc3QgZXhpZkRhdGEgPSBhd2FpdCBwYXJzZUV4aWZEYXRhKGFycmF5QnVmZmVyKTsgLy8g6ZyA6KaB5a6e546w5oiW5L2/55SoZXhpZi1qc+W6k1xyXG4gICAgICAgIGlmIChleGlmRGF0YSkgT2JqZWN0LmFzc2lnbihtZXRhZGF0YSwgZXhpZkRhdGEpO1xyXG4gICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKCfml6Dms5Xop6PmnpBFWElG5pWw5o2uOicsIGUpO1xyXG4gICAgICB9XHJcbiAgXHJcbiAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwob2JqZWN0VXJsKTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ+aPkOWPluWbvueJh+WFg+aVsOaNruWksei0pTonLCBlcnJvcik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIFxyXG4gIC8vIOaPkOWPlumfs+inhumikeWFg+aVsOaNru+8iOaXtumVv+OAgee8lueggeetie+8iVxyXG4gIGFzeW5jIGZ1bmN0aW9uIGV4dHJhY3RNZWRpYU1ldGFkYXRhKGZpbGU6IEZpbGUsIG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBtZWRpYUVsZW1lbnQgPSBmaWxlLnR5cGUuc3RhcnRzV2l0aCgnYXVkaW8vJykgXHJcbiAgICAgICAgPyBuZXcgQXVkaW8oKSBcclxuICAgICAgICA6IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3ZpZGVvJyk7XHJcbiAgICAgIGNvbnN0IG9iamVjdFVybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSk7XHJcbiAgXHJcbiAgICAgIGF3YWl0IG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICBtZWRpYUVsZW1lbnQub25sb2FkZWRtZXRhZGF0YSA9ICgpID0+IHJlc29sdmUoKTtcclxuICAgICAgICBtZWRpYUVsZW1lbnQub25lcnJvciA9IHJlamVjdDtcclxuICAgICAgICBtZWRpYUVsZW1lbnQuc3JjID0gb2JqZWN0VXJsO1xyXG4gICAgICB9KTtcclxuICBcclxuICAgICAgbWV0YWRhdGEuZHVyYXRpb24gPSBtZWRpYUVsZW1lbnQuZHVyYXRpb247XHJcbiAgXHJcbiAgICAgIC8vIOinhumikeeJueacieWFg+aVsOaNrlxyXG4gICAgICBpZiAoJ3ZpZGVvV2lkdGgnIGluIG1lZGlhRWxlbWVudCkge1xyXG4gICAgICAgIG1ldGFkYXRhLndpZHRoID0gbWVkaWFFbGVtZW50LnZpZGVvV2lkdGg7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCd2aWRlb0hlaWdodCcgaW4gbWVkaWFFbGVtZW50KSB7XHJcbiAgICAgICAgbWV0YWRhdGEuaGVpZ2h0ID0gbWVkaWFFbGVtZW50LnZpZGVvSGVpZ2h0O1xyXG4gICAgICB9XHJcbiAgXHJcbiAgICAgIC8vIOazqOaEj++8mua1j+iniOWZqOmAmuW4uOS4jeebtOaOpeaatOmcsue8luino+eggeWZqOS/oeaBr++8jOmcgOimgemineWkluWkhOeQhlxyXG4gICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKG9iamVjdFVybCk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCfmj5Dlj5blqpLkvZPlhYPmlbDmja7lpLHotKU6JywgZXJyb3IpO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICAvLyDnpLrkvovvvJrop6PmnpBFWElG5pWw5o2u77yI566A5YyW54mI77yM5a6e6ZmF5bqU5L2/55SoZXhpZi1qc+etieW6k++8iVxyXG4gIGFzeW5jIGZ1bmN0aW9uIHBhcnNlRXhpZkRhdGEoYXJyYXlCdWZmZXI6IEFycmF5QnVmZmVyKSB7XHJcbiAgICAvLyDov5nph4zlj6rmmK/npLrkvovvvIzlrp7pmYVFWElG6Kej5p6Q5pu05aSN5p2CXHJcbiAgICBjb25zdCB2aWV3ID0gbmV3IERhdGFWaWV3KGFycmF5QnVmZmVyKTtcclxuICAgIGlmICh2aWV3LmdldFVpbnQxNigwKSAhPT0gMHhGRkQ4KSByZXR1cm4gbnVsbDsgLy8g5LiN5pivSlBFR+aWh+S7tlxyXG4gIFxyXG4gICAgLy8g566A5YyW55qERVhJRuino+aekOmAu+i+ke+8iOWunumZhemhueebruivt+S9v+eUqOW6k++8iVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgY29sb3JEZXB0aDogMjQsIC8vIOekuuS+i+WAvFxyXG4gICAgICBvcmllbnRhdGlvbjogdmlldy5nZXRVaW50MTYoMTYsIGZhbHNlKSB8fCAxLFxyXG4gICAgICAvLyDlhbbku5ZFWElG5a2X5q61Li4uXHJcbiAgICB9O1xyXG4gIH0iXX0=
|
|
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/storage/service-upload/util-file-metadata.mjs
|
|
7
|
+
*/
|
|
8
|
+
export async function getFileMetadata(t){const a={name:t.name,size:t.size,type:t.type,lastModified:t.lastModified,metadata:{}};return a.metadata.lastModified=t.lastModified,t.type.startsWith("image/")?await extractImageMetadata(t,a.metadata):(t.type.startsWith("audio/")||t.type.startsWith("video/"))&&await extractMediaMetadata(t,a.metadata),a}async function extractImageMetadata(t,a){try{const e=new Image,i=URL.createObjectURL(t);await new Promise(((t,a)=>{e.onload=()=>t(),e.onerror=a,e.src=i})),a.width=e.naturalWidth,a.height=e.naturalHeight;try{const e=await t.arrayBuffer(),i=await parseExifData(e);i&&Object.assign(a,i)}catch(t){console.warn("无法解析EXIF数据:",t)}URL.revokeObjectURL(i)}catch(t){console.error("提取图片元数据失败:",t)}}async function extractMediaMetadata(t,a){try{const e=t.type.startsWith("audio/")?new Audio:document.createElement("video"),i=URL.createObjectURL(t);await new Promise(((t,a)=>{e.onloadedmetadata=()=>t(),e.onerror=a,e.src=i})),a.duration=e.duration,"videoWidth"in e&&(a.width=e.videoWidth),"videoHeight"in e&&(a.height=e.videoHeight),URL.revokeObjectURL(i)}catch(t){console.error("提取媒体元数据失败:",t)}}async function parseExifData(t){const a=new DataView(t);return 65496!==a.getUint16(0)?null:{colorDepth:24,orientation:a.getUint16(16,!1)||1}}
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9zdG9yYWdlL3NlcnZpY2UtdXBsb2FkL3V0aWwtZmlsZS1tZXRhZGF0YS5tanM=`
|
|
10
|
+
|
|
@@ -1,42 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
import
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FmodeStorgeModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
12
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: FmodeStorgeModule, imports: [CommonModule, i1.IonicModule,
|
|
13
|
-
// 独立组件
|
|
14
|
-
HwobsManagerComponent], exports: [HwobsManagerComponent] }); }
|
|
15
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FmodeStorgeModule, providers: [
|
|
16
|
-
Diagnostic,
|
|
17
|
-
NovaUploadService
|
|
18
|
-
], imports: [CommonModule,
|
|
19
|
-
IonicModule.forRoot({ mode: "ios" }),
|
|
20
|
-
// 独立组件
|
|
21
|
-
HwobsManagerComponent] }); }
|
|
22
|
-
}
|
|
23
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FmodeStorgeModule, decorators: [{
|
|
24
|
-
type: NgModule,
|
|
25
|
-
args: [{
|
|
26
|
-
declarations: [],
|
|
27
|
-
imports: [
|
|
28
|
-
CommonModule,
|
|
29
|
-
IonicModule.forRoot({ mode: "ios" }),
|
|
30
|
-
// 独立组件
|
|
31
|
-
HwobsManagerComponent,
|
|
32
|
-
],
|
|
33
|
-
exports: [
|
|
34
|
-
HwobsManagerComponent
|
|
35
|
-
],
|
|
36
|
-
providers: [
|
|
37
|
-
Diagnostic,
|
|
38
|
-
NovaUploadService
|
|
39
|
-
]
|
|
40
|
-
}]
|
|
41
|
-
}] });
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mbW9kZS1uZy9zcmMvbGliL3N0b3JhZ2Uvc3RvcmFnZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDckYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLHdFQUF3RTtBQUN4RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7OztBQW1CckQsTUFBTSxPQUFPLGlCQUFpQjsrR0FBakIsaUJBQWlCO2dIQUFqQixpQkFBaUIsWUFiMUIsWUFBWTtZQUVaLE9BQU87WUFDUCxxQkFBcUIsYUFHckIscUJBQXFCO2dIQU9aLGlCQUFpQixhQUxsQjtZQUNSLFVBQVU7WUFDVixpQkFBaUI7U0FDbEIsWUFYQyxZQUFZO1lBQ1osV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFDLElBQUksRUFBQyxLQUFLLEVBQUMsQ0FBQztZQUNqQyxPQUFPO1lBQ1AscUJBQXFCOzs0RkFVWixpQkFBaUI7a0JBakI3QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxFQUNiO29CQUNELE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBQyxJQUFJLEVBQUMsS0FBSyxFQUFDLENBQUM7d0JBQ2pDLE9BQU87d0JBQ1AscUJBQXFCO3FCQUN0QjtvQkFDRCxPQUFPLEVBQUM7d0JBQ04scUJBQXFCO3FCQUN0QjtvQkFDRCxTQUFTLEVBQUM7d0JBQ1IsVUFBVTt3QkFDVixpQkFBaUI7cUJBQ2xCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuXHJcbmltcG9ydCB7IEh3b2JzTWFuYWdlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcC1od29icy1tYW5hZ2VyL2h3b2JzLW1hbmFnZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgSW9uaWNNb2R1bGUgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XHJcbi8vIGltcG9ydCB7IERpYWdub3N0aWMgfSBmcm9tICdAYXdlc29tZS1jb3Jkb3ZhLXBsdWdpbnMvZGlhZ25vc3RpYy9uZ3gnO1xyXG5pbXBvcnQgeyBEaWFnbm9zdGljIH0gZnJvbSAnQGF3ZXNvbWUtY29yZG92YS1wbHVnaW5zL2RpYWdub3N0aWMvbmd4JztcclxuaW1wb3J0IHsgTm92YVVwbG9hZFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2UtdXBsb2FkJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbXHJcbiAgXSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBJb25pY01vZHVsZS5mb3JSb290KHttb2RlOlwiaW9zXCJ9KSxcclxuICAgIC8vIOeLrOeri+e7hOS7tlxyXG4gICAgSHdvYnNNYW5hZ2VyQ29tcG9uZW50LFxyXG4gIF0sXHJcbiAgZXhwb3J0czpbXHJcbiAgICBId29ic01hbmFnZXJDb21wb25lbnRcclxuICBdLFxyXG4gIHByb3ZpZGVyczpbXHJcbiAgICBEaWFnbm9zdGljLFxyXG4gICAgTm92YVVwbG9hZFNlcnZpY2VcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGbW9kZVN0b3JnZU1vZHVsZSB7IH1cclxuIl19
|
|
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/storage/storage.module.mjs
|
|
7
|
+
*/
|
|
8
|
+
import{NgModule}from"@angular/core";import{CommonModule}from"@angular/common";import{HwobsManagerComponent}from"./comp-hwobs-manager/hwobs-manager.component";import{IonicModule}from"@ionic/angular";import{Diagnostic}from"@awesome-cordova-plugins/diagnostic/ngx";import{NovaUploadService}from"./service-upload";import*as i0 from"@angular/core";import*as i1 from"@ionic/angular";export class FmodeStorgeModule{static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:FmodeStorgeModule,deps:[],target:i0.ɵɵFactoryTarget.NgModule})}static{this.ɵmod=i0.ɵɵngDeclareNgModule({minVersion:"14.0.0",version:"17.3.12",ngImport:i0,type:FmodeStorgeModule,imports:[CommonModule,i1.IonicModule,HwobsManagerComponent],exports:[HwobsManagerComponent]})}static{this.ɵinj=i0.ɵɵngDeclareInjector({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:FmodeStorgeModule,providers:[Diagnostic,NovaUploadService],imports:[CommonModule,IonicModule.forRoot({mode:"ios"}),HwobsManagerComponent]})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:FmodeStorgeModule,decorators:[{type:NgModule,args:[{declarations:[],imports:[CommonModule,IonicModule.forRoot({mode:"ios"}),HwobsManagerComponent],exports:[HwobsManagerComponent],providers:[Diagnostic,NovaUploadService]}]}]});
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9zdG9yYWdlL3N0b3JhZ2UubW9kdWxlLm1qcw==`
|
|
10
|
+
|
package/esm2022/lib/text/fm-article-editor/article-editor-topbar/article-editor-topbar.component.mjs
CHANGED
|
@@ -1,72 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
import { NzDividerModule } from 'ng-zorro-antd/divider';
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
import { chevronBackOutline, folderOutline, cloudDoneOutline, createOutline } from 'ionicons/icons';
|
|
12
|
-
import * as i0 from "@angular/core";
|
|
13
|
-
import * as i1 from "@ionic/angular";
|
|
14
|
-
import * as i2 from "@angular/common";
|
|
15
|
-
import * as i3 from "@angular/material/button";
|
|
16
|
-
import * as i4 from "@angular/material/chips";
|
|
17
|
-
import * as i5 from "ng-zorro-antd/avatar";
|
|
18
|
-
import * as i6 from "ng-zorro-antd/divider";
|
|
19
|
-
import * as i7 from "ng-zorro-antd/icon";
|
|
20
|
-
import * as i8 from "@angular/material/slide-toggle";
|
|
21
|
-
addIcons({ chevronBackOutline, folderOutline, cloudDoneOutline, createOutline });
|
|
22
|
-
export class ArticleEditorTopbarComponent {
|
|
23
|
-
goBack() {
|
|
24
|
-
this.navCtrl.back();
|
|
25
|
-
}
|
|
26
|
-
navEvent(type) {
|
|
27
|
-
this.onNavEvent.emit(type);
|
|
28
|
-
}
|
|
29
|
-
// 公开文章
|
|
30
|
-
onPublicChange(ev) {
|
|
31
|
-
this.article?.set("isPublic", ev?.checked);
|
|
32
|
-
this.article?.save();
|
|
33
|
-
}
|
|
34
|
-
presentPopover(e) {
|
|
35
|
-
this.popover.event = e;
|
|
36
|
-
this.isOpen = true;
|
|
37
|
-
}
|
|
38
|
-
constructor(navCtrl) {
|
|
39
|
-
this.navCtrl = navCtrl;
|
|
40
|
-
this.contentChanged = false;
|
|
41
|
-
this.isSaving = false;
|
|
42
|
-
this.onNavEvent = new EventEmitter;
|
|
43
|
-
// 协作卡片
|
|
44
|
-
this.showCard = false;
|
|
45
|
-
this.isOpen = false;
|
|
46
|
-
this.showPopover = false;
|
|
47
|
-
}
|
|
48
|
-
ngOnInit() { }
|
|
49
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ArticleEditorTopbarComponent, deps: [{ token: i1.NavController }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
50
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ArticleEditorTopbarComponent, isStandalone: true, selector: "fm-article-editor-topbar", inputs: { article: "article", contentChanged: "contentChanged", isSaving: "isSaving" }, outputs: { onNavEvent: "onNavEvent" }, viewQueries: [{ propertyName: "popover", first: true, predicate: ["popover"], descendants: true }], ngImport: i0, template: "<div class=\"nav\">\r\n\r\n<div class=\"nav-left\">\r\n <div (click)=\"goBack()\">\r\n <ion-icon class=\"icon\" name=\"chevron-back-outline\"></ion-icon>\r\n <span>\u8FD4\u56DE\u4E0A\u7EA7</span>\r\n </div>\r\n <div *ngIf=\"article?.get('chapter')?.get('book')?.id\" (click)=\"navEvent('backmenu')\" style=\"width:100px;\">\r\n <ion-icon class=\"icon\" name=\"folder-outline\"></ion-icon>\r\n <span *ngIf=\"!article?.get('chapter')?.get('book')?.id\">\u8FD4\u56DE\u9996\u9875</span>\r\n <span *ngIf=\"article?.get('chapter')?.get('book')?.id\">\u6253\u5F00\u76EE\u5F55</span>\r\n </div>\r\n <div (click)=\"navEvent('save')\">\r\n <ion-icon *ngIf=\"!isSaving\" class=\"icon\" name=\"cloud-done-outline\"></ion-icon>\r\n <span *ngIf=\"isSaving\" nz-icon [nzType]=\"'sync'\" [nzSpin]=\"true\"></span>\r\n <span [style.color]=\"contentChanged?'red':'black'\">\u4FDD\u5B58\u6587\u7AE0</span> <ion-badge *ngIf=\"contentChanged\">\u65B0\u5185\u5BB9</ion-badge>\r\n </div>\r\n</div>\r\n\r\n<div class=\"nav-middle\">\r\n <mat-chip-listbox aria-label=\"Dog selection\">\r\n <mat-chip (click)=\"navEvent('options')\" [disabled]=\"!article?.get('writingOptions')\">\r\n <!-- <img matChipAvatar src=\"https://material.angular.io/assets/img/examples/shiba1.jpg\" alt=\"Photo of a Shiba Inu\"/> -->\r\n \u8BBE\u5B9A\r\n </mat-chip>\r\n <mat-chip (click)=\"navEvent('outline')\" [disabled]=\"!article?.get('outlineJson')\">\r\n <!-- <img matChipAvatar src=\"https://material.angular.io/assets/img/examples/shiba1.jpg\" alt=\"Photo of a Shiba Inu\"/> -->\r\n \u5927\u7EB2\r\n </mat-chip>\r\n <mat-chip (click)=\"navEvent('preview')\" [disabled]=\"!article?.get('contentArray')?.length\">\r\n <!-- <img matChipAvatar src=\"https://material.angular.io/assets/img/examples/shiba1.jpg\" alt=\"Photo of a Shiba Inu\"/> -->\r\n \u9884\u89C8\r\n </mat-chip>\r\n </mat-chip-listbox>\r\n <!-- <button>\u5F00\u59CB</button>\r\n <button>\u6548\u7387</button>\r\n <button>\u5BA1\u9605</button> -->\r\n\r\n</div>\r\n\r\n<div class=\"nav-right\">\r\n\r\n <mat-slide-toggle [checked]=\"article?.get('isPublic')\" (change)=\"onPublicChange($event)\">\u516C\u5F00\u6587\u7AE0</mat-slide-toggle>\r\n <!-- <button>\u767B\u5F55/\u6CE8\u518C</button> -->\r\n <!-- <nz-avatar nzText=\"USER\"></nz-avatar> -->\r\n <!-- <button class=\"bubble-card-trigger\" (click)=\"showCard = !showCard\">\u534F\u4F5C</button> -->\r\n\r\n <div class=\"bubble-card\" *ngIf=\"showCard\">\r\n\r\n <div class=\"bubble-card-content\">\r\n <div class=\"bubble-card-tab\">\r\n <div class=\"invite\">\u9080\u8BF7\u534F\u4F5C</div>\r\n </div>\r\n <nz-divider></nz-divider>\r\n\r\n <div class=\"search-bar\">\r\n <ion-searchbar class=\"search-input\" style=\"font-size:14px\" color=\"#ffffff\"\r\n placeholder=\"\u8F93\u5165 \u7528\u6237\u540D / \u90AE\u7BB1 / \u624B\u673A\u53F7 \u6DFB\u52A0\u534F\u4F5C\u6743\u9650\" font-size=\"14px\"></ion-searchbar>\r\n </div>\r\n <!-- \u534F\u52A9\u8005 -->\r\n <div class=\"people-manage\">\r\n\r\n <div class=\"people-top\">\u534F\u4F5C\u8005</div>\r\n <nz-divider></nz-divider>\r\n <div class=\"people-list\">\r\n <div class=\"people\">\r\n <div class=\"people-avatar\">\r\n <nz-avatar nzText=\"USER\"></nz-avatar>\r\n\r\n </div>\r\n <div class=\"people-name\">\r\n <p>\u7528\u6237\u540D</p>\r\n </div>\r\n <div class=\"people-source\">\r\n <p>2191982744%qq.com</p>\r\n </div>\r\n <div class=\"permission-management\">\r\n <ion-button color=\"light\" (click)=\"presentPopover($event)\">\u6743\u9650\u7BA1\u7406</ion-button>\r\n <ion-popover #popover [isOpen]=\"isOpen\" (didDismiss)=\"isOpen = false\">\r\n <ng-template>\r\n <ion-list>\r\n <ion-item>\r\n <ion-checkbox justify=\"start\">\u53EA\u8BFB</ion-checkbox>\r\n </ion-item>\r\n\r\n <ion-item>\r\n <ion-checkbox justify=\"end\">\u53EF\u7F16\u8F91</ion-checkbox>\r\n </ion-item>\r\n\r\n\r\n </ion-list>\r\n </ng-template>\r\n </ion-popover>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- \u534F\u52A9\u8005End -->\r\n\r\n <!-- \u7BA1\u7406\u8005 -->\r\n <div class=\"people-manage\">\r\n\r\n <div class=\"people-top\">\u7BA1\u7406\u8005</div>\r\n <nz-divider></nz-divider>\r\n <div class=\"people-list\">\r\n <div class=\"people\">\r\n <div class=\"people-avatar\">\r\n <nz-avatar nzText=\"USER\"></nz-avatar>\r\n\r\n </div>\r\n <div class=\"people-name\">\r\n <p>\u7528\u6237\u540D</p>\r\n </div>\r\n <div class=\"people-source\">\r\n <p>2191982744%qq.com</p>\r\n </div>\r\n <div class=\"people-position\">\r\n <p>\u7BA1\u7406\u5458</p>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n </div>\r\n </div>\r\n <!-- \u7BA1\u7406\u8005End -->\r\n\r\n </div>\r\n </div>\r\n\r\n <button mat-button (click)=\"navEvent('toggle-aitool')\">\r\n <ion-icon style=\"font-size:20px;margin-bottom:-3px;\" class=\"icon\" name=\"create-outline\"></ion-icon>\r\n <span>AI\u5199\u4F5C</span>\r\n </button>\r\n <!-- <ion-button color=\"#fafafa\" style=\"font-size: 13px; color:#252525;margin-top: 7px;\" mode=\"ios\"\r\n id=\"popover-button\">\u5206\u4EAB</ion-button> -->\r\n <ion-popover trigger=\"popover-button\" [dismissOnSelect]=\"true\">\r\n <ng-template>\r\n <ion-content>\r\n <ion-list>\r\n <ion-item [button]=\"true\" [detail]=\"false\">\u4E0B\u8F7D\u6587\u6863</ion-item>\r\n <ion-item [button]=\"true\" [detail]=\"false\">\u5220\u9664\u6587\u6863</ion-item>\r\n <ion-item [button]=\"true\" id=\"nested-trigger\">\u66F4\u591A</ion-item>\r\n\r\n <ion-popover trigger=\"nested-trigger\" [dismissOnSelect]=\"true\" side=\"end\">\r\n <ng-template>\r\n <ion-content>\r\n <ion-list>\r\n <ion-item [button]=\"true\" [detail]=\"false\">Nested option</ion-item>\r\n </ion-list>\r\n </ion-content>\r\n </ng-template>\r\n </ion-popover>\r\n </ion-list>\r\n </ion-content>\r\n </ng-template>\r\n </ion-popover>\r\n</div>\r\n</div>\r\n", styles: ["mat-button{display:felx;justify-content:center;align-items:center}.back-btn{margin-top:3px;width:100px;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center;align-items:center;background-color:transparent}.nav{background-color:#fafafa;display:flex;height:55px;width:100%;z-index:3;justify-content:space-between;align-items:center;box-shadow:0 4px 6px #00000026}.nav .nav-left{display:flex;justify-content:flex-start;align-items:flex-start;width:350px;padding-left:20px}.nav .nav-left div{display:flex;justify-content:center;align-items:center}.nav .nav-left div span{margin-left:5px;display:inline-block;color:#4b4b4b}.nav .nav-middle{display:flex;width:33%;align-items:center;justify-content:center}.nav .nav-middle button{padding:2%;width:33%;background-color:#fafafa;border:none;text-align:center}.nav .nav-right{display:flex;width:33%;height:50%;align-items:center;justify-content:flex-end}.nav .nav-right nz-avatar{cursor:pointer;margin-right:5%}.nav .nav-right ion-list{padding:20px}.nav .nav-right .bubble-card-trigger{position:relative}.nav .nav-right .bubble-card-content{width:35vw;height:55vh;background-color:#fff;position:absolute;right:1vw;top:5vh;z-index:999}.nav .nav-right .bubble-card-content .bubble-card-tab{height:6%;width:100%}.nav .nav-right .bubble-card-content .bubble-card-tab .invite{padding:3% 4%;margin-left:1.2%;font-size:18px;font-weight:700}.nav .nav-right .bubble-card-content .search-bar{width:92%;margin-left:4%;margin-bottom:2%;font-size:14px}.nav .nav-right .bubble-card-content .people-manage{width:100%;height:auto;padding:3% 4%;margin-left:1.2%;font-size:16px}.nav .nav-right .bubble-card-content .people-manage .people-top{height:15%}.nav .nav-right .bubble-card-content .people-manage .people-list .people{display:flex;align-items:center;height:10%;width:92%;cursor:pointer;transition:background-color .3s}.nav .nav-right .bubble-card-content .people-manage .people-list .people .people-avatar{width:10%;height:10%;margin:0% 3%}.nav .nav-right .bubble-card-content .people-manage .people-list .people .people-name{margin-right:4%;margin-top:5%;width:15%;height:1%}.nav .nav-right .bubble-card-content .people-manage .people-list .people .people-source{margin-top:5.5%;width:33%}.nav .nav-right .bubble-card-content .people-manage .people-list .people .people-source p{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nav .nav-right .bubble-card-content .people-manage .people-list .people .permission-management{margin-left:5%}.nav .nav-right .bubble-card-content .people-manage .people-list .people .people-position{margin-left:11%}.nav .nav-right .bubble-card-content .people-manage .people-list .people .people-position p{margin-top:revert}.nav .nav-right .bubble-card-content .people-manage .people-list .people:hover{background-color:#fafafa}.nav .nav-right .bubble-card-content nz-divider{margin:4% 0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { 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: "ngmodule", type: MatChipsModule }, { kind: "component", type: i4.MatChip, selector: "mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]", inputs: ["role", "id", "aria-label", "aria-description", "value", "color", "removable", "highlighted", "disableRipple", "disabled", "tabIndex"], outputs: ["removed", "destroyed"], exportAs: ["matChip"] }, { kind: "component", type: i4.MatChipListbox, selector: "mat-chip-listbox", inputs: ["multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "ngmodule", type: IonicModule }, { kind: "component", type: i1.IonBadge, selector: "ion-badge", inputs: ["color", "mode"] }, { kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonCheckbox, selector: "ion-checkbox", inputs: ["alignment", "checked", "color", "disabled", "errorText", "helperText", "indeterminate", "justify", "labelPlacement", "mode", "name", "required", "value"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i1.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i1.IonSearchbar, selector: "ion-searchbar", inputs: ["animated", "autocapitalize", "autocomplete", "autocorrect", "cancelButtonIcon", "cancelButtonText", "clearIcon", "color", "debounce", "disabled", "enterkeyhint", "inputmode", "maxlength", "minlength", "mode", "name", "placeholder", "searchIcon", "showCancelButton", "showClearButton", "spellcheck", "type", "value"] }, { kind: "component", type: i1.IonPopover, selector: "ion-popover" }, { kind: "directive", type: i1.BooleanValueAccessor, selector: "ion-checkbox,ion-toggle" }, { kind: "directive", type: i1.TextValueAccessor, selector: "ion-input:not([type=number]),ion-input-otp[type=text],ion-textarea,ion-searchbar" }, { kind: "ngmodule", type: NzAvatarModule }, { kind: "component", type: i5.NzAvatarComponent, selector: "nz-avatar", inputs: ["nzShape", "nzSize", "nzGap", "nzText", "nzSrc", "nzSrcSet", "nzAlt", "nzIcon"], outputs: ["nzError"], exportAs: ["nzAvatar"] }, { kind: "ngmodule", type: NzDividerModule }, { kind: "component", type: i6.NzDividerComponent, selector: "nz-divider", inputs: ["nzText", "nzType", "nzOrientation", "nzDashed", "nzPlain"], exportAs: ["nzDivider"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: i7.NzIconDirective, selector: "[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "ngmodule", type: MatSlideToggleModule }, { kind: "component", type: i8.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "color", "disabled", "disableRipple", "tabIndex", "checked", "hideIcon"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }] }); }
|
|
51
|
-
}
|
|
52
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ArticleEditorTopbarComponent, decorators: [{
|
|
53
|
-
type: Component,
|
|
54
|
-
args: [{ selector: 'fm-article-editor-topbar', standalone: true, imports: [
|
|
55
|
-
CommonModule,
|
|
56
|
-
MatButtonModule, MatChipsModule,
|
|
57
|
-
IonicModule, NzAvatarModule, NzDividerModule,
|
|
58
|
-
NzIconModule, MatSlideToggleModule,
|
|
59
|
-
], template: "<div class=\"nav\">\r\n\r\n<div class=\"nav-left\">\r\n <div (click)=\"goBack()\">\r\n <ion-icon class=\"icon\" name=\"chevron-back-outline\"></ion-icon>\r\n <span>\u8FD4\u56DE\u4E0A\u7EA7</span>\r\n </div>\r\n <div *ngIf=\"article?.get('chapter')?.get('book')?.id\" (click)=\"navEvent('backmenu')\" style=\"width:100px;\">\r\n <ion-icon class=\"icon\" name=\"folder-outline\"></ion-icon>\r\n <span *ngIf=\"!article?.get('chapter')?.get('book')?.id\">\u8FD4\u56DE\u9996\u9875</span>\r\n <span *ngIf=\"article?.get('chapter')?.get('book')?.id\">\u6253\u5F00\u76EE\u5F55</span>\r\n </div>\r\n <div (click)=\"navEvent('save')\">\r\n <ion-icon *ngIf=\"!isSaving\" class=\"icon\" name=\"cloud-done-outline\"></ion-icon>\r\n <span *ngIf=\"isSaving\" nz-icon [nzType]=\"'sync'\" [nzSpin]=\"true\"></span>\r\n <span [style.color]=\"contentChanged?'red':'black'\">\u4FDD\u5B58\u6587\u7AE0</span> <ion-badge *ngIf=\"contentChanged\">\u65B0\u5185\u5BB9</ion-badge>\r\n </div>\r\n</div>\r\n\r\n<div class=\"nav-middle\">\r\n <mat-chip-listbox aria-label=\"Dog selection\">\r\n <mat-chip (click)=\"navEvent('options')\" [disabled]=\"!article?.get('writingOptions')\">\r\n <!-- <img matChipAvatar src=\"https://material.angular.io/assets/img/examples/shiba1.jpg\" alt=\"Photo of a Shiba Inu\"/> -->\r\n \u8BBE\u5B9A\r\n </mat-chip>\r\n <mat-chip (click)=\"navEvent('outline')\" [disabled]=\"!article?.get('outlineJson')\">\r\n <!-- <img matChipAvatar src=\"https://material.angular.io/assets/img/examples/shiba1.jpg\" alt=\"Photo of a Shiba Inu\"/> -->\r\n \u5927\u7EB2\r\n </mat-chip>\r\n <mat-chip (click)=\"navEvent('preview')\" [disabled]=\"!article?.get('contentArray')?.length\">\r\n <!-- <img matChipAvatar src=\"https://material.angular.io/assets/img/examples/shiba1.jpg\" alt=\"Photo of a Shiba Inu\"/> -->\r\n \u9884\u89C8\r\n </mat-chip>\r\n </mat-chip-listbox>\r\n <!-- <button>\u5F00\u59CB</button>\r\n <button>\u6548\u7387</button>\r\n <button>\u5BA1\u9605</button> -->\r\n\r\n</div>\r\n\r\n<div class=\"nav-right\">\r\n\r\n <mat-slide-toggle [checked]=\"article?.get('isPublic')\" (change)=\"onPublicChange($event)\">\u516C\u5F00\u6587\u7AE0</mat-slide-toggle>\r\n <!-- <button>\u767B\u5F55/\u6CE8\u518C</button> -->\r\n <!-- <nz-avatar nzText=\"USER\"></nz-avatar> -->\r\n <!-- <button class=\"bubble-card-trigger\" (click)=\"showCard = !showCard\">\u534F\u4F5C</button> -->\r\n\r\n <div class=\"bubble-card\" *ngIf=\"showCard\">\r\n\r\n <div class=\"bubble-card-content\">\r\n <div class=\"bubble-card-tab\">\r\n <div class=\"invite\">\u9080\u8BF7\u534F\u4F5C</div>\r\n </div>\r\n <nz-divider></nz-divider>\r\n\r\n <div class=\"search-bar\">\r\n <ion-searchbar class=\"search-input\" style=\"font-size:14px\" color=\"#ffffff\"\r\n placeholder=\"\u8F93\u5165 \u7528\u6237\u540D / \u90AE\u7BB1 / \u624B\u673A\u53F7 \u6DFB\u52A0\u534F\u4F5C\u6743\u9650\" font-size=\"14px\"></ion-searchbar>\r\n </div>\r\n <!-- \u534F\u52A9\u8005 -->\r\n <div class=\"people-manage\">\r\n\r\n <div class=\"people-top\">\u534F\u4F5C\u8005</div>\r\n <nz-divider></nz-divider>\r\n <div class=\"people-list\">\r\n <div class=\"people\">\r\n <div class=\"people-avatar\">\r\n <nz-avatar nzText=\"USER\"></nz-avatar>\r\n\r\n </div>\r\n <div class=\"people-name\">\r\n <p>\u7528\u6237\u540D</p>\r\n </div>\r\n <div class=\"people-source\">\r\n <p>2191982744%qq.com</p>\r\n </div>\r\n <div class=\"permission-management\">\r\n <ion-button color=\"light\" (click)=\"presentPopover($event)\">\u6743\u9650\u7BA1\u7406</ion-button>\r\n <ion-popover #popover [isOpen]=\"isOpen\" (didDismiss)=\"isOpen = false\">\r\n <ng-template>\r\n <ion-list>\r\n <ion-item>\r\n <ion-checkbox justify=\"start\">\u53EA\u8BFB</ion-checkbox>\r\n </ion-item>\r\n\r\n <ion-item>\r\n <ion-checkbox justify=\"end\">\u53EF\u7F16\u8F91</ion-checkbox>\r\n </ion-item>\r\n\r\n\r\n </ion-list>\r\n </ng-template>\r\n </ion-popover>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- \u534F\u52A9\u8005End -->\r\n\r\n <!-- \u7BA1\u7406\u8005 -->\r\n <div class=\"people-manage\">\r\n\r\n <div class=\"people-top\">\u7BA1\u7406\u8005</div>\r\n <nz-divider></nz-divider>\r\n <div class=\"people-list\">\r\n <div class=\"people\">\r\n <div class=\"people-avatar\">\r\n <nz-avatar nzText=\"USER\"></nz-avatar>\r\n\r\n </div>\r\n <div class=\"people-name\">\r\n <p>\u7528\u6237\u540D</p>\r\n </div>\r\n <div class=\"people-source\">\r\n <p>2191982744%qq.com</p>\r\n </div>\r\n <div class=\"people-position\">\r\n <p>\u7BA1\u7406\u5458</p>\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n\r\n </div>\r\n </div>\r\n <!-- \u7BA1\u7406\u8005End -->\r\n\r\n </div>\r\n </div>\r\n\r\n <button mat-button (click)=\"navEvent('toggle-aitool')\">\r\n <ion-icon style=\"font-size:20px;margin-bottom:-3px;\" class=\"icon\" name=\"create-outline\"></ion-icon>\r\n <span>AI\u5199\u4F5C</span>\r\n </button>\r\n <!-- <ion-button color=\"#fafafa\" style=\"font-size: 13px; color:#252525;margin-top: 7px;\" mode=\"ios\"\r\n id=\"popover-button\">\u5206\u4EAB</ion-button> -->\r\n <ion-popover trigger=\"popover-button\" [dismissOnSelect]=\"true\">\r\n <ng-template>\r\n <ion-content>\r\n <ion-list>\r\n <ion-item [button]=\"true\" [detail]=\"false\">\u4E0B\u8F7D\u6587\u6863</ion-item>\r\n <ion-item [button]=\"true\" [detail]=\"false\">\u5220\u9664\u6587\u6863</ion-item>\r\n <ion-item [button]=\"true\" id=\"nested-trigger\">\u66F4\u591A</ion-item>\r\n\r\n <ion-popover trigger=\"nested-trigger\" [dismissOnSelect]=\"true\" side=\"end\">\r\n <ng-template>\r\n <ion-content>\r\n <ion-list>\r\n <ion-item [button]=\"true\" [detail]=\"false\">Nested option</ion-item>\r\n </ion-list>\r\n </ion-content>\r\n </ng-template>\r\n </ion-popover>\r\n </ion-list>\r\n </ion-content>\r\n </ng-template>\r\n </ion-popover>\r\n</div>\r\n</div>\r\n", styles: ["mat-button{display:felx;justify-content:center;align-items:center}.back-btn{margin-top:3px;width:100px;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center;align-items:center;background-color:transparent}.nav{background-color:#fafafa;display:flex;height:55px;width:100%;z-index:3;justify-content:space-between;align-items:center;box-shadow:0 4px 6px #00000026}.nav .nav-left{display:flex;justify-content:flex-start;align-items:flex-start;width:350px;padding-left:20px}.nav .nav-left div{display:flex;justify-content:center;align-items:center}.nav .nav-left div span{margin-left:5px;display:inline-block;color:#4b4b4b}.nav .nav-middle{display:flex;width:33%;align-items:center;justify-content:center}.nav .nav-middle button{padding:2%;width:33%;background-color:#fafafa;border:none;text-align:center}.nav .nav-right{display:flex;width:33%;height:50%;align-items:center;justify-content:flex-end}.nav .nav-right nz-avatar{cursor:pointer;margin-right:5%}.nav .nav-right ion-list{padding:20px}.nav .nav-right .bubble-card-trigger{position:relative}.nav .nav-right .bubble-card-content{width:35vw;height:55vh;background-color:#fff;position:absolute;right:1vw;top:5vh;z-index:999}.nav .nav-right .bubble-card-content .bubble-card-tab{height:6%;width:100%}.nav .nav-right .bubble-card-content .bubble-card-tab .invite{padding:3% 4%;margin-left:1.2%;font-size:18px;font-weight:700}.nav .nav-right .bubble-card-content .search-bar{width:92%;margin-left:4%;margin-bottom:2%;font-size:14px}.nav .nav-right .bubble-card-content .people-manage{width:100%;height:auto;padding:3% 4%;margin-left:1.2%;font-size:16px}.nav .nav-right .bubble-card-content .people-manage .people-top{height:15%}.nav .nav-right .bubble-card-content .people-manage .people-list .people{display:flex;align-items:center;height:10%;width:92%;cursor:pointer;transition:background-color .3s}.nav .nav-right .bubble-card-content .people-manage .people-list .people .people-avatar{width:10%;height:10%;margin:0% 3%}.nav .nav-right .bubble-card-content .people-manage .people-list .people .people-name{margin-right:4%;margin-top:5%;width:15%;height:1%}.nav .nav-right .bubble-card-content .people-manage .people-list .people .people-source{margin-top:5.5%;width:33%}.nav .nav-right .bubble-card-content .people-manage .people-list .people .people-source p{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nav .nav-right .bubble-card-content .people-manage .people-list .people .permission-management{margin-left:5%}.nav .nav-right .bubble-card-content .people-manage .people-list .people .people-position{margin-left:11%}.nav .nav-right .bubble-card-content .people-manage .people-list .people .people-position p{margin-top:revert}.nav .nav-right .bubble-card-content .people-manage .people-list .people:hover{background-color:#fafafa}.nav .nav-right .bubble-card-content nz-divider{margin:4% 0}\n"] }]
|
|
60
|
-
}], ctorParameters: () => [{ type: i1.NavController }], propDecorators: { popover: [{
|
|
61
|
-
type: ViewChild,
|
|
62
|
-
args: ['popover']
|
|
63
|
-
}], article: [{
|
|
64
|
-
type: Input
|
|
65
|
-
}], contentChanged: [{
|
|
66
|
-
type: Input
|
|
67
|
-
}], isSaving: [{
|
|
68
|
-
type: Input
|
|
69
|
-
}], onNavEvent: [{
|
|
70
|
-
type: Output
|
|
71
|
-
}] } });
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJ0aWNsZS1lZGl0b3ItdG9wYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Ztb2RlLW5nL3NyYy9saWIvdGV4dC9mbS1hcnRpY2xlLWVkaXRvci9hcnRpY2xlLWVkaXRvci10b3BiYXIvYXJ0aWNsZS1lZGl0b3ItdG9wYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Ztb2RlLW5nL3NyYy9saWIvdGV4dC9mbS1hcnRpY2xlLWVkaXRvci9hcnRpY2xlLWVkaXRvci10b3BiYXIvYXJ0aWNsZS1lZGl0b3ItdG9wYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBd0Isb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUM1RixPQUFPLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFFLGtCQUFrQixFQUFDLGFBQWEsRUFBQyxnQkFBZ0IsRUFBQyxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7OztBQUNqRyxRQUFRLENBQUMsRUFBQyxrQkFBa0IsRUFBQyxhQUFhLEVBQUMsZ0JBQWdCLEVBQUMsYUFBYSxFQUFDLENBQUMsQ0FBQTtBQWMzRSxNQUFNLE9BQU8sNEJBQTRCO0lBU3ZDLE1BQU07UUFDSixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFDRCxRQUFRLENBQUMsSUFBVztRQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUM1QixDQUFDO0lBQ0QsT0FBTztJQUNQLGNBQWMsQ0FBQyxFQUF1QjtRQUNwQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxVQUFVLEVBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQ3pDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQU1ELGNBQWMsQ0FBQyxDQUFRO1FBQ3JCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztJQUNyQixDQUFDO0lBTUQsWUFDVSxPQUFxQjtRQUFyQixZQUFPLEdBQVAsT0FBTyxDQUFjO1FBOUJ0QixtQkFBYyxHQUFXLEtBQUssQ0FBQztRQUMvQixhQUFRLEdBQVcsS0FBSyxDQUFDO1FBQ3hCLGVBQVUsR0FBd0IsSUFBSSxZQUFvQixDQUFBO1FBYXBFLE9BQU87UUFDUCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFTZixnQkFBVyxHQUFHLEtBQUssQ0FBQztJQUtoQixDQUFDO0lBRUwsUUFBUSxLQUFJLENBQUM7K0dBdENGLDRCQUE0QjttR0FBNUIsNEJBQTRCLHVUQ3pCekMsNmpOQXFLQSx3M0ZEbEpJLFlBQVksa0lBQ1osZUFBZSwyTkFBQyxjQUFjLHFqQkFDOUIsV0FBVyx3OERBQUMsY0FBYyxnUEFBQyxlQUFlLHlNQUMxQyxZQUFZLGlOQUFDLG9CQUFvQjs7NEZBR3hCLDRCQUE0QjtrQkFaeEMsU0FBUzsrQkFDRSwwQkFBMEIsY0FHeEIsSUFBSSxXQUNSO3dCQUNOLFlBQVk7d0JBQ1osZUFBZSxFQUFDLGNBQWM7d0JBQzlCLFdBQVcsRUFBQyxjQUFjLEVBQUMsZUFBZTt3QkFDMUMsWUFBWSxFQUFDLG9CQUFvQjtxQkFDbEM7a0ZBSXFCLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFFWCxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0Q2hpcHNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XHJcbmltcG9ydCB7IE1hdFNsaWRlVG9nZ2xlQ2hhbmdlLCBNYXRTbGlkZVRvZ2dsZU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NsaWRlLXRvZ2dsZSc7XHJcbmltcG9ydCB7IElvbmljTW9kdWxlLCBOYXZDb250cm9sbGVyIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5pbXBvcnQgeyBOekF2YXRhck1vZHVsZSB9IGZyb20gJ25nLXpvcnJvLWFudGQvYXZhdGFyJztcclxuaW1wb3J0IHsgTnpEaXZpZGVyTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9kaXZpZGVyJztcclxuaW1wb3J0IHsgTnpJY29uTW9kdWxlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9pY29uJztcclxuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XHJcbmltcG9ydCB7IGNoZXZyb25CYWNrT3V0bGluZSxmb2xkZXJPdXRsaW5lLGNsb3VkRG9uZU91dGxpbmUsY3JlYXRlT3V0bGluZSB9IGZyb20gJ2lvbmljb25zL2ljb25zJztcclxuYWRkSWNvbnMoe2NoZXZyb25CYWNrT3V0bGluZSxmb2xkZXJPdXRsaW5lLGNsb3VkRG9uZU91dGxpbmUsY3JlYXRlT3V0bGluZX0pXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2ZtLWFydGljbGUtZWRpdG9yLXRvcGJhcicsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2FydGljbGUtZWRpdG9yLXRvcGJhci5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYXJ0aWNsZS1lZGl0b3ItdG9wYmFyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOltcclxuICAgIENvbW1vbk1vZHVsZSxcclxuICAgIE1hdEJ1dHRvbk1vZHVsZSxNYXRDaGlwc01vZHVsZSxcclxuICAgIElvbmljTW9kdWxlLE56QXZhdGFyTW9kdWxlLE56RGl2aWRlck1vZHVsZSxcclxuICAgIE56SWNvbk1vZHVsZSxNYXRTbGlkZVRvZ2dsZU1vZHVsZSxcclxuICBdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBcnRpY2xlRWRpdG9yVG9wYmFyQ29tcG9uZW50ICBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBWaWV3Q2hpbGQoJ3BvcG92ZXInKSBwb3BvdmVyPzogYW55O1xyXG5cclxuICBASW5wdXQoKSBhcnRpY2xlOlBhcnNlLk9iamVjdHx1bmRlZmluZWQ7XHJcbiAgQElucHV0KCkgY29udGVudENoYW5nZWQ6Ym9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGlzU2F2aW5nOmJvb2xlYW4gPSBmYWxzZTtcclxuICBAT3V0cHV0KCkgb25OYXZFdmVudDpFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPlxyXG5cclxuICBnb0JhY2soKXtcclxuICAgIHRoaXMubmF2Q3RybC5iYWNrKCk7XHJcbiAgfVxyXG4gIG5hdkV2ZW50KHR5cGU6c3RyaW5nKXtcclxuICAgIHRoaXMub25OYXZFdmVudC5lbWl0KHR5cGUpXHJcbiAgfVxyXG4gIC8vIOWFrOW8gOaWh+eroFxyXG4gIG9uUHVibGljQ2hhbmdlKGV2Ok1hdFNsaWRlVG9nZ2xlQ2hhbmdlKXtcclxuICAgIHRoaXMuYXJ0aWNsZT8uc2V0KFwiaXNQdWJsaWNcIixldj8uY2hlY2tlZClcclxuICAgIHRoaXMuYXJ0aWNsZT8uc2F2ZSgpO1xyXG4gIH1cclxuICAvLyDljY/kvZzljaHniYdcclxuICBzaG93Q2FyZCA9IGZhbHNlO1xyXG4gIGlzT3BlbiA9IGZhbHNlO1xyXG4gIFxyXG5cclxuICBwcmVzZW50UG9wb3ZlcihlOiBFdmVudCkge1xyXG4gICAgdGhpcy5wb3BvdmVyLmV2ZW50ID0gZTtcclxuICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcclxuICB9XHJcbiAgXHJcblxyXG4gIHNob3dQb3BvdmVyID0gZmFsc2U7XHJcbiAgXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBuYXZDdHJsOk5hdkNvbnRyb2xsZXJcclxuICApIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHt9XHJcblxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJuYXZcIj5cclxuXHJcbjxkaXYgY2xhc3M9XCJuYXYtbGVmdFwiPlxyXG4gIDxkaXYgKGNsaWNrKT1cImdvQmFjaygpXCI+XHJcbiAgICA8aW9uLWljb24gY2xhc3M9XCJpY29uXCIgbmFtZT1cImNoZXZyb24tYmFjay1vdXRsaW5lXCI+PC9pb24taWNvbj5cclxuICAgIDxzcGFuPui/lOWbnuS4iue6pzwvc3Bhbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2ICpuZ0lmPVwiYXJ0aWNsZT8uZ2V0KCdjaGFwdGVyJyk/LmdldCgnYm9vaycpPy5pZFwiIChjbGljayk9XCJuYXZFdmVudCgnYmFja21lbnUnKVwiIHN0eWxlPVwid2lkdGg6MTAwcHg7XCI+XHJcbiAgICA8aW9uLWljb24gY2xhc3M9XCJpY29uXCIgbmFtZT1cImZvbGRlci1vdXRsaW5lXCI+PC9pb24taWNvbj5cclxuICAgIDxzcGFuICpuZ0lmPVwiIWFydGljbGU/LmdldCgnY2hhcHRlcicpPy5nZXQoJ2Jvb2snKT8uaWRcIj7ov5Tlm57pppbpobU8L3NwYW4+XHJcbiAgICA8c3BhbiAqbmdJZj1cImFydGljbGU/LmdldCgnY2hhcHRlcicpPy5nZXQoJ2Jvb2snKT8uaWRcIj7miZPlvIDnm67lvZU8L3NwYW4+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiAoY2xpY2spPVwibmF2RXZlbnQoJ3NhdmUnKVwiPlxyXG4gICAgPGlvbi1pY29uICpuZ0lmPVwiIWlzU2F2aW5nXCIgY2xhc3M9XCJpY29uXCIgbmFtZT1cImNsb3VkLWRvbmUtb3V0bGluZVwiPjwvaW9uLWljb24+XHJcbiAgICA8c3BhbiAgKm5nSWY9XCJpc1NhdmluZ1wiIG56LWljb24gW256VHlwZV09XCInc3luYydcIiBbbnpTcGluXT1cInRydWVcIj48L3NwYW4+XHJcbiAgICA8c3BhbiBbc3R5bGUuY29sb3JdPVwiY29udGVudENoYW5nZWQ/J3JlZCc6J2JsYWNrJ1wiPuS/neWtmOaWh+eroDwvc3Bhbj4gPGlvbi1iYWRnZSAqbmdJZj1cImNvbnRlbnRDaGFuZ2VkXCI+5paw5YaF5a65PC9pb24tYmFkZ2U+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBjbGFzcz1cIm5hdi1taWRkbGVcIj5cclxuICA8bWF0LWNoaXAtbGlzdGJveCBhcmlhLWxhYmVsPVwiRG9nIHNlbGVjdGlvblwiPlxyXG4gICAgPG1hdC1jaGlwIChjbGljayk9XCJuYXZFdmVudCgnb3B0aW9ucycpXCIgW2Rpc2FibGVkXT1cIiFhcnRpY2xlPy5nZXQoJ3dyaXRpbmdPcHRpb25zJylcIj5cclxuICAgICAgPCEtLSA8aW1nIG1hdENoaXBBdmF0YXIgc3JjPVwiaHR0cHM6Ly9tYXRlcmlhbC5hbmd1bGFyLmlvL2Fzc2V0cy9pbWcvZXhhbXBsZXMvc2hpYmExLmpwZ1wiIGFsdD1cIlBob3RvIG9mIGEgU2hpYmEgSW51XCIvPiAtLT5cclxuICAgICAg6K6+5a6aXHJcbiAgICA8L21hdC1jaGlwPlxyXG4gICAgPG1hdC1jaGlwIChjbGljayk9XCJuYXZFdmVudCgnb3V0bGluZScpXCIgW2Rpc2FibGVkXT1cIiFhcnRpY2xlPy5nZXQoJ291dGxpbmVKc29uJylcIj5cclxuICAgICAgPCEtLSA8aW1nIG1hdENoaXBBdmF0YXIgc3JjPVwiaHR0cHM6Ly9tYXRlcmlhbC5hbmd1bGFyLmlvL2Fzc2V0cy9pbWcvZXhhbXBsZXMvc2hpYmExLmpwZ1wiIGFsdD1cIlBob3RvIG9mIGEgU2hpYmEgSW51XCIvPiAtLT5cclxuICAgICAg5aSn57qyXHJcbiAgICA8L21hdC1jaGlwPlxyXG4gICAgPG1hdC1jaGlwIChjbGljayk9XCJuYXZFdmVudCgncHJldmlldycpXCIgW2Rpc2FibGVkXT1cIiFhcnRpY2xlPy5nZXQoJ2NvbnRlbnRBcnJheScpPy5sZW5ndGhcIj5cclxuICAgICAgPCEtLSA8aW1nIG1hdENoaXBBdmF0YXIgc3JjPVwiaHR0cHM6Ly9tYXRlcmlhbC5hbmd1bGFyLmlvL2Fzc2V0cy9pbWcvZXhhbXBsZXMvc2hpYmExLmpwZ1wiIGFsdD1cIlBob3RvIG9mIGEgU2hpYmEgSW51XCIvPiAtLT5cclxuICAgICAg6aKE6KeIXHJcbiAgICA8L21hdC1jaGlwPlxyXG4gIDwvbWF0LWNoaXAtbGlzdGJveD5cclxuICA8IS0tIDxidXR0b24+5byA5aeLPC9idXR0b24+XHJcbiAgPGJ1dHRvbj7mlYjnjoc8L2J1dHRvbj5cclxuICA8YnV0dG9uPuWuoemYhTwvYnV0dG9uPiAtLT5cclxuXHJcbjwvZGl2PlxyXG5cclxuPGRpdiBjbGFzcz1cIm5hdi1yaWdodFwiPlxyXG5cclxuICA8bWF0LXNsaWRlLXRvZ2dsZSBbY2hlY2tlZF09XCJhcnRpY2xlPy5nZXQoJ2lzUHVibGljJylcIiAoY2hhbmdlKT1cIm9uUHVibGljQ2hhbmdlKCRldmVudClcIj7lhazlvIDmlofnq6A8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgPCEtLSA8YnV0dG9uPueZu+W9lS/ms6jlhow8L2J1dHRvbj4gLS0+XHJcbiAgPCEtLSA8bnotYXZhdGFyIG56VGV4dD1cIlVTRVJcIj48L256LWF2YXRhcj4gLS0+XHJcbiAgPCEtLSA8YnV0dG9uIGNsYXNzPVwiYnViYmxlLWNhcmQtdHJpZ2dlclwiIChjbGljayk9XCJzaG93Q2FyZCA9ICFzaG93Q2FyZFwiPuWNj+S9nDwvYnV0dG9uPiAtLT5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImJ1YmJsZS1jYXJkXCIgKm5nSWY9XCJzaG93Q2FyZFwiPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJidWJibGUtY2FyZC1jb250ZW50XCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJidWJibGUtY2FyZC10YWJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW52aXRlXCI+6YKA6K+35Y2P5L2cPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8bnotZGl2aWRlcj48L256LWRpdmlkZXI+XHJcblxyXG4gICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLWJhclwiPlxyXG4gICAgICAgIDxpb24tc2VhcmNoYmFyIGNsYXNzPVwic2VhcmNoLWlucHV0XCIgc3R5bGU9XCJmb250LXNpemU6MTRweFwiIGNvbG9yPVwiI2ZmZmZmZlwiXHJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIui+k+WFpSDnlKjmiLflkI0gLyDpgq7nrrEgLyDmiYvmnLrlj7cg5re75Yqg5Y2P5L2c5p2D6ZmQXCIgZm9udC1zaXplPVwiMTRweFwiPjwvaW9uLXNlYXJjaGJhcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDwhLS0g5Y2P5Yqp6ICFIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicGVvcGxlLW1hbmFnZVwiPlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGVvcGxlLXRvcFwiPuWNj+S9nOiAhTwvZGl2PlxyXG4gICAgICAgIDxuei1kaXZpZGVyPjwvbnotZGl2aWRlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGVvcGxlLWxpc3RcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZW9wbGVcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlb3BsZS1hdmF0YXJcIj5cclxuICAgICAgICAgICAgICA8bnotYXZhdGFyIG56VGV4dD1cIlVTRVJcIj48L256LWF2YXRhcj5cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVvcGxlLW5hbWVcIj5cclxuICAgICAgICAgICAgICA8cD7nlKjmiLflkI08L3A+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVvcGxlLXNvdXJjZVwiPlxyXG4gICAgICAgICAgICAgIDxwPjIxOTE5ODI3NDQlcXEuY29tPC9wPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBlcm1pc3Npb24tbWFuYWdlbWVudFwiPlxyXG4gICAgICAgICAgICAgIDxpb24tYnV0dG9uIGNvbG9yPVwibGlnaHRcIiAoY2xpY2spPVwicHJlc2VudFBvcG92ZXIoJGV2ZW50KVwiPuadg+mZkOeuoeeQhjwvaW9uLWJ1dHRvbj5cclxuICAgICAgICAgICAgICA8aW9uLXBvcG92ZXIgI3BvcG92ZXIgW2lzT3Blbl09XCJpc09wZW5cIiAoZGlkRGlzbWlzcyk9XCJpc09wZW4gPSBmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICA8aW9uLWxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1pdGVtPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlvbi1jaGVja2JveCBqdXN0aWZ5PVwic3RhcnRcIj7lj6ror7s8L2lvbi1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1pdGVtPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8aW9uLWl0ZW0+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW9uLWNoZWNrYm94IGp1c3RpZnk9XCJlbmRcIj7lj6/nvJbovpE8L2lvbi1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgICA8L2lvbi1pdGVtPlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDwvaW9uLWxpc3Q+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDwvaW9uLXBvcG92ZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuXHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0g5Y2P5Yqp6ICFRW5kIC0tPlxyXG5cclxuICAgICAgPCEtLSDnrqHnkIbogIUgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwZW9wbGUtbWFuYWdlXCI+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwZW9wbGUtdG9wXCI+566h55CG6ICFPC9kaXY+XHJcbiAgICAgICAgPG56LWRpdmlkZXI+PC9uei1kaXZpZGVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwZW9wbGUtbGlzdFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBlb3BsZVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVvcGxlLWF2YXRhclwiPlxyXG4gICAgICAgICAgICAgIDxuei1hdmF0YXIgbnpUZXh0PVwiVVNFUlwiPjwvbnotYXZhdGFyPlxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZW9wbGUtbmFtZVwiPlxyXG4gICAgICAgICAgICAgIDxwPueUqOaIt+WQjTwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwZW9wbGUtc291cmNlXCI+XHJcbiAgICAgICAgICAgICAgPHA+MjE5MTk4Mjc0NCVxcS5jb208L3A+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGVvcGxlLXBvc2l0aW9uXCI+XHJcbiAgICAgICAgICAgICAgPHA+566h55CG5ZGYPC9wPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcblxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDwhLS0g566h55CG6ICFRW5kIC0tPlxyXG5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8YnV0dG9uIG1hdC1idXR0b24gKGNsaWNrKT1cIm5hdkV2ZW50KCd0b2dnbGUtYWl0b29sJylcIj5cclxuICAgIDxpb24taWNvbiBzdHlsZT1cImZvbnQtc2l6ZToyMHB4O21hcmdpbi1ib3R0b206LTNweDtcIiBjbGFzcz1cImljb25cIiBuYW1lPVwiY3JlYXRlLW91dGxpbmVcIj48L2lvbi1pY29uPlxyXG4gICAgPHNwYW4+QUnlhpnkvZw8L3NwYW4+XHJcbiAgPC9idXR0b24+XHJcbiAgPCEtLSA8aW9uLWJ1dHRvbiBjb2xvcj1cIiNmYWZhZmFcIiBzdHlsZT1cImZvbnQtc2l6ZTogMTNweDsgY29sb3I6IzI1MjUyNTttYXJnaW4tdG9wOiA3cHg7XCIgbW9kZT1cImlvc1wiXHJcbiAgICBpZD1cInBvcG92ZXItYnV0dG9uXCI+5YiG5LqrPC9pb24tYnV0dG9uPiAtLT5cclxuICA8aW9uLXBvcG92ZXIgdHJpZ2dlcj1cInBvcG92ZXItYnV0dG9uXCIgW2Rpc21pc3NPblNlbGVjdF09XCJ0cnVlXCI+XHJcbiAgICA8bmctdGVtcGxhdGU+XHJcbiAgICAgIDxpb24tY29udGVudD5cclxuICAgICAgICA8aW9uLWxpc3Q+XHJcbiAgICAgICAgICA8aW9uLWl0ZW0gW2J1dHRvbl09XCJ0cnVlXCIgW2RldGFpbF09XCJmYWxzZVwiPuS4i+i9veaWh+ahozwvaW9uLWl0ZW0+XHJcbiAgICAgICAgICA8aW9uLWl0ZW0gW2J1dHRvbl09XCJ0cnVlXCIgW2RldGFpbF09XCJmYWxzZVwiPuWIoOmZpOaWh+ahozwvaW9uLWl0ZW0+XHJcbiAgICAgICAgICA8aW9uLWl0ZW0gW2J1dHRvbl09XCJ0cnVlXCIgaWQ9XCJuZXN0ZWQtdHJpZ2dlclwiPuabtOWkmjwvaW9uLWl0ZW0+XHJcblxyXG4gICAgICAgICAgPGlvbi1wb3BvdmVyIHRyaWdnZXI9XCJuZXN0ZWQtdHJpZ2dlclwiIFtkaXNtaXNzT25TZWxlY3RdPVwidHJ1ZVwiIHNpZGU9XCJlbmRcIj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgIDxpb24tY29udGVudD5cclxuICAgICAgICAgICAgICAgIDxpb24tbGlzdD5cclxuICAgICAgICAgICAgICAgICAgPGlvbi1pdGVtIFtidXR0b25dPVwidHJ1ZVwiIFtkZXRhaWxdPVwiZmFsc2VcIj5OZXN0ZWQgb3B0aW9uPC9pb24taXRlbT5cclxuICAgICAgICAgICAgICAgIDwvaW9uLWxpc3Q+XHJcbiAgICAgICAgICAgICAgPC9pb24tY29udGVudD5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgIDwvaW9uLXBvcG92ZXI+XHJcbiAgICAgICAgPC9pb24tbGlzdD5cclxuICAgICAgPC9pb24tY29udGVudD5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgPC9pb24tcG9wb3Zlcj5cclxuPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
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/text/fm-article-editor/article-editor-topbar/article-editor-topbar.component.mjs
|
|
7
|
+
*/
|
|
8
|
+
import{CommonModule}from"@angular/common";import{Component,EventEmitter,Input,Output,ViewChild}from"@angular/core";import{MatButtonModule}from"@angular/material/button";import{MatChipsModule}from"@angular/material/chips";import{MatSlideToggleModule}from"@angular/material/slide-toggle";import{IonicModule,NavController}from"@ionic/angular";import{NzAvatarModule}from"ng-zorro-antd/avatar";import{NzDividerModule}from"ng-zorro-antd/divider";import{NzIconModule}from"ng-zorro-antd/icon";import{addIcons}from"ionicons";import{chevronBackOutline,folderOutline,cloudDoneOutline,createOutline}from"ionicons/icons";import{FmodeObject}from"@fmode/parse";import*as i0 from"@angular/core";import*as i1 from"@ionic/angular";import*as i2 from"@angular/common";import*as i3 from"@angular/material/button";import*as i4 from"@angular/material/chips";import*as i5 from"ng-zorro-antd/avatar";import*as i6 from"ng-zorro-antd/divider";import*as i7 from"ng-zorro-antd/icon";import*as i8 from"@angular/material/slide-toggle";addIcons({chevronBackOutline:chevronBackOutline,folderOutline:folderOutline,cloudDoneOutline:cloudDoneOutline,createOutline:createOutline});export class ArticleEditorTopbarComponent{goBack(){this.navCtrl.back()}navEvent(n){this.onNavEvent.emit(n)}onPublicChange(n){this.article?.set("isPublic",n?.checked),this.article?.save()}presentPopover(n){this.popover.event=n,this.isOpen=!0}constructor(n){this.navCtrl=n,this.contentChanged=!1,this.isSaving=!1,this.onNavEvent=new EventEmitter,this.showCard=!1,this.isOpen=!1,this.showPopover=!1}ngOnInit(){}static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:ArticleEditorTopbarComponent,deps:[{token:i1.NavController}],target:i0.ɵɵFactoryTarget.Component})}static{this.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"17.3.12",type:ArticleEditorTopbarComponent,isStandalone:!0,selector:"fm-article-editor-topbar",inputs:{article:"article",contentChanged:"contentChanged",isSaving:"isSaving"},outputs:{onNavEvent:"onNavEvent"},viewQueries:[{propertyName:"popover",first:!0,predicate:["popover"],descendants:!0}],ngImport:i0,template:'<div class="nav">\n\n<div class="nav-left">\n <div (click)="goBack()">\n <ion-icon class="icon" name="chevron-back-outline"></ion-icon>\n <span>返回上级</span>\n </div>\n <div *ngIf="article?.get(\'chapter\')?.get(\'book\')?.id" (click)="navEvent(\'backmenu\')" style="width:100px;">\n <ion-icon class="icon" name="folder-outline"></ion-icon>\n <span *ngIf="!article?.get(\'chapter\')?.get(\'book\')?.id">返回首页</span>\n <span *ngIf="article?.get(\'chapter\')?.get(\'book\')?.id">打开目录</span>\n </div>\n <div (click)="navEvent(\'save\')">\n <ion-icon *ngIf="!isSaving" class="icon" name="cloud-done-outline"></ion-icon>\n <span *ngIf="isSaving" nz-icon [nzType]="\'sync\'" [nzSpin]="true"></span>\n <span [style.color]="contentChanged?\'red\':\'black\'">保存文章</span> <ion-badge *ngIf="contentChanged">新内容</ion-badge>\n </div>\n</div>\n\n<div class="nav-middle">\n <mat-chip-listbox aria-label="Dog selection">\n <mat-chip (click)="navEvent(\'options\')" [disabled]="!article?.get(\'writingOptions\')">\n \x3c!-- <img matChipAvatar src="https://material.angular.io/assets/img/examples/shiba1.jpg" alt="Photo of a Shiba Inu"/> --\x3e\n 设定\n </mat-chip>\n <mat-chip (click)="navEvent(\'outline\')" [disabled]="!article?.get(\'outlineJson\')">\n \x3c!-- <img matChipAvatar src="https://material.angular.io/assets/img/examples/shiba1.jpg" alt="Photo of a Shiba Inu"/> --\x3e\n 大纲\n </mat-chip>\n <mat-chip (click)="navEvent(\'preview\')" [disabled]="!article?.get(\'contentArray\')?.length">\n \x3c!-- <img matChipAvatar src="https://material.angular.io/assets/img/examples/shiba1.jpg" alt="Photo of a Shiba Inu"/> --\x3e\n 预览\n </mat-chip>\n </mat-chip-listbox>\n \x3c!-- <button>开始</button>\n <button>效率</button>\n <button>审阅</button> --\x3e\n\n</div>\n\n<div class="nav-right">\n\n <mat-slide-toggle [checked]="article?.get(\'isPublic\')" (change)="onPublicChange($event)">公开文章</mat-slide-toggle>\n \x3c!-- <button>登录/注册</button> --\x3e\n \x3c!-- <nz-avatar nzText="USER"></nz-avatar> --\x3e\n \x3c!-- <button class="bubble-card-trigger" (click)="showCard = !showCard">协作</button> --\x3e\n\n <div class="bubble-card" *ngIf="showCard">\n\n <div class="bubble-card-content">\n <div class="bubble-card-tab">\n <div class="invite">邀请协作</div>\n </div>\n <nz-divider></nz-divider>\n\n <div class="search-bar">\n <ion-searchbar class="search-input" style="font-size:14px" color="#ffffff"\n placeholder="输入 用户名 / 邮箱 / 手机号 添加协作权限" font-size="14px"></ion-searchbar>\n </div>\n \x3c!-- 协助者 --\x3e\n <div class="people-manage">\n\n <div class="people-top">协作者</div>\n <nz-divider></nz-divider>\n <div class="people-list">\n <div class="people">\n <div class="people-avatar">\n <nz-avatar nzText="USER"></nz-avatar>\n\n </div>\n <div class="people-name">\n <p>用户名</p>\n </div>\n <div class="people-source">\n <p>2191982744%qq.com</p>\n </div>\n <div class="permission-management">\n <ion-button color="light" (click)="presentPopover($event)">权限管理</ion-button>\n <ion-popover #popover [isOpen]="isOpen" (didDismiss)="isOpen = false">\n <ng-template>\n <ion-list>\n <ion-item>\n <ion-checkbox justify="start">只读</ion-checkbox>\n </ion-item>\n\n <ion-item>\n <ion-checkbox justify="end">可编辑</ion-checkbox>\n </ion-item>\n\n\n </ion-list>\n </ng-template>\n </ion-popover>\n </div>\n </div>\n\n\n\n\n </div>\n </div>\n\n \x3c!-- 协助者End --\x3e\n\n \x3c!-- 管理者 --\x3e\n <div class="people-manage">\n\n <div class="people-top">管理者</div>\n <nz-divider></nz-divider>\n <div class="people-list">\n <div class="people">\n <div class="people-avatar">\n <nz-avatar nzText="USER"></nz-avatar>\n\n </div>\n <div class="people-name">\n <p>用户名</p>\n </div>\n <div class="people-source">\n <p>2191982744%qq.com</p>\n </div>\n <div class="people-position">\n <p>管理员</p>\n </div>\n </div>\n\n\n\n\n </div>\n </div>\n \x3c!-- 管理者End --\x3e\n\n </div>\n </div>\n\n <button mat-button (click)="navEvent(\'toggle-aitool\')">\n <ion-icon style="font-size:20px;margin-bottom:-3px;" class="icon" name="create-outline"></ion-icon>\n <span>AI写作</span>\n </button>\n \x3c!-- <ion-button color="#fafafa" style="font-size: 13px; color:#252525;margin-top: 7px;" mode="ios"\n id="popover-button">分享</ion-button> --\x3e\n <ion-popover trigger="popover-button" [dismissOnSelect]="true">\n <ng-template>\n <ion-content>\n <ion-list>\n <ion-item [button]="true" [detail]="false">下载文档</ion-item>\n <ion-item [button]="true" [detail]="false">删除文档</ion-item>\n <ion-item [button]="true" id="nested-trigger">更多</ion-item>\n\n <ion-popover trigger="nested-trigger" [dismissOnSelect]="true" side="end">\n <ng-template>\n <ion-content>\n <ion-list>\n <ion-item [button]="true" [detail]="false">Nested option</ion-item>\n </ion-list>\n </ion-content>\n </ng-template>\n </ion-popover>\n </ion-list>\n </ion-content>\n </ng-template>\n </ion-popover>\n</div>\n</div>\n',styles:["mat-button{display:felx;justify-content:center;align-items:center}.back-btn{margin-top:3px;width:100px;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center;align-items:center;background-color:transparent}.nav{background-color:#fafafa;display:flex;height:55px;width:100%;z-index:3;justify-content:space-between;align-items:center;box-shadow:0 4px 6px #00000026}.nav .nav-left{display:flex;justify-content:flex-start;align-items:flex-start;width:350px;padding-left:20px}.nav .nav-left div{display:flex;justify-content:center;align-items:center}.nav .nav-left div span{margin-left:5px;display:inline-block;color:#4b4b4b}.nav .nav-middle{display:flex;width:33%;align-items:center;justify-content:center}.nav .nav-middle button{padding:2%;width:33%;background-color:#fafafa;border:none;text-align:center}.nav .nav-right{display:flex;width:33%;height:50%;align-items:center;justify-content:flex-end}.nav .nav-right nz-avatar{cursor:pointer;margin-right:5%}.nav .nav-right ion-list{padding:20px}.nav .nav-right .bubble-card-trigger{position:relative}.nav .nav-right .bubble-card-content{width:35vw;height:55vh;background-color:#fff;position:absolute;right:1vw;top:5vh;z-index:999}.nav .nav-right .bubble-card-content .bubble-card-tab{height:6%;width:100%}.nav .nav-right .bubble-card-content .bubble-card-tab .invite{padding:3% 4%;margin-left:1.2%;font-size:18px;font-weight:700}.nav .nav-right .bubble-card-content .search-bar{width:92%;margin-left:4%;margin-bottom:2%;font-size:14px}.nav .nav-right .bubble-card-content .people-manage{width:100%;height:auto;padding:3% 4%;margin-left:1.2%;font-size:16px}.nav .nav-right .bubble-card-content .people-manage .people-top{height:15%}.nav .nav-right .bubble-card-content .people-manage .people-list .people{display:flex;align-items:center;height:10%;width:92%;cursor:pointer;transition:background-color .3s}.nav .nav-right .bubble-card-content .people-manage .people-list .people .people-avatar{width:10%;height:10%;margin:0% 3%}.nav .nav-right .bubble-card-content .people-manage .people-list .people .people-name{margin-right:4%;margin-top:5%;width:15%;height:1%}.nav .nav-right .bubble-card-content .people-manage .people-list .people .people-source{margin-top:5.5%;width:33%}.nav .nav-right .bubble-card-content .people-manage .people-list .people .people-source p{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nav .nav-right .bubble-card-content .people-manage .people-list .people .permission-management{margin-left:5%}.nav .nav-right .bubble-card-content .people-manage .people-list .people .people-position{margin-left:11%}.nav .nav-right .bubble-card-content .people-manage .people-list .people .people-position p{margin-top:revert}.nav .nav-right .bubble-card-content .people-manage .people-list .people:hover{background-color:#fafafa}.nav .nav-right .bubble-card-content nz-divider{margin:4% 0}\n"],dependencies:[{kind:"ngmodule",type:CommonModule},{kind:"directive",type:i2.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{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:"ngmodule",type:MatChipsModule},{kind:"component",type:i4.MatChip,selector:"mat-basic-chip, [mat-basic-chip], mat-chip, [mat-chip]",inputs:["role","id","aria-label","aria-description","value","color","removable","highlighted","disableRipple","disabled","tabIndex"],outputs:["removed","destroyed"],exportAs:["matChip"]},{kind:"component",type:i4.MatChipListbox,selector:"mat-chip-listbox",inputs:["multiple","aria-orientation","selectable","compareWith","required","hideSingleSelectionIndicator","value"],outputs:["change"]},{kind:"ngmodule",type:IonicModule},{kind:"component",type:i1.IonBadge,selector:"ion-badge",inputs:["color","mode"]},{kind:"component",type:i1.IonButton,selector:"ion-button",inputs:["buttonType","color","disabled","download","expand","fill","form","href","mode","rel","routerAnimation","routerDirection","shape","size","strong","target","type"]},{kind:"component",type:i1.IonCheckbox,selector:"ion-checkbox",inputs:["alignment","checked","color","disabled","errorText","helperText","indeterminate","justify","labelPlacement","mode","name","required","value"]},{kind:"component",type:i1.IonContent,selector:"ion-content",inputs:["color","fixedSlotPlacement","forceOverscroll","fullscreen","scrollEvents","scrollX","scrollY"]},{kind:"component",type:i1.IonIcon,selector:"ion-icon",inputs:["color","flipRtl","icon","ios","lazy","md","mode","name","sanitize","size","src"]},{kind:"component",type:i1.IonItem,selector:"ion-item",inputs:["button","color","detail","detailIcon","disabled","download","href","lines","mode","rel","routerAnimation","routerDirection","target","type"]},{kind:"component",type:i1.IonList,selector:"ion-list",inputs:["inset","lines","mode"]},{kind:"component",type:i1.IonSearchbar,selector:"ion-searchbar",inputs:["animated","autocapitalize","autocomplete","autocorrect","cancelButtonIcon","cancelButtonText","clearIcon","color","debounce","disabled","enterkeyhint","inputmode","maxlength","minlength","mode","name","placeholder","searchIcon","showCancelButton","showClearButton","spellcheck","type","value"]},{kind:"component",type:i1.IonPopover,selector:"ion-popover"},{kind:"directive",type:i1.BooleanValueAccessor,selector:"ion-checkbox,ion-toggle"},{kind:"directive",type:i1.TextValueAccessor,selector:"ion-input:not([type=number]),ion-textarea,ion-searchbar"},{kind:"ngmodule",type:NzAvatarModule},{kind:"component",type:i5.NzAvatarComponent,selector:"nz-avatar",inputs:["nzShape","nzSize","nzGap","nzText","nzSrc","nzSrcSet","nzAlt","nzIcon"],outputs:["nzError"],exportAs:["nzAvatar"]},{kind:"ngmodule",type:NzDividerModule},{kind:"component",type:i6.NzDividerComponent,selector:"nz-divider",inputs:["nzText","nzType","nzOrientation","nzDashed","nzPlain"],exportAs:["nzDivider"]},{kind:"ngmodule",type:NzIconModule},{kind:"directive",type:i7.NzIconDirective,selector:"[nz-icon]",inputs:["nzSpin","nzRotate","nzType","nzTheme","nzTwotoneColor","nzIconfont"],exportAs:["nzIcon"]},{kind:"ngmodule",type:MatSlideToggleModule},{kind:"component",type:i8.MatSlideToggle,selector:"mat-slide-toggle",inputs:["name","id","labelPosition","aria-label","aria-labelledby","aria-describedby","required","color","disabled","disableRipple","tabIndex","checked","hideIcon"],outputs:["change","toggleChange"],exportAs:["matSlideToggle"]}]})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:ArticleEditorTopbarComponent,decorators:[{type:Component,args:[{selector:"fm-article-editor-topbar",standalone:!0,imports:[CommonModule,MatButtonModule,MatChipsModule,IonicModule,NzAvatarModule,NzDividerModule,NzIconModule,MatSlideToggleModule],template:'<div class="nav">\n\n<div class="nav-left">\n <div (click)="goBack()">\n <ion-icon class="icon" name="chevron-back-outline"></ion-icon>\n <span>返回上级</span>\n </div>\n <div *ngIf="article?.get(\'chapter\')?.get(\'book\')?.id" (click)="navEvent(\'backmenu\')" style="width:100px;">\n <ion-icon class="icon" name="folder-outline"></ion-icon>\n <span *ngIf="!article?.get(\'chapter\')?.get(\'book\')?.id">返回首页</span>\n <span *ngIf="article?.get(\'chapter\')?.get(\'book\')?.id">打开目录</span>\n </div>\n <div (click)="navEvent(\'save\')">\n <ion-icon *ngIf="!isSaving" class="icon" name="cloud-done-outline"></ion-icon>\n <span *ngIf="isSaving" nz-icon [nzType]="\'sync\'" [nzSpin]="true"></span>\n <span [style.color]="contentChanged?\'red\':\'black\'">保存文章</span> <ion-badge *ngIf="contentChanged">新内容</ion-badge>\n </div>\n</div>\n\n<div class="nav-middle">\n <mat-chip-listbox aria-label="Dog selection">\n <mat-chip (click)="navEvent(\'options\')" [disabled]="!article?.get(\'writingOptions\')">\n \x3c!-- <img matChipAvatar src="https://material.angular.io/assets/img/examples/shiba1.jpg" alt="Photo of a Shiba Inu"/> --\x3e\n 设定\n </mat-chip>\n <mat-chip (click)="navEvent(\'outline\')" [disabled]="!article?.get(\'outlineJson\')">\n \x3c!-- <img matChipAvatar src="https://material.angular.io/assets/img/examples/shiba1.jpg" alt="Photo of a Shiba Inu"/> --\x3e\n 大纲\n </mat-chip>\n <mat-chip (click)="navEvent(\'preview\')" [disabled]="!article?.get(\'contentArray\')?.length">\n \x3c!-- <img matChipAvatar src="https://material.angular.io/assets/img/examples/shiba1.jpg" alt="Photo of a Shiba Inu"/> --\x3e\n 预览\n </mat-chip>\n </mat-chip-listbox>\n \x3c!-- <button>开始</button>\n <button>效率</button>\n <button>审阅</button> --\x3e\n\n</div>\n\n<div class="nav-right">\n\n <mat-slide-toggle [checked]="article?.get(\'isPublic\')" (change)="onPublicChange($event)">公开文章</mat-slide-toggle>\n \x3c!-- <button>登录/注册</button> --\x3e\n \x3c!-- <nz-avatar nzText="USER"></nz-avatar> --\x3e\n \x3c!-- <button class="bubble-card-trigger" (click)="showCard = !showCard">协作</button> --\x3e\n\n <div class="bubble-card" *ngIf="showCard">\n\n <div class="bubble-card-content">\n <div class="bubble-card-tab">\n <div class="invite">邀请协作</div>\n </div>\n <nz-divider></nz-divider>\n\n <div class="search-bar">\n <ion-searchbar class="search-input" style="font-size:14px" color="#ffffff"\n placeholder="输入 用户名 / 邮箱 / 手机号 添加协作权限" font-size="14px"></ion-searchbar>\n </div>\n \x3c!-- 协助者 --\x3e\n <div class="people-manage">\n\n <div class="people-top">协作者</div>\n <nz-divider></nz-divider>\n <div class="people-list">\n <div class="people">\n <div class="people-avatar">\n <nz-avatar nzText="USER"></nz-avatar>\n\n </div>\n <div class="people-name">\n <p>用户名</p>\n </div>\n <div class="people-source">\n <p>2191982744%qq.com</p>\n </div>\n <div class="permission-management">\n <ion-button color="light" (click)="presentPopover($event)">权限管理</ion-button>\n <ion-popover #popover [isOpen]="isOpen" (didDismiss)="isOpen = false">\n <ng-template>\n <ion-list>\n <ion-item>\n <ion-checkbox justify="start">只读</ion-checkbox>\n </ion-item>\n\n <ion-item>\n <ion-checkbox justify="end">可编辑</ion-checkbox>\n </ion-item>\n\n\n </ion-list>\n </ng-template>\n </ion-popover>\n </div>\n </div>\n\n\n\n\n </div>\n </div>\n\n \x3c!-- 协助者End --\x3e\n\n \x3c!-- 管理者 --\x3e\n <div class="people-manage">\n\n <div class="people-top">管理者</div>\n <nz-divider></nz-divider>\n <div class="people-list">\n <div class="people">\n <div class="people-avatar">\n <nz-avatar nzText="USER"></nz-avatar>\n\n </div>\n <div class="people-name">\n <p>用户名</p>\n </div>\n <div class="people-source">\n <p>2191982744%qq.com</p>\n </div>\n <div class="people-position">\n <p>管理员</p>\n </div>\n </div>\n\n\n\n\n </div>\n </div>\n \x3c!-- 管理者End --\x3e\n\n </div>\n </div>\n\n <button mat-button (click)="navEvent(\'toggle-aitool\')">\n <ion-icon style="font-size:20px;margin-bottom:-3px;" class="icon" name="create-outline"></ion-icon>\n <span>AI写作</span>\n </button>\n \x3c!-- <ion-button color="#fafafa" style="font-size: 13px; color:#252525;margin-top: 7px;" mode="ios"\n id="popover-button">分享</ion-button> --\x3e\n <ion-popover trigger="popover-button" [dismissOnSelect]="true">\n <ng-template>\n <ion-content>\n <ion-list>\n <ion-item [button]="true" [detail]="false">下载文档</ion-item>\n <ion-item [button]="true" [detail]="false">删除文档</ion-item>\n <ion-item [button]="true" id="nested-trigger">更多</ion-item>\n\n <ion-popover trigger="nested-trigger" [dismissOnSelect]="true" side="end">\n <ng-template>\n <ion-content>\n <ion-list>\n <ion-item [button]="true" [detail]="false">Nested option</ion-item>\n </ion-list>\n </ion-content>\n </ng-template>\n </ion-popover>\n </ion-list>\n </ion-content>\n </ng-template>\n </ion-popover>\n</div>\n</div>\n',styles:["mat-button{display:felx;justify-content:center;align-items:center}.back-btn{margin-top:3px;width:100px;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:center;align-items:center;background-color:transparent}.nav{background-color:#fafafa;display:flex;height:55px;width:100%;z-index:3;justify-content:space-between;align-items:center;box-shadow:0 4px 6px #00000026}.nav .nav-left{display:flex;justify-content:flex-start;align-items:flex-start;width:350px;padding-left:20px}.nav .nav-left div{display:flex;justify-content:center;align-items:center}.nav .nav-left div span{margin-left:5px;display:inline-block;color:#4b4b4b}.nav .nav-middle{display:flex;width:33%;align-items:center;justify-content:center}.nav .nav-middle button{padding:2%;width:33%;background-color:#fafafa;border:none;text-align:center}.nav .nav-right{display:flex;width:33%;height:50%;align-items:center;justify-content:flex-end}.nav .nav-right nz-avatar{cursor:pointer;margin-right:5%}.nav .nav-right ion-list{padding:20px}.nav .nav-right .bubble-card-trigger{position:relative}.nav .nav-right .bubble-card-content{width:35vw;height:55vh;background-color:#fff;position:absolute;right:1vw;top:5vh;z-index:999}.nav .nav-right .bubble-card-content .bubble-card-tab{height:6%;width:100%}.nav .nav-right .bubble-card-content .bubble-card-tab .invite{padding:3% 4%;margin-left:1.2%;font-size:18px;font-weight:700}.nav .nav-right .bubble-card-content .search-bar{width:92%;margin-left:4%;margin-bottom:2%;font-size:14px}.nav .nav-right .bubble-card-content .people-manage{width:100%;height:auto;padding:3% 4%;margin-left:1.2%;font-size:16px}.nav .nav-right .bubble-card-content .people-manage .people-top{height:15%}.nav .nav-right .bubble-card-content .people-manage .people-list .people{display:flex;align-items:center;height:10%;width:92%;cursor:pointer;transition:background-color .3s}.nav .nav-right .bubble-card-content .people-manage .people-list .people .people-avatar{width:10%;height:10%;margin:0% 3%}.nav .nav-right .bubble-card-content .people-manage .people-list .people .people-name{margin-right:4%;margin-top:5%;width:15%;height:1%}.nav .nav-right .bubble-card-content .people-manage .people-list .people .people-source{margin-top:5.5%;width:33%}.nav .nav-right .bubble-card-content .people-manage .people-list .people .people-source p{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nav .nav-right .bubble-card-content .people-manage .people-list .people .permission-management{margin-left:5%}.nav .nav-right .bubble-card-content .people-manage .people-list .people .people-position{margin-left:11%}.nav .nav-right .bubble-card-content .people-manage .people-list .people .people-position p{margin-top:revert}.nav .nav-right .bubble-card-content .people-manage .people-list .people:hover{background-color:#fafafa}.nav .nav-right .bubble-card-content nz-divider{margin:4% 0}\n"]}]}],ctorParameters:()=>[{type:i1.NavController}],propDecorators:{popover:[{type:ViewChild,args:["popover"]}],article:[{type:Input}],contentChanged:[{type:Input}],isSaving:[{type:Input}],onNavEvent:[{type:Output}]}});
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi90ZXh0L2ZtLWFydGljbGUtZWRpdG9yL2FydGljbGUtZWRpdG9yLXRvcGJhci9hcnRpY2xlLWVkaXRvci10b3BiYXIuY29tcG9uZW50Lm1qcw==`
|
|
10
|
+
|