@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.
- package/lib/plugins/error-handler.plugin.js +5 -0
- package/lib/routes/api-client/hub-token.routes.js +22 -0
- package/lib/routes/index.js +2 -0
- package/lib/routes/node-version.routes.d.ts +2 -0
- package/lib/routes/node-version.routes.js +56 -0
- package/lib/routes/project.routes.js +5 -0
- package/lib/routes/sprite-browse.routes.js +19 -5
- package/lib/routes/sprite.routes.js +17 -11
- package/lib/routes/static-files.routes.js +16 -0
- package/lib/routes/task.routes.js +7 -0
- package/package.json +3 -3
- package/www/3rdpartylicenses.txt +14 -66
- package/www/browser/chunk-2BZRE4G7.js +1 -0
- package/www/browser/chunk-2X3MRS27.js +1 -0
- package/www/browser/chunk-4KETC6EB.js +1 -0
- package/www/browser/chunk-5T5KA5PG.js +1 -0
- package/www/browser/chunk-6CGHNKJI.js +1 -0
- package/www/browser/chunk-76TVIB33.js +63 -0
- package/www/browser/chunk-7J24TP36.js +1 -0
- package/www/browser/chunk-ACAZUX6C.js +1 -0
- package/www/browser/chunk-B6MBYCXI.js +1 -0
- package/www/browser/chunk-BYEU6KGP.js +2 -0
- package/www/browser/chunk-CZ5AZ3VW.js +1 -0
- package/www/browser/chunk-DW7F5PEA.js +1 -0
- package/www/browser/chunk-DXF7BVK5.js +1 -0
- package/www/browser/chunk-EEVPZGEY.js +1 -0
- package/www/browser/chunk-G2W3B7TJ.js +1 -0
- package/www/browser/chunk-GDWS2L66.js +1 -0
- package/www/browser/chunk-HFZLJHYR.js +1 -0
- package/www/browser/chunk-HGONFYP6.js +1 -0
- package/www/browser/chunk-HHBPULJW.js +2 -0
- package/www/browser/chunk-HRXCR3IN.js +1 -0
- package/www/browser/chunk-INL2PELS.js +1 -0
- package/www/browser/chunk-JHMEKUZ5.js +1 -0
- package/www/browser/chunk-JU3TEDBV.js +37 -0
- package/www/browser/chunk-JZULA5JV.js +1 -0
- package/www/browser/chunk-KVFR7GFV.js +20 -0
- package/www/browser/chunk-L5D75AMV.js +1 -0
- package/www/browser/chunk-L7TMCSHV.js +1 -0
- package/www/browser/chunk-LQ5OXSW7.js +3 -0
- package/www/browser/chunk-MVQTKINJ.js +1 -0
- package/www/browser/chunk-N4LRZJBP.js +1 -0
- package/www/browser/chunk-O2EYEF7J.js +1 -0
- package/www/browser/chunk-OMDHJIUB.js +1 -0
- package/www/browser/chunk-OWUAAOHW.js +2 -0
- package/www/browser/chunk-PIK5YPIB.js +1 -0
- package/www/browser/chunk-RHLQRQDK.js +9 -0
- package/www/browser/chunk-RW2JPJV7.js +1 -0
- package/www/browser/chunk-S3SJ4VVM.js +11 -0
- package/www/browser/chunk-SIVPP74B.js +0 -0
- package/www/browser/chunk-SPRWNZHF.js +15 -0
- package/www/browser/chunk-SQQNR223.js +1 -0
- package/www/browser/chunk-SVQWPHF5.js +1 -0
- package/www/browser/chunk-SYCNSLAW.js +4 -0
- package/www/browser/chunk-T3KK7ZXB.js +2 -0
- package/www/browser/chunk-TMX5TTV3.js +1 -0
- package/www/browser/chunk-UFY3FLDK.js +1 -0
- package/www/browser/chunk-UJOHBN2Y.js +1 -0
- package/www/browser/chunk-UQGCUFNM.js +1 -0
- package/www/browser/chunk-UXXWRMM6.js +1 -0
- package/www/browser/chunk-UZRJGJTD.js +2 -0
- package/www/browser/chunk-WD4IAQR3.js +1 -0
- package/www/browser/chunk-WF2QTF5L.js +1 -0
- package/www/browser/chunk-WI67LAOV.js +4 -0
- package/www/browser/chunk-WNCM6QKB.js +1 -0
- package/www/browser/chunk-XJ5KZQNN.js +1 -0
- package/www/browser/chunk-YETDFSQE.js +1 -0
- package/www/browser/chunk-YMTC5GZK.js +1 -0
- package/www/browser/chunk-YVZHJ76K.js +1 -0
- package/www/browser/chunk-ZNTJRLVH.js +1 -0
- package/www/browser/dark.css +1 -30433
- package/www/browser/default.css +1 -30149
- package/www/browser/index.html +3 -3
- package/www/browser/main-6LN5C22E.js +34 -0
- package/www/browser/scripts-U25HCVEI.js +6 -0
- package/www/browser/styles-ROAHD7MY.css +1 -0
- package/www/browser/add-widget-drawer.component.css.map +0 -7
- package/www/browser/advanced-editor.component.css.map +0 -7
- package/www/browser/api-client.component.css.map +0 -7
- package/www/browser/api-history-drawer.component.css.map +0 -7
- package/www/browser/app.css.map +0 -7
- package/www/browser/attachment-viewer.component.css.map +0 -7
- package/www/browser/auth-editor.component.css.map +0 -7
- package/www/browser/body-editor.component.css.map +0 -7
- package/www/browser/chunk-2YSUXBGC.js +0 -627
- package/www/browser/chunk-2YSUXBGC.js.map +0 -1
- package/www/browser/chunk-3G2GEOPV.js +0 -456
- package/www/browser/chunk-3G2GEOPV.js.map +0 -1
- package/www/browser/chunk-3L72DF3R.js +0 -1683
- package/www/browser/chunk-3L72DF3R.js.map +0 -1
- package/www/browser/chunk-3MCIETCQ.js +0 -8279
- package/www/browser/chunk-3MCIETCQ.js.map +0 -1
- package/www/browser/chunk-665WC4RU.js +0 -5383
- package/www/browser/chunk-665WC4RU.js.map +0 -1
- package/www/browser/chunk-6QMSEZPT.js +0 -10044
- package/www/browser/chunk-6QMSEZPT.js.map +0 -1
- package/www/browser/chunk-6TBQERYX.js +0 -280
- package/www/browser/chunk-6TBQERYX.js.map +0 -1
- package/www/browser/chunk-6UW4MRJZ.js +0 -43
- package/www/browser/chunk-6UW4MRJZ.js.map +0 -7
- package/www/browser/chunk-6XUMIL3W.js +0 -5495
- package/www/browser/chunk-6XUMIL3W.js.map +0 -1
- package/www/browser/chunk-724YOJI3.js +0 -903
- package/www/browser/chunk-724YOJI3.js.map +0 -1
- package/www/browser/chunk-766T7YES.js +0 -437
- package/www/browser/chunk-766T7YES.js.map +0 -1
- package/www/browser/chunk-7FC7DN65.js +0 -728
- package/www/browser/chunk-7FC7DN65.js.map +0 -1
- package/www/browser/chunk-APGQRYWX.js +0 -156
- package/www/browser/chunk-APGQRYWX.js.map +0 -7
- package/www/browser/chunk-AQHSGTHS.js +0 -1960
- package/www/browser/chunk-AQHSGTHS.js.map +0 -1
- package/www/browser/chunk-CTOEAJQK.js +0 -40
- package/www/browser/chunk-CTOEAJQK.js.map +0 -7
- package/www/browser/chunk-DEGQJKKZ.js +0 -409
- package/www/browser/chunk-DEGQJKKZ.js.map +0 -1
- package/www/browser/chunk-DIJX2663.js +0 -1166
- package/www/browser/chunk-DIJX2663.js.map +0 -1
- package/www/browser/chunk-E4XD4GLT.js +0 -427
- package/www/browser/chunk-E4XD4GLT.js.map +0 -1
- package/www/browser/chunk-EQOY6A3M.js +0 -212
- package/www/browser/chunk-EQOY6A3M.js.map +0 -1
- package/www/browser/chunk-ETTBRXVA.js +0 -2643
- package/www/browser/chunk-ETTBRXVA.js.map +0 -1
- package/www/browser/chunk-FLSUSPBD.js +0 -5569
- package/www/browser/chunk-FLSUSPBD.js.map +0 -1
- package/www/browser/chunk-FZNHBEAZ.js +0 -102
- package/www/browser/chunk-FZNHBEAZ.js.map +0 -1
- package/www/browser/chunk-GJC7CZIJ.js +0 -361
- package/www/browser/chunk-GJC7CZIJ.js.map +0 -7
- package/www/browser/chunk-GMCNMOTD.js +0 -844
- package/www/browser/chunk-GMCNMOTD.js.map +0 -7
- package/www/browser/chunk-H43HGCRW.js +0 -198
- package/www/browser/chunk-H43HGCRW.js.map +0 -7
- package/www/browser/chunk-J447GBHM.js +0 -160
- package/www/browser/chunk-J447GBHM.js.map +0 -1
- package/www/browser/chunk-JN3VOWP7.js +0 -384
- package/www/browser/chunk-JN3VOWP7.js.map +0 -1
- package/www/browser/chunk-KSHAGY2M.js +0 -399
- package/www/browser/chunk-KSHAGY2M.js.map +0 -7
- package/www/browser/chunk-KV72AKOD.js +0 -59
- package/www/browser/chunk-KV72AKOD.js.map +0 -7
- package/www/browser/chunk-LAVMY2SJ.js +0 -26
- package/www/browser/chunk-LAVMY2SJ.js.map +0 -7
- package/www/browser/chunk-LLRVGHG5.js +0 -73
- package/www/browser/chunk-LLRVGHG5.js.map +0 -7
- package/www/browser/chunk-LPME4AJ3.js +0 -196
- package/www/browser/chunk-LPME4AJ3.js.map +0 -1
- package/www/browser/chunk-LVPSURVU.js +0 -4615
- package/www/browser/chunk-LVPSURVU.js.map +0 -1
- package/www/browser/chunk-MMPO7QLO.js +0 -4146
- package/www/browser/chunk-MMPO7QLO.js.map +0 -7
- package/www/browser/chunk-O7LB6VFM.js +0 -1953
- package/www/browser/chunk-O7LB6VFM.js.map +0 -1
- package/www/browser/chunk-P5CWA4FO.js +0 -685
- package/www/browser/chunk-P5CWA4FO.js.map +0 -1
- package/www/browser/chunk-RBWIWNTL.js +0 -203
- package/www/browser/chunk-RBWIWNTL.js.map +0 -7
- package/www/browser/chunk-RUXJCM3V.js +0 -26199
- package/www/browser/chunk-RUXJCM3V.js.map +0 -1
- package/www/browser/chunk-S77VVYUZ.js +0 -168
- package/www/browser/chunk-S77VVYUZ.js.map +0 -1
- package/www/browser/chunk-SCXPYFOB.js +0 -4316
- package/www/browser/chunk-SCXPYFOB.js.map +0 -1
- package/www/browser/chunk-SS73S33S.js +0 -471
- package/www/browser/chunk-SS73S33S.js.map +0 -7
- package/www/browser/chunk-T6UAOWNP.js +0 -600
- package/www/browser/chunk-T6UAOWNP.js.map +0 -1
- package/www/browser/chunk-TEW4MY4J.js +0 -148
- package/www/browser/chunk-TEW4MY4J.js.map +0 -7
- package/www/browser/chunk-TVORF3SF.js +0 -82
- package/www/browser/chunk-TVORF3SF.js.map +0 -7
- package/www/browser/chunk-UAN42EUZ.js +0 -2147
- package/www/browser/chunk-UAN42EUZ.js.map +0 -1
- package/www/browser/chunk-ULOHDK7Y.js +0 -1
- package/www/browser/chunk-ULOHDK7Y.js.map +0 -7
- package/www/browser/chunk-UYJ3FVRV.js +0 -3978
- package/www/browser/chunk-UYJ3FVRV.js.map +0 -1
- package/www/browser/chunk-VXHZMSDM.js +0 -5509
- package/www/browser/chunk-VXHZMSDM.js.map +0 -1
- package/www/browser/chunk-VYNQPZQO.js +0 -281
- package/www/browser/chunk-VYNQPZQO.js.map +0 -1
- package/www/browser/chunk-W3J23PZI.js +0 -9213
- package/www/browser/chunk-W3J23PZI.js.map +0 -1
- package/www/browser/chunk-W5HGHCQT.js +0 -1642
- package/www/browser/chunk-W5HGHCQT.js.map +0 -7
- package/www/browser/chunk-XF5H7E4L.js +0 -4723
- package/www/browser/chunk-XF5H7E4L.js.map +0 -1
- package/www/browser/chunk-XNFNEBMY.js +0 -398
- package/www/browser/chunk-XNFNEBMY.js.map +0 -7
- package/www/browser/chunk-XQY5SPGI.js +0 -30811
- package/www/browser/chunk-XQY5SPGI.js.map +0 -1
- package/www/browser/chunk-Y7JBZHNK.js +0 -514
- package/www/browser/chunk-Y7JBZHNK.js.map +0 -1
- package/www/browser/chunk-YWHRP4X3.js +0 -406
- package/www/browser/chunk-YWHRP4X3.js.map +0 -1
- package/www/browser/chunk-Z7FJIV62.js +0 -95
- package/www/browser/chunk-Z7FJIV62.js.map +0 -7
- package/www/browser/chunk-ZBZHXS46.js +0 -1674
- package/www/browser/chunk-ZBZHXS46.js.map +0 -1
- package/www/browser/chunk-ZZA5NVAI.js +0 -735
- package/www/browser/chunk-ZZA5NVAI.js.map +0 -1
- package/www/browser/collection-modal.component.css.map +0 -7
- package/www/browser/collection-tree-item.component.css.map +0 -7
- package/www/browser/collection-tree.component.css.map +0 -7
- package/www/browser/config-change-bar-component.css.map +0 -7
- package/www/browser/config-item-component.css.map +0 -7
- package/www/browser/config-nav-component.css.map +0 -7
- package/www/browser/config-section-component.css.map +0 -7
- package/www/browser/create-summary-aside.component.css.map +0 -7
- package/www/browser/curl-actions.component.css.map +0 -7
- package/www/browser/dark.css.map +0 -7
- package/www/browser/dashboard-canvas.component.css.map +0 -7
- package/www/browser/dashboard.component.css.map +0 -7
- package/www/browser/default.css.map +0 -7
- package/www/browser/detail-item-card.component.css.map +0 -7
- package/www/browser/ellipsis-text.component.css.map +0 -7
- package/www/browser/env-modal.component.css.map +0 -7
- package/www/browser/env-picker.component.css.map +0 -7
- package/www/browser/feedback.component.css.map +0 -7
- package/www/browser/fs-explorer.component.css.map +0 -7
- package/www/browser/git-import-modal.component.css.map +0 -7
- package/www/browser/hub-v2-personal-token-modal.component.css.map +0 -7
- package/www/browser/issue-action-area.component.css.map +0 -7
- package/www/browser/issue-add-participants-dialog.component.css.map +0 -7
- package/www/browser/issue-assign-dialog.component.css.map +0 -7
- package/www/browser/issue-attachment-area.component.css.map +0 -7
- package/www/browser/issue-base-info-area.component.css.map +0 -7
- package/www/browser/issue-branches.component.css.map +0 -7
- package/www/browser/issue-close-dialog.component.css.map +0 -7
- package/www/browser/issue-collaborators-panel.component.css.map +0 -7
- package/www/browser/issue-comment-editor.component.css.map +0 -7
- package/www/browser/issue-create-branch-dialog.component.css.map +0 -7
- package/www/browser/issue-description-area.component.css.map +0 -7
- package/www/browser/issue-detail.component.css.map +0 -7
- package/www/browser/issue-resolve-dialog.component.css.map +0 -7
- package/www/browser/issue-start-own-branch-dialog.component.css.map +0 -7
- package/www/browser/issues-list-table.component.css.map +0 -7
- package/www/browser/issues.component.css.map +0 -7
- package/www/browser/kill-port-widget.component.css.map +0 -7
- package/www/browser/kv-table.component.css.map +0 -7
- package/www/browser/layout-footer.component.css.map +0 -7
- package/www/browser/layout-header.component.css.map +0 -7
- package/www/browser/layout-menu.component.css.map +0 -7
- package/www/browser/layout-project-nav.component.css.map +0 -7
- package/www/browser/layout-sidebar.component.css.map +0 -7
- package/www/browser/layout.component.css.map +0 -7
- package/www/browser/less-viewport-component.css.map +0 -7
- package/www/browser/main.js +0 -1872
- package/www/browser/main.js.map +0 -1
- package/www/browser/markdown-viewer.component.css.map +0 -7
- package/www/browser/news-feed-widget.component.css.map +0 -7
- package/www/browser/ng-devtool.component.css.map +0 -7
- package/www/browser/nginx-config-editor.component.css.map +0 -7
- package/www/browser/nginx-log-viewer.component.css.map +0 -7
- package/www/browser/nginx-secondary-logs-tab.component.css.map +0 -7
- package/www/browser/nginx-secondary-perf-tab.component.css.map +0 -7
- package/www/browser/nginx-secondary-settings-tab.component.css.map +0 -7
- package/www/browser/nginx-secondary-ssl-tab.component.css.map +0 -7
- package/www/browser/nginx-secondary-test-tab.component.css.map +0 -7
- package/www/browser/nginx-secondary-traffic-tab.component.css.map +0 -7
- package/www/browser/nginx-secondary-upstream-tab.component.css.map +0 -7
- package/www/browser/nginx-section-card.component.css.map +0 -7
- package/www/browser/nginx-server-drawer.component.css.map +0 -7
- package/www/browser/nginx-server-list.component.css.map +0 -7
- package/www/browser/nginx-stat-card.component.css.map +0 -7
- package/www/browser/nginx.component.css.map +0 -7
- package/www/browser/page-layout.component.css.map +0 -7
- package/www/browser/pick-workspace-modal.component.css.map +0 -7
- package/www/browser/polyfills.js +0 -26584
- package/www/browser/polyfills.js.map +0 -7
- package/www/browser/project-conf.component.css.map +0 -7
- package/www/browser/project-create-modal.component.css.map +0 -7
- package/www/browser/project-create.component.css.map +0 -7
- package/www/browser/project-deps.component.css.map +0 -7
- package/www/browser/project-edit-modal.component.css.map +0 -7
- package/www/browser/project-import.component.css.map +0 -7
- package/www/browser/project-item-popover.component.css.map +0 -7
- package/www/browser/project-item.component.css.map +0 -7
- package/www/browser/project-list.component.css.map +0 -7
- package/www/browser/projects.component.css.map +0 -7
- package/www/browser/quick-task-widget.component.css.map +0 -7
- package/www/browser/rd-action-area.component.css.map +0 -7
- package/www/browser/rd-advance-stage-dialog.component.css.map +0 -7
- package/www/browser/rd-block-dialog.component.css.map +0 -7
- package/www/browser/rd-create-dialog.component.css.map +0 -7
- package/www/browser/rd-detail.component.css.map +0 -7
- package/www/browser/rd-item-card.component.css.map +0 -7
- package/www/browser/rd-list-board.component.css.map +0 -7
- package/www/browser/rd-list-table.component.css.map +0 -7
- package/www/browser/rd.component.css.map +0 -7
- package/www/browser/request-collections.component.css.map +0 -7
- package/www/browser/request-editor.component.css.map +0 -7
- package/www/browser/request-list-item.component.css.map +0 -7
- package/www/browser/request-list.component.css.map +0 -7
- package/www/browser/request-tabs-bar.component.css.map +0 -7
- package/www/browser/request-tabs.component.css.map +0 -7
- package/www/browser/request-urlbar.component.css.map +0 -7
- package/www/browser/response-viewer.component.css.map +0 -7
- package/www/browser/scripts.js +0 -245
- package/www/browser/scripts.js.map +0 -7
- package/www/browser/setting.component.css.map +0 -7
- package/www/browser/sprite-conf-modal.component.css.map +0 -7
- package/www/browser/sprite-icons-panel-component.css.map +0 -7
- package/www/browser/sprite-images-panel-component.css.map +0 -7
- package/www/browser/sprite-result-tabs.component.css.map +0 -7
- package/www/browser/sprite-viewport-component.css.map +0 -7
- package/www/browser/sprite.component.css.map +0 -7
- package/www/browser/step-advance.component.css.map +0 -7
- package/www/browser/step-basic.component.css.map +0 -7
- package/www/browser/step-config.component.css.map +0 -7
- package/www/browser/step-features.component.css.map +0 -7
- package/www/browser/step-preset.component.css.map +0 -7
- package/www/browser/step-summary-aside.component.css.map +0 -7
- package/www/browser/styles.css +0 -258
- package/www/browser/styles.css.map +0 -7
- package/www/browser/system-log.component.css.map +0 -7
- package/www/browser/task-actions.component.css.map +0 -7
- package/www/browser/task-console.component.css.map +0 -7
- package/www/browser/task-header.component.css.map +0 -7
- package/www/browser/task-list.component.css.map +0 -7
- package/www/browser/tasks.component.css.map +0 -7
- package/www/browser/terminal-view.component.css.map +0 -7
- package/www/browser/welcome-widget.component.css.map +0 -7
- package/www/browser/widget-base.component.css.map +0 -7
- package/www/browser/widget-host.component.css.map +0 -7
package/www/browser/main.js
DELETED
|
@@ -1,1872 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
provideMarkdown
|
|
3
|
-
} from "./chunk-AQHSGTHS.js";
|
|
4
|
-
import {
|
|
5
|
-
NzLayoutModule
|
|
6
|
-
} from "./chunk-YWHRP4X3.js";
|
|
7
|
-
import {
|
|
8
|
-
UserStore
|
|
9
|
-
} from "./chunk-Z7FJIV62.js";
|
|
10
|
-
import {
|
|
11
|
-
ProjectStateService
|
|
12
|
-
} from "./chunk-GMCNMOTD.js";
|
|
13
|
-
import {
|
|
14
|
-
NzSwitchModule
|
|
15
|
-
} from "./chunk-6TBQERYX.js";
|
|
16
|
-
import {
|
|
17
|
-
NzDrawerModule
|
|
18
|
-
} from "./chunk-7FC7DN65.js";
|
|
19
|
-
import {
|
|
20
|
-
NzModalModule
|
|
21
|
-
} from "./chunk-FLSUSPBD.js";
|
|
22
|
-
import {
|
|
23
|
-
NzTagModule
|
|
24
|
-
} from "./chunk-J447GBHM.js";
|
|
25
|
-
import {
|
|
26
|
-
NzDropDownDirective,
|
|
27
|
-
NzDropDownModule,
|
|
28
|
-
NzMenuModule
|
|
29
|
-
} from "./chunk-ZBZHXS46.js";
|
|
30
|
-
import {
|
|
31
|
-
httpErrorInterceptor
|
|
32
|
-
} from "./chunk-KSHAGY2M.js";
|
|
33
|
-
import "./chunk-VXHZMSDM.js";
|
|
34
|
-
import {
|
|
35
|
-
TaskRuntimeStore,
|
|
36
|
-
TasksApiService
|
|
37
|
-
} from "./chunk-RBWIWNTL.js";
|
|
38
|
-
import {
|
|
39
|
-
NzBadgeModule
|
|
40
|
-
} from "./chunk-DEGQJKKZ.js";
|
|
41
|
-
import {
|
|
42
|
-
ProjectContextStore
|
|
43
|
-
} from "./chunk-TEW4MY4J.js";
|
|
44
|
-
import {
|
|
45
|
-
WsClientService
|
|
46
|
-
} from "./chunk-APGQRYWX.js";
|
|
47
|
-
import "./chunk-2YSUXBGC.js";
|
|
48
|
-
import {
|
|
49
|
-
Directionality,
|
|
50
|
-
FormsModule,
|
|
51
|
-
NzButtonModule,
|
|
52
|
-
NzIconDirective,
|
|
53
|
-
NzIconModule,
|
|
54
|
-
NzIconService,
|
|
55
|
-
NzInputModule,
|
|
56
|
-
NzOutletModule,
|
|
57
|
-
NzSpaceModule,
|
|
58
|
-
NzStringTemplateOutletDirective,
|
|
59
|
-
NzTooltipModule,
|
|
60
|
-
PREFIX,
|
|
61
|
-
provideNzI18n,
|
|
62
|
-
takeUntilDestroyed,
|
|
63
|
-
toSignal,
|
|
64
|
-
zh_CN
|
|
65
|
-
} from "./chunk-RUXJCM3V.js";
|
|
66
|
-
import "./chunk-VYNQPZQO.js";
|
|
67
|
-
import {
|
|
68
|
-
ActivatedRoute,
|
|
69
|
-
NavigationEnd,
|
|
70
|
-
PRIMARY_OUTLET,
|
|
71
|
-
Router,
|
|
72
|
-
RouterModule,
|
|
73
|
-
provideRouter
|
|
74
|
-
} from "./chunk-665WC4RU.js";
|
|
75
|
-
import {
|
|
76
|
-
CommonModule,
|
|
77
|
-
DomRendererFactory2,
|
|
78
|
-
NgTemplateOutlet,
|
|
79
|
-
bootstrapApplication,
|
|
80
|
-
provideHttpClient,
|
|
81
|
-
registerLocaleData,
|
|
82
|
-
withInterceptors
|
|
83
|
-
} from "./chunk-3MCIETCQ.js";
|
|
84
|
-
import {
|
|
85
|
-
ANIMATION_MODULE_TYPE,
|
|
86
|
-
APP_INITIALIZER,
|
|
87
|
-
ChangeDetectionScheduler,
|
|
88
|
-
ChangeDetectionStrategy,
|
|
89
|
-
ChangeDetectorRef,
|
|
90
|
-
Component,
|
|
91
|
-
DOCUMENT,
|
|
92
|
-
DestroyRef,
|
|
93
|
-
ElementRef,
|
|
94
|
-
EventEmitter,
|
|
95
|
-
FactoryTarget,
|
|
96
|
-
Injectable,
|
|
97
|
-
InjectionToken,
|
|
98
|
-
Injector,
|
|
99
|
-
Input,
|
|
100
|
-
NgModule,
|
|
101
|
-
NgZone,
|
|
102
|
-
Output,
|
|
103
|
-
Renderer2,
|
|
104
|
-
RendererFactory2,
|
|
105
|
-
RuntimeError,
|
|
106
|
-
ViewChild,
|
|
107
|
-
ViewEncapsulation,
|
|
108
|
-
__decorate,
|
|
109
|
-
__spreadProps,
|
|
110
|
-
__spreadValues,
|
|
111
|
-
booleanAttribute,
|
|
112
|
-
computed,
|
|
113
|
-
core_exports,
|
|
114
|
-
effect,
|
|
115
|
-
filter,
|
|
116
|
-
firstValueFrom,
|
|
117
|
-
forwardRef,
|
|
118
|
-
importProvidersFrom,
|
|
119
|
-
inject,
|
|
120
|
-
makeEnvironmentProviders,
|
|
121
|
-
model,
|
|
122
|
-
performanceMarkFeature,
|
|
123
|
-
provideZonelessChangeDetection,
|
|
124
|
-
signal,
|
|
125
|
-
startWith,
|
|
126
|
-
viewChild,
|
|
127
|
-
ɵɵngDeclareClassMetadata,
|
|
128
|
-
ɵɵngDeclareComponent,
|
|
129
|
-
ɵɵngDeclareFactory,
|
|
130
|
-
ɵɵngDeclareInjectable,
|
|
131
|
-
ɵɵngDeclareInjector,
|
|
132
|
-
ɵɵngDeclareNgModule
|
|
133
|
-
} from "./chunk-XQY5SPGI.js";
|
|
134
|
-
|
|
135
|
-
// node_modules/@angular/common/locales/zh.js
|
|
136
|
-
var u = void 0;
|
|
137
|
-
function plural(val) {
|
|
138
|
-
const n = val;
|
|
139
|
-
return 5;
|
|
140
|
-
}
|
|
141
|
-
var zh_default = ["zh", [["\u4E0A\u5348", "\u4E0B\u5348"]], u, [["\u65E5", "\u4E00", "\u4E8C", "\u4E09", "\u56DB", "\u4E94", "\u516D"], ["\u5468\u65E5", "\u5468\u4E00", "\u5468\u4E8C", "\u5468\u4E09", "\u5468\u56DB", "\u5468\u4E94", "\u5468\u516D"], ["\u661F\u671F\u65E5", "\u661F\u671F\u4E00", "\u661F\u671F\u4E8C", "\u661F\u671F\u4E09", "\u661F\u671F\u56DB", "\u661F\u671F\u4E94", "\u661F\u671F\u516D"], ["\u5468\u65E5", "\u5468\u4E00", "\u5468\u4E8C", "\u5468\u4E09", "\u5468\u56DB", "\u5468\u4E94", "\u5468\u516D"]], u, [["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"], ["1\u6708", "2\u6708", "3\u6708", "4\u6708", "5\u6708", "6\u6708", "7\u6708", "8\u6708", "9\u6708", "10\u6708", "11\u6708", "12\u6708"], ["\u4E00\u6708", "\u4E8C\u6708", "\u4E09\u6708", "\u56DB\u6708", "\u4E94\u6708", "\u516D\u6708", "\u4E03\u6708", "\u516B\u6708", "\u4E5D\u6708", "\u5341\u6708", "\u5341\u4E00\u6708", "\u5341\u4E8C\u6708"]], u, [["\u516C\u5143\u524D", "\u516C\u5143"]], 0, [6, 0], ["y/M/d", "y\u5E74M\u6708d\u65E5", u, "y\u5E74M\u6708d\u65E5EEEE"], ["HH:mm", "HH:mm:ss", "z HH:mm:ss", "zzzz HH:mm:ss"], ["{1} {0}", u, u, u], [".", ",", ";", "%", "+", "-", "E", "\xD7", "\u2030", "\u221E", "NaN", ":"], ["#,##0.###", "#,##0%", "\xA4#,##0.00", "#E0"], "CNY", "\xA5", "\u4EBA\u6C11\u5E01", { "AUD": ["AU$", "$"], "BYN": [u, "\u0440."], "CNY": ["\xA5"], "ILR": ["ILS"], "JPY": ["JP\xA5", "\xA5"], "KRW": ["\uFFE6", "\u20A9"], "PHP": [u, "\u20B1"], "RUR": [u, "\u0440."], "TWD": ["NT$"], "USD": ["US$", "$"], "XXX": [] }, "ltr", plural];
|
|
142
|
-
|
|
143
|
-
// node_modules/@angular/platform-browser/fesm2022/animations/async.mjs
|
|
144
|
-
var ANIMATION_PREFIX = "@";
|
|
145
|
-
var AsyncAnimationRendererFactory = class _AsyncAnimationRendererFactory {
|
|
146
|
-
doc;
|
|
147
|
-
delegate;
|
|
148
|
-
zone;
|
|
149
|
-
animationType;
|
|
150
|
-
moduleImpl;
|
|
151
|
-
_rendererFactoryPromise = null;
|
|
152
|
-
scheduler = null;
|
|
153
|
-
injector = inject(Injector);
|
|
154
|
-
loadingSchedulerFn = inject(\u0275ASYNC_ANIMATION_LOADING_SCHEDULER_FN, {
|
|
155
|
-
optional: true
|
|
156
|
-
});
|
|
157
|
-
_engine;
|
|
158
|
-
/**
|
|
159
|
-
*
|
|
160
|
-
* @param moduleImpl allows to provide a mock implmentation (or will load the animation module)
|
|
161
|
-
*/
|
|
162
|
-
constructor(doc, delegate, zone, animationType, moduleImpl) {
|
|
163
|
-
this.doc = doc;
|
|
164
|
-
this.delegate = delegate;
|
|
165
|
-
this.zone = zone;
|
|
166
|
-
this.animationType = animationType;
|
|
167
|
-
this.moduleImpl = moduleImpl;
|
|
168
|
-
}
|
|
169
|
-
/** @docs-private */
|
|
170
|
-
ngOnDestroy() {
|
|
171
|
-
this._engine?.flush();
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* @internal
|
|
175
|
-
*/
|
|
176
|
-
loadImpl() {
|
|
177
|
-
const loadFn = () => this.moduleImpl ?? import("./chunk-SCXPYFOB.js").then((m) => m);
|
|
178
|
-
let moduleImplPromise;
|
|
179
|
-
if (this.loadingSchedulerFn) {
|
|
180
|
-
moduleImplPromise = this.loadingSchedulerFn(loadFn);
|
|
181
|
-
} else {
|
|
182
|
-
moduleImplPromise = loadFn();
|
|
183
|
-
}
|
|
184
|
-
return moduleImplPromise.catch((e) => {
|
|
185
|
-
throw new RuntimeError(5300, (typeof ngDevMode === "undefined" || ngDevMode) && "Async loading for animations package was enabled, but loading failed. Angular falls back to using regular rendering. No animations will be displayed and their styles won't be applied.");
|
|
186
|
-
}).then(({ \u0275createEngine, \u0275AnimationRendererFactory }) => {
|
|
187
|
-
this._engine = \u0275createEngine(this.animationType, this.doc);
|
|
188
|
-
const rendererFactory = new \u0275AnimationRendererFactory(this.delegate, this._engine, this.zone);
|
|
189
|
-
this.delegate = rendererFactory;
|
|
190
|
-
return rendererFactory;
|
|
191
|
-
});
|
|
192
|
-
}
|
|
193
|
-
/**
|
|
194
|
-
* This method is delegating the renderer creation to the factories.
|
|
195
|
-
* It uses default factory while the animation factory isn't loaded
|
|
196
|
-
* and will rely on the animation factory once it is loaded.
|
|
197
|
-
*
|
|
198
|
-
* Calling this method will trigger as side effect the loading of the animation module
|
|
199
|
-
* if the renderered component uses animations.
|
|
200
|
-
*/
|
|
201
|
-
createRenderer(hostElement, rendererType) {
|
|
202
|
-
const renderer = this.delegate.createRenderer(hostElement, rendererType);
|
|
203
|
-
if (renderer.\u0275type === 0) {
|
|
204
|
-
return renderer;
|
|
205
|
-
}
|
|
206
|
-
if (typeof renderer.throwOnSyntheticProps === "boolean") {
|
|
207
|
-
renderer.throwOnSyntheticProps = false;
|
|
208
|
-
}
|
|
209
|
-
const dynamicRenderer = new DynamicDelegationRenderer(renderer);
|
|
210
|
-
if (rendererType?.data?.["animation"] && !this._rendererFactoryPromise) {
|
|
211
|
-
this._rendererFactoryPromise = this.loadImpl();
|
|
212
|
-
}
|
|
213
|
-
this._rendererFactoryPromise?.then((animationRendererFactory) => {
|
|
214
|
-
const animationRenderer = animationRendererFactory.createRenderer(hostElement, rendererType);
|
|
215
|
-
dynamicRenderer.use(animationRenderer);
|
|
216
|
-
this.scheduler ??= this.injector.get(ChangeDetectionScheduler, null, { optional: true });
|
|
217
|
-
this.scheduler?.notify(
|
|
218
|
-
10
|
|
219
|
-
/* NotificationSource.AsyncAnimationsLoaded */
|
|
220
|
-
);
|
|
221
|
-
}).catch((e) => {
|
|
222
|
-
dynamicRenderer.use(renderer);
|
|
223
|
-
});
|
|
224
|
-
return dynamicRenderer;
|
|
225
|
-
}
|
|
226
|
-
begin() {
|
|
227
|
-
this.delegate.begin?.();
|
|
228
|
-
}
|
|
229
|
-
end() {
|
|
230
|
-
this.delegate.end?.();
|
|
231
|
-
}
|
|
232
|
-
whenRenderingDone() {
|
|
233
|
-
return this.delegate.whenRenderingDone?.() ?? Promise.resolve();
|
|
234
|
-
}
|
|
235
|
-
/**
|
|
236
|
-
* Used during HMR to clear any cached data about a component.
|
|
237
|
-
* @param componentId ID of the component that is being replaced.
|
|
238
|
-
*/
|
|
239
|
-
componentReplaced(componentId) {
|
|
240
|
-
this._engine?.flush();
|
|
241
|
-
this.delegate.componentReplaced?.(componentId);
|
|
242
|
-
}
|
|
243
|
-
static \u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: core_exports, type: _AsyncAnimationRendererFactory, deps: "invalid", target: FactoryTarget.Injectable });
|
|
244
|
-
static \u0275prov = \u0275\u0275ngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.15", ngImport: core_exports, type: _AsyncAnimationRendererFactory });
|
|
245
|
-
};
|
|
246
|
-
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: core_exports, type: AsyncAnimationRendererFactory, decorators: [{
|
|
247
|
-
type: Injectable
|
|
248
|
-
}], ctorParameters: () => [{ type: Document }, { type: RendererFactory2 }, { type: NgZone }, { type: void 0 }, { type: Promise }] });
|
|
249
|
-
var DynamicDelegationRenderer = class {
|
|
250
|
-
delegate;
|
|
251
|
-
// List of callbacks that need to be replayed on the animation renderer once its loaded
|
|
252
|
-
replay = [];
|
|
253
|
-
\u0275type = 1;
|
|
254
|
-
constructor(delegate) {
|
|
255
|
-
this.delegate = delegate;
|
|
256
|
-
}
|
|
257
|
-
use(impl) {
|
|
258
|
-
this.delegate = impl;
|
|
259
|
-
if (this.replay !== null) {
|
|
260
|
-
for (const fn of this.replay) {
|
|
261
|
-
fn(impl);
|
|
262
|
-
}
|
|
263
|
-
this.replay = null;
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
get data() {
|
|
267
|
-
return this.delegate.data;
|
|
268
|
-
}
|
|
269
|
-
destroy() {
|
|
270
|
-
this.replay = null;
|
|
271
|
-
this.delegate.destroy();
|
|
272
|
-
}
|
|
273
|
-
createElement(name, namespace) {
|
|
274
|
-
return this.delegate.createElement(name, namespace);
|
|
275
|
-
}
|
|
276
|
-
createComment(value) {
|
|
277
|
-
return this.delegate.createComment(value);
|
|
278
|
-
}
|
|
279
|
-
createText(value) {
|
|
280
|
-
return this.delegate.createText(value);
|
|
281
|
-
}
|
|
282
|
-
get destroyNode() {
|
|
283
|
-
return this.delegate.destroyNode;
|
|
284
|
-
}
|
|
285
|
-
appendChild(parent, newChild) {
|
|
286
|
-
this.delegate.appendChild(parent, newChild);
|
|
287
|
-
}
|
|
288
|
-
insertBefore(parent, newChild, refChild, isMove) {
|
|
289
|
-
this.delegate.insertBefore(parent, newChild, refChild, isMove);
|
|
290
|
-
}
|
|
291
|
-
removeChild(parent, oldChild, isHostElement, requireSynchronousElementRemoval) {
|
|
292
|
-
this.delegate.removeChild(parent, oldChild, isHostElement, requireSynchronousElementRemoval);
|
|
293
|
-
}
|
|
294
|
-
selectRootElement(selectorOrNode, preserveContent) {
|
|
295
|
-
return this.delegate.selectRootElement(selectorOrNode, preserveContent);
|
|
296
|
-
}
|
|
297
|
-
parentNode(node) {
|
|
298
|
-
return this.delegate.parentNode(node);
|
|
299
|
-
}
|
|
300
|
-
nextSibling(node) {
|
|
301
|
-
return this.delegate.nextSibling(node);
|
|
302
|
-
}
|
|
303
|
-
setAttribute(el, name, value, namespace) {
|
|
304
|
-
this.delegate.setAttribute(el, name, value, namespace);
|
|
305
|
-
}
|
|
306
|
-
removeAttribute(el, name, namespace) {
|
|
307
|
-
this.delegate.removeAttribute(el, name, namespace);
|
|
308
|
-
}
|
|
309
|
-
addClass(el, name) {
|
|
310
|
-
this.delegate.addClass(el, name);
|
|
311
|
-
}
|
|
312
|
-
removeClass(el, name) {
|
|
313
|
-
this.delegate.removeClass(el, name);
|
|
314
|
-
}
|
|
315
|
-
setStyle(el, style, value, flags) {
|
|
316
|
-
this.delegate.setStyle(el, style, value, flags);
|
|
317
|
-
}
|
|
318
|
-
removeStyle(el, style, flags) {
|
|
319
|
-
this.delegate.removeStyle(el, style, flags);
|
|
320
|
-
}
|
|
321
|
-
setProperty(el, name, value) {
|
|
322
|
-
if (this.shouldReplay(name)) {
|
|
323
|
-
this.replay.push((renderer) => renderer.setProperty(el, name, value));
|
|
324
|
-
}
|
|
325
|
-
this.delegate.setProperty(el, name, value);
|
|
326
|
-
}
|
|
327
|
-
setValue(node, value) {
|
|
328
|
-
this.delegate.setValue(node, value);
|
|
329
|
-
}
|
|
330
|
-
listen(target, eventName, callback, options) {
|
|
331
|
-
if (this.shouldReplay(eventName)) {
|
|
332
|
-
this.replay.push((renderer) => renderer.listen(target, eventName, callback, options));
|
|
333
|
-
}
|
|
334
|
-
return this.delegate.listen(target, eventName, callback, options);
|
|
335
|
-
}
|
|
336
|
-
shouldReplay(propOrEventName) {
|
|
337
|
-
return this.replay !== null && propOrEventName.startsWith(ANIMATION_PREFIX);
|
|
338
|
-
}
|
|
339
|
-
};
|
|
340
|
-
var \u0275ASYNC_ANIMATION_LOADING_SCHEDULER_FN = new InjectionToken(ngDevMode ? "async_animation_loading_scheduler_fn" : "");
|
|
341
|
-
function provideAnimationsAsync(type = "animations") {
|
|
342
|
-
performanceMarkFeature("NgAsyncAnimations");
|
|
343
|
-
if (false) {
|
|
344
|
-
type = "noop";
|
|
345
|
-
}
|
|
346
|
-
return makeEnvironmentProviders([
|
|
347
|
-
{
|
|
348
|
-
provide: RendererFactory2,
|
|
349
|
-
useFactory: (doc, renderer, zone) => {
|
|
350
|
-
return new AsyncAnimationRendererFactory(doc, renderer, zone, type);
|
|
351
|
-
},
|
|
352
|
-
deps: [DOCUMENT, DomRendererFactory2, NgZone]
|
|
353
|
-
},
|
|
354
|
-
{
|
|
355
|
-
provide: ANIMATION_MODULE_TYPE,
|
|
356
|
-
useValue: type === "noop" ? "NoopAnimations" : "BrowserAnimations"
|
|
357
|
-
}
|
|
358
|
-
]);
|
|
359
|
-
}
|
|
360
|
-
|
|
361
|
-
// src/app/theme.service.ts
|
|
362
|
-
var ThemeType;
|
|
363
|
-
(function(ThemeType2) {
|
|
364
|
-
ThemeType2["dark"] = "dark";
|
|
365
|
-
ThemeType2["default"] = "default";
|
|
366
|
-
})(ThemeType || (ThemeType = {}));
|
|
367
|
-
var ThemeService = class ThemeService2 {
|
|
368
|
-
currentTheme = ThemeType.default;
|
|
369
|
-
constructor() {
|
|
370
|
-
}
|
|
371
|
-
reverseTheme(theme) {
|
|
372
|
-
return theme === ThemeType.dark ? ThemeType.default : ThemeType.dark;
|
|
373
|
-
}
|
|
374
|
-
removeUnusedTheme(theme) {
|
|
375
|
-
document.documentElement.classList.remove(theme);
|
|
376
|
-
const removedThemeStyle = document.getElementById(theme);
|
|
377
|
-
if (removedThemeStyle) {
|
|
378
|
-
document.head.removeChild(removedThemeStyle);
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
loadCss(href, id) {
|
|
382
|
-
return new Promise((resolve, reject) => {
|
|
383
|
-
const style = document.createElement("link");
|
|
384
|
-
style.rel = "stylesheet";
|
|
385
|
-
style.href = href;
|
|
386
|
-
style.id = id;
|
|
387
|
-
style.onload = resolve;
|
|
388
|
-
style.onerror = reject;
|
|
389
|
-
document.head.append(style);
|
|
390
|
-
});
|
|
391
|
-
}
|
|
392
|
-
loadTheme(firstLoad = true) {
|
|
393
|
-
const theme = this.currentTheme;
|
|
394
|
-
if (firstLoad) {
|
|
395
|
-
document.documentElement.classList.add(theme);
|
|
396
|
-
}
|
|
397
|
-
return new Promise((resolve, reject) => {
|
|
398
|
-
this.loadCss(`${theme}.css`, theme).then((e) => {
|
|
399
|
-
if (!firstLoad) {
|
|
400
|
-
document.documentElement.classList.add(theme);
|
|
401
|
-
}
|
|
402
|
-
this.removeUnusedTheme(this.reverseTheme(theme));
|
|
403
|
-
resolve(e);
|
|
404
|
-
}, (e) => reject(e));
|
|
405
|
-
});
|
|
406
|
-
}
|
|
407
|
-
toggleTheme() {
|
|
408
|
-
this.currentTheme = this.reverseTheme(this.currentTheme);
|
|
409
|
-
return this.loadTheme(false);
|
|
410
|
-
}
|
|
411
|
-
static ctorParameters = () => [];
|
|
412
|
-
};
|
|
413
|
-
ThemeService = __decorate([
|
|
414
|
-
Injectable({
|
|
415
|
-
providedIn: "root"
|
|
416
|
-
})
|
|
417
|
-
], ThemeService);
|
|
418
|
-
|
|
419
|
-
// src/app/app-initializer.service.ts
|
|
420
|
-
var AppInitializerProvider = {
|
|
421
|
-
provide: APP_INITIALIZER,
|
|
422
|
-
useFactory: (themeService) => () => {
|
|
423
|
-
return themeService.loadTheme();
|
|
424
|
-
},
|
|
425
|
-
deps: [ThemeService],
|
|
426
|
-
multi: true
|
|
427
|
-
};
|
|
428
|
-
|
|
429
|
-
// src/app/app.routes.ts
|
|
430
|
-
var routes = [
|
|
431
|
-
{
|
|
432
|
-
path: "",
|
|
433
|
-
redirectTo: "dashboard",
|
|
434
|
-
pathMatch: "full"
|
|
435
|
-
},
|
|
436
|
-
{
|
|
437
|
-
path: "dashboard",
|
|
438
|
-
loadChildren: () => import("./chunk-CTOEAJQK.js").then((m) => m.DashboardModule)
|
|
439
|
-
},
|
|
440
|
-
{
|
|
441
|
-
path: "tasks",
|
|
442
|
-
loadChildren: () => import("./chunk-6UW4MRJZ.js").then((m) => m.TasksModule)
|
|
443
|
-
},
|
|
444
|
-
{
|
|
445
|
-
path: "projects",
|
|
446
|
-
loadChildren: () => import("./chunk-W5HGHCQT.js").then((m) => m.ProjectsModule)
|
|
447
|
-
},
|
|
448
|
-
{
|
|
449
|
-
path: "settings",
|
|
450
|
-
loadChildren: () => import("./chunk-KV72AKOD.js").then((m) => m.SettingModule)
|
|
451
|
-
},
|
|
452
|
-
{
|
|
453
|
-
path: "configuration",
|
|
454
|
-
loadChildren: () => import("./chunk-3L72DF3R.js").then((m) => m.ConfigurationModule)
|
|
455
|
-
},
|
|
456
|
-
{
|
|
457
|
-
path: "dependencies",
|
|
458
|
-
loadChildren: () => import("./chunk-GJC7CZIJ.js").then((m) => m.DependenciesModule)
|
|
459
|
-
},
|
|
460
|
-
{
|
|
461
|
-
path: "rquest",
|
|
462
|
-
loadChildren: () => import("./chunk-XF5H7E4L.js").then((m) => m.ApiClientModule)
|
|
463
|
-
},
|
|
464
|
-
{
|
|
465
|
-
path: "sprite",
|
|
466
|
-
loadChildren: () => import("./chunk-UAN42EUZ.js").then((m) => m.SpriteModule)
|
|
467
|
-
},
|
|
468
|
-
{
|
|
469
|
-
path: "rd",
|
|
470
|
-
loadChildren: () => import("./chunk-W3J23PZI.js").then((m) => m.RdModule)
|
|
471
|
-
},
|
|
472
|
-
{
|
|
473
|
-
path: "issues",
|
|
474
|
-
loadChildren: () => import("./chunk-6XUMIL3W.js").then((m) => m.IssuesModule)
|
|
475
|
-
},
|
|
476
|
-
{
|
|
477
|
-
path: "nginx",
|
|
478
|
-
loadComponent: () => import("./chunk-MMPO7QLO.js").then((m) => m.NginxComponent)
|
|
479
|
-
},
|
|
480
|
-
{
|
|
481
|
-
path: "about",
|
|
482
|
-
loadChildren: () => import("./chunk-LAVMY2SJ.js").then((m) => m.AboutRoutingModule)
|
|
483
|
-
},
|
|
484
|
-
{
|
|
485
|
-
path: "**",
|
|
486
|
-
redirectTo: "dashboard"
|
|
487
|
-
}
|
|
488
|
-
];
|
|
489
|
-
|
|
490
|
-
// src/app/app.config.ts
|
|
491
|
-
registerLocaleData(zh_default);
|
|
492
|
-
var appConfig = {
|
|
493
|
-
providers: [
|
|
494
|
-
AppInitializerProvider,
|
|
495
|
-
provideZonelessChangeDetection(),
|
|
496
|
-
provideRouter(routes),
|
|
497
|
-
provideNzI18n(zh_CN),
|
|
498
|
-
provideAnimationsAsync(),
|
|
499
|
-
provideHttpClient(withInterceptors([httpErrorInterceptor])),
|
|
500
|
-
importProvidersFrom(NzModalModule),
|
|
501
|
-
provideMarkdown()
|
|
502
|
-
]
|
|
503
|
-
};
|
|
504
|
-
|
|
505
|
-
// angular:jit:style:inline:src\app\app.ts;Omhvc3QgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGhlaWdodDogMTAwdmg7CiAgICB9
|
|
506
|
-
var app_default = "/* angular:styles/component:less;0ae256c0ca17f80a8721d10f9aafb5a5314af03e1bebab9a3fc4980991127c7f;D:\\ng-manager\\webapp\\src\\app\\app.ts */\n:host {\n display: block;\n height: 100vh;\n}\n/*# sourceMappingURL=app.css.map */\n";
|
|
507
|
-
|
|
508
|
-
// src/app/icons/project-icons.ts
|
|
509
|
-
var ICON_ANGULAR = `
|
|
510
|
-
<svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
|
|
511
|
-
<path d="M435.8 536.2H512V353z" fill="#DD0031"/>
|
|
512
|
-
<path d="M400.9 616.8l-52.4 130.8h-97.2L512 163V64L94.9 212.7l63.6 551.5L512 960V616.8z" fill="#DD0031"/>
|
|
513
|
-
<path d="M512 353v183.2h76.2z" fill="#C3002F"/>
|
|
514
|
-
<path d="M512 64v99l259.8 584.6h-97.2l-52.4-130.8H512V960l353.5-195.8 63.6-551.5z" fill="#C3002F"/>
|
|
515
|
-
</svg>
|
|
516
|
-
`;
|
|
517
|
-
var ICON_VUE = `
|
|
518
|
-
<svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
|
|
519
|
-
<path d="M615.6 123.6h165.5L512 589.7 242.9 123.6H63.5L512 900.4l448.5-776.9z" fill="#41B883"/>
|
|
520
|
-
<path d="M781.1 123.6H615.6L512 303 408.4 123.6H242.9L512 589.7z" fill="#34495E"/>
|
|
521
|
-
</svg>
|
|
522
|
-
`;
|
|
523
|
-
var ICON_REACT = `
|
|
524
|
-
<svg viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
|
|
525
|
-
<svg t="1767603739899" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="9231" width="200" height="200">
|
|
526
|
-
<path d="M512 511.8m-80 0a80 80 0 1 0 160 0 80 80 0 1 0-160 0Z" fill="#61DAFB" p-id="9232"></path>
|
|
527
|
-
<path d="M960.5 511.8c0-62.8-73.8-117.2-188.5-150.1 28.9-115.8 18.7-206.9-35.7-238.3-54.5-31.4-138.5 5.3-224.3 88.2-85.8-82.9-169.8-119.6-224.3-88.2-54.4 31.4-64.6 122.6-35.7 238.3C137.3 394.6 63.5 449 63.5 511.8S137.3 629 252 661.9c-28.9 115.7-18.7 206.9 35.7 238.3 13.4 7.8 28.6 11.6 45.2 11.6 39.7 0 87.8-21.8 140-64.2 13-10.6 26.1-22.6 39.1-35.2 13 12.6 26.1 24.6 39.1 35.2 52.2 42.4 100.2 64.2 140 64.2 16.6 0 31.8-3.8 45.2-11.6 54.4-31.4 64.6-122.5 35.7-238.3 114.7-32.9 188.5-87.3 188.5-150.1zM716.8 157.2c35.3 20.4 42.7 94.3 17.6 194.8-36.7-8.4-76.7-14.7-119.3-18.6-24.7-34.9-50.2-66.4-75.8-94 59.2-57.3 114.2-88.4 152-88.4 9.6-0.1 18.2 2 25.5 6.2zM637 584c-13.8 24-28.4 47-43.3 69-26.1 2-53.3 3.1-81.7 3.1-28.3 0-55.5-1.1-81.6-3.1-15-22-29.5-45.1-43.3-69-14.1-24.5-26.7-48.6-38.1-72.2 11.4-23.6 24-47.7 38.1-72.2 14.1-24.5 28.7-47.4 43.4-69.1 26.1-2 53.3-3.1 81.6-3.1 28.3 0 55.5 1.1 81.6 3.1 14.7 21.6 29.3 44.6 43.4 69 14.1 24.5 26.7 48.6 38.1 72.2-11.5 23.7-24.1 47.8-38.2 72.3z m58.8-26.4c11.2 26.6 20.4 52.1 28 76.5-24.9 5.6-51.7 10.4-80.3 14 9.3-14.5 18.4-29.3 27.3-44.6 8.8-15.4 17.1-30.7 25-45.9zM512 756.5c-17.7-19.2-35.1-40.1-52.2-62.6 17.1 0.8 34.5 1.3 52.2 1.3 17.7 0 35.1-0.5 52.2-1.3-17.1 22.5-34.5 43.4-52.2 62.6zM380.5 648.1c-28.6-3.6-55.3-8.4-80.3-14 7.6-24.4 16.8-49.9 28-76.5 7.9 15.2 16.1 30.5 25 45.9 8.9 15.2 18 30 27.3 44.6zM328.2 466c-11.2-26.6-20.4-52.1-28-76.5 24.9-5.6 51.6-10.4 80.2-14-9.2 14.4-18.4 29.2-27.2 44.6-8.8 15.4-17.1 30.7-25 45.9zM512 267.1c17.3 18.7 34.8 39.8 52.1 62.7-17.1-0.8-34.4-1.3-52.1-1.3-17.7 0-35 0.5-52.1 1.3 17.3-22.9 34.8-44 52.1-62.7z m158.7 153c-8.9-15.3-18-30.1-27.2-44.6 28.6 3.6 55.3 8.4 80.2 14-7.6 24.4-16.8 49.9-28 76.5-7.8-15.2-16.1-30.5-25-45.9zM307.2 157.2c7.2-4.2 15.8-6.2 25.6-6.2 37.8 0 92.7 31.1 151.9 88.4-25.6 27.6-51.1 59.2-75.8 94-42.5 3.9-82.6 10.2-119.3 18.6-25.1-100.6-17.6-174.5 17.6-194.8zM102.5 511.8c0-40.8 60.3-84.2 160-112.6 11.1 36 25.6 73.8 43.5 112.6-17.8 38.8-32.4 76.6-43.5 112.6-99.7-28.4-160-71.9-160-112.6z m345.8 305.5c-59.7 48.5-111.1 66.4-141.1 49.2-35.3-20.4-42.7-94.3-17.6-194.8 36.7 8.4 76.7 14.7 119.3 18.6 24.4 34.5 49.9 66.1 75.8 94.2-12.1 11.7-24.2 22.9-36.4 32.8z m268.5 49.2c-29.9 17.3-81.4-0.6-141.1-49.2-12.1-9.9-24.3-21.1-36.5-32.8 26-28.1 51.4-59.7 75.8-94.2 42.5-3.9 82.6-10.2 119.3-18.7 25.2 100.6 17.7 174.5-17.5 194.9z m44.8-242.1c-11.1-36-25.6-73.8-43.5-112.6 17.8-38.8 32.4-76.6 43.5-112.6 99.7 28.5 160 71.9 160 112.6-0.1 40.7-60.4 84.2-160 112.6z" fill="#61DAFB" p-id="9233"></path></svg>
|
|
528
|
-
</svg>
|
|
529
|
-
`;
|
|
530
|
-
var ICON_NODE = `
|
|
531
|
-
<svg t="1767598826450" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="8231" width="200" height="200">
|
|
532
|
-
<path d="M875.2 262.3L546.7 72.7c-20.7-11.8-48.3-11.8-69 0L148.8 262.3c-21.5 12.2-34.5 34.9-34.5 59.7v379.2c0 24.8 13.4 47.9 34.5 60.1l86.1 49.5c41.8 20.7 56.8 20.7 75.9 20.7 62.1 0 97.4-37.8 97.4-102.7V354.4c0-5.3-4.1-9.3-9.3-9.3h-41.4c-5.3 0-9.3 4.1-9.3 9.3v374.3c0 28.8-30 57.7-78.8 33.3l-90.1-52c-3.2-2-5.3-5.3-5.3-8.9V321.9c0-3.7 2-7.3 5.3-8.9l328.1-190c3.2-1.6 7.3-1.6 10.2 0l328.5 189.6c3.2 1.6 5.3 5.3 5.3 8.9v379.2c0 3.7-2 7.3-4.9 8.9L517.9 899.3c-2.8 1.6-7.3 1.6-10.2 0l-84.4-49.9c-2.4-1.2-5.7-1.6-8.1-0.4-23.1 13.4-27.6 15-49.5 22.7-5.7 1.6-13.4 4.9 2.8 14.2l109.6 65c10.6 6.1 22.3 9.3 34.5 9.3 11.8-0.4 24-3.2 34.1-9.7l328.5-189.6c21.1-12.2 34.5-34.9 34.5-59.7V321.9c0-24.3-13.4-47.5-34.5-59.6z" fill="#689F63" p-id="8232"></path>
|
|
533
|
-
<path d="M614.1 641.1c-86.9 0-106-21.9-112.5-65-0.8-4.9-4.5-8.1-9.3-8.1h-42.6c-5.3 0-9.3 4.1-9.3 9.3 0 55.2 30 121.4 173.8 121.4l-0.4-0.4c103.9 0 163.6-41 163.6-112.5 0-70.6-47.9-89.7-149-103.1-101.9-13.4-112.5-20.3-112.5-44.3 0-19.5 8.9-45.9 84.4-45.9 67.8 0 92.6 14.6 102.7 60.1 1.2 4.1 4.9 7.3 9.3 7.3H755c2.4 0 5.3-0.8 6.9-2.8 1.6-2 2.8-4.5 2.4-7.3-6.9-78.4-58.9-114.9-164-114.9-93.4 0-149.4 39.4-149.4 105.6 0 71.9 55.6 91.8 145.8 100.7 107.6 10.6 116.1 26.4 116.1 47.5 0 36.5-29.3 52.4-98.7 52.4z" fill="#689F63" p-id="8233"></path>
|
|
534
|
-
</svg>
|
|
535
|
-
`;
|
|
536
|
-
var ICON_ESLINT = `
|
|
537
|
-
<svg t="1768726164973" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4725" width="200" height="200">
|
|
538
|
-
<path d="M332.72493 412.535453l171.001167-98.72725a13.830826 13.830826 0 0 1 13.83424 0l171.007994 98.72725a13.841066 13.841066 0 0 1 6.915413 11.9808v197.4545a13.858133 13.858133 0 0 1-6.918826 11.980799l-171.004581 98.72725a13.830826 13.830826 0 0 1-13.83424 0l-171.001167-98.72725a13.841066 13.841066 0 0 1-6.915413-11.980799V424.516253a13.847893 13.847893 0 0 1 6.915413-11.9808" fill="#7986CB" p-id="4726"></path>
|
|
539
|
-
<path d="M955.265709 502.476783L750.950409 147.036155c-7.420586-12.8512-21.128533-22.330026-35.969705-22.330026H306.329624c-14.844586 0-28.555946 9.478826-35.976532 22.330026L66.037792 501.701957c-7.420586 12.854613-7.420586 29.081599 0 41.932798L270.353092 896.170637c7.420586 12.8512 21.131946 19.421866 35.976532 19.421866h408.65108c14.83776 0 28.552532-6.372693 35.969705-19.227306l204.3153-353.109322c7.427413-12.847786 7.427413-27.921066 0-40.768852m-169.181861 170.922661c0 5.2224-3.14368 10.059093-7.676586 12.673706l-260.249592 150.152529a14.80704 14.80704 0 0 1-14.725119 0l-260.450978-150.152529c-4.52608-2.614613-7.693653-7.44448-7.693653-12.673706v-300.30847c0-5.229226 3.119787-10.059093 7.649279-12.677119l260.242765-150.152529a14.779733 14.779733 0 0 1 14.71488 0l260.471458 150.152529c4.529493 2.618027 7.717546 7.447893 7.717546 12.677119z" fill="#3F51B5" p-id="4727"></path>
|
|
540
|
-
</svg>
|
|
541
|
-
`;
|
|
542
|
-
var ICON_SVN = `
|
|
543
|
-
<svg t="1772087297160" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="12394" data-spm-anchor-id="a313x.search_index.0.i16.3dc23a81kNbNJb" width="48" height="48">
|
|
544
|
-
<path d="M0 512c0 282.848 229.312 512 512 512 282.848 0 512-229.312 512-512 0-282.848-229.312-512-512-512C229.152 0 0 229.152 0 512z" fill="#333333" p-id="12395" data-spm-anchor-id="a313x.search_index.0.i13.3dc23a81kNbNJb" class="selected"></path>
|
|
545
|
-
<path d="M948.48 449.824c-34.912 45.408-101.056 22.272-131.456 40.032-44.288 26.016-42.88 89.152-151.264 173.952-26.336 20.64 27.968 128.768 4.48 152.928-23.872 24.544-119.84 25.792-143.104 12.384-34.08-19.808-7.36-71.2 0.192-146.304-70.016 7.232-92.672 5.984-162.912 3.104 10.816 56.96 26.336 120.512 3.68 141.376-18.592 16.928-108.608 18.784-136.768 0.192-35.328-23.328 25.504-156 4.896-158.272-23.68-2.464-168.416 3.296-142.88-155.808 27.136 40.032 73.28 77.792 126.368 60.864 3.072-58.208 20-113.92 48.384-158.496 37.568-58.624 95.328-97.824 168.416-97.824 72.256 0 132.48 31.776 171.872 81.728 30.816 39.2 48.8 89.984 48.992 145.088 76.352-58.208 20.224-200.8 111.648-254.24 65.12-37.984 141.248-18.368 177.6 41.888 19.392 31.584 25.312 87.072 1.824 117.408z" fill="#ffffff" p-id="12396" data-spm-anchor-id="a313x.search_index.0.i14.3dc23a81kNbNJb" class=""></path>
|
|
546
|
-
</svg>
|
|
547
|
-
`;
|
|
548
|
-
|
|
549
|
-
// src/app/icons/project-icon-registry.ts
|
|
550
|
-
var ProjectIconRegistry = class ProjectIconRegistry2 {
|
|
551
|
-
icons;
|
|
552
|
-
inited = false;
|
|
553
|
-
constructor(icons) {
|
|
554
|
-
this.icons = icons;
|
|
555
|
-
}
|
|
556
|
-
init() {
|
|
557
|
-
if (this.inited)
|
|
558
|
-
return;
|
|
559
|
-
this.inited = true;
|
|
560
|
-
this.icons.addIconLiteral("proj:angular", ICON_ANGULAR);
|
|
561
|
-
this.icons.addIconLiteral("proj:vue", ICON_VUE);
|
|
562
|
-
this.icons.addIconLiteral("proj:react", ICON_REACT);
|
|
563
|
-
this.icons.addIconLiteral("proj:node", ICON_NODE);
|
|
564
|
-
this.icons.addIconLiteral("proj:eslint", ICON_ESLINT);
|
|
565
|
-
this.icons.addIconLiteral("proj:svn", ICON_SVN);
|
|
566
|
-
}
|
|
567
|
-
static ctorParameters = () => [
|
|
568
|
-
{ type: NzIconService }
|
|
569
|
-
];
|
|
570
|
-
};
|
|
571
|
-
ProjectIconRegistry = __decorate([
|
|
572
|
-
Injectable({ providedIn: "root" })
|
|
573
|
-
], ProjectIconRegistry);
|
|
574
|
-
|
|
575
|
-
// angular:jit:template:src\app\layout\layout.component.html
|
|
576
|
-
var layout_component_default = '<nz-layout class="app-layout">\r\n @if (visible()) {\r\n <div\r\n class="ws-banner-wrap"\r\n [class.leaving]="leaving()"\r\n (transitionend)="onWrapTransitionEnd($event)"\r\n >\r\n <div\r\n class="ws-banner-inner"\r\n [class.leaving]="leaving()"\r\n (animationend)="onInnerAnimationEnd($event)"\r\n >\r\n <ngm-header></ngm-header>\r\n </div>\r\n </div>\r\n }\r\n <nz-layout class="app-content">\r\n <ngm-sidebar></ngm-sidebar>\r\n <nz-layout>\r\n <nz-content>\r\n <div class="inner-content">\r\n <router-outlet></router-outlet>\r\n </div>\r\n </nz-content>\r\n </nz-layout>\r\n </nz-layout>\r\n\r\n <ngm-footer></ngm-footer>\r\n</nz-layout>\r\n';
|
|
577
|
-
|
|
578
|
-
// angular:jit:style:src\app\layout\layout.component.less
|
|
579
|
-
var layout_component_default2 = "/* src/app/layout/layout.component.less */\nhtml.default {\n}\nhtml.default :root {\n --app-gray: #e6f7ff;\n --app-primary: #1890ff;\n --app-primary-1: #e6f7ff;\n --app-primary-2: #bae7ff;\n --app-primary-3: #91d5ff;\n --app-primary-4: #69c0ff;\n --app-primary-5: #40a9ff;\n --app-primary-6: #1890ff;\n --app-text-color: rgba(0, 0, 0, 0.85);\n --app-text-secondary: rgba(0, 0, 0, 0.45);\n --text-color-primary: #1890ff;\n --app-component-bg: #fff;\n --app-border-color: #d9d9d9;\n --header-error-background: #ff4d4f;\n}\nhtml.default :root {\n --text-color-gray: #888;\n}\nhtml.default :host .inner-content {\n background: #fff;\n}\nhtml.dark {\n}\nhtml.dark :root {\n --text-color-gray: #bbb;\n}\nhtml.dark :host .inner-content {\n background: #141414;\n}\n:host {\n display: flex;\n text-rendering: optimizeLegibility;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n:host .app-layout {\n height: 100vh;\n width: 100%;\n}\n:host .app-layout ngm-header {\n width: 100%;\n}\n:host .app-content {\n flex-direction: row;\n}\n:host nz-content .inner-content {\n border-radius: 8px;\n height: 100%;\n}\n:host nz-footer {\n text-align: center;\n}\n.ws-banner-wrap {\n height: 48px;\n overflow: hidden;\n transition: height 0.35s ease;\n}\n.ws-banner-wrap.leaving {\n height: 0;\n}\n.ws-banner-inner {\n height: 48px;\n display: flex;\n align-items: stretch;\n}\n.ws-banner-inner.leaving {\n animation: fadeOutUpSoft 0.35s ease forwards;\n}\n@keyframes fadeOutUpSoft {\n from {\n opacity: 1;\n transform: translateY(0);\n }\n to {\n opacity: 0;\n transform: translateY(-30%);\n }\n}\n/*# sourceMappingURL=layout.component.css.map */\n";
|
|
580
|
-
|
|
581
|
-
// node_modules/ng-zorro-antd/fesm2022/ng-zorro-antd-breadcrumb.mjs
|
|
582
|
-
var NzBreadcrumb = class {
|
|
583
|
-
};
|
|
584
|
-
var NzBreadCrumbSeparatorComponent = class _NzBreadCrumbSeparatorComponent {
|
|
585
|
-
static \u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: core_exports, type: _NzBreadCrumbSeparatorComponent, deps: [], target: FactoryTarget.Component });
|
|
586
|
-
static \u0275cmp = \u0275\u0275ngDeclareComponent({ minVersion: "14.0.0", version: "20.3.0", type: _NzBreadCrumbSeparatorComponent, isStandalone: true, selector: "nz-breadcrumb-separator", host: { classAttribute: "ant-breadcrumb-separator" }, exportAs: ["nzBreadcrumbSeparator"], ngImport: core_exports, template: `<ng-content></ng-content>`, isInline: true });
|
|
587
|
-
};
|
|
588
|
-
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: core_exports, type: NzBreadCrumbSeparatorComponent, decorators: [{
|
|
589
|
-
type: Component,
|
|
590
|
-
args: [{
|
|
591
|
-
selector: "nz-breadcrumb-separator",
|
|
592
|
-
exportAs: "nzBreadcrumbSeparator",
|
|
593
|
-
template: `<ng-content></ng-content>`,
|
|
594
|
-
host: {
|
|
595
|
-
class: "ant-breadcrumb-separator"
|
|
596
|
-
}
|
|
597
|
-
}]
|
|
598
|
-
}] });
|
|
599
|
-
var NzBreadCrumbItemComponent = class _NzBreadCrumbItemComponent {
|
|
600
|
-
nzBreadCrumbComponent = inject(NzBreadcrumb);
|
|
601
|
-
/**
|
|
602
|
-
* Dropdown content of a breadcrumb item.
|
|
603
|
-
*/
|
|
604
|
-
nzOverlay;
|
|
605
|
-
static \u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: core_exports, type: _NzBreadCrumbItemComponent, deps: [], target: FactoryTarget.Component });
|
|
606
|
-
static \u0275cmp = \u0275\u0275ngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: _NzBreadCrumbItemComponent, isStandalone: true, selector: "nz-breadcrumb-item", inputs: { nzOverlay: "nzOverlay" }, exportAs: ["nzBreadcrumbItem"], ngImport: core_exports, template: `
|
|
607
|
-
@if (!!nzOverlay) {
|
|
608
|
-
<span class="ant-breadcrumb-overlay-link" nz-dropdown [nzDropdownMenu]="nzOverlay">
|
|
609
|
-
<ng-template [ngTemplateOutlet]="noMenuTpl"></ng-template>
|
|
610
|
-
<nz-icon nzType="down" />
|
|
611
|
-
</span>
|
|
612
|
-
} @else {
|
|
613
|
-
<ng-template [ngTemplateOutlet]="noMenuTpl" />
|
|
614
|
-
}
|
|
615
|
-
|
|
616
|
-
@if (nzBreadCrumbComponent.nzSeparator) {
|
|
617
|
-
<nz-breadcrumb-separator>
|
|
618
|
-
<ng-container *nzStringTemplateOutlet="nzBreadCrumbComponent.nzSeparator">
|
|
619
|
-
{{ nzBreadCrumbComponent.nzSeparator }}
|
|
620
|
-
</ng-container>
|
|
621
|
-
</nz-breadcrumb-separator>
|
|
622
|
-
}
|
|
623
|
-
|
|
624
|
-
<ng-template #noMenuTpl>
|
|
625
|
-
<span class="ant-breadcrumb-link">
|
|
626
|
-
<ng-content />
|
|
627
|
-
</span>
|
|
628
|
-
</ng-template>
|
|
629
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: NzBreadCrumbSeparatorComponent, selector: "nz-breadcrumb-separator", exportAs: ["nzBreadcrumbSeparator"] }, { kind: "ngmodule", type: NzDropDownModule }, { kind: "directive", type: NzDropDownDirective, selector: "[nz-dropdown]", inputs: ["nzDropdownMenu", "nzTrigger", "nzMatchWidthElement", "nzBackdrop", "nzClickHide", "nzDisabled", "nzVisible", "nzArrow", "nzOverlayClassName", "nzOverlayStyle", "nzPlacement"], outputs: ["nzVisibleChange"], exportAs: ["nzDropdown"] }, { kind: "ngmodule", type: NzIconModule }, { kind: "directive", type: NzIconDirective, selector: "nz-icon,[nz-icon]", inputs: ["nzSpin", "nzRotate", "nzType", "nzTheme", "nzTwotoneColor", "nzIconfont"], exportAs: ["nzIcon"] }, { kind: "ngmodule", type: NzOutletModule }, { kind: "directive", type: NzStringTemplateOutletDirective, selector: "[nzStringTemplateOutlet]", inputs: ["nzStringTemplateOutletContext", "nzStringTemplateOutlet"], exportAs: ["nzStringTemplateOutlet"] }], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None });
|
|
630
|
-
};
|
|
631
|
-
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: core_exports, type: NzBreadCrumbItemComponent, decorators: [{
|
|
632
|
-
type: Component,
|
|
633
|
-
args: [{
|
|
634
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
635
|
-
encapsulation: ViewEncapsulation.None,
|
|
636
|
-
selector: "nz-breadcrumb-item",
|
|
637
|
-
exportAs: "nzBreadcrumbItem",
|
|
638
|
-
imports: [NgTemplateOutlet, NzBreadCrumbSeparatorComponent, NzDropDownModule, NzIconModule, NzOutletModule],
|
|
639
|
-
template: `
|
|
640
|
-
@if (!!nzOverlay) {
|
|
641
|
-
<span class="ant-breadcrumb-overlay-link" nz-dropdown [nzDropdownMenu]="nzOverlay">
|
|
642
|
-
<ng-template [ngTemplateOutlet]="noMenuTpl"></ng-template>
|
|
643
|
-
<nz-icon nzType="down" />
|
|
644
|
-
</span>
|
|
645
|
-
} @else {
|
|
646
|
-
<ng-template [ngTemplateOutlet]="noMenuTpl" />
|
|
647
|
-
}
|
|
648
|
-
|
|
649
|
-
@if (nzBreadCrumbComponent.nzSeparator) {
|
|
650
|
-
<nz-breadcrumb-separator>
|
|
651
|
-
<ng-container *nzStringTemplateOutlet="nzBreadCrumbComponent.nzSeparator">
|
|
652
|
-
{{ nzBreadCrumbComponent.nzSeparator }}
|
|
653
|
-
</ng-container>
|
|
654
|
-
</nz-breadcrumb-separator>
|
|
655
|
-
}
|
|
656
|
-
|
|
657
|
-
<ng-template #noMenuTpl>
|
|
658
|
-
<span class="ant-breadcrumb-link">
|
|
659
|
-
<ng-content />
|
|
660
|
-
</span>
|
|
661
|
-
</ng-template>
|
|
662
|
-
`
|
|
663
|
-
}]
|
|
664
|
-
}], propDecorators: { nzOverlay: [{
|
|
665
|
-
type: Input
|
|
666
|
-
}] } });
|
|
667
|
-
var NzBreadCrumbComponent = class _NzBreadCrumbComponent {
|
|
668
|
-
injector = inject(Injector);
|
|
669
|
-
cdr = inject(ChangeDetectorRef);
|
|
670
|
-
elementRef = inject(ElementRef);
|
|
671
|
-
renderer = inject(Renderer2);
|
|
672
|
-
directionality = inject(Directionality);
|
|
673
|
-
destroyRef = inject(DestroyRef);
|
|
674
|
-
nzAutoGenerate = false;
|
|
675
|
-
nzSeparator = "/";
|
|
676
|
-
nzRouteLabel = "breadcrumb";
|
|
677
|
-
nzRouteLabelFn = (label) => label;
|
|
678
|
-
nzRouteFn = (route) => route;
|
|
679
|
-
breadcrumbs = [];
|
|
680
|
-
dir = "ltr";
|
|
681
|
-
ngOnInit() {
|
|
682
|
-
if (this.nzAutoGenerate) {
|
|
683
|
-
this.registerRouterChange();
|
|
684
|
-
}
|
|
685
|
-
this.directionality.change?.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((direction) => {
|
|
686
|
-
this.dir = direction;
|
|
687
|
-
this.prepareComponentForRtl();
|
|
688
|
-
this.cdr.detectChanges();
|
|
689
|
-
});
|
|
690
|
-
this.dir = this.directionality.value;
|
|
691
|
-
this.prepareComponentForRtl();
|
|
692
|
-
}
|
|
693
|
-
navigate(url, e) {
|
|
694
|
-
e.preventDefault();
|
|
695
|
-
this.injector.get(Router).navigateByUrl(url);
|
|
696
|
-
}
|
|
697
|
-
registerRouterChange() {
|
|
698
|
-
try {
|
|
699
|
-
const router = this.injector.get(Router);
|
|
700
|
-
const activatedRoute = this.injector.get(ActivatedRoute);
|
|
701
|
-
router.events.pipe(
|
|
702
|
-
filter((e) => e instanceof NavigationEnd),
|
|
703
|
-
takeUntilDestroyed(this.destroyRef),
|
|
704
|
-
startWith(true)
|
|
705
|
-
// trigger initial render
|
|
706
|
-
).subscribe(() => {
|
|
707
|
-
this.breadcrumbs = this.getBreadcrumbs(activatedRoute.root);
|
|
708
|
-
this.cdr.markForCheck();
|
|
709
|
-
});
|
|
710
|
-
} catch {
|
|
711
|
-
throw new Error(`${PREFIX} You should import RouterModule if you want to use 'NzAutoGenerate'.`);
|
|
712
|
-
}
|
|
713
|
-
}
|
|
714
|
-
getBreadcrumbs(route, url = "", breadcrumbs = []) {
|
|
715
|
-
const children = route.children;
|
|
716
|
-
if (children.length === 0) {
|
|
717
|
-
return breadcrumbs;
|
|
718
|
-
}
|
|
719
|
-
for (const child of children) {
|
|
720
|
-
if (child.outlet === PRIMARY_OUTLET) {
|
|
721
|
-
const routeUrl = child.snapshot.url.map((segment) => segment.path).filter((path) => path).join("/");
|
|
722
|
-
const nextUrl = routeUrl ? `${url}/${routeUrl}` : url;
|
|
723
|
-
const breadcrumbLabel = this.nzRouteLabelFn(child.snapshot.data[this.nzRouteLabel]);
|
|
724
|
-
const shapedUrl = this.nzRouteFn(nextUrl);
|
|
725
|
-
if (routeUrl && breadcrumbLabel) {
|
|
726
|
-
const breadcrumb = {
|
|
727
|
-
label: breadcrumbLabel,
|
|
728
|
-
params: child.snapshot.params,
|
|
729
|
-
url: shapedUrl
|
|
730
|
-
};
|
|
731
|
-
breadcrumbs.push(breadcrumb);
|
|
732
|
-
}
|
|
733
|
-
return this.getBreadcrumbs(child, nextUrl, breadcrumbs);
|
|
734
|
-
}
|
|
735
|
-
}
|
|
736
|
-
return breadcrumbs;
|
|
737
|
-
}
|
|
738
|
-
prepareComponentForRtl() {
|
|
739
|
-
if (this.dir === "rtl") {
|
|
740
|
-
this.renderer.addClass(this.elementRef.nativeElement, "ant-breadcrumb-rtl");
|
|
741
|
-
} else {
|
|
742
|
-
this.renderer.removeClass(this.elementRef.nativeElement, "ant-breadcrumb-rtl");
|
|
743
|
-
}
|
|
744
|
-
}
|
|
745
|
-
static \u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: core_exports, type: _NzBreadCrumbComponent, deps: [], target: FactoryTarget.Component });
|
|
746
|
-
static \u0275cmp = \u0275\u0275ngDeclareComponent({ minVersion: "17.0.0", version: "20.3.0", type: _NzBreadCrumbComponent, isStandalone: true, selector: "nz-breadcrumb", inputs: { nzAutoGenerate: ["nzAutoGenerate", "nzAutoGenerate", booleanAttribute], nzSeparator: "nzSeparator", nzRouteLabel: "nzRouteLabel", nzRouteLabelFn: "nzRouteLabelFn", nzRouteFn: "nzRouteFn" }, host: { classAttribute: "ant-breadcrumb" }, providers: [{ provide: NzBreadcrumb, useExisting: forwardRef(() => _NzBreadCrumbComponent) }], exportAs: ["nzBreadcrumb"], ngImport: core_exports, template: `
|
|
747
|
-
<ng-content />
|
|
748
|
-
@if (nzAutoGenerate && breadcrumbs.length) {
|
|
749
|
-
@for (breadcrumb of breadcrumbs; track breadcrumb.url) {
|
|
750
|
-
<nz-breadcrumb-item>
|
|
751
|
-
<a [attr.href]="breadcrumb.url" (click)="navigate(breadcrumb.url, $event)">{{ breadcrumb.label }}</a>
|
|
752
|
-
</nz-breadcrumb-item>
|
|
753
|
-
}
|
|
754
|
-
}
|
|
755
|
-
`, isInline: true, dependencies: [{ kind: "component", type: NzBreadCrumbItemComponent, selector: "nz-breadcrumb-item", inputs: ["nzOverlay"], exportAs: ["nzBreadcrumbItem"] }], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None });
|
|
756
|
-
};
|
|
757
|
-
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: core_exports, type: NzBreadCrumbComponent, decorators: [{
|
|
758
|
-
type: Component,
|
|
759
|
-
args: [{
|
|
760
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
761
|
-
encapsulation: ViewEncapsulation.None,
|
|
762
|
-
selector: "nz-breadcrumb",
|
|
763
|
-
exportAs: "nzBreadcrumb",
|
|
764
|
-
providers: [{ provide: NzBreadcrumb, useExisting: forwardRef(() => NzBreadCrumbComponent) }],
|
|
765
|
-
imports: [NzBreadCrumbItemComponent],
|
|
766
|
-
template: `
|
|
767
|
-
<ng-content />
|
|
768
|
-
@if (nzAutoGenerate && breadcrumbs.length) {
|
|
769
|
-
@for (breadcrumb of breadcrumbs; track breadcrumb.url) {
|
|
770
|
-
<nz-breadcrumb-item>
|
|
771
|
-
<a [attr.href]="breadcrumb.url" (click)="navigate(breadcrumb.url, $event)">{{ breadcrumb.label }}</a>
|
|
772
|
-
</nz-breadcrumb-item>
|
|
773
|
-
}
|
|
774
|
-
}
|
|
775
|
-
`,
|
|
776
|
-
host: {
|
|
777
|
-
class: "ant-breadcrumb"
|
|
778
|
-
}
|
|
779
|
-
}]
|
|
780
|
-
}], propDecorators: { nzAutoGenerate: [{
|
|
781
|
-
type: Input,
|
|
782
|
-
args: [{ transform: booleanAttribute }]
|
|
783
|
-
}], nzSeparator: [{
|
|
784
|
-
type: Input
|
|
785
|
-
}], nzRouteLabel: [{
|
|
786
|
-
type: Input
|
|
787
|
-
}], nzRouteLabelFn: [{
|
|
788
|
-
type: Input
|
|
789
|
-
}], nzRouteFn: [{
|
|
790
|
-
type: Input
|
|
791
|
-
}] } });
|
|
792
|
-
var NzBreadCrumbModule = class _NzBreadCrumbModule {
|
|
793
|
-
static \u0275fac = \u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "20.3.0", ngImport: core_exports, type: _NzBreadCrumbModule, deps: [], target: FactoryTarget.NgModule });
|
|
794
|
-
static \u0275mod = \u0275\u0275ngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.0", ngImport: core_exports, type: _NzBreadCrumbModule, imports: [NzBreadCrumbComponent, NzBreadCrumbItemComponent, NzBreadCrumbSeparatorComponent], exports: [NzBreadCrumbComponent, NzBreadCrumbItemComponent, NzBreadCrumbSeparatorComponent] });
|
|
795
|
-
static \u0275inj = \u0275\u0275ngDeclareInjector({ minVersion: "12.0.0", version: "20.3.0", ngImport: core_exports, type: _NzBreadCrumbModule, imports: [NzBreadCrumbComponent, NzBreadCrumbItemComponent] });
|
|
796
|
-
};
|
|
797
|
-
\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.0", ngImport: core_exports, type: NzBreadCrumbModule, decorators: [{
|
|
798
|
-
type: NgModule,
|
|
799
|
-
args: [{
|
|
800
|
-
imports: [NzBreadCrumbComponent, NzBreadCrumbItemComponent, NzBreadCrumbSeparatorComponent],
|
|
801
|
-
exports: [NzBreadCrumbComponent, NzBreadCrumbItemComponent, NzBreadCrumbSeparatorComponent]
|
|
802
|
-
}]
|
|
803
|
-
}] });
|
|
804
|
-
|
|
805
|
-
// angular:jit:style:inline:src\app\layout\footer\layout-footer.component.ts;CiAgICAgIG56LWZvb3RlciB7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgIH0KICAgICAgYXBwLXN5c3RlbS1sb2cgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICB9CiAgICA=
|
|
806
|
-
var layout_footer_component_default = "/* angular:styles/component:less;4ffcb9fbc064aa82c85e1c8f150dbb95be50835959ea1fe0a167e4348f747d05;D:\\ng-manager\\webapp\\src\\app\\layout\\footer\\layout-footer.component.ts */\nnz-footer {\n padding: 0;\n align-items: center;\n display: flex;\n}\napp-system-log {\n width: 100%;\n}\n/*# sourceMappingURL=layout-footer.component.css.map */\n";
|
|
807
|
-
|
|
808
|
-
// angular:jit:template:src\app\layout\footer\system-log\system-log.component.html
|
|
809
|
-
var system_log_component_default = `<div class="status-bar">\r
|
|
810
|
-
<div class="project-path">\r
|
|
811
|
-
<a\r
|
|
812
|
-
nz-button\r
|
|
813
|
-
class="home"\r
|
|
814
|
-
nzType="text"\r
|
|
815
|
-
routerLink="/projects"\r
|
|
816
|
-
nz-tooltip="\u9879\u76EE\u7BA1\u7406"\r
|
|
817
|
-
nzTooltipPlacement="top"\r
|
|
818
|
-
>\r
|
|
819
|
-
<nz-icon class="icon" nzType="home" nzTheme="outline" />\r
|
|
820
|
-
</a>\r
|
|
821
|
-
<button\r
|
|
822
|
-
nz-button\r
|
|
823
|
-
class="path"\r
|
|
824
|
-
nzType="text"\r
|
|
825
|
-
[nz-tooltip]="curProjectPath()"\r
|
|
826
|
-
nzTooltipPlacement="top"\r
|
|
827
|
-
>\r
|
|
828
|
-
<nz-icon nzType="folder" class="icon" nzTheme="outline" />\r
|
|
829
|
-
<span>{{ curProjectPath() }}</span>\r
|
|
830
|
-
</button>\r
|
|
831
|
-
</div>\r
|
|
832
|
-
<div class="last-log" (click)="openLog()" nz-tooltip="\u6253\u5F00\u65E5\u5FD7">\r
|
|
833
|
-
<nz-icon nzType="profile" class="icon" nzTheme="outline" />\r
|
|
834
|
-
@if (lastLine()) {\r
|
|
835
|
-
<nz-tag [nzColor]="getColor(lastLine()?.level)" class="level-tag">\r
|
|
836
|
-
{{ lastLine()?.level | uppercase }}\r
|
|
837
|
-
</nz-tag>\r
|
|
838
|
-
<div class="info">{{ lastLine()?.text }}</div>\r
|
|
839
|
-
<div class="time">{{ lastLine()?.ts | date: 'yyyy-MM-dd HH:mm:ss' }}</div>\r
|
|
840
|
-
} @else {\r
|
|
841
|
-
<nz-tag nzColor="default">INFO</nz-tag>\r
|
|
842
|
-
<div class="info">\u6682\u65E0\u65E5\u5FD7</div>\r
|
|
843
|
-
<div class="time">--</div>\r
|
|
844
|
-
}\r
|
|
845
|
-
</div>\r
|
|
846
|
-
<div class="actions">\r
|
|
847
|
-
<a nz-button nzType="link" routerLink="/about/feedback" nzTooltipPlacement="top" nz-tooltip="\u53CD\u9988\u4E0E\u5E2E\u52A9">\r
|
|
848
|
-
<nz-icon nzType="bug" nzTheme="outline" />\r
|
|
849
|
-
</a>\r
|
|
850
|
-
</div>\r
|
|
851
|
-
</div>\r
|
|
852
|
-
<nz-drawer\r
|
|
853
|
-
[nzVisible]="isOpen()"\r
|
|
854
|
-
(nzOnClose)="closeLog()"\r
|
|
855
|
-
[nzMaskClosable]="false"\r
|
|
856
|
-
[nzMask]="false"\r
|
|
857
|
-
nzTitle="\u65E5\u5FD7"\r
|
|
858
|
-
nzPlacement="bottom"\r
|
|
859
|
-
[nzExtra]="extra"\r
|
|
860
|
-
[nzHeight]="300"\r
|
|
861
|
-
[nzBodyStyle]="{ padding: '0px', overflow: 'hidden' }"\r
|
|
862
|
-
>\r
|
|
863
|
-
<ng-container *nzDrawerContent>\r
|
|
864
|
-
<div class="log" #logBox>\r
|
|
865
|
-
@for (l of lines(); track trackByLine($index, l)) {\r
|
|
866
|
-
<div\r
|
|
867
|
-
class="line"\r
|
|
868
|
-
[class.err]="l.level === 'error'"\r
|
|
869
|
-
[class.warn]="l.level === 'warn'"\r
|
|
870
|
-
[class.info]="l.level === 'info'"\r
|
|
871
|
-
[class.debug]="l.level === 'debug'"\r
|
|
872
|
-
[class.success]="l.level === 'success'"\r
|
|
873
|
-
>\r
|
|
874
|
-
<nz-tag [nzColor]="getColor(l.level)" class="level-tag">\r
|
|
875
|
-
{{ l.level | uppercase }}\r
|
|
876
|
-
</nz-tag>\r
|
|
877
|
-
<span class="time">{{ l.ts | date: 'yyyy-MM-dd HH:mm:ss' }}</span>\r
|
|
878
|
-
<span class="msg">\r
|
|
879
|
-
@if (l.data?.icon) {\r
|
|
880
|
-
{{ l.data?.icon }}\r
|
|
881
|
-
}\r
|
|
882
|
-
{{ l.text }}\r
|
|
883
|
-
</span>\r
|
|
884
|
-
</div>\r
|
|
885
|
-
}\r
|
|
886
|
-
</div>\r
|
|
887
|
-
</ng-container>\r
|
|
888
|
-
</nz-drawer>\r
|
|
889
|
-
\r
|
|
890
|
-
<ng-template #extra>\r
|
|
891
|
-
<nz-space nzAlign="center">\r
|
|
892
|
-
<button nz-button nzType="text" (click)="clearLog()" nz-tooltip="\u6E05\u7A7A\u65E5\u5FD7">\r
|
|
893
|
-
<nz-icon nzType="clear" nzTheme="outline" />\r
|
|
894
|
-
</button>\r
|
|
895
|
-
<button nz-button nzType="text" (click)="toBottom()" nz-tooltip="\u6EDA\u52A8\u5230\u5E95\u90E8">\r
|
|
896
|
-
<nz-icon nzType="vertical-align-bottom" nzTheme="outline" />\r
|
|
897
|
-
</button>\r
|
|
898
|
-
</nz-space>\r
|
|
899
|
-
</ng-template>\r
|
|
900
|
-
`;
|
|
901
|
-
|
|
902
|
-
// angular:jit:style:src\app\layout\footer\system-log\system-log.component.less
|
|
903
|
-
var system_log_component_default2 = '/* src/app/layout/footer/system-log/system-log.component.less */\n:host {\n display: block;\n position: relative;\n z-index: 3;\n flex: 0 0 auto;\n}\n.status-bar {\n height: 32px;\n display: flex;\n align-items: center;\n width: 100%;\n -webkit-user-select: none;\n user-select: none;\n}\n.status-bar .project-path {\n flex: 0 0 auto;\n display: flex;\n align-items: center;\n padding: 0 8px;\n gap: 4px;\n}\n.status-bar .project-path .home,\n.status-bar .project-path .path {\n display: inline-flex;\n align-items: center;\n padding: 0;\n max-width: 360px;\n}\n.status-bar .project-path .home span,\n.status-bar .project-path .path span {\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.status-bar .project-path .home {\n justify-content: center;\n}\n.status-bar .project-path .path {\n min-width: 240px;\n justify-content: flex-start;\n}\n.status-bar .last-log {\n cursor: pointer;\n flex: 1;\n display: flex;\n align-items: center;\n padding: 0 12px;\n gap: 8px;\n width: 0;\n}\n.status-bar .last-log .info {\n flex: 1;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.status-bar .last-log .time {\n flex: 0 0 auto;\n opacity: 0.75;\n font-size: 14px;\n}\n.status-bar .last-log:hover {\n background: #f5f7fa;\n}\n.icon {\n margin-right: 8px;\n font-size: 18px;\n display: inline-flex;\n}\n.log {\n height: 100%;\n overflow: auto;\n padding: 8px 12px;\n font-family:\n ui-monospace,\n SFMono-Regular,\n Menlo,\n Monaco,\n Consolas,\n "Liberation Mono",\n "Courier New",\n monospace;\n font-size: 14px;\n line-height: 18px;\n}\n.line {\n display: flex;\n gap: 12px;\n padding: 2px 0;\n align-items: center;\n}\n.line .time {\n flex: 0 0 auto;\n opacity: 0.65;\n font-variant-numeric: tabular-nums;\n}\n.line .msg {\n flex: 1 1 auto;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n.line.err .msg {\n font-weight: 600;\n}\n.line.warn .msg {\n font-weight: 500;\n}\n.level-tag {\n font-size: 12px;\n padding: 0 4px;\n line-height: 1.5;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n min-width: 58px;\n border-radius: 4px;\n}\n/*# sourceMappingURL=system-log.component.css.map */\n';
|
|
904
|
-
|
|
905
|
-
// src/app/core/log/syslog-stream.service.ts
|
|
906
|
-
function isSysTail(m) {
|
|
907
|
-
return m.op === "syslog.tail";
|
|
908
|
-
}
|
|
909
|
-
function isSysAppend(m) {
|
|
910
|
-
return m.op === "syslog.append";
|
|
911
|
-
}
|
|
912
|
-
function match(entry, f) {
|
|
913
|
-
if (!f)
|
|
914
|
-
return true;
|
|
915
|
-
if (f.scope !== void 0 && entry?.scope !== f.scope)
|
|
916
|
-
return false;
|
|
917
|
-
if (f.level !== void 0 && entry?.level !== f.level)
|
|
918
|
-
return false;
|
|
919
|
-
if (f.source !== void 0 && entry?.source !== f.source)
|
|
920
|
-
return false;
|
|
921
|
-
if (f.refId !== void 0 && entry?.refId !== f.refId)
|
|
922
|
-
return false;
|
|
923
|
-
return true;
|
|
924
|
-
}
|
|
925
|
-
var SyslogStreamService = class SyslogStreamService2 {
|
|
926
|
-
ws;
|
|
927
|
-
msgSub;
|
|
928
|
-
wsStateSub;
|
|
929
|
-
/** 是否已 enable(幂等开关) */
|
|
930
|
-
enabled = signal(false);
|
|
931
|
-
/** 当前过滤器(scope 区分) */
|
|
932
|
-
filter = signal({});
|
|
933
|
-
/** 最新日志列表 */
|
|
934
|
-
logs = signal([]);
|
|
935
|
-
/** 未读计数(drawer 关闭时累加) */
|
|
936
|
-
unread = signal(0);
|
|
937
|
-
/** drawer 是否打开(由组件控制) */
|
|
938
|
-
drawerOpen = signal(false);
|
|
939
|
-
/** 最大缓存行数 */
|
|
940
|
-
capacity = 2e3;
|
|
941
|
-
/** 订阅 tail(服务端下发 tail) */
|
|
942
|
-
tail = 300;
|
|
943
|
-
/** 用于避免一次连接里重复发送 sub(open 时置 true,close 时置 false) */
|
|
944
|
-
subSentForCurrentConnection = false;
|
|
945
|
-
/** 记录上一次 ws state,用于识别 open 边沿 */
|
|
946
|
-
lastWsState = "idle";
|
|
947
|
-
constructor(ws) {
|
|
948
|
-
this.ws = ws;
|
|
949
|
-
this.msgSub = this.ws.messages().pipe(filter((m) => isSysTail(m) || isSysAppend(m))).subscribe((m) => this.onWsMessage(m));
|
|
950
|
-
this.wsStateSub = this.ws.stateChanges().subscribe((s) => {
|
|
951
|
-
const wasOpen = this.lastWsState === "open";
|
|
952
|
-
const isOpen = s === "open";
|
|
953
|
-
if (!wasOpen && isOpen) {
|
|
954
|
-
this.subSentForCurrentConnection = false;
|
|
955
|
-
this.sendSubIfNeeded();
|
|
956
|
-
}
|
|
957
|
-
if (wasOpen && !isOpen) {
|
|
958
|
-
this.subSentForCurrentConnection = false;
|
|
959
|
-
}
|
|
960
|
-
this.lastWsState = s;
|
|
961
|
-
});
|
|
962
|
-
}
|
|
963
|
-
/** UI 控制 drawer 开关:打开时 unread 清零 */
|
|
964
|
-
setDrawerOpen(open) {
|
|
965
|
-
this.drawerOpen.set(open);
|
|
966
|
-
if (open)
|
|
967
|
-
this.unread.set(0);
|
|
968
|
-
}
|
|
969
|
-
/** 设置过滤器(例如:{ scope: "task" }) */
|
|
970
|
-
setFilter(next) {
|
|
971
|
-
this.filter.set(next ?? {});
|
|
972
|
-
const cur = this.logs();
|
|
973
|
-
if (!cur.length)
|
|
974
|
-
return;
|
|
975
|
-
const filtered = cur.filter((x) => match(x, this.filter()));
|
|
976
|
-
this.logs.set(filtered.slice(-this.capacity));
|
|
977
|
-
}
|
|
978
|
-
/** 幂等启用:多次调用不会重复 sub */
|
|
979
|
-
enable(tail = 300) {
|
|
980
|
-
const t = Math.max(0, Math.min(5e3, tail | 0));
|
|
981
|
-
this.tail = t;
|
|
982
|
-
if (this.enabled()) {
|
|
983
|
-
if (this.ws.isOpen()) {
|
|
984
|
-
this.subSentForCurrentConnection = false;
|
|
985
|
-
this.sendSubIfNeeded();
|
|
986
|
-
}
|
|
987
|
-
return;
|
|
988
|
-
}
|
|
989
|
-
this.enabled.set(true);
|
|
990
|
-
this.ws.connect();
|
|
991
|
-
this.sendSubIfNeeded();
|
|
992
|
-
}
|
|
993
|
-
/** 可选:停前端流(通常不建议 unsub syslog) */
|
|
994
|
-
disable() {
|
|
995
|
-
this.enabled.set(false);
|
|
996
|
-
this.subSentForCurrentConnection = false;
|
|
997
|
-
}
|
|
998
|
-
markRead() {
|
|
999
|
-
this.unread.set(0);
|
|
1000
|
-
}
|
|
1001
|
-
clear() {
|
|
1002
|
-
this.logs.set([]);
|
|
1003
|
-
this.unread.set(0);
|
|
1004
|
-
}
|
|
1005
|
-
/**
|
|
1006
|
-
* 前端本地追加日志(不走 WebSocket,仅显示在系统日志面板)
|
|
1007
|
-
* @param text 日志内容
|
|
1008
|
-
* @param level 日志级别
|
|
1009
|
-
* @param scope 归属范围
|
|
1010
|
-
*/
|
|
1011
|
-
appendLocal(text, level = "info", scope = "server") {
|
|
1012
|
-
const entry = {
|
|
1013
|
-
ts: Date.now(),
|
|
1014
|
-
level,
|
|
1015
|
-
source: "system",
|
|
1016
|
-
scope,
|
|
1017
|
-
text
|
|
1018
|
-
};
|
|
1019
|
-
const cur = this.logs();
|
|
1020
|
-
const next = cur.length >= this.capacity ? cur.slice(1) : cur.slice();
|
|
1021
|
-
next.push(entry);
|
|
1022
|
-
this.logs.set(next);
|
|
1023
|
-
if (!this.drawerOpen()) {
|
|
1024
|
-
this.unread.set(this.unread() + 1);
|
|
1025
|
-
}
|
|
1026
|
-
}
|
|
1027
|
-
sendSubIfNeeded() {
|
|
1028
|
-
if (!this.enabled())
|
|
1029
|
-
return;
|
|
1030
|
-
if (!this.ws.isOpen())
|
|
1031
|
-
return;
|
|
1032
|
-
if (this.subSentForCurrentConnection)
|
|
1033
|
-
return;
|
|
1034
|
-
this.ws.send({ op: "sub", topic: "syslog", tail: this.tail });
|
|
1035
|
-
this.subSentForCurrentConnection = true;
|
|
1036
|
-
}
|
|
1037
|
-
onWsMessage(m) {
|
|
1038
|
-
const f = this.filter();
|
|
1039
|
-
if (m.op === "syslog.tail") {
|
|
1040
|
-
const entries = (m.entries ?? []).filter((x) => match(x, f));
|
|
1041
|
-
this.logs.set(entries.slice(-this.capacity));
|
|
1042
|
-
return;
|
|
1043
|
-
}
|
|
1044
|
-
const entry = m.entry;
|
|
1045
|
-
if (!match(entry, f))
|
|
1046
|
-
return;
|
|
1047
|
-
const cur = this.logs();
|
|
1048
|
-
const next = cur.length >= this.capacity ? cur.slice(1) : cur.slice();
|
|
1049
|
-
next.push(entry);
|
|
1050
|
-
this.logs.set(next);
|
|
1051
|
-
if (!this.drawerOpen()) {
|
|
1052
|
-
this.unread.set(this.unread() + 1);
|
|
1053
|
-
}
|
|
1054
|
-
}
|
|
1055
|
-
static ctorParameters = () => [
|
|
1056
|
-
{ type: WsClientService }
|
|
1057
|
-
];
|
|
1058
|
-
};
|
|
1059
|
-
SyslogStreamService = __decorate([
|
|
1060
|
-
Injectable({ providedIn: "root" })
|
|
1061
|
-
], SyslogStreamService);
|
|
1062
|
-
|
|
1063
|
-
// src/app/layout/footer/system-log/system-log.component.ts
|
|
1064
|
-
var SystemLogDrawerComponent = class SystemLogDrawerComponent2 {
|
|
1065
|
-
sysLogStream = inject(SyslogStreamService);
|
|
1066
|
-
projectContext = inject(ProjectContextStore);
|
|
1067
|
-
logBox = viewChild("logBox");
|
|
1068
|
-
// 自动跟随(可选开关,默认开更符合日志体验)
|
|
1069
|
-
autoFollow = signal(true);
|
|
1070
|
-
// signal 化,便于模板调用 isOpen()
|
|
1071
|
-
isOpen = signal(false);
|
|
1072
|
-
curProjectPath = computed(() => this.projectContext.currentProject()?.root || "");
|
|
1073
|
-
// lines 是 computed,跟随 logs signal 更新
|
|
1074
|
-
lines = computed(() => this.sysLogStream.logs());
|
|
1075
|
-
lastLine = computed(() => {
|
|
1076
|
-
const logs = this.sysLogStream.logs();
|
|
1077
|
-
return logs.length ? logs[logs.length - 1] : null;
|
|
1078
|
-
});
|
|
1079
|
-
// 可用于 badge
|
|
1080
|
-
unread = computed(() => this.sysLogStream.unread());
|
|
1081
|
-
constructor() {
|
|
1082
|
-
effect(() => {
|
|
1083
|
-
this.sysLogStream.setDrawerOpen(this.isOpen());
|
|
1084
|
-
if (this.isOpen())
|
|
1085
|
-
queueMicrotask(() => this.toBottom());
|
|
1086
|
-
});
|
|
1087
|
-
effect(() => {
|
|
1088
|
-
this.lines();
|
|
1089
|
-
if (!this.isOpen())
|
|
1090
|
-
return;
|
|
1091
|
-
if (!this.autoFollow())
|
|
1092
|
-
return;
|
|
1093
|
-
queueMicrotask(() => this.toBottom());
|
|
1094
|
-
});
|
|
1095
|
-
}
|
|
1096
|
-
ngOnInit() {
|
|
1097
|
-
this.sysLogStream.enable(300);
|
|
1098
|
-
}
|
|
1099
|
-
openLog() {
|
|
1100
|
-
this.isOpen.set(true);
|
|
1101
|
-
}
|
|
1102
|
-
closeLog() {
|
|
1103
|
-
this.isOpen.set(false);
|
|
1104
|
-
}
|
|
1105
|
-
clearLog() {
|
|
1106
|
-
this.sysLogStream.clear();
|
|
1107
|
-
}
|
|
1108
|
-
toBottom() {
|
|
1109
|
-
const el = this.logBox()?.nativeElement;
|
|
1110
|
-
if (!el)
|
|
1111
|
-
return;
|
|
1112
|
-
el.scrollTop = el.scrollHeight;
|
|
1113
|
-
}
|
|
1114
|
-
/** 给 @for 的 trackBy,用 index 或 ts+refId+text */
|
|
1115
|
-
trackByLine = (_, l) => `${l.ts}-${l.refId ?? ""}-${l.text}`;
|
|
1116
|
-
getColor(level) {
|
|
1117
|
-
if (!level)
|
|
1118
|
-
return "#000000";
|
|
1119
|
-
switch (level) {
|
|
1120
|
-
case "success":
|
|
1121
|
-
return "#22c55e";
|
|
1122
|
-
case "info":
|
|
1123
|
-
return "#18bdfd";
|
|
1124
|
-
case "debug":
|
|
1125
|
-
return "#94a3b8";
|
|
1126
|
-
case "error":
|
|
1127
|
-
return "#ef4444";
|
|
1128
|
-
case "warn":
|
|
1129
|
-
return "#f59e0b";
|
|
1130
|
-
default:
|
|
1131
|
-
return "#000000";
|
|
1132
|
-
}
|
|
1133
|
-
}
|
|
1134
|
-
static ctorParameters = () => [];
|
|
1135
|
-
static propDecorators = {
|
|
1136
|
-
logBox: [{ type: ViewChild, args: ["logBox", { isSignal: true }] }]
|
|
1137
|
-
};
|
|
1138
|
-
};
|
|
1139
|
-
SystemLogDrawerComponent = __decorate([
|
|
1140
|
-
Component({
|
|
1141
|
-
selector: "app-system-log",
|
|
1142
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1143
|
-
imports: [
|
|
1144
|
-
CommonModule,
|
|
1145
|
-
NzTagModule,
|
|
1146
|
-
NzDrawerModule,
|
|
1147
|
-
NzButtonModule,
|
|
1148
|
-
NzSpaceModule,
|
|
1149
|
-
NzIconModule,
|
|
1150
|
-
NzTooltipModule,
|
|
1151
|
-
RouterModule
|
|
1152
|
-
],
|
|
1153
|
-
template: system_log_component_default,
|
|
1154
|
-
styles: [system_log_component_default2]
|
|
1155
|
-
})
|
|
1156
|
-
], SystemLogDrawerComponent);
|
|
1157
|
-
|
|
1158
|
-
// src/app/layout/footer/layout-footer.component.ts
|
|
1159
|
-
var LayoutFooterComponent = class LayoutFooterComponent2 {
|
|
1160
|
-
};
|
|
1161
|
-
LayoutFooterComponent = __decorate([
|
|
1162
|
-
Component({
|
|
1163
|
-
selector: "ngm-footer",
|
|
1164
|
-
imports: [NzLayoutModule, SystemLogDrawerComponent],
|
|
1165
|
-
template: `
|
|
1166
|
-
<nz-footer>
|
|
1167
|
-
<app-system-log></app-system-log>
|
|
1168
|
-
</nz-footer>
|
|
1169
|
-
`,
|
|
1170
|
-
styles: [layout_footer_component_default]
|
|
1171
|
-
})
|
|
1172
|
-
], LayoutFooterComponent);
|
|
1173
|
-
|
|
1174
|
-
// angular:jit:style:inline:src\app\layout\header\layout-header.component.ts;CiAgICAgIG56LWhlYWRlci5hcHAtaGVhZGVyIHsKICAgICAgICBwYWRkaW5nOiAwOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBoZWlnaHQ6IDQ4cHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDQ4cHg7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taGVhZGVyLWVycm9yLWJhY2tncm91bmQpOwogICAgICAgIGNvbG9yOiAjZmZmOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBmb250LXNpemU6IDE4cHg7CiAgICAgICAgZ2FwOiA4cHg7CiAgICAgIH0KICAgIA==
|
|
1175
|
-
var layout_header_component_default = "/* angular:styles/component:less;e1e1521f77919571396f0be38fc5d10fa6722ab9eac94da5a78ef8c961900fe5;D:\\ng-manager\\webapp\\src\\app\\layout\\header\\layout-header.component.ts */\nnz-header.app-header {\n padding: 0;\n width: 100%;\n position: relative;\n height: 48px;\n line-height: 48px;\n background: var(--header-error-background);\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 18px;\n gap: 8px;\n}\n/*# sourceMappingURL=layout-header.component.css.map */\n";
|
|
1176
|
-
|
|
1177
|
-
// src/app/layout/header/layout-header.component.ts
|
|
1178
|
-
var LayoutHeaderComponent = class LayoutHeaderComponent2 {
|
|
1179
|
-
};
|
|
1180
|
-
LayoutHeaderComponent = __decorate([
|
|
1181
|
-
Component({
|
|
1182
|
-
selector: "ngm-header",
|
|
1183
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1184
|
-
imports: [CommonModule, NzLayoutModule, NzIconModule],
|
|
1185
|
-
template: `
|
|
1186
|
-
<nz-header class="app-header">
|
|
1187
|
-
<nz-icon nzType="disconnect" nzTheme="outline" />
|
|
1188
|
-
<span>\u8FDE\u63A5\u5DF2\u65AD\u5F00</span>
|
|
1189
|
-
</nz-header>
|
|
1190
|
-
`,
|
|
1191
|
-
styles: [layout_header_component_default]
|
|
1192
|
-
})
|
|
1193
|
-
], LayoutHeaderComponent);
|
|
1194
|
-
|
|
1195
|
-
// angular:jit:template:src\app\layout\sidebar\layout-sidebar.component.html
|
|
1196
|
-
var layout_sidebar_component_default = '<nz-sider\r\n class="menu-sidebar"\r\n nzCollapsible\r\n nzWidth="256px"\r\n nzBreakpoint="md"\r\n [(nzCollapsed)]="isCollapsed"\r\n [nzTrigger]="null"\r\n>\r\n <div class="header">\r\n <ngm-project-nav [isCollapsed]="isCollapsed()"></ngm-project-nav>\r\n </div>\r\n <div class="content">\r\n <ngm-menu [isCollapsed]="isCollapsed()"></ngm-menu>\r\n <button\r\n nz-button\r\n nzType="link"\r\n nz-dropdown\r\n [nzDropdownMenu]="menu"\r\n nzPlacement="bottomRight"\r\n nzTrigger="click"\r\n class="more-btn"\r\n >\r\n <nz-icon nzType="more"></nz-icon>\r\n </button>\r\n </div>\r\n</nz-sider>\r\n\r\n<nz-dropdown-menu #menu="nzDropdownMenu">\r\n <ul nz-menu>\r\n <li nz-menu-item class="item">\r\n <a routerLink="/projects">\r\n <nz-icon nzType="project" nzTheme="outline" />\r\n <span>\u9879\u76EE\u7BA1\u7406</span>\r\n </a>\r\n </li>\r\n <li nz-menu-item class="item">\r\n <a routerLink="/about">\r\n <nz-icon nzType="info-circle" nzTheme="outline" />\r\n <span>\u5173\u4E8E</span>\r\n </a>\r\n </li>\r\n </ul>\r\n</nz-dropdown-menu>\r\n';
|
|
1197
|
-
|
|
1198
|
-
// angular:jit:style:src\app\layout\sidebar\layout-sidebar.component.less
|
|
1199
|
-
var layout_sidebar_component_default2 = "/* src/app/layout/sidebar/layout-sidebar.component.less */\nhtml.default {\n}\nhtml.default :root {\n --app-gray: #e6f7ff;\n --app-primary: #1890ff;\n --app-primary-1: #e6f7ff;\n --app-primary-2: #bae7ff;\n --app-primary-3: #91d5ff;\n --app-primary-4: #69c0ff;\n --app-primary-5: #40a9ff;\n --app-primary-6: #1890ff;\n --app-text-color: rgba(0, 0, 0, 0.85);\n --app-text-secondary: rgba(0, 0, 0, 0.45);\n --text-color-primary: #1890ff;\n --app-component-bg: #fff;\n --app-border-color: #d9d9d9;\n --header-error-background: #ff4d4f;\n}\nhtml.default :root {\n --text-color-gray: #888;\n}\nhtml.default :host .sidebar-logo {\n background: var(--ant-primary-1);\n}\nhtml.default :host .sidebar-logo h1 {\n color: var(--ant-text-color);\n}\nhtml.dark {\n}\nhtml.dark :root {\n --text-color-gray: #bbb;\n}\nhtml.dark :host .sidebar-logo {\n background: var(--ant-primary-1);\n}\nhtml.dark :host .sidebar-logo h1 {\n color: var(--ant-text-color);\n}\n:host {\n display: block;\n box-sizing: border-box;\n position: relative;\n z-index: 10;\n box-shadow: 2px 0 6px rgba(0, 21, 41, 0.35);\n width: 256px;\n transition: all 0.2s;\n flex: 0 0 auto;\n}\n:host.collapsed {\n width: 80px;\n}\n.menu-sidebar {\n height: 100%;\n}\n.menu-sidebar ::ng-deep .ant-layout-sider-children {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n.menu-sidebar ::ng-deep .ant-menu-inline {\n border-right: none;\n}\n.menu-sidebar .header {\n flex: 0 0 auto;\n}\n.menu-sidebar .content {\n flex: 1 1 auto;\n height: 0;\n display: flex;\n flex-direction: column;\n}\n.menu-sidebar .content ngm-menu {\n flex: 1 1 auto;\n height: 0;\n}\n.menu-sidebar .content button {\n margin: 12px;\n flex: 0 0 auto;\n}\n.menu-sidebar .content button:hover {\n background-color: var(--app-primary-2);\n}\n.sidebar-logo {\n position: relative;\n height: 64px;\n padding-left: 24px;\n overflow: hidden;\n line-height: 64px;\n transition: all 0.3s;\n}\n.sidebar-logo img {\n display: inline-block;\n height: 32px;\n width: 32px;\n vertical-align: middle;\n}\n.sidebar-logo h1 {\n display: inline-block;\n margin: 0 0 0 20px;\n font-weight: 600;\n font-size: 14px;\n font-family:\n Avenir,\n Helvetica Neue,\n Arial,\n Helvetica,\n sans-serif;\n vertical-align: middle;\n}\n.item ::ng-deep .ant-menu-title-content {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.item a {\n color: var(--app-text-color);\n display: flex;\n width: 100%;\n align-items: center;\n gap: 8px;\n}\n/*# sourceMappingURL=layout-sidebar.component.css.map */\n";
|
|
1200
|
-
|
|
1201
|
-
// src/app/layout/layout.state.service.ts
|
|
1202
|
-
var LayoutStateService = class LayoutStateService2 {
|
|
1203
|
-
isCollapsed = signal(false);
|
|
1204
|
-
};
|
|
1205
|
-
LayoutStateService = __decorate([
|
|
1206
|
-
Injectable({
|
|
1207
|
-
providedIn: "root"
|
|
1208
|
-
})
|
|
1209
|
-
], LayoutStateService);
|
|
1210
|
-
|
|
1211
|
-
// angular:jit:template:src\app\layout\menu\layout-menu.component.html
|
|
1212
|
-
var layout_menu_component_default = `<ul nz-menu nzMode="inline" [nzInlineCollapsed]="isCollapsed">\r
|
|
1213
|
-
<ng-container *ngTemplateOutlet="menuTpl; context: { $implicit: menus }"></ng-container>\r
|
|
1214
|
-
<ng-template #menuTpl let-menus>\r
|
|
1215
|
-
@for (menu of menus(); track menu) {\r
|
|
1216
|
-
@if (!menu?.hidden){\r
|
|
1217
|
-
@if (!menu.children) {\r
|
|
1218
|
-
<li\r
|
|
1219
|
-
nz-menu-item\r
|
|
1220
|
-
[nzPaddingLeft]="menu.level * 24"\r
|
|
1221
|
-
[nzDisabled]="menu.disabled"\r
|
|
1222
|
-
[nzSelected]="menuService.isActive(menu.path!)"\r
|
|
1223
|
-
(click)="menuService.clickMenu(menu)"\r
|
|
1224
|
-
[nz-tooltip]="\r
|
|
1225
|
-
menu.taskCountBadge === true && runningTaskCount() > 0\r
|
|
1226
|
-
? runningTaskCount() + '\u4E2A\u4EFB\u52A1\u6B63\u5728\u8FD0\u884C'\r
|
|
1227
|
-
: null\r
|
|
1228
|
-
"\r
|
|
1229
|
-
nzTooltipPlacement="right"\r
|
|
1230
|
-
>\r
|
|
1231
|
-
@if (menu.icon) {\r
|
|
1232
|
-
<nz-icon [nzType]="menu.icon" nzTheme="outline" style="font-size: 18px" />\r
|
|
1233
|
-
}\r
|
|
1234
|
-
<span>{{ menu.title }}</span>\r
|
|
1235
|
-
@if(menu.taskCountBadge === true && runningTaskCount() > 0) {\r
|
|
1236
|
-
<nz-badge style="margin-left: 12px" nzStatus="processing"></nz-badge>\r
|
|
1237
|
-
}\r
|
|
1238
|
-
</li>\r
|
|
1239
|
-
} @else {\r
|
|
1240
|
-
<li\r
|
|
1241
|
-
nz-submenu\r
|
|
1242
|
-
[nzPaddingLeft]="menu.level * 24"\r
|
|
1243
|
-
[nzOpen]="menu.open"\r
|
|
1244
|
-
[nzTitle]="menu.title"\r
|
|
1245
|
-
[nzIcon]="menu.icon"\r
|
|
1246
|
-
[nzDisabled]="menu.disabled"\r
|
|
1247
|
-
>\r
|
|
1248
|
-
<ul>\r
|
|
1249
|
-
<ng-container *ngTemplateOutlet="menuTpl; context: { $implicit: menu.children }" />\r
|
|
1250
|
-
</ul>\r
|
|
1251
|
-
</li>\r
|
|
1252
|
-
}\r
|
|
1253
|
-
} \r
|
|
1254
|
-
}\r
|
|
1255
|
-
</ng-template>\r
|
|
1256
|
-
</ul>\r
|
|
1257
|
-
`;
|
|
1258
|
-
|
|
1259
|
-
// angular:jit:style:src\app\layout\menu\layout-menu.component.less
|
|
1260
|
-
var layout_menu_component_default2 = "/* src/app/layout/menu/layout-menu.component.less */\n/*# sourceMappingURL=layout-menu.component.css.map */\n";
|
|
1261
|
-
|
|
1262
|
-
// src/app/layout/menu/menu.service.ts
|
|
1263
|
-
var MenuService = class MenuService2 {
|
|
1264
|
-
projectContext = inject(ProjectContextStore);
|
|
1265
|
-
currentMenu = signal(null);
|
|
1266
|
-
router = inject(Router);
|
|
1267
|
-
isHubProjectValid = this.projectContext.isHubProjectValid;
|
|
1268
|
-
menus = signal([
|
|
1269
|
-
{ title: "\u4EEA\u8868\u76D8", path: "/dashboard", icon: "dashboard", level: 1 },
|
|
1270
|
-
{ title: "\u4F9D\u8D56", path: "/dependencies", icon: "codepen", level: 1 },
|
|
1271
|
-
{ title: "\u4EFB\u52A1", path: "/tasks", icon: "schedule", level: 1, taskCountBadge: true },
|
|
1272
|
-
{ title: "\u914D\u7F6E", path: "/configuration", icon: "setting", level: 1 },
|
|
1273
|
-
{ title: "API", path: "/rquest", icon: "api", level: 1 },
|
|
1274
|
-
{ title: "Nginx", path: "/nginx", icon: "deployment-unit", level: 1 },
|
|
1275
|
-
{ title: "\u96EA\u78A7\u56FE", path: "/sprite", icon: "smile", level: 1 },
|
|
1276
|
-
{ title: "\u7814\u53D1\u7BA1\u7406", path: "/rd", icon: "rocket", level: 1, hidden: true },
|
|
1277
|
-
{ title: "\u6D4B\u8BD5\u8DDF\u8E2A", path: "/issues", icon: "bug", level: 1, hidden: true }
|
|
1278
|
-
// { title: '系统设置', path: '/settings', icon: 'setting', level: 1 },
|
|
1279
|
-
]);
|
|
1280
|
-
// 当前菜单(所有)
|
|
1281
|
-
currentMenus = computed(() => {
|
|
1282
|
-
return this.menus();
|
|
1283
|
-
});
|
|
1284
|
-
constructor() {
|
|
1285
|
-
this.syncByUrl(this.router.url);
|
|
1286
|
-
this.router.events.pipe(filter((e) => e instanceof NavigationEnd)).subscribe((e) => this.syncByUrl(e.urlAfterRedirects));
|
|
1287
|
-
effect((onCleanup) => {
|
|
1288
|
-
const isValid = this.isHubProjectValid();
|
|
1289
|
-
this.menus.update((menus) => {
|
|
1290
|
-
return menus.map((menu) => {
|
|
1291
|
-
if (menu.path && (menu.path.includes("/rd") || menu.path.includes("/issues"))) {
|
|
1292
|
-
return __spreadProps(__spreadValues({}, menu), { hidden: !isValid });
|
|
1293
|
-
}
|
|
1294
|
-
return menu;
|
|
1295
|
-
});
|
|
1296
|
-
});
|
|
1297
|
-
onCleanup(() => {
|
|
1298
|
-
});
|
|
1299
|
-
});
|
|
1300
|
-
}
|
|
1301
|
-
isActive(path) {
|
|
1302
|
-
return this.router.isActive(path, {
|
|
1303
|
-
paths: "subset",
|
|
1304
|
-
queryParams: "ignored",
|
|
1305
|
-
fragment: "ignored",
|
|
1306
|
-
matrixParams: "ignored"
|
|
1307
|
-
});
|
|
1308
|
-
}
|
|
1309
|
-
clickMenu(item) {
|
|
1310
|
-
if (item.path)
|
|
1311
|
-
this.router.navigateByUrl(item.path);
|
|
1312
|
-
this.currentMenu.set(item);
|
|
1313
|
-
}
|
|
1314
|
-
syncByUrl(url) {
|
|
1315
|
-
const path = this.normalizeUrl(url);
|
|
1316
|
-
const matched = this.findBestMatch(this.menus(), path);
|
|
1317
|
-
this.currentMenu.set(matched);
|
|
1318
|
-
}
|
|
1319
|
-
normalizeUrl(url) {
|
|
1320
|
-
return url.split("?")[0].split("#")[0];
|
|
1321
|
-
}
|
|
1322
|
-
findBestMatch(menus, currentPath) {
|
|
1323
|
-
const all = this.flatten(menus).filter((m) => !!m.path);
|
|
1324
|
-
let best = null;
|
|
1325
|
-
for (const m of all) {
|
|
1326
|
-
const p = m.path;
|
|
1327
|
-
if (currentPath === p || currentPath.startsWith(p + "/")) {
|
|
1328
|
-
if (!best || p.length > best.path.length)
|
|
1329
|
-
best = m;
|
|
1330
|
-
}
|
|
1331
|
-
}
|
|
1332
|
-
return best;
|
|
1333
|
-
}
|
|
1334
|
-
flatten(menus) {
|
|
1335
|
-
const out = [];
|
|
1336
|
-
for (const m of menus) {
|
|
1337
|
-
out.push(m);
|
|
1338
|
-
if (m.children?.length)
|
|
1339
|
-
out.push(...this.flatten(m.children));
|
|
1340
|
-
}
|
|
1341
|
-
return out;
|
|
1342
|
-
}
|
|
1343
|
-
static ctorParameters = () => [];
|
|
1344
|
-
};
|
|
1345
|
-
MenuService = __decorate([
|
|
1346
|
-
Injectable({ providedIn: "root" })
|
|
1347
|
-
], MenuService);
|
|
1348
|
-
|
|
1349
|
-
// src/app/pages/tasks/services/task-bootstrap.servcie.ts
|
|
1350
|
-
var TaskBootstrapServcie = class TaskBootstrapServcie2 {
|
|
1351
|
-
api = inject(TasksApiService);
|
|
1352
|
-
runtimeStore = inject(TaskRuntimeStore);
|
|
1353
|
-
async initActiveSnapshot() {
|
|
1354
|
-
const res = await firstValueFrom(this.api.active());
|
|
1355
|
-
for (const rt of res ?? []) {
|
|
1356
|
-
this.runtimeStore.setRuntime(rt);
|
|
1357
|
-
}
|
|
1358
|
-
}
|
|
1359
|
-
};
|
|
1360
|
-
TaskBootstrapServcie = __decorate([
|
|
1361
|
-
Injectable({
|
|
1362
|
-
providedIn: "root"
|
|
1363
|
-
})
|
|
1364
|
-
], TaskBootstrapServcie);
|
|
1365
|
-
|
|
1366
|
-
// src/app/layout/menu/layout-menu.component.ts
|
|
1367
|
-
var LayoutMenuComponent = class LayoutMenuComponent2 {
|
|
1368
|
-
isCollapsed = false;
|
|
1369
|
-
menuService = inject(MenuService);
|
|
1370
|
-
taskBootstrap = inject(TaskBootstrapServcie);
|
|
1371
|
-
runtimeStore = inject(TaskRuntimeStore);
|
|
1372
|
-
menus = this.menuService.currentMenus;
|
|
1373
|
-
runningTaskCount = computed(() => this.runtimeStore.totalRunningCountSignal()());
|
|
1374
|
-
ngOnInit() {
|
|
1375
|
-
this.taskBootstrap.initActiveSnapshot();
|
|
1376
|
-
}
|
|
1377
|
-
static propDecorators = {
|
|
1378
|
-
isCollapsed: [{ type: Input }]
|
|
1379
|
-
};
|
|
1380
|
-
};
|
|
1381
|
-
LayoutMenuComponent = __decorate([
|
|
1382
|
-
Component({
|
|
1383
|
-
selector: "ngm-menu",
|
|
1384
|
-
imports: [NgTemplateOutlet, NzMenuModule, NzIconModule, RouterModule, NzTooltipModule, NzBadgeModule],
|
|
1385
|
-
template: layout_menu_component_default,
|
|
1386
|
-
styles: [layout_menu_component_default2]
|
|
1387
|
-
})
|
|
1388
|
-
], LayoutMenuComponent);
|
|
1389
|
-
|
|
1390
|
-
// angular:jit:template:src\app\layout\project-nav\layout-project-nav.component.html
|
|
1391
|
-
var layout_project_nav_component_default = `<button\r
|
|
1392
|
-
class="project-quick-dropdown"\r
|
|
1393
|
-
[class.collapsed]="isCollapsed()"\r
|
|
1394
|
-
nz-button\r
|
|
1395
|
-
nzType="primary"\r
|
|
1396
|
-
nzSize="large"\r
|
|
1397
|
-
nz-dropdown\r
|
|
1398
|
-
[nzDropdownMenu]="menu"\r
|
|
1399
|
-
nzTrigger="click"\r
|
|
1400
|
-
[nzPlacement]="'bottomCenter'"\r
|
|
1401
|
-
[nzOverlayStyle]="{ width: '100%' }"\r
|
|
1402
|
-
>\r
|
|
1403
|
-
<span>{{ curProjectName() }}</span>\r
|
|
1404
|
-
@if(!isCollapsed()) {\r
|
|
1405
|
-
<nz-icon nzType="down" />\r
|
|
1406
|
-
}\r
|
|
1407
|
-
</button>\r
|
|
1408
|
-
<nz-dropdown-menu #menu="nzDropdownMenu" style="width: 100%">\r
|
|
1409
|
-
<ul nz-menu>\r
|
|
1410
|
-
@if(currentProject()) {\r
|
|
1411
|
-
<li nz-menu-item class="item">\r
|
|
1412
|
-
<nz-icon\r
|
|
1413
|
-
nzType="star"\r
|
|
1414
|
-
[nzTheme]="currentProject()?.isFavorite ? 'fill' : 'outline'"\r
|
|
1415
|
-
></nz-icon>\r
|
|
1416
|
-
<span>\u6DFB\u52A0/\u53D6\u6D88\u6536\u85CF</span>\r
|
|
1417
|
-
<nz-switch\r
|
|
1418
|
-
[nzDisabled]="!currentProject()?.id"\r
|
|
1419
|
-
style="margin-left: 6px"\r
|
|
1420
|
-
[ngModel]="currentProject()?.isFavorite"\r
|
|
1421
|
-
(ngModelChange)="projectState.toggleFavorite(currentProject()?.id!)"\r
|
|
1422
|
-
/>\r
|
|
1423
|
-
</li>\r
|
|
1424
|
-
<li\r
|
|
1425
|
-
nz-menu-item\r
|
|
1426
|
-
class="item"\r
|
|
1427
|
-
(click)="projectState.openInEditor(currentProject()?.id!)"\r
|
|
1428
|
-
>\r
|
|
1429
|
-
<nz-icon nzType="code"></nz-icon>\r
|
|
1430
|
-
<span>\u5728\u7F16\u8F91\u5668\u4E2D\u6253\u5F00</span>\r
|
|
1431
|
-
</li>\r
|
|
1432
|
-
<li\r
|
|
1433
|
-
nz-menu-item\r
|
|
1434
|
-
class="item"\r
|
|
1435
|
-
(click)="projectState.openEditModal(currentProject()!)"\r
|
|
1436
|
-
>\r
|
|
1437
|
-
<nz-icon nzType="edit"></nz-icon>\r
|
|
1438
|
-
<span>\u7F16\u8F91\u9879\u76EE</span>\r
|
|
1439
|
-
</li>\r
|
|
1440
|
-
<li nz-menu-item class="item" (click)="openPersonalTokenModal()">\r
|
|
1441
|
-
<nz-icon nzType="safety-certificate"></nz-icon>\r
|
|
1442
|
-
<span>Hub V2 Personal Token</span>\r
|
|
1443
|
-
<span class="token-status" [class.ok]="userStore.hasHubUserToken()">\r
|
|
1444
|
-
{{ userStore.hasHubUserToken() ? '\u5DF2\u914D\u7F6E' : '\u672A\u914D\u7F6E' }}\r
|
|
1445
|
-
</span>\r
|
|
1446
|
-
</li>\r
|
|
1447
|
-
}\r
|
|
1448
|
-
<li nz-menu-divider></li>\r
|
|
1449
|
-
<li nz-menu-group nzTitle="\u6536\u85CF\u7684\u9879\u76EE"></li>\r
|
|
1450
|
-
@for(item of favoriteProjects(); track item.id) {\r
|
|
1451
|
-
<li nz-menu-item class="item" (click)="projectState.selectProject(item)">\r
|
|
1452
|
-
<nz-icon nzType="star" nzTheme="fill"></nz-icon>\r
|
|
1453
|
-
<span>{{ item.name }}</span>\r
|
|
1454
|
-
</li>\r
|
|
1455
|
-
}\r
|
|
1456
|
-
<li nz-menu-divider></li>\r
|
|
1457
|
-
<li nz-menu-group nzTitle="\u6700\u8FD1\u4F7F\u7528"></li>\r
|
|
1458
|
-
@for(item of recentProjects(); track item.id) {\r
|
|
1459
|
-
<li nz-menu-item class="item" (click)="projectState.selectProject(item)">\r
|
|
1460
|
-
<nz-icon nzType="star" [nzTheme]="item.isFavorite ? 'fill' : 'outline'"></nz-icon>\r
|
|
1461
|
-
<span>{{ item.name }}</span>\r
|
|
1462
|
-
</li>\r
|
|
1463
|
-
}\r
|
|
1464
|
-
<li nz-menu-divider></li>\r
|
|
1465
|
-
<li nz-menu-item class="item">\r
|
|
1466
|
-
<a routerLink="/projects">\r
|
|
1467
|
-
<nz-icon nzType="project"></nz-icon>\r
|
|
1468
|
-
<span>\u9879\u76EE\u7BA1\u7406</span>\r
|
|
1469
|
-
</a>\r
|
|
1470
|
-
</li>\r
|
|
1471
|
-
</ul>\r
|
|
1472
|
-
</nz-dropdown-menu>\r
|
|
1473
|
-
<app-project-edit-modal></app-project-edit-modal>\r
|
|
1474
|
-
<app-hub-v2-personal-token-modal\r
|
|
1475
|
-
[visible]="personalTokenModalVisible"\r
|
|
1476
|
-
(visibleChange)="personalTokenModalVisible = $event"\r
|
|
1477
|
-
></app-hub-v2-personal-token-modal>\r
|
|
1478
|
-
`;
|
|
1479
|
-
|
|
1480
|
-
// angular:jit:style:src\app\layout\project-nav\layout-project-nav.component.less
|
|
1481
|
-
var layout_project_nav_component_default2 = "/* src/app/layout/project-nav/layout-project-nav.component.less */\n:host {\n display: flex;\n padding: 16px;\n}\n:host .project-quick-dropdown {\n flex: 1;\n width: 100%;\n display: flex;\n align-items: center;\n gap: 8px;\n justify-content: center;\n border-radius: 20px;\n font-weight: 500;\n}\n:host .project-quick-dropdown span {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.item ::ng-deep .ant-menu-title-content {\n display: flex;\n align-items: center;\n gap: 8px;\n overflow: hidden;\n}\n.item ::ng-deep .ant-menu-title-content span {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.item .token-status {\n margin-left: auto;\n font-size: 12px;\n color: #8c8c8c;\n}\n.item .token-status.ok {\n color: #52c41a;\n}\n.item a {\n color: var(--app-text-color);\n display: flex;\n width: 100%;\n align-items: center;\n gap: 8px;\n}\n/*# sourceMappingURL=layout-project-nav.component.css.map */\n";
|
|
1482
|
-
|
|
1483
|
-
// angular:jit:style:inline:src\app\pages\projects\project-list\project-edit-modal.component.ts;CiAgICAubW9kYWwtYm9keSB7IGRpc3BsYXk6IGdyaWQ7IGdhcDogMTJweDsgfQogICAgLnNlY3Rpb24tdGl0bGUgeyBmb250LXNpemU6IDEzcHg7IGZvbnQtd2VpZ2h0OiA2MDA7IG9wYWNpdHk6IC45OyBtYXJnaW4tdG9wOiA0cHg7IH0KICAgIC5oaW50IHsgZm9udC1zaXplOiAxMnB4OyBvcGFjaXR5OiAuNzU7IH0KICA=
|
|
1484
|
-
var project_edit_modal_component_default = "/* angular:styles/component:less;176225aba4e5f20ae3e3bc03c308fe46cf63f04bbdf3bb701c7b5e59fdda0190;D:\\ng-manager\\webapp\\src\\app\\pages\\projects\\project-list\\project-edit-modal.component.ts */\n.modal-body {\n display: grid;\n gap: 12px;\n}\n.section-title {\n font-size: 13px;\n font-weight: 600;\n opacity: 0.9;\n margin-top: 4px;\n}\n.hint {\n font-size: 12px;\n opacity: 0.75;\n}\n/*# sourceMappingURL=project-edit-modal.component.css.map */\n";
|
|
1485
|
-
|
|
1486
|
-
// src/app/pages/projects/project-list/project-edit-modal.component.ts
|
|
1487
|
-
var ProjectEditModalComponent = class ProjectEditModalComponent2 {
|
|
1488
|
-
projectState = inject(ProjectStateService);
|
|
1489
|
-
editingProject = this.projectState.editingProject;
|
|
1490
|
-
};
|
|
1491
|
-
ProjectEditModalComponent = __decorate([
|
|
1492
|
-
Component({
|
|
1493
|
-
selector: "app-project-edit-modal",
|
|
1494
|
-
standalone: true,
|
|
1495
|
-
imports: [CommonModule, FormsModule, NzInputModule, NzButtonModule, NzModalModule, NzIconModule],
|
|
1496
|
-
template: `
|
|
1497
|
-
<nz-modal
|
|
1498
|
-
[nzClosable]="false"
|
|
1499
|
-
[nzMaskClosable]="false"
|
|
1500
|
-
[nzVisible]="projectState.isEditModalVisible()"
|
|
1501
|
-
nzTitle="\u7F16\u8F91\u9879\u76EE"
|
|
1502
|
-
(nzOnCancel)="projectState.closeEditModal()"
|
|
1503
|
-
>
|
|
1504
|
-
<ng-container *nzModalContent>
|
|
1505
|
-
@if(editingProject()){
|
|
1506
|
-
<div class="modal-body">
|
|
1507
|
-
<label class="label">\u540D\u79F0</label>
|
|
1508
|
-
<nz-input-wrapper >
|
|
1509
|
-
<input
|
|
1510
|
-
nz-input
|
|
1511
|
-
[ngModel]="editingProject()!.name"
|
|
1512
|
-
(ngModelChange)="projectState.editingProject()!.name = $event"
|
|
1513
|
-
placeholder="\u8BF7\u8F93\u5165\u65B0\u540D\u79F0"
|
|
1514
|
-
(keydown.enter)="projectState.confirmEditProject()"
|
|
1515
|
-
autofocus
|
|
1516
|
-
/>
|
|
1517
|
-
<nz-icon nzInputPrefix nzType="folder" nzTheme="fill" />
|
|
1518
|
-
</nz-input-wrapper>
|
|
1519
|
-
<div class="hint">\u8F93\u5165\u65B0\u540D\u79F0\uFF0C\u5C06\u540C\u6B65\u66F4\u65B0\u9879\u76EE\u663E\u793A\u540D\u79F0\uFF08\u4E0D\u4F1A\u91CD\u547D\u540D\u78C1\u76D8\u76EE\u5F55\uFF09\u3002</div>
|
|
1520
|
-
<label class="label">Git\u4ED3\u5E93\u5730\u5740</label>
|
|
1521
|
-
<nz-input-wrapper >
|
|
1522
|
-
<input
|
|
1523
|
-
nz-input
|
|
1524
|
-
[ngModel]="editingProject()!.repoPageUrl"
|
|
1525
|
-
(ngModelChange)="projectState.editingProject()!.repoPageUrl = $event"
|
|
1526
|
-
placeholder="Git\u4ED3\u5E93\u5730\u5740"
|
|
1527
|
-
/>
|
|
1528
|
-
<nz-icon nzInputPrefix nzType="github" nzTheme="outline" />
|
|
1529
|
-
</nz-input-wrapper>
|
|
1530
|
-
|
|
1531
|
-
<div class="section-title">NGM Hub V2</div>
|
|
1532
|
-
<label class="label">Hub \u5730\u5740</label>
|
|
1533
|
-
<nz-input-wrapper>
|
|
1534
|
-
<input
|
|
1535
|
-
nz-input
|
|
1536
|
-
[ngModel]="editingProject()!.hubV2.baseUrl"
|
|
1537
|
-
(ngModelChange)="projectState.editingProject()!.hubV2.baseUrl = $event"
|
|
1538
|
-
placeholder="\u4F8B\u5982\uFF1Ahttp://192.168.1.31:7008"
|
|
1539
|
-
/>
|
|
1540
|
-
<nz-icon nzInputPrefix nzType="link" nzTheme="outline" />
|
|
1541
|
-
</nz-input-wrapper>
|
|
1542
|
-
|
|
1543
|
-
<label class="label">Project Key</label>
|
|
1544
|
-
<nz-input-wrapper>
|
|
1545
|
-
<input
|
|
1546
|
-
nz-input
|
|
1547
|
-
[ngModel]="editingProject()!.hubV2.projectKey"
|
|
1548
|
-
(ngModelChange)="projectState.editingProject()!.hubV2.projectKey = $event"
|
|
1549
|
-
placeholder="\u4F8B\u5982\uFF1ANGM"
|
|
1550
|
-
/>
|
|
1551
|
-
<nz-icon nzInputPrefix nzType="key" nzTheme="outline" />
|
|
1552
|
-
</nz-input-wrapper>
|
|
1553
|
-
|
|
1554
|
-
<label class="label">API Token</label>
|
|
1555
|
-
<nz-input-wrapper>
|
|
1556
|
-
<input
|
|
1557
|
-
nz-input
|
|
1558
|
-
type="password"
|
|
1559
|
-
[ngModel]="editingProject()!.hubV2.token"
|
|
1560
|
-
(ngModelChange)="projectState.editingProject()!.hubV2.token = $event"
|
|
1561
|
-
placeholder="\u7C98\u8D34 hub-v2 \u9879\u76EE token"
|
|
1562
|
-
/>
|
|
1563
|
-
<nz-icon nzInputPrefix nzType="safety-certificate" nzTheme="outline" />
|
|
1564
|
-
</nz-input-wrapper>
|
|
1565
|
-
<div class="hint">\u4EE5\u4E0A\u914D\u7F6E\u4F1A\u5199\u5165\u9879\u76EE env\uFF1ANGM_HUB_V2_BASE_URL / NGM_HUB_V2_PROJECT_KEY / NGM_HUB_V2_TOKEN\u3002</div>
|
|
1566
|
-
|
|
1567
|
-
<!-- <label class="label">\u539F\u5C3A\u5BF8\u56FE\u6807SVN\u5730\u5740</label>
|
|
1568
|
-
<nz-input-wrapper >
|
|
1569
|
-
<input
|
|
1570
|
-
nz-input
|
|
1571
|
-
[ngModel]="editingProject()!.iconsRepoUrl"
|
|
1572
|
-
(ngModelChange)="projectState.editingProject()!.iconsRepoUrl = $event"
|
|
1573
|
-
placeholder="\u539F\u5C3A\u5BF8\u56FE\u6807SVN\u5730\u5740"
|
|
1574
|
-
/>
|
|
1575
|
-
<nz-icon nzInputPrefix nzType="proj:svn" nzTheme="outline" />
|
|
1576
|
-
</nz-input-wrapper>
|
|
1577
|
-
<div class="hint">\u8F93\u5165\u9879\u76EE\u7684\u539F\u5C3A\u5BF8\u56FE\u6807SVN\u5730\u5740\uFF0C\u7528\u4E8E\u5236\u4F5C\u9879\u76EE\u6240\u9700\u96EA\u78A7\u56FE\u3002</div>
|
|
1578
|
-
<div class="hint">\u793A\u4F8B\uFF1Asvn://192.168.1.10/\u9879\u76EE\u7BA1\u7406/xx\u9879\u76EE/02.\u9879\u76EE\u6587\u6863/05.\u7CFB\u7EDF\u8BBE\u8BA1/02-\u539F\u578B\u8BBE\u8BA1/02-UI\u8BBE\u8BA1\u6548\u679C\u56FE&\u5207\u56FE/3-\u539F\u5C3A\u5BF8\u56FE\u6807</div> -->
|
|
1579
|
-
|
|
1580
|
-
<label class="label">\u63CF\u8FF0</label>
|
|
1581
|
-
<nz-input-wrapper>
|
|
1582
|
-
<textarea
|
|
1583
|
-
nz-input
|
|
1584
|
-
rows="3"
|
|
1585
|
-
style="resize: none;"
|
|
1586
|
-
[ngModel]="editingProject()!.description"
|
|
1587
|
-
(ngModelChange)="projectState.editingProject()!.description = $event"
|
|
1588
|
-
placeholder="\u8BF7\u8F93\u5165\u65B0\u63CF\u8FF0"
|
|
1589
|
-
(keydown.enter)="projectState.confirmEditProject()"
|
|
1590
|
-
></textarea>
|
|
1591
|
-
</nz-input-wrapper>
|
|
1592
|
-
</div>
|
|
1593
|
-
}
|
|
1594
|
-
</ng-container>
|
|
1595
|
-
|
|
1596
|
-
<ng-container *nzModalFooter>
|
|
1597
|
-
<button nz-button (click)="projectState.closeEditModal()">\u53D6\u6D88</button>
|
|
1598
|
-
<button
|
|
1599
|
-
nz-button
|
|
1600
|
-
nzType="primary"
|
|
1601
|
-
(click)="projectState.confirmEditProject()"
|
|
1602
|
-
[disabled]="!projectState.editingProject()?.name?.trim() || projectState.isEditSaving()"
|
|
1603
|
-
[nzLoading]="projectState.isEditSaving()"
|
|
1604
|
-
>
|
|
1605
|
-
\u786E\u5B9A
|
|
1606
|
-
</button>
|
|
1607
|
-
</ng-container>
|
|
1608
|
-
</nz-modal>
|
|
1609
|
-
|
|
1610
|
-
`,
|
|
1611
|
-
styles: [project_edit_modal_component_default]
|
|
1612
|
-
})
|
|
1613
|
-
], ProjectEditModalComponent);
|
|
1614
|
-
|
|
1615
|
-
// angular:jit:style:inline:src\app\layout\project-nav\hub-v2-personal-token-modal.component.ts;CiAgICAgIC5tb2RhbC1ib2R5IHsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdhcDogMTJweDsKICAgICAgfQogICAgICAuaGludCB7CiAgICAgICAgZm9udC1zaXplOiAxMnB4OwogICAgICAgIG9wYWNpdHk6IDAuNzU7CiAgICAgIH0KICAgIA==
|
|
1616
|
-
var hub_v2_personal_token_modal_component_default = "/* angular:styles/component:less;11d4227e1814fc017921dae35e531cb63e83883c9563c6d511773165dc9052d7;D:\\ng-manager\\webapp\\src\\app\\layout\\project-nav\\hub-v2-personal-token-modal.component.ts */\n.modal-body {\n display: grid;\n gap: 12px;\n}\n.hint {\n font-size: 12px;\n opacity: 0.75;\n}\n/*# sourceMappingURL=hub-v2-personal-token-modal.component.css.map */\n";
|
|
1617
|
-
|
|
1618
|
-
// src/app/layout/project-nav/hub-v2-personal-token-modal.component.ts
|
|
1619
|
-
var HubV2PersonalTokenModalComponent = class HubV2PersonalTokenModalComponent2 {
|
|
1620
|
-
userStore = inject(UserStore);
|
|
1621
|
-
visible = false;
|
|
1622
|
-
visibleChange = new EventEmitter();
|
|
1623
|
-
draft = "";
|
|
1624
|
-
open() {
|
|
1625
|
-
this.userStore.ensureUserLoaded();
|
|
1626
|
-
this.draft = this.userStore.hubUserToken();
|
|
1627
|
-
}
|
|
1628
|
-
close() {
|
|
1629
|
-
this.visibleChange.emit(false);
|
|
1630
|
-
}
|
|
1631
|
-
save() {
|
|
1632
|
-
this.userStore.setHubUserToken(this.draft);
|
|
1633
|
-
this.userStore.loadCurrentUser();
|
|
1634
|
-
this.visibleChange.emit(false);
|
|
1635
|
-
}
|
|
1636
|
-
clear() {
|
|
1637
|
-
this.userStore.setHubUserToken("");
|
|
1638
|
-
this.draft = "";
|
|
1639
|
-
}
|
|
1640
|
-
static propDecorators = {
|
|
1641
|
-
visible: [{ type: Input }],
|
|
1642
|
-
visibleChange: [{ type: Output }]
|
|
1643
|
-
};
|
|
1644
|
-
};
|
|
1645
|
-
HubV2PersonalTokenModalComponent = __decorate([
|
|
1646
|
-
Component({
|
|
1647
|
-
selector: "app-hub-v2-personal-token-modal",
|
|
1648
|
-
standalone: true,
|
|
1649
|
-
imports: [CommonModule, FormsModule, NzButtonModule, NzIconModule, NzInputModule, NzModalModule],
|
|
1650
|
-
template: `
|
|
1651
|
-
<nz-modal
|
|
1652
|
-
[nzVisible]="visible"
|
|
1653
|
-
[nzClosable]="false"
|
|
1654
|
-
[nzMaskClosable]="false"
|
|
1655
|
-
nzTitle="Hub V2 Personal Token\uFF08\u5168\u5C40\uFF09"
|
|
1656
|
-
[nzWidth]="560"
|
|
1657
|
-
(nzOnCancel)="close()"
|
|
1658
|
-
>
|
|
1659
|
-
<ng-container *nzModalContent>
|
|
1660
|
-
<div class="modal-body">
|
|
1661
|
-
<label class="label">Personal Token</label>
|
|
1662
|
-
<nz-input-wrapper>
|
|
1663
|
-
<input nz-input type="password" [(ngModel)]="draft" placeholder="\u7C98\u8D34 ngm_uptk_xxx" />
|
|
1664
|
-
<nz-icon nzInputPrefix nzType="safety-certificate" nzTheme="outline" />
|
|
1665
|
-
</nz-input-wrapper>
|
|
1666
|
-
<div class="hint">\u4EC5\u4FDD\u5B58\u5728\u5F53\u524D\u6D4F\u89C8\u5668\u672C\u5730\uFF0C\u7528\u4E8E webapp \u8C03\u7528 Hub V2 /api/personal\u3002</div>
|
|
1667
|
-
</div>
|
|
1668
|
-
</ng-container>
|
|
1669
|
-
<ng-container *nzModalFooter>
|
|
1670
|
-
<button nz-button (click)="clear()">\u6E05\u7A7A</button>
|
|
1671
|
-
<button nz-button (click)="close()">\u53D6\u6D88</button>
|
|
1672
|
-
<button nz-button nzType="primary" (click)="save()">\u4FDD\u5B58</button>
|
|
1673
|
-
</ng-container>
|
|
1674
|
-
</nz-modal>
|
|
1675
|
-
`,
|
|
1676
|
-
styles: [hub_v2_personal_token_modal_component_default]
|
|
1677
|
-
})
|
|
1678
|
-
], HubV2PersonalTokenModalComponent);
|
|
1679
|
-
|
|
1680
|
-
// src/app/layout/project-nav/layout-project-nav.component.ts
|
|
1681
|
-
var LayoutProjectNavComponent = class LayoutProjectNavComponent2 {
|
|
1682
|
-
userStore = inject(UserStore);
|
|
1683
|
-
projectContext = inject(ProjectContextStore);
|
|
1684
|
-
projectState = inject(ProjectStateService);
|
|
1685
|
-
isCollapsed = model(false);
|
|
1686
|
-
personalTokenModalVisible = false;
|
|
1687
|
-
personalTokenModal;
|
|
1688
|
-
currentProject = this.projectContext.currentProject;
|
|
1689
|
-
favoriteProjects = this.projectContext.favoriteProjects;
|
|
1690
|
-
recentProjects = this.projectContext.recentProjects;
|
|
1691
|
-
curProjectName = computed(() => {
|
|
1692
|
-
const name = this.projectContext.currentProject()?.name || "\u8BF7\u9009\u62E9\u9879\u76EE";
|
|
1693
|
-
return this.isCollapsed() ? name?.charAt(0).toUpperCase() : name;
|
|
1694
|
-
});
|
|
1695
|
-
ngOnInit() {
|
|
1696
|
-
this.projectContext.loadProjects().subscribe();
|
|
1697
|
-
this.userStore.ensureHubUserTokenLoaded();
|
|
1698
|
-
}
|
|
1699
|
-
openPersonalTokenModal() {
|
|
1700
|
-
this.personalTokenModalVisible = true;
|
|
1701
|
-
queueMicrotask(() => this.personalTokenModal?.open());
|
|
1702
|
-
}
|
|
1703
|
-
static propDecorators = {
|
|
1704
|
-
isCollapsed: [{ type: Input, args: [{ isSignal: true, alias: "isCollapsed", required: false }] }, { type: Output, args: ["isCollapsedChange"] }],
|
|
1705
|
-
personalTokenModal: [{ type: ViewChild, args: [HubV2PersonalTokenModalComponent] }]
|
|
1706
|
-
};
|
|
1707
|
-
};
|
|
1708
|
-
LayoutProjectNavComponent = __decorate([
|
|
1709
|
-
Component({
|
|
1710
|
-
selector: "ngm-project-nav",
|
|
1711
|
-
imports: [
|
|
1712
|
-
CommonModule,
|
|
1713
|
-
FormsModule,
|
|
1714
|
-
NzDropDownModule,
|
|
1715
|
-
NzMenuModule,
|
|
1716
|
-
NzIconModule,
|
|
1717
|
-
NzSwitchModule,
|
|
1718
|
-
NzButtonModule,
|
|
1719
|
-
RouterModule,
|
|
1720
|
-
ProjectEditModalComponent,
|
|
1721
|
-
HubV2PersonalTokenModalComponent
|
|
1722
|
-
],
|
|
1723
|
-
template: layout_project_nav_component_default,
|
|
1724
|
-
styles: [layout_project_nav_component_default2]
|
|
1725
|
-
})
|
|
1726
|
-
], LayoutProjectNavComponent);
|
|
1727
|
-
|
|
1728
|
-
// src/app/layout/sidebar/layout-sidebar.component.ts
|
|
1729
|
-
var LayoutSidebarComponent = class LayoutSidebarComponent2 {
|
|
1730
|
-
router = inject(Router);
|
|
1731
|
-
state = inject(LayoutStateService);
|
|
1732
|
-
isCollapsed = this.state.isCollapsed;
|
|
1733
|
-
constructor() {
|
|
1734
|
-
}
|
|
1735
|
-
isActive(path) {
|
|
1736
|
-
return this.router.url.startsWith(path);
|
|
1737
|
-
}
|
|
1738
|
-
static ctorParameters = () => [];
|
|
1739
|
-
};
|
|
1740
|
-
LayoutSidebarComponent = __decorate([
|
|
1741
|
-
Component({
|
|
1742
|
-
selector: "ngm-sidebar",
|
|
1743
|
-
imports: [
|
|
1744
|
-
NzLayoutModule,
|
|
1745
|
-
NzIconModule,
|
|
1746
|
-
NzMenuModule,
|
|
1747
|
-
LayoutMenuComponent,
|
|
1748
|
-
LayoutProjectNavComponent,
|
|
1749
|
-
NzButtonModule,
|
|
1750
|
-
NzDropDownModule,
|
|
1751
|
-
RouterModule
|
|
1752
|
-
],
|
|
1753
|
-
template: layout_sidebar_component_default,
|
|
1754
|
-
host: {
|
|
1755
|
-
"[class.collapsed]": "isCollapsed()",
|
|
1756
|
-
"[class.ant-layout-sider]": "true"
|
|
1757
|
-
},
|
|
1758
|
-
styles: [layout_sidebar_component_default2]
|
|
1759
|
-
})
|
|
1760
|
-
], LayoutSidebarComponent);
|
|
1761
|
-
|
|
1762
|
-
// src/app/layout/layout.component.ts
|
|
1763
|
-
var LayoutComponent = class LayoutComponent2 {
|
|
1764
|
-
ws = inject(WsClientService);
|
|
1765
|
-
constructor() {
|
|
1766
|
-
this.ws.connect();
|
|
1767
|
-
effect(() => this.syncVisible());
|
|
1768
|
-
}
|
|
1769
|
-
wsState = toSignal(this.ws.stateChanges(), {
|
|
1770
|
-
initialValue: "idle"
|
|
1771
|
-
});
|
|
1772
|
-
/** 规则:非 open 展示(逻辑态) */
|
|
1773
|
-
shouldShow = computed(() => this.wsState() !== "open");
|
|
1774
|
-
/** DOM 是否渲染(含离场期间) */
|
|
1775
|
-
visible = signal(false);
|
|
1776
|
-
/** 是否处于离场动画 */
|
|
1777
|
-
leaving = signal(false);
|
|
1778
|
-
/** 给“正常启动瞬间 connecting”一个免闪窗口 */
|
|
1779
|
-
SHOW_DELAY_MS = 200;
|
|
1780
|
-
showTimer;
|
|
1781
|
-
/** 防止 transitionend/animationend 触发多次导致重复 set */
|
|
1782
|
-
removed = false;
|
|
1783
|
-
syncVisible() {
|
|
1784
|
-
const show = this.shouldShow();
|
|
1785
|
-
if (show) {
|
|
1786
|
-
this.removed = false;
|
|
1787
|
-
if (this.visible()) {
|
|
1788
|
-
this.leaving.set(false);
|
|
1789
|
-
return;
|
|
1790
|
-
}
|
|
1791
|
-
this.startShowDelay();
|
|
1792
|
-
return;
|
|
1793
|
-
}
|
|
1794
|
-
this.clearShowDelay();
|
|
1795
|
-
if (this.visible() && !this.leaving()) {
|
|
1796
|
-
this.leaving.set(true);
|
|
1797
|
-
}
|
|
1798
|
-
}
|
|
1799
|
-
startShowDelay() {
|
|
1800
|
-
if (this.showTimer)
|
|
1801
|
-
return;
|
|
1802
|
-
this.showTimer = setTimeout(() => {
|
|
1803
|
-
this.showTimer = void 0;
|
|
1804
|
-
if (this.shouldShow()) {
|
|
1805
|
-
this.visible.set(true);
|
|
1806
|
-
this.leaving.set(false);
|
|
1807
|
-
this.removed = false;
|
|
1808
|
-
}
|
|
1809
|
-
}, this.SHOW_DELAY_MS);
|
|
1810
|
-
}
|
|
1811
|
-
clearShowDelay() {
|
|
1812
|
-
if (this.showTimer) {
|
|
1813
|
-
clearTimeout(this.showTimer);
|
|
1814
|
-
this.showTimer = void 0;
|
|
1815
|
-
}
|
|
1816
|
-
}
|
|
1817
|
-
/** 内层动画结束(opacity/transform)*/
|
|
1818
|
-
onInnerAnimationEnd(evt) {
|
|
1819
|
-
}
|
|
1820
|
-
/** 外层高度 transition 结束:此时高度已经 0,再移除 DOM,不会“瞬间上移” */
|
|
1821
|
-
onWrapTransitionEnd(evt) {
|
|
1822
|
-
if (evt.propertyName !== "height")
|
|
1823
|
-
return;
|
|
1824
|
-
if (this.removed)
|
|
1825
|
-
return;
|
|
1826
|
-
if (!this.shouldShow() && this.leaving()) {
|
|
1827
|
-
this.removed = true;
|
|
1828
|
-
this.visible.set(false);
|
|
1829
|
-
this.leaving.set(false);
|
|
1830
|
-
}
|
|
1831
|
-
}
|
|
1832
|
-
static ctorParameters = () => [];
|
|
1833
|
-
};
|
|
1834
|
-
LayoutComponent = __decorate([
|
|
1835
|
-
Component({
|
|
1836
|
-
selector: "ngm-layout",
|
|
1837
|
-
imports: [
|
|
1838
|
-
RouterModule,
|
|
1839
|
-
NzLayoutModule,
|
|
1840
|
-
NzBreadCrumbModule,
|
|
1841
|
-
NzIconModule,
|
|
1842
|
-
NzMenuModule,
|
|
1843
|
-
LayoutSidebarComponent,
|
|
1844
|
-
LayoutHeaderComponent,
|
|
1845
|
-
LayoutFooterComponent
|
|
1846
|
-
],
|
|
1847
|
-
template: layout_component_default,
|
|
1848
|
-
styles: [layout_component_default2]
|
|
1849
|
-
})
|
|
1850
|
-
], LayoutComponent);
|
|
1851
|
-
|
|
1852
|
-
// src/app/app.ts
|
|
1853
|
-
var App = class App2 {
|
|
1854
|
-
constructor(reg) {
|
|
1855
|
-
reg.init();
|
|
1856
|
-
}
|
|
1857
|
-
static ctorParameters = () => [
|
|
1858
|
-
{ type: ProjectIconRegistry }
|
|
1859
|
-
];
|
|
1860
|
-
};
|
|
1861
|
-
App = __decorate([
|
|
1862
|
-
Component({
|
|
1863
|
-
selector: "app-root",
|
|
1864
|
-
imports: [LayoutComponent],
|
|
1865
|
-
template: `<ngm-layout></ngm-layout>`,
|
|
1866
|
-
styles: [app_default]
|
|
1867
|
-
})
|
|
1868
|
-
], App);
|
|
1869
|
-
|
|
1870
|
-
// src/main.ts
|
|
1871
|
-
bootstrapApplication(App, appConfig).catch((err) => console.error(err));
|
|
1872
|
-
//# sourceMappingURL=main.js.map
|