fmode-ng 0.0.113 → 0.0.115

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (275) hide show
  1. package/LICENSE.md +8 -0
  2. package/README.md +37 -37
  3. package/esm2022/fmode-ng.mjs +10 -5
  4. package/esm2022/lib/aigc/agent/fm-agent-task/fm-agent-task.component.mjs +8 -92
  5. package/esm2022/lib/aigc/agent/index.mjs +10 -3
  6. package/esm2022/lib/aigc/avatar/avatar.module.mjs +10 -45
  7. package/esm2022/lib/aigc/avatar/comp-avatar-particle/avatar.role.mjs +10 -2
  8. package/esm2022/lib/aigc/avatar/comp-avatar-particle/comp-avatar-particle.component.mjs +10 -315
  9. package/esm2022/lib/aigc/avatar/comp-avatar-particle/index.mjs +10 -3
  10. package/esm2022/lib/aigc/avatar/comp-avatar-particle/role-points.class.mjs +10 -57
  11. package/esm2022/lib/aigc/avatar/comp-avatar-role-image/comp-avatar-role-image.component.mjs +10 -98
  12. package/esm2022/lib/aigc/avatar/comp-avatar-role-video/comp-avatar-role-video.component.mjs +10 -107
  13. package/esm2022/lib/aigc/avatar/comp-avatar-talk/comp-avatar-talk.component.mjs +10 -113
  14. package/esm2022/lib/aigc/avatar/index.mjs +10 -8
  15. package/esm2022/lib/aigc/avatar/interface-avatar-role.mjs +10 -2
  16. package/esm2022/lib/aigc/avatar/modal-chat-voice-input/modal-chat-voice-input.component.mjs +8 -164
  17. package/esm2022/lib/aigc/chat/chat-header-area/comp-header-area.component.mjs +10 -49
  18. package/esm2022/lib/aigc/chat/chat-header-area/index.mjs +10 -2
  19. package/esm2022/lib/aigc/chat/chat-list/chat-list.component.mjs +8 -155
  20. package/esm2022/lib/aigc/chat/chat-list/index.mjs +10 -2
  21. package/esm2022/lib/aigc/chat/chat-message-area/comp-message-area.component.mjs +10 -40
  22. package/esm2022/lib/aigc/chat/chat-message-area/index.mjs +10 -2
  23. package/esm2022/lib/aigc/chat/chat-message-card/comp-message-card.component.mjs +10 -140
  24. package/esm2022/lib/aigc/chat/chat-message-card/duration-str.pipe.mjs +10 -29
  25. package/esm2022/lib/aigc/chat/chat-message-card/index.mjs +10 -3
  26. package/esm2022/lib/aigc/chat/chat-modal-input/index.mjs +10 -3
  27. package/esm2022/lib/aigc/chat/chat-modal-input/modal-audio-message/modal-audio-message.component.mjs +8 -193
  28. package/esm2022/lib/aigc/chat/chat-modal-input/modal-input.component.mjs +10 -331
  29. package/esm2022/lib/aigc/chat/chat-panel/chat-panel.component.mjs +8 -249
  30. package/esm2022/lib/aigc/chat/comp-role-prompt/comp-role-prompt.component.mjs +10 -83
  31. package/esm2022/lib/aigc/chat/comp-role-prompt/index.mjs +10 -2
  32. package/esm2022/lib/aigc/chat/index.mjs +10 -8
  33. package/esm2022/lib/aigc/comp-markdown-preview/clipboard.service.mjs +10 -82
  34. package/esm2022/lib/aigc/comp-markdown-preview/markdown-parse.mjs +8 -367
  35. package/esm2022/lib/aigc/comp-markdown-preview/markdown-preview.component.mjs +10 -51
  36. package/esm2022/lib/aigc/comp-markdown-preview/markdown-preview.module.mjs +10 -24
  37. package/esm2022/lib/aigc/comp-markdown-preview/plugins/md-mathjax/index.mjs +10 -115
  38. package/esm2022/lib/aigc/index.mjs +10 -14
  39. package/esm2022/lib/aigc/service-fmai/fmai.service.mjs +10 -21
  40. package/esm2022/lib/aigc/service-fmai/service-chat/chat-class.mjs +10 -2
  41. package/esm2022/lib/aigc/service-fmai/service-chat/chat.service.mjs +8 -174
  42. package/esm2022/lib/aigc/service-fmai/service-chat/index.mjs +10 -7
  43. package/esm2022/lib/aigc/service-fmai/service-chat/mask-list.mjs +9 -194
  44. package/esm2022/lib/aigc/service-fmai/service-chat/pipes/chat-content.pipe.mjs +10 -27
  45. package/esm2022/lib/aigc/service-fmai/service-chat/pipes/hidexml.pipe.mjs +10 -27
  46. package/esm2022/lib/aigc/service-fmai/service-chat/utilnow.pipe.mjs +10 -68
  47. package/esm2022/lib/aigc/service-fmai/service-imagine/imagine-func.mjs +9 -162
  48. package/esm2022/lib/aigc/service-fmai/service-imagine/imagine-work.mjs +10 -68
  49. package/esm2022/lib/aigc/service-fmai/service-imagine/imagine.service.mjs +8 -313
  50. package/esm2022/lib/aigc/service-fmai/service-imagine/index.mjs +10 -4
  51. package/esm2022/lib/aigc/story/fm-office-viewer/fm-office-viewer.component.mjs +10 -62
  52. package/esm2022/lib/aigc/story/fm-story-card/fm-story-card.component.mjs +10 -87
  53. package/esm2022/lib/aigc/story/fm-story-list/fm-story-list.component.mjs +10 -345
  54. package/esm2022/lib/aigc/story/fm-story-list/story-preview.mjs +10 -81
  55. package/esm2022/lib/aigc/story/fm-story-loader/fm-story-loader.component.mjs +10 -152
  56. package/esm2022/lib/aigc/story/fm-story-splitter/fm-story-splitter.component.mjs +10 -42
  57. package/esm2022/lib/aigc/story/index.mjs +10 -6
  58. package/esm2022/lib/aigc/story/modal-chat-story/comp-chat-story-json/comp-chat-story-json.component.mjs +10 -47
  59. package/esm2022/lib/aigc/story/modal-chat-story/comp-diary-story/comp-diary-story.component.mjs +10 -95
  60. package/esm2022/lib/aigc/story/modal-chat-story/modal-chat-story.component.mjs +10 -253
  61. package/esm2022/lib/aigc/story/story.service.mjs +10 -35
  62. package/esm2022/lib/aigc/voice/fmode-voice.service.mjs +10 -636
  63. package/esm2022/lib/aigc/voice/index.mjs +10 -7
  64. package/esm2022/lib/aigc/voice/lib/audio/audio.player.mjs +10 -55
  65. package/esm2022/lib/aigc/voice/lib/audio/audio.streamer.mjs +10 -2
  66. package/esm2022/lib/aigc/voice/lib/audio/streamer.microsoft.mjs +10 -96
  67. package/esm2022/lib/aigc/voice/lib/audio/streamer.pcm.mjs +8 -177
  68. package/esm2022/lib/aigc/voice/lib/pcm2wav.mjs +10 -38
  69. package/esm2022/lib/aigc/voice/lib/recorder/extension-waveview.mjs +10 -215
  70. package/esm2022/lib/aigc/voice/lib/resample.mjs +10 -34
  71. package/esm2022/lib/aigc/voice/tts/fmode-tts-class.mjs +10 -189
  72. package/esm2022/lib/aigc/voice/tts/index.mjs +10 -5
  73. package/esm2022/lib/aigc/voice/tts/int-tts-provider.mjs +10 -2
  74. package/esm2022/lib/aigc/voice/tts/provider-doubao.mjs +8 -346
  75. package/esm2022/lib/code/fm-codemirror/fm-codemirror.component.mjs +8 -342
  76. package/esm2022/lib/code/index.mjs +10 -2
  77. package/esm2022/lib/core/agent/chat/completion/fmode-completion.mjs +8 -430
  78. package/esm2022/lib/core/agent/chat/completion/index.mjs +10 -2
  79. package/esm2022/lib/core/agent/chat/completion/int-gpt-chat-options.mjs +10 -2
  80. package/esm2022/lib/core/agent/chat/fmode-chat.mjs +8 -617
  81. package/esm2022/lib/core/agent/chat/index.mjs +10 -4
  82. package/esm2022/lib/core/agent/chat/interface.mjs +10 -2
  83. package/esm2022/lib/core/agent/index.mjs +10 -6
  84. package/esm2022/lib/core/agent/prompt/agent.prompt.mjs +10 -133
  85. package/esm2022/lib/core/agent/prompt/index.mjs +10 -2
  86. package/esm2022/lib/core/agent/prompt/prompt-util.mjs +10 -16
  87. package/esm2022/lib/core/agent/story/agent.story.mjs +10 -64
  88. package/esm2022/lib/core/agent/story/index.mjs +10 -2
  89. package/esm2022/lib/core/agent/task/agent.task.mjs +10 -90
  90. package/esm2022/lib/core/agent/task/index.mjs +10 -2
  91. package/esm2022/lib/core/agent/waiting/index.mjs +10 -3
  92. package/esm2022/lib/core/agent/waiting/loading/loading.ctrl.mjs +10 -279
  93. package/esm2022/lib/core/agent/waiting/tips/tips.ctrl.mjs +8 -190
  94. package/esm2022/lib/core/index.mjs +10 -4
  95. package/esm2022/lib/core/parse/datatype/acl.mjs +10 -57
  96. package/esm2022/lib/core/parse/datatype/file.mjs +10 -69
  97. package/esm2022/lib/core/parse/datatype/geopoint.mjs +10 -57
  98. package/esm2022/lib/core/parse/datatype/relation.mjs +10 -56
  99. package/esm2022/lib/core/parse/fmode.cloud.mjs +10 -0
  100. package/esm2022/lib/core/parse/fmode.object.mjs +10 -232
  101. package/esm2022/lib/core/parse/fmode.parse.mjs +10 -84
  102. package/esm2022/lib/core/parse/fmode.query.mjs +8 -500
  103. package/esm2022/lib/core/parse/fmode.user.mjs +10 -275
  104. package/esm2022/lib/core/parse/index.mjs +10 -5
  105. package/esm2022/lib/core/parse/types.mjs +10 -2
  106. package/esm2022/lib/core/voice/index.mjs +10 -3
  107. package/esm2022/lib/core/voice/tts/index.mjs +10 -2
  108. package/esm2022/lib/icon/filetype/audio.svg.mjs +10 -3
  109. package/esm2022/lib/icon/filetype/avatar.svg.mjs +10 -14
  110. package/esm2022/lib/icon/filetype/chat.svg.mjs +10 -3
  111. package/esm2022/lib/icon/filetype/docx.svg.mjs +10 -3
  112. package/esm2022/lib/icon/filetype/file.svg.mjs +10 -3
  113. package/esm2022/lib/icon/filetype/filetype.pipe.mjs +10 -57
  114. package/esm2022/lib/icon/filetype/index.mjs +10 -12
  115. package/esm2022/lib/icon/filetype/md.svg.mjs +10 -3
  116. package/esm2022/lib/icon/filetype/pdf.svg.mjs +10 -3
  117. package/esm2022/lib/icon/filetype/pptx.svg.mjs +10 -3
  118. package/esm2022/lib/icon/filetype/svgtoblob.mjs +10 -8
  119. package/esm2022/lib/icon/filetype/video.svg.mjs +10 -3
  120. package/esm2022/lib/icon/filetype/xlsx.svg.mjs +10 -3
  121. package/esm2022/lib/icon/index.mjs +10 -2
  122. package/esm2022/lib/map/comp-poi-picker/comp-poi-picker.component.mjs +10 -209
  123. package/esm2022/lib/map/comp-poi-picker/comp-poi-picker.module.mjs +10 -33
  124. package/esm2022/lib/map/index.mjs +10 -4
  125. package/esm2022/lib/map/map.module.mjs +10 -61
  126. package/esm2022/lib/map/page-loca-scatter/page-loca-scatter.component.mjs +10 -132
  127. package/esm2022/lib/map/page-map.start/page-map.start.component.mjs +8 -115
  128. package/esm2022/lib/map/page-plan-route/page-plan-route.component.mjs +8 -118
  129. package/esm2022/lib/nova-cloud/index.mjs +10 -3
  130. package/esm2022/lib/nova-cloud/ncloud-api-func.mjs +10 -91
  131. package/esm2022/lib/nova-cloud/nova-cloud.service.mjs +10 -53
  132. package/esm2022/lib/payment/index.mjs +10 -2
  133. package/esm2022/lib/payment/payment/payment.component.mjs +10 -543
  134. package/esm2022/lib/payment/payment.service.mjs +10 -202
  135. package/esm2022/lib/person/comp-person-gender-icon/comp-person-gender-icon.component.mjs +10 -48
  136. package/esm2022/lib/person/comp-person-item/comp-person-item.component.mjs +10 -29
  137. package/esm2022/lib/person/comp-person-story/comp-person-story.component.mjs +10 -211
  138. package/esm2022/lib/person/edit-upload/edit-upload.component.mjs +8 -412
  139. package/esm2022/lib/person/edit-upload/edit-upload.module.mjs +10 -50
  140. package/esm2022/lib/person/index.mjs +10 -5
  141. package/esm2022/lib/person/modal-person-select/modal-person-select.component.mjs +10 -144
  142. package/esm2022/lib/person/modal-user-verify/secret-text.pipe.mjs +10 -41
  143. package/esm2022/lib/person/modal-user-verify/user-verify.component.mjs +10 -595
  144. package/esm2022/lib/person/person-detail/person-detail.component.mjs +10 -172
  145. package/esm2022/lib/person/person.service.mjs +8 -193
  146. package/esm2022/lib/platform/cross.service.mjs +10 -62
  147. package/esm2022/lib/platform/index.mjs +10 -2
  148. package/esm2022/lib/social/index.mjs +10 -2
  149. package/esm2022/lib/social/wechat/wechat-jssdk.service.mjs +8 -230
  150. package/esm2022/lib/storage/comp-hwobs-manager/hwobs-manager.component.mjs +10 -59
  151. package/esm2022/lib/storage/index.mjs +10 -5
  152. package/esm2022/lib/storage/service-hwobs/hwobs.service.mjs +8 -131
  153. package/esm2022/lib/storage/service-hwobs/index.mjs +10 -3
  154. package/esm2022/lib/storage/service-hwobs/typings/esdk-obs-browser.mjs +1 -1
  155. package/esm2022/lib/storage/service-upload/index.mjs +10 -2
  156. package/esm2022/lib/storage/service-upload/nova-upload.service.mjs +8 -513
  157. package/esm2022/lib/storage/service-upload/util-file-md5.mjs +10 -28
  158. package/esm2022/lib/storage/service-upload/util-file-metadata.mjs +10 -93
  159. package/esm2022/lib/storage/storage.module.mjs +10 -42
  160. package/esm2022/lib/text/fm-article-editor/article-editor-topbar/article-editor-topbar.component.mjs +10 -72
  161. package/esm2022/lib/text/fm-article-editor/article.service.mjs +10 -237
  162. package/esm2022/lib/text/fm-article-editor/comp-upload-book-banners/comp-upload-book-banners.component.mjs +8 -72
  163. package/esm2022/lib/text/fm-article-editor/draft.service.mjs +10 -207
  164. package/esm2022/lib/text/fm-article-editor/fm-article-aitool/fm-article-aitool.component.mjs +8 -227
  165. package/esm2022/lib/text/fm-article-editor/fm-article-draft/fm-article-draft.component.mjs +10 -303
  166. package/esm2022/lib/text/fm-article-editor/fm-article-editor.component.mjs +8 -371
  167. package/esm2022/lib/text/fm-article-editor/fm-article-outline/fm-article-outline.component.mjs +10 -94
  168. package/esm2022/lib/text/fm-article-editor/fm-article-outline-leftitem/fm-article-outline-leftitem.component.mjs +10 -36
  169. package/esm2022/lib/text/fm-article-editor/fm-article-preview/fm-article-preview.component.mjs +10 -281
  170. package/esm2022/lib/text/fm-article-editor/fm-article-write-options/fm-article-write-options.component.mjs +10 -72
  171. package/esm2022/lib/text/fm-article-editor/outline-count.pipe.mjs +10 -22
  172. package/esm2022/lib/text/fm-article-editor/prompt/prompt-insertion-article.mjs +10 -169
  173. package/esm2022/lib/text/fm-article-editor/task-article-generation.mjs +10 -69
  174. package/esm2022/lib/text/fm-article-editor/tasks/task-article-draft-create.mjs +10 -65
  175. package/esm2022/lib/text/fm-article-editor/tasks/task-article-outline-edit.mjs +10 -55
  176. package/esm2022/lib/text/fm-article-editor/tasks/task-article-outline.mjs +10 -142
  177. package/esm2022/lib/text/fm-article-editor/tasks/task-article-preview.mjs +10 -35
  178. package/esm2022/lib/text/fm-article-editor/tasks/task-article-writing-options.mjs +10 -81
  179. package/esm2022/lib/text/fm-article-editor/tasks/task-document-select.mjs +10 -50
  180. package/esm2022/lib/text/fm-text-quill/fm-text-quill.component.mjs +10 -145
  181. package/esm2022/lib/text/index.mjs +10 -4
  182. package/esm2022/lib/user/account/account.service.mjs +10 -222
  183. package/esm2022/lib/user/captcha/captcha.component.mjs +10 -135
  184. package/esm2022/lib/user/comp-user-avatar/comp-user-avatar.component.mjs +10 -66
  185. package/esm2022/lib/user/index.mjs +10 -17
  186. package/esm2022/lib/user/login/auth.guard.mjs +10 -28
  187. package/esm2022/lib/user/login/auth.service.mjs +8 -433
  188. package/esm2022/lib/user/login/login.component.mjs +10 -916
  189. package/esm2022/lib/user/modal-user-login/modal-user-login.component.mjs +10 -311
  190. package/esm2022/lib/user/profile/auth-profile.guard.mjs +10 -27
  191. package/esm2022/lib/user/profile/auth-profile.service.mjs +10 -122
  192. package/esm2022/lib/user/profile/profile-bind/profile-bind.component.mjs +10 -164
  193. package/esm2022/lib/user/profile/profile-bind/profile-confirm-modal.component.mjs +10 -79
  194. package/esm2022/lib/user/profile/profile.module.mjs +10 -54
  195. package/esm2022/lib/user/staff/index.mjs +10 -4
  196. package/esm2022/lib/user/staff/staff.guard.mjs +10 -26
  197. package/esm2022/lib/user/staff/staff.module.mjs +10 -18
  198. package/esm2022/lib/user/staff/staff.service.mjs +10 -85
  199. package/esm2022/lib/user/user-name.pipe.mjs +10 -29
  200. package/esm2022/lib/user/user.module.mjs +10 -102
  201. package/esm2022/lib/video/fm-video/fm-video.component.mjs +10 -67
  202. package/esm2022/lib/video/index.mjs +10 -2
  203. package/esm2022/public-api.mjs +10 -21
  204. package/fesm2022/fmode-ng.mjs +7 -19788
  205. package/fesm2022/fmode-ng.mjs.map +1 -1
  206. package/lib/aigc/avatar/comp-avatar-role-image/comp-avatar-role-image.component.d.ts +2 -2
  207. package/lib/aigc/avatar/comp-avatar-role-video/comp-avatar-role-video.component.d.ts +2 -2
  208. package/lib/aigc/avatar/comp-avatar-talk/comp-avatar-talk.component.d.ts +2 -2
  209. package/lib/aigc/chat/chat-list/chat-list.component.d.ts +3 -2
  210. package/lib/aigc/chat/chat-message-card/comp-message-card.component.d.ts +3 -3
  211. package/lib/aigc/chat/chat-modal-input/modal-audio-message/modal-audio-message.component.d.ts +2 -2
  212. package/lib/aigc/chat/chat-modal-input/modal-input.component.d.ts +3 -3
  213. package/lib/aigc/service-fmai/service-imagine/imagine-func.d.ts +3 -3
  214. package/lib/aigc/service-fmai/service-imagine/imagine-work.d.ts +4 -4
  215. package/lib/aigc/service-fmai/service-imagine/imagine.service.d.ts +6 -6
  216. package/lib/aigc/story/fm-office-viewer/fm-office-viewer.component.d.ts +2 -2
  217. package/lib/aigc/story/fm-story-card/fm-story-card.component.d.ts +2 -1
  218. package/lib/aigc/story/fm-story-list/fm-story-list.component.d.ts +6 -6
  219. package/lib/aigc/story/fm-story-list/story-preview.d.ts +4 -4
  220. package/lib/aigc/story/fm-story-loader/fm-story-loader.component.d.ts +3 -3
  221. package/lib/aigc/story/fm-story-splitter/fm-story-splitter.component.d.ts +2 -2
  222. package/lib/aigc/story/modal-chat-story/comp-chat-story-json/comp-chat-story-json.component.d.ts +3 -2
  223. package/lib/aigc/story/modal-chat-story/comp-diary-story/comp-diary-story.component.d.ts +3 -2
  224. package/lib/aigc/story/modal-chat-story/modal-chat-story.component.d.ts +6 -6
  225. package/lib/aigc/story/story.service.d.ts +3 -2
  226. package/lib/aigc/voice/tts/fmode-tts-class.d.ts +2 -2
  227. package/lib/core/agent/chat/fmode-chat.d.ts +11 -11
  228. package/lib/core/agent/story/agent.story.d.ts +8 -8
  229. package/lib/core/parse/datatype/geopoint.d.ts +5 -1
  230. package/lib/core/parse/fmode.cloud.d.ts +32 -0
  231. package/lib/core/parse/fmode.object.d.ts +2 -2
  232. package/lib/core/parse/fmode.parse.d.ts +15 -9
  233. package/lib/core/parse/fmode.query.d.ts +41 -2
  234. package/lib/core/parse/fmode.user.d.ts +1 -0
  235. package/lib/core/parse/index.d.ts +1 -0
  236. package/lib/core/parse/types.d.ts +2 -0
  237. package/lib/map/comp-poi-picker/comp-poi-picker.component.d.ts +5 -5
  238. package/lib/payment/payment/payment.component.d.ts +3 -3
  239. package/lib/payment/payment.service.d.ts +4 -4
  240. package/lib/person/comp-person-gender-icon/comp-person-gender-icon.component.d.ts +2 -1
  241. package/lib/person/comp-person-item/comp-person-item.component.d.ts +2 -1
  242. package/lib/person/comp-person-story/comp-person-story.component.d.ts +13 -13
  243. package/lib/person/edit-upload/edit-upload.component.d.ts +1 -1
  244. package/lib/person/modal-person-select/modal-person-select.component.d.ts +5 -5
  245. package/lib/person/modal-user-verify/user-verify.component.d.ts +5 -5
  246. package/lib/person/person-detail/person-detail.component.d.ts +4 -4
  247. package/lib/person/person.service.d.ts +7 -7
  248. package/lib/storage/service-hwobs/hwobs.service.d.ts +4 -5
  249. package/lib/storage/service-upload/nova-upload.service.d.ts +5 -5
  250. package/lib/text/fm-article-editor/article-editor-topbar/article-editor-topbar.component.d.ts +2 -1
  251. package/lib/text/fm-article-editor/article.service.d.ts +12 -12
  252. package/lib/text/fm-article-editor/draft.service.d.ts +5 -5
  253. package/lib/text/fm-article-editor/fm-article-aitool/fm-article-aitool.component.d.ts +3 -2
  254. package/lib/text/fm-article-editor/fm-article-draft/fm-article-draft.component.d.ts +16 -17
  255. package/lib/text/fm-article-editor/fm-article-editor.component.d.ts +3 -3
  256. package/lib/text/fm-article-editor/fm-article-outline/fm-article-outline.component.d.ts +11 -10
  257. package/lib/text/fm-article-editor/fm-article-preview/fm-article-preview.component.d.ts +2 -2
  258. package/lib/text/fm-article-editor/prompt/prompt-insertion-article.d.ts +3 -3
  259. package/lib/text/fm-article-editor/task-article-generation.d.ts +5 -4
  260. package/lib/text/fm-article-editor/tasks/task-article-draft-create.d.ts +3 -3
  261. package/lib/text/fm-article-editor/tasks/task-article-outline-edit.d.ts +3 -3
  262. package/lib/text/fm-article-editor/tasks/task-article-outline.d.ts +3 -3
  263. package/lib/text/fm-article-editor/tasks/task-article-preview.d.ts +2 -1
  264. package/lib/text/fm-article-editor/tasks/task-article-writing-options.d.ts +3 -3
  265. package/lib/text/fm-article-editor/tasks/task-document-select.d.ts +3 -3
  266. package/lib/user/account/account.service.d.ts +2 -2
  267. package/lib/user/comp-user-avatar/comp-user-avatar.component.d.ts +2 -2
  268. package/lib/user/login/auth.service.d.ts +5 -5
  269. package/lib/user/login/login.component.d.ts +3 -3
  270. package/lib/user/profile/auth-profile.service.d.ts +8 -8
  271. package/lib/user/profile/profile-bind/profile-bind.component.d.ts +7 -7
  272. package/lib/user/profile/profile-bind/profile-confirm-modal.component.d.ts +2 -2
  273. package/lib/user/staff/staff.service.d.ts +3 -3
  274. package/lib/user/user-name.pipe.d.ts +2 -2
  275. package/package.json +12 -18
@@ -1,28 +1,10 @@
1
- import SparkMD5 from 'spark-md5';
2
- export function calcFileMd5(file) {
3
- return new Promise((resolve, reject) => {
4
- const reader = new FileReader();
5
- reader.onload = (event) => {
6
- try {
7
- const data = event.target?.result;
8
- if (data) {
9
- const spark = new SparkMD5.ArrayBuffer();
10
- spark.append(data);
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
- * @param {File} file - 用户选择的文件
4
- * @returns {Promise<Object>} - 返回包含元数据的对象
5
- */
6
- export async function getFileMetadata(file) {
7
- // 基础信息(第一层)
8
- const baseInfo = {
9
- name: file.name,
10
- size: file.size,
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
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { HwobsManagerComponent } from './comp-hwobs-manager/hwobs-manager.component';
4
- import { IonicModule } from '@ionic/angular';
5
- // import { Diagnostic } from '@awesome-cordova-plugins/diagnostic/ngx';
6
- import { Diagnostic } from '@awesome-cordova-plugins/diagnostic/ngx';
7
- import { NovaUploadService } from './service-upload';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "@ionic/angular";
10
- export class FmodeStorgeModule {
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
+
@@ -1,72 +1,10 @@
1
- import { CommonModule } from '@angular/common';
2
- import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
3
- import { MatButtonModule } from '@angular/material/button';
4
- import { MatChipsModule } from '@angular/material/chips';
5
- import { MatSlideToggleModule } from '@angular/material/slide-toggle';
6
- import { IonicModule, NavController } from '@ionic/angular';
7
- import { NzAvatarModule } from 'ng-zorro-antd/avatar';
8
- import { NzDividerModule } from 'ng-zorro-antd/divider';
9
- import { NzIconModule } from 'ng-zorro-antd/icon';
10
- import { addIcons } from 'ionicons';
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
+