@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.
Files changed (129) hide show
  1. package/dist/bricks.json +12 -12
  2. package/dist/chunks/1685.437940d7.js +2 -0
  3. package/dist/chunks/1685.437940d7.js.map +1 -0
  4. package/dist/chunks/3944.a7f7cffe.js +2 -0
  5. package/dist/chunks/3944.a7f7cffe.js.map +1 -0
  6. package/dist/chunks/{4837.b5ed600d.js → 4837.d06f1908.js} +2 -2
  7. package/dist/chunks/{7218.6547d083.js.map → 4837.d06f1908.js.map} +1 -1
  8. package/dist/chunks/5655.a02d92d1.js +2 -0
  9. package/dist/chunks/5655.a02d92d1.js.map +1 -0
  10. package/dist/chunks/6128.3912671f.js +2 -0
  11. package/dist/chunks/6128.3912671f.js.map +1 -0
  12. package/dist/chunks/6502.9ac6b169.js +2 -0
  13. package/dist/chunks/6502.9ac6b169.js.map +1 -0
  14. package/dist/chunks/{7218.6547d083.js → 7218.623deb5b.js} +2 -2
  15. package/dist/chunks/{4837.b5ed600d.js.map → 7218.623deb5b.js.map} +1 -1
  16. package/dist/chunks/easyops-navbar-alerts.cc7090db.js +2 -0
  17. package/dist/chunks/easyops-navbar-alerts.cc7090db.js.map +1 -0
  18. package/dist/chunks/{eo-app-bar-wrapper.6fcc11f1.js → eo-app-bar-wrapper.743025bd.js} +3 -3
  19. package/dist/chunks/eo-app-bar-wrapper.743025bd.js.map +1 -0
  20. package/dist/chunks/eo-directory-tree-internal-node.e1fd8680.js +2 -0
  21. package/dist/chunks/eo-directory-tree-internal-node.e1fd8680.js.map +1 -0
  22. package/dist/chunks/eo-directory-tree-leaf.315a4f71.js +2 -0
  23. package/dist/chunks/eo-directory-tree-leaf.315a4f71.js.map +1 -0
  24. package/dist/chunks/eo-directory-tree.2ba780f8.js +3 -0
  25. package/dist/chunks/eo-directory-tree.2ba780f8.js.map +1 -0
  26. package/dist/chunks/eo-directory.a0e99853.js +3 -0
  27. package/dist/chunks/eo-directory.a0e99853.js.map +1 -0
  28. package/dist/chunks/{eo-frame-breadcrumb.88ef9279.js → eo-frame-breadcrumb.a2d98877.js} +2 -2
  29. package/dist/chunks/{eo-frame-breadcrumb.88ef9279.js.map → eo-frame-breadcrumb.a2d98877.js.map} +1 -1
  30. package/dist/chunks/eo-launchpad-button-v2.aa05077e.js +3 -0
  31. package/dist/chunks/eo-launchpad-button-v2.aa05077e.js.map +1 -0
  32. package/dist/chunks/eo-launchpad-button.b8b7bcff.js +3 -0
  33. package/dist/chunks/eo-launchpad-button.b8b7bcff.js.map +1 -0
  34. package/dist/chunks/eo-launchpad-quick-access.b0a48525.js +3 -0
  35. package/dist/chunks/eo-launchpad-quick-access.b0a48525.js.map +1 -0
  36. package/dist/chunks/{eo-launchpad-recent-visits.dad50d61.js → eo-launchpad-recent-visits.1a7c6e2c.js} +3 -3
  37. package/dist/chunks/eo-launchpad-recent-visits.1a7c6e2c.js.map +1 -0
  38. package/dist/chunks/{eo-nav-menu.640648bb.js → eo-nav-menu.64183ee8.js} +2 -2
  39. package/dist/chunks/{eo-nav-menu.640648bb.js.map → eo-nav-menu.64183ee8.js.map} +1 -1
  40. package/dist/chunks/eo-search-launchpad.8d4e293c.js +2 -0
  41. package/dist/chunks/eo-search-launchpad.8d4e293c.js.map +1 -0
  42. package/dist/chunks/{eo-sidebar-menu-group.66decf41.js → eo-sidebar-menu-group.01ac76d3.js} +3 -3
  43. package/dist/chunks/{eo-sidebar-menu-group.66decf41.js.map → eo-sidebar-menu-group.01ac76d3.js.map} +1 -1
  44. package/dist/chunks/eo-sidebar-menu-item.cc8a849b.js +2 -0
  45. package/dist/chunks/eo-sidebar-menu-item.cc8a849b.js.map +1 -0
  46. package/dist/chunks/eo-sidebar-menu-submenu.5cb414f6.js +3 -0
  47. package/dist/chunks/eo-sidebar-menu-submenu.5cb414f6.js.map +1 -0
  48. package/dist/chunks/{eo-sidebar-menu.39722013.js → eo-sidebar-menu.48f4f3a7.js} +2 -2
  49. package/dist/chunks/{eo-sidebar-menu.39722013.js.map → eo-sidebar-menu.48f4f3a7.js.map} +1 -1
  50. package/dist/chunks/{eo-sidebar-sub-menu.d8255f31.js → eo-sidebar-sub-menu.70c71ea9.js} +3 -3
  51. package/dist/chunks/eo-sidebar-sub-menu.70c71ea9.js.map +1 -0
  52. package/dist/chunks/eo-sidebar.ad2491ee.js +3 -0
  53. package/dist/chunks/eo-sidebar.ad2491ee.js.map +1 -0
  54. package/dist/chunks/{get-menu-config-options.77e554ca.js → get-menu-config-options.5803223a.js} +2 -2
  55. package/dist/chunks/{get-menu-config-options.77e554ca.js.map → get-menu-config-options.5803223a.js.map} +1 -1
  56. package/dist/chunks/{get-menu-config-tree.d422a3a5.js → get-menu-config-tree.d139c301.js} +2 -2
  57. package/dist/chunks/{get-menu-config-tree.d422a3a5.js.map → get-menu-config-tree.d139c301.js.map} +1 -1
  58. package/dist/chunks/launchpad-config.bd938fce.js +3 -0
  59. package/dist/chunks/launchpad-config.bd938fce.js.map +1 -0
  60. package/dist/chunks/{main.0a22c3de.js → main.7c9a2c63.js} +2 -2
  61. package/dist/chunks/{main.0a22c3de.js.map → main.7c9a2c63.js.map} +1 -1
  62. package/dist/chunks/{nav-logo.8d4c94b9.js → nav-logo.96de5e52.js} +2 -2
  63. package/dist/chunks/{nav-logo.8d4c94b9.js.map → nav-logo.96de5e52.js.map} +1 -1
  64. package/dist/chunks/{poll-announce.e1c07541.js → poll-announce.bb9bd6d1.js} +3 -3
  65. package/dist/chunks/{poll-announce.e1c07541.js.map → poll-announce.bb9bd6d1.js.map} +1 -1
  66. package/dist/chunks/{query-search.1f1900d6.js → query-search.0c3c3518.js} +3 -3
  67. package/dist/chunks/query-search.0c3c3518.js.map +1 -0
  68. package/dist/examples.json +3 -3
  69. package/dist/index.715d54c7.js +2 -0
  70. package/dist/{index.4abc895c.js.map → index.715d54c7.js.map} +1 -1
  71. package/dist/manifest.json +39 -39
  72. package/dist/types.json +66 -66
  73. package/dist-types/search-launchpad/i18n.d.ts +14 -0
  74. package/package.json +3 -3
  75. package/dist/chunks/2133.7a40ebb2.js +0 -2
  76. package/dist/chunks/2133.7a40ebb2.js.map +0 -1
  77. package/dist/chunks/4433.a908e194.js +0 -2
  78. package/dist/chunks/4433.a908e194.js.map +0 -1
  79. package/dist/chunks/4727.d9082275.js +0 -2
  80. package/dist/chunks/4727.d9082275.js.map +0 -1
  81. package/dist/chunks/6595.eae95c18.js +0 -2
  82. package/dist/chunks/6595.eae95c18.js.map +0 -1
  83. package/dist/chunks/9149.6aa0810a.js +0 -2
  84. package/dist/chunks/9149.6aa0810a.js.map +0 -1
  85. package/dist/chunks/easyops-navbar-alerts.2aa70f37.js +0 -2
  86. package/dist/chunks/easyops-navbar-alerts.2aa70f37.js.map +0 -1
  87. package/dist/chunks/eo-app-bar-wrapper.6fcc11f1.js.map +0 -1
  88. package/dist/chunks/eo-directory-tree-internal-node.73444da5.js +0 -2
  89. package/dist/chunks/eo-directory-tree-internal-node.73444da5.js.map +0 -1
  90. package/dist/chunks/eo-directory-tree-leaf.18f2d847.js +0 -2
  91. package/dist/chunks/eo-directory-tree-leaf.18f2d847.js.map +0 -1
  92. package/dist/chunks/eo-directory-tree.73e83674.js +0 -3
  93. package/dist/chunks/eo-directory-tree.73e83674.js.map +0 -1
  94. package/dist/chunks/eo-directory.a271465b.js +0 -3
  95. package/dist/chunks/eo-directory.a271465b.js.map +0 -1
  96. package/dist/chunks/eo-launchpad-button-v2.e035fd94.js +0 -3
  97. package/dist/chunks/eo-launchpad-button-v2.e035fd94.js.map +0 -1
  98. package/dist/chunks/eo-launchpad-button.ee733f67.js +0 -3
  99. package/dist/chunks/eo-launchpad-button.ee733f67.js.map +0 -1
  100. package/dist/chunks/eo-launchpad-quick-access.b7dc8eea.js +0 -3
  101. package/dist/chunks/eo-launchpad-quick-access.b7dc8eea.js.map +0 -1
  102. package/dist/chunks/eo-launchpad-recent-visits.dad50d61.js.map +0 -1
  103. package/dist/chunks/eo-search-launchpad.877d14b1.js +0 -2
  104. package/dist/chunks/eo-search-launchpad.877d14b1.js.map +0 -1
  105. package/dist/chunks/eo-sidebar-menu-item.aa1f6f66.js +0 -2
  106. package/dist/chunks/eo-sidebar-menu-item.aa1f6f66.js.map +0 -1
  107. package/dist/chunks/eo-sidebar-menu-submenu.5308ee43.js +0 -3
  108. package/dist/chunks/eo-sidebar-menu-submenu.5308ee43.js.map +0 -1
  109. package/dist/chunks/eo-sidebar-sub-menu.d8255f31.js.map +0 -1
  110. package/dist/chunks/eo-sidebar.ed2833ef.js +0 -3
  111. package/dist/chunks/eo-sidebar.ed2833ef.js.map +0 -1
  112. package/dist/chunks/launchpad-config.1c537f55.js +0 -3
  113. package/dist/chunks/launchpad-config.1c537f55.js.map +0 -1
  114. package/dist/chunks/query-search.1f1900d6.js.map +0 -1
  115. package/dist/index.4abc895c.js +0 -2
  116. /package/dist/chunks/{eo-app-bar-wrapper.6fcc11f1.js.LICENSE.txt → eo-app-bar-wrapper.743025bd.js.LICENSE.txt} +0 -0
  117. /package/dist/chunks/{eo-directory-tree.73e83674.js.LICENSE.txt → eo-directory-tree.2ba780f8.js.LICENSE.txt} +0 -0
  118. /package/dist/chunks/{eo-directory.a271465b.js.LICENSE.txt → eo-directory.a0e99853.js.LICENSE.txt} +0 -0
  119. /package/dist/chunks/{eo-launchpad-button-v2.e035fd94.js.LICENSE.txt → eo-launchpad-button-v2.aa05077e.js.LICENSE.txt} +0 -0
  120. /package/dist/chunks/{eo-launchpad-button.ee733f67.js.LICENSE.txt → eo-launchpad-button.b8b7bcff.js.LICENSE.txt} +0 -0
  121. /package/dist/chunks/{eo-launchpad-quick-access.b7dc8eea.js.LICENSE.txt → eo-launchpad-quick-access.b0a48525.js.LICENSE.txt} +0 -0
  122. /package/dist/chunks/{eo-launchpad-recent-visits.dad50d61.js.LICENSE.txt → eo-launchpad-recent-visits.1a7c6e2c.js.LICENSE.txt} +0 -0
  123. /package/dist/chunks/{eo-sidebar-menu-group.66decf41.js.LICENSE.txt → eo-sidebar-menu-group.01ac76d3.js.LICENSE.txt} +0 -0
  124. /package/dist/chunks/{eo-sidebar-menu-submenu.5308ee43.js.LICENSE.txt → eo-sidebar-menu-submenu.5cb414f6.js.LICENSE.txt} +0 -0
  125. /package/dist/chunks/{eo-sidebar-sub-menu.d8255f31.js.LICENSE.txt → eo-sidebar-sub-menu.70c71ea9.js.LICENSE.txt} +0 -0
  126. /package/dist/chunks/{eo-sidebar.ed2833ef.js.LICENSE.txt → eo-sidebar.ad2491ee.js.LICENSE.txt} +0 -0
  127. /package/dist/chunks/{launchpad-config.1c537f55.js.LICENSE.txt → launchpad-config.bd938fce.js.LICENSE.txt} +0 -0
  128. /package/dist/chunks/{poll-announce.e1c07541.js.LICENSE.txt → poll-announce.bb9bd6d1.js.LICENSE.txt} +0 -0
  129. /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.24.10",
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.23.14",
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": "b0dd6e19d1f1160f38519648cbfe08c9c3b9f5fc"
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":""}