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,237 +1,10 @@
1
- import { Injectable } from '@angular/core';
2
- import { Router } from '@angular/router';
3
- import { ClipboardService } from '../../aigc/comp-markdown-preview/clipboard.service';
4
- import { WechatJssdkService } from '../../social/wechat/wechat-jssdk.service';
5
- import Parse from "parse";
6
- import { taskArticleGeneration } from './task-article-generation';
7
- import { MatDialog } from '@angular/material/dialog';
8
- import { ModalController } from '@ionic/angular/standalone';
9
- import { PersonService } from '../../person/person.service';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "@angular/router";
12
- import * as i2 from "../../social/wechat/wechat-jssdk.service";
13
- import * as i3 from "../../aigc/comp-markdown-preview/clipboard.service";
14
- import * as i4 from "@angular/material/dialog";
15
- import * as i5 from "@ionic/angular/standalone";
16
- import * as i6 from "../../person/person.service";
17
- export class ArticleService {
18
- constructor(router, wxjssdk, clipboard, dialog, modalCtrl, personServ) {
19
- this.router = router;
20
- this.wxjssdk = wxjssdk;
21
- this.clipboard = clipboard;
22
- this.dialog = dialog;
23
- this.modalCtrl = modalCtrl;
24
- this.personServ = personServ;
25
- this.Article = Parse.Object.extend("Article");
26
- this.articleList = [];
27
- this.limit = 20;
28
- this.skip = 0;
29
- // 点赞文章 + 收藏文章
30
- this.likeMap = {};
31
- this.ArticleLike = Parse.Object.extend("ArticleLike");
32
- // 收藏文章
33
- this.collectMap = {};
34
- }
35
- async loadArticle(options) {
36
- options.currentTab = options.currentTab || "article";
37
- options.isNew = options.isNew || false;
38
- if (!Parse.User.current()?.id)
39
- return [];
40
- if (options?.isNew) {
41
- this.articleList = [];
42
- this.skip = 0;
43
- }
44
- else {
45
- this.skip += this.articleList?.length;
46
- }
47
- let query = new Parse.Query("Article");
48
- query.include('chapter.book.person', 'author.user');
49
- query.addDescending("createdAt"); // 站内文章按创建时间排序
50
- query.skip(this.skip);
51
- query.notEqualTo("isDeleted", true);
52
- if (options?.currentTab == "mine") {
53
- query.equalTo("author", Parse.User?.current()?.id);
54
- }
55
- else {
56
- query.equalTo("isPublic", true);
57
- }
58
- let list = await query.find();
59
- this.loadArtcleAnalysis(list); // 加载点赞、收藏状态
60
- if (this.articleList?.length) {
61
- this.articleList = this.articleList.concat(list);
62
- }
63
- else {
64
- this.articleList = list;
65
- }
66
- return this.articleList;
67
- }
68
- async createArticle(options) {
69
- let article = new this.Article();
70
- article.set("title", this.newTitle());
71
- // 补充帐套
72
- let cid = localStorage.getItem("company");
73
- if (cid) {
74
- article?.set("company", { __type: "Pointer", className: "Company", objectId: cid });
75
- }
76
- // 补充作者
77
- if (!article?.get("author")?.id) {
78
- article?.set("author", Parse.User.current()?.toPointer());
79
- }
80
- article = await article?.save();
81
- if (!options?.noRedirect) {
82
- this.router.navigate(["editor", "article", article?.id]);
83
- }
84
- return article;
85
- }
86
- async newArticleByStory() {
87
- let shareData = {};
88
- shareData.createNewDraft = true;
89
- let article = await this.createArticle({ noRedirect: true });
90
- taskArticleGeneration(() => { }, {
91
- dialog: this.dialog,
92
- modalCtrl: this.modalCtrl,
93
- shareData: shareData,
94
- article: article,
95
- personServ: this.personServ
96
- });
97
- }
98
- newTitle() {
99
- let now = new Date();
100
- return `${now.getFullYear()}-${now.getMonth() + 1}-${now.getDate()}-新创作`;
101
- }
102
- // 分享文章
103
- async shareArticle(article) {
104
- if (!article?.id)
105
- return;
106
- let banners = this.getArticleBanner(article);
107
- let link = "https://www.yuban.co/app/article/" + article?.id + "?invite=" + Parse.User.current()?.id;
108
- // 微信设置朋友圈分享
109
- if (this.wxjssdk.isWechat) {
110
- this.initWxShareInfo(article);
111
- }
112
- else {
113
- // 普通复制链接地址
114
- let shareText = `${article?.get("title")} ${link} POWERED BY 自传语伴`;
115
- this.clipboard.copyToClipboard(shareText);
116
- }
117
- }
118
- initWxShareInfo(article) {
119
- let banners = this.getArticleBanner(article);
120
- let avatar = Parse.User.current()?.get("avatar");
121
- let link = "https://www.yuban.co/app/article/" + article?.id + "?invite=" + Parse.User.current()?.id;
122
- // 微信设置朋友圈分享
123
- if (this.wxjssdk.isWechat) {
124
- let shareInfo = {
125
- title: article?.get("title"),
126
- desc: article?.get("desc"),
127
- link: link,
128
- type: "link",
129
- imgUrl: banners[0] || avatar || "https://file.yuban.co/img/icon.png",
130
- success: () => {
131
- // 设置成功
132
- console.log('分享成功');
133
- },
134
- error: () => {
135
- console.log('分享失败');
136
- },
137
- cancel: () => {
138
- console.log('取消分享');
139
- }
140
- };
141
- this.wxjssdk.setCurrentPageShareInfo(shareInfo);
142
- }
143
- }
144
- // 获取文章轮播图
145
- getArticleBanner(article) {
146
- let bannerList = [];
147
- let image = article?.get("image");
148
- if (image)
149
- bannerList.push(image);
150
- bannerList = bannerList.concat(article?.get("cover") || []);
151
- console.log("bannerList", bannerList);
152
- return bannerList;
153
- }
154
- // 加载likeMap collectMap
155
- async loadArtcleAnalysis(articleList) {
156
- let uid = Parse.User.current()?.id;
157
- if (!uid)
158
- return;
159
- let query = new Parse.Query("ArticleLike");
160
- query.select("article", "type");
161
- query.equalTo("user", uid);
162
- query.notEqualTo("isDeleted", true);
163
- query.containedIn("article", articleList?.map(item => item?.id));
164
- let list = await query.find();
165
- list.forEach(item => {
166
- let aid = item?.get("article")?.id || item?.get("article")?.objectId;
167
- if (item?.get("type") == "collect") {
168
- this.collectMap[aid] = true;
169
- }
170
- if (item?.get("type") == "like") {
171
- this.likeMap[aid] = true;
172
- }
173
- });
174
- }
175
- // 浏览文章
176
- viewArticle(article) {
177
- if (!article?.id)
178
- return;
179
- article.increment("viewCount");
180
- article.save();
181
- }
182
- async likeArticle(article, type = "like") {
183
- if (!article?.id)
184
- return;
185
- if (Parse.User.current()?.id) {
186
- let query = new Parse.Query("ArticleLike");
187
- query.equalTo("user", Parse.User.current());
188
- query.equalTo("type", type);
189
- query.equalTo("article", article?.id);
190
- let like = await query.first();
191
- if (!like?.id) {
192
- like = new this.ArticleLike();
193
- }
194
- // 设置点赞
195
- like?.set("type", type);
196
- like?.set("user", Parse.User.current());
197
- like?.set("article", article.toPointer());
198
- if (like?.get("isDeleted") == undefined) {
199
- like?.set("isDeleted", false);
200
- }
201
- else {
202
- like?.set("isDeleted", !like.get("isDeleted"));
203
- }
204
- if (localStorage.getItem("company")) {
205
- like?.set("company", { __type: "Pointer", className: "Company", objectId: localStorage.getItem("company") });
206
- }
207
- like = await like?.save();
208
- if (type == "like") {
209
- this.likeMap[article?.id] = !like?.get("isDeleted");
210
- }
211
- if (type == "collect") {
212
- this.collectMap[article?.id] = !like?.get("isDeleted");
213
- }
214
- // 同步点赞数
215
- let qcount = new Parse.Query("ArticleLike");
216
- qcount.notEqualTo("isDeleted", true);
217
- qcount.equalTo("type", type);
218
- qcount.equalTo("article", article?.id);
219
- if (type == "like") {
220
- article.set("likeCount", (await qcount.count()) || 0);
221
- }
222
- if (type == "collect") {
223
- article.set("collectCount", (await qcount.count()) || 0);
224
- }
225
- article = await article.save();
226
- }
227
- }
228
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ArticleService, deps: [{ token: i1.Router }, { token: i2.WechatJssdkService }, { token: i3.ClipboardService }, { token: i4.MatDialog }, { token: i5.ModalController }, { token: i6.PersonService }], target: i0.ɵɵFactoryTarget.Injectable }); }
229
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ArticleService, providedIn: 'root' }); }
230
- }
231
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ArticleService, decorators: [{
232
- type: Injectable,
233
- args: [{
234
- providedIn: 'root'
235
- }]
236
- }], ctorParameters: () => [{ type: i1.Router }, { type: i2.WechatJssdkService }, { type: i3.ClipboardService }, { type: i4.MatDialog }, { type: i5.ModalController }, { type: i6.PersonService }] });
237
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJ0aWNsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm1vZGUtbmcvc3JjL2xpYi90ZXh0L2ZtLWFydGljbGUtZWRpdG9yL2FydGljbGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUN0RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUM5RSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUM7QUFDMUIsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7Ozs7Ozs7O0FBSzVELE1BQU0sT0FBTyxjQUFjO0lBR3pCLFlBQ1UsTUFBYSxFQUNiLE9BQTJCLEVBQzNCLFNBQTBCLEVBQzFCLE1BQWdCLEVBQ2hCLFNBQXlCLEVBQ3pCLFVBQXdCO1FBTHhCLFdBQU0sR0FBTixNQUFNLENBQU87UUFDYixZQUFPLEdBQVAsT0FBTyxDQUFvQjtRQUMzQixjQUFTLEdBQVQsU0FBUyxDQUFpQjtRQUMxQixXQUFNLEdBQU4sTUFBTSxDQUFVO1FBQ2hCLGNBQVMsR0FBVCxTQUFTLENBQWdCO1FBQ3pCLGVBQVUsR0FBVixVQUFVLENBQWM7UUFQbEMsWUFBTyxHQUEyQixLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQVU5RCxnQkFBVyxHQUFxQixF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Q0FBQyxNQUFNLEVBQUMsSUFBSSxDQUFDLENBQUM7WUFDNUIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3RDLElBQUcsSUFBSSxJQUFFLE1BQU0sRUFBQyxDQUFDO2dCQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFDLENBQUMsTUFBTSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBRSxDQUFDLENBQUMsQ0FBQztZQUNyRCxDQUFDO1lBQ0QsSUFBRyxJQUFJLElBQUUsU0FBUyxFQUFDLENBQUM7Z0JBQ2xCLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFDLENBQUMsTUFBTSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBRSxDQUFDLENBQUMsQ0FBQztZQUN4RCxDQUFDO1lBQ0QsT0FBTyxHQUFHLE1BQU0sT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRWpDLENBQUM7SUFDSCxDQUFDOytHQTNOVSxjQUFjO21IQUFkLGNBQWMsY0FGYixNQUFNOzs0RkFFUCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgQ2xpcGJvYXJkU2VydmljZSB9IGZyb20gJy4uLy4uL2FpZ2MvY29tcC1tYXJrZG93bi1wcmV2aWV3L2NsaXBib2FyZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgV2VjaGF0SnNzZGtTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc29jaWFsL3dlY2hhdC93ZWNoYXQtanNzZGsuc2VydmljZSc7XHJcbmltcG9ydCBQYXJzZSBmcm9tIFwicGFyc2VcIjtcclxuaW1wb3J0IHsgdGFza0FydGljbGVHZW5lcmF0aW9uIH0gZnJvbSAnLi90YXNrLWFydGljbGUtZ2VuZXJhdGlvbic7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IE1vZGFsQ29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xyXG5pbXBvcnQgeyBQZXJzb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vcGVyc29uL3BlcnNvbi5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIEFydGljbGVTZXJ2aWNlIHtcclxuXHJcbiAgQXJ0aWNsZTpQYXJzZS5PYmplY3RDb25zdHJ1Y3RvciA9IFBhcnNlLk9iamVjdC5leHRlbmQoXCJBcnRpY2xlXCIpXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJvdXRlcjpSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHd4anNzZGs6IFdlY2hhdEpzc2RrU2VydmljZSxcclxuICAgIHByaXZhdGUgY2xpcGJvYXJkOkNsaXBib2FyZFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRpYWxvZzpNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIG1vZGFsQ3RybDpNb2RhbENvbnRyb2xsZXIsXHJcbiAgICBwcml2YXRlIHBlcnNvblNlcnY6UGVyc29uU2VydmljZSxcclxuICAgICkgeyB9XHJcblxyXG4gICAgYXJ0aWNsZUxpc3Q6QXJyYXk8UGFyc2UuT2JqZWN0Pj1bXVxyXG4gICAgbGltaXQ6bnVtYmVyID0gMjA7XHJcbiAgICBza2lwOm51bWJlciA9IDA7XHJcbiAgICBhc3luYyBsb2FkQXJ0aWNsZShvcHRpb25zOntcclxuICAgICAgY3VycmVudFRhYjpzdHJpbmdcclxuICAgICAgaXNOZXc6Ym9vbGVhblxyXG4gICAgfSk6UHJvbWlzZTxBcnJheTxQYXJzZS5PYmplY3Q+PntcclxuICAgICAgb3B0aW9ucy5jdXJyZW50VGFiID0gb3B0aW9ucy5jdXJyZW50VGFiIHx8IFwiYXJ0aWNsZVwiO1xyXG4gICAgICBvcHRpb25zLmlzTmV3ID0gb3B0aW9ucy5pc05ldyB8fCBmYWxzZTtcclxuICAgICAgaWYoIVBhcnNlLlVzZXIuY3VycmVudCgpPy5pZCkgcmV0dXJuIFtdO1xyXG4gICAgICBpZihvcHRpb25zPy5pc05ldyl7XHJcbiAgICAgICAgdGhpcy5hcnRpY2xlTGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMuc2tpcCA9IDA7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIHRoaXMuc2tpcCArPSB0aGlzLmFydGljbGVMaXN0Py5sZW5ndGhcclxuICAgICAgfVxyXG4gICAgICBsZXQgcXVlcnkgPSBuZXcgUGFyc2UuUXVlcnkoXCJBcnRpY2xlXCIpO1xyXG4gICAgICBxdWVyeS5pbmNsdWRlKCdjaGFwdGVyLmJvb2sucGVyc29uJywnYXV0aG9yLnVzZXInKVxyXG4gICAgICBxdWVyeS5hZGREZXNjZW5kaW5nKFwiY3JlYXRlZEF0XCIpOyAvLyDnq5nlhoXmlofnq6DmjInliJvlu7rml7bpl7TmjpLluo9cclxuICAgICAgcXVlcnkuc2tpcCh0aGlzLnNraXApO1xyXG4gICAgICBxdWVyeS5ub3RFcXVhbFRvKFwiaXNEZWxldGVkXCIsdHJ1ZSlcclxuICAgICAgaWYob3B0aW9ucz8uY3VycmVudFRhYj09XCJtaW5lXCIpe1xyXG4gICAgICAgIHF1ZXJ5LmVxdWFsVG8oXCJhdXRob3JcIixQYXJzZS5Vc2VyPy5jdXJyZW50KCk/LmlkKVxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBxdWVyeS5lcXVhbFRvKFwiaXNQdWJsaWNcIix0cnVlKTtcclxuICAgICAgfVxyXG4gIFxyXG4gICAgICBsZXQgbGlzdCA9IGF3YWl0IHF1ZXJ5LmZpbmQoKTtcclxuICAgICAgdGhpcy5sb2FkQXJ0Y2xlQW5hbHlzaXMobGlzdCk7IC8vIOWKoOi9veeCuei1nuOAgeaUtuiXj+eKtuaAgVxyXG4gICAgICBpZih0aGlzLmFydGljbGVMaXN0Py5sZW5ndGgpe1xyXG4gICAgICAgIHRoaXMuYXJ0aWNsZUxpc3QgPSB0aGlzLmFydGljbGVMaXN0LmNvbmNhdChsaXN0KTtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgdGhpcy5hcnRpY2xlTGlzdCA9IGxpc3Q7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHRoaXMuYXJ0aWNsZUxpc3Q7XHJcbiAgICB9XHJcblxyXG4gIGFzeW5jIGNyZWF0ZUFydGljbGUob3B0aW9ucz86e1xyXG4gICAgbm9SZWRpcmVjdDpib29sZWFuXHJcbiAgfSl7XHJcbiAgICBsZXQgYXJ0aWNsZSA9IG5ldyB0aGlzLkFydGljbGUoKTtcclxuICAgIGFydGljbGUuc2V0KFwidGl0bGVcIix0aGlzLm5ld1RpdGxlKCkpXHJcbiAgICBcclxuICAgIC8vIOihpeWFheW4kOWll1xyXG4gICAgbGV0IGNpZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwiY29tcGFueVwiKTtcclxuICAgIGlmKGNpZCl7XHJcbiAgICAgIGFydGljbGU/LnNldChcImNvbXBhbnlcIix7X190eXBlOlwiUG9pbnRlclwiLGNsYXNzTmFtZTpcIkNvbXBhbnlcIixvYmplY3RJZDpjaWR9KVxyXG4gICAgfVxyXG4gICAgLy8g6KGl5YWF5L2c6ICFXHJcbiAgICBpZighYXJ0aWNsZT8uZ2V0KFwiYXV0aG9yXCIpPy5pZCl7XHJcbiAgICAgIGFydGljbGU/LnNldChcImF1dGhvclwiLFBhcnNlLlVzZXIuY3VycmVudCgpPy50b1BvaW50ZXIoKSlcclxuICAgIH1cclxuICAgIGFydGljbGUgPSBhd2FpdCBhcnRpY2xlPy5zYXZlKCk7XHJcblxyXG4gICAgaWYoIW9wdGlvbnM/Lm5vUmVkaXJlY3Qpe1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJlZGl0b3JcIixcImFydGljbGVcIixhcnRpY2xlPy5pZF0pXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGFydGljbGVcclxuICB9XHJcbiAgYXN5bmMgbmV3QXJ0aWNsZUJ5U3RvcnkoKXtcclxuICAgIFxyXG4gICAgbGV0IHNoYXJlRGF0YTphbnkgPSB7fVxyXG4gICAgc2hhcmVEYXRhLmNyZWF0ZU5ld0RyYWZ0ID0gdHJ1ZVxyXG4gICAgbGV0IGFydGljbGU6YW55ID0gYXdhaXQgdGhpcy5jcmVhdGVBcnRpY2xlKHtub1JlZGlyZWN0OnRydWV9KVxyXG4gICAgdGFza0FydGljbGVHZW5lcmF0aW9uKCgpPT57fSx7XHJcbiAgICAgIGRpYWxvZzp0aGlzLmRpYWxvZyxcclxuICAgICAgbW9kYWxDdHJsOnRoaXMubW9kYWxDdHJsLFxyXG4gICAgICBzaGFyZURhdGE6c2hhcmVEYXRhLFxyXG4gICAgICBhcnRpY2xlOmFydGljbGUsXHJcbiAgICAgIHBlcnNvblNlcnY6dGhpcy5wZXJzb25TZXJ2XHJcbiAgICB9KVxyXG4gIH1cclxuICBuZXdUaXRsZSgpe1xyXG4gICAgbGV0IG5vdyA9IG5ldyBEYXRlKClcclxuICAgIHJldHVybiBgJHtub3cuZ2V0RnVsbFllYXIoKX0tJHtub3cuZ2V0TW9udGgoKSsxfS0ke25vdy5nZXREYXRlKCl9LeaWsOWIm+S9nGBcclxuICB9XHJcblxyXG4gIC8vIOWIhuS6q+aWh+eroFxyXG4gIGFzeW5jIHNoYXJlQXJ0aWNsZShhcnRpY2xlPzpQYXJzZS5PYmplY3Qpe1xyXG4gICAgaWYoIWFydGljbGU/LmlkKSByZXR1cm5cclxuICAgIGxldCBiYW5uZXJzID0gdGhpcy5nZXRBcnRpY2xlQmFubmVyKGFydGljbGUpXHJcbiAgICBsZXQgbGluayA9IFwiaHR0cHM6Ly93d3cueXViYW4uY28vYXBwL2FydGljbGUvXCIrYXJ0aWNsZT8uaWQrXCI/aW52aXRlPVwiK1BhcnNlLlVzZXIuY3VycmVudCgpPy5pZFxyXG4gICAgLy8g5b6u5L+h6K6+572u5pyL5Y+L5ZyI5YiG5LqrXHJcbiAgICBpZih0aGlzLnd4anNzZGsuaXNXZWNoYXQpe1xyXG4gICAgICB0aGlzLmluaXRXeFNoYXJlSW5mbyhhcnRpY2xlKTtcclxuICAgIH1lbHNle1xyXG4gICAgICAvLyDmma7pgJrlpI3liLbpk77mjqXlnLDlnYBcclxuICAgICAgbGV0IHNoYXJlVGV4dCA9IGAke2FydGljbGU/LmdldChcInRpdGxlXCIpfSAke2xpbmt9IFBPV0VSRUQgQlkg6Ieq5Lyg6K+t5Ly0YFxyXG4gICAgICB0aGlzLmNsaXBib2FyZC5jb3B5VG9DbGlwYm9hcmQoc2hhcmVUZXh0KVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaW5pdFd4U2hhcmVJbmZvKGFydGljbGU6UGFyc2UuT2JqZWN0KXtcclxuICAgICAgbGV0IGJhbm5lcnMgPSB0aGlzLmdldEFydGljbGVCYW5uZXIoYXJ0aWNsZSlcclxuICAgICAgbGV0IGF2YXRhciA9IFBhcnNlLlVzZXIuY3VycmVudCgpPy5nZXQoXCJhdmF0YXJcIilcclxuICAgICAgbGV0IGxpbmsgPSBcImh0dHBzOi8vd3d3Lnl1YmFuLmNvL2FwcC9hcnRpY2xlL1wiK2FydGljbGU/LmlkK1wiP2ludml0ZT1cIitQYXJzZS5Vc2VyLmN1cnJlbnQoKT8uaWRcclxuICAgICAgLy8g5b6u5L+h6K6+572u5pyL5Y+L5ZyI5YiG5LqrXHJcbiAgICAgIGlmKHRoaXMud3hqc3Nkay5pc1dlY2hhdCl7XHJcbiAgICAgICAgbGV0IHNoYXJlSW5mbyA9IHtcclxuICAgICAgICAgICAgdGl0bGU6IGFydGljbGU/LmdldChcInRpdGxlXCIpLFxyXG4gICAgICAgICAgICBkZXNjOiBhcnRpY2xlPy5nZXQoXCJkZXNjXCIpLFxyXG4gICAgICAgICAgICBsaW5rOiBsaW5rLFxyXG4gICAgICAgICAgICB0eXBlOiBcImxpbmtcIixcclxuICAgICAgICAgICAgaW1nVXJsOiBiYW5uZXJzWzBdIHx8IGF2YXRhciB8fFwiaHR0cHM6Ly9maWxlLnl1YmFuLmNvL2ltZy9pY29uLnBuZ1wiLFxyXG4gICAgICAgICAgICBzdWNjZXNzOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgLy8g6K6+572u5oiQ5YqfXHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coJ+WIhuS6q+aIkOWKnycpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKCfliIbkuqvlpLHotKUnKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgY2FuY2VsOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coJ+WPlua2iOWIhuS6qycpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgdGhpcy53eGpzc2RrLnNldEN1cnJlbnRQYWdlU2hhcmVJbmZvKHNoYXJlSW5mbylcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIOiOt+WPluaWh+eroOi9ruaSreWbvlxyXG4gIGdldEFydGljbGVCYW5uZXIoYXJ0aWNsZT86UGFyc2UuT2JqZWN0KXtcclxuICAgIGxldCBiYW5uZXJMaXN0OnN0cmluZ1tdID0gW11cclxuICAgIGxldCBpbWFnZTpzdHJpbmcgPSBhcnRpY2xlPy5nZXQoXCJpbWFnZVwiKSBcclxuICAgIGlmKGltYWdlKSBiYW5uZXJMaXN0LnB1c2goaW1hZ2UpO1xyXG4gICAgYmFubmVyTGlzdCA9IGJhbm5lckxpc3QuY29uY2F0KGFydGljbGU/LmdldChcImNvdmVyXCIpIHx8IFtdKVxyXG4gICAgY29uc29sZS5sb2coXCJiYW5uZXJMaXN0XCIsYmFubmVyTGlzdClcclxuICAgIHJldHVybiBiYW5uZXJMaXN0XHJcbiAgfVxyXG5cclxuICAvLyDliqDovb1saWtlTWFwIGNvbGxlY3RNYXBcclxuICBhc3luYyBsb2FkQXJ0Y2xlQW5hbHlzaXMoYXJ0aWNsZUxpc3Q6UGFyc2UuT2JqZWN0W10pe1xyXG4gICAgbGV0IHVpZCA9IFBhcnNlLlVzZXIuY3VycmVudCgpPy5pZFxyXG4gICAgaWYoIXVpZCkgcmV0dXJuXHJcbiAgICBsZXQgcXVlcnkgPSBuZXcgUGFyc2UuUXVlcnkoXCJBcnRpY2xlTGlrZVwiKTtcclxuICAgIHF1ZXJ5LnNlbGVjdChcImFydGljbGVcIixcInR5cGVcIilcclxuICAgIHF1ZXJ5LmVxdWFsVG8oXCJ1c2VyXCIsdWlkKVxyXG4gICAgcXVlcnkubm90RXF1YWxUbyhcImlzRGVsZXRlZFwiLHRydWUpXHJcbiAgICBxdWVyeS5jb250YWluZWRJbihcImFydGljbGVcIixhcnRpY2xlTGlzdD8ubWFwKGl0ZW09Pml0ZW0/LmlkKSk7XHJcbiAgICBsZXQgbGlzdCA9IGF3YWl0IHF1ZXJ5LmZpbmQoKTtcclxuICAgIGxpc3QuZm9yRWFjaChpdGVtPT57XHJcbiAgICAgIGxldCBhaWQgPSBpdGVtPy5nZXQoXCJhcnRpY2xlXCIpPy5pZCB8fCBpdGVtPy5nZXQoXCJhcnRpY2xlXCIpPy5vYmplY3RJZFxyXG4gICAgICBpZihpdGVtPy5nZXQoXCJ0eXBlXCIpPT1cImNvbGxlY3RcIil7XHJcbiAgICAgICAgdGhpcy5jb2xsZWN0TWFwW2FpZF0gPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGlmKGl0ZW0/LmdldChcInR5cGVcIik9PVwibGlrZVwiKXtcclxuICAgICAgICB0aGlzLmxpa2VNYXBbYWlkXSA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG4gIC8vIOa1j+iniOaWh+eroFxyXG4gIHZpZXdBcnRpY2xlKGFydGljbGU6UGFyc2UuT2JqZWN0KXtcclxuICAgIGlmKCFhcnRpY2xlPy5pZCkgcmV0dXJuXHJcbiAgICBhcnRpY2xlLmluY3JlbWVudChcInZpZXdDb3VudFwiKTtcclxuICAgIGFydGljbGUuc2F2ZSgpO1xyXG4gIH1cclxuICAvLyDngrnotZ7mlofnq6AgKyDmlLbol4/mlofnq6BcclxuICBsaWtlTWFwOmFueSA9IHt9XHJcbiAgQXJ0aWNsZUxpa2UgPSBQYXJzZS5PYmplY3QuZXh0ZW5kKFwiQXJ0aWNsZUxpa2VcIik7XHJcbiAgYXN5bmMgbGlrZUFydGljbGUoYXJ0aWNsZT86UGFyc2UuT2JqZWN0LHR5cGU6c3RyaW5nPVwibGlrZVwiKXtcclxuICAgIGlmKCFhcnRpY2xlPy5pZCkgcmV0dXJuXHJcbiAgICBpZihQYXJzZS5Vc2VyLmN1cnJlbnQoKT8uaWQpe1xyXG4gICAgICBsZXQgcXVlcnkgPSBuZXcgUGFyc2UuUXVlcnkoXCJBcnRpY2xlTGlrZVwiKVxyXG4gICAgICBxdWVyeS5lcXVhbFRvKFwidXNlclwiLFBhcnNlLlVzZXIuY3VycmVudCgpKTtcclxuICAgICAgcXVlcnkuZXF1YWxUbyhcInR5cGVcIix0eXBlKTtcclxuICAgICAgcXVlcnkuZXF1YWxUbyhcImFydGljbGVcIixhcnRpY2xlPy5pZCk7XHJcbiAgICAgIGxldCBsaWtlOlBhcnNlLk9iamVjdHx1bmRlZmluZWQgPSBhd2FpdCBxdWVyeS5maXJzdCgpO1xyXG4gICAgICBpZighbGlrZT8uaWQpe1xyXG4gICAgICAgIGxpa2UgPSBuZXcgdGhpcy5BcnRpY2xlTGlrZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIOiuvue9rueCuei1nlxyXG4gICAgICBsaWtlPy5zZXQoXCJ0eXBlXCIsdHlwZSk7XHJcbiAgICAgIGxpa2U/LnNldChcInVzZXJcIixQYXJzZS5Vc2VyLmN1cnJlbnQoKSk7XHJcbiAgICAgIGxpa2U/LnNldChcImFydGljbGVcIixhcnRpY2xlLnRvUG9pbnRlcigpKTtcclxuXHJcbiAgICAgIGlmKGxpa2U/LmdldChcImlzRGVsZXRlZFwiKSA9PSB1bmRlZmluZWQpe1xyXG4gICAgICAgIGxpa2U/LnNldChcImlzRGVsZXRlZFwiLGZhbHNlKTtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgbGlrZT8uc2V0KFwiaXNEZWxldGVkXCIsIWxpa2UuZ2V0KFwiaXNEZWxldGVkXCIpKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjb21wYW55XCIpKXtcclxuICAgICAgICBsaWtlPy5zZXQoXCJjb21wYW55XCIse19fdHlwZTpcIlBvaW50ZXJcIixjbGFzc05hbWU6XCJDb21wYW55XCIsb2JqZWN0SWQ6bG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjb21wYW55XCIpfSlcclxuICAgICAgfVxyXG4gICAgICBsaWtlID0gYXdhaXQgbGlrZT8uc2F2ZSgpXHJcbiAgICAgIGlmKHR5cGU9PVwibGlrZVwiKXtcclxuICAgICAgICB0aGlzLmxpa2VNYXBbYXJ0aWNsZT8uaWRdID0gIWxpa2U/LmdldChcImlzRGVsZXRlZFwiKTtcclxuICAgICAgfVxyXG4gICAgICBpZih0eXBlPT1cImNvbGxlY3RcIil7XHJcbiAgICAgICAgdGhpcy5jb2xsZWN0TWFwW2FydGljbGU/LmlkXSA9ICFsaWtlPy5nZXQoXCJpc0RlbGV0ZWRcIik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIOWQjOatpeeCuei1nuaVsFxyXG4gICAgICBsZXQgcWNvdW50ID0gbmV3IFBhcnNlLlF1ZXJ5KFwiQXJ0aWNsZUxpa2VcIik7XHJcbiAgICAgIHFjb3VudC5ub3RFcXVhbFRvKFwiaXNEZWxldGVkXCIsdHJ1ZSk7XHJcbiAgICAgIHFjb3VudC5lcXVhbFRvKFwidHlwZVwiLHR5cGUpO1xyXG4gICAgICBxY291bnQuZXF1YWxUbyhcImFydGljbGVcIixhcnRpY2xlPy5pZCk7XHJcbiAgICAgIGlmKHR5cGU9PVwibGlrZVwiKXtcclxuICAgICAgICBhcnRpY2xlLnNldChcImxpa2VDb3VudFwiLChhd2FpdCBxY291bnQuY291bnQoKSl8fDApO1xyXG4gICAgICB9XHJcbiAgICAgIGlmKHR5cGU9PVwiY29sbGVjdFwiKXtcclxuICAgICAgICBhcnRpY2xlLnNldChcImNvbGxlY3RDb3VudFwiLChhd2FpdCBxY291bnQuY291bnQoKSl8fDApO1xyXG4gICAgICB9XHJcbiAgICAgIGFydGljbGUgPSBhd2FpdCBhcnRpY2xlLnNhdmUoKTtcclxuICAgXHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vIOaUtuiXj+aWh+eroFxyXG4gIGNvbGxlY3RNYXA6YW55ID0ge31cclxuICAvLyBBcnRpY2xlQ29sbGVjdCA9IFBhcnNlLk9iamVjdC5leHRlbmQoXCJBcnRpY2xlQ29sbGVjdFwiKTtcclxuICAvLyBhc3luYyBjb2xsZWN0QXJ0aWNsZShhcnRpY2xlPzpQYXJzZS5PYmplY3Qpe1xyXG4gIC8vICAgaWYoIWFydGljbGU/LmlkKSByZXR1cm5cclxuICAvLyAgIGlmKFBhcnNlLlVzZXIuY3VycmVudCgpPy5pZCl7XHJcbiAgLy8gICAgIGxldCBxdWVyeSA9IG5ldyBQYXJzZS5RdWVyeShcIkFydGljbGVDb2xsZWN0XCIpXHJcbiAgLy8gICAgIHF1ZXJ5LmVxdWFsVG8oXCJ1c2VyXCIsUGFyc2UuVXNlci5jdXJyZW50KCkpO1xyXG4gIC8vICAgICBxdWVyeS5lcXVhbFRvKFwiYXJ0aWNsZVwiLGFydGljbGU/LmlkKTtcclxuICAvLyAgICAgbGV0IGNvbGxlY3Q6UGFyc2UuT2JqZWN0fHVuZGVmaW5lZCA9IGF3YWl0IHF1ZXJ5LmZpcnN0KCk7XHJcbiAgLy8gICAgIGlmKCFjb2xsZWN0Py5pZCl7XHJcbiAgLy8gICAgICAgY29sbGVjdCA9IG5ldyB0aGlzLkFydGljbGVDb2xsZWN0KCk7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgICAgLy8g6K6+572u54K56LWeXHJcbiAgLy8gICAgIGNvbGxlY3Q/LnNldChcInVzZXJcIixQYXJzZS5Vc2VyLmN1cnJlbnQoKSk7XHJcbiAgLy8gICAgIGNvbGxlY3Q/LnNldChcImFydGljbGVcIixhcnRpY2xlLnRvUG9pbnRlcigpKTtcclxuXHJcbiAgLy8gICAgIGlmKGNvbGxlY3Q/LmdldChcImlzRGVsZXRlZFwiKSA9PSB1bmRlZmluZWQpe1xyXG4gIC8vICAgICAgIGNvbGxlY3Q/LnNldChcImlzRGVsZXRlZFwiLGZhbHNlKTtcclxuICAvLyAgICAgfWVsc2V7XHJcbiAgLy8gICAgICAgY29sbGVjdD8uc2V0KFwiaXNEZWxldGVkXCIsIWNvbGxlY3QuZ2V0KFwiaXNEZWxldGVkXCIpKTtcclxuICAvLyAgICAgfVxyXG5cclxuICAvLyAgICAgaWYobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjb21wYW55XCIpKXtcclxuICAvLyAgICAgICBjb2xsZWN0Py5zZXQoXCJjb21wYW55XCIse19fdHlwZTpcIlBvaW50ZXJcIixjbGFzc05hbWU6XCJDb21wYW55XCIsb2JqZWN0SWQ6bG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJjb21wYW55XCIpfSlcclxuICAvLyAgICAgfVxyXG4gIC8vICAgICBjb2xsZWN0ID0gYXdhaXQgY29sbGVjdD8uc2F2ZSgpXHJcbiAgLy8gICAgIHRoaXMuY29sbGVjdE1hcFthcnRpY2xlPy5pZF0gPSAhY29sbGVjdD8uZ2V0KFwiaXNEZWxldGVkXCIpO1xyXG5cclxuICAvLyAgICAgLy8g5ZCM5q2l54K56LWe5pWwXHJcbiAgLy8gICAgIGxldCBxY291bnQgPSBuZXcgUGFyc2UuUXVlcnkoXCJBcnRpY2xlQ29sbGVjdFwiKTtcclxuICAvLyAgICAgcWNvdW50Lm5vdEVxdWFsVG8oXCJpc0RlbGV0ZWRcIix0cnVlKTtcclxuICAvLyAgICAgcWNvdW50LmVxdWFsVG8oXCJhcnRpY2xlXCIsYXJ0aWNsZT8uaWQpO1xyXG4gIC8vICAgICBhcnRpY2xlLnNldChcImNvbGxlY3RDb3VudFwiLChhd2FpdCBxY291bnQuY291bnQoKSl8fDApO1xyXG4gIC8vICAgICBhcnRpY2xlID0gYXdhaXQgYXJ0aWNsZS5zYXZlKCk7XHJcbiAgIFxyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxufVxyXG4iXX0=
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.service.mjs
7
+ */
8
+ import{Injectable}from"@angular/core";import{Router}from"@angular/router";import{ClipboardService}from"../../aigc/comp-markdown-preview/clipboard.service";import{WechatJssdkService}from"../../social/wechat/wechat-jssdk.service";import{FmodeParse}from"@fmode/parse";import{taskArticleGeneration}from"./task-article-generation";import{MatDialog}from"@angular/material/dialog";import{ModalController}from"@ionic/angular/standalone";import{PersonService}from"../../person/person.service";import*as i0 from"@angular/core";import*as i1 from"@angular/router";import*as i2 from"../../social/wechat/wechat-jssdk.service";import*as i3 from"../../aigc/comp-markdown-preview/clipboard.service";import*as i4 from"@angular/material/dialog";import*as i5 from"@ionic/angular/standalone";import*as i6 from"../../person/person.service";const Parse=FmodeParse.with("nova");export class ArticleService{constructor(e,t,i,r,a,s){this.router=e,this.wxjssdk=t,this.clipboard=i,this.dialog=r,this.modalCtrl=a,this.personServ=s,this.Article=new Parse.Object("Article"),this.articleList=[],this.limit=20,this.skip=0,this.likeMap={},this.ArticleLike=Parse.Object.extend("ArticleLike"),this.collectMap={}}async loadArticle(e){if(e.currentTab=e.currentTab||"article",e.isNew=e.isNew||!1,!Parse.User.current()?.id)return[];e?.isNew?(this.articleList=[],this.skip=0):this.skip+=this.articleList?.length;let t=new Parse.Query("Article");t.include("chapter.book.person","author.user"),t.addDescending("createdAt"),t.skip(this.skip),t.notEqualTo("isDeleted",!0),"mine"==e?.currentTab?t.equalTo("author",Parse.User?.current()?.id):t.equalTo("isPublic",!0);let i=await t.find();return this.loadArtcleAnalysis(i),this.articleList?.length?this.articleList=this.articleList.concat(i):this.articleList=i,this.articleList}async createArticle(e){let t=new Parse.Object("Article");t.set("title",this.newTitle());let i=localStorage.getItem("company");return i&&t?.set("company",{__type:"Pointer",className:"Company",objectId:i}),t?.get("author")?.id||t?.set("author",Parse.User.current()?.toPointer()),t=await(t?.save()),e?.noRedirect||this.router.navigate(["editor","article",t?.id]),t}async newArticleByStory(){let e={createNewDraft:!0},t=await this.createArticle({noRedirect:!0});taskArticleGeneration((()=>{}),{dialog:this.dialog,modalCtrl:this.modalCtrl,shareData:e,article:t,personServ:this.personServ})}newTitle(){let e=new Date;return`${e.getFullYear()}-${e.getMonth()+1}-${e.getDate()}-新创作`}async shareArticle(e){if(!e?.id)return;this.getArticleBanner(e);let t="https://www.yuban.co/app/article/"+e?.id+"?invite="+Parse.User.current()?.id;if(this.wxjssdk.isWechat)this.initWxShareInfo(e);else{let i=`${e?.get("title")} ${t} POWERED BY 自传语伴`;this.clipboard.copyToClipboard(i)}}initWxShareInfo(e){let t=this.getArticleBanner(e),i=Parse.User.current()?.get("avatar"),r="https://www.yuban.co/app/article/"+e?.id+"?invite="+Parse.User.current()?.id;if(this.wxjssdk.isWechat){let a={title:e?.get("title"),desc:e?.get("desc"),link:r,type:"link",imgUrl:t[0]||i||"https://file.yuban.co/img/icon.png",success:()=>{console.log("分享成功")},error:()=>{console.log("分享失败")},cancel:()=>{console.log("取消分享")}};this.wxjssdk.setCurrentPageShareInfo(a)}}getArticleBanner(e){let t=[],i=e?.get("image");return i&&t.push(i),t=t.concat(e?.get("cover")||[]),console.log("bannerList",t),t}async loadArtcleAnalysis(e){let t=Parse.User.current()?.id;if(!t)return;let i=new Parse.Query("ArticleLike");i.select("article","type"),i.equalTo("user",t),i.notEqualTo("isDeleted",!0),i.containedIn("article",e?.map((e=>e?.id))),(await i.find()).forEach((e=>{let t=e?.get("article")?.id||e?.get("article")?.objectId;"collect"==e?.get("type")&&(this.collectMap[t]=!0),"like"==e?.get("type")&&(this.likeMap[t]=!0)}))}viewArticle(e){e?.id&&(e.increment("viewCount"),e.save())}async likeArticle(e,t="like"){if(e?.id&&Parse.User.current()?.id){let i=new Parse.Query("ArticleLike");i.equalTo("user",Parse.User.current()),i.equalTo("type",t),i.equalTo("article",e?.id);let r=await i.first();r?.id||(r=new Parse.Object("ArticleLike")),r?.set("type",t),r?.set("user",Parse.User.current()),r?.set("article",e.toPointer()),null==r?.get("isDeleted")?r?.set("isDeleted",!1):r?.set("isDeleted",!r.get("isDeleted")),localStorage.getItem("company")&&r?.set("company",{__type:"Pointer",className:"Company",objectId:localStorage.getItem("company")}),r=await(r?.save()),"like"==t&&(this.likeMap[e?.id]=!r?.get("isDeleted")),"collect"==t&&(this.collectMap[e?.id]=!r?.get("isDeleted"));let a=new Parse.Query("ArticleLike");a.notEqualTo("isDeleted",!0),a.equalTo("type",t),a.equalTo("article",e?.id),"like"==t&&e.set("likeCount",await a.count()||0),"collect"==t&&e.set("collectCount",await a.count()||0),e=await e.save()}}static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:ArticleService,deps:[{token:i1.Router},{token:i2.WechatJssdkService},{token:i3.ClipboardService},{token:i4.MatDialog},{token:i5.ModalController},{token:i6.PersonService}],target:i0.ɵɵFactoryTarget.Injectable})}static{this.ɵprov=i0.ɵɵngDeclareInjectable({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:ArticleService,providedIn:"root"})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:ArticleService,decorators:[{type:Injectable,args:[{providedIn:"root"}]}],ctorParameters:()=>[{type:i1.Router},{type:i2.WechatJssdkService},{type:i3.ClipboardService},{type:i4.MatDialog},{type:i5.ModalController},{type:i6.PersonService}]});
9
+ var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi90ZXh0L2ZtLWFydGljbGUtZWRpdG9yL2FydGljbGUuc2VydmljZS5tanM=`
10
+
@@ -1,74 +1,10 @@
1
- import { Component, Input } from '@angular/core';
2
- import { EditUploadModule } from '../../../person/edit-upload/edit-upload.module';
3
- import { CommonModule } from '@angular/common';
4
- import { FormsModule } from '@angular/forms';
5
- import Parse from "parse";
6
- import { ModalController } from '@ionic/angular/standalone';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@ionic/angular/standalone";
9
- import * as i2 from "../../../person/edit-upload/edit-upload.component";
10
- import * as i3 from "@angular/common";
11
- export class CompUploadBookBannersComponent {
12
- constructor(modalCtrl) {
13
- this.modalCtrl = modalCtrl;
14
- }
15
- ngOnInit() {
16
- this.getArticle();
17
- }
1
+
18
2
  /**
19
- * 清除上传框封面
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/comp-upload-book-banners/comp-upload-book-banners.component.mjs
20
7
  */
21
- changeBanner() {
22
- this.banner = '';
23
- console.log(this.banner);
24
- }
25
- async getArticle() {
26
- let query = new Parse.Query("Article");
27
- // query.equalTo("company", "Svehl6FceL");
28
- query.equalTo("objectId", this.articleId);
29
- query.notEqualTo("isDeleted", true);
30
- query.include("author");
31
- this.article = await query.first();
32
- console.log('article', this.article);
33
- }
34
- async saveSelection() {
35
- if (!this.banner) {
36
- console.log('没有上传封面图');
37
- return;
38
- }
39
- console.log('this.bookId', this.articleId); // 打印 articleId,确保它是有效的
40
- // 查询 Article 表中与 articleId 相关的记录
41
- let articleQuery = new Parse.Query('Article');
42
- articleQuery.equalTo('objectId', this.articleId);
43
- try {
44
- // 获取第一条匹配的记录
45
- let article = await articleQuery.first();
46
- if (article) {
47
- // 如果找到了相关的章节,设置封面图
48
- article.set('image', this.banner);
49
- // 保存到数据库
50
- await article.save();
51
- console.log('封面图保存成功');
52
- // 关闭模态框并传递数据到父组件
53
- await this.modalCtrl.dismiss({ success: true, banner: this.banner }, "confirm");
54
- }
55
- else {
56
- console.log('未找到相关章节');
57
- }
58
- }
59
- catch (error) {
60
- console.error('保存失败', error);
61
- // 处理错误,弹出提示
62
- alert('保存失败');
63
- }
64
- }
65
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CompUploadBookBannersComponent, deps: [{ token: i1.ModalController }], target: i0.ɵɵFactoryTarget.Component }); }
66
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CompUploadBookBannersComponent, isStandalone: true, selector: "app-comp-upload-book-banners", inputs: { articleId: "articleId" }, ngImport: i0, template: "<div class=\"background\">\r\n <div class=\"fixed-navbar\">\r\n <div class=\"left\">\r\n </div>\r\n <div class=\"center\">\r\n \u5C01\u9762\u4E0A\u4F20\r\n </div>\r\n <div class=\"right\" (click)=\"saveSelection()\">\u4FDD\u5B58</div>\r\n </div>\r\n <div class=\"content\">\r\n <div style=\"display: flex; flex-direction: row;width: 50%;text-align: center;margin-top: 20px;margin-left: 13%;\">\r\n <div class=\"upload_avatar\">\r\n <fm-edit-upload *ngIf=\"!banner\" [(file)]=\"banner\" [multi]=\"true\"></fm-edit-upload>\r\n <img style=\"width: 110px;height: 110px;object-fit: cover;\" *ngIf=\"banner\"\r\n [src]=\"banner\" alt=\"\">\r\n </div>\r\n <div *ngIf=\"banner\" (click)=\"changeBanner()\" style=\"margin-left: -12px;\r\n font-size: 11px;\r\n margin-top: -12px;\r\n height: 24px;\r\n cursor: pointer;\r\n width: 24px;\r\n border-radius: 50%;\r\n background-color: #ccc;\r\n color: #fff;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\">\r\n <span nz-icon nzType=\"close\" nzTheme=\"outline\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".background{background:linear-gradient(#040a15,#0e254b);width:100%;height:100%;margin:0;padding:0;overflow-y:auto;overflow-x:hidden}.background .fixed-navbar{height:8vh;position:sticky;top:0;display:flex;flex-direction:row;justify-content:space-between;align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:999}.background .fixed-navbar .left{flex:1;display:flex;justify-content:flex-start;align-items:center;color:#fff}.background .fixed-navbar .center{color:#fff;font-size:1.3rem;font-weight:700}.background .fixed-navbar .right{display:flex;justify-content:flex-end;margin-right:20px;font-size:1rem;flex:1}.background .content{padding:8% 5%}\n"], dependencies: [{ kind: "ngmodule", type: EditUploadModule }, { kind: "component", type: i2.EditUploadComponent, selector: "fm-edit-upload", inputs: ["files", "dragdrop", "multi", "max_file_size", "type", "avatarType", "company", "file", "fileList", "path"], outputs: ["filesChange", "fileChange", "fileListChange"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }] }); }
67
- }
68
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CompUploadBookBannersComponent, decorators: [{
69
- type: Component,
70
- args: [{ selector: 'app-comp-upload-book-banners', standalone: true, imports: [EditUploadModule, CommonModule, FormsModule], template: "<div class=\"background\">\r\n <div class=\"fixed-navbar\">\r\n <div class=\"left\">\r\n </div>\r\n <div class=\"center\">\r\n \u5C01\u9762\u4E0A\u4F20\r\n </div>\r\n <div class=\"right\" (click)=\"saveSelection()\">\u4FDD\u5B58</div>\r\n </div>\r\n <div class=\"content\">\r\n <div style=\"display: flex; flex-direction: row;width: 50%;text-align: center;margin-top: 20px;margin-left: 13%;\">\r\n <div class=\"upload_avatar\">\r\n <fm-edit-upload *ngIf=\"!banner\" [(file)]=\"banner\" [multi]=\"true\"></fm-edit-upload>\r\n <img style=\"width: 110px;height: 110px;object-fit: cover;\" *ngIf=\"banner\"\r\n [src]=\"banner\" alt=\"\">\r\n </div>\r\n <div *ngIf=\"banner\" (click)=\"changeBanner()\" style=\"margin-left: -12px;\r\n font-size: 11px;\r\n margin-top: -12px;\r\n height: 24px;\r\n cursor: pointer;\r\n width: 24px;\r\n border-radius: 50%;\r\n background-color: #ccc;\r\n color: #fff;\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\">\r\n <span nz-icon nzType=\"close\" nzTheme=\"outline\"></span>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: [".background{background:linear-gradient(#040a15,#0e254b);width:100%;height:100%;margin:0;padding:0;overflow-y:auto;overflow-x:hidden}.background .fixed-navbar{height:8vh;position:sticky;top:0;display:flex;flex-direction:row;justify-content:space-between;align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:999}.background .fixed-navbar .left{flex:1;display:flex;justify-content:flex-start;align-items:center;color:#fff}.background .fixed-navbar .center{color:#fff;font-size:1.3rem;font-weight:700}.background .fixed-navbar .right{display:flex;justify-content:flex-end;margin-right:20px;font-size:1rem;flex:1}.background .content{padding:8% 5%}\n"] }]
71
- }], ctorParameters: () => [{ type: i1.ModalController }], propDecorators: { articleId: [{
72
- type: Input
73
- }] } });
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcC11cGxvYWQtYm9vay1iYW5uZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Ztb2RlLW5nL3NyYy9saWIvdGV4dC9mbS1hcnRpY2xlLWVkaXRvci9jb21wLXVwbG9hZC1ib29rLWJhbm5lcnMvY29tcC11cGxvYWQtYm9vay1iYW5uZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Ztb2RlLW5nL3NyYy9saWIvdGV4dC9mbS1hcnRpY2xlLWVkaXRvci9jb21wLXVwbG9hZC1ib29rLWJhbm5lcnMvY29tcC11cGxvYWQtYm9vay1iYW5uZXJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7Ozs7QUFTNUQsTUFBTSxPQUFPLDhCQUE4QjtJQUl6QyxZQUNVLFNBQTBCO1FBQTFCLGNBQVMsR0FBVCxTQUFTLENBQWlCO0lBQ2hDLENBQUM7SUFFTCxRQUFRO1FBQ04sSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFBO0lBQ25CLENBQUM7SUFHRDs7T0FFRztJQUNILFlBQVk7UUFDVixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVU7UUFDZCxJQUFJLEtBQUssR0FBRyxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkMsMENBQTBDO1FBQzFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxQyxLQUFLLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNwQyxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDbkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxLQUFLLENBQUMsYUFBYTtRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUN2QixPQUFPO1FBQ1gsQ0FBQztRQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLHVCQUF1QjtRQUVuRSxpQ0FBaUM7UUFDakMsSUFBSSxZQUFZLEdBQUcsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlDLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVqRCxJQUFJLENBQUM7WUFDRCxhQUFhO1lBQ2IsSUFBSSxPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFekMsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDVixtQkFBbUI7Z0JBQ25CLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFFbEMsU0FBUztnQkFDVCxNQUFNLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDckIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFFdkIsaUJBQWlCO2dCQUNqQixNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ25GLENBQUM7aUJBQU0sQ0FBQztnQkFDSixPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzNCLENBQUM7UUFDTCxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzdCLFlBQVk7WUFDWixLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDbEIsQ0FBQztJQUNILENBQUM7K0dBakVVLDhCQUE4QjttR0FBOUIsOEJBQThCLDRIQ2QzQyx1dENBaUNBLGt1QkRyQlksZ0JBQWdCLCtSQUFDLFlBQVksa0lBQUMsV0FBVzs7NEZBRXhDLDhCQUE4QjtrQkFQMUMsU0FBUzsrQkFDRSw4QkFBOEIsY0FHNUIsSUFBSSxXQUNQLENBQUMsZ0JBQWdCLEVBQUMsWUFBWSxFQUFDLFdBQVcsQ0FBQztvRkFJM0MsU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBFZGl0VXBsb2FkTW9kdWxlIH0gZnJvbSAnLi4vLi4vLi4vcGVyc29uL2VkaXQtdXBsb2FkL2VkaXQtdXBsb2FkLm1vZHVsZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgUGFyc2UgZnJvbSBcInBhcnNlXCI7XHJcbmltcG9ydCB7IE1vZGFsQ29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtY29tcC11cGxvYWQtYm9vay1iYW5uZXJzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29tcC11cGxvYWQtYm9vay1iYW5uZXJzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jb21wLXVwbG9hZC1ib29rLWJhbm5lcnMuY29tcG9uZW50LnNjc3MnXSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtFZGl0VXBsb2FkTW9kdWxlLENvbW1vbk1vZHVsZSxGb3Jtc01vZHVsZV1cclxufSlcclxuZXhwb3J0IGNsYXNzIENvbXBVcGxvYWRCb29rQmFubmVyc0NvbXBvbmVudCAgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoKSBhcnRpY2xlSWQ6IGFueTsgLy8g5o6l5pS25Lyg6YCS55qEIGFydGljbGVJZFxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgbW9kYWxDdHJsOiBNb2RhbENvbnRyb2xsZXIsXHJcbiAgKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLmdldEFydGljbGUoKVxyXG4gIH1cclxuXHJcbiAgYmFubmVyXHJcbiAgLyoqXHJcbiAgICog5riF6Zmk5LiK5Lyg5qGG5bCB6Z2iXHJcbiAgICovXHJcbiAgY2hhbmdlQmFubmVyKCkge1xyXG4gICAgdGhpcy5iYW5uZXIgPSAnJztcclxuICAgIGNvbnNvbGUubG9nKHRoaXMuYmFubmVyKTtcclxuICB9XHJcbiAgYXJ0aWNsZVxyXG4gIGFzeW5jIGdldEFydGljbGUoKSB7XHJcbiAgICBsZXQgcXVlcnkgPSBuZXcgUGFyc2UuUXVlcnkoXCJBcnRpY2xlXCIpO1xyXG4gICAgLy8gcXVlcnkuZXF1YWxUbyhcImNvbXBhbnlcIiwgXCJTdmVobDZGY2VMXCIpO1xyXG4gICAgcXVlcnkuZXF1YWxUbyhcIm9iamVjdElkXCIsIHRoaXMuYXJ0aWNsZUlkKTtcclxuICAgIHF1ZXJ5Lm5vdEVxdWFsVG8oXCJpc0RlbGV0ZWRcIiwgdHJ1ZSk7XHJcbiAgICBxdWVyeS5pbmNsdWRlKFwiYXV0aG9yXCIpO1xyXG4gICAgdGhpcy5hcnRpY2xlID0gYXdhaXQgcXVlcnkuZmlyc3QoKTtcclxuICAgIGNvbnNvbGUubG9nKCdhcnRpY2xlJywgdGhpcy5hcnRpY2xlKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHNhdmVTZWxlY3Rpb24oKSB7XHJcbiAgICBpZiAoIXRoaXMuYmFubmVyKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ+ayoeacieS4iuS8oOWwgemdouWbvicpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zb2xlLmxvZygndGhpcy5ib29rSWQnLCB0aGlzLmFydGljbGVJZCk7IC8vIOaJk+WNsCBhcnRpY2xlSWTvvIznoa7kv53lroPmmK/mnInmlYjnmoRcclxuXHJcbiAgICAvLyDmn6Xor6IgQXJ0aWNsZSDooajkuK3kuI4gYXJ0aWNsZUlkIOebuOWFs+eahOiusOW9lVxyXG4gICAgbGV0IGFydGljbGVRdWVyeSA9IG5ldyBQYXJzZS5RdWVyeSgnQXJ0aWNsZScpO1xyXG4gICAgYXJ0aWNsZVF1ZXJ5LmVxdWFsVG8oJ29iamVjdElkJywgdGhpcy5hcnRpY2xlSWQpO1xyXG5cclxuICAgIHRyeSB7XHJcbiAgICAgICAgLy8g6I635Y+W56ys5LiA5p2h5Yy56YWN55qE6K6w5b2VXHJcbiAgICAgICAgbGV0IGFydGljbGUgPSBhd2FpdCBhcnRpY2xlUXVlcnkuZmlyc3QoKTtcclxuXHJcbiAgICAgICAgaWYgKGFydGljbGUpIHtcclxuICAgICAgICAgICAgLy8g5aaC5p6c5om+5Yiw5LqG55u45YWz55qE56ug6IqC77yM6K6+572u5bCB6Z2i5Zu+XHJcbiAgICAgICAgICAgIGFydGljbGUuc2V0KCdpbWFnZScsIHRoaXMuYmFubmVyKTtcclxuXHJcbiAgICAgICAgICAgIC8vIOS/neWtmOWIsOaVsOaNruW6k1xyXG4gICAgICAgICAgICBhd2FpdCBhcnRpY2xlLnNhdmUoKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ+WwgemdouWbvuS/neWtmOaIkOWKnycpO1xyXG5cclxuICAgICAgICAgICAgLy8g5YWz6Zet5qih5oCB5qGG5bm25Lyg6YCS5pWw5o2u5Yiw54i257uE5Lu2XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMubW9kYWxDdHJsLmRpc21pc3MoeyBzdWNjZXNzOiB0cnVlLCBiYW5uZXI6IHRoaXMuYmFubmVyIH0sXCJjb25maXJtXCIpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCfmnKrmib7liLDnm7jlhbPnq6DoioInKTtcclxuICAgICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ+S/neWtmOWksei0pScsIGVycm9yKTtcclxuICAgICAgICAvLyDlpITnkIbplJnor6/vvIzlvLnlh7rmj5DnpLpcclxuICAgICAgICBhbGVydCgn5L+d5a2Y5aSx6LSlJyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiYmFja2dyb3VuZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJmaXhlZC1uYXZiYXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJsZWZ0XCI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjZW50ZXJcIj5cclxuICAgICAg5bCB6Z2i5LiK5LygXHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyaWdodFwiIChjbGljayk9XCJzYXZlU2VsZWN0aW9uKClcIj7kv53lrZg8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwiY29udGVudFwiPlxyXG4gICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiByb3c7d2lkdGg6IDUwJTt0ZXh0LWFsaWduOiBjZW50ZXI7bWFyZ2luLXRvcDogMjBweDttYXJnaW4tbGVmdDogMTMlO1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidXBsb2FkX2F2YXRhclwiPlxyXG4gICAgICAgIDxmbS1lZGl0LXVwbG9hZCAqbmdJZj1cIiFiYW5uZXJcIiBbKGZpbGUpXT1cImJhbm5lclwiIFttdWx0aV09XCJ0cnVlXCI+PC9mbS1lZGl0LXVwbG9hZD5cclxuICAgICAgICA8aW1nIHN0eWxlPVwid2lkdGg6IDExMHB4O2hlaWdodDogMTEwcHg7b2JqZWN0LWZpdDogY292ZXI7XCIgKm5nSWY9XCJiYW5uZXJcIlxyXG4gICAgICAgICAgW3NyY109XCJiYW5uZXJcIiBhbHQ9XCJcIj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCJiYW5uZXJcIiAoY2xpY2spPVwiY2hhbmdlQmFubmVyKClcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAtMTJweDtcclxuICAgICAgICBmb250LXNpemU6IDExcHg7XHJcbiAgICAgICAgbWFyZ2luLXRvcDogLTEycHg7XHJcbiAgICAgICAgaGVpZ2h0OiAyNHB4O1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICB3aWR0aDogMjRweDtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2NjYztcclxuICAgICAgICBjb2xvcjogI2ZmZjtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XCI+XHJcbiAgICAgICAgPHNwYW4gbnotaWNvbiBuelR5cGU9XCJjbG9zZVwiIG56VGhlbWU9XCJvdXRsaW5lXCI+PC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
8
+ import{Component,Input}from"@angular/core";import{EditUploadModule}from"../../../person/edit-upload/edit-upload.module";import{CommonModule}from"@angular/common";import{FormsModule}from"@angular/forms";import{FmodeParse}from"@fmode/parse";import{ModalController}from"@ionic/angular/standalone";import*as i0 from"@angular/core";import*as i1 from"@ionic/angular/standalone";import*as i2 from"../../../person/edit-upload/edit-upload.component";import*as i3 from"@angular/common";const Parse=FmodeParse.with("nova");export class CompUploadBookBannersComponent{constructor(e){this.modalCtrl=e}ngOnInit(){this.getArticle()}changeBanner(){this.banner="",console.log(this.banner)}async getArticle(){let e=new Parse.Query("Article");e.equalTo("objectId",this.articleId),e.notEqualTo("isDeleted",!0),e.include("author"),this.article=await e.first(),console.log("article",this.article)}async saveSelection(){if(!this.banner)return void console.log("没有上传封面图");console.log("this.bookId",this.articleId);let e=new Parse.Query("Article");e.equalTo("objectId",this.articleId);try{let n=await e.first();n?(n.set("image",this.banner),await n.save(),console.log("封面图保存成功"),await this.modalCtrl.dismiss({success:!0,banner:this.banner},"confirm")):console.log("未找到相关章节")}catch(e){console.error("保存失败",e),alert("保存失败")}}static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:CompUploadBookBannersComponent,deps:[{token:i1.ModalController}],target:i0.ɵɵFactoryTarget.Component})}static{this.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"17.3.12",type:CompUploadBookBannersComponent,isStandalone:!0,selector:"app-comp-upload-book-banners",inputs:{articleId:"articleId"},ngImport:i0,template:'<div class="background">\n <div class="fixed-navbar">\n <div class="left">\n </div>\n <div class="center">\n 封面上传\n </div>\n <div class="right" (click)="saveSelection()">保存</div>\n </div>\n <div class="content">\n <div style="display: flex; flex-direction: row;width: 50%;text-align: center;margin-top: 20px;margin-left: 13%;">\n <div class="upload_avatar">\n <fm-edit-upload *ngIf="!banner" [(file)]="banner" [multi]="true"></fm-edit-upload>\n <img style="width: 110px;height: 110px;object-fit: cover;" *ngIf="banner"\n [src]="banner" alt="">\n </div>\n <div *ngIf="banner" (click)="changeBanner()" style="margin-left: -12px;\n font-size: 11px;\n margin-top: -12px;\n height: 24px;\n cursor: pointer;\n width: 24px;\n border-radius: 50%;\n background-color: #ccc;\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;">\n <span nz-icon nzType="close" nzTheme="outline"></span>\n </div>\n </div>\n </div>\n</div>\n',styles:[".background{background:linear-gradient(#040a15,#0e254b);width:100%;height:100%;margin:0;padding:0;overflow-y:auto;overflow-x:hidden}.background .fixed-navbar{height:8vh;position:sticky;top:0;display:flex;flex-direction:row;justify-content:space-between;align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:999}.background .fixed-navbar .left{flex:1;display:flex;justify-content:flex-start;align-items:center;color:#fff}.background .fixed-navbar .center{color:#fff;font-size:1.3rem;font-weight:700}.background .fixed-navbar .right{display:flex;justify-content:flex-end;margin-right:20px;font-size:1rem;flex:1}.background .content{padding:8% 5%}\n"],dependencies:[{kind:"ngmodule",type:EditUploadModule},{kind:"component",type:i2.EditUploadComponent,selector:"fm-edit-upload",inputs:["files","dragdrop","multi","max_file_size","type","avatarType","company","file","fileList","path"],outputs:["filesChange","fileChange","fileListChange"]},{kind:"ngmodule",type:CommonModule},{kind:"directive",type:i3.NgIf,selector:"[ngIf]",inputs:["ngIf","ngIfThen","ngIfElse"]},{kind:"ngmodule",type:FormsModule}]})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:CompUploadBookBannersComponent,decorators:[{type:Component,args:[{selector:"app-comp-upload-book-banners",standalone:!0,imports:[EditUploadModule,CommonModule,FormsModule],template:'<div class="background">\n <div class="fixed-navbar">\n <div class="left">\n </div>\n <div class="center">\n 封面上传\n </div>\n <div class="right" (click)="saveSelection()">保存</div>\n </div>\n <div class="content">\n <div style="display: flex; flex-direction: row;width: 50%;text-align: center;margin-top: 20px;margin-left: 13%;">\n <div class="upload_avatar">\n <fm-edit-upload *ngIf="!banner" [(file)]="banner" [multi]="true"></fm-edit-upload>\n <img style="width: 110px;height: 110px;object-fit: cover;" *ngIf="banner"\n [src]="banner" alt="">\n </div>\n <div *ngIf="banner" (click)="changeBanner()" style="margin-left: -12px;\n font-size: 11px;\n margin-top: -12px;\n height: 24px;\n cursor: pointer;\n width: 24px;\n border-radius: 50%;\n background-color: #ccc;\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;">\n <span nz-icon nzType="close" nzTheme="outline"></span>\n </div>\n </div>\n </div>\n</div>\n',styles:[".background{background:linear-gradient(#040a15,#0e254b);width:100%;height:100%;margin:0;padding:0;overflow-y:auto;overflow-x:hidden}.background .fixed-navbar{height:8vh;position:sticky;top:0;display:flex;flex-direction:row;justify-content:space-between;align-items:center;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:999}.background .fixed-navbar .left{flex:1;display:flex;justify-content:flex-start;align-items:center;color:#fff}.background .fixed-navbar .center{color:#fff;font-size:1.3rem;font-weight:700}.background .fixed-navbar .right{display:flex;justify-content:flex-end;margin-right:20px;font-size:1rem;flex:1}.background .content{padding:8% 5%}\n"]}]}],ctorParameters:()=>[{type:i1.ModalController}],propDecorators:{articleId:[{type:Input}]}});
9
+ var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi90ZXh0L2ZtLWFydGljbGUtZWRpdG9yL2NvbXAtdXBsb2FkLWJvb2stYmFubmVycy9jb21wLXVwbG9hZC1ib29rLWJhbm5lcnMuY29tcG9uZW50Lm1qcw==`
10
+