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,344 +1,10 @@
1
- import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, forwardRef, Input, KeyValueDiffers, NgZone, Output, ViewChild, } from '@angular/core';
2
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
- import { EditorView, basicSetup } from 'codemirror';
4
- import { Compartment } from '@codemirror/state';
5
- import * as i0 from "@angular/core";
6
- function normalizeLineEndings(str) {
7
- if (!str) {
8
- return str;
9
- }
10
- return str.replace(/\r\n|\r/g, '\n');
11
- }
12
- export class CodemirrorComponent {
1
+
13
2
  /**
14
- * set extensions for codemirror 6
15
- * @link https://codemirror.net/docs/ref/
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/code/fm-codemirror/fm-codemirror.component.mjs
16
7
  */
17
- set extensions(value) {
18
- this._extensions = value || [];
19
- if (!this._differ && value) {
20
- this._differ = this._differs.find(value).create();
21
- }
22
- this.reconfigureEditor();
23
- }
24
- /**
25
- * Legacy options support - converts common v5 options to v6 extensions
26
- */
27
- set options(value) {
28
- this._options = value;
29
- this._extensions = this.convertOptionsToExtensions(value);
30
- if (!this._differ && value) {
31
- this._differ = this._differs.find(value).create();
32
- }
33
- this.reconfigureEditor();
34
- }
35
- constructor(_differs, _ngZone) {
36
- this._differs = _differs;
37
- this._ngZone = _ngZone;
38
- /* class applied to the created container */
39
- this.className = '';
40
- /* name applied to the editor (for form purposes) */
41
- this.name = 'codemirror';
42
- /* autofocus setting applied to the editor */
43
- this.autoFocus = false;
44
- /* preserve previous scroll position after updating value */
45
- this.preserveScrollPosition = false;
46
- /* called when the text cursor is moved */
47
- this.cursorActivity = new EventEmitter();
48
- /* called when the editor is focused or loses focus */
49
- this.focusChange = new EventEmitter();
50
- /* called when the editor is scrolled */
51
- this.scroll = new EventEmitter();
52
- /* called when file(s) are dropped */
53
- this.drop = new EventEmitter();
54
- /* called when codeMirror instance is initiated on the component */
55
- this.codeMirrorLoaded = new EventEmitter();
56
- this.value = '';
57
- this.disabled = false;
58
- this.isFocused = false;
59
- this._options = {};
60
- this._extensions = [];
61
- this.extensionsCompartment = new Compartment();
62
- this.readOnlyCompartment = new Compartment();
63
- /** Implemented as part of ControlValueAccessor. */
64
- this.onChange = (_) => { };
65
- /** Implemented as part of ControlValueAccessor. */
66
- this.onTouched = () => { };
67
- }
68
- ngAfterViewInit() {
69
- this._ngZone.runOutsideAngular(() => {
70
- this.initializeEditor();
71
- });
72
- }
73
- async initializeEditor() {
74
- const { EditorView } = await import('codemirror');
75
- const { EditorState } = await import('@codemirror/state');
76
- const extensions = [
77
- basicSetup,
78
- this.extensionsCompartment.of(this._extensions),
79
- this.readOnlyCompartment.of(this.disabled ? EditorState.readOnly.of(true) : []),
80
- this.createUpdateListener(),
81
- this.createFocusExtension(),
82
- this.createScrollExtension(),
83
- this.createDropExtension(),
84
- ];
85
- const state = EditorState.create({
86
- doc: this.value,
87
- extensions,
88
- });
89
- this.editorView = new EditorView({
90
- state,
91
- parent: this.ref.nativeElement,
92
- });
93
- if (this.autoFocus) {
94
- this.editorView.focus();
95
- }
96
- this._ngZone.run(() => {
97
- this.codeMirrorLoaded.emit(this);
98
- });
99
- }
100
- createUpdateListener() {
101
- return EditorView.updateListener.of((update) => {
102
- if (update.docChanged) {
103
- this._ngZone.run(() => {
104
- this.codemirrorValueChanged(update.view);
105
- });
106
- }
107
- if (update.selectionSet) {
108
- this._ngZone.run(() => {
109
- this.cursorActive(update.view);
110
- });
111
- }
112
- });
113
- }
114
- createFocusExtension() {
115
- return EditorView.domEventHandlers({
116
- focus: () => {
117
- this._ngZone.run(() => this.focusChanged(true));
118
- return false;
119
- },
120
- blur: () => {
121
- this._ngZone.run(() => this.focusChanged(false));
122
- return false;
123
- },
124
- });
125
- }
126
- createScrollExtension() {
127
- return EditorView.domEventHandlers({
128
- scroll: (event, view) => {
129
- this._ngZone.run(() => this.scrollChanged(view));
130
- return false;
131
- },
132
- });
133
- }
134
- createDropExtension() {
135
- return EditorView.domEventHandlers({
136
- drop: (event, view) => {
137
- this._ngZone.run(() => this.dropFiles(view, event));
138
- return false;
139
- },
140
- });
141
- }
142
- convertOptionsToExtensions(options) {
143
- const extensions = [];
144
- if (!options)
145
- return extensions;
146
- // Handle common v5 options and convert to v6 extensions
147
- if (options.mode) {
148
- // Language mode conversion would need specific language packages
149
- // This is a simplified example - you'd need to import specific language packages
150
- // extensions.push(javascript()); // for JavaScript mode
151
- }
152
- if (options.theme) {
153
- // Theme conversion would need specific theme packages
154
- // extensions.push(oneDark); // for dark theme example
155
- }
156
- if (options.lineNumbers === false) {
157
- // Remove line numbers from basicSetup if needed
158
- }
159
- // readOnly is handled separately through readOnlyCompartment
160
- return extensions;
161
- }
162
- ngDoCheck() {
163
- if (!this._differ) {
164
- return;
165
- }
166
- const changes = this._differ.diff(this._options);
167
- if (changes) {
168
- // For v6, we need to reconfigure the editor with new extensions
169
- this.reconfigureEditor();
170
- }
171
- }
172
- async reconfigureEditor() {
173
- if (!this.editorView)
174
- return;
175
- const effects = [
176
- this.extensionsCompartment.reconfigure(this._extensions)
177
- ];
178
- this.editorView.dispatch({
179
- effects
180
- });
181
- }
182
- ngOnDestroy() {
183
- if (this.editorView) {
184
- this.editorView.destroy();
185
- }
186
- }
187
- codemirrorValueChanged(view) {
188
- const newValue = view.state.doc.toString();
189
- if (this.value !== newValue) {
190
- this.value = newValue;
191
- this.onChange(this.value);
192
- }
193
- }
194
- focusChanged(focused) {
195
- this.onTouched();
196
- this.isFocused = focused;
197
- this.focusChange.emit(focused);
198
- }
199
- scrollChanged(view) {
200
- const scrollDOM = view.scrollDOM;
201
- const scrollInfo = {
202
- left: scrollDOM.scrollLeft,
203
- top: scrollDOM.scrollTop,
204
- width: scrollDOM.scrollWidth,
205
- height: scrollDOM.scrollHeight,
206
- clientWidth: scrollDOM.clientWidth,
207
- clientHeight: scrollDOM.clientHeight,
208
- };
209
- this.scroll.emit(scrollInfo);
210
- }
211
- cursorActive(view) {
212
- this.cursorActivity.emit(view);
213
- }
214
- dropFiles(view, e) {
215
- this.drop.emit([view, e]);
216
- }
217
- /** Implemented as part of ControlValueAccessor. */
218
- writeValue(value) {
219
- if (value === null || value === undefined) {
220
- return;
221
- }
222
- if (!this.editorView) {
223
- this.value = value;
224
- return;
225
- }
226
- const currentValue = this.editorView.state.doc.toString();
227
- if (value !== currentValue && normalizeLineEndings(currentValue) !== normalizeLineEndings(value)) {
228
- this.value = value;
229
- if (this.preserveScrollPosition) {
230
- const scrollInfo = {
231
- left: this.editorView.scrollDOM.scrollLeft,
232
- top: this.editorView.scrollDOM.scrollTop,
233
- };
234
- this.editorView.dispatch({
235
- changes: {
236
- from: 0,
237
- to: this.editorView.state.doc.length,
238
- insert: value,
239
- },
240
- });
241
- this.editorView.scrollDOM.scrollTo(scrollInfo.left, scrollInfo.top);
242
- }
243
- else {
244
- this.editorView.dispatch({
245
- changes: {
246
- from: 0,
247
- to: this.editorView.state.doc.length,
248
- insert: value,
249
- },
250
- });
251
- }
252
- }
253
- }
254
- /** Implemented as part of ControlValueAccessor. */
255
- registerOnChange(fn) {
256
- this.onChange = fn;
257
- }
258
- /** Implemented as part of ControlValueAccessor. */
259
- registerOnTouched(fn) {
260
- this.onTouched = fn;
261
- }
262
- /** Implemented as part of ControlValueAccessor. */
263
- async setDisabledState(isDisabled) {
264
- this.disabled = isDisabled;
265
- if (this.editorView) {
266
- const { EditorState } = await import('@codemirror/state');
267
- this.editorView.dispatch({
268
- effects: [
269
- this.readOnlyCompartment.reconfigure(isDisabled ? EditorState.readOnly.of(true) : [])
270
- ]
271
- });
272
- }
273
- }
274
- // Public API methods for compatibility
275
- focus() {
276
- this.editorView?.focus();
277
- }
278
- getEditorView() {
279
- return this.editorView;
280
- }
281
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CodemirrorComponent, deps: [{ token: i0.KeyValueDiffers }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component }); }
282
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: CodemirrorComponent, isStandalone: true, selector: "ngx-codemirror", inputs: { className: "className", name: "name", autoFocus: "autoFocus", extensions: "extensions", options: "options", preserveScrollPosition: "preserveScrollPosition" }, outputs: { cursorActivity: "cursorActivity", focusChange: "focusChange", scroll: "scroll", drop: "drop", codeMirrorLoaded: "codeMirrorLoaded" }, providers: [
283
- {
284
- provide: NG_VALUE_ACCESSOR,
285
- useExisting: forwardRef(() => CodemirrorComponent),
286
- multi: true,
287
- },
288
- ], viewQueries: [{ propertyName: "ref", first: true, predicate: ["ref"], descendants: true }], ngImport: i0, template: `
289
- <div
290
- [class]="'ngx-codemirror ' + className"
291
- [class.ngx-codemirror--focused]="isFocused"
292
- #ref
293
- ></div>
294
- `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
295
- }
296
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: CodemirrorComponent, decorators: [{
297
- type: Component,
298
- args: [{
299
- selector: 'ngx-codemirror',
300
- standalone: true,
301
- template: `
302
- <div
303
- [class]="'ngx-codemirror ' + className"
304
- [class.ngx-codemirror--focused]="isFocused"
305
- #ref
306
- ></div>
307
- `,
308
- providers: [
309
- {
310
- provide: NG_VALUE_ACCESSOR,
311
- useExisting: forwardRef(() => CodemirrorComponent),
312
- multi: true,
313
- },
314
- ],
315
- preserveWhitespaces: false,
316
- changeDetection: ChangeDetectionStrategy.OnPush,
317
- }]
318
- }], ctorParameters: () => [{ type: i0.KeyValueDiffers }, { type: i0.NgZone }], propDecorators: { className: [{
319
- type: Input
320
- }], name: [{
321
- type: Input
322
- }], autoFocus: [{
323
- type: Input
324
- }], extensions: [{
325
- type: Input
326
- }], options: [{
327
- type: Input
328
- }], preserveScrollPosition: [{
329
- type: Input
330
- }], cursorActivity: [{
331
- type: Output
332
- }], focusChange: [{
333
- type: Output
334
- }], scroll: [{
335
- type: Output
336
- }], drop: [{
337
- type: Output
338
- }], codeMirrorLoaded: [{
339
- type: Output
340
- }], ref: [{
341
- type: ViewChild,
342
- args: ['ref']
343
- }] } });
344
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm0tY29kZW1pcnJvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mbW9kZS1uZy9zcmMvbGliL2NvZGUvZm0tY29kZW1pcnJvci9mbS1jb2RlbWlycm9yLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFFVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFVBQVUsRUFDVixLQUFLLEVBRUwsZUFBZSxFQUNmLE1BQU0sRUFFTixNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNwRCxPQUFPLEVBQXVDLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUdyRixTQUFTLG9CQUFvQixDQUFDLEdBQVc7SUFDdkMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ1QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN2QyxDQUFDO0FBK0JELE1BQU0sT0FBTyxtQkFBbUI7SUFTOUI7OztPQUdHO0lBQ0gsSUFDSSxVQUFVLENBQUMsS0FBa0I7UUFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDcEQsQ0FBQztRQUNELElBQUksQ0FBQyxpQkFBaUIs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QkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG1CQUFtQixDQUFDO2dCQUNsRCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0Ysc0hBYlM7Ozs7OztLQU1UOzs0RkFXVSxtQkFBbUI7a0JBcEIvQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixRQUFRLEVBQUU7Ozs7OztLQU1UO29CQUNELFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxvQkFBb0IsQ0FBQzs0QkFDbEQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7b0JBQ0QsbUJBQW1CLEVBQUUsS0FBSztvQkFDMUIsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07aUJBQ2hEO3lHQUtVLFNBQVM7c0JBQWpCLEtBQUs7Z0JBRUcsSUFBSTtzQkFBWixLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBTUYsVUFBVTtzQkFEYixLQUFLO2dCQWFGLE9BQU87c0JBRFYsS0FBSztnQkFXRyxzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBR0ksY0FBYztzQkFBdkIsTUFBTTtnQkFFRyxXQUFXO3NCQUFwQixNQUFNO2dCQUVHLE1BQU07c0JBQWYsTUFBTTtnQkFFRyxJQUFJO3NCQUFiLE1BQU07Z0JBRUcsZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUVXLEdBQUc7c0JBQXBCLFNBQVM7dUJBQUMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBBZnRlclZpZXdJbml0LFxyXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBEb0NoZWNrLFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIGZvcndhcmRSZWYsXHJcbiAgICBJbnB1dCxcclxuICAgIEtleVZhbHVlRGlmZmVyLFxyXG4gICAgS2V5VmFsdWVEaWZmZXJzLFxyXG4gICAgTmdab25lLFxyXG4gICAgT25EZXN0cm95LFxyXG4gICAgT3V0cHV0LFxyXG4gICAgVmlld0NoaWxkLFxyXG4gIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbiAgaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG4gIGltcG9ydCB7IEVkaXRvclZpZXcsIGJhc2ljU2V0dXAgfSBmcm9tICdjb2RlbWlycm9yJztcclxuICBpbXBvcnQgeyBFZGl0b3JTdGF0ZSwgRXh0ZW5zaW9uLCBTdGF0ZUVmZmVjdCwgQ29tcGFydG1lbnQgfSBmcm9tICdAY29kZW1pcnJvci9zdGF0ZSc7XHJcbiAgaW1wb3J0IHsgVmlld1VwZGF0ZSB9IGZyb20gJ0Bjb2RlbWlycm9yL3ZpZXcnO1xyXG4gIFxyXG4gIGZ1bmN0aW9uIG5vcm1hbGl6ZUxpbmVFbmRpbmdzKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICghc3RyKSB7XHJcbiAgICAgIHJldHVybiBzdHI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoL1xcclxcbnxcXHIvZywgJ1xcbicpO1xyXG4gIH1cclxuICBcclxuICBpbnRlcmZhY2UgU2Nyb2xsSW5mbyB7XHJcbiAgICBsZWZ0OiBudW1iZXI7XHJcbiAgICB0b3A6IG51bWJlcjtcclxuICAgIHdpZHRoOiBudW1iZXI7XHJcbiAgICBoZWlnaHQ6IG51bWJlcjtcclxuICAgIGNsaWVudFdpZHRoOiBudW1iZXI7XHJcbiAgICBjbGllbnRIZWlnaHQ6IG51bWJlcjtcclxuICB9XHJcbiAgXHJcbiAgQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ25neC1jb2RlbWlycm9yJyxcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICB0ZW1wbGF0ZTogYFxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgW2NsYXNzXT1cIiduZ3gtY29kZW1pcnJvciAnICsgY2xhc3NOYW1lXCJcclxuICAgICAgICBbY2xhc3Mubmd4LWNvZGVtaXJyb3ItLWZvY3VzZWRdPVwiaXNGb2N1c2VkXCJcclxuICAgICAgICAjcmVmXHJcbiAgICAgID48L2Rpdj5cclxuICAgIGAsXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAge1xyXG4gICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxyXG4gICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IENvZGVtaXJyb3JDb21wb25lbnQpLFxyXG4gICAgICAgIG11bHRpOiB0cnVlLFxyXG4gICAgICB9LFxyXG4gICAgXSxcclxuICAgIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgfSlcclxuICBleHBvcnQgY2xhc3MgQ29kZW1pcnJvckNvbXBvbmVudFxyXG4gICAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBEb0NoZWNrXHJcbiAge1xyXG4gICAgLyogY2xhc3MgYXBwbGllZCB0byB0aGUgY3JlYXRlZCBjb250YWluZXIgKi9cclxuICAgIEBJbnB1dCgpIGNsYXNzTmFtZSA9ICcnO1xyXG4gICAgLyogbmFtZSBhcHBsaWVkIHRvIHRoZSBlZGl0b3IgKGZvciBmb3JtIHB1cnBvc2VzKSAqL1xyXG4gICAgQElucHV0KCkgbmFtZSA9ICdjb2RlbWlycm9yJztcclxuICAgIC8qIGF1dG9mb2N1cyBzZXR0aW5nIGFwcGxpZWQgdG8gdGhlIGVkaXRvciAqL1xyXG4gICAgQElucHV0KCkgYXV0b0ZvY3VzID0gZmFsc2U7XHJcbiAgICAvKipcclxuICAgICAqIHNldCBleHRlbnNpb25zIGZvciBjb2RlbWlycm9yIDZcclxuICAgICAqIEBsaW5rIGh0dHBzOi8vY29kZW1pcnJvci5uZXQvZG9jcy9yZWYvXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgZXh0ZW5zaW9ucyh2YWx1ZTogRXh0ZW5zaW9uW10pIHtcclxuICAgICAgdGhpcy5fZXh0ZW5zaW9ucyA9IHZhbHVlIHx8IFtdO1xyXG4gICAgICBpZiAoIXRoaXMuX2RpZmZlciAmJiB2YWx1ZSkge1xyXG4gICAgICAgIHRoaXMuX2RpZmZlciA9IHRoaXMuX2RpZmZlcnMuZmluZCh2YWx1ZSkuY3JlYXRlKCk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5yZWNvbmZpZ3VyZUVkaXRvcigpO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvKipcclxuICAgICAqIExlZ2FjeSBvcHRpb25zIHN1cHBvcnQgLSBjb252ZXJ0cyBjb21tb24gdjUgb3B0aW9ucyB0byB2NiBleHRlbnNpb25zXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZXQgb3B0aW9ucyh2YWx1ZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkge1xyXG4gICAgICB0aGlzLl9vcHRpb25zID0gdmFsdWU7XHJcbiAgICAgIHRoaXMuX2V4dGVuc2lvbnMgPSB0aGlzLmNvbnZlcnRPcHRpb25zVG9FeHRlbnNpb25zKHZhbHVlKTtcclxuICAgICAgaWYgKCF0aGlzLl9kaWZmZXIgJiYgdmFsdWUpIHtcclxuICAgICAgICB0aGlzLl9kaWZmZXIgPSB0aGlzLl9kaWZmZXJzLmZpbmQodmFsdWUpLmNyZWF0ZSgpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMucmVjb25maWd1cmVFZGl0b3IoKTtcclxuICAgIH1cclxuICBcclxuICAgIC8qIHByZXNlcnZlIHByZXZpb3VzIHNjcm9sbCBwb3NpdGlvbiBhZnRlciB1cGRhdGluZyB2YWx1ZSAqL1xyXG4gICAgQElucHV0KCkgcHJlc2VydmVTY3JvbGxQb3NpdGlvbiA9IGZhbHNlO1xyXG4gICAgXHJcbiAgICAvKiBjYWxsZWQgd2hlbiB0aGUgdGV4dCBjdXJzb3IgaXMgbW92ZWQgKi9cclxuICAgIEBPdXRwdXQoKSBjdXJzb3JBY3Rpdml0eSA9IG5ldyBFdmVudEVtaXR0ZXI8RWRpdG9yVmlldz4oKTtcclxuICAgIC8qIGNhbGxlZCB3aGVuIHRoZSBlZGl0b3IgaXMgZm9jdXNlZCBvciBsb3NlcyBmb2N1cyAqL1xyXG4gICAgQE91dHB1dCgpIGZvY3VzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gICAgLyogY2FsbGVkIHdoZW4gdGhlIGVkaXRvciBpcyBzY3JvbGxlZCAqL1xyXG4gICAgQE91dHB1dCgpIHNjcm9sbCA9IG5ldyBFdmVudEVtaXR0ZXI8U2Nyb2xsSW5mbz4oKTtcclxuICAgIC8qIGNhbGxlZCB3aGVuIGZpbGUocykgYXJlIGRyb3BwZWQgKi9cclxuICAgIEBPdXRwdXQoKSBkcm9wID0gbmV3IEV2ZW50RW1pdHRlcjxbRWRpdG9yVmlldywgRHJhZ0V2ZW50XT4oKTtcclxuICAgIC8qIGNhbGxlZCB3aGVuIGNvZGVNaXJyb3IgaW5zdGFuY2UgaXMgaW5pdGlhdGVkIG9uIHRoZSBjb21wb25lbnQgKi9cclxuICAgIEBPdXRwdXQoKSBjb2RlTWlycm9yTG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxDb2RlbWlycm9yQ29tcG9uZW50PigpO1xyXG4gIFxyXG4gICAgQFZpZXdDaGlsZCgncmVmJykgcmVmITogRWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD47XHJcbiAgXHJcbiAgICB2YWx1ZSA9ICcnO1xyXG4gICAgZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgIGlzRm9jdXNlZCA9IGZhbHNlO1xyXG4gICAgZWRpdG9yVmlldz86IEVkaXRvclZpZXc7XHJcbiAgXHJcbiAgICBwcml2YXRlIF9kaWZmZXI/OiBLZXlWYWx1ZURpZmZlcjxzdHJpbmcsIGFueT47XHJcbiAgICBwcml2YXRlIF9vcHRpb25zOiBhbnkgPSB7fTtcclxuICAgIHByaXZhdGUgX2V4dGVuc2lvbnM6IEV4dGVuc2lvbltdID0gW107XHJcbiAgICBwcml2YXRlIGV4dGVuc2lvbnNDb21wYXJ0bWVudCA9IG5ldyBDb21wYXJ0bWVudCgpO1xyXG4gICAgcHJpdmF0ZSByZWFkT25seUNvbXBhcnRtZW50ID0gbmV3IENvbXBhcnRtZW50KCk7XHJcbiAgXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9kaWZmZXJzOiBLZXlWYWx1ZURpZmZlcnMsIHByaXZhdGUgX25nWm9uZTogTmdab25lKSB7fVxyXG4gIFxyXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZUVkaXRvcigpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICBcclxuICAgIHByaXZhdGUgYXN5bmMgaW5pdGlhbGl6ZUVkaXRvcigpIHtcclxuICAgICAgY29uc3QgeyBFZGl0b3JWaWV3IH0gPSBhd2FpdCBpbXBvcnQoJ2NvZGVtaXJyb3InKTtcclxuICAgICAgY29uc3QgeyBFZGl0b3JTdGF0ZSB9ID0gYXdhaXQgaW1wb3J0KCdAY29kZW1pcnJvci9zdGF0ZScpO1xyXG4gICAgICBcclxuICAgICAgY29uc3QgZXh0ZW5zaW9ucyA9IFtcclxuICAgICAgICBiYXNpY1NldHVwLFxyXG4gICAgICAgIHRoaXMuZXh0ZW5zaW9uc0NvbXBhcnRtZW50Lm9mKHRoaXMuX2V4dGVuc2lvbnMpLFxyXG4gICAgICAgIHRoaXMucmVhZE9ubHlDb21wYXJ0bWVudC5vZih0aGlzLmRpc2FibGVkID8gRWRpdG9yU3RhdGUucmVhZE9ubHkub2YodHJ1ZSkgOiBbXSksXHJcbiAgICAgICAgdGhpcy5jcmVhdGVVcGRhdGVMaXN0ZW5lcigpLFxyXG4gICAgICAgIHRoaXMuY3JlYXRlRm9jdXNFeHRlbnNpb24oKSxcclxuICAgICAgICB0aGlzLmNyZWF0ZVNjcm9sbEV4dGVuc2lvbigpLFxyXG4gICAgICAgIHRoaXMuY3JlYXRlRHJvcEV4dGVuc2lvbigpLFxyXG4gICAgICBdO1xyXG4gIFxyXG4gICAgICBjb25zdCBzdGF0ZSA9IEVkaXRvclN0YXRlLmNyZWF0ZSh7XHJcbiAgICAgICAgZG9jOiB0aGlzLnZhbHVlLFxyXG4gICAgICAgIGV4dGVuc2lvbnMsXHJcbiAgICAgIH0pO1xyXG4gIFxyXG4gICAgICB0aGlzLmVkaXRvclZpZXcgPSBuZXcgRWRpdG9yVmlldyh7XHJcbiAgICAgICAgc3RhdGUsXHJcbiAgICAgICAgcGFyZW50OiB0aGlzLnJlZi5uYXRpdmVFbGVtZW50LFxyXG4gICAgICB9KTtcclxuICBcclxuICAgICAgaWYgKHRoaXMuYXV0b0ZvY3VzKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0b3JWaWV3LmZvY3VzKCk7XHJcbiAgICAgIH1cclxuICBcclxuICAgICAgdGhpcy5fbmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5jb2RlTWlycm9yTG9hZGVkLmVtaXQodGhpcyk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIFxyXG4gICAgcHJpdmF0ZSBjcmVhdGVVcGRhdGVMaXN0ZW5lcigpOiBFeHRlbnNpb24ge1xyXG4gICAgICByZXR1cm4gRWRpdG9yVmlldy51cGRhdGVMaXN0ZW5lci5vZigodXBkYXRlOiBWaWV3VXBkYXRlKSA9PiB7XHJcbiAgICAgICAgaWYgKHVwZGF0ZS5kb2NDaGFuZ2VkKSB7XHJcbiAgICAgICAgICB0aGlzLl9uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jb2RlbWlycm9yVmFsdWVDaGFuZ2VkKHVwZGF0ZS52aWV3KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICBpZiAodXBkYXRlLnNlbGVjdGlvblNldCkge1xyXG4gICAgICAgICAgdGhpcy5fbmdab25lLnJ1bigoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuY3Vyc29yQWN0aXZlKHVwZGF0ZS52aWV3KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgXHJcbiAgICBwcml2YXRlIGNyZWF0ZUZvY3VzRXh0ZW5zaW9uKCk6IEV4dGVuc2lvbiB7XHJcbiAgICAgIHJldHVybiBFZGl0b3JWaWV3LmRvbUV2ZW50SGFuZGxlcnMoe1xyXG4gICAgICAgIGZvY3VzOiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9uZ1pvbmUucnVuKCgpID0+IHRoaXMuZm9jdXNDaGFuZ2VkKHRydWUpKTtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGJsdXI6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuX25nWm9uZS5ydW4oKCkgPT4gdGhpcy5mb2N1c0NoYW5nZWQoZmFsc2UpKTtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICBcclxuICAgIHByaXZhdGUgY3JlYXRlU2Nyb2xsRXh0ZW5zaW9uKCk6IEV4dGVuc2lvbiB7XHJcbiAgICAgIHJldHVybiBFZGl0b3JWaWV3LmRvbUV2ZW50SGFuZGxlcnMoe1xyXG4gICAgICAgIHNjcm9sbDogKGV2ZW50LCB2aWV3KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9uZ1pvbmUucnVuKCgpID0+IHRoaXMuc2Nyb2xsQ2hhbmdlZCh2aWV3KSk7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgXHJcbiAgICBwcml2YXRlIGNyZWF0ZURyb3BFeHRlbnNpb24oKTogRXh0ZW5zaW9uIHtcclxuICAgICAgcmV0dXJuIEVkaXRvclZpZXcuZG9tRXZlbnRIYW5kbGVycyh7XHJcbiAgICAgICAgZHJvcDogKGV2ZW50LCB2aWV3KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9uZ1pvbmUucnVuKCgpID0+IHRoaXMuZHJvcEZpbGVzKHZpZXcsIGV2ZW50KSk7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgXHJcbiAgICBwcml2YXRlIGNvbnZlcnRPcHRpb25zVG9FeHRlbnNpb25zKG9wdGlvbnM6IGFueSk6IEV4dGVuc2lvbltdIHtcclxuICAgICAgY29uc3QgZXh0ZW5zaW9uczogRXh0ZW5zaW9uW10gPSBbXTtcclxuICAgICAgXHJcbiAgICAgIGlmICghb3B0aW9ucykgcmV0dXJuIGV4dGVuc2lvbnM7XHJcbiAgXHJcbiAgICAgIC8vIEhhbmRsZSBjb21tb24gdjUgb3B0aW9ucyBhbmQgY29udmVydCB0byB2NiBleHRlbnNpb25zXHJcbiAgICAgIGlmIChvcHRpb25zLm1vZGUpIHtcclxuICAgICAgICAvLyBMYW5ndWFnZSBtb2RlIGNvbnZlcnNpb24gd291bGQgbmVlZCBzcGVjaWZpYyBsYW5ndWFnZSBwYWNrYWdlc1xyXG4gICAgICAgIC8vIFRoaXMgaXMgYSBzaW1wbGlmaWVkIGV4YW1wbGUgLSB5b3UnZCBuZWVkIHRvIGltcG9ydCBzcGVjaWZpYyBsYW5ndWFnZSBwYWNrYWdlc1xyXG4gICAgICAgIC8vIGV4dGVuc2lvbnMucHVzaChqYXZhc2NyaXB0KCkpOyAvLyBmb3IgSmF2YVNjcmlwdCBtb2RlXHJcbiAgICAgIH1cclxuICBcclxuICAgICAgaWYgKG9wdGlvbnMudGhlbWUpIHtcclxuICAgICAgICAvLyBUaGVtZSBjb252ZXJzaW9uIHdvdWxkIG5lZWQgc3BlY2lmaWMgdGhlbWUgcGFja2FnZXNcclxuICAgICAgICAvLyBleHRlbnNpb25zLnB1c2gob25lRGFyayk7IC8vIGZvciBkYXJrIHRoZW1lIGV4YW1wbGVcclxuICAgICAgfVxyXG4gIFxyXG4gICAgICBpZiAob3B0aW9ucy5saW5lTnVtYmVycyA9PT0gZmFsc2UpIHtcclxuICAgICAgICAvLyBSZW1vdmUgbGluZSBudW1iZXJzIGZyb20gYmFzaWNTZXR1cCBpZiBuZWVkZWRcclxuICAgICAgfVxyXG4gIFxyXG4gICAgICAvLyByZWFkT25seSBpcyBoYW5kbGVkIHNlcGFyYXRlbHkgdGhyb3VnaCByZWFkT25seUNvbXBhcnRtZW50XHJcbiAgXHJcbiAgICAgIHJldHVybiBleHRlbnNpb25zO1xyXG4gICAgfVxyXG4gIFxyXG4gICAgbmdEb0NoZWNrKCkge1xyXG4gICAgICBpZiAoIXRoaXMuX2RpZmZlcikge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgY29uc3QgY2hhbmdlcyA9IHRoaXMuX2RpZmZlci5kaWZmKHRoaXMuX29wdGlvbnMpO1xyXG4gICAgICBpZiAoY2hhbmdlcykge1xyXG4gICAgICAgIC8vIEZvciB2Niwgd2UgbmVlZCB0byByZWNvbmZpZ3VyZSB0aGUgZWRpdG9yIHdpdGggbmV3IGV4dGVuc2lvbnNcclxuICAgICAgICB0aGlzLnJlY29uZmlndXJlRWRpdG9yKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICBcclxuICAgIHByaXZhdGUgYXN5bmMgcmVjb25maWd1cmVFZGl0b3IoKSB7XHJcbiAgICAgIGlmICghdGhpcy5lZGl0b3JWaWV3KSByZXR1cm47XHJcbiAgXHJcbiAgICAgIGNvbnN0IGVmZmVjdHM6IFN0YXRlRWZmZWN0PGFueT5bXSA9IFtcclxuICAgICAgICB0aGlzLmV4dGVuc2lvbnNDb21wYXJ0bWVudC5yZWNvbmZpZ3VyZSh0aGlzLl9leHRlbnNpb25zKVxyXG4gICAgICBdO1xyXG4gIFxyXG4gICAgICB0aGlzLmVkaXRvclZpZXcuZGlzcGF0Y2goe1xyXG4gICAgICAgIGVmZmVjdHNcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgaWYgKHRoaXMuZWRpdG9yVmlldykge1xyXG4gICAgICAgIHRoaXMuZWRpdG9yVmlldy5kZXN0cm95KCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICBcclxuICAgIGNvZGVtaXJyb3JWYWx1ZUNoYW5nZWQodmlldzogRWRpdG9yVmlldykge1xyXG4gICAgICBjb25zdCBuZXdWYWx1ZSA9IHZpZXcuc3RhdGUuZG9jLnRvU3RyaW5nKCk7XHJcbiAgICAgIGlmICh0aGlzLnZhbHVlICE9PSBuZXdWYWx1ZSkge1xyXG4gICAgICAgIHRoaXMudmFsdWUgPSBuZXdWYWx1ZTtcclxuICAgICAgICB0aGlzLm9uQ2hhbmdlKHRoaXMudmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgXHJcbiAgICBmb2N1c0NoYW5nZWQoZm9jdXNlZDogYm9vbGVhbikge1xyXG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xyXG4gICAgICB0aGlzLmlzRm9jdXNlZCA9IGZvY3VzZWQ7XHJcbiAgICAgIHRoaXMuZm9jdXNDaGFuZ2UuZW1pdChmb2N1c2VkKTtcclxuICAgIH1cclxuICBcclxuICAgIHNjcm9sbENoYW5nZWQodmlldzogRWRpdG9yVmlldykge1xyXG4gICAgICBjb25zdCBzY3JvbGxET00gPSB2aWV3LnNjcm9sbERPTTtcclxuICAgICAgY29uc3Qgc2Nyb2xsSW5mbzogU2Nyb2xsSW5mbyA9IHtcclxuICAgICAgICBsZWZ0OiBzY3JvbGxET00uc2Nyb2xsTGVmdCxcclxuICAgICAgICB0b3A6IHNjcm9sbERPTS5zY3JvbGxUb3AsXHJcbiAgICAgICAgd2lkdGg6IHNjcm9sbERPTS5zY3JvbGxXaWR0aCxcclxuICAgICAgICBoZWlnaHQ6IHNjcm9sbERPTS5zY3JvbGxIZWlnaHQsXHJcbiAgICAgICAgY2xpZW50V2lkdGg6IHNjcm9sbERPTS5jbGllbnRXaWR0aCxcclxuICAgICAgICBjbGllbnRIZWlnaHQ6IHNjcm9sbERPTS5jbGllbnRIZWlnaHQsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuc2Nyb2xsLmVtaXQoc2Nyb2xsSW5mbyk7XHJcbiAgICB9XHJcbiAgXHJcbiAgICBjdXJzb3JBY3RpdmUodmlldzogRWRpdG9yVmlldykge1xyXG4gICAgICB0aGlzLmN1cnNvckFjdGl2aXR5LmVtaXQodmlldyk7XHJcbiAgICB9XHJcbiAgXHJcbiAgICBkcm9wRmlsZXModmlldzogRWRpdG9yVmlldywgZTogRHJhZ0V2ZW50KSB7XHJcbiAgICAgIHRoaXMuZHJvcC5lbWl0KFt2aWV3LCBlXSk7XHJcbiAgICB9XHJcbiAgXHJcbiAgICAvKiogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci4gKi9cclxuICAgIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZykge1xyXG4gICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgICAgaWYgKCF0aGlzLmVkaXRvclZpZXcpIHtcclxuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgXHJcbiAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IHRoaXMuZWRpdG9yVmlldy5zdGF0ZS5kb2MudG9TdHJpbmcoKTtcclxuICAgICAgaWYgKHZhbHVlICE9PSBjdXJyZW50VmFsdWUgJiYgbm9ybWFsaXplTGluZUVuZGluZ3MoY3VycmVudFZhbHVlKSAhPT0gbm9ybWFsaXplTGluZUVuZGluZ3ModmFsdWUpKSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmICh0aGlzLnByZXNlcnZlU2Nyb2xsUG9zaXRpb24pIHtcclxuICAgICAgICAgIGNvbnN0IHNjcm9sbEluZm8gPSB7XHJcbiAgICAgICAgICAgIGxlZnQ6IHRoaXMuZWRpdG9yVmlldy5zY3JvbGxET00uc2Nyb2xsTGVmdCxcclxuICAgICAgICAgICAgdG9wOiB0aGlzLmVkaXRvclZpZXcuc2Nyb2xsRE9NLnNjcm9sbFRvcCxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHRoaXMuZWRpdG9yVmlldy5kaXNwYXRjaCh7XHJcbiAgICAgICAgICAgIGNoYW5nZXM6IHtcclxuICAgICAgICAgICAgICBmcm9tOiAwLFxyXG4gICAgICAgICAgICAgIHRvOiB0aGlzLmVkaXRvclZpZXcuc3RhdGUuZG9jLmxlbmd0aCxcclxuICAgICAgICAgICAgICBpbnNlcnQ6IHZhbHVlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHRoaXMuZWRpdG9yVmlldy5zY3JvbGxET00uc2Nyb2xsVG8oc2Nyb2xsSW5mby5sZWZ0LCBzY3JvbGxJbmZvLnRvcCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuZWRpdG9yVmlldy5kaXNwYXRjaCh7XHJcbiAgICAgICAgICAgIGNoYW5nZXM6IHtcclxuICAgICAgICAgICAgICBmcm9tOiAwLFxyXG4gICAgICAgICAgICAgIHRvOiB0aGlzLmVkaXRvclZpZXcuc3RhdGUuZG9jLmxlbmd0aCxcclxuICAgICAgICAgICAgICBpbnNlcnQ6IHZhbHVlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgXHJcbiAgICAvKiogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci4gKi9cclxuICAgIHJlZ2lzdGVyT25DaGFuZ2UoZm46ICh2YWx1ZTogc3RyaW5nKSA9PiB2b2lkKSB7XHJcbiAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcclxuICAgIH1cclxuICBcclxuICAgIC8qKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLiAqL1xyXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpIHtcclxuICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcclxuICAgIH1cclxuICBcclxuICAgIC8qKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLiAqL1xyXG4gICAgYXN5bmMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XHJcbiAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xyXG4gICAgICBcclxuICAgICAgaWYgKHRoaXMuZWRpdG9yVmlldykge1xyXG4gICAgICAgIGNvbnN0IHsgRWRpdG9yU3RhdGUgfSA9IGF3YWl0IGltcG9ydCgnQGNvZGVtaXJyb3Ivc3RhdGUnKTtcclxuICAgICAgICB0aGlzLmVkaXRvclZpZXcuZGlzcGF0Y2goe1xyXG4gICAgICAgICAgZWZmZWN0czogW1xyXG4gICAgICAgICAgICB0aGlzLnJlYWRPbmx5Q29tcGFydG1lbnQucmVjb25maWd1cmUoXHJcbiAgICAgICAgICAgICAgaXNEaXNhYmxlZCA/IEVkaXRvclN0YXRlLnJlYWRPbmx5Lm9mKHRydWUpIDogW11cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgXVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgXHJcbiAgICAvKiogSW1wbGVtZW50ZWQgYXMgcGFydCBvZiBDb250cm9sVmFsdWVBY2Nlc3Nvci4gKi9cclxuICAgIHByaXZhdGUgb25DaGFuZ2UgPSAoXzogYW55KSA9PiB7fTtcclxuICAgIC8qKiBJbXBsZW1lbnRlZCBhcyBwYXJ0IG9mIENvbnRyb2xWYWx1ZUFjY2Vzc29yLiAqL1xyXG4gICAgcHJpdmF0ZSBvblRvdWNoZWQgPSAoKSA9PiB7fTtcclxuICBcclxuICAgIC8vIFB1YmxpYyBBUEkgbWV0aG9kcyBmb3IgY29tcGF0aWJpbGl0eVxyXG4gICAgcHVibGljIGZvY3VzKCkge1xyXG4gICAgICB0aGlzLmVkaXRvclZpZXc/LmZvY3VzKCk7XHJcbiAgICB9XHJcbiAgXHJcbiAgICBwdWJsaWMgZ2V0RWRpdG9yVmlldygpOiBFZGl0b3JWaWV3IHwgdW5kZWZpbmVkIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZWRpdG9yVmlldztcclxuICAgIH1cclxuICB9XHJcbiAgIl19
8
+ import{ChangeDetectionStrategy,Component,ElementRef,EventEmitter,forwardRef,Input,KeyValueDiffers,NgZone,Output,ViewChild}from"@angular/core";import{NG_VALUE_ACCESSOR}from"@angular/forms";import{EditorView,basicSetup}from"codemirror";import{Compartment}from"@codemirror/state";import*as i0 from"@angular/core";function normalizeLineEndings(e){return e?e.replace(/\r\n|\r/g,"\n"):e}export class CodemirrorComponent{set extensions(e){this._extensions=e||[],!this._differ&&e&&(this._differ=this._differs.find(e).create()),this.reconfigureEditor()}set options(e){this._options=e,this._extensions=this.convertOptionsToExtensions(e),!this._differ&&e&&(this._differ=this._differs.find(e).create()),this.reconfigureEditor()}constructor(e,t){this._differs=e,this._ngZone=t,this.className="",this.name="codemirror",this.autoFocus=!1,this.preserveScrollPosition=!1,this.cursorActivity=new EventEmitter,this.focusChange=new EventEmitter,this.scroll=new EventEmitter,this.drop=new EventEmitter,this.codeMirrorLoaded=new EventEmitter,this.value="",this.disabled=!1,this.isFocused=!1,this._options={},this._extensions=[],this.extensionsCompartment=new Compartment,this.readOnlyCompartment=new Compartment,this.onChange=e=>{},this.onTouched=()=>{}}ngAfterViewInit(){this._ngZone.runOutsideAngular((()=>{this.initializeEditor()}))}async initializeEditor(){const{EditorView:e}=await import("codemirror"),{EditorState:t}=await import("@codemirror/state"),i=[basicSetup,this.extensionsCompartment.of(this._extensions),this.readOnlyCompartment.of(this.disabled?t.readOnly.of(!0):[]),this.createUpdateListener(),this.createFocusExtension(),this.createScrollExtension(),this.createDropExtension()],o=t.create({doc:this.value,extensions:i});this.editorView=new e({state:o,parent:this.ref.nativeElement}),this.autoFocus&&this.editorView.focus(),this._ngZone.run((()=>{this.codeMirrorLoaded.emit(this)}))}createUpdateListener(){return EditorView.updateListener.of((e=>{e.docChanged&&this._ngZone.run((()=>{this.codemirrorValueChanged(e.view)})),e.selectionSet&&this._ngZone.run((()=>{this.cursorActive(e.view)}))}))}createFocusExtension(){return EditorView.domEventHandlers({focus:()=>(this._ngZone.run((()=>this.focusChanged(!0))),!1),blur:()=>(this._ngZone.run((()=>this.focusChanged(!1))),!1)})}createScrollExtension(){return EditorView.domEventHandlers({scroll:(e,t)=>(this._ngZone.run((()=>this.scrollChanged(t))),!1)})}createDropExtension(){return EditorView.domEventHandlers({drop:(e,t)=>(this._ngZone.run((()=>this.dropFiles(t,e))),!1)})}convertOptionsToExtensions(e){const t=[];return e?(e.mode,e.theme,e.lineNumbers,t):t}ngDoCheck(){if(!this._differ)return;this._differ.diff(this._options)&&this.reconfigureEditor()}async reconfigureEditor(){if(!this.editorView)return;const e=[this.extensionsCompartment.reconfigure(this._extensions)];this.editorView.dispatch({effects:e})}ngOnDestroy(){this.editorView&&this.editorView.destroy()}codemirrorValueChanged(e){const t=e.state.doc.toString();this.value!==t&&(this.value=t,this.onChange(this.value))}focusChanged(e){this.onTouched(),this.isFocused=e,this.focusChange.emit(e)}scrollChanged(e){const t=e.scrollDOM,i={left:t.scrollLeft,top:t.scrollTop,width:t.scrollWidth,height:t.scrollHeight,clientWidth:t.clientWidth,clientHeight:t.clientHeight};this.scroll.emit(i)}cursorActive(e){this.cursorActivity.emit(e)}dropFiles(e,t){this.drop.emit([e,t])}writeValue(e){if(null==e)return;if(!this.editorView)return void(this.value=e);const t=this.editorView.state.doc.toString();if(e!==t&&normalizeLineEndings(t)!==normalizeLineEndings(e))if(this.value=e,this.preserveScrollPosition){const t={left:this.editorView.scrollDOM.scrollLeft,top:this.editorView.scrollDOM.scrollTop};this.editorView.dispatch({changes:{from:0,to:this.editorView.state.doc.length,insert:e}}),this.editorView.scrollDOM.scrollTo(t.left,t.top)}else this.editorView.dispatch({changes:{from:0,to:this.editorView.state.doc.length,insert:e}})}registerOnChange(e){this.onChange=e}registerOnTouched(e){this.onTouched=e}async setDisabledState(e){if(this.disabled=e,this.editorView){const{EditorState:t}=await import("@codemirror/state");this.editorView.dispatch({effects:[this.readOnlyCompartment.reconfigure(e?t.readOnly.of(!0):[])]})}}focus(){this.editorView?.focus()}getEditorView(){return this.editorView}static{this.ɵfac=i0.ɵɵngDeclareFactory({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:CodemirrorComponent,deps:[{token:i0.KeyValueDiffers},{token:i0.NgZone}],target:i0.ɵɵFactoryTarget.Component})}static{this.ɵcmp=i0.ɵɵngDeclareComponent({minVersion:"14.0.0",version:"17.3.12",type:CodemirrorComponent,isStandalone:!0,selector:"ngx-codemirror",inputs:{className:"className",name:"name",autoFocus:"autoFocus",extensions:"extensions",options:"options",preserveScrollPosition:"preserveScrollPosition"},outputs:{cursorActivity:"cursorActivity",focusChange:"focusChange",scroll:"scroll",drop:"drop",codeMirrorLoaded:"codeMirrorLoaded"},providers:[{provide:NG_VALUE_ACCESSOR,useExisting:forwardRef((()=>CodemirrorComponent)),multi:!0}],viewQueries:[{propertyName:"ref",first:!0,predicate:["ref"],descendants:!0}],ngImport:i0,template:'\n <div\n [class]="\'ngx-codemirror \' + className"\n [class.ngx-codemirror--focused]="isFocused"\n #ref\n ></div>\n ',isInline:!0,changeDetection:i0.ChangeDetectionStrategy.OnPush})}}i0.ɵɵngDeclareClassMetadata({minVersion:"12.0.0",version:"17.3.12",ngImport:i0,type:CodemirrorComponent,decorators:[{type:Component,args:[{selector:"ngx-codemirror",standalone:!0,template:'\n <div\n [class]="\'ngx-codemirror \' + className"\n [class.ngx-codemirror--focused]="isFocused"\n #ref\n ></div>\n ',providers:[{provide:NG_VALUE_ACCESSOR,useExisting:forwardRef((()=>CodemirrorComponent)),multi:!0}],preserveWhitespaces:!1,changeDetection:ChangeDetectionStrategy.OnPush}]}],ctorParameters:()=>[{type:i0.KeyValueDiffers},{type:i0.NgZone}],propDecorators:{className:[{type:Input}],name:[{type:Input}],autoFocus:[{type:Input}],extensions:[{type:Input}],options:[{type:Input}],preserveScrollPosition:[{type:Input}],cursorActivity:[{type:Output}],focusChange:[{type:Output}],scroll:[{type:Output}],drop:[{type:Output}],codeMirrorLoaded:[{type:Output}],ref:[{type:ViewChild,args:["ref"]}]}});
9
+ var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9jb2RlL2ZtLWNvZGVtaXJyb3IvZm0tY29kZW1pcnJvci5jb21wb25lbnQubWpz`
10
+
@@ -1,2 +1,10 @@
1
- export * from "./fm-codemirror/fm-codemirror.component";
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mbW9kZS1uZy9zcmMvbGliL2NvZGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5Q0FBeUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2ZtLWNvZGVtaXJyb3IvZm0tY29kZW1pcnJvci5jb21wb25lbnRcIiJdfQ==
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/code/index.mjs
7
+ */
8
+ export*from"./fm-codemirror/fm-codemirror.component";
9
+ var MODULE_PATH_NEED = `6K+l5paH5Lu25piv5pys6aG555uu55qE5LiA6YOo5YiGIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBDb21wb25lbnRzIGluIEZtb2RlIEluYy4KICAgIOeJiOadg+aJgOaciSDCqSDmnKrmnaXpo57pqawgwqkg5rGf6KW/6ISR5o6n56eR5oqA5pyJ6ZmQ5YWs5Y+4IENvcHlyaWdodCDCqSBGbW9kZSBUZWNobm9sb2d5IENvLiwgTHRkLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgICDkuKXnpoHlnKjmnKrnu4/mjojmnYPnmoTmg4XlhrXkuIvvvIzpgJrov4fku7vkvZXlqpLku4vlpI3liLbmraTmlofku7YgVW5hdXRob3JpemVkIGNvcHlpbmcgb2YgdGhpcyBmaWxlLCB2aWEgYW55IG1lZGl1bSBpcyBzdHJpY3RseSBwcm9oaWJpdGVkCiAgICDor6Xmlofku7bmmK/kuJPmnInnmoTmnLrlr4bmlofku7YgUHJvcHJpZXRhcnkgYW5kIGNvbmZpZGVudGlhbAogICAKICAgIENvcHlyaWdodCAyMDIxLW5vdyBGbW9kZSBJbmMuIHN1cHBvcnRAZm1vZGUuY24uIDE4NjA3MDA3MDczLgogICAg5L+d55WZ5omA5pyJ5p2D5YipIEFsbCByaWdodHMgcmVzZXJ2ZWQuCgogICAgUEFUSDovaG9tZS9yeWFuL3dvcmtzcGFjZS9ub3ZhL25vdmEtYWRtaW4vZGlzdC9mbW9kZS1uZy9lc20yMDIyL2xpYi9jb2RlL2luZGV4Lm1qcw==`
10
+