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,62 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
constructor(platform, navCtrl) {
|
|
12
|
-
this.platform = platform;
|
|
13
|
-
this.navCtrl = navCtrl;
|
|
14
|
-
this.mobileWidth = 915;
|
|
15
|
-
this.clientWidth = document.body.clientWidth;
|
|
16
|
-
this.clientWidth = document.body.clientWidth;
|
|
17
|
-
this.updateWidth();
|
|
18
|
-
this.onResizeScreen();
|
|
19
|
-
}
|
|
20
|
-
async dismisModalTop(modalCtrl, event) {
|
|
21
|
-
// 尝试获取顶层的模态对话框
|
|
22
|
-
let topModal = await modalCtrl?.getTop();
|
|
23
|
-
if (topModal) {
|
|
24
|
-
event?.preventDefault && event?.preventDefault();
|
|
25
|
-
// 如果存在模态对话框,则关闭它
|
|
26
|
-
topModal.dismiss();
|
|
27
|
-
topModal.isOpen = false;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
updateWidth() {
|
|
31
|
-
this.fixInterval = setInterval(() => {
|
|
32
|
-
if (this.clientWidth) {
|
|
33
|
-
clearInterval(this.fixInterval);
|
|
34
|
-
delete this.fixInterval;
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
console.log(document.body.clientWidth);
|
|
38
|
-
this.clientWidth = document.body.clientWidth;
|
|
39
|
-
}, 200);
|
|
40
|
-
}
|
|
41
|
-
// 监听窗体缩放事件
|
|
42
|
-
onResizeScreen(ev) {
|
|
43
|
-
this.clientWidth = document.body.clientWidth;
|
|
44
|
-
if (this.clientWidth >= this.mobileWidth) {
|
|
45
|
-
this.leftMenuMode = "horizontal";
|
|
46
|
-
this.navMenuType = "pc";
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
this.leftMenuMode = "inline";
|
|
50
|
-
this.navMenuType = "mobile";
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CrossService, deps: [{ token: i1.Platform }, { token: i1.NavController }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
54
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CrossService, providedIn: 'root' }); }
|
|
55
|
-
}
|
|
56
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CrossService, decorators: [{
|
|
57
|
-
type: Injectable,
|
|
58
|
-
args: [{
|
|
59
|
-
providedIn: 'root'
|
|
60
|
-
}]
|
|
61
|
-
}], ctorParameters: () => [{ type: i1.Platform }, { type: i1.NavController }] });
|
|
62
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvc3Muc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Ztb2RlLW5nL3NyYy9saWIvcGxhdGZvcm0vY3Jvc3Muc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUt6RCxNQUFNLE9BQU8sWUFBWTtJQUd2QixXQUFXO1FBQ1QsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUM3QyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUE7UUFDckIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFBO0lBQ3pCLENBQUM7SUFJRCxZQUNVLFFBQWlCLEVBQ2pCLE9BQXFCO1FBRHJCLGFBQVEsR0FBUixRQUFRLENBQVM7UUFDakIsWUFBTyxHQUFQLE9BQU8sQ0FBYztRQVovQixnQkFBVyxHQUFHLEdBQUcsQ0FBQztRQUNsQixnQkFBVyxHQUFVLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBYTdDLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUE7UUFDNUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFBO1FBQ2xCLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQTtJQUN2QixDQUFDO0lBQ0QsS0FBSyxDQUFDLGNBQWMsQ0FBQyxTQUFhLEVBQUMsS0FBWTtRQUM3QyxlQUFlO1FBQ2YsSUFBSSxRQUFRLEdBQUcsTUFBTSxTQUFTLEVBQUUsTUFBTSxFQUFFLENBQUM7UUFDekMsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUNiLEtBQUssRUFBRSxjQUFjLElBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxDQUFBO1lBQzlDLGlCQUFpQjtZQUNqQixRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDbkIsUUFBUSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFDRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUMsR0FBRSxFQUFFO1lBQ2pDLElBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNwQixhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2dCQUNoQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUE7Z0JBQ3ZCLE9BQU07WUFDUixDQUFDO1lBQ0QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1lBQ3RDLElBQUksQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDL0MsQ0FBQyxFQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ1IsQ0FBQztJQUNELFdBQVc7SUFDWCxjQUFjLENBQUMsRUFBRztRQUNoQixJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFBO1FBQzVDLElBQUcsSUFBSSxDQUFDLFdBQVcsSUFBRSxJQUFJLENBQUMsV0FBVyxFQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLFlBQVksR0FBRSxZQUFZLENBQUM7WUFDaEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDMUIsQ0FBQzthQUFJLENBQUM7WUFDSixJQUFJLENBQUMsWUFBWSxHQUFFLFFBQVEsQ0FBQztZQUM1QixJQUFJLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQzsrR0FsRFUsWUFBWTttSEFBWixZQUFZLGNBRlgsTUFBTTs7NEZBRVAsWUFBWTtrQkFIeEIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5hdkNvbnRyb2xsZXIsIFBsYXRmb3JtIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXInO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3Jvc3NTZXJ2aWNlIHtcclxuICBtb2JpbGVXaWR0aCA9IDkxNTtcclxuICBjbGllbnRXaWR0aDpudW1iZXIgPSBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoO1xyXG4gIGdldE1lbnVUeXBlKCl7XHJcbiAgICB0aGlzLmNsaWVudFdpZHRoID0gZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aDtcclxuICAgIHRoaXMub25SZXNpemVTY3JlZW4oKVxyXG4gICAgcmV0dXJuIHRoaXMubmF2TWVudVR5cGVcclxuICB9XHJcbiAgbGVmdE1lbnVNb2RlOnN0cmluZ1xyXG4gIG5hdk1lbnVUeXBlOnN0cmluZ1xyXG4gIGZpeEludGVydmFsOmFueVxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBwbGF0Zm9ybTpQbGF0Zm9ybSxcclxuICAgIHByaXZhdGUgbmF2Q3RybDpOYXZDb250cm9sbGVyLFxyXG4gICl7XHJcbiAgICB0aGlzLmNsaWVudFdpZHRoID0gZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aFxyXG4gICAgdGhpcy51cGRhdGVXaWR0aCgpXHJcbiAgICB0aGlzLm9uUmVzaXplU2NyZWVuKClcclxuICB9XHJcbiAgYXN5bmMgZGlzbWlzTW9kYWxUb3AobW9kYWxDdHJsOmFueSxldmVudD86RXZlbnQpe1xyXG4gICAgLy8g5bCd6K+V6I635Y+W6aG25bGC55qE5qih5oCB5a+56K+d5qGGXHJcbiAgICBsZXQgdG9wTW9kYWwgPSBhd2FpdCBtb2RhbEN0cmw/LmdldFRvcCgpO1xyXG4gICAgaWYgKHRvcE1vZGFsKSB7XHJcbiAgICAgIGV2ZW50Py5wcmV2ZW50RGVmYXVsdCYmZXZlbnQ/LnByZXZlbnREZWZhdWx0KClcclxuICAgICAgLy8g5aaC5p6c5a2Y5Zyo5qih5oCB5a+56K+d5qGG77yM5YiZ5YWz6Zet5a6DXHJcbiAgICAgIHRvcE1vZGFsLmRpc21pc3MoKTtcclxuICAgICAgdG9wTW9kYWwuaXNPcGVuID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHVwZGF0ZVdpZHRoKCl7XHJcbiAgICB0aGlzLmZpeEludGVydmFsID0gc2V0SW50ZXJ2YWwoKCk9PntcclxuICAgICAgaWYodGhpcy5jbGllbnRXaWR0aCkge1xyXG4gICAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5maXhJbnRlcnZhbCk7XHJcbiAgICAgICAgZGVsZXRlIHRoaXMuZml4SW50ZXJ2YWxcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICBjb25zb2xlLmxvZyhkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoKVxyXG4gICAgICB0aGlzLmNsaWVudFdpZHRoID0gZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aDtcclxuICAgIH0sMjAwKVxyXG4gIH1cclxuICAvLyDnm5HlkKznqpfkvZPnvKnmlL7kuovku7ZcclxuICBvblJlc2l6ZVNjcmVlbihldj8pe1xyXG4gICAgdGhpcy5jbGllbnRXaWR0aCA9IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGhcclxuICAgIGlmKHRoaXMuY2xpZW50V2lkdGg+PXRoaXMubW9iaWxlV2lkdGgpe1xyXG4gICAgICB0aGlzLmxlZnRNZW51TW9kZT0gXCJob3Jpem9udGFsXCI7XHJcbiAgICAgIHRoaXMubmF2TWVudVR5cGUgPSBcInBjXCI7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5sZWZ0TWVudU1vZGU9IFwiaW5saW5lXCI7XHJcbiAgICAgIHRoaXMubmF2TWVudVR5cGUgPSBcIm1vYmlsZVwiO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
|
|
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/platform/cross.service.mjs
|
|
7
|
+
*/
|
|
8
|
+
import{Injectable}from"@angular/core";import{NavController,Platform}from"@ionic/angular";import*as i0 from"@angular/core";import*as i1 from"@ionic/angular";export class CrossService{getMenuType(){return this.clientWidth=document.body.clientWidth,this.onResizeScreen(),this.navMenuType}constructor(t,e){this.platform=t,this.navCtrl=e,this.mobileWidth=915,this.clientWidth=document.body.clientWidth,this.clientWidth=document.body.clientWidth,this.updateWidth(),this.onResizeScreen()}async dismisModalTop(t,e){let i=await(t?.getTop());i&&(e?.preventDefault&&e?.preventDefault(),i.dismiss(),i.isOpen=!1)}updateWidth(){this.fixInterval=setInterval((()=>{if(this.clientWidth)return clearInterval(this.fixInterval),void delete this.fixInterval;console.log(document.body.clientWidth),this.clientWidth=document.body.clientWidth}),200)}onResizeScreen(t){this.clientWidth=document.body.clientWidth,this.clientWidth>=this.mobileWidth?(this.leftMenuMode="horizontal",this.navMenuType="pc"):(this.leftMenuMode="inline",this.navMenuType="mobile")}static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:CrossService,deps:[{token:i1.Platform},{token:i1.NavController}],target:i0.ɵɵFactoryTarget.Injectable})}static{this.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:CrossService,providedIn:"root"})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:CrossService,decorators:[{type:Injectable,args:[{providedIn:"root"}]}],ctorParameters:()=>[{type:i1.Platform},{type:i1.NavController}]});
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9wbGF0Zm9ybS9jcm9zcy5zZXJ2aWNlLm1qcw==`
|
|
10
|
+
|
|
@@ -1,2 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* @copyright © 未来飞马 © 未来全栈 www.fmode.cn
|
|
4
|
+
* 版权所有 © 未来飞马 © 江西脑控科技有限公司 Copyright © Fmode Technology Co., Ltd.
|
|
5
|
+
* 保留所有权利 All Rights Reserved.
|
|
6
|
+
* /home/ryan/workspace/nova/nova-admin/dist/fmode-ng/esm2022/lib/platform/index.mjs
|
|
7
|
+
*/
|
|
8
|
+
export*from"./cross.service";
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9wbGF0Zm9ybS9pbmRleC5tanM=`
|
|
10
|
+
|
|
@@ -1,2 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* @copyright © 未来飞马 © 未来全栈 www.fmode.cn
|
|
4
|
+
* 版权所有 © 未来飞马 © 江西脑控科技有限公司 Copyright © Fmode Technology Co., Ltd.
|
|
5
|
+
* 保留所有权利 All Rights Reserved.
|
|
6
|
+
* /home/ryan/workspace/nova/nova-admin/dist/fmode-ng/esm2022/lib/social/index.mjs
|
|
7
|
+
*/
|
|
8
|
+
export*from"./wechat/wechat-jssdk.service";
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9zb2NpYWwvaW5kZXgubWpz`
|
|
10
|
+
|
|
@@ -1,232 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
import { Injectable } from '@angular/core';
|
|
3
|
-
import { AuthService } from '../../user/login/auth.service';
|
|
4
|
-
import Parse from "parse";
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/common/http";
|
|
7
|
-
import * as i2 from "../../user/login/auth.service";
|
|
8
|
-
// 微信JSSDK官方文档:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html
|
|
9
|
-
export class WechatJssdkService {
|
|
10
|
-
constructor(http, authServ) {
|
|
11
|
-
this.http = http;
|
|
12
|
-
this.authServ = authServ;
|
|
13
|
-
this.isInit = false;
|
|
14
|
-
this.isWechat = false; // 服务初始化即判断是否微信浏览器
|
|
15
|
-
this.wechatAccountId = localStorage.getItem("WECHAT_APP_ID"); // 微信公众号ID
|
|
16
|
-
// 检测微信环境
|
|
17
|
-
let ua = navigator.userAgent.toLowerCase();
|
|
18
|
-
let isWechat = ua.indexOf('micromessenger') !== -1;
|
|
19
|
-
this.isWechat = isWechat;
|
|
20
|
-
// 初始化帐套
|
|
21
|
-
this.company = this.authServ.company || localStorage.getItem("company");
|
|
22
|
-
this.wechatAccountId = this.authServ.appId || localStorage.getItem("WECHAT_APP_ID");
|
|
23
|
-
}
|
|
1
|
+
|
|
24
2
|
/**
|
|
25
|
-
*
|
|
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/social/wechat/wechat-jssdk.service.mjs
|
|
26
7
|
*/
|
|
27
|
-
async setCurrentPageShareInfo(
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
link: location.href, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
|
|
31
|
-
type: 'link', //分享类型,music、video或link,不填默认为link
|
|
32
|
-
imgUrl: 'https://file-cloud.fmode.cn/E4KpGvTEto/20230822/3mkf41033623275.png', // 分享图标
|
|
33
|
-
success: () => {
|
|
34
|
-
// 设置成功
|
|
35
|
-
console.log('分享成功');
|
|
36
|
-
},
|
|
37
|
-
error: () => {
|
|
38
|
-
console.log('分享失败');
|
|
39
|
-
},
|
|
40
|
-
cancel: () => {
|
|
41
|
-
console.log('取消分享');
|
|
42
|
-
}
|
|
43
|
-
}) {
|
|
44
|
-
const signPackage = await this.getWXSignPackageInWechat();
|
|
45
|
-
wx.config({
|
|
46
|
-
debug: false, // 开启调试模式
|
|
47
|
-
appId: signPackage.appid, // 必填,公众号的唯一标识
|
|
48
|
-
timestamp: signPackage.timestamp, // 必填,生成签名的时间戳
|
|
49
|
-
nonceStr: signPackage.nonceStr, // 必填,生成签名的随机串
|
|
50
|
-
signature: signPackage.signature, // 必填,签名,见附录1
|
|
51
|
-
jsApiList: [
|
|
52
|
-
"chooseWXPay", // JSAPI微信支付
|
|
53
|
-
'onMenuShareTimeline', //分享到微信朋友圈
|
|
54
|
-
'onMenuShareAppMessage', //分享给微信朋友
|
|
55
|
-
'onMenuShareQQ', //分享到QQ
|
|
56
|
-
'onMenuShareQZone', //分享到QQ空间
|
|
57
|
-
'updateAppMessageShareData', //分享到微信及QQ(新接口)
|
|
58
|
-
'updateTimelineShareData' //分享到朋友圈”及“分享到QQ空间(新接口
|
|
59
|
-
], // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
|
|
60
|
-
});
|
|
61
|
-
if (shareInfo?.type == "link") {
|
|
62
|
-
// 判断是否有参数
|
|
63
|
-
shareInfo.link = this.getInviteUrl(shareInfo.link);
|
|
64
|
-
}
|
|
65
|
-
wx.ready(() => {
|
|
66
|
-
wx.updateAppMessageShareData(shareInfo); //分享到微信好友或者qq好友
|
|
67
|
-
wx.updateTimelineShareData(shareInfo); //分享到朋友圈或者qq空间
|
|
68
|
-
});
|
|
69
|
-
wx.error(() => { });
|
|
70
|
-
}
|
|
71
|
-
getInviteUrl(url) {
|
|
72
|
-
let u = new URL(url);
|
|
73
|
-
let id = Parse.User?.current()?.id;
|
|
74
|
-
if (id) {
|
|
75
|
-
u.searchParams.set("invite", id);
|
|
76
|
-
}
|
|
77
|
-
return u.href;
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* 当前页面获取微信授权签名
|
|
81
|
-
*/
|
|
82
|
-
/* 获取微信签名 */
|
|
83
|
-
getWXSignPackageInWechat() {
|
|
84
|
-
let params = {
|
|
85
|
-
company: this.company,
|
|
86
|
-
// href: encodeURIComponent(location.href.split("?")[0]),
|
|
87
|
-
href: encodeURIComponent(location.href),
|
|
88
|
-
};
|
|
89
|
-
return new Promise(resolve => {
|
|
90
|
-
this.http
|
|
91
|
-
.post(`https://server.fmode.cn/api/wechat/getconfig`, params)
|
|
92
|
-
.subscribe((response) => {
|
|
93
|
-
// 返回的签名信息
|
|
94
|
-
let res = response;
|
|
95
|
-
let signPackage = res.data;
|
|
96
|
-
resolve(signPackage);
|
|
97
|
-
});
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
/** 微信用户初始化
|
|
101
|
-
* @desc 为当前已登录用户,获取微信授权openid信息
|
|
102
|
-
*/
|
|
103
|
-
/* 如果是微信内置浏览器,初始化用户openid信息,获取登录code */
|
|
104
|
-
async initUserOpenid() {
|
|
105
|
-
await this.init();
|
|
106
|
-
if (!this.wechatAccountId)
|
|
107
|
-
return alert("appId不存在,请先配置");
|
|
108
|
-
let code = this.getQueryStringByName("code");
|
|
109
|
-
let openid = localStorage.getItem("openid");
|
|
110
|
-
if (!openid) {
|
|
111
|
-
if (!Parse.User.current())
|
|
112
|
-
return;
|
|
113
|
-
openid = Parse?.User?.current()?.get("wechat")?.[this.wechatAccountId]?.openid;
|
|
114
|
-
if (this.isWechat && !openid) { // 不存在则获取
|
|
115
|
-
let pathname = window.location.pathname;
|
|
116
|
-
if (!code) {
|
|
117
|
-
this.authWechat(pathname);
|
|
118
|
-
}
|
|
119
|
-
else {
|
|
120
|
-
await this.getwechat(code, pathname);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
else {
|
|
124
|
-
this.openid = openid; // 存在则加载
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
authWechat(url = window.location.pathname) {
|
|
129
|
-
if (!localStorage.getItem("openid")) {
|
|
130
|
-
let origin = window.location.origin;
|
|
131
|
-
let REDIRECT_URI = origin + url;
|
|
132
|
-
REDIRECT_URI = encodeURIComponent(REDIRECT_URI);
|
|
133
|
-
// console.log(REDIRECT_URI);
|
|
134
|
-
// console.log(
|
|
135
|
-
// "https://open.weixin.qq.com/connect/oauth2/authorize?appid=" +
|
|
136
|
-
// this.wechatAccountId +
|
|
137
|
-
// "&redirect_uri=" +
|
|
138
|
-
// REDIRECT_URI +
|
|
139
|
-
// "&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect"
|
|
140
|
-
// );
|
|
141
|
-
window.location.href =
|
|
142
|
-
"https://open.weixin.qq.com/connect/oauth2/authorize?appid=" +
|
|
143
|
-
this.wechatAccountId +
|
|
144
|
-
"&redirect_uri=" +
|
|
145
|
-
REDIRECT_URI +
|
|
146
|
-
"&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect";
|
|
147
|
-
return;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
//根据QueryString参数名称获取值
|
|
151
|
-
getQueryStringByName(name) {
|
|
152
|
-
let result = location.search.match(new RegExp("[?&]" + name + "=([^&]+)", "i"));
|
|
153
|
-
if (result == null || result.length < 1) {
|
|
154
|
-
return "";
|
|
155
|
-
}
|
|
156
|
-
return result[1];
|
|
157
|
-
}
|
|
158
|
-
async getwechat(code, url = "/account/billing") {
|
|
159
|
-
return new Promise(async (resolve, reject) => {
|
|
160
|
-
this.http
|
|
161
|
-
.post(`https://server.fmode.cn/api/wechat/get_wx`, {
|
|
162
|
-
company: this.company,
|
|
163
|
-
code: code,
|
|
164
|
-
})
|
|
165
|
-
.subscribe(async (res) => {
|
|
166
|
-
console.log(res);
|
|
167
|
-
if (res && res.code == 200 && res.data.openid) {
|
|
168
|
-
let openid = res.data.openid;
|
|
169
|
-
// localStorage.setItem('authData', JSON.stringify(res.data))
|
|
170
|
-
localStorage.setItem("openid", openid);
|
|
171
|
-
localStorage.removeItem("code");
|
|
172
|
-
let userWechat = {};
|
|
173
|
-
userWechat[this.wechatAccountId] = { "openid": openid };
|
|
174
|
-
Parse.User.current().set("wechat", userWechat);
|
|
175
|
-
await Parse.User.current().save();
|
|
176
|
-
resolve(true);
|
|
177
|
-
}
|
|
178
|
-
}, async (err) => {
|
|
179
|
-
console.log("Error updating items", err);
|
|
180
|
-
this.authWechat(url);
|
|
181
|
-
reject(false);
|
|
182
|
-
});
|
|
183
|
-
});
|
|
184
|
-
}
|
|
185
|
-
/** 微信环境初始化 */
|
|
186
|
-
init() {
|
|
187
|
-
return new Promise(resolve => {
|
|
188
|
-
if (!this.isWechat)
|
|
189
|
-
resolve(false); // 非微信环境无需加载
|
|
190
|
-
if (this.isInit)
|
|
191
|
-
resolve(true); // ts函数 已初始化无需重复加载
|
|
192
|
-
if (wx)
|
|
193
|
-
resolve(true); // index.html 已加载无需重复加载
|
|
194
|
-
// 调用函数加载指定脚本文件
|
|
195
|
-
this.loadScript('https://res.wx.qq.com/open/js/jweixin-1.6.0.js', () => {
|
|
196
|
-
// 在脚本加载完成后执行的操作
|
|
197
|
-
this.isInit = true;
|
|
198
|
-
this.wx = wx;
|
|
199
|
-
// 在这里可以使用加载的脚本
|
|
200
|
-
resolve(true);
|
|
201
|
-
}, () => {
|
|
202
|
-
resolve(false);
|
|
203
|
-
});
|
|
204
|
-
});
|
|
205
|
-
}
|
|
206
|
-
loadScript(url, callback, errCallback) {
|
|
207
|
-
var script = document.createElement('script');
|
|
208
|
-
script.src = url;
|
|
209
|
-
// 脚本加载完成后的回调函数
|
|
210
|
-
script.onload = () => {
|
|
211
|
-
if (callback) {
|
|
212
|
-
callback();
|
|
213
|
-
}
|
|
214
|
-
};
|
|
215
|
-
script.onerror = () => {
|
|
216
|
-
if (errCallback) {
|
|
217
|
-
errCallback();
|
|
218
|
-
}
|
|
219
|
-
};
|
|
220
|
-
// 将脚本添加到页面中
|
|
221
|
-
document.body.appendChild(script);
|
|
222
|
-
}
|
|
223
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WechatJssdkService, deps: [{ token: i1.HttpClient }, { token: i2.AuthService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
224
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WechatJssdkService, providedIn: 'root' }); }
|
|
225
|
-
}
|
|
226
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WechatJssdkService, decorators: [{
|
|
227
|
-
type: Injectable,
|
|
228
|
-
args: [{
|
|
229
|
-
providedIn: 'root'
|
|
230
|
-
}]
|
|
231
|
-
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.AuthService }] });
|
|
232
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2VjaGF0LWpzc2RrLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mbW9kZS1uZy9zcmMvbGliL3NvY2lhbC93ZWNoYXQvd2VjaGF0LWpzc2RrLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzVELE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQzs7OztBQUcxQix1RkFBdUY7QUFLdkYsTUFBTSxPQUFPLGtCQUFrQjtJQVM3QixZQUNVLElBQWUsRUFDZixRQUFxQjtRQURyQixTQUFJLEdBQUosSUFBSSxDQUFXO1FBQ2YsYUFBUSxHQUFSLFFBQVEsQ0FBYTtRQVQvQixXQUFNLEdBQVcsS0FBSyxDQUFDO1FBQ3ZCLGFBQVEsR0FBVyxLQUFLLENBQUMsQ0FBQyxrQkFBa0I7UUFHNUMsb0JBQWUsR0FBVSxZQUFZLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFBLENBQUMsVUFBVTtRQU9yRSxTQUFTO1FBQ1QsSUFBSSxFQUFFLEdBQUcsU0FBUyxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMzQyxJQUFJLFFBQVEsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUE7UUFDeEIsUUFBUTtRQUNSLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxRQUFRLENB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QUFhLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDOUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7UUFDakIsZUFBZTtRQUNmLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFO1lBQ25CLElBQUksUUFBUSxFQUFFLENBQUM7Z0JBQ2IsUUFBUSxFQUFFLENBQUM7WUFDYixDQUFDO1FBQ0gsQ0FBQyxDQUFDO1FBQ0YsTUFBTSxDQUFDLE9BQU8sR0FBRyxHQUFFLEVBQUU7WUFDbkIsSUFBRyxXQUFXLEVBQUMsQ0FBQztnQkFDZCxXQUFXLEVBQUUsQ0FBQztZQUNoQixDQUFDO1FBQ0gsQ0FBQyxDQUFBO1FBQ0QsWUFBWTtRQUNaLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7K0dBbk9VLGtCQUFrQjttSEFBbEIsa0JBQWtCLGNBRmpCLE1BQU07OzRGQUVQLGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vdXNlci9sb2dpbi9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgUGFyc2UgZnJvbSBcInBhcnNlXCI7XHJcbmRlY2xhcmUgdmFyIHd4OiBhbnk7XHJcblxyXG4vLyDlvq7kv6FKU1NES+WumOaWueaWh+aho++8mmh0dHBzOi8vZGV2ZWxvcGVycy53ZWl4aW4ucXEuY29tL2RvYy9vZmZpYWNjb3VudC9PQV9XZWJfQXBwcy9KUy1TREsuaHRtbFxyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgV2VjaGF0SnNzZGtTZXJ2aWNlIHtcclxuXHJcbiAgaXNJbml0OmJvb2xlYW4gPSBmYWxzZTtcclxuICBpc1dlY2hhdDpib29sZWFuID0gZmFsc2U7IC8vIOacjeWKoeWIneWni+WMluWNs+WIpOaWreaYr+WQpuW+ruS/oea1j+iniOWZqFxyXG4gIHd4OmFueVxyXG4gIGNvbXBhbnk6c3RyaW5nXHJcbiAgd2VjaGF0QWNjb3VudElkOnN0cmluZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiV0VDSEFUX0FQUF9JRFwiKSAvLyDlvq7kv6HlhazkvJflj7dJRFxyXG4gIG9wZW5pZDpzdHJpbmdcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGh0dHA6SHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgYXV0aFNlcnY6IEF1dGhTZXJ2aWNlLFxyXG4gICAgKSB7IFxyXG4gICAgICAvLyDmo4DmtYvlvq7kv6Hnjq/looNcclxuICAgICAgbGV0IHVhID0gbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICBsZXQgaXNXZWNoYXQgPSB1YS5pbmRleE9mKCdtaWNyb21lc3NlbmdlcicpICE9PSAtMTtcclxuICAgICAgdGhpcy5pc1dlY2hhdCA9IGlzV2VjaGF0XHJcbiAgICAgIC8vIOWIneWni+WMluW4kOWll1xyXG4gICAgICB0aGlzLmNvbXBhbnkgPSB0aGlzLmF1dGhTZXJ2LmNvbXBhbnkgfHwgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjb21wYW55XCIpO1xyXG4gICAgICB0aGlzLndlY2hhdEFjY291bnRJZCA9IHRoaXMuYXV0aFNlcnYuYXBwSWQgfHwgbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJXRUNIQVRfQVBQX0lEXCIpXHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIOmFjee9ruW9k+WJjemhtemdouWIhuS6q+WPguaVsFxyXG4gICAqL1xyXG5cclxuICBhc3luYyBzZXRDdXJyZW50UGFnZVNoYXJlSW5mbyhzaGFyZUluZm89e1xyXG4gICAgdGl0bGU6ICfpo57noIFBSScsIC8vIOWIhuS6q+agh+mimFxyXG4gICAgZGVzYzogJ+ino+aUvuWIm+aEj+W8lemihuacquadpXzlm73pmYXliY3msr/nmoRBSUdD5bmz5Y+wJywgLy8g5YiG5Lqr5o+P6L+wXHJcbiAgICBsaW5rOiBsb2NhdGlvbi5ocmVmLCAvLyDliIbkuqvpk77mjqXvvIzor6Xpk77mjqXln5/lkI3miJbot6/lvoTlv4XpobvkuI7lvZPliY3pobXpnaLlr7nlupTnmoTlhazkvJflj7dKU+WuieWFqOWfn+WQjeS4gOiHtFxyXG4gICAgdHlwZTogJ2xpbmsnLCAvL+WIhuS6q+exu+WeiyxtdXNpY+OAgXZpZGVv5oiWbGlua++8jOS4jeWhq+m7mOiupOS4umxpbmtcclxuICAgIGltZ1VybDogJ2h0dHBzOi8vZmlsZS1jbG91ZC5mbW9kZS5jbi9FNEtwR3ZURXRvLzIwMjMwODIyLzNta2Y0MTAzMzYyMzI3NS5wbmcnLCAvLyDliIbkuqvlm77moIdcclxuICAgIHN1Y2Nlc3M6ICgpID0+IHtcclxuICAgICAgLy8g6K6+572u5oiQ5YqfXHJcbiAgICAgIGNvbnNvbGUubG9nKCfliIbkuqvmiJDlip8nKTtcclxuICAgIH0sXHJcbiAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICBjb25zb2xlLmxvZygn5YiG5Lqr5aSx6LSlJyk7XHJcbiAgICB9LFxyXG4gICAgY2FuY2VsOiAoKSA9PiB7XHJcbiAgICAgIGNvbnNvbGUubG9nKCflj5bmtojliIbkuqsnKTtcclxuICAgIH1cclxuICB9KXtcclxuICAgIGNvbnN0IHNpZ25QYWNrYWdlID0gYXdhaXQgdGhpcy5nZXRXWFNpZ25QYWNrYWdlSW5XZWNoYXQoKVxyXG5cclxuICAgIHd4LmNvbmZpZyh7XHJcbiAgICAgIGRlYnVnOiBmYWxzZSwgLy8g5byA5ZCv6LCD6K+V5qih5byPXHJcbiAgICAgIGFwcElkOiBzaWduUGFja2FnZS5hcHBpZCwgLy8g5b+F5aGr77yM5YWs5LyX5Y+355qE5ZSv5LiA5qCH6K+GXHJcbiAgICAgIHRpbWVzdGFtcDogc2lnblBhY2thZ2UudGltZXN0YW1wLCAvLyDlv4XloavvvIznlJ/miJDnrb7lkI3nmoTml7bpl7TmiLNcclxuICAgICAgbm9uY2VTdHI6IHNpZ25QYWNrYWdlLm5vbmNlU3RyLCAvLyDlv4XloavvvIznlJ/miJDnrb7lkI3nmoTpmo/mnLrkuLJcclxuICAgICAgc2lnbmF0dXJlOiBzaWduUGFja2FnZS5zaWduYXR1cmUsIC8vIOW/heWhq++8jOetvuWQje+8jOingemZhOW9lTFcclxuICAgICAganNBcGlMaXN0OiBbXHJcbiAgICAgICAgXCJjaG9vc2VXWFBheVwiLCAvLyBKU0FQSeW+ruS/oeaUr+S7mFxyXG4gICAgICAgICdvbk1lbnVTaGFyZVRpbWVsaW5lJywgLy/liIbkuqvliLDlvq7kv6HmnIvlj4vlnIhcclxuICAgICAgICAnb25NZW51U2hhcmVBcHBNZXNzYWdlJywgLy/liIbkuqvnu5nlvq7kv6HmnIvlj4tcclxuICAgICAgICAnb25NZW51U2hhcmVRUScsIC8v5YiG5Lqr5YiwUVFcclxuICAgICAgICAnb25NZW51U2hhcmVRWm9uZScsIC8v5YiG5Lqr5YiwUVHnqbrpl7RcclxuICAgICAgICAndXBkYXRlQXBwTWVzc2FnZVNoYXJlRGF0YScsIC8v5YiG5Lqr5Yiw5b6u5L+h5Y+KUVHvvIjmlrDmjqXlj6PvvIlcclxuICAgICAgICAndXBkYXRlVGltZWxpbmVTaGFyZURhdGEnIC8v5YiG5Lqr5Yiw5pyL5Y+L5ZyI4oCd5Y+K4oCc5YiG5Lqr5YiwUVHnqbrpl7TvvIjmlrDmjqXlj6NcclxuICAgICAgXSwgLy8g5b+F5aGr77yM6ZyA6KaB5L2/55So55qESlPmjqXlj6PliJfooajvvIzmiYDmnIlKU+aOpeWPo+WIl+ihqOingemZhOW9lTJcclxuICAgIH0pO1xyXG4gICAgXHJcbiAgICBpZihzaGFyZUluZm8/LnR5cGU9PVwibGlua1wiKXtcclxuICAgICAgLy8g5Yik5pat5piv5ZCm5pyJ5Y+C5pWwXHJcbiAgICAgIHNoYXJlSW5mby5saW5rID0gdGhpcy5nZXRJbnZpdGVVcmwoc2hhcmVJbmZvLmxpbmspXHJcbiAgICB9XHJcblxyXG4gICAgd3gucmVhZHkoKCkgPT4ge1xyXG4gICAgICB3eC51cGRhdGVBcHBNZXNzYWdlU2hhcmVEYXRhKHNoYXJlSW5mbyk7IC8v5YiG5Lqr5Yiw5b6u5L+h5aW95Y+L5oiW6ICFcXHlpb3lj4tcclxuICAgICAgd3gudXBkYXRlVGltZWxpbmVTaGFyZURhdGEoc2hhcmVJbmZvKTsgLy/liIbkuqvliLDmnIvlj4vlnIjmiJbogIVxceepuumXtFxyXG4gICAgfSk7XHJcbiAgICB3eC5lcnJvcigoKSA9PiB7fSk7XHJcbiAgfVxyXG4gIGdldEludml0ZVVybCh1cmwpe1xyXG4gICAgbGV0IHUgPSBuZXcgVVJMKHVybCk7XHJcbiAgICBsZXQgaWQgPSBQYXJzZS5Vc2VyPy5jdXJyZW50KCk/LmlkXHJcbiAgICBpZihpZCl7XHJcbiAgICAgIHUuc2VhcmNoUGFyYW1zLnNldChcImludml0ZVwiLGlkKVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHUuaHJlZlxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5b2T5YmN6aG16Z2i6I635Y+W5b6u5L+h5o6I5p2D562+5ZCNXHJcbiAgICovXHJcbiAgLyog6I635Y+W5b6u5L+h562+5ZCNICovXHJcbiAgZ2V0V1hTaWduUGFja2FnZUluV2VjaGF0KCk6UHJvbWlzZTxhbnk+e1xyXG4gICAgbGV0IHBhcmFtcyA9IHtcclxuICAgICAgY29tcGFueTogdGhpcy5jb21wYW55LFxyXG4gICAgICAvLyBocmVmOiBlbmNvZGVVUklDb21wb25lbnQobG9jYXRpb24uaHJlZi5zcGxpdChcIj9cIilbMF0pLFxyXG4gICAgICBocmVmOiBlbmNvZGVVUklDb21wb25lbnQobG9jYXRpb24uaHJlZiksXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmU9PntcclxuICAgICAgdGhpcy5odHRwXHJcbiAgICAgIC5wb3N0KGBodHRwczovL3NlcnZlci5mbW9kZS5jbi9hcGkvd2VjaGF0L2dldGNvbmZpZ2AsIHBhcmFtcylcclxuICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAvLyDov5Tlm57nmoTnrb7lkI3kv6Hmga9cclxuICAgICAgICBsZXQgcmVzOiBhbnkgPSByZXNwb25zZTtcclxuICAgICAgICBsZXQgc2lnblBhY2thZ2UgPSByZXMuZGF0YTtcclxuICAgICAgICByZXNvbHZlKHNpZ25QYWNrYWdlKVxyXG4gICAgICB9KTtcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICAvKiog5b6u5L+h55So5oi35Yid5aeL5YyWIFxyXG4gICAqIEBkZXNjIOS4uuW9k+WJjeW3sueZu+W9leeUqOaIt++8jOiOt+WPluW+ruS/oeaOiOadg29wZW5pZOS/oeaBr1xyXG4gICovXHJcbiAgLyog5aaC5p6c5piv5b6u5L+h5YaF572u5rWP6KeI5Zmo77yM5Yid5aeL5YyW55So5oi3b3Blbmlk5L+h5oGv77yM6I635Y+W55m75b2VY29kZSAqL1xyXG4gIGFzeW5jIGluaXRVc2VyT3BlbmlkKCkge1xyXG4gICAgYXdhaXQgdGhpcy5pbml0KClcclxuICAgIGlmKCF0aGlzLndlY2hhdEFjY291bnRJZCkgcmV0dXJuIGFsZXJ0KFwiYXBwSWTkuI3lrZjlnKjvvIzor7flhYjphY3nva5cIilcclxuICAgIGxldCBjb2RlID0gdGhpcy5nZXRRdWVyeVN0cmluZ0J5TmFtZShcImNvZGVcIik7XHJcbiAgICBsZXQgb3BlbmlkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJvcGVuaWRcIik7XHJcbiAgICBpZiAoIW9wZW5pZCkge1xyXG4gICAgICBpZighUGFyc2UuVXNlci5jdXJyZW50KCkpIHJldHVyblxyXG4gICAgICBvcGVuaWQgPSBQYXJzZT8uVXNlcj8uY3VycmVudCgpPy5nZXQoXCJ3ZWNoYXRcIik/Llt0aGlzLndlY2hhdEFjY291bnRJZF0/Lm9wZW5pZDtcclxuICAgICAgaWYgKHRoaXMuaXNXZWNoYXQgJiYgIW9wZW5pZCkgeyAvLyDkuI3lrZjlnKjliJnojrflj5ZcclxuICAgICAgICBsZXQgcGF0aG5hbWUgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWVcclxuICAgICAgICBpZiAoIWNvZGUpIHtcclxuICAgICAgICAgIHRoaXMuYXV0aFdlY2hhdChwYXRobmFtZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGF3YWl0IHRoaXMuZ2V0d2VjaGF0KGNvZGUscGF0aG5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgdGhpcy5vcGVuaWQgPSBvcGVuaWQgLy8g5a2Y5Zyo5YiZ5Yqg6L29XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgYXV0aFdlY2hhdCh1cmw6IHN0cmluZyA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSkge1xyXG4gICAgaWYgKCFsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcIm9wZW5pZFwiKSkge1xyXG4gICAgICBsZXQgb3JpZ2luID0gd2luZG93LmxvY2F0aW9uLm9yaWdpbjtcclxuICAgICAgbGV0IFJFRElSRUNUX1VSSSA9IG9yaWdpbiArIHVybDtcclxuICAgICAgUkVESVJFQ1RfVVJJID0gZW5jb2RlVVJJQ29tcG9uZW50KFJFRElSRUNUX1VSSSk7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKFJFRElSRUNUX1VSSSk7XHJcbiAgICAgIC8vIGNvbnNvbGUubG9nKFxyXG4gICAgICAvLyAgIFwiaHR0cHM6Ly9vcGVuLndlaXhpbi5xcS5jb20vY29ubmVjdC9vYXV0aDIvYXV0aG9yaXplP2FwcGlkPVwiICtcclxuICAgICAgLy8gICAgIHRoaXMud2VjaGF0QWNjb3VudElkICtcclxuICAgICAgLy8gICAgIFwiJnJlZGlyZWN0X3VyaT1cIiArXHJcbiAgICAgIC8vICAgICBSRURJUkVDVF9VUkkgK1xyXG4gICAgICAvLyAgICAgXCImcmVzcG9uc2VfdHlwZT1jb2RlJnNjb3BlPXNuc2FwaV9iYXNlJnN0YXRlPVNUQVRFI3dlY2hhdF9yZWRpcmVjdFwiXHJcbiAgICAgIC8vICk7XHJcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID1cclxuICAgICAgICBcImh0dHBzOi8vb3Blbi53ZWl4aW4ucXEuY29tL2Nvbm5lY3Qvb2F1dGgyL2F1dGhvcml6ZT9hcHBpZD1cIiArXHJcbiAgICAgICAgdGhpcy53ZWNoYXRBY2NvdW50SWQgK1xyXG4gICAgICAgIFwiJnJlZGlyZWN0X3VyaT1cIiArXHJcbiAgICAgICAgUkVESVJFQ1RfVVJJICtcclxuICAgICAgICBcIiZyZXNwb25zZV90eXBlPWNvZGUmc2NvcGU9c25zYXBpX3VzZXJpbmZvJnN0YXRlPVNUQVRFI3dlY2hhdF9yZWRpcmVjdFwiO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8v5qC55o2uUXVlcnlTdHJpbmflj4LmlbDlkI3np7Dojrflj5blgLxcclxuICBnZXRRdWVyeVN0cmluZ0J5TmFtZShuYW1lOiBzdHJpbmcpIHtcclxuICAgIGxldCByZXN1bHQgPSBsb2NhdGlvbi5zZWFyY2gubWF0Y2goXHJcbiAgICAgIG5ldyBSZWdFeHAoXCJbPyZdXCIgKyBuYW1lICsgXCI9KFteJl0rKVwiLCBcImlcIilcclxuICAgICk7XHJcbiAgICBpZiAocmVzdWx0ID09IG51bGwgfHwgcmVzdWx0Lmxlbmd0aCA8IDEpIHtcclxuICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0WzFdO1xyXG4gIH1cclxuICBhc3luYyBnZXR3ZWNoYXQoXHJcbiAgICBjb2RlOiBzdHJpbmcsXHJcbiAgICB1cmw6IHN0cmluZyA9IFwiL2FjY291bnQvYmlsbGluZ1wiXHJcbiAgKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICB0aGlzLmh0dHBcclxuICAgICAgICAucG9zdChgaHR0cHM6Ly9zZXJ2ZXIuZm1vZGUuY24vYXBpL3dlY2hhdC9nZXRfd3hgLCB7XHJcbiAgICAgICAgICBjb21wYW55OiB0aGlzLmNvbXBhbnksXHJcbiAgICAgICAgICBjb2RlOiBjb2RlLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgIGFzeW5jIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhyZXMpO1xyXG4gICAgICAgICAgICBpZiAocmVzICYmIHJlcy5jb2RlID09IDIwMCAmJiByZXMuZGF0YS5vcGVuaWQpIHtcclxuICAgICAgICAgICAgICBsZXQgb3BlbmlkID0gcmVzLmRhdGEub3BlbmlkO1xyXG4gICAgICAgICAgICAgIC8vIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdhdXRoRGF0YScsIEpTT04uc3RyaW5naWZ5KHJlcy5kYXRhKSlcclxuICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcIm9wZW5pZFwiLCBvcGVuaWQpO1xyXG4gICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFwiY29kZVwiKTtcclxuICAgICAgICAgICAgICBsZXQgdXNlcldlY2hhdCA9IHt9XHJcbiAgICAgICAgICAgICAgdXNlcldlY2hhdFt0aGlzLndlY2hhdEFjY291bnRJZF0gPSB7XCJvcGVuaWRcIjogb3BlbmlkfVxyXG4gICAgICAgICAgICAgIFBhcnNlLlVzZXIuY3VycmVudCgpLnNldChcIndlY2hhdFwiLCB1c2VyV2VjaGF0KTtcclxuICAgICAgICAgICAgICBhd2FpdCBQYXJzZS5Vc2VyLmN1cnJlbnQoKS5zYXZlKCk7XHJcbiAgICAgICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGFzeW5jIChlcnIpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJFcnJvciB1cGRhdGluZyBpdGVtc1wiLCBlcnIpO1xyXG4gICAgICAgICAgICB0aGlzLmF1dGhXZWNoYXQodXJsKTtcclxuICAgICAgICAgICAgcmVqZWN0KGZhbHNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKiog5b6u5L+h546v5aKD5Yid5aeL5YyWICovXHJcbiAgaW5pdCgpOlByb21pc2U8Ym9vbGVhbj57XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZT0+e1xyXG4gICAgICAgIGlmKCF0aGlzLmlzV2VjaGF0KSByZXNvbHZlKGZhbHNlKSAvLyDpnZ7lvq7kv6Hnjq/looPml6DpnIDliqDovb1cclxuICAgICAgICBpZih0aGlzLmlzSW5pdCkgcmVzb2x2ZSh0cnVlKSAvLyB0c+WHveaVsCDlt7LliJ3lp4vljJbml6DpnIDph43lpI3liqDovb1cclxuICAgICAgICBpZih3eCkgcmVzb2x2ZSh0cnVlKSAvLyBpbmRleC5odG1sIOW3suWKoOi9veaXoOmcgOmHjeWkjeWKoOi9vVxyXG4gICAgICAgIC8vIOiwg+eUqOWHveaVsOWKoOi9veaMh+WumuiEmuacrOaWh+S7tlxyXG4gICAgICAgIHRoaXMubG9hZFNjcmlwdCgnaHR0cHM6Ly9yZXMud3gucXEuY29tL29wZW4vanMvandlaXhpbi0xLjYuMC5qcycsICgpID0+IHtcclxuICAgICAgICAgIC8vIOWcqOiEmuacrOWKoOi9veWujOaIkOWQjuaJp+ihjOeahOaTjeS9nFxyXG4gICAgICAgICAgdGhpcy5pc0luaXQgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy53eCA9IHd4O1xyXG4gICAgICAgICAgLy8g5Zyo6L+Z6YeM5Y+v5Lul5L2/55So5Yqg6L2955qE6ISa5pysXHJcbiAgICAgICAgICByZXNvbHZlKHRydWUpXHJcbiAgICAgICAgfSwoKT0+e1xyXG4gICAgICAgICAgcmVzb2x2ZShmYWxzZSlcclxuICAgICAgICB9KTtcclxuICAgICAgfSlcclxuICB9XHJcbiAgbG9hZFNjcmlwdCh1cmwsIGNhbGxiYWNrLGVyckNhbGxiYWNrKSB7XHJcbiAgICB2YXIgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XHJcbiAgICBzY3JpcHQuc3JjID0gdXJsO1xyXG4gICAgLy8g6ISa5pys5Yqg6L295a6M5oiQ5ZCO55qE5Zue6LCD5Ye95pWwXHJcbiAgICBzY3JpcHQub25sb2FkID0gKCkgPT4ge1xyXG4gICAgICBpZiAoY2FsbGJhY2spIHtcclxuICAgICAgICBjYWxsYmFjaygpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgc2NyaXB0Lm9uZXJyb3IgPSAoKT0+e1xyXG4gICAgICBpZihlcnJDYWxsYmFjayl7XHJcbiAgICAgICAgZXJyQ2FsbGJhY2soKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8g5bCG6ISa5pys5re75Yqg5Yiw6aG16Z2i5LitXHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjcmlwdCk7XHJcbiAgfVxyXG4gIFxyXG59XHJcbiJdfQ==
|
|
8
|
+
import{HttpClient}from"@angular/common/http";import{Injectable}from"@angular/core";import{AuthService}from"../../user/login/auth.service";import{FmodeParse}from"@fmode/parse";import*as i0 from"@angular/core";import*as i1 from"@angular/common/http";import*as i2 from"../../user/login/auth.service";const Parse=FmodeParse.with("nova");export class WechatJssdkService{constructor(e,t){this.http=e,this.authServ=t,this.isInit=!1,this.isWechat=!1,this.wechatAccountId=localStorage.getItem("WECHAT_APP_ID");let a=-1!==navigator.userAgent.toLowerCase().indexOf("micromessenger");this.isWechat=a,this.company=this.authServ.company||localStorage.getItem("company"),this.wechatAccountId=this.authServ.appId||localStorage.getItem("WECHAT_APP_ID")}async setCurrentPageShareInfo(e={title:"飞码AI",desc:"解放创意引领未来|国际前沿的AIGC平台",link:location.href,type:"link",imgUrl:"https://file-cloud.fmode.cn/E4KpGvTEto/20230822/3mkf41033623275.png",success:()=>{console.log("分享成功")},error:()=>{console.log("分享失败")},cancel:()=>{console.log("取消分享")}}){const t=await this.getWXSignPackageInWechat();wx.config({debug:!1,appId:t.appid,timestamp:t.timestamp,nonceStr:t.nonceStr,signature:t.signature,jsApiList:["chooseWXPay","onMenuShareTimeline","onMenuShareAppMessage","onMenuShareQQ","onMenuShareQZone","updateAppMessageShareData","updateTimelineShareData"]}),"link"==e?.type&&(e.link=this.getInviteUrl(e.link)),wx.ready((()=>{wx.updateAppMessageShareData(e),wx.updateTimelineShareData(e)})),wx.error((()=>{}))}getInviteUrl(e){let t=new URL(e),a=Parse.User?.current()?.id;return a&&t.searchParams.set("invite",a),t.href}getWXSignPackageInWechat(){let e={company:this.company,href:encodeURIComponent(location.href)};return new Promise((t=>{this.http.post("https://server.fmode.cn/api/wechat/getconfig",e).subscribe((e=>{let a=e.data;t(a)}))}))}async initUserOpenid(){if(await this.init(),!this.wechatAccountId)return alert("appId不存在,请先配置");let e=this.getQueryStringByName("code"),t=localStorage.getItem("openid");if(!t){if(!Parse.User.current())return;if(t=Parse?.User?.current()?.get("wechat")?.[this.wechatAccountId]?.openid,this.isWechat&&!t){let t=window.location.pathname;e?await this.getwechat(e,t):this.authWechat(t)}else this.openid=t}}authWechat(e=window.location.pathname){if(!localStorage.getItem("openid")){let t=window.location.origin+e;return t=encodeURIComponent(t),void(window.location.href="https://open.weixin.qq.com/connect/oauth2/authorize?appid="+this.wechatAccountId+"&redirect_uri="+t+"&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect")}}getQueryStringByName(e){let t=location.search.match(new RegExp("[?&]"+e+"=([^&]+)","i"));return null==t||t.length<1?"":t[1]}async getwechat(e,t="/account/billing"){return new Promise((async(a,i)=>{this.http.post("https://server.fmode.cn/api/wechat/get_wx",{company:this.company,code:e}).subscribe((async e=>{if(console.log(e),e&&200==e.code&&e.data.openid){let t=e.data.openid;localStorage.setItem("openid",t),localStorage.removeItem("code");let i={};i[this.wechatAccountId]={openid:t},Parse.User.current().set("wechat",i),await Parse.User.current().save(),a(!0)}}),(async e=>{console.log("Error updating items",e),this.authWechat(t),i(!1)}))}))}init(){return new Promise((e=>{this.isWechat||e(!1),this.isInit&&e(!0),wx&&e(!0),this.loadScript("https://res.wx.qq.com/open/js/jweixin-1.6.0.js",(()=>{this.isInit=!0,this.wx=wx,e(!0)}),(()=>{e(!1)}))}))}loadScript(e,t,a){var i=document.createElement("script");i.src=e,i.onload=()=>{t&&t()},i.onerror=()=>{a&&a()},document.body.appendChild(i)}static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:WechatJssdkService,deps:[{token:i1.HttpClient},{token:i2.AuthService}],target:i0.ɵɵFactoryTarget.Injectable})}static{this.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:WechatJssdkService,providedIn:"root"})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:WechatJssdkService,decorators:[{type:Injectable,args:[{providedIn:"root"}]}],ctorParameters:()=>[{type:i1.HttpClient},{type:i2.AuthService}]});
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9zb2NpYWwvd2VjaGF0L3dlY2hhdC1qc3Nkay5zZXJ2aWNlLm1qcw==`
|
|
10
|
+
|
|
@@ -1,59 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
import * as i2 from
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
openFile(file) {
|
|
12
|
-
console.log('Opening file:', file);
|
|
13
|
-
// Add your logic to open the file details here
|
|
14
|
-
}
|
|
15
|
-
openDir(dir, type = "pre") {
|
|
16
|
-
if (dir) {
|
|
17
|
-
this.prefix = dir.Prefix;
|
|
18
|
-
this.listDir(dir.Prefix);
|
|
19
|
-
}
|
|
20
|
-
else {
|
|
21
|
-
if (type == "pre") {
|
|
22
|
-
let list = this.prefix.split("/");
|
|
23
|
-
if (list.length > 1) {
|
|
24
|
-
let prefix = list.splice(0, list.length - 1).join("/");
|
|
25
|
-
console.log(prefix);
|
|
26
|
-
this.prefix = prefix;
|
|
27
|
-
this.listDir(prefix);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
showName(name) {
|
|
33
|
-
return name.replaceAll(this.prefix, "");
|
|
34
|
-
}
|
|
35
|
-
constructor(hwobs) {
|
|
36
|
-
this.hwobs = hwobs;
|
|
37
|
-
this.dirs = [];
|
|
38
|
-
this.files = [];
|
|
39
|
-
this.prefix = "storage/";
|
|
40
|
-
this.listDir(this.prefix);
|
|
41
|
-
}
|
|
42
|
-
async listDir(prefix) {
|
|
43
|
-
let { dirs, files } = await this.hwobs.listDir(prefix);
|
|
44
|
-
this.dirs = dirs;
|
|
45
|
-
this.files = files;
|
|
46
|
-
}
|
|
47
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HwobsManagerComponent, deps: [{ token: i1.HwobsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
48
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: HwobsManagerComponent, isStandalone: true, selector: "fm-storage-hwobs-manager", ngImport: i0, template: "<ion-header>\r\n <ion-toolbar>\r\n <ion-title>\r\n File Manager\r\n </ion-title>\r\n </ion-toolbar>\r\n </ion-header>\r\n \r\n <ion-content>\r\n <ion-list>\r\n <ion-item (click)=\"openDir(null,'pre')\">\r\n <ion-icon [name]=\"'folder'\" slot=\"start\"></ion-icon>\r\n <ion-label>../</ion-label>\r\n </ion-item>\r\n <ion-item *ngFor=\"let item of dirs\" (click)=\"openDir(item)\">\r\n <ion-icon [name]=\"'folder'\" slot=\"start\"></ion-icon>\r\n <ion-label>{{ showName(item.Prefix) }}</ion-label>\r\n </ion-item>\r\n <ion-item *ngFor=\"let item of files\" (click)=\"openFile(item)\">\r\n <ion-icon [name]=\"'document'\" slot=\"start\"></ion-icon>\r\n <ion-label>{{ showName(item.Key) }}</ion-label>\r\n </ion-item>\r\n </ion-list>\r\n </ion-content>", styles: ["ion-list ion-item ion-icon{font-size:24px;margin-right:8px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: IonicModule }, { kind: "component", type: i3.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i3.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i3.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i3.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i3.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i3.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i3.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i3.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }] }); }
|
|
49
|
-
}
|
|
50
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: HwobsManagerComponent, decorators: [{
|
|
51
|
-
type: Component,
|
|
52
|
-
args: [{ standalone: true, imports: [
|
|
53
|
-
CommonModule,
|
|
54
|
-
FormsModule,
|
|
55
|
-
ReactiveFormsModule,
|
|
56
|
-
IonicModule
|
|
57
|
-
], selector: 'fm-storage-hwobs-manager', template: "<ion-header>\r\n <ion-toolbar>\r\n <ion-title>\r\n File Manager\r\n </ion-title>\r\n </ion-toolbar>\r\n </ion-header>\r\n \r\n <ion-content>\r\n <ion-list>\r\n <ion-item (click)=\"openDir(null,'pre')\">\r\n <ion-icon [name]=\"'folder'\" slot=\"start\"></ion-icon>\r\n <ion-label>../</ion-label>\r\n </ion-item>\r\n <ion-item *ngFor=\"let item of dirs\" (click)=\"openDir(item)\">\r\n <ion-icon [name]=\"'folder'\" slot=\"start\"></ion-icon>\r\n <ion-label>{{ showName(item.Prefix) }}</ion-label>\r\n </ion-item>\r\n <ion-item *ngFor=\"let item of files\" (click)=\"openFile(item)\">\r\n <ion-icon [name]=\"'document'\" slot=\"start\"></ion-icon>\r\n <ion-label>{{ showName(item.Key) }}</ion-label>\r\n </ion-item>\r\n </ion-list>\r\n </ion-content>", styles: ["ion-list ion-item ion-icon{font-size:24px;margin-right:8px}\n"] }]
|
|
58
|
-
}], ctorParameters: () => [{ type: i1.HwobsService }] });
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHdvYnMtbWFuYWdlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mbW9kZS1uZy9zcmMvbGliL3N0b3JhZ2UvY29tcC1od29icy1tYW5hZ2VyL2h3b2JzLW1hbmFnZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm1vZGUtbmcvc3JjL2xpYi9zdG9yYWdlL2NvbXAtaHdvYnMtbWFuYWdlci9od29icy1tYW5hZ2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUF1QixZQUFZLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQzs7Ozs7QUFjbkYsTUFBTSxPQUFPLHFCQUFxQjtJQUloQyxRQUFRLENBQUMsSUFBUztRQUNoQixPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNuQywrQ0FBK0M7SUFDakQsQ0FBQztJQUNELE9BQU8sQ0FBQyxHQUFrQixFQUFDLE9BQVksS0FBSztRQUMxQyxJQUFHLEdBQUcsRUFBQyxDQUFDO1lBQ04sSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFBO1lBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQzFCLENBQUM7YUFBSSxDQUFDO1lBQ0osSUFBRyxJQUFJLElBQUUsS0FBSyxFQUFDLENBQUM7Z0JBQ2QsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUE7Z0JBQ2pDLElBQUcsSUFBSSxDQUFDLE1BQU0sR0FBQyxDQUFDLEVBQUMsQ0FBQztvQkFDaEIsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUMsSUFBSSxDQUFDLE1BQU0sR0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7b0JBQ25ELE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUE7b0JBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO29CQUNwQixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO2dCQUN0QixDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBQ0QsUUFBUSxDQUFDLElBQVc7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUMsRUFBRSxDQUFDLENBQUE7SUFDeEMsQ0FBQztJQUNELFlBQ1UsS0FBa0I7UUFBbEIsVUFBSyxHQUFMLEtBQUssQ0FBYTtRQTNCNUIsU0FBSSxHQUFlLEVBQUUsQ0FBQztRQUN0QixVQUFLLEdBQWdCLEVBQUUsQ0FBQztRQUN4QixXQUFNLEdBQVcsVUFBVSxDQUFBO1FBMkJ6QixJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUMzQixDQUFDO0lBRUQsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFhO1FBQ3pCLElBQUksRUFBQyxJQUFJLEVBQUMsS0FBSyxFQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUNuRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQTtRQUNoQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtJQUNwQixDQUFDOytHQXJDVSxxQkFBcUI7bUdBQXJCLHFCQUFxQixvRkNsQmxDLDIzQkF1QmdCLHNIRGRaLFlBQVksMkpBQ1osV0FBVyw4QkFDWCxtQkFBbUIsOEJBQ25CLFdBQVc7OzRGQU1GLHFCQUFxQjtrQkFaakMsU0FBUztpQ0FDRyxJQUFJLFdBQ1A7d0JBQ04sWUFBWTt3QkFDWixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsV0FBVztxQkFDWixZQUNTLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgSW9uaWNNb2R1bGUgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XHJcbmltcG9ydCB7IEh3b2JzRGlyLCBId29ic0ZpbGUsIEh3b2JzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UtaHdvYnMvaHdvYnMuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzdGFuZGFsb25lOnRydWUsXHJcbiAgaW1wb3J0czpbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBJb25pY01vZHVsZVxyXG4gIF0sXHJcbiAgc2VsZWN0b3I6ICdmbS1zdG9yYWdlLWh3b2JzLW1hbmFnZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9od29icy1tYW5hZ2VyLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9od29icy1tYW5hZ2VyLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIEh3b2JzTWFuYWdlckNvbXBvbmVudCB7XHJcbiAgZGlyczogSHdvYnNEaXJbXSA9IFtdO1xyXG4gIGZpbGVzOiBId29ic0ZpbGVbXSA9IFtdO1xyXG4gIHByZWZpeDogc3RyaW5nID0gXCJzdG9yYWdlL1wiXHJcbiAgb3BlbkZpbGUoZmlsZTogYW55KSB7XHJcbiAgICBjb25zb2xlLmxvZygnT3BlbmluZyBmaWxlOicsIGZpbGUpO1xyXG4gICAgLy8gQWRkIHlvdXIgbG9naWMgdG8gb3BlbiB0aGUgZmlsZSBkZXRhaWxzIGhlcmVcclxuICB9XHJcbiAgb3BlbkRpcihkaXI/Okh3b2JzRGlyfG51bGwsdHlwZTpzdHJpbmc9XCJwcmVcIil7XHJcbiAgICBpZihkaXIpe1xyXG4gICAgICB0aGlzLnByZWZpeCA9IGRpci5QcmVmaXhcclxuICAgICAgdGhpcy5saXN0RGlyKGRpci5QcmVmaXgpXHJcbiAgICB9ZWxzZXtcclxuICAgICAgaWYodHlwZT09XCJwcmVcIil7XHJcbiAgICAgICAgbGV0IGxpc3QgPSB0aGlzLnByZWZpeC5zcGxpdChcIi9cIilcclxuICAgICAgICBpZihsaXN0Lmxlbmd0aD4xKXtcclxuICAgICAgICAgIGxldCBwcmVmaXggPSBsaXN0LnNwbGljZSgwLGxpc3QubGVuZ3RoLTEpLmpvaW4oXCIvXCIpXHJcbiAgICAgICAgICBjb25zb2xlLmxvZyhwcmVmaXgpXHJcbiAgICAgICAgICB0aGlzLnByZWZpeCA9IHByZWZpeFxyXG4gICAgICAgICAgdGhpcy5saXN0RGlyKHByZWZpeClcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgc2hvd05hbWUobmFtZTpzdHJpbmcpe1xyXG4gICAgcmV0dXJuIG5hbWUucmVwbGFjZUFsbCh0aGlzLnByZWZpeCxcIlwiKVxyXG4gIH1cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaHdvYnM6SHdvYnNTZXJ2aWNlXHJcbiAgKXtcclxuICAgIHRoaXMubGlzdERpcih0aGlzLnByZWZpeClcclxuICB9XHJcblxyXG4gIGFzeW5jIGxpc3REaXIocHJlZml4OnN0cmluZyl7XHJcbiAgICBsZXQge2RpcnMsZmlsZXN9ID0gYXdhaXQgdGhpcy5od29icy5saXN0RGlyKHByZWZpeClcclxuICAgIHRoaXMuZGlycyA9IGRpcnNcclxuICAgIHRoaXMuZmlsZXMgPSBmaWxlc1xyXG4gIH1cclxufVxyXG4iLCI8aW9uLWhlYWRlcj5cclxuICAgIDxpb24tdG9vbGJhcj5cclxuICAgICAgPGlvbi10aXRsZT5cclxuICAgICAgICBGaWxlIE1hbmFnZXJcclxuICAgICAgPC9pb24tdGl0bGU+XHJcbiAgICA8L2lvbi10b29sYmFyPlxyXG4gIDwvaW9uLWhlYWRlcj5cclxuICBcclxuICA8aW9uLWNvbnRlbnQ+XHJcbiAgICA8aW9uLWxpc3Q+XHJcbiAgICAgICAgPGlvbi1pdGVtIChjbGljayk9XCJvcGVuRGlyKG51bGwsJ3ByZScpXCI+XHJcbiAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCInZm9sZGVyJ1wiIHNsb3Q9XCJzdGFydFwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgIDxpb24tbGFiZWw+Li4vPC9pb24tbGFiZWw+XHJcbiAgICAgICAgPC9pb24taXRlbT5cclxuICAgICAgICA8aW9uLWl0ZW0gKm5nRm9yPVwibGV0IGl0ZW0gb2YgZGlyc1wiIChjbGljayk9XCJvcGVuRGlyKGl0ZW0pXCI+XHJcbiAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCInZm9sZGVyJ1wiIHNsb3Q9XCJzdGFydFwiPjwvaW9uLWljb24+XHJcbiAgICAgICAgICAgIDxpb24tbGFiZWw+e3sgc2hvd05hbWUoaXRlbS5QcmVmaXgpIH19PC9pb24tbGFiZWw+XHJcbiAgICAgICAgPC9pb24taXRlbT5cclxuICAgICAgICA8aW9uLWl0ZW0gKm5nRm9yPVwibGV0IGl0ZW0gb2YgZmlsZXNcIiAoY2xpY2spPVwib3BlbkZpbGUoaXRlbSlcIj5cclxuICAgICAgICAgICAgPGlvbi1pY29uIFtuYW1lXT1cIidkb2N1bWVudCdcIiBzbG90PVwic3RhcnRcIj48L2lvbi1pY29uPlxyXG4gICAgICAgICAgICA8aW9uLWxhYmVsPnt7IHNob3dOYW1lKGl0ZW0uS2V5KSB9fTwvaW9uLWxhYmVsPlxyXG4gICAgICAgIDwvaW9uLWl0ZW0+XHJcbiAgICA8L2lvbi1saXN0PlxyXG4gIDwvaW9uLWNvbnRlbnQ+Il19
|
|
1
|
+
|
|
2
|
+
/**
|
|
3
|
+
* @copyright © 未来飞马 © 未来全栈 www.fmode.cn
|
|
4
|
+
* 版权所有 © 未来飞马 © 江西脑控科技有限公司 Copyright © Fmode Technology Co., Ltd.
|
|
5
|
+
* 保留所有权利 All Rights Reserved.
|
|
6
|
+
* /home/ryan/workspace/nova/nova-admin/dist/fmode-ng/esm2022/lib/storage/comp-hwobs-manager/hwobs-manager.component.mjs
|
|
7
|
+
*/
|
|
8
|
+
import{CommonModule}from"@angular/common";import{Component}from"@angular/core";import{FormsModule,ReactiveFormsModule}from"@angular/forms";import{IonicModule}from"@ionic/angular";import{HwobsService}from"../service-hwobs/hwobs.service";import*as i0 from"@angular/core";import*as i1 from"../service-hwobs/hwobs.service";import*as i2 from"@angular/common";import*as i3 from"@ionic/angular";export class HwobsManagerComponent{openFile(o){console.log("Opening file:",o)}openDir(o,n="pre"){if(o)this.prefix=o.Prefix,this.listDir(o.Prefix);else if("pre"==n){let o=this.prefix.split("/");if(o.length>1){let n=o.splice(0,o.length-1).join("/");console.log(n),this.prefix=n,this.listDir(n)}}}showName(o){return o.replaceAll(this.prefix,"")}constructor(o){this.hwobs=o,this.dirs=[],this.files=[],this.prefix="storage/",this.listDir(this.prefix)}async listDir(o){let{dirs:n,files:e}=await this.hwobs.listDir(o);this.dirs=n,this.files=e}static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:HwobsManagerComponent,deps:[{token:i1.HwobsService}],target:i0.ɵɵFactoryTarget.Component})}static{this.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"17.3.12",type:HwobsManagerComponent,isStandalone:!0,selector:"fm-storage-hwobs-manager",ngImport:i0,template:'<ion-header>\n <ion-toolbar>\n <ion-title>\n File Manager\n </ion-title>\n </ion-toolbar>\n </ion-header>\n \n <ion-content>\n <ion-list>\n <ion-item (click)="openDir(null,\'pre\')">\n <ion-icon [name]="\'folder\'" slot="start"></ion-icon>\n <ion-label>../</ion-label>\n </ion-item>\n <ion-item *ngFor="let item of dirs" (click)="openDir(item)">\n <ion-icon [name]="\'folder\'" slot="start"></ion-icon>\n <ion-label>{{ showName(item.Prefix) }}</ion-label>\n </ion-item>\n <ion-item *ngFor="let item of files" (click)="openFile(item)">\n <ion-icon [name]="\'document\'" slot="start"></ion-icon>\n <ion-label>{{ showName(item.Key) }}</ion-label>\n </ion-item>\n </ion-list>\n </ion-content>',styles:["ion-list ion-item ion-icon{font-size:24px;margin-right:8px}\n"],dependencies:[{kind:"ngmodule",type:CommonModule},{kind:"directive",type:i2.NgForOf,selector:"[ngFor][ngForOf]",inputs:["ngForOf","ngForTrackBy","ngForTemplate"]},{kind:"ngmodule",type:FormsModule},{kind:"ngmodule",type:ReactiveFormsModule},{kind:"ngmodule",type:IonicModule},{kind:"component",type:i3.IonContent,selector:"ion-content",inputs:["color","fixedSlotPlacement","forceOverscroll","fullscreen","scrollEvents","scrollX","scrollY"]},{kind:"component",type:i3.IonHeader,selector:"ion-header",inputs:["collapse","mode","translucent"]},{kind:"component",type:i3.IonIcon,selector:"ion-icon",inputs:["color","flipRtl","icon","ios","lazy","md","mode","name","sanitize","size","src"]},{kind:"component",type:i3.IonItem,selector:"ion-item",inputs:["button","color","detail","detailIcon","disabled","download","href","lines","mode","rel","routerAnimation","routerDirection","target","type"]},{kind:"component",type:i3.IonLabel,selector:"ion-label",inputs:["color","mode","position"]},{kind:"component",type:i3.IonList,selector:"ion-list",inputs:["inset","lines","mode"]},{kind:"component",type:i3.IonTitle,selector:"ion-title",inputs:["color","size"]},{kind:"component",type:i3.IonToolbar,selector:"ion-toolbar",inputs:["color","mode"]}]})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:HwobsManagerComponent,decorators:[{type:Component,args:[{standalone:!0,imports:[CommonModule,FormsModule,ReactiveFormsModule,IonicModule],selector:"fm-storage-hwobs-manager",template:'<ion-header>\n <ion-toolbar>\n <ion-title>\n File Manager\n </ion-title>\n </ion-toolbar>\n </ion-header>\n \n <ion-content>\n <ion-list>\n <ion-item (click)="openDir(null,\'pre\')">\n <ion-icon [name]="\'folder\'" slot="start"></ion-icon>\n <ion-label>../</ion-label>\n </ion-item>\n <ion-item *ngFor="let item of dirs" (click)="openDir(item)">\n <ion-icon [name]="\'folder\'" slot="start"></ion-icon>\n <ion-label>{{ showName(item.Prefix) }}</ion-label>\n </ion-item>\n <ion-item *ngFor="let item of files" (click)="openFile(item)">\n <ion-icon [name]="\'document\'" slot="start"></ion-icon>\n <ion-label>{{ showName(item.Key) }}</ion-label>\n </ion-item>\n </ion-list>\n </ion-content>',styles:["ion-list ion-item ion-icon{font-size:24px;margin-right:8px}\n"]}]}],ctorParameters:()=>[{type:i1.HwobsService}]});
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9zdG9yYWdlL2NvbXAtaHdvYnMtbWFuYWdlci9od29icy1tYW5hZ2VyLmNvbXBvbmVudC5tanM=`
|
|
10
|
+
|
|
@@ -1,5 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
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/index.mjs
|
|
7
|
+
*/
|
|
8
|
+
export*from"./storage.module";export*from"./service-hwobs";export*from"./comp-hwobs-manager/hwobs-manager.component";export*from"./service-upload/nova-upload.service";
|
|
9
|
+
var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9zdG9yYWdlL2luZGV4Lm1qcw==`
|
|
10
|
+
|