@yinuo-ngm/server 1.0.15 → 1.0.16

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 (326) hide show
  1. package/lib/plugins/error-handler.plugin.js +5 -0
  2. package/lib/routes/api-client/hub-token.routes.js +22 -0
  3. package/lib/routes/index.js +2 -0
  4. package/lib/routes/node-version.routes.d.ts +2 -0
  5. package/lib/routes/node-version.routes.js +56 -0
  6. package/lib/routes/project.routes.js +5 -0
  7. package/lib/routes/sprite-browse.routes.js +19 -5
  8. package/lib/routes/sprite.routes.js +17 -11
  9. package/lib/routes/static-files.routes.js +16 -0
  10. package/lib/routes/task.routes.js +7 -0
  11. package/package.json +3 -3
  12. package/www/3rdpartylicenses.txt +14 -66
  13. package/www/browser/chunk-2BZRE4G7.js +1 -0
  14. package/www/browser/chunk-2X3MRS27.js +1 -0
  15. package/www/browser/chunk-4KETC6EB.js +1 -0
  16. package/www/browser/chunk-5T5KA5PG.js +1 -0
  17. package/www/browser/chunk-6CGHNKJI.js +1 -0
  18. package/www/browser/chunk-76TVIB33.js +63 -0
  19. package/www/browser/chunk-7J24TP36.js +1 -0
  20. package/www/browser/chunk-ACAZUX6C.js +1 -0
  21. package/www/browser/chunk-B6MBYCXI.js +1 -0
  22. package/www/browser/chunk-BYEU6KGP.js +2 -0
  23. package/www/browser/chunk-CZ5AZ3VW.js +1 -0
  24. package/www/browser/chunk-DW7F5PEA.js +1 -0
  25. package/www/browser/chunk-DXF7BVK5.js +1 -0
  26. package/www/browser/chunk-EEVPZGEY.js +1 -0
  27. package/www/browser/chunk-G2W3B7TJ.js +1 -0
  28. package/www/browser/chunk-GDWS2L66.js +1 -0
  29. package/www/browser/chunk-HFZLJHYR.js +1 -0
  30. package/www/browser/chunk-HGONFYP6.js +1 -0
  31. package/www/browser/chunk-HHBPULJW.js +2 -0
  32. package/www/browser/chunk-HRXCR3IN.js +1 -0
  33. package/www/browser/chunk-INL2PELS.js +1 -0
  34. package/www/browser/chunk-JHMEKUZ5.js +1 -0
  35. package/www/browser/chunk-JU3TEDBV.js +37 -0
  36. package/www/browser/chunk-JZULA5JV.js +1 -0
  37. package/www/browser/chunk-KVFR7GFV.js +20 -0
  38. package/www/browser/chunk-L5D75AMV.js +1 -0
  39. package/www/browser/chunk-L7TMCSHV.js +1 -0
  40. package/www/browser/chunk-LQ5OXSW7.js +3 -0
  41. package/www/browser/chunk-MVQTKINJ.js +1 -0
  42. package/www/browser/chunk-N4LRZJBP.js +1 -0
  43. package/www/browser/chunk-O2EYEF7J.js +1 -0
  44. package/www/browser/chunk-OMDHJIUB.js +1 -0
  45. package/www/browser/chunk-OWUAAOHW.js +2 -0
  46. package/www/browser/chunk-PIK5YPIB.js +1 -0
  47. package/www/browser/chunk-RHLQRQDK.js +9 -0
  48. package/www/browser/chunk-RW2JPJV7.js +1 -0
  49. package/www/browser/chunk-S3SJ4VVM.js +11 -0
  50. package/www/browser/chunk-SIVPP74B.js +0 -0
  51. package/www/browser/chunk-SPRWNZHF.js +15 -0
  52. package/www/browser/chunk-SQQNR223.js +1 -0
  53. package/www/browser/chunk-SVQWPHF5.js +1 -0
  54. package/www/browser/chunk-SYCNSLAW.js +4 -0
  55. package/www/browser/chunk-T3KK7ZXB.js +2 -0
  56. package/www/browser/chunk-TMX5TTV3.js +1 -0
  57. package/www/browser/chunk-UFY3FLDK.js +1 -0
  58. package/www/browser/chunk-UJOHBN2Y.js +1 -0
  59. package/www/browser/chunk-UQGCUFNM.js +1 -0
  60. package/www/browser/chunk-UXXWRMM6.js +1 -0
  61. package/www/browser/chunk-UZRJGJTD.js +2 -0
  62. package/www/browser/chunk-WD4IAQR3.js +1 -0
  63. package/www/browser/chunk-WF2QTF5L.js +1 -0
  64. package/www/browser/chunk-WI67LAOV.js +4 -0
  65. package/www/browser/chunk-WNCM6QKB.js +1 -0
  66. package/www/browser/chunk-XJ5KZQNN.js +1 -0
  67. package/www/browser/chunk-YETDFSQE.js +1 -0
  68. package/www/browser/chunk-YMTC5GZK.js +1 -0
  69. package/www/browser/chunk-YVZHJ76K.js +1 -0
  70. package/www/browser/chunk-ZNTJRLVH.js +1 -0
  71. package/www/browser/dark.css +1 -30433
  72. package/www/browser/default.css +1 -30149
  73. package/www/browser/index.html +3 -3
  74. package/www/browser/main-6LN5C22E.js +34 -0
  75. package/www/browser/scripts-U25HCVEI.js +6 -0
  76. package/www/browser/styles-ROAHD7MY.css +1 -0
  77. package/www/browser/add-widget-drawer.component.css.map +0 -7
  78. package/www/browser/advanced-editor.component.css.map +0 -7
  79. package/www/browser/api-client.component.css.map +0 -7
  80. package/www/browser/api-history-drawer.component.css.map +0 -7
  81. package/www/browser/app.css.map +0 -7
  82. package/www/browser/attachment-viewer.component.css.map +0 -7
  83. package/www/browser/auth-editor.component.css.map +0 -7
  84. package/www/browser/body-editor.component.css.map +0 -7
  85. package/www/browser/chunk-2YSUXBGC.js +0 -627
  86. package/www/browser/chunk-2YSUXBGC.js.map +0 -1
  87. package/www/browser/chunk-3G2GEOPV.js +0 -456
  88. package/www/browser/chunk-3G2GEOPV.js.map +0 -1
  89. package/www/browser/chunk-3L72DF3R.js +0 -1683
  90. package/www/browser/chunk-3L72DF3R.js.map +0 -1
  91. package/www/browser/chunk-3MCIETCQ.js +0 -8279
  92. package/www/browser/chunk-3MCIETCQ.js.map +0 -1
  93. package/www/browser/chunk-665WC4RU.js +0 -5383
  94. package/www/browser/chunk-665WC4RU.js.map +0 -1
  95. package/www/browser/chunk-6QMSEZPT.js +0 -10044
  96. package/www/browser/chunk-6QMSEZPT.js.map +0 -1
  97. package/www/browser/chunk-6TBQERYX.js +0 -280
  98. package/www/browser/chunk-6TBQERYX.js.map +0 -1
  99. package/www/browser/chunk-6UW4MRJZ.js +0 -43
  100. package/www/browser/chunk-6UW4MRJZ.js.map +0 -7
  101. package/www/browser/chunk-6XUMIL3W.js +0 -5495
  102. package/www/browser/chunk-6XUMIL3W.js.map +0 -1
  103. package/www/browser/chunk-724YOJI3.js +0 -903
  104. package/www/browser/chunk-724YOJI3.js.map +0 -1
  105. package/www/browser/chunk-766T7YES.js +0 -437
  106. package/www/browser/chunk-766T7YES.js.map +0 -1
  107. package/www/browser/chunk-7FC7DN65.js +0 -728
  108. package/www/browser/chunk-7FC7DN65.js.map +0 -1
  109. package/www/browser/chunk-APGQRYWX.js +0 -156
  110. package/www/browser/chunk-APGQRYWX.js.map +0 -7
  111. package/www/browser/chunk-AQHSGTHS.js +0 -1960
  112. package/www/browser/chunk-AQHSGTHS.js.map +0 -1
  113. package/www/browser/chunk-CTOEAJQK.js +0 -40
  114. package/www/browser/chunk-CTOEAJQK.js.map +0 -7
  115. package/www/browser/chunk-DEGQJKKZ.js +0 -409
  116. package/www/browser/chunk-DEGQJKKZ.js.map +0 -1
  117. package/www/browser/chunk-DIJX2663.js +0 -1166
  118. package/www/browser/chunk-DIJX2663.js.map +0 -1
  119. package/www/browser/chunk-E4XD4GLT.js +0 -427
  120. package/www/browser/chunk-E4XD4GLT.js.map +0 -1
  121. package/www/browser/chunk-EQOY6A3M.js +0 -212
  122. package/www/browser/chunk-EQOY6A3M.js.map +0 -1
  123. package/www/browser/chunk-ETTBRXVA.js +0 -2643
  124. package/www/browser/chunk-ETTBRXVA.js.map +0 -1
  125. package/www/browser/chunk-FLSUSPBD.js +0 -5569
  126. package/www/browser/chunk-FLSUSPBD.js.map +0 -1
  127. package/www/browser/chunk-FZNHBEAZ.js +0 -102
  128. package/www/browser/chunk-FZNHBEAZ.js.map +0 -1
  129. package/www/browser/chunk-GJC7CZIJ.js +0 -361
  130. package/www/browser/chunk-GJC7CZIJ.js.map +0 -7
  131. package/www/browser/chunk-GMCNMOTD.js +0 -844
  132. package/www/browser/chunk-GMCNMOTD.js.map +0 -7
  133. package/www/browser/chunk-H43HGCRW.js +0 -198
  134. package/www/browser/chunk-H43HGCRW.js.map +0 -7
  135. package/www/browser/chunk-J447GBHM.js +0 -160
  136. package/www/browser/chunk-J447GBHM.js.map +0 -1
  137. package/www/browser/chunk-JN3VOWP7.js +0 -384
  138. package/www/browser/chunk-JN3VOWP7.js.map +0 -1
  139. package/www/browser/chunk-KSHAGY2M.js +0 -399
  140. package/www/browser/chunk-KSHAGY2M.js.map +0 -7
  141. package/www/browser/chunk-KV72AKOD.js +0 -59
  142. package/www/browser/chunk-KV72AKOD.js.map +0 -7
  143. package/www/browser/chunk-LAVMY2SJ.js +0 -26
  144. package/www/browser/chunk-LAVMY2SJ.js.map +0 -7
  145. package/www/browser/chunk-LLRVGHG5.js +0 -73
  146. package/www/browser/chunk-LLRVGHG5.js.map +0 -7
  147. package/www/browser/chunk-LPME4AJ3.js +0 -196
  148. package/www/browser/chunk-LPME4AJ3.js.map +0 -1
  149. package/www/browser/chunk-LVPSURVU.js +0 -4615
  150. package/www/browser/chunk-LVPSURVU.js.map +0 -1
  151. package/www/browser/chunk-MMPO7QLO.js +0 -4146
  152. package/www/browser/chunk-MMPO7QLO.js.map +0 -7
  153. package/www/browser/chunk-O7LB6VFM.js +0 -1953
  154. package/www/browser/chunk-O7LB6VFM.js.map +0 -1
  155. package/www/browser/chunk-P5CWA4FO.js +0 -685
  156. package/www/browser/chunk-P5CWA4FO.js.map +0 -1
  157. package/www/browser/chunk-RBWIWNTL.js +0 -203
  158. package/www/browser/chunk-RBWIWNTL.js.map +0 -7
  159. package/www/browser/chunk-RUXJCM3V.js +0 -26199
  160. package/www/browser/chunk-RUXJCM3V.js.map +0 -1
  161. package/www/browser/chunk-S77VVYUZ.js +0 -168
  162. package/www/browser/chunk-S77VVYUZ.js.map +0 -1
  163. package/www/browser/chunk-SCXPYFOB.js +0 -4316
  164. package/www/browser/chunk-SCXPYFOB.js.map +0 -1
  165. package/www/browser/chunk-SS73S33S.js +0 -471
  166. package/www/browser/chunk-SS73S33S.js.map +0 -7
  167. package/www/browser/chunk-T6UAOWNP.js +0 -600
  168. package/www/browser/chunk-T6UAOWNP.js.map +0 -1
  169. package/www/browser/chunk-TEW4MY4J.js +0 -148
  170. package/www/browser/chunk-TEW4MY4J.js.map +0 -7
  171. package/www/browser/chunk-TVORF3SF.js +0 -82
  172. package/www/browser/chunk-TVORF3SF.js.map +0 -7
  173. package/www/browser/chunk-UAN42EUZ.js +0 -2147
  174. package/www/browser/chunk-UAN42EUZ.js.map +0 -1
  175. package/www/browser/chunk-ULOHDK7Y.js +0 -1
  176. package/www/browser/chunk-ULOHDK7Y.js.map +0 -7
  177. package/www/browser/chunk-UYJ3FVRV.js +0 -3978
  178. package/www/browser/chunk-UYJ3FVRV.js.map +0 -1
  179. package/www/browser/chunk-VXHZMSDM.js +0 -5509
  180. package/www/browser/chunk-VXHZMSDM.js.map +0 -1
  181. package/www/browser/chunk-VYNQPZQO.js +0 -281
  182. package/www/browser/chunk-VYNQPZQO.js.map +0 -1
  183. package/www/browser/chunk-W3J23PZI.js +0 -9213
  184. package/www/browser/chunk-W3J23PZI.js.map +0 -1
  185. package/www/browser/chunk-W5HGHCQT.js +0 -1642
  186. package/www/browser/chunk-W5HGHCQT.js.map +0 -7
  187. package/www/browser/chunk-XF5H7E4L.js +0 -4723
  188. package/www/browser/chunk-XF5H7E4L.js.map +0 -1
  189. package/www/browser/chunk-XNFNEBMY.js +0 -398
  190. package/www/browser/chunk-XNFNEBMY.js.map +0 -7
  191. package/www/browser/chunk-XQY5SPGI.js +0 -30811
  192. package/www/browser/chunk-XQY5SPGI.js.map +0 -1
  193. package/www/browser/chunk-Y7JBZHNK.js +0 -514
  194. package/www/browser/chunk-Y7JBZHNK.js.map +0 -1
  195. package/www/browser/chunk-YWHRP4X3.js +0 -406
  196. package/www/browser/chunk-YWHRP4X3.js.map +0 -1
  197. package/www/browser/chunk-Z7FJIV62.js +0 -95
  198. package/www/browser/chunk-Z7FJIV62.js.map +0 -7
  199. package/www/browser/chunk-ZBZHXS46.js +0 -1674
  200. package/www/browser/chunk-ZBZHXS46.js.map +0 -1
  201. package/www/browser/chunk-ZZA5NVAI.js +0 -735
  202. package/www/browser/chunk-ZZA5NVAI.js.map +0 -1
  203. package/www/browser/collection-modal.component.css.map +0 -7
  204. package/www/browser/collection-tree-item.component.css.map +0 -7
  205. package/www/browser/collection-tree.component.css.map +0 -7
  206. package/www/browser/config-change-bar-component.css.map +0 -7
  207. package/www/browser/config-item-component.css.map +0 -7
  208. package/www/browser/config-nav-component.css.map +0 -7
  209. package/www/browser/config-section-component.css.map +0 -7
  210. package/www/browser/create-summary-aside.component.css.map +0 -7
  211. package/www/browser/curl-actions.component.css.map +0 -7
  212. package/www/browser/dark.css.map +0 -7
  213. package/www/browser/dashboard-canvas.component.css.map +0 -7
  214. package/www/browser/dashboard.component.css.map +0 -7
  215. package/www/browser/default.css.map +0 -7
  216. package/www/browser/detail-item-card.component.css.map +0 -7
  217. package/www/browser/ellipsis-text.component.css.map +0 -7
  218. package/www/browser/env-modal.component.css.map +0 -7
  219. package/www/browser/env-picker.component.css.map +0 -7
  220. package/www/browser/feedback.component.css.map +0 -7
  221. package/www/browser/fs-explorer.component.css.map +0 -7
  222. package/www/browser/git-import-modal.component.css.map +0 -7
  223. package/www/browser/hub-v2-personal-token-modal.component.css.map +0 -7
  224. package/www/browser/issue-action-area.component.css.map +0 -7
  225. package/www/browser/issue-add-participants-dialog.component.css.map +0 -7
  226. package/www/browser/issue-assign-dialog.component.css.map +0 -7
  227. package/www/browser/issue-attachment-area.component.css.map +0 -7
  228. package/www/browser/issue-base-info-area.component.css.map +0 -7
  229. package/www/browser/issue-branches.component.css.map +0 -7
  230. package/www/browser/issue-close-dialog.component.css.map +0 -7
  231. package/www/browser/issue-collaborators-panel.component.css.map +0 -7
  232. package/www/browser/issue-comment-editor.component.css.map +0 -7
  233. package/www/browser/issue-create-branch-dialog.component.css.map +0 -7
  234. package/www/browser/issue-description-area.component.css.map +0 -7
  235. package/www/browser/issue-detail.component.css.map +0 -7
  236. package/www/browser/issue-resolve-dialog.component.css.map +0 -7
  237. package/www/browser/issue-start-own-branch-dialog.component.css.map +0 -7
  238. package/www/browser/issues-list-table.component.css.map +0 -7
  239. package/www/browser/issues.component.css.map +0 -7
  240. package/www/browser/kill-port-widget.component.css.map +0 -7
  241. package/www/browser/kv-table.component.css.map +0 -7
  242. package/www/browser/layout-footer.component.css.map +0 -7
  243. package/www/browser/layout-header.component.css.map +0 -7
  244. package/www/browser/layout-menu.component.css.map +0 -7
  245. package/www/browser/layout-project-nav.component.css.map +0 -7
  246. package/www/browser/layout-sidebar.component.css.map +0 -7
  247. package/www/browser/layout.component.css.map +0 -7
  248. package/www/browser/less-viewport-component.css.map +0 -7
  249. package/www/browser/main.js +0 -1872
  250. package/www/browser/main.js.map +0 -1
  251. package/www/browser/markdown-viewer.component.css.map +0 -7
  252. package/www/browser/news-feed-widget.component.css.map +0 -7
  253. package/www/browser/ng-devtool.component.css.map +0 -7
  254. package/www/browser/nginx-config-editor.component.css.map +0 -7
  255. package/www/browser/nginx-log-viewer.component.css.map +0 -7
  256. package/www/browser/nginx-secondary-logs-tab.component.css.map +0 -7
  257. package/www/browser/nginx-secondary-perf-tab.component.css.map +0 -7
  258. package/www/browser/nginx-secondary-settings-tab.component.css.map +0 -7
  259. package/www/browser/nginx-secondary-ssl-tab.component.css.map +0 -7
  260. package/www/browser/nginx-secondary-test-tab.component.css.map +0 -7
  261. package/www/browser/nginx-secondary-traffic-tab.component.css.map +0 -7
  262. package/www/browser/nginx-secondary-upstream-tab.component.css.map +0 -7
  263. package/www/browser/nginx-section-card.component.css.map +0 -7
  264. package/www/browser/nginx-server-drawer.component.css.map +0 -7
  265. package/www/browser/nginx-server-list.component.css.map +0 -7
  266. package/www/browser/nginx-stat-card.component.css.map +0 -7
  267. package/www/browser/nginx.component.css.map +0 -7
  268. package/www/browser/page-layout.component.css.map +0 -7
  269. package/www/browser/pick-workspace-modal.component.css.map +0 -7
  270. package/www/browser/polyfills.js +0 -26584
  271. package/www/browser/polyfills.js.map +0 -7
  272. package/www/browser/project-conf.component.css.map +0 -7
  273. package/www/browser/project-create-modal.component.css.map +0 -7
  274. package/www/browser/project-create.component.css.map +0 -7
  275. package/www/browser/project-deps.component.css.map +0 -7
  276. package/www/browser/project-edit-modal.component.css.map +0 -7
  277. package/www/browser/project-import.component.css.map +0 -7
  278. package/www/browser/project-item-popover.component.css.map +0 -7
  279. package/www/browser/project-item.component.css.map +0 -7
  280. package/www/browser/project-list.component.css.map +0 -7
  281. package/www/browser/projects.component.css.map +0 -7
  282. package/www/browser/quick-task-widget.component.css.map +0 -7
  283. package/www/browser/rd-action-area.component.css.map +0 -7
  284. package/www/browser/rd-advance-stage-dialog.component.css.map +0 -7
  285. package/www/browser/rd-block-dialog.component.css.map +0 -7
  286. package/www/browser/rd-create-dialog.component.css.map +0 -7
  287. package/www/browser/rd-detail.component.css.map +0 -7
  288. package/www/browser/rd-item-card.component.css.map +0 -7
  289. package/www/browser/rd-list-board.component.css.map +0 -7
  290. package/www/browser/rd-list-table.component.css.map +0 -7
  291. package/www/browser/rd.component.css.map +0 -7
  292. package/www/browser/request-collections.component.css.map +0 -7
  293. package/www/browser/request-editor.component.css.map +0 -7
  294. package/www/browser/request-list-item.component.css.map +0 -7
  295. package/www/browser/request-list.component.css.map +0 -7
  296. package/www/browser/request-tabs-bar.component.css.map +0 -7
  297. package/www/browser/request-tabs.component.css.map +0 -7
  298. package/www/browser/request-urlbar.component.css.map +0 -7
  299. package/www/browser/response-viewer.component.css.map +0 -7
  300. package/www/browser/scripts.js +0 -245
  301. package/www/browser/scripts.js.map +0 -7
  302. package/www/browser/setting.component.css.map +0 -7
  303. package/www/browser/sprite-conf-modal.component.css.map +0 -7
  304. package/www/browser/sprite-icons-panel-component.css.map +0 -7
  305. package/www/browser/sprite-images-panel-component.css.map +0 -7
  306. package/www/browser/sprite-result-tabs.component.css.map +0 -7
  307. package/www/browser/sprite-viewport-component.css.map +0 -7
  308. package/www/browser/sprite.component.css.map +0 -7
  309. package/www/browser/step-advance.component.css.map +0 -7
  310. package/www/browser/step-basic.component.css.map +0 -7
  311. package/www/browser/step-config.component.css.map +0 -7
  312. package/www/browser/step-features.component.css.map +0 -7
  313. package/www/browser/step-preset.component.css.map +0 -7
  314. package/www/browser/step-summary-aside.component.css.map +0 -7
  315. package/www/browser/styles.css +0 -258
  316. package/www/browser/styles.css.map +0 -7
  317. package/www/browser/system-log.component.css.map +0 -7
  318. package/www/browser/task-actions.component.css.map +0 -7
  319. package/www/browser/task-console.component.css.map +0 -7
  320. package/www/browser/task-header.component.css.map +0 -7
  321. package/www/browser/task-list.component.css.map +0 -7
  322. package/www/browser/tasks.component.css.map +0 -7
  323. package/www/browser/terminal-view.component.css.map +0 -7
  324. package/www/browser/welcome-widget.component.css.map +0 -7
  325. package/www/browser/widget-base.component.css.map +0 -7
  326. package/www/browser/widget-host.component.css.map +0 -7
@@ -1 +0,0 @@
1
- {"version":3,"sources":["node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-drawer.mjs"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { inject, TemplateRef, Directive, InjectionToken, ChangeDetectorRef, Renderer2, Injector, ViewContainerRef, DestroyRef, EventEmitter, DOCUMENT, Type, booleanAttribute, ContentChild, ViewChild, Output, Input, ChangeDetectionStrategy, Component, Injectable, NgModule } from '@angular/core';\nimport { __esDecorate, __runInitializers } from 'tslib';\nimport { FocusTrapFactory } from '@angular/cdk/a11y';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { ESCAPE } from '@angular/cdk/keycodes';\nimport { OverlayKeyboardDispatcher, createOverlayRef, createBlockScrollStrategy, createGlobalPositionStrategy, CdkScrollable } from '@angular/cdk/overlay';\nimport * as i3 from '@angular/cdk/portal';\nimport { ComponentPortal, TemplatePortal, PortalModule, CdkPortalOutlet } from '@angular/cdk/portal';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Subject } from 'rxjs';\nimport { drawerMaskMotion } from 'ng-zorro-antd/core/animation';\nimport { WithConfig, NzConfigService } from 'ng-zorro-antd/core/config';\nimport { NzNoAnimationDirective } from 'ng-zorro-antd/core/no-animation';\nimport * as i1 from 'ng-zorro-antd/core/outlet';\nimport { NzOutletModule } from 'ng-zorro-antd/core/outlet';\nimport { overlayZIndexSetter } from 'ng-zorro-antd/core/overlay';\nimport { isTemplateRef, toCssPixel } from 'ng-zorro-antd/core/util';\nimport * as i2 from 'ng-zorro-antd/icon';\nimport { NzIconModule } from 'ng-zorro-antd/icon';\nimport { takeUntil } from 'rxjs/operators';\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzDrawerContentDirective {\n templateRef = inject((TemplateRef));\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzDrawerContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });\n static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"14.0.0\", version: \"20.3.0\", type: NzDrawerContentDirective, isStandalone: true, selector: \"[nzDrawerContent]\", exportAs: [\"nzDrawerContent\"], ngImport: i0 });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzDrawerContentDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[nzDrawerContent]',\n exportAs: 'nzDrawerContent'\n }]\n }] });\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nconst DRAWER_DEFAULT_SIZE = 378;\nconst DRAWER_LARGE_SIZE = 736;\nconst NZ_DRAWER_DATA = new InjectionToken(typeof ngDevMode !== 'undefined' && ngDevMode ? 'nz-drawer-data' : '');\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzDrawerRef {\n}\n\nconst DRAWER_ANIMATE_DURATION = 300;\nconst NZ_CONFIG_MODULE_NAME = 'drawer';\nlet NzDrawerComponent = (() => {\n let _classSuper = NzDrawerRef;\n let _nzMaskClosable_decorators;\n let _nzMaskClosable_initializers = [];\n let _nzMaskClosable_extraInitializers = [];\n let _nzMask_decorators;\n let _nzMask_initializers = [];\n let _nzMask_extraInitializers = [];\n let _nzCloseOnNavigation_decorators;\n let _nzCloseOnNavigation_initializers = [];\n let _nzCloseOnNavigation_extraInitializers = [];\n let _nzDirection_decorators;\n let _nzDirection_initializers = [];\n let _nzDirection_extraInitializers = [];\n return class NzDrawerComponent extends _classSuper {\n static {\n const _metadata = typeof Symbol === \"function\" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;\n _nzMaskClosable_decorators = [WithConfig()];\n _nzMask_decorators = [WithConfig()];\n _nzCloseOnNavigation_decorators = [WithConfig()];\n _nzDirection_decorators = [WithConfig()];\n __esDecorate(null, null, _nzMaskClosable_decorators, { kind: \"field\", name: \"nzMaskClosable\", static: false, private: false, access: { has: obj => \"nzMaskClosable\" in obj, get: obj => obj.nzMaskClosable, set: (obj, value) => { obj.nzMaskClosable = value; } }, metadata: _metadata }, _nzMaskClosable_initializers, _nzMaskClosable_extraInitializers);\n __esDecorate(null, null, _nzMask_decorators, { kind: \"field\", name: \"nzMask\", static: false, private: false, access: { has: obj => \"nzMask\" in obj, get: obj => obj.nzMask, set: (obj, value) => { obj.nzMask = value; } }, metadata: _metadata }, _nzMask_initializers, _nzMask_extraInitializers);\n __esDecorate(null, null, _nzCloseOnNavigation_decorators, { kind: \"field\", name: \"nzCloseOnNavigation\", static: false, private: false, access: { has: obj => \"nzCloseOnNavigation\" in obj, get: obj => obj.nzCloseOnNavigation, set: (obj, value) => { obj.nzCloseOnNavigation = value; } }, metadata: _metadata }, _nzCloseOnNavigation_initializers, _nzCloseOnNavigation_extraInitializers);\n __esDecorate(null, null, _nzDirection_decorators, { kind: \"field\", name: \"nzDirection\", static: false, private: false, access: { has: obj => \"nzDirection\" in obj, get: obj => obj.nzDirection, set: (obj, value) => { obj.nzDirection = value; } }, metadata: _metadata }, _nzDirection_initializers, _nzDirection_extraInitializers);\n if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });\n }\n cdr = inject(ChangeDetectorRef);\n nzConfigService = inject(NzConfigService);\n renderer = inject(Renderer2);\n injector = inject(Injector);\n changeDetectorRef = inject(ChangeDetectorRef);\n focusTrapFactory = inject(FocusTrapFactory);\n viewContainerRef = inject(ViewContainerRef);\n overlayKeyboardDispatcher = inject(OverlayKeyboardDispatcher);\n directionality = inject(Directionality);\n destroyRef = inject(DestroyRef);\n _nzModuleName = NZ_CONFIG_MODULE_NAME;\n nzContent;\n nzCloseIcon = 'close';\n nzClosable = true;\n nzMaskClosable = __runInitializers(this, _nzMaskClosable_initializers, true);\n nzMask = (__runInitializers(this, _nzMaskClosable_extraInitializers), __runInitializers(this, _nzMask_initializers, true));\n nzCloseOnNavigation = (__runInitializers(this, _nzMask_extraInitializers), __runInitializers(this, _nzCloseOnNavigation_initializers, true));\n nzNoAnimation = (__runInitializers(this, _nzCloseOnNavigation_extraInitializers), false);\n nzKeyboard = true;\n nzTitle;\n nzExtra;\n nzFooter;\n nzPlacement = 'right';\n nzSize = 'default';\n nzMaskStyle = {};\n nzBodyStyle = {};\n nzWrapClassName;\n nzWidth;\n nzHeight;\n nzZIndex = 1000;\n nzOffsetX = 0;\n nzOffsetY = 0;\n componentInstance = null;\n componentRef = null;\n set nzVisible(value) {\n this.isOpen = value;\n }\n get nzVisible() {\n return this.isOpen;\n }\n nzOnViewInit = new EventEmitter();\n nzOnClose = new EventEmitter();\n nzVisibleChange = new EventEmitter();\n drawerTemplate;\n bodyPortalOutlet;\n contentFromContentChild;\n previouslyFocusedElement;\n placementChanging = false;\n placementChangeTimeoutId;\n nzContentParams; // only service\n nzData;\n overlayRef;\n portal;\n focusTrap;\n isOpen = false;\n inAnimation = false;\n templateContext = {\n $implicit: undefined,\n drawerRef: this\n };\n isTemplateRef = isTemplateRef;\n get offsetTransform() {\n if (!this.isOpen || this.nzOffsetX + this.nzOffsetY === 0) {\n return null;\n }\n switch (this.nzPlacement) {\n case 'left':\n return `translateX(${this.nzOffsetX}px)`;\n case 'right':\n return `translateX(-${this.nzOffsetX}px)`;\n case 'top':\n return `translateY(${this.nzOffsetY}px)`;\n case 'bottom':\n return `translateY(-${this.nzOffsetY}px)`;\n }\n }\n get transform() {\n if (this.isOpen) {\n return null;\n }\n switch (this.nzPlacement) {\n case 'left':\n return `translateX(-100%)`;\n case 'right':\n return `translateX(100%)`;\n case 'top':\n return `translateY(-100%)`;\n case 'bottom':\n return `translateY(100%)`;\n }\n }\n get width() {\n if (this.isLeftOrRight) {\n const defaultWidth = this.nzSize === 'large' ? DRAWER_LARGE_SIZE : DRAWER_DEFAULT_SIZE;\n return this.nzWidth === undefined ? toCssPixel(defaultWidth) : toCssPixel(this.nzWidth);\n }\n return null;\n }\n get height() {\n if (!this.isLeftOrRight) {\n const defaultHeight = this.nzSize === 'large' ? DRAWER_LARGE_SIZE : DRAWER_DEFAULT_SIZE;\n return this.nzHeight === undefined ? toCssPixel(defaultHeight) : toCssPixel(this.nzHeight);\n }\n return null;\n }\n get isLeftOrRight() {\n return this.nzPlacement === 'left' || this.nzPlacement === 'right';\n }\n nzAfterOpen = new Subject();\n nzAfterClose = new Subject();\n get afterOpen() {\n return this.nzAfterOpen.asObservable();\n }\n get afterClose() {\n return this.nzAfterClose.asObservable();\n }\n get isNzContentTemplateRef() {\n return isTemplateRef(this.nzContent);\n }\n // from service config\n nzDirection = __runInitializers(this, _nzDirection_initializers, undefined);\n dir = (__runInitializers(this, _nzDirection_extraInitializers), 'ltr');\n document = inject(DOCUMENT);\n constructor() {\n super();\n this.destroyRef.onDestroy(() => {\n clearTimeout(this.placementChangeTimeoutId);\n this.disposeOverlay();\n });\n }\n ngOnInit() {\n this.directionality.change?.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(direction => {\n this.dir = direction;\n this.cdr.detectChanges();\n });\n this.dir = this.nzDirection || this.directionality.value;\n this.attachOverlay();\n this.updateOverlayStyle();\n this.updateBodyOverflow();\n this.templateContext = { $implicit: this.nzData || this.nzContentParams, drawerRef: this };\n this.changeDetectorRef.detectChanges();\n }\n ngAfterViewInit() {\n this.attachBodyContent();\n // The `setTimeout` triggers change detection. There's no sense to schedule the DOM timer if anyone is\n // listening to the `nzOnViewInit` event inside the template, for instance `<nz-drawer (nzOnViewInit)=\"...\">`.\n if (this.nzOnViewInit.observers.length) {\n setTimeout(() => {\n this.nzOnViewInit.emit();\n });\n }\n }\n ngOnChanges(changes) {\n const { nzPlacement, nzVisible } = changes;\n if (nzVisible) {\n const value = changes.nzVisible.currentValue;\n if (value) {\n this.open();\n }\n else {\n this.close();\n }\n }\n if (nzPlacement && !nzPlacement.isFirstChange()) {\n this.triggerPlacementChangeCycleOnce();\n }\n }\n getAnimationDuration() {\n return this.nzNoAnimation ? 0 : DRAWER_ANIMATE_DURATION;\n }\n // Disable the transition animation temporarily when the placement changing\n triggerPlacementChangeCycleOnce() {\n if (!this.nzNoAnimation) {\n this.placementChanging = true;\n this.changeDetectorRef.markForCheck();\n clearTimeout(this.placementChangeTimeoutId);\n this.placementChangeTimeoutId = setTimeout(() => {\n this.placementChanging = false;\n this.changeDetectorRef.markForCheck();\n }, this.getAnimationDuration());\n }\n }\n close(result) {\n this.isOpen = false;\n this.inAnimation = true;\n this.nzVisibleChange.emit(false);\n this.updateOverlayStyle();\n this.overlayKeyboardDispatcher.remove(this.overlayRef);\n this.changeDetectorRef.detectChanges();\n setTimeout(() => {\n this.updateBodyOverflow();\n this.restoreFocus();\n this.inAnimation = false;\n this.nzAfterClose.next(result);\n this.nzAfterClose.complete();\n this.componentInstance = null;\n this.componentRef = null;\n }, this.getAnimationDuration());\n }\n open() {\n this.attachOverlay();\n this.isOpen = true;\n this.inAnimation = true;\n this.nzVisibleChange.emit(true);\n this.overlayKeyboardDispatcher.add(this.overlayRef);\n this.updateOverlayStyle();\n this.updateBodyOverflow();\n this.savePreviouslyFocusedElement();\n this.trapFocus();\n this.changeDetectorRef.detectChanges();\n setTimeout(() => {\n this.inAnimation = false;\n this.changeDetectorRef.detectChanges();\n this.nzAfterOpen.next();\n }, this.getAnimationDuration());\n }\n getContentComponent() {\n return this.componentInstance;\n }\n getContentComponentRef() {\n return this.componentRef;\n }\n closeClick() {\n this.nzOnClose.emit();\n }\n maskClick() {\n if (this.nzMaskClosable && this.nzMask) {\n this.nzOnClose.emit();\n }\n }\n attachBodyContent() {\n this.bodyPortalOutlet.dispose();\n if (this.nzContent instanceof Type) {\n const childInjector = Injector.create({\n parent: this.injector,\n providers: [\n { provide: NzDrawerRef, useValue: this },\n { provide: NZ_DRAWER_DATA, useValue: this.nzData }\n ]\n });\n const componentPortal = new ComponentPortal(this.nzContent, null, childInjector);\n this.componentRef = this.bodyPortalOutlet.attachComponentPortal(componentPortal);\n this.componentInstance = this.componentRef.instance;\n /**TODO\n * When nzContentParam will be remove in the next major version, we have to remove the following line\n * **/\n Object.assign(this.componentRef.instance, this.nzData || this.nzContentParams);\n this.componentRef.changeDetectorRef.detectChanges();\n }\n }\n attachOverlay() {\n if (!this.overlayRef) {\n this.portal = new TemplatePortal(this.drawerTemplate, this.viewContainerRef);\n this.overlayRef = createOverlayRef(this.injector, {\n disposeOnNavigation: this.nzCloseOnNavigation,\n positionStrategy: createGlobalPositionStrategy(this.injector),\n scrollStrategy: createBlockScrollStrategy(this.injector)\n });\n overlayZIndexSetter(this.overlayRef, this.nzZIndex);\n }\n if (this.overlayRef && !this.overlayRef.hasAttached()) {\n this.overlayRef.attach(this.portal);\n this.overlayRef.keydownEvents()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe((event) => {\n if (event.keyCode === ESCAPE && this.isOpen && this.nzKeyboard) {\n this.nzOnClose.emit();\n }\n });\n this.overlayRef\n .detachments()\n .pipe(takeUntilDestroyed(this.destroyRef))\n .subscribe(() => {\n this.close();\n this.disposeOverlay();\n });\n }\n }\n disposeOverlay() {\n this.overlayRef?.dispose();\n this.overlayRef = null;\n }\n updateOverlayStyle() {\n if (this.overlayRef && this.overlayRef.overlayElement) {\n this.renderer.setStyle(this.overlayRef.overlayElement, 'pointer-events', this.isOpen ? 'auto' : 'none');\n }\n }\n updateBodyOverflow() {\n if (this.overlayRef) {\n if (this.isOpen) {\n this.overlayRef.getConfig().scrollStrategy.enable();\n }\n else {\n this.overlayRef.getConfig().scrollStrategy.disable();\n }\n }\n }\n savePreviouslyFocusedElement() {\n if (this.document && !this.previouslyFocusedElement) {\n this.previouslyFocusedElement = this.document.activeElement;\n // We need the extra check, because IE's svg element has no blur method.\n if (this.previouslyFocusedElement && typeof this.previouslyFocusedElement.blur === 'function') {\n this.previouslyFocusedElement.blur();\n }\n }\n }\n trapFocus() {\n if (!this.focusTrap && this.overlayRef && this.overlayRef.overlayElement) {\n this.focusTrap = this.focusTrapFactory.create(this.overlayRef.overlayElement);\n this.focusTrap.focusInitialElement();\n }\n }\n restoreFocus() {\n // We need the extra check, because IE can set the `activeElement` to null in some cases.\n if (this.previouslyFocusedElement && typeof this.previouslyFocusedElement.focus === 'function') {\n this.previouslyFocusedElement.focus();\n this.previouslyFocusedElement = undefined;\n }\n if (this.focusTrap) {\n this.focusTrap.destroy();\n }\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzDrawerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });\n static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"20.3.0\", type: NzDrawerComponent, isStandalone: true, selector: \"nz-drawer\", inputs: { nzContent: \"nzContent\", nzCloseIcon: \"nzCloseIcon\", nzClosable: [\"nzClosable\", \"nzClosable\", booleanAttribute], nzMaskClosable: [\"nzMaskClosable\", \"nzMaskClosable\", booleanAttribute], nzMask: [\"nzMask\", \"nzMask\", booleanAttribute], nzCloseOnNavigation: [\"nzCloseOnNavigation\", \"nzCloseOnNavigation\", booleanAttribute], nzNoAnimation: [\"nzNoAnimation\", \"nzNoAnimation\", booleanAttribute], nzKeyboard: [\"nzKeyboard\", \"nzKeyboard\", booleanAttribute], nzTitle: \"nzTitle\", nzExtra: \"nzExtra\", nzFooter: \"nzFooter\", nzPlacement: \"nzPlacement\", nzSize: \"nzSize\", nzMaskStyle: \"nzMaskStyle\", nzBodyStyle: \"nzBodyStyle\", nzWrapClassName: \"nzWrapClassName\", nzWidth: \"nzWidth\", nzHeight: \"nzHeight\", nzZIndex: \"nzZIndex\", nzOffsetX: \"nzOffsetX\", nzOffsetY: \"nzOffsetY\", nzVisible: [\"nzVisible\", \"nzVisible\", booleanAttribute] }, outputs: { nzOnViewInit: \"nzOnViewInit\", nzOnClose: \"nzOnClose\", nzVisibleChange: \"nzVisibleChange\" }, queries: [{ propertyName: \"contentFromContentChild\", first: true, predicate: NzDrawerContentDirective, descendants: true, read: TemplateRef, static: true }], viewQueries: [{ propertyName: \"drawerTemplate\", first: true, predicate: [\"drawerTemplate\"], descendants: true, static: true }, { propertyName: \"bodyPortalOutlet\", first: true, predicate: CdkPortalOutlet, descendants: true }], exportAs: [\"nzDrawer\"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `\n <ng-template #drawerTemplate>\n <div\n class=\"ant-drawer\"\n [nzNoAnimation]=\"nzNoAnimation\"\n [class.ant-drawer-rtl]=\"dir === 'rtl'\"\n [class.ant-drawer-open]=\"isOpen\"\n [class.no-mask]=\"!nzMask\"\n [class.ant-drawer-top]=\"nzPlacement === 'top'\"\n [class.ant-drawer-bottom]=\"nzPlacement === 'bottom'\"\n [class.ant-drawer-right]=\"nzPlacement === 'right'\"\n [class.ant-drawer-left]=\"nzPlacement === 'left'\"\n [style.transform]=\"offsetTransform\"\n [style.transition]=\"placementChanging ? 'none' : null\"\n [style.zIndex]=\"nzZIndex\"\n >\n @if (nzMask && isOpen) {\n <div @drawerMaskMotion class=\"ant-drawer-mask\" (click)=\"maskClick()\" [style]=\"nzMaskStyle\"></div>\n }\n <div\n class=\"ant-drawer-content-wrapper {{ nzWrapClassName }}\"\n [style.width]=\"width\"\n [style.height]=\"height\"\n [style.transform]=\"transform\"\n [style.transition]=\"placementChanging ? 'none' : null\"\n >\n <div class=\"ant-drawer-content\">\n <div class=\"ant-drawer-wrapper-body\" [style.height]=\"isLeftOrRight ? '100%' : null\">\n @if (nzTitle || nzClosable) {\n <div class=\"ant-drawer-header\" [class.ant-drawer-header-close-only]=\"!nzTitle\">\n <div class=\"ant-drawer-header-title\">\n @if (nzClosable) {\n <button (click)=\"closeClick()\" aria-label=\"Close\" class=\"ant-drawer-close\">\n <ng-container *nzStringTemplateOutlet=\"nzCloseIcon; let closeIcon\">\n <nz-icon [nzType]=\"closeIcon\" />\n </ng-container>\n </button>\n }\n\n @if (nzTitle) {\n <div class=\"ant-drawer-title\">\n <ng-container *nzStringTemplateOutlet=\"nzTitle\">{{ nzTitle }}</ng-container>\n </div>\n }\n </div>\n @if (nzExtra) {\n <div class=\"ant-drawer-extra\">\n <ng-container *nzStringTemplateOutlet=\"nzExtra\">{{ nzExtra }}</ng-container>\n </div>\n }\n </div>\n }\n <div class=\"ant-drawer-body\" [style]=\"nzBodyStyle\" cdkScrollable>\n <ng-template cdkPortalOutlet />\n @if (nzContent) {\n @if (isTemplateRef(nzContent)) {\n <ng-container *ngTemplateOutlet=\"nzContent; context: templateContext\" />\n }\n } @else {\n @if (contentFromContentChild && (isOpen || inAnimation)) {\n <ng-template [ngTemplateOutlet]=\"contentFromContentChild\" />\n }\n }\n </div>\n @if (nzFooter) {\n <div class=\"ant-drawer-footer\">\n <ng-container *nzStringTemplateOutlet=\"nzFooter\">{{ nzFooter }}</ng-container>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n `, isInline: true, dependencies: [{ kind: \"directive\", type: NzNoAnimationDirective, selector: \"[nzNoAnimation]\", inputs: [\"nzNoAnimation\"], exportAs: [\"nzNoAnimation\"] }, { kind: \"ngmodule\", type: NzOutletModule }, { kind: \"directive\", type: i1.NzStringTemplateOutletDirective, selector: \"[nzStringTemplateOutlet]\", inputs: [\"nzStringTemplateOutletContext\", \"nzStringTemplateOutlet\"], exportAs: [\"nzStringTemplateOutlet\"] }, { kind: \"ngmodule\", type: NzIconModule }, { kind: \"directive\", type: i2.NzIconDirective, selector: \"nz-icon,[nz-icon]\", inputs: [\"nzSpin\", \"nzRotate\", \"nzType\", \"nzTheme\", \"nzTwotoneColor\", \"nzIconfont\"], exportAs: [\"nzIcon\"] }, { kind: \"ngmodule\", type: PortalModule }, { kind: \"directive\", type: i3.CdkPortalOutlet, selector: \"[cdkPortalOutlet]\", inputs: [\"cdkPortalOutlet\"], outputs: [\"attached\"], exportAs: [\"cdkPortalOutlet\"] }, { kind: \"directive\", type: NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\", \"ngTemplateOutletInjector\"] }, { kind: \"directive\", type: CdkScrollable, selector: \"[cdk-scrollable], [cdkScrollable]\" }], animations: [drawerMaskMotion], changeDetection: i0.ChangeDetectionStrategy.OnPush });\n };\n})();\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzDrawerComponent, decorators: [{\n type: Component,\n args: [{\n selector: 'nz-drawer',\n exportAs: 'nzDrawer',\n template: `\n <ng-template #drawerTemplate>\n <div\n class=\"ant-drawer\"\n [nzNoAnimation]=\"nzNoAnimation\"\n [class.ant-drawer-rtl]=\"dir === 'rtl'\"\n [class.ant-drawer-open]=\"isOpen\"\n [class.no-mask]=\"!nzMask\"\n [class.ant-drawer-top]=\"nzPlacement === 'top'\"\n [class.ant-drawer-bottom]=\"nzPlacement === 'bottom'\"\n [class.ant-drawer-right]=\"nzPlacement === 'right'\"\n [class.ant-drawer-left]=\"nzPlacement === 'left'\"\n [style.transform]=\"offsetTransform\"\n [style.transition]=\"placementChanging ? 'none' : null\"\n [style.zIndex]=\"nzZIndex\"\n >\n @if (nzMask && isOpen) {\n <div @drawerMaskMotion class=\"ant-drawer-mask\" (click)=\"maskClick()\" [style]=\"nzMaskStyle\"></div>\n }\n <div\n class=\"ant-drawer-content-wrapper {{ nzWrapClassName }}\"\n [style.width]=\"width\"\n [style.height]=\"height\"\n [style.transform]=\"transform\"\n [style.transition]=\"placementChanging ? 'none' : null\"\n >\n <div class=\"ant-drawer-content\">\n <div class=\"ant-drawer-wrapper-body\" [style.height]=\"isLeftOrRight ? '100%' : null\">\n @if (nzTitle || nzClosable) {\n <div class=\"ant-drawer-header\" [class.ant-drawer-header-close-only]=\"!nzTitle\">\n <div class=\"ant-drawer-header-title\">\n @if (nzClosable) {\n <button (click)=\"closeClick()\" aria-label=\"Close\" class=\"ant-drawer-close\">\n <ng-container *nzStringTemplateOutlet=\"nzCloseIcon; let closeIcon\">\n <nz-icon [nzType]=\"closeIcon\" />\n </ng-container>\n </button>\n }\n\n @if (nzTitle) {\n <div class=\"ant-drawer-title\">\n <ng-container *nzStringTemplateOutlet=\"nzTitle\">{{ nzTitle }}</ng-container>\n </div>\n }\n </div>\n @if (nzExtra) {\n <div class=\"ant-drawer-extra\">\n <ng-container *nzStringTemplateOutlet=\"nzExtra\">{{ nzExtra }}</ng-container>\n </div>\n }\n </div>\n }\n <div class=\"ant-drawer-body\" [style]=\"nzBodyStyle\" cdkScrollable>\n <ng-template cdkPortalOutlet />\n @if (nzContent) {\n @if (isTemplateRef(nzContent)) {\n <ng-container *ngTemplateOutlet=\"nzContent; context: templateContext\" />\n }\n } @else {\n @if (contentFromContentChild && (isOpen || inAnimation)) {\n <ng-template [ngTemplateOutlet]=\"contentFromContentChild\" />\n }\n }\n </div>\n @if (nzFooter) {\n <div class=\"ant-drawer-footer\">\n <ng-container *nzStringTemplateOutlet=\"nzFooter\">{{ nzFooter }}</ng-container>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: [drawerMaskMotion],\n imports: [NzNoAnimationDirective, NzOutletModule, NzIconModule, PortalModule, NgTemplateOutlet, CdkScrollable]\n }]\n }], ctorParameters: () => [], propDecorators: { nzContent: [{\n type: Input\n }], nzCloseIcon: [{\n type: Input\n }], nzClosable: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], nzMaskClosable: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], nzMask: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], nzCloseOnNavigation: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], nzNoAnimation: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], nzKeyboard: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], nzTitle: [{\n type: Input\n }], nzExtra: [{\n type: Input\n }], nzFooter: [{\n type: Input\n }], nzPlacement: [{\n type: Input\n }], nzSize: [{\n type: Input\n }], nzMaskStyle: [{\n type: Input\n }], nzBodyStyle: [{\n type: Input\n }], nzWrapClassName: [{\n type: Input\n }], nzWidth: [{\n type: Input\n }], nzHeight: [{\n type: Input\n }], nzZIndex: [{\n type: Input\n }], nzOffsetX: [{\n type: Input\n }], nzOffsetY: [{\n type: Input\n }], nzVisible: [{\n type: Input,\n args: [{ transform: booleanAttribute }]\n }], nzOnViewInit: [{\n type: Output\n }], nzOnClose: [{\n type: Output\n }], nzVisibleChange: [{\n type: Output\n }], drawerTemplate: [{\n type: ViewChild,\n args: ['drawerTemplate', { static: true }]\n }], bodyPortalOutlet: [{\n type: ViewChild,\n args: [CdkPortalOutlet, { static: false }]\n }], contentFromContentChild: [{\n type: ContentChild,\n args: [NzDrawerContentDirective, { static: true, read: TemplateRef }]\n }], nzDirection: [] } });\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass DrawerBuilderForService {\n overlayRef;\n options;\n drawerRef;\n unsubscribe$ = new Subject();\n constructor(overlayRef, options) {\n this.overlayRef = overlayRef;\n this.options = options;\n /** pick {@link NzDrawerOptions.nzOnCancel} and omit this option */\n const { nzOnCancel, ...componentOption } = this.options;\n this.drawerRef = this.overlayRef.attach(new ComponentPortal(NzDrawerComponent)).instance;\n this.updateOptions(componentOption);\n // Prevent repeatedly open drawer when tap focus element.\n this.drawerRef.savePreviouslyFocusedElement();\n this.drawerRef.nzOnViewInit.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\n this.drawerRef.open();\n });\n this.drawerRef.nzOnClose.subscribe(() => {\n if (nzOnCancel) {\n nzOnCancel().then(canClose => {\n if (canClose !== false) {\n this.drawerRef.close();\n }\n });\n }\n else {\n this.drawerRef.close();\n }\n });\n this.drawerRef.afterClose.pipe(takeUntil(this.unsubscribe$)).subscribe(() => {\n this.overlayRef.dispose();\n this.drawerRef = null;\n this.unsubscribe$.next();\n this.unsubscribe$.complete();\n });\n }\n getInstance() {\n return this.drawerRef;\n }\n updateOptions(options) {\n Object.assign(this.drawerRef, options);\n }\n}\nclass NzDrawerService {\n injector = inject(Injector);\n create(options) {\n return new DrawerBuilderForService(createOverlayRef(this.injector), options).getInstance();\n }\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzDrawerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzDrawerService });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzDrawerService, decorators: [{\n type: Injectable\n }] });\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\nclass NzDrawerModule {\n static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzDrawerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"14.0.0\", version: \"20.3.0\", ngImport: i0, type: NzDrawerModule, imports: [NzDrawerComponent, NzDrawerContentDirective], exports: [NzDrawerComponent, NzDrawerContentDirective] });\n static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzDrawerModule, providers: [NzDrawerService], imports: [NzDrawerComponent] });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.3.0\", ngImport: i0, type: NzDrawerModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [NzDrawerComponent, NzDrawerContentDirective],\n providers: [NzDrawerService],\n exports: [NzDrawerComponent, NzDrawerContentDirective]\n }]\n }] });\n\n/**\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { DRAWER_ANIMATE_DURATION, DRAWER_DEFAULT_SIZE, DRAWER_LARGE_SIZE, DrawerBuilderForService, NZ_DRAWER_DATA, NzDrawerComponent, NzDrawerContentDirective, NzDrawerModule, NzDrawerRef, NzDrawerService };\n\n"],"mappings":"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","names":[],"x_google_ignoreList":[0]}
@@ -1,156 +0,0 @@
1
- import {
2
- BehaviorSubject,
3
- Injectable,
4
- NgZone,
5
- Subject,
6
- __decorate,
7
- timer
8
- } from "./chunk-XQY5SPGI.js";
9
-
10
- // src/environments/environment.ts
11
- var APP_CONFIG = {
12
- production: false,
13
- environment: "WEB"
14
- };
15
-
16
- // src/app/core/ws/ws-client.service.ts
17
- var WsClientService = class WsClientService2 {
18
- zone;
19
- ws;
20
- url = APP_CONFIG.production === true ? `ws:${window.location.host}/ws` : `ws://127.0.0.1:3210/ws`;
21
- pending = [];
22
- state$ = new BehaviorSubject("idle");
23
- inbound$ = new Subject();
24
- reconnectAttempt = 0;
25
- manualClose = false;
26
- opening = false;
27
- reconnectSub;
28
- constructor(zone) {
29
- this.zone = zone;
30
- }
31
- /** 给外部监听连接状态 */
32
- stateChanges() {
33
- return this.state$.asObservable();
34
- }
35
- messages() {
36
- return this.inbound$.asObservable();
37
- }
38
- connect() {
39
- if (this.opening)
40
- return;
41
- if (this.ws && (this.ws.readyState === WebSocket.OPEN || this.ws.readyState === WebSocket.CONNECTING)) {
42
- return;
43
- }
44
- this.manualClose = false;
45
- this.open();
46
- }
47
- close() {
48
- this.manualClose = true;
49
- this.cancelReconnect();
50
- this.stopHeartbeat();
51
- this.ws?.close();
52
- this.ws = void 0;
53
- this.opening = false;
54
- this.state$.next("closed");
55
- }
56
- send(obj) {
57
- const data = JSON.stringify(obj);
58
- if (this.ws?.readyState === WebSocket.OPEN) {
59
- this.ws.send(data);
60
- } else {
61
- this.pending.push(obj);
62
- }
63
- }
64
- isOpen() {
65
- return this.state$.value === "open";
66
- }
67
- open() {
68
- if (this.opening)
69
- return;
70
- if (this.ws && (this.ws.readyState === WebSocket.OPEN || this.ws.readyState === WebSocket.CONNECTING)) {
71
- return;
72
- }
73
- this.opening = true;
74
- this.state$.next("connecting");
75
- this.cancelReconnect();
76
- this.zone.runOutsideAngular(() => {
77
- const ws = new WebSocket(this.url);
78
- this.ws = ws;
79
- ws.onopen = () => {
80
- this.reconnectAttempt = 0;
81
- this.opening = false;
82
- this.cancelReconnect();
83
- const toSend = this.pending.splice(0);
84
- toSend.forEach((m) => this.send(m));
85
- this.zone.run(() => this.state$.next("open"));
86
- this.startHeartbeat();
87
- };
88
- ws.onmessage = (evt) => {
89
- let msg;
90
- try {
91
- msg = JSON.parse(evt.data);
92
- } catch {
93
- return;
94
- }
95
- this.zone.run(() => this.inbound$.next(msg));
96
- };
97
- ws.onerror = () => {
98
- this.zone.run(() => this.state$.next("error"));
99
- try {
100
- ws.close();
101
- } catch {
102
- }
103
- };
104
- ws.onclose = () => {
105
- this.opening = false;
106
- this.ws = void 0;
107
- this.stopHeartbeat();
108
- this.zone.run(() => this.state$.next("closed"));
109
- if (!this.manualClose) {
110
- this.scheduleReconnect();
111
- }
112
- };
113
- });
114
- }
115
- heartbeatTimer;
116
- startHeartbeat() {
117
- this.stopHeartbeat();
118
- this.heartbeatTimer = setInterval(() => {
119
- this.send({ op: "ping" });
120
- }, 2e4);
121
- }
122
- stopHeartbeat() {
123
- if (this.heartbeatTimer) {
124
- clearInterval(this.heartbeatTimer);
125
- this.heartbeatTimer = void 0;
126
- }
127
- }
128
- scheduleReconnect() {
129
- if (this.reconnectSub)
130
- return;
131
- this.reconnectAttempt++;
132
- const delay = Math.min(1e3 * Math.pow(2, this.reconnectAttempt), 15e3);
133
- this.reconnectSub = timer(delay).subscribe(() => {
134
- this.reconnectSub = void 0;
135
- if (this.manualClose)
136
- return;
137
- this.open();
138
- });
139
- }
140
- cancelReconnect() {
141
- this.reconnectSub?.unsubscribe();
142
- this.reconnectSub = void 0;
143
- }
144
- static ctorParameters = () => [
145
- { type: NgZone }
146
- ];
147
- };
148
- WsClientService = __decorate([
149
- Injectable({ providedIn: "root" })
150
- ], WsClientService);
151
-
152
- export {
153
- APP_CONFIG,
154
- WsClientService
155
- };
156
- //# sourceMappingURL=chunk-APGQRYWX.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["src/environments/environment.web.ts", "src/app/core/ws/ws-client.service.ts"],
4
- "sourcesContent": ["export const APP_CONFIG = {\r\n production: false,\r\n environment: 'WEB'\r\n};\r\n", "import { Injectable, NgZone } from \"@angular/core\";\r\nimport { BehaviorSubject, Observable, Subject, Subscription, timer } from \"rxjs\";\r\nimport { WsClientMsg, WsServerMsg, WsState } from \"./ws.types\";\r\nimport { APP_CONFIG } from \"@env/environment\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class WsClientService {\r\n private ws?: WebSocket;\r\n private readonly url = APP_CONFIG.production === true ? `ws:${window.location.host}/ws` : `ws://127.0.0.1:3210/ws`;\r\n private pending: WsClientMsg[] = [];\r\n\r\n private state$ = new BehaviorSubject<WsState>(\"idle\");\r\n private inbound$ = new Subject<WsServerMsg>();\r\n\r\n private reconnectAttempt = 0;\r\n private manualClose = false;\r\n\r\n private opening = false;\r\n private reconnectSub?: Subscription;\r\n\r\n constructor(private zone: NgZone) { }\r\n\r\n /** 给外部监听连接状态 */\r\n stateChanges(): Observable<WsState> {\r\n return this.state$.asObservable();\r\n }\r\n\r\n messages(): Observable<WsServerMsg> {\r\n return this.inbound$.asObservable();\r\n }\r\n\r\n connect() {\r\n if (this.opening) return;\r\n if (\r\n this.ws &&\r\n (this.ws.readyState === WebSocket.OPEN ||\r\n this.ws.readyState === WebSocket.CONNECTING)\r\n ) {\r\n return;\r\n }\r\n this.manualClose = false;\r\n this.open();\r\n }\r\n\r\n close() {\r\n this.manualClose = true;\r\n this.cancelReconnect();\r\n this.stopHeartbeat();\r\n this.ws?.close();\r\n this.ws = undefined;\r\n this.opening = false;\r\n this.state$.next(\"closed\");\r\n }\r\n\r\n send(obj: WsClientMsg) {\r\n const data = JSON.stringify(obj);\r\n if (this.ws?.readyState === WebSocket.OPEN) {\r\n this.ws.send(data);\r\n } else {\r\n this.pending.push(obj);\r\n }\r\n }\r\n isOpen(): boolean {\r\n return this.state$.value === \"open\";\r\n }\r\n\r\n private open() {\r\n if (this.opening) return;\r\n if (\r\n this.ws &&\r\n (this.ws.readyState === WebSocket.OPEN ||\r\n this.ws.readyState === WebSocket.CONNECTING)\r\n ) {\r\n return;\r\n }\r\n\r\n this.opening = true;\r\n this.state$.next(\"connecting\");\r\n\r\n this.cancelReconnect();\r\n\r\n this.zone.runOutsideAngular(() => {\r\n\r\n const ws = new WebSocket(this.url);\r\n this.ws = ws;\r\n\r\n ws.onopen = () => {\r\n this.reconnectAttempt = 0;\r\n this.opening = false;\r\n\r\n this.cancelReconnect();\r\n\r\n const toSend = this.pending.splice(0);\r\n toSend.forEach((m) => this.send(m));\r\n\r\n this.zone.run(() => this.state$.next(\"open\"));\r\n\r\n this.startHeartbeat();\r\n };\r\n\r\n ws.onmessage = (evt) => {\r\n let msg: any;\r\n try {\r\n msg = JSON.parse(evt.data);\r\n } catch {\r\n return;\r\n }\r\n this.zone.run(() => this.inbound$.next(msg));\r\n };\r\n\r\n ws.onerror = () => {\r\n this.zone.run(() => this.state$.next(\"error\"));\r\n try {\r\n ws.close();\r\n } catch { }\r\n };\r\n\r\n ws.onclose = () => {\r\n this.opening = false;\r\n this.ws = undefined;\r\n this.stopHeartbeat();\r\n\r\n this.zone.run(() => this.state$.next(\"closed\"));\r\n\r\n if (!this.manualClose) {\r\n this.scheduleReconnect();\r\n }\r\n };\r\n });\r\n }\r\n\r\n private heartbeatTimer?: any;\r\n\r\n private startHeartbeat() {\r\n this.stopHeartbeat();\r\n this.heartbeatTimer = setInterval(() => {\r\n this.send({ op: \"ping\" });\r\n }, 20_000);\r\n }\r\n\r\n private stopHeartbeat() {\r\n if (this.heartbeatTimer) {\r\n clearInterval(this.heartbeatTimer);\r\n this.heartbeatTimer = undefined;\r\n }\r\n }\r\n\r\n private scheduleReconnect() {\r\n if (this.reconnectSub) return;\r\n\r\n this.reconnectAttempt++;\r\n const delay = Math.min(1000 * Math.pow(2, this.reconnectAttempt), 15_000);\r\n\r\n this.reconnectSub = timer(delay).subscribe(() => {\r\n this.reconnectSub = undefined;\r\n if (this.manualClose) return;\r\n this.open();\r\n });\r\n }\r\n\r\n private cancelReconnect() {\r\n this.reconnectSub?.unsubscribe();\r\n this.reconnectSub = undefined;\r\n }\r\n}\r\n"],
5
- "mappings": "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",
6
- "names": ["WsClientService"]
7
- }