@next-bricks/nav 1.11.2 → 1.11.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/dist/bricks.json +13 -13
  2. package/dist/chunks/{2133.5e1c5099.js → 2133.df581c65.js} +2 -2
  3. package/dist/chunks/{2133.5e1c5099.js.map → 2133.df581c65.js.map} +1 -1
  4. package/dist/chunks/{2252.51fbe26a.js → 2252.90811cb5.js} +3 -3
  5. package/dist/chunks/{2252.51fbe26a.js.map → 2252.90811cb5.js.map} +1 -1
  6. package/dist/chunks/{7115.245c67ba.js → 7115.c23fb7ab.js} +2 -2
  7. package/dist/chunks/{7115.245c67ba.js.map → 7115.c23fb7ab.js.map} +1 -1
  8. package/dist/chunks/{8171.38a07996.js → 8171.21525e43.js} +3 -3
  9. package/dist/chunks/{8171.38a07996.js.map → 8171.21525e43.js.map} +1 -1
  10. package/dist/chunks/{8518.4133212d.js → 8518.bb5cb42d.js} +2 -2
  11. package/dist/chunks/{8518.4133212d.js.map → 8518.bb5cb42d.js.map} +1 -1
  12. package/dist/chunks/875.b6aeb538.js +2 -0
  13. package/dist/chunks/875.b6aeb538.js.map +1 -0
  14. package/dist/chunks/9043.c58641c4.js +3 -0
  15. package/dist/chunks/{9043.31254360.js.map → 9043.c58641c4.js.map} +1 -1
  16. package/dist/chunks/{9155.0557e167.js → 9155.9767489a.js} +3 -3
  17. package/dist/chunks/{9155.0557e167.js.map → 9155.9767489a.js.map} +1 -1
  18. package/dist/chunks/{9496.9fce4116.js → 9496.c7a70091.js} +2 -2
  19. package/dist/chunks/{9496.9fce4116.js.map → 9496.c7a70091.js.map} +1 -1
  20. package/dist/chunks/easyops-navbar-alerts.8fea5cb4.js +2 -0
  21. package/dist/chunks/{easyops-navbar-alerts.7fcadebf.js.map → easyops-navbar-alerts.8fea5cb4.js.map} +1 -1
  22. package/dist/chunks/eo-directory-tree.7e3d28ed.js +2 -0
  23. package/dist/chunks/{eo-directory-tree.e152ac8f.js.map → eo-directory-tree.7e3d28ed.js.map} +1 -1
  24. package/dist/chunks/eo-directory.d9408ab7.js +3 -0
  25. package/dist/chunks/{eo-directory.801c2fa9.js.map → eo-directory.d9408ab7.js.map} +1 -1
  26. package/dist/chunks/eo-frame-breadcrumb.13dc6c85.js +2 -0
  27. package/dist/chunks/{eo-frame-breadcrumb.18e5cad5.js.map → eo-frame-breadcrumb.13dc6c85.js.map} +1 -1
  28. package/dist/chunks/{eo-launchpad-button-v2.0b565e27.js → eo-launchpad-button-v2.37c3ab95.js} +2 -2
  29. package/dist/chunks/{eo-launchpad-button-v2.0b565e27.js.map → eo-launchpad-button-v2.37c3ab95.js.map} +1 -1
  30. package/dist/chunks/{eo-nav-menu.719d9efc.js → eo-nav-menu.1a4f071a.js} +2 -2
  31. package/dist/chunks/{eo-nav-menu.719d9efc.js.map → eo-nav-menu.1a4f071a.js.map} +1 -1
  32. package/dist/chunks/{eo-sidebar-menu-group.d1ec325a.js → eo-sidebar-menu-group.ab7e61a4.js} +3 -3
  33. package/dist/chunks/{eo-sidebar-menu-group.d1ec325a.js.map → eo-sidebar-menu-group.ab7e61a4.js.map} +1 -1
  34. package/dist/chunks/{eo-sidebar-menu-submenu.050a54c9.js → eo-sidebar-menu-submenu.d240be5a.js} +3 -3
  35. package/dist/chunks/{eo-sidebar-menu-submenu.050a54c9.js.map → eo-sidebar-menu-submenu.d240be5a.js.map} +1 -1
  36. package/dist/chunks/{eo-sidebar-menu.4b38248a.js → eo-sidebar-menu.044236b2.js} +2 -2
  37. package/dist/chunks/{eo-sidebar-menu.4b38248a.js.map → eo-sidebar-menu.044236b2.js.map} +1 -1
  38. package/dist/chunks/{eo-sidebar-sub-menu.5b23c6bc.js → eo-sidebar-sub-menu.6d00ae8a.js} +3 -3
  39. package/dist/chunks/{eo-sidebar-sub-menu.5b23c6bc.js.map → eo-sidebar-sub-menu.6d00ae8a.js.map} +1 -1
  40. package/dist/chunks/eo-sidebar.a1fb7d03.js +3 -0
  41. package/dist/chunks/{eo-sidebar.310ff53d.js.map → eo-sidebar.a1fb7d03.js.map} +1 -1
  42. package/dist/chunks/{launchpad-config.640ac0e4.js → launchpad-config.2ad88ced.js} +3 -3
  43. package/dist/chunks/{launchpad-config.640ac0e4.js.map → launchpad-config.2ad88ced.js.map} +1 -1
  44. package/dist/chunks/main.1475bdcd.js +2 -0
  45. package/dist/chunks/{main.e9f16aab.js.map → main.1475bdcd.js.map} +1 -1
  46. package/dist/chunks/{nav-logo.a5839bc9.js → nav-logo.bf1c43b4.js} +2 -2
  47. package/dist/chunks/{nav-logo.a5839bc9.js.map → nav-logo.bf1c43b4.js.map} +1 -1
  48. package/dist/index.9a46ad3e.js +2 -0
  49. package/dist/{index.ada3566f.js.map → index.9a46ad3e.js.map} +1 -1
  50. package/dist/manifest.json +20 -20
  51. package/package.json +2 -2
  52. package/dist/chunks/875.3c07f6e3.js +0 -2
  53. package/dist/chunks/875.3c07f6e3.js.map +0 -1
  54. package/dist/chunks/9043.31254360.js +0 -3
  55. package/dist/chunks/easyops-navbar-alerts.7fcadebf.js +0 -2
  56. package/dist/chunks/eo-directory-tree.e152ac8f.js +0 -2
  57. package/dist/chunks/eo-directory.801c2fa9.js +0 -3
  58. package/dist/chunks/eo-frame-breadcrumb.18e5cad5.js +0 -2
  59. package/dist/chunks/eo-sidebar.310ff53d.js +0 -3
  60. package/dist/chunks/main.e9f16aab.js +0 -2
  61. package/dist/index.ada3566f.js +0 -2
  62. /package/dist/chunks/{2252.51fbe26a.js.LICENSE.txt → 2252.90811cb5.js.LICENSE.txt} +0 -0
  63. /package/dist/chunks/{8171.38a07996.js.LICENSE.txt → 8171.21525e43.js.LICENSE.txt} +0 -0
  64. /package/dist/chunks/{9043.31254360.js.LICENSE.txt → 9043.c58641c4.js.LICENSE.txt} +0 -0
  65. /package/dist/chunks/{9155.0557e167.js.LICENSE.txt → 9155.9767489a.js.LICENSE.txt} +0 -0
  66. /package/dist/chunks/{eo-directory.801c2fa9.js.LICENSE.txt → eo-directory.d9408ab7.js.LICENSE.txt} +0 -0
  67. /package/dist/chunks/{eo-sidebar-menu-group.d1ec325a.js.LICENSE.txt → eo-sidebar-menu-group.ab7e61a4.js.LICENSE.txt} +0 -0
  68. /package/dist/chunks/{eo-sidebar-menu-submenu.050a54c9.js.LICENSE.txt → eo-sidebar-menu-submenu.d240be5a.js.LICENSE.txt} +0 -0
  69. /package/dist/chunks/{eo-sidebar-sub-menu.5b23c6bc.js.LICENSE.txt → eo-sidebar-sub-menu.6d00ae8a.js.LICENSE.txt} +0 -0
  70. /package/dist/chunks/{eo-sidebar.310ff53d.js.LICENSE.txt → eo-sidebar.a1fb7d03.js.LICENSE.txt} +0 -0
  71. /package/dist/chunks/{launchpad-config.640ac0e4.js.LICENSE.txt → launchpad-config.2ad88ced.js.LICENSE.txt} +0 -0
package/dist/bricks.json CHANGED
@@ -9,8 +9,8 @@
9
9
  "elements": [
10
10
  "eo-nav-menu",
11
11
  "eo-launchpad-button-v2",
12
- "eo-launchpad-quick-access",
13
12
  "eo-launchpad-button",
13
+ "eo-launchpad-quick-access",
14
14
  "eo-search-launchpad",
15
15
  "eo-launchpad-recent-visits",
16
16
  "eo-app-bar-wrapper",
@@ -37,12 +37,6 @@
37
37
  "eo-input",
38
38
  "eo-tooltip"
39
39
  ],
40
- "nav.launchpad-config": [
41
- "eo-icon",
42
- "eo-link",
43
- "eo-dropdown-actions",
44
- "basic.show-dialog"
45
- ],
46
40
  "eo-launchpad-button-v2": [
47
41
  "basic.lock-body-scroll",
48
42
  "eo-icon",
@@ -50,20 +44,26 @@
50
44
  "basic.show-dialog",
51
45
  "basic.show-notification"
52
46
  ],
53
- "eo-launchpad-quick-access": [
47
+ "nav.launchpad-config": [
54
48
  "eo-icon",
55
49
  "eo-link",
56
- "basic.show-dialog",
57
- "basic.show-notification"
50
+ "eo-dropdown-actions",
51
+ "basic.show-dialog"
58
52
  ],
59
- "nav.easyops-navbar-alerts": [
53
+ "eo-launchpad-button": [
60
54
  "eo-icon",
61
55
  "eo-link"
62
56
  ],
63
- "eo-launchpad-button": [
57
+ "nav.easyops-navbar-alerts": [
64
58
  "eo-icon",
65
59
  "eo-link"
66
60
  ],
61
+ "eo-launchpad-quick-access": [
62
+ "eo-icon",
63
+ "eo-link",
64
+ "basic.show-dialog",
65
+ "basic.show-notification"
66
+ ],
67
67
  "eo-search-launchpad": [
68
68
  "eo-icon",
69
69
  "eo-link",
@@ -131,5 +131,5 @@
131
131
  "eo-link"
132
132
  ]
133
133
  },
134
- "filePath": "bricks/nav/dist/index.ada3566f.js"
134
+ "filePath": "bricks/nav/dist/index.9a46ad3e.js"
135
135
  }
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunk_next_bricks_nav=self.webpackChunk_next_bricks_nav||[]).push([[2133],{2133:(e,t,n)=>{n.d(t,{fm:()=>z,ir:()=>q,pU:()=>D,sZ:()=>V});var r,i=n(9740),a=n(6330),o=n(8769),s=n(3854),c=n(8247),u=n(4612),p=n(4864),l=n(9393),d=n(3346),m=n(7296),f=n(2824),h=n(2887),v=n(8406),I=10,y=10,g=n(6659),A=n(1030);function w(){return(w=(0,a.A)((function*(){var e=yield(0,d.i)({},{interceptorParams:{ignoreLoadingBar:!0},noAbortOnRouteChange:!0}),t=new Map;for(var n of e.storyboards){var r=n.app;r.localeName=(0,g.F)(r.locales,r.name),t.set(r.id,r)}var a=[],o=new Map;for(var s of e.desktops){var c=[];for(var u of s.items)switch(u.type){case"app":var p=t.get(u.id);p&&c.push((0,i.A)((0,i.A)({},u),{},{name:p.localeName,url:p.homepage,menuIcon:p.menuIcon}));break;case"custom":c.push(u),o.set(u.id,u);break;case"dir":var l=[];for(var m of u.items)if("app"===m.type){var f=t.get(m.id);f&&l.push((0,i.A)((0,i.A)({},m),{},{name:f.localeName,url:f.homepage,menuIcon:f.menuIcon}))}else"custom"===m.type&&(l.push(m),o.set(m.id,m));l.length>0&&c.push((0,i.A)((0,i.A)({},u),{},{items:l}))}c.length>0&&a.push((0,i.A)((0,i.A)({},s),{},{items:c}))}return{menuGroups:a,microAppsById:t,customLinksById:o}}))).apply(this,arguments)}function k(){return F.apply(this,arguments)}function F(){return(F=(0,a.A)((function*(){return(yield(0,m.K)({page:1,pageSize:I},{interceptorParams:{ignoreLoadingBar:!0},noAbortOnRouteChange:!0})).list}))).apply(this,arguments)}function C(){return(C=(0,a.A)((function*(){var e=yield k(),t=[];for(var n of e)if("microApp"===n.type){var r=n.relatedApp;r.localeName=(0,g.F)(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.A)((function*(e){return(0,f.k)({type:"app"===e.type?"microApp":"customItem",relatedInstanceId:e.instanceId},{interceptorParams:{ignoreLoadingBar:!0}})}))).apply(this,arguments)}function S(){return(S=(0,a.A)((function*(e){return e.favoriteId?(0,h.r)(e.favoriteId):k().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(0,h.r)(r);console.error("Menu item to unstar not found:",e)}))}))).apply(this,arguments)}function B(){return(B=(0,a.A)((function*(){var e=(yield(0,v.y)("MICRO_APP_CATEGORY@EASYOPS",{fields:["id","type","name","icon","order","platformApps.appId","platformApps.name","platformApps.homepage","platformApps.description","platformApps.menuIcon","platformApps.locales","platformApps._object_id","platformApps.@.order","platformItems.id","platformItems.name","platformItems.url","platformItems.description","platformItems.menuIcon","platformItems._object_id","platformItems.@.order"],page:1,page_size:300,query:{type:"platform"}})).list,t=null==e?void 0:e.map((e=>{var t=e.platformApps.map((e=>{var t;return{type:"app",name:(0,g.F)(e.locales,e.name),id:e.appId,url:e.homepage,menuIcon:e.menuIcon,description:e.description,instanceId:e.instanceId,order:null===(t=e["@"])||void 0===t?void 0:t.order}})),n=e.platformItems.map((e=>{var t;return{type:"custom",name:e.name,id:e.id,url:e.url,menuIcon:e.menuIcon,description:e.description,instanceId:e.instanceId,order:null===(t=e["@"])||void 0===t?void 0:t.order}})),r=(0,A.sortBy)([...t,...n],"order");return{instanceId:e.instanceId,id:e.id,name:e.name,icon:e.icon,order:e.order,items:r}}));return[{id:"#all",name:"全部",icon:{lib:"easyops",category:"second-menu",icon:"sprint-planning-second-menu"},items:[]},...(0,A.sortBy)(t,"order")]}))).apply(this,arguments)}function P(e,t){return e.id.toLowerCase().includes(t)||e.name.toLowerCase().includes(t)||e.description&&e.description.toLowerCase().includes(t)?e:null}function x(e,t){return e.id.toLowerCase().includes(t)||e.name.toLowerCase().includes(t)||e.description&&e.description.toLowerCase().includes(t)?e:null}var E="launchpad-recent-visits:".concat(null===(r=c.auth.getAuth())||void 0===r?void 0:r.org),L=new u.G(localStorage),_=[],M=new Map,O=new Map,N=!1,G=[],R=!1,j=[],T=!1,q=new p.x((0,a.A)((function*(){({menuGroups:_,microAppsById:M,customLinksById:O}=yield function(){return w.apply(this,arguments)}()),N=!0}))),z=new p.x((0,a.A)((function*(){G=yield function(){return C.apply(this,arguments)}(),R=!0}))),D=new p.x((0,a.A)((function*(){j=yield function(){return B.apply(this,arguments)}(),T=!0}))),J=e=>(0,l.Ds)({type:"error",message:(0,s.httpErrorToString)(e)});function V(e){var[t,n]=(0,o.useState)(_),[r,c]=(0,o.useState)(M),[u,p]=(0,o.useState)(O),[d,m]=(0,o.useState)(""),[f,h]=(0,o.useState)(!N),[v,g]=(0,o.useState)(!R),[A,w]=(0,o.useState)(!T),[k,F]=(0,o.useState)([]),[C,B]=(0,o.useState)([]),[V,H]=(0,o.useState)(G),[K,Q]=(0,o.useState)(j);(0,o.useEffect)((()=>{e&&!f&&(n(_),c(M),p(O))}),[e,f]),(0,o.useEffect)((()=>{e&&!v&&H(G)}),[e,v]),(0,o.useEffect)((()=>{e&&!A&&Q(j)}),[e,A]),(0,o.useEffect)((()=>{var t;e&&F(null!==(t=L.getItem(E))&&void 0!==t?t:[])}),[e]),(0,o.useEffect)((()=>{if(e){var t=function(){var e=(0,a.A)((function*(){try{yield q.fetch(),h(!1)}catch(e){(0,s.handleHttpError)(e)}}));return function(){return e.apply(this,arguments)}}();t()}}),[e]),(0,o.useEffect)((()=>{if(e){var t=function(){var e=(0,a.A)((function*(){try{yield z.fetch(),g(!1)}catch(e){g(!1),J(e)}}));return function(){return e.apply(this,arguments)}}();t()}}),[e]),(0,o.useEffect)((()=>{var t;if(e&&null!==(t=(0,s.getRuntime)())&&void 0!==t&&t.getFeatureFlags()["launchpad-show-platform-category"]){var n=function(){var e=(0,a.A)((function*(){try{yield D.fetch(),w(!1)}catch(e){w(!1),J(e)}}));return function(){return e.apply(this,arguments)}}();n()}}),[e]),(0,o.useEffect)((()=>{if(!f){var e=k.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);B(e)}}),[u,f,r,k]);var U=(0,o.useCallback)((e=>{var t,{type:n,id:r}=e,i=null!==(t=L.getItem(E))&&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(),L.setItem(E,i)}),[]),Z=(0,o.useCallback)((e=>V.some((t=>Y(e,t)))),[V]),W=(0,o.useCallback)((e=>{var t,n=V.findIndex((t=>"link"===e.type?t.favoriteId===e.favoriteId:Y(e,t)));if(n>-1){var r=V[n];t=V.slice(0,n).concat(V.slice(n+1)),function(e){return S.apply(this,arguments)}(r).catch(J)}else{if(V.length>=I)return void(0,l.ui)({type:"warn",title:"收藏数量已达上限",content:"当前收藏链接数量已达上限(".concat(I,"个),请删除部分收藏后再添加。")});var a=(0,i.A)({},e);t=V.concat(a),function(e){return b.apply(this,arguments)}(e).then((e=>{e&&(a.favoriteId=e.instanceId)}),J)}H(t),G=t}),[V]),X=(0,o.useMemo)((()=>function(e,t){if(!t)return e;var n=t.toLowerCase();return e.map((e=>(0,i.A)((0,i.A)({},e),{},{items:e.items.map((e=>{switch(e.type){case"app":return P(e,n);case"custom":return x(e,n);case"dir":var t=e.items.map((e=>"app"===e.type?P(e,n):"custom"===e.type?x(e,n):null)).filter(Boolean);return t.length>0?(0,i.A)((0,i.A)({},e),{},{items:t}):null}})).filter(Boolean)}))).filter((e=>e.items.length>0))}(t,d)),[t,d]),$=(0,o.useMemo)((()=>function(e,t){if(!t)return e;var n=t.toLowerCase();return e.map((e=>(0,i.A)((0,i.A)({},e),{},{items:e.items.map((e=>{switch(e.type){case"app":return P(e,n);case"custom":return x(e,n)}})).filter(Boolean)})))}(K,d)),[K,d]);return{loading:f,q:d,setQ:m,menuGroups:X,loadingFavorites:v,loadingPlatformCategories:A,favorites:V,recentVisits:C,pushRecentVisit:U,isStarred:Z,toggleStar:W,platformCategories:$}}function Y(e,t){return e.instanceId&&t.instanceId?t.instanceId===e.instanceId:t.type===e.type&&t.id===e.id}},9393:(e,t,n)=>{n.d(t,{Bj:()=>a,Ds:()=>c,EM:()=>o,ui:()=>s});var r=n(2621),i=n(4376),a=(0,r.wrapBrick)("eo-icon"),o=(0,r.wrapBrick)("eo-link"),s=(0,i.unwrapProvider)("basic.show-dialog"),c=(0,i.unwrapProvider)("basic.show-notification")},4864:(e,t,n)=>{n.d(t,{x:()=>a});var r=n(6330),i=n(4586);class a{constructor(e){(0,i.A)(this,"preFetchId",null),(0,i.A)(this,"preFetchScheduled",!1),(0,i.A)(this,"firstFetchPromise",null),(0,i.A)(this,"isFetching",!1),(0,i.A)(this,"task",void 0),this.task=e}schedulePrefetch(){var e=this;if(!this.preFetchScheduled){this.preFetchScheduled=!0;var t=function(){var t=(0,r.A)((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}}},6659:(e,t,n)=>{n.d(t,{F:()=>i});var r=n(2659);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}},4612:(e,t,n)=>{n.d(t,{G:()=>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()}}}}]);
2
- //# sourceMappingURL=2133.5e1c5099.js.map
1
+ "use strict";(self.webpackChunk_next_bricks_nav=self.webpackChunk_next_bricks_nav||[]).push([[2133],{2133:(e,t,n)=>{n.d(t,{fm:()=>z,ir:()=>q,pU:()=>D,sZ:()=>V});var r,i=n(9740),a=n(6330),o=n(8769),s=n(8256),c=n(5869),u=n(4612),p=n(4864),l=n(9393),d=n(3346),m=n(7296),f=n(2824),h=n(2887),v=n(8406),I=10,y=10,g=n(6659),A=n(1030);function w(){return(w=(0,a.A)((function*(){var e=yield(0,d.i)({},{interceptorParams:{ignoreLoadingBar:!0},noAbortOnRouteChange:!0}),t=new Map;for(var n of e.storyboards){var r=n.app;r.localeName=(0,g.F)(r.locales,r.name),t.set(r.id,r)}var a=[],o=new Map;for(var s of e.desktops){var c=[];for(var u of s.items)switch(u.type){case"app":var p=t.get(u.id);p&&c.push((0,i.A)((0,i.A)({},u),{},{name:p.localeName,url:p.homepage,menuIcon:p.menuIcon}));break;case"custom":c.push(u),o.set(u.id,u);break;case"dir":var l=[];for(var m of u.items)if("app"===m.type){var f=t.get(m.id);f&&l.push((0,i.A)((0,i.A)({},m),{},{name:f.localeName,url:f.homepage,menuIcon:f.menuIcon}))}else"custom"===m.type&&(l.push(m),o.set(m.id,m));l.length>0&&c.push((0,i.A)((0,i.A)({},u),{},{items:l}))}c.length>0&&a.push((0,i.A)((0,i.A)({},s),{},{items:c}))}return{menuGroups:a,microAppsById:t,customLinksById:o}}))).apply(this,arguments)}function k(){return F.apply(this,arguments)}function F(){return(F=(0,a.A)((function*(){return(yield(0,m.K)({page:1,pageSize:I},{interceptorParams:{ignoreLoadingBar:!0},noAbortOnRouteChange:!0})).list}))).apply(this,arguments)}function C(){return(C=(0,a.A)((function*(){var e=yield k(),t=[];for(var n of e)if("microApp"===n.type){var r=n.relatedApp;r.localeName=(0,g.F)(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.A)((function*(e){return(0,f.k)({type:"app"===e.type?"microApp":"customItem",relatedInstanceId:e.instanceId},{interceptorParams:{ignoreLoadingBar:!0}})}))).apply(this,arguments)}function S(){return(S=(0,a.A)((function*(e){return e.favoriteId?(0,h.r)(e.favoriteId):k().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(0,h.r)(r);console.error("Menu item to unstar not found:",e)}))}))).apply(this,arguments)}function B(){return(B=(0,a.A)((function*(){var e=(yield(0,v.y)("MICRO_APP_CATEGORY@EASYOPS",{fields:["id","type","name","icon","order","platformApps.appId","platformApps.name","platformApps.homepage","platformApps.description","platformApps.menuIcon","platformApps.locales","platformApps._object_id","platformApps.@.order","platformItems.id","platformItems.name","platformItems.url","platformItems.description","platformItems.menuIcon","platformItems._object_id","platformItems.@.order"],page:1,page_size:300,query:{type:"platform"}})).list,t=null==e?void 0:e.map((e=>{var t=e.platformApps.map((e=>{var t;return{type:"app",name:(0,g.F)(e.locales,e.name),id:e.appId,url:e.homepage,menuIcon:e.menuIcon,description:e.description,instanceId:e.instanceId,order:null===(t=e["@"])||void 0===t?void 0:t.order}})),n=e.platformItems.map((e=>{var t;return{type:"custom",name:e.name,id:e.id,url:e.url,menuIcon:e.menuIcon,description:e.description,instanceId:e.instanceId,order:null===(t=e["@"])||void 0===t?void 0:t.order}})),r=(0,A.sortBy)([...t,...n],"order");return{instanceId:e.instanceId,id:e.id,name:e.name,icon:e.icon,order:e.order,items:r}}));return[{id:"#all",name:"全部",icon:{lib:"easyops",category:"second-menu",icon:"sprint-planning-second-menu"},items:[]},...(0,A.sortBy)(t,"order")]}))).apply(this,arguments)}function P(e,t){return e.id.toLowerCase().includes(t)||e.name.toLowerCase().includes(t)||e.description&&e.description.toLowerCase().includes(t)?e:null}function x(e,t){return e.id.toLowerCase().includes(t)||e.name.toLowerCase().includes(t)||e.description&&e.description.toLowerCase().includes(t)?e:null}var E="launchpad-recent-visits:".concat(null===(r=c.auth.getAuth())||void 0===r?void 0:r.org),L=new u.G(localStorage),_=[],M=new Map,O=new Map,N=!1,G=[],R=!1,j=[],T=!1,q=new p.x((0,a.A)((function*(){({menuGroups:_,microAppsById:M,customLinksById:O}=yield function(){return w.apply(this,arguments)}()),N=!0}))),z=new p.x((0,a.A)((function*(){G=yield function(){return C.apply(this,arguments)}(),R=!0}))),D=new p.x((0,a.A)((function*(){j=yield function(){return B.apply(this,arguments)}(),T=!0}))),J=e=>(0,l.Ds)({type:"error",message:(0,s.httpErrorToString)(e)});function V(e){var[t,n]=(0,o.useState)(_),[r,c]=(0,o.useState)(M),[u,p]=(0,o.useState)(O),[d,m]=(0,o.useState)(""),[f,h]=(0,o.useState)(!N),[v,g]=(0,o.useState)(!R),[A,w]=(0,o.useState)(!T),[k,F]=(0,o.useState)([]),[C,B]=(0,o.useState)([]),[V,H]=(0,o.useState)(G),[K,Q]=(0,o.useState)(j);(0,o.useEffect)((()=>{e&&!f&&(n(_),c(M),p(O))}),[e,f]),(0,o.useEffect)((()=>{e&&!v&&H(G)}),[e,v]),(0,o.useEffect)((()=>{e&&!A&&Q(j)}),[e,A]),(0,o.useEffect)((()=>{var t;e&&F(null!==(t=L.getItem(E))&&void 0!==t?t:[])}),[e]),(0,o.useEffect)((()=>{if(e){var t=function(){var e=(0,a.A)((function*(){try{yield q.fetch(),h(!1)}catch(e){(0,s.handleHttpError)(e)}}));return function(){return e.apply(this,arguments)}}();t()}}),[e]),(0,o.useEffect)((()=>{if(e){var t=function(){var e=(0,a.A)((function*(){try{yield z.fetch(),g(!1)}catch(e){g(!1),J(e)}}));return function(){return e.apply(this,arguments)}}();t()}}),[e]),(0,o.useEffect)((()=>{var t;if(e&&null!==(t=(0,s.getRuntime)())&&void 0!==t&&t.getFeatureFlags()["launchpad-show-platform-category"]){var n=function(){var e=(0,a.A)((function*(){try{yield D.fetch(),w(!1)}catch(e){w(!1),J(e)}}));return function(){return e.apply(this,arguments)}}();n()}}),[e]),(0,o.useEffect)((()=>{if(!f){var e=k.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);B(e)}}),[u,f,r,k]);var U=(0,o.useCallback)((e=>{var t,{type:n,id:r}=e,i=null!==(t=L.getItem(E))&&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(),L.setItem(E,i)}),[]),Z=(0,o.useCallback)((e=>V.some((t=>Y(e,t)))),[V]),W=(0,o.useCallback)((e=>{var t,n=V.findIndex((t=>"link"===e.type?t.favoriteId===e.favoriteId:Y(e,t)));if(n>-1){var r=V[n];t=V.slice(0,n).concat(V.slice(n+1)),function(e){return S.apply(this,arguments)}(r).catch(J)}else{if(V.length>=I)return void(0,l.ui)({type:"warn",title:"收藏数量已达上限",content:"当前收藏链接数量已达上限(".concat(I,"个),请删除部分收藏后再添加。")});var a=(0,i.A)({},e);t=V.concat(a),function(e){return b.apply(this,arguments)}(e).then((e=>{e&&(a.favoriteId=e.instanceId)}),J)}H(t),G=t}),[V]),X=(0,o.useMemo)((()=>function(e,t){if(!t)return e;var n=t.toLowerCase();return e.map((e=>(0,i.A)((0,i.A)({},e),{},{items:e.items.map((e=>{switch(e.type){case"app":return P(e,n);case"custom":return x(e,n);case"dir":var t=e.items.map((e=>"app"===e.type?P(e,n):"custom"===e.type?x(e,n):null)).filter(Boolean);return t.length>0?(0,i.A)((0,i.A)({},e),{},{items:t}):null}})).filter(Boolean)}))).filter((e=>e.items.length>0))}(t,d)),[t,d]),$=(0,o.useMemo)((()=>function(e,t){if(!t)return e;var n=t.toLowerCase();return e.map((e=>(0,i.A)((0,i.A)({},e),{},{items:e.items.map((e=>{switch(e.type){case"app":return P(e,n);case"custom":return x(e,n)}})).filter(Boolean)})))}(K,d)),[K,d]);return{loading:f,q:d,setQ:m,menuGroups:X,loadingFavorites:v,loadingPlatformCategories:A,favorites:V,recentVisits:C,pushRecentVisit:U,isStarred:Z,toggleStar:W,platformCategories:$}}function Y(e,t){return e.instanceId&&t.instanceId?t.instanceId===e.instanceId:t.type===e.type&&t.id===e.id}},9393:(e,t,n)=>{n.d(t,{Bj:()=>a,Ds:()=>c,EM:()=>o,ui:()=>s});var r=n(2621),i=n(4376),a=(0,r.wrapBrick)("eo-icon"),o=(0,r.wrapBrick)("eo-link"),s=(0,i.unwrapProvider)("basic.show-dialog"),c=(0,i.unwrapProvider)("basic.show-notification")},4864:(e,t,n)=>{n.d(t,{x:()=>a});var r=n(6330),i=n(4586);class a{constructor(e){(0,i.A)(this,"preFetchId",null),(0,i.A)(this,"preFetchScheduled",!1),(0,i.A)(this,"firstFetchPromise",null),(0,i.A)(this,"isFetching",!1),(0,i.A)(this,"task",void 0),this.task=e}schedulePrefetch(){var e=this;if(!this.preFetchScheduled){this.preFetchScheduled=!0;var t=function(){var t=(0,r.A)((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}}},6659:(e,t,n)=>{n.d(t,{F:()=>i});var r=n(2659);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}},4612:(e,t,n)=>{n.d(t,{G:()=>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()}}}}]);
2
+ //# sourceMappingURL=2133.df581c65.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chunks/2133.5e1c5099.js","mappings":"ySAAaA,EAAkB,GAClBC,EAAsB,G,oBC+FlC,SAAAC,IAAA,OAAAA,GAAAC,EAAAA,EAAAA,IAzEM,YACL,IAAMC,QAAsBC,EAAAA,EAAAA,GAC1B,CAAC,EACD,CACEC,kBAAmB,CAAEC,kBAAkB,GACvCC,sBAAsB,IAIpBC,EAAgB,IAAIC,IAC1B,IAAK,IAAMC,KAAcP,EAAcQ,YAA6B,CAClE,IAAMC,EAAMF,EAAWE,IACvBA,EAAIC,YAAaC,EAAAA,EAAAA,GAAiBF,EAAIG,QAASH,EAAII,MACnDR,EAAcS,IAAIL,EAAIM,GAAIN,EAC5B,CAEA,IAAMO,EAA8B,GAC9BC,EAAkB,IAAIX,IAE5B,IAAK,IAAMY,KAASlB,EAAcmB,SAAwC,CACxE,IAAMC,EAAwB,GAC9B,IAAK,IAAMC,KAAQH,EAAME,MACvB,OAAQC,EAAKC,MACX,IAAK,MACH,IAAMb,EAAMJ,EAAckB,IAAIF,EAAKN,IAC/BN,GACFW,EAAMI,MAAIC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EACPJ,GAAI,IACPR,KAAMJ,EAAIC,WACVgB,IAAKjB,EAAIkB,SACTC,SAAUnB,EAAImB,YAGlB,MAEF,IAAK,SACHR,EAAMI,KAAKH,GACXJ,EAAgBH,IAAIO,EAAKN,GAAIM,GAC7B,MACF,IAAK,MACH,IAAMQ,EAAiC,GACvC,IAAK,IAAMC,KAAWT,EAAKD,MACzB,GAAqB,QAAjBU,EAAQR,KAAgB,CAC1B,IAAMb,EAAMJ,EAAckB,IAAIO,EAAQf,IAClCN,GACFoB,EAASL,MAAIC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EACVK,GAAO,IACVjB,KAAMJ,EAAIC,WACVgB,IAAKjB,EAAIkB,SACTC,SAAUnB,EAAImB,WAGpB,KAA4B,WAAjBE,EAAQR,OACjBO,EAASL,KAAKM,GACdb,EAAgBH,IAAIgB,EAAQf,GAAIe,IAGhCD,EAASE,OAAS,GACpBX,EAAMI,MAAIC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EACPJ,GAAI,IACPD,MAAOS,KAObT,EAAMW,OAAS,GACjBf,EAAWQ,MAAIC,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAC,CAAC,EAAIP,GAAK,IAAEE,UAEhC,CAEA,MAAO,CAAEJ,aAAYX,gBAAeY,kBACtC,KAACe,MAAA,KAAAC,UAAA,UAEcC,IAAiB,OAAAC,EAAAH,MAAC,KAADC,UAAA,UAAAE,IAU/B,OAV+BA,GAAApC,EAAAA,EAAAA,IAAhC,YACE,aACQqC,EAAAA,EAAAA,GACJ,CAAEC,KAAM,EAAGC,SAAU1C,GACrB,CACEM,kBAAmB,CAAEC,kBAAkB,GACvCC,sBAAsB,KAG1BmC,IACJ,KAACP,MAAA,KAAAC,UAAA,CA0CA,SAAAO,IAAA,OAAAA,GAAAzC,EAAAA,EAAAA,IAxCM,YACL,IAAMwC,QAAaL,IACbO,EAAwB,GAC9B,IAAK,IAAMC,KAAOH,EAChB,GAAiB,aAAbG,EAAIpB,KAAqB,CAC3B,IAAMb,EAAMiC,EAAIC,WAGhBlC,EAAIC,YAAaC,EAAAA,EAAAA,GAAiBF,EAAIG,QAASH,EAAII,MACnD4B,EAAOjB,KAAK,CACVoB,WAAYF,EAAIG,WAChBvB,KAAM,MACNT,KAAMJ,EAAIC,WACVK,GAAIN,EAAIqC,MACRpB,IAAKjB,EAAIkB,SACTkB,WAAYpC,EAAIoC,WAChBjB,SAAUnB,EAAImB,UAElB,MAAO,GAAiB,eAAbc,EAAIpB,KAAuB,CACpC,IAAMyB,EAAaL,EAAIM,kBACvBP,EAAOjB,KAAK,CACVoB,WAAYF,EAAIG,WAChBvB,KAAM,SACNT,KAAMkC,EAAWlC,KACjBE,GAAIgC,EAAWhC,GACfW,IAAKqB,EAAWrB,IAChBE,SAAUmB,EAAWnB,UAEzB,KAAwB,SAAbc,EAAIpB,MACbmB,EAAOjB,KAAK,CACVoB,WAAYF,EAAIG,WAChBvB,KAAM,OACNT,KAAM6B,EAAI7B,KAEVa,IAAKgB,EAAIO,KACTrB,SAAUc,EAAIQ,OAIpB,OAAOT,CACT,KAACT,MAAA,KAAAC,UAAA,CAcA,SAAAkB,IAAA,OAAAA,GAAApD,EAAAA,EAAAA,IAZM,UACLsB,GAEA,OAAO+B,EAAAA,EAAAA,GACL,CACE9B,KAAoB,QAAdD,EAAKC,KAAiB,WAAa,aACzC+B,kBAAmBhC,EAAKwB,YAE1B,CACE3C,kBAAmB,CAAEC,kBAAkB,IAG7C,KAAC6B,MAAA,KAAAC,UAAA,CAoBA,SAAAqB,IAAA,OAAAA,GAAAvD,EAAAA,EAAAA,IAlBM,UAA4BsB,GACjC,OAAIA,EAAKuB,YACAW,EAAAA,EAAAA,GAAgClC,EAAKuB,YAGvCV,IAAoBsB,MAAMjB,IAAS,IAAAkB,EAClCC,EAIL,QAJYD,EAAGlB,EAAKoB,MAAMjB,IAAG,IAAAkB,EAAAC,EAAA,MACd,QAAdxC,EAAKC,KACY,aAAboB,EAAIpB,OAAqC,QAAdsC,EAAAlB,EAAIC,kBAAU,IAAAiB,OAAA,EAAdA,EAAgBd,SAAUzB,EAAKN,GAC5C,WAAdM,EAAKC,OAA0C,QAArBuC,EAAAnB,EAAIM,yBAAiB,IAAAa,OAAA,EAArBA,EAAuB9C,MAAOM,EAAKN,EAAE,WACpE,IAAA0C,OAAA,EAJeA,EAIbZ,WAEH,GAAIa,EACF,OAAOH,EAAAA,EAAAA,GAAgCG,GAGzCI,QAAQC,MAAM,iCAAkC1C,EAAK,GAEzD,KAACW,MAAA,KAAAC,UAAA,CAyFA,SAAA+B,IAAA,OAAAA,GAAAjE,EAAAA,EAAAA,IAvFM,YAGL,IAAMkE,SACEC,EAAAA,EAAAA,GAAyB,6BAA8B,CAC3DC,OAAQ,CACN,KACA,OACA,OACA,OACA,QACA,qBACA,oBACA,wBACA,2BACA,wBACA,uBACA,0BACA,uBACA,mBACA,qBACA,oBACA,4BACA,yBACA,2BACA,yBAEF9B,KAAM,EACN+B,UAAW,IACXC,MAAO,CACL/C,KAAM,eAGViB,KAEI+B,EAAcL,aAAU,EAAVA,EAAYM,KAAKC,IACnC,IAAMC,EAAOD,EAASE,aAAaH,KAAK9D,IAA6B,IAAAkE,EACnE,MAAO,CACLrD,KAAM,MACNT,MAAMF,EAAAA,EAAAA,GAAiBF,EAAIG,QAASH,EAAII,MACxCE,GAAIN,EAAIqC,MACRpB,IAAKjB,EAAIkB,SACTC,SAAUnB,EAAImB,SACdgD,YAAanE,EAAImE,YACjB/B,WAAYpC,EAAIoC,WAChBgC,MAAe,QAAVF,EAAElE,EAAI,YAAI,IAAAkE,OAAA,EAARA,EAAUE,MAClB,IAEGC,EAAcN,EAASO,cAAcR,KACxClD,IAA8B,IAAA2D,EAC7B,MAAO,CACL1D,KAAM,SACNT,KAAMQ,EAAKR,KACXE,GAAIM,EAAKN,GACTW,IAAKL,EAAKK,IACVE,SAAUP,EAAKO,SACfgD,YAAavD,EAAKuD,YAClB/B,WAAYxB,EAAKwB,WACjBgC,MAAgB,QAAXG,EAAE3D,EAAK,YAAI,IAAA2D,OAAA,EAATA,EAAWH,MACnB,IAICzD,GAAQ6D,EAAAA,EAAAA,QAAO,IAAIR,KAASK,GAAc,SAChD,MAAO,CACLjC,WAAY2B,EAAS3B,WACrB9B,GAAIyD,EAASzD,GACbF,KAAM2D,EAAS3D,KACfqC,KAAMsB,EAAStB,KACf2B,MAAOL,EAASK,MAChBzD,QACD,IAGH,MAAO,CACL,CACEL,GAAI,OACJF,KAAM,KACNqC,KAAM,CACJgC,IAAK,UACLV,SAAU,cACVtB,KAAM,+BAER9B,MAAO,QAEN6D,EAAAA,EAAAA,QAAOX,EAAa,SAE3B,KAACtC,MAAA,KAAAC,UAAA,CCjMD,SAASkD,EAAiB9D,EAAuB+D,GAC/C,OAAO/D,EAAKN,GAAGsE,cAAcC,SAASF,IACpC/D,EAAKR,KAAKwE,cAAcC,SAASF,IAChC/D,EAAKuD,aAAevD,EAAKuD,YAAYS,cAAcC,SAASF,GAC3D/D,EACA,IACN,CAEA,SAASkE,EAAoBlE,EAA0B+D,GACrD,OAAO/D,EAAKN,GAAGsE,cAAcC,SAASF,IACpC/D,EAAKR,KAAKwE,cAAcC,SAASF,IAChC/D,EAAKuD,aAAevD,EAAKuD,YAAYS,cAAcC,SAASF,GAC3D/D,EACA,IACN,CChEA,IAAMmE,EAAa,2BAAHC,OACA,QADAC,EACdC,EAAAA,KAAKC,iBAAS,IAAAF,OAAA,EAD8BA,EAE3CG,KACGC,EAAU,IAAIC,EAAAA,EAAYC,cAE5BC,EAAqC,GACrCC,EAAyB,IAAI5F,IAC7B6F,EAA2B,IAAI7F,IAC/B8F,GAAY,EAEZC,EAAoC,GACpCC,GAAqB,EAErBC,EAAsD,GACtDC,GAA8B,EAErBC,EAAwB,IAAIC,EAAAA,GAAe3G,EAAAA,EAAAA,IAAC,cAErDiB,WAAYiF,EACZ5F,cAAe6F,EACfjF,gBAAiBkF,SF3Bd,WAAiC,OAAArG,EAAAkC,MAAC,KAADC,UAAA,CE4B5B0E,IACVP,GAAY,CACd,KAEaQ,EAAoB,IAAIF,EAAAA,GAAe3G,EAAAA,EAAAA,IAAC,YACnDsG,QFsDK,WAA6B,OAAA7D,EAAAR,MAAC,KAADC,UAAA,CEtDP4E,GAC3BP,GAAqB,CACvB,KAEaQ,EAA6B,IAAIJ,EAAAA,GAAe3G,EAAAA,EAAAA,IAAC,YAC5DwG,QF6HK,WAAsC,OAAAvC,EAAAhC,MAAC,KAADC,UAAA,CE7HP8E,GACpCP,GAA8B,CAChC,KAEMQ,EAA2BjD,IAC/BkD,EAAAA,EAAAA,IAAiB,CACf3F,KAAM,QACN4F,SAASC,EAAAA,EAAAA,mBAAkBpD,KAUxB,SAASqD,EAAiBC,GAC/B,IAAOlG,EAAUmG,IAAeC,EAAAA,EAAAA,UAAStB,IAClC5F,EAAemH,IAAoBD,EAAAA,EAAAA,UAASrB,IAC5CjF,EAAiBwG,IAAsBF,EAAAA,EAAAA,UAC5CpB,IAGKuB,EAAGC,IAAQJ,EAAAA,EAAAA,UAAS,KAEpBK,EAASC,IAAcN,EAAAA,EAAAA,WAAUnB,IACjC0B,EAAkBC,IAAuBR,EAAAA,EAAAA,WAAUjB,IACnD0B,EAA2BC,IAAgCV,EAAAA,EAAAA,WAC/Df,IAGI0B,EAAoBC,IAAyBZ,EAAAA,EAAAA,UAElD,KAEKa,EAAcC,IAAmBd,EAAAA,EAAAA,UAA+B,KAEhEe,EAAWC,IAAgBhB,EAAAA,EAAAA,UAAwBlB,IACnDmC,EAAoBC,IAAyBlB,EAAAA,EAAAA,UAElDhB,IAEFmC,EAAAA,EAAAA,YAAU,KAEJrB,IAAWO,IACbN,EAAYrB,GACZuB,EAAiBtB,GACjBuB,EAAmBtB,GACrB,GACC,CAACkB,EAAQO,KAEZc,EAAAA,EAAAA,YAAU,KACJrB,IAAWS,GACbS,EAAalC,EACf,GACC,CAACgB,EAAQS,KAEZY,EAAAA,EAAAA,YAAU,KACJrB,IAAWW,GACbS,EAAsBlC,EACxB,GACC,CAACc,EAAQW,KAEZU,EAAAA,EAAAA,YAAU,KACI,IAAAC,EAARtB,GACFc,EAAiD,QAA5BQ,EAAC7C,EAAQ8C,QAAQpD,UAAW,IAAAmD,EAAAA,EAAI,GACvD,GACC,CAACtB,KAEJqB,EAAAA,EAAAA,YAAU,KACR,GAAIrB,EAAQ,CACV,IAAMwB,EAAuB,eAAAC,GAAA/I,EAAAA,EAAAA,IAAG,YAC9B,UACQ0G,EAAsBsC,QAC5BlB,GAAW,EACb,CAAE,MAAO9D,IACPiF,EAAAA,EAAAA,iBAAgBjF,EAClB,CACF,IAAC,kBAP4B,OAAA+E,EAAA9G,MAAA,KAAAC,UAAA,KAQ7B4G,GACF,IACC,CAACxB,KAEJqB,EAAAA,EAAAA,YAAU,KACR,GAAIrB,EAAQ,CACV,IAAM4B,EAAmB,eAAAC,GAAAnJ,EAAAA,EAAAA,IAAG,YAC1B,UACQ6G,EAAkBmC,QACxBhB,GAAoB,EACtB,CAAE,MAAOhE,GACPgE,GAAoB,GACpBf,EAAwBjD,EAC1B,CACF,IAAC,kBARwB,OAAAmF,EAAAlH,MAAA,KAAAC,UAAA,KASzBgH,GACF,IACC,CAAC5B,KAEJqB,EAAAA,EAAAA,YAAU,KAAM,IAAAS,EACd,GACE9B,GACY,QADN8B,GACNC,EAAAA,EAAAA,qBAAY,IAAAD,GAAZA,EAAcE,kBAAkB,oCAChC,CACA,IAAMC,EAA4B,eAAAC,GAAAxJ,EAAAA,EAAAA,IAAG,YACnC,UACQ+G,EAA2BiC,QACjCd,GAA6B,EAC/B,CAAE,MAAOlE,GACPkE,GAA6B,GAC7BjB,EAAwBjD,EAC1B,CACF,IAAC,kBARiC,OAAAwF,EAAAvH,MAAA,KAAAC,UAAA,KASlCqH,GACF,IACC,CAACjC,KAEJqB,EAAAA,EAAAA,YAAU,KACR,IAAId,EAAJ,CAGA,IAAM4B,EAAStB,EACZ3D,KAAKlD,IAEJ,GAAkB,QAAdA,EAAKC,KAAgB,CACvB,IAAMb,EAAMJ,EAAckB,IAAIF,EAAKN,IACnC,OAAON,EACH,CACEa,KAAM,MACNT,KAAMJ,EAAIC,WACVK,GAAIN,EAAIM,GACRW,IAAKjB,EAAIkB,SACTkB,WAAYpC,EAAIoC,WAChBjB,SAAUnB,EAAImB,UAEhB,IACN,CACA,OAAOX,EAAgBM,IAAIF,EAAKN,GAAG,IAEpC0I,OAAOC,SACVrB,EAAgBmB,EApBhB,CAoBuB,GACtB,CAACvI,EAAiB2G,EAASvH,EAAe6H,IAE7C,IAAMyB,GAAkBC,EAAAA,EAAAA,cAAYC,IAAkC,IAAAC,GAAjC,KAAExI,EAAI,GAAEP,GAAoB8I,EACzDL,EAAsD,QAA9BM,EAAGhE,EAAQ8C,QAAQpD,UAAW,IAAAsE,EAAAA,EAAI,GAC1DC,EAAQP,EAAOQ,WAClBC,GAAUA,EAAM3I,OAASA,GAAQ2I,EAAMlJ,KAAOA,IAE7CgJ,GAAS,GACXP,EAAOU,OAAOH,EAAO,GAEvBP,EAAOW,QAAQ,CAAE7I,OAAMP,OACnByI,EAAOzH,OAASlC,GAClB2J,EAAOY,MAGTtE,EAAQuE,QAAQ7E,EAAYgE,EAAO,GAClC,IAEGc,GAAYV,EAAAA,EAAAA,cACfvI,GACCiH,EAAUiC,MAAM7H,GAAQ8H,EAAcnJ,EAAMqB,MAC9C,CAAC4F,IAGGmC,GAAab,EAAAA,EAAAA,cAChBvI,IACC,IAKIqJ,EALEX,EAAQzB,EAAU0B,WAAWtH,GACnB,SAAdrB,EAAKC,KACDoB,EAAIE,aAAevB,EAAKuB,WACxB4H,EAAcnJ,EAAMqB,KAG1B,GAAIqH,GAAS,EAAG,CACd,IAAMY,EAAUrC,EAAUyB,GAC1BW,EAAepC,EACZsC,MAAM,EAAGb,GACTtE,OAAO6C,EAAUsC,MAAMb,EAAQ,IFxEnC,SAA2Bc,GAAA,OAAAvH,EAAAtB,MAAC,KAADC,UAAA,CEyE1B6I,CAAaH,GAASI,MAAM/D,EAC9B,KAAO,CACL,GAAIsB,EAAUvG,QAAUnC,EAMtB,YALAoL,EAAAA,EAAAA,IAAW,CACT1J,KAAM,OACN2J,MAAO,WACPC,QAAS,gBAAFzF,OAAkB7F,EAAe,qBAK5C,IAAM8C,GAAgBjB,EAAAA,EAAAA,GAAA,GAASJ,GAC/BqJ,EAAepC,EAAU7C,OAAO/C,GFnGjC,SAAuByI,GAAA,OAAAhI,EAAAnB,MAAC,KAADC,UAAA,CEoGtBmJ,CAAS/J,GAA4BmC,MAAM6H,IACrCA,IACF3I,EAAIE,WAAayI,EAAOxI,WAC1B,GACCmE,EACL,CACAuB,EAAamC,GACbrE,EAAqBqE,CAAY,GAEnC,CAACpC,IAGGtH,GAA8BsK,EAAAA,EAAAA,UAClC,IDhQG,SACLC,EACA7D,GAEA,IAAKA,EACH,OAAO6D,EAET,IAAMnG,EAASsC,EAAErC,cAmCjB,OAlCgCkG,EAC7BhH,KAAKrD,IAAKO,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACNP,GAAK,IACRE,MAAOF,EAAME,MACVmD,KAAKlD,IACJ,OAAQA,EAAKC,MACX,IAAK,MACH,OAAO6D,EAAiB9D,EAAM+D,GAChC,IAAK,SACH,OAAOG,EAAoBlE,EAAM+D,GACnC,IAAK,MACH,IAAMoG,EAAmBnK,EAAKD,MAC3BmD,KAAKkH,GACS,QAAbA,EAAInK,KACA6D,EAAiBsG,EAAKrG,GACT,WAAbqG,EAAInK,KACFiE,EAAoBkG,EAAKrG,GACzB,OAEPqE,OAAOC,SACV,OAAO8B,EAAiBzJ,OAAS,GAACN,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GAEzBJ,GAAI,IACPD,MAAOoK,IAET,KAER,IAGD/B,OAAOC,aAGXD,QAAQvI,GAAUA,EAAME,MAAMW,OAAS,GAE5C,CCqNU2J,CAAOvK,EAAUuG,IACvB,CAACvG,EAAUuG,IAGPiE,GAAqDL,EAAAA,EAAAA,UACzD,IDxNG,SACLrH,EACAyD,GAEA,IAAKA,EACH,OAAOzD,EAGT,IAAMmB,EAASsC,EAAErC,cAejB,OAdoBpB,EAAWM,KAAKC,IAAQ/C,EAAAA,EAAAA,IAAAA,EAAAA,EAAAA,GAAA,GACvC+C,GAAQ,IACXpD,MAAOoD,EAASpD,MACbmD,KAAKlD,IACJ,OAAQA,EAAKC,MACX,IAAK,MACH,OAAO6D,EAAiB9D,EAAM+D,GAChC,IAAK,SACH,OAAOG,EAAoBlE,EAAM+D,GACrC,IAGDqE,OAAOC,YAGd,CCgMUkC,CAAiBpD,EAAoBd,IAC3C,CAACc,EAAoBd,IAGvB,MAAO,CACLE,UACAF,IACAC,OACA3G,aACA8G,mBACAE,4BACAM,YACAF,eACAuB,kBACAW,YACAG,aACAjC,mBAAoBmD,EAExB,CAEO,SAASnB,EAAcnJ,EAA0BqB,GACtD,OAAOrB,EAAKwB,YAAcH,EAAIG,WAC1BH,EAAIG,aAAexB,EAAKwB,WACxBH,EAAIpB,OAASD,EAAKC,MAAQoB,EAAI3B,KAAOM,EAAKN,EAChD,C,sFC5Ra8K,GAAcC,EAAAA,EAAAA,WAAyC,WACvDC,GAAcD,EAAAA,EAAAA,WAA2B,WAGzCd,GACXgB,EAAAA,EAAAA,gBAAmC,qBAExB/E,GAAmB+E,EAAAA,EAAAA,gBAC9B,0B,0DClBK,MAAMtF,EAOXuF,WAAAA,CAAYC,IAA8BC,EAAAA,EAAAA,GAAA,kBANN,OAAIA,EAAAA,EAAAA,GAAA,0BACZ,IAAKA,EAAAA,EAAAA,GAAA,yBACoB,OAAIA,EAAAA,EAAAA,GAAA,mBACpC,IAAKA,EAAAA,EAAAA,GAAA,oBAIxBC,KAAKF,KAAOA,CACd,CAEAG,gBAAAA,GAAyB,IAAAC,EAAA,KACvB,IAAKF,KAAKG,kBAAmB,CAC3BH,KAAKG,mBAAoB,EACzB,IAAMC,EAAqB,eAAAC,GAAA1M,EAAAA,EAAAA,IAAG,YAC5BuM,EAAKI,WAAa,KAClBJ,EAAKvD,OACP,IAAC,kBAH0B,OAAA0D,EAAAzK,MAAA,KAAAC,UAAA,KAKe,mBAA/B0K,OAAOC,oBAChBR,KAAKM,WAAaC,OAAOC,oBAAoBJ,GAE7CJ,KAAKM,WAAaG,WAChBL,EAGN,CACF,CAEAzD,KAAAA,CAAM+D,GAWJ,IAAIC,EACJ,OAXIX,KAAKM,aAEkC,mBAA9BC,OAAOK,mBAChBA,mBAAmBZ,KAAKM,YAExBO,aAAab,KAAKM,YAEpBN,KAAKM,WAAa,MAIfN,KAAKc,aAAcJ,IACtBV,KAAKc,YAAa,GAClBH,EAAUX,KAAKF,QAEZnB,OAAOhH,IAEND,QAAQC,MAAMA,GACdqI,KAAKe,kBAAoB,IAAI,IAE9BC,SAAQ,KACPhB,KAAKc,YAAa,CAAK,IAEtBd,KAAKe,oBACRf,KAAKe,kBAAoBJ,IAEvBD,GAICV,KAAKe,kBAHDJ,CAIb,E,gDC1DK,SAASpM,EACdC,EACAC,GACA,IAAAwM,EACA,IAAKzM,EACH,OAAOC,EAET,IAAMyM,EAAWC,OAAOC,YACtBD,OAAOE,QAAQ7M,GACZ6I,QAAOgD,IAAA,IAAEiB,EAAMC,GAAUlB,EAAA,OAAKkB,EAAU9M,IAAI,IAC5C0D,KAAIqJ,IAAA,IAAEF,EAAMC,GAAUC,EAAA,MAAK,CAACF,EAAMC,EAAU9M,KAAK,KAEtD,OAAyB,QAAzBwM,GAAOQ,EAAAA,EAAAA,UAASP,UAAS,IAAAD,EAAAA,EAAIxM,CAC/B,C,kCChBO,MAAMkF,EACXkG,WAAAA,CACUnG,GAER,IADQgI,EAAc7L,UAAAF,OAAA,QAAAgM,IAAA9L,UAAA,GAAAA,UAAA,GAAG,cAAa,KAD9B6D,QAAAA,EAAgB,KAChBgI,OAAAA,CACP,CAEHzD,OAAAA,CAAiBxJ,EAAcmN,GAC7B5B,KAAKtG,QAAQuE,QAAQ+B,KAAK0B,OAASjN,EAAMoN,KAAKC,UAAUF,GAC1D,CAEApF,OAAAA,CAAiB/H,GACf,OAAOoN,KAAKE,MAAM/B,KAAKtG,QAAQ8C,QAAQwD,KAAK0B,OAASjN,GACvD,CAEAuN,UAAAA,CAAWvN,GACT,OAAOuL,KAAKtG,QAAQsI,WAAWhC,KAAK0B,OAASjN,EAC/C,CAEAwN,KAAAA,GACE,OAAOjC,KAAKtG,QAAQuI,OACtB,E","sources":["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":["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 { InstanceApi_postSearchV3 } from \"@next-api-sdk/cmdb-sdk\";\nimport type {\n FavMenuItem,\n MenuGroupData,\n MenuItemData,\n MenuItemDataApp,\n MenuItemDataCustom,\n MenuItemDataDir,\n MenuItemDataNormal,\n MicroAppWithInstanceId,\n PlatformCategoryItem,\n} from \"./interfaces\";\nimport { FAVORITES_LIMIT } from \"./constants\";\nimport { getAppLocaleName } from \"../shared/getLocaleName\";\nimport { sortBy } from \"lodash\";\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\nexport async function fetchPlatformCategories(): Promise<\n PlatformCategoryItem[]\n> {\n const categories = (\n await InstanceApi_postSearchV3(\"MICRO_APP_CATEGORY@EASYOPS\", {\n fields: [\n \"id\",\n \"type\",\n \"name\",\n \"icon\",\n \"order\",\n \"platformApps.appId\",\n \"platformApps.name\",\n \"platformApps.homepage\",\n \"platformApps.description\",\n \"platformApps.menuIcon\",\n \"platformApps.locales\",\n \"platformApps._object_id\",\n \"platformApps.@.order\",\n \"platformItems.id\",\n \"platformItems.name\",\n \"platformItems.url\",\n \"platformItems.description\",\n \"platformItems.menuIcon\",\n \"platformItems._object_id\",\n \"platformItems.@.order\",\n ],\n page: 1,\n page_size: 300,\n query: {\n type: \"platform\",\n },\n })\n ).list;\n\n const _categories = categories?.map((category) => {\n const apps = category.platformApps.map((app: Record<string, any>) => {\n return {\n type: \"app\",\n name: getAppLocaleName(app.locales, app.name),\n id: app.appId,\n url: app.homepage,\n menuIcon: app.menuIcon,\n description: app.description,\n instanceId: app.instanceId,\n order: app[\"@\"]?.order,\n };\n }) as MenuItemDataApp[];\n const customItems = category.platformItems.map(\n (item: Record<string, any>) => {\n return {\n type: \"custom\",\n name: item.name,\n id: item.id,\n url: item.url,\n menuIcon: item.menuIcon,\n description: item.description,\n instanceId: item.instanceId,\n order: item[\"@\"]?.order,\n };\n }\n ) as MenuItemDataCustom[];\n\n const items = sortBy([...apps, ...customItems], \"order\");\n return {\n instanceId: category.instanceId,\n id: category.id,\n name: category.name,\n icon: category.icon,\n order: category.order,\n items,\n } as PlatformCategoryItem;\n });\n\n return [\n {\n id: \"#all\",\n name: \"全部\",\n icon: {\n lib: \"easyops\",\n category: \"second-menu\",\n icon: \"sprint-planning-second-menu\",\n },\n items: [],\n },\n ...sortBy(_categories, \"order\"),\n ];\n}\n","import type {\n MenuGroupData,\n MenuItemData,\n MenuItemDataApp,\n MenuItemDataCustom,\n MenuItemDataNormal,\n PlatformCategoryItem,\n} from \"./interfaces\";\n\nexport function search(\n allMenuGroups: MenuGroupData[],\n q: string\n): MenuGroupData[] {\n if (!q) {\n return allMenuGroups;\n }\n const lowerQ = q.toLowerCase();\n const groups: MenuGroupData[] = allMenuGroups\n .map((group) => ({\n ...group,\n items: group.items\n .map((item) => {\n switch (item.type) {\n case \"app\":\n return 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\nexport function searchCategories(\n categories: PlatformCategoryItem[],\n q: string\n): PlatformCategoryItem[] {\n if (!q) {\n return categories;\n }\n\n const lowerQ = q.toLowerCase();\n const _categories = categories.map((category) => ({\n ...category,\n items: category.items\n .map((item) => {\n switch (item.type) {\n case \"app\":\n return matchMenuItemApp(item, lowerQ);\n case \"custom\":\n return matchMenuItemCustom(item, lowerQ);\n }\n })\n // Ignore not matched items\n .filter(Boolean) as MenuItemDataNormal[],\n }));\n return _categories;\n}\n\nfunction matchMenuItemApp(item: MenuItemDataApp, lowerQ: string) {\n return item.id.toLowerCase().includes(lowerQ) ||\n item.name.toLowerCase().includes(lowerQ) ||\n (item.description && item.description.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.description && item.description.toLowerCase().includes(lowerQ))\n ? item\n : null;\n}\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport {\n getRuntime,\n handleHttpError,\n httpErrorToString,\n} from \"@next-core/runtime\";\nimport { auth } from \"@next-core/easyops-runtime\";\nimport { JsonStorage } from \"@next-shared/general/JsonStorage\";\nimport { 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 PlatformCategoryItem,\n StoredMenuItem,\n} from \"./interfaces\";\nimport {\n favorite,\n fetchFavorites,\n fetchLaunchpadInfo,\n fetchPlatformCategories,\n undoFavorite,\n} from \"./api\";\nimport { search, searchCategories } from \"./search\";\nimport { FAVORITES_LIMIT, RECENT_VISITS_LIMIT } from \"./constants\";\n\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\nlet candidatePlatformCategories: PlatformCategoryItem[] = [];\nlet preLoadedPlatformCategories = false;\n\nexport const deferredLaunchpadInfo = new DeferredService(async () => {\n ({\n menuGroups: candidateDesktops,\n microAppsById: candidateMicroAppsById,\n customLinksById: candidateCustomLinksById,\n } = await fetchLaunchpadInfo());\n preLoaded = true;\n});\n\nexport const deferredFavorites = new DeferredService(async () => {\n candidateFavorites = await fetchFavorites();\n preLoadedFavorites = true;\n});\n\nexport const deferredPlatformCategories = new DeferredService(async () => {\n candidatePlatformCategories = await fetchPlatformCategories();\n preLoadedPlatformCategories = true;\n});\n\nconst showErrorAsNotification = (error: unknown) =>\n showNotification({\n type: \"error\",\n message: httpErrorToString(error),\n });\n\n/**\n * - 页面初始化时预加载 launchpad 信息。\n * - 每次打开 launchpad 都发起请求,但该请求的数据只在下次打开 launchpad 时使用。\n * 即每次打开 launchpad 使用的都是上一次获取的数据,以便达到两个效果:\n * - 每次打开 launchpad 都能立即显示菜单列表;\n * - 同时当用户在 launchpad 上操作时,不会出现数据突然更新(新数据请求完成)。\n */\nexport function useLaunchpadInfo(active?: boolean) {\n const [desktops, setDesktops] = useState(candidateDesktops);\n const [microAppsById, setMicroAppsById] = useState(candidateMicroAppsById);\n const [customLinksById, setCustomLinksById] = useState(\n candidateCustomLinksById\n );\n\n const [q, setQ] = useState(\"\");\n\n const [loading, setLoading] = useState(!preLoaded);\n const [loadingFavorites, setLoadingFavorites] = useState(!preLoadedFavorites);\n const [loadingPlatformCategories, setLoadingPlatformCategories] = useState(\n !preLoadedPlatformCategories\n );\n\n const [storedRecentVisits, setStoredRecentVisits] = useState<\n StoredMenuItem[]\n >([]);\n\n const [recentVisits, setRecentVisits] = useState<MenuItemDataNormal[]>([]);\n\n const [favorites, setFavorites] = useState<FavMenuItem[]>(candidateFavorites);\n const [platformCategories, setPlatformCategories] = useState<\n PlatformCategoryItem[]\n >(candidatePlatformCategories);\n\n useEffect(() => {\n // 仅当首次加载完成或重新打开 launchpad 时更新一次数据。\n if (active && !loading) {\n setDesktops(candidateDesktops);\n setMicroAppsById(candidateMicroAppsById);\n setCustomLinksById(candidateCustomLinksById);\n }\n }, [active, loading]);\n\n useEffect(() => {\n if (active && !loadingFavorites) {\n setFavorites(candidateFavorites);\n }\n }, [active, loadingFavorites]);\n\n useEffect(() => {\n if (active && !loadingPlatformCategories) {\n setPlatformCategories(candidatePlatformCategories);\n }\n }, [active, loadingPlatformCategories]);\n\n useEffect(() => {\n if (active) {\n setStoredRecentVisits(storage.getItem(storageKey) ?? []);\n }\n }, [active]);\n\n useEffect(() => {\n if (active) {\n const startFetchLaunchpadInfo = async (): Promise<void> => {\n try {\n await deferredLaunchpadInfo.fetch();\n setLoading(false);\n } catch (error) {\n handleHttpError(error);\n }\n };\n startFetchLaunchpadInfo();\n }\n }, [active]);\n\n useEffect(() => {\n if (active) {\n const startFetchFavorites = async (): Promise<void> => {\n try {\n await deferredFavorites.fetch();\n setLoadingFavorites(false);\n } catch (error) {\n setLoadingFavorites(false);\n showErrorAsNotification(error);\n }\n };\n startFetchFavorites();\n }\n }, [active]);\n\n useEffect(() => {\n if (\n active &&\n getRuntime()?.getFeatureFlags()[\"launchpad-show-platform-category\"]\n ) {\n const startFetchPlatformCategories = async (): Promise<void> => {\n try {\n await deferredPlatformCategories.fetch();\n setLoadingPlatformCategories(false);\n } catch (error) {\n setLoadingPlatformCategories(false);\n showErrorAsNotification(error);\n }\n };\n startFetchPlatformCategories();\n }\n }, [active]);\n\n useEffect(() => {\n if (loading) {\n return;\n }\n const visits = storedRecentVisits\n .map((item) => {\n // Remembered recent visits maybe no longer existed in launchpad\n if (item.type === \"app\") {\n const app = microAppsById.get(item.id);\n return app\n ? {\n type: \"app\",\n name: app.localeName,\n id: app.id,\n url: app.homepage,\n instanceId: app.instanceId,\n menuIcon: app.menuIcon,\n }\n : null;\n }\n 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 const filteredPlatformCategories: PlatformCategoryItem[] = useMemo(\n () => searchCategories(platformCategories, q),\n [platformCategories, q]\n );\n\n return {\n loading,\n q,\n setQ,\n menuGroups,\n loadingFavorites,\n loadingPlatformCategories,\n favorites,\n recentVisits,\n pushRecentVisit,\n isStarred,\n toggleStar,\n platformCategories: filteredPlatformCategories,\n };\n}\n\nexport function matchFavorite(item: MenuItemDataNormal, fav: FavMenuItem) {\n return item.instanceId && fav.instanceId\n ? fav.instanceId === item.instanceId\n : fav.type === item.type && fav.id === item.id;\n}\n","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":["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","get","push","_objectSpread","url","homepage","menuIcon","subItems","subItem","length","apply","arguments","fetchRawFavorites","_fetchRawFavorites","LaunchpadApi_listCollectionV2","page","pageSize","list","_fetchFavorites","stored","fav","relatedApp","favoriteId","instanceId","appId","customItem","relatedCustomItem","link","icon","_favorite","LaunchpadApi_createCollectionV2","relatedInstanceId","_undoFavorite","LaunchpadApi_deleteCollectionV2","then","_list$find","foundId","find","_fav$relatedApp","_fav$relatedCustomIte","console","error","_fetchPlatformCategories","categories","InstanceApi_postSearchV3","fields","page_size","query","_categories","map","category","apps","platformApps","_app$","description","order","customItems","platformItems","_item$","sortBy","lib","matchMenuItemApp","lowerQ","toLowerCase","includes","matchMenuItemCustom","storageKey","concat","_auth$getAuth","auth","getAuth","org","storage","JsonStorage","localStorage","candidateDesktops","candidateMicroAppsById","candidateCustomLinksById","preLoaded","candidateFavorites","preLoadedFavorites","candidatePlatformCategories","preLoadedPlatformCategories","deferredLaunchpadInfo","DeferredService","fetchLaunchpadInfo","deferredFavorites","fetchFavorites","deferredPlatformCategories","fetchPlatformCategories","showErrorAsNotification","showNotification","message","httpErrorToString","useLaunchpadInfo","active","setDesktops","useState","setMicroAppsById","setCustomLinksById","q","setQ","loading","setLoading","loadingFavorites","setLoadingFavorites","loadingPlatformCategories","setLoadingPlatformCategories","storedRecentVisits","setStoredRecentVisits","recentVisits","setRecentVisits","favorites","setFavorites","platformCategories","setPlatformCategories","useEffect","_storage$getItem","getItem","startFetchLaunchpadInfo","_ref4","fetch","handleHttpError","startFetchFavorites","_ref5","_getRuntime","getRuntime","getFeatureFlags","startFetchPlatformCategories","_ref6","visits","filter","Boolean","pushRecentVisit","useCallback","_ref7","_storage$getItem2","index","findIndex","visit","splice","unshift","pop","setItem","isStarred","some","matchFavorite","toggleStar","newFavorites","removed","slice","_x2","undoFavorite","catch","showDialog","title","content","_x","favorite","result","useMemo","allMenuGroups","filteredSubItems","sub","search","filteredPlatformCategories","searchCategories","WrappedIcon","wrapBrick","WrappedLink","unwrapProvider","constructor","task","_defineProperty","this","schedulePrefetch","_this","preFetchScheduled","preFetchLaunchpadInfo","_ref","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":""}
1
+ {"version":3,"file":"chunks/2133.df581c65.js","mappings":"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","sources":["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":["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 { InstanceApi_postSearchV3 } from \"@next-api-sdk/cmdb-sdk\";\nimport type {\n FavMenuItem,\n MenuGroupData,\n MenuItemData,\n MenuItemDataApp,\n MenuItemDataCustom,\n MenuItemDataDir,\n MenuItemDataNormal,\n MicroAppWithInstanceId,\n PlatformCategoryItem,\n} from \"./interfaces\";\nimport { FAVORITES_LIMIT } from \"./constants\";\nimport { getAppLocaleName } from \"../shared/getLocaleName\";\nimport { sortBy } from \"lodash\";\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\nexport async function fetchPlatformCategories(): Promise<\n PlatformCategoryItem[]\n> {\n const categories = (\n await InstanceApi_postSearchV3(\"MICRO_APP_CATEGORY@EASYOPS\", {\n fields: [\n \"id\",\n \"type\",\n \"name\",\n \"icon\",\n \"order\",\n \"platformApps.appId\",\n \"platformApps.name\",\n \"platformApps.homepage\",\n \"platformApps.description\",\n \"platformApps.menuIcon\",\n \"platformApps.locales\",\n \"platformApps._object_id\",\n \"platformApps.@.order\",\n \"platformItems.id\",\n \"platformItems.name\",\n \"platformItems.url\",\n \"platformItems.description\",\n \"platformItems.menuIcon\",\n \"platformItems._object_id\",\n \"platformItems.@.order\",\n ],\n page: 1,\n page_size: 300,\n query: {\n type: \"platform\",\n },\n })\n ).list;\n\n const _categories = categories?.map((category) => {\n const apps = category.platformApps.map((app: Record<string, any>) => {\n return {\n type: \"app\",\n name: getAppLocaleName(app.locales, app.name),\n id: app.appId,\n url: app.homepage,\n menuIcon: app.menuIcon,\n description: app.description,\n instanceId: app.instanceId,\n order: app[\"@\"]?.order,\n };\n }) as MenuItemDataApp[];\n const customItems = category.platformItems.map(\n (item: Record<string, any>) => {\n return {\n type: \"custom\",\n name: item.name,\n id: item.id,\n url: item.url,\n menuIcon: item.menuIcon,\n description: item.description,\n instanceId: item.instanceId,\n order: item[\"@\"]?.order,\n };\n }\n ) as MenuItemDataCustom[];\n\n const items = sortBy([...apps, ...customItems], \"order\");\n return {\n instanceId: category.instanceId,\n id: category.id,\n name: category.name,\n icon: category.icon,\n order: category.order,\n items,\n } as PlatformCategoryItem;\n });\n\n return [\n {\n id: \"#all\",\n name: \"全部\",\n icon: {\n lib: \"easyops\",\n category: \"second-menu\",\n icon: \"sprint-planning-second-menu\",\n },\n items: [],\n },\n ...sortBy(_categories, \"order\"),\n ];\n}\n","import type {\n MenuGroupData,\n MenuItemData,\n MenuItemDataApp,\n MenuItemDataCustom,\n MenuItemDataNormal,\n PlatformCategoryItem,\n} from \"./interfaces\";\n\nexport function search(\n allMenuGroups: MenuGroupData[],\n q: string\n): MenuGroupData[] {\n if (!q) {\n return allMenuGroups;\n }\n const lowerQ = q.toLowerCase();\n const groups: MenuGroupData[] = allMenuGroups\n .map((group) => ({\n ...group,\n items: group.items\n .map((item) => {\n switch (item.type) {\n case \"app\":\n return 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\nexport function searchCategories(\n categories: PlatformCategoryItem[],\n q: string\n): PlatformCategoryItem[] {\n if (!q) {\n return categories;\n }\n\n const lowerQ = q.toLowerCase();\n const _categories = categories.map((category) => ({\n ...category,\n items: category.items\n .map((item) => {\n switch (item.type) {\n case \"app\":\n return matchMenuItemApp(item, lowerQ);\n case \"custom\":\n return matchMenuItemCustom(item, lowerQ);\n }\n })\n // Ignore not matched items\n .filter(Boolean) as MenuItemDataNormal[],\n }));\n return _categories;\n}\n\nfunction matchMenuItemApp(item: MenuItemDataApp, lowerQ: string) {\n return item.id.toLowerCase().includes(lowerQ) ||\n item.name.toLowerCase().includes(lowerQ) ||\n (item.description && item.description.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.description && item.description.toLowerCase().includes(lowerQ))\n ? item\n : null;\n}\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport {\n getRuntime,\n handleHttpError,\n httpErrorToString,\n} from \"@next-core/runtime\";\nimport { auth } from \"@next-core/easyops-runtime\";\nimport { JsonStorage } from \"@next-shared/general/JsonStorage\";\nimport { 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 PlatformCategoryItem,\n StoredMenuItem,\n} from \"./interfaces\";\nimport {\n favorite,\n fetchFavorites,\n fetchLaunchpadInfo,\n fetchPlatformCategories,\n undoFavorite,\n} from \"./api\";\nimport { search, searchCategories } from \"./search\";\nimport { FAVORITES_LIMIT, RECENT_VISITS_LIMIT } from \"./constants\";\n\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\nlet candidatePlatformCategories: PlatformCategoryItem[] = [];\nlet preLoadedPlatformCategories = false;\n\nexport const deferredLaunchpadInfo = new DeferredService(async () => {\n ({\n menuGroups: candidateDesktops,\n microAppsById: candidateMicroAppsById,\n customLinksById: candidateCustomLinksById,\n } = await fetchLaunchpadInfo());\n preLoaded = true;\n});\n\nexport const deferredFavorites = new DeferredService(async () => {\n candidateFavorites = await fetchFavorites();\n preLoadedFavorites = true;\n});\n\nexport const deferredPlatformCategories = new DeferredService(async () => {\n candidatePlatformCategories = await fetchPlatformCategories();\n preLoadedPlatformCategories = true;\n});\n\nconst showErrorAsNotification = (error: unknown) =>\n showNotification({\n type: \"error\",\n message: httpErrorToString(error),\n });\n\n/**\n * - 页面初始化时预加载 launchpad 信息。\n * - 每次打开 launchpad 都发起请求,但该请求的数据只在下次打开 launchpad 时使用。\n * 即每次打开 launchpad 使用的都是上一次获取的数据,以便达到两个效果:\n * - 每次打开 launchpad 都能立即显示菜单列表;\n * - 同时当用户在 launchpad 上操作时,不会出现数据突然更新(新数据请求完成)。\n */\nexport function useLaunchpadInfo(active?: boolean) {\n const [desktops, setDesktops] = useState(candidateDesktops);\n const [microAppsById, setMicroAppsById] = useState(candidateMicroAppsById);\n const [customLinksById, setCustomLinksById] = useState(\n candidateCustomLinksById\n );\n\n const [q, setQ] = useState(\"\");\n\n const [loading, setLoading] = useState(!preLoaded);\n const [loadingFavorites, setLoadingFavorites] = useState(!preLoadedFavorites);\n const [loadingPlatformCategories, setLoadingPlatformCategories] = useState(\n !preLoadedPlatformCategories\n );\n\n const [storedRecentVisits, setStoredRecentVisits] = useState<\n StoredMenuItem[]\n >([]);\n\n const [recentVisits, setRecentVisits] = useState<MenuItemDataNormal[]>([]);\n\n const [favorites, setFavorites] = useState<FavMenuItem[]>(candidateFavorites);\n const [platformCategories, setPlatformCategories] = useState<\n PlatformCategoryItem[]\n >(candidatePlatformCategories);\n\n useEffect(() => {\n // 仅当首次加载完成或重新打开 launchpad 时更新一次数据。\n if (active && !loading) {\n setDesktops(candidateDesktops);\n setMicroAppsById(candidateMicroAppsById);\n setCustomLinksById(candidateCustomLinksById);\n }\n }, [active, loading]);\n\n useEffect(() => {\n if (active && !loadingFavorites) {\n setFavorites(candidateFavorites);\n }\n }, [active, loadingFavorites]);\n\n useEffect(() => {\n if (active && !loadingPlatformCategories) {\n setPlatformCategories(candidatePlatformCategories);\n }\n }, [active, loadingPlatformCategories]);\n\n useEffect(() => {\n if (active) {\n setStoredRecentVisits(storage.getItem(storageKey) ?? []);\n }\n }, [active]);\n\n useEffect(() => {\n if (active) {\n const startFetchLaunchpadInfo = async (): Promise<void> => {\n try {\n await deferredLaunchpadInfo.fetch();\n setLoading(false);\n } catch (error) {\n handleHttpError(error);\n }\n };\n startFetchLaunchpadInfo();\n }\n }, [active]);\n\n useEffect(() => {\n if (active) {\n const startFetchFavorites = async (): Promise<void> => {\n try {\n await deferredFavorites.fetch();\n setLoadingFavorites(false);\n } catch (error) {\n setLoadingFavorites(false);\n showErrorAsNotification(error);\n }\n };\n startFetchFavorites();\n }\n }, [active]);\n\n useEffect(() => {\n if (\n active &&\n getRuntime()?.getFeatureFlags()[\"launchpad-show-platform-category\"]\n ) {\n const startFetchPlatformCategories = async (): Promise<void> => {\n try {\n await deferredPlatformCategories.fetch();\n setLoadingPlatformCategories(false);\n } catch (error) {\n setLoadingPlatformCategories(false);\n showErrorAsNotification(error);\n }\n };\n startFetchPlatformCategories();\n }\n }, [active]);\n\n useEffect(() => {\n if (loading) {\n return;\n }\n const visits = storedRecentVisits\n .map((item) => {\n // Remembered recent visits maybe no longer existed in launchpad\n if (item.type === \"app\") {\n const app = microAppsById.get(item.id);\n return app\n ? {\n type: \"app\",\n name: app.localeName,\n id: app.id,\n url: app.homepage,\n instanceId: app.instanceId,\n menuIcon: app.menuIcon,\n }\n : null;\n }\n 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 const filteredPlatformCategories: PlatformCategoryItem[] = useMemo(\n () => searchCategories(platformCategories, q),\n [platformCategories, q]\n );\n\n return {\n loading,\n q,\n setQ,\n menuGroups,\n loadingFavorites,\n loadingPlatformCategories,\n favorites,\n recentVisits,\n pushRecentVisit,\n isStarred,\n toggleStar,\n platformCategories: filteredPlatformCategories,\n };\n}\n\nexport function matchFavorite(item: MenuItemDataNormal, fav: FavMenuItem) {\n return item.instanceId && fav.instanceId\n ? fav.instanceId === item.instanceId\n : fav.type === item.type && fav.id === item.id;\n}\n","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":["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","get","push","_objectSpread","url","homepage","menuIcon","subItems","subItem","length","apply","arguments","fetchRawFavorites","_fetchRawFavorites","LaunchpadApi_listCollectionV2","page","pageSize","list","_fetchFavorites","stored","fav","relatedApp","favoriteId","instanceId","appId","customItem","relatedCustomItem","link","icon","_favorite","LaunchpadApi_createCollectionV2","relatedInstanceId","_undoFavorite","LaunchpadApi_deleteCollectionV2","then","_list$find","foundId","find","_fav$relatedApp","_fav$relatedCustomIte","console","error","_fetchPlatformCategories","categories","InstanceApi_postSearchV3","fields","page_size","query","_categories","map","category","apps","platformApps","_app$","description","order","customItems","platformItems","_item$","sortBy","lib","matchMenuItemApp","lowerQ","toLowerCase","includes","matchMenuItemCustom","storageKey","concat","_auth$getAuth","auth","getAuth","org","storage","JsonStorage","localStorage","candidateDesktops","candidateMicroAppsById","candidateCustomLinksById","preLoaded","candidateFavorites","preLoadedFavorites","candidatePlatformCategories","preLoadedPlatformCategories","deferredLaunchpadInfo","DeferredService","fetchLaunchpadInfo","deferredFavorites","fetchFavorites","deferredPlatformCategories","fetchPlatformCategories","showErrorAsNotification","showNotification","message","httpErrorToString","useLaunchpadInfo","active","setDesktops","useState","setMicroAppsById","setCustomLinksById","q","setQ","loading","setLoading","loadingFavorites","setLoadingFavorites","loadingPlatformCategories","setLoadingPlatformCategories","storedRecentVisits","setStoredRecentVisits","recentVisits","setRecentVisits","favorites","setFavorites","platformCategories","setPlatformCategories","useEffect","_storage$getItem","getItem","startFetchLaunchpadInfo","_ref4","fetch","handleHttpError","startFetchFavorites","_ref5","_getRuntime","getRuntime","getFeatureFlags","startFetchPlatformCategories","_ref6","visits","filter","Boolean","pushRecentVisit","useCallback","_ref7","_storage$getItem2","index","findIndex","visit","splice","unshift","pop","setItem","isStarred","some","matchFavorite","toggleStar","newFavorites","removed","slice","_x2","undoFavorite","catch","showDialog","title","content","_x","favorite","result","useMemo","allMenuGroups","filteredSubItems","sub","search","filteredPlatformCategories","searchCategories","WrappedIcon","wrapBrick","WrappedLink","unwrapProvider","constructor","task","_defineProperty","this","schedulePrefetch","_this","preFetchScheduled","preFetchLaunchpadInfo","_ref","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":""}
@@ -1,3 +1,3 @@
1
- /*! For license information please see 2252.51fbe26a.js.LICENSE.txt */
2
- "use strict";(self.webpackChunk_next_bricks_nav=self.webpackChunk_next_bricks_nav||[]).push([[2252],{2559:(e,t,n)=>{function r(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}n.d(t,{A:()=>r})},6330:(e,t,n)=>{function r(e,t,n,r,i,a,o){try{var s=e[a](o),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,i)}function i(e){return function(){var t=this,n=arguments;return new Promise((function(i,a){var o=e.apply(t,n);function s(e){r(o,i,a,s,c,"next",e)}function c(e){r(o,i,a,s,c,"throw",e)}s(void 0)}))}}n.d(t,{A:()=>i})},2016:(e,t,n)=>{function r(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}n.d(t,{A:()=>r})},829:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(2559);function i(e,t){return e.get((0,r.A)(e,t))}},918:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(2016);function i(e,t,n){(0,r.A)(e,t),t.set(e,n)}},6121:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(2559);function i(e,t,n){return e.set((0,r.A)(e,t),n),n}},5536:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(2559);function i(e,t,n){return n((0,r.A)(e,t))}},4635:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(2016);function i(e,t){(0,r.A)(e,t),t.add(e)}},4586:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(1369);function i(e,t,n){return(t=(0,r.A)(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},9740:(e,t,n)=>{n.d(t,{A:()=>a});var r=n(4586);function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){(0,r.A)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}},9850:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(7502);function i(e,t){if(null==e)return{};var n,i,a=(0,r.A)(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i<o.length;i++)n=o[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}},7502:(e,t,n)=>{function r(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}n.d(t,{A:()=>r})},2252:(e,t,n)=>{n.r(t),n.d(t,{analytics:()=>u,auth:()=>Ot,checkInstalledApps:()=>i,checkPermissions:()=>St,flowApi:()=>a,menu:()=>o,messageDispatcher:()=>It});var r={};n.r(r),n.d(r,{authenticate:()=>A,getAuth:()=>g,isLoggedIn:()=>w,logout:()=>y});var i={};n.r(i),n.d(i,{getCheckedApp:()=>se,preCheckInstalledApps:()=>ie,waitForCheckingApps:()=>ae});var a={};n.r(a),n.d(a,{FLOW_API_PROVIDER:()=>pe,clearCollectWidgetContract:()=>Se,collectContract:()=>we,collectWidgetContract:()=>be,getArgsOfFlowApi:()=>Pe,isFlowApiProvider:()=>Oe,registerFlowApiProvider:()=>ve});var o={};n.r(o),n.d(o,{fetchMenuById:()=>nt,getMenuById:()=>tt});var s={};n.r(s),n.d(s,{onRequest:()=>At,onResponse:()=>gt,onResponseError:()=>yt});var c={};n.r(c),n.d(c,{create:()=>bt});var u={};n.r(u),n.d(u,{http:()=>s,initialize:()=>ht,pageView:()=>c});var p=n(6330),l=n(1030),d=n(3880),f=n(6730),v=function(){var e=(0,p.A)((function*(e,t){return(yield f.http.post("api/gateway/micro_app.permission.ValidatePermissions/api/micro_app/v1/permission/validate",e,t)).data}));return function(t,n){return e.apply(this,arguments)}}(),h=n(9740),m={};function A(e){Object.assign(m,{org:e.org,username:e.username,userInstanceId:e.userInstanceId,loginFrom:e.loginFrom,accessRule:e.accessRule,isAdmin:e.isAdmin,csrfToken:e.csrfToken,license:e.license,userShowValue:e.userShowValue})}function g(){return(0,h.A)({},m)}function y(){for(var e of Object.keys(m))m[e]=void 0;b.length=0,S.clear()}function w(){return void 0!==m.username}var b=[],S=new Map;function I(){return(I=(0,p.A)((function*(e,t){if(w()&&!g().isAdmin&&Array.isArray(e.permissionsPreCheck))return P(yield t(e.permissionsPreCheck))}))).apply(this,arguments)}function O(e){if(w()&&!g().isAdmin)return P((0,d.scanPermissionActionsInAny)(e))}function P(e){return E.apply(this,arguments)}function E(){return(E=(0,p.A)((function*(e){var t=(0,l.difference)(e,[...b]);if(0!==t.length){b.push(...t);try{var n=yield v({actions:t});for(var r of n.actions)S.set(r.action,r.authorizationStatus),"undefined"===r.authorizationStatus&&console.error('Undefined permission action: "'.concat(r.action,'"'))}catch(e){console.error("Pre-check permissions failed",e)}}}))).apply(this,arguments)}var k=n(4635),M=n(918),C=n(5536),_=n(2559),j=n(6121),T=n(829),N=n(3854),D=1e3,R=6,x=new WeakMap,W=new WeakMap,L=new WeakMap,F=new WeakMap,U=new WeakMap,B=new WeakMap,q=new WeakMap,z=new WeakSet;class G{constructor(e){(0,k.A)(this,z),(0,M.A)(this,x,void 0),(0,M.A)(this,W,void 0),(0,M.A)(this,L,[]),(0,M.A)(this,F,new Set),(0,M.A)(this,U,new Set),(0,M.A)(this,B,0),(0,M.A)(this,q,!1),(0,j.A)(x,this,e)}send(e){(0,T.A)(W,this)||(0,j.A)(W,this,(0,_.A)(z,this,J).call(this));var t=JSON.stringify(e);(0,T.A)(W,this).readyState===WebSocket.OPEN?(0,T.A)(W,this).send(t):(0,T.A)(L,this).push(t)}onMessage(e){(0,T.A)(F,this).add(e)}onClose(e){(0,T.A)(U,this).add(e)}reset(){(0,T.A)(L,this).length=0,(0,T.A)(F,this).clear(),(0,T.A)(U,this).clear()}close(){var e;(0,j.A)(q,this,!0),(null===(e=(0,T.A)(W,this))||void 0===e?void 0:e.readyState)===WebSocket.OPEN&&(0,T.A)(W,this).close()}}function J(){console.log("WebSocket connecting ...");var e=new WebSocket((0,T.A)(x,this));return e.addEventListener("open",(t=>{for(var n of(console.log("WebSocket open:",t),(0,j.A)(B,this,0),(0,T.A)(L,this)))e.send(n);(0,T.A)(L,this).length=0})),e.addEventListener("close",(e=>{if(!(0,T.A)(q,this)){for(var t of(console.log("WebSocket close:",e),(0,T.A)(U,this)))t();1e3!==e.code&&(0,_.A)(z,this,H).call(this)}})),e.addEventListener("error",(e=>{console.error("WebSocket error:",e)})),e.addEventListener("message",(e=>{var t=JSON.parse(e.data);for(var n of(0,T.A)(F,this))n(t)})),e}function H(){if((0,T.A)(B,this)>=R)console.error("WebSocket connect retry limit exceeded");else{var e=Math.pow(2,(0,T.A)(B,this))*D;console.log("WebSocket will reconnect after %d seconds",e/1e3),setTimeout((()=>{var e;(0,j.A)(B,this,(e=(0,T.A)(B,this),++e)),(0,j.A)(W,this,(0,_.A)(z,this,J).call(this))}),e)}}var V=new WeakMap,Y=new WeakMap,$=new WeakMap,K=new WeakSet;function Q(e){if(!(0,T.A)(V,e)){var t="https:"===location.protocol?"wss:":"ws:",n="".concat(t,"//").concat(window.location.host).concat((0,N.getBasePath)(),"api/websocket_service/v1/ws");(0,j.A)(V,e,new G(n))}return(0,T.A)(V,e)}function X(e,t,n,r){var i=(0,T.A)(Y,this)[e].get(r);if(i)return i;var a={event:"sub"===e?"TOPIC.SUB":"TOPIC.UNSUB",payload:n},o=new Promise(((t,r)=>{var i=Z(n);(0,C.A)(K,this,Q).onMessage((n=>{var a=n.event===("sub"===e?"TOPIC.SUB_SUCCESS":"TOPIC.UNSUB_SUCCESS"),o=n.event===("sub"===e?"TOPIC.SUB_FAILED":"TOPIC.UNSUB_FAILED");(a||o)&&i===Z(n.payload)&&(a?t:r)(n)})),(0,C.A)(K,this,Q).send(a)}));return"sub"===e&&(0,T.A)($,this).set(t,r),(0,T.A)(Y,this)[e].set(r,o),o}function Z(e){var{system:t,topic:n}=e;return JSON.stringify({system:t,topic:n})}var ee=n(3496),te=function(){var e=(0,p.A)((function*(e,t){return(yield ee.http.post("api/gateway/micro_app_standalone.runtime.SearchMicroAppStandalone/api/v1/micro_app_standalone/search",e,t)).data}));return function(t,n){return e.apply(this,arguments)}}(),ne=new Map,re=new Map;function ie(e,t){if(window.STANDALONE_MICRO_APPS&&!window.NO_AUTH_GUARD){var n=function(e){var t,n={usedArgs:new Set},{customTemplates:r,menus:i}=null!==(t=e.meta)&&void 0!==t?t:{};return(0,d.traverseStoryboardExpressions)([e.routes,r,i],((e,t)=>{(0,d.collectInstalledAppsHasUsage)(n,e,t)}),"INSTALLED_APPS"),[...n.usedArgs]}(e),r=[];for(var i of n)ne.has(i)||t(i)||r.push(i);if(0===r.length)return;var a=te({query:{appId:{$in:r}},fields:["appId","currentVersion","installStatus"]}).catch((e=>{console.error("Get off site standalone micro-apps failed",e)})),o=function(e){ne.set(e,a.then((t=>{var n,r=null==t||null===(n=t.list)||void 0===n?void 0:n.find((t=>t.appId===e)),i=r?(0,h.A)((0,h.A)({},r),{},{id:e}):void 0;return re.set(e,i),i})))};for(var s of r)o(s)}}function ae(e){return oe.apply(this,arguments)}function oe(){return(oe=(0,p.A)((function*(e){yield Promise.all(e.map((e=>ne.get(e))))}))).apply(this,arguments)}function se(e){if(window.STANDALONE_MICRO_APPS)return re.get(e)}var ce=n(4376),ue=n(2843),pe="core.provider-flow-api";function le(e,t){return e.some((e=>e.source===t))}function de(e){return fe.apply(this,arguments)}function fe(){return fe=(0,p.A)((function*(e){for(var t,{url:n,originalUri:r,method:i="GET",responseWrapper:a=!0,ext_fields:o=[],request:s,isFileType:c}=e,u=["get","delete","head"].includes(i.toLowerCase()),p=c?{responseType:"blob"}:{},d=arguments.length,f=new Array(d>1?d-1:0),v=1;v<d;v++)f[v-1]=arguments[v];if(u){var m,A,g,y,w,b;r&&"object"===(null==s?void 0:s.type)&&(null!==(m=null===(A=r.match(/:([^/]+)/g))||void 0===A?void 0:A.length)&&void 0!==m?m:0)===(null!==(g=null===(y=s.fields)||void 0===y?void 0:y.length)&&void 0!==g?g:0)?[b]=f:[w,b]=f,t=yield ue.http.simpleRequest(i,n,(0,h.A)((0,h.A)({params:w},p),b))}else{var S=function(e){if(!e||"object"!==e.type)return!1;var t=e=>!(0,l.isEmpty)(e)&&e.some((e=>["file","file[]"].includes(e.type)||t(e.fields)));return t(e.fields)}(s),I=function(e){for(var t=le(e,"query"),n=le(e,"body"),r=arguments.length,i=new Array(r>1?r-1:0),a=1;a<r;a++)i[a-1]=arguments[a];if(t){if(n){var[o,s,c]=i;return{data:o,options:(0,h.A)({params:s},c)}}var[u,p]=i;return{data:{},options:(0,h.A)({params:u},p)}}var[l,d]=i;return{data:l,options:d}}(o,...f);t=yield ue.http.requestWithBody(i,n,S?function(e){if(e instanceof FormData)return e;var t=new FormData,n=function(e){Array.isArray(i)?i.forEach((n=>{t.append(e,n)})):!(0,l.isObject)(i)||i instanceof Blob||i instanceof Date?t.append(e,i):Object.entries(i).forEach((n=>{var[r,i]=n;t.append("".concat(e,"[").concat(r,"]"),i)}))};for(var[r,i]of Object.entries(e))n(r);return t}(I.data):I.data,(0,h.A)((0,h.A)({},p),I.options))}return!c&&a?t.data:t})),fe.apply(this,arguments)}function ve(){customElements.define(pe,(0,ce.createProviderClass)(de))}var he=n(8679),me=function(){var e=(0,p.A)((function*(e,t){return(yield f.http.post("api/contract/single_search",e,t)).data}));return function(t,n){return e.apply(this,arguments)}}(),Ae=new Map,ge=new Map,ye=(e,t)=>{null==e||e.forEach((e=>{t.set("".concat(e.namespaceId,".").concat(e.name),e)}))};function we(e){ye(e,Ae)}function be(e){ye(e,ge)}function Se(){ge.clear()}var Ie=new Map;function Oe(e){return e.includes("@")}function Pe(e,t,n){return Ee.apply(this,arguments)}function Ee(){return Ee=(0,p.A)((function*(e,t,n){if(!e.includes(":"))throw new Error("You're using legacy Custom API \"".concat(e,'" which is dropped in v3, please use Flow API instead'));var r=yield function(e){return ke.apply(this,arguments)}(e);if(!r)throw new Ce('Flow API not found: "'.concat(e,'"'));var i=function(e,t){var n,r,i="string"==typeof t.contract?he.safeLoad(t.contract,{schema:he.JSON_SCHEMA,json:!0}):t.contract,{uri:a,method:o="GET",ext_fields:s}=null!==(n=null==i?void 0:i.endpoint)&&void 0!==n?n:{},c=!(null==i||!i.response)&&!1!==i.response.wrapper;if(!a)throw new Error('Missing endpoint.uri in contract of provider "'.concat(e,'"'));return{uri:a,method:"list"===o.toLowerCase()?"get":o,ext_fields:s,name:t.name,namespace:t.namespace,serviceName:t.serviceName,version:t.version,isFileType:"file"===(null==i||null===(r=i.response)||void 0===r?void 0:r.type),responseWrapper:c,request:null==i?void 0:i.request}}(e,r);return function(e,t,n){var r,{uri:i,method:a,ext_fields:o,name:s,namespace:c,serviceName:u,responseWrapper:p,version:l,isFileType:d,request:f}=e,v="saveAs"===n;v&&(r=t.shift());var{url:h,args:m}=function(e,t,n,r,i,a){var o=a?i?"api/gateway/".concat(i):"api/gateway/".concat(r,".").concat(n,"@").concat(a):"api/gateway/api_service.".concat(r,".").concat(n),s=t.slice();return{url:o+e.replace(/:([^/]+)/g,(()=>s.shift())),args:s}}(i,t,s,c,u,l);return[...v?[r]:[],{url:h,originalUri:i,method:a,ext_fields:o,responseWrapper:p,request:f,isFileType:d},...m]}(i,t,n)})),Ee.apply(this,arguments)}function ke(){return ke=(0,p.A)((function*(e){var[t,n]=e.split("@"),[r,i]=n.split(":"),a=function(e){return Ae.get(e)||ge.get(e)}("".concat(t,".").concat(r));if(a)return{name:a.name,namespace:a.namespaceId,serviceName:a.serviceName,version:a.version,contract:{endpoint:a.endpoint,response:a.response,request:a.request}};var o=Ie.get(e);return o||(o=function(e,t,n){return Me.apply(this,arguments)}(t,r,i),Ie.set(e,o)),o})),ke.apply(this,arguments)}function Me(){return(Me=(0,p.A)((function*(e,t,n){var r,{contractData:i}=yield me({contractName:"".concat(e,".").concat(t),version:n});return i?{name:i.name,namespace:null===(r=i.namespace)||void 0===r||null===(r=r[0])||void 0===r?void 0:r.name,serviceName:i.serviceName,version:i.version,contract:{endpoint:i.endpoint,response:i.response,request:i.request}}:null}))).apply(this,arguments)}class Ce extends Error{constructor(e){super(e),this.name="FlowApiNotFoundError",Error.captureStackTrace&&Error.captureStackTrace(this,Ce)}}var _e=n(9850),je=function(){var e=(0,p.A)((function*(e,t,n){return(yield ee.http.post("api/gateway/cmdb.instance.PostSearch/object/".concat(e,"/instance/_search"),t,n)).data}));return function(t,n,r){return e.apply(this,arguments)}}(),Te=function(){var e=(0,p.A)((function*(e,t,n){return(yield f.http.get("api/gateway/micro_app.installed_micro_app.GetMenusInfo/api/v1/micro-app/menus/".concat(e),(0,h.A)((0,h.A)({},n),{},{params:t}))).data}));return function(t,n,r){return e.apply(this,arguments)}}(),Ne=n(2659),De=Symbol("appId"),Re=Symbol("menuI18nNamespace"),xe=Symbol("overrideApp");function We(){return(We=(0,p.A)((function*(e,t,n,r){if(e.dynamicItems&&e.itemsResolve){var i,a=e.app[0].appId,o=(0,h.A)((0,h.A)({},t),{},{pendingPermissionsPreCheck:[...t.pendingPermissionsPreCheck,O(e.itemsResolve)]});a!==t.app.id&&(o.overrideApp=window.STANDALONE_MICRO_APPS?e.overrideApp:null===(i=r.getStoryboardByAppId(a))||void 0===i?void 0:i.app,o.appendI18nNamespace=n.get(e));var s=yield r.resolveData((0,h.A)({transform:"items"},e.itemsResolve),o);e.items=s.items}}))).apply(this,arguments)}function Le(){return Le=(0,p.A)((function*(e,t,n){var r=e.find((e=>"inject"!==e.type));if(r){var i=[],a=new Map,o=new WeakMap,s=function*(){if(c.i18n){var e="menu/".concat(c.menuId,"~").concat(c.app[0].appId,"+").concat(c.instanceId);Object.entries(c.i18n).forEach((t=>{var[n,r]=t;Ne.i18n.addResourceBundle(n,e,r)})),o.set(c,e)}};for(var c of e)yield*s();for(var u of(yield Promise.all(e.map((e=>function(e,t,n,r){return We.apply(this,arguments)}(e,t,o,n)))),e)){var p;if(null!==(p=u.items)&&void 0!==p&&p.length)if("inject"===u.type&&u.injectMenuGroupId){var l=a.get(u.injectMenuGroupId);l||(l=[],a.set(u.injectMenuGroupId,l)),l.push(u)}else i.push(u)}return(0,h.A)((0,h.A)({},r),{},{items:i.flatMap((e=>Fe(e.items,e,a,o))),[Re]:o.get(r),[xe]:r.overrideApp})}})),Le.apply(this,arguments)}function Fe(e,t,n,r){return null==e?void 0:e.map((e=>{var i,a=e.groupId&&n.get(e.groupId);return a&&n.delete(e.groupId),(0,h.A)((0,h.A)({},e),{},{children:(null!==(i=Fe(e.children,t,n,r))&&void 0!==i?i:[]).concat(a?a.flatMap((e=>Fe(e.items,e,n,r))):[]),[De]:t.app[0].appId,[Re]:r.get(t),[xe]:t.overrideApp})}))}function Ue(e){e.items=Be(e.items)}function Be(e){return function(e){return(0,l.sortBy)(e,(e=>{var t;return null!==(t=e.sort)&&void 0!==t?t:-1/0}))}(e).map((e=>(0,h.A)((0,h.A)({},e),{},{children:Be(e.children)})))}var qe=n(8422),ze=n(5058),Ge=["children"];function Je(e,t,n,r){if("titleDataSource"in e&&(0,ce.isObject)(e.titleDataSource)&&Object.entries(e.titleDataSource).every((e=>{var[,t]=e;return null===t||""===t}))&&delete e.titleDataSource,"if"in e&&null===e.if&&delete e.if,"to"in e&&e.to&&!(0,ze.isEvaluable)(e.to)){var i=qe.pipes.yaml(e.to);(0,ce.isObject)(i)&&["pathname","search","hash"].some((e=>(0,ce.hasOwnProperty)(i,e)))&&(e.to=i)}var a=n;if(t!==n.app.id){var o,s=window.STANDALONE_MICRO_APPS?e[xe]:null===(o=r.getStoryboardByAppId(t))||void 0===o?void 0:o.app;a=(0,h.A)((0,h.A)({},n),{},{overrideApp:s,appendI18nNamespace:e[Re]})}return r.asyncComputeRealValue(e,a,{ignoreSymbols:!0})}function He(e,t,n){return Promise.all(e.map(function(){var e=(0,p.A)((function*(e){var{children:r}=e,i=(0,_e.A)(e,Ge),[a,o]=yield Promise.all([Je(i,i[De],t,n),r&&(yield He(r,t,n))]);return(0,h.A)((0,h.A)({},a),{},{children:o})}));return function(t){return e.apply(this,arguments)}}()))}var Ve=function(){var e=(0,p.A)((function*(e,t,n,r){return(yield ee.http.get("api/gateway/cmdb.instance.GetDetail/object/".concat(e,"/instance/").concat(t),(0,h.A)((0,h.A)({},r),{},{params:n}))).data}));return function(t,n,r,i){return e.apply(this,arguments)}}(),Ye=new Map;function $e(e){return Ke.apply(this,arguments)}function Ke(){return(Ke=(0,p.A)((function*(e){if(e.title||(0,l.isEmpty)(e.titleDataSource))return e.title;var t=JSON.stringify(e.titleDataSource),n=Ye.get(t);if(void 0!==n)return n;var r,{objectId:i,instanceId:a,attributeId:o}=e.titleDataSource,s=null!=o?o:"name",c=yield Ve(i,a,{fields:s});if("#showKey"===o&&Array.isArray(c[s])){var[u,...p]=c[s];r=p.length>0?"".concat(u,"(").concat(p.join(","),")"):String(u)}else r=String(c[s]);return Ye.set(t,r),r}))).apply(this,arguments)}var Qe=["items","app"],Xe=new Map,Ze=new Map;function et(e){return null==e?void 0:e.filter(N.checkIfOfComputed).map((e=>{var t=et(e.children);return"group"===e.type?{type:"group",title:e.text,childLayout:e.childLayout,items:t,groupId:e.groupId,groupFrom:e.groupFrom}:null!=t&&t.length?{type:"subMenu",childLayout:e.childLayout,title:e.text,icon:e.icon,items:t,defaultExpanded:e.defaultExpanded}:(0,l.omit)(e,["type","items","children"])}))}function tt(e){return Ze.get(e)}function nt(e,t,n){var r=Xe.get(e);return r||(r=function(e,t,n){return rt.apply(this,arguments)}(e,t,n)),r}function rt(){return rt=(0,p.A)((function*(e,t,n){var r=window.STANDALONE_MICRO_APPS?function(e,t,n){var r,i,a,o,s=n.getStoryboardByAppId(t);return(null!==(r=null!==(i=null===(a=s.meta)||void 0===a?void 0:a.injectMenus)&&void 0!==i?i:null===(o=s.meta)||void 0===o?void 0:o.menus)&&void 0!==r?r:[]).filter((t=>t.menuId===e)).map((e=>{var n;return(0,h.A)((0,h.A)({},e),null!==(n=e.app)&&void 0!==n&&null!==(n=n[0])&&void 0!==n&&n.appId?{}:{app:[{appId:t}]})}))}(e,t.app.id,n):t.flags["three-level-menu-layout"]?(yield Te(e,{menuObjectId:"EASYOPS_STORYBOARD_MENU"})).menus:(yield je("EASYOPS_STORYBOARD_MENU",{page:1,page_size:200,fields:{menuId:!0,title:!0,icon:!0,link:!0,titleDataSource:!0,defaultCollapsed:!0,defaultCollapsedBreakpoint:!0,type:!0,injectMenuGroupId:!0,dynamicItems:!0,itemsResolve:!0,items:!0,i18n:!0,"items.children":!0,"app.appId":!0},query:{menuId:{$eq:e},app:{$size:{$gt:0}}}})).list,i=yield function(e,t,n){return Le.apply(this,arguments)}(r,t,n);if(!i)throw new Error("Menu not found: ".concat(e));Ue(i);var{items:a,app:o}=i,s=(0,_e.A)(i,Qe),c=(0,h.A)((0,h.A)({},t),{},{pendingPermissionsPreCheck:[...t.pendingPermissionsPreCheck,O([a,s])]});delete c.tplStateStoreId,delete c.forEachItem,delete c.forEachIndex;var u=o[0].appId,[p,d]=yield Promise.all([Je(s,u,c,n),He(a,c,n)]),f=(0,h.A)((0,h.A)({title:yield $e(p)},(0,l.pick)(p,["icon","link","defaultCollapsed","defaultCollapsedBreakpoint"])),{},{menuItems:et(d)});Ze.set(e,f)})),rt.apply(this,arguments)}var it=[],at=null,ot={maxWaitingTime:5e3,maxLoggedEvents:10};function st(){clearTimeout(at),it.length>ot.maxLoggedEvents?ct():at=setTimeout(ct,ot.maxWaitingTime)}function ct(){if(0!==it.length){var e,t={model:"easyops.FRONTEND_STAT",columns:["_ver","st","et","lt","size","time","traceId","code","duration","page","uid","username","api","type","msg","status","pageId","route","apiCount","maxApiTimeCost","apiSizeCost","pageTitle"],data:it.splice(0,ot.maxLoggedEvents)};n=ot.api,r=t,i=new Blob([JSON.stringify(r)],{type:"application/json"}),window.navigator.sendBeacon(n,i),it.length&&(e=ct,(window.requestIdleCallback||window.requestAnimationFrame||(e=>setTimeout(e,17)))(e))}var n,r,i}function ut(){window.addEventListener("beforeunload",ct,!1)}var pt,lt=!1,dt=null,ft=!0,vt=[];function ht(e){lt||(lt=!0,pt||(pt=function(e,t){return Object.assign(ot,(0,h.A)((0,h.A)({},t),{},{api:e})),{sendOnExit:ut,emit:st}}(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}),pt.sendOnExit()))}var mt=Symbol("HttpAnalytics");function At(e){var t=Math.round(performance.now()),n=Date.now();return e[mt]={st:n,time:Math.round(n/1e3),perfStartTime:t},e}function gt(e,t){return wt(!1,e,t)}function yt(e,t){return wt(!0,e,t)}function wt(e,t,n){var r,i=Math.round(performance.now()),a=Date.now(),{[mt]:o,url:s}=n;if(o&&!(e&&t instanceof ue.HttpAbortError)){var c,u,p;delete n[mt];var l,d,f,v,m,A,y,{st:w,time:b,perfStartTime:S}=o,{userInstanceId:I,username:O}=g();if(e){var P=t instanceof ue.HttpResponseError;(P||t instanceof ue.HttpParseError)&&(({status:m,headers:A}=t.response),P&&(y=t.responseJson))}else({status:m,data:y,headers:A}=t);(0,ce.isObject)(y)&&({code:l,message:d}=y),A instanceof Headers&&(f=A.get("x-b3-traceid"),v=A.get("content-length")),r={st:w,_ver:w,uid:I,username:O,time:b,et:a,page:location.href,duration:i-S,api:s,type:"api",code:null!==(c=l)&&void 0!==c?c:-1,msg:null!==(u=d)&&void 0!==u?u:"",status:m,traceId:null!==(p=f)&&void 0!==p?p:"",size:v?Number(v):-1},dt?it.push((0,h.A)((0,h.A)({},r),{},{type:"apiRequest"},dt)):vt.push(r)}return e?Promise.reject(t):t}function bt(){var e=Math.round(performance.now()),t=Date.now();return vt.length=0,dt=null,function(n){var{status:r,path:i,pageTitle:a}=n;if("ok"!==r)return it.push(...vt),void(vt.length=0);var o=Math.round(performance.now())-e,s=Date.now(),{username:c}=g();(function(e){var t,n,r=(t=URL.createObjectURL(new Blob([])),n=t.substring(t.lastIndexOf("/")+1),URL.revokeObjectURL(t),ft&&(n="88-"+n,ft=!1),n),{lt:i,route:a}=e;for(var o of(dt={lt:i,route:a,pageId:r},it.push((0,h.A)((0,h.A)({},e),{},{pageId:r,apiCount:vt.length,maxApiTimeCost:Math.max(0,...vt.map((e=>e.duration))),size:vt.map((e=>e.size)).filter((e=>e>0)).reduce(((e,t)=>e+t),0)})),vt))it.push((0,h.A)((0,h.A)({},o),dt));vt.length=0,pt.emit()})({type:"page",page:location.href,_ver:t,time:Math.round(t/1e3),st:t,et:s,lt:o,pageTitle:a,username:c,route:i}),window.dispatchEvent(new CustomEvent("route.render",{detail:{renderTime:o}}))}}var St=Object.freeze({checkPermissions:function(){if(!w())return!1;if(g().isAdmin)return!0;for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];for(var r of t)switch(S.get(r)){case"unauthorized":case"undefined":return!1;case void 0:return console.error('Un-checked permission action: "'.concat(r,'", please make sure the permission to check is defined in permissionsPreCheck.')),!1}return!0},preCheckPermissions:function(e){if(w()&&!g().isAdmin)return P((0,d.scanPermissionActionsInStoryboard)(e))},preCheckPermissionsForBrickOrRoute:function(e,t){return I.apply(this,arguments)}}),It=new class{constructor(){(0,k.A)(this,K),(0,M.A)(this,V,void 0),(0,M.A)(this,Y,{sub:new Map,unsub:new Map}),(0,M.A)(this,$,new Map)}subscribe(e,t){var n=JSON.stringify(t);return(0,_.A)(K,this,X).call(this,"sub",e,t,n)}unsubscribe(e){var t=(0,T.A)($,this).get(e);if(!t){var n='The message channel to unsubscribe "'.concat(e,'" is not found');return console.error(n),Promise.reject(new Error(n))}var r=JSON.parse(t),i=(0,_.A)(K,this,X).call(this,"unsub",e,r,t);return(0,T.A)(Y,this).sub.delete(t),i.then((()=>{(0,T.A)($,this).delete(e)})),i}onMessage(e,t){var n=(0,T.A)($,this).get(e),r=!1;(0,C.A)(K,this,Q).onMessage((i=>{n||(n=(0,T.A)($,this).get(e)),n?"MESSAGE.PUSH"===i.event&&function(e,t){var n=JSON.parse(e);return n.system===t.system&&(n.topic===t.topic||"string"==typeof n.topic&&n.topic.includes("*")&&new RegExp("^".concat(n.topic.replace(/([^*]*)\*([^*]*)/g,((e,t,n)=>"".concat((0,l.escapeRegExp)(t),"[^/]*").concat((0,l.escapeRegExp)(n)))),"$")).test(t.topic))}(n,i.payload)&&t(i.payload.message):r||(console.error('Message channel: "'.concat(e,'" not found')),r=!0)}))}onClose(e){(0,C.A)(K,this,Q).onClose(e)}reset(){var e;(0,T.A)(Y,this).sub.clear(),(0,T.A)(Y,this).unsub.clear(),(0,T.A)($,this).clear(),null===(e=(0,T.A)(V,this))||void 0===e||e.reset()}},Ot=function(){var e=(0,N.getV2RuntimeFromDll)();if(e)return Object.freeze((0,l.pick)(e,["authenticate","getAuth","isLoggedIn","logout"]))}()||r}}]);
3
- //# sourceMappingURL=2252.51fbe26a.js.map
1
+ /*! For license information please see 2252.90811cb5.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunk_next_bricks_nav=self.webpackChunk_next_bricks_nav||[]).push([[2252],{2559:(e,t,n)=>{function r(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}n.d(t,{A:()=>r})},6330:(e,t,n)=>{function r(e,t,n,r,i,a,o){try{var s=e[a](o),c=s.value}catch(e){return void n(e)}s.done?t(c):Promise.resolve(c).then(r,i)}function i(e){return function(){var t=this,n=arguments;return new Promise((function(i,a){var o=e.apply(t,n);function s(e){r(o,i,a,s,c,"next",e)}function c(e){r(o,i,a,s,c,"throw",e)}s(void 0)}))}}n.d(t,{A:()=>i})},2016:(e,t,n)=>{function r(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}n.d(t,{A:()=>r})},829:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(2559);function i(e,t){return e.get((0,r.A)(e,t))}},918:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(2016);function i(e,t,n){(0,r.A)(e,t),t.set(e,n)}},6121:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(2559);function i(e,t,n){return e.set((0,r.A)(e,t),n),n}},5536:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(2559);function i(e,t,n){return n((0,r.A)(e,t))}},4635:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(2016);function i(e,t){(0,r.A)(e,t),t.add(e)}},4586:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(1369);function i(e,t,n){return(t=(0,r.A)(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},9740:(e,t,n)=>{n.d(t,{A:()=>a});var r=n(4586);function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?i(Object(n),!0).forEach((function(t){(0,r.A)(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}},9850:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(7502);function i(e,t){if(null==e)return{};var n,i,a=(0,r.A)(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i<o.length;i++)n=o[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}},7502:(e,t,n)=>{function r(e,t){if(null==e)return{};var n,r,i={},a=Object.keys(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)>=0||(i[n]=e[n]);return i}n.d(t,{A:()=>r})},2252:(e,t,n)=>{n.r(t),n.d(t,{analytics:()=>u,auth:()=>Ot,checkInstalledApps:()=>i,checkPermissions:()=>St,flowApi:()=>a,menu:()=>o,messageDispatcher:()=>It});var r={};n.r(r),n.d(r,{authenticate:()=>A,getAuth:()=>g,isLoggedIn:()=>w,logout:()=>y});var i={};n.r(i),n.d(i,{getCheckedApp:()=>se,preCheckInstalledApps:()=>ie,waitForCheckingApps:()=>ae});var a={};n.r(a),n.d(a,{FLOW_API_PROVIDER:()=>pe,clearCollectWidgetContract:()=>Se,collectContract:()=>we,collectWidgetContract:()=>be,getArgsOfFlowApi:()=>Pe,isFlowApiProvider:()=>Oe,registerFlowApiProvider:()=>ve});var o={};n.r(o),n.d(o,{fetchMenuById:()=>nt,getMenuById:()=>tt});var s={};n.r(s),n.d(s,{onRequest:()=>At,onResponse:()=>gt,onResponseError:()=>yt});var c={};n.r(c),n.d(c,{create:()=>bt});var u={};n.r(u),n.d(u,{http:()=>s,initialize:()=>ht,pageView:()=>c});var p=n(6330),l=n(1030),d=n(3880),f=n(6730),v=function(){var e=(0,p.A)((function*(e,t){return(yield f.http.post("api/gateway/micro_app.permission.ValidatePermissions/api/micro_app/v1/permission/validate",e,t)).data}));return function(t,n){return e.apply(this,arguments)}}(),h=n(9740),m={};function A(e){Object.assign(m,{org:e.org,username:e.username,userInstanceId:e.userInstanceId,loginFrom:e.loginFrom,accessRule:e.accessRule,isAdmin:e.isAdmin,csrfToken:e.csrfToken,license:e.license,userShowValue:e.userShowValue})}function g(){return(0,h.A)({},m)}function y(){for(var e of Object.keys(m))m[e]=void 0;b.length=0,S.clear()}function w(){return void 0!==m.username}var b=[],S=new Map;function I(){return(I=(0,p.A)((function*(e,t){if(w()&&!g().isAdmin&&Array.isArray(e.permissionsPreCheck))return P(yield t(e.permissionsPreCheck))}))).apply(this,arguments)}function O(e){if(w()&&!g().isAdmin)return P((0,d.scanPermissionActionsInAny)(e))}function P(e){return E.apply(this,arguments)}function E(){return(E=(0,p.A)((function*(e){var t=(0,l.difference)(e,[...b]);if(0!==t.length){b.push(...t);try{var n=yield v({actions:t});for(var r of n.actions)S.set(r.action,r.authorizationStatus),"undefined"===r.authorizationStatus&&console.error('Undefined permission action: "'.concat(r.action,'"'))}catch(e){console.error("Pre-check permissions failed",e)}}}))).apply(this,arguments)}var k=n(4635),M=n(918),C=n(5536),_=n(2559),j=n(6121),T=n(829),N=n(8256),D=1e3,R=6,x=new WeakMap,W=new WeakMap,L=new WeakMap,F=new WeakMap,U=new WeakMap,B=new WeakMap,q=new WeakMap,z=new WeakSet;class G{constructor(e){(0,k.A)(this,z),(0,M.A)(this,x,void 0),(0,M.A)(this,W,void 0),(0,M.A)(this,L,[]),(0,M.A)(this,F,new Set),(0,M.A)(this,U,new Set),(0,M.A)(this,B,0),(0,M.A)(this,q,!1),(0,j.A)(x,this,e)}send(e){(0,T.A)(W,this)||(0,j.A)(W,this,(0,_.A)(z,this,J).call(this));var t=JSON.stringify(e);(0,T.A)(W,this).readyState===WebSocket.OPEN?(0,T.A)(W,this).send(t):(0,T.A)(L,this).push(t)}onMessage(e){(0,T.A)(F,this).add(e)}onClose(e){(0,T.A)(U,this).add(e)}reset(){(0,T.A)(L,this).length=0,(0,T.A)(F,this).clear(),(0,T.A)(U,this).clear()}close(){var e;(0,j.A)(q,this,!0),(null===(e=(0,T.A)(W,this))||void 0===e?void 0:e.readyState)===WebSocket.OPEN&&(0,T.A)(W,this).close()}}function J(){console.log("WebSocket connecting ...");var e=new WebSocket((0,T.A)(x,this));return e.addEventListener("open",(t=>{for(var n of(console.log("WebSocket open:",t),(0,j.A)(B,this,0),(0,T.A)(L,this)))e.send(n);(0,T.A)(L,this).length=0})),e.addEventListener("close",(e=>{if(!(0,T.A)(q,this)){for(var t of(console.log("WebSocket close:",e),(0,T.A)(U,this)))t();1e3!==e.code&&(0,_.A)(z,this,H).call(this)}})),e.addEventListener("error",(e=>{console.error("WebSocket error:",e)})),e.addEventListener("message",(e=>{var t=JSON.parse(e.data);for(var n of(0,T.A)(F,this))n(t)})),e}function H(){if((0,T.A)(B,this)>=R)console.error("WebSocket connect retry limit exceeded");else{var e=Math.pow(2,(0,T.A)(B,this))*D;console.log("WebSocket will reconnect after %d seconds",e/1e3),setTimeout((()=>{var e;(0,j.A)(B,this,(e=(0,T.A)(B,this),++e)),(0,j.A)(W,this,(0,_.A)(z,this,J).call(this))}),e)}}var V=new WeakMap,Y=new WeakMap,$=new WeakMap,K=new WeakSet;function Q(e){if(!(0,T.A)(V,e)){var t="https:"===location.protocol?"wss:":"ws:",n="".concat(t,"//").concat(window.location.host).concat((0,N.getBasePath)(),"api/websocket_service/v1/ws");(0,j.A)(V,e,new G(n))}return(0,T.A)(V,e)}function X(e,t,n,r){var i=(0,T.A)(Y,this)[e].get(r);if(i)return i;var a={event:"sub"===e?"TOPIC.SUB":"TOPIC.UNSUB",payload:n},o=new Promise(((t,r)=>{var i=Z(n);(0,C.A)(K,this,Q).onMessage((n=>{var a=n.event===("sub"===e?"TOPIC.SUB_SUCCESS":"TOPIC.UNSUB_SUCCESS"),o=n.event===("sub"===e?"TOPIC.SUB_FAILED":"TOPIC.UNSUB_FAILED");(a||o)&&i===Z(n.payload)&&(a?t:r)(n)})),(0,C.A)(K,this,Q).send(a)}));return"sub"===e&&(0,T.A)($,this).set(t,r),(0,T.A)(Y,this)[e].set(r,o),o}function Z(e){var{system:t,topic:n}=e;return JSON.stringify({system:t,topic:n})}var ee=n(3496),te=function(){var e=(0,p.A)((function*(e,t){return(yield ee.http.post("api/gateway/micro_app_standalone.runtime.SearchMicroAppStandalone/api/v1/micro_app_standalone/search",e,t)).data}));return function(t,n){return e.apply(this,arguments)}}(),ne=new Map,re=new Map;function ie(e,t){if(window.STANDALONE_MICRO_APPS&&!window.NO_AUTH_GUARD){var n=function(e){var t,n={usedArgs:new Set},{customTemplates:r,menus:i}=null!==(t=e.meta)&&void 0!==t?t:{};return(0,d.traverseStoryboardExpressions)([e.routes,r,i],((e,t)=>{(0,d.collectInstalledAppsHasUsage)(n,e,t)}),"INSTALLED_APPS"),[...n.usedArgs]}(e),r=[];for(var i of n)ne.has(i)||t(i)||r.push(i);if(0===r.length)return;var a=te({query:{appId:{$in:r}},fields:["appId","currentVersion","installStatus"]}).catch((e=>{console.error("Get off site standalone micro-apps failed",e)})),o=function(e){ne.set(e,a.then((t=>{var n,r=null==t||null===(n=t.list)||void 0===n?void 0:n.find((t=>t.appId===e)),i=r?(0,h.A)((0,h.A)({},r),{},{id:e}):void 0;return re.set(e,i),i})))};for(var s of r)o(s)}}function ae(e){return oe.apply(this,arguments)}function oe(){return(oe=(0,p.A)((function*(e){yield Promise.all(e.map((e=>ne.get(e))))}))).apply(this,arguments)}function se(e){if(window.STANDALONE_MICRO_APPS)return re.get(e)}var ce=n(4376),ue=n(2843),pe="core.provider-flow-api";function le(e,t){return e.some((e=>e.source===t))}function de(e){return fe.apply(this,arguments)}function fe(){return fe=(0,p.A)((function*(e){for(var t,{url:n,originalUri:r,method:i="GET",responseWrapper:a=!0,ext_fields:o=[],request:s,isFileType:c}=e,u=["get","delete","head"].includes(i.toLowerCase()),p=c?{responseType:"blob"}:{},d=arguments.length,f=new Array(d>1?d-1:0),v=1;v<d;v++)f[v-1]=arguments[v];if(u){var m,A,g,y,w,b;r&&"object"===(null==s?void 0:s.type)&&(null!==(m=null===(A=r.match(/:([^/]+)/g))||void 0===A?void 0:A.length)&&void 0!==m?m:0)===(null!==(g=null===(y=s.fields)||void 0===y?void 0:y.length)&&void 0!==g?g:0)?[b]=f:[w,b]=f,t=yield ue.http.simpleRequest(i,n,(0,h.A)((0,h.A)({params:w},p),b))}else{var S=function(e){if(!e||"object"!==e.type)return!1;var t=e=>!(0,l.isEmpty)(e)&&e.some((e=>["file","file[]"].includes(e.type)||t(e.fields)));return t(e.fields)}(s),I=function(e){for(var t=le(e,"query"),n=le(e,"body"),r=arguments.length,i=new Array(r>1?r-1:0),a=1;a<r;a++)i[a-1]=arguments[a];if(t){if(n){var[o,s,c]=i;return{data:o,options:(0,h.A)({params:s},c)}}var[u,p]=i;return{data:{},options:(0,h.A)({params:u},p)}}var[l,d]=i;return{data:l,options:d}}(o,...f);t=yield ue.http.requestWithBody(i,n,S?function(e){if(e instanceof FormData)return e;var t=new FormData,n=function(e){Array.isArray(i)?i.forEach((n=>{t.append(e,n)})):!(0,l.isObject)(i)||i instanceof Blob||i instanceof Date?t.append(e,i):Object.entries(i).forEach((n=>{var[r,i]=n;t.append("".concat(e,"[").concat(r,"]"),i)}))};for(var[r,i]of Object.entries(e))n(r);return t}(I.data):I.data,(0,h.A)((0,h.A)({},p),I.options))}return!c&&a?t.data:t})),fe.apply(this,arguments)}function ve(){customElements.define(pe,(0,ce.createProviderClass)(de))}var he=n(8679),me=function(){var e=(0,p.A)((function*(e,t){return(yield f.http.post("api/contract/single_search",e,t)).data}));return function(t,n){return e.apply(this,arguments)}}(),Ae=new Map,ge=new Map,ye=(e,t)=>{null==e||e.forEach((e=>{t.set("".concat(e.namespaceId,".").concat(e.name),e)}))};function we(e){ye(e,Ae)}function be(e){ye(e,ge)}function Se(){ge.clear()}var Ie=new Map;function Oe(e){return e.includes("@")}function Pe(e,t,n){return Ee.apply(this,arguments)}function Ee(){return Ee=(0,p.A)((function*(e,t,n){if(!e.includes(":"))throw new Error("You're using legacy Custom API \"".concat(e,'" which is dropped in v3, please use Flow API instead'));var r=yield function(e){return ke.apply(this,arguments)}(e);if(!r)throw new Ce('Flow API not found: "'.concat(e,'"'));var i=function(e,t){var n,r,i="string"==typeof t.contract?he.safeLoad(t.contract,{schema:he.JSON_SCHEMA,json:!0}):t.contract,{uri:a,method:o="GET",ext_fields:s}=null!==(n=null==i?void 0:i.endpoint)&&void 0!==n?n:{},c=!(null==i||!i.response)&&!1!==i.response.wrapper;if(!a)throw new Error('Missing endpoint.uri in contract of provider "'.concat(e,'"'));return{uri:a,method:"list"===o.toLowerCase()?"get":o,ext_fields:s,name:t.name,namespace:t.namespace,serviceName:t.serviceName,version:t.version,isFileType:"file"===(null==i||null===(r=i.response)||void 0===r?void 0:r.type),responseWrapper:c,request:null==i?void 0:i.request}}(e,r);return function(e,t,n){var r,{uri:i,method:a,ext_fields:o,name:s,namespace:c,serviceName:u,responseWrapper:p,version:l,isFileType:d,request:f}=e,v="saveAs"===n;v&&(r=t.shift());var{url:h,args:m}=function(e,t,n,r,i,a){var o=a?i?"api/gateway/".concat(i):"api/gateway/".concat(r,".").concat(n,"@").concat(a):"api/gateway/api_service.".concat(r,".").concat(n),s=t.slice();return{url:o+e.replace(/:([^/]+)/g,(()=>s.shift())),args:s}}(i,t,s,c,u,l);return[...v?[r]:[],{url:h,originalUri:i,method:a,ext_fields:o,responseWrapper:p,request:f,isFileType:d},...m]}(i,t,n)})),Ee.apply(this,arguments)}function ke(){return ke=(0,p.A)((function*(e){var[t,n]=e.split("@"),[r,i]=n.split(":"),a=function(e){return Ae.get(e)||ge.get(e)}("".concat(t,".").concat(r));if(a)return{name:a.name,namespace:a.namespaceId,serviceName:a.serviceName,version:a.version,contract:{endpoint:a.endpoint,response:a.response,request:a.request}};var o=Ie.get(e);return o||(o=function(e,t,n){return Me.apply(this,arguments)}(t,r,i),Ie.set(e,o)),o})),ke.apply(this,arguments)}function Me(){return(Me=(0,p.A)((function*(e,t,n){var r,{contractData:i}=yield me({contractName:"".concat(e,".").concat(t),version:n});return i?{name:i.name,namespace:null===(r=i.namespace)||void 0===r||null===(r=r[0])||void 0===r?void 0:r.name,serviceName:i.serviceName,version:i.version,contract:{endpoint:i.endpoint,response:i.response,request:i.request}}:null}))).apply(this,arguments)}class Ce extends Error{constructor(e){super(e),this.name="FlowApiNotFoundError",Error.captureStackTrace&&Error.captureStackTrace(this,Ce)}}var _e=n(9850),je=function(){var e=(0,p.A)((function*(e,t,n){return(yield ee.http.post("api/gateway/cmdb.instance.PostSearch/object/".concat(e,"/instance/_search"),t,n)).data}));return function(t,n,r){return e.apply(this,arguments)}}(),Te=function(){var e=(0,p.A)((function*(e,t,n){return(yield f.http.get("api/gateway/micro_app.installed_micro_app.GetMenusInfo/api/v1/micro-app/menus/".concat(e),(0,h.A)((0,h.A)({},n),{},{params:t}))).data}));return function(t,n,r){return e.apply(this,arguments)}}(),Ne=n(2659),De=Symbol("appId"),Re=Symbol("menuI18nNamespace"),xe=Symbol("overrideApp");function We(){return(We=(0,p.A)((function*(e,t,n,r){if(e.dynamicItems&&e.itemsResolve){var i,a=e.app[0].appId,o=(0,h.A)((0,h.A)({},t),{},{pendingPermissionsPreCheck:[...t.pendingPermissionsPreCheck,O(e.itemsResolve)]});a!==t.app.id&&(o.overrideApp=window.STANDALONE_MICRO_APPS?e.overrideApp:null===(i=r.getStoryboardByAppId(a))||void 0===i?void 0:i.app,o.appendI18nNamespace=n.get(e));var s=yield r.resolveData((0,h.A)({transform:"items"},e.itemsResolve),o);e.items=s.items}}))).apply(this,arguments)}function Le(){return Le=(0,p.A)((function*(e,t,n){var r=e.find((e=>"inject"!==e.type));if(r){var i=[],a=new Map,o=new WeakMap,s=function*(){if(c.i18n){var e="menu/".concat(c.menuId,"~").concat(c.app[0].appId,"+").concat(c.instanceId);Object.entries(c.i18n).forEach((t=>{var[n,r]=t;Ne.i18n.addResourceBundle(n,e,r)})),o.set(c,e)}};for(var c of e)yield*s();for(var u of(yield Promise.all(e.map((e=>function(e,t,n,r){return We.apply(this,arguments)}(e,t,o,n)))),e)){var p;if(null!==(p=u.items)&&void 0!==p&&p.length)if("inject"===u.type&&u.injectMenuGroupId){var l=a.get(u.injectMenuGroupId);l||(l=[],a.set(u.injectMenuGroupId,l)),l.push(u)}else i.push(u)}return(0,h.A)((0,h.A)({},r),{},{items:i.flatMap((e=>Fe(e.items,e,a,o))),[Re]:o.get(r),[xe]:r.overrideApp})}})),Le.apply(this,arguments)}function Fe(e,t,n,r){return null==e?void 0:e.map((e=>{var i,a=e.groupId&&n.get(e.groupId);return a&&n.delete(e.groupId),(0,h.A)((0,h.A)({},e),{},{children:(null!==(i=Fe(e.children,t,n,r))&&void 0!==i?i:[]).concat(a?a.flatMap((e=>Fe(e.items,e,n,r))):[]),[De]:t.app[0].appId,[Re]:r.get(t),[xe]:t.overrideApp})}))}function Ue(e){e.items=Be(e.items)}function Be(e){return function(e){return(0,l.sortBy)(e,(e=>{var t;return null!==(t=e.sort)&&void 0!==t?t:-1/0}))}(e).map((e=>(0,h.A)((0,h.A)({},e),{},{children:Be(e.children)})))}var qe=n(8422),ze=n(5058),Ge=["children"];function Je(e,t,n,r){if("titleDataSource"in e&&(0,ce.isObject)(e.titleDataSource)&&Object.entries(e.titleDataSource).every((e=>{var[,t]=e;return null===t||""===t}))&&delete e.titleDataSource,"if"in e&&null===e.if&&delete e.if,"to"in e&&e.to&&!(0,ze.isEvaluable)(e.to)){var i=qe.pipes.yaml(e.to);(0,ce.isObject)(i)&&["pathname","search","hash"].some((e=>(0,ce.hasOwnProperty)(i,e)))&&(e.to=i)}var a=n;if(t!==n.app.id){var o,s=window.STANDALONE_MICRO_APPS?e[xe]:null===(o=r.getStoryboardByAppId(t))||void 0===o?void 0:o.app;a=(0,h.A)((0,h.A)({},n),{},{overrideApp:s,appendI18nNamespace:e[Re]})}return r.asyncComputeRealValue(e,a,{ignoreSymbols:!0})}function He(e,t,n){return Promise.all(e.map(function(){var e=(0,p.A)((function*(e){var{children:r}=e,i=(0,_e.A)(e,Ge),[a,o]=yield Promise.all([Je(i,i[De],t,n),r&&(yield He(r,t,n))]);return(0,h.A)((0,h.A)({},a),{},{children:o})}));return function(t){return e.apply(this,arguments)}}()))}var Ve=function(){var e=(0,p.A)((function*(e,t,n,r){return(yield ee.http.get("api/gateway/cmdb.instance.GetDetail/object/".concat(e,"/instance/").concat(t),(0,h.A)((0,h.A)({},r),{},{params:n}))).data}));return function(t,n,r,i){return e.apply(this,arguments)}}(),Ye=new Map;function $e(e){return Ke.apply(this,arguments)}function Ke(){return(Ke=(0,p.A)((function*(e){if(e.title||(0,l.isEmpty)(e.titleDataSource))return e.title;var t=JSON.stringify(e.titleDataSource),n=Ye.get(t);if(void 0!==n)return n;var r,{objectId:i,instanceId:a,attributeId:o}=e.titleDataSource,s=null!=o?o:"name",c=yield Ve(i,a,{fields:s});if("#showKey"===o&&Array.isArray(c[s])){var[u,...p]=c[s];r=p.length>0?"".concat(u,"(").concat(p.join(","),")"):String(u)}else r=String(c[s]);return Ye.set(t,r),r}))).apply(this,arguments)}var Qe=["items","app"],Xe=new Map,Ze=new Map;function et(e){return null==e?void 0:e.filter(N.checkIfOfComputed).map((e=>{var t=et(e.children);return"group"===e.type?{type:"group",title:e.text,childLayout:e.childLayout,items:t,groupId:e.groupId,groupFrom:e.groupFrom}:null!=t&&t.length?{type:"subMenu",childLayout:e.childLayout,title:e.text,icon:e.icon,items:t,defaultExpanded:e.defaultExpanded}:(0,l.omit)(e,["type","items","children"])}))}function tt(e){return Ze.get(e)}function nt(e,t,n){var r=Xe.get(e);return r||(r=function(e,t,n){return rt.apply(this,arguments)}(e,t,n)),r}function rt(){return rt=(0,p.A)((function*(e,t,n){var r=window.STANDALONE_MICRO_APPS?function(e,t,n){var r,i,a,o,s=n.getStoryboardByAppId(t);return(null!==(r=null!==(i=null===(a=s.meta)||void 0===a?void 0:a.injectMenus)&&void 0!==i?i:null===(o=s.meta)||void 0===o?void 0:o.menus)&&void 0!==r?r:[]).filter((t=>t.menuId===e)).map((e=>{var n;return(0,h.A)((0,h.A)({},e),null!==(n=e.app)&&void 0!==n&&null!==(n=n[0])&&void 0!==n&&n.appId?{}:{app:[{appId:t}]})}))}(e,t.app.id,n):t.flags["three-level-menu-layout"]?(yield Te(e,{menuObjectId:"EASYOPS_STORYBOARD_MENU"})).menus:(yield je("EASYOPS_STORYBOARD_MENU",{page:1,page_size:200,fields:{menuId:!0,title:!0,icon:!0,link:!0,titleDataSource:!0,defaultCollapsed:!0,defaultCollapsedBreakpoint:!0,type:!0,injectMenuGroupId:!0,dynamicItems:!0,itemsResolve:!0,items:!0,i18n:!0,"items.children":!0,"app.appId":!0},query:{menuId:{$eq:e},app:{$size:{$gt:0}}}})).list,i=yield function(e,t,n){return Le.apply(this,arguments)}(r,t,n);if(!i)throw new Error("Menu not found: ".concat(e));Ue(i);var{items:a,app:o}=i,s=(0,_e.A)(i,Qe),c=(0,h.A)((0,h.A)({},t),{},{pendingPermissionsPreCheck:[...t.pendingPermissionsPreCheck,O([a,s])]});delete c.tplStateStoreId,delete c.forEachItem,delete c.forEachIndex;var u=o[0].appId,[p,d]=yield Promise.all([Je(s,u,c,n),He(a,c,n)]),f=(0,h.A)((0,h.A)({title:yield $e(p)},(0,l.pick)(p,["icon","link","defaultCollapsed","defaultCollapsedBreakpoint"])),{},{menuItems:et(d)});Ze.set(e,f)})),rt.apply(this,arguments)}var it=[],at=null,ot={maxWaitingTime:5e3,maxLoggedEvents:10};function st(){clearTimeout(at),it.length>ot.maxLoggedEvents?ct():at=setTimeout(ct,ot.maxWaitingTime)}function ct(){if(0!==it.length){var e,t={model:"easyops.FRONTEND_STAT",columns:["_ver","st","et","lt","size","time","traceId","code","duration","page","uid","username","api","type","msg","status","pageId","route","apiCount","maxApiTimeCost","apiSizeCost","pageTitle"],data:it.splice(0,ot.maxLoggedEvents)};n=ot.api,r=t,i=new Blob([JSON.stringify(r)],{type:"application/json"}),window.navigator.sendBeacon(n,i),it.length&&(e=ct,(window.requestIdleCallback||window.requestAnimationFrame||(e=>setTimeout(e,17)))(e))}var n,r,i}function ut(){window.addEventListener("beforeunload",ct,!1)}var pt,lt=!1,dt=null,ft=!0,vt=[];function ht(e){lt||(lt=!0,pt||(pt=function(e,t){return Object.assign(ot,(0,h.A)((0,h.A)({},t),{},{api:e})),{sendOnExit:ut,emit:st}}(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}),pt.sendOnExit()))}var mt=Symbol("HttpAnalytics");function At(e){var t=Math.round(performance.now()),n=Date.now();return e[mt]={st:n,time:Math.round(n/1e3),perfStartTime:t},e}function gt(e,t){return wt(!1,e,t)}function yt(e,t){return wt(!0,e,t)}function wt(e,t,n){var r,i=Math.round(performance.now()),a=Date.now(),{[mt]:o,url:s}=n;if(o&&!(e&&t instanceof ue.HttpAbortError)){var c,u,p;delete n[mt];var l,d,f,v,m,A,y,{st:w,time:b,perfStartTime:S}=o,{userInstanceId:I,username:O}=g();if(e){var P=t instanceof ue.HttpResponseError;(P||t instanceof ue.HttpParseError)&&(({status:m,headers:A}=t.response),P&&(y=t.responseJson))}else({status:m,data:y,headers:A}=t);(0,ce.isObject)(y)&&({code:l,message:d}=y),A instanceof Headers&&(f=A.get("x-b3-traceid"),v=A.get("content-length")),r={st:w,_ver:w,uid:I,username:O,time:b,et:a,page:location.href,duration:i-S,api:s,type:"api",code:null!==(c=l)&&void 0!==c?c:-1,msg:null!==(u=d)&&void 0!==u?u:"",status:m,traceId:null!==(p=f)&&void 0!==p?p:"",size:v?Number(v):-1},dt?it.push((0,h.A)((0,h.A)({},r),{},{type:"apiRequest"},dt)):vt.push(r)}return e?Promise.reject(t):t}function bt(){var e=Math.round(performance.now()),t=Date.now();return vt.length=0,dt=null,function(n){var{status:r,path:i,pageTitle:a}=n;if("ok"!==r)return it.push(...vt),void(vt.length=0);var o=Math.round(performance.now())-e,s=Date.now(),{username:c}=g();(function(e){var t,n,r=(t=URL.createObjectURL(new Blob([])),n=t.substring(t.lastIndexOf("/")+1),URL.revokeObjectURL(t),ft&&(n="88-"+n,ft=!1),n),{lt:i,route:a}=e;for(var o of(dt={lt:i,route:a,pageId:r},it.push((0,h.A)((0,h.A)({},e),{},{pageId:r,apiCount:vt.length,maxApiTimeCost:Math.max(0,...vt.map((e=>e.duration))),size:vt.map((e=>e.size)).filter((e=>e>0)).reduce(((e,t)=>e+t),0)})),vt))it.push((0,h.A)((0,h.A)({},o),dt));vt.length=0,pt.emit()})({type:"page",page:location.href,_ver:t,time:Math.round(t/1e3),st:t,et:s,lt:o,pageTitle:a,username:c,route:i}),window.dispatchEvent(new CustomEvent("route.render",{detail:{renderTime:o}}))}}var St=Object.freeze({checkPermissions:function(){if(!w())return!1;if(g().isAdmin)return!0;for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];for(var r of t)switch(S.get(r)){case"unauthorized":case"undefined":return!1;case void 0:return console.error('Un-checked permission action: "'.concat(r,'", please make sure the permission to check is defined in permissionsPreCheck.')),!1}return!0},preCheckPermissions:function(e){if(w()&&!g().isAdmin)return P((0,d.scanPermissionActionsInStoryboard)(e))},preCheckPermissionsForBrickOrRoute:function(e,t){return I.apply(this,arguments)}}),It=new class{constructor(){(0,k.A)(this,K),(0,M.A)(this,V,void 0),(0,M.A)(this,Y,{sub:new Map,unsub:new Map}),(0,M.A)(this,$,new Map)}subscribe(e,t){var n=JSON.stringify(t);return(0,_.A)(K,this,X).call(this,"sub",e,t,n)}unsubscribe(e){var t=(0,T.A)($,this).get(e);if(!t){var n='The message channel to unsubscribe "'.concat(e,'" is not found');return console.error(n),Promise.reject(new Error(n))}var r=JSON.parse(t),i=(0,_.A)(K,this,X).call(this,"unsub",e,r,t);return(0,T.A)(Y,this).sub.delete(t),i.then((()=>{(0,T.A)($,this).delete(e)})),i}onMessage(e,t){var n=(0,T.A)($,this).get(e),r=!1;(0,C.A)(K,this,Q).onMessage((i=>{n||(n=(0,T.A)($,this).get(e)),n?"MESSAGE.PUSH"===i.event&&function(e,t){var n=JSON.parse(e);return n.system===t.system&&(n.topic===t.topic||"string"==typeof n.topic&&n.topic.includes("*")&&new RegExp("^".concat(n.topic.replace(/([^*]*)\*([^*]*)/g,((e,t,n)=>"".concat((0,l.escapeRegExp)(t),"[^/]*").concat((0,l.escapeRegExp)(n)))),"$")).test(t.topic))}(n,i.payload)&&t(i.payload.message):r||(console.error('Message channel: "'.concat(e,'" not found')),r=!0)}))}onClose(e){(0,C.A)(K,this,Q).onClose(e)}reset(){var e;(0,T.A)(Y,this).sub.clear(),(0,T.A)(Y,this).unsub.clear(),(0,T.A)($,this).clear(),null===(e=(0,T.A)(V,this))||void 0===e||e.reset()}},Ot=function(){var e=(0,N.getV2RuntimeFromDll)();if(e)return Object.freeze((0,l.pick)(e,["authenticate","getAuth","isLoggedIn","logout"]))}()||r}}]);
3
+ //# sourceMappingURL=2252.90811cb5.js.map