@next-bricks/nav 1.24.10 → 1.25.0
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/dist/bricks.json +12 -12
- package/dist/chunks/1685.437940d7.js +2 -0
- package/dist/chunks/1685.437940d7.js.map +1 -0
- package/dist/chunks/3944.a7f7cffe.js +2 -0
- package/dist/chunks/3944.a7f7cffe.js.map +1 -0
- package/dist/chunks/{4837.b5ed600d.js → 4837.d06f1908.js} +2 -2
- package/dist/chunks/{7218.6547d083.js.map → 4837.d06f1908.js.map} +1 -1
- package/dist/chunks/5655.a02d92d1.js +2 -0
- package/dist/chunks/5655.a02d92d1.js.map +1 -0
- package/dist/chunks/6128.3912671f.js +2 -0
- package/dist/chunks/6128.3912671f.js.map +1 -0
- package/dist/chunks/6502.9ac6b169.js +2 -0
- package/dist/chunks/6502.9ac6b169.js.map +1 -0
- package/dist/chunks/{7218.6547d083.js → 7218.623deb5b.js} +2 -2
- package/dist/chunks/{4837.b5ed600d.js.map → 7218.623deb5b.js.map} +1 -1
- package/dist/chunks/easyops-navbar-alerts.cc7090db.js +2 -0
- package/dist/chunks/easyops-navbar-alerts.cc7090db.js.map +1 -0
- package/dist/chunks/{eo-app-bar-wrapper.6fcc11f1.js → eo-app-bar-wrapper.743025bd.js} +3 -3
- package/dist/chunks/eo-app-bar-wrapper.743025bd.js.map +1 -0
- package/dist/chunks/eo-directory-tree-internal-node.e1fd8680.js +2 -0
- package/dist/chunks/eo-directory-tree-internal-node.e1fd8680.js.map +1 -0
- package/dist/chunks/eo-directory-tree-leaf.315a4f71.js +2 -0
- package/dist/chunks/eo-directory-tree-leaf.315a4f71.js.map +1 -0
- package/dist/chunks/eo-directory-tree.2ba780f8.js +3 -0
- package/dist/chunks/eo-directory-tree.2ba780f8.js.map +1 -0
- package/dist/chunks/eo-directory.a0e99853.js +3 -0
- package/dist/chunks/eo-directory.a0e99853.js.map +1 -0
- package/dist/chunks/{eo-frame-breadcrumb.88ef9279.js → eo-frame-breadcrumb.a2d98877.js} +2 -2
- package/dist/chunks/{eo-frame-breadcrumb.88ef9279.js.map → eo-frame-breadcrumb.a2d98877.js.map} +1 -1
- package/dist/chunks/eo-launchpad-button-v2.aa05077e.js +3 -0
- package/dist/chunks/eo-launchpad-button-v2.aa05077e.js.map +1 -0
- package/dist/chunks/eo-launchpad-button.b8b7bcff.js +3 -0
- package/dist/chunks/eo-launchpad-button.b8b7bcff.js.map +1 -0
- package/dist/chunks/eo-launchpad-quick-access.b0a48525.js +3 -0
- package/dist/chunks/eo-launchpad-quick-access.b0a48525.js.map +1 -0
- package/dist/chunks/{eo-launchpad-recent-visits.dad50d61.js → eo-launchpad-recent-visits.1a7c6e2c.js} +3 -3
- package/dist/chunks/eo-launchpad-recent-visits.1a7c6e2c.js.map +1 -0
- package/dist/chunks/{eo-nav-menu.640648bb.js → eo-nav-menu.64183ee8.js} +2 -2
- package/dist/chunks/{eo-nav-menu.640648bb.js.map → eo-nav-menu.64183ee8.js.map} +1 -1
- package/dist/chunks/eo-search-launchpad.8d4e293c.js +2 -0
- package/dist/chunks/eo-search-launchpad.8d4e293c.js.map +1 -0
- package/dist/chunks/{eo-sidebar-menu-group.66decf41.js → eo-sidebar-menu-group.01ac76d3.js} +3 -3
- package/dist/chunks/{eo-sidebar-menu-group.66decf41.js.map → eo-sidebar-menu-group.01ac76d3.js.map} +1 -1
- package/dist/chunks/eo-sidebar-menu-item.cc8a849b.js +2 -0
- package/dist/chunks/eo-sidebar-menu-item.cc8a849b.js.map +1 -0
- package/dist/chunks/eo-sidebar-menu-submenu.5cb414f6.js +3 -0
- package/dist/chunks/eo-sidebar-menu-submenu.5cb414f6.js.map +1 -0
- package/dist/chunks/{eo-sidebar-menu.39722013.js → eo-sidebar-menu.48f4f3a7.js} +2 -2
- package/dist/chunks/{eo-sidebar-menu.39722013.js.map → eo-sidebar-menu.48f4f3a7.js.map} +1 -1
- package/dist/chunks/{eo-sidebar-sub-menu.d8255f31.js → eo-sidebar-sub-menu.70c71ea9.js} +3 -3
- package/dist/chunks/eo-sidebar-sub-menu.70c71ea9.js.map +1 -0
- package/dist/chunks/eo-sidebar.ad2491ee.js +3 -0
- package/dist/chunks/eo-sidebar.ad2491ee.js.map +1 -0
- package/dist/chunks/{get-menu-config-options.77e554ca.js → get-menu-config-options.5803223a.js} +2 -2
- package/dist/chunks/{get-menu-config-options.77e554ca.js.map → get-menu-config-options.5803223a.js.map} +1 -1
- package/dist/chunks/{get-menu-config-tree.d422a3a5.js → get-menu-config-tree.d139c301.js} +2 -2
- package/dist/chunks/{get-menu-config-tree.d422a3a5.js.map → get-menu-config-tree.d139c301.js.map} +1 -1
- package/dist/chunks/launchpad-config.bd938fce.js +3 -0
- package/dist/chunks/launchpad-config.bd938fce.js.map +1 -0
- package/dist/chunks/{main.0a22c3de.js → main.7c9a2c63.js} +2 -2
- package/dist/chunks/{main.0a22c3de.js.map → main.7c9a2c63.js.map} +1 -1
- package/dist/chunks/{nav-logo.8d4c94b9.js → nav-logo.96de5e52.js} +2 -2
- package/dist/chunks/{nav-logo.8d4c94b9.js.map → nav-logo.96de5e52.js.map} +1 -1
- package/dist/chunks/{poll-announce.e1c07541.js → poll-announce.bb9bd6d1.js} +3 -3
- package/dist/chunks/{poll-announce.e1c07541.js.map → poll-announce.bb9bd6d1.js.map} +1 -1
- package/dist/chunks/{query-search.1f1900d6.js → query-search.0c3c3518.js} +3 -3
- package/dist/chunks/query-search.0c3c3518.js.map +1 -0
- package/dist/examples.json +3 -3
- package/dist/index.715d54c7.js +2 -0
- package/dist/{index.4abc895c.js.map → index.715d54c7.js.map} +1 -1
- package/dist/manifest.json +39 -39
- package/dist/types.json +66 -66
- package/dist-types/search-launchpad/i18n.d.ts +14 -0
- package/package.json +3 -3
- package/dist/chunks/2133.7a40ebb2.js +0 -2
- package/dist/chunks/2133.7a40ebb2.js.map +0 -1
- package/dist/chunks/4433.a908e194.js +0 -2
- package/dist/chunks/4433.a908e194.js.map +0 -1
- package/dist/chunks/4727.d9082275.js +0 -2
- package/dist/chunks/4727.d9082275.js.map +0 -1
- package/dist/chunks/6595.eae95c18.js +0 -2
- package/dist/chunks/6595.eae95c18.js.map +0 -1
- package/dist/chunks/9149.6aa0810a.js +0 -2
- package/dist/chunks/9149.6aa0810a.js.map +0 -1
- package/dist/chunks/easyops-navbar-alerts.2aa70f37.js +0 -2
- package/dist/chunks/easyops-navbar-alerts.2aa70f37.js.map +0 -1
- package/dist/chunks/eo-app-bar-wrapper.6fcc11f1.js.map +0 -1
- package/dist/chunks/eo-directory-tree-internal-node.73444da5.js +0 -2
- package/dist/chunks/eo-directory-tree-internal-node.73444da5.js.map +0 -1
- package/dist/chunks/eo-directory-tree-leaf.18f2d847.js +0 -2
- package/dist/chunks/eo-directory-tree-leaf.18f2d847.js.map +0 -1
- package/dist/chunks/eo-directory-tree.73e83674.js +0 -3
- package/dist/chunks/eo-directory-tree.73e83674.js.map +0 -1
- package/dist/chunks/eo-directory.a271465b.js +0 -3
- package/dist/chunks/eo-directory.a271465b.js.map +0 -1
- package/dist/chunks/eo-launchpad-button-v2.e035fd94.js +0 -3
- package/dist/chunks/eo-launchpad-button-v2.e035fd94.js.map +0 -1
- package/dist/chunks/eo-launchpad-button.ee733f67.js +0 -3
- package/dist/chunks/eo-launchpad-button.ee733f67.js.map +0 -1
- package/dist/chunks/eo-launchpad-quick-access.b7dc8eea.js +0 -3
- package/dist/chunks/eo-launchpad-quick-access.b7dc8eea.js.map +0 -1
- package/dist/chunks/eo-launchpad-recent-visits.dad50d61.js.map +0 -1
- package/dist/chunks/eo-search-launchpad.877d14b1.js +0 -2
- package/dist/chunks/eo-search-launchpad.877d14b1.js.map +0 -1
- package/dist/chunks/eo-sidebar-menu-item.aa1f6f66.js +0 -2
- package/dist/chunks/eo-sidebar-menu-item.aa1f6f66.js.map +0 -1
- package/dist/chunks/eo-sidebar-menu-submenu.5308ee43.js +0 -3
- package/dist/chunks/eo-sidebar-menu-submenu.5308ee43.js.map +0 -1
- package/dist/chunks/eo-sidebar-sub-menu.d8255f31.js.map +0 -1
- package/dist/chunks/eo-sidebar.ed2833ef.js +0 -3
- package/dist/chunks/eo-sidebar.ed2833ef.js.map +0 -1
- package/dist/chunks/launchpad-config.1c537f55.js +0 -3
- package/dist/chunks/launchpad-config.1c537f55.js.map +0 -1
- package/dist/chunks/query-search.1f1900d6.js.map +0 -1
- package/dist/index.4abc895c.js +0 -2
- /package/dist/chunks/{eo-app-bar-wrapper.6fcc11f1.js.LICENSE.txt → eo-app-bar-wrapper.743025bd.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{eo-directory-tree.73e83674.js.LICENSE.txt → eo-directory-tree.2ba780f8.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{eo-directory.a271465b.js.LICENSE.txt → eo-directory.a0e99853.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{eo-launchpad-button-v2.e035fd94.js.LICENSE.txt → eo-launchpad-button-v2.aa05077e.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{eo-launchpad-button.ee733f67.js.LICENSE.txt → eo-launchpad-button.b8b7bcff.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{eo-launchpad-quick-access.b7dc8eea.js.LICENSE.txt → eo-launchpad-quick-access.b0a48525.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{eo-launchpad-recent-visits.dad50d61.js.LICENSE.txt → eo-launchpad-recent-visits.1a7c6e2c.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{eo-sidebar-menu-group.66decf41.js.LICENSE.txt → eo-sidebar-menu-group.01ac76d3.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{eo-sidebar-menu-submenu.5308ee43.js.LICENSE.txt → eo-sidebar-menu-submenu.5cb414f6.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{eo-sidebar-sub-menu.d8255f31.js.LICENSE.txt → eo-sidebar-sub-menu.70c71ea9.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{eo-sidebar.ed2833ef.js.LICENSE.txt → eo-sidebar.ad2491ee.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{launchpad-config.1c537f55.js.LICENSE.txt → launchpad-config.bd938fce.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{poll-announce.e1c07541.js.LICENSE.txt → poll-announce.bb9bd6d1.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{query-search.1f1900d6.js.LICENSE.txt → query-search.0c3c3518.js.LICENSE.txt} +0 -0
package/dist/types.json
CHANGED
|
@@ -4,6 +4,59 @@
|
|
|
4
4
|
"events": [],
|
|
5
5
|
"methods": []
|
|
6
6
|
},
|
|
7
|
+
"eo-app-bar-wrapper": {
|
|
8
|
+
"properties": [
|
|
9
|
+
{
|
|
10
|
+
"name": "isFixed",
|
|
11
|
+
"annotation": {
|
|
12
|
+
"type": "keyword",
|
|
13
|
+
"value": "boolean"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"name": "position",
|
|
18
|
+
"annotation": {
|
|
19
|
+
"type": "union",
|
|
20
|
+
"types": [
|
|
21
|
+
{
|
|
22
|
+
"type": "jsLiteral",
|
|
23
|
+
"value": "static"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"type": "jsLiteral",
|
|
27
|
+
"value": "fixed"
|
|
28
|
+
}
|
|
29
|
+
]
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"name": "displayCenter",
|
|
34
|
+
"annotation": {
|
|
35
|
+
"type": "keyword",
|
|
36
|
+
"value": "boolean"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"name": "extraAppBarContentStyle",
|
|
41
|
+
"annotation": {
|
|
42
|
+
"type": "reference",
|
|
43
|
+
"typeName": {
|
|
44
|
+
"type": "qualifiedName",
|
|
45
|
+
"left": {
|
|
46
|
+
"type": "identifier",
|
|
47
|
+
"name": "React"
|
|
48
|
+
},
|
|
49
|
+
"right": {
|
|
50
|
+
"type": "identifier",
|
|
51
|
+
"name": "CSSProperties"
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
"events": [],
|
|
58
|
+
"methods": []
|
|
59
|
+
},
|
|
7
60
|
"eo-frame-breadcrumb": {
|
|
8
61
|
"properties": [
|
|
9
62
|
{
|
|
@@ -92,59 +145,6 @@
|
|
|
92
145
|
}
|
|
93
146
|
]
|
|
94
147
|
},
|
|
95
|
-
"eo-app-bar-wrapper": {
|
|
96
|
-
"properties": [
|
|
97
|
-
{
|
|
98
|
-
"name": "isFixed",
|
|
99
|
-
"annotation": {
|
|
100
|
-
"type": "keyword",
|
|
101
|
-
"value": "boolean"
|
|
102
|
-
}
|
|
103
|
-
},
|
|
104
|
-
{
|
|
105
|
-
"name": "position",
|
|
106
|
-
"annotation": {
|
|
107
|
-
"type": "union",
|
|
108
|
-
"types": [
|
|
109
|
-
{
|
|
110
|
-
"type": "jsLiteral",
|
|
111
|
-
"value": "static"
|
|
112
|
-
},
|
|
113
|
-
{
|
|
114
|
-
"type": "jsLiteral",
|
|
115
|
-
"value": "fixed"
|
|
116
|
-
}
|
|
117
|
-
]
|
|
118
|
-
}
|
|
119
|
-
},
|
|
120
|
-
{
|
|
121
|
-
"name": "displayCenter",
|
|
122
|
-
"annotation": {
|
|
123
|
-
"type": "keyword",
|
|
124
|
-
"value": "boolean"
|
|
125
|
-
}
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
"name": "extraAppBarContentStyle",
|
|
129
|
-
"annotation": {
|
|
130
|
-
"type": "reference",
|
|
131
|
-
"typeName": {
|
|
132
|
-
"type": "qualifiedName",
|
|
133
|
-
"left": {
|
|
134
|
-
"type": "identifier",
|
|
135
|
-
"name": "React"
|
|
136
|
-
},
|
|
137
|
-
"right": {
|
|
138
|
-
"type": "identifier",
|
|
139
|
-
"name": "CSSProperties"
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
],
|
|
145
|
-
"events": [],
|
|
146
|
-
"methods": []
|
|
147
|
-
},
|
|
148
148
|
"eo-sidebar-menu-item": {
|
|
149
149
|
"properties": [
|
|
150
150
|
{
|
|
@@ -564,19 +564,6 @@
|
|
|
564
564
|
"events": [],
|
|
565
565
|
"methods": []
|
|
566
566
|
},
|
|
567
|
-
"eo-search-launchpad": {
|
|
568
|
-
"properties": [
|
|
569
|
-
{
|
|
570
|
-
"name": "readonly",
|
|
571
|
-
"annotation": {
|
|
572
|
-
"type": "keyword",
|
|
573
|
-
"value": "boolean"
|
|
574
|
-
}
|
|
575
|
-
}
|
|
576
|
-
],
|
|
577
|
-
"events": [],
|
|
578
|
-
"methods": []
|
|
579
|
-
},
|
|
580
567
|
"eo-launchpad-recent-visits": {
|
|
581
568
|
"properties": [
|
|
582
569
|
{
|
|
@@ -1191,6 +1178,19 @@
|
|
|
1191
1178
|
}
|
|
1192
1179
|
]
|
|
1193
1180
|
},
|
|
1181
|
+
"eo-search-launchpad": {
|
|
1182
|
+
"properties": [
|
|
1183
|
+
{
|
|
1184
|
+
"name": "readonly",
|
|
1185
|
+
"annotation": {
|
|
1186
|
+
"type": "keyword",
|
|
1187
|
+
"value": "boolean"
|
|
1188
|
+
}
|
|
1189
|
+
}
|
|
1190
|
+
],
|
|
1191
|
+
"events": [],
|
|
1192
|
+
"methods": []
|
|
1193
|
+
},
|
|
1194
1194
|
"eo-sidebar-menu-group": {
|
|
1195
1195
|
"properties": [
|
|
1196
1196
|
{
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare enum K {
|
|
2
|
+
SEARCH_PLACEHOLDER = "SEARCH_PLACEHOLDER"
|
|
3
|
+
}
|
|
4
|
+
export declare const NS = "bricks/nav/search-launchpad";
|
|
5
|
+
export declare const locales: {
|
|
6
|
+
en: Locale;
|
|
7
|
+
zh: Locale;
|
|
8
|
+
};
|
|
9
|
+
type Locale = {
|
|
10
|
+
[k in K]: string;
|
|
11
|
+
} & {
|
|
12
|
+
[k in K as `${k}_plural`]?: string;
|
|
13
|
+
};
|
|
14
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@next-bricks/nav",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.25.0",
|
|
4
4
|
"homepage": "https://github.com/easyops-cn/next-advanced-bricks/tree/master/bricks/nav",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"postpublish": "mv package.json.bak package.json"
|
|
36
36
|
},
|
|
37
37
|
"devDependencies": {
|
|
38
|
-
"@next-core/build-next-bricks": "^1.
|
|
38
|
+
"@next-core/build-next-bricks": "^1.24.0",
|
|
39
39
|
"@next-core/test-next": "^2.0.1"
|
|
40
40
|
},
|
|
41
41
|
"peerDependencies": {
|
|
@@ -43,5 +43,5 @@
|
|
|
43
43
|
"@next-bricks/form": "*",
|
|
44
44
|
"@next-bricks/icons": "*"
|
|
45
45
|
},
|
|
46
|
-
"gitHead": "
|
|
46
|
+
"gitHead": "d3e184b3dd4598205e31cbed32598d7f6ad1dbf8"
|
|
47
47
|
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";(globalThis.webpackChunk_next_bricks_nav=globalThis.webpackChunk_next_bricks_nav||[]).push([[2133],{403:(e,t,n)=>{n.d(t,{I:()=>i,K:()=>o,NS:()=>s,t:()=>r});var a=n(8443);let o=function(e){return e.ALL="ALL",e.QUICK_ACCESS="QUICK_ACCESS",e.PLATFORM_BASE="PLATFORM_BASE",e.SCENARIO_CENTER="SCENARIO_CENTER",e.SOLUTIONS="SOLUTIONS",e.OPEN_PLATFORM="OPEN_PLATFORM",e.SEARCH_PLACEHOLDER="SEARCH_PLACEHOLDER",e.RECENT_VISITS="RECENT_VISITS",e.FAVORITE="FAVORITE",e.UNFAVORITE="UNFAVORITE",e.FAVORITES_LIMIT_REACHED="FAVORITES_LIMIT_REACHED",e.FAVORITES_LIMIT_MESSAGE="FAVORITES_LIMIT_MESSAGE",e}({});const s="bricks/nav/launchpad-button-v2",i={en:{ALL:"All",QUICK_ACCESS:"Quick Access",PLATFORM_BASE:"Platform Base",SCENARIO_CENTER:"Scenario Center",SOLUTIONS:"Solutions",OPEN_PLATFORM:"Open Platform",SEARCH_PLACEHOLDER:"Search by keyword",RECENT_VISITS:"Recent Visits",FAVORITE:"Favorite",UNFAVORITE:"Unfavorite",FAVORITES_LIMIT_REACHED:"Favorites Limit Reached",FAVORITES_LIMIT_MESSAGE:"Current favorites count has reached the limit ({{count}} items). Please remove some favorites before adding new ones."},zh:{ALL:"全部",QUICK_ACCESS:"快捷访问",PLATFORM_BASE:"平台底座",SCENARIO_CENTER:"场景中心",SOLUTIONS:"解决方案",OPEN_PLATFORM:"开放平台",SEARCH_PLACEHOLDER:"通过关键字搜索",RECENT_VISITS:"最近访问",FAVORITE:"收藏",UNFAVORITE:"取消收藏",FAVORITES_LIMIT_REACHED:"收藏数量已达上限",FAVORITES_LIMIT_MESSAGE:"当前收藏链接数量已达上限({{count}}个),请删除部分收藏后再添加。"}},r=a.i18n.getFixedT(null,s)},2133:(e,t,n)=>{n.d(t,{fm:()=>M,ir:()=>N,pU:()=>b,sZ:()=>V});var a=n(8769),o=n(1921),s=n(5507),i=n(7137),r=n(8002),c=n(4864),l=n(9393),u=n(403),p=n(3346),d=n(7296),m=n(2824),I=n(2887),f=n(8406),h=n(1030);const E=10,A=10;var S,y=n(6659);async function v(){return(await(0,d.K)({page:1,pageSize:E},{interceptorParams:{ignoreLoadingBar:!0},noAbortOnRouteChange:!0})).list}function R(e,t){const{id:n,name:a,localeName:o,description:s}=e;return[n,a,o,s].some((e=>null==e?void 0:e.toLowerCase().includes(t)))?e:null}(0,r.initializeReactI18n)(u.NS,u.I),(0,r.initializeReactI18n)(u.NS,u.I);const T=`launchpad-recent-visits:${null===(S=s.auth.getAuth())||void 0===S?void 0:S.org}`,g=new i.G(localStorage);let C=[],_=new Map,O=new Map,F=!1,L=[],w=!1,k=[],P=!1;const N=new c.x((async()=>{({menuGroups:C,microAppsById:_,customLinksById:O}=await async function(){var e;const t=await(0,p.i)({},{interceptorParams:{ignoreLoadingBar:!0},noAbortOnRouteChange:!0}),n=new Map;for(const e of t.storyboards){var a;const t=e.app;t.localeName=(0,y.y)(t.locales,t.name),null!==(a=s.auth.isBlockedPath)&&void 0!==a&&a.call(s.auth,t.homepage)||n.set(t.id,t)}const o=[],i=new Map;for(const a of t.desktops){const t=[];for(const o of a.items)switch(o.localeName=(0,y.y)(o.locales,o.name),o.type){case"app":{const e=n.get(o.id);e&&t.push({...o,url:e.homepage});break}case"custom":null!==(e=s.auth.isBlockedHref)&&void 0!==e&&e.call(s.auth,o.url)||(t.push(o),i.set(o.id,o));break;case"dir":{const e=[];for(const t of o.items){var r;if(t.localeName=(0,y.y)(t.locales,t.name),"app"===t.type){const a=n.get(t.id);a&&e.push({...t,url:a.homepage})}else"custom"!==t.type||null!==(r=s.auth.isBlockedHref)&&void 0!==r&&r.call(s.auth,t.url)||(e.push(t),i.set(t.id,t))}e.length>0&&t.push({...o,items:e});break}}t.length>0&&(a.localeName=(0,y.y)(a.locales,a.name),o.push({...a,items:t}))}return{menuGroups:o,microAppsById:n,customLinksById:i}}()),F=!0})),M=new c.x((async()=>{L=await async function(){const e=await v(),t=[];for(const n of e)if("microApp"===n.type){const e=n.relatedApp,a=(0,y.y)(e.locales,e.name);t.push({favoriteId:n.instanceId,type:"app",name:a,id:e.appId,url:e.homepage,instanceId:e.instanceId,menuIcon:e.menuIcon})}else if("customItem"===n.type){const e=n.relatedCustomItem,a=(0,y.y)(e.locales,e.name);t.push({favoriteId:n.instanceId,type:"custom",name:a,id:e.id,url:e.url,menuIcon:e.menuIcon})}else"link"===n.type&&t.push({favoriteId:n.instanceId,type:"link",name:n.name,url:n.link,menuIcon:n.icon});return t}(),w=!0})),b=new c.x((async()=>{k=await async function(){const e=(await(0,f.y)("MICRO_APP_CATEGORY@EASYOPS",{fields:["id","type","name","locales","icon","order","platformApps.appId","platformApps.name","platformApps.locales","platformApps.homepage","platformApps.description","platformApps.menuIcon","platformApps._object_id","platformApps.@.order","platformItems.id","platformItems.name","platformItems.locales","platformItems.url","platformItems.description","platformItems.menuIcon","platformItems._object_id","platformItems.@.order"],page:1,page_size:300,query:{type:"platform"}})).list,t=null==e?void 0:e.map((e=>{const t=e.platformApps.map((e=>{var t,n;return null!==(t=s.auth.isBlockedPath)&&void 0!==t&&t.call(s.auth,e.homepage)?null:{type:"app",name:(0,y.y)(e.locales,e.name),id:e.appId,url:e.homepage,menuIcon:e.menuIcon,description:e.description,instanceId:e.instanceId,order:null===(n=e["@"])||void 0===n?void 0:n.order}})).filter(Boolean),n=e.platformItems.map((e=>{var t,n;return null!==(t=s.auth.isBlockedHref)&&void 0!==t&&t.call(s.auth,e.url)?null:{type:"custom",name:(0,y.y)(e.locales,e.name),id:e.id,url:e.url,menuIcon:e.menuIcon,description:e.description,instanceId:e.instanceId,order:null===(n=e["@"])||void 0===n?void 0:n.order}})).filter(Boolean),a=(0,h.sortBy)([...t,...n],"order");return{instanceId:e.instanceId,id:e.id,name:(0,y.y)(e.locales,e.name),icon:e.icon,order:e.order,items:a}}));return[{id:"#all",name:(0,u.t)(u.K.ALL),icon:{lib:"easyops",category:"second-menu",icon:"sprint-planning-second-menu"},items:[]},...(0,h.sortBy)(t,"order")]}(),P=!0})),B=e=>(0,l.Ds)({type:"error",message:(0,o.httpErrorToString)(e)});function V(e){const{t}=(0,r.useTranslation)(u.NS),[n,s]=(0,a.useState)(C),[i,c]=(0,a.useState)(_),[p,d]=(0,a.useState)(O),[f,h]=(0,a.useState)(""),[S,y]=(0,a.useState)(!F),[V,U]=(0,a.useState)(!w),[D,x]=(0,a.useState)(!P),[G,K]=(0,a.useState)([]),[Q,j]=(0,a.useState)([]),[z,q]=(0,a.useState)(L),[Y,Z]=(0,a.useState)(k);(0,a.useEffect)((()=>{e&&!S&&(s(C),c(_),d(O))}),[e,S]),(0,a.useEffect)((()=>{e&&!V&&q(L)}),[e,V]),(0,a.useEffect)((()=>{e&&!D&&Z(k)}),[e,D]),(0,a.useEffect)((()=>{var t;e&&K(null!==(t=g.getItem(T))&&void 0!==t?t:[])}),[e]),(0,a.useEffect)((()=>{e&&(async()=>{try{await N.fetch(),y(!1)}catch(e){(0,o.handleHttpError)(e)}})()}),[e]),(0,a.useEffect)((()=>{e&&(async()=>{try{await M.fetch(),U(!1)}catch(e){U(!1),B(e)}})()}),[e]),(0,a.useEffect)((()=>{var t;e&&null!==(t=(0,o.getRuntime)())&&void 0!==t&&t.getFeatureFlags()["launchpad-show-platform-category"]&&(async()=>{try{await b.fetch(),x(!1)}catch(e){x(!1),B(e)}})()}),[e]),(0,a.useEffect)((()=>{if(S)return;const e=G.map((e=>{if("app"===e.type){const t=i.get(e.id);return t?{type:"app",name:t.localeName,id:t.id,url:t.homepage,instanceId:t.instanceId,menuIcon:t.menuIcon}:null}const t=p.get(e.id);return t?{...t,name:t.localeName}:null})).filter(Boolean);j(e)}),[p,S,i,G]);const $=(0,a.useCallback)((e=>{var t;let{type:n,id:a}=e;const o=null!==(t=g.getItem(T))&&void 0!==t?t:[],s=o.findIndex((e=>e.type===n&&e.id===a));s>-1&&o.splice(s,1),o.unshift({type:n,id:a}),o.length>A&&o.pop(),g.setItem(T,o)}),[]),J=(0,a.useCallback)((e=>z.some((t=>H(e,t)))),[z]),W=(0,a.useCallback)((e=>{const n=z.findIndex((t=>"link"===e.type?t.favoriteId===e.favoriteId:H(e,t)));let a;if(n>-1){const e=z[n];a=z.slice(0,n).concat(z.slice(n+1)),async function(e){return e.favoriteId?(0,I.r)(e.favoriteId):v().then((t=>{var n;const a=null===(n=t.find((t=>{var n,a;return"app"===e.type?"microApp"===t.type&&(null===(n=t.relatedApp)||void 0===n?void 0:n.appId)===e.id:"custom"===e.type&&(null===(a=t.relatedCustomItem)||void 0===a?void 0:a.id)===e.id})))||void 0===n?void 0:n.instanceId;if(a)return(0,I.r)(a);console.error("Menu item to unstar not found:",e)}))}(e).catch(B)}else{if(z.length>=E)return void(0,l.ui)({type:"warn",title:t(u.K.FAVORITES_LIMIT_REACHED),content:t(u.K.FAVORITES_LIMIT_MESSAGE,{count:E})});const n={...e};a=z.concat(n),async function(e){return(0,m.k)({type:"app"===e.type?"microApp":"customItem",relatedInstanceId:e.instanceId},{interceptorParams:{ignoreLoadingBar:!0}})}(e).then((e=>{e&&(n.favoriteId=e.instanceId)}),B)}q(a),L=a}),[z]),X=(0,a.useMemo)((()=>function(e,t){if(!t)return e;const n=t.toLowerCase();return e.map((e=>({...e,items:e.items.map((e=>{switch(e.type){case"app":case"custom":return R(e,n);case"dir":{const t=e.items.map((e=>"app"===e.type||"custom"===e.type?R(e,n):null)).filter(Boolean);return t.length>0?{...e,items:t}:null}}})).filter(Boolean)}))).filter((e=>e.items.length>0))}(n,f)),[n,f]),ee=(0,a.useMemo)((()=>function(e,t){if(!t)return e;const n=t.toLowerCase();return e.map((e=>({...e,items:e.items.map((e=>{switch(e.type){case"app":case"custom":return R(e,n)}})).filter(Boolean)})))}(Y,f)),[Y,f]);return{loading:S,q:f,setQ:h,menuGroups:X,loadingFavorites:V,loadingPlatformCategories:D,favorites:z,recentVisits:Q,pushRecentVisit:$,isStarred:J,toggleStar:W,platformCategories:ee}}function H(e,t){return e.instanceId&&t.instanceId?t.instanceId===e.instanceId:t.type===e.type&&t.id===e.id}},4864:(e,t,n)=>{n.d(t,{x:()=>o});var a=n(4586);class o{constructor(e){(0,a.A)(this,"preFetchId",null),(0,a.A)(this,"preFetchScheduled",!1),(0,a.A)(this,"firstFetchPromise",null),(0,a.A)(this,"isFetching",!1),(0,a.A)(this,"task",void 0),this.task=e}schedulePrefetch(){if(!this.preFetchScheduled){this.preFetchScheduled=!0;const e=async()=>{this.preFetchId=null,this.fetch()};"function"==typeof window.requestIdleCallback?this.preFetchId=window.requestIdleCallback(e):this.preFetchId=setTimeout(e)}}fetch(e){let t;return this.preFetchId&&("function"==typeof window.cancelIdleCallback?cancelIdleCallback(this.preFetchId):clearTimeout(this.preFetchId),this.preFetchId=null),this.isFetching&&!e||(this.isFetching=!0,t=this.task(),t.catch((e=>{console.error(e),this.firstFetchPromise=null})).finally((()=>{this.isFetching=!1})),this.firstFetchPromise||(this.firstFetchPromise=t),!e)?this.firstFetchPromise:t}}},6659:(e,t,n)=>{n.d(t,{y:()=>o});var a=n(8443);function o(e,t){var n;if(!e)return t;const o=Object.fromEntries(Object.entries(e).filter((e=>{let[t,n]=e;return n.name})).map((e=>{let[t,n]=e;return[t,n.name]})));return null!==(n=(0,a.i18nText)(o))&&void 0!==n?n:t}},9393:(e,t,n)=>{n.d(t,{Bj:()=>s,Ds:()=>c,EM:()=>i,ui:()=>r});var a=n(981),o=n(9936);const s=(0,a.wrapBrick)("eo-icon"),i=(0,a.wrapBrick)("eo-link"),r=(0,o.unwrapProvider)("basic.show-dialog"),c=(0,o.unwrapProvider)("basic.show-notification")}}]);
|
|
2
|
-
//# sourceMappingURL=2133.7a40ebb2.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/2133.7a40ebb2.js","mappings":"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","sources":["webpack:///./src/launchpad-button-v2/i18n.ts","webpack:///./src/launchpad-button-v2/constants.ts","webpack:///./src/launchpad-button-v2/api.ts","webpack:///./src/launchpad-button-v2/search.ts","webpack:///./src/launchpad-button-v2/useLaunchpadInfo.ts","webpack:///./src/shared/DeferredService.ts","webpack:///./src/shared/getLocaleName.ts","webpack:///./src/launchpad-button-v2/wrapped-bricks.ts"],"sourcesContent":["import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n ALL = \"ALL\",\n QUICK_ACCESS = \"QUICK_ACCESS\",\n PLATFORM_BASE = \"PLATFORM_BASE\",\n SCENARIO_CENTER = \"SCENARIO_CENTER\",\n SOLUTIONS = \"SOLUTIONS\",\n OPEN_PLATFORM = \"OPEN_PLATFORM\",\n SEARCH_PLACEHOLDER = \"SEARCH_PLACEHOLDER\",\n RECENT_VISITS = \"RECENT_VISITS\",\n FAVORITE = \"FAVORITE\",\n UNFAVORITE = \"UNFAVORITE\",\n FAVORITES_LIMIT_REACHED = \"FAVORITES_LIMIT_REACHED\",\n FAVORITES_LIMIT_MESSAGE = \"FAVORITES_LIMIT_MESSAGE\",\n}\n\nconst en: Locale = {\n ALL: \"All\",\n QUICK_ACCESS: \"Quick Access\",\n PLATFORM_BASE: \"Platform Base\",\n SCENARIO_CENTER: \"Scenario Center\",\n SOLUTIONS: \"Solutions\",\n OPEN_PLATFORM: \"Open Platform\",\n SEARCH_PLACEHOLDER: \"Search by keyword\",\n RECENT_VISITS: \"Recent Visits\",\n FAVORITE: \"Favorite\",\n UNFAVORITE: \"Unfavorite\",\n FAVORITES_LIMIT_REACHED: \"Favorites Limit Reached\",\n FAVORITES_LIMIT_MESSAGE:\n \"Current favorites count has reached the limit ({{count}} items). Please remove some favorites before adding new ones.\",\n};\n\nconst zh: Locale = {\n ALL: \"全部\",\n QUICK_ACCESS: \"快捷访问\",\n PLATFORM_BASE: \"平台底座\",\n SCENARIO_CENTER: \"场景中心\",\n SOLUTIONS: \"解决方案\",\n OPEN_PLATFORM: \"开放平台\",\n SEARCH_PLACEHOLDER: \"通过关键字搜索\",\n RECENT_VISITS: \"最近访问\",\n FAVORITE: \"收藏\",\n UNFAVORITE: \"取消收藏\",\n FAVORITES_LIMIT_REACHED: \"收藏数量已达上限\",\n FAVORITES_LIMIT_MESSAGE:\n \"当前收藏链接数量已达上限({{count}}个),请删除部分收藏后再添加。\",\n};\n\nexport const NS = \"bricks/nav/launchpad-button-v2\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","export const FAVORITES_LIMIT = 10;\nexport const RECENT_VISITS_LIMIT = 10;\n","import type { AppLocales, Storyboard } from \"@next-core/types\";\nimport { LaunchpadApi_getLaunchpadInfo } from \"@next-api-sdk/micro-app-standalone-sdk\";\nimport {\n LaunchpadApi_createCollectionV2,\n LaunchpadApi_deleteCollectionV2,\n LaunchpadApi_listCollectionV2,\n UserServiceModels,\n} from \"@next-api-sdk/user-service-sdk\";\nimport { InstanceApi_postSearchV3 } from \"@next-api-sdk/cmdb-sdk\";\nimport { sortBy } from \"lodash\";\nimport { auth } from \"@next-core/easyops-runtime\";\nimport { initializeReactI18n } from \"@next-core/i18n/react\";\nimport type {\n FavMenuItem,\n MenuGroupData,\n MenuItemData,\n MenuItemDataApp,\n MenuItemDataCustom,\n MenuItemDataDir,\n MenuItemDataNormal,\n MicroAppWithInstanceId,\n PlatformCategoryItem,\n} from \"./interfaces\";\nimport { FAVORITES_LIMIT } from \"./constants\";\nimport { getLocaleName } from \"../shared/getLocaleName\";\nimport { K, NS, t, locales } from \"./i18n\";\n\ninitializeReactI18n(NS, locales);\n\nexport async function fetchLaunchpadInfo() {\n const launchpadInfo = await LaunchpadApi_getLaunchpadInfo(\n {},\n {\n interceptorParams: { ignoreLoadingBar: true },\n noAbortOnRouteChange: true,\n }\n );\n\n const microAppsById = new Map<string, MicroAppWithInstanceId>();\n for (const storyboard of launchpadInfo.storyboards as Storyboard[]) {\n const app = storyboard.app as unknown as MicroAppWithInstanceId;\n app.localeName = getLocaleName(app.locales, app.name);\n if (!auth.isBlockedPath?.(app.homepage)) {\n microAppsById.set(app.id, app);\n }\n }\n\n const menuGroups: MenuGroupData[] = [];\n const customLinksById = new Map<string, MenuItemDataCustom>();\n\n for (const group of launchpadInfo.desktops as unknown as MenuGroupData[]) {\n const items: MenuItemData[] = [];\n for (const item of group.items) {\n item.localeName = getLocaleName(item.locales, item.name);\n switch (item.type) {\n case \"app\": {\n const app = microAppsById.get(item.id);\n if (app) {\n items.push({\n ...item,\n url: app.homepage,\n } as MenuItemDataApp);\n }\n break;\n }\n case \"custom\":\n if (!auth.isBlockedHref?.(item.url)) {\n items.push(item);\n customLinksById.set(item.id, item);\n }\n break;\n case \"dir\": {\n const subItems: MenuItemDataNormal[] = [];\n for (const subItem of item.items) {\n subItem.localeName = getLocaleName(subItem.locales, subItem.name);\n if (subItem.type === \"app\") {\n const app = microAppsById.get(subItem.id);\n if (app) {\n subItems.push({\n ...subItem,\n url: app.homepage,\n } as MenuItemDataApp);\n }\n } else if (\n subItem.type === \"custom\" &&\n !auth.isBlockedHref?.(subItem.url)\n ) {\n subItems.push(subItem as MenuItemDataCustom);\n customLinksById.set(subItem.id, subItem);\n }\n }\n if (subItems.length > 0) {\n items.push({\n ...item,\n items: subItems,\n } as MenuItemDataDir);\n }\n break;\n }\n }\n }\n if (items.length > 0) {\n group.localeName = getLocaleName(group.locales, group.name);\n menuGroups.push({ ...group, items });\n }\n }\n\n return { menuGroups, microAppsById, customLinksById };\n}\n\nasync function fetchRawFavorites() {\n return (\n await LaunchpadApi_listCollectionV2(\n { page: 1, pageSize: FAVORITES_LIMIT },\n {\n interceptorParams: { ignoreLoadingBar: true },\n noAbortOnRouteChange: true,\n }\n )\n ).list;\n}\n\nexport async function fetchFavorites() {\n const list = await fetchRawFavorites();\n const stored: FavMenuItem[] = [];\n // 不屏蔽收藏夹中的任何项,否则无法取消收藏\n for (const fav of list) {\n if (fav.type === \"microApp\") {\n const app = fav.relatedApp as Omit<MicroAppWithInstanceId, \"id\"> & {\n appId: string;\n };\n const localeName = getLocaleName(app.locales, app.name);\n stored.push({\n favoriteId: fav.instanceId,\n type: \"app\",\n name: localeName,\n id: app.appId,\n url: app.homepage,\n instanceId: app.instanceId,\n menuIcon: app.menuIcon,\n } as FavMenuItem);\n } else if (fav.type === \"customItem\") {\n const customItem = fav.relatedCustomItem!;\n const localeName = getLocaleName(\n (\n customItem as UserServiceModels.ModelLaunchpadCollectionV2_relatedCustomItem & {\n locales?: AppLocales;\n }\n ).locales,\n customItem.name\n );\n stored.push({\n favoriteId: fav.instanceId,\n type: \"custom\",\n name: localeName,\n id: customItem.id,\n url: customItem.url,\n menuIcon: customItem.menuIcon,\n } as FavMenuItem);\n } else if (fav.type === \"link\") {\n stored.push({\n favoriteId: fav.instanceId,\n type: \"link\",\n name: fav.name,\n // id: fav.id,\n url: fav.link,\n menuIcon: fav.icon,\n } as FavMenuItem);\n }\n }\n return stored;\n}\n\nexport async function favorite(\n item: MenuItemDataNormal\n): Promise<{ instanceId?: string }> {\n return LaunchpadApi_createCollectionV2(\n {\n type: item.type === \"app\" ? \"microApp\" : \"customItem\",\n relatedInstanceId: item.instanceId,\n },\n {\n interceptorParams: { ignoreLoadingBar: true },\n }\n );\n}\n\nexport async function undoFavorite(item: FavMenuItem) {\n if (item.favoriteId) {\n return LaunchpadApi_deleteCollectionV2(item.favoriteId);\n }\n\n return fetchRawFavorites().then((list) => {\n const foundId = list.find((fav) =>\n item.type === \"app\"\n ? fav.type === \"microApp\" && fav.relatedApp?.appId === item.id\n : item.type === \"custom\" && fav.relatedCustomItem?.id === item.id\n )?.instanceId;\n\n if (foundId) {\n return LaunchpadApi_deleteCollectionV2(foundId);\n }\n // eslint-disable-next-line no-console\n console.error(\"Menu item to unstar not found:\", item);\n });\n}\n\nexport async function fetchPlatformCategories(): Promise<\n PlatformCategoryItem[]\n> {\n const categories = (\n await InstanceApi_postSearchV3(\"MICRO_APP_CATEGORY@EASYOPS\", {\n fields: [\n \"id\",\n \"type\",\n \"name\",\n \"locales\",\n \"icon\",\n \"order\",\n \"platformApps.appId\",\n \"platformApps.name\",\n \"platformApps.locales\",\n \"platformApps.homepage\",\n \"platformApps.description\",\n \"platformApps.menuIcon\",\n \"platformApps._object_id\",\n \"platformApps.@.order\",\n \"platformItems.id\",\n \"platformItems.name\",\n \"platformItems.locales\",\n \"platformItems.url\",\n \"platformItems.description\",\n \"platformItems.menuIcon\",\n \"platformItems._object_id\",\n \"platformItems.@.order\",\n ],\n page: 1,\n page_size: 300,\n query: {\n type: \"platform\",\n },\n })\n ).list;\n\n const _categories = categories?.map((category) => {\n const apps = category.platformApps\n .map((app: Record<string, any>) => {\n if (auth.isBlockedPath?.(app.homepage)) {\n return null;\n }\n return {\n type: \"app\",\n name: getLocaleName(app.locales, app.name),\n id: app.appId,\n url: app.homepage,\n menuIcon: app.menuIcon,\n description: app.description,\n instanceId: app.instanceId,\n order: app[\"@\"]?.order,\n };\n })\n .filter(Boolean) as MenuItemDataApp[];\n const customItems = category.platformItems\n .map((item: Record<string, any>) => {\n if (auth.isBlockedHref?.(item.url)) {\n return null;\n }\n return {\n type: \"custom\",\n name: getLocaleName(item.locales, item.name),\n id: item.id,\n url: item.url,\n menuIcon: item.menuIcon,\n description: item.description,\n instanceId: item.instanceId,\n order: item[\"@\"]?.order,\n };\n })\n .filter(Boolean) as MenuItemDataCustom[];\n\n const items = sortBy([...apps, ...customItems], \"order\");\n return {\n instanceId: category.instanceId,\n id: category.id,\n name: getLocaleName(category.locales, category.name),\n icon: category.icon,\n order: category.order,\n items,\n } as PlatformCategoryItem;\n });\n\n return [\n {\n id: \"#all\",\n name: t(K.ALL),\n icon: {\n lib: \"easyops\",\n category: \"second-menu\",\n icon: \"sprint-planning-second-menu\",\n },\n items: [],\n },\n ...sortBy(_categories, \"order\"),\n ];\n}\n","import type {\n MenuGroupData,\n MenuItemData,\n MenuItemDataApp,\n MenuItemDataCustom,\n MenuItemDataNormal,\n PlatformCategoryItem,\n} from \"./interfaces\";\n\nexport function search(\n allMenuGroups: MenuGroupData[],\n q: string\n): MenuGroupData[] {\n if (!q) {\n return allMenuGroups;\n }\n const lowerQ = q.toLowerCase();\n const groups: MenuGroupData[] = allMenuGroups\n .map((group) => ({\n ...group,\n items: group.items\n .map((item) => {\n switch (item.type) {\n case \"app\":\n return matchMenuItem<MenuItemDataApp>(item, lowerQ);\n case \"custom\":\n return matchMenuItem<MenuItemDataCustom>(item, lowerQ);\n case \"dir\": {\n const filteredSubItems = item.items\n .map((sub) =>\n sub.type === \"app\"\n ? matchMenuItem<MenuItemDataApp>(sub, lowerQ)\n : sub.type === \"custom\"\n ? matchMenuItem<MenuItemDataCustom>(sub, lowerQ)\n : null\n )\n .filter(Boolean) as MenuItemData[];\n return filteredSubItems.length > 0\n ? {\n ...item,\n items: filteredSubItems,\n }\n : null;\n }\n }\n })\n // Ignore not matched items\n .filter(Boolean) as MenuItemData[],\n }))\n // ignore empty desktops\n .filter((group) => group.items.length > 0);\n return groups;\n}\n\nexport function searchCategories(\n categories: PlatformCategoryItem[],\n q: string\n): PlatformCategoryItem[] {\n if (!q) {\n return categories;\n }\n\n const lowerQ = q.toLowerCase();\n const _categories = categories.map((category) => ({\n ...category,\n items: category.items\n .map((item) => {\n switch (item.type) {\n case \"app\":\n return matchMenuItem<MenuItemDataApp>(item, lowerQ);\n case \"custom\":\n return matchMenuItem<MenuItemDataCustom>(item, lowerQ);\n }\n })\n // Ignore not matched items\n .filter(Boolean) as MenuItemDataNormal[],\n }));\n return _categories;\n}\n\ntype MenuItemBase = {\n id: string;\n name: string;\n localeName?: string;\n description?: string;\n};\n\nfunction matchMenuItem<T extends MenuItemBase>(\n item: T,\n lowerQ: string\n): T | null {\n const { id, name, localeName, description } = item;\n return [id, name, localeName, description].some((field) =>\n field?.toLowerCase().includes(lowerQ)\n )\n ? item\n : null;\n}\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport {\n getRuntime,\n handleHttpError,\n httpErrorToString,\n} from \"@next-core/runtime\";\nimport { auth } from \"@next-core/easyops-runtime\";\nimport { JsonStorage } from \"@next-shared/general/JsonStorage\";\nimport { initializeReactI18n, useTranslation } from \"@next-core/i18n/react\";\nimport { DeferredService } from \"../shared/DeferredService\";\nimport { showDialog, showNotification } from \"./wrapped-bricks\";\nimport { K, NS, locales } from \"./i18n\";\nimport type {\n FavMenuItem,\n MenuGroupData,\n MenuItemDataCustom,\n MenuItemDataLink,\n MenuItemDataNormal,\n MicroAppWithInstanceId,\n PlatformCategoryItem,\n StoredMenuItem,\n} from \"./interfaces\";\nimport {\n favorite,\n fetchFavorites,\n fetchLaunchpadInfo,\n fetchPlatformCategories,\n undoFavorite,\n} from \"./api\";\nimport { search, searchCategories } from \"./search\";\nimport { FAVORITES_LIMIT, RECENT_VISITS_LIMIT } from \"./constants\";\n\ninitializeReactI18n(NS, locales);\n\nconst storageKey = `launchpad-recent-visits:${\n (auth.getAuth() as Record<string, string>)?.org\n}`;\nconst storage = new JsonStorage(localStorage);\n\nlet candidateDesktops: MenuGroupData[] = [];\nlet candidateMicroAppsById = new Map<string, MicroAppWithInstanceId>();\nlet candidateCustomLinksById = new Map<string, MenuItemDataCustom>();\nlet preLoaded = false;\n\nlet candidateFavorites: FavMenuItem[] = [];\nlet preLoadedFavorites = false;\n\nlet candidatePlatformCategories: PlatformCategoryItem[] = [];\nlet preLoadedPlatformCategories = false;\n\nexport const deferredLaunchpadInfo = new DeferredService(async () => {\n ({\n menuGroups: candidateDesktops,\n microAppsById: candidateMicroAppsById,\n customLinksById: candidateCustomLinksById,\n } = await fetchLaunchpadInfo());\n preLoaded = true;\n});\n\nexport const deferredFavorites = new DeferredService(async () => {\n candidateFavorites = await fetchFavorites();\n preLoadedFavorites = true;\n});\n\nexport const deferredPlatformCategories = new DeferredService(async () => {\n candidatePlatformCategories = await fetchPlatformCategories();\n preLoadedPlatformCategories = true;\n});\n\nconst showErrorAsNotification = (error: unknown) =>\n showNotification({\n type: \"error\",\n message: httpErrorToString(error),\n });\n\n/**\n * - 页面初始化时预加载 launchpad 信息。\n * - 每次打开 launchpad 都发起请求,但该请求的数据只在下次打开 launchpad 时使用。\n * 即每次打开 launchpad 使用的都是上一次获取的数据,以便达到两个效果:\n * - 每次打开 launchpad 都能立即显示菜单列表;\n * - 同时当用户在 launchpad 上操作时,不会出现数据突然更新(新数据请求完成)。\n */\nexport function useLaunchpadInfo(active?: boolean) {\n const { t } = useTranslation(NS);\n const [desktops, setDesktops] = useState(candidateDesktops);\n const [microAppsById, setMicroAppsById] = useState(candidateMicroAppsById);\n const [customLinksById, setCustomLinksById] = useState(\n candidateCustomLinksById\n );\n\n const [q, setQ] = useState(\"\");\n\n const [loading, setLoading] = useState(!preLoaded);\n const [loadingFavorites, setLoadingFavorites] = useState(!preLoadedFavorites);\n const [loadingPlatformCategories, setLoadingPlatformCategories] = useState(\n !preLoadedPlatformCategories\n );\n\n const [storedRecentVisits, setStoredRecentVisits] = useState<\n StoredMenuItem[]\n >([]);\n\n const [recentVisits, setRecentVisits] = useState<MenuItemDataNormal[]>([]);\n\n const [favorites, setFavorites] = useState<FavMenuItem[]>(candidateFavorites);\n const [platformCategories, setPlatformCategories] = useState<\n PlatformCategoryItem[]\n >(candidatePlatformCategories);\n\n useEffect(() => {\n // 仅当首次加载完成或重新打开 launchpad 时更新一次数据。\n if (active && !loading) {\n setDesktops(candidateDesktops);\n setMicroAppsById(candidateMicroAppsById);\n setCustomLinksById(candidateCustomLinksById);\n }\n }, [active, loading]);\n\n useEffect(() => {\n if (active && !loadingFavorites) {\n setFavorites(candidateFavorites);\n }\n }, [active, loadingFavorites]);\n\n useEffect(() => {\n if (active && !loadingPlatformCategories) {\n setPlatformCategories(candidatePlatformCategories);\n }\n }, [active, loadingPlatformCategories]);\n\n useEffect(() => {\n if (active) {\n setStoredRecentVisits(storage.getItem(storageKey) ?? []);\n }\n }, [active]);\n\n useEffect(() => {\n if (active) {\n const startFetchLaunchpadInfo = async (): Promise<void> => {\n try {\n await deferredLaunchpadInfo.fetch();\n setLoading(false);\n } catch (error) {\n handleHttpError(error);\n }\n };\n startFetchLaunchpadInfo();\n }\n }, [active]);\n\n useEffect(() => {\n if (active) {\n const startFetchFavorites = async (): Promise<void> => {\n try {\n await deferredFavorites.fetch();\n setLoadingFavorites(false);\n } catch (error) {\n setLoadingFavorites(false);\n showErrorAsNotification(error);\n }\n };\n startFetchFavorites();\n }\n }, [active]);\n\n useEffect(() => {\n if (\n active &&\n getRuntime()?.getFeatureFlags()[\"launchpad-show-platform-category\"]\n ) {\n const startFetchPlatformCategories = async (): Promise<void> => {\n try {\n await deferredPlatformCategories.fetch();\n setLoadingPlatformCategories(false);\n } catch (error) {\n setLoadingPlatformCategories(false);\n showErrorAsNotification(error);\n }\n };\n startFetchPlatformCategories();\n }\n }, [active]);\n\n useEffect(() => {\n if (loading) {\n return;\n }\n const visits = storedRecentVisits\n .map((item) => {\n // Remembered recent visits maybe no longer existed in launchpad\n if (item.type === \"app\") {\n const app = microAppsById.get(item.id);\n return app\n ? {\n type: \"app\",\n name: app.localeName,\n id: app.id,\n url: app.homepage,\n instanceId: app.instanceId,\n menuIcon: app.menuIcon,\n }\n : null;\n }\n\n const link = customLinksById.get(item.id);\n return link\n ? {\n ...link,\n name: link.localeName,\n }\n : null;\n })\n .filter(Boolean) as MenuItemDataNormal[];\n setRecentVisits(visits);\n }, [customLinksById, loading, microAppsById, storedRecentVisits]);\n\n const pushRecentVisit = useCallback(({ type, id }: StoredMenuItem) => {\n const visits: StoredMenuItem[] = storage.getItem(storageKey) ?? [];\n const index = visits.findIndex(\n (visit) => visit.type === type && visit.id === id\n );\n if (index > -1) {\n visits.splice(index, 1);\n }\n visits.unshift({ type, id });\n if (visits.length > RECENT_VISITS_LIMIT) {\n visits.pop();\n }\n // setStoredRecentVisits(visits);\n storage.setItem(storageKey, visits);\n }, []);\n\n const isStarred = useCallback(\n (item: MenuItemDataNormal) =>\n favorites.some((fav) => matchFavorite(item, fav)),\n [favorites]\n );\n\n const toggleStar = useCallback(\n (item: MenuItemDataNormal | MenuItemDataLink) => {\n const index = favorites.findIndex((fav) =>\n item.type === \"link\"\n ? fav.favoriteId === item.favoriteId\n : matchFavorite(item, fav)\n );\n let newFavorites: FavMenuItem[];\n if (index > -1) {\n const removed = favorites[index];\n newFavorites = favorites\n .slice(0, index)\n .concat(favorites.slice(index + 1));\n undoFavorite(removed).catch(showErrorAsNotification);\n } else {\n if (favorites.length >= FAVORITES_LIMIT) {\n showDialog({\n type: \"warn\",\n title: t(K.FAVORITES_LIMIT_REACHED) as string,\n content: t(K.FAVORITES_LIMIT_MESSAGE, { count: FAVORITES_LIMIT }),\n });\n return;\n }\n // Assert: no link item\n const fav: FavMenuItem = { ...(item as MenuItemDataNormal) };\n newFavorites = favorites.concat(fav);\n favorite(item as MenuItemDataNormal).then((result) => {\n if (result) {\n fav.favoriteId = result.instanceId;\n }\n }, showErrorAsNotification);\n }\n setFavorites(newFavorites);\n candidateFavorites = newFavorites;\n },\n [favorites]\n );\n\n const menuGroups: MenuGroupData[] = useMemo(\n () => search(desktops, q),\n [desktops, q]\n );\n\n const filteredPlatformCategories: PlatformCategoryItem[] = useMemo(\n () => searchCategories(platformCategories, q),\n [platformCategories, q]\n );\n\n return {\n loading,\n q,\n setQ,\n menuGroups,\n loadingFavorites,\n loadingPlatformCategories,\n favorites,\n recentVisits,\n pushRecentVisit,\n isStarred,\n toggleStar,\n platformCategories: filteredPlatformCategories,\n };\n}\n\nexport function matchFavorite(item: MenuItemDataNormal, fav: FavMenuItem) {\n return item.instanceId && fav.instanceId\n ? fav.instanceId === item.instanceId\n : fav.type === item.type && fav.id === item.id;\n}\n","export class DeferredService {\n private preFetchId: number | null = null;\n private preFetchScheduled = false;\n private firstFetchPromise: Promise<unknown> | null = null;\n private isFetching = false;\n private readonly task: () => Promise<unknown>;\n\n constructor(task: () => Promise<unknown>) {\n this.task = task;\n }\n\n schedulePrefetch(): void {\n if (!this.preFetchScheduled) {\n this.preFetchScheduled = true;\n const preFetchLaunchpadInfo = async (): Promise<void> => {\n this.preFetchId = null;\n this.fetch();\n };\n // istanbul ignore if\n if (typeof window.requestIdleCallback === \"function\") {\n this.preFetchId = window.requestIdleCallback(preFetchLaunchpadInfo);\n } else {\n this.preFetchId = setTimeout(\n preFetchLaunchpadInfo\n ) as unknown as number;\n }\n }\n }\n\n fetch(eager?: boolean): Promise<unknown> {\n if (this.preFetchId) {\n // istanbul ignore if\n if (typeof window.cancelIdleCallback === \"function\") {\n cancelIdleCallback(this.preFetchId);\n } else {\n clearTimeout(this.preFetchId);\n }\n this.preFetchId = null;\n }\n\n let promise: Promise<unknown>;\n if (!this.isFetching || eager) {\n this.isFetching = true;\n promise = this.task();\n promise\n .catch((error) => {\n // eslint-disable-next-line no-console\n console.error(error);\n this.firstFetchPromise = null;\n })\n .finally(() => {\n this.isFetching = false;\n });\n if (!this.firstFetchPromise) {\n this.firstFetchPromise = promise;\n }\n if (eager) {\n return promise;\n }\n }\n return this.firstFetchPromise!;\n }\n}\n","import { i18nText } from \"@next-core/i18n\";\nimport type { AppLocales, I18nData } from \"@next-core/types\";\n\nexport function getLocaleName(locales?: AppLocales | undefined, name?: string) {\n if (!locales) {\n return name;\n }\n const i18nData = Object.fromEntries(\n Object.entries(locales)\n .filter(([_lang, resources]) => resources.name)\n .map(([lang, resources]) => [lang, resources.name])\n ) as I18nData;\n return i18nText(i18nData) ?? name;\n}\n","import { wrapBrick } from \"@next-core/react-element\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport type { showDialog as _showDialog } from \"@next-bricks/basic/data-providers/show-dialog/show-dialog\";\nimport type { showNotification as _showNotification } from \"@next-bricks/basic/data-providers/show-notification/show-notification\";\n\nexport const WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nexport const WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\n// Use `unwrapProvider` to get the original function of a provider\nexport const showDialog =\n unwrapProvider<typeof _showDialog>(\"basic.show-dialog\");\n\nexport const showNotification = unwrapProvider<typeof _showNotification>(\n \"basic.show-notification\"\n);\n"],"names":["K","NS","locales","en","ALL","QUICK_ACCESS","PLATFORM_BASE","SCENARIO_CENTER","SOLUTIONS","OPEN_PLATFORM","SEARCH_PLACEHOLDER","RECENT_VISITS","FAVORITE","UNFAVORITE","FAVORITES_LIMIT_REACHED","FAVORITES_LIMIT_MESSAGE","zh","t","i18n","getFixedT","FAVORITES_LIMIT","RECENT_VISITS_LIMIT","async","fetchRawFavorites","LaunchpadApi_listCollectionV2","page","pageSize","interceptorParams","ignoreLoadingBar","noAbortOnRouteChange","list","matchMenuItem","item","lowerQ","id","name","localeName","description","some","field","toLowerCase","includes","initializeReactI18n","storageKey","_auth$getAuth","auth","getAuth","org","storage","JsonStorage","localStorage","candidateDesktops","candidateMicroAppsById","Map","candidateCustomLinksById","preLoaded","candidateFavorites","preLoadedFavorites","candidatePlatformCategories","preLoadedPlatformCategories","deferredLaunchpadInfo","DeferredService","menuGroups","microAppsById","customLinksById","_auth$isBlockedHref","launchpadInfo","LaunchpadApi_getLaunchpadInfo","storyboard","storyboards","_auth$isBlockedPath","app","getLocaleName","isBlockedPath","call","homepage","set","group","desktops","items","type","get","push","url","isBlockedHref","subItems","subItem","_auth$isBlockedHref2","length","fetchLaunchpadInfo","deferredFavorites","stored","fav","relatedApp","favoriteId","instanceId","appId","menuIcon","customItem","relatedCustomItem","link","icon","fetchFavorites","deferredPlatformCategories","categories","InstanceApi_postSearchV3","fields","page_size","query","_categories","map","category","apps","platformApps","_auth$isBlockedPath2","_app$","order","filter","Boolean","customItems","platformItems","_auth$isBlockedHref3","_item$","sortBy","lib","fetchPlatformCategories","showErrorAsNotification","error","showNotification","message","httpErrorToString","useLaunchpadInfo","active","useTranslation","setDesktops","useState","setMicroAppsById","setCustomLinksById","q","setQ","loading","setLoading","loadingFavorites","setLoadingFavorites","loadingPlatformCategories","setLoadingPlatformCategories","storedRecentVisits","setStoredRecentVisits","recentVisits","setRecentVisits","favorites","setFavorites","platformCategories","setPlatformCategories","useEffect","_storage$getItem","getItem","fetch","handleHttpError","startFetchLaunchpadInfo","startFetchFavorites","_getRuntime","getRuntime","getFeatureFlags","startFetchPlatformCategories","visits","pushRecentVisit","useCallback","_ref","_storage$getItem2","index","findIndex","visit","splice","unshift","pop","setItem","isStarred","matchFavorite","toggleStar","newFavorites","removed","slice","concat","LaunchpadApi_deleteCollectionV2","then","_list$find","foundId","find","_fav$relatedApp","_fav$relatedCustomIte","console","undoFavorite","catch","showDialog","title","content","count","LaunchpadApi_createCollectionV2","relatedInstanceId","favorite","result","useMemo","allMenuGroups","filteredSubItems","sub","search","filteredPlatformCategories","searchCategories","constructor","task","_defineProperty","this","schedulePrefetch","preFetchScheduled","preFetchLaunchpadInfo","preFetchId","window","requestIdleCallback","setTimeout","eager","promise","cancelIdleCallback","clearTimeout","isFetching","firstFetchPromise","finally","_i18nText","i18nData","Object","fromEntries","entries","_lang","resources","_ref2","lang","i18nText","WrappedIcon","wrapBrick","WrappedLink","unwrapProvider"],"sourceRoot":""}
|