@next-bricks/nav 1.24.1 → 1.24.3

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.
@@ -1 +0,0 @@
1
- {"version":3,"file":"chunks/2133.8c2de8bf.js","mappings":"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","sources":["webpack:///./src/launchpad-button-v2/i18n.ts","webpack:///./src/launchpad-button-v2/constants.ts","webpack:///./src/launchpad-button-v2/api.ts","webpack:///./src/launchpad-button-v2/search.ts","webpack:///./src/launchpad-button-v2/useLaunchpadInfo.ts","webpack:///./src/shared/DeferredService.ts","webpack:///./src/shared/getLocaleName.ts","webpack:///./src/launchpad-button-v2/wrapped-bricks.ts"],"sourcesContent":["import { i18n } from \"@next-core/i18n\";\n\nexport enum K {\n ALL = \"ALL\",\n QUICK_ACCESS = \"QUICK_ACCESS\",\n PLATFORM_BASE = \"PLATFORM_BASE\",\n SCENARIO_CENTER = \"SCENARIO_CENTER\",\n SOLUTIONS = \"SOLUTIONS\",\n OPEN_PLATFORM = \"OPEN_PLATFORM\",\n SEARCH_PLACEHOLDER = \"SEARCH_PLACEHOLDER\",\n RECENT_VISITS = \"RECENT_VISITS\",\n FAVORITE = \"FAVORITE\",\n UNFAVORITE = \"UNFAVORITE\",\n FAVORITES_LIMIT_REACHED = \"FAVORITES_LIMIT_REACHED\",\n FAVORITES_LIMIT_MESSAGE = \"FAVORITES_LIMIT_MESSAGE\",\n}\n\nconst en: Locale = {\n ALL: \"All\",\n QUICK_ACCESS: \"Quick Access\",\n PLATFORM_BASE: \"Platform Base\",\n SCENARIO_CENTER: \"Scenario Center\",\n SOLUTIONS: \"Solutions\",\n OPEN_PLATFORM: \"Open Platform\",\n SEARCH_PLACEHOLDER: \"Search by keyword\",\n RECENT_VISITS: \"Recent Visits\",\n FAVORITE: \"Favorite\",\n UNFAVORITE: \"Unfavorite\",\n FAVORITES_LIMIT_REACHED: \"Favorites Limit Reached\",\n FAVORITES_LIMIT_MESSAGE:\n \"Current favorites count has reached the limit ({{count}} items). Please remove some favorites before adding new ones.\",\n};\n\nconst zh: Locale = {\n ALL: \"全部\",\n QUICK_ACCESS: \"快捷访问\",\n PLATFORM_BASE: \"平台底座\",\n SCENARIO_CENTER: \"场景中心\",\n SOLUTIONS: \"解决方案\",\n OPEN_PLATFORM: \"开放平台\",\n SEARCH_PLACEHOLDER: \"通过关键字搜索\",\n RECENT_VISITS: \"最近访问\",\n FAVORITE: \"收藏\",\n UNFAVORITE: \"取消收藏\",\n FAVORITES_LIMIT_REACHED: \"收藏数量已达上限\",\n FAVORITES_LIMIT_MESSAGE:\n \"当前收藏链接数量已达上限({{count}}个),请删除部分收藏后再添加。\",\n};\n\nexport const NS = \"bricks/nav/launchpad-button-v2\";\n\nexport const locales = { en, zh };\n\nexport const t = i18n.getFixedT(null, NS);\n\ntype Locale = { [k in K]: string } & {\n [k in K as `${k}_plural`]?: string;\n};\n","export const FAVORITES_LIMIT = 10;\nexport const RECENT_VISITS_LIMIT = 10;\n","import type { AppLocales, Storyboard } from \"@next-core/types\";\nimport { LaunchpadApi_getLaunchpadInfo } from \"@next-api-sdk/micro-app-standalone-sdk\";\nimport {\n LaunchpadApi_createCollectionV2,\n LaunchpadApi_deleteCollectionV2,\n LaunchpadApi_listCollectionV2,\n UserServiceModels,\n} from \"@next-api-sdk/user-service-sdk\";\nimport { InstanceApi_postSearchV3 } from \"@next-api-sdk/cmdb-sdk\";\nimport { sortBy } from \"lodash\";\nimport { auth } from \"@next-core/easyops-runtime\";\nimport { initializeReactI18n } from \"@next-core/i18n/react\";\nimport type {\n FavMenuItem,\n MenuGroupData,\n MenuItemData,\n MenuItemDataApp,\n MenuItemDataCustom,\n MenuItemDataDir,\n MenuItemDataNormal,\n MicroAppWithInstanceId,\n PlatformCategoryItem,\n} from \"./interfaces\";\nimport { FAVORITES_LIMIT } from \"./constants\";\nimport { getLocaleName } from \"../shared/getLocaleName\";\nimport { K, NS, t, locales } from \"./i18n\";\n\ninitializeReactI18n(NS, locales);\n\nexport async function fetchLaunchpadInfo() {\n const launchpadInfo = await LaunchpadApi_getLaunchpadInfo(\n {},\n {\n interceptorParams: { ignoreLoadingBar: true },\n noAbortOnRouteChange: true,\n }\n );\n\n const microAppsById = new Map<string, MicroAppWithInstanceId>();\n for (const storyboard of launchpadInfo.storyboards as Storyboard[]) {\n const app = storyboard.app as unknown as MicroAppWithInstanceId;\n app.localeName = getLocaleName(app.locales, app.name);\n if (!auth.isBlockedPath?.(app.homepage)) {\n microAppsById.set(app.id, app);\n }\n }\n\n const menuGroups: MenuGroupData[] = [];\n const customLinksById = new Map<string, MenuItemDataCustom>();\n\n for (const group of launchpadInfo.desktops as unknown as MenuGroupData[]) {\n const items: MenuItemData[] = [];\n for (const item of group.items) {\n item.localeName = getLocaleName(item.locales, item.name);\n switch (item.type) {\n case \"app\": {\n const app = microAppsById.get(item.id);\n if (app) {\n items.push({\n ...item,\n name: app.localeName,\n url: app.homepage,\n menuIcon: app.menuIcon,\n } as MenuItemDataApp);\n }\n break;\n }\n case \"custom\":\n if (!auth.isBlockedHref?.(item.url)) {\n items.push(item);\n customLinksById.set(item.id, item);\n }\n break;\n case \"dir\": {\n const subItems: MenuItemDataNormal[] = [];\n for (const subItem of item.items) {\n 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 (\n subItem.type === \"custom\" &&\n !auth.isBlockedHref?.(subItem.url)\n ) {\n subItem.localeName = getLocaleName(subItem.locales, subItem.name);\n subItems.push(subItem as MenuItemDataCustom);\n customLinksById.set(subItem.id, subItem);\n }\n }\n if (subItems.length > 0) {\n items.push({\n ...item,\n items: subItems,\n } as MenuItemDataDir);\n }\n break;\n }\n }\n }\n if (items.length > 0) {\n group.localeName = getLocaleName(group.locales, group.name);\n menuGroups.push({ ...group, items });\n }\n }\n\n return { menuGroups, microAppsById, customLinksById };\n}\n\nasync function fetchRawFavorites() {\n return (\n await LaunchpadApi_listCollectionV2(\n { page: 1, pageSize: FAVORITES_LIMIT },\n {\n interceptorParams: { ignoreLoadingBar: true },\n noAbortOnRouteChange: true,\n }\n )\n ).list;\n}\n\nexport async function fetchFavorites() {\n const list = await fetchRawFavorites();\n const stored: FavMenuItem[] = [];\n // 不屏蔽收藏夹中的任何项,否则无法取消收藏\n for (const fav of list) {\n if (fav.type === \"microApp\") {\n const app = fav.relatedApp as Omit<MicroAppWithInstanceId, \"id\"> & {\n appId: string;\n };\n const localeName = getLocaleName(app.locales, app.name);\n stored.push({\n favoriteId: fav.instanceId,\n type: \"app\",\n name: localeName,\n id: app.appId,\n url: app.homepage,\n instanceId: app.instanceId,\n menuIcon: app.menuIcon,\n } as FavMenuItem);\n } else if (fav.type === \"customItem\") {\n const customItem = fav.relatedCustomItem!;\n const localeName = getLocaleName(\n (\n customItem as UserServiceModels.ModelLaunchpadCollectionV2_relatedCustomItem & {\n locales?: AppLocales;\n }\n ).locales,\n customItem.name\n );\n stored.push({\n favoriteId: fav.instanceId,\n type: \"custom\",\n name: localeName,\n id: customItem.id,\n url: customItem.url,\n menuIcon: customItem.menuIcon,\n } as FavMenuItem);\n } else if (fav.type === \"link\") {\n stored.push({\n favoriteId: fav.instanceId,\n type: \"link\",\n name: fav.name,\n // id: fav.id,\n url: fav.link,\n menuIcon: fav.icon,\n } as FavMenuItem);\n }\n }\n return stored;\n}\n\nexport async function favorite(\n item: MenuItemDataNormal\n): Promise<{ instanceId?: string }> {\n return LaunchpadApi_createCollectionV2(\n {\n type: item.type === \"app\" ? \"microApp\" : \"customItem\",\n relatedInstanceId: item.instanceId,\n },\n {\n interceptorParams: { ignoreLoadingBar: true },\n }\n );\n}\n\nexport async function undoFavorite(item: FavMenuItem) {\n if (item.favoriteId) {\n return LaunchpadApi_deleteCollectionV2(item.favoriteId);\n }\n\n return fetchRawFavorites().then((list) => {\n const foundId = list.find((fav) =>\n item.type === \"app\"\n ? fav.type === \"microApp\" && fav.relatedApp?.appId === item.id\n : item.type === \"custom\" && fav.relatedCustomItem?.id === item.id\n )?.instanceId;\n\n if (foundId) {\n return LaunchpadApi_deleteCollectionV2(foundId);\n }\n // eslint-disable-next-line no-console\n console.error(\"Menu item to unstar not found:\", item);\n });\n}\n\nexport async function fetchPlatformCategories(): Promise<\n PlatformCategoryItem[]\n> {\n const categories = (\n await InstanceApi_postSearchV3(\"MICRO_APP_CATEGORY@EASYOPS\", {\n fields: [\n \"id\",\n \"type\",\n \"name\",\n \"locales\",\n \"icon\",\n \"order\",\n \"platformApps.appId\",\n \"platformApps.name\",\n \"platformApps.locales\",\n \"platformApps.homepage\",\n \"platformApps.description\",\n \"platformApps.menuIcon\",\n \"platformApps._object_id\",\n \"platformApps.@.order\",\n \"platformItems.id\",\n \"platformItems.name\",\n \"platformItems.locales\",\n \"platformItems.url\",\n \"platformItems.description\",\n \"platformItems.menuIcon\",\n \"platformItems._object_id\",\n \"platformItems.@.order\",\n ],\n page: 1,\n page_size: 300,\n query: {\n type: \"platform\",\n },\n })\n ).list;\n\n const _categories = categories?.map((category) => {\n const apps = category.platformApps\n .map((app: Record<string, any>) => {\n if (auth.isBlockedPath?.(app.homepage)) {\n return null;\n }\n return {\n type: \"app\",\n name: getLocaleName(app.locales, app.name),\n id: app.appId,\n url: app.homepage,\n menuIcon: app.menuIcon,\n description: app.description,\n instanceId: app.instanceId,\n order: app[\"@\"]?.order,\n };\n })\n .filter(Boolean) as MenuItemDataApp[];\n const customItems = category.platformItems\n .map((item: Record<string, any>) => {\n if (auth.isBlockedHref?.(item.url)) {\n return null;\n }\n return {\n type: \"custom\",\n name: getLocaleName(item.locales, item.name),\n id: item.id,\n url: item.url,\n menuIcon: item.menuIcon,\n description: item.description,\n instanceId: item.instanceId,\n order: item[\"@\"]?.order,\n };\n })\n .filter(Boolean) as MenuItemDataCustom[];\n\n const items = sortBy([...apps, ...customItems], \"order\");\n return {\n instanceId: category.instanceId,\n id: category.id,\n name: getLocaleName(category.locales, category.name),\n icon: category.icon,\n order: category.order,\n items,\n } as PlatformCategoryItem;\n });\n\n return [\n {\n id: \"#all\",\n name: t(K.ALL),\n icon: {\n lib: \"easyops\",\n category: \"second-menu\",\n icon: \"sprint-planning-second-menu\",\n },\n items: [],\n },\n ...sortBy(_categories, \"order\"),\n ];\n}\n","import type {\n MenuGroupData,\n MenuItemData,\n MenuItemDataApp,\n MenuItemDataCustom,\n MenuItemDataNormal,\n PlatformCategoryItem,\n} from \"./interfaces\";\n\nexport function search(\n allMenuGroups: MenuGroupData[],\n q: string\n): MenuGroupData[] {\n if (!q) {\n return allMenuGroups;\n }\n const lowerQ = q.toLowerCase();\n const groups: MenuGroupData[] = allMenuGroups\n .map((group) => ({\n ...group,\n items: group.items\n .map((item) => {\n switch (item.type) {\n case \"app\":\n return matchMenuItemApp(item, lowerQ);\n case \"custom\":\n return matchMenuItemCustom(item, lowerQ);\n case \"dir\": {\n const filteredSubItems = item.items\n .map((sub) =>\n sub.type === \"app\"\n ? matchMenuItemApp(sub, lowerQ)\n : sub.type === \"custom\"\n ? matchMenuItemCustom(sub, lowerQ)\n : null\n )\n .filter(Boolean) as MenuItemData[];\n return filteredSubItems.length > 0\n ? {\n ...item,\n items: filteredSubItems,\n }\n : null;\n }\n }\n })\n // Ignore not matched items\n .filter(Boolean) as MenuItemData[],\n }))\n // ignore empty desktops\n .filter((group) => group.items.length > 0);\n return groups;\n}\n\nexport function searchCategories(\n categories: PlatformCategoryItem[],\n q: string\n): PlatformCategoryItem[] {\n if (!q) {\n return categories;\n }\n\n const lowerQ = q.toLowerCase();\n const _categories = categories.map((category) => ({\n ...category,\n items: category.items\n .map((item) => {\n switch (item.type) {\n case \"app\":\n return matchMenuItemApp(item, lowerQ);\n case \"custom\":\n return matchMenuItemCustom(item, lowerQ);\n }\n })\n // Ignore not matched items\n .filter(Boolean) as MenuItemDataNormal[],\n }));\n return _categories;\n}\n\nfunction matchMenuItemApp(item: MenuItemDataApp, lowerQ: string) {\n return item.id.toLowerCase().includes(lowerQ) ||\n item.name.toLowerCase().includes(lowerQ) ||\n (item.description && item.description.toLowerCase().includes(lowerQ))\n ? item\n : null;\n}\n\nfunction matchMenuItemCustom(item: MenuItemDataCustom, lowerQ: string) {\n return item.id.toLowerCase().includes(lowerQ) ||\n item.name.toLowerCase().includes(lowerQ) ||\n (item.description && item.description.toLowerCase().includes(lowerQ))\n ? item\n : null;\n}\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport {\n getRuntime,\n handleHttpError,\n httpErrorToString,\n} from \"@next-core/runtime\";\nimport { auth } from \"@next-core/easyops-runtime\";\nimport { JsonStorage } from \"@next-shared/general/JsonStorage\";\nimport { initializeReactI18n, useTranslation } from \"@next-core/i18n/react\";\nimport { DeferredService } from \"../shared/DeferredService\";\nimport { showDialog, showNotification } from \"./wrapped-bricks\";\nimport { K, NS, locales } from \"./i18n\";\nimport type {\n FavMenuItem,\n MenuGroupData,\n MenuItemDataCustom,\n MenuItemDataLink,\n MenuItemDataNormal,\n MicroAppWithInstanceId,\n PlatformCategoryItem,\n StoredMenuItem,\n} from \"./interfaces\";\nimport {\n favorite,\n fetchFavorites,\n fetchLaunchpadInfo,\n fetchPlatformCategories,\n undoFavorite,\n} from \"./api\";\nimport { search, searchCategories } from \"./search\";\nimport { FAVORITES_LIMIT, RECENT_VISITS_LIMIT } from \"./constants\";\n\ninitializeReactI18n(NS, locales);\n\nconst storageKey = `launchpad-recent-visits:${\n (auth.getAuth() as Record<string, string>)?.org\n}`;\nconst storage = new JsonStorage(localStorage);\n\nlet candidateDesktops: MenuGroupData[] = [];\nlet candidateMicroAppsById = new Map<string, MicroAppWithInstanceId>();\nlet candidateCustomLinksById = new Map<string, MenuItemDataCustom>();\nlet preLoaded = false;\n\nlet candidateFavorites: FavMenuItem[] = [];\nlet preLoadedFavorites = false;\n\nlet candidatePlatformCategories: PlatformCategoryItem[] = [];\nlet preLoadedPlatformCategories = false;\n\nexport const deferredLaunchpadInfo = new DeferredService(async () => {\n ({\n menuGroups: candidateDesktops,\n microAppsById: candidateMicroAppsById,\n customLinksById: candidateCustomLinksById,\n } = await fetchLaunchpadInfo());\n preLoaded = true;\n});\n\nexport const deferredFavorites = new DeferredService(async () => {\n candidateFavorites = await fetchFavorites();\n preLoadedFavorites = true;\n});\n\nexport const deferredPlatformCategories = new DeferredService(async () => {\n candidatePlatformCategories = await fetchPlatformCategories();\n preLoadedPlatformCategories = true;\n});\n\nconst showErrorAsNotification = (error: unknown) =>\n showNotification({\n type: \"error\",\n message: httpErrorToString(error),\n });\n\n/**\n * - 页面初始化时预加载 launchpad 信息。\n * - 每次打开 launchpad 都发起请求,但该请求的数据只在下次打开 launchpad 时使用。\n * 即每次打开 launchpad 使用的都是上一次获取的数据,以便达到两个效果:\n * - 每次打开 launchpad 都能立即显示菜单列表;\n * - 同时当用户在 launchpad 上操作时,不会出现数据突然更新(新数据请求完成)。\n */\nexport function useLaunchpadInfo(active?: boolean) {\n const { t } = useTranslation(NS);\n const [desktops, setDesktops] = useState(candidateDesktops);\n const [microAppsById, setMicroAppsById] = useState(candidateMicroAppsById);\n const [customLinksById, setCustomLinksById] = useState(\n candidateCustomLinksById\n );\n\n const [q, setQ] = useState(\"\");\n\n const [loading, setLoading] = useState(!preLoaded);\n const [loadingFavorites, setLoadingFavorites] = useState(!preLoadedFavorites);\n const [loadingPlatformCategories, setLoadingPlatformCategories] = useState(\n !preLoadedPlatformCategories\n );\n\n const [storedRecentVisits, setStoredRecentVisits] = useState<\n StoredMenuItem[]\n >([]);\n\n const [recentVisits, setRecentVisits] = useState<MenuItemDataNormal[]>([]);\n\n const [favorites, setFavorites] = useState<FavMenuItem[]>(candidateFavorites);\n const [platformCategories, setPlatformCategories] = useState<\n PlatformCategoryItem[]\n >(candidatePlatformCategories);\n\n useEffect(() => {\n // 仅当首次加载完成或重新打开 launchpad 时更新一次数据。\n if (active && !loading) {\n setDesktops(candidateDesktops);\n setMicroAppsById(candidateMicroAppsById);\n setCustomLinksById(candidateCustomLinksById);\n }\n }, [active, loading]);\n\n useEffect(() => {\n if (active && !loadingFavorites) {\n setFavorites(candidateFavorites);\n }\n }, [active, loadingFavorites]);\n\n useEffect(() => {\n if (active && !loadingPlatformCategories) {\n setPlatformCategories(candidatePlatformCategories);\n }\n }, [active, loadingPlatformCategories]);\n\n useEffect(() => {\n if (active) {\n setStoredRecentVisits(storage.getItem(storageKey) ?? []);\n }\n }, [active]);\n\n useEffect(() => {\n if (active) {\n const startFetchLaunchpadInfo = async (): Promise<void> => {\n try {\n await deferredLaunchpadInfo.fetch();\n setLoading(false);\n } catch (error) {\n handleHttpError(error);\n }\n };\n startFetchLaunchpadInfo();\n }\n }, [active]);\n\n useEffect(() => {\n if (active) {\n const startFetchFavorites = async (): Promise<void> => {\n try {\n await deferredFavorites.fetch();\n setLoadingFavorites(false);\n } catch (error) {\n setLoadingFavorites(false);\n showErrorAsNotification(error);\n }\n };\n startFetchFavorites();\n }\n }, [active]);\n\n useEffect(() => {\n if (\n active &&\n getRuntime()?.getFeatureFlags()[\"launchpad-show-platform-category\"]\n ) {\n const startFetchPlatformCategories = async (): Promise<void> => {\n try {\n await deferredPlatformCategories.fetch();\n setLoadingPlatformCategories(false);\n } catch (error) {\n setLoadingPlatformCategories(false);\n showErrorAsNotification(error);\n }\n };\n startFetchPlatformCategories();\n }\n }, [active]);\n\n useEffect(() => {\n if (loading) {\n return;\n }\n const visits = storedRecentVisits\n .map((item) => {\n // Remembered recent visits maybe no longer existed in launchpad\n if (item.type === \"app\") {\n const app = microAppsById.get(item.id);\n return app\n ? {\n type: \"app\",\n name: app.localeName,\n id: app.id,\n url: app.homepage,\n instanceId: app.instanceId,\n menuIcon: app.menuIcon,\n }\n : null;\n }\n\n const link = customLinksById.get(item.id);\n return link\n ? {\n ...link,\n name: link.localeName,\n }\n : null;\n })\n .filter(Boolean) as MenuItemDataNormal[];\n setRecentVisits(visits);\n }, [customLinksById, loading, microAppsById, storedRecentVisits]);\n\n const pushRecentVisit = useCallback(({ type, id }: StoredMenuItem) => {\n const visits: StoredMenuItem[] = storage.getItem(storageKey) ?? [];\n const index = visits.findIndex(\n (visit) => visit.type === type && visit.id === id\n );\n if (index > -1) {\n visits.splice(index, 1);\n }\n visits.unshift({ type, id });\n if (visits.length > RECENT_VISITS_LIMIT) {\n visits.pop();\n }\n // setStoredRecentVisits(visits);\n storage.setItem(storageKey, visits);\n }, []);\n\n const isStarred = useCallback(\n (item: MenuItemDataNormal) =>\n favorites.some((fav) => matchFavorite(item, fav)),\n [favorites]\n );\n\n const toggleStar = useCallback(\n (item: MenuItemDataNormal | MenuItemDataLink) => {\n const index = favorites.findIndex((fav) =>\n item.type === \"link\"\n ? fav.favoriteId === item.favoriteId\n : matchFavorite(item, fav)\n );\n let newFavorites: FavMenuItem[];\n if (index > -1) {\n const removed = favorites[index];\n newFavorites = favorites\n .slice(0, index)\n .concat(favorites.slice(index + 1));\n undoFavorite(removed).catch(showErrorAsNotification);\n } else {\n if (favorites.length >= FAVORITES_LIMIT) {\n showDialog({\n type: \"warn\",\n title: t(K.FAVORITES_LIMIT_REACHED) as string,\n content: t(K.FAVORITES_LIMIT_MESSAGE, { count: FAVORITES_LIMIT }),\n });\n return;\n }\n // Assert: no link item\n const fav: FavMenuItem = { ...(item as MenuItemDataNormal) };\n newFavorites = favorites.concat(fav);\n favorite(item as MenuItemDataNormal).then((result) => {\n if (result) {\n fav.favoriteId = result.instanceId;\n }\n }, showErrorAsNotification);\n }\n setFavorites(newFavorites);\n candidateFavorites = newFavorites;\n },\n [favorites]\n );\n\n const menuGroups: MenuGroupData[] = useMemo(\n () => search(desktops, q),\n [desktops, q]\n );\n\n const filteredPlatformCategories: PlatformCategoryItem[] = useMemo(\n () => searchCategories(platformCategories, q),\n [platformCategories, q]\n );\n\n return {\n loading,\n q,\n setQ,\n menuGroups,\n loadingFavorites,\n loadingPlatformCategories,\n favorites,\n recentVisits,\n pushRecentVisit,\n isStarred,\n toggleStar,\n platformCategories: filteredPlatformCategories,\n };\n}\n\nexport function matchFavorite(item: MenuItemDataNormal, fav: FavMenuItem) {\n return item.instanceId && fav.instanceId\n ? fav.instanceId === item.instanceId\n : fav.type === item.type && fav.id === item.id;\n}\n","export class DeferredService {\n private preFetchId: number | null = null;\n private preFetchScheduled = false;\n private firstFetchPromise: Promise<unknown> | null = null;\n private isFetching = false;\n private readonly task: () => Promise<unknown>;\n\n constructor(task: () => Promise<unknown>) {\n this.task = task;\n }\n\n schedulePrefetch(): void {\n if (!this.preFetchScheduled) {\n this.preFetchScheduled = true;\n const preFetchLaunchpadInfo = async (): Promise<void> => {\n this.preFetchId = null;\n this.fetch();\n };\n // istanbul ignore if\n if (typeof window.requestIdleCallback === \"function\") {\n this.preFetchId = window.requestIdleCallback(preFetchLaunchpadInfo);\n } else {\n this.preFetchId = setTimeout(\n preFetchLaunchpadInfo\n ) as unknown as number;\n }\n }\n }\n\n fetch(eager?: boolean): Promise<unknown> {\n if (this.preFetchId) {\n // istanbul ignore if\n if (typeof window.cancelIdleCallback === \"function\") {\n cancelIdleCallback(this.preFetchId);\n } else {\n clearTimeout(this.preFetchId);\n }\n this.preFetchId = null;\n }\n\n let promise: Promise<unknown>;\n if (!this.isFetching || eager) {\n this.isFetching = true;\n promise = this.task();\n promise\n .catch((error) => {\n // eslint-disable-next-line no-console\n console.error(error);\n this.firstFetchPromise = null;\n })\n .finally(() => {\n this.isFetching = false;\n });\n if (!this.firstFetchPromise) {\n this.firstFetchPromise = promise;\n }\n if (eager) {\n return promise;\n }\n }\n return this.firstFetchPromise!;\n }\n}\n","import { i18nText } from \"@next-core/i18n\";\nimport type { AppLocales, I18nData } from \"@next-core/types\";\n\nexport function getLocaleName(locales?: AppLocales | undefined, name?: string) {\n if (!locales) {\n return name;\n }\n const i18nData = Object.fromEntries(\n Object.entries(locales)\n .filter(([_lang, resources]) => resources.name)\n .map(([lang, resources]) => [lang, resources.name])\n ) as I18nData;\n return i18nText(i18nData) ?? name;\n}\n","import { wrapBrick } from \"@next-core/react-element\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport type { showDialog as _showDialog } from \"@next-bricks/basic/data-providers/show-dialog/show-dialog\";\nimport type { showNotification as _showNotification } from \"@next-bricks/basic/data-providers/show-notification/show-notification\";\n\nexport const WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nexport const WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\n// Use `unwrapProvider` to get the original function of a provider\nexport const showDialog =\n unwrapProvider<typeof _showDialog>(\"basic.show-dialog\");\n\nexport const showNotification = unwrapProvider<typeof _showNotification>(\n \"basic.show-notification\"\n);\n"],"names":["K","NS","locales","en","ALL","QUICK_ACCESS","PLATFORM_BASE","SCENARIO_CENTER","SOLUTIONS","OPEN_PLATFORM","SEARCH_PLACEHOLDER","RECENT_VISITS","FAVORITE","UNFAVORITE","FAVORITES_LIMIT_REACHED","FAVORITES_LIMIT_MESSAGE","zh","t","i18n","getFixedT","FAVORITES_LIMIT","RECENT_VISITS_LIMIT","async","fetchRawFavorites","LaunchpadApi_listCollectionV2","page","pageSize","interceptorParams","ignoreLoadingBar","noAbortOnRouteChange","list","matchMenuItemApp","item","lowerQ","id","toLowerCase","includes","name","description","matchMenuItemCustom","initializeReactI18n","storageKey","_auth$getAuth","auth","getAuth","org","storage","JsonStorage","localStorage","candidateDesktops","candidateMicroAppsById","Map","candidateCustomLinksById","preLoaded","candidateFavorites","preLoadedFavorites","candidatePlatformCategories","preLoadedPlatformCategories","deferredLaunchpadInfo","DeferredService","menuGroups","microAppsById","customLinksById","_auth$isBlockedHref","launchpadInfo","LaunchpadApi_getLaunchpadInfo","storyboard","storyboards","_auth$isBlockedPath","app","localeName","getLocaleName","isBlockedPath","call","homepage","set","group","desktops","items","type","get","push","url","menuIcon","isBlockedHref","subItems","subItem","_auth$isBlockedHref2","length","fetchLaunchpadInfo","deferredFavorites","stored","fav","relatedApp","favoriteId","instanceId","appId","customItem","relatedCustomItem","link","icon","fetchFavorites","deferredPlatformCategories","categories","InstanceApi_postSearchV3","fields","page_size","query","_categories","map","category","apps","platformApps","_auth$isBlockedPath2","_app$","order","filter","Boolean","customItems","platformItems","_auth$isBlockedHref3","_item$","sortBy","lib","fetchPlatformCategories","showErrorAsNotification","error","showNotification","message","httpErrorToString","useLaunchpadInfo","active","useTranslation","setDesktops","useState","setMicroAppsById","setCustomLinksById","q","setQ","loading","setLoading","loadingFavorites","setLoadingFavorites","loadingPlatformCategories","setLoadingPlatformCategories","storedRecentVisits","setStoredRecentVisits","recentVisits","setRecentVisits","favorites","setFavorites","platformCategories","setPlatformCategories","useEffect","_storage$getItem","getItem","fetch","handleHttpError","startFetchLaunchpadInfo","startFetchFavorites","_getRuntime","getRuntime","getFeatureFlags","startFetchPlatformCategories","visits","pushRecentVisit","useCallback","_ref","_storage$getItem2","index","findIndex","visit","splice","unshift","pop","setItem","isStarred","some","matchFavorite","toggleStar","newFavorites","removed","slice","concat","LaunchpadApi_deleteCollectionV2","then","_list$find","foundId","find","_fav$relatedApp","_fav$relatedCustomIte","console","undoFavorite","catch","showDialog","title","content","count","LaunchpadApi_createCollectionV2","relatedInstanceId","favorite","result","useMemo","allMenuGroups","filteredSubItems","sub","search","filteredPlatformCategories","searchCategories","constructor","task","_defineProperty","this","schedulePrefetch","preFetchScheduled","preFetchLaunchpadInfo","preFetchId","window","requestIdleCallback","setTimeout","eager","promise","cancelIdleCallback","clearTimeout","isFetching","firstFetchPromise","finally","_i18nText","i18nData","Object","fromEntries","entries","_lang","resources","_ref2","lang","i18nText","WrappedIcon","wrapBrick","WrappedLink","unwrapProvider"],"sourceRoot":""}
@@ -1,2 +0,0 @@
1
- "use strict";(globalThis.webpackChunk_next_bricks_nav=globalThis.webpackChunk_next_bricks_nav||[]).push([[9149],{1724:(e,t,a)=>{a.d(t,{A:()=>o});var n=a(6758),l=a.n(n),r=a(935),i=a.n(r)()(l());i.push([e.id,':root{--eo-launchpad-v2-background:#fff;--eo-launchpad-v2-menu-icon-color:#8c8c8c}html[data-theme="dark"],\nhtml[data-theme="dark-v2"]{--eo-launchpad-v2-background:#26262a;--eo-launchpad-v2-menu-icon-color:rgba(255,255,255,0.45)}',""]);const o=i},3693:(e,t,a)=>{a.d(t,{A:()=>o});var n=a(6758),l=a.n(n),r=a(935),i=a.n(r)()(l());i.push([e.id,".platform-category-name,\n.platform-category-sidebar-menu-item-label,\n.platform-item-name,\n.platform-item-description{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.platform-category-sidebar-menu-item{display:flex;gap:8px;align-items:center;padding:0px 12px 0px 16px}.platform-category-sidebar-menu-item > eo-link{display:block;min-width:0px;color:var(--color-header-text);cursor:pointer}.platform-category-sidebar-menu-item > eo-link:hover,\n.platform-category-sidebar-menu-item\n > eo-link:hover\n .platform-category-sidebar-menu-icon{color:var(--color-brand-hover)}.platform-category-sidebar-menu-item > eo-link.active,\n.platform-category-sidebar-menu-item\n > eo-link.active\n .platform-category-sidebar-menu-icon{color:var(--color-brand-active)}.platform-category-sidebar-menu-item > eo-link::part(link){height:20px;display:flex;align-items:center;gap:8px}.platform-category-sidebar-menu-icon{color:var(--left-sidebar-item-collapsed-icon-color)}.platform-category-name{font-size:18px;font-weight:500;color:var(--text-color-secondary);flex-shrink:0}.platform-items{display:grid;grid-template-columns:repeat(2,1fr);gap:0 54px}.platform-items > li{min-width:0}.platform-items > li > eo-link{width:100%;cursor:pointer}.platform-item{padding:12px 0;display:flex;flex-direction:column}.platform-item:hover .platform-item-icon,\n.platform-item:hover .platform-item-name{color:var(--color-brand-hover)}.platform-item-title{display:flex;align-items:center;margin-bottom:4px}.platform-item-icon{margin-right:8px;font-size:14px;color:var(--text-color-secondary);flex-shrink:0}.platform-item-name{font-weight:500;color:var(--text-color-title);line-height:18px}.platform-item-description{margin-left:22px;color:var(--text-color-secondary);line-height:18px}",""]);const o=i.toString()},5924:(e,t,a)=>{a.d(t,{A:()=>o});var n=a(6758),l=a.n(n),r=a(935),i=a.n(r)()(l());i.push([e.id,":host{display:inline-block;width:32px;height:32px;--eo-launchpad-v2-max-height:calc(100vh - var(--app-bar-height) - 36px)}:host([hidden]){display:none}.launchpad-button{width:100%;height:100%;display:flex;justify-content:center;align-items:center;color:#999;cursor:pointer;-webkit-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);height:var(--eo-launchpad-v2-max-height);background-color:var(--eo-launchpad-v2-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;display:flex;flex-direction:column;background:var(--color-fill-bg-base-3);min-width:0;background-size:205px 205px;background-repeat:no-repeat;background-position:left 52px bottom 27px}.sidebar > *:not(:last-child){border-bottom:1px solid var(--stroke-color-default)}.quick-nav-label,\n.platform-nav-label,\n.jump-nav-label,\n.menu-group-label,\n.menu-item-label,\n.recent-visits span{overflow:auto;white-space:normal;word-break:break-word;width:90px}.recent-visits span{width:100%}.sidebar-menu,\n.menu-groups,\n.menu,\n.sub-menu,\n.recent-visits,\n.platform-items{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;height:100%}.sidebar-menu-item > eo-link::part(link),\n.menu-item > eo-link::part(link){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)}.union{flex:1;display:flex;flex-direction:column;overflow-y:auto}.quick-nav,\n.platform-nav{display:flex;flex-direction:column;padding:20px 0 24px}.platform-nav{padding:0 0 24px}.quick-nav-label,\n.platform-nav-label{color:var(--color-header-text);font-weight:500;margin-bottom:14px;padding:0 16px}.quick-nav-menu,\n.platform-nav-menu{flex:1}.jump-nav > eo-link{display:block;cursor:pointer}.jump-nav > eo-link::part(link){padding:10px 16px;display:flex;justify-content:space-between;align-items:center}.jump-nav-label{flex:1;color:var(--color-header-text);font-weight:500}.jump-nav > eo-icon{font-size:14px;color:var(--text-color-default)}.content{flex:1;padding:20px 24px 24px;min-width:0;overflow-y:auto;display:flex;flex-direction:column;gap:24px}.search-box{border-bottom:1px solid var(--color-text-divider-line);display:flex;gap:8px;align-items:center;padding:10px 0;margin-top:-10px;cursor:text}.search-icon{color:var(--color-auxiliary-text)}.search-input{padding:0;margin:0;border:none;outline:none;color:inherit;background-color:transparent;font-size:14px;line-height:22px;flex:1;min-width:0}.search-input::placeholder{color:var(--color-disabled-text);opacity:1}.search-clear{display:none;color:var(--color-secondary-text);cursor:pointer}.search-clear.searching{display:inline-block}.search-clear:hover{color:var(--color-auxiliary-text)}.menu-groups,\n.recent-visits{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.menu-groups{display:grid;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(--eo-launchpad-v2-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;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:100%;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){.content,\n .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}.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}.content > :not(:last-child){margin-bottom:24px}}",""]);const o=i.toString()},8356:(e,t,a)=>{a.d(t,{P:()=>i,z:()=>r});var n=a(8769),l=a.n(n);const r=l().createContext({}),i=()=>l().useContext(r)},8776:(e,t,a)=>{a.d(t,{A:()=>o});var n=a(6758),l=a.n(n),r=a(935),i=a.n(r)()(l());i.push([e.id,".fadeEnter{opacity:0;transform:scale(0.95)}.fadeEnterActive{opacity:1;transform:translateX(0);transition:opacity 100ms ease-out,transform 100ms ease-out}.fadeExit{transform:translate(-30px,0)}.fadeExitActive{transform:translate(-100%,0);transition:transform 300ms ease-out}.fadeExitDone{display:none}",""]);const o=i.toString()},8839:(e,t,a)=>{a.d(t,{F:()=>g,r:()=>d});var n=a(9575),l=a(8769),r=a.n(l),i=a(1030),o=a(3373),c=a.n(o),m=a(9393),s=a(8356),p=a(6934),u=a(403);function d(e){let{name:t,items:a}=e;return r().createElement("li",{className:"menu-group"},r().createElement("div",{className:"menu-group-label"},t),r().createElement("ul",{className:"menu"},a.map((e=>"dir"===e.type?r().createElement(f,{key:`${e.type}-${e.id}`,name:e.localeName,items:e.items}):r().createElement(v,{key:`${e.type}-${e.id}`,item:e})))))}function v(e){var t;let{item:a}=e;const{t:o}=(0,p.useTranslation)(u.NS),{loadingFavorites:d,readonly:v,pushRecentVisit:g,toggleStar:f,isStarred:h}=(0,s.P)(),b=(0,l.useMemo)((()=>h(a)),[h,a]),x=(0,l.useCallback)((()=>{f(a)}),[a,f]),y=(0,l.useCallback)((()=>{g(a)}),[a,g]);return r().createElement("li",{className:c()("menu-item",{starred:b,"can-star":!d})},r().createElement(m.EM,(0,n.A)({onClick:y},"app"===a.type?{url:a.url}:{href:a.url}),r().createElement(m.Bj,(0,n.A)({className:"menu-icon",lib:"easyops",icon:"micro-app-center"},null!==(t=a.menuIcon)&&void 0!==t&&t.lib&&a.menuIcon.icon?(0,i.pick)(a.menuIcon,["lib","icon","theme","category","prefix"]):null)),r().createElement("span",{className:"menu-item-label"},a.localeName)),!v&&r().createElement(m.Bj,{lib:"fa",prefix:b?"fas":"far",icon:"star",className:"menu-item-star",title:o(b?u.K.UNFAVORITE:u.K.FAVORITE),onClick:x,"data-testid":"menu-item-star"}))}function g(e){var t;let{item:a,target:o}=e;const{readonly:c,pushRecentVisit:p,toggleStar:u}=(0,s.P)(),d=(0,l.useCallback)((()=>{"link"!==a.type&&p(a)}),[a,p]),v=(0,l.useCallback)((()=>{u(a)}),[a,u]);return r().createElement("li",{className:"sidebar-menu-item"},r().createElement(m.EM,(0,n.A)({onClick:d},"app"===a.type?{url:a.url}:{href:a.url},o?{target:o}:null),r().createElement(m.Bj,(0,n.A)({className:"sidebar-menu-icon",lib:"easyops",icon:"micro-app-center"},null!==(t=a.menuIcon)&&void 0!==t&&t.lib&&a.menuIcon.icon?(0,i.pick)(a.menuIcon,["lib","icon","theme","category","prefix"]):null)),r().createElement("span",{className:"menu-item-label"},a.name)),!c&&r().createElement(m.Bj,{lib:"fa",icon:"xmark",className:"menu-item-remove",onClick:v}))}function f(e){let{name:t,items:a}=e;const{searching:n}=(0,s.P)(),[i,o]=(0,l.useState)(!1),[p,u]=(0,l.useState)(!1),d=(0,l.useCallback)((()=>{n?u((e=>!e)):o((e=>!e))}),[n]);(0,l.useEffect)((()=>{u(!0)}),[n]);const g=n?p:i;return r().createElement("li",{className:"menu-item folder"},r().createElement(m.EM,{onClick:d},r().createElement(m.Bj,{lib:"fa",prefix:"far",icon:"folder-open",className:"menu-icon"}),r().createElement("span",{className:"menu-item-label"},t),r().createElement(m.Bj,{lib:"antd",icon:g?"up":"down",className:"menu-item-toggle"})),r().createElement("ul",{className:c()("sub-menu",{expanded:g})},a.map((e=>r().createElement(v,{key:`${e.type}-${e.id}`,item:e})))))}(0,p.initializeReactI18n)(u.NS,u.I)},9262:(e,t,a)=>{var n=a(2591),l=a.n(n),r=a(1740),i=a.n(r),o=a(8128),c=a.n(o),m=a(855),s=a.n(m),p=a(3051),u=a.n(p),d=a(3656),v=a.n(d),g=a(1724),f={};f.styleTagTransform=v(),f.setAttributes=s(),f.insert=c().bind(null,"head"),f.domAPI=i(),f.insertStyleElement=u(),l()(g.A,f),g.A&&g.A.locals&&g.A.locals},9302:(e,t,a)=>{a.d(t,{r:()=>y});var n=a(9575),l=a(8769),r=a.n(l),i=a(3373),o=a.n(i),c=a(9393),m=a(2133),s=a(8839),p=a(8356),u=a(1030);function d(e){var t;let{item:a,active:l,onClick:i}=e;return r().createElement("li",{className:"platform-category-sidebar-menu-item"},r().createElement(c.EM,{type:"plain",className:o()({active:l}),onClick:()=>null==i?void 0:i(a)},r().createElement(c.Bj,(0,n.A)({className:"platform-category-sidebar-menu-icon",lib:"easyops",category:"second-menu",icon:"serve-second-menu"},null!==(t=a.icon)&&void 0!==t&&t.lib&&a.icon.icon?(0,u.pick)(a.icon,["lib","icon","theme","category","prefix"]):null)),r().createElement("span",{className:"platform-category-sidebar-menu-item-label"},a.name)))}function v(e){var t;let{item:a}=e;return r().createElement("li",null,r().createElement(c.EM,(0,n.A)({type:"plain"},"app"===a.type?{url:a.url}:{href:a.url,target:"_blank"}),r().createElement("div",{className:"platform-item"},r().createElement("div",{className:"platform-item-title"},r().createElement(c.Bj,(0,n.A)({className:"platform-item-icon",lib:"easyops",category:"third-menu",icon:"deploy-orchestration-tasks-third-menu"},null!==(t=a.menuIcon)&&void 0!==t&&t.lib&&a.menuIcon.icon?(0,u.pick)(a.menuIcon,["lib","icon","theme","category","prefix"]):null)),r().createElement("div",{className:"platform-item-name"},a.name)),r().createElement("div",{className:"platform-item-description"},a.description))))}var g=a(3081),f=a(1675),h=a(2865),b=a(6934),x=a(403);function y(e){let{active:t}=e;const{t:a}=(0,b.useTranslation)(x.NS),i=(0,l.useRef)(null),[u,y]=(0,l.useState)([]),k=(0,l.useCallback)((()=>{var e;null===(e=i.current)||void 0===e||e.focus()}),[]),[N,w]=(0,l.useState)("#all"),A=r().useMemo((()=>{var e;return null===(e=(0,g.getRuntime)())||void 0===e?void 0:e.getFeatureFlags()["launchpad-show-platform-category"]}),[]),C=r().useMemo((()=>{var e;return null===(e=(0,g.getRuntime)())||void 0===e?void 0:e.getFeatureFlags()["launchpad-show-scenario-center"]}),[]),j=r().useMemo((()=>{var e;return null===(e=(0,g.getRuntime)())||void 0===e?void 0:e.getFeatureFlags()["launchpad-show-solution-center"]}),[]),S=r().useMemo((()=>{var e;return null===(e=(0,g.getRuntime)())||void 0===e?void 0:e.getFeatureFlags()["launchpad-show-open-platform"]}),[]),{loading:I,q:R,setQ:F,menuGroups:M,favorites:z,loadingFavorites:B,recentVisits:T,pushRecentVisit:_,toggleStar:K,isStarred:P,platformCategories:O}=(0,m.sZ)(t),q=!!R,V=(0,l.useCallback)((e=>{F(e.target.value)}),[F]),$=(0,l.useCallback)((()=>{F("")}),[F]);(0,l.useEffect)((()=>{var e;t&&(null===(e=i.current)||void 0===e||e.focus())}),[t]);const L=(0,l.useCallback)((e=>{w(e.id)}),[]),D=(0,l.useMemo)((()=>O.find((e=>e.id===N))),[N,O]);return(0,l.useEffect)((()=>{z.length>u.length?y(z):setTimeout((()=>{y(z)}),300)}),[z,u.length]),r().createElement("div",{className:o()("launchpad",{active:t})},r().createElement(p.z.Provider,{value:{searching:q,loadingFavorites:B,pushRecentVisit:_,toggleStar:K,isStarred:P}},r().createElement("div",{className:"sidebar"},r().createElement("div",{className:"union"},r().createElement("div",{className:"quick-nav"},r().createElement("div",{className:"quick-nav-label"},a(x.K.QUICK_ACCESS)),r().createElement(f.A,null,r().createElement("ul",{className:"sidebar-menu quick-nav-menu"},u.map(((e,t)=>r().createElement(h.A,{key:t,timeout:300,in:!!z.find((t=>t.id===e.id)),classNames:{enter:"fadeEnter",enterActive:"fadeEnterActive",exit:"fadeExit",exitActive:"fadeExitActive",exitDone:"fadeExitDone"}},r().createElement(s.F,{key:t,item:e}))))))),A&&r().createElement("div",{className:"platform-nav"},r().createElement("div",{className:"platform-nav-label"},a(x.K.PLATFORM_BASE)),r().createElement("ul",{className:"sidebar-menu platform-nav-menu"},O.map(((e,t)=>r().createElement(d,{key:t,onClick:L,item:e,active:N===e.id})))))),C&&r().createElement("div",{className:"jump-nav"},r().createElement(c.EM,{type:"plain",url:"/portal/scenario"},r().createElement("div",{className:"jump-nav-label"},a(x.K.SCENARIO_CENTER)),r().createElement(c.Bj,{lib:"antd",icon:"right",theme:"outlined"}))),j&&r().createElement("div",{className:"jump-nav"},r().createElement(c.EM,{type:"plain",url:"/portal/solution"},r().createElement("div",{className:"jump-nav-label"},a(x.K.SOLUTIONS)),r().createElement(c.Bj,{lib:"antd",icon:"right",theme:"outlined"}))),S&&r().createElement("div",{className:"jump-nav"},r().createElement(c.EM,{type:"plain",url:"/developers"},r().createElement("div",{className:"jump-nav-label"},a(x.K.OPEN_PLATFORM)),r().createElement(c.Bj,{lib:"antd",icon:"right",theme:"outlined"})))),r().createElement("div",{className:o()("content",{loading:I})},r().createElement(E,{loading:I}),"#all"!==N&&r().createElement("div",{className:"platform-category-name"},null==D?void 0:D.name),r().createElement("div",{className:"search-box",onClick:k},r().createElement(c.Bj,{lib:"fa",icon:"magnifying-glass",className:"search-icon"}),r().createElement("input",{ref:i,placeholder:a(x.K.SEARCH_PLACEHOLDER),value:R,onChange:V,className:"search-input"}),r().createElement(c.Bj,{lib:"antd",theme:"filled",icon:"close-circle",className:o()("search-clear",{searching:q}),onClick:$})),"#all"===N&&r().createElement("div",{className:o()({empty:0===T.length})},r().createElement("div",{className:"recent-visits-label"},a(x.K.RECENT_VISITS)),r().createElement("ul",{className:"recent-visits"},T.map(((e,t)=>r().createElement("li",{key:t},r().createElement(c.EM,(0,n.A)({onClick:()=>_(e)},"app"===e.type?{url:e.url}:{href:e.url,target:"_blank"}),r().createElement("span",null,e.name))))))),"#all"===N&&r().createElement("ul",{className:"menu-groups"},M.map((e=>r().createElement(s.r,{key:e.name,name:e.localeName,items:e.items})))),"#all"!==N&&r().createElement("ul",{className:o()("platform-items",{empty:0===(null==D?void 0:D.items.length)})},null==D?void 0:D.items.map(((e,t)=>r().createElement(v,{item:e,key:t})))))))}function E(e){let{loading:t}=e;return t&&r().createElement("div",{className:"spinner"},r().createElement(c.Bj,{lib:"fa",icon:"spinner",spinning:!0}))}(0,b.initializeReactI18n)(x.NS,x.I)}}]);
2
- //# sourceMappingURL=9149.8d0c56b4.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chunks/9149.8d0c56b4.js","mappings":"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","sources":["webpack:///./src/launchpad-button-v2/host-context.css","webpack:///./src/launchpad-button-v2/PlatformCategory.shadow.css","webpack:///./src/launchpad-button-v2/styles.shadow.css","webpack:///./src/launchpad-button-v2/LaunchpadContext.ts","webpack:///./src/launchpad-button-v2/Launchpad.shadow.css","webpack:///./src/launchpad-button-v2/MenuGroup.tsx","webpack:///./src/launchpad-button-v2/host-context.css?59a8","webpack:///./src/launchpad-button-v2/PlatformCategory.tsx","webpack:///./src/launchpad-button-v2/Launchpad.tsx"],"sourcesContent":["// 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, `:root{--eo-launchpad-v2-background:#fff;--eo-launchpad-v2-menu-icon-color:#8c8c8c}html[data-theme=\"dark\"],\nhtml[data-theme=\"dark-v2\"]{--eo-launchpad-v2-background:#26262a;--eo-launchpad-v2-menu-icon-color:rgba(255,255,255,0.45)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\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, `.platform-category-name,\n.platform-category-sidebar-menu-item-label,\n.platform-item-name,\n.platform-item-description{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.platform-category-sidebar-menu-item{display:flex;gap:8px;align-items:center;padding:0px 12px 0px 16px}.platform-category-sidebar-menu-item > eo-link{display:block;min-width:0px;color:var(--color-header-text);cursor:pointer}.platform-category-sidebar-menu-item > eo-link:hover,\n.platform-category-sidebar-menu-item\n > eo-link:hover\n .platform-category-sidebar-menu-icon{color:var(--color-brand-hover)}.platform-category-sidebar-menu-item > eo-link.active,\n.platform-category-sidebar-menu-item\n > eo-link.active\n .platform-category-sidebar-menu-icon{color:var(--color-brand-active)}.platform-category-sidebar-menu-item > eo-link::part(link){height:20px;display:flex;align-items:center;gap:8px}.platform-category-sidebar-menu-icon{color:var(--left-sidebar-item-collapsed-icon-color)}.platform-category-name{font-size:18px;font-weight:500;color:var(--text-color-secondary);flex-shrink:0}.platform-items{display:grid;grid-template-columns:repeat(2,1fr);gap:0 54px}.platform-items > li{min-width:0}.platform-items > li > eo-link{width:100%;cursor:pointer}.platform-item{padding:12px 0;display:flex;flex-direction:column}.platform-item:hover .platform-item-icon,\n.platform-item:hover .platform-item-name{color:var(--color-brand-hover)}.platform-item-title{display:flex;align-items:center;margin-bottom:4px}.platform-item-icon{margin-right:8px;font-size:14px;color:var(--text-color-secondary);flex-shrink:0}.platform-item-name{font-weight:500;color:var(--text-color-title);line-height:18px}.platform-item-description{margin-left:22px;color:var(--text-color-secondary);line-height:18px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:inline-block;width:32px;height:32px;--eo-launchpad-v2-max-height:calc(100vh - var(--app-bar-height) - 36px)}:host([hidden]){display:none}.launchpad-button{width:100%;height:100%;display:flex;justify-content:center;align-items:center;color:#999;cursor:pointer;-webkit-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);height:var(--eo-launchpad-v2-max-height);background-color:var(--eo-launchpad-v2-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;display:flex;flex-direction:column;background:var(--color-fill-bg-base-3);min-width:0;background-size:205px 205px;background-repeat:no-repeat;background-position:left 52px bottom 27px}.sidebar > *:not(:last-child){border-bottom:1px solid var(--stroke-color-default)}.quick-nav-label,\n.platform-nav-label,\n.jump-nav-label,\n.menu-group-label,\n.menu-item-label,\n.recent-visits span{overflow:auto;white-space:normal;word-break:break-word;width:90px}.recent-visits span{width:100%}.sidebar-menu,\n.menu-groups,\n.menu,\n.sub-menu,\n.recent-visits,\n.platform-items{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;height:100%}.sidebar-menu-item > eo-link::part(link),\n.menu-item > eo-link::part(link){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)}.union{flex:1;display:flex;flex-direction:column;overflow-y:auto}.quick-nav,\n.platform-nav{display:flex;flex-direction:column;padding:20px 0 24px}.platform-nav{padding:0 0 24px}.quick-nav-label,\n.platform-nav-label{color:var(--color-header-text);font-weight:500;margin-bottom:14px;padding:0 16px}.quick-nav-menu,\n.platform-nav-menu{flex:1}.jump-nav > eo-link{display:block;cursor:pointer}.jump-nav > eo-link::part(link){padding:10px 16px;display:flex;justify-content:space-between;align-items:center}.jump-nav-label{flex:1;color:var(--color-header-text);font-weight:500}.jump-nav > eo-icon{font-size:14px;color:var(--text-color-default)}.content{flex:1;padding:20px 24px 24px;min-width:0;overflow-y:auto;display:flex;flex-direction:column;gap:24px}.search-box{border-bottom:1px solid var(--color-text-divider-line);display:flex;gap:8px;align-items:center;padding:10px 0;margin-top:-10px;cursor:text}.search-icon{color:var(--color-auxiliary-text)}.search-input{padding:0;margin:0;border:none;outline:none;color:inherit;background-color:transparent;font-size:14px;line-height:22px;flex:1;min-width:0}.search-input::placeholder{color:var(--color-disabled-text);opacity:1}.search-clear{display:none;color:var(--color-secondary-text);cursor:pointer}.search-clear.searching{display:inline-block}.search-clear:hover{color:var(--color-auxiliary-text)}.menu-groups,\n.recent-visits{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.menu-groups{display:grid;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(--eo-launchpad-v2-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;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:100%;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){.content,\n .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}.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}.content > :not(:last-child){margin-bottom:24px}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","import React from \"react\";\nimport type { MenuItemDataLink, MenuItemDataNormal } from \"./interfaces\";\n\nexport interface LaunchpadContextData {\n searching: boolean;\n loadingFavorites: boolean;\n readonly?: 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","// 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, `.fadeEnter{opacity:0;transform:scale(0.95)}.fadeEnterActive{opacity:1;transform:translateX(0);transition:opacity 100ms ease-out,transform 100ms ease-out}.fadeExit{transform:translate(-30px,0)}.fadeExitActive{transform:translate(-100%,0);transition:transform 300ms ease-out}.fadeExitDone{display:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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\";\nimport { Target } from \"@next-bricks/basic/link\";\nimport { initializeReactI18n, useTranslation } from \"@next-core/i18n/react\";\nimport { K, NS, locales } from \"./i18n\";\n\ninitializeReactI18n(NS, locales);\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.localeName as string}\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 { t } = useTranslation(NS);\n const { loadingFavorites, readonly, 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 })}\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.localeName}</span>\n </WrappedLink>\n {!readonly && (\n <WrappedIcon\n lib=\"fa\"\n prefix={starred ? \"fas\" : \"far\"}\n icon=\"star\"\n className=\"menu-item-star\"\n title={(starred ? t(K.UNFAVORITE) : t(K.FAVORITE)) as string}\n onClick={handleStarClick}\n data-testid=\"menu-item-star\"\n />\n )}\n </li>\n );\n}\n\nexport interface SidebarMenuItemProps {\n item: SidebarMenuItemData;\n target?: Target;\n}\n\nexport function SidebarMenuItem({ item, target }: SidebarMenuItemProps) {\n const { readonly, 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 })}\n {...(target\n ? {\n target,\n }\n : null)}\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 {!readonly && (\n <WrappedIcon\n lib=\"fa\"\n icon=\"xmark\"\n className=\"menu-item-remove\"\n onClick={handleRemoveStar}\n />\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","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./host-context.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./host-context.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React from \"react\";\nimport { WrappedLink, WrappedIcon } from \"./wrapped-bricks\";\nimport { MenuItemDataNormal, PlatformCategoryItem } from \"./interfaces\";\nimport { pick } from \"lodash\";\nimport classNames from \"classnames\";\n\nexport interface PlatformCategorySidebarMenuItemProps {\n item: PlatformCategoryItem;\n active?: boolean;\n onClick?: (item: PlatformCategoryItem) => void;\n}\n\nexport function PlatformCategorySidebarMenuItem({\n item,\n active,\n onClick,\n}: PlatformCategorySidebarMenuItemProps) {\n return (\n <li className=\"platform-category-sidebar-menu-item\">\n <WrappedLink\n type=\"plain\"\n className={classNames({ active })}\n onClick={() => onClick?.(item)}\n >\n <WrappedIcon\n className={\"platform-category-sidebar-menu-icon\"}\n lib=\"easyops\"\n category=\"second-menu\"\n icon=\"serve-second-menu\"\n {...(item.icon?.lib && item.icon.icon\n ? (pick(item.icon, [\n \"lib\",\n \"icon\",\n \"theme\",\n \"category\",\n \"prefix\",\n ]) as any)\n : null)}\n />\n <span className=\"platform-category-sidebar-menu-item-label\">\n {item.name}\n </span>\n </WrappedLink>\n </li>\n );\n}\n\nexport interface PlatformItemProps {\n item: MenuItemDataNormal;\n}\n\nexport function PlatformItem({ item }: PlatformItemProps) {\n return (\n <li>\n <WrappedLink\n type=\"plain\"\n {...(item.type === \"app\"\n ? {\n url: item.url,\n }\n : {\n href: item.url,\n target: \"_blank\",\n })}\n >\n <div className=\"platform-item\">\n <div className=\"platform-item-title\">\n <WrappedIcon\n className=\"platform-item-icon\"\n lib=\"easyops\"\n category=\"third-menu\"\n icon=\"deploy-orchestration-tasks-third-menu\"\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 <div className=\"platform-item-name\">{item.name}</div>\n </div>\n <div className=\"platform-item-description\">{item.description}</div>\n </div>\n </WrappedLink>\n </li>\n );\n}\n","import React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} 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 {\n FavMenuItem,\n PlatformCategoryItem,\n SidebarMenuItemData,\n} from \"./interfaces\";\nimport {\n PlatformItem,\n PlatformCategorySidebarMenuItem,\n} from \"./PlatformCategory\";\nimport { getRuntime } from \"@next-core/runtime\";\nimport { CSSTransition, TransitionGroup } from \"react-transition-group\";\nimport { initializeReactI18n, useTranslation } from \"@next-core/i18n/react\";\nimport { K, NS, locales } from \"./i18n\";\n\ninitializeReactI18n(NS, locales);\n\nexport function Launchpad({ active }: { active?: boolean }) {\n const { t } = useTranslation(NS);\n const searchInputRef = useRef<HTMLInputElement>(null);\n const [favorites, setFavorites] = useState<FavMenuItem[]>([]);\n const handleClickSearchBox = useCallback(() => {\n searchInputRef.current?.focus();\n }, []);\n const [platform, setPlatform] = useState(\"#all\");\n\n const showPlatformCategory = React.useMemo(\n () => getRuntime()?.getFeatureFlags()[\"launchpad-show-platform-category\"],\n []\n );\n\n const showScenarioCenter = React.useMemo(\n () => getRuntime()?.getFeatureFlags()[\"launchpad-show-scenario-center\"],\n []\n );\n\n const showSolutionCenter = React.useMemo(\n () => getRuntime()?.getFeatureFlags()[\"launchpad-show-solution-center\"],\n []\n );\n\n const showOpenPlatform = React.useMemo(\n () => getRuntime()?.getFeatureFlags()[\"launchpad-show-open-platform\"],\n []\n );\n\n const {\n loading,\n q,\n setQ,\n menuGroups,\n favorites: _favorites,\n loadingFavorites,\n recentVisits,\n pushRecentVisit,\n toggleStar,\n isStarred,\n platformCategories,\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 useEffect(() => {\n if (active) {\n searchInputRef.current?.focus();\n }\n }, [active]);\n\n const handlePlatformCategoryClick = useCallback(\n (item: PlatformCategoryItem) => {\n setPlatform(item.id);\n },\n []\n );\n\n const curCategory = useMemo(() => {\n return platformCategories.find((v) => v.id === platform);\n }, [platform, platformCategories]);\n\n useEffect(() => {\n if (_favorites.length > favorites.length) {\n // 新增无需等待直接更新列表\n setFavorites(_favorites);\n } else {\n // 删除操作需要等待动画执行完后才更新列表数据\n setTimeout(() => {\n setFavorites(_favorites);\n }, 300);\n }\n }, [_favorites, favorites.length]);\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=\"union\">\n <div className=\"quick-nav\">\n <div className=\"quick-nav-label\">{t(K.QUICK_ACCESS)}</div>\n {/* <Loading loading={loading || loadingFavorites} /> */}\n <TransitionGroup>\n <ul className=\"sidebar-menu quick-nav-menu\">\n {favorites.map((item, index) => (\n <CSSTransition\n key={index}\n timeout={300}\n in={!!_favorites.find((i) => i.id === item.id)}\n classNames={{\n enter: \"fadeEnter\",\n enterActive: \"fadeEnterActive\",\n exit: \"fadeExit\",\n exitActive: \"fadeExitActive\",\n exitDone: \"fadeExitDone\",\n }}\n >\n <SidebarMenuItem\n key={index}\n item={item as SidebarMenuItemData}\n />\n </CSSTransition>\n ))}\n </ul>\n </TransitionGroup>\n </div>\n\n {showPlatformCategory && (\n <div className=\"platform-nav\">\n <div className=\"platform-nav-label\">{t(K.PLATFORM_BASE)}</div>\n <ul className=\"sidebar-menu platform-nav-menu\">\n {platformCategories.map((item, index) => (\n <PlatformCategorySidebarMenuItem\n key={index}\n onClick={handlePlatformCategoryClick}\n item={item}\n active={platform === item.id}\n />\n ))}\n </ul>\n </div>\n )}\n </div>\n {showScenarioCenter && (\n <div className=\"jump-nav\">\n <WrappedLink type=\"plain\" url={\"/portal/scenario\"}>\n <div className=\"jump-nav-label\">{t(K.SCENARIO_CENTER)}</div>\n <WrappedIcon lib=\"antd\" icon=\"right\" theme=\"outlined\" />\n </WrappedLink>\n </div>\n )}\n\n {showSolutionCenter && (\n <div className=\"jump-nav\">\n <WrappedLink type=\"plain\" url={\"/portal/solution\"}>\n <div className=\"jump-nav-label\">{t(K.SOLUTIONS)}</div>\n <WrappedIcon lib=\"antd\" icon=\"right\" theme=\"outlined\" />\n </WrappedLink>\n </div>\n )}\n {showOpenPlatform && (\n <div className=\"jump-nav\">\n <WrappedLink type=\"plain\" url={\"/developers\"}>\n <div className=\"jump-nav-label\">{t(K.OPEN_PLATFORM)}</div>\n <WrappedIcon lib=\"antd\" icon=\"right\" theme=\"outlined\" />\n </WrappedLink>\n </div>\n )}\n </div>\n <div className={classNames(\"content\", { loading })}>\n <Loading loading={loading} />\n {platform !== \"#all\" && (\n <div className=\"platform-category-name\">{curCategory?.name}</div>\n )}\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={t(K.SEARCH_PLACEHOLDER) as string}\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 {platform === \"#all\" && (\n <div className={classNames({ empty: recentVisits.length === 0 })}>\n <div className=\"recent-visits-label\">{t(K.RECENT_VISITS)}</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 )}\n {platform === \"#all\" && (\n <ul className=\"menu-groups\">\n {menuGroups.map((group) => (\n <MenuGroup\n key={group.name}\n name={group.localeName as string}\n items={group.items}\n />\n ))}\n </ul>\n )}\n {platform !== \"#all\" && (\n <ul\n className={classNames(\"platform-items\", {\n empty: curCategory?.items.length === 0,\n })}\n >\n {curCategory?.items.map((item, index) => (\n <PlatformItem item={item} key={index} />\n ))}\n </ul>\n )}\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"],"names":["___CSS_LOADER_EXPORT___","push","module","id","toString","LaunchpadsContext","React","useLaunchpadContext","MenuGroup","_ref","name","items","className","map","item","type","MenuItemFolder","key","localeName","MenuItem","_ref2","_item$menuIcon","t","useTranslation","NS","loadingFavorites","readonly","pushRecentVisit","toggleStar","isStarred","starred","useMemo","handleStarClick","useCallback","handleClick","classNames","WrappedLink","_extends","onClick","url","href","WrappedIcon","lib","icon","menuIcon","pick","prefix","title","K","UNFAVORITE","FAVORITE","SidebarMenuItem","_ref3","_item$menuIcon2","target","handleRemoveStar","_ref4","searching","expanded","setExpanded","useState","searchingExpanded","setSearchingExpanded","toggle","previous","useEffect","actualExpanded","initializeReactI18n","locales","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","PlatformCategorySidebarMenuItem","_item$icon","active","category","PlatformItem","description","Launchpad","searchInputRef","useRef","favorites","setFavorites","handleClickSearchBox","_searchInputRef$curre","current","focus","platform","setPlatform","showPlatformCategory","_getRuntime","getRuntime","getFeatureFlags","showScenarioCenter","_getRuntime2","showSolutionCenter","_getRuntime3","showOpenPlatform","_getRuntime4","loading","q","setQ","menuGroups","_favorites","recentVisits","platformCategories","useLaunchpadInfo","handleSearch","e","value","clearSearch","_searchInputRef$curre2","handlePlatformCategoryClick","curCategory","find","v","length","setTimeout","Provider","QUICK_ACCESS","TransitionGroup","index","CSSTransition","timeout","in","i","enter","enterActive","exit","exitActive","exitDone","PLATFORM_BASE","SCENARIO_CENTER","theme","SOLUTIONS","OPEN_PLATFORM","Loading","ref","placeholder","SEARCH_PLACEHOLDER","onChange","empty","RECENT_VISITS","group","spinning"],"sourceRoot":""}