@next-bricks/nav 0.5.6 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/dist/bricks.json +15 -10
  2. package/dist/chunks/1009.404bb115.js +2 -0
  3. package/dist/chunks/1009.404bb115.js.map +1 -0
  4. package/dist/chunks/2108.f48fcbb9.js +2 -0
  5. package/dist/chunks/2108.f48fcbb9.js.map +1 -0
  6. package/dist/chunks/2167.0233006f.js +3 -0
  7. package/dist/chunks/{2167.b20aa2c9.js.map → 2167.0233006f.js.map} +1 -1
  8. package/dist/chunks/327.031cd968.js +3 -0
  9. package/dist/chunks/{327.f17de4ee.js.map → 327.031cd968.js.map} +1 -1
  10. package/dist/chunks/{3458.dd56c7ea.js → 3458.4b14e915.js} +2 -2
  11. package/dist/chunks/{3458.dd56c7ea.js.map → 3458.4b14e915.js.map} +1 -1
  12. package/dist/chunks/5381.0a41a7b8.js +2 -0
  13. package/dist/chunks/5381.0a41a7b8.js.map +1 -0
  14. package/dist/chunks/{5636.b601815d.js → 5636.f459177e.js} +2 -2
  15. package/dist/chunks/{5636.b601815d.js.map → 5636.f459177e.js.map} +1 -1
  16. package/dist/chunks/6051.2ad62d04.js +2 -0
  17. package/dist/chunks/6051.2ad62d04.js.map +1 -0
  18. package/dist/chunks/{6205.b0250234.js → 6205.51468edb.js} +2 -2
  19. package/dist/chunks/{6205.b0250234.js.map → 6205.51468edb.js.map} +1 -1
  20. package/dist/chunks/6482.f89e901b.js +2 -0
  21. package/dist/chunks/{6482.559d003d.js.map → 6482.f89e901b.js.map} +1 -1
  22. package/dist/chunks/6660.294b8fc3.js +2 -0
  23. package/dist/chunks/6660.294b8fc3.js.map +1 -0
  24. package/dist/chunks/7067.dd6597ad.js +2 -0
  25. package/dist/chunks/{7067.0cebc199.js.map → 7067.dd6597ad.js.map} +1 -1
  26. package/dist/chunks/7110.ab1880c8.js +2 -0
  27. package/dist/chunks/7110.ab1880c8.js.map +1 -0
  28. package/dist/chunks/{7164.f4a731b7.js → 7164.3580a05f.js} +2 -2
  29. package/dist/chunks/{7164.f4a731b7.js.map → 7164.3580a05f.js.map} +1 -1
  30. package/dist/chunks/7746.6dc70441.js +2 -0
  31. package/dist/chunks/7746.6dc70441.js.map +1 -0
  32. package/dist/chunks/8498.5cb1636e.js +2 -0
  33. package/dist/chunks/{8498.a733d4eb.js.map → 8498.5cb1636e.js.map} +1 -1
  34. package/dist/chunks/{8691.179e33b1.js → 8691.533db233.js} +2 -2
  35. package/dist/chunks/{8691.179e33b1.js.map → 8691.533db233.js.map} +1 -1
  36. package/dist/chunks/9102.e9d4952e.js +3 -0
  37. package/dist/chunks/9102.e9d4952e.js.map +1 -0
  38. package/dist/chunks/9816.8cea5f76.js +3 -0
  39. package/dist/chunks/{9816.8b4236ff.js.map → 9816.8cea5f76.js.map} +1 -1
  40. package/dist/chunks/easyops-navbar-alerts.c0bec48c.js +2 -0
  41. package/dist/chunks/easyops-navbar-alerts.c0bec48c.js.map +1 -0
  42. package/dist/chunks/eo-launchpad-button-v2.5f256b20.js +2 -0
  43. package/dist/chunks/{eo-launchpad-button-v2.75648e36.js.map → eo-launchpad-button-v2.5f256b20.js.map} +1 -1
  44. package/dist/chunks/{eo-launchpad-button.5e4a1b39.js → eo-launchpad-button.8103d9bc.js} +2 -2
  45. package/dist/chunks/{eo-launchpad-button.5e4a1b39.js.map → eo-launchpad-button.8103d9bc.js.map} +1 -1
  46. package/dist/chunks/eo-nav-menu.c83e8b62.js +3 -0
  47. package/dist/chunks/{eo-nav-menu.ba307647.js.map → eo-nav-menu.c83e8b62.js.map} +1 -1
  48. package/dist/chunks/launchpad-config.d5fed70f.js +3 -0
  49. package/dist/chunks/{launchpad-config.f68804a5.js.map → launchpad-config.d5fed70f.js.map} +1 -1
  50. package/dist/chunks/main.c411ff68.js +2 -0
  51. package/dist/chunks/main.c411ff68.js.map +1 -0
  52. package/dist/index.e359d223.js +2 -0
  53. package/dist/index.e359d223.js.map +1 -0
  54. package/dist/manifest.json +27 -18
  55. package/dist/types.json +5 -0
  56. package/dist-types/bootstrap.d.ts +1 -0
  57. package/dist-types/easyops-navbar-alerts/index.d.ts +14 -0
  58. package/dist-types/easyops-navbar-alerts/index.spec.d.ts +1 -0
  59. package/package.json +8 -3
  60. package/dist/chunks/2108.68cb4c94.js +0 -2
  61. package/dist/chunks/2108.68cb4c94.js.map +0 -1
  62. package/dist/chunks/2167.b20aa2c9.js +0 -3
  63. package/dist/chunks/327.f17de4ee.js +0 -3
  64. package/dist/chunks/4443.d435144a.js +0 -2
  65. package/dist/chunks/4443.d435144a.js.map +0 -1
  66. package/dist/chunks/6051.370b2d16.js +0 -2
  67. package/dist/chunks/6051.370b2d16.js.map +0 -1
  68. package/dist/chunks/6482.559d003d.js +0 -2
  69. package/dist/chunks/7067.0cebc199.js +0 -2
  70. package/dist/chunks/7110.fd016bb6.js +0 -2
  71. package/dist/chunks/7110.fd016bb6.js.map +0 -1
  72. package/dist/chunks/7746.626d61c6.js +0 -2
  73. package/dist/chunks/7746.626d61c6.js.map +0 -1
  74. package/dist/chunks/8142.ba46baeb.js +0 -2
  75. package/dist/chunks/8142.ba46baeb.js.map +0 -1
  76. package/dist/chunks/8498.a733d4eb.js +0 -2
  77. package/dist/chunks/9102.9235ccd8.js +0 -3
  78. package/dist/chunks/9102.9235ccd8.js.map +0 -1
  79. package/dist/chunks/9816.8b4236ff.js +0 -3
  80. package/dist/chunks/eo-launchpad-button-v2.75648e36.js +0 -2
  81. package/dist/chunks/eo-nav-menu.ba307647.js +0 -3
  82. package/dist/chunks/launchpad-config.f68804a5.js +0 -3
  83. package/dist/chunks/main.df455617.js +0 -2
  84. package/dist/chunks/main.df455617.js.map +0 -1
  85. package/dist/index.2e29ee6a.js +0 -2
  86. package/dist/index.2e29ee6a.js.map +0 -1
  87. /package/dist/chunks/{2167.b20aa2c9.js.LICENSE.txt → 2167.0233006f.js.LICENSE.txt} +0 -0
  88. /package/dist/chunks/{327.f17de4ee.js.LICENSE.txt → 327.031cd968.js.LICENSE.txt} +0 -0
  89. /package/dist/chunks/{9102.9235ccd8.js.LICENSE.txt → 9102.e9d4952e.js.LICENSE.txt} +0 -0
  90. /package/dist/chunks/{9816.8b4236ff.js.LICENSE.txt → 9816.8cea5f76.js.LICENSE.txt} +0 -0
  91. /package/dist/chunks/{eo-nav-menu.ba307647.js.LICENSE.txt → eo-nav-menu.c83e8b62.js.LICENSE.txt} +0 -0
  92. /package/dist/chunks/{launchpad-config.f68804a5.js.LICENSE.txt → launchpad-config.d5fed70f.js.LICENSE.txt} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"chunks/9816.8b4236ff.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 {...(item.menuIcon?.lib && item.menuIcon.icon\n ? (pick(item.menuIcon, [\n \"lib\",\n \"icon\",\n \"theme\",\n \"category\",\n \"prefix\",\n ]) as any)\n : null)}\n />\n <span className=\"menu-item-label\">{item.name}</span>\n </WrappedLink>\n <WrappedIcon\n lib=\"fa\"\n prefix={starred ? \"fas\" : \"far\"}\n icon=\"star\"\n className=\"menu-item-star\"\n title={starred ? \"取消收藏\" : \"收藏\"}\n onClick={handleStarClick}\n />\n </li>\n );\n}\n\nexport interface SidebarMenuItemProps {\n item: SidebarMenuItemData;\n}\n\nexport function SidebarMenuItem({ item }: SidebarMenuItemProps) {\n const { pushRecentVisit, toggleStar } = useLaunchpadContext();\n\n const handleClick = useCallback(() => {\n if (item.type !== \"link\") {\n pushRecentVisit(item);\n }\n }, [item, pushRecentVisit]);\n\n const handleRemoveStar = useCallback(() => {\n toggleStar(item);\n }, [item, toggleStar]);\n\n return (\n <li className=\"sidebar-menu-item\">\n <WrappedLink\n onClick={handleClick}\n {...(item.type === \"app\"\n ? {\n url: item.url,\n }\n : {\n href: item.url,\n target: \"_blank\",\n })}\n >\n <WrappedIcon\n className={`sidebar-menu-icon`}\n lib=\"easyops\"\n icon=\"micro-app-center\"\n {...(item.menuIcon?.lib && item.menuIcon.icon\n ? (pick(item.menuIcon, [\n \"lib\",\n \"icon\",\n \"theme\",\n \"category\",\n \"prefix\",\n ]) as any)\n : null)}\n />\n <span className=\"menu-item-label\">{item.name}</span>\n </WrappedLink>\n <WrappedIcon\n lib=\"fa\"\n icon=\"xmark\"\n className=\"menu-item-remove\"\n onClick={handleRemoveStar}\n />\n </li>\n );\n}\n\nexport interface MenuItemFolderProps {\n name: string;\n items: MenuItemDataNormal[];\n}\n\nfunction MenuItemFolder({ name, items }: MenuItemFolderProps) {\n const { searching } = useLaunchpadContext();\n const [expanded, setExpanded] = useState(false);\n const [searchingExpanded, setSearchingExpanded] = useState(false);\n\n const toggle = useCallback(() => {\n // Use separated expanded states for searching and non-searching.\n if (searching) {\n setSearchingExpanded((previous) => !previous);\n } else {\n setExpanded((previous) => !previous);\n }\n }, [searching]);\n\n useEffect(() => {\n // Each time when start searching, set it as expanded.\n setSearchingExpanded(true);\n }, [searching]);\n\n const actualExpanded = searching ? searchingExpanded : expanded;\n\n return (\n <li className=\"menu-item folder\">\n <WrappedLink onClick={toggle}>\n <WrappedIcon\n lib=\"fa\"\n prefix=\"far\"\n icon=\"folder-open\"\n className=\"menu-icon\"\n />\n <span className=\"menu-item-label\">{name}</span>\n <WrappedIcon\n lib=\"antd\"\n icon={actualExpanded ? \"up\" : \"down\"}\n className=\"menu-item-toggle\"\n />\n </WrappedLink>\n <ul className={classNames(\"sub-menu\", { expanded: actualExpanded })}>\n {items.map((item) => (\n <MenuItem key={`${item.type}-${item.id}`} item={item} />\n ))}\n </ul>\n </li>\n );\n}\n","import React, { useCallback, useRef } from \"react\";\nimport classNames from \"classnames\";\nimport { WrappedIcon, WrappedLink } from \"./wrapped-bricks\";\nimport { useLaunchpadInfo } from \"./useLaunchpadInfo.js\";\nimport { MenuGroup, SidebarMenuItem } from \"./MenuGroup.js\";\nimport { LaunchpadsContext } from \"./LaunchpadContext.js\";\nimport { SidebarMenuItemData } from \"./interfaces\";\n\nexport function Launchpad({ active }: { active?: boolean }) {\n const searchInputRef = useRef<HTMLInputElement>(null);\n const handleClickSearchBox = useCallback(() => {\n searchInputRef.current?.focus();\n }, []);\n\n const {\n loading,\n q,\n setQ,\n menuGroups,\n favorites,\n loadingFavorites,\n recentVisits,\n pushRecentVisit,\n toggleStar,\n isStarred,\n } = useLaunchpadInfo(active);\n const searching = !!q;\n\n const handleSearch = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setQ(e.target.value);\n },\n [setQ]\n );\n\n const clearSearch = useCallback(() => {\n setQ(\"\");\n }, [setQ]);\n\n return (\n <div className={classNames(\"launchpad\", { active })}>\n <LaunchpadsContext.Provider\n value={{\n searching,\n loadingFavorites,\n pushRecentVisit,\n toggleStar,\n isStarred,\n }}\n >\n <div className=\"sidebar\">\n <div className=\"quick-nav\">\n <div className=\"quick-nav-label\">快捷访问</div>\n {/* <Loading loading={loading || loadingFavorites} /> */}\n <ul className=\"sidebar-menu\">\n {favorites.map((item, index) => (\n <SidebarMenuItem\n key={index}\n item={item as SidebarMenuItemData}\n />\n ))}\n </ul>\n </div>\n </div>\n <div className={classNames(\"content\", { loading })}>\n <Loading loading={loading} />\n <div className=\"search-box\" onClick={handleClickSearchBox}>\n <WrappedIcon\n lib=\"fa\"\n icon=\"magnifying-glass\"\n className=\"search-icon\"\n />\n <input\n ref={searchInputRef}\n placeholder=\"通过关键字搜索\"\n value={q}\n onChange={handleSearch}\n className=\"search-input\"\n />\n <WrappedIcon\n lib=\"antd\"\n theme=\"filled\"\n icon=\"close-circle\"\n className={classNames(\"search-clear\", { searching })}\n onClick={clearSearch}\n />\n </div>\n <div className={classNames({ empty: recentVisits.length === 0 })}>\n <div className=\"recent-visits-label\">最近访问</div>\n <ul className=\"recent-visits\">\n {recentVisits.map((item, index) => (\n <li key={index}>\n <WrappedLink\n onClick={() => pushRecentVisit(item)}\n {...(item.type === \"app\"\n ? {\n url: item.url,\n }\n : {\n href: item.url,\n target: \"_blank\",\n })}\n >\n <span>{item.name}</span>\n </WrappedLink>\n </li>\n ))}\n </ul>\n </div>\n <ul className=\"menu-groups\">\n {menuGroups.map((group) => (\n <MenuGroup\n key={group.name}\n name={group.name}\n items={group.items}\n />\n ))}\n </ul>\n </div>\n </LaunchpadsContext.Provider>\n </div>\n );\n}\n\nfunction Loading({ loading }: { loading: boolean }) {\n return (\n loading && (\n <div className=\"spinner\">\n <WrappedIcon lib=\"fa\" icon=\"spinner\" spinning />\n </div>\n )\n );\n}\n","import _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 { handleHttpError, httpErrorToString } from \"@next-core/runtime\";\nimport { auth } from \"@next-core/easyops-runtime\";\nimport { JsonStorage } from \"@next-shared/general/JsonStorage\";\nimport { DeferredService } from \"../shared/DeferredService\";\nimport { showDialog, showNotification } from \"./wrapped-bricks\";\nimport type {\n FavMenuItem,\n MenuGroupData,\n MenuItemDataCustom,\n MenuItemDataLink,\n MenuItemDataNormal,\n MicroAppWithInstanceId,\n StoredMenuItem,\n} from \"./interfaces\";\nimport {\n favorite,\n fetchFavorites,\n fetchLaunchpadInfo,\n undoFavorite,\n} from \"./api\";\nimport { search } from \"./search\";\nimport { FAVORITES_LIMIT, RECENT_VISITS_LIMIT } from \"./constants\";\n\nconst storageKey = `launchpad-recent-visits:${(\n auth.getAuth() as Record<string, string>\n)?.org}`;\nconst storage = new JsonStorage(localStorage);\n\nlet candidateDesktops: MenuGroupData[] = [];\nlet candidateMicroAppsById = new Map<string, MicroAppWithInstanceId>();\nlet candidateCustomLinksById = new Map<string, MenuItemDataCustom>();\nlet preLoaded = false;\n\nlet candidateFavorites: FavMenuItem[] = [];\nlet preLoadedFavorites = false;\n\nexport const deferredLaunchpadInfo = new DeferredService(async () => {\n ({\n menuGroups: candidateDesktops,\n microAppsById: candidateMicroAppsById,\n customLinksById: candidateCustomLinksById,\n } = await fetchLaunchpadInfo());\n preLoaded = true;\n});\n\nexport const deferredFavorites = new DeferredService(async () => {\n candidateFavorites = await fetchFavorites();\n preLoadedFavorites = true;\n});\n\nconst showErrorAsNotification = (error: unknown) =>\n showNotification({\n type: \"error\",\n message: httpErrorToString(error),\n });\n\n/**\n * - 页面初始化时预加载 launchpad 信息。\n * - 每次打开 launchpad 都发起请求,但该请求的数据只在下次打开 launchpad 时使用。\n * 即每次打开 launchpad 使用的都是上一次获取的数据,以便达到两个效果:\n * - 每次打开 launchpad 都能立即显示菜单列表;\n * - 同时当用户在 launchpad 上操作时,不会出现数据突然更新(新数据请求完成)。\n */\nexport function useLaunchpadInfo(active?: boolean) {\n const [desktops, setDesktops] = useState(candidateDesktops);\n const [microAppsById, setMicroAppsById] = useState(candidateMicroAppsById);\n const [customLinksById, setCustomLinksById] = useState(\n candidateCustomLinksById\n );\n\n const [q, setQ] = useState(\"\");\n\n const [loading, setLoading] = useState(!preLoaded);\n const [loadingFavorites, setLoadingFavorites] = useState(!preLoadedFavorites);\n\n const [storedRecentVisits, setStoredRecentVisits] = useState<\n StoredMenuItem[]\n >([]);\n\n const [recentVisits, setRecentVisits] = useState<MenuItemDataNormal[]>([]);\n\n const [favorites, setFavorites] = useState<FavMenuItem[]>(candidateFavorites);\n\n useEffect(() => {\n // 仅当首次加载完成或重新打开 launchpad 时更新一次数据。\n if (active && !loading) {\n setDesktops(candidateDesktops);\n setMicroAppsById(candidateMicroAppsById);\n setCustomLinksById(candidateCustomLinksById);\n }\n }, [active, loading]);\n\n useEffect(() => {\n if (active && !loadingFavorites) {\n setFavorites(candidateFavorites);\n }\n }, [active, loadingFavorites]);\n\n useEffect(() => {\n if (active) {\n setStoredRecentVisits(storage.getItem(storageKey) ?? []);\n }\n }, [active]);\n\n useEffect(() => {\n if (active) {\n const startFetchLaunchpadInfo = async (): Promise<void> => {\n try {\n await deferredLaunchpadInfo.fetch();\n setLoading(false);\n } catch (error) {\n handleHttpError(error);\n }\n };\n startFetchLaunchpadInfo();\n }\n }, [active]);\n\n useEffect(() => {\n if (active) {\n const startFetchFavorites = async (): Promise<void> => {\n try {\n await deferredFavorites.fetch();\n setLoadingFavorites(false);\n } catch (error) {\n setLoadingFavorites(false);\n showErrorAsNotification(error);\n }\n };\n startFetchFavorites();\n }\n }, [active]);\n\n useEffect(() => {\n if (loading) {\n return;\n }\n const visits = storedRecentVisits\n .map((item) => {\n // Remembered recent visits maybe no longer existed in launchpad\n if (item.type === \"app\") {\n const app = microAppsById.get(item.id);\n return app\n ? {\n type: \"app\",\n name: app.localeName,\n id: app.id,\n url: app.homepage,\n instanceId: app.instanceId,\n menuIcon: app.menuIcon,\n }\n : null;\n }\n return customLinksById.get(item.id);\n })\n .filter(Boolean) as MenuItemDataNormal[];\n setRecentVisits(visits);\n }, [customLinksById, loading, microAppsById, storedRecentVisits]);\n\n const pushRecentVisit = useCallback(({ type, id }: StoredMenuItem) => {\n const visits: StoredMenuItem[] = storage.getItem(storageKey) ?? [];\n const index = visits.findIndex(\n (visit) => visit.type === type && visit.id === id\n );\n if (index > -1) {\n visits.splice(index, 1);\n }\n visits.unshift({ type, id });\n if (visits.length > RECENT_VISITS_LIMIT) {\n visits.pop();\n }\n // setStoredRecentVisits(visits);\n storage.setItem(storageKey, visits);\n }, []);\n\n const isStarred = useCallback(\n (item: MenuItemDataNormal) =>\n favorites.some((fav) => matchFavorite(item, fav)),\n [favorites]\n );\n\n const toggleStar = useCallback(\n (item: MenuItemDataNormal | MenuItemDataLink) => {\n const index = favorites.findIndex((fav) =>\n item.type === \"link\"\n ? fav.favoriteId === item.favoriteId\n : matchFavorite(item, fav)\n );\n let newFavorites: FavMenuItem[];\n if (index > -1) {\n const removed = favorites[index];\n newFavorites = favorites\n .slice(0, index)\n .concat(favorites.slice(index + 1));\n undoFavorite(removed).catch(showErrorAsNotification);\n } else {\n if (favorites.length >= FAVORITES_LIMIT) {\n showDialog({\n type: \"warn\",\n title: \"收藏数量已达上限\",\n content: `当前收藏链接数量已达上限(${FAVORITES_LIMIT}个),请删除部分收藏后再添加。`,\n });\n return;\n }\n // Assert: no link item\n const fav: FavMenuItem = { ...(item as MenuItemDataNormal) };\n newFavorites = favorites.concat(fav);\n favorite(item as MenuItemDataNormal).then((result) => {\n if (result) {\n fav.favoriteId = result.instanceId;\n }\n }, showErrorAsNotification);\n }\n setFavorites(newFavorites);\n candidateFavorites = newFavorites;\n },\n [favorites]\n );\n\n const menuGroups: MenuGroupData[] = useMemo(\n () => search(desktops, q),\n [desktops, q]\n );\n\n return {\n loading,\n q,\n setQ,\n menuGroups,\n loadingFavorites,\n favorites,\n recentVisits,\n pushRecentVisit,\n isStarred,\n toggleStar,\n };\n}\n\nexport function matchFavorite(item: MenuItemDataNormal, fav: FavMenuItem) {\n return item.instanceId && fav.instanceId\n ? fav.instanceId === item.instanceId\n : fav.type === item.type && fav.id === item.id;\n}\n","import { wrapBrick } from \"@next-core/react-element\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport type { showDialog as _showDialog } from \"@next-bricks/basic/data-providers/show-dialog/show-dialog\";\nimport type { showNotification as _showNotification } from \"@next-bricks/basic/data-providers/show-notification/show-notification\";\n\nexport const WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nexport const WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\n// Use `unwrapProvider` to get the original function of a provider\nexport const showDialog =\n unwrapProvider<typeof _showDialog>(\"basic.show-dialog\");\n\nexport const showNotification = unwrapProvider<typeof _showNotification>(\n \"basic.show-notification\"\n);\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../images/launchpad-sidebar.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:inline-block;width:32px;height:32px;--local-sidebar-menu-item-active-bg:rgba(0,0,0,0.04);--local-background:#fff;--local-menu-icon-color:#8c8c8c;--local-max-height:calc(100vh - var(--app-bar-height) - 10px)}:host([hidden]){display:none}:host-context(html[data-theme=\"dark\"]),\n:host-context(html[data-theme=\"dark-v2\"]){--local-sidebar-menu-item-active-bg:rgba(255,255,255,0.04);--local-background:#26262a;--local-menu-icon-color:rgba(255,255,255,0.45)}.launchpad-button{width:100%;height:100%;display:flex;justify-content:center;align-items:center;color:#999;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border-radius:3px}.launchpad-button:hover,\n.launchpad-button.active{background-color:var(--color-fill-bg-base-1)}.launchpad-button.active{color:var(--color-brand)}.mask{position:fixed;top:0;bottom:0;left:0;right:0;z-index:1;display:none}.mask.active{display:block}.launchpad{display:none;position:absolute;margin-top:4px;z-index:1;width:1110px;max-width:calc(100vw - 100px);max-height:var(--local-max-height);min-height:50vh;min-height:min(500px,var(--local-max-height));background-color:var(--local-background);border:1px solid var(--color-text-divider-line);border-radius:6px;box-shadow:var(--fullscreen-overlay-shadow)}.launchpad.active{display:flex}.sidebar{width:190px;padding:20px 0 24px;display:flex;flex-direction:column;background:var(--color-fill-bg-base-3);min-width:0;background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-size:205px 205px;background-repeat:no-repeat;background-position:left 52px bottom 27px}.quick-nav-label,\n.menu-group-label,\n.menu-item-label,\n.recent-visits span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-menu,\n.menu-groups,\n.menu,\n.sub-menu,\n.recent-visits{list-style:none;margin:0;padding:0}.sidebar-menu,\n.menu,\n.sub-menu{display:flex;flex-direction:column;gap:14px}.sidebar-menu-item > eo-link,\n.menu-item > eo-link,\n.recent-visits eo-link{display:block;min-width:0}.sidebar-menu-item > eo-link::part(link),\n.menu-item > eo-link::part(link){height:20px;display:flex;align-items:center;gap:8px;color:var(--color-header-text)}.sidebar-menu-item{padding:0 12px 0 16px;justify-content:space-between}.sidebar-menu-icon{color:var(--left-sidebar-item-collapsed-icon-color)}.quick-nav{overflow-y:auto;flex:1}.quick-nav-label{color:var(--color-header-text);font-weight:500;margin-bottom:14px;padding:0 16px}.content{flex:1;padding:20px 24px 24px;min-width:0;overflow-y:auto;display:flex;flex-direction:column;gap:24px}.search-box{border-bottom:1px solid var(--color-text-divider-line);display:flex;gap:8px;align-items:center;padding:10px 0;margin-top:-10px;cursor:text}.search-icon{color:var(--color-auxiliary-text)}.search-input{padding:0;margin:0;border:none;outline:none;color:inherit;background-color:transparent;font-size:14px;line-height:22px;flex:1;min-width:0}.search-input::placeholder{color:var(--color-disabled-text);opacity:1}.search-clear{display:none;color:var(--color-secondary-text);cursor:pointer}.search-clear.searching{display:inline-block}.search-clear:hover{color:var(--color-auxiliary-text)}.menu-groups,\n.recent-visits{grid-template-columns:repeat(auto-fill,minmax(168px,1fr))}.menu-groups{display:grid;grid-gap:32px 8px;gap:32px 8px}.menu-group{padding-right:12px;color:var(--color-header-text)}.menu-group-label{font-size:var(--card-title-font-size);font-weight:500;color:var(--color-header-text);margin-bottom:14px}.sidebar-menu-item,\n.menu-item:not(.folder){display:flex;gap:8px;align-items:center}.menu-icon{color:var(--local-menu-icon-color)}.menu-item.active,\n.menu-item.active .menu-icon{color:var(--color-brand-active)}.sub-menu:not(.expanded){display:none}.sub-menu{margin-top:14px;margin-left:8px;border-left:1px solid var(--color-text-divider-line);padding-left:15px}.menu-item-remove,\n.menu-item-star{cursor:pointer}.menu-item-remove,\n.menu-item-star,\n.menu-item-toggle{color:var(--color-secondary-text)}.sidebar-menu-item:not(:hover) .menu-item-remove{display:none}.menu-item-remove:hover{color:var(--color-normal-text)}.menu-item-remove:active{color:var(--color-strong-text)}.menu-item-star{display:none}.can-star.starred > .menu-item-star,\n.can-star:hover > .menu-item-star{display:inline-block}.can-star:not(.starred) > .menu-item-star{color:var(--color-secondary-text)}.starred > .menu-item-star{color:var(--palette-yellow-6)}.recent-visits-label{margin-bottom:12px;font-size:var(--card-title-font-size);color:var(--color-header-text);font-weight:500}.recent-visits{display:grid;grid-gap:8px;gap:8px}.recent-visits eo-link::part(link){background-color:var(--color-fill-bg-base-1);border-radius:3px;color:var(--color-header-text);display:flex;align-items:center;height:24px;padding:0 8px}.sidebar-menu-item > eo-link:hover::part(link),\n.sidebar-menu-item > eo-link:hover .sidebar-menu-icon,\n.menu-item > eo-link:hover::part(link),\n.menu-item > eo-link:hover .menu-icon,\n.menu-item > eo-link:hover .menu-item-toggle,\n.recent-visits eo-link:hover::part(link){color:var(--color-brand-hover)}.spinner{display:flex;justify-content:center;align-items:center;color:var(--theme-doderblue-color);flex:1;font-size:30px}.empty,\n.loading > :not(.spinner){display:none}@supports not (inset: 0){.search-box,\n .sidebar-menu,\n .menu,\n .sub-menu,\n .sidebar-menu-item,\n .menu-item:not(.folder),\n .sidebar-menu-item > eo-link::part(link),\n .menu-item > eo-link::part(link){gap:0}.content{display:grid;grid-auto-flow:row}.content:not(.loading){height:-webkit-min-content;height:-moz-min-content;height:min-content}.sidebar-menu > :not(:first-child),\n .menu > :not(:first-child),\n .sub-menu > :not(:first-child){margin-top:14px}.search-icon,\n .sidebar-menu-icon,\n .menu-icon{margin-right:8px}.search-clear,\n .menu-item-star,\n .menu-item-toggle{margin-left:8px}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","\"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","_item$menuIcon","loadingFavorites","pushRecentVisit","toggleStar","isStarred","starred","useMemo","handleStarClick","useCallback","handleClick","classNames","WrappedLink","_extends","onClick","url","href","target","WrappedIcon","lib","icon","menuIcon","pick","prefix","title","SidebarMenuItem","_ref3","_item$menuIcon2","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","showErrorAsNotification","showNotification","message","httpErrorToString","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.8cea5f76.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 {...(item.menuIcon?.lib && item.menuIcon.icon\n ? (pick(item.menuIcon, [\n \"lib\",\n \"icon\",\n \"theme\",\n \"category\",\n \"prefix\",\n ]) as any)\n : null)}\n />\n <span className=\"menu-item-label\">{item.name}</span>\n </WrappedLink>\n <WrappedIcon\n lib=\"fa\"\n prefix={starred ? \"fas\" : \"far\"}\n icon=\"star\"\n className=\"menu-item-star\"\n title={starred ? \"取消收藏\" : \"收藏\"}\n onClick={handleStarClick}\n />\n </li>\n );\n}\n\nexport interface SidebarMenuItemProps {\n item: SidebarMenuItemData;\n}\n\nexport function SidebarMenuItem({ item }: SidebarMenuItemProps) {\n const { pushRecentVisit, toggleStar } = useLaunchpadContext();\n\n const handleClick = useCallback(() => {\n if (item.type !== \"link\") {\n pushRecentVisit(item);\n }\n }, [item, pushRecentVisit]);\n\n const handleRemoveStar = useCallback(() => {\n toggleStar(item);\n }, [item, toggleStar]);\n\n return (\n <li className=\"sidebar-menu-item\">\n <WrappedLink\n onClick={handleClick}\n {...(item.type === \"app\"\n ? {\n url: item.url,\n }\n : {\n href: item.url,\n target: \"_blank\",\n })}\n >\n <WrappedIcon\n className={`sidebar-menu-icon`}\n lib=\"easyops\"\n icon=\"micro-app-center\"\n {...(item.menuIcon?.lib && item.menuIcon.icon\n ? (pick(item.menuIcon, [\n \"lib\",\n \"icon\",\n \"theme\",\n \"category\",\n \"prefix\",\n ]) as any)\n : null)}\n />\n <span className=\"menu-item-label\">{item.name}</span>\n </WrappedLink>\n <WrappedIcon\n lib=\"fa\"\n icon=\"xmark\"\n className=\"menu-item-remove\"\n onClick={handleRemoveStar}\n />\n </li>\n );\n}\n\nexport interface MenuItemFolderProps {\n name: string;\n items: MenuItemDataNormal[];\n}\n\nfunction MenuItemFolder({ name, items }: MenuItemFolderProps) {\n const { searching } = useLaunchpadContext();\n const [expanded, setExpanded] = useState(false);\n const [searchingExpanded, setSearchingExpanded] = useState(false);\n\n const toggle = useCallback(() => {\n // Use separated expanded states for searching and non-searching.\n if (searching) {\n setSearchingExpanded((previous) => !previous);\n } else {\n setExpanded((previous) => !previous);\n }\n }, [searching]);\n\n useEffect(() => {\n // Each time when start searching, set it as expanded.\n setSearchingExpanded(true);\n }, [searching]);\n\n const actualExpanded = searching ? searchingExpanded : expanded;\n\n return (\n <li className=\"menu-item folder\">\n <WrappedLink onClick={toggle}>\n <WrappedIcon\n lib=\"fa\"\n prefix=\"far\"\n icon=\"folder-open\"\n className=\"menu-icon\"\n />\n <span className=\"menu-item-label\">{name}</span>\n <WrappedIcon\n lib=\"antd\"\n icon={actualExpanded ? \"up\" : \"down\"}\n className=\"menu-item-toggle\"\n />\n </WrappedLink>\n <ul className={classNames(\"sub-menu\", { expanded: actualExpanded })}>\n {items.map((item) => (\n <MenuItem key={`${item.type}-${item.id}`} item={item} />\n ))}\n </ul>\n </li>\n );\n}\n","import React, { useCallback, useRef } from \"react\";\nimport classNames from \"classnames\";\nimport { WrappedIcon, WrappedLink } from \"./wrapped-bricks\";\nimport { useLaunchpadInfo } from \"./useLaunchpadInfo.js\";\nimport { MenuGroup, SidebarMenuItem } from \"./MenuGroup.js\";\nimport { LaunchpadsContext } from \"./LaunchpadContext.js\";\nimport { SidebarMenuItemData } from \"./interfaces\";\n\nexport function Launchpad({ active }: { active?: boolean }) {\n const searchInputRef = useRef<HTMLInputElement>(null);\n const handleClickSearchBox = useCallback(() => {\n searchInputRef.current?.focus();\n }, []);\n\n const {\n loading,\n q,\n setQ,\n menuGroups,\n favorites,\n loadingFavorites,\n recentVisits,\n pushRecentVisit,\n toggleStar,\n isStarred,\n } = useLaunchpadInfo(active);\n const searching = !!q;\n\n const handleSearch = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setQ(e.target.value);\n },\n [setQ]\n );\n\n const clearSearch = useCallback(() => {\n setQ(\"\");\n }, [setQ]);\n\n return (\n <div className={classNames(\"launchpad\", { active })}>\n <LaunchpadsContext.Provider\n value={{\n searching,\n loadingFavorites,\n pushRecentVisit,\n toggleStar,\n isStarred,\n }}\n >\n <div className=\"sidebar\">\n <div className=\"quick-nav\">\n <div className=\"quick-nav-label\">快捷访问</div>\n {/* <Loading loading={loading || loadingFavorites} /> */}\n <ul className=\"sidebar-menu\">\n {favorites.map((item, index) => (\n <SidebarMenuItem\n key={index}\n item={item as SidebarMenuItemData}\n />\n ))}\n </ul>\n </div>\n </div>\n <div className={classNames(\"content\", { loading })}>\n <Loading loading={loading} />\n <div className=\"search-box\" onClick={handleClickSearchBox}>\n <WrappedIcon\n lib=\"fa\"\n icon=\"magnifying-glass\"\n className=\"search-icon\"\n />\n <input\n ref={searchInputRef}\n placeholder=\"通过关键字搜索\"\n value={q}\n onChange={handleSearch}\n className=\"search-input\"\n />\n <WrappedIcon\n lib=\"antd\"\n theme=\"filled\"\n icon=\"close-circle\"\n className={classNames(\"search-clear\", { searching })}\n onClick={clearSearch}\n />\n </div>\n <div className={classNames({ empty: recentVisits.length === 0 })}>\n <div className=\"recent-visits-label\">最近访问</div>\n <ul className=\"recent-visits\">\n {recentVisits.map((item, index) => (\n <li key={index}>\n <WrappedLink\n onClick={() => pushRecentVisit(item)}\n {...(item.type === \"app\"\n ? {\n url: item.url,\n }\n : {\n href: item.url,\n target: \"_blank\",\n })}\n >\n <span>{item.name}</span>\n </WrappedLink>\n </li>\n ))}\n </ul>\n </div>\n <ul className=\"menu-groups\">\n {menuGroups.map((group) => (\n <MenuGroup\n key={group.name}\n name={group.name}\n items={group.items}\n />\n ))}\n </ul>\n </div>\n </LaunchpadsContext.Provider>\n </div>\n );\n}\n\nfunction Loading({ loading }: { loading: boolean }) {\n return (\n loading && (\n <div className=\"spinner\">\n <WrappedIcon lib=\"fa\" icon=\"spinner\" spinning />\n </div>\n )\n );\n}\n","import _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 { handleHttpError, httpErrorToString } from \"@next-core/runtime\";\nimport { auth } from \"@next-core/easyops-runtime\";\nimport { JsonStorage } from \"@next-shared/general/JsonStorage\";\nimport { DeferredService } from \"../shared/DeferredService\";\nimport { showDialog, showNotification } from \"./wrapped-bricks\";\nimport type {\n FavMenuItem,\n MenuGroupData,\n MenuItemDataCustom,\n MenuItemDataLink,\n MenuItemDataNormal,\n MicroAppWithInstanceId,\n StoredMenuItem,\n} from \"./interfaces\";\nimport {\n favorite,\n fetchFavorites,\n fetchLaunchpadInfo,\n undoFavorite,\n} from \"./api\";\nimport { search } from \"./search\";\nimport { FAVORITES_LIMIT, RECENT_VISITS_LIMIT } from \"./constants\";\n\nconst storageKey = `launchpad-recent-visits:${(\n auth.getAuth() as Record<string, string>\n)?.org}`;\nconst storage = new JsonStorage(localStorage);\n\nlet candidateDesktops: MenuGroupData[] = [];\nlet candidateMicroAppsById = new Map<string, MicroAppWithInstanceId>();\nlet candidateCustomLinksById = new Map<string, MenuItemDataCustom>();\nlet preLoaded = false;\n\nlet candidateFavorites: FavMenuItem[] = [];\nlet preLoadedFavorites = false;\n\nexport const deferredLaunchpadInfo = new DeferredService(async () => {\n ({\n menuGroups: candidateDesktops,\n microAppsById: candidateMicroAppsById,\n customLinksById: candidateCustomLinksById,\n } = await fetchLaunchpadInfo());\n preLoaded = true;\n});\n\nexport const deferredFavorites = new DeferredService(async () => {\n candidateFavorites = await fetchFavorites();\n preLoadedFavorites = true;\n});\n\nconst showErrorAsNotification = (error: unknown) =>\n showNotification({\n type: \"error\",\n message: httpErrorToString(error),\n });\n\n/**\n * - 页面初始化时预加载 launchpad 信息。\n * - 每次打开 launchpad 都发起请求,但该请求的数据只在下次打开 launchpad 时使用。\n * 即每次打开 launchpad 使用的都是上一次获取的数据,以便达到两个效果:\n * - 每次打开 launchpad 都能立即显示菜单列表;\n * - 同时当用户在 launchpad 上操作时,不会出现数据突然更新(新数据请求完成)。\n */\nexport function useLaunchpadInfo(active?: boolean) {\n const [desktops, setDesktops] = useState(candidateDesktops);\n const [microAppsById, setMicroAppsById] = useState(candidateMicroAppsById);\n const [customLinksById, setCustomLinksById] = useState(\n candidateCustomLinksById\n );\n\n const [q, setQ] = useState(\"\");\n\n const [loading, setLoading] = useState(!preLoaded);\n const [loadingFavorites, setLoadingFavorites] = useState(!preLoadedFavorites);\n\n const [storedRecentVisits, setStoredRecentVisits] = useState<\n StoredMenuItem[]\n >([]);\n\n const [recentVisits, setRecentVisits] = useState<MenuItemDataNormal[]>([]);\n\n const [favorites, setFavorites] = useState<FavMenuItem[]>(candidateFavorites);\n\n useEffect(() => {\n // 仅当首次加载完成或重新打开 launchpad 时更新一次数据。\n if (active && !loading) {\n setDesktops(candidateDesktops);\n setMicroAppsById(candidateMicroAppsById);\n setCustomLinksById(candidateCustomLinksById);\n }\n }, [active, loading]);\n\n useEffect(() => {\n if (active && !loadingFavorites) {\n setFavorites(candidateFavorites);\n }\n }, [active, loadingFavorites]);\n\n useEffect(() => {\n if (active) {\n setStoredRecentVisits(storage.getItem(storageKey) ?? []);\n }\n }, [active]);\n\n useEffect(() => {\n if (active) {\n const startFetchLaunchpadInfo = async (): Promise<void> => {\n try {\n await deferredLaunchpadInfo.fetch();\n setLoading(false);\n } catch (error) {\n handleHttpError(error);\n }\n };\n startFetchLaunchpadInfo();\n }\n }, [active]);\n\n useEffect(() => {\n if (active) {\n const startFetchFavorites = async (): Promise<void> => {\n try {\n await deferredFavorites.fetch();\n setLoadingFavorites(false);\n } catch (error) {\n setLoadingFavorites(false);\n showErrorAsNotification(error);\n }\n };\n startFetchFavorites();\n }\n }, [active]);\n\n useEffect(() => {\n if (loading) {\n return;\n }\n const visits = storedRecentVisits\n .map((item) => {\n // Remembered recent visits maybe no longer existed in launchpad\n if (item.type === \"app\") {\n const app = microAppsById.get(item.id);\n return app\n ? {\n type: \"app\",\n name: app.localeName,\n id: app.id,\n url: app.homepage,\n instanceId: app.instanceId,\n menuIcon: app.menuIcon,\n }\n : null;\n }\n return customLinksById.get(item.id);\n })\n .filter(Boolean) as MenuItemDataNormal[];\n setRecentVisits(visits);\n }, [customLinksById, loading, microAppsById, storedRecentVisits]);\n\n const pushRecentVisit = useCallback(({ type, id }: StoredMenuItem) => {\n const visits: StoredMenuItem[] = storage.getItem(storageKey) ?? [];\n const index = visits.findIndex(\n (visit) => visit.type === type && visit.id === id\n );\n if (index > -1) {\n visits.splice(index, 1);\n }\n visits.unshift({ type, id });\n if (visits.length > RECENT_VISITS_LIMIT) {\n visits.pop();\n }\n // setStoredRecentVisits(visits);\n storage.setItem(storageKey, visits);\n }, []);\n\n const isStarred = useCallback(\n (item: MenuItemDataNormal) =>\n favorites.some((fav) => matchFavorite(item, fav)),\n [favorites]\n );\n\n const toggleStar = useCallback(\n (item: MenuItemDataNormal | MenuItemDataLink) => {\n const index = favorites.findIndex((fav) =>\n item.type === \"link\"\n ? fav.favoriteId === item.favoriteId\n : matchFavorite(item, fav)\n );\n let newFavorites: FavMenuItem[];\n if (index > -1) {\n const removed = favorites[index];\n newFavorites = favorites\n .slice(0, index)\n .concat(favorites.slice(index + 1));\n undoFavorite(removed).catch(showErrorAsNotification);\n } else {\n if (favorites.length >= FAVORITES_LIMIT) {\n showDialog({\n type: \"warn\",\n title: \"收藏数量已达上限\",\n content: `当前收藏链接数量已达上限(${FAVORITES_LIMIT}个),请删除部分收藏后再添加。`,\n });\n return;\n }\n // Assert: no link item\n const fav: FavMenuItem = { ...(item as MenuItemDataNormal) };\n newFavorites = favorites.concat(fav);\n favorite(item as MenuItemDataNormal).then((result) => {\n if (result) {\n fav.favoriteId = result.instanceId;\n }\n }, showErrorAsNotification);\n }\n setFavorites(newFavorites);\n candidateFavorites = newFavorites;\n },\n [favorites]\n );\n\n const menuGroups: MenuGroupData[] = useMemo(\n () => search(desktops, q),\n [desktops, q]\n );\n\n return {\n loading,\n q,\n setQ,\n menuGroups,\n loadingFavorites,\n favorites,\n recentVisits,\n pushRecentVisit,\n isStarred,\n toggleStar,\n };\n}\n\nexport function matchFavorite(item: MenuItemDataNormal, fav: FavMenuItem) {\n return item.instanceId && fav.instanceId\n ? fav.instanceId === item.instanceId\n : fav.type === item.type && fav.id === item.id;\n}\n","import { wrapBrick } from \"@next-core/react-element\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport type { showDialog as _showDialog } from \"@next-bricks/basic/data-providers/show-dialog/show-dialog\";\nimport type { showNotification as _showNotification } from \"@next-bricks/basic/data-providers/show-notification/show-notification\";\n\nexport const WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nexport const WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\n// Use `unwrapProvider` to get the original function of a provider\nexport const showDialog =\n unwrapProvider<typeof _showDialog>(\"basic.show-dialog\");\n\nexport const showNotification = unwrapProvider<typeof _showNotification>(\n \"basic.show-notification\"\n);\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nimport ___CSS_LOADER_GET_URL_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/getUrl.js\";\nvar ___CSS_LOADER_URL_IMPORT_0___ = new URL(\"../images/launchpad-sidebar.png\", import.meta.url);\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\nvar ___CSS_LOADER_URL_REPLACEMENT_0___ = ___CSS_LOADER_GET_URL_IMPORT___(___CSS_LOADER_URL_IMPORT_0___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:inline-block;width:32px;height:32px;--local-sidebar-menu-item-active-bg:rgba(0,0,0,0.04);--local-background:#fff;--local-menu-icon-color:#8c8c8c;--local-max-height:calc(100vh - var(--app-bar-height) - 10px)}:host([hidden]){display:none}:host-context(html[data-theme=\"dark\"]),\n:host-context(html[data-theme=\"dark-v2\"]){--local-sidebar-menu-item-active-bg:rgba(255,255,255,0.04);--local-background:#26262a;--local-menu-icon-color:rgba(255,255,255,0.45)}.launchpad-button{width:100%;height:100%;display:flex;justify-content:center;align-items:center;color:#999;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border-radius:3px}.launchpad-button:hover,\n.launchpad-button.active{background-color:var(--color-fill-bg-base-1)}.launchpad-button.active{color:var(--color-brand)}.mask{position:fixed;top:0;bottom:0;left:0;right:0;z-index:1;display:none}.mask.active{display:block}.launchpad{display:none;position:absolute;margin-top:4px;z-index:1;width:1110px;max-width:calc(100vw - 100px);max-height:var(--local-max-height);min-height:50vh;min-height:min(500px,var(--local-max-height));background-color:var(--local-background);border:1px solid var(--color-text-divider-line);border-radius:6px;box-shadow:var(--fullscreen-overlay-shadow)}.launchpad.active{display:flex}.sidebar{width:190px;padding:20px 0 24px;display:flex;flex-direction:column;background:var(--color-fill-bg-base-3);min-width:0;background-image:url(${___CSS_LOADER_URL_REPLACEMENT_0___});background-size:205px 205px;background-repeat:no-repeat;background-position:left 52px bottom 27px}.quick-nav-label,\n.menu-group-label,\n.menu-item-label,\n.recent-visits span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-menu,\n.menu-groups,\n.menu,\n.sub-menu,\n.recent-visits{list-style:none;margin:0;padding:0}.sidebar-menu,\n.menu,\n.sub-menu{display:flex;flex-direction:column;gap:14px}.sidebar-menu-item > eo-link,\n.menu-item > eo-link,\n.recent-visits eo-link{display:block;min-width:0}.sidebar-menu-item > eo-link::part(link),\n.menu-item > eo-link::part(link){height:20px;display:flex;align-items:center;gap:8px;color:var(--color-header-text)}.sidebar-menu-item{padding:0 12px 0 16px;justify-content:space-between}.sidebar-menu-icon{color:var(--left-sidebar-item-collapsed-icon-color)}.quick-nav{overflow-y:auto;flex:1}.quick-nav-label{color:var(--color-header-text);font-weight:500;margin-bottom:14px;padding:0 16px}.content{flex:1;padding:20px 24px 24px;min-width:0;overflow-y:auto;display:flex;flex-direction:column;gap:24px}.search-box{border-bottom:1px solid var(--color-text-divider-line);display:flex;gap:8px;align-items:center;padding:10px 0;margin-top:-10px;cursor:text}.search-icon{color:var(--color-auxiliary-text)}.search-input{padding:0;margin:0;border:none;outline:none;color:inherit;background-color:transparent;font-size:14px;line-height:22px;flex:1;min-width:0}.search-input::placeholder{color:var(--color-disabled-text);opacity:1}.search-clear{display:none;color:var(--color-secondary-text);cursor:pointer}.search-clear.searching{display:inline-block}.search-clear:hover{color:var(--color-auxiliary-text)}.menu-groups,\n.recent-visits{grid-template-columns:repeat(auto-fill,minmax(168px,1fr))}.menu-groups{display:grid;grid-gap:32px 8px;gap:32px 8px}.menu-group{padding-right:12px;color:var(--color-header-text)}.menu-group-label{font-size:var(--card-title-font-size);font-weight:500;color:var(--color-header-text);margin-bottom:14px}.sidebar-menu-item,\n.menu-item:not(.folder){display:flex;gap:8px;align-items:center}.menu-icon{color:var(--local-menu-icon-color)}.menu-item.active,\n.menu-item.active .menu-icon{color:var(--color-brand-active)}.sub-menu:not(.expanded){display:none}.sub-menu{margin-top:14px;margin-left:8px;border-left:1px solid var(--color-text-divider-line);padding-left:15px}.menu-item-remove,\n.menu-item-star{cursor:pointer}.menu-item-remove,\n.menu-item-star,\n.menu-item-toggle{color:var(--color-secondary-text)}.sidebar-menu-item:not(:hover) .menu-item-remove{display:none}.menu-item-remove:hover{color:var(--color-normal-text)}.menu-item-remove:active{color:var(--color-strong-text)}.menu-item-star{display:none}.can-star.starred > .menu-item-star,\n.can-star:hover > .menu-item-star{display:inline-block}.can-star:not(.starred) > .menu-item-star{color:var(--color-secondary-text)}.starred > .menu-item-star{color:var(--palette-yellow-6)}.recent-visits-label{margin-bottom:12px;font-size:var(--card-title-font-size);color:var(--color-header-text);font-weight:500}.recent-visits{display:grid;grid-gap:8px;gap:8px}.recent-visits eo-link::part(link){background-color:var(--color-fill-bg-base-1);border-radius:3px;color:var(--color-header-text);display:flex;align-items:center;height:24px;padding:0 8px}.sidebar-menu-item > eo-link:hover::part(link),\n.sidebar-menu-item > eo-link:hover .sidebar-menu-icon,\n.menu-item > eo-link:hover::part(link),\n.menu-item > eo-link:hover .menu-icon,\n.menu-item > eo-link:hover .menu-item-toggle,\n.recent-visits eo-link:hover::part(link){color:var(--color-brand-hover)}.spinner{display:flex;justify-content:center;align-items:center;color:var(--theme-doderblue-color);flex:1;font-size:30px}.empty,\n.loading > :not(.spinner){display:none}@supports not (inset: 0){.search-box,\n .sidebar-menu,\n .menu,\n .sub-menu,\n .sidebar-menu-item,\n .menu-item:not(.folder),\n .sidebar-menu-item > eo-link::part(link),\n .menu-item > eo-link::part(link){gap:0}.content{display:grid;grid-auto-flow:row}.content:not(.loading){height:-webkit-min-content;height:-moz-min-content;height:min-content}.sidebar-menu > :not(:first-child),\n .menu > :not(:first-child),\n .sub-menu > :not(:first-child){margin-top:14px}.search-icon,\n .sidebar-menu-icon,\n .menu-icon{margin-right:8px}.search-clear,\n .menu-item-star,\n .menu-item-toggle{margin-left:8px}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","\"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","_item$menuIcon","loadingFavorites","pushRecentVisit","toggleStar","isStarred","starred","useMemo","handleStarClick","useCallback","handleClick","classNames","WrappedLink","_extends","onClick","url","href","target","WrappedIcon","lib","icon","menuIcon","pick","prefix","title","SidebarMenuItem","_ref3","_item$menuIcon2","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","showErrorAsNotification","showNotification","message","httpErrorToString","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":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_next_bricks_nav=self.webpackChunk_next_bricks_nav||[]).push([[6681,6522,5628],{5074:(e,t,n)=>{n.r(t),n.d(t,{EasyopsNavbarAlerts:()=>i,EasyopsNavbarAlertsComponent:()=>I,WrappedIcon:()=>b,WrappedLink:()=>w});var r,o,a,i,c=n(2604),s=n(8657),l=n.n(s),u=n(5366),f=n(4511),d=n(7217),p=n(1150),v=n(1229),g=(n(9234),n(2890)),h=n(5239),m=n.n(h),y=n(7128),b=(0,f.wrapBrick)("eo-icon"),w=(0,f.wrapBrick)("eo-link"),{defineElement:k,property:x}=(0,u.createDecorators)();o=k("nav.easyops-navbar-alerts",{styleTexts:[y.Z]});class E extends f.ReactNextElement{render(){return l().createElement(I,null)}}a=E,[i,r]=(0,c.Z)(a,[],[o],0,void 0,f.ReactNextElement).c,r();var A=new g.o(localStorage);function I(){var[e,t]=(0,s.useState)(null),[n,r]=(0,s.useState)(null),o=(0,p.useCurrentApp)(),a=(0,s.useMemo)((()=>{var e=v.auth.getAuth();return"license:".concat(e.org)}),[]);(0,s.useEffect)((()=>{var e,n,r=v.auth.getAuth(),o=null===(e=r.license)||void 0===e?void 0:e.validDaysLeft;o&&o<=15&&r.isAdmin&&(!(n=A.getItem(a))||m()().unix()>n)&&t(o)}),[a]),(0,s.useEffect)((()=>{var e=e=>{var t=e.detail.renderTime,{loadTime:n,loadInfoPage:a}=(0,d.getRuntime)().getMiscSettings();null!=o&&o.isBuildPush&&n>0&&t>n&&r({renderTime:T(t),suggestTime:T(n),suggestUrl:a})};return window.addEventListener("route.render",e),()=>{window.removeEventListener("route.render",e)}}),[o]);var i=(0,s.useCallback)((()=>{A.setItem(a,m()().unix()+86400),t(null)}),[a]);return l().createElement(l().Fragment,null,n&&l().createElement(S,{text:"您的页面存在性能问题, 当前页面渲染时间 ".concat(n.renderTime," 秒, 规定阈值为: ").concat(n.suggestTime," 秒, 您已超过。请您针对该页面进行性能优化!"),type:"warning",link:n.suggestUrl?{label:"建议解决思路",url:n.suggestUrl}:void 0}),null!==e&&l().createElement(S,{text:"离 License 过期还有 ".concat(e," 天"),type:"info",closable:!0,onClose:i}))}function S(e){var{text:t,type:n,closable:r,link:o,onClose:a}=e;return l().createElement("div",{className:"alert ".concat(n)},l().createElement("span",{className:"text"},t),o&&l().createElement(w,{className:"link",href:o.url,target:"_blank"},o.label),r&&l().createElement(b,{lib:"antd",icon:"close",className:"icon",role:"button",onClick:a}))}function T(e){return Math.floor(100*e)/1e5}},7128:(e,t,n)=>{n.d(t,{Z:()=>c});var r=n(9601),o=n.n(r),a=n(2609),i=n.n(a)()(o());i.push([e.id,":host{display:block}:host([hidden]){display:none}.alert{height:32px;padding:0 20px;display:flex;justify-content:center;align-items:center}.text{color:var(--antd-text-color);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.icon{margin-left:20px;cursor:pointer;color:#8c8c8c}.info{background-color:var(--color-info-bg)}.warning{background-color:var(--color-warning-bg)}",""]);const c=i.toString()},2609:e=>{e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n="",r=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),r&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),r&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,r,o,a){"string"==typeof e&&(e=[[null,e,void 0]]);var i={};if(r)for(var c=0;c<this.length;c++){var s=this[c][0];null!=s&&(i[s]=!0)}for(var l=0;l<e.length;l++){var u=[].concat(e[l]);r&&i[u[0]]||(void 0!==a&&(void 0===u[5]||(u[1]="@layer".concat(u[5].length>0?" ".concat(u[5]):""," {").concat(u[1],"}")),u[5]=a),n&&(u[2]?(u[1]="@media ".concat(u[2]," {").concat(u[1],"}"),u[2]=n):u[2]=n),o&&(u[4]?(u[1]="@supports (".concat(u[4],") {").concat(u[1],"}"),u[4]=o):u[4]="".concat(o)),t.push(u))}},t}},9601:e=>{e.exports=function(e){return e[1]}},2604:(e,t,n)=>{n.d(t,{Z:()=>g});var r=n(6522),o=n(1815);function a(e,t){return function(n){(function(e,t){if(e.v)throw new Error("attempted to call addInitializer after decoration was finished")})(t),s(n,"An initializer"),e.push(n)}}function i(e,t){if(!e(t))throw new TypeError("Attempted to access private element on non-instance")}function c(e,t,n,r,o,c,s,l,u,f){var d;switch(c){case 1:d="accessor";break;case 2:d="method";break;case 3:d="getter";break;case 4:d="setter";break;default:d="field"}var p,v,g={kind:d,name:l?"#"+n:n,static:s,private:l},h={v:!1};if(0!==c&&(g.addInitializer=a(o,h)),l||0!==c&&2!==c)if(2===c)p=function(e){return i(f,e),r.value};else{var m=0===c||1===c;(m||3===c)&&(p=l?function(e){return i(f,e),r.get.call(e)}:function(e){return r.get.call(e)}),(m||4===c)&&(v=l?function(e,t){i(f,e),r.set.call(e,t)}:function(e,t){r.set.call(e,t)})}else p=function(e){return e[n]},0===c&&(v=function(e,t){e[n]=t});var y=l?f.bind():function(e){return n in e};g.access=p&&v?{get:p,set:v,has:y}:p?{get:p,has:y}:{set:v,has:y};try{return e.call(t,u,g)}finally{h.v=!0}}function s(e,t){if("function"!=typeof e)throw new TypeError(t+" must be a function")}function l(e,t){var n=(0,r.Z)(t);if(1===e){if("object"!==n||null===t)throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");void 0!==t.get&&s(t.get,"accessor.get"),void 0!==t.set&&s(t.set,"accessor.set"),void 0!==t.init&&s(t.init,"accessor.init")}else if("function"!==n)throw new TypeError((0===e?"field":5===e?"class":"method")+" decorators must return a function or void 0")}function u(e){return function(){return e(this)}}function f(e){return function(t){e(this,t)}}function d(e,t,n,r,o,a,i,s,d,p){var v,g,h,m,y,b,w=n[0];r||Array.isArray(w)||(w=[w]),s?v=0===a||1===a?{get:u(n[3]),set:f(n[4])}:3===a?{get:n[3]}:4===a?{set:n[3]}:{value:n[3]}:0!==a&&(v=Object.getOwnPropertyDescriptor(t,o)),1===a?h={get:v.get,set:v.set}:2===a?h=v.value:3===a?h=v.get:4===a&&(h=v.set);for(var k=r?2:1,x=w.length-1;x>=0;x-=k){var E;void 0!==(m=c(w[x],r?w[x-1]:void 0,o,v,d,a,i,s,h,p))&&(l(a,m),0===a?E=m:1===a?(E=m.init,y=m.get||h.get,b=m.set||h.set,h={get:y,set:b}):h=m,void 0!==E&&(void 0===g?g=E:"function"==typeof g?g=[g,E]:g.push(E)))}if(0===a||1===a){if(void 0===g)g=function(e,t){return t};else if("function"!=typeof g){var A=g;g=function(e,t){for(var n=t,r=A.length-1;r>=0;r--)n=A[r].call(e,n);return n}}else{var I=g;g=function(e,t){return I.call(e,t)}}e.push(g)}0!==a&&(1===a?(v.get=h.get,v.set=h.set):2===a?v.value=h:3===a?v.get=h:4===a&&(v.set=h),s?1===a?(e.push((function(e,t){return h.get.call(e,t)})),e.push((function(e,t){return h.set.call(e,t)}))):2===a?e.push(h):e.push((function(e,t){return h.call(e,t)})):Object.defineProperty(t,o,v))}function p(e,t,n){for(var r,a,i,c=[],s=new Map,l=new Map,u=0;u<t.length;u++){var f=t[u];if(Array.isArray(f)){var p,g,h=f[1],m=f[2],y=f.length>3,b=16&h,w=!!(8&h),k=n;if(h&=7,w?(p=e,0!==h&&(g=a=a||[]),y&&!i&&(i=function(t){return(0,o.Z)(t)===e}),k=i):(p=e.prototype,0!==h&&(g=r=r||[])),0!==h&&!y){var x=w?l:s,E=x.get(m)||0;if(!0===E||3===E&&4!==h||4===E&&3!==h)throw new Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: "+m);x.set(m,!(!E&&h>2)||h)}d(c,p,f,b,m,h,w,y,g,k)}}return v(c,r),v(c,a),c}function v(e,t){t&&e.push((function(e){for(var n=0;n<t.length;n++)t[n].call(e);return e}))}function g(e,t,n,r,o){return{e:p(e,t,o),get c(){return function(e,t,n){if(t.length){for(var r=[],o=e,i=e.name,c=n?2:1,s=t.length-1;s>=0;s-=c){var u={v:!1};try{var f=t[s].call(n?t[s-1]:void 0,o,{kind:"class",name:i,addInitializer:a(r,u)})}finally{u.v=!0}void 0!==f&&(l(5,f),o=f)}return[o,function(){for(var e=0;e<r.length;e++)r[e].call(o)}]}}(e,n,r)}}}},1815:(e,t,n)=>{n.d(t,{Z:()=>o});var r=n(6522);function o(e){if(Object(e)!==e)throw TypeError("right-hand side of 'in' should be an object, got "+(null!==e?(0,r.Z)(e):"null"));return e}},6522:(e,t,n)=>{function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}n.d(t,{Z:()=>r})},2890:(e,t,n)=>{n.d(t,{o:()=>r});class r{constructor(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"brick-next-";this.storage=e,this.prefix=t}setItem(e,t){this.storage.setItem(this.prefix+e,JSON.stringify(t))}getItem(e){return JSON.parse(this.storage.getItem(this.prefix+e))}removeItem(e){return this.storage.removeItem(this.prefix+e)}clear(){return this.storage.clear()}}}}]);
2
+ //# sourceMappingURL=easyops-navbar-alerts.c0bec48c.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunks/easyops-navbar-alerts.c0bec48c.js","mappings":"yPAqBAA,E,gIALaC,GAAcC,EAAAA,EAAAA,WAAyC,WACvDC,GAAcD,EAAAA,EAAAA,WAA2B,YAEhD,cAAEE,EAAa,SAAEC,IAAaC,EAAAA,EAAAA,oBAEpCC,EAICH,EAAc,4BAA6B,CAC1CI,WAAY,CAACC,EAAAA,KADf,MAAAC,UAGkCC,EAAAA,iBAChCC,SACE,OAAOC,IAAAA,cAACC,EAA4B,KACtC,EACDC,EAAAL,GAAAV,EAAAgB,IAAAC,EAAAA,EAAAA,GAAAF,EAAA,IAAAR,GAAA,SAJiCI,EAAAA,kBAAgBO,EAAAF,IAYlD,IAAMG,EAAU,IAAIC,EAAAA,EAAYC,cAEzB,SAASP,IACd,IAAOQ,EAAiBC,IAAsBC,EAAAA,EAAAA,UAAwB,OAC/DC,EAAYC,IAAiBF,EAAAA,EAAAA,UAAgC,MAC9DG,GAAaC,EAAAA,EAAAA,iBACbC,GAAsBC,EAAAA,EAAAA,UAAQ,KAClC,IAAMC,EAAWC,EAAAA,KAAKC,UACtB,MAAO,WAAPC,OAAkBH,EAASI,IAAG,GAC7B,KAEHC,EAAAA,EAAAA,YAAU,KAAM,IAAAC,EAGVC,EAFEP,EAAWC,EAAAA,KAAKC,UAChBM,EAAgC,QAAnBF,EAAGN,EAASS,eAAO,IAAAH,OAAA,EAAhBA,EAAkBE,cAGtCA,GACAA,GAAiB,IACjBR,EAASU,YACPH,EAAkBnB,EAAQuB,QAAQb,KAChBc,MAASC,OAASN,IAEtCf,EAAmBgB,EACrB,GACC,CAACV,KAEJO,EAAAA,EAAAA,YAAU,KACR,IAAMS,EAAqBC,IACzB,IAAMC,EAAcD,EAA0CE,OAC3DD,YACG,SAAEE,EAAQ,aAAEC,IAAiBC,EAAAA,EAAAA,cAAaC,kBAI5CzB,SAAAA,EAAY0B,aAAeJ,EAAW,GAAKF,EAAaE,GAC1DvB,EAAc,CACZqB,WAAYO,EAAoBP,GAChCQ,YAAaD,EAAoBL,GACjCO,WAAYN,GAEhB,EAGF,OADAO,OAAOC,iBAAiB,eAAgBb,GACjC,KACLY,OAAOE,oBAAoB,eAAgBd,EAAkB,CAC9D,GACA,CAAClB,IAEJ,IAAMiC,GAA4BC,EAAAA,EAAAA,cAAY,KAE5C1C,EAAQ2C,QAAQjC,EAAqBc,MAASC,OAAS,OACvDrB,EAAmB,KAAK,GACvB,CAACM,IAEJ,OACEhB,IAAAA,cAAAA,IAAAA,SAAA,KACGY,GACCZ,IAAAA,cAACkD,EAAK,CACJC,KAAI,wBAAA9B,OAA0BT,EAAWsB,WAAU,eAAAb,OAAcT,EAAW8B,YAAW,2BACvFU,KAAK,UACLC,KACEzC,EAAW+B,WACP,CACEW,MAAO,SACPC,IAAK3C,EAAW+B,iBAElBa,IAIW,OAApB/C,GACCT,IAAAA,cAACkD,EAAK,CACJC,KAAI,kBAAA9B,OAAoBZ,EAAe,MACvC2C,KAAK,OACLK,UAAQ,EACRC,QAASX,IAKnB,CAaA,SAASG,EAAKS,GAAsD,IAArD,KAAER,EAAI,KAAEC,EAAI,SAAEK,EAAQ,KAAEJ,EAAI,QAAEK,GAAqBC,EAChE,OACE3D,IAAAA,cAAA,OAAK4D,UAAS,SAAAvC,OAAW+B,IACvBpD,IAAAA,cAAA,QAAM4D,UAAU,QAAQT,GACvBE,GACCrD,IAAAA,cAACV,EAAW,CAACsE,UAAU,OAAOC,KAAMR,EAAKE,IAAKO,OAAO,UAClDT,EAAKC,OAGTG,GACCzD,IAAAA,cAACZ,EAAW,CACV2E,IAAI,OACJC,KAAK,QACLJ,UAAU,OACVK,KAAK,SACLC,QAASR,IAKnB,CAEA,SAASjB,EAAoB0B,GAC3B,OAAOC,KAAKC,MAAoB,IAAdF,GAAqB,GACzC,C,mEC1JIG,E,MAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOC,GAAI,wYAAyY,KAElb,QAAeH,EAAwBI,U,WCDvCF,EAAOG,QAAU,SAAUC,GACzB,IAAIC,EAAO,GA4EX,OAzEAA,EAAKH,SAAW,WACd,OAAOI,KAAKC,KAAI,SAAUC,GACxB,IAAIC,EAAU,GACVC,OAA+B,IAAZF,EAAK,GAoB5B,OAnBIA,EAAK,KACPC,GAAW,cAAc5D,OAAO2D,EAAK,GAAI,QAEvCA,EAAK,KACPC,GAAW,UAAU5D,OAAO2D,EAAK,GAAI,OAEnCE,IACFD,GAAW,SAAS5D,OAAO2D,EAAK,GAAGG,OAAS,EAAI,IAAI9D,OAAO2D,EAAK,IAAM,GAAI,OAE5EC,GAAWL,EAAuBI,GAC9BE,IACFD,GAAW,KAETD,EAAK,KACPC,GAAW,KAETD,EAAK,KACPC,GAAW,KAENA,CACT,IAAGG,KAAK,GACV,EAGAP,EAAKQ,EAAI,SAAWC,EAASC,EAAOC,EAAQC,EAAUC,GAC7B,iBAAZJ,IACTA,EAAU,CAAC,CAAC,KAAMA,OAAS9B,KAE7B,IAAImC,EAAyB,CAAC,EAC9B,GAAIH,EACF,IAAK,IAAII,EAAI,EAAGA,EAAId,KAAKK,OAAQS,IAAK,CACpC,IAAInB,EAAKK,KAAKc,GAAG,GACP,MAANnB,IACFkB,EAAuBlB,IAAM,EAEjC,CAEF,IAAK,IAAIoB,EAAK,EAAGA,EAAKP,EAAQH,OAAQU,IAAM,CAC1C,IAAIb,EAAO,GAAG3D,OAAOiE,EAAQO,IACzBL,GAAUG,EAAuBX,EAAK,WAGrB,IAAVU,SACc,IAAZV,EAAK,KAGdA,EAAK,GAAK,SAAS3D,OAAO2D,EAAK,GAAGG,OAAS,EAAI,IAAI9D,OAAO2D,EAAK,IAAM,GAAI,MAAM3D,OAAO2D,EAAK,GAAI,MAF/FA,EAAK,GAAKU,GAMVH,IACGP,EAAK,IAGRA,EAAK,GAAK,UAAU3D,OAAO2D,EAAK,GAAI,MAAM3D,OAAO2D,EAAK,GAAI,KAC1DA,EAAK,GAAKO,GAHVP,EAAK,GAAKO,GAMVE,IACGT,EAAK,IAGRA,EAAK,GAAK,cAAc3D,OAAO2D,EAAK,GAAI,OAAO3D,OAAO2D,EAAK,GAAI,KAC/DA,EAAK,GAAKS,GAHVT,EAAK,GAAK,GAAG3D,OAAOoE,IAMxBZ,EAAKN,KAAKS,GACZ,CACF,EACOH,CACT,C,WClFAL,EAAOG,QAAU,SAAUU,GACzB,OAAOA,EAAE,EACX,C,0DCFA,SAASS,EAA2B7D,EAAG8D,GACrC,OAAO,SAAUC,IA4EnB,SAA2B/D,EAAG8D,GAC5B,GAAI9D,EAAEgE,EAAG,MAAM,IAAIC,MAAM,iEAC3B,EA7EIC,CAAkBJ,GAAsBK,EAAeJ,EAAG,kBAAmB/D,EAAEsC,KAAKyB,EACtF,CACF,CACA,SAASK,EAAwBpE,EAAG8D,GAClC,IAAK9D,EAAE8D,GAAI,MAAM,IAAIO,UAAU,sDACjC,CACA,SAASC,EAAUtE,EAAG8D,EAAGC,EAAGQ,EAAGC,EAAGpB,EAAGqB,EAAGC,EAAGtG,EAAGuG,GAC5C,IAAIC,EACJ,OAAQxB,GACN,KAAK,EACHwB,EAAI,WACJ,MACF,KAAK,EACHA,EAAI,SACJ,MACF,KAAK,EACHA,EAAI,SACJ,MACF,KAAK,EACHA,EAAI,SACJ,MACF,QACEA,EAAI,QAER,IAAIC,EACFC,EACAC,EAAI,CACFC,KAAMJ,EACNK,KAAMP,EAAI,IAAMX,EAAIA,EACpB,OAAUU,EACV,QAAWC,GAEbQ,EAAI,CACFlB,GAAG,GAEP,GAAI,IAAMZ,IAAM2B,EAAEI,eAAiBtB,EAA2BW,EAAGU,IAAKR,GAAK,IAAMtB,GAAK,IAAMA,EAC1F,GAAI,IAAMA,EAAGyB,EAAI,SAAW7E,GAC1B,OAAOoE,EAAwBO,EAAG3E,GAAIuE,EAAEa,KAC1C,MAAO,CACL,IAAIpB,EAAI,IAAMZ,GAAK,IAAMA,GACxBY,GAAK,IAAMZ,KAAOyB,EAAIH,EAAI,SAAU1E,GACnC,OAAOoE,EAAwBO,EAAG3E,GAAIuE,EAAEc,IAAIC,KAAKtF,EACnD,EAAI,SAAUA,GACZ,OAAOuE,EAAEc,IAAIC,KAAKtF,EACpB,IAAKgE,GAAK,IAAMZ,KAAO0B,EAAIJ,EAAI,SAAU1E,EAAG8D,GAC1CM,EAAwBO,EAAG3E,GAAIuE,EAAEgB,IAAID,KAAKtF,EAAG8D,EAC/C,EAAI,SAAU9D,EAAG8D,GACfS,EAAEgB,IAAID,KAAKtF,EAAG8D,EAChB,EACF,MACKe,EAAI,SAAW7E,GACpB,OAAOA,EAAE+D,EACX,EAAG,IAAMX,IAAM0B,EAAI,SAAW9E,EAAG8D,GAC/B9D,EAAE+D,GAAKD,CACT,GACA,IAAI0B,EAAId,EAAIC,EAAEc,OAAS,SAAUzF,GAC/B,OAAO+D,KAAK/D,CACd,EACA+E,EAAEW,OAASb,GAAKC,EAAI,CAClBO,IAAKR,EACLU,IAAKT,EACLa,IAAKH,GACHX,EAAI,CACNQ,IAAKR,EACLc,IAAKH,GACH,CACFD,IAAKT,EACLa,IAAKH,GAEP,IACE,OAAOxF,EAAEsF,KAAKxB,EAAG1F,EAAG2G,EACtB,CAAE,QACAG,EAAElB,GAAI,CACR,CACF,CAIA,SAASG,EAAenE,EAAG8D,GACzB,GAAI,mBAAqB9D,EAAG,MAAM,IAAIqE,UAAUP,EAAI,sBACtD,CACA,SAAS8B,EAAuB5F,EAAG8D,GACjC,IAAIC,GAAI,OAAQD,GAChB,GAAI,IAAM9D,EAAG,CACX,GAAI,WAAa+D,GAAK,OAASD,EAAG,MAAM,IAAIO,UAAU,8FACtD,IAAWP,EAAEuB,KAAOlB,EAAeL,EAAEuB,IAAK,qBAAiB,IAAWvB,EAAEyB,KAAOpB,EAAeL,EAAEyB,IAAK,qBAAiB,IAAWzB,EAAE+B,MAAQ1B,EAAeL,EAAE+B,KAAM,gBACpK,MAAO,GAAI,aAAe9B,EAExB,MAA4D,IAAIM,WAAtD,IAAMrE,EAAI,QAAU,IAAMA,EAAI,QAAU,UAA4B,+CAElF,CACA,SAAS8F,EAAW9F,GAClB,OAAO,WACL,OAAOA,EAAE6C,KACX,CACF,CACA,SAASkD,EAAW/F,GAClB,OAAO,SAAU8D,GACf9D,EAAE6C,KAAMiB,EACV,CACF,CACA,SAASkC,EAAehG,EAAG8D,EAAGC,EAAGQ,EAAGC,EAAGpB,EAAGqB,EAAGC,EAAGtG,EAAGuG,GACjD,IAAIC,EACFC,EACAC,EACAC,EACAG,EACAlB,EACAwB,EAAIzB,EAAE,GACRQ,GAAK0B,MAAMC,QAAQV,KAAOA,EAAI,CAACA,IAAKd,EAAIE,EAAI,IAAMxB,GAAK,IAAMA,EAAI,CAC/DiC,IAAKS,EAAW/B,EAAE,IAClBwB,IAAKQ,EAAWhC,EAAE,KAChB,IAAMX,EAAI,CACZiC,IAAKtB,EAAE,IACL,IAAMX,EAAI,CACZmC,IAAKxB,EAAE,IACL,CACFqB,MAAOrB,EAAE,IACP,IAAMX,IAAMwB,EAAIuB,OAAOC,yBAAyBtC,EAAGU,IAAK,IAAMpB,EAAI0B,EAAI,CACxEO,IAAKT,EAAES,IACPE,IAAKX,EAAEW,KACL,IAAMnC,EAAI0B,EAAIF,EAAEQ,MAAQ,IAAMhC,EAAI0B,EAAIF,EAAES,IAAM,IAAMjC,IAAM0B,EAAIF,EAAEW,KACpE,IAAK,IAAIc,EAAI9B,EAAI,EAAI,EAAG+B,EAAId,EAAEtC,OAAS,EAAGoD,GAAK,EAAGA,GAAKD,EAAG,CACxD,IAAIE,OACA,KAAYxB,EAAIT,EAAUkB,EAAEc,GAAI/B,EAAIiB,EAAEc,EAAI,QAAK,EAAQ9B,EAAGI,EAAGxG,EAAGgF,EAAGqB,EAAGC,EAAGI,EAAGH,MAAKiB,EAAuBxC,EAAG2B,GAAI,IAAM3B,EAAImD,EAAIxB,EAAI,IAAM3B,GAAKmD,EAAIxB,EAAEc,KAAMX,EAAIH,EAAEM,KAAOP,EAAEO,IAAKrB,EAAIe,EAAEQ,KAAOT,EAAES,IAAKT,EAAI,CACtMO,IAAKH,EACLK,IAAKvB,IACFc,EAAIC,OAAG,IAAWwB,SAAM,IAAW1B,EAAIA,EAAI0B,EAAI,mBAAqB1B,EAAIA,EAAI,CAACA,EAAG0B,GAAK1B,EAAEvC,KAAKiE,IACnG,CACA,GAAI,IAAMnD,GAAK,IAAMA,EAAG,CACtB,QAAI,IAAWyB,EAAGA,EAAI,SAAW7E,EAAG8D,GAClC,OAAOA,CACT,OAAO,GAAI,mBAAqBe,EAAG,CACjC,IAAI2B,EAAI3B,EACRA,EAAI,SAAW7E,EAAG8D,GAChB,IAAK,IAAIC,EAAID,EAAGS,EAAIiC,EAAEtD,OAAS,EAAGqB,GAAK,EAAGA,IAAKR,EAAIyC,EAAEjC,GAAGe,KAAKtF,EAAG+D,GAChE,OAAOA,CACT,CACF,KAAO,CACL,IAAI0C,EAAI5B,EACRA,EAAI,SAAW7E,EAAG8D,GAChB,OAAO2C,EAAEnB,KAAKtF,EAAG8D,EACnB,CACF,CACA9D,EAAEsC,KAAKuC,EACT,CACA,IAAMzB,IAAM,IAAMA,GAAKwB,EAAES,IAAMP,EAAEO,IAAKT,EAAEW,IAAMT,EAAES,KAAO,IAAMnC,EAAIwB,EAAEQ,MAAQN,EAAI,IAAM1B,EAAIwB,EAAES,IAAMP,EAAI,IAAM1B,IAAMwB,EAAEW,IAAMT,GAAIJ,EAAI,IAAMtB,GAAKpD,EAAEsC,MAAK,SAAUtC,EAAG8D,GAC9J,OAAOgB,EAAEO,IAAIC,KAAKtF,EAAG8D,EACvB,IAAI9D,EAAEsC,MAAK,SAAUtC,EAAG8D,GACtB,OAAOgB,EAAES,IAAID,KAAKtF,EAAG8D,EACvB,KAAM,IAAMV,EAAIpD,EAAEsC,KAAKwC,GAAK9E,EAAEsC,MAAK,SAAUtC,EAAG8D,GAC9C,OAAOgB,EAAEQ,KAAKtF,EAAG8D,EACnB,IAAKqC,OAAOO,eAAe5C,EAAGU,EAAGI,GACnC,CACA,SAAS+B,EAAgB3G,EAAG8D,EAAGC,GAC7B,IAAK,IAAIQ,EAAGC,EAAGpB,EAAGqB,EAAI,GAAIC,EAAI,IAAIkC,IAAOxI,EAAI,IAAIwI,IAAOjC,EAAI,EAAGA,EAAIb,EAAEZ,OAAQyB,IAAK,CAChF,IAAIC,EAAId,EAAEa,GACV,GAAIsB,MAAMC,QAAQtB,GAAI,CACpB,IAAIC,EACFC,EACAC,EAAIH,EAAE,GACNM,EAAIN,EAAE,GACNZ,EAAIY,EAAE1B,OAAS,EACfsC,EAAI,GAAKT,EACTsB,KAAO,EAAItB,GACXuB,EAAIvC,EACN,GAAIgB,GAAK,EAAGsB,GAAKxB,EAAI7E,EAAG,IAAM+E,IAAMD,EAAIN,EAAIA,GAAK,IAAKR,IAAMZ,IAAMA,EAAI,SAAWU,GAC/E,OAAO,OAAWA,KAAO9D,CAC3B,GAAIsG,EAAIlD,IAAMyB,EAAI7E,EAAE6G,UAAW,IAAM9B,IAAMD,EAAIP,EAAIA,GAAK,KAAM,IAAMQ,IAAMf,EAAG,CAC3E,IAAIuC,EAAIF,EAAIjI,EAAIsG,EACd8B,EAAID,EAAElB,IAAIH,IAAM,EAClB,IAAI,IAAOsB,GAAK,IAAMA,GAAK,IAAMzB,GAAK,IAAMyB,GAAK,IAAMzB,EAAG,MAAM,IAAId,MAAM,wMAA0MiB,GACpRqB,EAAEhB,IAAIL,KAAMsB,GAAKzB,EAAI,IAAMA,EAC7B,CACAiB,EAAevB,EAAGI,EAAGD,EAAGY,EAAGN,EAAGH,EAAGsB,EAAGrC,EAAGc,EAAGwB,EAC5C,CACF,CACA,OAAOQ,EAAiBrC,EAAGF,GAAIuC,EAAiBrC,EAAGD,GAAIC,CACzD,CACA,SAASqC,EAAiB9G,EAAG8D,GAC3BA,GAAK9D,EAAEsC,MAAK,SAAUtC,GACpB,IAAK,IAAI+D,EAAI,EAAGA,EAAID,EAAEZ,OAAQa,IAAKD,EAAEC,GAAGuB,KAAKtF,GAC7C,OAAOA,CACT,GACF,CAuBe,SAAS+G,EAAc/G,EAAG8D,EAAGC,EAAGQ,EAAGC,GAChD,MAAO,CACLxE,EAAG2G,EAAgB3G,EAAG8D,EAAGU,GACrBpG,QACF,OA1BN,SAAwB4B,EAAG8D,EAAGC,GAC5B,GAAID,EAAEZ,OAAQ,CACZ,IAAK,IAAIqB,EAAI,GAAIC,EAAIxE,EAAGoD,EAAIpD,EAAEiF,KAAMR,EAAIV,EAAI,EAAI,EAAGW,EAAIZ,EAAEZ,OAAS,EAAGwB,GAAK,EAAGA,GAAKD,EAAG,CACnF,IAAIrG,EAAI,CACN4F,GAAG,GAEL,IACE,IAAIW,EAAIb,EAAEY,GAAGY,KAAKvB,EAAID,EAAEY,EAAI,QAAK,EAAQF,EAAG,CAC1CQ,KAAM,QACNC,KAAM7B,EACN+B,eAAgBtB,EAA2BU,EAAGnG,IAElD,CAAE,QACAA,EAAE4F,GAAI,CACR,MACA,IAAWW,IAAMiB,EAAuB,EAAGjB,GAAIH,EAAIG,EACrD,CACA,MAAO,CAACH,EAAG,WACT,IAAK,IAAIxE,EAAI,EAAGA,EAAIuE,EAAErB,OAAQlD,IAAKuE,EAAEvE,GAAGsF,KAAKd,EAC/C,EACF,CACF,CAKawC,CAAehH,EAAG+D,EAAGQ,EAC9B,EAEJ,C,gDCzNe,SAAS0C,EAAYjH,GAClC,GAAImG,OAAOnG,KAAOA,EAAG,MAAMqE,UAAU,qDAAuD,OAASrE,GAAI,OAAQA,GAAK,SACtH,OAAOA,CACT,C,iBCJe,SAASkH,EAAQxC,GAG9B,OAAOwC,EAAU,mBAAqBC,QAAU,iBAAmBA,OAAOC,SAAW,SAAU1C,GAC7F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAK,mBAAqByC,QAAUzC,EAAE2C,cAAgBF,QAAUzC,IAAMyC,OAAON,UAAY,gBAAkBnC,CACpH,EAAGwC,EAAQxC,EACb,C,kDCRO,MAAMpG,EACX+I,YACUhJ,GAER,IADQiJ,EAAcC,UAAArE,OAAA,QAAA3B,IAAAgG,UAAA,GAAAA,UAAA,GAAG,cAAa,KAD9BlJ,QAAAA,EAAgB,KAChBiJ,OAAAA,CACP,CAEHtG,QAAiBiE,EAAcG,GAC7BvC,KAAKxE,QAAQ2C,QAAQ6B,KAAKyE,OAASrC,EAAMuC,KAAKC,UAAUrC,GAC1D,CAEAxF,QAAiBqF,GACf,OAAOuC,KAAKE,MAAM7E,KAAKxE,QAAQuB,QAAQiD,KAAKyE,OAASrC,GACvD,CAEA0C,WAAW1C,GACT,OAAOpC,KAAKxE,QAAQsJ,WAAW9E,KAAKyE,OAASrC,EAC/C,CAEA2C,QACE,OAAO/E,KAAKxE,QAAQuJ,OACtB,E","sources":["webpack:///./src/easyops-navbar-alerts/index.tsx","webpack:///./src/easyops-navbar-alerts/styles.shadow.css","webpack:///../../node_modules/css-loader/dist/runtime/api.js","webpack:///../../node_modules/css-loader/dist/runtime/noSourceMaps.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/applyDecs2305.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/checkInRHS.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/typeof.js","webpack:///../../src/JsonStorage.ts"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport { getRuntime } from \"@next-core/runtime\";\nimport { useCurrentApp } from \"@next-core/react-runtime\";\nimport { auth } from \"@next-core/easyops-runtime\";\nimport \"@next-core/theme\";\nimport { JsonStorage } from \"@next-shared/general/JsonStorage\";\nimport moment from \"moment\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport styleText from \"./styles.shadow.css\";\n\nexport const WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nexport const WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\nconst { defineElement, property } = createDecorators();\n\n/**\n * 构件 `nav.easyops-navbar-alerts`\n */\nexport\n@defineElement(\"nav.easyops-navbar-alerts\", {\n styleTexts: [styleText],\n})\nclass EasyopsNavbarAlerts extends ReactNextElement {\n render() {\n return <EasyopsNavbarAlertsComponent />;\n }\n}\n\ninterface SlowRenderInfo {\n renderTime: number;\n suggestTime: number;\n suggestUrl?: string;\n}\n\nconst storage = new JsonStorage(localStorage);\n\nexport function EasyopsNavbarAlertsComponent() {\n const [licenseDaysLeft, setLicenseDaysLeft] = useState<number | null>(null);\n const [slowRender, setSlowRender] = useState<SlowRenderInfo | null>(null);\n const currentApp = useCurrentApp();\n const licenseDismissedKey = useMemo(() => {\n const authInfo = auth.getAuth();\n return `license:${authInfo.org}`;\n }, []);\n\n useEffect(() => {\n const authInfo = auth.getAuth();\n const validDaysLeft = authInfo.license?.validDaysLeft;\n let dismissExpireAt: number;\n if (\n validDaysLeft &&\n validDaysLeft <= 15 &&\n authInfo.isAdmin &&\n ((dismissExpireAt = storage.getItem(licenseDismissedKey)),\n !dismissExpireAt || moment().unix() > dismissExpireAt)\n ) {\n setLicenseDaysLeft(validDaysLeft);\n }\n }, [licenseDismissedKey]);\n\n useEffect(() => {\n const handelRouteRender = (e: Event): void => {\n const renderTime = (e as CustomEvent<{ renderTime: number }>).detail\n .renderTime;\n const { loadTime, loadInfoPage } = getRuntime().getMiscSettings() as {\n loadTime: number;\n loadInfoPage?: string;\n };\n if (currentApp?.isBuildPush && loadTime > 0 && renderTime > loadTime) {\n setSlowRender({\n renderTime: millisecondToSecond(renderTime),\n suggestTime: millisecondToSecond(loadTime),\n suggestUrl: loadInfoPage,\n });\n }\n };\n window.addEventListener(\"route.render\", handelRouteRender);\n return () => {\n window.removeEventListener(\"route.render\", handelRouteRender);\n };\n }, [currentApp]);\n\n const handleLicenseAlertDismiss = useCallback(() => {\n // 一天内不再显示。\n storage.setItem(licenseDismissedKey, moment().unix() + 86400);\n setLicenseDaysLeft(null);\n }, [licenseDismissedKey]);\n\n return (\n <>\n {slowRender && (\n <Alert\n text={`您的页面存在性能问题, 当前页面渲染时间 ${slowRender.renderTime} 秒, 规定阈值为: ${slowRender.suggestTime} 秒, 您已超过。请您针对该页面进行性能优化!`}\n type=\"warning\"\n link={\n slowRender.suggestUrl\n ? {\n label: \"建议解决思路\",\n url: slowRender.suggestUrl,\n }\n : undefined\n }\n />\n )}\n {licenseDaysLeft !== null && (\n <Alert\n text={`离 License 过期还有 ${licenseDaysLeft} 天`}\n type=\"info\"\n closable\n onClose={handleLicenseAlertDismiss}\n />\n )}\n </>\n );\n}\n\ninterface AlertProps {\n text: string;\n type: \"info\" | \"warning\";\n closable?: boolean;\n link?: {\n label: string;\n url: string;\n };\n onClose?: () => void;\n}\n\nfunction Alert({ text, type, closable, link, onClose }: AlertProps) {\n return (\n <div className={`alert ${type}`}>\n <span className=\"text\">{text}</span>\n {link && (\n <WrappedLink className=\"link\" href={link.url} target=\"_blank\">\n {link.label}\n </WrappedLink>\n )}\n {closable && (\n <WrappedIcon\n lib=\"antd\"\n icon=\"close\"\n className=\"icon\"\n role=\"button\"\n onClick={onClose}\n />\n )}\n </div>\n );\n}\n\nfunction millisecondToSecond(millisecond: number) {\n return Math.floor(millisecond * 100) / 1e5;\n}\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}.alert{height:32px;padding:0 20px;display:flex;justify-content:center;align-items:center}.text{color:var(--antd-text-color);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.icon{margin-left:20px;cursor:pointer;color:#8c8c8c}.info{background-color:var(--color-info-bg)}.warning{background-color:var(--color-warning-bg)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","\"use strict\";\n\n/*\n MIT License http://www.opensource.org/licenses/mit-license.php\n Author Tobias Koppers @sokra\n*/\nmodule.exports = function (cssWithMappingToString) {\n var list = [];\n\n // return the list of modules as css string\n list.toString = function toString() {\n return this.map(function (item) {\n var content = \"\";\n var needLayer = typeof item[5] !== \"undefined\";\n if (item[4]) {\n content += \"@supports (\".concat(item[4], \") {\");\n }\n if (item[2]) {\n content += \"@media \".concat(item[2], \" {\");\n }\n if (needLayer) {\n content += \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\");\n }\n content += cssWithMappingToString(item);\n if (needLayer) {\n content += \"}\";\n }\n if (item[2]) {\n content += \"}\";\n }\n if (item[4]) {\n content += \"}\";\n }\n return content;\n }).join(\"\");\n };\n\n // import a list of modules into the list\n list.i = function i(modules, media, dedupe, supports, layer) {\n if (typeof modules === \"string\") {\n modules = [[null, modules, undefined]];\n }\n var alreadyImportedModules = {};\n if (dedupe) {\n for (var k = 0; k < this.length; k++) {\n var id = this[k][0];\n if (id != null) {\n alreadyImportedModules[id] = true;\n }\n }\n }\n for (var _k = 0; _k < modules.length; _k++) {\n var item = [].concat(modules[_k]);\n if (dedupe && alreadyImportedModules[item[0]]) {\n continue;\n }\n if (typeof layer !== \"undefined\") {\n if (typeof item[5] === \"undefined\") {\n item[5] = layer;\n } else {\n item[1] = \"@layer\".concat(item[5].length > 0 ? \" \".concat(item[5]) : \"\", \" {\").concat(item[1], \"}\");\n item[5] = layer;\n }\n }\n if (media) {\n if (!item[2]) {\n item[2] = media;\n } else {\n item[1] = \"@media \".concat(item[2], \" {\").concat(item[1], \"}\");\n item[2] = media;\n }\n }\n if (supports) {\n if (!item[4]) {\n item[4] = \"\".concat(supports);\n } else {\n item[1] = \"@supports (\".concat(item[4], \") {\").concat(item[1], \"}\");\n item[4] = supports;\n }\n }\n list.push(item);\n }\n };\n return list;\n};","\"use strict\";\n\nmodule.exports = function (i) {\n return i[1];\n};","import _typeof from \"./typeof.js\";\nimport checkInRHS from \"./checkInRHS.js\";\nfunction createAddInitializerMethod(e, t) {\n return function (r) {\n assertNotFinished(t, \"addInitializer\"), assertCallable(r, \"An initializer\"), e.push(r);\n };\n}\nfunction assertInstanceIfPrivate(e, t) {\n if (!e(t)) throw new TypeError(\"Attempted to access private element on non-instance\");\n}\nfunction memberDec(e, t, r, n, a, i, s, o, c, l) {\n var u;\n switch (i) {\n case 1:\n u = \"accessor\";\n break;\n case 2:\n u = \"method\";\n break;\n case 3:\n u = \"getter\";\n break;\n case 4:\n u = \"setter\";\n break;\n default:\n u = \"field\";\n }\n var f,\n d,\n p = {\n kind: u,\n name: o ? \"#\" + r : r,\n \"static\": s,\n \"private\": o\n },\n h = {\n v: !1\n };\n if (0 !== i && (p.addInitializer = createAddInitializerMethod(a, h)), o || 0 !== i && 2 !== i) {\n if (2 === i) f = function f(e) {\n return assertInstanceIfPrivate(l, e), n.value;\n };else {\n var v = 0 === i || 1 === i;\n (v || 3 === i) && (f = o ? function (e) {\n return assertInstanceIfPrivate(l, e), n.get.call(e);\n } : function (e) {\n return n.get.call(e);\n }), (v || 4 === i) && (d = o ? function (e, t) {\n assertInstanceIfPrivate(l, e), n.set.call(e, t);\n } : function (e, t) {\n n.set.call(e, t);\n });\n }\n } else f = function f(e) {\n return e[r];\n }, 0 === i && (d = function d(e, t) {\n e[r] = t;\n });\n var y = o ? l.bind() : function (e) {\n return r in e;\n };\n p.access = f && d ? {\n get: f,\n set: d,\n has: y\n } : f ? {\n get: f,\n has: y\n } : {\n set: d,\n has: y\n };\n try {\n return e.call(t, c, p);\n } finally {\n h.v = !0;\n }\n}\nfunction assertNotFinished(e, t) {\n if (e.v) throw new Error(\"attempted to call \" + t + \" after decoration was finished\");\n}\nfunction assertCallable(e, t) {\n if (\"function\" != typeof e) throw new TypeError(t + \" must be a function\");\n}\nfunction assertValidReturnValue(e, t) {\n var r = _typeof(t);\n if (1 === e) {\n if (\"object\" !== r || null === t) throw new TypeError(\"accessor decorators must return an object with get, set, or init properties or void 0\");\n void 0 !== t.get && assertCallable(t.get, \"accessor.get\"), void 0 !== t.set && assertCallable(t.set, \"accessor.set\"), void 0 !== t.init && assertCallable(t.init, \"accessor.init\");\n } else if (\"function\" !== r) {\n var n;\n throw n = 0 === e ? \"field\" : 5 === e ? \"class\" : \"method\", new TypeError(n + \" decorators must return a function or void 0\");\n }\n}\nfunction curryThis1(e) {\n return function () {\n return e(this);\n };\n}\nfunction curryThis2(e) {\n return function (t) {\n e(this, t);\n };\n}\nfunction applyMemberDec(e, t, r, n, a, i, s, o, c, l) {\n var u,\n f,\n d,\n p,\n h,\n v,\n y = r[0];\n n || Array.isArray(y) || (y = [y]), o ? u = 0 === i || 1 === i ? {\n get: curryThis1(r[3]),\n set: curryThis2(r[4])\n } : 3 === i ? {\n get: r[3]\n } : 4 === i ? {\n set: r[3]\n } : {\n value: r[3]\n } : 0 !== i && (u = Object.getOwnPropertyDescriptor(t, a)), 1 === i ? d = {\n get: u.get,\n set: u.set\n } : 2 === i ? d = u.value : 3 === i ? d = u.get : 4 === i && (d = u.set);\n for (var g = n ? 2 : 1, m = y.length - 1; m >= 0; m -= g) {\n var b;\n if (void 0 !== (p = memberDec(y[m], n ? y[m - 1] : void 0, a, u, c, i, s, o, d, l))) assertValidReturnValue(i, p), 0 === i ? b = p : 1 === i ? (b = p.init, h = p.get || d.get, v = p.set || d.set, d = {\n get: h,\n set: v\n }) : d = p, void 0 !== b && (void 0 === f ? f = b : \"function\" == typeof f ? f = [f, b] : f.push(b));\n }\n if (0 === i || 1 === i) {\n if (void 0 === f) f = function f(e, t) {\n return t;\n };else if (\"function\" != typeof f) {\n var I = f;\n f = function f(e, t) {\n for (var r = t, n = I.length - 1; n >= 0; n--) r = I[n].call(e, r);\n return r;\n };\n } else {\n var w = f;\n f = function f(e, t) {\n return w.call(e, t);\n };\n }\n e.push(f);\n }\n 0 !== i && (1 === i ? (u.get = d.get, u.set = d.set) : 2 === i ? u.value = d : 3 === i ? u.get = d : 4 === i && (u.set = d), o ? 1 === i ? (e.push(function (e, t) {\n return d.get.call(e, t);\n }), e.push(function (e, t) {\n return d.set.call(e, t);\n })) : 2 === i ? e.push(d) : e.push(function (e, t) {\n return d.call(e, t);\n }) : Object.defineProperty(t, a, u));\n}\nfunction applyMemberDecs(e, t, r) {\n for (var n, a, i, s = [], o = new Map(), c = new Map(), l = 0; l < t.length; l++) {\n var u = t[l];\n if (Array.isArray(u)) {\n var f,\n d,\n p = u[1],\n h = u[2],\n v = u.length > 3,\n y = 16 & p,\n g = !!(8 & p),\n m = r;\n if (p &= 7, g ? (f = e, 0 !== p && (d = a = a || []), v && !i && (i = function i(t) {\n return checkInRHS(t) === e;\n }), m = i) : (f = e.prototype, 0 !== p && (d = n = n || [])), 0 !== p && !v) {\n var b = g ? c : o,\n I = b.get(h) || 0;\n if (!0 === I || 3 === I && 4 !== p || 4 === I && 3 !== p) throw new Error(\"Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: \" + h);\n b.set(h, !(!I && p > 2) || p);\n }\n applyMemberDec(s, f, u, y, h, p, g, v, d, m);\n }\n }\n return pushInitializers(s, n), pushInitializers(s, a), s;\n}\nfunction pushInitializers(e, t) {\n t && e.push(function (e) {\n for (var r = 0; r < t.length; r++) t[r].call(e);\n return e;\n });\n}\nfunction applyClassDecs(e, t, r) {\n if (t.length) {\n for (var n = [], a = e, i = e.name, s = r ? 2 : 1, o = t.length - 1; o >= 0; o -= s) {\n var c = {\n v: !1\n };\n try {\n var l = t[o].call(r ? t[o - 1] : void 0, a, {\n kind: \"class\",\n name: i,\n addInitializer: createAddInitializerMethod(n, c)\n });\n } finally {\n c.v = !0;\n }\n void 0 !== l && (assertValidReturnValue(5, l), a = l);\n }\n return [a, function () {\n for (var e = 0; e < n.length; e++) n[e].call(a);\n }];\n }\n}\nexport default function applyDecs2305(e, t, r, n, a) {\n return {\n e: applyMemberDecs(e, t, a),\n get c() {\n return applyClassDecs(e, r, n);\n }\n };\n}","import _typeof from \"./typeof.js\";\nexport default function _checkInRHS(e) {\n if (Object(e) !== e) throw TypeError(\"right-hand side of 'in' should be an object, got \" + (null !== e ? _typeof(e) : \"null\"));\n return e;\n}","export default function _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}","export class JsonStorage {\n constructor(\n private storage: Storage,\n private prefix: string = \"brick-next-\"\n ) {}\n\n setItem<T = any>(name: string, value: T): void {\n this.storage.setItem(this.prefix + name, JSON.stringify(value));\n }\n\n getItem<T = any>(name: string): T {\n return JSON.parse(this.storage.getItem(this.prefix + name) as string) as T;\n }\n\n removeItem(name: string): void {\n return this.storage.removeItem(this.prefix + name);\n }\n\n clear(): void {\n return this.storage.clear();\n }\n}\n"],"names":["_EasyopsNavbarAlerts","WrappedIcon","wrapBrick","WrappedLink","defineElement","property","createDecorators","_dec","styleTexts","styleText","EasyopsNavbarAlerts","ReactNextElement","render","React","EasyopsNavbarAlertsComponent","_class","_initClass","_applyDecs","c","storage","JsonStorage","localStorage","licenseDaysLeft","setLicenseDaysLeft","useState","slowRender","setSlowRender","currentApp","useCurrentApp","licenseDismissedKey","useMemo","authInfo","auth","getAuth","concat","org","useEffect","_authInfo$license","dismissExpireAt","validDaysLeft","license","isAdmin","getItem","moment","unix","handelRouteRender","e","renderTime","detail","loadTime","loadInfoPage","getRuntime","getMiscSettings","isBuildPush","millisecondToSecond","suggestTime","suggestUrl","window","addEventListener","removeEventListener","handleLicenseAlertDismiss","useCallback","setItem","Alert","text","type","link","label","url","undefined","closable","onClose","_ref","className","href","target","lib","icon","role","onClick","millisecond","Math","floor","___CSS_LOADER_EXPORT___","push","module","id","toString","exports","cssWithMappingToString","list","this","map","item","content","needLayer","length","join","i","modules","media","dedupe","supports","layer","alreadyImportedModules","k","_k","createAddInitializerMethod","t","r","v","Error","assertNotFinished","assertCallable","assertInstanceIfPrivate","TypeError","memberDec","n","a","s","o","l","u","f","d","p","kind","name","h","addInitializer","value","get","call","set","y","bind","access","has","assertValidReturnValue","init","curryThis1","curryThis2","applyMemberDec","Array","isArray","Object","getOwnPropertyDescriptor","g","m","b","I","w","defineProperty","applyMemberDecs","Map","prototype","pushInitializers","applyDecs2305","applyClassDecs","_checkInRHS","_typeof","Symbol","iterator","constructor","prefix","arguments","JSON","stringify","parse","removeItem","clear"],"sourceRoot":""}
@@ -0,0 +1,2 @@
1
+ "use strict";(self.webpackChunk_next_bricks_nav=self.webpackChunk_next_bricks_nav||[]).push([[8207],{658:(e,t,s)=>{s.r(t),s.d(t,{EoLaunchpadButtonV2:()=>n,EoLaunchpadButtonV2Component:()=>w});var r,c,i,n,h=s(2604),l=s(8657),a=s.n(l),o=s(5366),u=s(4511),d=s(7004),f=(s(9234),s(7217)),v=s(7370),p=s(2779),m=s.n(p),F=s(4758),g=s(6976),k=s(7694),E=s(2085),{defineElement:b}=(0,o.createDecorators)(),I=(0,d.unwrapProvider)("basic.lock-body-scroll");c=b("eo-launchpad-button-v2",{styleTexts:[g.Z]});class Z extends u.ReactNextElement{disconnectedCallback(){super.disconnectedCallback(),I(this,!1)}render(){return a().createElement(w,{host:this})}}function w(e){var{host:t}=e,[s,r]=(0,l.useState)(!1),[c,i]=(0,l.useState)(!1),n=()=>{i((e=>!e))};return(0,l.useEffect)((()=>(0,f.getHistory)().listen((()=>{i(!1)}))),[]),(0,l.useEffect)((()=>{c&&!s&&r(!0)}),[c,s]),(0,l.useEffect)((()=>(v.Z.filter=function(){return!0},(0,v.Z)("alt+l",(e=>{e.preventDefault(),i((e=>!e))})),(0,v.Z)("esc",(()=>{i(!1)})),()=>{v.Z.unbind("alt+l"),v.Z.unbind("esc")})),[]),(0,l.useEffect)((()=>{I(t,c)}),[c,t]),(0,l.useEffect)((()=>{E.yp.schedulePrefetch(),E.sK.schedulePrefetch()}),[]),a().createElement(a().Fragment,null,a().createElement("a",{role:"button",className:m()("launchpad-button",{active:c}),onClick:n},a().createElement(F.Z,null)),a().createElement("div",{className:m()("mask",{active:c}),onClick:n}),s&&a().createElement(k.Z,{active:c}))}i=Z,[n,r]=(0,h.Z)(i,[],[c],0,void 0,u.ReactNextElement).c,r()},2301:(e,t,s)=>{s.d(t,{i:()=>i});var r=s(4795),c=s(6666);class i{constructor(e){(0,c.Z)(this,"preFetchId",null),(0,c.Z)(this,"preFetchScheduled",!1),(0,c.Z)(this,"firstFetchPromise",null),(0,c.Z)(this,"isFetching",!1),(0,c.Z)(this,"task",void 0),this.task=e}schedulePrefetch(){var e=this;if(!this.preFetchScheduled){this.preFetchScheduled=!0;var t=function(){var t=(0,r.Z)((function*(){e.preFetchId=null,e.fetch()}));return function(){return t.apply(this,arguments)}}();"function"==typeof window.requestIdleCallback?this.preFetchId=window.requestIdleCallback(t):this.preFetchId=setTimeout(t)}}fetch(e){var t;return this.preFetchId&&("function"==typeof window.cancelIdleCallback?cancelIdleCallback(this.preFetchId):clearTimeout(this.preFetchId),this.preFetchId=null),this.isFetching&&!e||(this.isFetching=!0,(t=this.task()).catch((e=>{console.error(e),this.firstFetchPromise=null})).finally((()=>{this.isFetching=!1})),this.firstFetchPromise||(this.firstFetchPromise=t),!e)?this.firstFetchPromise:t}}},4758:(e,t,s)=>{s.d(t,{Z:()=>i});var r=s(7896),c=s(8657);const i=e=>c.createElement("svg",(0,r.Z)({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,viewBox:"0 0 16 16"},e),c.createElement("g",{fill:"currentColor",fillRule:"nonzero"},c.createElement("path",{d:"M0 0h4v4H0zM0 6h4v4H0zM6 0h4v4H6zM6 6h4v4H6zM12 0h4v4h-4zM12 6h4v4h-4zM0 12h4v4H0zM6 12h4v4H6zM12 12h4v4h-4z"})))},2890:(e,t,s)=>{s.d(t,{o:()=>r});class r{constructor(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"brick-next-";this.storage=e,this.prefix=t}setItem(e,t){this.storage.setItem(this.prefix+e,JSON.stringify(t))}getItem(e){return JSON.parse(this.storage.getItem(this.prefix+e))}removeItem(e){return this.storage.removeItem(this.prefix+e)}clear(){return this.storage.clear()}}}}]);
2
+ //# sourceMappingURL=eo-launchpad-button-v2.5f256b20.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chunks/eo-launchpad-button-v2.75648e36.js","mappings":"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","sources":["webpack:///./src/launchpad-button-v2/index.tsx","webpack:///./src/shared/DeferredService.ts","webpack:///./src/images/launchpad.svg","webpack:///../../src/JsonStorage.ts"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\nimport \"@next-core/theme\";\nimport { getHistory } from \"@next-core/runtime\";\nimport type { lockBodyScroll as _lockBodyScroll } from \"@next-bricks/basic/data-providers/lock-body-scroll/lock-body-scroll\";\n// import { useTranslation, initializeReactI18n } from \"@next-core/i18n/react\";\nimport hotkeys from \"hotkeys-js\";\nimport classNames from \"classnames\";\n// import { K, NS, locales } from \"./i18n.js\";\nimport LaunchpadSvg from \"../images/launchpad.svg\";\nimport styleText from \"./styles.shadow.css\";\nimport { Launchpad } from \"./Launchpad\";\nimport { deferredFavorites, deferredLaunchpadInfo } from \"./useLaunchpadInfo\";\n\n// initializeReactI18n(NS, locales);\n\nconst { defineElement } = createDecorators();\n\nconst lockBodyScroll = unwrapProvider<typeof _lockBodyScroll>(\n \"basic.lock-body-scroll\"\n);\n\n/**\n * 构件 `eo-launchpad-button-v2`\n */\nexport\n@defineElement(\"eo-launchpad-button-v2\", {\n styleTexts: [styleText],\n})\nclass EoLaunchpadButtonV2 extends ReactNextElement {\n disconnectedCallback(): void {\n super.disconnectedCallback();\n lockBodyScroll(this, false);\n }\n\n render() {\n return <EoLaunchpadButtonV2Component host={this} />;\n }\n}\n\nexport function EoLaunchpadButtonV2Component({ host }: { host: HTMLElement }) {\n const [initialized, setInitialized] = useState(false);\n const [active, setActive] = useState(false);\n const toggleLaunchpad = (): void => {\n setActive((previous) => !previous);\n };\n\n useEffect(() => {\n // 当切换页面时,关闭 Launchpad。\n const unlisten = getHistory().listen(() => {\n setActive(false);\n });\n return unlisten;\n }, []);\n\n useEffect(() => {\n // 打开一次 launchpad 后,保留 DOM。\n if (active && !initialized) {\n setInitialized(true);\n }\n }, [active, initialized]);\n\n // istanbul ignore next\n useEffect(() => {\n hotkeys.filter = function () {\n return true;\n };\n\n // 快捷打开/关闭 Launchpad\n hotkeys(\"alt+l\", (event) => {\n event.preventDefault();\n setActive((previous) => !previous);\n });\n\n // 按 Esc 关闭 Launchpad\n hotkeys(\"esc\", () => {\n setActive(false);\n });\n\n return () => {\n hotkeys.unbind(\"alt+l\");\n hotkeys.unbind(\"esc\");\n };\n }, []);\n\n useEffect(() => {\n lockBodyScroll(host, active);\n }, [active, host]);\n\n useEffect(() => {\n deferredLaunchpadInfo.schedulePrefetch();\n deferredFavorites.schedulePrefetch();\n }, []);\n\n return (\n <>\n <a\n role=\"button\"\n className={classNames(\"launchpad-button\", { active })}\n onClick={toggleLaunchpad}\n >\n <LaunchpadSvg />\n </a>\n <div\n className={classNames(\"mask\", { active })}\n onClick={toggleLaunchpad}\n ></div>\n {initialized && <Launchpad active={active} />}\n </>\n );\n}\n","export class DeferredService {\n private preFetchId: number | null = null;\n private preFetchScheduled = false;\n private firstFetchPromise: Promise<unknown> | null = null;\n private isFetching = false;\n private readonly task: () => Promise<unknown>;\n\n constructor(task: () => Promise<unknown>) {\n this.task = task;\n }\n\n schedulePrefetch(): void {\n if (!this.preFetchScheduled) {\n this.preFetchScheduled = true;\n const preFetchLaunchpadInfo = async (): Promise<void> => {\n this.preFetchId = null;\n this.fetch();\n };\n // istanbul ignore if\n if (typeof window.requestIdleCallback === \"function\") {\n this.preFetchId = window.requestIdleCallback(preFetchLaunchpadInfo);\n } else {\n this.preFetchId = setTimeout(\n preFetchLaunchpadInfo\n ) as unknown as number;\n }\n }\n }\n\n fetch(eager?: boolean): Promise<unknown> {\n if (this.preFetchId) {\n // istanbul ignore if\n if (typeof window.cancelIdleCallback === \"function\") {\n cancelIdleCallback(this.preFetchId);\n } else {\n clearTimeout(this.preFetchId);\n }\n this.preFetchId = null;\n }\n\n let promise: Promise<unknown>;\n if (!this.isFetching || eager) {\n this.isFetching = true;\n promise = this.task();\n promise\n .catch((error) => {\n // eslint-disable-next-line no-console\n console.error(error);\n this.firstFetchPromise = null;\n })\n .finally(() => {\n this.isFetching = false;\n });\n if (!this.firstFetchPromise) {\n this.firstFetchPromise = promise;\n }\n if (eager) {\n return promise;\n }\n }\n return this.firstFetchPromise!;\n }\n}\n","import * as React from \"react\";\nconst SvgLaunchpad = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width={16} height={16} viewBox=\"0 0 16 16\" {...props}><g fill=\"currentColor\" fillRule=\"nonzero\"><path d=\"M0 0h4v4H0zM0 6h4v4H0zM6 0h4v4H6zM6 6h4v4H6zM12 0h4v4h-4zM12 6h4v4h-4zM0 12h4v4H0zM6 12h4v4H6zM12 12h4v4h-4z\" /></g></svg>;\nexport default SvgLaunchpad;","export class JsonStorage {\n constructor(\n private storage: Storage,\n private prefix: string = \"brick-next-\"\n ) {}\n\n setItem<T = any>(name: string, value: T): void {\n this.storage.setItem(this.prefix + name, JSON.stringify(value));\n }\n\n getItem<T = any>(name: string): T {\n return JSON.parse(this.storage.getItem(this.prefix + name) as string) as T;\n }\n\n removeItem(name: string): void {\n return this.storage.removeItem(this.prefix + name);\n }\n\n clear(): void {\n return this.storage.clear();\n }\n}\n"],"names":["_EoLaunchpadButtonV","defineElement","createDecorators","lockBodyScroll","unwrapProvider","_dec","styleTexts","styleText","EoLaunchpadButtonV2","ReactNextElement","disconnectedCallback","super","this","render","React","EoLaunchpadButtonV2Component","host","_ref","initialized","setInitialized","useState","active","setActive","toggleLaunchpad","previous","useEffect","getHistory","listen","hotkeys","filter","event","preventDefault","unbind","deferredLaunchpadInfo","schedulePrefetch","deferredFavorites","role","className","classNames","onClick","LaunchpadSvg","Launchpad","_class","_initClass","_applyDecs","c","DeferredService","constructor","task","_defineProperty","_this","preFetchScheduled","preFetchLaunchpadInfo","_asyncToGenerator","preFetchId","fetch","apply","arguments","window","requestIdleCallback","setTimeout","eager","promise","cancelIdleCallback","clearTimeout","isFetching","catch","error","console","firstFetchPromise","finally","props","_extends","xmlns","width","height","viewBox","fill","fillRule","d","JsonStorage","storage","prefix","length","undefined","setItem","name","value","JSON","stringify","getItem","parse","removeItem","clear"],"sourceRoot":""}
1
+ {"version":3,"file":"chunks/eo-launchpad-button-v2.5f256b20.js","mappings":"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","sources":["webpack:///./src/launchpad-button-v2/index.tsx","webpack:///./src/shared/DeferredService.ts","webpack:///./src/images/launchpad.svg","webpack:///../../src/JsonStorage.ts"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\nimport \"@next-core/theme\";\nimport { getHistory } from \"@next-core/runtime\";\nimport type { lockBodyScroll as _lockBodyScroll } from \"@next-bricks/basic/data-providers/lock-body-scroll/lock-body-scroll\";\n// import { useTranslation, initializeReactI18n } from \"@next-core/i18n/react\";\nimport hotkeys from \"hotkeys-js\";\nimport classNames from \"classnames\";\n// import { K, NS, locales } from \"./i18n.js\";\nimport LaunchpadSvg from \"../images/launchpad.svg\";\nimport styleText from \"./styles.shadow.css\";\nimport { Launchpad } from \"./Launchpad\";\nimport { deferredFavorites, deferredLaunchpadInfo } from \"./useLaunchpadInfo\";\n\n// initializeReactI18n(NS, locales);\n\nconst { defineElement } = createDecorators();\n\nconst lockBodyScroll = unwrapProvider<typeof _lockBodyScroll>(\n \"basic.lock-body-scroll\"\n);\n\n/**\n * 构件 `eo-launchpad-button-v2`\n */\nexport\n@defineElement(\"eo-launchpad-button-v2\", {\n styleTexts: [styleText],\n})\nclass EoLaunchpadButtonV2 extends ReactNextElement {\n disconnectedCallback(): void {\n super.disconnectedCallback();\n lockBodyScroll(this, false);\n }\n\n render() {\n return <EoLaunchpadButtonV2Component host={this} />;\n }\n}\n\nexport function EoLaunchpadButtonV2Component({ host }: { host: HTMLElement }) {\n const [initialized, setInitialized] = useState(false);\n const [active, setActive] = useState(false);\n const toggleLaunchpad = (): void => {\n setActive((previous) => !previous);\n };\n\n useEffect(() => {\n // 当切换页面时,关闭 Launchpad。\n const unlisten = getHistory().listen(() => {\n setActive(false);\n });\n return unlisten;\n }, []);\n\n useEffect(() => {\n // 打开一次 launchpad 后,保留 DOM。\n if (active && !initialized) {\n setInitialized(true);\n }\n }, [active, initialized]);\n\n // istanbul ignore next\n useEffect(() => {\n hotkeys.filter = function () {\n return true;\n };\n\n // 快捷打开/关闭 Launchpad\n hotkeys(\"alt+l\", (event) => {\n event.preventDefault();\n setActive((previous) => !previous);\n });\n\n // 按 Esc 关闭 Launchpad\n hotkeys(\"esc\", () => {\n setActive(false);\n });\n\n return () => {\n hotkeys.unbind(\"alt+l\");\n hotkeys.unbind(\"esc\");\n };\n }, []);\n\n useEffect(() => {\n lockBodyScroll(host, active);\n }, [active, host]);\n\n useEffect(() => {\n deferredLaunchpadInfo.schedulePrefetch();\n deferredFavorites.schedulePrefetch();\n }, []);\n\n return (\n <>\n <a\n role=\"button\"\n className={classNames(\"launchpad-button\", { active })}\n onClick={toggleLaunchpad}\n >\n <LaunchpadSvg />\n </a>\n <div\n className={classNames(\"mask\", { active })}\n onClick={toggleLaunchpad}\n ></div>\n {initialized && <Launchpad active={active} />}\n </>\n );\n}\n","export class DeferredService {\n private preFetchId: number | null = null;\n private preFetchScheduled = false;\n private firstFetchPromise: Promise<unknown> | null = null;\n private isFetching = false;\n private readonly task: () => Promise<unknown>;\n\n constructor(task: () => Promise<unknown>) {\n this.task = task;\n }\n\n schedulePrefetch(): void {\n if (!this.preFetchScheduled) {\n this.preFetchScheduled = true;\n const preFetchLaunchpadInfo = async (): Promise<void> => {\n this.preFetchId = null;\n this.fetch();\n };\n // istanbul ignore if\n if (typeof window.requestIdleCallback === \"function\") {\n this.preFetchId = window.requestIdleCallback(preFetchLaunchpadInfo);\n } else {\n this.preFetchId = setTimeout(\n preFetchLaunchpadInfo\n ) as unknown as number;\n }\n }\n }\n\n fetch(eager?: boolean): Promise<unknown> {\n if (this.preFetchId) {\n // istanbul ignore if\n if (typeof window.cancelIdleCallback === \"function\") {\n cancelIdleCallback(this.preFetchId);\n } else {\n clearTimeout(this.preFetchId);\n }\n this.preFetchId = null;\n }\n\n let promise: Promise<unknown>;\n if (!this.isFetching || eager) {\n this.isFetching = true;\n promise = this.task();\n promise\n .catch((error) => {\n // eslint-disable-next-line no-console\n console.error(error);\n this.firstFetchPromise = null;\n })\n .finally(() => {\n this.isFetching = false;\n });\n if (!this.firstFetchPromise) {\n this.firstFetchPromise = promise;\n }\n if (eager) {\n return promise;\n }\n }\n return this.firstFetchPromise!;\n }\n}\n","import * as React from \"react\";\nconst SvgLaunchpad = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width={16} height={16} viewBox=\"0 0 16 16\" {...props}><g fill=\"currentColor\" fillRule=\"nonzero\"><path d=\"M0 0h4v4H0zM0 6h4v4H0zM6 0h4v4H6zM6 6h4v4H6zM12 0h4v4h-4zM12 6h4v4h-4zM0 12h4v4H0zM6 12h4v4H6zM12 12h4v4h-4z\" /></g></svg>;\nexport default SvgLaunchpad;","export class JsonStorage {\n constructor(\n private storage: Storage,\n private prefix: string = \"brick-next-\"\n ) {}\n\n setItem<T = any>(name: string, value: T): void {\n this.storage.setItem(this.prefix + name, JSON.stringify(value));\n }\n\n getItem<T = any>(name: string): T {\n return JSON.parse(this.storage.getItem(this.prefix + name) as string) as T;\n }\n\n removeItem(name: string): void {\n return this.storage.removeItem(this.prefix + name);\n }\n\n clear(): void {\n return this.storage.clear();\n }\n}\n"],"names":["_EoLaunchpadButtonV","defineElement","createDecorators","lockBodyScroll","unwrapProvider","_dec","styleTexts","styleText","EoLaunchpadButtonV2","ReactNextElement","disconnectedCallback","super","this","render","React","EoLaunchpadButtonV2Component","host","_ref","initialized","setInitialized","useState","active","setActive","toggleLaunchpad","previous","useEffect","getHistory","listen","hotkeys","filter","event","preventDefault","unbind","deferredLaunchpadInfo","schedulePrefetch","deferredFavorites","role","className","classNames","onClick","LaunchpadSvg","Launchpad","_class","_initClass","_applyDecs","c","DeferredService","constructor","task","_defineProperty","_this","preFetchScheduled","preFetchLaunchpadInfo","_asyncToGenerator","preFetchId","fetch","apply","arguments","window","requestIdleCallback","setTimeout","eager","promise","cancelIdleCallback","clearTimeout","isFetching","catch","error","console","firstFetchPromise","finally","props","_extends","xmlns","width","height","viewBox","fill","fillRule","d","JsonStorage","storage","prefix","length","undefined","setItem","name","value","JSON","stringify","getItem","parse","removeItem","clear"],"sourceRoot":""}
@@ -1,2 +1,2 @@
1
- "use strict";(self.webpackChunk_next_bricks_nav=self.webpackChunk_next_bricks_nav||[]).push([[2517],{6404:(e,t,n)=>{n.r(t),n.d(t,{LaunchpadButton:()=>b});var a,c,r,s=n(2604),l=n(8657),u=n.n(l),i=n(5366),d=n(4511),k=n(8470),o=n(9077),x=(n(2230),n(4497)),_=n(2152);(0,o.initializeReactI18n)(x.NS,x.k);var b,{defineElement:h}=(0,i.createDecorators)();c=h("eo-launchpad-button",{styleTexts:[_.Z]});class p extends d.ReactNextElement{render(){return u().createElement(k.L,null)}}r=p,[b,a]=(0,s.Z)(r,[],[c],0,void 0,d.ReactNextElement).c,a()}}]);
2
- //# sourceMappingURL=eo-launchpad-button.5e4a1b39.js.map
1
+ "use strict";(self.webpackChunk_next_bricks_nav=self.webpackChunk_next_bricks_nav||[]).push([[2517],{6404:(e,t,n)=>{n.r(t),n.d(t,{LaunchpadButton:()=>b});var a,c,r,s=n(2604),l=n(8657),u=n.n(l),i=n(5366),d=n(4511),k=n(8470),o=n(9701),x=(n(9234),n(4497)),_=n(2152);(0,o.initializeReactI18n)(x.NS,x.k);var b,{defineElement:h}=(0,i.createDecorators)();c=h("eo-launchpad-button",{styleTexts:[_.Z]});class p extends d.ReactNextElement{render(){return u().createElement(k.L,null)}}r=p,[b,a]=(0,s.Z)(r,[],[c],0,void 0,d.ReactNextElement).c,a()}}]);
2
+ //# sourceMappingURL=eo-launchpad-button.8103d9bc.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chunks/eo-launchpad-button.5e4a1b39.js","mappings":"wQASAA,EAAAA,EAAAA,qBAAoBC,EAAAA,GAAIC,EAAAA,GAExB,IAEAC,GAFM,cAAEC,IAAkBC,EAAAA,EAAAA,oBAE1BC,EAICF,EAAc,sBAAuB,CACpCG,WAAY,CAACC,EAAAA,KADf,MAAAC,UAG8BC,EAAAA,iBAC5BC,SACE,OAAOC,IAAAA,cAACC,EAAAA,EAAwB,KAClC,EACDC,EAAAL,GAAAN,EAAAY,IAAAC,EAAAA,EAAAA,GAAAF,EAAA,IAAAR,GAAA,SAJ6BI,EAAAA,kBAAgBO,EAAAF,G","sources":["webpack:///./src/launchpad/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { LaunchpadButton as LaunchpadButtonComponent } from \"./LaunchpadButton/LaunchpadButton.js\";\nimport { initializeReactI18n } from \"@next-core/i18n/react\";\nimport \"@next-core/theme\";\nimport { NS, locales } from \"./i18n.js\";\nimport styleText from \"./LaunchpadButton/LaunchpadButton.shadow.css\";\n\ninitializeReactI18n(NS, locales);\n\nconst { defineElement } = createDecorators();\n\n/**\n * Launchpad 按钮构件\n * @author sailor\n */\n@defineElement(\"eo-launchpad-button\", {\n styleTexts: [styleText],\n})\nclass LaunchpadButton extends ReactNextElement {\n render() {\n return <LaunchpadButtonComponent />;\n }\n}\n\nexport { LaunchpadButton };\n"],"names":["initializeReactI18n","NS","locales","_LaunchpadButton","defineElement","createDecorators","_dec","styleTexts","styleText","LaunchpadButton","ReactNextElement","render","React","LaunchpadButtonComponent","_class","_initClass","_applyDecs","c"],"sourceRoot":""}
1
+ {"version":3,"file":"chunks/eo-launchpad-button.8103d9bc.js","mappings":"wQASAA,EAAAA,EAAAA,qBAAoBC,EAAAA,GAAIC,EAAAA,GAExB,IAEAC,GAFM,cAAEC,IAAkBC,EAAAA,EAAAA,oBAE1BC,EAICF,EAAc,sBAAuB,CACpCG,WAAY,CAACC,EAAAA,KADf,MAAAC,UAG8BC,EAAAA,iBAC5BC,SACE,OAAOC,IAAAA,cAACC,EAAAA,EAAwB,KAClC,EACDC,EAAAL,GAAAN,EAAAY,IAAAC,EAAAA,EAAAA,GAAAF,EAAA,IAAAR,GAAA,SAJ6BI,EAAAA,kBAAgBO,EAAAF,G","sources":["webpack:///./src/launchpad/index.tsx"],"sourcesContent":["import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { LaunchpadButton as LaunchpadButtonComponent } from \"./LaunchpadButton/LaunchpadButton.js\";\nimport { initializeReactI18n } from \"@next-core/i18n/react\";\nimport \"@next-core/theme\";\nimport { NS, locales } from \"./i18n.js\";\nimport styleText from \"./LaunchpadButton/LaunchpadButton.shadow.css\";\n\ninitializeReactI18n(NS, locales);\n\nconst { defineElement } = createDecorators();\n\n/**\n * Launchpad 按钮构件\n * @author sailor\n */\n@defineElement(\"eo-launchpad-button\", {\n styleTexts: [styleText],\n})\nclass LaunchpadButton extends ReactNextElement {\n render() {\n return <LaunchpadButtonComponent />;\n }\n}\n\nexport { LaunchpadButton };\n"],"names":["initializeReactI18n","NS","locales","_LaunchpadButton","defineElement","createDecorators","_dec","styleTexts","styleText","LaunchpadButton","ReactNextElement","render","React","LaunchpadButtonComponent","_class","_initClass","_applyDecs","c"],"sourceRoot":""}
@@ -0,0 +1,3 @@
1
+ /*! For license information please see eo-nav-menu.c83e8b62.js.LICENSE.txt */
2
+ (self.webpackChunk_next_bricks_nav=self.webpackChunk_next_bricks_nav||[]).push([[1163,6522,5628],{2041:(e,t,r)=>{"use strict";r.r(t),r.d(t,{NavMenu:()=>z});var n,i,o,a,s,c,l,u,p,m=r(4795),d=r(3395),f=r(381),h=r(687),v=r(2604),y=r(7896),g=r(8657),b=r.n(g),w=r(5366),E=r(7217),k=r(4511),x=r(9800),O=r(3808),Z=r(7993),T=(r(9234),r(2779)),j=r.n(T),S=r(1880),N=r(9705),D=r(2598),P=r(8462),I=r(8101),{defineElement:K,property:A}=(0,w.createDecorators)(),C=(0,k.wrapBrick)("eo-menu-item"),M=(0,k.wrapBrick)("eo-popover",{onVisibleChange:"visible.change",beforeVisibleChange:"before.visible.change"});function R(e){var{item:t}=e;return(0,O.cl)(t,e.topData)?b().createElement(L,(0,y.Z)({},e,{item:t})):(0,O.ty)(t)?b().createElement(V,(0,y.Z)({},e,{item:t})):b().createElement(_,(0,y.Z)({},e,{item:t}))}function _(e){var{item:t,index:r,hidden:n,showTooltip:i,selectedKey:o=[]}=e;return b().createElement(C,{"data-index":r,className:n?"overflow-menu-item":"",key:t.key,title:i?t.text:"",active:!!t.key&&o.includes(t.key)},(0,O.nC)(t,{width:"100%"}))}var z,F=e=>{var t,r=null!==(t=p)&&void 0!==t?t:p=window.innerWidth-document.body.clientWidth;document.body.style.paddingRight=e.detail?r+"px":"",document.body.style.overflow=e.detail?"hidden":"",document.body.style.touchAction=e.detail?"none":""};function L(e){var t,{index:r,hidden:n,item:i,topData:o,showTooltip:a,selectedKey:s=[],overflow:c}=e;return(null===(t=i.items)||void 0===t?void 0:t.length)>0?b().createElement(M,{"data-index":r,className:j()("popover",{subprime:!o,"overflow-menu-item":n}),trigger:"hover",placement:o?"bottom-start":"right-start",distance:0,anchorDisplay:"block",strategy:"fixed"},b().createElement(C,{className:"sub-menu-item-label",key:i.key,slot:"anchor",title:a?i.title:""},(0,O.cx)(i,!o)),b().createElement("div",{className:j()("sub-menu-wrapper",{"overflow-menu-wrapper":c})},i.items.map((e=>b().createElement(b().Fragment,{key:e.key},b().createElement(R,{item:e,selectedKey:s,showTooltip:a})))))):null}function V(e){var t,{item:r,showTooltip:n,selectedKey:i=[]}=e;return(null===(t=r.items)||void 0===t?void 0:t.length)>0?"category"===r.childLayout?b().createElement(W,{item:r,selectedKey:i,showTooltip:n,placement:"right-start",anchorDisplay:"block"}):"siteMap"===r.childLayout?b().createElement(B,{item:r,selectedKey:i,showTooltip:n,placement:"right-start",anchorDisplay:"block",topData:!1}):b().createElement(b().Fragment,null,b().createElement("div",{className:"group-label"},r.title),b().createElement("div",{className:"group-wrapper"},r.items.map((e=>b().createElement(b().Fragment,{key:e.key},b().createElement(R,{item:e,showTooltip:n,selectedKey:i})))))):null}function W(e){var t,{index:r,hidden:n,item:i,selectedKey:o=[],showTooltip:a,placement:s="bottom-start",anchorDisplay:c}=e;return(null===(t=i.items)||void 0===t?void 0:t.length)>0?b().createElement(M,{"data-index":r,className:j()("three-level-menu-popover","popover",{"overflow-menu-item":n}),trigger:"hover",placement:s,distance:0,key:i.key,strategy:"fixed",anchorDisplay:c,beforeVisibleChange:F},b().createElement(C,{className:"sub-menu-item-label",key:i.key,slot:"anchor",title:a?i.title:""},(0,O.cx)(i)),b().createElement("div",{className:"sub-menu-wrapper"},b().createElement(S.m,{menuItem:i,selectedKey:o}))):null}function B(e){var t,{index:r,hidden:n,item:i,selectedKey:o=[],showTooltip:a,placement:s="bottom-start",anchorDisplay:c,topData:l}=e,[u,p]=(0,g.useState)();return(null===(t=i.items)||void 0===t?void 0:t.length)>0?b().createElement(M,{"data-index":r,className:j()("popover",{"overflow-menu-item":n}),trigger:"hover",placement:s,distance:0,key:i.key,strategy:"fixed",anchorDisplay:c,beforeVisibleChange:e=>{p(e.detail),F(e)}},b().createElement(C,{className:"sub-menu-item-label",key:i.key,slot:"anchor",title:a?i.title:""},(0,O.cx)(i)),b().createElement("div",{className:j()("sub-menu-sit-map-wrapper",{"in-group-site-map":!l}),onClick:e=>e.stopPropagation()},b().createElement(N.hX,{menuGroup:i,selectedKey:o,visible:u}))):null}i=K("eo-nav-menu",{styleTexts:[D.Z,P.Z,I.Z,x.Z]}),o=A({attribute:!1}),s=A({type:Boolean});var G=new WeakMap,J=new WeakMap;class X extends k.ReactNextElement{constructor(){super(...arguments),(0,d.Z)(this,G,{writable:!0,value:(l(this),a(this))}),(0,d.Z)(this,J,{writable:!0,value:c(this)})}get menu(){return(0,h.Z)(this,G)}set menu(e){(0,f.Z)(this,G,e)}get showTooltip(){return(0,h.Z)(this,J)}set showTooltip(e){(0,f.Z)(this,J,e)}render(){return b().createElement(H,{menu:this.menu,showTooltip:this.showTooltip})}}function H(e){var t,r,{menu:n,showTooltip:i}=e,o=(0,E.getHistory)(),a=(0,g.useRef)(null),[s,c]=(0,g.useState)(o.location),[l,u]=(0,g.useState)(Number.MAX_SAFE_INTEGER),{pathname:p,search:d}=s,[f,h]=(0,g.useState)([]),v=function(){var e=(0,m.Z)((function*(){var e,{selectedKeys:t}=(0,Z.OZ)(null!==(e=null==n?void 0:n.menuItems)&&void 0!==e?e:[],p,d,"");h(t)}));return function(){return e.apply(this,arguments)}}();(0,g.useEffect)((()=>{var e=o.listen((e=>{c(e)}));return v(),e}),[]),(0,g.useEffect)((()=>{if(a.current){var e=new ResizeObserver((()=>{if(a.current){var e,{width:t}=null!==(e=a.current.getClientRects()[0])&&void 0!==e?e:{},r=a.current.childNodes;if(r.length&&t){for(var n=t,i=r.length,o=0;o<r.length;o++){var{width:s,height:c}=r[o].getClientRects()[0];if(!c&&n-40<0){i=o-1;break}if((n=n-s-(o>0?8:0))<0){i=o;break}}u(i<0?0:i)}}}));return e.observe(a.current),()=>{e.disconnect()}}}),[]);var y=(0,g.useMemo)((()=>({type:"subMenu",title:"···",items:null==n?void 0:n.menuItems.slice(l,n.menuItems.length)})),[null==n?void 0:n.menuItems,l]);return b().createElement("div",{ref:a,className:"nav-menu-wrapper"},null==n?void 0:n.menuItems.map(((e,t)=>{var r,n=l<=t;return b().createElement(b().Fragment,{key:e.key},(0,O.cl)(e,!0)&&"category"===e.childLayout&&null!==(r=e.items)&&void 0!==r&&r.length?b().createElement(W,{index:t,hidden:n,item:e,showTooltip:i,selectedKey:f}):"group"===e.type&&"siteMap"===e.childLayout?b().createElement(B,{index:t,hidden:n,item:e,showTooltip:i,selectedKey:f,topData:!0}):b().createElement(R,{index:t,hidden:n,item:e,showTooltip:i,selectedKey:f,topData:!0}))})),b().createElement(R,{hidden:l>(null!==(t=null==n||null===(r=n.menuItems)||void 0===r?void 0:r.length)&&void 0!==t?t:0),item:y,showTooltip:i,selectedKey:f,overflow:!0,topData:!0}))}u=X,({e:[a,c,l],c:[z,n]}=(0,v.Z)(u,[[o,1,"menu"],[s,1,"showTooltip"]],[i],0,void 0,k.ReactNextElement)),n()},2779:(e,t)=>{var r;!function(){"use strict";var n={}.hasOwnProperty;function i(){for(var e=[],t=0;t<arguments.length;t++){var r=arguments[t];if(r){var o=typeof r;if("string"===o||"number"===o)e.push(r);else if(Array.isArray(r)){if(r.length){var a=i.apply(null,r);a&&e.push(a)}}else if("object"===o){if(r.toString!==Object.prototype.toString&&!r.toString.toString().includes("[native code]")){e.push(r.toString());continue}for(var s in r)n.call(r,s)&&r[s]&&e.push(s)}}}return e.join(" ")}e.exports?(i.default=i,e.exports=i):void 0===(r=function(){return i}.apply(t,[]))||(e.exports=r)}()},2609:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var r="",n=void 0!==t[5];return t[4]&&(r+="@supports (".concat(t[4],") {")),t[2]&&(r+="@media ".concat(t[2]," {")),n&&(r+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),r+=e(t),n&&(r+="}"),t[2]&&(r+="}"),t[4]&&(r+="}"),r})).join("")},t.i=function(e,r,n,i,o){"string"==typeof e&&(e=[[null,e,void 0]]);var a={};if(n)for(var s=0;s<this.length;s++){var c=this[s][0];null!=c&&(a[c]=!0)}for(var l=0;l<e.length;l++){var u=[].concat(e[l]);n&&a[u[0]]||(void 0!==o&&(void 0===u[5]||(u[1]="@layer".concat(u[5].length>0?" ".concat(u[5]):""," {").concat(u[1],"}")),u[5]=o),r&&(u[2]?(u[1]="@media ".concat(u[2]," {").concat(u[1],"}"),u[2]=r):u[2]=r),i&&(u[4]?(u[1]="@supports (".concat(u[4],") {").concat(u[1],"}"),u[4]=i):u[4]="".concat(i)),t.push(u))}},t}},9601:e=>{"use strict";e.exports=function(e){return e[1]}},2604:(e,t,r)=>{"use strict";r.d(t,{Z:()=>h});var n=r(6522),i=r(1815);function o(e,t){return function(r){(function(e,t){if(e.v)throw new Error("attempted to call addInitializer after decoration was finished")})(t),c(r,"An initializer"),e.push(r)}}function a(e,t){if(!e(t))throw new TypeError("Attempted to access private element on non-instance")}function s(e,t,r,n,i,s,c,l,u,p){var m;switch(s){case 1:m="accessor";break;case 2:m="method";break;case 3:m="getter";break;case 4:m="setter";break;default:m="field"}var d,f,h={kind:m,name:l?"#"+r:r,static:c,private:l},v={v:!1};if(0!==s&&(h.addInitializer=o(i,v)),l||0!==s&&2!==s)if(2===s)d=function(e){return a(p,e),n.value};else{var y=0===s||1===s;(y||3===s)&&(d=l?function(e){return a(p,e),n.get.call(e)}:function(e){return n.get.call(e)}),(y||4===s)&&(f=l?function(e,t){a(p,e),n.set.call(e,t)}:function(e,t){n.set.call(e,t)})}else d=function(e){return e[r]},0===s&&(f=function(e,t){e[r]=t});var g=l?p.bind():function(e){return r in e};h.access=d&&f?{get:d,set:f,has:g}:d?{get:d,has:g}:{set:f,has:g};try{return e.call(t,u,h)}finally{v.v=!0}}function c(e,t){if("function"!=typeof e)throw new TypeError(t+" must be a function")}function l(e,t){var r=(0,n.Z)(t);if(1===e){if("object"!==r||null===t)throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");void 0!==t.get&&c(t.get,"accessor.get"),void 0!==t.set&&c(t.set,"accessor.set"),void 0!==t.init&&c(t.init,"accessor.init")}else if("function"!==r)throw new TypeError((0===e?"field":5===e?"class":"method")+" decorators must return a function or void 0")}function u(e){return function(){return e(this)}}function p(e){return function(t){e(this,t)}}function m(e,t,r,n,i,o,a,c,m,d){var f,h,v,y,g,b,w=r[0];n||Array.isArray(w)||(w=[w]),c?f=0===o||1===o?{get:u(r[3]),set:p(r[4])}:3===o?{get:r[3]}:4===o?{set:r[3]}:{value:r[3]}:0!==o&&(f=Object.getOwnPropertyDescriptor(t,i)),1===o?v={get:f.get,set:f.set}:2===o?v=f.value:3===o?v=f.get:4===o&&(v=f.set);for(var E=n?2:1,k=w.length-1;k>=0;k-=E){var x;void 0!==(y=s(w[k],n?w[k-1]:void 0,i,f,m,o,a,c,v,d))&&(l(o,y),0===o?x=y:1===o?(x=y.init,g=y.get||v.get,b=y.set||v.set,v={get:g,set:b}):v=y,void 0!==x&&(void 0===h?h=x:"function"==typeof h?h=[h,x]:h.push(x)))}if(0===o||1===o){if(void 0===h)h=function(e,t){return t};else if("function"!=typeof h){var O=h;h=function(e,t){for(var r=t,n=O.length-1;n>=0;n--)r=O[n].call(e,r);return r}}else{var Z=h;h=function(e,t){return Z.call(e,t)}}e.push(h)}0!==o&&(1===o?(f.get=v.get,f.set=v.set):2===o?f.value=v:3===o?f.get=v:4===o&&(f.set=v),c?1===o?(e.push((function(e,t){return v.get.call(e,t)})),e.push((function(e,t){return v.set.call(e,t)}))):2===o?e.push(v):e.push((function(e,t){return v.call(e,t)})):Object.defineProperty(t,i,f))}function d(e,t,r){for(var n,o,a,s=[],c=new Map,l=new Map,u=0;u<t.length;u++){var p=t[u];if(Array.isArray(p)){var d,h,v=p[1],y=p[2],g=p.length>3,b=16&v,w=!!(8&v),E=r;if(v&=7,w?(d=e,0!==v&&(h=o=o||[]),g&&!a&&(a=function(t){return(0,i.Z)(t)===e}),E=a):(d=e.prototype,0!==v&&(h=n=n||[])),0!==v&&!g){var k=w?l:c,x=k.get(y)||0;if(!0===x||3===x&&4!==v||4===x&&3!==v)throw new Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: "+y);k.set(y,!(!x&&v>2)||v)}m(s,d,p,b,y,v,w,g,h,E)}}return f(s,n),f(s,o),s}function f(e,t){t&&e.push((function(e){for(var r=0;r<t.length;r++)t[r].call(e);return e}))}function h(e,t,r,n,i){return{e:d(e,t,i),get c(){return function(e,t,r){if(t.length){for(var n=[],i=e,a=e.name,s=r?2:1,c=t.length-1;c>=0;c-=s){var u={v:!1};try{var p=t[c].call(r?t[c-1]:void 0,i,{kind:"class",name:a,addInitializer:o(n,u)})}finally{u.v=!0}void 0!==p&&(l(5,p),i=p)}return[i,function(){for(var e=0;e<n.length;e++)n[e].call(i)}]}}(e,r,n)}}}},4795:(e,t,r)=>{"use strict";function n(e,t,r,n,i,o,a){try{var s=e[o](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,i)}function i(e){return function(){var t=this,r=arguments;return new Promise((function(i,o){var a=e.apply(t,r);function s(e){n(a,i,o,s,c,"next",e)}function c(e){n(a,i,o,s,c,"throw",e)}s(void 0)}))}}r.d(t,{Z:()=>i})},1815:(e,t,r)=>{"use strict";r.d(t,{Z:()=>i});var n=r(6522);function i(e){if(Object(e)!==e)throw TypeError("right-hand side of 'in' should be an object, got "+(null!==e?(0,n.Z)(e):"null"));return e}},6666:(e,t,r)=>{"use strict";r.d(t,{Z:()=>i});var n=r(5850);function i(e,t,r){return(t=(0,n.Z)(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}},7896:(e,t,r)=>{"use strict";function n(){return n=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},n.apply(this,arguments)}r.d(t,{Z:()=>n})},3028:(e,t,r)=>{"use strict";r.d(t,{Z:()=>o});var n=r(6666);function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?i(Object(r),!0).forEach((function(t){(0,n.Z)(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):i(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}},5850:(e,t,r)=>{"use strict";r.d(t,{Z:()=>i});var n=r(6522);function i(e){var t=function(e,t){if("object"!==(0,n.Z)(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,"string");if("object"!==(0,n.Z)(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"===(0,n.Z)(t)?t:String(t)}},6522:(e,t,r)=>{"use strict";function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}r.d(t,{Z:()=>n})},2890:(e,t,r)=>{"use strict";r.d(t,{o:()=>n});class n{constructor(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"brick-next-";this.storage=e,this.prefix=t}setItem(e,t){this.storage.setItem(this.prefix+e,JSON.stringify(t))}getItem(e){return JSON.parse(this.storage.getItem(this.prefix+e))}removeItem(e){return this.storage.removeItem(this.prefix+e)}clear(){return this.storage.clear()}}}}]);
3
+ //# sourceMappingURL=eo-nav-menu.c83e8b62.js.map