@next-bricks/nav 0.5.2 → 0.5.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.
package/dist/bricks.json CHANGED
@@ -36,5 +36,5 @@
36
36
  "basic.show-dialog"
37
37
  ]
38
38
  },
39
- "filePath": "bricks/nav/dist/index.b8b032eb.js"
39
+ "filePath": "bricks/nav/dist/index.0f73173e.js"
40
40
  }
@@ -0,0 +1,3 @@
1
+ /*! For license information please see 9816.6982784e.js.LICENSE.txt */
2
+ "use strict";(self.webpackChunk_next_bricks_nav=self.webpackChunk_next_bricks_nav||[]).push([[9816],{7694:(e,t,n)=>{n.d(t,{Z:()=>g});var a=n(7896),r=n(8657),i=n.n(r),o=n(2779),l=n.n(o),c=n(2892),s=n(2085),u=n(5178),m=i().createContext({}),p=()=>i().useContext(m);function d(e){var{name:t,items:n}=e;return i().createElement("li",{className:"menu-group"},i().createElement("div",{className:"menu-group-label"},t),i().createElement("ul",{className:"menu"},n.map((e=>"dir"===e.type?i().createElement(f,{key:"".concat(e.type,"-").concat(e.id),name:e.name,items:e.items}):i().createElement(v,{key:"".concat(e.type,"-").concat(e.id),item:e})))))}function v(e){var{item:t}=e,{loadingFavorites:n,pushRecentVisit:o,toggleStar:s,isStarred:m}=p(),d=(0,r.useMemo)((()=>m(t)),[m,t]),v=(0,r.useCallback)((()=>{s(t)}),[t,s]),h=(0,r.useCallback)((()=>{o(t)}),[t,o]);return i().createElement("li",{className:l()("menu-item",{starred:d,"can-star":!n})},i().createElement(c.kk,(0,a.Z)({onClick:h},"app"===t.type?{url:t.url}:{href:t.url,target:"_blank"}),i().createElement(c.V3,(0,a.Z)({className:"menu-icon",lib:"easyops",icon:"micro-app-center"},(0,u.pick)(t.menuIcon,["lib","icon","theme","category","prefix"]))),i().createElement("span",{className:"menu-item-label"},t.name)),i().createElement(c.V3,{lib:"fa",prefix:d?"fas":"far",icon:"star",className:"menu-item-star",title:d?"取消收藏":"收藏",onClick:v}))}function h(e){var{item:t}=e,{pushRecentVisit:n,toggleStar:o}=p(),l=(0,r.useCallback)((()=>{"link"!==t.type&&n(t)}),[t,n]),s=(0,r.useCallback)((()=>{o(t)}),[t,o]);return i().createElement("li",{className:"sidebar-menu-item"},i().createElement(c.kk,(0,a.Z)({onClick:l},"app"===t.type?{url:t.url}:{href:t.url,target:"_blank"}),i().createElement(c.V3,(0,a.Z)({className:"sidebar-menu-icon",lib:"easyops",icon:"micro-app-center"},(0,u.pick)(t.menuIcon,["lib","icon","theme","category","prefix"]))),i().createElement("span",{className:"menu-item-label"},t.name)),i().createElement(c.V3,{lib:"fa",icon:"xmark",className:"menu-item-remove",onClick:s}))}function f(e){var{name:t,items:n}=e,{searching:a}=p(),[o,s]=(0,r.useState)(!1),[u,m]=(0,r.useState)(!1),d=(0,r.useCallback)((()=>{a?m((e=>!e)):s((e=>!e))}),[a]);(0,r.useEffect)((()=>{m(!0)}),[a]);var h=a?u:o;return i().createElement("li",{className:"menu-item folder"},i().createElement(c.kk,{onClick:d},i().createElement(c.V3,{lib:"fa",prefix:"far",icon:"folder-open",className:"menu-icon"}),i().createElement("span",{className:"menu-item-label"},t),i().createElement(c.V3,{lib:"antd",icon:h?"up":"down",className:"menu-item-toggle"})),i().createElement("ul",{className:l()("sub-menu",{expanded:h})},n.map((e=>i().createElement(v,{key:"".concat(e.type,"-").concat(e.id),item:e})))))}function g(e){var{active:t}=e,n=(0,r.useRef)(null),o=(0,r.useCallback)((()=>{var e;null===(e=n.current)||void 0===e||e.focus()}),[]),{loading:u,q:p,setQ:v,menuGroups:f,favorites:g,loadingFavorites:x,recentVisits:y,pushRecentVisit:k,toggleStar:E,isStarred:w}=(0,s.m1)(t),I=!!p,C=(0,r.useCallback)((e=>{v(e.target.value)}),[v]),N=(0,r.useCallback)((()=>{v("")}),[v]);return i().createElement("div",{className:l()("launchpad",{active:t})},i().createElement(m.Provider,{value:{searching:I,loadingFavorites:x,pushRecentVisit:k,toggleStar:E,isStarred:w}},i().createElement("div",{className:"sidebar"},i().createElement("div",{className:"quick-nav"},i().createElement("div",{className:"quick-nav-label"},"快捷访问"),i().createElement("ul",{className:"sidebar-menu"},g.map(((e,t)=>i().createElement(h,{key:t,item:e})))))),i().createElement("div",{className:l()("content",{loading:u})},i().createElement(b,{loading:u}),i().createElement("div",{className:"search-box",onClick:o},i().createElement(c.V3,{lib:"fa",icon:"magnifying-glass",className:"search-icon"}),i().createElement("input",{ref:n,placeholder:"通过关键字搜索",value:p,onChange:C,className:"search-input"}),i().createElement(c.V3,{lib:"antd",theme:"filled",icon:"close-circle",className:l()("search-clear",{searching:I}),onClick:N})),i().createElement("div",{className:l()({empty:0===y.length})},i().createElement("div",{className:"recent-visits-label"},"最近访问"),i().createElement("ul",{className:"recent-visits"},y.map(((e,t)=>i().createElement("li",{key:t},i().createElement(c.kk,(0,a.Z)({onClick:()=>k(e)},"app"===e.type?{url:e.url}:{href:e.url,target:"_blank"}),i().createElement("span",null,e.name))))))),i().createElement("ul",{className:"menu-groups"},f.map((e=>i().createElement(d,{key:e.name,name:e.name,items:e.items})))))))}function b(e){var{loading:t}=e;return t&&i().createElement("div",{className:"spinner"},i().createElement(c.V3,{lib:"fa",icon:"spinner",spinning:!0}))}},2085:(e,t,n)=>{n.d(t,{sK:()=>j,yp:()=>q,m1:()=>P});var a,r=n(3028),i=n(4795),o=n(8657),l=n(777),c=n(9784),s=n(2890),u=n(2301),m=n(2892),p=n(5887),d=n(2106),v=n(3352),h=function(){var e=(0,i.Z)((function*(e,t){return(yield v.http.get("api/gateway/user_service.launchpad.ListCollectionV2/api/v2/launchpad/collection",(0,r.Z)((0,r.Z)({},t),{},{params:e}))).data}));return function(t,n){return e.apply(this,arguments)}}(),f=function(){var e=(0,i.Z)((function*(e,t){return(yield v.http.post("api/gateway/user_service.launchpad.CreateCollectionV2/api/v2/launchpad/collection",e,t)).data}));return function(t,n){return e.apply(this,arguments)}}(),g=(e,t)=>v.http.delete("api/gateway/user_service.launchpad.DeleteCollectionV2/api/v2/launchpad/collection/".concat(e),t),b=10,x=10;function y(){return(y=(0,i.Z)((function*(){var e=yield(0,d.u)({},{interceptorParams:{ignoreLoadingBar:!0},noAbortOnRouteChange:!0}),t=new Map;for(var n of e.storyboards){var a=n.app;k(a),t.set(a.id,a)}var i=[],o=new Map;for(var l of e.desktops){var c=[];for(var s of l.items)switch(s.type){case"app":var u=t.get(s.id);u&&c.push((0,r.Z)((0,r.Z)({},s),{},{name:u.localeName,url:u.homepage,menuIcon:u.menuIcon}));break;case"custom":c.push(s),o.set(s.id,s);break;case"dir":var m=[];for(var p of s.items)if("app"===p.type){var v=t.get(p.id);v&&m.push((0,r.Z)((0,r.Z)({},p),{},{name:v.localeName,url:v.homepage,menuIcon:v.menuIcon}))}else"custom"===p.type&&(m.push(p),o.set(p.id,p));m.length>0&&c.push((0,r.Z)((0,r.Z)({},s),{},{items:m}))}c.length>0&&i.push((0,r.Z)((0,r.Z)({},l),{},{items:c}))}return{menuGroups:i,microAppsById:t,customLinksById:o}}))).apply(this,arguments)}function k(e){if(e.locales){var t,n=Object.fromEntries(Object.entries(e.locales).filter((e=>{var[t,n]=e;return n.name})).map((e=>{var[t,n]=e;return[t,n.name]})));e.localeName=null!==(t=(0,p.i18nText)(n))&&void 0!==t?t:e.name}else e.localeName=e.name}function E(){return w.apply(this,arguments)}function w(){return(w=(0,i.Z)((function*(){return(yield h({page:1,pageSize:b},{interceptorParams:{ignoreLoadingBar:!0},noAbortOnRouteChange:!0})).list}))).apply(this,arguments)}function I(){return(I=(0,i.Z)((function*(){var e=yield E(),t=[];for(var n of e)if("microApp"===n.type){var a=n.relatedApp;k(a),t.push({favoriteId:n.instanceId,type:"app",name:a.localeName,id:a.appId,url:a.homepage,instanceId:a.instanceId,menuIcon:a.menuIcon})}else if("customItem"===n.type){var r=n.relatedCustomItem;t.push({favoriteId:n.instanceId,type:"custom",name:r.name,id:r.id,url:r.url,menuIcon:r.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 C(){return(C=(0,i.Z)((function*(e){return f({type:"app"===e.type?"microApp":"customItem",relatedInstanceId:e.instanceId},{interceptorParams:{ignoreLoadingBar:!0}})}))).apply(this,arguments)}function N(){return(N=(0,i.Z)((function*(e){return e.favoriteId?g(e.favoriteId):E().then((t=>{var n,a=null===(n=t.find((t=>{var n,a;return"app"===e.type?"microApp"===t.type&&(null===(n=t.relatedApp)||void 0===n?void 0:n.appId)===e.id:"custom"===e.type&&(null===(a=t.relatedCustomItem)||void 0===a?void 0:a.id)===e.id})))||void 0===n?void 0:n.instanceId;if(a)return g(a);console.error("Menu item to unstar not found:",e)}))}))).apply(this,arguments)}function Z(e,t){return e.id.toLowerCase().includes(t)||e.name.toLowerCase().includes(t)?e:null}function S(e,t){return e.id.toLowerCase().includes(t)||e.name.toLowerCase().includes(t)?e:null}var V="launchpad-recent-visits:".concat(null===(a=c.auth.getAuth())||void 0===a?void 0:a.org),_=new s.o(localStorage),z=[],B=new Map,L=new Map,A=!1,R=[],M=!1,q=new u.i((0,i.Z)((function*(){({menuGroups:z,microAppsById:B,customLinksById:L}=yield function(){return y.apply(this,arguments)}()),A=!0}))),j=new u.i((0,i.Z)((function*(){R=yield function(){return I.apply(this,arguments)}(),M=!0})));function P(e){var[t,n]=(0,o.useState)(z),[a,c]=(0,o.useState)(B),[s,u]=(0,o.useState)(L),[p,d]=(0,o.useState)(""),[v,h]=(0,o.useState)(!A),[f,g]=(0,o.useState)(!M),[y,k]=(0,o.useState)([]),[E,w]=(0,o.useState)([]),[I,P]=(0,o.useState)(R);(0,o.useEffect)((()=>{e&&!v&&(n(z),c(B),u(L))}),[e,v]),(0,o.useEffect)((()=>{e&&!f&&P(R)}),[e,f]),(0,o.useEffect)((()=>{var t;e&&k(null!==(t=_.getItem(V))&&void 0!==t?t:[])}),[e]),(0,o.useEffect)((()=>{if(e){var t=function(){var e=(0,i.Z)((function*(){try{yield q.fetch(),h(!1)}catch(e){(0,l.handleHttpError)(e)}}));return function(){return e.apply(this,arguments)}}();t()}}),[e]),(0,o.useEffect)((()=>{if(e){var t=function(){var e=(0,i.Z)((function*(){try{yield j.fetch(),g(!1)}catch(e){(0,l.handleHttpError)(e)}}));return function(){return e.apply(this,arguments)}}();t()}}),[e]),(0,o.useEffect)((()=>{if(!v){var e=y.map((e=>{if("app"===e.type){var t=a.get(e.id);return t?{type:"app",name:t.localeName,id:t.id,url:t.homepage,instanceId:t.instanceId,menuIcon:t.menuIcon}:null}return s.get(e.id)})).filter(Boolean);w(e)}}),[s,v,a,y]);var G=(0,o.useCallback)((e=>{var t,{type:n,id:a}=e,r=null!==(t=_.getItem(V))&&void 0!==t?t:[],i=r.findIndex((e=>e.type===n&&e.id===a));i>-1&&r.splice(i,1),r.unshift({type:n,id:a}),r.length>x&&r.pop(),_.setItem(V,r)}),[]),H=(0,o.useCallback)((e=>I.some((t=>F(e,t)))),[I]),O=(0,o.useCallback)((e=>{var t,n=I.findIndex((t=>"link"===e.type?t.favoriteId===e.favoriteId:F(e,t)));if(n>-1){var a=I[n];t=I.slice(0,n).concat(I.slice(n+1)),function(e){return N.apply(this,arguments)}(a).catch(l.handleHttpError)}else{if(I.length>=b)return void(0,m.vC)({type:"warn",title:"收藏数量已达上限",content:"当前收藏链接数量已达上限(".concat(b,"个),请删除部分收藏后再添加。")});var i=(0,r.Z)({},e);t=I.concat(i),function(e){return C.apply(this,arguments)}(e).then((e=>{e&&(i.favoriteId=e.instanceId)}),l.handleHttpError)}P(t),R=t}),[I]),Q=(0,o.useMemo)((()=>function(e,t){if(!t)return e;var n=t.toLowerCase();return e.map((e=>(0,r.Z)((0,r.Z)({},e),{},{items:e.items.map((e=>{switch(e.type){case"app":return Z(e,n);case"custom":return S(e,n);case"dir":var t=e.items.map((e=>"app"===e.type?Z(e,n):"custom"===e.type?S(e,n):null)).filter(Boolean);return t.length>0?(0,r.Z)((0,r.Z)({},e),{},{items:t}):null}})).filter(Boolean)}))).filter((e=>e.items.length>0))}(t,p)),[t,p]);return{loading:v,q:p,setQ:d,menuGroups:Q,loadingFavorites:f,favorites:I,recentVisits:E,pushRecentVisit:G,isStarred:H,toggleStar:O}}function F(e,t){return e.instanceId&&t.instanceId?t.instanceId===e.instanceId:t.type===e.type&&t.id===e.id}},2892:(e,t,n)=>{n.d(t,{V3:()=>i,kk:()=>o,vC:()=>l});var a=n(4511),r=n(2413),i=(0,a.wrapBrick)("eo-icon"),o=(0,a.wrapBrick)("eo-link"),l=(0,r.unwrapProvider)("basic.show-dialog")},6976:(e,t,n)=>{n.d(t,{Z:()=>p});var a=n(9601),r=n.n(a),i=n(2609),o=n.n(i),l=n(8991),c=n.n(l),s=new URL(n(2754),n.b),u=o()(r()),m=c()(s);u.push([e.id,`:host{display:inline-block;width:32px;height:32px;--local-sidebar-menu-item-active-bg:rgba(0,0,0,0.04);--local-background:#fff;--local-menu-icon-color:#8c8c8c;--local-max-height:calc(100vh - var(--app-bar-height) - 10px)}:host([hidden]){display:none}:host-context(html[data-theme="dark"]),\n:host-context(html[data-theme="dark-v2"]){--local-sidebar-menu-item-active-bg:rgba(255,255,255,0.04);--local-background:#26262a;--local-menu-icon-color:rgba(255,255,255,0.45)}.launchpad-button{width:100%;height:100%;display:flex;justify-content:center;align-items:center;color:#999;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.launchpad-button:hover,\n.launchpad-button.active{background-color:var(--color-fill-bg-base-1)}.launchpad-button.active{color:var(--color-brand)}.mask{position:fixed;top:0;bottom:0;left:0;right:0;z-index:1;display:none}.mask.active{display:block}.launchpad{display:none;position:absolute;margin-top:4px;z-index:1;width:1070px;max-width:calc(100vw - 100px);max-height:var(--local-max-height);min-height:50vh;min-height:min(500px,var(--local-max-height));background-color:var(--local-background);border:1px solid var(--color-text-divider-line);border-radius:6px;box-shadow:var(--fullscreen-overlay-shadow)}.launchpad.active{display:flex}.sidebar{width:190px;padding:20px 0 24px;display:flex;flex-direction:column;background:var(--color-fill-bg-base-3);min-width:0;background-image:url(${m});background-size:205px 205px;background-repeat:no-repeat;background-position:left 52px bottom 27px}.quick-nav-label,\n.menu-group-label,\n.menu-item-label,\n.recent-visits span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-menu,\n.menu-groups,\n.menu,\n.sub-menu,\n.recent-visits{list-style:none;margin:0;padding:0}.sidebar-menu,\n.menu,\n.sub-menu{display:flex;flex-direction:column;gap:14px}.sidebar-menu-item > eo-link,\n.menu-item > eo-link,\n.recent-visits eo-link{display:block;min-width:0}.sidebar-menu-item > eo-link::part(link),\n.menu-item > eo-link::part(link){height:20px;display:flex;align-items:center;gap:8px;color:var(--color-header-text)}.sidebar-menu-item{padding:0 12px 0 16px;justify-content:space-between}.sidebar-menu-icon{color:var(--left-sidebar-item-collapsed-icon-color)}.quick-nav{overflow-y:auto;flex:1}.quick-nav-label{color:var(--color-header-text);font-weight:500;margin-bottom:14px;padding:0 16px}.content{flex:1;padding:20px 24px 24px;min-width:0;overflow-y:auto;display:flex;flex-direction:column;gap:24px}.search-box{border-bottom:1px solid var(--color-text-divider-line);display:flex;gap:8px;align-items:center;padding:10px 0;margin-top:-10px;cursor:text}.search-icon{color:var(--color-auxiliary-text)}.search-input{padding:0;margin:0;border:none;outline:none;color:inherit;background-color:transparent;font-size:14px;line-height:22px;flex:1;min-width:0}.search-input::placeholder{color:var(--color-disabled-text);opacity:1}.search-clear{display:none;color:var(--color-secondary-text);cursor:pointer}.search-clear.searching{display:inline-block}.search-clear:hover{color:var(--color-auxiliary-text)}.menu-groups,\n.recent-visits{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.menu-groups{display:grid;grid-gap:32px 8px;gap:32px 8px}.menu-group{padding-right:12px;color:var(--color-header-text)}.menu-group-label{font-size:var(--card-title-font-size);font-weight:500;color:var(--color-header-text);margin-bottom:14px}.sidebar-menu-item,\n.menu-item:not(.folder){display:flex;gap:8px;align-items:center}.menu-icon{color:var(--local-menu-icon-color)}.menu-item.active,\n.menu-item.active .menu-icon{color:var(--color-brand-active)}.sub-menu:not(.expanded){display:none}.sub-menu{margin-top:14px;margin-left:8px;border-left:1px solid var(--color-text-divider-line);padding-left:15px}.menu-item-remove,\n.menu-item-star{cursor:pointer}.menu-item-remove,\n.menu-item-star,\n.menu-item-toggle{color:var(--color-secondary-text)}.sidebar-menu-item:not(:hover) .menu-item-remove{display:none}.menu-item-remove:hover{color:var(--color-normal-text)}.menu-item-remove:active{color:var(--color-strong-text)}.menu-item-star{display:none}.can-star.starred > .menu-item-star,\n.can-star:hover > .menu-item-star{display:inline-block}.can-star:not(.starred) > .menu-item-star{color:var(--color-secondary-text)}.starred > .menu-item-star{color:var(--palette-yellow-6)}.recent-visits-label{margin-bottom:12px;font-size:var(--card-title-font-size);color:var(--color-header-text);font-weight:500}.recent-visits{display:grid;grid-gap:8px;gap:8px}.recent-visits eo-link::part(link){background-color:var(--color-fill-bg-base-1);border-radius:3px;color:var(--color-header-text);display:flex;align-items:center;height:24px;padding:0 8px}.sidebar-menu-item > eo-link:hover::part(link),\n.sidebar-menu-item > eo-link:hover .sidebar-menu-icon,\n.menu-item > eo-link:hover::part(link),\n.menu-item > eo-link:hover .menu-icon,\n.menu-item > eo-link:hover .menu-item-toggle,\n.recent-visits eo-link:hover::part(link){color:var(--color-brand-hover)}.spinner{display:flex;justify-content:center;align-items:center;color:var(--theme-doderblue-color);flex:1;font-size:30px}.empty,\n.loading > :not(.spinner){display:none}@supports not (inset: 0){.search-box,\n .sidebar-menu,\n .menu,\n .sub-menu,\n .sidebar-menu-item,\n .menu-item:not(.folder),\n .sidebar-menu-item > eo-link::part(link),\n .menu-item > eo-link::part(link){gap:0}.content{display:grid;grid-auto-flow:row}.content:not(.loading){height:-webkit-min-content;height:-moz-min-content;height:min-content}.sidebar-menu > :not(:first-child),\n .menu > :not(:first-child),\n .sub-menu > :not(:first-child){margin-top:14px}.search-icon,\n .sidebar-menu-icon,\n .menu-icon{margin-right:8px}.search-clear,\n .menu-item-star,\n .menu-item-toggle{margin-left:8px}}`,""]);const p=u.toString()},8991:e=>{e.exports=function(e,t){return t||(t={}),e?(e=String(e.__esModule?e.default:e),/^['"].*['"]$/.test(e)&&(e=e.slice(1,-1)),t.hash&&(e+=t.hash),/["'() \t\n]|(%20)/.test(e)||t.needQuotes?'"'.concat(e.replace(/"/g,'\\"').replace(/\n/g,"\\n"),'"'):e):e}},2754:(e,t,n)=>{e.exports=n.p+"images/9879d37a.png"}}]);
3
+ //# sourceMappingURL=9816.6982784e.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chunks/9816.66a3486c.js","mappings":"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","sources":["webpack:///./src/launchpad-button-v2/LaunchpadContext.ts","webpack:///./src/launchpad-button-v2/MenuGroup.tsx","webpack:///./src/launchpad-button-v2/Launchpad.tsx","webpack:///../../node_modules/@next-api-sdk/user-service-sdk/dist/esm/api/user_service/launchpad/listCollectionV2.js","webpack:///../../node_modules/@next-api-sdk/user-service-sdk/dist/esm/api/user_service/launchpad/createCollectionV2.js","webpack:///../../node_modules/@next-api-sdk/user-service-sdk/dist/esm/api/user_service/launchpad/deleteCollectionV2.js","webpack:///./src/launchpad-button-v2/constants.ts","webpack:///./src/launchpad-button-v2/api.ts","webpack:///./src/launchpad-button-v2/search.ts","webpack:///./src/launchpad-button-v2/useLaunchpadInfo.ts","webpack:///./src/launchpad-button-v2/wrapped-bricks.ts","webpack:///./src/launchpad-button-v2/styles.shadow.css","webpack:///../../node_modules/css-loader/dist/runtime/getUrl.js"],"sourcesContent":["import React from \"react\";\nimport type { MenuItemDataLink, MenuItemDataNormal } from \"./interfaces\";\n\nexport interface LaunchpadContextData {\n searching: boolean;\n loadingFavorites: boolean;\n pushRecentVisit(item: MenuItemDataNormal): void;\n toggleStar(item: MenuItemDataNormal | MenuItemDataLink): void;\n isStarred(item: MenuItemDataNormal): boolean;\n}\n\nexport const LaunchpadsContext = React.createContext<LaunchpadContextData>(\n {} as LaunchpadContextData\n);\n\nexport const useLaunchpadContext = (): LaunchpadContextData =>\n React.useContext(LaunchpadsContext);\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { pick } from \"lodash\";\nimport classNames from \"classnames\";\nimport { WrappedIcon, WrappedLink } from \"./wrapped-bricks\";\nimport { useLaunchpadContext } from \"./LaunchpadContext\";\nimport type {\n MenuItemData,\n MenuItemDataNormal,\n SidebarMenuItemData,\n} from \"./interfaces\";\n\nexport interface MenuGroupProps {\n name: string;\n items: MenuItemData[];\n}\n\nexport function MenuGroup({ name, items }: MenuGroupProps) {\n return (\n <li className=\"menu-group\">\n <div className=\"menu-group-label\">{name}</div>\n <ul className=\"menu\">\n {items.map((item) =>\n item.type === \"dir\" ? (\n <MenuItemFolder\n key={`${item.type}-${item.id}`}\n name={item.name}\n items={item.items}\n />\n ) : (\n <MenuItem key={`${item.type}-${item.id}`} item={item} />\n )\n )}\n </ul>\n </li>\n );\n}\n\nexport interface MenuItemProps {\n item: MenuItemDataNormal;\n}\n\nfunction MenuItem({ item }: MenuItemProps) {\n const { loadingFavorites, pushRecentVisit, toggleStar, isStarred } =\n useLaunchpadContext();\n\n const starred = useMemo(() => isStarred(item), [isStarred, item]);\n\n const handleStarClick = useCallback(() => {\n toggleStar(item);\n }, [item, toggleStar]);\n\n const handleClick = useCallback(() => {\n pushRecentVisit(item);\n }, [item, pushRecentVisit]);\n\n return (\n <li\n className={classNames(\"menu-item\", {\n starred,\n \"can-star\": !loadingFavorites,\n })}\n >\n <WrappedLink\n onClick={handleClick}\n {...(item.type === \"app\"\n ? {\n url: item.url,\n }\n : {\n href: item.url,\n target: \"_blank\",\n })}\n >\n <WrappedIcon\n className=\"menu-icon\"\n lib=\"easyops\"\n icon=\"micro-app-center\"\n {...(pick(item.menuIcon, [\n \"lib\",\n \"icon\",\n \"theme\",\n \"category\",\n \"prefix\",\n ]) as any)}\n />\n <span className=\"menu-item-label\">{item.name}</span>\n </WrappedLink>\n <WrappedIcon\n lib=\"fa\"\n prefix={starred ? \"fas\" : \"far\"}\n icon=\"star\"\n className=\"menu-item-star\"\n title={starred ? \"取消收藏\" : \"收藏\"}\n onClick={handleStarClick}\n />\n </li>\n );\n}\n\nexport interface SidebarMenuItemProps {\n item: SidebarMenuItemData;\n}\n\nexport function SidebarMenuItem({ item }: SidebarMenuItemProps) {\n const { pushRecentVisit, toggleStar } = useLaunchpadContext();\n\n const handleClick = useCallback(() => {\n if (item.type !== \"link\") {\n pushRecentVisit(item);\n }\n }, [item, pushRecentVisit]);\n\n const handleRemoveStar = useCallback(() => {\n toggleStar(item);\n }, [item, toggleStar]);\n\n return (\n <li className=\"sidebar-menu-item\">\n <WrappedLink\n onClick={handleClick}\n {...(item.type === \"app\"\n ? {\n url: item.url,\n }\n : {\n href: item.url,\n target: \"_blank\",\n })}\n >\n <WrappedIcon\n className={`sidebar-menu-icon`}\n lib=\"easyops\"\n icon=\"micro-app-center\"\n {...(pick(item.menuIcon, [\n \"lib\",\n \"icon\",\n \"theme\",\n \"category\",\n \"prefix\",\n ]) as any)}\n />\n <span className=\"menu-item-label\">{item.name}</span>\n </WrappedLink>\n <WrappedIcon\n lib=\"fa\"\n icon=\"xmark\"\n className=\"menu-item-remove\"\n onClick={handleRemoveStar}\n />\n </li>\n );\n}\n\nexport interface MenuItemFolderProps {\n name: string;\n items: MenuItemDataNormal[];\n}\n\nfunction MenuItemFolder({ name, items }: MenuItemFolderProps) {\n const { searching } = useLaunchpadContext();\n const [expanded, setExpanded] = useState(false);\n const [searchingExpanded, setSearchingExpanded] = useState(false);\n\n const toggle = useCallback(() => {\n // Use separated expanded states for searching and non-searching.\n if (searching) {\n setSearchingExpanded((previous) => !previous);\n } else {\n setExpanded((previous) => !previous);\n }\n }, [searching]);\n\n useEffect(() => {\n // Each time when start searching, set it as expanded.\n setSearchingExpanded(true);\n }, [searching]);\n\n const actualExpanded = searching ? searchingExpanded : expanded;\n\n return (\n <li className=\"menu-item folder\">\n <WrappedLink onClick={toggle}>\n <WrappedIcon\n lib=\"fa\"\n prefix=\"far\"\n icon=\"folder-open\"\n className=\"menu-icon\"\n />\n <span className=\"menu-item-label\">{name}</span>\n <WrappedIcon\n lib=\"antd\"\n icon={actualExpanded ? \"up\" : \"down\"}\n className=\"menu-item-toggle\"\n />\n </WrappedLink>\n <ul className={classNames(\"sub-menu\", { expanded: actualExpanded })}>\n {items.map((item) => (\n <MenuItem key={`${item.type}-${item.id}`} item={item} />\n ))}\n </ul>\n </li>\n );\n}\n","import React, { useCallback, useRef } from \"react\";\nimport classNames from \"classnames\";\nimport { WrappedIcon, WrappedLink } from \"./wrapped-bricks\";\nimport { useLaunchpadInfo } from \"./useLaunchpadInfo.js\";\nimport { MenuGroup, SidebarMenuItem } from \"./MenuGroup.js\";\nimport { LaunchpadsContext } from \"./LaunchpadContext.js\";\nimport { SidebarMenuItemData } from \"./interfaces\";\n\nexport function Launchpad({ active }: { active?: boolean }) {\n const searchInputRef = useRef<HTMLInputElement>(null);\n const handleClickSearchBox = useCallback(() => {\n searchInputRef.current?.focus();\n }, []);\n\n const {\n loading,\n q,\n setQ,\n menuGroups,\n favorites,\n loadingFavorites,\n recentVisits,\n pushRecentVisit,\n toggleStar,\n isStarred,\n } = useLaunchpadInfo(active);\n const searching = !!q;\n\n const handleSearch = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setQ(e.target.value);\n },\n [setQ]\n );\n\n const clearSearch = useCallback(() => {\n setQ(\"\");\n }, [setQ]);\n\n return (\n <div className={classNames(\"launchpad\", { active })}>\n <LaunchpadsContext.Provider\n value={{\n searching,\n loadingFavorites,\n pushRecentVisit,\n toggleStar,\n isStarred,\n }}\n >\n <div className=\"sidebar\">\n <div className=\"quick-nav\">\n <div className=\"quick-nav-label\">快捷访问</div>\n {/* <Loading loading={loading || loadingFavorites} /> */}\n <ul className=\"sidebar-menu\">\n {favorites.map((item, index) => (\n <SidebarMenuItem\n key={index}\n item={item as SidebarMenuItemData}\n />\n ))}\n </ul>\n </div>\n </div>\n <div className={classNames(\"content\", { loading })}>\n <Loading loading={loading} />\n <div className=\"search-box\" onClick={handleClickSearchBox}>\n <WrappedIcon\n lib=\"fa\"\n icon=\"magnifying-glass\"\n className=\"search-icon\"\n />\n <input\n ref={searchInputRef}\n placeholder=\"通过关键字搜索\"\n value={q}\n onChange={handleSearch}\n className=\"search-input\"\n />\n <WrappedIcon\n lib=\"antd\"\n theme=\"filled\"\n icon=\"close-circle\"\n className={classNames(\"search-clear\", { searching })}\n onClick={clearSearch}\n />\n </div>\n <div className={classNames({ empty: recentVisits.length === 0 })}>\n <div className=\"recent-visits-label\">最近访问</div>\n <ul className=\"recent-visits\">\n {recentVisits.map((item, index) => (\n <li key={index}>\n <WrappedLink\n onClick={() => pushRecentVisit(item)}\n {...(item.type === \"app\"\n ? {\n url: item.url,\n }\n : {\n href: item.url,\n target: \"_blank\",\n })}\n >\n <span>{item.name}</span>\n </WrappedLink>\n </li>\n ))}\n </ul>\n </div>\n <ul className=\"menu-groups\">\n {menuGroups.map((group) => (\n <MenuGroup\n key={group.name}\n name={group.name}\n items={group.items}\n />\n ))}\n </ul>\n </div>\n </LaunchpadsContext.Provider>\n </div>\n );\n}\n\nfunction Loading({ loading }: { loading: boolean }) {\n return (\n loading && (\n <div className=\"spinner\">\n <WrappedIcon lib=\"fa\" icon=\"spinner\" spinning />\n </div>\n )\n );\n}\n","import _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/asyncToGenerator\";\nimport { http } from \"@next-core/http\";\n/**\n * @description 获取我的收藏列表V2\n * @endpoint LIST /api/v2/launchpad/collection\n */\nexport var LaunchpadApi_listCollectionV2 = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(function* (params, options) {\n return (/**! @contract easyops.api.user_service.launchpad.ListCollectionV2@1.0.0 */(yield http.get(\"api/gateway/user_service.launchpad.ListCollectionV2/api/v2/launchpad/collection\", _objectSpread(_objectSpread({}, options), {}, {\n params\n }))).data\n );\n });\n return function LaunchpadApi_listCollectionV2(_x, _x2) {\n return _ref.apply(this, arguments);\n };\n}();\n//# sourceMappingURL=listCollectionV2.js.map","import _asyncToGenerator from \"@babel/runtime/helpers/asyncToGenerator\";\nimport { http } from \"@next-core/http\";\n/**\n * @description 新增我的收藏V2\n * @endpoint POST /api/v2/launchpad/collection\n */\nexport var LaunchpadApi_createCollectionV2 = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(function* (data, options) {\n return (/**! @contract easyops.api.user_service.launchpad.CreateCollectionV2@1.0.0 */(yield http.post(\"api/gateway/user_service.launchpad.CreateCollectionV2/api/v2/launchpad/collection\", data, options)).data\n );\n });\n return function LaunchpadApi_createCollectionV2(_x, _x2) {\n return _ref.apply(this, arguments);\n };\n}();\n//# sourceMappingURL=createCollectionV2.js.map","import { http } from \"@next-core/http\";\n\n/**\n * @description 删除我的收藏V2\n * @endpoint DELETE /api/v2/launchpad/collection/:instanceId\n */\nexport var LaunchpadApi_deleteCollectionV2 = (instanceId, options) => /**! @contract easyops.api.user_service.launchpad.DeleteCollectionV2@1.0.0 */http.delete(\"api/gateway/user_service.launchpad.DeleteCollectionV2/api/v2/launchpad/collection/\".concat(instanceId), options);\n//# sourceMappingURL=deleteCollectionV2.js.map","export const FAVORITES_LIMIT = 10;\nexport const RECENT_VISITS_LIMIT = 10;\n","import type { I18nData, MicroApp, Storyboard } from \"@next-core/types\";\nimport { i18nText } from \"@next-core/i18n\";\nimport { LaunchpadApi_getLaunchpadInfo } from \"@next-api-sdk/micro-app-standalone-sdk\";\nimport {\n LaunchpadApi_createCollectionV2,\n LaunchpadApi_deleteCollectionV2,\n LaunchpadApi_listCollectionV2,\n} from \"@next-api-sdk/user-service-sdk\";\nimport type {\n FavMenuItem,\n MenuGroupData,\n MenuItemData,\n MenuItemDataApp,\n MenuItemDataCustom,\n MenuItemDataDir,\n MenuItemDataNormal,\n MicroAppWithInstanceId,\n} from \"./interfaces\";\nimport { FAVORITES_LIMIT } from \"./constants\";\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 initializeAppLocaleName(app);\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\nfunction initializeAppLocaleName(\n app: Pick<MicroApp, \"locales\" | \"name\" | \"localeName\">\n) {\n if (app.locales) {\n const i18nData = Object.fromEntries(\n Object.entries(app.locales)\n .filter(([lang, resources]) => resources.name)\n .map(([lang, resources]) => [lang, resources.name])\n ) as I18nData;\n app.localeName = i18nText(i18nData) ?? app.name;\n } else {\n app.localeName = app.name;\n }\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 initializeAppLocaleName(app);\n stored.push({\n favoriteId: fav.instanceId,\n type: \"app\",\n name: app.localeName,\n id: app.appId,\n url: app.homepage,\n instanceId: app.instanceId,\n menuIcon: app.menuIcon,\n } as FavMenuItem);\n } else if (fav.type === \"customItem\") {\n const customItem = fav.relatedCustomItem!;\n stored.push({\n favoriteId: fav.instanceId,\n type: \"custom\",\n name: customItem.name,\n id: customItem.id,\n url: customItem.url,\n menuIcon: customItem.menuIcon,\n } as FavMenuItem);\n } else if (fav.type === \"link\") {\n stored.push({\n favoriteId: fav.instanceId,\n type: \"link\",\n name: fav.name,\n // id: fav.id,\n url: fav.link,\n menuIcon: fav.icon,\n } as FavMenuItem);\n }\n }\n return stored;\n}\n\nexport async function favorite(\n item: MenuItemDataNormal\n): Promise<{ instanceId?: string }> {\n return LaunchpadApi_createCollectionV2(\n {\n type: item.type === \"app\" ? \"microApp\" : \"customItem\",\n relatedInstanceId: item.instanceId,\n },\n {\n interceptorParams: { ignoreLoadingBar: true },\n }\n );\n}\n\nexport async function undoFavorite(item: FavMenuItem) {\n if (item.favoriteId) {\n return LaunchpadApi_deleteCollectionV2(item.favoriteId);\n }\n\n return fetchRawFavorites().then((list) => {\n const foundId = list.find((fav) =>\n item.type === \"app\"\n ? fav.type === \"microApp\" && fav.relatedApp?.appId === item.id\n : item.type === \"custom\" && fav.relatedCustomItem?.id === item.id\n )?.instanceId;\n\n if (foundId) {\n return LaunchpadApi_deleteCollectionV2(foundId);\n }\n // eslint-disable-next-line no-console\n console.error(\"Menu item to unstar not found:\", item);\n });\n}\n","import type {\n MenuGroupData,\n MenuItemData,\n MenuItemDataApp,\n MenuItemDataCustom,\n} from \"./interfaces\";\n\nexport function search(\n allMenuGroups: MenuGroupData[],\n q: string\n): MenuGroupData[] {\n if (!q) {\n return allMenuGroups;\n }\n const lowerQ = q.toLowerCase();\n const groups: MenuGroupData[] = allMenuGroups\n .map((group) => ({\n ...group,\n items: group.items\n .map((item) => {\n switch (item.type) {\n case \"app\":\n return matchMenuItemApp(item, lowerQ);\n case \"custom\":\n return matchMenuItemCustom(item, lowerQ);\n case \"dir\": {\n const filteredSubItems = item.items\n .map((sub) =>\n sub.type === \"app\"\n ? matchMenuItemApp(sub, lowerQ)\n : sub.type === \"custom\"\n ? matchMenuItemCustom(sub, lowerQ)\n : null\n )\n .filter(Boolean) as MenuItemData[];\n return filteredSubItems.length > 0\n ? {\n ...item,\n items: filteredSubItems,\n }\n : null;\n }\n }\n })\n // Ignore not matched items\n .filter(Boolean) as MenuItemData[],\n }))\n // ignore empty desktops\n .filter((group) => group.items.length > 0);\n return groups;\n}\n\nfunction matchMenuItemApp(item: MenuItemDataApp, lowerQ: string) {\n return item.id.toLowerCase().includes(lowerQ) ||\n item.name.toLowerCase().includes(lowerQ)\n ? item\n : null;\n}\n\nfunction matchMenuItemCustom(item: MenuItemDataCustom, lowerQ: string) {\n return item.id.toLowerCase().includes(lowerQ) ||\n item.name.toLowerCase().includes(lowerQ)\n ? item\n : null;\n}\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { getRuntime, handleHttpError } 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 } from \"./wrapped-bricks\";\nimport type {\n FavMenuItem,\n MenuGroupData,\n MenuItemDataCustom,\n MenuItemDataLink,\n MenuItemDataNormal,\n MicroAppWithInstanceId,\n StoredMenuItem,\n} from \"./interfaces\";\nimport {\n favorite,\n fetchFavorites,\n fetchLaunchpadInfo,\n undoFavorite,\n} from \"./api\";\nimport { search } from \"./search\";\nimport { FAVORITES_LIMIT, RECENT_VISITS_LIMIT } from \"./constants\";\n\nconst storageKey = `launchpad-recent-visits:${(\n auth.getAuth() as Record<string, string>\n)?.org}`;\nconst storage = new JsonStorage(localStorage);\n\nlet candidateDesktops: MenuGroupData[] = [];\nlet candidateMicroAppsById = new Map<string, MicroAppWithInstanceId>();\nlet candidateCustomLinksById = new Map<string, MenuItemDataCustom>();\nlet preLoaded = false;\n\nlet candidateFavorites: FavMenuItem[] = [];\nlet preLoadedFavorites = false;\n\nexport const deferredLaunchpadInfo = new DeferredService(async () => {\n ({\n menuGroups: candidateDesktops,\n microAppsById: candidateMicroAppsById,\n customLinksById: candidateCustomLinksById,\n } = await fetchLaunchpadInfo());\n preLoaded = true;\n});\n\nexport const deferredFavorites = new DeferredService(async () => {\n candidateFavorites = await fetchFavorites();\n preLoadedFavorites = true;\n});\n\n/**\n * - 页面初始化时预加载 launchpad 信息。\n * - 每次打开 launchpad 都发起请求,但该请求的数据只在下次打开 launchpad 时使用。\n * 即每次打开 launchpad 使用的都是上一次获取的数据,以便达到两个效果:\n * - 每次打开 launchpad 都能立即显示菜单列表;\n * - 同时当用户在 launchpad 上操作时,不会出现数据突然更新(新数据请求完成)。\n */\nexport function useLaunchpadInfo(active?: boolean) {\n const [desktops, setDesktops] = useState(candidateDesktops);\n const [microAppsById, setMicroAppsById] = useState(candidateMicroAppsById);\n const [customLinksById, setCustomLinksById] = useState(\n candidateCustomLinksById\n );\n\n const [q, setQ] = useState(\"\");\n\n const [loading, setLoading] = useState(!preLoaded);\n const [loadingFavorites, setLoadingFavorites] = useState(!preLoadedFavorites);\n\n const [storedRecentVisits, setStoredRecentVisits] = useState<\n StoredMenuItem[]\n >([]);\n\n const [recentVisits, setRecentVisits] = useState<MenuItemDataNormal[]>([]);\n\n const [favorites, setFavorites] = useState<FavMenuItem[]>(candidateFavorites);\n\n useEffect(() => {\n // 仅当首次加载完成或重新打开 launchpad 时更新一次数据。\n if (active && !loading) {\n setDesktops(candidateDesktops);\n setMicroAppsById(candidateMicroAppsById);\n setCustomLinksById(candidateCustomLinksById);\n }\n }, [active, loading]);\n\n useEffect(() => {\n if (active && !loadingFavorites) {\n setFavorites(candidateFavorites);\n }\n }, [active, loadingFavorites]);\n\n useEffect(() => {\n if (active) {\n setStoredRecentVisits(storage.getItem(storageKey) ?? []);\n }\n }, [active]);\n\n useEffect(() => {\n if (active) {\n const startFetchLaunchpadInfo = async (): Promise<void> => {\n try {\n await deferredLaunchpadInfo.fetch();\n setLoading(false);\n } catch (error) {\n handleHttpError(error);\n }\n };\n startFetchLaunchpadInfo();\n }\n }, [active]);\n\n useEffect(() => {\n if (active) {\n const startFetchFavorites = async (): Promise<void> => {\n try {\n await deferredFavorites.fetch();\n setLoadingFavorites(false);\n } catch (error) {\n handleHttpError(error);\n }\n };\n startFetchFavorites();\n }\n }, [active]);\n\n useEffect(() => {\n if (loading) {\n return;\n }\n const visits = storedRecentVisits\n .map((item) => {\n // Remembered recent visits maybe no longer existed in launchpad\n if (item.type === \"app\") {\n const app = microAppsById.get(item.id);\n return app\n ? {\n type: \"app\",\n name: app.localeName,\n id: app.id,\n url: app.homepage,\n instanceId: app.instanceId,\n menuIcon: app.menuIcon,\n }\n : null;\n }\n return customLinksById.get(item.id);\n })\n .filter(Boolean) as MenuItemDataNormal[];\n setRecentVisits(visits);\n }, [customLinksById, loading, microAppsById, storedRecentVisits]);\n\n const pushRecentVisit = useCallback(({ type, id }: StoredMenuItem) => {\n const visits: StoredMenuItem[] = storage.getItem(storageKey) ?? [];\n const index = visits.findIndex(\n (visit) => visit.type === type && visit.id === id\n );\n if (index > -1) {\n visits.splice(index, 1);\n }\n visits.unshift({ type, id });\n if (visits.length > RECENT_VISITS_LIMIT) {\n visits.pop();\n }\n // setStoredRecentVisits(visits);\n storage.setItem(storageKey, visits);\n }, []);\n\n const isStarred = useCallback(\n (item: MenuItemDataNormal) =>\n favorites.some((fav) => matchFavorite(item, fav)),\n [favorites]\n );\n\n const toggleStar = useCallback(\n (item: MenuItemDataNormal | MenuItemDataLink) => {\n const index = favorites.findIndex((fav) =>\n item.type === \"link\"\n ? fav.favoriteId === item.favoriteId\n : matchFavorite(item, fav)\n );\n let newFavorites: FavMenuItem[];\n if (index > -1) {\n const removed = favorites[index];\n newFavorites = favorites\n .slice(0, index)\n .concat(favorites.slice(index + 1));\n undoFavorite(removed).catch(handleHttpError);\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 }, handleHttpError);\n }\n setFavorites(newFavorites);\n candidateFavorites = newFavorites;\n },\n [favorites]\n );\n\n const menuGroups: MenuGroupData[] = useMemo(\n () => search(desktops, q),\n [desktops, q]\n );\n\n return {\n loading,\n q,\n setQ,\n menuGroups,\n loadingFavorites,\n favorites,\n recentVisits,\n pushRecentVisit,\n isStarred,\n toggleStar,\n };\n}\n\nexport function matchFavorite(item: MenuItemDataNormal, fav: FavMenuItem) {\n return item.instanceId && fav.instanceId\n ? fav.instanceId === item.instanceId\n : fav.type === item.type && fav.id === item.id;\n}\n","import { wrapBrick } from \"@next-core/react-element\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport type { showDialog as _showDialog } from \"@next-bricks/basic/data-providers/show-dialog/show-dialog\";\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","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../images/launchpad-sidebar.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:inline-block;width:32px;height:32px;--local-sidebar-menu-item-active-bg:rgba(0,0,0,0.04);--local-background:#fff;--local-menu-icon-color:#8c8c8c}:host([hidden]){display:none}:host-context(html[data-theme=\"dark\"]),\n:host-context(html[data-theme=\"dark-v2\"]){--local-sidebar-menu-item-active-bg:rgba(255,255,255,0.04);--local-background:#26262a;--local-menu-icon-color:rgba(255,255,255,0.45)}.launchpad-button{width:100%;height:100%;display:flex;justify-content:center;align-items:center;color:#999;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.launchpad-button:hover,\n.launchpad-button.active{background-color:var(--color-fill-bg-base-1)}.launchpad-button.active{color:var(--color-brand)}.mask{position:fixed;top:0;bottom:0;left:0;right:0;z-index:1;display:none}.mask.active{display:block}.launchpad{display:none;position:absolute;margin-top:4px;z-index:1;width:1070px;max-width:calc(100vw - 100px);max-height:calc(100vh - var(--app-bar-height) - 10px);background-color:var(--local-background);border:1px solid var(--color-text-divider-line);border-radius:6px;box-shadow:var(--fullscreen-overlay-shadow)}.launchpad.active{display:flex}.sidebar{width:190px;padding:20px 0 24px;display:flex;flex-direction:column;background:var(--color-fill-bg-base-3);min-width:0;background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-size:205px 205px;background-repeat:no-repeat;background-position:left 52px bottom 27px}.quick-nav-label,\n.menu-group-label,\n.menu-item-label,\n.recent-visits span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-menu,\n.menu-groups,\n.menu,\n.sub-menu,\n.recent-visits{list-style:none;margin:0;padding:0}.sidebar-menu,\n.menu,\n.sub-menu{display:flex;flex-direction:column;gap:14px}.sidebar-menu-item > eo-link,\n.menu-item > eo-link,\n.recent-visits eo-link{display:block;min-width:0}.sidebar-menu-item > eo-link::part(link),\n.menu-item > eo-link::part(link){height:20px;display:flex;align-items:center;gap:8px;color:var(--color-header-text)}.sidebar-menu-item{padding:0 12px 0 16px;justify-content:space-between}.sidebar-menu-icon{color:var(--left-sidebar-item-collapsed-icon-color)}.quick-nav{overflow-y:auto;flex:1}.quick-nav-label{color:var(--color-header-text);font-weight:500;margin-bottom:14px;padding:0 16px}.content{flex:1;padding:20px 24px 24px;min-width:0;min-height:50vh;overflow-y:auto;display:flex;flex-direction:column;gap:24px}.search-box{border-bottom:1px solid var(--color-text-divider-line);display:flex;gap:8px;align-items:center;padding:10px 0;margin-top:-10px;cursor:text}.search-icon{color:var(--color-auxiliary-text)}.search-input{padding:0;margin:0;border:none;outline:none;color:inherit;background-color:transparent;font-size:14px;line-height:22px;flex:1;min-width:0}.search-input::placeholder{color:var(--color-disabled-text);opacity:1}.search-clear{display:none;color:var(--color-secondary-text);cursor:pointer}.search-clear.searching{display:inline-block}.search-clear:hover{color:var(--color-auxiliary-text)}.menu-groups,\n.recent-visits{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.menu-groups{display:grid;grid-gap:32px 8px;gap:32px 8px}.menu-group{padding-right:12px;color:var(--color-header-text)}.menu-group-label{font-size:var(--card-title-font-size);font-weight:500;color:var(--color-header-text);margin-bottom:14px}.sidebar-menu-item,\n.menu-item:not(.folder){display:flex;gap:8px;align-items:center}.menu-icon{color:var(--local-menu-icon-color)}.menu-item.active,\n.menu-item.active .menu-icon{color:var(--color-brand-active)}.sub-menu:not(.expanded){display:none}.sub-menu{margin-top:14px;margin-left:8px;border-left:1px solid var(--color-text-divider-line);padding-left:15px}.menu-item-remove,\n.menu-item-star{cursor:pointer}.menu-item-remove,\n.menu-item-star,\n.menu-item-toggle{color:var(--color-secondary-text)}.sidebar-menu-item:not(:hover) .menu-item-remove{display:none}.menu-item-remove:hover{color:var(--color-normal-text)}.menu-item-remove:active{color:var(--color-strong-text)}.menu-item-star{display:none}.can-star.starred > .menu-item-star,\n.can-star:hover > .menu-item-star{display:inline-block}.can-star:not(.starred) > .menu-item-star{color:var(--color-secondary-text)}.starred > .menu-item-star{color:var(--palette-yellow-6)}.recent-visits-label{margin-bottom:12px;font-size:var(--card-title-font-size);color:var(--color-header-text);font-weight:500}.recent-visits{display:grid;grid-gap:8px;gap:8px}.recent-visits eo-link::part(link){background-color:var(--color-fill-bg-base-1);border-radius:3px;color:var(--color-header-text);display:flex;align-items:center;height:24px;padding:0 8px}.sidebar-menu-item > eo-link:hover::part(link),\n.sidebar-menu-item > eo-link:hover .sidebar-menu-icon,\n.menu-item > eo-link:hover::part(link),\n.menu-item > eo-link:hover .menu-icon,\n.menu-item > eo-link:hover .menu-item-toggle,\n.recent-visits eo-link:hover::part(link){color:var(--color-brand-hover)}.spinner{display:flex;justify-content:center;align-items:center;color:var(--theme-doderblue-color);flex:1;font-size:30px}.empty,\n.loading > :not(.spinner){display:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","\"use strict\";\n\nmodule.exports = function (url, options) {\n if (!options) {\n options = {};\n }\n if (!url) {\n return url;\n }\n url = String(url.__esModule ? url.default : url);\n\n // If url is already wrapped in quotes, remove them\n if (/^['\"].*['\"]$/.test(url)) {\n url = url.slice(1, -1);\n }\n if (options.hash) {\n url += options.hash;\n }\n\n // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n if (/[\"'() \\t\\n]|(%20)/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, \"\\\\n\"), \"\\\"\");\n }\n return url;\n};"],"names":["LaunchpadsContext","React","useLaunchpadContext","MenuGroup","_ref","name","items","className","map","item","type","MenuItemFolder","key","concat","id","MenuItem","_ref2","loadingFavorites","pushRecentVisit","toggleStar","isStarred","starred","useMemo","handleStarClick","useCallback","handleClick","classNames","WrappedLink","_extends","onClick","url","href","target","WrappedIcon","lib","icon","pick","menuIcon","prefix","title","SidebarMenuItem","_ref3","handleRemoveStar","_ref4","searching","expanded","setExpanded","useState","searchingExpanded","setSearchingExpanded","toggle","previous","useEffect","actualExpanded","Launchpad","active","searchInputRef","useRef","handleClickSearchBox","_searchInputRef$curre","current","focus","loading","q","setQ","menuGroups","favorites","recentVisits","useLaunchpadInfo","handleSearch","e","value","clearSearch","Provider","index","Loading","ref","placeholder","onChange","theme","empty","length","group","spinning","LaunchpadApi_listCollectionV2","params","options","http","get","_x","_x2","apply","this","arguments","LaunchpadApi_createCollectionV2","data","post","LaunchpadApi_deleteCollectionV2","instanceId","delete","FAVORITES_LIMIT","RECENT_VISITS_LIMIT","_fetchLaunchpadInfo","_asyncToGenerator","launchpadInfo","LaunchpadApi_getLaunchpadInfo","interceptorParams","ignoreLoadingBar","noAbortOnRouteChange","microAppsById","Map","storyboard","storyboards","app","initializeAppLocaleName","set","customLinksById","desktops","push","_objectSpread","localeName","homepage","subItems","subItem","locales","_i18nText","i18nData","Object","fromEntries","entries","filter","lang","resources","i18nText","fetchRawFavorites","_fetchRawFavorites","page","pageSize","list","_fetchFavorites","stored","fav","relatedApp","favoriteId","appId","customItem","relatedCustomItem","link","_favorite","relatedInstanceId","_undoFavorite","then","_list$find","foundId","find","_fav$relatedApp","_fav$relatedCustomIte","console","error","matchMenuItemApp","lowerQ","toLowerCase","includes","matchMenuItemCustom","storageKey","_auth$getAuth","auth","getAuth","org","storage","JsonStorage","localStorage","candidateDesktops","candidateMicroAppsById","candidateCustomLinksById","preLoaded","candidateFavorites","preLoadedFavorites","deferredLaunchpadInfo","DeferredService","fetchLaunchpadInfo","deferredFavorites","fetchFavorites","setDesktops","setMicroAppsById","setCustomLinksById","setLoading","setLoadingFavorites","storedRecentVisits","setStoredRecentVisits","setRecentVisits","setFavorites","_storage$getItem","getItem","startFetchLaunchpadInfo","fetch","handleHttpError","startFetchFavorites","visits","Boolean","_ref5","_storage$getItem2","findIndex","visit","splice","unshift","pop","setItem","some","matchFavorite","newFavorites","removed","slice","undoFavorite","catch","showDialog","content","favorite","result","allMenuGroups","filteredSubItems","sub","search","wrapBrick","unwrapProvider","___CSS_LOADER_URL_IMPORT_0___","URL","___CSS_LOADER_EXPORT___","___CSS_LOADER_URL_REPLACEMENT_0___","module","toString","exports","String","__esModule","default","test","hash","needQuotes","replace"],"sourceRoot":""}
1
+ {"version":3,"file":"chunks/9816.6982784e.js","mappings":"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","sources":["webpack:///./src/launchpad-button-v2/LaunchpadContext.ts","webpack:///./src/launchpad-button-v2/MenuGroup.tsx","webpack:///./src/launchpad-button-v2/Launchpad.tsx","webpack:///../../node_modules/@next-api-sdk/user-service-sdk/dist/esm/api/user_service/launchpad/listCollectionV2.js","webpack:///../../node_modules/@next-api-sdk/user-service-sdk/dist/esm/api/user_service/launchpad/createCollectionV2.js","webpack:///../../node_modules/@next-api-sdk/user-service-sdk/dist/esm/api/user_service/launchpad/deleteCollectionV2.js","webpack:///./src/launchpad-button-v2/constants.ts","webpack:///./src/launchpad-button-v2/api.ts","webpack:///./src/launchpad-button-v2/search.ts","webpack:///./src/launchpad-button-v2/useLaunchpadInfo.ts","webpack:///./src/launchpad-button-v2/wrapped-bricks.ts","webpack:///./src/launchpad-button-v2/styles.shadow.css","webpack:///../../node_modules/css-loader/dist/runtime/getUrl.js"],"sourcesContent":["import React from \"react\";\nimport type { MenuItemDataLink, MenuItemDataNormal } from \"./interfaces\";\n\nexport interface LaunchpadContextData {\n searching: boolean;\n loadingFavorites: boolean;\n pushRecentVisit(item: MenuItemDataNormal): void;\n toggleStar(item: MenuItemDataNormal | MenuItemDataLink): void;\n isStarred(item: MenuItemDataNormal): boolean;\n}\n\nexport const LaunchpadsContext = React.createContext<LaunchpadContextData>(\n {} as LaunchpadContextData\n);\n\nexport const useLaunchpadContext = (): LaunchpadContextData =>\n React.useContext(LaunchpadsContext);\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { pick } from \"lodash\";\nimport classNames from \"classnames\";\nimport { WrappedIcon, WrappedLink } from \"./wrapped-bricks\";\nimport { useLaunchpadContext } from \"./LaunchpadContext\";\nimport type {\n MenuItemData,\n MenuItemDataNormal,\n SidebarMenuItemData,\n} from \"./interfaces\";\n\nexport interface MenuGroupProps {\n name: string;\n items: MenuItemData[];\n}\n\nexport function MenuGroup({ name, items }: MenuGroupProps) {\n return (\n <li className=\"menu-group\">\n <div className=\"menu-group-label\">{name}</div>\n <ul className=\"menu\">\n {items.map((item) =>\n item.type === \"dir\" ? (\n <MenuItemFolder\n key={`${item.type}-${item.id}`}\n name={item.name}\n items={item.items}\n />\n ) : (\n <MenuItem key={`${item.type}-${item.id}`} item={item} />\n )\n )}\n </ul>\n </li>\n );\n}\n\nexport interface MenuItemProps {\n item: MenuItemDataNormal;\n}\n\nfunction MenuItem({ item }: MenuItemProps) {\n const { loadingFavorites, pushRecentVisit, toggleStar, isStarred } =\n useLaunchpadContext();\n\n const starred = useMemo(() => isStarred(item), [isStarred, item]);\n\n const handleStarClick = useCallback(() => {\n toggleStar(item);\n }, [item, toggleStar]);\n\n const handleClick = useCallback(() => {\n pushRecentVisit(item);\n }, [item, pushRecentVisit]);\n\n return (\n <li\n className={classNames(\"menu-item\", {\n starred,\n \"can-star\": !loadingFavorites,\n })}\n >\n <WrappedLink\n onClick={handleClick}\n {...(item.type === \"app\"\n ? {\n url: item.url,\n }\n : {\n href: item.url,\n target: \"_blank\",\n })}\n >\n <WrappedIcon\n className=\"menu-icon\"\n lib=\"easyops\"\n icon=\"micro-app-center\"\n {...(pick(item.menuIcon, [\n \"lib\",\n \"icon\",\n \"theme\",\n \"category\",\n \"prefix\",\n ]) as any)}\n />\n <span className=\"menu-item-label\">{item.name}</span>\n </WrappedLink>\n <WrappedIcon\n lib=\"fa\"\n prefix={starred ? \"fas\" : \"far\"}\n icon=\"star\"\n className=\"menu-item-star\"\n title={starred ? \"取消收藏\" : \"收藏\"}\n onClick={handleStarClick}\n />\n </li>\n );\n}\n\nexport interface SidebarMenuItemProps {\n item: SidebarMenuItemData;\n}\n\nexport function SidebarMenuItem({ item }: SidebarMenuItemProps) {\n const { pushRecentVisit, toggleStar } = useLaunchpadContext();\n\n const handleClick = useCallback(() => {\n if (item.type !== \"link\") {\n pushRecentVisit(item);\n }\n }, [item, pushRecentVisit]);\n\n const handleRemoveStar = useCallback(() => {\n toggleStar(item);\n }, [item, toggleStar]);\n\n return (\n <li className=\"sidebar-menu-item\">\n <WrappedLink\n onClick={handleClick}\n {...(item.type === \"app\"\n ? {\n url: item.url,\n }\n : {\n href: item.url,\n target: \"_blank\",\n })}\n >\n <WrappedIcon\n className={`sidebar-menu-icon`}\n lib=\"easyops\"\n icon=\"micro-app-center\"\n {...(pick(item.menuIcon, [\n \"lib\",\n \"icon\",\n \"theme\",\n \"category\",\n \"prefix\",\n ]) as any)}\n />\n <span className=\"menu-item-label\">{item.name}</span>\n </WrappedLink>\n <WrappedIcon\n lib=\"fa\"\n icon=\"xmark\"\n className=\"menu-item-remove\"\n onClick={handleRemoveStar}\n />\n </li>\n );\n}\n\nexport interface MenuItemFolderProps {\n name: string;\n items: MenuItemDataNormal[];\n}\n\nfunction MenuItemFolder({ name, items }: MenuItemFolderProps) {\n const { searching } = useLaunchpadContext();\n const [expanded, setExpanded] = useState(false);\n const [searchingExpanded, setSearchingExpanded] = useState(false);\n\n const toggle = useCallback(() => {\n // Use separated expanded states for searching and non-searching.\n if (searching) {\n setSearchingExpanded((previous) => !previous);\n } else {\n setExpanded((previous) => !previous);\n }\n }, [searching]);\n\n useEffect(() => {\n // Each time when start searching, set it as expanded.\n setSearchingExpanded(true);\n }, [searching]);\n\n const actualExpanded = searching ? searchingExpanded : expanded;\n\n return (\n <li className=\"menu-item folder\">\n <WrappedLink onClick={toggle}>\n <WrappedIcon\n lib=\"fa\"\n prefix=\"far\"\n icon=\"folder-open\"\n className=\"menu-icon\"\n />\n <span className=\"menu-item-label\">{name}</span>\n <WrappedIcon\n lib=\"antd\"\n icon={actualExpanded ? \"up\" : \"down\"}\n className=\"menu-item-toggle\"\n />\n </WrappedLink>\n <ul className={classNames(\"sub-menu\", { expanded: actualExpanded })}>\n {items.map((item) => (\n <MenuItem key={`${item.type}-${item.id}`} item={item} />\n ))}\n </ul>\n </li>\n );\n}\n","import React, { useCallback, useRef } from \"react\";\nimport classNames from \"classnames\";\nimport { WrappedIcon, WrappedLink } from \"./wrapped-bricks\";\nimport { useLaunchpadInfo } from \"./useLaunchpadInfo.js\";\nimport { MenuGroup, SidebarMenuItem } from \"./MenuGroup.js\";\nimport { LaunchpadsContext } from \"./LaunchpadContext.js\";\nimport { SidebarMenuItemData } from \"./interfaces\";\n\nexport function Launchpad({ active }: { active?: boolean }) {\n const searchInputRef = useRef<HTMLInputElement>(null);\n const handleClickSearchBox = useCallback(() => {\n searchInputRef.current?.focus();\n }, []);\n\n const {\n loading,\n q,\n setQ,\n menuGroups,\n favorites,\n loadingFavorites,\n recentVisits,\n pushRecentVisit,\n toggleStar,\n isStarred,\n } = useLaunchpadInfo(active);\n const searching = !!q;\n\n const handleSearch = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setQ(e.target.value);\n },\n [setQ]\n );\n\n const clearSearch = useCallback(() => {\n setQ(\"\");\n }, [setQ]);\n\n return (\n <div className={classNames(\"launchpad\", { active })}>\n <LaunchpadsContext.Provider\n value={{\n searching,\n loadingFavorites,\n pushRecentVisit,\n toggleStar,\n isStarred,\n }}\n >\n <div className=\"sidebar\">\n <div className=\"quick-nav\">\n <div className=\"quick-nav-label\">快捷访问</div>\n {/* <Loading loading={loading || loadingFavorites} /> */}\n <ul className=\"sidebar-menu\">\n {favorites.map((item, index) => (\n <SidebarMenuItem\n key={index}\n item={item as SidebarMenuItemData}\n />\n ))}\n </ul>\n </div>\n </div>\n <div className={classNames(\"content\", { loading })}>\n <Loading loading={loading} />\n <div className=\"search-box\" onClick={handleClickSearchBox}>\n <WrappedIcon\n lib=\"fa\"\n icon=\"magnifying-glass\"\n className=\"search-icon\"\n />\n <input\n ref={searchInputRef}\n placeholder=\"通过关键字搜索\"\n value={q}\n onChange={handleSearch}\n className=\"search-input\"\n />\n <WrappedIcon\n lib=\"antd\"\n theme=\"filled\"\n icon=\"close-circle\"\n className={classNames(\"search-clear\", { searching })}\n onClick={clearSearch}\n />\n </div>\n <div className={classNames({ empty: recentVisits.length === 0 })}>\n <div className=\"recent-visits-label\">最近访问</div>\n <ul className=\"recent-visits\">\n {recentVisits.map((item, index) => (\n <li key={index}>\n <WrappedLink\n onClick={() => pushRecentVisit(item)}\n {...(item.type === \"app\"\n ? {\n url: item.url,\n }\n : {\n href: item.url,\n target: \"_blank\",\n })}\n >\n <span>{item.name}</span>\n </WrappedLink>\n </li>\n ))}\n </ul>\n </div>\n <ul className=\"menu-groups\">\n {menuGroups.map((group) => (\n <MenuGroup\n key={group.name}\n name={group.name}\n items={group.items}\n />\n ))}\n </ul>\n </div>\n </LaunchpadsContext.Provider>\n </div>\n );\n}\n\nfunction Loading({ loading }: { loading: boolean }) {\n return (\n loading && (\n <div className=\"spinner\">\n <WrappedIcon lib=\"fa\" icon=\"spinner\" spinning />\n </div>\n )\n );\n}\n","import _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/asyncToGenerator\";\nimport { http } from \"@next-core/http\";\n/**\n * @description 获取我的收藏列表V2\n * @endpoint LIST /api/v2/launchpad/collection\n */\nexport var LaunchpadApi_listCollectionV2 = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(function* (params, options) {\n return (/**! @contract easyops.api.user_service.launchpad.ListCollectionV2@1.0.0 */(yield http.get(\"api/gateway/user_service.launchpad.ListCollectionV2/api/v2/launchpad/collection\", _objectSpread(_objectSpread({}, options), {}, {\n params\n }))).data\n );\n });\n return function LaunchpadApi_listCollectionV2(_x, _x2) {\n return _ref.apply(this, arguments);\n };\n}();\n//# sourceMappingURL=listCollectionV2.js.map","import _asyncToGenerator from \"@babel/runtime/helpers/asyncToGenerator\";\nimport { http } from \"@next-core/http\";\n/**\n * @description 新增我的收藏V2\n * @endpoint POST /api/v2/launchpad/collection\n */\nexport var LaunchpadApi_createCollectionV2 = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(function* (data, options) {\n return (/**! @contract easyops.api.user_service.launchpad.CreateCollectionV2@1.0.0 */(yield http.post(\"api/gateway/user_service.launchpad.CreateCollectionV2/api/v2/launchpad/collection\", data, options)).data\n );\n });\n return function LaunchpadApi_createCollectionV2(_x, _x2) {\n return _ref.apply(this, arguments);\n };\n}();\n//# sourceMappingURL=createCollectionV2.js.map","import { http } from \"@next-core/http\";\n\n/**\n * @description 删除我的收藏V2\n * @endpoint DELETE /api/v2/launchpad/collection/:instanceId\n */\nexport var LaunchpadApi_deleteCollectionV2 = (instanceId, options) => /**! @contract easyops.api.user_service.launchpad.DeleteCollectionV2@1.0.0 */http.delete(\"api/gateway/user_service.launchpad.DeleteCollectionV2/api/v2/launchpad/collection/\".concat(instanceId), options);\n//# sourceMappingURL=deleteCollectionV2.js.map","export const FAVORITES_LIMIT = 10;\nexport const RECENT_VISITS_LIMIT = 10;\n","import type { I18nData, MicroApp, Storyboard } from \"@next-core/types\";\nimport { i18nText } from \"@next-core/i18n\";\nimport { LaunchpadApi_getLaunchpadInfo } from \"@next-api-sdk/micro-app-standalone-sdk\";\nimport {\n LaunchpadApi_createCollectionV2,\n LaunchpadApi_deleteCollectionV2,\n LaunchpadApi_listCollectionV2,\n} from \"@next-api-sdk/user-service-sdk\";\nimport type {\n FavMenuItem,\n MenuGroupData,\n MenuItemData,\n MenuItemDataApp,\n MenuItemDataCustom,\n MenuItemDataDir,\n MenuItemDataNormal,\n MicroAppWithInstanceId,\n} from \"./interfaces\";\nimport { FAVORITES_LIMIT } from \"./constants\";\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 initializeAppLocaleName(app);\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\nfunction initializeAppLocaleName(\n app: Pick<MicroApp, \"locales\" | \"name\" | \"localeName\">\n) {\n if (app.locales) {\n const i18nData = Object.fromEntries(\n Object.entries(app.locales)\n .filter(([lang, resources]) => resources.name)\n .map(([lang, resources]) => [lang, resources.name])\n ) as I18nData;\n app.localeName = i18nText(i18nData) ?? app.name;\n } else {\n app.localeName = app.name;\n }\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 initializeAppLocaleName(app);\n stored.push({\n favoriteId: fav.instanceId,\n type: \"app\",\n name: app.localeName,\n id: app.appId,\n url: app.homepage,\n instanceId: app.instanceId,\n menuIcon: app.menuIcon,\n } as FavMenuItem);\n } else if (fav.type === \"customItem\") {\n const customItem = fav.relatedCustomItem!;\n stored.push({\n favoriteId: fav.instanceId,\n type: \"custom\",\n name: customItem.name,\n id: customItem.id,\n url: customItem.url,\n menuIcon: customItem.menuIcon,\n } as FavMenuItem);\n } else if (fav.type === \"link\") {\n stored.push({\n favoriteId: fav.instanceId,\n type: \"link\",\n name: fav.name,\n // id: fav.id,\n url: fav.link,\n menuIcon: fav.icon,\n } as FavMenuItem);\n }\n }\n return stored;\n}\n\nexport async function favorite(\n item: MenuItemDataNormal\n): Promise<{ instanceId?: string }> {\n return LaunchpadApi_createCollectionV2(\n {\n type: item.type === \"app\" ? \"microApp\" : \"customItem\",\n relatedInstanceId: item.instanceId,\n },\n {\n interceptorParams: { ignoreLoadingBar: true },\n }\n );\n}\n\nexport async function undoFavorite(item: FavMenuItem) {\n if (item.favoriteId) {\n return LaunchpadApi_deleteCollectionV2(item.favoriteId);\n }\n\n return fetchRawFavorites().then((list) => {\n const foundId = list.find((fav) =>\n item.type === \"app\"\n ? fav.type === \"microApp\" && fav.relatedApp?.appId === item.id\n : item.type === \"custom\" && fav.relatedCustomItem?.id === item.id\n )?.instanceId;\n\n if (foundId) {\n return LaunchpadApi_deleteCollectionV2(foundId);\n }\n // eslint-disable-next-line no-console\n console.error(\"Menu item to unstar not found:\", item);\n });\n}\n","import type {\n MenuGroupData,\n MenuItemData,\n MenuItemDataApp,\n MenuItemDataCustom,\n} from \"./interfaces\";\n\nexport function search(\n allMenuGroups: MenuGroupData[],\n q: string\n): MenuGroupData[] {\n if (!q) {\n return allMenuGroups;\n }\n const lowerQ = q.toLowerCase();\n const groups: MenuGroupData[] = allMenuGroups\n .map((group) => ({\n ...group,\n items: group.items\n .map((item) => {\n switch (item.type) {\n case \"app\":\n return matchMenuItemApp(item, lowerQ);\n case \"custom\":\n return matchMenuItemCustom(item, lowerQ);\n case \"dir\": {\n const filteredSubItems = item.items\n .map((sub) =>\n sub.type === \"app\"\n ? matchMenuItemApp(sub, lowerQ)\n : sub.type === \"custom\"\n ? matchMenuItemCustom(sub, lowerQ)\n : null\n )\n .filter(Boolean) as MenuItemData[];\n return filteredSubItems.length > 0\n ? {\n ...item,\n items: filteredSubItems,\n }\n : null;\n }\n }\n })\n // Ignore not matched items\n .filter(Boolean) as MenuItemData[],\n }))\n // ignore empty desktops\n .filter((group) => group.items.length > 0);\n return groups;\n}\n\nfunction matchMenuItemApp(item: MenuItemDataApp, lowerQ: string) {\n return item.id.toLowerCase().includes(lowerQ) ||\n item.name.toLowerCase().includes(lowerQ)\n ? item\n : null;\n}\n\nfunction matchMenuItemCustom(item: MenuItemDataCustom, lowerQ: string) {\n return item.id.toLowerCase().includes(lowerQ) ||\n item.name.toLowerCase().includes(lowerQ)\n ? item\n : null;\n}\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { getRuntime, handleHttpError } 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 } from \"./wrapped-bricks\";\nimport type {\n FavMenuItem,\n MenuGroupData,\n MenuItemDataCustom,\n MenuItemDataLink,\n MenuItemDataNormal,\n MicroAppWithInstanceId,\n StoredMenuItem,\n} from \"./interfaces\";\nimport {\n favorite,\n fetchFavorites,\n fetchLaunchpadInfo,\n undoFavorite,\n} from \"./api\";\nimport { search } from \"./search\";\nimport { FAVORITES_LIMIT, RECENT_VISITS_LIMIT } from \"./constants\";\n\nconst storageKey = `launchpad-recent-visits:${(\n auth.getAuth() as Record<string, string>\n)?.org}`;\nconst storage = new JsonStorage(localStorage);\n\nlet candidateDesktops: MenuGroupData[] = [];\nlet candidateMicroAppsById = new Map<string, MicroAppWithInstanceId>();\nlet candidateCustomLinksById = new Map<string, MenuItemDataCustom>();\nlet preLoaded = false;\n\nlet candidateFavorites: FavMenuItem[] = [];\nlet preLoadedFavorites = false;\n\nexport const deferredLaunchpadInfo = new DeferredService(async () => {\n ({\n menuGroups: candidateDesktops,\n microAppsById: candidateMicroAppsById,\n customLinksById: candidateCustomLinksById,\n } = await fetchLaunchpadInfo());\n preLoaded = true;\n});\n\nexport const deferredFavorites = new DeferredService(async () => {\n candidateFavorites = await fetchFavorites();\n preLoadedFavorites = true;\n});\n\n/**\n * - 页面初始化时预加载 launchpad 信息。\n * - 每次打开 launchpad 都发起请求,但该请求的数据只在下次打开 launchpad 时使用。\n * 即每次打开 launchpad 使用的都是上一次获取的数据,以便达到两个效果:\n * - 每次打开 launchpad 都能立即显示菜单列表;\n * - 同时当用户在 launchpad 上操作时,不会出现数据突然更新(新数据请求完成)。\n */\nexport function useLaunchpadInfo(active?: boolean) {\n const [desktops, setDesktops] = useState(candidateDesktops);\n const [microAppsById, setMicroAppsById] = useState(candidateMicroAppsById);\n const [customLinksById, setCustomLinksById] = useState(\n candidateCustomLinksById\n );\n\n const [q, setQ] = useState(\"\");\n\n const [loading, setLoading] = useState(!preLoaded);\n const [loadingFavorites, setLoadingFavorites] = useState(!preLoadedFavorites);\n\n const [storedRecentVisits, setStoredRecentVisits] = useState<\n StoredMenuItem[]\n >([]);\n\n const [recentVisits, setRecentVisits] = useState<MenuItemDataNormal[]>([]);\n\n const [favorites, setFavorites] = useState<FavMenuItem[]>(candidateFavorites);\n\n useEffect(() => {\n // 仅当首次加载完成或重新打开 launchpad 时更新一次数据。\n if (active && !loading) {\n setDesktops(candidateDesktops);\n setMicroAppsById(candidateMicroAppsById);\n setCustomLinksById(candidateCustomLinksById);\n }\n }, [active, loading]);\n\n useEffect(() => {\n if (active && !loadingFavorites) {\n setFavorites(candidateFavorites);\n }\n }, [active, loadingFavorites]);\n\n useEffect(() => {\n if (active) {\n setStoredRecentVisits(storage.getItem(storageKey) ?? []);\n }\n }, [active]);\n\n useEffect(() => {\n if (active) {\n const startFetchLaunchpadInfo = async (): Promise<void> => {\n try {\n await deferredLaunchpadInfo.fetch();\n setLoading(false);\n } catch (error) {\n handleHttpError(error);\n }\n };\n startFetchLaunchpadInfo();\n }\n }, [active]);\n\n useEffect(() => {\n if (active) {\n const startFetchFavorites = async (): Promise<void> => {\n try {\n await deferredFavorites.fetch();\n setLoadingFavorites(false);\n } catch (error) {\n handleHttpError(error);\n }\n };\n startFetchFavorites();\n }\n }, [active]);\n\n useEffect(() => {\n if (loading) {\n return;\n }\n const visits = storedRecentVisits\n .map((item) => {\n // Remembered recent visits maybe no longer existed in launchpad\n if (item.type === \"app\") {\n const app = microAppsById.get(item.id);\n return app\n ? {\n type: \"app\",\n name: app.localeName,\n id: app.id,\n url: app.homepage,\n instanceId: app.instanceId,\n menuIcon: app.menuIcon,\n }\n : null;\n }\n return customLinksById.get(item.id);\n })\n .filter(Boolean) as MenuItemDataNormal[];\n setRecentVisits(visits);\n }, [customLinksById, loading, microAppsById, storedRecentVisits]);\n\n const pushRecentVisit = useCallback(({ type, id }: StoredMenuItem) => {\n const visits: StoredMenuItem[] = storage.getItem(storageKey) ?? [];\n const index = visits.findIndex(\n (visit) => visit.type === type && visit.id === id\n );\n if (index > -1) {\n visits.splice(index, 1);\n }\n visits.unshift({ type, id });\n if (visits.length > RECENT_VISITS_LIMIT) {\n visits.pop();\n }\n // setStoredRecentVisits(visits);\n storage.setItem(storageKey, visits);\n }, []);\n\n const isStarred = useCallback(\n (item: MenuItemDataNormal) =>\n favorites.some((fav) => matchFavorite(item, fav)),\n [favorites]\n );\n\n const toggleStar = useCallback(\n (item: MenuItemDataNormal | MenuItemDataLink) => {\n const index = favorites.findIndex((fav) =>\n item.type === \"link\"\n ? fav.favoriteId === item.favoriteId\n : matchFavorite(item, fav)\n );\n let newFavorites: FavMenuItem[];\n if (index > -1) {\n const removed = favorites[index];\n newFavorites = favorites\n .slice(0, index)\n .concat(favorites.slice(index + 1));\n undoFavorite(removed).catch(handleHttpError);\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 }, handleHttpError);\n }\n setFavorites(newFavorites);\n candidateFavorites = newFavorites;\n },\n [favorites]\n );\n\n const menuGroups: MenuGroupData[] = useMemo(\n () => search(desktops, q),\n [desktops, q]\n );\n\n return {\n loading,\n q,\n setQ,\n menuGroups,\n loadingFavorites,\n favorites,\n recentVisits,\n pushRecentVisit,\n isStarred,\n toggleStar,\n };\n}\n\nexport function matchFavorite(item: MenuItemDataNormal, fav: FavMenuItem) {\n return item.instanceId && fav.instanceId\n ? fav.instanceId === item.instanceId\n : fav.type === item.type && fav.id === item.id;\n}\n","import { wrapBrick } from \"@next-core/react-element\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport type { showDialog as _showDialog } from \"@next-bricks/basic/data-providers/show-dialog/show-dialog\";\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","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../images/launchpad-sidebar.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:inline-block;width:32px;height:32px;--local-sidebar-menu-item-active-bg:rgba(0,0,0,0.04);--local-background:#fff;--local-menu-icon-color:#8c8c8c;--local-max-height:calc(100vh - var(--app-bar-height) - 10px)}:host([hidden]){display:none}:host-context(html[data-theme=\"dark\"]),\n:host-context(html[data-theme=\"dark-v2\"]){--local-sidebar-menu-item-active-bg:rgba(255,255,255,0.04);--local-background:#26262a;--local-menu-icon-color:rgba(255,255,255,0.45)}.launchpad-button{width:100%;height:100%;display:flex;justify-content:center;align-items:center;color:#999;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.launchpad-button:hover,\n.launchpad-button.active{background-color:var(--color-fill-bg-base-1)}.launchpad-button.active{color:var(--color-brand)}.mask{position:fixed;top:0;bottom:0;left:0;right:0;z-index:1;display:none}.mask.active{display:block}.launchpad{display:none;position:absolute;margin-top:4px;z-index:1;width:1070px;max-width:calc(100vw - 100px);max-height:var(--local-max-height);min-height:50vh;min-height:min(500px,var(--local-max-height));background-color:var(--local-background);border:1px solid var(--color-text-divider-line);border-radius:6px;box-shadow:var(--fullscreen-overlay-shadow)}.launchpad.active{display:flex}.sidebar{width:190px;padding:20px 0 24px;display:flex;flex-direction:column;background:var(--color-fill-bg-base-3);min-width:0;background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-size:205px 205px;background-repeat:no-repeat;background-position:left 52px bottom 27px}.quick-nav-label,\n.menu-group-label,\n.menu-item-label,\n.recent-visits span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-menu,\n.menu-groups,\n.menu,\n.sub-menu,\n.recent-visits{list-style:none;margin:0;padding:0}.sidebar-menu,\n.menu,\n.sub-menu{display:flex;flex-direction:column;gap:14px}.sidebar-menu-item > eo-link,\n.menu-item > eo-link,\n.recent-visits eo-link{display:block;min-width:0}.sidebar-menu-item > eo-link::part(link),\n.menu-item > eo-link::part(link){height:20px;display:flex;align-items:center;gap:8px;color:var(--color-header-text)}.sidebar-menu-item{padding:0 12px 0 16px;justify-content:space-between}.sidebar-menu-icon{color:var(--left-sidebar-item-collapsed-icon-color)}.quick-nav{overflow-y:auto;flex:1}.quick-nav-label{color:var(--color-header-text);font-weight:500;margin-bottom:14px;padding:0 16px}.content{flex:1;padding:20px 24px 24px;min-width:0;overflow-y:auto;display:flex;flex-direction:column;gap:24px}.search-box{border-bottom:1px solid var(--color-text-divider-line);display:flex;gap:8px;align-items:center;padding:10px 0;margin-top:-10px;cursor:text}.search-icon{color:var(--color-auxiliary-text)}.search-input{padding:0;margin:0;border:none;outline:none;color:inherit;background-color:transparent;font-size:14px;line-height:22px;flex:1;min-width:0}.search-input::placeholder{color:var(--color-disabled-text);opacity:1}.search-clear{display:none;color:var(--color-secondary-text);cursor:pointer}.search-clear.searching{display:inline-block}.search-clear:hover{color:var(--color-auxiliary-text)}.menu-groups,\n.recent-visits{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.menu-groups{display:grid;grid-gap:32px 8px;gap:32px 8px}.menu-group{padding-right:12px;color:var(--color-header-text)}.menu-group-label{font-size:var(--card-title-font-size);font-weight:500;color:var(--color-header-text);margin-bottom:14px}.sidebar-menu-item,\n.menu-item:not(.folder){display:flex;gap:8px;align-items:center}.menu-icon{color:var(--local-menu-icon-color)}.menu-item.active,\n.menu-item.active .menu-icon{color:var(--color-brand-active)}.sub-menu:not(.expanded){display:none}.sub-menu{margin-top:14px;margin-left:8px;border-left:1px solid var(--color-text-divider-line);padding-left:15px}.menu-item-remove,\n.menu-item-star{cursor:pointer}.menu-item-remove,\n.menu-item-star,\n.menu-item-toggle{color:var(--color-secondary-text)}.sidebar-menu-item:not(:hover) .menu-item-remove{display:none}.menu-item-remove:hover{color:var(--color-normal-text)}.menu-item-remove:active{color:var(--color-strong-text)}.menu-item-star{display:none}.can-star.starred > .menu-item-star,\n.can-star:hover > .menu-item-star{display:inline-block}.can-star:not(.starred) > .menu-item-star{color:var(--color-secondary-text)}.starred > .menu-item-star{color:var(--palette-yellow-6)}.recent-visits-label{margin-bottom:12px;font-size:var(--card-title-font-size);color:var(--color-header-text);font-weight:500}.recent-visits{display:grid;grid-gap:8px;gap:8px}.recent-visits eo-link::part(link){background-color:var(--color-fill-bg-base-1);border-radius:3px;color:var(--color-header-text);display:flex;align-items:center;height:24px;padding:0 8px}.sidebar-menu-item > eo-link:hover::part(link),\n.sidebar-menu-item > eo-link:hover .sidebar-menu-icon,\n.menu-item > eo-link:hover::part(link),\n.menu-item > eo-link:hover .menu-icon,\n.menu-item > eo-link:hover .menu-item-toggle,\n.recent-visits eo-link:hover::part(link){color:var(--color-brand-hover)}.spinner{display:flex;justify-content:center;align-items:center;color:var(--theme-doderblue-color);flex:1;font-size:30px}.empty,\n.loading > :not(.spinner){display:none}@supports not (inset: 0){.search-box,\n .sidebar-menu,\n .menu,\n .sub-menu,\n .sidebar-menu-item,\n .menu-item:not(.folder),\n .sidebar-menu-item > eo-link::part(link),\n .menu-item > eo-link::part(link){gap:0}.content{display:grid;grid-auto-flow:row}.content:not(.loading){height:-webkit-min-content;height:-moz-min-content;height:min-content}.sidebar-menu > :not(:first-child),\n .menu > :not(:first-child),\n .sub-menu > :not(:first-child){margin-top:14px}.search-icon,\n .sidebar-menu-icon,\n .menu-icon{margin-right:8px}.search-clear,\n .menu-item-star,\n .menu-item-toggle{margin-left:8px}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","\"use strict\";\n\nmodule.exports = function (url, options) {\n if (!options) {\n options = {};\n }\n if (!url) {\n return url;\n }\n url = String(url.__esModule ? url.default : url);\n\n // If url is already wrapped in quotes, remove them\n if (/^['\"].*['\"]$/.test(url)) {\n url = url.slice(1, -1);\n }\n if (options.hash) {\n url += options.hash;\n }\n\n // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n if (/[\"'() \\t\\n]|(%20)/.test(url) || options.needQuotes) {\n return \"\\\"\".concat(url.replace(/\"/g, '\\\\\"').replace(/\\n/g, \"\\\\n\"), \"\\\"\");\n }\n return url;\n};"],"names":["LaunchpadsContext","React","useLaunchpadContext","MenuGroup","_ref","name","items","className","map","item","type","MenuItemFolder","key","concat","id","MenuItem","_ref2","loadingFavorites","pushRecentVisit","toggleStar","isStarred","starred","useMemo","handleStarClick","useCallback","handleClick","classNames","WrappedLink","_extends","onClick","url","href","target","WrappedIcon","lib","icon","pick","menuIcon","prefix","title","SidebarMenuItem","_ref3","handleRemoveStar","_ref4","searching","expanded","setExpanded","useState","searchingExpanded","setSearchingExpanded","toggle","previous","useEffect","actualExpanded","Launchpad","active","searchInputRef","useRef","handleClickSearchBox","_searchInputRef$curre","current","focus","loading","q","setQ","menuGroups","favorites","recentVisits","useLaunchpadInfo","handleSearch","e","value","clearSearch","Provider","index","Loading","ref","placeholder","onChange","theme","empty","length","group","spinning","LaunchpadApi_listCollectionV2","params","options","http","get","_x","_x2","apply","this","arguments","LaunchpadApi_createCollectionV2","data","post","LaunchpadApi_deleteCollectionV2","instanceId","delete","FAVORITES_LIMIT","RECENT_VISITS_LIMIT","_fetchLaunchpadInfo","_asyncToGenerator","launchpadInfo","LaunchpadApi_getLaunchpadInfo","interceptorParams","ignoreLoadingBar","noAbortOnRouteChange","microAppsById","Map","storyboard","storyboards","app","initializeAppLocaleName","set","customLinksById","desktops","push","_objectSpread","localeName","homepage","subItems","subItem","locales","_i18nText","i18nData","Object","fromEntries","entries","filter","lang","resources","i18nText","fetchRawFavorites","_fetchRawFavorites","page","pageSize","list","_fetchFavorites","stored","fav","relatedApp","favoriteId","appId","customItem","relatedCustomItem","link","_favorite","relatedInstanceId","_undoFavorite","then","_list$find","foundId","find","_fav$relatedApp","_fav$relatedCustomIte","console","error","matchMenuItemApp","lowerQ","toLowerCase","includes","matchMenuItemCustom","storageKey","_auth$getAuth","auth","getAuth","org","storage","JsonStorage","localStorage","candidateDesktops","candidateMicroAppsById","candidateCustomLinksById","preLoaded","candidateFavorites","preLoadedFavorites","deferredLaunchpadInfo","DeferredService","fetchLaunchpadInfo","deferredFavorites","fetchFavorites","setDesktops","setMicroAppsById","setCustomLinksById","setLoading","setLoadingFavorites","storedRecentVisits","setStoredRecentVisits","setRecentVisits","setFavorites","_storage$getItem","getItem","startFetchLaunchpadInfo","fetch","handleHttpError","startFetchFavorites","visits","Boolean","_ref5","_storage$getItem2","findIndex","visit","splice","unshift","pop","setItem","some","matchFavorite","newFavorites","removed","slice","undoFavorite","catch","showDialog","content","favorite","result","allMenuGroups","filteredSubItems","sub","search","wrapBrick","unwrapProvider","___CSS_LOADER_URL_IMPORT_0___","URL","___CSS_LOADER_EXPORT___","___CSS_LOADER_URL_REPLACEMENT_0___","module","toString","exports","String","__esModule","default","test","hash","needQuotes","replace"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- (()=>{var e,t,r,n,a,o,l,i,c,f,s,d,u,h,p,m,b,v,x={8691:(e,t,r)=>{Promise.all([r.e(2167),r.e(1494),r.e(5178),r.e(2413),r.e(8657),r.e(5887),r.e(777),r.e(5366),r.e(4117),r.e(3352),r.e(2484),r.e(9751),r.e(9077),r.e(9784),r.e(6482),r.e(9816),r.e(327),r.e(8142)]).then(r.bind(r,8142))}},g={};function y(e){var t=g[e];if(void 0!==t)return t.exports;var r=g[e]={id:e,loaded:!1,exports:{}};return x[e].call(r.exports,r,r.exports,y),r.loaded=!0,r.exports}y.m=x,y.c=g,y.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return y.d(t,{a:t}),t},y.d=(e,t)=>{for(var r in t)y.o(t,r)&&!y.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},y.f={},y.e=e=>Promise.all(Object.keys(y.f).reduce(((t,r)=>(y.f[r](e,t),t)),[])),y.u=e=>"chunks/"+e+"."+{327:"f17de4ee",443:"9810e710",777:"495ac6c8",1303:"f8781f1e",1494:"c531a091",1618:"fd77bd7d",1646:"7c501d74",1874:"b69e31f2",2024:"3653c941",2108:"68cb4c94",2167:"b20aa2c9",2413:"c9762485",2484:"b3514a0b",2784:"f1276a06",3352:"f89c5f20",3458:"dd56c7ea",4031:"a902777f",4049:"4c9aff4f",4117:"ffab7f91",4275:"1fd8ecf3",4298:"5b9e41f7",4443:"d435144a",4606:"178582d3",4991:"f8554fea",5151:"45d065f2",5178:"da183645",5326:"42956a9e",5366:"9ed599fb",5628:"235df3e7",5636:"b601815d",5725:"8725fd32",5887:"4ef65101",6040:"110793fe",6051:"370b2d16",6205:"b0250234",6381:"d43f8781",6473:"7d38bacb",6482:"559d003d",6522:"6e6d5322",6635:"0db0281d",6653:"fad842d4",7067:"0cebc199",7110:"fd016bb6",7164:"f4a731b7",7672:"eca8f2b6",7746:"626d61c6",7910:"91c6d3d0",7915:"4ed2483c",8008:"cfc9964b",8142:"4129ad4a",8242:"a58f0e60",8316:"5124d566",8498:"a733d4eb",8588:"e57d8469",8657:"a43ca9e0",8691:"179e33b1",8874:"04a8c54f",9077:"f66ea4d3",9102:"9235ccd8",9169:"4e206797",9407:"835ea347",9431:"29d63767",9549:"53937b60",9751:"80694e92",9784:"89ebad04",9816:"66a3486c"}[e]+".js",y.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),y.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="@next-bricks/nav:",y.l=(r,n,a,o)=>{if(e[r])e[r].push(n);else{var l,i;if(void 0!==a)for(var c=document.getElementsByTagName("script"),f=0;f<c.length;f++){var s=c[f];if(s.getAttribute("src")==r||s.getAttribute("data-webpack")==t+a){l=s;break}}l||(i=!0,(l=document.createElement("script")).charset="utf-8",l.timeout=120,y.nc&&l.setAttribute("nonce",y.nc),l.setAttribute("data-webpack",t+a),l.src=r),e[r]=[n];var d=(t,n)=>{l.onerror=l.onload=null,clearTimeout(u);var a=e[r];if(delete e[r],l.parentNode&&l.parentNode.removeChild(l),a&&a.forEach((e=>e(n))),t)return t(n)},u=setTimeout(d.bind(null,void 0,{type:"timeout",target:l}),12e4);l.onerror=d.bind(null,l.onerror),l.onload=d.bind(null,l.onload),i&&document.head.appendChild(l)}},y.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},y.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{y.S={};var e={},t={};y.I=(r,n)=>{n||(n=[]);var a=t[r];if(a||(a=t[r]={}),!(n.indexOf(a)>=0)){if(n.push(a),e[r])return e[r];y.o(y.S,r)||(y.S[r]={});var o=y.S[r],l="@next-bricks/nav",i=(e,t,r,n)=>{var a=o[e]=o[e]||{},i=a[t];(!i||!i.loaded&&(!n!=!i.eager?n:l>i.from))&&(a[t]={get:r,from:l,eager:!!n})},c=[];return"default"===r&&(i("@babel/parser","7.23.0",(()=>y.e(1874).then((()=>()=>y(1874))))),i("@easyops-cn/brick-next-pipes","0.5.0",(()=>Promise.all([y.e(4031),y.e(5178),y.e(7910)]).then((()=>()=>y(4031))))),i("@next-core/cook","2.2.8",(()=>Promise.all([y.e(5151),y.e(8242)]).then((()=>()=>y(5151))))),i("@next-core/easyops-runtime","0.6.54",(()=>Promise.all([y.e(9102),y.e(5178),y.e(2413),y.e(5887),y.e(777),y.e(1618),y.e(3352),y.e(4606),y.e(6381),y.e(9751),y.e(9169),y.e(4443)]).then((()=>()=>y(9102))))),i("@next-core/element","1.1.6",(()=>y.e(9549).then((()=>()=>y(9549))))),i("@next-core/http","1.1.5",(()=>y.e(7067).then((()=>()=>y(7067))))),i("@next-core/i18n/react","1.0.31",(()=>Promise.all([y.e(5887),y.e(5636)]).then((()=>()=>y(5636))))),i("@next-core/i18n","1.0.31",(()=>Promise.all([y.e(2413),y.e(5887),y.e(6040),y.e(7164)]).then((()=>()=>y(7164))))),i("@next-core/inject","1.0.22",(()=>Promise.all([y.e(5178),y.e(1618),y.e(7672)]).then((()=>()=>y(7672))))),i("@next-core/loader","1.4.4",(()=>y.e(8498).then((()=>()=>y(8498))))),i("@next-core/pipes","2.0.12",(()=>y.e(4275).then((()=>()=>y(4275))))),i("@next-core/react-element","1.0.16",(()=>Promise.all([y.e(8657),y.e(5366),y.e(2484),y.e(1646)]).then((()=>()=>y(1646))))),i("@next-core/runtime","1.25.6",(()=>Promise.all([y.e(6051),y.e(5178),y.e(2413),y.e(5887),y.e(4606),y.e(6381),y.e(8874),y.e(4298),y.e(6522)]).then((()=>()=>y(6051))))),i("@next-core/supply","2.1.7",(()=>Promise.all([y.e(5178),y.e(1618),y.e(8874),y.e(4049)]).then((()=>()=>y(4049))))),i("@next-core/theme","1.4.1",(()=>Promise.all([y.e(2108),y.e(5628)]).then((()=>()=>y(2108))))),i("@next-core/utils/general","1.6.3",(()=>y.e(7110).then((()=>()=>y(7110))))),i("@next-core/utils/storyboard","1.6.3",(()=>Promise.all([y.e(2413),y.e(4606),y.e(3458)]).then((()=>()=>y(3458))))),i("history","4.10.1",(()=>y.e(5326).then((()=>()=>y(2024))))),i("i18next-browser-languagedetector","7.1.0",(()=>y.e(443).then((()=>()=>y(443))))),i("i18next","23.6.0",(()=>y.e(4991).then((()=>()=>y(4991))))),i("js-yaml","3.14.1",(()=>y.e(9431).then((()=>()=>y(9431))))),i("lodash","4.17.21",(()=>y.e(6635).then((()=>()=>y(6635))))),i("moment/locale/zh-cn.js","2.29.4",(()=>Promise.all([y.e(8008),y.e(7915)]).then((()=>()=>y(7414))))),i("moment","2.29.4",(()=>Promise.all([y.e(8008),y.e(7915)]).then((()=>()=>y(9034))))),i("react-dom","0.0.0-experimental-ee8509801-20230117",(()=>Promise.all([y.e(8316),y.e(8657)]).then((()=>()=>y(8316))))),i("react-i18next","13.3.1",(()=>Promise.all([y.e(8588),y.e(8657)]).then((()=>()=>y(8588))))),i("react","0.0.0-experimental-ee8509801-20230117",(()=>y.e(2784).then((()=>()=>y(2784)))))),e[r]=c.length?Promise.all(c).then((()=>e[r]=1)):1}}})(),(()=>{var e;y.g.importScripts&&(e=y.g.location+"");var t=y.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");if(r.length)for(var n=r.length-1;n>-1&&!e;)e=r[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),y.p=e+"../"})(),r=e=>{var t=e=>e.split(".").map((e=>+e==e?+e:e)),r=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),n=r[1]?t(r[1]):[];return r[2]&&(n.length++,n.push.apply(n,t(r[2]))),r[3]&&(n.push([]),n.push.apply(n,t(r[3]))),n},n=(e,t)=>{e=r(e),t=r(t);for(var n=0;;){if(n>=e.length)return n<t.length&&"u"!=(typeof t[n])[0];var a=e[n],o=(typeof a)[0];if(n>=t.length)return"u"==o;var l=t[n],i=(typeof l)[0];if(o!=i)return"o"==o&&"n"==i||"s"==i||"u"==o;if("o"!=o&&"u"!=o&&a!=l)return a<l;n++}},a=e=>{var t=e[0],r="";if(1===e.length)return"*";if(t+.5){r+=0==t?">=":-1==t?"<":1==t?"^":2==t?"~":t>0?"=":"!=";for(var n=1,o=1;o<e.length;o++)n--,r+="u"==(typeof(i=e[o]))[0]?"-":(n>0?".":"")+(n=2,i);return r}var l=[];for(o=1;o<e.length;o++){var i=e[o];l.push(0===i?"not("+c()+")":1===i?"("+c()+" || "+c()+")":2===i?l.pop()+" "+l.pop():a(i))}return c();function c(){return l.pop().replace(/^\((.+)\)$/,"$1")}},o=(e,t)=>{if(0 in e){t=r(t);var n=e[0],a=n<0;a&&(n=-n-1);for(var l=0,i=1,c=!0;;i++,l++){var f,s,d=i<e.length?(typeof e[i])[0]:"";if(l>=t.length||"o"==(s=(typeof(f=t[l]))[0]))return!c||("u"==d?i>n&&!a:""==d!=a);if("u"==s){if(!c||"u"!=d)return!1}else if(c)if(d==s)if(i<=n){if(f!=e[i])return!1}else{if(a?f>e[i]:f<e[i])return!1;f!=e[i]&&(c=!1)}else if("s"!=d&&"n"!=d){if(a||i<=n)return!1;c=!1,i--}else{if(i<=n||s<d!=a)return!1;c=!1}else"s"!=d&&"n"!=d&&(c=!1,i--)}}var u=[],h=u.pop.bind(u);for(l=1;l<e.length;l++){var p=e[l];u.push(1==p?h()|h():2==p?h()&h():p?o(p,t):!h())}return!!h()},l=(e,t)=>{var r=e[t];return Object.keys(r).reduce(((e,t)=>!e||!r[e].loaded&&n(e,t)?t:e),0)},i=(e,t,r,n)=>"Unsatisfied version "+r+" from "+(r&&e[t][r].from)+" of shared singleton module "+t+" (required "+a(n)+")",c=(e,t,r,n)=>{var a=l(e,r);return o(n,a)||s(i(e,r,a,n)),d(e[r][a])},f=(e,t,r)=>{var a=e[t];return(t=Object.keys(a).reduce(((e,t)=>!o(r,t)||e&&!n(e,t)?e:t),0))&&a[t]},s=e=>{"undefined"!=typeof console&&console.warn&&console.warn(e)},d=e=>(e.loaded=1,e.get()),h=(u=e=>function(t,r,n,a){var o=y.I(t);return o&&o.then?o.then(e.bind(e,t,y.S[t],r,n,a)):e(t,y.S[t],r,n,a)})(((e,t,r,n,a)=>t&&y.o(t,r)?c(t,0,r,n):a())),p=u(((e,t,r,n,a)=>{var o=t&&y.o(t,r)&&f(t,r,n);return o?d(o):a()})),m={},b={5178:()=>h("default","lodash",[1,4,17,21],(()=>y.e(6635).then((()=>()=>y(6635))))),2413:()=>h("default","@next-core/utils/general",[1,1,6,3],(()=>y.e(7110).then((()=>()=>y(7110))))),8657:()=>p("default","react",[6,0,0,0,,"experimental-ee8509801-20230117"],(()=>y.e(2784).then((()=>()=>y(2784))))),5887:()=>h("default","@next-core/i18n",[1,1,0,31],(()=>Promise.all([y.e(2413),y.e(6040),y.e(6205)]).then((()=>()=>y(7164))))),777:()=>h("default","@next-core/runtime",[1,1,25,6],(()=>Promise.all([y.e(6051),y.e(2413),y.e(5887),y.e(4606),y.e(6381),y.e(8874),y.e(4298)]).then((()=>()=>y(6051))))),5366:()=>p("default","@next-core/element",[1,1,1,6],(()=>y.e(9549).then((()=>()=>y(9549))))),2230:()=>h("default","@next-core/theme",[1,1,4,1],(()=>y.e(2108).then((()=>()=>y(2108))))),4511:()=>p("default","@next-core/react-element",[1,1,0,16],(()=>Promise.all([y.e(2484),y.e(7746)]).then((()=>()=>y(1646))))),3352:()=>h("default","@next-core/http",[1,1,0,0],(()=>y.e(1303).then((()=>()=>y(7067))))),2484:()=>p("default","react-dom",[6,0,0,0,,"experimental-ee8509801-20230117"],(()=>y.e(8316).then((()=>()=>y(8316))))),9751:()=>h("default","@next-core/http",[1,1,0,6],(()=>y.e(1303).then((()=>()=>y(7067))))),9077:()=>h("default","@next-core/i18n/react",[1,1,0,31],(()=>Promise.all([y.e(5887),y.e(5636)]).then((()=>()=>y(5636))))),9784:()=>h("default","@next-core/easyops-runtime",[2,0,6,54],(()=>Promise.all([y.e(9102),y.e(2413),y.e(1618),y.e(4606),y.e(6381),y.e(9169)]).then((()=>()=>y(9102))))),8353:()=>h("default","history",[1,4,7,11],(()=>y.e(2024).then((()=>()=>y(2024))))),5872:()=>h("default","moment",[1,2,27,0],(()=>Promise.all([y.e(8008),y.e(7915)]).then((()=>()=>y(9034))))),5899:()=>h("default","js-yaml",[1,3,14,0],(()=>y.e(9431).then((()=>()=>y(9431))))),8242:()=>h("default","@babel/parser",[1,7,23,0],(()=>y.e(1874).then((()=>()=>y(1874))))),1618:()=>h("default","@next-core/pipes",[1,2,0,12],(()=>y.e(4275).then((()=>()=>y(4275))))),4606:()=>h("default","@next-core/cook",[1,2,2,8],(()=>Promise.all([y.e(5151),y.e(8242)]).then((()=>()=>y(5151))))),371:()=>h("default","@next-core/utils/storyboard",[1,1,6,3],(()=>y.e(8691).then((()=>()=>y(3458))))),5121:()=>h("default","@next-core/http",[1,1,1,5],(()=>y.e(9407).then((()=>()=>y(7067))))),9169:()=>h("default","js-yaml",[1,3,14,1],(()=>y.e(9431).then((()=>()=>y(9431))))),1949:()=>h("default","react-i18next",[1,13,3,1],(()=>Promise.all([y.e(8588),y.e(8657)]).then((()=>()=>y(8588))))),6473:()=>h("default","i18next-browser-languagedetector",[1,7,1,0],(()=>y.e(443).then((()=>()=>y(443))))),6855:()=>h("default","i18next",[1,23,6,0],(()=>y.e(4991).then((()=>()=>y(4991))))),3100:()=>h("default","@easyops-cn/brick-next-pipes",[2,0,5,0],(()=>Promise.all([y.e(4031),y.e(5178),y.e(7910)]).then((()=>()=>y(4031))))),8874:()=>h("default","moment",[1,2,29,4],(()=>Promise.all([y.e(8008),y.e(7915)]).then((()=>()=>y(9034))))),575:()=>h("default","@next-core/inject",[1,1,0,22],(()=>Promise.all([y.e(1618),y.e(5725)]).then((()=>()=>y(7672))))),4153:()=>h("default","@next-core/loader",[1,1,4,4],(()=>y.e(6653).then((()=>()=>y(8498))))),7857:()=>h("default","history",[1,4,10,1],(()=>y.e(5326).then((()=>()=>y(2024))))),8525:()=>h("default","moment/locale/zh-cn.js",[1,2,29,4],(()=>Promise.all([y.e(8008),y.e(7915)]).then((()=>()=>y(7414))))),8640:()=>h("default","@next-core/supply",[1,2,1,7],(()=>Promise.all([y.e(1618),y.e(6473)]).then((()=>()=>y(4049)))))},v={327:[8353],777:[777],1618:[1618],2413:[2413],2484:[2484],3352:[3352],4117:[2230,4511],4275:[3100],4298:[575,4153,7857,8525,8640],4606:[4606],5178:[5178],5366:[5366],5636:[1949],5887:[5887],6040:[6473,6855],6381:[371,5121],7910:[5872,5899],8242:[8242],8657:[8657],8874:[8874],9077:[9077],9169:[9169],9751:[9751],9784:[9784]},y.f.consumes=(e,t)=>{y.o(v,e)&&v[e].forEach((e=>{if(y.o(m,e))return t.push(m[e]);var r=t=>{m[e]=0,y.m[e]=r=>{delete y.c[e],r.exports=t()}},n=t=>{delete m[e],y.m[e]=r=>{throw delete y.c[e],t}};try{var a=b[e]();a.then?t.push(m[e]=a.then(r).catch(n)):r(a)}catch(e){n(e)}}))},(()=>{y.b=document.baseURI||self.location.href;var e={179:0};y.f.j=(t,r)=>{var n=y.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else if(/^(24(13|84)|4(117|298|606)|5(178|366|887)|8(242|657|874)|9(077|169|751|784)|1618|3352|6040|6381|777|7910)$/.test(t))e[t]=0;else{var a=new Promise(((r,a)=>n=e[t]=[r,a]));r.push(n[2]=a);var o=y.p+y.u(t),l=new Error;y.l(o,(r=>{if(y.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var a=r&&("load"===r.type?"missing":r.type),o=r&&r.target&&r.target.src;l.message="Loading chunk "+t+" failed.\n("+a+": "+o+")",l.name="ChunkLoadError",l.type=a,l.request=o,n[1](l)}}),"chunk-"+t,t)}};var t=(t,r)=>{var n,a,[o,l,i]=r,c=0;if(o.some((t=>0!==e[t]))){for(n in l)y.o(l,n)&&(y.m[n]=l[n]);i&&i(y)}for(t&&t(r);c<o.length;c++)a=o[c],y.o(e,a)&&e[a]&&e[a][0](),e[a]=0},r=self.webpackChunk_next_bricks_nav=self.webpackChunk_next_bricks_nav||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),y.nc=void 0,y(8691)})();
2
- //# sourceMappingURL=main.8870af34.js.map
1
+ (()=>{var e,t,r,n,a,o,l,i,c,f,s,d,u,h,p,m,b,v,x={8691:(e,t,r)=>{Promise.all([r.e(2167),r.e(1494),r.e(5178),r.e(2413),r.e(8657),r.e(5887),r.e(777),r.e(5366),r.e(4117),r.e(3352),r.e(2484),r.e(9751),r.e(9077),r.e(9784),r.e(6482),r.e(9816),r.e(327),r.e(8142)]).then(r.bind(r,8142))}},g={};function y(e){var t=g[e];if(void 0!==t)return t.exports;var r=g[e]={id:e,loaded:!1,exports:{}};return x[e].call(r.exports,r,r.exports,y),r.loaded=!0,r.exports}y.m=x,y.c=g,y.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return y.d(t,{a:t}),t},y.d=(e,t)=>{for(var r in t)y.o(t,r)&&!y.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},y.f={},y.e=e=>Promise.all(Object.keys(y.f).reduce(((t,r)=>(y.f[r](e,t),t)),[])),y.u=e=>"chunks/"+e+"."+{327:"f17de4ee",443:"9810e710",777:"495ac6c8",1303:"f8781f1e",1494:"c531a091",1618:"fd77bd7d",1646:"7c501d74",1874:"b69e31f2",2024:"3653c941",2108:"68cb4c94",2167:"b20aa2c9",2413:"c9762485",2484:"b3514a0b",2784:"f1276a06",3352:"f89c5f20",3458:"dd56c7ea",4031:"a902777f",4049:"4c9aff4f",4117:"ffab7f91",4275:"1fd8ecf3",4298:"5b9e41f7",4443:"d435144a",4606:"178582d3",4991:"f8554fea",5151:"45d065f2",5178:"da183645",5326:"42956a9e",5366:"9ed599fb",5628:"235df3e7",5636:"b601815d",5725:"8725fd32",5887:"4ef65101",6040:"110793fe",6051:"370b2d16",6205:"b0250234",6381:"d43f8781",6473:"7d38bacb",6482:"559d003d",6522:"6e6d5322",6635:"0db0281d",6653:"fad842d4",7067:"0cebc199",7110:"fd016bb6",7164:"f4a731b7",7672:"eca8f2b6",7746:"626d61c6",7910:"91c6d3d0",7915:"4ed2483c",8008:"cfc9964b",8142:"4129ad4a",8242:"a58f0e60",8316:"5124d566",8498:"a733d4eb",8588:"e57d8469",8657:"a43ca9e0",8691:"179e33b1",8874:"04a8c54f",9077:"f66ea4d3",9102:"9235ccd8",9169:"4e206797",9407:"835ea347",9431:"29d63767",9549:"53937b60",9751:"80694e92",9784:"89ebad04",9816:"6982784e"}[e]+".js",y.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),y.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="@next-bricks/nav:",y.l=(r,n,a,o)=>{if(e[r])e[r].push(n);else{var l,i;if(void 0!==a)for(var c=document.getElementsByTagName("script"),f=0;f<c.length;f++){var s=c[f];if(s.getAttribute("src")==r||s.getAttribute("data-webpack")==t+a){l=s;break}}l||(i=!0,(l=document.createElement("script")).charset="utf-8",l.timeout=120,y.nc&&l.setAttribute("nonce",y.nc),l.setAttribute("data-webpack",t+a),l.src=r),e[r]=[n];var d=(t,n)=>{l.onerror=l.onload=null,clearTimeout(u);var a=e[r];if(delete e[r],l.parentNode&&l.parentNode.removeChild(l),a&&a.forEach((e=>e(n))),t)return t(n)},u=setTimeout(d.bind(null,void 0,{type:"timeout",target:l}),12e4);l.onerror=d.bind(null,l.onerror),l.onload=d.bind(null,l.onload),i&&document.head.appendChild(l)}},y.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},y.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{y.S={};var e={},t={};y.I=(r,n)=>{n||(n=[]);var a=t[r];if(a||(a=t[r]={}),!(n.indexOf(a)>=0)){if(n.push(a),e[r])return e[r];y.o(y.S,r)||(y.S[r]={});var o=y.S[r],l="@next-bricks/nav",i=(e,t,r,n)=>{var a=o[e]=o[e]||{},i=a[t];(!i||!i.loaded&&(!n!=!i.eager?n:l>i.from))&&(a[t]={get:r,from:l,eager:!!n})},c=[];return"default"===r&&(i("@babel/parser","7.23.0",(()=>y.e(1874).then((()=>()=>y(1874))))),i("@easyops-cn/brick-next-pipes","0.5.0",(()=>Promise.all([y.e(4031),y.e(5178),y.e(7910)]).then((()=>()=>y(4031))))),i("@next-core/cook","2.2.8",(()=>Promise.all([y.e(5151),y.e(8242)]).then((()=>()=>y(5151))))),i("@next-core/easyops-runtime","0.6.54",(()=>Promise.all([y.e(9102),y.e(5178),y.e(2413),y.e(5887),y.e(777),y.e(1618),y.e(3352),y.e(4606),y.e(6381),y.e(9751),y.e(9169),y.e(4443)]).then((()=>()=>y(9102))))),i("@next-core/element","1.1.6",(()=>y.e(9549).then((()=>()=>y(9549))))),i("@next-core/http","1.1.5",(()=>y.e(7067).then((()=>()=>y(7067))))),i("@next-core/i18n/react","1.0.31",(()=>Promise.all([y.e(5887),y.e(5636)]).then((()=>()=>y(5636))))),i("@next-core/i18n","1.0.31",(()=>Promise.all([y.e(2413),y.e(5887),y.e(6040),y.e(7164)]).then((()=>()=>y(7164))))),i("@next-core/inject","1.0.22",(()=>Promise.all([y.e(5178),y.e(1618),y.e(7672)]).then((()=>()=>y(7672))))),i("@next-core/loader","1.4.4",(()=>y.e(8498).then((()=>()=>y(8498))))),i("@next-core/pipes","2.0.12",(()=>y.e(4275).then((()=>()=>y(4275))))),i("@next-core/react-element","1.0.16",(()=>Promise.all([y.e(8657),y.e(5366),y.e(2484),y.e(1646)]).then((()=>()=>y(1646))))),i("@next-core/runtime","1.25.6",(()=>Promise.all([y.e(6051),y.e(5178),y.e(2413),y.e(5887),y.e(4606),y.e(6381),y.e(8874),y.e(4298),y.e(6522)]).then((()=>()=>y(6051))))),i("@next-core/supply","2.1.7",(()=>Promise.all([y.e(5178),y.e(1618),y.e(8874),y.e(4049)]).then((()=>()=>y(4049))))),i("@next-core/theme","1.4.1",(()=>Promise.all([y.e(2108),y.e(5628)]).then((()=>()=>y(2108))))),i("@next-core/utils/general","1.6.3",(()=>y.e(7110).then((()=>()=>y(7110))))),i("@next-core/utils/storyboard","1.6.3",(()=>Promise.all([y.e(2413),y.e(4606),y.e(3458)]).then((()=>()=>y(3458))))),i("history","4.10.1",(()=>y.e(5326).then((()=>()=>y(2024))))),i("i18next-browser-languagedetector","7.1.0",(()=>y.e(443).then((()=>()=>y(443))))),i("i18next","23.6.0",(()=>y.e(4991).then((()=>()=>y(4991))))),i("js-yaml","3.14.1",(()=>y.e(9431).then((()=>()=>y(9431))))),i("lodash","4.17.21",(()=>y.e(6635).then((()=>()=>y(6635))))),i("moment/locale/zh-cn.js","2.29.4",(()=>Promise.all([y.e(8008),y.e(7915)]).then((()=>()=>y(7414))))),i("moment","2.29.4",(()=>Promise.all([y.e(8008),y.e(7915)]).then((()=>()=>y(9034))))),i("react-dom","0.0.0-experimental-ee8509801-20230117",(()=>Promise.all([y.e(8316),y.e(8657)]).then((()=>()=>y(8316))))),i("react-i18next","13.3.1",(()=>Promise.all([y.e(8588),y.e(8657)]).then((()=>()=>y(8588))))),i("react","0.0.0-experimental-ee8509801-20230117",(()=>y.e(2784).then((()=>()=>y(2784)))))),e[r]=c.length?Promise.all(c).then((()=>e[r]=1)):1}}})(),(()=>{var e;y.g.importScripts&&(e=y.g.location+"");var t=y.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");if(r.length)for(var n=r.length-1;n>-1&&!e;)e=r[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),y.p=e+"../"})(),r=e=>{var t=e=>e.split(".").map((e=>+e==e?+e:e)),r=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),n=r[1]?t(r[1]):[];return r[2]&&(n.length++,n.push.apply(n,t(r[2]))),r[3]&&(n.push([]),n.push.apply(n,t(r[3]))),n},n=(e,t)=>{e=r(e),t=r(t);for(var n=0;;){if(n>=e.length)return n<t.length&&"u"!=(typeof t[n])[0];var a=e[n],o=(typeof a)[0];if(n>=t.length)return"u"==o;var l=t[n],i=(typeof l)[0];if(o!=i)return"o"==o&&"n"==i||"s"==i||"u"==o;if("o"!=o&&"u"!=o&&a!=l)return a<l;n++}},a=e=>{var t=e[0],r="";if(1===e.length)return"*";if(t+.5){r+=0==t?">=":-1==t?"<":1==t?"^":2==t?"~":t>0?"=":"!=";for(var n=1,o=1;o<e.length;o++)n--,r+="u"==(typeof(i=e[o]))[0]?"-":(n>0?".":"")+(n=2,i);return r}var l=[];for(o=1;o<e.length;o++){var i=e[o];l.push(0===i?"not("+c()+")":1===i?"("+c()+" || "+c()+")":2===i?l.pop()+" "+l.pop():a(i))}return c();function c(){return l.pop().replace(/^\((.+)\)$/,"$1")}},o=(e,t)=>{if(0 in e){t=r(t);var n=e[0],a=n<0;a&&(n=-n-1);for(var l=0,i=1,c=!0;;i++,l++){var f,s,d=i<e.length?(typeof e[i])[0]:"";if(l>=t.length||"o"==(s=(typeof(f=t[l]))[0]))return!c||("u"==d?i>n&&!a:""==d!=a);if("u"==s){if(!c||"u"!=d)return!1}else if(c)if(d==s)if(i<=n){if(f!=e[i])return!1}else{if(a?f>e[i]:f<e[i])return!1;f!=e[i]&&(c=!1)}else if("s"!=d&&"n"!=d){if(a||i<=n)return!1;c=!1,i--}else{if(i<=n||s<d!=a)return!1;c=!1}else"s"!=d&&"n"!=d&&(c=!1,i--)}}var u=[],h=u.pop.bind(u);for(l=1;l<e.length;l++){var p=e[l];u.push(1==p?h()|h():2==p?h()&h():p?o(p,t):!h())}return!!h()},l=(e,t)=>{var r=e[t];return Object.keys(r).reduce(((e,t)=>!e||!r[e].loaded&&n(e,t)?t:e),0)},i=(e,t,r,n)=>"Unsatisfied version "+r+" from "+(r&&e[t][r].from)+" of shared singleton module "+t+" (required "+a(n)+")",c=(e,t,r,n)=>{var a=l(e,r);return o(n,a)||s(i(e,r,a,n)),d(e[r][a])},f=(e,t,r)=>{var a=e[t];return(t=Object.keys(a).reduce(((e,t)=>!o(r,t)||e&&!n(e,t)?e:t),0))&&a[t]},s=e=>{"undefined"!=typeof console&&console.warn&&console.warn(e)},d=e=>(e.loaded=1,e.get()),h=(u=e=>function(t,r,n,a){var o=y.I(t);return o&&o.then?o.then(e.bind(e,t,y.S[t],r,n,a)):e(t,y.S[t],r,n,a)})(((e,t,r,n,a)=>t&&y.o(t,r)?c(t,0,r,n):a())),p=u(((e,t,r,n,a)=>{var o=t&&y.o(t,r)&&f(t,r,n);return o?d(o):a()})),m={},b={5178:()=>h("default","lodash",[1,4,17,21],(()=>y.e(6635).then((()=>()=>y(6635))))),2413:()=>h("default","@next-core/utils/general",[1,1,6,3],(()=>y.e(7110).then((()=>()=>y(7110))))),8657:()=>p("default","react",[6,0,0,0,,"experimental-ee8509801-20230117"],(()=>y.e(2784).then((()=>()=>y(2784))))),5887:()=>h("default","@next-core/i18n",[1,1,0,31],(()=>Promise.all([y.e(2413),y.e(6040),y.e(6205)]).then((()=>()=>y(7164))))),777:()=>h("default","@next-core/runtime",[1,1,25,6],(()=>Promise.all([y.e(6051),y.e(2413),y.e(5887),y.e(4606),y.e(6381),y.e(8874),y.e(4298)]).then((()=>()=>y(6051))))),5366:()=>p("default","@next-core/element",[1,1,1,6],(()=>y.e(9549).then((()=>()=>y(9549))))),2230:()=>h("default","@next-core/theme",[1,1,4,1],(()=>y.e(2108).then((()=>()=>y(2108))))),4511:()=>p("default","@next-core/react-element",[1,1,0,16],(()=>Promise.all([y.e(2484),y.e(7746)]).then((()=>()=>y(1646))))),3352:()=>h("default","@next-core/http",[1,1,0,0],(()=>y.e(1303).then((()=>()=>y(7067))))),2484:()=>p("default","react-dom",[6,0,0,0,,"experimental-ee8509801-20230117"],(()=>y.e(8316).then((()=>()=>y(8316))))),9751:()=>h("default","@next-core/http",[1,1,0,6],(()=>y.e(1303).then((()=>()=>y(7067))))),9077:()=>h("default","@next-core/i18n/react",[1,1,0,31],(()=>Promise.all([y.e(5887),y.e(5636)]).then((()=>()=>y(5636))))),9784:()=>h("default","@next-core/easyops-runtime",[2,0,6,54],(()=>Promise.all([y.e(9102),y.e(2413),y.e(1618),y.e(4606),y.e(6381),y.e(9169)]).then((()=>()=>y(9102))))),8353:()=>h("default","history",[1,4,7,11],(()=>y.e(2024).then((()=>()=>y(2024))))),5872:()=>h("default","moment",[1,2,27,0],(()=>Promise.all([y.e(8008),y.e(7915)]).then((()=>()=>y(9034))))),5899:()=>h("default","js-yaml",[1,3,14,0],(()=>y.e(9431).then((()=>()=>y(9431))))),8242:()=>h("default","@babel/parser",[1,7,23,0],(()=>y.e(1874).then((()=>()=>y(1874))))),1618:()=>h("default","@next-core/pipes",[1,2,0,12],(()=>y.e(4275).then((()=>()=>y(4275))))),4606:()=>h("default","@next-core/cook",[1,2,2,8],(()=>Promise.all([y.e(5151),y.e(8242)]).then((()=>()=>y(5151))))),371:()=>h("default","@next-core/utils/storyboard",[1,1,6,3],(()=>y.e(8691).then((()=>()=>y(3458))))),5121:()=>h("default","@next-core/http",[1,1,1,5],(()=>y.e(9407).then((()=>()=>y(7067))))),9169:()=>h("default","js-yaml",[1,3,14,1],(()=>y.e(9431).then((()=>()=>y(9431))))),1949:()=>h("default","react-i18next",[1,13,3,1],(()=>Promise.all([y.e(8588),y.e(8657)]).then((()=>()=>y(8588))))),6473:()=>h("default","i18next-browser-languagedetector",[1,7,1,0],(()=>y.e(443).then((()=>()=>y(443))))),6855:()=>h("default","i18next",[1,23,6,0],(()=>y.e(4991).then((()=>()=>y(4991))))),3100:()=>h("default","@easyops-cn/brick-next-pipes",[2,0,5,0],(()=>Promise.all([y.e(4031),y.e(5178),y.e(7910)]).then((()=>()=>y(4031))))),8874:()=>h("default","moment",[1,2,29,4],(()=>Promise.all([y.e(8008),y.e(7915)]).then((()=>()=>y(9034))))),575:()=>h("default","@next-core/inject",[1,1,0,22],(()=>Promise.all([y.e(1618),y.e(5725)]).then((()=>()=>y(7672))))),4153:()=>h("default","@next-core/loader",[1,1,4,4],(()=>y.e(6653).then((()=>()=>y(8498))))),7857:()=>h("default","history",[1,4,10,1],(()=>y.e(5326).then((()=>()=>y(2024))))),8525:()=>h("default","moment/locale/zh-cn.js",[1,2,29,4],(()=>Promise.all([y.e(8008),y.e(7915)]).then((()=>()=>y(7414))))),8640:()=>h("default","@next-core/supply",[1,2,1,7],(()=>Promise.all([y.e(1618),y.e(6473)]).then((()=>()=>y(4049)))))},v={327:[8353],777:[777],1618:[1618],2413:[2413],2484:[2484],3352:[3352],4117:[2230,4511],4275:[3100],4298:[575,4153,7857,8525,8640],4606:[4606],5178:[5178],5366:[5366],5636:[1949],5887:[5887],6040:[6473,6855],6381:[371,5121],7910:[5872,5899],8242:[8242],8657:[8657],8874:[8874],9077:[9077],9169:[9169],9751:[9751],9784:[9784]},y.f.consumes=(e,t)=>{y.o(v,e)&&v[e].forEach((e=>{if(y.o(m,e))return t.push(m[e]);var r=t=>{m[e]=0,y.m[e]=r=>{delete y.c[e],r.exports=t()}},n=t=>{delete m[e],y.m[e]=r=>{throw delete y.c[e],t}};try{var a=b[e]();a.then?t.push(m[e]=a.then(r).catch(n)):r(a)}catch(e){n(e)}}))},(()=>{y.b=document.baseURI||self.location.href;var e={179:0};y.f.j=(t,r)=>{var n=y.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else if(/^(24(13|84)|4(117|298|606)|5(178|366|887)|8(242|657|874)|9(077|169|751|784)|1618|3352|6040|6381|777|7910)$/.test(t))e[t]=0;else{var a=new Promise(((r,a)=>n=e[t]=[r,a]));r.push(n[2]=a);var o=y.p+y.u(t),l=new Error;y.l(o,(r=>{if(y.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var a=r&&("load"===r.type?"missing":r.type),o=r&&r.target&&r.target.src;l.message="Loading chunk "+t+" failed.\n("+a+": "+o+")",l.name="ChunkLoadError",l.type=a,l.request=o,n[1](l)}}),"chunk-"+t,t)}};var t=(t,r)=>{var n,a,[o,l,i]=r,c=0;if(o.some((t=>0!==e[t]))){for(n in l)y.o(l,n)&&(y.m[n]=l[n]);i&&i(y)}for(t&&t(r);c<o.length;c++)a=o[c],y.o(e,a)&&e[a]&&e[a][0](),e[a]=0},r=self.webpackChunk_next_bricks_nav=self.webpackChunk_next_bricks_nav||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),y.nc=void 0,y(8691)})();
2
+ //# sourceMappingURL=main.f1f0361c.js.map