@next-bricks/nav 0.7.1 → 0.8.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 +19 -12
- package/dist/chunks/2085.de0f2f3f.js +3 -0
- package/dist/chunks/2085.de0f2f3f.js.map +1 -0
- package/dist/chunks/6332.b709a26f.js +2 -0
- package/dist/chunks/6332.b709a26f.js.map +1 -0
- package/dist/chunks/{6482.1867b6d0.js → 6482.6f246a7f.js} +2 -2
- package/dist/chunks/{6482.1867b6d0.js.map → 6482.6f246a7f.js.map} +1 -1
- package/dist/chunks/eo-launchpad-button-v2.f86efc26.js +2 -0
- package/dist/chunks/eo-launchpad-button-v2.f86efc26.js.map +1 -0
- package/dist/chunks/eo-launchpad-quick-access.416e0d0f.js +3 -0
- package/dist/chunks/eo-launchpad-quick-access.416e0d0f.js.map +1 -0
- package/dist/chunks/eo-launchpad-recent-visits.51643c85.js +3 -0
- package/dist/chunks/eo-launchpad-recent-visits.51643c85.js.LICENSE.txt +1 -0
- package/dist/chunks/eo-launchpad-recent-visits.51643c85.js.map +1 -0
- package/dist/chunks/eo-search-launchpad.d2a92ed7.js +3 -0
- package/dist/chunks/eo-search-launchpad.d2a92ed7.js.map +1 -0
- package/dist/chunks/{main.b90e7ede.js → main.4feff5ef.js} +2 -2
- package/dist/chunks/{main.b90e7ede.js.map → main.4feff5ef.js.map} +1 -1
- package/dist/index.f41a75db.js +2 -0
- package/dist/index.f41a75db.js.map +1 -0
- package/dist/manifest.json +24 -15
- package/dist/types.json +8 -3
- package/dist-types/bootstrap.d.ts +1 -0
- package/dist-types/launchpad-recent-visits/index.d.ts +10 -0
- package/dist-types/launchpad-recent-visits/index.spec.d.ts +1 -0
- package/package.json +2 -2
- package/dist/chunks/2544.3d0be4bd.js +0 -3
- package/dist/chunks/2544.3d0be4bd.js.map +0 -1
- package/dist/chunks/3646.906208ee.js +0 -2
- package/dist/chunks/3646.906208ee.js.map +0 -1
- package/dist/chunks/eo-launchpad-button-v2.bbcc0d9b.js +0 -2
- package/dist/chunks/eo-launchpad-button-v2.bbcc0d9b.js.map +0 -1
- package/dist/chunks/eo-launchpad-quick-access.95d696a2.js +0 -3
- package/dist/chunks/eo-launchpad-quick-access.95d696a2.js.map +0 -1
- package/dist/chunks/eo-search-launchpad.37cb188d.js +0 -3
- package/dist/chunks/eo-search-launchpad.37cb188d.js.map +0 -1
- package/dist/index.51211e1c.js +0 -2
- package/dist/index.51211e1c.js.map +0 -1
- /package/dist/chunks/{2544.3d0be4bd.js.LICENSE.txt → 2085.de0f2f3f.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{eo-launchpad-quick-access.95d696a2.js.LICENSE.txt → eo-launchpad-quick-access.416e0d0f.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{eo-search-launchpad.37cb188d.js.LICENSE.txt → eo-search-launchpad.d2a92ed7.js.LICENSE.txt} +0 -0
package/dist/bricks.json
CHANGED
|
@@ -6,10 +6,11 @@
|
|
|
6
6
|
],
|
|
7
7
|
"elements": [
|
|
8
8
|
"eo-nav-menu",
|
|
9
|
-
"eo-
|
|
9
|
+
"eo-launchpad-button",
|
|
10
10
|
"eo-launchpad-button-v2",
|
|
11
11
|
"eo-launchpad-quick-access",
|
|
12
|
-
"eo-launchpad
|
|
12
|
+
"eo-search-launchpad",
|
|
13
|
+
"eo-launchpad-recent-visits"
|
|
13
14
|
],
|
|
14
15
|
"processors": [],
|
|
15
16
|
"dependencies": {
|
|
@@ -22,6 +23,17 @@
|
|
|
22
23
|
"eo-input",
|
|
23
24
|
"eo-tooltip"
|
|
24
25
|
],
|
|
26
|
+
"eo-launchpad-button": [
|
|
27
|
+
"eo-icon",
|
|
28
|
+
"eo-link"
|
|
29
|
+
],
|
|
30
|
+
"eo-launchpad-button-v2": [
|
|
31
|
+
"basic.lock-body-scroll",
|
|
32
|
+
"eo-icon",
|
|
33
|
+
"eo-link",
|
|
34
|
+
"basic.show-dialog",
|
|
35
|
+
"basic.show-notification"
|
|
36
|
+
],
|
|
25
37
|
"nav.launchpad-config": [
|
|
26
38
|
"eo-icon",
|
|
27
39
|
"eo-link",
|
|
@@ -32,29 +44,24 @@
|
|
|
32
44
|
"eo-icon",
|
|
33
45
|
"eo-link"
|
|
34
46
|
],
|
|
35
|
-
"eo-
|
|
47
|
+
"eo-launchpad-quick-access": [
|
|
36
48
|
"eo-icon",
|
|
37
49
|
"eo-link",
|
|
38
50
|
"basic.show-dialog",
|
|
39
51
|
"basic.show-notification"
|
|
40
52
|
],
|
|
41
|
-
"eo-launchpad
|
|
42
|
-
"basic.lock-body-scroll",
|
|
53
|
+
"eo-search-launchpad": [
|
|
43
54
|
"eo-icon",
|
|
44
55
|
"eo-link",
|
|
45
56
|
"basic.show-dialog",
|
|
46
57
|
"basic.show-notification"
|
|
47
58
|
],
|
|
48
|
-
"eo-launchpad-
|
|
49
|
-
"eo-icon",
|
|
59
|
+
"eo-launchpad-recent-visits": [
|
|
50
60
|
"eo-link",
|
|
61
|
+
"eo-icon",
|
|
51
62
|
"basic.show-dialog",
|
|
52
63
|
"basic.show-notification"
|
|
53
|
-
],
|
|
54
|
-
"eo-launchpad-button": [
|
|
55
|
-
"eo-icon",
|
|
56
|
-
"eo-link"
|
|
57
64
|
]
|
|
58
65
|
},
|
|
59
|
-
"filePath": "bricks/nav/dist/index.
|
|
66
|
+
"filePath": "bricks/nav/dist/index.f41a75db.js"
|
|
60
67
|
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! For license information please see 2085.de0f2f3f.js.LICENSE.txt */
|
|
2
|
+
"use strict";(self.webpackChunk_next_bricks_nav=self.webpackChunk_next_bricks_nav||[]).push([[2085],{2085:(e,t,n)=>{n.d(t,{sK:()=>V,yp:()=>O,m1:()=>q});var r,i=n(3028),a=n(4795),s=n(8657),o=n(7217),c=n(1229),u=n(2890),l=n(2301),p=n(2892),d=n(2106),h=n(3352),f=function(){var e=(0,a.Z)((function*(e,t){return(yield h.http.get("api/gateway/user_service.launchpad.ListCollectionV2/api/v2/launchpad/collection",(0,i.Z)((0,i.Z)({},t),{},{params:e}))).data}));return function(t,n){return e.apply(this,arguments)}}(),m=function(){var e=(0,a.Z)((function*(e,t){return(yield h.http.post("api/gateway/user_service.launchpad.CreateCollectionV2/api/v2/launchpad/collection",e,t)).data}));return function(t,n){return e.apply(this,arguments)}}(),v=(e,t)=>h.http.delete("api/gateway/user_service.launchpad.DeleteCollectionV2/api/v2/launchpad/collection/".concat(e),t),I=10,y=10,g=n(107);function w(){return(w=(0,a.Z)((function*(){var e=yield(0,d.u)({},{interceptorParams:{ignoreLoadingBar:!0},noAbortOnRouteChange:!0}),t=new Map;for(var n of e.storyboards){var r=n.app;r.localeName=(0,g.d)(r.locales,r.name),t.set(r.id,r)}var a=[],s=new Map;for(var o of e.desktops){var c=[];for(var u of o.items)switch(u.type){case"app":var l=t.get(u.id);l&&c.push((0,i.Z)((0,i.Z)({},u),{},{name:l.localeName,url:l.homepage,menuIcon:l.menuIcon}));break;case"custom":c.push(u),s.set(u.id,u);break;case"dir":var p=[];for(var h of u.items)if("app"===h.type){var f=t.get(h.id);f&&p.push((0,i.Z)((0,i.Z)({},h),{},{name:f.localeName,url:f.homepage,menuIcon:f.menuIcon}))}else"custom"===h.type&&(p.push(h),s.set(h.id,h));p.length>0&&c.push((0,i.Z)((0,i.Z)({},u),{},{items:p}))}c.length>0&&a.push((0,i.Z)((0,i.Z)({},o),{},{items:c}))}return{menuGroups:a,microAppsById:t,customLinksById:s}}))).apply(this,arguments)}function Z(){return k.apply(this,arguments)}function k(){return(k=(0,a.Z)((function*(){return(yield f({page:1,pageSize:I},{interceptorParams:{ignoreLoadingBar:!0},noAbortOnRouteChange:!0})).list}))).apply(this,arguments)}function C(){return(C=(0,a.Z)((function*(){var e=yield Z(),t=[];for(var n of e)if("microApp"===n.type){var r=n.relatedApp;r.localeName=(0,g.d)(r.locales,r.name),t.push({favoriteId:n.instanceId,type:"app",name:r.localeName,id:r.appId,url:r.homepage,instanceId:r.instanceId,menuIcon:r.menuIcon})}else if("customItem"===n.type){var i=n.relatedCustomItem;t.push({favoriteId:n.instanceId,type:"custom",name:i.name,id:i.id,url:i.url,menuIcon:i.menuIcon})}else"link"===n.type&&t.push({favoriteId:n.instanceId,type:"link",name:n.name,url:n.link,menuIcon:n.icon});return t}))).apply(this,arguments)}function b(){return(b=(0,a.Z)((function*(e){return m({type:"app"===e.type?"microApp":"customItem",relatedInstanceId:e.instanceId},{interceptorParams:{ignoreLoadingBar:!0}})}))).apply(this,arguments)}function F(){return(F=(0,a.Z)((function*(e){return e.favoriteId?v(e.favoriteId):Z().then((t=>{var n,r=null===(n=t.find((t=>{var n,r;return"app"===e.type?"microApp"===t.type&&(null===(n=t.relatedApp)||void 0===n?void 0:n.appId)===e.id:"custom"===e.type&&(null===(r=t.relatedCustomItem)||void 0===r?void 0:r.id)===e.id})))||void 0===n?void 0:n.instanceId;if(r)return v(r);console.error("Menu item to unstar not found:",e)}))}))).apply(this,arguments)}function S(e,t){return e.id.toLowerCase().includes(t)||e.name.toLowerCase().includes(t)?e:null}function B(e,t){return e.id.toLowerCase().includes(t)||e.name.toLowerCase().includes(t)?e:null}var L="launchpad-recent-visits:".concat(null===(r=c.auth.getAuth())||void 0===r?void 0:r.org),P=new u.o(localStorage),x=[],A=new Map,E=new Map,_=!1,N=[],M=!1,O=new l.i((0,a.Z)((function*(){({menuGroups:x,microAppsById:A,customLinksById:E}=yield function(){return w.apply(this,arguments)}()),_=!0}))),V=new l.i((0,a.Z)((function*(){N=yield function(){return C.apply(this,arguments)}(),M=!0}))),T=e=>(0,p.c0)({type:"error",message:(0,o.httpErrorToString)(e)});function q(e){var[t,n]=(0,s.useState)(x),[r,c]=(0,s.useState)(A),[u,l]=(0,s.useState)(E),[d,h]=(0,s.useState)(""),[f,m]=(0,s.useState)(!_),[v,g]=(0,s.useState)(!M),[w,Z]=(0,s.useState)([]),[k,C]=(0,s.useState)([]),[q,R]=(0,s.useState)(N);(0,s.useEffect)((()=>{e&&!f&&(n(x),c(A),l(E))}),[e,f]),(0,s.useEffect)((()=>{e&&!v&&R(N)}),[e,v]),(0,s.useEffect)((()=>{var t;e&&Z(null!==(t=P.getItem(L))&&void 0!==t?t:[])}),[e]),(0,s.useEffect)((()=>{if(e){var t=function(){var e=(0,a.Z)((function*(){try{yield O.fetch(),m(!1)}catch(e){(0,o.handleHttpError)(e)}}));return function(){return e.apply(this,arguments)}}();t()}}),[e]),(0,s.useEffect)((()=>{if(e){var t=function(){var e=(0,a.Z)((function*(){try{yield V.fetch(),g(!1)}catch(e){g(!1),T(e)}}));return function(){return e.apply(this,arguments)}}();t()}}),[e]),(0,s.useEffect)((()=>{if(!f){var e=w.map((e=>{if("app"===e.type){var t=r.get(e.id);return t?{type:"app",name:t.localeName,id:t.id,url:t.homepage,instanceId:t.instanceId,menuIcon:t.menuIcon}:null}return u.get(e.id)})).filter(Boolean);C(e)}}),[u,f,r,w]);var j=(0,s.useCallback)((e=>{var t,{type:n,id:r}=e,i=null!==(t=P.getItem(L))&&void 0!==t?t:[],a=i.findIndex((e=>e.type===n&&e.id===r));a>-1&&i.splice(a,1),i.unshift({type:n,id:r}),i.length>y&&i.pop(),P.setItem(L,i)}),[]),J=(0,s.useCallback)((e=>q.some((t=>G(e,t)))),[q]),z=(0,s.useCallback)((e=>{var t,n=q.findIndex((t=>"link"===e.type?t.favoriteId===e.favoriteId:G(e,t)));if(n>-1){var r=q[n];t=q.slice(0,n).concat(q.slice(n+1)),function(e){return F.apply(this,arguments)}(r).catch(T)}else{if(q.length>=I)return void(0,p.vC)({type:"warn",title:"收藏数量已达上限",content:"当前收藏链接数量已达上限(".concat(I,"个),请删除部分收藏后再添加。")});var a=(0,i.Z)({},e);t=q.concat(a),function(e){return b.apply(this,arguments)}(e).then((e=>{e&&(a.favoriteId=e.instanceId)}),T)}R(t),N=t}),[q]),D=(0,s.useMemo)((()=>function(e,t){if(!t)return e;var n=t.toLowerCase();return e.map((e=>(0,i.Z)((0,i.Z)({},e),{},{items:e.items.map((e=>{switch(e.type){case"app":return S(e,n);case"custom":return B(e,n);case"dir":var t=e.items.map((e=>"app"===e.type?S(e,n):"custom"===e.type?B(e,n):null)).filter(Boolean);return t.length>0?(0,i.Z)((0,i.Z)({},e),{},{items:t}):null}})).filter(Boolean)}))).filter((e=>e.items.length>0))}(t,d)),[t,d]);return{loading:f,q:d,setQ:h,menuGroups:D,loadingFavorites:v,favorites:q,recentVisits:k,pushRecentVisit:j,isStarred:J,toggleStar:z}}function G(e,t){return e.instanceId&&t.instanceId?t.instanceId===e.instanceId:t.type===e.type&&t.id===e.id}},2892:(e,t,n)=>{n.d(t,{V3:()=>a,c0:()=>c,kk:()=>s,vC:()=>o});var r=n(4511),i=n(7004),a=(0,r.wrapBrick)("eo-icon"),s=(0,r.wrapBrick)("eo-link"),o=(0,i.unwrapProvider)("basic.show-dialog"),c=(0,i.unwrapProvider)("basic.show-notification")},2301:(e,t,n)=>{n.d(t,{i:()=>a});var r=n(4795),i=n(6666);class a{constructor(e){(0,i.Z)(this,"preFetchId",null),(0,i.Z)(this,"preFetchScheduled",!1),(0,i.Z)(this,"firstFetchPromise",null),(0,i.Z)(this,"isFetching",!1),(0,i.Z)(this,"task",void 0),this.task=e}schedulePrefetch(){var e=this;if(!this.preFetchScheduled){this.preFetchScheduled=!0;var t=function(){var t=(0,r.Z)((function*(){e.preFetchId=null,e.fetch()}));return function(){return t.apply(this,arguments)}}();"function"==typeof window.requestIdleCallback?this.preFetchId=window.requestIdleCallback(t):this.preFetchId=setTimeout(t)}}fetch(e){var 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()).catch((e=>{console.error(e),this.firstFetchPromise=null})).finally((()=>{this.isFetching=!1})),this.firstFetchPromise||(this.firstFetchPromise=t),!e)?this.firstFetchPromise:t}}},107:(e,t,n)=>{n.d(t,{d:()=>i});var r=n(8819);function i(e,t){var n;if(!e)return t;var i=Object.fromEntries(Object.entries(e).filter((e=>{var[t,n]=e;return n.name})).map((e=>{var[t,n]=e;return[t,n.name]})));return null!==(n=(0,r.i18nText)(i))&&void 0!==n?n:t}},2890:(e,t,n)=>{n.d(t,{o:()=>r});class r{constructor(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"brick-next-";this.storage=e,this.prefix=t}setItem(e,t){this.storage.setItem(this.prefix+e,JSON.stringify(t))}getItem(e){return JSON.parse(this.storage.getItem(this.prefix+e))}removeItem(e){return this.storage.removeItem(this.prefix+e)}clear(){return this.storage.clear()}}}}]);
|
|
3
|
+
//# sourceMappingURL=2085.de0f2f3f.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunks/2085.de0f2f3f.js","mappings":"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","sources":["webpack:///../../node_modules/@next-api-sdk/user-service-sdk/dist/esm/api/user_service/launchpad/listCollectionV2.js","webpack:///../../node_modules/@next-api-sdk/user-service-sdk/dist/esm/api/user_service/launchpad/createCollectionV2.js","webpack:///../../node_modules/@next-api-sdk/user-service-sdk/dist/esm/api/user_service/launchpad/deleteCollectionV2.js","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/launchpad-button-v2/wrapped-bricks.ts","webpack:///./src/shared/DeferredService.ts","webpack:///./src/shared/getLocaleName.ts","webpack:///../../src/JsonStorage.ts"],"sourcesContent":["import _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/asyncToGenerator\";\nimport { http } from \"@next-core/http\";\n/**\n * @description 获取我的收藏列表V2\n * @endpoint LIST /api/v2/launchpad/collection\n */\nexport var LaunchpadApi_listCollectionV2 = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(function* (params, options) {\n return (/**! @contract easyops.api.user_service.launchpad.ListCollectionV2@1.0.0 */(yield http.get(\"api/gateway/user_service.launchpad.ListCollectionV2/api/v2/launchpad/collection\", _objectSpread(_objectSpread({}, options), {}, {\n params\n }))).data\n );\n });\n return function LaunchpadApi_listCollectionV2(_x, _x2) {\n return _ref.apply(this, arguments);\n };\n}();\n//# sourceMappingURL=listCollectionV2.js.map","import _asyncToGenerator from \"@babel/runtime/helpers/asyncToGenerator\";\nimport { http } from \"@next-core/http\";\n/**\n * @description 新增我的收藏V2\n * @endpoint POST /api/v2/launchpad/collection\n */\nexport var LaunchpadApi_createCollectionV2 = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(function* (data, options) {\n return (/**! @contract easyops.api.user_service.launchpad.CreateCollectionV2@1.0.0 */(yield http.post(\"api/gateway/user_service.launchpad.CreateCollectionV2/api/v2/launchpad/collection\", data, options)).data\n );\n });\n return function LaunchpadApi_createCollectionV2(_x, _x2) {\n return _ref.apply(this, arguments);\n };\n}();\n//# sourceMappingURL=createCollectionV2.js.map","import { http } from \"@next-core/http\";\n\n/**\n * @description 删除我的收藏V2\n * @endpoint DELETE /api/v2/launchpad/collection/:instanceId\n */\nexport var LaunchpadApi_deleteCollectionV2 = (instanceId, options) => /**! @contract easyops.api.user_service.launchpad.DeleteCollectionV2@1.0.0 */http.delete(\"api/gateway/user_service.launchpad.DeleteCollectionV2/api/v2/launchpad/collection/\".concat(instanceId), options);\n//# sourceMappingURL=deleteCollectionV2.js.map","export const FAVORITES_LIMIT = 10;\nexport const RECENT_VISITS_LIMIT = 10;\n","import type { 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} from \"@next-api-sdk/user-service-sdk\";\nimport type {\n FavMenuItem,\n MenuGroupData,\n MenuItemData,\n MenuItemDataApp,\n MenuItemDataCustom,\n MenuItemDataDir,\n MenuItemDataNormal,\n MicroAppWithInstanceId,\n} from \"./interfaces\";\nimport { FAVORITES_LIMIT } from \"./constants\";\nimport { getAppLocaleName } from \"../shared/getLocaleName\";\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 = getAppLocaleName(app.locales, app.name);\n microAppsById.set(app.id, app);\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 switch (item.type) {\n case \"app\": {\n const app = microAppsById.get(item.id);\n if (app) {\n items.push({\n ...item,\n name: app.localeName,\n url: app.homepage,\n menuIcon: app.menuIcon,\n } as MenuItemDataApp);\n }\n break;\n }\n case \"custom\":\n items.push(item);\n customLinksById.set(item.id, item);\n break;\n case \"dir\": {\n const subItems: MenuItemDataNormal[] = [];\n for (const subItem of item.items) {\n if (subItem.type === \"app\") {\n const app = microAppsById.get(subItem.id);\n if (app) {\n subItems.push({\n ...subItem,\n name: app.localeName,\n url: app.homepage,\n menuIcon: app.menuIcon,\n } as MenuItemDataApp);\n }\n } else if (subItem.type === \"custom\") {\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 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 for (const fav of list) {\n if (fav.type === \"microApp\") {\n const app = fav.relatedApp as Omit<MicroAppWithInstanceId, \"id\"> & {\n appId: string;\n };\n app.localeName = getAppLocaleName(app.locales, app.name);\n stored.push({\n favoriteId: fav.instanceId,\n type: \"app\",\n name: app.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 stored.push({\n favoriteId: fav.instanceId,\n type: \"custom\",\n name: customItem.name,\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","import type {\n MenuGroupData,\n MenuItemData,\n MenuItemDataApp,\n MenuItemDataCustom,\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 matchMenuItemApp(item, lowerQ);\n case \"custom\":\n return matchMenuItemCustom(item, lowerQ);\n case \"dir\": {\n const filteredSubItems = item.items\n .map((sub) =>\n sub.type === \"app\"\n ? matchMenuItemApp(sub, lowerQ)\n : sub.type === \"custom\"\n ? matchMenuItemCustom(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\nfunction matchMenuItemApp(item: MenuItemDataApp, lowerQ: string) {\n return item.id.toLowerCase().includes(lowerQ) ||\n item.name.toLowerCase().includes(lowerQ)\n ? item\n : null;\n}\n\nfunction matchMenuItemCustom(item: MenuItemDataCustom, lowerQ: string) {\n return item.id.toLowerCase().includes(lowerQ) ||\n item.name.toLowerCase().includes(lowerQ)\n ? item\n : null;\n}\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { handleHttpError, httpErrorToString } from \"@next-core/runtime\";\nimport { auth } from \"@next-core/easyops-runtime\";\nimport { JsonStorage } from \"@next-shared/general/JsonStorage\";\nimport { DeferredService } from \"../shared/DeferredService\";\nimport { showDialog, showNotification } from \"./wrapped-bricks\";\nimport type {\n FavMenuItem,\n MenuGroupData,\n MenuItemDataCustom,\n MenuItemDataLink,\n MenuItemDataNormal,\n MicroAppWithInstanceId,\n StoredMenuItem,\n} from \"./interfaces\";\nimport {\n favorite,\n fetchFavorites,\n fetchLaunchpadInfo,\n undoFavorite,\n} from \"./api\";\nimport { search } from \"./search\";\nimport { FAVORITES_LIMIT, RECENT_VISITS_LIMIT } from \"./constants\";\n\nconst storageKey = `launchpad-recent-visits:${(\n auth.getAuth() as Record<string, string>\n)?.org}`;\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\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\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 [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\n const [storedRecentVisits, setStoredRecentVisits] = useState<\n StoredMenuItem[]\n >([]);\n\n const [recentVisits, setRecentVisits] = useState<MenuItemDataNormal[]>([]);\n\n const [favorites, setFavorites] = useState<FavMenuItem[]>(candidateFavorites);\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) {\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 (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 return customLinksById.get(item.id);\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: \"收藏数量已达上限\",\n content: `当前收藏链接数量已达上限(${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 return {\n loading,\n q,\n setQ,\n menuGroups,\n loadingFavorites,\n favorites,\n recentVisits,\n pushRecentVisit,\n isStarred,\n toggleStar,\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","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","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 getAppLocaleName(\n locales: AppLocales | undefined,\n name: string\n) {\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","export class JsonStorage {\n constructor(\n private storage: Storage,\n private prefix: string = \"brick-next-\"\n ) {}\n\n setItem<T = any>(name: string, value: T): void {\n this.storage.setItem(this.prefix + name, JSON.stringify(value));\n }\n\n getItem<T = any>(name: string): T {\n return JSON.parse(this.storage.getItem(this.prefix + name) as string) as T;\n }\n\n removeItem(name: string): void {\n return this.storage.removeItem(this.prefix + name);\n }\n\n clear(): void {\n return this.storage.clear();\n }\n}\n"],"names":["LaunchpadApi_listCollectionV2","_ref","params","options","http","get","_x","_x2","apply","this","arguments","LaunchpadApi_createCollectionV2","data","post","LaunchpadApi_deleteCollectionV2","instanceId","delete","concat","FAVORITES_LIMIT","RECENT_VISITS_LIMIT","_fetchLaunchpadInfo","_asyncToGenerator","launchpadInfo","LaunchpadApi_getLaunchpadInfo","interceptorParams","ignoreLoadingBar","noAbortOnRouteChange","microAppsById","Map","storyboard","storyboards","app","localeName","getAppLocaleName","locales","name","set","id","menuGroups","customLinksById","group","desktops","items","item","type","push","_objectSpread","url","homepage","menuIcon","subItems","subItem","length","fetchRawFavorites","_fetchRawFavorites","page","pageSize","list","_fetchFavorites","stored","fav","relatedApp","favoriteId","appId","customItem","relatedCustomItem","link","icon","_favorite","relatedInstanceId","_undoFavorite","then","_list$find","foundId","find","_fav$relatedApp","_fav$relatedCustomIte","console","error","matchMenuItemApp","lowerQ","toLowerCase","includes","matchMenuItemCustom","storageKey","_auth$getAuth","auth","getAuth","org","storage","JsonStorage","localStorage","candidateDesktops","candidateMicroAppsById","candidateCustomLinksById","preLoaded","candidateFavorites","preLoadedFavorites","deferredLaunchpadInfo","DeferredService","fetchLaunchpadInfo","deferredFavorites","fetchFavorites","showErrorAsNotification","showNotification","message","httpErrorToString","useLaunchpadInfo","active","setDesktops","useState","setMicroAppsById","setCustomLinksById","q","setQ","loading","setLoading","loadingFavorites","setLoadingFavorites","storedRecentVisits","setStoredRecentVisits","recentVisits","setRecentVisits","favorites","setFavorites","useEffect","_storage$getItem","getItem","startFetchLaunchpadInfo","_ref3","fetch","handleHttpError","startFetchFavorites","_ref4","visits","map","filter","Boolean","pushRecentVisit","useCallback","_ref5","_storage$getItem2","index","findIndex","visit","splice","unshift","pop","setItem","isStarred","some","matchFavorite","toggleStar","newFavorites","removed","slice","undoFavorite","catch","showDialog","title","content","favorite","result","useMemo","allMenuGroups","filteredSubItems","sub","search","WrappedIcon","wrapBrick","WrappedLink","unwrapProvider","constructor","task","_defineProperty","schedulePrefetch","_this","preFetchScheduled","preFetchLaunchpadInfo","preFetchId","window","requestIdleCallback","setTimeout","eager","promise","cancelIdleCallback","clearTimeout","isFetching","firstFetchPromise","finally","_i18nText","i18nData","Object","fromEntries","entries","lang","resources","_ref2","i18nText","prefix","undefined","value","JSON","stringify","parse","removeItem","clear"],"sourceRoot":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_next_bricks_nav=self.webpackChunk_next_bricks_nav||[]).push([[6332],{6332:(e,t,n)=>{n.r(t);var a,r,i,l,o,c,s,m,u,d=n(4795),p=n(3395),h=n(381),g=n(687),v=n(2604),b=n(7896),x=n(8657),f=n.n(x),k=n(5366),y=n(7217),E=n(4511),w=n(9800),N=n(3808),Z=n(7993),C=(n(9234),n(2779)),S=n.n(C),R=n(1880),T=n(9705),D=n(2598),V=n(8462),I=n(8101),{defineElement:z,property:M}=(0,k.createDecorators)(),K=(0,E.wrapBrick)("eo-menu-item"),A=(0,E.wrapBrick)("eo-popover",{onVisibleChange:"visible.change",beforeVisibleChange:"before.visible.change"});function F(e){var{item:t}=e;return(0,N.cl)(t,e.topData)?f().createElement(G,(0,b.Z)({},e,{item:t})):(0,N.ty)(t)?f().createElement(L,(0,b.Z)({},e,{item:t})):f().createElement(_,(0,b.Z)({},e,{item:t}))}function _(e){var{item:t,index:n,hidden:a,showTooltip:r,selectedKey:i=[]}=e;return f().createElement(K,{"data-index":n,className:a?"overflow-menu-item":"",key:t.key,title:r?t.text:"",active:!!t.key&&i.includes(t.key)},(0,N.nC)(t,{width:"100%"}))}var B,q=e=>{var t,n=null!==(t=u)&&void 0!==t?t:u=window.innerWidth-document.body.clientWidth;document.body.style.paddingRight=e.detail?n+"px":"",document.body.style.overflow=e.detail?"hidden":"",document.body.style.touchAction=e.detail?"none":""};function G(e){var t,{index:n,hidden:a,item:r,topData:i,showTooltip:l,selectedKey:o=[],overflow:c}=e;return(null===(t=r.items)||void 0===t?void 0:t.length)>0?f().createElement(A,{"data-index":n,className:S()("popover",{subprime:!i,"overflow-menu-item":a}),trigger:"hover",placement:i?"bottom-start":"right-start",distance:0,anchorDisplay:"block",strategy:"fixed"},f().createElement(K,{className:"sub-menu-item-label",key:r.key,slot:"anchor",title:l?r.title:""},(0,N.cx)(r,!i)),f().createElement("div",{className:S()("sub-menu-wrapper",{"overflow-menu-wrapper":c})},r.items.map((e=>f().createElement(f().Fragment,{key:e.key},f().createElement(F,{item:e,selectedKey:o,showTooltip:l})))))):null}function L(e){var t,{item:n,showTooltip:a,selectedKey:r=[]}=e;return(null===(t=n.items)||void 0===t?void 0:t.length)>0?"category"===n.childLayout?f().createElement(P,{item:n,selectedKey:r,showTooltip:a,placement:"right-start",anchorDisplay:"block"}):"siteMap"===n.childLayout?f().createElement(W,{item:n,selectedKey:r,showTooltip:a,placement:"right-start",anchorDisplay:"block",topData:!1}):f().createElement(f().Fragment,null,f().createElement("div",{className:"group-label"},n.title),f().createElement("div",{className:"group-wrapper"},n.items.map((e=>f().createElement(f().Fragment,{key:e.key},f().createElement(F,{item:e,showTooltip:a,selectedKey:r})))))):null}function P(e){var t,{index:n,hidden:a,item:r,selectedKey:i=[],showTooltip:l,placement:o="bottom-start",anchorDisplay:c}=e;return(null===(t=r.items)||void 0===t?void 0:t.length)>0?f().createElement(A,{"data-index":n,className:S()("three-level-menu-popover","popover",{"overflow-menu-item":a}),trigger:"hover",placement:o,distance:0,key:r.key,strategy:"fixed",anchorDisplay:c,beforeVisibleChange:q},f().createElement(K,{className:"sub-menu-item-label",key:r.key,slot:"anchor",title:l?r.title:""},(0,N.cx)(r)),f().createElement("div",{className:"sub-menu-wrapper"},f().createElement(R.m,{menuItem:r,selectedKey:i}))):null}function W(e){var t,{index:n,hidden:a,item:r,selectedKey:i=[],showTooltip:l,placement:o="bottom-start",anchorDisplay:c,topData:s}=e,[m,u]=(0,x.useState)();return(null===(t=r.items)||void 0===t?void 0:t.length)>0?f().createElement(A,{"data-index":n,className:S()("popover",{"overflow-menu-item":a}),trigger:"hover",placement:o,distance:0,key:r.key,strategy:"fixed",anchorDisplay:c,beforeVisibleChange:e=>{u(e.detail),q(e)}},f().createElement(K,{className:"sub-menu-item-label",key:r.key,slot:"anchor",title:l?r.title:""},(0,N.cx)(r)),f().createElement("div",{className:S()("sub-menu-sit-map-wrapper",{"in-group-site-map":!s}),onClick:e=>e.stopPropagation()},f().createElement(T.hX,{menuGroup:r,selectedKey:i,visible:m}))):null}r=z("eo-nav-menu",{styleTexts:[D.Z,V.Z,I.Z,w.Z]}),i=M({attribute:!1}),o=M({type:Boolean});var j=new WeakMap,U=new WeakMap;class Q extends E.ReactNextElement{constructor(){super(...arguments),(0,p.Z)(this,j,{writable:!0,value:(s(this),l(this))}),(0,p.Z)(this,U,{writable:!0,value:c(this)})}get menu(){return(0,g.Z)(this,j)}set menu(e){(0,h.Z)(this,j,e)}get showTooltip(){return(0,g.Z)(this,U)}set showTooltip(e){(0,h.Z)(this,U,e)}render(){return f().createElement(H,{menu:this.menu,showTooltip:this.showTooltip})}}function H(e){var t,n,{menu:a,showTooltip:r}=e,i=(0,y.getHistory)(),l=(0,x.useRef)(null),[o,c]=(0,x.useState)(i.location),[s,m]=(0,x.useState)(Number.MAX_SAFE_INTEGER),{pathname:u,search:p}=o,[h,g]=(0,x.useState)([]),v=function(){var e=(0,d.Z)((function*(){var e,{selectedKeys:t}=(0,Z.OZ)(null!==(e=null==a?void 0:a.menuItems)&&void 0!==e?e:[],u,p,"");g(t)}));return function(){return e.apply(this,arguments)}}();(0,x.useEffect)((()=>{var e=i.listen((e=>{c(e)}));return v(),e}),[]),(0,x.useEffect)((()=>{if(l.current){var e=new ResizeObserver((()=>{if(l.current){var e,{width:t}=null!==(e=l.current.getClientRects()[0])&&void 0!==e?e:{},n=l.current.childNodes;if(n.length&&t){for(var a=t,r=n.length,i=0;i<n.length;i++){var{width:o,height:c}=n[i].getClientRects()[0];if(!c&&a-40<0){r=i-1;break}if((a=a-o-(i>0?8:0))<0){r=i;break}}m(r<0?0:r)}}}));return e.observe(l.current),()=>{e.disconnect()}}}),[]);var b=(0,x.useMemo)((()=>({type:"subMenu",title:"···",items:null==a?void 0:a.menuItems.slice(s,a.menuItems.length)})),[null==a?void 0:a.menuItems,s]);return f().createElement("div",{ref:l,className:"nav-menu-wrapper"},null==a?void 0:a.menuItems.map(((e,t)=>{var n,a=s<=t;return f().createElement(f().Fragment,{key:e.key},(0,N.cl)(e,!0)&&"category"===e.childLayout&&null!==(n=e.items)&&void 0!==n&&n.length?f().createElement(P,{index:t,hidden:a,item:e,showTooltip:r,selectedKey:h}):"group"===e.type&&"siteMap"===e.childLayout?f().createElement(W,{index:t,hidden:a,item:e,showTooltip:r,selectedKey:h,topData:!0}):f().createElement(F,{index:t,hidden:a,item:e,showTooltip:r,selectedKey:h,topData:!0}))})),f().createElement(F,{hidden:s>(null!==(t=null==a||null===(n=a.menuItems)||void 0===n?void 0:n.length)&&void 0!==t?t:0),item:b,showTooltip:r,selectedKey:h,overflow:!0,topData:!0}))}m=Q,({e:[l,c,s],c:[B,a]}=(0,v.Z)(m,[[i,1,"menu"],[o,1,"showTooltip"]],[r],0,void 0,E.ReactNextElement)),a();var O,X,$,J=n(8470),Y=n(9701),ee=n(4497),te=n(2152);(0,Y.initializeReactI18n)(ee.NS,ee.k);var ne,{defineElement:ae}=(0,k.createDecorators)();X=ae("eo-launchpad-button",{styleTexts:[te.Z]});class re extends E.ReactNextElement{render(){return f().createElement(J.L,null)}}$=re,[ne,O]=(0,v.Z)($,[],[X],0,void 0,E.ReactNextElement).c,O();var ie,le,oe,ce=n(7004),se=n(7370),me=n(4758),ue=n(6976),de=n(2892),pe=n(2085),he=n(5178),ge=f().createContext({}),ve=()=>f().useContext(ge);function be(e){var{name:t,items:n}=e;return f().createElement("li",{className:"menu-group"},f().createElement("div",{className:"menu-group-label"},t),f().createElement("ul",{className:"menu"},n.map((e=>"dir"===e.type?f().createElement(ke,{key:"".concat(e.type,"-").concat(e.id),name:e.name,items:e.items}):f().createElement(xe,{key:"".concat(e.type,"-").concat(e.id),item:e})))))}function xe(e){var t,{item:n}=e,{loadingFavorites:a,pushRecentVisit:r,toggleStar:i,isStarred:l}=ve(),o=(0,x.useMemo)((()=>l(n)),[l,n]),c=(0,x.useCallback)((()=>{i(n)}),[n,i]),s=(0,x.useCallback)((()=>{r(n)}),[n,r]);return f().createElement("li",{className:S()("menu-item",{starred:o,"can-star":!a})},f().createElement(de.kk,(0,b.Z)({onClick:s},"app"===n.type?{url:n.url}:{href:n.url,target:"_blank"}),f().createElement(de.V3,(0,b.Z)({className:"menu-icon",lib:"easyops",icon:"micro-app-center"},null!==(t=n.menuIcon)&&void 0!==t&&t.lib&&n.menuIcon.icon?(0,he.pick)(n.menuIcon,["lib","icon","theme","category","prefix"]):null)),f().createElement("span",{className:"menu-item-label"},n.name)),f().createElement(de.V3,{lib:"fa",prefix:o?"fas":"far",icon:"star",className:"menu-item-star",title:o?"取消收藏":"收藏",onClick:c}))}function fe(e){var t,{item:n}=e,{pushRecentVisit:a,toggleStar:r}=ve(),i=(0,x.useCallback)((()=>{"link"!==n.type&&a(n)}),[n,a]),l=(0,x.useCallback)((()=>{r(n)}),[n,r]);return f().createElement("li",{className:"sidebar-menu-item"},f().createElement(de.kk,(0,b.Z)({onClick:i},"app"===n.type?{url:n.url}:{href:n.url,target:"_blank"}),f().createElement(de.V3,(0,b.Z)({className:"sidebar-menu-icon",lib:"easyops",icon:"micro-app-center"},null!==(t=n.menuIcon)&&void 0!==t&&t.lib&&n.menuIcon.icon?(0,he.pick)(n.menuIcon,["lib","icon","theme","category","prefix"]):null)),f().createElement("span",{className:"menu-item-label"},n.name)),f().createElement(de.V3,{lib:"fa",icon:"xmark",className:"menu-item-remove",onClick:l}))}function ke(e){var{name:t,items:n}=e,{searching:a}=ve(),[r,i]=(0,x.useState)(!1),[l,o]=(0,x.useState)(!1),c=(0,x.useCallback)((()=>{a?o((e=>!e)):i((e=>!e))}),[a]);(0,x.useEffect)((()=>{o(!0)}),[a]);var s=a?l:r;return f().createElement("li",{className:"menu-item folder"},f().createElement(de.kk,{onClick:c},f().createElement(de.V3,{lib:"fa",prefix:"far",icon:"folder-open",className:"menu-icon"}),f().createElement("span",{className:"menu-item-label"},t),f().createElement(de.V3,{lib:"antd",icon:s?"up":"down",className:"menu-item-toggle"})),f().createElement("ul",{className:S()("sub-menu",{expanded:s})},n.map((e=>f().createElement(xe,{key:"".concat(e.type,"-").concat(e.id),item:e})))))}function ye(e){var{active:t}=e,n=(0,x.useRef)(null),a=(0,x.useCallback)((()=>{var e;null===(e=n.current)||void 0===e||e.focus()}),[]),{loading:r,q:i,setQ:l,menuGroups:o,favorites:c,loadingFavorites:s,recentVisits:m,pushRecentVisit:u,toggleStar:d,isStarred:p}=(0,pe.m1)(t),h=!!i,g=(0,x.useCallback)((e=>{l(e.target.value)}),[l]),v=(0,x.useCallback)((()=>{l("")}),[l]);return f().createElement("div",{className:S()("launchpad",{active:t})},f().createElement(ge.Provider,{value:{searching:h,loadingFavorites:s,pushRecentVisit:u,toggleStar:d,isStarred:p}},f().createElement("div",{className:"sidebar"},f().createElement("div",{className:"quick-nav"},f().createElement("div",{className:"quick-nav-label"},"快捷访问"),f().createElement("ul",{className:"sidebar-menu"},c.map(((e,t)=>f().createElement(fe,{key:t,item:e})))))),f().createElement("div",{className:S()("content",{loading:r})},f().createElement(Ee,{loading:r}),f().createElement("div",{className:"search-box",onClick:a},f().createElement(de.V3,{lib:"fa",icon:"magnifying-glass",className:"search-icon"}),f().createElement("input",{ref:n,placeholder:"通过关键字搜索",value:i,onChange:g,className:"search-input"}),f().createElement(de.V3,{lib:"antd",theme:"filled",icon:"close-circle",className:S()("search-clear",{searching:h}),onClick:v})),f().createElement("div",{className:S()({empty:0===m.length})},f().createElement("div",{className:"recent-visits-label"},"最近访问"),f().createElement("ul",{className:"recent-visits"},m.map(((e,t)=>f().createElement("li",{key:t},f().createElement(de.kk,(0,b.Z)({onClick:()=>u(e)},"app"===e.type?{url:e.url}:{href:e.url,target:"_blank"}),f().createElement("span",null,e.name))))))),f().createElement("ul",{className:"menu-groups"},o.map((e=>f().createElement(be,{key:e.name,name:e.name,items:e.items})))))))}function Ee(e){var{loading:t}=e;return t&&f().createElement("div",{className:"spinner"},f().createElement(de.V3,{lib:"fa",icon:"spinner",spinning:!0}))}var we,{defineElement:Ne}=(0,k.createDecorators)(),Ze=(0,ce.unwrapProvider)("basic.lock-body-scroll");le=Ne("eo-launchpad-button-v2",{styleTexts:[ue.Z]});class Ce extends E.ReactNextElement{disconnectedCallback(){super.disconnectedCallback(),Ze(this,!1)}render(){return f().createElement(Se,{host:this})}}function Se(e){var{host:t}=e,[n,a]=(0,x.useState)(!1),[r,i]=(0,x.useState)(!1),l=()=>{i((e=>!e))};return(0,x.useEffect)((()=>(0,y.getHistory)().listen((()=>{i(!1)}))),[]),(0,x.useEffect)((()=>{r&&!n&&a(!0)}),[r,n]),(0,x.useEffect)((()=>(se.Z.filter=function(){return!0},(0,se.Z)("alt+l",(e=>{e.preventDefault(),i((e=>!e))})),(0,se.Z)("esc",(()=>{i(!1)})),()=>{se.Z.unbind("alt+l"),se.Z.unbind("esc")})),[]),(0,x.useEffect)((()=>{Ze(t,r)}),[r,t]),(0,x.useEffect)((()=>{pe.yp.schedulePrefetch(),pe.sK.schedulePrefetch()}),[]),f().createElement(f().Fragment,null,f().createElement("a",{role:"button",className:S()("launchpad-button",{active:r}),onClick:l},f().createElement(me.Z,null)),f().createElement("div",{className:S()("mask",{active:r}),onClick:l}),n&&f().createElement(ye,{active:r}))}oe=Ce,[we,ie]=(0,v.Z)(oe,[],[le],0,void 0,E.ReactNextElement).c,ie();var Re=n(1815),Te=(0,E.wrapBrick)("eo-icon"),De=(0,E.wrapBrick)("eo-link"),Ve=(0,E.wrapBrick)("eo-dropdown-actions",{onActionClick:"action.click",onVisibleChange:"visible.change"}),Ie=((0,ce.unwrapProvider)("basic.show-dialog"),n(107));function ze(e){var{data:t,actions:n,onActionClick:a}=e,{name:r,items:i}=t,[l,o]=(0,x.useState)(!1),c=(0,x.useMemo)((()=>null==n?void 0:n.filter((e=>(0,y.checkIfByTransform)(e,{type:"group"})))),[n]),s=(0,x.useCallback)((e=>{null==a||a({data:t,action:e.detail})}),[t,a]);return f().createElement("li",{className:S()("menu-group",{empty:0===i.length})},f().createElement("div",{className:"menu-group-label-wrapper"},f().createElement("span",{className:"menu-group-label"},r),f().createElement(Ve,{actions:c,onVisibleChange:e=>{o(e.detail)},onActionClick:s},f().createElement(Te,{lib:"fa",icon:"gear",className:S()("menu-config",{active:l})}))),f().createElement("ul",{className:"menu"},i.map((e=>"dir"===e.type?f().createElement(Ke,{key:e.instanceId,data:e,actions:n,onActionClick:a}):f().createElement(Me,{key:"".concat(e.type,"-").concat(e.id),data:e})))))}function Me(e){var t,{data:n}=e,a=(0,x.useMemo)((()=>"app"===n.type?(0,Ie.d)(n.locales,n.name):n.name),[n]);return f().createElement("li",{className:"menu-item"},f().createElement(De,null,f().createElement(Te,(0,b.Z)({className:"menu-icon",lib:"easyops",icon:"micro-app-center"},null!==(t=n.menuIcon)&&void 0!==t&&t.lib&&n.menuIcon.icon?(0,he.pick)(n.menuIcon,["lib","icon","theme","category","prefix"]):null)),f().createElement("span",{className:"menu-item-label"},a)))}function Ke(e){var{data:t,actions:n,onActionClick:a}=e,{name:r,items:i}=t,[l,o]=(0,x.useState)(!1),[c,s]=(0,x.useState)(!1),m=(0,x.useMemo)((()=>null==n?void 0:n.filter((e=>(0,y.checkIfByTransform)(e,{type:"dir"})))),[n]),u=(0,x.useCallback)((()=>{s((e=>!e))}),[]),d=(0,x.useCallback)((e=>{null==a||a({data:t,action:e.detail})}),[t,a]);return f().createElement("li",{className:S()("menu-item folder",{empty:0===i.length})},f().createElement("div",{className:"menu-folder-label-wrapper"},f().createElement(De,{onClick:u},f().createElement(Te,{lib:"fa",prefix:"far",icon:"folder-open",className:"menu-icon"}),f().createElement("span",{className:"menu-item-label"},r),f().createElement(Te,{lib:"antd",icon:c?"up":"down",className:"menu-item-toggle"})),f().createElement(Ve,{actions:m,onVisibleChange:e=>{o(e.detail)},onActionClick:d},f().createElement(Te,{lib:"fa",icon:"gear",className:S()("menu-config",{active:l})}))),f().createElement("ul",{className:S()("sub-menu",{expanded:c})},i.map((e=>f().createElement(Me,{key:e.instanceId,data:e})))))}var Ae,Fe,_e,Be,qe,Ge,Le,Pe,We,je,Ue,Qe,He,Oe=n(9534),{defineElement:Xe,property:$e,event:Je}=(0,k.createDecorators)();Fe=Xe("nav.launchpad-config",{styleTexts:[Oe.Z]}),_e=$e({attribute:!1}),qe=$e({attribute:!1}),Le=Je({type:"action.click"});var Ye=new WeakMap,et=new WeakMap,tt=new WeakMap,nt=new WeakMap,at=new WeakMap;class rt extends E.ReactNextElement{constructor(){super(...arguments),(0,p.Z)(this,nt,{get:lt,set:it}),(0,p.Z)(this,Ye,{writable:!0,value:(Ue(this),Be(this))}),(0,p.Z)(this,et,{writable:!0,value:Ge(this)}),(0,p.Z)(this,tt,{writable:!0,value:Pe(this)}),(0,p.Z)(this,at,{writable:!0,value:e=>{(0,g.Z)(this,nt).emit(e)}})}get menuGroups(){return(0,g.Z)(this,Ye)}set menuGroups(e){(0,h.Z)(this,Ye,e)}get actions(){return(0,g.Z)(this,et)}set actions(e){(0,h.Z)(this,et,e)}render(){return f().createElement(ot,{menuGroups:this.menuGroups,actions:this.actions,onActionClick:(0,g.Z)(this,at)})}}function it(e){je(this,e)}function lt(){return We(this)}function ot(e){var{menuGroups:t,actions:n,onActionClick:a}=e;return f().createElement("ul",{className:"menu-groups"},null==t?void 0:t.map((e=>f().createElement(ze,{key:e.instanceId,data:e,actions:n,onActionClick:a}))))}Qe=rt,({e:[Be,Ge,Pe,We,je,Ue],c:[He,Ae]}=(0,v.Z)(Qe,[[_e,1,"menuGroups"],[qe,1,"actions"],[Le,1,"actionClickEvent",e=>(0,g.Z)(e,tt),(e,t)=>(0,h.Z)(e,tt,t)]],[Fe],0,(e=>at.has((0,Re.Z)(e))),E.ReactNextElement)),Ae();var ct,st,mt,ut,dt=n(1150),pt=n(1229),ht=n(2890),gt=n(5239),vt=n.n(gt),bt=n(7128),xt=(0,E.wrapBrick)("eo-icon"),ft=(0,E.wrapBrick)("eo-link"),{defineElement:kt,property:yt}=(0,k.createDecorators)();st=kt("nav.easyops-navbar-alerts",{styleTexts:[bt.Z]});class Et extends E.ReactNextElement{render(){return f().createElement(Nt,null)}}mt=Et,[ut,ct]=(0,v.Z)(mt,[],[st],0,void 0,E.ReactNextElement).c,ct();var wt=new ht.o(localStorage);function Nt(){var[e,t]=(0,x.useState)(null),[n,a]=(0,x.useState)(null),r=(0,dt.useCurrentApp)(),i=(0,x.useMemo)((()=>{var e=pt.auth.getAuth();return"license:".concat(e.org)}),[]);(0,x.useEffect)((()=>{var e,n,a=pt.auth.getAuth(),r=null===(e=a.license)||void 0===e?void 0:e.validDaysLeft;r&&r<=15&&a.isAdmin&&(!(n=wt.getItem(i))||vt()().unix()>n)&&t(r)}),[i]),(0,x.useEffect)((()=>{var e=e=>{var t=e.detail.renderTime,{loadTime:n,loadInfoPage:i}=(0,y.getRuntime)().getMiscSettings();null!=r&&r.isBuildPush&&n>0&&t>n&&a({renderTime:Ct(t),suggestTime:Ct(n),suggestUrl:i})};return window.addEventListener("route.render",e),()=>{window.removeEventListener("route.render",e)}}),[r]);var l=(0,x.useCallback)((()=>{wt.setItem(i,vt()().unix()+86400),t(null)}),[i]);return f().createElement(f().Fragment,null,n&&f().createElement(Zt,{text:"您的页面存在性能问题, 当前页面渲染时间 ".concat(n.renderTime," 秒, 规定阈值为: ").concat(n.suggestTime," 秒, 您已超过。请您针对该页面进行性能优化!"),type:"warning",link:n.suggestUrl?{label:"建议解决思路",url:n.suggestUrl}:void 0}),null!==e&&f().createElement(Zt,{text:"离 License 过期还有 ".concat(e," 天"),type:"info",closable:!0,onClose:l}))}function Zt(e){var{text:t,type:n,closable:a,link:r,onClose:i}=e;return f().createElement("div",{className:"alert ".concat(n)},f().createElement("span",{className:"text"},t),r&&f().createElement(ft,{className:"link",href:r.url,target:"_blank"},r.label),a&&f().createElement(xt,{lib:"antd",icon:"close",className:"icon",role:"button",onClick:i}))}function Ct(e){return Math.floor(100*e)/1e5}var St,Rt,Tt,Dt,Vt=n(2252),{defineElement:It,property:zt}=(0,k.createDecorators)();Rt=It("eo-launchpad-quick-access",{styleTexts:[Vt.Z]});class Mt extends E.ReactNextElement{render(){return f().createElement(Kt,null)}}function Kt(){var{favorites:e,loadingFavorites:t,pushRecentVisit:n,toggleStar:a,isStarred:r}=(0,pe.m1)(!0);return f().createElement(ge.Provider,{value:{searching:!1,loadingFavorites:t,pushRecentVisit:n,toggleStar:a,isStarred:r}},f().createElement("ul",{className:"quick-access-list"},e.map(((e,t)=>f().createElement(fe,{key:t,item:e})))))}Tt=Mt,[Dt,St]=(0,v.Z)(Tt,[],[Rt],0,void 0,E.ReactNextElement).c,St();var At,Ft,_t,Bt,qt=n(2222),Gt=(0,E.wrapBrick)("eo-icon"),{defineElement:Lt,property:Pt}=(0,k.createDecorators)();Ft=Lt("eo-search-launchpad",{styleTexts:[qt.Z]});class Wt extends E.ReactNextElement{render(){return f().createElement(jt,null)}}function jt(){var e=(0,x.useRef)(null),t=(0,x.useCallback)((()=>{var t;null===(t=e.current)||void 0===t||t.focus()}),[]),[n,a]=(0,x.useState)(!1),{loading:r,q:i,setQ:l,menuGroups:o,loadingFavorites:c,pushRecentVisit:s,toggleStar:m,isStarred:u}=(0,pe.m1)(n),d=!!i,p=(0,x.useCallback)((e=>{l(e.target.value)}),[l]),h=(0,x.useCallback)((()=>{l("")}),[l]);return f().createElement(ge.Provider,{value:{searching:d,loadingFavorites:c,pushRecentVisit:s,toggleStar:m,isStarred:u}},f().createElement("div",{className:"container"},f().createElement("div",{className:"search-box",onClick:t},f().createElement(Gt,{lib:"fa",icon:"magnifying-glass",className:"search-icon"}),f().createElement("input",{ref:e,placeholder:"搜索产品/微应用",value:i,onChange:p,className:"search-input",onFocus:()=>a(!0),onBlur:()=>a(!1)}),f().createElement(Gt,{lib:"antd",theme:"filled",icon:"close-circle",className:S()("search-clear",{searching:d}),onClick:h,onMouseDown:e=>e.preventDefault()})),f().createElement("div",{className:S()("dropdown",{"dropdown-active":n}),onMouseDown:e=>e.preventDefault()},f().createElement("div",{className:S()("dropdown-content",{loading:r})},f().createElement(Ut,{loading:r}),f().createElement("ul",{className:"menu-groups"},o.map((e=>f().createElement(be,{key:e.name,name:e.name,items:e.items}))))))))}function Ut(e){var{loading:t}=e;return t&&f().createElement("div",{className:"spinner"},f().createElement(Gt,{lib:"fa",icon:"spinner",spinning:!0}))}_t=Wt,[Bt,At]=(0,v.Z)(_t,[],[Ft],0,void 0,E.ReactNextElement).c,At();var Qt,Ht,Ot,Xt,$t=n(4506),Jt=(0,E.wrapBrick)("eo-link"),{defineElement:Yt,property:en}=(0,k.createDecorators)();Ht=Yt("eo-launchpad-recent-visits",{styleTexts:[$t.Z]});class tn extends E.ReactNextElement{render(){return f().createElement(nn,null)}}function nn(){var{recentVisits:e,pushRecentVisit:t}=(0,pe.m1)(!0);return f().createElement("ul",{className:"recent-visits"},e.map(((e,n)=>f().createElement("li",{key:n},f().createElement(Jt,(0,b.Z)({onClick:()=>t(e)},"app"===e.type?{url:e.url}:{href:e.url,target:"_blank"}),f().createElement("span",null,e.name))))))}Ot=tn,[Xt,Qt]=(0,v.Z)(Ot,[],[Ht],0,void 0,E.ReactNextElement).c,Qt()},7128:(e,t,n)=>{n.d(t,{Z:()=>o});var a=n(9601),r=n.n(a),i=n(2609),l=n.n(i)()(r());l.push([e.id,":host{display:block}:host([hidden]){display:none}.alert{height:32px;padding:0 20px;display:flex;justify-content:center;align-items:center}.text{color:var(--antd-text-color);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.icon{margin-left:20px;cursor:pointer;color:#8c8c8c}.info{background-color:var(--color-info-bg)}.warning{background-color:var(--color-warning-bg)}",""]);const o=l.toString()},6976:(e,t,n)=>{n.d(t,{Z:()=>d});var a=n(9601),r=n.n(a),i=n(2609),l=n.n(i),o=n(8991),c=n.n(o),s=new URL(n(2754),n.b),m=l()(r()),u=c()(s);m.push([e.id,`:host{display:inline-block;width:32px;height:32px;--local-sidebar-menu-item-active-bg:rgba(0,0,0,0.04);--local-background:#fff;--local-menu-icon-color:#8c8c8c;--local-max-height:calc(100vh - var(--app-bar-height) - 10px)}:host([hidden]){display:none}:host-context(html[data-theme="dark"]),\n:host-context(html[data-theme="dark-v2"]){--local-sidebar-menu-item-active-bg:rgba(255,255,255,0.04);--local-background:#26262a;--local-menu-icon-color:rgba(255,255,255,0.45)}.launchpad-button{width:100%;height:100%;display:flex;justify-content:center;align-items:center;color:#999;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border-radius:3px}.launchpad-button:hover,\n.launchpad-button.active{background-color:var(--color-fill-bg-base-1)}.launchpad-button.active{color:var(--color-brand)}.mask{position:fixed;top:0;bottom:0;left:0;right:0;z-index:1;display:none}.mask.active{display:block}.launchpad{display:none;position:absolute;margin-top:4px;z-index:1;width:1110px;max-width:calc(100vw - 100px);max-height:var(--local-max-height);min-height:50vh;min-height:min(500px,var(--local-max-height));background-color:var(--local-background);border:1px solid var(--color-text-divider-line);border-radius:6px;box-shadow:var(--fullscreen-overlay-shadow)}.launchpad.active{display:flex}.sidebar{width:190px;padding:20px 0 24px;display:flex;flex-direction:column;background:var(--color-fill-bg-base-3);min-width:0;background-image:url(${u});background-size:205px 205px;background-repeat:no-repeat;background-position:left 52px bottom 27px}.quick-nav-label,\n.menu-group-label,\n.menu-item-label,\n.recent-visits span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-menu,\n.menu-groups,\n.menu,\n.sub-menu,\n.recent-visits{list-style:none;margin:0;padding:0}.sidebar-menu,\n.menu,\n.sub-menu{display:flex;flex-direction:column;gap:14px}.sidebar-menu-item > eo-link,\n.menu-item > eo-link,\n.recent-visits eo-link{display:block;min-width:0}.sidebar-menu-item > eo-link::part(link),\n.menu-item > eo-link::part(link){height:20px;display:flex;align-items:center;gap:8px;color:var(--color-header-text)}.sidebar-menu-item{padding:0 12px 0 16px;justify-content:space-between}.sidebar-menu-icon{color:var(--left-sidebar-item-collapsed-icon-color)}.quick-nav{overflow-y:auto;flex:1}.quick-nav-label{color:var(--color-header-text);font-weight:500;margin-bottom:14px;padding:0 16px}.content{flex:1;padding:20px 24px 24px;min-width:0;overflow-y:auto;display:flex;flex-direction:column;gap:24px}.search-box{border-bottom:1px solid var(--color-text-divider-line);display:flex;gap:8px;align-items:center;padding:10px 0;margin-top:-10px;cursor:text}.search-icon{color:var(--color-auxiliary-text)}.search-input{padding:0;margin:0;border:none;outline:none;color:inherit;background-color:transparent;font-size:14px;line-height:22px;flex:1;min-width:0}.search-input::placeholder{color:var(--color-disabled-text);opacity:1}.search-clear{display:none;color:var(--color-secondary-text);cursor:pointer}.search-clear.searching{display:inline-block}.search-clear:hover{color:var(--color-auxiliary-text)}.menu-groups,\n.recent-visits{grid-template-columns:repeat(auto-fill,minmax(168px,1fr))}.menu-groups{display:grid;grid-gap:32px 8px;gap:32px 8px}.menu-group{padding-right:12px;color:var(--color-header-text)}.menu-group-label{font-size:var(--card-title-font-size);font-weight:500;color:var(--color-header-text);margin-bottom:14px}.sidebar-menu-item,\n.menu-item:not(.folder){display:flex;gap:8px;align-items:center}.menu-icon{color:var(--local-menu-icon-color)}.menu-item.active,\n.menu-item.active .menu-icon{color:var(--color-brand-active)}.sub-menu:not(.expanded){display:none}.sub-menu{margin-top:14px;margin-left:8px;border-left:1px solid var(--color-text-divider-line);padding-left:15px}.menu-item-remove,\n.menu-item-star{cursor:pointer}.menu-item-remove,\n.menu-item-star,\n.menu-item-toggle{color:var(--color-secondary-text)}.sidebar-menu-item:not(:hover) .menu-item-remove{display:none}.menu-item-remove:hover{color:var(--color-normal-text)}.menu-item-remove:active{color:var(--color-strong-text)}.menu-item-star{display:none}.can-star.starred > .menu-item-star,\n.can-star:hover > .menu-item-star{display:inline-block}.can-star:not(.starred) > .menu-item-star{color:var(--color-secondary-text)}.starred > .menu-item-star{color:var(--palette-yellow-6)}.recent-visits-label{margin-bottom:12px;font-size:var(--card-title-font-size);color:var(--color-header-text);font-weight:500}.recent-visits{display:grid;grid-gap:8px;gap:8px}.recent-visits eo-link::part(link){background-color:var(--color-fill-bg-base-1);border-radius:3px;color:var(--color-header-text);display:flex;align-items:center;height:24px;padding:0 8px}.sidebar-menu-item > eo-link:hover::part(link),\n.sidebar-menu-item > eo-link:hover .sidebar-menu-icon,\n.menu-item > eo-link:hover::part(link),\n.menu-item > eo-link:hover .menu-icon,\n.menu-item > eo-link:hover .menu-item-toggle,\n.recent-visits eo-link:hover::part(link){color:var(--color-brand-hover)}.spinner{display:flex;justify-content:center;align-items:center;color:var(--theme-doderblue-color);flex:1;font-size:30px}.empty,\n.loading > :not(.spinner){display:none}@supports not (inset: 0){.search-box,\n .sidebar-menu,\n .menu,\n .sub-menu,\n .sidebar-menu-item,\n .menu-item:not(.folder),\n .sidebar-menu-item > eo-link::part(link),\n .menu-item > eo-link::part(link){gap:0}.content{display:grid;grid-auto-flow:row}.content:not(.loading){height:-webkit-min-content;height:-moz-min-content;height:min-content}.sidebar-menu > :not(:first-child),\n .menu > :not(:first-child),\n .sub-menu > :not(:first-child){margin-top:14px}.search-icon,\n .sidebar-menu-icon,\n .menu-icon{margin-right:8px}.search-clear,\n .menu-item-star,\n .menu-item-toggle{margin-left:8px}}`,""]);const d=m.toString()},9534:(e,t,n)=>{n.d(t,{Z:()=>o});var a=n(9601),r=n.n(a),i=n(2609),l=n.n(i)()(r());l.push([e.id,":host{display:block;--local-menu-icon-color:#8c8c8c}:host([hidden]){display:none;--local-menu-icon-color:rgba(255,255,255,0.45)}ul{list-style:none;margin:0;padding:0}.menu-groups{display:grid;grid-gap:32px 16px;gap:32px 16px;grid-template-columns:repeat(auto-fill,minmax(168px,1fr))}.sidebar-menu,\n.menu,\n.sub-menu{display:flex;flex-direction:column;gap:14px}.menu-folder-label-wrapper > eo-link,\n.menu-item > eo-link{display:block}.menu-folder-label-wrapper > eo-link::part(link),\n.menu-item > eo-link::part(link){height:20px;display:flex;align-items:center;gap:8px;color:var(--color-header-text)}.menu-group-label-wrapper,\n.menu-folder-label-wrapper,\n.menu-item:not(.folder){display:flex;gap:8px;align-items:center}.menu-group-label-wrapper{gap:3px}.menu-group:not(.empty) .menu-group-label-wrapper{margin-bottom:14px}.menu-group-label,\n.menu-item-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-group-label{font-size:var(--card-title-font-size);font-weight:500;color:var(--color-header-text)}.menu-icon{color:var(--local-menu-icon-color)}.menu-folder-label-wrapper > eo-link,\n.menu-item > eo-link{max-width:100%;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;min-width:0}.sub-menu:not(.expanded){display:none}.sub-menu{margin-left:8px;border-left:1px solid var(--color-text-divider-line);padding-left:15px}.menu-item:not(.empty) .sub-menu{margin-top:14px}.menu-item-toggle{color:var(--color-secondary-text)}.menu-config{visibility:hidden;color:var(--color-brand);cursor:pointer;display:flex;justify-content:center;align-items:center;width:24px;height:24px}.menu-config.active,\n.menu-group-label-wrapper:hover .menu-config,\n.menu-folder-label-wrapper:hover .menu-config{visibility:visible}.menu-folder-label-wrapper > eo-dropdown-actions{margin:-3px 0}.menu-config:hover,\n.menu-item > eo-link:hover::part(link),\n.menu-item > eo-link:hover .menu-icon,\n.menu-folder-label-wrapper > eo-link:hover::part(link),\n.menu-folder-label-wrapper > eo-link:hover .menu-icon,\n.menu-folder-label-wrapper > eo-link:hover .menu-item-toggle{color:var(--color-brand-hover)}",""]);const o=l.toString()},2252:(e,t,n)=>{n.d(t,{Z:()=>o});var a=n(9601),r=n.n(a),i=n(2609),l=n.n(i)()(r());l.push([e.id,":host{display:block}:host([hidden]){display:none}.quick-access-list{display:grid;grid-gap:14px;gap:14px;grid-template-columns:repeat(2,1fr);list-style:none;margin:0;padding:0}.sidebar-menu-item{display:flex;align-items:center;justify-content:space-between;overflow:hidden}.sidebar-menu-item > eo-link{display:block;min-width:0}.sidebar-menu-item > eo-link::part(link){display:flex;align-items:center;height:20px;gap:8px;color:var(--color-header-text)}.sidebar-menu-icon{color:var(--left-sidebar-item-collapsed-icon-color)}.menu-item-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-item-remove{color:var(--color-secondary-text);cursor:pointer}.sidebar-menu-item:not(:hover) .menu-item-remove{display:none}.menu-item-remove:hover{color:var(--color-normal-text)}.menu-item-remove:active{color:var(--color-strong-text)}.sidebar-menu-item > eo-link:hover::part(link),\n.sidebar-menu-item > eo-link:hover .sidebar-menu-icon{color:var(--color-brand-hover)}@supports not (inset: 0){.sidebar-menu-item,\n .sidebar-menu-item > eo-link::part(link){gap:0}.sidebar-menu-icon{margin-right:8px}}",""]);const o=l.toString()},4506:(e,t,n)=>{n.d(t,{Z:()=>o});var a=n(9601),r=n.n(a),i=n(2609),l=n.n(i)()(r());l.push([e.id,":host{display:block}:host([hidden]){display:none}.recent-visits{list-style:none;margin:0;padding:0;display:grid;grid-gap:8px;gap:8px;grid-template-columns:repeat(auto-fill,minmax(168px,1fr))}.recent-visits span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.recent-visits eo-link{display:block;min-width:0}.recent-visits eo-link::part(link){background-color:var(--color-fill-bg-base-1);border-radius:3px;color:var(--color-header-text);display:flex;align-items:center;height:24px;padding:0 8px}.recent-visits eo-link:hover::part(link){color:var(--color-brand-hover)}",""]);const o=l.toString()},2222:(e,t,n)=>{n.d(t,{Z:()=>o});var a=n(9601),r=n.n(a),i=n(2609),l=n.n(i)()(r());l.push([e.id,':host{display:block;--local-menu-icon-color:#8c8c8c}:host([hidden]){display:none}:host-context(html[data-theme="dark"]),\n:host-context(html[data-theme="dark-v2"]){--local-menu-icon-color:rgba(255,255,255,0.45)}.container{position:relative}.dropdown{margin-top:5px;position:absolute;top:100%;left:0px;width:100%;z-index:1050;padding:20px 24px 24px;overflow:hidden;box-sizing:border-box;background-color:var(--antd-select-dropdown-bg);border-radius:4px;box-shadow:var(--antd-box-shadow-base);display:none}.dropdown-active{display:block}.search-box{border-bottom:1px solid var(--color-text-divider-line);display:flex;gap:8px;align-items:center;padding:10px 0;cursor:text}.search-icon{color:var(--color-auxiliary-text)}.search-input{padding:0;margin:0;border:none;outline:none;color:inherit;background-color:transparent;font-size:14px;line-height:22px;flex:1;min-width:0}.search-input::placeholder{color:var(--color-disabled-text);opacity:1}.search-clear{display:none;color:var(--color-secondary-text);cursor:pointer}.search-clear.searching{display:inline-block}.search-clear:hover{color:var(--color-auxiliary-text)}.dropdown-content{min-width:0;display:flex;flex-direction:column;gap:24px;max-height:260px;overflow-y:auto}.spinner{display:flex;justify-content:center;align-items:center;color:var(--theme-doderblue-color);flex:1;font-size:30px}.loading > :not(.spinner){display:none}.menu-group-label,\n.menu-item-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-groups,\n.menu,\n.sub-menu{list-style:none;margin:0;padding:0}.menu,\n.sub-menu{display:flex;flex-direction:column;gap:14px}.menu-item > eo-link{display:block;min-width:0}.menu-item > eo-link::part(link){height:20px;display:flex;align-items:center;gap:8px;color:var(--color-header-text)}.menu-groups{grid-template-columns:repeat(auto-fill,minmax(168px,1fr))}.menu-groups{display:grid;grid-gap:32px 8px;gap:32px 8px}.menu-group{padding-right:12px;color:var(--color-header-text)}.menu-group-label{font-size:var(--card-title-font-size);font-weight:500;color:var(--color-header-text);margin-bottom:14px}.menu-item:not(.folder){display:flex;gap:8px;align-items:center}.menu-icon{color:var(--local-menu-icon-color)}.menu-item.active,\n.menu-item.active .menu-icon{color:var(--color-brand-active)}.sub-menu:not(.expanded){display:none}.sub-menu{margin-top:14px;margin-left:8px;border-left:1px solid var(--color-text-divider-line);padding-left:15px}.menu-item-star{cursor:pointer}.menu-item-star,\n.menu-item-toggle{color:var(--color-secondary-text)}.menu-item-star{display:none}.can-star.starred > .menu-item-star,\n.can-star:hover > .menu-item-star{display:inline-block}.can-star:not(.starred) > .menu-item-star{color:var(--color-secondary-text)}.starred > .menu-item-star{color:var(--palette-yellow-6)}.menu-item > eo-link:hover::part(link),\n.menu-item > eo-link:hover .menu-icon,\n.menu-item > eo-link:hover .menu-item-toggle{color:var(--color-brand-hover)}@supports not (inset: 0){.search-box,\n .menu,\n .sub-menu,\n .menu-item:not(.folder),\n .menu-item > eo-link::part(link){gap:0}.dropdown-content{display:grid;grid-auto-flow:row}.dropdown-content:not(.loading){height:-webkit-min-content;height:-moz-min-content;height:min-content}.menu > :not(:first-child),\n .sub-menu > :not(:first-child){margin-top:14px}.search-icon,\n .menu-icon{margin-right:8px}.search-clear,\n .menu-item-star,\n .menu-item-toggle{margin-left:8px}}',""]);const o=l.toString()},8991:e=>{e.exports=function(e,t){return t||(t={}),e?(e=String(e.__esModule?e.default:e),/^['"].*['"]$/.test(e)&&(e=e.slice(1,-1)),t.hash&&(e+=t.hash),/["'() \t\n]|(%20)/.test(e)||t.needQuotes?'"'.concat(e.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):e):e}},2754:(e,t,n)=>{e.exports=n.p+"images/9879d37a.png"}}]);
|
|
2
|
+
//# sourceMappingURL=6332.b709a26f.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunks/6332.b709a26f.js","mappings":"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","sources":["webpack:///./src/nav-menu/index.tsx","webpack:///./src/launchpad/index.tsx","webpack:///./src/launchpad-button-v2/LaunchpadContext.ts","webpack:///./src/launchpad-button-v2/MenuGroup.tsx","webpack:///./src/launchpad-button-v2/Launchpad.tsx","webpack:///./src/launchpad-button-v2/index.tsx","webpack:///./src/launchpad-config/wrapped-bricks.ts","webpack:///./src/launchpad-config/MenuGroup.tsx","webpack:///./src/launchpad-config/index.tsx","webpack:///./src/easyops-navbar-alerts/index.tsx","webpack:///./src/launchpad-quick-access/index.tsx","webpack:///./src/search-launchpad/index.tsx","webpack:///./src/launchpad-recent-visits/index.tsx","webpack:///./src/easyops-navbar-alerts/styles.shadow.css","webpack:///./src/launchpad-button-v2/styles.shadow.css","webpack:///./src/launchpad-config/styles.shadow.css","webpack:///./src/launchpad-quick-access/styles.shadow.css","webpack:///./src/launchpad-recent-visits/styles.shadow.css","webpack:///./src/search-launchpad/styles.shadow.css","webpack:///../../node_modules/css-loader/dist/runtime/getUrl.js"],"sourcesContent":["import React, {\n CSSProperties,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { getHistory } from \"@next-core/runtime\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport type { GeneralIconProps } from \"@next-bricks/icons/general-icon\";\nimport styleText from \"./nav-menu.shadow.css\";\nimport { LocationDescriptor, UnregisterCallback } from \"history\";\nimport type { SidebarMenu } from \"@next-bricks/basic/menu\";\nimport type {\n MenuItem as MenuItemComponent,\n MenuComponentProps,\n} from \"@next-bricks/basic/menu-item\";\nimport {\n isSimple,\n isSubMenu,\n isGroup,\n renderLinkCom,\n renderSpanCom,\n} from \"./utils.js\";\nimport { initMenuItemAndMatchCurrentPathKeys } from \"@next-shared/general/menu\";\nimport type {\n SidebarMenuGroup,\n SidebarMenuItem,\n SidebarMenuSimpleItem,\n} from \"@next-shared/general/types\";\nimport type {\n Popover,\n PopoverProps,\n PopoverEvents,\n PopoverEventsMapping,\n Placement,\n} from \"@next-bricks/basic/popover\";\nimport \"@next-core/theme\";\nimport classnames from \"classnames\";\nimport { ThreeLevelMenuPopoverContent } from \"./ThreeLevelMenuPopoverContent.js\";\nimport { SiteMapItem } from \"./site-map/SiteMapItem.js\";\nimport SiteMapStyleText from \"../nav-menu/site-map/SiteMapItem.shadow.css\";\nimport ItemTagStyleText from \"../nav-menu/site-map/ItemTag.shadow.css\";\nimport GroupItemStyleText from \"../nav-menu/site-map/GroupItem.shadow.css\";\n\nconst { defineElement, property } = createDecorators();\n\nconst WrappedMenuItem = wrapBrick<MenuItemComponent, MenuComponentProps>(\n \"eo-menu-item\"\n);\nconst WrappedPopover = wrapBrick<\n Popover,\n PopoverProps,\n PopoverEvents,\n PopoverEventsMapping\n>(\"eo-popover\", {\n onVisibleChange: \"visible.change\",\n beforeVisibleChange: \"before.visible.change\",\n});\n\nconst GAP_WIDTH = 8;\n\ninterface NavMenuProps {\n menu?: SidebarMenu;\n showTooltip?: boolean;\n}\n\ninterface MenuItemComProps {\n index?: number;\n hidden?: boolean;\n item: SidebarMenuItem;\n topData?: boolean;\n selectedKey?: string[];\n showTooltip?: boolean;\n overflow?: boolean;\n}\ninterface SimpleMenuItemComProps extends MenuItemComProps {\n item: SidebarMenuSimpleItem;\n}\ninterface MenuGroupComProps extends MenuItemComProps {\n item: SidebarMenuGroup;\n}\nfunction RenderMenuItemCom(props: MenuItemComProps) {\n const { item } = props;\n return isSubMenu(item as SidebarMenuGroup, props.topData) ? (\n <SubMenuItemCom {...props} item={item as SidebarMenuGroup}></SubMenuItemCom>\n ) : isGroup(item) ? (\n <GroupMenuItemCom {...props} item={item as SidebarMenuGroup} />\n ) : (\n <SimpleMenuItemCom\n {...props}\n item={item as SidebarMenuSimpleItem}\n ></SimpleMenuItemCom>\n );\n}\nfunction SimpleMenuItemCom(props: SimpleMenuItemComProps) {\n const { item, index, hidden, showTooltip, selectedKey = [] } = props;\n return (\n <WrappedMenuItem\n data-index={index}\n className={hidden ? \"overflow-menu-item\" : \"\"}\n key={item.key}\n title={showTooltip ? item.text : \"\"}\n active={item.key ? selectedKey.includes(item.key) : false}\n >\n {renderLinkCom(item, { width: \"100%\" })}\n </WrappedMenuItem>\n );\n}\n\nlet scrollWidth: number;\n// istanbul ignore next;\nconst handlePopupVisibleChange = (event: CustomEvent<boolean>) => {\n // 当用户设置滚动条一直显示时,来回切换 overflow: hidden 会导致滚动条显示或隐藏\n // 造成页面宽度变化而导致的抖动的问题\n const paddingRight =\n scrollWidth ??\n (scrollWidth = window.innerWidth - document.body.clientWidth);\n\n document.body.style.paddingRight = event.detail ? paddingRight + \"px\" : \"\";\n document.body.style.overflow = event.detail ? \"hidden\" : \"\";\n document.body.style.touchAction = event.detail ? \"none\" : \"\";\n};\n\nfunction SubMenuItemCom({\n index,\n hidden,\n item,\n topData,\n showTooltip,\n selectedKey = [],\n overflow,\n}: MenuGroupComProps) {\n return item.items?.length > 0 ? (\n <WrappedPopover\n data-index={index}\n className={classnames(\"popover\", {\n subprime: !topData,\n \"overflow-menu-item\": hidden,\n })}\n trigger=\"hover\"\n placement={topData ? \"bottom-start\" : \"right-start\"}\n distance={0}\n anchorDisplay=\"block\"\n strategy=\"fixed\"\n >\n <WrappedMenuItem\n className=\"sub-menu-item-label\"\n key={item.key}\n slot=\"anchor\"\n title={showTooltip ? item.title : \"\"}\n >\n {renderSpanCom(item, !topData)}\n </WrappedMenuItem>\n <div\n className={classnames(\"sub-menu-wrapper\", {\n \"overflow-menu-wrapper\": overflow,\n })}\n >\n {item.items.map((innerItem) => (\n <React.Fragment key={innerItem.key}>\n <RenderMenuItemCom\n item={innerItem}\n selectedKey={selectedKey}\n showTooltip={showTooltip}\n />\n </React.Fragment>\n ))}\n </div>\n </WrappedPopover>\n ) : null;\n}\n\nfunction GroupMenuItemCom({\n item,\n showTooltip,\n selectedKey = [],\n}: MenuGroupComProps) {\n return item.items?.length > 0 ? (\n item.childLayout === \"category\" ? (\n <ThreeLevelMenuCom\n item={item}\n selectedKey={selectedKey}\n showTooltip={showTooltip}\n placement=\"right-start\"\n anchorDisplay=\"block\"\n />\n ) : (item as SidebarMenuGroup).childLayout === \"siteMap\" ? (\n <SitMapMenCom\n item={item}\n selectedKey={selectedKey}\n showTooltip={showTooltip}\n placement=\"right-start\"\n anchorDisplay=\"block\"\n topData={false}\n />\n ) : (\n <>\n <div className=\"group-label\">{item.title}</div>\n <div className=\"group-wrapper\">\n {item.items.map((innerItem) => {\n return (\n <React.Fragment key={innerItem.key}>\n <RenderMenuItemCom\n item={innerItem}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n />\n </React.Fragment>\n );\n })}\n </div>\n </>\n )\n ) : null;\n}\n\nfunction ThreeLevelMenuCom({\n index,\n hidden,\n item,\n selectedKey = [],\n showTooltip,\n placement = \"bottom-start\",\n anchorDisplay,\n}: {\n index?: number;\n hidden?: boolean;\n item: SidebarMenuGroup;\n selectedKey?: string[];\n showTooltip?: boolean;\n placement?: Placement;\n anchorDisplay?: CSSProperties[\"display\"];\n}) {\n return item.items?.length > 0 ? (\n <WrappedPopover\n data-index={index}\n className={classnames(\"three-level-menu-popover\", \"popover\", {\n \"overflow-menu-item\": hidden,\n })}\n trigger={\"hover\"}\n placement={placement}\n distance={0}\n key={item.key}\n strategy=\"fixed\"\n anchorDisplay={anchorDisplay}\n beforeVisibleChange={handlePopupVisibleChange}\n >\n <WrappedMenuItem\n className=\"sub-menu-item-label\"\n key={item.key}\n slot=\"anchor\"\n title={showTooltip ? item.title : \"\"}\n >\n {renderSpanCom(item)}\n </WrappedMenuItem>\n <div className=\"sub-menu-wrapper\">\n <ThreeLevelMenuPopoverContent\n menuItem={item}\n selectedKey={selectedKey}\n ></ThreeLevelMenuPopoverContent>\n </div>\n </WrappedPopover>\n ) : null;\n}\n\nfunction SitMapMenCom({\n index,\n hidden,\n item,\n selectedKey = [],\n showTooltip,\n placement = \"bottom-start\",\n anchorDisplay,\n topData,\n}: {\n index?: number;\n hidden?: boolean;\n item: SidebarMenuGroup;\n selectedKey?: string[];\n showTooltip?: boolean;\n placement?: Placement;\n anchorDisplay?: CSSProperties[\"display\"];\n topData?: boolean;\n}) {\n const [visible, setVisible] = useState<boolean>();\n\n const handleVisibleChange = (event: CustomEvent<boolean>): void => {\n setVisible(event.detail);\n handlePopupVisibleChange(event);\n };\n\n return item.items?.length > 0 ? (\n <WrappedPopover\n data-index={index}\n className={classnames(\"popover\", {\n \"overflow-menu-item\": hidden,\n })}\n trigger={\"hover\"}\n placement={placement}\n distance={0}\n key={item.key}\n strategy=\"fixed\"\n anchorDisplay={anchorDisplay}\n beforeVisibleChange={handleVisibleChange}\n >\n <WrappedMenuItem\n className=\"sub-menu-item-label\"\n key={item.key}\n slot=\"anchor\"\n title={showTooltip ? item.title : \"\"}\n >\n {renderSpanCom(item)}\n </WrappedMenuItem>\n <div\n className={classnames(\"sub-menu-sit-map-wrapper\", {\n \"in-group-site-map\": !topData,\n })}\n onClick={(e) => e.stopPropagation()}\n >\n <SiteMapItem\n menuGroup={item}\n selectedKey={selectedKey}\n visible={visible}\n />\n </div>\n </WrappedPopover>\n ) : null;\n}\n\n/**\n * 菜单构件\n * @author sailor\n * @category navigation\n */\n@defineElement(\"eo-nav-menu\", {\n styleTexts: [\n SiteMapStyleText,\n ItemTagStyleText,\n GroupItemStyleText,\n styleText,\n ],\n})\nclass NavMenu extends ReactNextElement {\n /**\n * 菜单项\n */\n @property({\n attribute: false,\n })\n accessor menu: SidebarMenu | undefined;\n\n /**\n * 是否显示 tooltip\n */\n @property({\n type: Boolean,\n })\n accessor showTooltip: boolean | undefined;\n\n render() {\n return <NavMenuComponent menu={this.menu} showTooltip={this.showTooltip} />;\n }\n}\n\nfunction NavMenuComponent(props: NavMenuProps) {\n const { menu, showTooltip } = props;\n\n const history = getHistory();\n const navMenuWrapperRef = useRef<HTMLDivElement>(null);\n const [location, setLocation] = useState(history.location);\n const [overflowIndex, setOverflowIndex] = useState<number>(\n Number.MAX_SAFE_INTEGER\n );\n const { pathname, search } = location;\n\n const [selectedKey, setSelectedKey] = useState<string[]>([]);\n\n const setSelected = async (): Promise<void> => {\n const { selectedKeys } = initMenuItemAndMatchCurrentPathKeys(\n menu?.menuItems ?? [],\n pathname,\n search,\n \"\"\n );\n setSelectedKey(selectedKeys);\n };\n\n useEffect(() => {\n const unListen: UnregisterCallback = history.listen((location) => {\n setLocation(location);\n });\n setSelected();\n return unListen;\n }, []);\n\n useEffect(() => {\n if (navMenuWrapperRef.current) {\n const resizeObserver = new ResizeObserver(() => {\n if (navMenuWrapperRef.current) {\n const { width } = navMenuWrapperRef.current.getClientRects()[0] ?? {};\n const childNodes = navMenuWrapperRef.current.childNodes;\n\n if (childNodes.length && width) {\n let wrapperWidth = width;\n let overflowIndex = childNodes.length;\n\n for (let i = 0; i < childNodes.length; i++) {\n const { width: childWidth, height: childHeight } = (\n childNodes[i] as HTMLElement\n ).getClientRects()[0];\n\n if (!childHeight && wrapperWidth - 40 < 0) {\n overflowIndex = i - 1;\n break;\n }\n\n wrapperWidth =\n wrapperWidth - childWidth - (i > 0 ? GAP_WIDTH : 0);\n if (wrapperWidth < 0) {\n overflowIndex = i;\n break;\n }\n }\n\n setOverflowIndex(overflowIndex < 0 ? 0 : overflowIndex);\n }\n }\n });\n resizeObserver.observe(navMenuWrapperRef.current);\n\n return () => {\n resizeObserver.disconnect();\n };\n }\n }, []);\n\n const overflowMenu = useMemo(\n (): SidebarMenuItem => ({\n type: \"subMenu\",\n title: \"···\",\n items: menu?.menuItems.slice(\n overflowIndex,\n menu.menuItems.length\n ) as SidebarMenuItem[],\n }),\n [menu?.menuItems, overflowIndex]\n );\n\n return (\n <div ref={navMenuWrapperRef} className=\"nav-menu-wrapper\">\n {menu?.menuItems.map((item, index) => {\n const isHidden = overflowIndex <= index;\n return (\n <React.Fragment key={item.key}>\n {isSubMenu(item as SidebarMenuGroup, true) &&\n (item as SidebarMenuGroup).childLayout === \"category\" &&\n (item as SidebarMenuGroup).items?.length ? (\n <ThreeLevelMenuCom\n index={index}\n hidden={isHidden}\n item={item as SidebarMenuGroup}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n />\n ) : (item as SidebarMenuGroup).type === \"group\" &&\n (item as SidebarMenuGroup).childLayout === \"siteMap\" ? (\n <SitMapMenCom\n index={index}\n hidden={isHidden}\n item={item as SidebarMenuGroup}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n topData={true}\n />\n ) : (\n <RenderMenuItemCom\n index={index}\n hidden={isHidden}\n item={item}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n topData={true}\n />\n )}\n </React.Fragment>\n );\n })}\n <RenderMenuItemCom\n hidden={overflowIndex > (menu?.menuItems?.length ?? 0)}\n item={overflowMenu}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n overflow={true}\n topData={true}\n />\n </div>\n );\n}\n\nexport { NavMenu };\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { LaunchpadButton as LaunchpadButtonComponent } from \"./LaunchpadButton/LaunchpadButton.js\";\nimport { initializeReactI18n } from \"@next-core/i18n/react\";\nimport \"@next-core/theme\";\nimport { NS, locales } from \"./i18n.js\";\nimport styleText from \"./LaunchpadButton/LaunchpadButton.shadow.css\";\n\ninitializeReactI18n(NS, locales);\n\nconst { defineElement } = createDecorators();\n\n/**\n * Launchpad 按钮构件\n * @author sailor\n */\n@defineElement(\"eo-launchpad-button\", {\n styleTexts: [styleText],\n})\nclass LaunchpadButton extends ReactNextElement {\n render() {\n return <LaunchpadButtonComponent />;\n }\n}\n\nexport { LaunchpadButton };\n","import React from \"react\";\nimport type { MenuItemDataLink, MenuItemDataNormal } from \"./interfaces\";\n\nexport interface LaunchpadContextData {\n searching: boolean;\n loadingFavorites: boolean;\n pushRecentVisit(item: MenuItemDataNormal): void;\n toggleStar(item: MenuItemDataNormal | MenuItemDataLink): void;\n isStarred(item: MenuItemDataNormal): boolean;\n}\n\nexport const LaunchpadsContext = React.createContext<LaunchpadContextData>(\n {} as LaunchpadContextData\n);\n\nexport const useLaunchpadContext = (): LaunchpadContextData =>\n React.useContext(LaunchpadsContext);\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { pick } from \"lodash\";\nimport classNames from \"classnames\";\nimport { WrappedIcon, WrappedLink } from \"./wrapped-bricks\";\nimport { useLaunchpadContext } from \"./LaunchpadContext\";\nimport type {\n MenuItemData,\n MenuItemDataNormal,\n SidebarMenuItemData,\n} from \"./interfaces\";\n\nexport interface MenuGroupProps {\n name: string;\n items: MenuItemData[];\n}\n\nexport function MenuGroup({ name, items }: MenuGroupProps) {\n return (\n <li className=\"menu-group\">\n <div className=\"menu-group-label\">{name}</div>\n <ul className=\"menu\">\n {items.map((item) =>\n item.type === \"dir\" ? (\n <MenuItemFolder\n key={`${item.type}-${item.id}`}\n name={item.name}\n items={item.items}\n />\n ) : (\n <MenuItem key={`${item.type}-${item.id}`} item={item} />\n )\n )}\n </ul>\n </li>\n );\n}\n\nexport interface MenuItemProps {\n item: MenuItemDataNormal;\n}\n\nfunction MenuItem({ item }: MenuItemProps) {\n const { loadingFavorites, pushRecentVisit, toggleStar, isStarred } =\n useLaunchpadContext();\n\n const starred = useMemo(() => isStarred(item), [isStarred, item]);\n\n const handleStarClick = useCallback(() => {\n toggleStar(item);\n }, [item, toggleStar]);\n\n const handleClick = useCallback(() => {\n pushRecentVisit(item);\n }, [item, pushRecentVisit]);\n\n return (\n <li\n className={classNames(\"menu-item\", {\n starred,\n \"can-star\": !loadingFavorites,\n })}\n >\n <WrappedLink\n onClick={handleClick}\n {...(item.type === \"app\"\n ? {\n url: item.url,\n }\n : {\n href: item.url,\n target: \"_blank\",\n })}\n >\n <WrappedIcon\n className=\"menu-icon\"\n lib=\"easyops\"\n icon=\"micro-app-center\"\n {...(item.menuIcon?.lib && item.menuIcon.icon\n ? (pick(item.menuIcon, [\n \"lib\",\n \"icon\",\n \"theme\",\n \"category\",\n \"prefix\",\n ]) as any)\n : null)}\n />\n <span className=\"menu-item-label\">{item.name}</span>\n </WrappedLink>\n <WrappedIcon\n lib=\"fa\"\n prefix={starred ? \"fas\" : \"far\"}\n icon=\"star\"\n className=\"menu-item-star\"\n title={starred ? \"取消收藏\" : \"收藏\"}\n onClick={handleStarClick}\n />\n </li>\n );\n}\n\nexport interface SidebarMenuItemProps {\n item: SidebarMenuItemData;\n}\n\nexport function SidebarMenuItem({ item }: SidebarMenuItemProps) {\n const { pushRecentVisit, toggleStar } = useLaunchpadContext();\n\n const handleClick = useCallback(() => {\n if (item.type !== \"link\") {\n pushRecentVisit(item);\n }\n }, [item, pushRecentVisit]);\n\n const handleRemoveStar = useCallback(() => {\n toggleStar(item);\n }, [item, toggleStar]);\n\n return (\n <li className=\"sidebar-menu-item\">\n <WrappedLink\n onClick={handleClick}\n {...(item.type === \"app\"\n ? {\n url: item.url,\n }\n : {\n href: item.url,\n target: \"_blank\",\n })}\n >\n <WrappedIcon\n className={`sidebar-menu-icon`}\n lib=\"easyops\"\n icon=\"micro-app-center\"\n {...(item.menuIcon?.lib && item.menuIcon.icon\n ? (pick(item.menuIcon, [\n \"lib\",\n \"icon\",\n \"theme\",\n \"category\",\n \"prefix\",\n ]) as any)\n : null)}\n />\n <span className=\"menu-item-label\">{item.name}</span>\n </WrappedLink>\n <WrappedIcon\n lib=\"fa\"\n icon=\"xmark\"\n className=\"menu-item-remove\"\n onClick={handleRemoveStar}\n />\n </li>\n );\n}\n\nexport interface MenuItemFolderProps {\n name: string;\n items: MenuItemDataNormal[];\n}\n\nfunction MenuItemFolder({ name, items }: MenuItemFolderProps) {\n const { searching } = useLaunchpadContext();\n const [expanded, setExpanded] = useState(false);\n const [searchingExpanded, setSearchingExpanded] = useState(false);\n\n const toggle = useCallback(() => {\n // Use separated expanded states for searching and non-searching.\n if (searching) {\n setSearchingExpanded((previous) => !previous);\n } else {\n setExpanded((previous) => !previous);\n }\n }, [searching]);\n\n useEffect(() => {\n // Each time when start searching, set it as expanded.\n setSearchingExpanded(true);\n }, [searching]);\n\n const actualExpanded = searching ? searchingExpanded : expanded;\n\n return (\n <li className=\"menu-item folder\">\n <WrappedLink onClick={toggle}>\n <WrappedIcon\n lib=\"fa\"\n prefix=\"far\"\n icon=\"folder-open\"\n className=\"menu-icon\"\n />\n <span className=\"menu-item-label\">{name}</span>\n <WrappedIcon\n lib=\"antd\"\n icon={actualExpanded ? \"up\" : \"down\"}\n className=\"menu-item-toggle\"\n />\n </WrappedLink>\n <ul className={classNames(\"sub-menu\", { expanded: actualExpanded })}>\n {items.map((item) => (\n <MenuItem key={`${item.type}-${item.id}`} item={item} />\n ))}\n </ul>\n </li>\n );\n}\n","import React, { useCallback, useRef } from \"react\";\nimport classNames from \"classnames\";\nimport { WrappedIcon, WrappedLink } from \"./wrapped-bricks\";\nimport { useLaunchpadInfo } from \"./useLaunchpadInfo.js\";\nimport { MenuGroup, SidebarMenuItem } from \"./MenuGroup.js\";\nimport { LaunchpadsContext } from \"./LaunchpadContext.js\";\nimport { SidebarMenuItemData } from \"./interfaces\";\n\nexport function Launchpad({ active }: { active?: boolean }) {\n const searchInputRef = useRef<HTMLInputElement>(null);\n const handleClickSearchBox = useCallback(() => {\n searchInputRef.current?.focus();\n }, []);\n\n const {\n loading,\n q,\n setQ,\n menuGroups,\n favorites,\n loadingFavorites,\n recentVisits,\n pushRecentVisit,\n toggleStar,\n isStarred,\n } = useLaunchpadInfo(active);\n const searching = !!q;\n\n const handleSearch = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setQ(e.target.value);\n },\n [setQ]\n );\n\n const clearSearch = useCallback(() => {\n setQ(\"\");\n }, [setQ]);\n\n return (\n <div className={classNames(\"launchpad\", { active })}>\n <LaunchpadsContext.Provider\n value={{\n searching,\n loadingFavorites,\n pushRecentVisit,\n toggleStar,\n isStarred,\n }}\n >\n <div className=\"sidebar\">\n <div className=\"quick-nav\">\n <div className=\"quick-nav-label\">快捷访问</div>\n {/* <Loading loading={loading || loadingFavorites} /> */}\n <ul className=\"sidebar-menu\">\n {favorites.map((item, index) => (\n <SidebarMenuItem\n key={index}\n item={item as SidebarMenuItemData}\n />\n ))}\n </ul>\n </div>\n </div>\n <div className={classNames(\"content\", { loading })}>\n <Loading loading={loading} />\n <div className=\"search-box\" onClick={handleClickSearchBox}>\n <WrappedIcon\n lib=\"fa\"\n icon=\"magnifying-glass\"\n className=\"search-icon\"\n />\n <input\n ref={searchInputRef}\n placeholder=\"通过关键字搜索\"\n value={q}\n onChange={handleSearch}\n className=\"search-input\"\n />\n <WrappedIcon\n lib=\"antd\"\n theme=\"filled\"\n icon=\"close-circle\"\n className={classNames(\"search-clear\", { searching })}\n onClick={clearSearch}\n />\n </div>\n <div className={classNames({ empty: recentVisits.length === 0 })}>\n <div className=\"recent-visits-label\">最近访问</div>\n <ul className=\"recent-visits\">\n {recentVisits.map((item, index) => (\n <li key={index}>\n <WrappedLink\n onClick={() => pushRecentVisit(item)}\n {...(item.type === \"app\"\n ? {\n url: item.url,\n }\n : {\n href: item.url,\n target: \"_blank\",\n })}\n >\n <span>{item.name}</span>\n </WrappedLink>\n </li>\n ))}\n </ul>\n </div>\n <ul className=\"menu-groups\">\n {menuGroups.map((group) => (\n <MenuGroup\n key={group.name}\n name={group.name}\n items={group.items}\n />\n ))}\n </ul>\n </div>\n </LaunchpadsContext.Provider>\n </div>\n );\n}\n\nfunction Loading({ loading }: { loading: boolean }) {\n return (\n loading && (\n <div className=\"spinner\">\n <WrappedIcon lib=\"fa\" icon=\"spinner\" spinning />\n </div>\n )\n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\nimport \"@next-core/theme\";\nimport { getHistory } from \"@next-core/runtime\";\nimport type { lockBodyScroll as _lockBodyScroll } from \"@next-bricks/basic/data-providers/lock-body-scroll/lock-body-scroll\";\n// import { useTranslation, initializeReactI18n } from \"@next-core/i18n/react\";\nimport hotkeys from \"hotkeys-js\";\nimport classNames from \"classnames\";\n// import { K, NS, locales } from \"./i18n.js\";\nimport LaunchpadSvg from \"../images/launchpad.svg\";\nimport styleText from \"./styles.shadow.css\";\nimport { Launchpad } from \"./Launchpad\";\nimport { deferredFavorites, deferredLaunchpadInfo } from \"./useLaunchpadInfo\";\n\n// initializeReactI18n(NS, locales);\n\nconst { defineElement } = createDecorators();\n\nconst lockBodyScroll = unwrapProvider<typeof _lockBodyScroll>(\n \"basic.lock-body-scroll\"\n);\n\n/**\n * 构件 `eo-launchpad-button-v2`\n */\nexport\n@defineElement(\"eo-launchpad-button-v2\", {\n styleTexts: [styleText],\n})\nclass EoLaunchpadButtonV2 extends ReactNextElement {\n disconnectedCallback(): void {\n super.disconnectedCallback();\n lockBodyScroll(this, false);\n }\n\n render() {\n return <EoLaunchpadButtonV2Component host={this} />;\n }\n}\n\nexport function EoLaunchpadButtonV2Component({ host }: { host: HTMLElement }) {\n const [initialized, setInitialized] = useState(false);\n const [active, setActive] = useState(false);\n const toggleLaunchpad = (): void => {\n setActive((previous) => !previous);\n };\n\n useEffect(() => {\n // 当切换页面时,关闭 Launchpad。\n const unlisten = getHistory().listen(() => {\n setActive(false);\n });\n return unlisten;\n }, []);\n\n useEffect(() => {\n // 打开一次 launchpad 后,保留 DOM。\n if (active && !initialized) {\n setInitialized(true);\n }\n }, [active, initialized]);\n\n // istanbul ignore next\n useEffect(() => {\n hotkeys.filter = function () {\n return true;\n };\n\n // 快捷打开/关闭 Launchpad\n hotkeys(\"alt+l\", (event) => {\n event.preventDefault();\n setActive((previous) => !previous);\n });\n\n // 按 Esc 关闭 Launchpad\n hotkeys(\"esc\", () => {\n setActive(false);\n });\n\n return () => {\n hotkeys.unbind(\"alt+l\");\n hotkeys.unbind(\"esc\");\n };\n }, []);\n\n useEffect(() => {\n lockBodyScroll(host, active);\n }, [active, host]);\n\n useEffect(() => {\n deferredLaunchpadInfo.schedulePrefetch();\n deferredFavorites.schedulePrefetch();\n }, []);\n\n return (\n <>\n <a\n role=\"button\"\n className={classNames(\"launchpad-button\", { active })}\n onClick={toggleLaunchpad}\n >\n <LaunchpadSvg />\n </a>\n <div\n className={classNames(\"mask\", { active })}\n onClick={toggleLaunchpad}\n ></div>\n {initialized && <Launchpad active={active} />}\n </>\n );\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 {\n EoDropdownActions,\n DropdownActionsProps,\n DropdownActionsEvents,\n DropdownActionsEventsMapping,\n} from \"@next-bricks/basic/dropdown-actions\";\nimport type { showDialog as _showDialog } from \"@next-bricks/basic/data-providers/show-dialog/show-dialog\";\n\nexport const WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nexport const WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nexport const WrappedDropdownActions = wrapBrick<\n EoDropdownActions,\n DropdownActionsProps,\n DropdownActionsEvents,\n DropdownActionsEventsMapping\n>(\"eo-dropdown-actions\", {\n onActionClick: \"action.click\",\n onVisibleChange: \"visible.change\",\n});\n\n// Use `unwrapProvider` to get the original function of a provider\nexport const showDialog =\n unwrapProvider<typeof _showDialog>(\"basic.show-dialog\");\n","import React, { useCallback, useMemo, useState } from \"react\";\nimport { pick } from \"lodash\";\nimport classNames from \"classnames\";\nimport { checkIfByTransform } from \"@next-core/runtime\";\nimport type { SimpleAction } from \"@next-bricks/basic/dropdown-actions\";\nimport {\n WrappedDropdownActions,\n WrappedIcon,\n WrappedLink,\n} from \"./wrapped-bricks\";\nimport type {\n ConfigMenuGroup,\n ConfigMenuItemDir,\n ConfigMenuItemNormal,\n MenuAction,\n MenuActionEventDetail,\n} from \"./interfaces\";\nimport { getAppLocaleName } from \"../shared/getLocaleName\";\n\nexport interface MenuGroupProps {\n data: ConfigMenuGroup;\n actions?: MenuAction[];\n onActionClick?: (detail: MenuActionEventDetail) => void;\n}\n\nexport function MenuGroup({ data, actions, onActionClick }: MenuGroupProps) {\n const { name, items } = data;\n const [dropdownActive, setDropdownActive] = useState(false);\n\n const filteredActions = useMemo(\n () =>\n actions?.filter((item) => checkIfByTransform(item, { type: \"group\" })),\n [actions]\n );\n\n const handleActionClick = useCallback(\n (event: CustomEvent<SimpleAction>) => {\n onActionClick?.({\n data,\n action: event.detail,\n });\n },\n [data, onActionClick]\n );\n\n return (\n <li className={classNames(\"menu-group\", { empty: items.length === 0 })}>\n <div className=\"menu-group-label-wrapper\">\n <span className=\"menu-group-label\">{name}</span>\n <WrappedDropdownActions\n actions={filteredActions}\n onVisibleChange={(event) => {\n setDropdownActive(event.detail);\n }}\n onActionClick={handleActionClick}\n >\n <WrappedIcon\n lib=\"fa\"\n icon=\"gear\"\n className={classNames(\"menu-config\", { active: dropdownActive })}\n />\n </WrappedDropdownActions>\n </div>\n <ul className=\"menu\">\n {items.map((item) =>\n item.type === \"dir\" ? (\n <MenuItemFolder\n key={item.instanceId}\n data={item}\n actions={actions}\n onActionClick={onActionClick}\n />\n ) : (\n <MenuItem key={`${item.type}-${item.id}`} data={item} />\n )\n )}\n </ul>\n </li>\n );\n}\n\nexport interface MenuItemProps {\n data: ConfigMenuItemNormal;\n}\n\nexport function MenuItem({ data }: MenuItemProps) {\n const name = useMemo(\n () =>\n data.type === \"app\"\n ? getAppLocaleName(data.locales, data.name)\n : data.name,\n [data]\n );\n\n return (\n <li className=\"menu-item\">\n <WrappedLink>\n <WrappedIcon\n className={`menu-icon`}\n lib=\"easyops\"\n icon=\"micro-app-center\"\n {...(data.menuIcon?.lib && data.menuIcon.icon\n ? (pick(data.menuIcon, [\n \"lib\",\n \"icon\",\n \"theme\",\n \"category\",\n \"prefix\",\n ]) as any)\n : null)}\n />\n <span className=\"menu-item-label\">{name}</span>\n </WrappedLink>\n </li>\n );\n}\n\nexport interface MenuItemFolderProps {\n data: ConfigMenuItemDir;\n actions?: MenuAction[];\n onActionClick?: (detail: MenuActionEventDetail) => void;\n}\n\nfunction MenuItemFolder({ data, actions, onActionClick }: MenuItemFolderProps) {\n const { name, items } = data;\n const [dropdownActive, setDropdownActive] = useState(false);\n const [expanded, setExpanded] = useState(false);\n\n const filteredActions = useMemo(\n () => actions?.filter((item) => checkIfByTransform(item, { type: \"dir\" })),\n [actions]\n );\n\n const toggle = useCallback(() => {\n setExpanded((previous) => !previous);\n }, []);\n\n const handleActionClick = useCallback(\n (event: CustomEvent<SimpleAction>) => {\n onActionClick?.({\n data,\n action: event.detail,\n });\n },\n [data, onActionClick]\n );\n\n return (\n <li\n className={classNames(\"menu-item folder\", { empty: items.length === 0 })}\n >\n <div className=\"menu-folder-label-wrapper\">\n <WrappedLink onClick={toggle}>\n <WrappedIcon\n lib=\"fa\"\n prefix=\"far\"\n icon=\"folder-open\"\n className=\"menu-icon\"\n />\n <span className=\"menu-item-label\">{name}</span>\n <WrappedIcon\n lib=\"antd\"\n icon={expanded ? \"up\" : \"down\"}\n className=\"menu-item-toggle\"\n />\n </WrappedLink>\n <WrappedDropdownActions\n actions={filteredActions}\n onVisibleChange={(event) => {\n setDropdownActive(event.detail);\n }}\n onActionClick={handleActionClick}\n >\n <WrappedIcon\n lib=\"fa\"\n icon=\"gear\"\n className={classNames(\"menu-config\", { active: dropdownActive })}\n />\n </WrappedDropdownActions>\n </div>\n <ul className={classNames(\"sub-menu\", { expanded })}>\n {items.map((item) => (\n <MenuItem key={item.instanceId} data={item} />\n ))}\n </ul>\n </li>\n );\n}\n","import React from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport type {\n ConfigMenuGroup,\n MenuAction,\n MenuActionEventDetail,\n} from \"./interfaces\";\nimport { MenuGroup } from \"./MenuGroup\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property, event } = createDecorators();\n\n/**\n * 构件 `nav.launchpad-config`\n */\nexport\n@defineElement(\"nav.launchpad-config\", {\n styleTexts: [styleText],\n})\nclass LaunchpadConfig extends ReactNextElement implements LaunchpadConfigProps {\n @property({ attribute: false })\n accessor menuGroups: ConfigMenuGroup[] | undefined;\n\n @property({ attribute: false })\n accessor actions: MenuAction[] | undefined;\n\n @event({ type: \"action.click\" })\n accessor #actionClickEvent!: EventEmitter<MenuActionEventDetail>;\n\n #onActionClick = (detail: MenuActionEventDetail) => {\n this.#actionClickEvent.emit(detail);\n };\n\n render() {\n return (\n <LaunchpadConfigComponent\n menuGroups={this.menuGroups}\n actions={this.actions}\n onActionClick={this.#onActionClick}\n />\n );\n }\n}\n\nexport interface LaunchpadConfigProps {\n menuGroups?: ConfigMenuGroup[];\n actions?: MenuAction[];\n onActionClick?: (detail: MenuActionEventDetail) => void;\n}\n\nexport function LaunchpadConfigComponent({\n menuGroups,\n actions,\n onActionClick,\n}: LaunchpadConfigProps) {\n return (\n <ul className=\"menu-groups\">\n {menuGroups?.map((group) => (\n <MenuGroup\n key={group.instanceId}\n data={group}\n actions={actions}\n onActionClick={onActionClick}\n />\n ))}\n </ul>\n );\n}\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport { getRuntime } from \"@next-core/runtime\";\nimport { useCurrentApp } from \"@next-core/react-runtime\";\nimport { auth } from \"@next-core/easyops-runtime\";\nimport \"@next-core/theme\";\nimport { JsonStorage } from \"@next-shared/general/JsonStorage\";\nimport moment from \"moment\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport styleText from \"./styles.shadow.css\";\n\nexport const WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nexport const WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\nconst { defineElement, property } = createDecorators();\n\n/**\n * 构件 `nav.easyops-navbar-alerts`\n */\nexport\n@defineElement(\"nav.easyops-navbar-alerts\", {\n styleTexts: [styleText],\n})\nclass EasyopsNavbarAlerts extends ReactNextElement {\n render() {\n return <EasyopsNavbarAlertsComponent />;\n }\n}\n\ninterface SlowRenderInfo {\n renderTime: number;\n suggestTime: number;\n suggestUrl?: string;\n}\n\nconst storage = new JsonStorage(localStorage);\n\nexport function EasyopsNavbarAlertsComponent() {\n const [licenseDaysLeft, setLicenseDaysLeft] = useState<number | null>(null);\n const [slowRender, setSlowRender] = useState<SlowRenderInfo | null>(null);\n const currentApp = useCurrentApp();\n const licenseDismissedKey = useMemo(() => {\n const authInfo = auth.getAuth();\n return `license:${authInfo.org}`;\n }, []);\n\n useEffect(() => {\n const authInfo = auth.getAuth();\n const validDaysLeft = authInfo.license?.validDaysLeft;\n let dismissExpireAt: number;\n if (\n validDaysLeft &&\n validDaysLeft <= 15 &&\n authInfo.isAdmin &&\n ((dismissExpireAt = storage.getItem(licenseDismissedKey)),\n !dismissExpireAt || moment().unix() > dismissExpireAt)\n ) {\n setLicenseDaysLeft(validDaysLeft);\n }\n }, [licenseDismissedKey]);\n\n useEffect(() => {\n const handelRouteRender = (e: Event): void => {\n const renderTime = (e as CustomEvent<{ renderTime: number }>).detail\n .renderTime;\n const { loadTime, loadInfoPage } = getRuntime().getMiscSettings() as {\n loadTime: number;\n loadInfoPage?: string;\n };\n if (currentApp?.isBuildPush && loadTime > 0 && renderTime > loadTime) {\n setSlowRender({\n renderTime: millisecondToSecond(renderTime),\n suggestTime: millisecondToSecond(loadTime),\n suggestUrl: loadInfoPage,\n });\n }\n };\n window.addEventListener(\"route.render\", handelRouteRender);\n return () => {\n window.removeEventListener(\"route.render\", handelRouteRender);\n };\n }, [currentApp]);\n\n const handleLicenseAlertDismiss = useCallback(() => {\n // 一天内不再显示。\n storage.setItem(licenseDismissedKey, moment().unix() + 86400);\n setLicenseDaysLeft(null);\n }, [licenseDismissedKey]);\n\n return (\n <>\n {slowRender && (\n <Alert\n text={`您的页面存在性能问题, 当前页面渲染时间 ${slowRender.renderTime} 秒, 规定阈值为: ${slowRender.suggestTime} 秒, 您已超过。请您针对该页面进行性能优化!`}\n type=\"warning\"\n link={\n slowRender.suggestUrl\n ? {\n label: \"建议解决思路\",\n url: slowRender.suggestUrl,\n }\n : undefined\n }\n />\n )}\n {licenseDaysLeft !== null && (\n <Alert\n text={`离 License 过期还有 ${licenseDaysLeft} 天`}\n type=\"info\"\n closable\n onClose={handleLicenseAlertDismiss}\n />\n )}\n </>\n );\n}\n\ninterface AlertProps {\n text: string;\n type: \"info\" | \"warning\";\n closable?: boolean;\n link?: {\n label: string;\n url: string;\n };\n onClose?: () => void;\n}\n\nfunction Alert({ text, type, closable, link, onClose }: AlertProps) {\n return (\n <div className={`alert ${type}`}>\n <span className=\"text\">{text}</span>\n {link && (\n <WrappedLink className=\"link\" href={link.url} target=\"_blank\">\n {link.label}\n </WrappedLink>\n )}\n {closable && (\n <WrappedIcon\n lib=\"antd\"\n icon=\"close\"\n className=\"icon\"\n role=\"button\"\n onClick={onClose}\n />\n )}\n </div>\n );\n}\n\nfunction millisecondToSecond(millisecond: number) {\n return Math.floor(millisecond * 100) / 1e5;\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport { useLaunchpadInfo } from \"../launchpad-button-v2/useLaunchpadInfo\";\nimport { LaunchpadsContext } from \"../launchpad-button-v2/LaunchpadContext\";\nimport { SidebarMenuItem } from \"../launchpad-button-v2/MenuGroup\";\nimport { SidebarMenuItemData } from \"../launchpad-button-v2/interfaces\";\n\nconst { defineElement, property } = createDecorators();\n\n/**\n * 快捷访问\n */\nexport\n@defineElement(\"eo-launchpad-quick-access\", {\n styleTexts: [styleText],\n})\nclass EoLaunchpadQuickAccess extends ReactNextElement {\n render() {\n return <EoLaunchpadQuickAccessComponent />;\n }\n}\n\nexport function EoLaunchpadQuickAccessComponent() {\n const {\n favorites,\n loadingFavorites,\n pushRecentVisit,\n toggleStar,\n isStarred,\n } = useLaunchpadInfo(true);\n\n return (\n <LaunchpadsContext.Provider\n value={{\n searching: false,\n loadingFavorites,\n pushRecentVisit,\n toggleStar,\n isStarred,\n }}\n >\n <ul className=\"quick-access-list\">\n {favorites.map((item, index) => (\n <SidebarMenuItem key={index} item={item as SidebarMenuItemData} />\n ))}\n </ul>\n </LaunchpadsContext.Provider>\n );\n}\n","import React, { useCallback, useRef, useState } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport classNames from \"classnames\";\nimport { LaunchpadsContext } from \"../launchpad-button-v2/LaunchpadContext\";\nimport { useLaunchpadInfo } from \"../launchpad-button-v2/useLaunchpadInfo\";\nimport { MenuGroup } from \"../launchpad-button-v2/MenuGroup\";\nimport { GeneralIcon, GeneralIconProps } from \"@next-bricks/icons/general-icon\";\n\nexport const WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nconst { defineElement, property } = createDecorators();\n\n/**\n * launchpad 搜索\n */\nexport\n@defineElement(\"eo-search-launchpad\", {\n styleTexts: [styleText],\n})\nclass EoSearchLaunchpad extends ReactNextElement {\n render() {\n return <EoSearchLaunchpadComponent />;\n }\n}\n\nexport function EoSearchLaunchpadComponent() {\n const searchInputRef = useRef<HTMLInputElement>(null);\n const handleClickSearchBox = useCallback(() => {\n searchInputRef.current?.focus();\n }, []);\n\n const [active, setActive] = useState(false);\n\n const {\n loading,\n q,\n setQ,\n menuGroups,\n loadingFavorites,\n pushRecentVisit,\n toggleStar,\n isStarred,\n } = useLaunchpadInfo(active);\n const searching = !!q;\n\n const handleSearch = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setQ(e.target.value);\n },\n [setQ]\n );\n\n const clearSearch = useCallback(() => {\n setQ(\"\");\n }, [setQ]);\n\n return (\n <LaunchpadsContext.Provider\n value={{\n searching,\n loadingFavorites,\n pushRecentVisit,\n toggleStar,\n isStarred,\n }}\n >\n <div className=\"container\">\n <div className=\"search-box\" onClick={handleClickSearchBox}>\n <WrappedIcon\n lib=\"fa\"\n icon=\"magnifying-glass\"\n className=\"search-icon\"\n />\n <input\n ref={searchInputRef}\n placeholder=\"搜索产品/微应用\"\n value={q}\n onChange={handleSearch}\n className=\"search-input\"\n onFocus={() => setActive(true)}\n onBlur={() => setActive(false)}\n />\n <WrappedIcon\n lib=\"antd\"\n theme=\"filled\"\n icon=\"close-circle\"\n className={classNames(\"search-clear\", { searching })}\n onClick={clearSearch}\n onMouseDown={(e) => e.preventDefault()}\n />\n </div>\n <div\n className={classNames(\"dropdown\", { \"dropdown-active\": active })}\n onMouseDown={(e) => e.preventDefault()}\n >\n <div className={classNames(\"dropdown-content\", { loading })}>\n <Loading loading={loading} />\n <ul className=\"menu-groups\">\n {menuGroups.map((group) => (\n <MenuGroup\n key={group.name}\n name={group.name}\n items={group.items}\n />\n ))}\n </ul>\n </div>\n </div>\n </div>\n </LaunchpadsContext.Provider>\n );\n}\n\nfunction Loading({ loading }: { loading: boolean }) {\n return (\n loading && (\n <div className=\"spinner\">\n <WrappedIcon lib=\"fa\" icon=\"spinner\" spinning />\n </div>\n )\n );\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport { useLaunchpadInfo } from \"../launchpad-button-v2/useLaunchpadInfo\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\nconst { defineElement, property } = createDecorators();\n\n/**\n * launchpad 最近访问\n */\nexport\n@defineElement(\"eo-launchpad-recent-visits\", {\n styleTexts: [styleText],\n})\nclass EoLaunchpadRecentVisits extends ReactNextElement {\n render() {\n return <EoLaunchpadRecentVisitsComponent />;\n }\n}\n\nexport function EoLaunchpadRecentVisitsComponent() {\n const { recentVisits, pushRecentVisit } = useLaunchpadInfo(true);\n\n return (\n <ul className=\"recent-visits\">\n {recentVisits.map((item, index) => (\n <li key={index}>\n <WrappedLink\n onClick={() => pushRecentVisit(item)}\n {...(item.type === \"app\"\n ? {\n url: item.url,\n }\n : {\n href: item.url,\n target: \"_blank\",\n })}\n >\n <span>{item.name}</span>\n </WrappedLink>\n </li>\n ))}\n </ul>\n );\n}\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}.alert{height:32px;padding:0 20px;display:flex;justify-content:center;align-items:center}.text{color:var(--antd-text-color);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.icon{margin-left:20px;cursor:pointer;color:#8c8c8c}.info{background-color:var(--color-info-bg)}.warning{background-color:var(--color-warning-bg)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../images/launchpad-sidebar.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:inline-block;width:32px;height:32px;--local-sidebar-menu-item-active-bg:rgba(0,0,0,0.04);--local-background:#fff;--local-menu-icon-color:#8c8c8c;--local-max-height:calc(100vh - var(--app-bar-height) - 10px)}:host([hidden]){display:none}:host-context(html[data-theme=\"dark\"]),\n:host-context(html[data-theme=\"dark-v2\"]){--local-sidebar-menu-item-active-bg:rgba(255,255,255,0.04);--local-background:#26262a;--local-menu-icon-color:rgba(255,255,255,0.45)}.launchpad-button{width:100%;height:100%;display:flex;justify-content:center;align-items:center;color:#999;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border-radius:3px}.launchpad-button:hover,\n.launchpad-button.active{background-color:var(--color-fill-bg-base-1)}.launchpad-button.active{color:var(--color-brand)}.mask{position:fixed;top:0;bottom:0;left:0;right:0;z-index:1;display:none}.mask.active{display:block}.launchpad{display:none;position:absolute;margin-top:4px;z-index:1;width:1110px;max-width:calc(100vw - 100px);max-height:var(--local-max-height);min-height:50vh;min-height:min(500px,var(--local-max-height));background-color:var(--local-background);border:1px solid var(--color-text-divider-line);border-radius:6px;box-shadow:var(--fullscreen-overlay-shadow)}.launchpad.active{display:flex}.sidebar{width:190px;padding:20px 0 24px;display:flex;flex-direction:column;background:var(--color-fill-bg-base-3);min-width:0;background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-size:205px 205px;background-repeat:no-repeat;background-position:left 52px bottom 27px}.quick-nav-label,\n.menu-group-label,\n.menu-item-label,\n.recent-visits span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-menu,\n.menu-groups,\n.menu,\n.sub-menu,\n.recent-visits{list-style:none;margin:0;padding:0}.sidebar-menu,\n.menu,\n.sub-menu{display:flex;flex-direction:column;gap:14px}.sidebar-menu-item > eo-link,\n.menu-item > eo-link,\n.recent-visits eo-link{display:block;min-width:0}.sidebar-menu-item > eo-link::part(link),\n.menu-item > eo-link::part(link){height:20px;display:flex;align-items:center;gap:8px;color:var(--color-header-text)}.sidebar-menu-item{padding:0 12px 0 16px;justify-content:space-between}.sidebar-menu-icon{color:var(--left-sidebar-item-collapsed-icon-color)}.quick-nav{overflow-y:auto;flex:1}.quick-nav-label{color:var(--color-header-text);font-weight:500;margin-bottom:14px;padding:0 16px}.content{flex:1;padding:20px 24px 24px;min-width:0;overflow-y:auto;display:flex;flex-direction:column;gap:24px}.search-box{border-bottom:1px solid var(--color-text-divider-line);display:flex;gap:8px;align-items:center;padding:10px 0;margin-top:-10px;cursor:text}.search-icon{color:var(--color-auxiliary-text)}.search-input{padding:0;margin:0;border:none;outline:none;color:inherit;background-color:transparent;font-size:14px;line-height:22px;flex:1;min-width:0}.search-input::placeholder{color:var(--color-disabled-text);opacity:1}.search-clear{display:none;color:var(--color-secondary-text);cursor:pointer}.search-clear.searching{display:inline-block}.search-clear:hover{color:var(--color-auxiliary-text)}.menu-groups,\n.recent-visits{grid-template-columns:repeat(auto-fill,minmax(168px,1fr))}.menu-groups{display:grid;grid-gap:32px 8px;gap:32px 8px}.menu-group{padding-right:12px;color:var(--color-header-text)}.menu-group-label{font-size:var(--card-title-font-size);font-weight:500;color:var(--color-header-text);margin-bottom:14px}.sidebar-menu-item,\n.menu-item:not(.folder){display:flex;gap:8px;align-items:center}.menu-icon{color:var(--local-menu-icon-color)}.menu-item.active,\n.menu-item.active .menu-icon{color:var(--color-brand-active)}.sub-menu:not(.expanded){display:none}.sub-menu{margin-top:14px;margin-left:8px;border-left:1px solid var(--color-text-divider-line);padding-left:15px}.menu-item-remove,\n.menu-item-star{cursor:pointer}.menu-item-remove,\n.menu-item-star,\n.menu-item-toggle{color:var(--color-secondary-text)}.sidebar-menu-item:not(:hover) .menu-item-remove{display:none}.menu-item-remove:hover{color:var(--color-normal-text)}.menu-item-remove:active{color:var(--color-strong-text)}.menu-item-star{display:none}.can-star.starred > .menu-item-star,\n.can-star:hover > .menu-item-star{display:inline-block}.can-star:not(.starred) > .menu-item-star{color:var(--color-secondary-text)}.starred > .menu-item-star{color:var(--palette-yellow-6)}.recent-visits-label{margin-bottom:12px;font-size:var(--card-title-font-size);color:var(--color-header-text);font-weight:500}.recent-visits{display:grid;grid-gap:8px;gap:8px}.recent-visits eo-link::part(link){background-color:var(--color-fill-bg-base-1);border-radius:3px;color:var(--color-header-text);display:flex;align-items:center;height:24px;padding:0 8px}.sidebar-menu-item > eo-link:hover::part(link),\n.sidebar-menu-item > eo-link:hover .sidebar-menu-icon,\n.menu-item > eo-link:hover::part(link),\n.menu-item > eo-link:hover .menu-icon,\n.menu-item > eo-link:hover .menu-item-toggle,\n.recent-visits eo-link:hover::part(link){color:var(--color-brand-hover)}.spinner{display:flex;justify-content:center;align-items:center;color:var(--theme-doderblue-color);flex:1;font-size:30px}.empty,\n.loading > :not(.spinner){display:none}@supports not (inset: 0){.search-box,\n .sidebar-menu,\n .menu,\n .sub-menu,\n .sidebar-menu-item,\n .menu-item:not(.folder),\n .sidebar-menu-item > eo-link::part(link),\n .menu-item > eo-link::part(link){gap:0}.content{display:grid;grid-auto-flow:row}.content:not(.loading){height:-webkit-min-content;height:-moz-min-content;height:min-content}.sidebar-menu > :not(:first-child),\n .menu > :not(:first-child),\n .sub-menu > :not(:first-child){margin-top:14px}.search-icon,\n .sidebar-menu-icon,\n .menu-icon{margin-right:8px}.search-clear,\n .menu-item-star,\n .menu-item-toggle{margin-left:8px}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;--local-menu-icon-color:#8c8c8c}:host([hidden]){display:none;--local-menu-icon-color:rgba(255,255,255,0.45)}ul{list-style:none;margin:0;padding:0}.menu-groups{display:grid;grid-gap:32px 16px;gap:32px 16px;grid-template-columns:repeat(auto-fill,minmax(168px,1fr))}.sidebar-menu,\n.menu,\n.sub-menu{display:flex;flex-direction:column;gap:14px}.menu-folder-label-wrapper > eo-link,\n.menu-item > eo-link{display:block}.menu-folder-label-wrapper > eo-link::part(link),\n.menu-item > eo-link::part(link){height:20px;display:flex;align-items:center;gap:8px;color:var(--color-header-text)}.menu-group-label-wrapper,\n.menu-folder-label-wrapper,\n.menu-item:not(.folder){display:flex;gap:8px;align-items:center}.menu-group-label-wrapper{gap:3px}.menu-group:not(.empty) .menu-group-label-wrapper{margin-bottom:14px}.menu-group-label,\n.menu-item-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-group-label{font-size:var(--card-title-font-size);font-weight:500;color:var(--color-header-text)}.menu-icon{color:var(--local-menu-icon-color)}.menu-folder-label-wrapper > eo-link,\n.menu-item > eo-link{max-width:100%;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;min-width:0}.sub-menu:not(.expanded){display:none}.sub-menu{margin-left:8px;border-left:1px solid var(--color-text-divider-line);padding-left:15px}.menu-item:not(.empty) .sub-menu{margin-top:14px}.menu-item-toggle{color:var(--color-secondary-text)}.menu-config{visibility:hidden;color:var(--color-brand);cursor:pointer;display:flex;justify-content:center;align-items:center;width:24px;height:24px}.menu-config.active,\n.menu-group-label-wrapper:hover .menu-config,\n.menu-folder-label-wrapper:hover .menu-config{visibility:visible}.menu-folder-label-wrapper > eo-dropdown-actions{margin:-3px 0}.menu-config:hover,\n.menu-item > eo-link:hover::part(link),\n.menu-item > eo-link:hover .menu-icon,\n.menu-folder-label-wrapper > eo-link:hover::part(link),\n.menu-folder-label-wrapper > eo-link:hover .menu-icon,\n.menu-folder-label-wrapper > eo-link:hover .menu-item-toggle{color:var(--color-brand-hover)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}.quick-access-list{display:grid;grid-gap:14px;gap:14px;grid-template-columns:repeat(2,1fr);list-style:none;margin:0;padding:0}.sidebar-menu-item{display:flex;align-items:center;justify-content:space-between;overflow:hidden}.sidebar-menu-item > eo-link{display:block;min-width:0}.sidebar-menu-item > eo-link::part(link){display:flex;align-items:center;height:20px;gap:8px;color:var(--color-header-text)}.sidebar-menu-icon{color:var(--left-sidebar-item-collapsed-icon-color)}.menu-item-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-item-remove{color:var(--color-secondary-text);cursor:pointer}.sidebar-menu-item:not(:hover) .menu-item-remove{display:none}.menu-item-remove:hover{color:var(--color-normal-text)}.menu-item-remove:active{color:var(--color-strong-text)}.sidebar-menu-item > eo-link:hover::part(link),\n.sidebar-menu-item > eo-link:hover .sidebar-menu-icon{color:var(--color-brand-hover)}@supports not (inset: 0){.sidebar-menu-item,\n .sidebar-menu-item > eo-link::part(link){gap:0}.sidebar-menu-icon{margin-right:8px}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}.recent-visits{list-style:none;margin:0;padding:0;display:grid;grid-gap:8px;gap:8px;grid-template-columns:repeat(auto-fill,minmax(168px,1fr))}.recent-visits span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.recent-visits eo-link{display:block;min-width:0}.recent-visits eo-link::part(link){background-color:var(--color-fill-bg-base-1);border-radius:3px;color:var(--color-header-text);display:flex;align-items:center;height:24px;padding:0 8px}.recent-visits eo-link:hover::part(link){color:var(--color-brand-hover)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;--local-menu-icon-color:#8c8c8c}:host([hidden]){display:none}:host-context(html[data-theme=\"dark\"]),\n:host-context(html[data-theme=\"dark-v2\"]){--local-menu-icon-color:rgba(255,255,255,0.45)}.container{position:relative}.dropdown{margin-top:5px;position:absolute;top:100%;left:0px;width:100%;z-index:1050;padding:20px 24px 24px;overflow:hidden;box-sizing:border-box;background-color:var(--antd-select-dropdown-bg);border-radius:4px;box-shadow:var(--antd-box-shadow-base);display:none}.dropdown-active{display:block}.search-box{border-bottom:1px solid var(--color-text-divider-line);display:flex;gap:8px;align-items:center;padding:10px 0;cursor:text}.search-icon{color:var(--color-auxiliary-text)}.search-input{padding:0;margin:0;border:none;outline:none;color:inherit;background-color:transparent;font-size:14px;line-height:22px;flex:1;min-width:0}.search-input::placeholder{color:var(--color-disabled-text);opacity:1}.search-clear{display:none;color:var(--color-secondary-text);cursor:pointer}.search-clear.searching{display:inline-block}.search-clear:hover{color:var(--color-auxiliary-text)}.dropdown-content{min-width:0;display:flex;flex-direction:column;gap:24px;max-height:260px;overflow-y:auto}.spinner{display:flex;justify-content:center;align-items:center;color:var(--theme-doderblue-color);flex:1;font-size:30px}.loading > :not(.spinner){display:none}.menu-group-label,\n.menu-item-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-groups,\n.menu,\n.sub-menu{list-style:none;margin:0;padding:0}.menu,\n.sub-menu{display:flex;flex-direction:column;gap:14px}.menu-item > eo-link{display:block;min-width:0}.menu-item > eo-link::part(link){height:20px;display:flex;align-items:center;gap:8px;color:var(--color-header-text)}.menu-groups{grid-template-columns:repeat(auto-fill,minmax(168px,1fr))}.menu-groups{display:grid;grid-gap:32px 8px;gap:32px 8px}.menu-group{padding-right:12px;color:var(--color-header-text)}.menu-group-label{font-size:var(--card-title-font-size);font-weight:500;color:var(--color-header-text);margin-bottom:14px}.menu-item:not(.folder){display:flex;gap:8px;align-items:center}.menu-icon{color:var(--local-menu-icon-color)}.menu-item.active,\n.menu-item.active .menu-icon{color:var(--color-brand-active)}.sub-menu:not(.expanded){display:none}.sub-menu{margin-top:14px;margin-left:8px;border-left:1px solid var(--color-text-divider-line);padding-left:15px}.menu-item-star{cursor:pointer}.menu-item-star,\n.menu-item-toggle{color:var(--color-secondary-text)}.menu-item-star{display:none}.can-star.starred > .menu-item-star,\n.can-star:hover > .menu-item-star{display:inline-block}.can-star:not(.starred) > .menu-item-star{color:var(--color-secondary-text)}.starred > .menu-item-star{color:var(--palette-yellow-6)}.menu-item > eo-link:hover::part(link),\n.menu-item > eo-link:hover .menu-icon,\n.menu-item > eo-link:hover .menu-item-toggle{color:var(--color-brand-hover)}@supports not (inset: 0){.search-box,\n .menu,\n .sub-menu,\n .menu-item:not(.folder),\n .menu-item > eo-link::part(link){gap:0}.dropdown-content{display:grid;grid-auto-flow:row}.dropdown-content:not(.loading){height:-webkit-min-content;height:-moz-min-content;height:min-content}.menu > :not(:first-child),\n .sub-menu > :not(:first-child){margin-top:14px}.search-icon,\n .menu-icon{margin-right:8px}.search-clear,\n .menu-item-star,\n .menu-item-toggle{margin-left:8px}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","\"use strict\";\n\nmodule.exports = function (url, options) {\n if (!options) {\n options = {};\n }\n if (!url) {\n return url;\n }\n url = String(url.__esModule ? url.default : url);\n\n // If url is already wrapped in quotes, remove them\n if (/^['\"].*['\"]$/.test(url)) {\n url = url.slice(1, -1);\n }\n if (options.hash) {\n url += options.hash;\n }\n\n // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n if (/[\"'() \\t\\n]|(%20)/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, \"\\\\n\"), \"\\\"\");\n }\n return url;\n};"],"names":["scrollWidth","defineElement","property","createDecorators","WrappedMenuItem","wrapBrick","WrappedPopover","onVisibleChange","beforeVisibleChange","RenderMenuItemCom","props","item","isSubMenu","topData","React","SubMenuItemCom","_extends","isGroup","GroupMenuItemCom","SimpleMenuItemCom","index","hidden","showTooltip","selectedKey","className","key","title","text","active","includes","renderLinkCom","width","_NavMenu","handlePopupVisibleChange","event","_scrollWidth","paddingRight","window","innerWidth","document","body","clientWidth","style","detail","overflow","touchAction","_ref","_item$items","items","length","classnames","subprime","trigger","placement","distance","anchorDisplay","strategy","slot","renderSpanCom","map","innerItem","_ref2","_item$items2","childLayout","ThreeLevelMenuCom","SitMapMenCom","_ref3","_item$items3","ThreeLevelMenuPopoverContent","menuItem","_ref4","_item$items4","visible","setVisible","useState","onClick","e","stopPropagation","SiteMapItem","menuGroup","_dec","styleTexts","SiteMapStyleText","ItemTagStyleText","GroupItemStyleText","styleText","_dec2","attribute","_dec3","type","Boolean","_A","WeakMap","_B","NavMenu","ReactNextElement","constructor","arguments","_classPrivateFieldInitSpec","writable","value","_initProto","_init_menu","_init_showTooltip","menu","_classPrivateFieldGet","v","_classPrivateFieldSet","render","NavMenuComponent","this","_menu$menuItems$lengt","_menu$menuItems2","history","getHistory","navMenuWrapperRef","useRef","location","setLocation","overflowIndex","setOverflowIndex","Number","MAX_SAFE_INTEGER","pathname","search","setSelectedKey","setSelected","_ref5","_asyncToGenerator","_menu$menuItems","selectedKeys","initMenuItemAndMatchCurrentPathKeys","menuItems","apply","useEffect","unListen","listen","current","resizeObserver","ResizeObserver","_navMenuWrapperRef$cu","getClientRects","childNodes","wrapperWidth","i","childWidth","height","childHeight","observe","disconnect","overflowMenu","useMemo","slice","ref","_items","isHidden","_class","c","_initClass","_applyDecs","initializeReactI18n","NS","locales","_LaunchpadButton","LaunchpadButton","LaunchpadButtonComponent","LaunchpadsContext","useLaunchpadContext","MenuGroup","name","MenuItemFolder","concat","id","MenuItem","_item$menuIcon","loadingFavorites","pushRecentVisit","toggleStar","isStarred","starred","handleStarClick","useCallback","handleClick","classNames","WrappedLink","url","href","target","WrappedIcon","lib","icon","menuIcon","pick","prefix","SidebarMenuItem","_item$menuIcon2","handleRemoveStar","searching","expanded","setExpanded","searchingExpanded","setSearchingExpanded","toggle","previous","actualExpanded","Launchpad","searchInputRef","handleClickSearchBox","_searchInputRef$curre","focus","loading","q","setQ","menuGroups","favorites","recentVisits","useLaunchpadInfo","handleSearch","clearSearch","Provider","Loading","placeholder","onChange","theme","empty","group","spinning","_EoLaunchpadButtonV","lockBodyScroll","unwrapProvider","EoLaunchpadButtonV2","disconnectedCallback","super","EoLaunchpadButtonV2Component","host","initialized","setInitialized","setActive","toggleLaunchpad","hotkeys","filter","preventDefault","unbind","deferredLaunchpadInfo","schedulePrefetch","deferredFavorites","role","LaunchpadSvg","WrappedDropdownActions","onActionClick","data","actions","dropdownActive","setDropdownActive","filteredActions","checkIfByTransform","handleActionClick","action","instanceId","_data$menuIcon","getAppLocaleName","_LaunchpadConfig","_dec4","_C","_actionClickEvent","_onActionClick","LaunchpadConfig","get","_get_actionClickEvent2","set","_set_actionClickEvent2","_init_menuGroups","_init_actions","_init_actionClickEvent","emit","LaunchpadConfigComponent","_set_actionClickEvent","_get_actionClickEvent","o","_","has","_checkInRHS","_EasyopsNavbarAlerts","EasyopsNavbarAlerts","EasyopsNavbarAlertsComponent","storage","JsonStorage","localStorage","licenseDaysLeft","setLicenseDaysLeft","slowRender","setSlowRender","currentApp","useCurrentApp","licenseDismissedKey","authInfo","auth","getAuth","org","_authInfo$license","dismissExpireAt","validDaysLeft","license","isAdmin","getItem","moment","unix","handelRouteRender","renderTime","loadTime","loadInfoPage","getRuntime","getMiscSettings","isBuildPush","millisecondToSecond","suggestTime","suggestUrl","addEventListener","removeEventListener","handleLicenseAlertDismiss","setItem","Alert","link","label","undefined","closable","onClose","millisecond","Math","floor","_EoLaunchpadQuickAcce","EoLaunchpadQuickAccess","EoLaunchpadQuickAccessComponent","_EoSearchLaunchpad","EoSearchLaunchpad","EoSearchLaunchpadComponent","onFocus","onBlur","onMouseDown","_EoLaunchpadRecentVis","EoLaunchpadRecentVisits","EoLaunchpadRecentVisitsComponent","___CSS_LOADER_EXPORT___","push","module","toString","___CSS_LOADER_URL_IMPORT_0___","URL","___CSS_LOADER_URL_REPLACEMENT_0___","exports","options","String","__esModule","default","test","hash","needQuotes","replace"],"sourceRoot":""}
|