@next-bricks/nav 1.10.1 → 1.10.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.
- package/dist/bricks.json +1 -1
- package/dist/chunks/2252.c3dd7b78.js +3 -0
- package/dist/chunks/2252.c3dd7b78.js.map +1 -0
- package/dist/chunks/4130.c1f19eec.js +2 -0
- package/dist/chunks/{4130.5ccf8efd.js.map → 4130.c1f19eec.js.map} +1 -1
- package/dist/chunks/4204.598a3655.js +3 -0
- package/dist/chunks/{4204.9cb50511.js.map → 4204.598a3655.js.map} +1 -1
- package/dist/chunks/4904.5dfde72c.js +3 -0
- package/dist/chunks/{4904.66c677e1.js.map → 4904.5dfde72c.js.map} +1 -1
- package/dist/chunks/5669.7740bce7.js +2 -0
- package/dist/chunks/5669.7740bce7.js.map +1 -0
- package/dist/chunks/8050.20120cde.js +2 -0
- package/dist/chunks/8050.20120cde.js.map +1 -0
- package/dist/chunks/875.37a51b37.js +2 -0
- package/dist/chunks/875.37a51b37.js.map +1 -0
- package/dist/chunks/9155.ccd49444.js +3 -0
- package/dist/chunks/{9155.c860cfb6.js.map → 9155.ccd49444.js.map} +1 -1
- package/dist/chunks/920.cc397fb7.js +2 -0
- package/dist/chunks/{920.eda5db5b.js.map → 920.cc397fb7.js.map} +1 -1
- package/dist/chunks/easyops-navbar-alerts.306d30d1.js +2 -0
- package/dist/chunks/{easyops-navbar-alerts.e9761ecb.js.map → easyops-navbar-alerts.306d30d1.js.map} +1 -1
- package/dist/chunks/{eo-directory-tree.ab46e6b2.js → eo-directory-tree.c040c65a.js} +2 -2
- package/dist/chunks/{eo-directory-tree.ab46e6b2.js.map → eo-directory-tree.c040c65a.js.map} +1 -1
- package/dist/chunks/{eo-directory.ec3ff4bc.js → eo-directory.83d59198.js} +3 -3
- package/dist/chunks/{eo-directory.ec3ff4bc.js.map → eo-directory.83d59198.js.map} +1 -1
- package/dist/chunks/eo-frame-breadcrumb.e67c04ad.js +2 -0
- package/dist/chunks/{eo-frame-breadcrumb.e9db68b7.js.map → eo-frame-breadcrumb.e67c04ad.js.map} +1 -1
- package/dist/chunks/eo-launchpad-button-v2.5084e989.js +2 -0
- package/dist/chunks/{eo-launchpad-button-v2.772a1021.js.map → eo-launchpad-button-v2.5084e989.js.map} +1 -1
- package/dist/chunks/eo-nav-menu.c181cb6c.js +3 -0
- package/dist/chunks/{eo-nav-menu.85627937.js.map → eo-nav-menu.c181cb6c.js.map} +1 -1
- package/dist/chunks/eo-sidebar-menu-group.88649be4.js +3 -0
- package/dist/chunks/{eo-sidebar-menu-group.846e8b68.js.map → eo-sidebar-menu-group.88649be4.js.map} +1 -1
- package/dist/chunks/eo-sidebar-menu-submenu.f36c2d41.js +3 -0
- package/dist/chunks/{eo-sidebar-menu-submenu.1794ff61.js.map → eo-sidebar-menu-submenu.f36c2d41.js.map} +1 -1
- package/dist/chunks/eo-sidebar-menu.214b7ec3.js +2 -0
- package/dist/chunks/{eo-sidebar-menu.4bd28e48.js.map → eo-sidebar-menu.214b7ec3.js.map} +1 -1
- package/dist/chunks/eo-sidebar-sub-menu.2b0ab8c4.js +3 -0
- package/dist/chunks/{eo-sidebar-sub-menu.b8edf54e.js.map → eo-sidebar-sub-menu.2b0ab8c4.js.map} +1 -1
- package/dist/chunks/eo-sidebar.54157ae6.js +3 -0
- package/dist/chunks/{eo-sidebar.45f62d98.js.map → eo-sidebar.54157ae6.js.map} +1 -1
- package/dist/chunks/launchpad-config.f652114f.js +3 -0
- package/dist/chunks/{launchpad-config.e9ae9800.js.map → launchpad-config.f652114f.js.map} +1 -1
- package/dist/chunks/main.225c639f.js +2 -0
- package/dist/chunks/main.225c639f.js.map +1 -0
- package/dist/chunks/nav-logo.4fa19422.js +2 -0
- package/dist/chunks/{nav-logo.379c6926.js.map → nav-logo.4fa19422.js.map} +1 -1
- package/dist/index.68bd4ad7.js +2 -0
- package/dist/index.68bd4ad7.js.map +1 -0
- package/package.json +2 -2
- package/dist/chunks/1972.6375973e.js +0 -2
- package/dist/chunks/1972.6375973e.js.map +0 -1
- package/dist/chunks/2252.58dd2b4f.js +0 -3
- package/dist/chunks/2252.58dd2b4f.js.map +0 -1
- package/dist/chunks/3208.199af3be.js +0 -2
- package/dist/chunks/3208.199af3be.js.map +0 -1
- package/dist/chunks/4130.5ccf8efd.js +0 -2
- package/dist/chunks/4204.9cb50511.js +0 -3
- package/dist/chunks/4904.66c677e1.js +0 -3
- package/dist/chunks/9155.c860cfb6.js +0 -3
- package/dist/chunks/920.eda5db5b.js +0 -2
- package/dist/chunks/9591.767273db.js +0 -2
- package/dist/chunks/9591.767273db.js.map +0 -1
- package/dist/chunks/easyops-navbar-alerts.e9761ecb.js +0 -2
- package/dist/chunks/eo-frame-breadcrumb.e9db68b7.js +0 -2
- package/dist/chunks/eo-launchpad-button-v2.772a1021.js +0 -2
- package/dist/chunks/eo-nav-menu.85627937.js +0 -3
- package/dist/chunks/eo-sidebar-menu-group.846e8b68.js +0 -3
- package/dist/chunks/eo-sidebar-menu-submenu.1794ff61.js +0 -3
- package/dist/chunks/eo-sidebar-menu.4bd28e48.js +0 -2
- package/dist/chunks/eo-sidebar-sub-menu.b8edf54e.js +0 -3
- package/dist/chunks/eo-sidebar.45f62d98.js +0 -3
- package/dist/chunks/launchpad-config.e9ae9800.js +0 -3
- package/dist/chunks/main.a1dc92c5.js +0 -2
- package/dist/chunks/main.a1dc92c5.js.map +0 -1
- package/dist/chunks/nav-logo.379c6926.js +0 -2
- package/dist/index.efec9255.js +0 -2
- package/dist/index.efec9255.js.map +0 -1
- /package/dist/chunks/{2252.58dd2b4f.js.LICENSE.txt → 2252.c3dd7b78.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{4204.9cb50511.js.LICENSE.txt → 4204.598a3655.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{4904.66c677e1.js.LICENSE.txt → 4904.5dfde72c.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{9155.c860cfb6.js.LICENSE.txt → 9155.ccd49444.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{eo-directory.ec3ff4bc.js.LICENSE.txt → eo-directory.83d59198.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{eo-nav-menu.85627937.js.LICENSE.txt → eo-nav-menu.c181cb6c.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{eo-sidebar-menu-group.846e8b68.js.LICENSE.txt → eo-sidebar-menu-group.88649be4.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{eo-sidebar-menu-submenu.1794ff61.js.LICENSE.txt → eo-sidebar-menu-submenu.f36c2d41.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{eo-sidebar-sub-menu.b8edf54e.js.LICENSE.txt → eo-sidebar-sub-menu.2b0ab8c4.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{eo-sidebar.45f62d98.js.LICENSE.txt → eo-sidebar.54157ae6.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{launchpad-config.e9ae9800.js.LICENSE.txt → launchpad-config.f652114f.js.LICENSE.txt} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/4204.9cb50511.js","mappings":"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","sources":["webpack:///./src/nav-menu/ThreeLevelMenuPopoverContent.tsx","webpack:///./src/nav-menu/i18n.ts","webpack:///../../node_modules/@next-api-sdk/user-service-sdk/dist/esm/api/user_service/my_collection/listMyCollection.js","webpack:///./src/nav-menu/site-map/constants.ts","webpack:///./src/nav-menu/site-map/CollectService.ts","webpack:///../../node_modules/@next-api-sdk/user-service-sdk/dist/esm/api/user_service/my_collection/upsertMyCollection.js","webpack:///./src/nav-menu/site-map/ItemTag.tsx","webpack:///./src/nav-menu/site-map/processor.ts","webpack:///./src/nav-menu/site-map/GroupItem.tsx","webpack:///./src/nav-menu/site-map/SiteMapItem.tsx","webpack:///./src/nav-menu/utils.tsx","webpack:///./src/nav-menu/host-context.css","webpack:///./src/nav-menu/nav-menu.shadow.css","webpack:///./src/nav-menu/site-map/GroupItem.shadow.css","webpack:///./src/nav-menu/site-map/ItemTag.shadow.css","webpack:///./src/nav-menu/site-map/SiteMapItem.shadow.css","webpack:///./src/nav-menu/host-context.css?ac7e","webpack:///../../node_modules/@babel/runtime/helpers/esm/checkPrivateRedeclaration.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/classPrivateFieldInitSpec.js","webpack:///../../src/menu.ts"],"sourcesContent":["import React, { useMemo, useState, useRef } from \"react\";\nimport classnames from \"classnames\";\nimport { renderLinkCom } from \"./utils.js\";\nimport { uniq } from \"lodash\";\nimport type {\n SidebarMenuGroup,\n SidebarMenuItem,\n SidebarMenuSimpleItem,\n} from \"@next-shared/general/types\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type { ReactNextElement } from \"@next-core/react-element\";\nimport type { Popover, PopoverProps } from \"@next-bricks/basic/popover\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport { JsonStorage } from \"@next-shared/general/JsonStorage\";\nimport { K, NS, locales } from \"./i18n.js\";\nimport { useTranslation, initializeReactI18n } from \"@next-core/i18n/react\";\n\ninitializeReactI18n(NS, locales);\nconst WrappedPopover = wrapBrick<Popover, PopoverProps>(\"eo-popover\");\ninterface SearchProps {\n value?: string;\n placeholder?: string;\n autoFocus?: boolean;\n clearable?: boolean;\n trim?: boolean;\n debounceTime?: number;\n}\n\ninterface SearchEvents {\n change: CustomEvent<string>;\n search: CustomEvent<string>;\n}\n\ninterface SearchEventsMap {\n onChange: \"change\";\n onSearch: \"search\";\n}\nconst WrappedSearch = wrapBrick<\n ReactNextElement,\n SearchProps,\n SearchEvents,\n SearchEventsMap\n>(\"eo-search\", {\n onChange: \"change\",\n onSearch: \"search\",\n});\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\ninterface ThreeLevelMenuPopoverContentProps {\n menuItem: SidebarMenuGroup;\n selectedKey: string[];\n}\nconst LOCAL_STORAGE_PREFIX = \"threeLevelCategoryMenu\";\nconst maxVisitorLength = 6;\nexport function ThreeLevelMenuPopoverContent(\n props: ThreeLevelMenuPopoverContentProps\n): React.ReactElement {\n const { t } = useTranslation(NS);\n const { menuItem, selectedKey } = props;\n const items = menuItem.items as SidebarMenuGroup[];\n const [searchResult, setSearchResult] = useState<SidebarMenuSimpleItem[]>([]);\n const [searchKey, setSearchKey] = useState(\"\");\n const triggerRef = useRef<HTMLDivElement>(null);\n const nameSpace = `${LOCAL_STORAGE_PREFIX}_${menuItem.title}`;\n const storage = useMemo(() => new JsonStorage(localStorage), []);\n const searchHistory = (storage.getItem(nameSpace) as string[]) || [];\n\n const handleSearch = (e: CustomEvent<string>) => {\n setSearchKey(e.detail);\n if (e.detail) {\n const list = uniq([e.detail, ...searchHistory]);\n if (list.length > maxVisitorLength) {\n list.pop();\n }\n storage.setItem(nameSpace, list);\n setSearchResult(\n items\n .flatMap((i) => (i.items as SidebarMenuSimpleItem[]) || [])\n .filter((i) =>\n (i.text as string)\n .toLowerCase()\n .includes((e.detail as string).trim().toLowerCase())\n )\n );\n } else {\n setSearchResult([]);\n }\n };\n\n const popoverTriggerClick = () => {\n triggerRef.current?.click();\n };\n\n return (\n <div className={\"three-level-menu-container\"}>\n <div\n className=\"three-level-menu-search-container\"\n onClick={(e) => {\n e.stopPropagation();\n }}\n >\n <WrappedSearch\n placeholder={t(K.SEARCH_BY_MENU_NAME) as string}\n onSearch={handleSearch}\n onFocus={popoverTriggerClick}\n onBlur={popoverTriggerClick}\n />\n <WrappedPopover\n trigger=\"click\"\n placement={\"bottom-start\"}\n anchorDisplay=\"block\"\n distance={0}\n >\n <div slot=\"anchor\" ref={triggerRef}></div>\n {\n <div className=\"three-level-menu-search-result\">\n {!!searchResult.length &&\n searchResult.map((i) => renderLinkCom(i, { width: \"100%\" }))}\n {searchKey && !searchResult.length && (\n <div\n style={{\n height: \"100px\",\n textAlign: \"center\",\n lineHeight: \"100px\",\n }}\n >\n {t(K.NO_DATA)}\n </div>\n )}\n </div>\n }\n </WrappedPopover>\n </div>\n {!!searchHistory.length && (\n <div className=\"three-level-menu-search-history-container\">\n <div className=\"three-level-menu-search-history-title\">\n {t(K.SEARCH_HISTORY)}\n <WrappedIcon\n lib=\"antd\"\n theme=\"outlined\"\n icon=\"delete\"\n className=\"three-level-menu-search-history-icon\"\n />\n </div>\n <div>\n {searchHistory.map((h) => (\n <span key={h} className=\"three-level-menu-search-history-text\">\n {h}\n </span>\n ))}\n </div>\n </div>\n )}\n <div\n className={\"three-level-menu-item-container\"}\n style={{\n gridTemplateColumns: `repeat(${\n items.length > 4 ? 4 : items.length\n },1fr)`,\n }}\n >\n {items.map((item: SidebarMenuGroup, index: number) => (\n <div key={index}>\n <div className=\"three-level-menu-item-title-container\">\n <span className=\"three-level-menu-item-title-icon\"></span>\n <span className=\"three-level-menu-item-title\">{item.title}</span>\n </div>\n {item.items?.map((i) => (\n <span\n key={i.key}\n className={classnames({\n active: i.key ? selectedKey.includes(i.key) : false,\n })}\n >\n {renderLinkCom(i as SidebarMenuSimpleItem, { width: \"100%\" })}\n </span>\n ))}\n </div>\n ))}\n </div>\n </div>\n );\n}\n","export enum K {\n SEARCH_BY_MENU_NAME = \"SEARCH_BY_MENU_NAME\",\n SEARCH_HISTORY = \"SEARCH_HISTORY\",\n NO_DATA = \"NO_DATA\",\n QUICK_ACCESS = \"QUICK_ACCESS\",\n REMOVE_ITEM_FROM_QUICK_ACCESS = \"REMOVE_ITEM_FROM_QUICK_ACCESS\",\n ADD_ITEM_TO_QUICK_ACCESS = \"ADD_ITEM_TO_QUICK_ACCESS\",\n NO_DATA_TIPS_IN_QUICK_ACCESS = \"NO_DATA_TIPS_IN_QUICK_ACCESS\",\n SITE_MAP_SEARCH_RECOMMEND = \"SITE_MAP_SEARCH_RECOMMEND\",\n MAX_COLLECT_COUNT_TIPS = \"MAX_COLLECT_COUNT_TIPS\",\n NO_DATA_SEARCH_INFO = \"NO_DATA_SEARCH_INFO\",\n SEARCH_ITEM_PLACEHOLDER = \"SEARCH_ITEM_PLACEHOLDER\",\n}\n\nconst en: Locale = {\n SEARCH_BY_MENU_NAME: \"Search by menu name\",\n SEARCH_HISTORY: \"Search history\",\n NO_DATA: \"No data\",\n QUICK_ACCESS: \"Quick Access\",\n REMOVE_ITEM_FROM_QUICK_ACCESS: \"Remove from Quick Access\",\n ADD_ITEM_TO_QUICK_ACCESS: \"Add to Quick Access\",\n NO_DATA_TIPS_IN_QUICK_ACCESS:\n \"No quick access resources have been added yet. Please add from the list below or after searching\",\n SITE_MAP_SEARCH_RECOMMEND: \"Search recommend\",\n MAX_COLLECT_COUNT_TIPS: \"Need to delete some favorites in order to add\",\n NO_DATA_SEARCH_INFO: \"The search result is empty, please enter again\",\n SEARCH_ITEM_PLACEHOLDER: \"Please enter keywords to search\",\n};\n\nconst zh: Locale = {\n SEARCH_BY_MENU_NAME: \"通过菜单名称搜索\",\n SEARCH_HISTORY: \"历史搜索\",\n NO_DATA: \"暂无数据\",\n QUICK_ACCESS: \"快捷访问\",\n REMOVE_ITEM_FROM_QUICK_ACCESS: \"从快捷访问移除\",\n ADD_ITEM_TO_QUICK_ACCESS: \"添加至快捷访问\",\n NO_DATA_TIPS_IN_QUICK_ACCESS: \"暂未添加快捷访问资源,从下方列表或搜索后添加\",\n SITE_MAP_SEARCH_RECOMMEND: \"搜索推荐\",\n MAX_COLLECT_COUNT_TIPS: \"需删除部分收藏,才能添加\",\n NO_DATA_SEARCH_INFO: \"搜索结果为空,请重新输入\",\n SEARCH_ITEM_PLACEHOLDER: \"请输入关键词搜索\",\n};\n\nexport const NS = \"bricks/nav/nav-menu\";\n\nexport const locales = { en, zh };\n\ntype Locale = { [key in K]: string };\n","import _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/asyncToGenerator\";\nimport { http } from \"@next-core/http\";\n/**\n * @description 获取我的收藏列表\n * @endpoint GET /api/v1/user_service/my_collection/collections\n */\nexport var MyCollectionApi_listMyCollection = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(function* (params, options) {\n return (/**! @contract easyops.api.user_service.my_collection.ListMyCollection@1.0.0 */(yield http.get(\"api/gateway/user_service.my_collection.ListMyCollection/api/v1/user_service/my_collection/collections\", _objectSpread(_objectSpread({}, options), {}, {\n params\n }))).data\n );\n });\n return function MyCollectionApi_listMyCollection(_x, _x2) {\n return _ref.apply(this, arguments);\n };\n}();\n//# sourceMappingURL=listMyCollection.js.map","import React from \"react\";\n\nexport enum DRAG_DIRECTION {\n Left = \"left\",\n Right = \"right\",\n}\n\nexport interface ContextOfDragProps {\n groupId: string;\n direction?: DRAG_DIRECTION;\n overElement?: HTMLElement;\n allowDrag?: boolean;\n onAllowDrag?: (enable: boolean) => void;\n onDragStart?: (e: React.DragEvent) => void;\n onDragOver?: (e: React.DragEvent) => void;\n onDragEnd?: (e: React.DragEvent) => void;\n onFavoriteUpdate?: (list: any[]) => void;\n}\n\nexport const collectModule = \"sidebarMenuCollect\";\n\nexport const DragContext = React.createContext<ContextOfDragProps>(\n {} as ContextOfDragProps\n);\n","import type { SidebarMenuSimpleItem } from \"@next-shared/general/types\";\nimport {\n MyCollectionApi_listMyCollection,\n MyCollectionApi_ListMyCollectionResponseBody,\n MyCollectionApi_upsertMyCollection,\n} from \"@next-api-sdk/user-service-sdk\";\nimport { DRAG_DIRECTION, collectModule } from \"./constants.js\";\nimport { cloneDeep } from \"lodash\";\nimport { handleHttpError } from \"@next-core/runtime\";\n\nexport class CollectService {\n private maxCollectLength: number;\n private collectMap: Map<string, SidebarMenuSimpleItem[]> = new Map();\n private collectPromise: Map<string, Promise<SidebarMenuSimpleItem[]>> =\n new Map();\n\n constructor(maxCollectLength?: number) {\n this.maxCollectLength = maxCollectLength ?? 10;\n }\n\n public getFavoritesById(id: string): SidebarMenuSimpleItem[] {\n return cloneDeep(this.collectMap.get(id)) ?? [];\n }\n\n public async fetchFavorites(id: string): Promise<SidebarMenuSimpleItem[]> {\n const cachedPromise = this.collectPromise.get(id);\n if (cachedPromise) {\n const collectList = this.collectMap.get(id);\n\n return collectList ? collectList : cachedPromise;\n }\n\n const favoritesPromise = MyCollectionApi_listMyCollection({\n module: collectModule,\n collectionName: id,\n }).then((result) => {\n const list = result.payloads\n ?.map((item) => item.extInfo)\n .filter(Boolean) as SidebarMenuSimpleItem[];\n this.collectMap.set(id, list);\n\n return list;\n }) as Promise<SidebarMenuSimpleItem[]>;\n\n this.collectPromise.set(id, favoritesPromise);\n\n return favoritesPromise;\n }\n\n public setItemAsFavorite(id: string, item: SidebarMenuSimpleItem): void {\n const list = this.getFavoritesById(id);\n\n if (list.length >= this.maxCollectLength) {\n list.pop();\n }\n\n list.unshift(item);\n this.updateFavoriteItems(id, list);\n }\n\n public updateFavoriteItems(id: string, list: SidebarMenuSimpleItem[]): void {\n try {\n this.collectMap.set(id, list);\n MyCollectionApi_upsertMyCollection({\n module: collectModule,\n collectionName: id,\n payloads: list?.map((item) => ({\n name: item.text,\n url: item.to,\n extInfo: item,\n })) as MyCollectionApi_ListMyCollectionResponseBody[\"payloads\"],\n });\n } catch (error) {\n // istanbul ignore next\n handleHttpError(error);\n }\n }\n\n private equalItem(\n prevItem: SidebarMenuSimpleItem,\n item: SidebarMenuSimpleItem\n ): boolean {\n return prevItem.text === item.text && prevItem.to === item.to;\n }\n\n public removeItemFromFavorite(id: string, item: SidebarMenuSimpleItem): void {\n const list = this.getFavoritesById(id);\n const index = list.findIndex((row) => this.equalItem(row, item));\n // istanbul ignore else\n if (index !== -1) {\n list.splice(index, 1);\n this.updateFavoriteItems(id, list);\n }\n }\n\n public isCollected(id: string, item: SidebarMenuSimpleItem): boolean {\n const list = this.getFavoritesById(id);\n return list.some((row) => this.equalItem(row, item));\n }\n\n public toggleFavorite(id: string, item: SidebarMenuSimpleItem): void {\n if (this.isCollected(id, item)) {\n this.removeItemFromFavorite(id, item);\n } else {\n if (this.checkMaxCapacity(id)) return;\n this.setItemAsFavorite(id, item);\n }\n }\n\n public moveFavoriteTo(\n id: string,\n option: {\n from: SidebarMenuSimpleItem;\n to: SidebarMenuSimpleItem;\n direction: DRAG_DIRECTION;\n }\n ): SidebarMenuSimpleItem[] {\n const { from, to, direction } = option;\n\n const list = this.getFavoritesById(id);\n if (this.equalItem(from, to)) return list;\n\n const fromIndex = list.findIndex((row) => this.equalItem(row, from));\n\n // istanbul ignore else\n if (fromIndex !== -1) {\n list.splice(fromIndex, 1);\n\n const toIndex = list.findIndex((row) => this.equalItem(row, to));\n\n // istanbul ignore else\n if (toIndex !== -1) {\n if (direction === DRAG_DIRECTION.Left) {\n list.splice(toIndex, 0, from);\n } else {\n list.splice(toIndex + 1, 0, from);\n }\n\n this.updateFavoriteItems(id, list);\n }\n }\n\n return list;\n }\n\n checkMaxCapacity(groupId: string): boolean {\n return this.getFavoritesById(groupId).length >= this.maxCollectLength;\n }\n}\n\nexport const collectService = new CollectService();\n","import { http } from \"@next-core/http\";\n/**\n * @description 更新/新增我的收藏,这个接口用于全量更新单实例\n * @endpoint POST /api/v1/user_service/my_collection/upsert_collections\n */\nexport var MyCollectionApi_upsertMyCollection = (data, options) => /**! @contract easyops.api.user_service.my_collection.UpsertMyCollection@1.0.0 */http.post(\"api/gateway/user_service.my_collection.UpsertMyCollection/api/v1/user_service/my_collection/upsert_collections\", data, options);\n//# sourceMappingURL=upsertMyCollection.js.map","import React, {\n useMemo,\n useCallback,\n useRef,\n useState,\n useEffect,\n useContext,\n DragEvent,\n} from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport { Link, LinkProps } from \"@next-bricks/basic/link\";\n\nimport { EoTooltip, ToolTipProps } from \"@next-bricks/basic/tooltip\";\nimport classNames from \"classnames\";\nimport { SidebarMenuSimpleItem } from \"@next-shared/general/types\";\nimport { K, NS, locales } from \"../i18n.js\";\nimport { collectService } from \"./CollectService.js\";\nimport { useTranslation, initializeReactI18n } from \"@next-core/i18n/react\";\nimport { DRAG_DIRECTION, DragContext } from \"./constants.js\";\n\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\ninitializeReactI18n(NS, locales);\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedTooltip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\n\ninterface CellItemProps {\n data: SidebarMenuSimpleItem;\n suffix?: React.ReactNode;\n className?: string;\n}\n\nexport type OnFavoriteCallback = (collectList: SidebarMenuSimpleItem[]) => void;\n\ninterface PlaceholderCompProps {\n data: SidebarMenuSimpleItem;\n direction: DRAG_DIRECTION;\n onDragOver?: (e: DragEvent) => void;\n}\nexport function PlaceholderDropComp({\n data,\n onDragOver,\n direction,\n}: PlaceholderCompProps) {\n const { groupId, onFavoriteUpdate } = useContext(DragContext);\n const handleDrop = (e: DragEvent) => {\n const formData = JSON.parse(e.dataTransfer.getData(\"application/json\"));\n\n const newDataList = collectService.moveFavoriteTo(groupId, {\n from: formData,\n to: data,\n direction,\n });\n\n onFavoriteUpdate?.(newDataList);\n };\n\n return (\n <div\n className=\"indicate-wrapper\"\n data-direction={direction}\n data-to={data.to}\n onDragEnter={(e) =>\n ((e.target as HTMLElement).style.background = \"var(--palette-blue-1)\")\n }\n onDragLeave={(e) =>\n ((e.target as HTMLElement).style.background = \"transparent\")\n }\n data-text={data.text}\n onDragOver={onDragOver}\n onDrop={handleDrop}\n />\n );\n}\n\nexport function ItemTag(props: CellItemProps): React.ReactElement {\n const { data, suffix, className } = props;\n\n const {\n allowDrag,\n onDragStart,\n overElement,\n direction,\n onDragEnd,\n onDragOver,\n } = useContext(DragContext);\n const containerRef = useRef<any>(null);\n\n const [isDragIng, setIsDragIng] = useState(false);\n\n const isActive = useMemo(\n () =>\n overElement &&\n overElement.dataset.to == data.to &&\n overElement.dataset.text === overElement.dataset.text,\n [overElement, data]\n );\n\n const handleDragStart = (e: React.DragEvent) => {\n if (!allowDrag) {\n e.preventDefault();\n } else {\n setIsDragIng(true);\n e.dataTransfer?.setData(\"application/json\", JSON.stringify(data));\n onDragStart?.(e);\n }\n };\n\n const handleDragEnd = (e: React.DragEvent) => {\n setIsDragIng(false);\n onDragEnd?.(e);\n };\n\n const handleOver = (e: React.DragEvent) => {\n e.dataTransfer.dropEffect = \"none\";\n onDragOver?.(e);\n };\n\n return (\n <>\n {isActive && direction === DRAG_DIRECTION.Left && (\n <PlaceholderDropComp\n data={data}\n onDragOver={onDragOver}\n direction={DRAG_DIRECTION.Left}\n />\n )}\n <WrappedLink\n data-to={data.to}\n data-text={data.text}\n ref={containerRef}\n draggable\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n onDragOver={handleOver}\n className={classNames(\"tag-container\", className, {\n \"is-drag\": isDragIng,\n })}\n url={data.to as string}\n href={data.href}\n target={data.target as LinkProps[\"target\"]}\n >\n <span className=\"tag-text ellipsis\" title={data.text}>\n {data.text}\n </span>\n <span className=\"tag-suffix\" onClick={(e) => e.preventDefault()}>\n {suffix}\n </span>\n </WrappedLink>\n\n {isActive && direction === DRAG_DIRECTION.Right && (\n <PlaceholderDropComp\n data={data}\n onDragOver={onDragOver}\n direction={DRAG_DIRECTION.Right}\n />\n )}\n </>\n );\n}\n\ninterface QuickVisitTagProps extends CellItemProps {\n groupId: string;\n onFavorite?: OnFavoriteCallback;\n}\n\nexport function QuickVisitItem(props: QuickVisitTagProps): React.ReactElement {\n const { t } = useTranslation(NS);\n const { onAllowDrag } = useContext(DragContext);\n const { data, onFavorite, groupId } = props;\n const suffixRef = useRef<any>();\n const iconRef = useRef<any>();\n\n const handleRemove = useCallback(() => {\n collectService.removeItemFromFavorite(groupId, data);\n onFavorite?.(collectService.getFavoritesById(groupId));\n }, [groupId, data, onFavorite]);\n\n const handleMouseDown = () => {\n onAllowDrag?.(true);\n };\n\n useEffect(() => {\n const icon = iconRef.current;\n icon.addEventListener(\"click\", handleRemove);\n\n return () => {\n icon.removeEventListener(\"click\", handleRemove);\n };\n }, [handleRemove]);\n\n useEffect(() => {\n const suffix = suffixRef.current;\n const handleClick = (e: MouseEvent) => {\n e.preventDefault();\n };\n suffix.addEventListener(\"click\", handleClick);\n\n return () => {\n suffix.removeEventListener(\"click\", handleClick);\n };\n }, []);\n\n const suffixGroups = useMemo(\n () => (\n <div className=\"operation\" ref={suffixRef}>\n <WrappedTooltip\n content={t(K.REMOVE_ITEM_FROM_QUICK_ACCESS)!}\n hoist\n placement=\"bottom\"\n className=\"close\"\n >\n <WrappedIcon lib=\"antd\" icon=\"close\" ref={iconRef} />\n </WrappedTooltip>\n <span className=\"drag-wrapper\" onMouseDown={handleMouseDown}>\n :::\n </span>\n </div>\n ),\n [t, handleRemove]\n );\n\n return (\n <ItemTag className=\"visit-container\" suffix={suffixGroups} data={data} />\n );\n}\n\ninterface StarIconProps {\n onFavorite?: OnFavoriteCallback;\n className?: string;\n groupId: string;\n data: SidebarMenuSimpleItem;\n active?: boolean;\n}\n\nexport function StarIcon({\n onFavorite,\n className,\n groupId,\n data,\n active,\n}: StarIconProps): React.ReactElement {\n const { t } = useTranslation(NS);\n const iconRef = useRef<any>();\n\n const handleClick = (e: React.MouseEvent) => {\n e.preventDefault();\n collectService.toggleFavorite(groupId, data);\n onFavorite?.(collectService.getFavoritesById(groupId));\n };\n\n useEffect(() => {\n // workaround for prevent Link jump when click.\n const icon = iconRef.current;\n icon.addEventListener(\"click\", handleClick);\n\n return () => {\n icon.removeEventListener(\"click\", handleClick);\n };\n }, []);\n\n return (\n <WrappedTooltip\n content={\n active\n ? t(K.REMOVE_ITEM_FROM_QUICK_ACCESS)!\n : collectService.checkMaxCapacity(groupId)\n ? t(K.MAX_COLLECT_COUNT_TIPS)!\n : t(K.ADD_ITEM_TO_QUICK_ACCESS)!\n }\n className={classNames(\"star-icon\", className)}\n >\n <WrappedIcon\n ref={iconRef}\n className={classNames({ active })}\n lib=\"antd\"\n icon=\"star\"\n {...(active ? { theme: \"filled\" } : {})}\n />\n </WrappedTooltip>\n );\n}\n\ninterface RecommendItemProps extends CellItemProps {\n active?: boolean;\n groupId: string;\n onFavorite?: OnFavoriteCallback;\n}\n\nexport function RecommendItem(props: RecommendItemProps): React.ReactElement {\n const { data, className, groupId, onFavorite, active } = props;\n\n const suffixGroups = useMemo(\n () => (\n <StarIcon\n groupId={groupId}\n active={active}\n className=\"star\"\n data={data}\n onFavorite={onFavorite}\n />\n ),\n [data, groupId, onFavorite, active]\n );\n\n return (\n <ItemTag\n className={classNames(\"recommend-container\", className)}\n suffix={suffixGroups}\n data={data}\n />\n );\n}\n","import {\n SidebarMenuItem,\n SidebarMenuGroup,\n SidebarMenuSimpleItem,\n} from \"@next-shared/general/types\";\n\nfunction walkMenuItem(item: SidebarMenuItem, list: SidebarMenuSimpleItem[]) {\n if (\n (item as SidebarMenuGroup).type === \"group\" &&\n Array.isArray((item as SidebarMenuGroup).items)\n ) {\n walkMenuItems((item as SidebarMenuGroup).items, list);\n } else {\n list.push(item as SidebarMenuSimpleItem);\n }\n}\n\nfunction walkMenuItems(\n items: SidebarMenuItem[],\n list: SidebarMenuSimpleItem[]\n): void {\n for (const item of items) {\n walkMenuItem(item, list);\n }\n}\n\nexport function flatMenuItems(item: SidebarMenuItem): SidebarMenuSimpleItem[] {\n const list: SidebarMenuSimpleItem[] = [];\n\n walkMenuItem(item, list);\n\n return list;\n}\n\nexport function processGroupItems(groups: SidebarMenuGroup[]): Array<{\n groupFrom: string;\n groups: SidebarMenuGroup[];\n}> {\n const groupCategoryMap = new Map<string, SidebarMenuGroup[]>();\n const categoryOrder = new Set<string>();\n\n groups?.forEach((item) => {\n const from = item.groupFrom ?? \"default\";\n categoryOrder.add(from);\n\n const value = groupCategoryMap.get(from);\n\n if (!value) {\n groupCategoryMap.set(from, [item]);\n } else {\n value!.push(item);\n }\n });\n\n return Array.from(categoryOrder).map((key) => ({\n groupFrom: key,\n groups: groupCategoryMap!.get(key)!,\n }));\n}\n","import React, { useEffect, useState } from \"react\";\nimport type {\n SidebarMenuSimpleItem,\n SidebarMenuGroup,\n} from \"@next-shared/general/types\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport { StarIcon, OnFavoriteCallback } from \"./ItemTag.js\";\nimport { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport { collectService } from \"./CollectService.js\";\nimport { processGroupItems } from \"./processor.js\";\nimport classNames from \"classnames\";\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\ninterface GroupViewProps {\n groups: SidebarMenuGroup[];\n groupId: string;\n selectedKey?: string[];\n onFavorite: OnFavoriteCallback;\n}\n\nexport const itemColumnWidth = 240;\n\nexport function GroupView(props: GroupViewProps): React.ReactElement {\n const { groupId, selectedKey, onFavorite } = props;\n const groupMenus = processGroupItems(props.groups);\n\n return (\n <div className=\"group-view\">\n {groupMenus.map((item, index) => {\n return (\n <div key={index}>\n {index !== 0 && <div className=\"divider\" />}\n {item.groupFrom === \"default\" ? (\n <DefaultGroup\n groupId={groupId}\n selectedKey={selectedKey}\n groups={item.groups}\n onFavorite={onFavorite}\n />\n ) : (\n <CustomGroup\n groupId={groupId}\n selectedKey={selectedKey}\n groups={item.groups}\n onFavorite={onFavorite}\n />\n )}\n </div>\n );\n })}\n </div>\n );\n}\n\ninterface BaseGroupProps {\n groupId: string;\n selectedKey?: string[];\n onFavorite: OnFavoriteCallback;\n groups: SidebarMenuGroup[];\n}\nexport function DefaultGroup(props: BaseGroupProps): React.ReactElement {\n const { groupId, onFavorite, selectedKey, groups } = props;\n\n const groupRef = React.useRef<HTMLDivElement>(null);\n const [columnCount, setColumnCount] = useState<number>();\n\n useEffect(() => {\n // istanbul ignore next\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (entry.target === groupRef.current) {\n const width = entry.contentRect.width;\n\n if (width) {\n setColumnCount(Math.floor(width / itemColumnWidth));\n }\n }\n }\n });\n\n resizeObserver.observe(groupRef.current as HTMLDivElement);\n\n return () => resizeObserver.disconnect();\n }, []);\n\n return (\n <div\n className=\"group\"\n ref={groupRef}\n style={\n (columnCount as number) < groups?.length\n ? { columnCount, columnWidth: itemColumnWidth }\n : {\n display: \"grid\",\n gridTemplateColumns: `repeat(auto-fit, ${itemColumnWidth}px)`,\n }\n }\n >\n {groups.map((group) => (\n <div key={group.key} className=\"group-item\">\n <div className=\"title\">{group.title}</div>\n <div className=\"content\">\n {group.items.map((item) => (\n <GroupItem\n key={item.key}\n groupId={groupId}\n selectedKey={selectedKey}\n data={item as SidebarMenuSimpleItem}\n onFavorite={onFavorite}\n />\n ))}\n </div>\n </div>\n ))}\n </div>\n );\n}\n\nexport function CustomGroup(props: BaseGroupProps): React.ReactElement {\n const { groupId, onFavorite, selectedKey, groups } = props;\n\n return (\n <div className=\"custom-group\">\n {groups.map((group) => (\n <div key={group.key}>\n <div className=\"title\">{group.title}</div>\n <div\n className=\"custom-content\"\n style={{\n display: \"grid\",\n gridTemplateColumns: `repeat(auto-fit, ${itemColumnWidth}px)`,\n }}\n >\n {group.items.map((item) => (\n <GroupItem\n key={item.key}\n selectedKey={selectedKey}\n groupId={groupId}\n data={item as SidebarMenuSimpleItem}\n onFavorite={onFavorite}\n />\n ))}\n </div>\n </div>\n ))}\n </div>\n );\n}\n\ninterface GroupItemProps {\n data: SidebarMenuSimpleItem;\n selectedKey?: string[];\n groupId: string;\n onFavorite: OnFavoriteCallback;\n}\nexport function GroupItem(props: GroupItemProps): React.ReactElement {\n const { data, groupId, onFavorite, selectedKey } = props;\n\n return (\n <WrappedLink\n key={data.key}\n icon={data.icon}\n url={data.to as string}\n href={data.href}\n target={data.target as LinkProps[\"target\"]}\n className={classNames(\"item-link\", {\n active: selectedKey?.includes(data.key as string),\n })}\n >\n <span className=\"ellipsis\" title={data.text}>\n {data.text}\n </span>\n <span className=\"icon-wrapper\">\n <StarIcon\n active={collectService.isCollected(groupId, data)}\n groupId={groupId}\n data={data}\n onFavorite={onFavorite}\n />\n </span>\n </WrappedLink>\n );\n}\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport type {\n SidebarMenuGroup,\n SidebarMenuSimpleItem,\n} from \"@next-shared/general/types\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport { QuickVisitItem, RecommendItem } from \"./ItemTag.js\";\nimport { GroupView } from \"./GroupItem.js\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport { K, NS } from \"../i18n.js\";\nimport { DragContext } from \"./constants.js\";\nimport { useTranslation } from \"@next-core/i18n/react\";\nimport { collectService } from \"./CollectService.js\";\nimport { flatMenuItems } from \"./processor.js\";\nimport { DRAG_DIRECTION } from \"./constants.js\";\nimport classNames from \"classnames\";\nimport { throttle, debounce } from \"lodash\";\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport interface InputEvents {\n change: CustomEvent<string>;\n}\n\nexport interface InputEventsMap {\n onValueChange: \"change\";\n}\n\nconst WrappedInput = wrapBrick<any, any, InputEvents, InputEventsMap>(\n \"eo-input\",\n {\n onValueChange: \"change\",\n }\n);\n\ninterface SiteMapItemProps {\n menuGroup: SidebarMenuGroup;\n selectedKey?: string[];\n visible?: boolean;\n}\n\nexport function findDropElement(element: HTMLElement): HTMLElement | undefined {\n let node = element;\n\n while (node) {\n if (node.draggable || node.className === \"indicate-wrapper\") {\n return node;\n }\n\n node = node.parentElement as HTMLElement;\n }\n}\n\nexport function isValidDragAction(\n dragElement: HTMLElement,\n dropElement: HTMLElement\n): boolean {\n return (\n dragElement &&\n dropElement &&\n !(\n dragElement.dataset.to === dropElement.dataset.to &&\n dragElement.dataset.text === dropElement.dataset.text\n )\n );\n}\n\nexport function SiteMapItem(props: SiteMapItemProps) {\n const { t } = useTranslation(NS);\n const { menuGroup, selectedKey, visible } = props;\n const groupId = menuGroup.groupId as string;\n\n const [favoriteList, setFavoriteList] = useState<SidebarMenuSimpleItem[]>([]);\n const flatItems = useMemo(() => flatMenuItems(menuGroup), [menuGroup]);\n const [q, setQ] = useState<string>();\n const [filter, setFilters] = useState<SidebarMenuSimpleItem[]>([]);\n const [dragElement, setDragElement] = useState<HTMLElement>();\n const [overElement, setOverElement] = useState<HTMLElement>();\n const [allowDrag, setAllowDrag] = useState<boolean>();\n const [direction, setDirection] = useState<DRAG_DIRECTION>();\n const [initialized, setInitialized] = useState(false);\n\n useEffect(() => {\n if (visible && !initialized) {\n setInitialized(true);\n }\n }, [visible, initialized]);\n\n const handleFavorite = (collectList: SidebarMenuSimpleItem[]) => {\n setFavoriteList(collectList);\n };\n\n const handleSearch = useCallback(\n (e: CustomEvent<string>): void => {\n const v = e.detail;\n setQ(e.detail);\n\n setFilters(\n !v\n ? flatItems\n : flatItems.filter((item) =>\n item.text.toLowerCase().includes(e.detail.toLowerCase())\n )\n );\n },\n [flatItems]\n );\n\n const debouncedHandleSearch = useMemo(\n () => debounce(handleSearch, 200),\n [handleSearch]\n );\n\n const handleDragStart = (e: React.DragEvent): void => {\n setDragElement(e.target as HTMLElement);\n };\n\n const handleDragOver = useMemo(\n () =>\n throttle((e: React.DragEvent): void => {\n e.preventDefault();\n\n const dropElement = findDropElement(e.target as HTMLElement);\n setOverElement(dropElement);\n\n if (\n dropElement &&\n isValidDragAction(dropElement, dragElement as HTMLElement)\n ) {\n if (dropElement.className === \"indicate-wrapper\") {\n setDirection(dropElement.dataset.direction as DRAG_DIRECTION);\n } else {\n const { width, left } = dropElement.getBoundingClientRect();\n\n const right = e.clientX > left + width / 2;\n setDirection(right ? DRAG_DIRECTION.Right : DRAG_DIRECTION.Left);\n }\n } else {\n setDirection(undefined);\n }\n }),\n [dragElement]\n );\n\n const handleDragEnd = (): void => {\n setDragElement(undefined);\n setDirection(undefined);\n setAllowDrag(false);\n };\n\n const handleAllowDrag = (enable: boolean): void => {\n setAllowDrag(enable);\n };\n\n useEffect(() => {\n (async () => {\n if (visible) {\n const list = await collectService.fetchFavorites(groupId);\n setFavoriteList(list);\n }\n })();\n }, [groupId, visible]);\n\n return (\n initialized && (\n <div className=\"site-map\">\n <div className=\"search-wrapper\">\n <WrappedInput\n className=\"search-input\"\n style={{ width: \"100%\" }}\n onValueChange={debouncedHandleSearch}\n placeholder={t(K.SEARCH_ITEM_PLACEHOLDER)}\n >\n <WrappedIcon slot=\"prefix\" lib=\"antd\" icon=\"search\" />\n </WrappedInput>\n </div>\n\n {!q && (\n <div>\n {favoriteList.length !== 0 && (\n <div\n className={classNames(\"visit-access\", {\n hasData: favoriteList.length,\n })}\n >\n <span className=\"title\">{t(K.QUICK_ACCESS)}</span>\n <DragContext.Provider\n value={{\n groupId,\n overElement,\n direction,\n allowDrag,\n onDragStart: handleDragStart,\n onDragOver: handleDragOver,\n onDragEnd: handleDragEnd,\n onAllowDrag: handleAllowDrag,\n onFavoriteUpdate: handleFavorite,\n }}\n >\n <div className=\"tag-wrapper\">\n {favoriteList.map((item) => (\n <QuickVisitItem\n onFavorite={handleFavorite}\n groupId={groupId}\n key={item.key}\n data={item}\n />\n ))}\n </div>\n </DragContext.Provider>\n </div>\n )}\n\n <GroupView\n groupId={groupId}\n selectedKey={selectedKey}\n groups={menuGroup.items as SidebarMenuGroup[]}\n onFavorite={handleFavorite}\n />\n </div>\n )}\n\n {q && (\n <div className=\"search-panel\">\n <span className=\"title\">{t(K.SITE_MAP_SEARCH_RECOMMEND)}</span>\n {filter.length ? (\n <div className=\"recommend-wrapper\">\n {filter.map((item) => (\n <RecommendItem\n key={item.key}\n groupId={groupId}\n data={item}\n onFavorite={handleFavorite}\n active={collectService.isCollected(groupId, item)}\n />\n ))}\n </div>\n ) : (\n <div className=\"no-data-tips\">{t(K.NO_DATA_SEARCH_INFO)}</div>\n )}\n </div>\n )}\n </div>\n )\n );\n}\n","import React from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type {\n SidebarMenuGroup,\n SidebarMenuItem,\n SidebarMenuSimpleItem,\n} from \"@next-shared/general/types\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nconst WrappedLinkItem = wrapBrick<Link, LinkProps>(\"eo-link\");\n\nexport function isGroup(item: SidebarMenuItem): item is SidebarMenuGroup {\n return item.type === \"group\";\n}\n\nexport function isSubMenu(\n item: SidebarMenuGroup,\n groupAsSubMenu?: boolean\n): item is SidebarMenuGroup {\n return Boolean(\n item.type === \"subMenu\" || (groupAsSubMenu && item.type === \"group\")\n );\n}\n\nexport function isSimple(item: SidebarMenuItem): item is SidebarMenuSimpleItem {\n return item.type === \"default\" || !item.type;\n}\n\nexport const renderLinkCom = (\n item: SidebarMenuSimpleItem,\n linkStyle?: React.CSSProperties\n): React.ReactElement => {\n return (\n <WrappedLinkItem\n type=\"plain\"\n key={item.key}\n url={item.to as string}\n href={item.href}\n target={item.target as LinkProps[\"target\"]}\n style={linkStyle}\n >\n <span className=\"menu-item-label\">{item.text}</span>\n </WrappedLinkItem>\n );\n};\n\nexport const renderSpanCom = (\n item: SidebarMenuGroup,\n subMenu?: boolean\n): React.ReactElement => {\n return (\n <span key={item.key} className=\"menu-item-label\">\n {item.title}\n {subMenu && <WrappedIcon lib=\"fa\" icon=\"angle-right\" />}\n </span>\n );\n};\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:root{--eo-three-level-menu-search-input-background:linear-gradient(90deg,#e8eef6 0%,rgba(233,234,243,0) 100%);--eo-three-level-menu-hover-color:#6bb3ff;--eo-three-level-menu-title-color:#0b5ad9;--eo-three-level-menu-active-color:#1a7aff;--eo-three-level-menu-search-tag-color:rgb(89,89,89);--eo-three-level-menu-search-tag-background:rgb(245,245,245)}html[data-theme=\"dark\"],\nhtml[data-theme=\"dark-v2\"]{--eo-three-level-menu-search-input-background:linear-gradient(124deg,rgba(255,255,255,0.36) 0%,rgba(255,255,255,0) 100%);--eo-three-level-menu-hover-color:rgba(54,95,175,0.85);--eo-three-level-menu-title-color:#6597e8;--eo-three-level-menu-active-color:#3f75dd;--eo-three-level-menu-search-tag-color:rgb(140,140,140);--eo-three-level-menu-search-tag-background:rgb(107,107,107)}`, \"\"]);\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, `:host{display:inline-block;background:none}:host::part(menu-item),\neo-link{display:block}eo-menu-item{margin:4px 0}.sub-menu-wrapper eo-menu-item:first-child,\n.group-wrapper eo-menu-item:first-child{margin-top:0}.sub-menu-wrapper eo-menu-item:last-child{margin-bottom:0}.nav-menu-wrapper{display:flex;align-items:center;gap:8px;white-space:nowrap}.popover .sub-menu-item-label{padding:2px 0px;color:var(--color-normal-text)}.popover.subprime{display:block;width:100%}.sub-menu-wrapper{min-width:160px;max-height:calc(100vh - 100px);background-color:var(--antd-dropdown-menu-bg);padding:12px 0;border-radius:6px;box-shadow:0px 4px 12px 0px rgba(17,37,64,0.08);overflow-x:hidden;overflow-y:auto}.overflow-menu-wrapper{display:flex;flex-direction:column}.sub-menu-wrapper > eo-menu-item{display:block;width:100%}.sub-menu-wrapper > eo-menu-item .menu-item-label,\n.sub-menu-wrapper > eo-popover .menu-item-label,\n.sub-menu-wrapper > .group-wrapper > eo-popover .menu-item-label,\n.sub-menu-wrapper > .group-wrapper > eo-menu-item .menu-item-label{display:block;width:100%;padding:7px 24px;box-sizing:border-box;line-height:22px;color:var(--color-normal-text)}.sub-menu-wrapper > eo-popover.subprime .menu-item-label,\n.sub-menu-wrapper > .group-wrapper > eo-popover.subprime .menu-item-label{display:flex;justify-content:space-between;align-items:center}.sub-menu-wrapper .menu-item-label{border-radius:0}.menu-item-label{display:inline-block;cursor:pointer;border-radius:4px;padding:1px 8px;line-height:22px;color:var(--color-normal-text)}.menu-item-label:hover{background-color:var(--top-menu-item-hover-bg)}.group-label{padding-left:16px;font-size:12px;color:var(--palette-gray-7);padding:8px 16px;line-height:20px;margin-top:4px}.sub-menu-wrapper .group-label:first-child{margin-top:0px}.sub-menu-wrapper eo-menu-item[active] .menu-item-label{background:var(--top-menu-item-selected-bg);color:var(--color-brand);font-weight:500}.three-level-menu-container{max-width:980px;max-height:510px;overflow:auto;min-width:160px}.three-level-menu-item-container{display:grid;grid-gap:20px;gap:20px;margin-top:13px;padding:5px 10px}.three-level-menu-item-title-container{display:flex;align-items:center}.three-level-menu-item-title-icon{width:4px;height:4px;background-color:var(--eo-three-level-menu-title-color);margin-right:4px;transform:rotate(45deg)}.three-level-menu-item-title{font-size:14px;font-family:PingFang-SC-Medium,PingFang-SC;font-weight:500;color:var(--eo-three-level-menu-title-color)}.three-level-menu-container .menu-item-label{margin-top:4px;margin-left:4px;padding:4px;width:100%}.three-level-menu-container .active .menu-item-label{color:var(--eo-three-level-menu-active-color)}.three-level-menu-search-result .menu-item-label{margin:0px}.three-level-menu-container .menu-item-label:hover{color:var(--eo-three-level-menu-hover-color)}.three-level-menu-popover .sub-menu-wrapper{padding-top:0px}.three-level-menu-search-container{background:var(--eo-three-level-menu-search-input-background);padding:5px 10px}.three-level-menu-search-result{min-width:187px;max-width:328px;max-height:324px;background-color:var(--antd-dropdown-menu-bg);box-shadow:0px 4px 12px 0px rgba(17,37,64,0.08);overflow:scroll}.three-level-menu-search-history-container{padding:5px 10px}.three-level-menu-search-history-text{background:var(--eo-three-level-menu-search-tag-background);border-radius:2px;font-size:7px;line-height:11px;display:inline-block;height:11px;padding:4px;color:var(--eo-three-level-menu-search-tag-color);margin-right:8px}.three-level-menu-search-history-title{color:#8c8c8c;margin:10px 0;display:flex;align-items:center}.three-level-menu-search-history-icon{margin-left:5px}.sub-menu-sit-map-wrapper{box-sizing:border-box;width:calc(100vw);padding:0 60px 24px;max-height:520px;background-color:var(--antd-dropdown-menu-bg);border-radius:6px;box-shadow:0px 4px 12px 0px rgba(17,37,64,0.08);overflow-x:hidden;overflow-y:auto}.overflow-menu-item{position:absolute;opacity:0;height:0;pointer-events:none}.in-group-site-map{width:auto;padding:0 20px}`, \"\"]);\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, `.group .item-link, .custom-group .item-link{font-weight:400}.group .item-link:hover, .custom-group .item-link:hover{background-color:var(--color-fill-bg-base-1)}.group .item-link:hover::part(link), .custom-group .item-link:hover::part(link){color:var(--color-brand-hover)}.group .item-link:hover::part(icon), .custom-group .item-link:hover::part(icon){color:var(--color-brand-hover)}.group .item-link.active::part(link),\n .custom-group .item-link.active::part(link),\n .group .item-link.active::part(icon),\n .custom-group .item-link.active::part(icon){color:var(--palette-blue-8)}.group .item-link::part(link), .custom-group .item-link::part(link){padding:8px 12px 8px 24px;display:flex;gap:4px;color:var(--color-header-text)}.group .item-link::part(icon), .custom-group .item-link::part(icon){color:var(--color-normal-text)}.group .title, .custom-group .title{padding:8px 16px 8px 24px;font-size:16px;font-weight:500;position:relative}.group .title::before, .custom-group .title::before{content:\"\";position:absolute;width:6px;height:6px;top:17px;left:9px;transform:rotate(45deg);background:var(--color-secondary-text)}.group .content .icon-wrapper, .custom-group .content .icon-wrapper, .group .custom-content .icon-wrapper, .custom-group .custom-content .icon-wrapper{color:var(--color-secondary-text);font-size:16px;display:none;margin-left:auto}.group .content .item-link:hover .icon-wrapper, .custom-group .content .item-link:hover .icon-wrapper, .group .custom-content .item-link:hover .icon-wrapper, .custom-group .custom-content .item-link:hover .icon-wrapper{display:block}.group .content .item-link:hover .icon-wrapper:hover, .custom-group .content .item-link:hover .icon-wrapper:hover, .group .custom-content .item-link:hover .icon-wrapper:hover, .custom-group .custom-content .item-link:hover .icon-wrapper:hover{color:var(--color-brand-hover)}.group .content, .custom-group .content{display:flex;flex-direction:column}.group .group-item, .custom-group .group-item{page-break-inside:avoid;break-inside:avoid}.group-view{min-height:300px}.group-view .divider{height:2px;background:var(--color-text-divider-line);margin:16px 0}`, \"\"]);\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, `.tag-container::part(link){display:flex;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;-moz-user-select:none;justify-content:space-between;background-color:var(--color-fill-bg-base-1);border-radius:2px;padding:1px 6px}.tag-container .tag-text{color:var(--color-normal-text);font-weight:400}.tag-container:hover .tag-text{color:var(--color-brand-hover)}.tag-container .tag-suffix{display:inline-flex;font-size:12px;gap:4px;align-items:center;color:var(--color-secondary-text)}.tag-container.is-drag{opacity:0.4}.indicate-wrapper{border:1px dashed var(--color-brand-hover);border-radius:4px;height:20px;margin:2px 0}.close{display:inline-flex;margin-top:2px;padding:0 2px}.close:hover{color:var(--color-error)}.drag-wrapper{cursor:move}.drag-wrapper:hover{color:var(--color-brand-hover)}.star-icon{display:flex;alignitems:center;color:var(--color-secondary-text)}.star-icon:hover{color:var(--color-brand-hover)}.star-icon .active{color:var(--palette-yellow-6)}.recommend-container:hover .star{display:inline-flex}.recommend-container .star{font-size:13px;display:none}.visit-container:hover .operation{display:inline-flex;align-items:center}.visit-container .operation{display:none}`, \"\"]);\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, `.site-map .search-wrapper{position:-webkit-sticky;position:sticky;top:0;z-index:9999;padding-top:24px;padding-bottom:16px;background:var(--antd-dropdown-menu-bg)}.site-map .search-input::part(affix-wrapper){border:none;border-bottom:1px solid var(--antd-input-border-color);border-radius:0px;background:transparent}.site-map .visit-access .title, .site-map .search-panel .title{display:inline-block;padding:2px 16px 2px 24px;font-weight:500;line-height:24px;position:relative}.site-map .visit-access .title::before, .site-map .search-panel .title::before{content:\"\";position:absolute;width:6px;height:6px;top:10px;left:9px;border-radius:50%;background:var(--color-secondary-text)}.site-map .visit-access .no-data-tips, .site-map .search-panel .no-data-tips{display:flex;margin:16px 0 32px;align-items:center;justify-content:center;color:var(--color-secondary-text)}.site-map .visit-access{margin-bottom:8px}.site-map .visit-access.hasData{display:flex}.site-map .visit-access .tag-wrapper{flex:1;display:grid;grid-template-columns:repeat(auto-fit,200px);grid-gap:8px;gap:8px}.site-map .ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.site-map .search-panel .recommend-wrapper{margin-top:16px;display:grid;grid-template-columns:repeat(auto-fit,200px);grid-gap:8px;gap:8px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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;\n\n options.insert = insertFn.bind(null, \"head\");\n \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","export default function _checkPrivateRedeclaration(obj, privateCollection) {\n if (privateCollection.has(obj)) {\n throw new TypeError(\"Cannot initialize the same private elements twice on an object\");\n }\n}","import checkPrivateRedeclaration from \"./checkPrivateRedeclaration.js\";\nexport default function _classPrivateFieldInitSpec(obj, privateMap, value) {\n checkPrivateRedeclaration(obj, privateMap);\n privateMap.set(obj, value);\n}","import { Location, parsePath } from \"history\";\nimport { matchPath } from \"@next-core/runtime\";\nimport type {\n SidebarMenuSimpleItem,\n SidebarMenuItem,\n SidebarMenuGroup,\n} from \"./types.js\";\n\nexport function isGroup(item: SidebarMenuItem): item is SidebarMenuGroup {\n return item.type === \"group\";\n}\n\nexport function isSubMenu(\n item: SidebarMenuItem,\n groupAsSubMenu?: boolean\n): item is SidebarMenuGroup {\n return Boolean(\n item.type === \"subMenu\" || (groupAsSubMenu && item.type === \"group\")\n );\n}\n\nexport function initMenuItemAndMatchCurrentPathKeys(\n menuItems: SidebarMenuItem[],\n pathname: string,\n search: string,\n parentCursor: string\n): {\n selectedKeys: string[];\n openedKeys: string[];\n matchedKeys: string[];\n} {\n const selectedKeys: string[] = [];\n const openedKeys: string[] = [];\n const matchedKeys: string[] = [];\n\n let cursor = 0;\n menuItems.forEach((item) => {\n // key的格式最终为0,1,2,0.1,0.2,0.1.1,0.1.2\n item.key = parentCursor === \"\" ? `${cursor}` : `${parentCursor}.${cursor}`;\n if (isGroup(item) || isSubMenu(item)) {\n const tmp = initMenuItemAndMatchCurrentPathKeys(\n item.items,\n pathname,\n search,\n item.key\n );\n selectedKeys.push(...tmp.selectedKeys);\n if (tmp.selectedKeys.length || item.defaultExpanded) {\n openedKeys.push(item.key);\n }\n openedKeys.push(...tmp.openedKeys);\n matchedKeys.push(...tmp.matchedKeys);\n } else {\n if (matchMenuItem(item, pathname, search)) {\n selectedKeys.push(String(item.key));\n\n const keyPath = item.key.split(\".\");\n\n for (let i = 0; i < keyPath.length; i++) {\n matchedKeys.push(keyPath.slice(0, i + 1).join(\".\"));\n }\n }\n }\n cursor += 1;\n });\n if (selectedKeys.length && parentCursor !== \"\") {\n openedKeys.push(parentCursor);\n }\n return {\n selectedKeys: selectedKeys,\n openedKeys: openedKeys,\n matchedKeys: matchedKeys,\n };\n}\n\nfunction getMatchOfSearch(\n currentSearch: string,\n toSearch: string | undefined\n): boolean {\n const current = new URLSearchParams(currentSearch);\n const to = new URLSearchParams(toSearch);\n for (const [key, value] of to.entries()) {\n // Allow `?k=` to match `?` (when `k` doesn't exist)\n if ((current.get(key) ?? \"\") !== value) {\n return false;\n }\n }\n return true;\n}\n\nexport function matchMenuItem(\n item: SidebarMenuSimpleItem,\n pathname: string,\n search: string\n): boolean {\n if (!item.to) return false;\n const to = typeof item.to === \"object\" ? item.to : parsePath(item.to);\n\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath = to.pathname!.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n let match = !!matchPath(pathname, {\n path: escapedPath,\n exact: item.exact,\n });\n\n if (match && item.activeMatchSearch) {\n match = getMatchOfSearch(search, to.search);\n }\n\n if (!match && Array.isArray(item.activeIncludes)) {\n for (const include of item.activeIncludes) {\n let parseInclude: Location | undefined;\n const hasSearch = include.includes(\"?\");\n\n if (hasSearch) {\n parseInclude = parsePath(include);\n }\n match = !!matchPath(pathname, {\n path: hasSearch ? parseInclude!.pathname : include,\n exact: true,\n });\n\n if (match && parseInclude?.search) {\n match = getMatchOfSearch(search, parseInclude.search);\n }\n\n if (match) {\n break;\n }\n }\n }\n\n if (match && Array.isArray(item.activeExcludes)) {\n for (const include of item.activeExcludes) {\n match = !matchPath(pathname, {\n path: include,\n exact: true,\n });\n if (!match) {\n break;\n }\n }\n }\n\n return match;\n}\n"],"names":["initializeReactI18n","NS","locales","WrappedPopover","wrapBrick","WrappedSearch","onChange","onSearch","WrappedIcon","LOCAL_STORAGE_PREFIX","maxVisitorLength","ThreeLevelMenuPopoverContent","props","useTranslation","menuItem","selectedKey","items","searchResult","setSearchResult","useState","searchKey","setSearchKey","triggerRef","useRef","nameSpace","concat","title","storage","useMemo","JsonStorage","localStorage","searchHistory","getItem","popoverTriggerClick","_triggerRef$current","current","click","React","className","onClick","e","stopPropagation","placeholder","t","K","SEARCH_BY_MENU_NAME","detail","list","uniq","length","pop","setItem","flatMap","i","filter","text","toLowerCase","includes","trim","onFocus","onBlur","trigger","placement","anchorDisplay","distance","slot","ref","map","renderLinkCom","width","style","height","textAlign","lineHeight","NO_DATA","SEARCH_HISTORY","lib","theme","icon","h","key","gridTemplateColumns","item","index","_item$items","classnames","active","en","QUICK_ACCESS","REMOVE_ITEM_FROM_QUICK_ACCESS","ADD_ITEM_TO_QUICK_ACCESS","NO_DATA_TIPS_IN_QUICK_ACCESS","SITE_MAP_SEARCH_RECOMMEND","MAX_COLLECT_COUNT_TIPS","NO_DATA_SEARCH_INFO","SEARCH_ITEM_PLACEHOLDER","zh","MyCollectionApi_listMyCollection","_ref","params","options","http","get","_x","_x2","apply","this","arguments","DRAG_DIRECTION","collectModule","DragContext","collectService","constructor","maxCollectLength","_defineProperty","Map","getFavoritesById","id","_cloneDeep","cloneDeep","collectMap","fetchFavorites","_this","_asyncToGenerator","cachedPromise","collectPromise","favoritesPromise","module","collectionName","then","result","_result$payloads","payloads","extInfo","Boolean","set","setItemAsFavorite","unshift","updateFavoriteItems","data","name","url","to","post","error","handleHttpError","equalItem","prevItem","removeItemFromFavorite","findIndex","row","splice","isCollected","some","toggleFavorite","checkMaxCapacity","moveFavoriteTo","option","from","direction","fromIndex","toIndex","Left","groupId","WrappedLink","WrappedTooltip","PlaceholderDropComp","onDragOver","onFavoriteUpdate","useContext","onDragEnter","target","background","onDragLeave","onDrop","formData","JSON","parse","dataTransfer","getData","newDataList","ItemTag","suffix","allowDrag","onDragStart","overElement","onDragEnd","containerRef","isDragIng","setIsDragIng","isActive","dataset","draggable","_e$dataTransfer","setData","stringify","preventDefault","dropEffect","classNames","href","Right","QuickVisitItem","onAllowDrag","onFavorite","suffixRef","iconRef","handleRemove","useCallback","handleMouseDown","useEffect","addEventListener","removeEventListener","handleClick","suffixGroups","content","hoist","onMouseDown","StarIcon","_ref2","_extends","RecommendItem","walkMenuItem","type","Array","isArray","walkMenuItems","push","itemColumnWidth","GroupView","groups","groupCategoryMap","categoryOrder","groupMenus","Set","forEach","_item$groupFrom","groupFrom","add","value","DefaultGroup","CustomGroup","groupRef","columnCount","setColumnCount","resizeObserver","ResizeObserver","entries","entry","contentRect","Math","floor","observe","disconnect","columnWidth","display","group","GroupItem","WrappedInput","onValueChange","SiteMapItem","menuGroup","visible","favoriteList","setFavoriteList","flatItems","flatMenuItems","q","setQ","setFilters","dragElement","setDragElement","setOverElement","setAllowDrag","setDirection","initialized","setInitialized","handleFavorite","collectList","handleSearch","v","debouncedHandleSearch","debounce","handleDragOver","throttle","dropElement","element","node","parentElement","findDropElement","isValidDragAction","left","getBoundingClientRect","right","clientX","undefined","hasData","Provider","handleDragEnd","enable","WrappedLinkItem","isGroup","isSubMenu","groupAsSubMenu","linkStyle","renderSpanCom","subMenu","___CSS_LOADER_EXPORT___","toString","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_checkPrivateRedeclaration","obj","privateCollection","has","TypeError","_classPrivateFieldInitSpec","privateMap","initMenuItemAndMatchCurrentPathKeys","menuItems","pathname","search","parentCursor","selectedKeys","openedKeys","matchedKeys","cursor","tmp","defaultExpanded","parsePath","escapedPath","replace","match","matchPath","path","exact","activeMatchSearch","getMatchOfSearch","activeIncludes","include","_parseInclude","parseInclude","hasSearch","activeExcludes","_include","matchMenuItem","String","keyPath","split","slice","join","currentSearch","toSearch","URLSearchParams","_current$get"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"chunks/4204.598a3655.js","mappings":"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","sources":["webpack:///./src/nav-menu/ThreeLevelMenuPopoverContent.tsx","webpack:///./src/nav-menu/i18n.ts","webpack:///../../node_modules/@next-api-sdk/user-service-sdk/dist/esm/api/user_service/my_collection/listMyCollection.js","webpack:///./src/nav-menu/site-map/constants.ts","webpack:///./src/nav-menu/site-map/CollectService.ts","webpack:///../../node_modules/@next-api-sdk/user-service-sdk/dist/esm/api/user_service/my_collection/upsertMyCollection.js","webpack:///./src/nav-menu/site-map/ItemTag.tsx","webpack:///./src/nav-menu/site-map/processor.ts","webpack:///./src/nav-menu/site-map/GroupItem.tsx","webpack:///./src/nav-menu/site-map/SiteMapItem.tsx","webpack:///./src/nav-menu/utils.tsx","webpack:///./src/nav-menu/host-context.css","webpack:///./src/nav-menu/nav-menu.shadow.css","webpack:///./src/nav-menu/site-map/GroupItem.shadow.css","webpack:///./src/nav-menu/site-map/ItemTag.shadow.css","webpack:///./src/nav-menu/site-map/SiteMapItem.shadow.css","webpack:///./src/nav-menu/host-context.css?ac7e","webpack:///../../node_modules/@babel/runtime/helpers/esm/checkPrivateRedeclaration.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/classPrivateFieldInitSpec.js","webpack:///../../src/menu.ts"],"sourcesContent":["import React, { useMemo, useState, useRef } from \"react\";\nimport classnames from \"classnames\";\nimport { renderLinkCom } from \"./utils.js\";\nimport { uniq } from \"lodash\";\nimport type {\n SidebarMenuGroup,\n SidebarMenuItem,\n SidebarMenuSimpleItem,\n} from \"@next-shared/general/types\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type { ReactNextElement } from \"@next-core/react-element\";\nimport type { Popover, PopoverProps } from \"@next-bricks/basic/popover\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport { JsonStorage } from \"@next-shared/general/JsonStorage\";\nimport { K, NS, locales } from \"./i18n.js\";\nimport { useTranslation, initializeReactI18n } from \"@next-core/i18n/react\";\n\ninitializeReactI18n(NS, locales);\nconst WrappedPopover = wrapBrick<Popover, PopoverProps>(\"eo-popover\");\ninterface SearchProps {\n value?: string;\n placeholder?: string;\n autoFocus?: boolean;\n clearable?: boolean;\n trim?: boolean;\n debounceTime?: number;\n}\n\ninterface SearchEvents {\n change: CustomEvent<string>;\n search: CustomEvent<string>;\n}\n\ninterface SearchEventsMap {\n onChange: \"change\";\n onSearch: \"search\";\n}\nconst WrappedSearch = wrapBrick<\n ReactNextElement,\n SearchProps,\n SearchEvents,\n SearchEventsMap\n>(\"eo-search\", {\n onChange: \"change\",\n onSearch: \"search\",\n});\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\ninterface ThreeLevelMenuPopoverContentProps {\n menuItem: SidebarMenuGroup;\n selectedKey: string[];\n}\nconst LOCAL_STORAGE_PREFIX = \"threeLevelCategoryMenu\";\nconst maxVisitorLength = 6;\nexport function ThreeLevelMenuPopoverContent(\n props: ThreeLevelMenuPopoverContentProps\n): React.ReactElement {\n const { t } = useTranslation(NS);\n const { menuItem, selectedKey } = props;\n const items = menuItem.items as SidebarMenuGroup[];\n const [searchResult, setSearchResult] = useState<SidebarMenuSimpleItem[]>([]);\n const [searchKey, setSearchKey] = useState(\"\");\n const triggerRef = useRef<HTMLDivElement>(null);\n const nameSpace = `${LOCAL_STORAGE_PREFIX}_${menuItem.title}`;\n const storage = useMemo(() => new JsonStorage(localStorage), []);\n const searchHistory = (storage.getItem(nameSpace) as string[]) || [];\n\n const handleSearch = (e: CustomEvent<string>) => {\n setSearchKey(e.detail);\n if (e.detail) {\n const list = uniq([e.detail, ...searchHistory]);\n if (list.length > maxVisitorLength) {\n list.pop();\n }\n storage.setItem(nameSpace, list);\n setSearchResult(\n items\n .flatMap((i) => (i.items as SidebarMenuSimpleItem[]) || [])\n .filter((i) =>\n (i.text as string)\n .toLowerCase()\n .includes((e.detail as string).trim().toLowerCase())\n )\n );\n } else {\n setSearchResult([]);\n }\n };\n\n const popoverTriggerClick = () => {\n triggerRef.current?.click();\n };\n\n return (\n <div className={\"three-level-menu-container\"}>\n <div\n className=\"three-level-menu-search-container\"\n onClick={(e) => {\n e.stopPropagation();\n }}\n >\n <WrappedSearch\n placeholder={t(K.SEARCH_BY_MENU_NAME) as string}\n onSearch={handleSearch}\n onFocus={popoverTriggerClick}\n onBlur={popoverTriggerClick}\n />\n <WrappedPopover\n trigger=\"click\"\n placement={\"bottom-start\"}\n anchorDisplay=\"block\"\n distance={0}\n >\n <div slot=\"anchor\" ref={triggerRef}></div>\n {\n <div className=\"three-level-menu-search-result\">\n {!!searchResult.length &&\n searchResult.map((i) => renderLinkCom(i, { width: \"100%\" }))}\n {searchKey && !searchResult.length && (\n <div\n style={{\n height: \"100px\",\n textAlign: \"center\",\n lineHeight: \"100px\",\n }}\n >\n {t(K.NO_DATA)}\n </div>\n )}\n </div>\n }\n </WrappedPopover>\n </div>\n {!!searchHistory.length && (\n <div className=\"three-level-menu-search-history-container\">\n <div className=\"three-level-menu-search-history-title\">\n {t(K.SEARCH_HISTORY)}\n <WrappedIcon\n lib=\"antd\"\n theme=\"outlined\"\n icon=\"delete\"\n className=\"three-level-menu-search-history-icon\"\n />\n </div>\n <div>\n {searchHistory.map((h) => (\n <span key={h} className=\"three-level-menu-search-history-text\">\n {h}\n </span>\n ))}\n </div>\n </div>\n )}\n <div\n className={\"three-level-menu-item-container\"}\n style={{\n gridTemplateColumns: `repeat(${\n items.length > 4 ? 4 : items.length\n },1fr)`,\n }}\n >\n {items.map((item: SidebarMenuGroup, index: number) => (\n <div key={index}>\n <div className=\"three-level-menu-item-title-container\">\n <span className=\"three-level-menu-item-title-icon\"></span>\n <span className=\"three-level-menu-item-title\">{item.title}</span>\n </div>\n {item.items?.map((i) => (\n <span\n key={i.key}\n className={classnames({\n active: i.key ? selectedKey.includes(i.key) : false,\n })}\n >\n {renderLinkCom(i as SidebarMenuSimpleItem, { width: \"100%\" })}\n </span>\n ))}\n </div>\n ))}\n </div>\n </div>\n );\n}\n","export enum K {\n SEARCH_BY_MENU_NAME = \"SEARCH_BY_MENU_NAME\",\n SEARCH_HISTORY = \"SEARCH_HISTORY\",\n NO_DATA = \"NO_DATA\",\n QUICK_ACCESS = \"QUICK_ACCESS\",\n REMOVE_ITEM_FROM_QUICK_ACCESS = \"REMOVE_ITEM_FROM_QUICK_ACCESS\",\n ADD_ITEM_TO_QUICK_ACCESS = \"ADD_ITEM_TO_QUICK_ACCESS\",\n NO_DATA_TIPS_IN_QUICK_ACCESS = \"NO_DATA_TIPS_IN_QUICK_ACCESS\",\n SITE_MAP_SEARCH_RECOMMEND = \"SITE_MAP_SEARCH_RECOMMEND\",\n MAX_COLLECT_COUNT_TIPS = \"MAX_COLLECT_COUNT_TIPS\",\n NO_DATA_SEARCH_INFO = \"NO_DATA_SEARCH_INFO\",\n SEARCH_ITEM_PLACEHOLDER = \"SEARCH_ITEM_PLACEHOLDER\",\n}\n\nconst en: Locale = {\n SEARCH_BY_MENU_NAME: \"Search by menu name\",\n SEARCH_HISTORY: \"Search history\",\n NO_DATA: \"No data\",\n QUICK_ACCESS: \"Quick Access\",\n REMOVE_ITEM_FROM_QUICK_ACCESS: \"Remove from Quick Access\",\n ADD_ITEM_TO_QUICK_ACCESS: \"Add to Quick Access\",\n NO_DATA_TIPS_IN_QUICK_ACCESS:\n \"No quick access resources have been added yet. Please add from the list below or after searching\",\n SITE_MAP_SEARCH_RECOMMEND: \"Search recommend\",\n MAX_COLLECT_COUNT_TIPS: \"Need to delete some favorites in order to add\",\n NO_DATA_SEARCH_INFO: \"The search result is empty, please enter again\",\n SEARCH_ITEM_PLACEHOLDER: \"Please enter keywords to search\",\n};\n\nconst zh: Locale = {\n SEARCH_BY_MENU_NAME: \"通过菜单名称搜索\",\n SEARCH_HISTORY: \"历史搜索\",\n NO_DATA: \"暂无数据\",\n QUICK_ACCESS: \"快捷访问\",\n REMOVE_ITEM_FROM_QUICK_ACCESS: \"从快捷访问移除\",\n ADD_ITEM_TO_QUICK_ACCESS: \"添加至快捷访问\",\n NO_DATA_TIPS_IN_QUICK_ACCESS: \"暂未添加快捷访问资源,从下方列表或搜索后添加\",\n SITE_MAP_SEARCH_RECOMMEND: \"搜索推荐\",\n MAX_COLLECT_COUNT_TIPS: \"需删除部分收藏,才能添加\",\n NO_DATA_SEARCH_INFO: \"搜索结果为空,请重新输入\",\n SEARCH_ITEM_PLACEHOLDER: \"请输入关键词搜索\",\n};\n\nexport const NS = \"bricks/nav/nav-menu\";\n\nexport const locales = { en, zh };\n\ntype Locale = { [key in K]: string };\n","import _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/asyncToGenerator\";\nimport { http } from \"@next-core/http\";\n/**\n * @description 获取我的收藏列表\n * @endpoint GET /api/v1/user_service/my_collection/collections\n */\nexport var MyCollectionApi_listMyCollection = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(function* (params, options) {\n return (/**! @contract easyops.api.user_service.my_collection.ListMyCollection@1.0.0 */(yield http.get(\"api/gateway/user_service.my_collection.ListMyCollection/api/v1/user_service/my_collection/collections\", _objectSpread(_objectSpread({}, options), {}, {\n params\n }))).data\n );\n });\n return function MyCollectionApi_listMyCollection(_x, _x2) {\n return _ref.apply(this, arguments);\n };\n}();\n//# sourceMappingURL=listMyCollection.js.map","import React from \"react\";\n\nexport enum DRAG_DIRECTION {\n Left = \"left\",\n Right = \"right\",\n}\n\nexport interface ContextOfDragProps {\n groupId: string;\n direction?: DRAG_DIRECTION;\n overElement?: HTMLElement;\n allowDrag?: boolean;\n onAllowDrag?: (enable: boolean) => void;\n onDragStart?: (e: React.DragEvent) => void;\n onDragOver?: (e: React.DragEvent) => void;\n onDragEnd?: (e: React.DragEvent) => void;\n onFavoriteUpdate?: (list: any[]) => void;\n}\n\nexport const collectModule = \"sidebarMenuCollect\";\n\nexport const DragContext = React.createContext<ContextOfDragProps>(\n {} as ContextOfDragProps\n);\n","import type { SidebarMenuSimpleItem } from \"@next-shared/general/types\";\nimport {\n MyCollectionApi_listMyCollection,\n MyCollectionApi_ListMyCollectionResponseBody,\n MyCollectionApi_upsertMyCollection,\n} from \"@next-api-sdk/user-service-sdk\";\nimport { DRAG_DIRECTION, collectModule } from \"./constants.js\";\nimport { cloneDeep } from \"lodash\";\nimport { handleHttpError } from \"@next-core/runtime\";\n\nexport class CollectService {\n private maxCollectLength: number;\n private collectMap: Map<string, SidebarMenuSimpleItem[]> = new Map();\n private collectPromise: Map<string, Promise<SidebarMenuSimpleItem[]>> =\n new Map();\n\n constructor(maxCollectLength?: number) {\n this.maxCollectLength = maxCollectLength ?? 10;\n }\n\n public getFavoritesById(id: string): SidebarMenuSimpleItem[] {\n return cloneDeep(this.collectMap.get(id)) ?? [];\n }\n\n public async fetchFavorites(id: string): Promise<SidebarMenuSimpleItem[]> {\n const cachedPromise = this.collectPromise.get(id);\n if (cachedPromise) {\n const collectList = this.collectMap.get(id);\n\n return collectList ? collectList : cachedPromise;\n }\n\n const favoritesPromise = MyCollectionApi_listMyCollection({\n module: collectModule,\n collectionName: id,\n }).then((result) => {\n const list = result.payloads\n ?.map((item) => item.extInfo)\n .filter(Boolean) as SidebarMenuSimpleItem[];\n this.collectMap.set(id, list);\n\n return list;\n }) as Promise<SidebarMenuSimpleItem[]>;\n\n this.collectPromise.set(id, favoritesPromise);\n\n return favoritesPromise;\n }\n\n public setItemAsFavorite(id: string, item: SidebarMenuSimpleItem): void {\n const list = this.getFavoritesById(id);\n\n if (list.length >= this.maxCollectLength) {\n list.pop();\n }\n\n list.unshift(item);\n this.updateFavoriteItems(id, list);\n }\n\n public updateFavoriteItems(id: string, list: SidebarMenuSimpleItem[]): void {\n try {\n this.collectMap.set(id, list);\n MyCollectionApi_upsertMyCollection({\n module: collectModule,\n collectionName: id,\n payloads: list?.map((item) => ({\n name: item.text,\n url: item.to,\n extInfo: item,\n })) as MyCollectionApi_ListMyCollectionResponseBody[\"payloads\"],\n });\n } catch (error) {\n // istanbul ignore next\n handleHttpError(error);\n }\n }\n\n private equalItem(\n prevItem: SidebarMenuSimpleItem,\n item: SidebarMenuSimpleItem\n ): boolean {\n return prevItem.text === item.text && prevItem.to === item.to;\n }\n\n public removeItemFromFavorite(id: string, item: SidebarMenuSimpleItem): void {\n const list = this.getFavoritesById(id);\n const index = list.findIndex((row) => this.equalItem(row, item));\n // istanbul ignore else\n if (index !== -1) {\n list.splice(index, 1);\n this.updateFavoriteItems(id, list);\n }\n }\n\n public isCollected(id: string, item: SidebarMenuSimpleItem): boolean {\n const list = this.getFavoritesById(id);\n return list.some((row) => this.equalItem(row, item));\n }\n\n public toggleFavorite(id: string, item: SidebarMenuSimpleItem): void {\n if (this.isCollected(id, item)) {\n this.removeItemFromFavorite(id, item);\n } else {\n if (this.checkMaxCapacity(id)) return;\n this.setItemAsFavorite(id, item);\n }\n }\n\n public moveFavoriteTo(\n id: string,\n option: {\n from: SidebarMenuSimpleItem;\n to: SidebarMenuSimpleItem;\n direction: DRAG_DIRECTION;\n }\n ): SidebarMenuSimpleItem[] {\n const { from, to, direction } = option;\n\n const list = this.getFavoritesById(id);\n if (this.equalItem(from, to)) return list;\n\n const fromIndex = list.findIndex((row) => this.equalItem(row, from));\n\n // istanbul ignore else\n if (fromIndex !== -1) {\n list.splice(fromIndex, 1);\n\n const toIndex = list.findIndex((row) => this.equalItem(row, to));\n\n // istanbul ignore else\n if (toIndex !== -1) {\n if (direction === DRAG_DIRECTION.Left) {\n list.splice(toIndex, 0, from);\n } else {\n list.splice(toIndex + 1, 0, from);\n }\n\n this.updateFavoriteItems(id, list);\n }\n }\n\n return list;\n }\n\n checkMaxCapacity(groupId: string): boolean {\n return this.getFavoritesById(groupId).length >= this.maxCollectLength;\n }\n}\n\nexport const collectService = new CollectService();\n","import { http } from \"@next-core/http\";\n/**\n * @description 更新/新增我的收藏,这个接口用于全量更新单实例\n * @endpoint POST /api/v1/user_service/my_collection/upsert_collections\n */\nexport var MyCollectionApi_upsertMyCollection = (data, options) => /**! @contract easyops.api.user_service.my_collection.UpsertMyCollection@1.0.0 */http.post(\"api/gateway/user_service.my_collection.UpsertMyCollection/api/v1/user_service/my_collection/upsert_collections\", data, options);\n//# sourceMappingURL=upsertMyCollection.js.map","import React, {\n useMemo,\n useCallback,\n useRef,\n useState,\n useEffect,\n useContext,\n DragEvent,\n} from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport { Link, LinkProps } from \"@next-bricks/basic/link\";\n\nimport { EoTooltip, ToolTipProps } from \"@next-bricks/basic/tooltip\";\nimport classNames from \"classnames\";\nimport { SidebarMenuSimpleItem } from \"@next-shared/general/types\";\nimport { K, NS, locales } from \"../i18n.js\";\nimport { collectService } from \"./CollectService.js\";\nimport { useTranslation, initializeReactI18n } from \"@next-core/i18n/react\";\nimport { DRAG_DIRECTION, DragContext } from \"./constants.js\";\n\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\ninitializeReactI18n(NS, locales);\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedTooltip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\n\ninterface CellItemProps {\n data: SidebarMenuSimpleItem;\n suffix?: React.ReactNode;\n className?: string;\n}\n\nexport type OnFavoriteCallback = (collectList: SidebarMenuSimpleItem[]) => void;\n\ninterface PlaceholderCompProps {\n data: SidebarMenuSimpleItem;\n direction: DRAG_DIRECTION;\n onDragOver?: (e: DragEvent) => void;\n}\nexport function PlaceholderDropComp({\n data,\n onDragOver,\n direction,\n}: PlaceholderCompProps) {\n const { groupId, onFavoriteUpdate } = useContext(DragContext);\n const handleDrop = (e: DragEvent) => {\n const formData = JSON.parse(e.dataTransfer.getData(\"application/json\"));\n\n const newDataList = collectService.moveFavoriteTo(groupId, {\n from: formData,\n to: data,\n direction,\n });\n\n onFavoriteUpdate?.(newDataList);\n };\n\n return (\n <div\n className=\"indicate-wrapper\"\n data-direction={direction}\n data-to={data.to}\n onDragEnter={(e) =>\n ((e.target as HTMLElement).style.background = \"var(--palette-blue-1)\")\n }\n onDragLeave={(e) =>\n ((e.target as HTMLElement).style.background = \"transparent\")\n }\n data-text={data.text}\n onDragOver={onDragOver}\n onDrop={handleDrop}\n />\n );\n}\n\nexport function ItemTag(props: CellItemProps): React.ReactElement {\n const { data, suffix, className } = props;\n\n const {\n allowDrag,\n onDragStart,\n overElement,\n direction,\n onDragEnd,\n onDragOver,\n } = useContext(DragContext);\n const containerRef = useRef<any>(null);\n\n const [isDragIng, setIsDragIng] = useState(false);\n\n const isActive = useMemo(\n () =>\n overElement &&\n overElement.dataset.to == data.to &&\n overElement.dataset.text === overElement.dataset.text,\n [overElement, data]\n );\n\n const handleDragStart = (e: React.DragEvent) => {\n if (!allowDrag) {\n e.preventDefault();\n } else {\n setIsDragIng(true);\n e.dataTransfer?.setData(\"application/json\", JSON.stringify(data));\n onDragStart?.(e);\n }\n };\n\n const handleDragEnd = (e: React.DragEvent) => {\n setIsDragIng(false);\n onDragEnd?.(e);\n };\n\n const handleOver = (e: React.DragEvent) => {\n e.dataTransfer.dropEffect = \"none\";\n onDragOver?.(e);\n };\n\n return (\n <>\n {isActive && direction === DRAG_DIRECTION.Left && (\n <PlaceholderDropComp\n data={data}\n onDragOver={onDragOver}\n direction={DRAG_DIRECTION.Left}\n />\n )}\n <WrappedLink\n data-to={data.to}\n data-text={data.text}\n ref={containerRef}\n draggable\n onDragStart={handleDragStart}\n onDragEnd={handleDragEnd}\n onDragOver={handleOver}\n className={classNames(\"tag-container\", className, {\n \"is-drag\": isDragIng,\n })}\n url={data.to as string}\n href={data.href}\n target={data.target as LinkProps[\"target\"]}\n >\n <span className=\"tag-text ellipsis\" title={data.text}>\n {data.text}\n </span>\n <span className=\"tag-suffix\" onClick={(e) => e.preventDefault()}>\n {suffix}\n </span>\n </WrappedLink>\n\n {isActive && direction === DRAG_DIRECTION.Right && (\n <PlaceholderDropComp\n data={data}\n onDragOver={onDragOver}\n direction={DRAG_DIRECTION.Right}\n />\n )}\n </>\n );\n}\n\ninterface QuickVisitTagProps extends CellItemProps {\n groupId: string;\n onFavorite?: OnFavoriteCallback;\n}\n\nexport function QuickVisitItem(props: QuickVisitTagProps): React.ReactElement {\n const { t } = useTranslation(NS);\n const { onAllowDrag } = useContext(DragContext);\n const { data, onFavorite, groupId } = props;\n const suffixRef = useRef<any>();\n const iconRef = useRef<any>();\n\n const handleRemove = useCallback(() => {\n collectService.removeItemFromFavorite(groupId, data);\n onFavorite?.(collectService.getFavoritesById(groupId));\n }, [groupId, data, onFavorite]);\n\n const handleMouseDown = () => {\n onAllowDrag?.(true);\n };\n\n useEffect(() => {\n const icon = iconRef.current;\n icon.addEventListener(\"click\", handleRemove);\n\n return () => {\n icon.removeEventListener(\"click\", handleRemove);\n };\n }, [handleRemove]);\n\n useEffect(() => {\n const suffix = suffixRef.current;\n const handleClick = (e: MouseEvent) => {\n e.preventDefault();\n };\n suffix.addEventListener(\"click\", handleClick);\n\n return () => {\n suffix.removeEventListener(\"click\", handleClick);\n };\n }, []);\n\n const suffixGroups = useMemo(\n () => (\n <div className=\"operation\" ref={suffixRef}>\n <WrappedTooltip\n content={t(K.REMOVE_ITEM_FROM_QUICK_ACCESS)!}\n hoist\n placement=\"bottom\"\n className=\"close\"\n >\n <WrappedIcon lib=\"antd\" icon=\"close\" ref={iconRef} />\n </WrappedTooltip>\n <span className=\"drag-wrapper\" onMouseDown={handleMouseDown}>\n :::\n </span>\n </div>\n ),\n [t, handleRemove]\n );\n\n return (\n <ItemTag className=\"visit-container\" suffix={suffixGroups} data={data} />\n );\n}\n\ninterface StarIconProps {\n onFavorite?: OnFavoriteCallback;\n className?: string;\n groupId: string;\n data: SidebarMenuSimpleItem;\n active?: boolean;\n}\n\nexport function StarIcon({\n onFavorite,\n className,\n groupId,\n data,\n active,\n}: StarIconProps): React.ReactElement {\n const { t } = useTranslation(NS);\n const iconRef = useRef<any>();\n\n const handleClick = (e: React.MouseEvent) => {\n e.preventDefault();\n collectService.toggleFavorite(groupId, data);\n onFavorite?.(collectService.getFavoritesById(groupId));\n };\n\n useEffect(() => {\n // workaround for prevent Link jump when click.\n const icon = iconRef.current;\n icon.addEventListener(\"click\", handleClick);\n\n return () => {\n icon.removeEventListener(\"click\", handleClick);\n };\n }, []);\n\n return (\n <WrappedTooltip\n content={\n active\n ? t(K.REMOVE_ITEM_FROM_QUICK_ACCESS)!\n : collectService.checkMaxCapacity(groupId)\n ? t(K.MAX_COLLECT_COUNT_TIPS)!\n : t(K.ADD_ITEM_TO_QUICK_ACCESS)!\n }\n className={classNames(\"star-icon\", className)}\n >\n <WrappedIcon\n ref={iconRef}\n className={classNames({ active })}\n lib=\"antd\"\n icon=\"star\"\n {...(active ? { theme: \"filled\" } : {})}\n />\n </WrappedTooltip>\n );\n}\n\ninterface RecommendItemProps extends CellItemProps {\n active?: boolean;\n groupId: string;\n onFavorite?: OnFavoriteCallback;\n}\n\nexport function RecommendItem(props: RecommendItemProps): React.ReactElement {\n const { data, className, groupId, onFavorite, active } = props;\n\n const suffixGroups = useMemo(\n () => (\n <StarIcon\n groupId={groupId}\n active={active}\n className=\"star\"\n data={data}\n onFavorite={onFavorite}\n />\n ),\n [data, groupId, onFavorite, active]\n );\n\n return (\n <ItemTag\n className={classNames(\"recommend-container\", className)}\n suffix={suffixGroups}\n data={data}\n />\n );\n}\n","import {\n SidebarMenuItem,\n SidebarMenuGroup,\n SidebarMenuSimpleItem,\n} from \"@next-shared/general/types\";\n\nfunction walkMenuItem(item: SidebarMenuItem, list: SidebarMenuSimpleItem[]) {\n if (\n (item as SidebarMenuGroup).type === \"group\" &&\n Array.isArray((item as SidebarMenuGroup).items)\n ) {\n walkMenuItems((item as SidebarMenuGroup).items, list);\n } else {\n list.push(item as SidebarMenuSimpleItem);\n }\n}\n\nfunction walkMenuItems(\n items: SidebarMenuItem[],\n list: SidebarMenuSimpleItem[]\n): void {\n for (const item of items) {\n walkMenuItem(item, list);\n }\n}\n\nexport function flatMenuItems(item: SidebarMenuItem): SidebarMenuSimpleItem[] {\n const list: SidebarMenuSimpleItem[] = [];\n\n walkMenuItem(item, list);\n\n return list;\n}\n\nexport function processGroupItems(groups: SidebarMenuGroup[]): Array<{\n groupFrom: string;\n groups: SidebarMenuGroup[];\n}> {\n const groupCategoryMap = new Map<string, SidebarMenuGroup[]>();\n const categoryOrder = new Set<string>();\n\n groups?.forEach((item) => {\n const from = item.groupFrom ?? \"default\";\n categoryOrder.add(from);\n\n const value = groupCategoryMap.get(from);\n\n if (!value) {\n groupCategoryMap.set(from, [item]);\n } else {\n value!.push(item);\n }\n });\n\n return Array.from(categoryOrder).map((key) => ({\n groupFrom: key,\n groups: groupCategoryMap!.get(key)!,\n }));\n}\n","import React, { useEffect, useState } from \"react\";\nimport type {\n SidebarMenuSimpleItem,\n SidebarMenuGroup,\n} from \"@next-shared/general/types\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport { StarIcon, OnFavoriteCallback } from \"./ItemTag.js\";\nimport { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport { collectService } from \"./CollectService.js\";\nimport { processGroupItems } from \"./processor.js\";\nimport classNames from \"classnames\";\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\ninterface GroupViewProps {\n groups: SidebarMenuGroup[];\n groupId: string;\n selectedKey?: string[];\n onFavorite: OnFavoriteCallback;\n}\n\nexport const itemColumnWidth = 240;\n\nexport function GroupView(props: GroupViewProps): React.ReactElement {\n const { groupId, selectedKey, onFavorite } = props;\n const groupMenus = processGroupItems(props.groups);\n\n return (\n <div className=\"group-view\">\n {groupMenus.map((item, index) => {\n return (\n <div key={index}>\n {index !== 0 && <div className=\"divider\" />}\n {item.groupFrom === \"default\" ? (\n <DefaultGroup\n groupId={groupId}\n selectedKey={selectedKey}\n groups={item.groups}\n onFavorite={onFavorite}\n />\n ) : (\n <CustomGroup\n groupId={groupId}\n selectedKey={selectedKey}\n groups={item.groups}\n onFavorite={onFavorite}\n />\n )}\n </div>\n );\n })}\n </div>\n );\n}\n\ninterface BaseGroupProps {\n groupId: string;\n selectedKey?: string[];\n onFavorite: OnFavoriteCallback;\n groups: SidebarMenuGroup[];\n}\nexport function DefaultGroup(props: BaseGroupProps): React.ReactElement {\n const { groupId, onFavorite, selectedKey, groups } = props;\n\n const groupRef = React.useRef<HTMLDivElement>(null);\n const [columnCount, setColumnCount] = useState<number>();\n\n useEffect(() => {\n // istanbul ignore next\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n if (entry.target === groupRef.current) {\n const width = entry.contentRect.width;\n\n if (width) {\n setColumnCount(Math.floor(width / itemColumnWidth));\n }\n }\n }\n });\n\n resizeObserver.observe(groupRef.current as HTMLDivElement);\n\n return () => resizeObserver.disconnect();\n }, []);\n\n return (\n <div\n className=\"group\"\n ref={groupRef}\n style={\n (columnCount as number) < groups?.length\n ? { columnCount, columnWidth: itemColumnWidth }\n : {\n display: \"grid\",\n gridTemplateColumns: `repeat(auto-fit, ${itemColumnWidth}px)`,\n }\n }\n >\n {groups.map((group) => (\n <div key={group.key} className=\"group-item\">\n <div className=\"title\">{group.title}</div>\n <div className=\"content\">\n {group.items.map((item) => (\n <GroupItem\n key={item.key}\n groupId={groupId}\n selectedKey={selectedKey}\n data={item as SidebarMenuSimpleItem}\n onFavorite={onFavorite}\n />\n ))}\n </div>\n </div>\n ))}\n </div>\n );\n}\n\nexport function CustomGroup(props: BaseGroupProps): React.ReactElement {\n const { groupId, onFavorite, selectedKey, groups } = props;\n\n return (\n <div className=\"custom-group\">\n {groups.map((group) => (\n <div key={group.key}>\n <div className=\"title\">{group.title}</div>\n <div\n className=\"custom-content\"\n style={{\n display: \"grid\",\n gridTemplateColumns: `repeat(auto-fit, ${itemColumnWidth}px)`,\n }}\n >\n {group.items.map((item) => (\n <GroupItem\n key={item.key}\n selectedKey={selectedKey}\n groupId={groupId}\n data={item as SidebarMenuSimpleItem}\n onFavorite={onFavorite}\n />\n ))}\n </div>\n </div>\n ))}\n </div>\n );\n}\n\ninterface GroupItemProps {\n data: SidebarMenuSimpleItem;\n selectedKey?: string[];\n groupId: string;\n onFavorite: OnFavoriteCallback;\n}\nexport function GroupItem(props: GroupItemProps): React.ReactElement {\n const { data, groupId, onFavorite, selectedKey } = props;\n\n return (\n <WrappedLink\n key={data.key}\n icon={data.icon}\n url={data.to as string}\n href={data.href}\n target={data.target as LinkProps[\"target\"]}\n className={classNames(\"item-link\", {\n active: selectedKey?.includes(data.key as string),\n })}\n >\n <span className=\"ellipsis\" title={data.text}>\n {data.text}\n </span>\n <span className=\"icon-wrapper\">\n <StarIcon\n active={collectService.isCollected(groupId, data)}\n groupId={groupId}\n data={data}\n onFavorite={onFavorite}\n />\n </span>\n </WrappedLink>\n );\n}\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport type {\n SidebarMenuGroup,\n SidebarMenuSimpleItem,\n} from \"@next-shared/general/types\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport { QuickVisitItem, RecommendItem } from \"./ItemTag.js\";\nimport { GroupView } from \"./GroupItem.js\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport { K, NS } from \"../i18n.js\";\nimport { DragContext } from \"./constants.js\";\nimport { useTranslation } from \"@next-core/i18n/react\";\nimport { collectService } from \"./CollectService.js\";\nimport { flatMenuItems } from \"./processor.js\";\nimport { DRAG_DIRECTION } from \"./constants.js\";\nimport classNames from \"classnames\";\nimport { throttle, debounce } from \"lodash\";\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport interface InputEvents {\n change: CustomEvent<string>;\n}\n\nexport interface InputEventsMap {\n onValueChange: \"change\";\n}\n\nconst WrappedInput = wrapBrick<any, any, InputEvents, InputEventsMap>(\n \"eo-input\",\n {\n onValueChange: \"change\",\n }\n);\n\ninterface SiteMapItemProps {\n menuGroup: SidebarMenuGroup;\n selectedKey?: string[];\n visible?: boolean;\n}\n\nexport function findDropElement(element: HTMLElement): HTMLElement | undefined {\n let node = element;\n\n while (node) {\n if (node.draggable || node.className === \"indicate-wrapper\") {\n return node;\n }\n\n node = node.parentElement as HTMLElement;\n }\n}\n\nexport function isValidDragAction(\n dragElement: HTMLElement,\n dropElement: HTMLElement\n): boolean {\n return (\n dragElement &&\n dropElement &&\n !(\n dragElement.dataset.to === dropElement.dataset.to &&\n dragElement.dataset.text === dropElement.dataset.text\n )\n );\n}\n\nexport function SiteMapItem(props: SiteMapItemProps) {\n const { t } = useTranslation(NS);\n const { menuGroup, selectedKey, visible } = props;\n const groupId = menuGroup.groupId as string;\n\n const [favoriteList, setFavoriteList] = useState<SidebarMenuSimpleItem[]>([]);\n const flatItems = useMemo(() => flatMenuItems(menuGroup), [menuGroup]);\n const [q, setQ] = useState<string>();\n const [filter, setFilters] = useState<SidebarMenuSimpleItem[]>([]);\n const [dragElement, setDragElement] = useState<HTMLElement>();\n const [overElement, setOverElement] = useState<HTMLElement>();\n const [allowDrag, setAllowDrag] = useState<boolean>();\n const [direction, setDirection] = useState<DRAG_DIRECTION>();\n const [initialized, setInitialized] = useState(false);\n\n useEffect(() => {\n if (visible && !initialized) {\n setInitialized(true);\n }\n }, [visible, initialized]);\n\n const handleFavorite = (collectList: SidebarMenuSimpleItem[]) => {\n setFavoriteList(collectList);\n };\n\n const handleSearch = useCallback(\n (e: CustomEvent<string>): void => {\n const v = e.detail;\n setQ(e.detail);\n\n setFilters(\n !v\n ? flatItems\n : flatItems.filter((item) =>\n item.text.toLowerCase().includes(e.detail.toLowerCase())\n )\n );\n },\n [flatItems]\n );\n\n const debouncedHandleSearch = useMemo(\n () => debounce(handleSearch, 200),\n [handleSearch]\n );\n\n const handleDragStart = (e: React.DragEvent): void => {\n setDragElement(e.target as HTMLElement);\n };\n\n const handleDragOver = useMemo(\n () =>\n throttle((e: React.DragEvent): void => {\n e.preventDefault();\n\n const dropElement = findDropElement(e.target as HTMLElement);\n setOverElement(dropElement);\n\n if (\n dropElement &&\n isValidDragAction(dropElement, dragElement as HTMLElement)\n ) {\n if (dropElement.className === \"indicate-wrapper\") {\n setDirection(dropElement.dataset.direction as DRAG_DIRECTION);\n } else {\n const { width, left } = dropElement.getBoundingClientRect();\n\n const right = e.clientX > left + width / 2;\n setDirection(right ? DRAG_DIRECTION.Right : DRAG_DIRECTION.Left);\n }\n } else {\n setDirection(undefined);\n }\n }),\n [dragElement]\n );\n\n const handleDragEnd = (): void => {\n setDragElement(undefined);\n setDirection(undefined);\n setAllowDrag(false);\n };\n\n const handleAllowDrag = (enable: boolean): void => {\n setAllowDrag(enable);\n };\n\n useEffect(() => {\n (async () => {\n if (visible) {\n const list = await collectService.fetchFavorites(groupId);\n setFavoriteList(list);\n }\n })();\n }, [groupId, visible]);\n\n return (\n initialized && (\n <div className=\"site-map\">\n <div className=\"search-wrapper\">\n <WrappedInput\n className=\"search-input\"\n style={{ width: \"100%\" }}\n onValueChange={debouncedHandleSearch}\n placeholder={t(K.SEARCH_ITEM_PLACEHOLDER)}\n >\n <WrappedIcon slot=\"prefix\" lib=\"antd\" icon=\"search\" />\n </WrappedInput>\n </div>\n\n {!q && (\n <div>\n {favoriteList.length !== 0 && (\n <div\n className={classNames(\"visit-access\", {\n hasData: favoriteList.length,\n })}\n >\n <span className=\"title\">{t(K.QUICK_ACCESS)}</span>\n <DragContext.Provider\n value={{\n groupId,\n overElement,\n direction,\n allowDrag,\n onDragStart: handleDragStart,\n onDragOver: handleDragOver,\n onDragEnd: handleDragEnd,\n onAllowDrag: handleAllowDrag,\n onFavoriteUpdate: handleFavorite,\n }}\n >\n <div className=\"tag-wrapper\">\n {favoriteList.map((item) => (\n <QuickVisitItem\n onFavorite={handleFavorite}\n groupId={groupId}\n key={item.key}\n data={item}\n />\n ))}\n </div>\n </DragContext.Provider>\n </div>\n )}\n\n <GroupView\n groupId={groupId}\n selectedKey={selectedKey}\n groups={menuGroup.items as SidebarMenuGroup[]}\n onFavorite={handleFavorite}\n />\n </div>\n )}\n\n {q && (\n <div className=\"search-panel\">\n <span className=\"title\">{t(K.SITE_MAP_SEARCH_RECOMMEND)}</span>\n {filter.length ? (\n <div className=\"recommend-wrapper\">\n {filter.map((item) => (\n <RecommendItem\n key={item.key}\n groupId={groupId}\n data={item}\n onFavorite={handleFavorite}\n active={collectService.isCollected(groupId, item)}\n />\n ))}\n </div>\n ) : (\n <div className=\"no-data-tips\">{t(K.NO_DATA_SEARCH_INFO)}</div>\n )}\n </div>\n )}\n </div>\n )\n );\n}\n","import React from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type {\n SidebarMenuGroup,\n SidebarMenuItem,\n SidebarMenuSimpleItem,\n} from \"@next-shared/general/types\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nconst WrappedLinkItem = wrapBrick<Link, LinkProps>(\"eo-link\");\n\nexport function isGroup(item: SidebarMenuItem): item is SidebarMenuGroup {\n return item.type === \"group\";\n}\n\nexport function isSubMenu(\n item: SidebarMenuGroup,\n groupAsSubMenu?: boolean\n): item is SidebarMenuGroup {\n return Boolean(\n item.type === \"subMenu\" || (groupAsSubMenu && item.type === \"group\")\n );\n}\n\nexport function isSimple(item: SidebarMenuItem): item is SidebarMenuSimpleItem {\n return item.type === \"default\" || !item.type;\n}\n\nexport const renderLinkCom = (\n item: SidebarMenuSimpleItem,\n linkStyle?: React.CSSProperties\n): React.ReactElement => {\n return (\n <WrappedLinkItem\n type=\"plain\"\n key={item.key}\n url={item.to as string}\n href={item.href}\n target={item.target as LinkProps[\"target\"]}\n style={linkStyle}\n >\n <span className=\"menu-item-label\">{item.text}</span>\n </WrappedLinkItem>\n );\n};\n\nexport const renderSpanCom = (\n item: SidebarMenuGroup,\n subMenu?: boolean\n): React.ReactElement => {\n return (\n <span key={item.key} className=\"menu-item-label\">\n {item.title}\n {subMenu && <WrappedIcon lib=\"fa\" icon=\"angle-right\" />}\n </span>\n );\n};\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:root{--eo-three-level-menu-search-input-background:linear-gradient(90deg,#e8eef6 0%,rgba(233,234,243,0) 100%);--eo-three-level-menu-hover-color:#6bb3ff;--eo-three-level-menu-title-color:#0b5ad9;--eo-three-level-menu-active-color:#1a7aff;--eo-three-level-menu-search-tag-color:rgb(89,89,89);--eo-three-level-menu-search-tag-background:rgb(245,245,245)}html[data-theme=\"dark\"],\nhtml[data-theme=\"dark-v2\"]{--eo-three-level-menu-search-input-background:linear-gradient(124deg,rgba(255,255,255,0.36) 0%,rgba(255,255,255,0) 100%);--eo-three-level-menu-hover-color:rgba(54,95,175,0.85);--eo-three-level-menu-title-color:#6597e8;--eo-three-level-menu-active-color:#3f75dd;--eo-three-level-menu-search-tag-color:rgb(140,140,140);--eo-three-level-menu-search-tag-background:rgb(107,107,107)}`, \"\"]);\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, `:host{display:inline-block;background:none}:host::part(menu-item),\neo-link{display:block}eo-menu-item{margin:4px 0}.sub-menu-wrapper eo-menu-item:first-child,\n.group-wrapper eo-menu-item:first-child{margin-top:0}.sub-menu-wrapper eo-menu-item:last-child{margin-bottom:0}.nav-menu-wrapper{display:flex;align-items:center;gap:8px;white-space:nowrap}.popover .sub-menu-item-label{padding:2px 0px;color:var(--color-normal-text)}.popover.subprime{display:block;width:100%}.sub-menu-wrapper{min-width:160px;max-height:calc(100vh - 100px);background-color:var(--antd-dropdown-menu-bg);padding:12px 0;border-radius:6px;box-shadow:0px 4px 12px 0px rgba(17,37,64,0.08);overflow-x:hidden;overflow-y:auto}.overflow-menu-wrapper{display:flex;flex-direction:column}.sub-menu-wrapper > eo-menu-item{display:block;width:100%}.sub-menu-wrapper > eo-menu-item .menu-item-label,\n.sub-menu-wrapper > eo-popover .menu-item-label,\n.sub-menu-wrapper > .group-wrapper > eo-popover .menu-item-label,\n.sub-menu-wrapper > .group-wrapper > eo-menu-item .menu-item-label{display:block;width:100%;padding:7px 24px;box-sizing:border-box;line-height:22px;color:var(--color-normal-text)}.sub-menu-wrapper > eo-popover.subprime .menu-item-label,\n.sub-menu-wrapper > .group-wrapper > eo-popover.subprime .menu-item-label{display:flex;justify-content:space-between;align-items:center}.sub-menu-wrapper .menu-item-label{border-radius:0}.menu-item-label{display:inline-block;cursor:pointer;border-radius:4px;padding:1px 8px;line-height:22px;color:var(--color-normal-text)}.menu-item-label:hover{background-color:var(--top-menu-item-hover-bg)}.group-label{padding-left:16px;font-size:12px;color:var(--palette-gray-7);padding:8px 16px;line-height:20px;margin-top:4px}.sub-menu-wrapper .group-label:first-child{margin-top:0px}.sub-menu-wrapper eo-menu-item[active] .menu-item-label{background:var(--top-menu-item-selected-bg);color:var(--color-brand);font-weight:500}.three-level-menu-container{max-width:980px;max-height:510px;overflow:auto;min-width:160px}.three-level-menu-item-container{display:grid;grid-gap:20px;gap:20px;margin-top:13px;padding:5px 10px}.three-level-menu-item-title-container{display:flex;align-items:center}.three-level-menu-item-title-icon{width:4px;height:4px;background-color:var(--eo-three-level-menu-title-color);margin-right:4px;transform:rotate(45deg)}.three-level-menu-item-title{font-size:14px;font-family:PingFang-SC-Medium,PingFang-SC;font-weight:500;color:var(--eo-three-level-menu-title-color)}.three-level-menu-container .menu-item-label{margin-top:4px;margin-left:4px;padding:4px;width:100%}.three-level-menu-container .active .menu-item-label{color:var(--eo-three-level-menu-active-color)}.three-level-menu-search-result .menu-item-label{margin:0px}.three-level-menu-container .menu-item-label:hover{color:var(--eo-three-level-menu-hover-color)}.three-level-menu-popover .sub-menu-wrapper{padding-top:0px}.three-level-menu-search-container{background:var(--eo-three-level-menu-search-input-background);padding:5px 10px}.three-level-menu-search-result{min-width:187px;max-width:328px;max-height:324px;background-color:var(--antd-dropdown-menu-bg);box-shadow:0px 4px 12px 0px rgba(17,37,64,0.08);overflow:scroll}.three-level-menu-search-history-container{padding:5px 10px}.three-level-menu-search-history-text{background:var(--eo-three-level-menu-search-tag-background);border-radius:2px;font-size:7px;line-height:11px;display:inline-block;height:11px;padding:4px;color:var(--eo-three-level-menu-search-tag-color);margin-right:8px}.three-level-menu-search-history-title{color:#8c8c8c;margin:10px 0;display:flex;align-items:center}.three-level-menu-search-history-icon{margin-left:5px}.sub-menu-sit-map-wrapper{box-sizing:border-box;width:calc(100vw);padding:0 60px 24px;max-height:520px;background-color:var(--antd-dropdown-menu-bg);border-radius:6px;box-shadow:0px 4px 12px 0px rgba(17,37,64,0.08);overflow-x:hidden;overflow-y:auto}.overflow-menu-item{position:absolute;opacity:0;height:0;pointer-events:none}.in-group-site-map{width:auto;padding:0 20px}`, \"\"]);\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, `.group .item-link, .custom-group .item-link{font-weight:400}.group .item-link:hover, .custom-group .item-link:hover{background-color:var(--color-fill-bg-base-1)}.group .item-link:hover::part(link), .custom-group .item-link:hover::part(link){color:var(--color-brand-hover)}.group .item-link:hover::part(icon), .custom-group .item-link:hover::part(icon){color:var(--color-brand-hover)}.group .item-link.active::part(link),\n .custom-group .item-link.active::part(link),\n .group .item-link.active::part(icon),\n .custom-group .item-link.active::part(icon){color:var(--palette-blue-8)}.group .item-link::part(link), .custom-group .item-link::part(link){padding:8px 12px 8px 24px;display:flex;gap:4px;color:var(--color-header-text)}.group .item-link::part(icon), .custom-group .item-link::part(icon){color:var(--color-normal-text)}.group .title, .custom-group .title{padding:8px 16px 8px 24px;font-size:16px;font-weight:500;position:relative}.group .title::before, .custom-group .title::before{content:\"\";position:absolute;width:6px;height:6px;top:17px;left:9px;transform:rotate(45deg);background:var(--color-secondary-text)}.group .content .icon-wrapper, .custom-group .content .icon-wrapper, .group .custom-content .icon-wrapper, .custom-group .custom-content .icon-wrapper{color:var(--color-secondary-text);font-size:16px;display:none;margin-left:auto}.group .content .item-link:hover .icon-wrapper, .custom-group .content .item-link:hover .icon-wrapper, .group .custom-content .item-link:hover .icon-wrapper, .custom-group .custom-content .item-link:hover .icon-wrapper{display:block}.group .content .item-link:hover .icon-wrapper:hover, .custom-group .content .item-link:hover .icon-wrapper:hover, .group .custom-content .item-link:hover .icon-wrapper:hover, .custom-group .custom-content .item-link:hover .icon-wrapper:hover{color:var(--color-brand-hover)}.group .content, .custom-group .content{display:flex;flex-direction:column}.group .group-item, .custom-group .group-item{page-break-inside:avoid;break-inside:avoid}.group-view{min-height:300px}.group-view .divider{height:2px;background:var(--color-text-divider-line);margin:16px 0}`, \"\"]);\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, `.tag-container::part(link){display:flex;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;-moz-user-select:none;justify-content:space-between;background-color:var(--color-fill-bg-base-1);border-radius:2px;padding:1px 6px}.tag-container .tag-text{color:var(--color-normal-text);font-weight:400}.tag-container:hover .tag-text{color:var(--color-brand-hover)}.tag-container .tag-suffix{display:inline-flex;font-size:12px;gap:4px;align-items:center;color:var(--color-secondary-text)}.tag-container.is-drag{opacity:0.4}.indicate-wrapper{border:1px dashed var(--color-brand-hover);border-radius:4px;height:20px;margin:2px 0}.close{display:inline-flex;margin-top:2px;padding:0 2px}.close:hover{color:var(--color-error)}.drag-wrapper{cursor:move}.drag-wrapper:hover{color:var(--color-brand-hover)}.star-icon{display:flex;alignitems:center;color:var(--color-secondary-text)}.star-icon:hover{color:var(--color-brand-hover)}.star-icon .active{color:var(--palette-yellow-6)}.recommend-container:hover .star{display:inline-flex}.recommend-container .star{font-size:13px;display:none}.visit-container:hover .operation{display:inline-flex;align-items:center}.visit-container .operation{display:none}`, \"\"]);\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, `.site-map .search-wrapper{position:-webkit-sticky;position:sticky;top:0;z-index:9999;padding-top:24px;padding-bottom:16px;background:var(--antd-dropdown-menu-bg)}.site-map .search-input::part(affix-wrapper){border:none;border-bottom:1px solid var(--antd-input-border-color);border-radius:0px;background:transparent}.site-map .visit-access .title, .site-map .search-panel .title{display:inline-block;padding:2px 16px 2px 24px;font-weight:500;line-height:24px;position:relative}.site-map .visit-access .title::before, .site-map .search-panel .title::before{content:\"\";position:absolute;width:6px;height:6px;top:10px;left:9px;border-radius:50%;background:var(--color-secondary-text)}.site-map .visit-access .no-data-tips, .site-map .search-panel .no-data-tips{display:flex;margin:16px 0 32px;align-items:center;justify-content:center;color:var(--color-secondary-text)}.site-map .visit-access{margin-bottom:8px}.site-map .visit-access.hasData{display:flex}.site-map .visit-access .tag-wrapper{flex:1;display:grid;grid-template-columns:repeat(auto-fit,200px);grid-gap:8px;gap:8px}.site-map .ellipsis{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.site-map .search-panel .recommend-wrapper{margin-top:16px;display:grid;grid-template-columns:repeat(auto-fit,200px);grid-gap:8px;gap:8px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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;\n\n options.insert = insertFn.bind(null, \"head\");\n \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","export default function _checkPrivateRedeclaration(obj, privateCollection) {\n if (privateCollection.has(obj)) {\n throw new TypeError(\"Cannot initialize the same private elements twice on an object\");\n }\n}","import checkPrivateRedeclaration from \"./checkPrivateRedeclaration.js\";\nexport default function _classPrivateFieldInitSpec(obj, privateMap, value) {\n checkPrivateRedeclaration(obj, privateMap);\n privateMap.set(obj, value);\n}","import { Location, parsePath } from \"history\";\nimport { matchPath } from \"@next-core/runtime\";\nimport type {\n SidebarMenuSimpleItem,\n SidebarMenuItem,\n SidebarMenuGroup,\n} from \"./types.js\";\n\nexport function isGroup(item: SidebarMenuItem): item is SidebarMenuGroup {\n return item.type === \"group\";\n}\n\nexport function isSubMenu(\n item: SidebarMenuItem,\n groupAsSubMenu?: boolean\n): item is SidebarMenuGroup {\n return Boolean(\n item.type === \"subMenu\" || (groupAsSubMenu && item.type === \"group\")\n );\n}\n\nexport function initMenuItemAndMatchCurrentPathKeys(\n menuItems: SidebarMenuItem[],\n pathname: string,\n search: string,\n parentCursor: string\n): {\n selectedKeys: string[];\n openedKeys: string[];\n matchedKeys: string[];\n} {\n const selectedKeys: string[] = [];\n const openedKeys: string[] = [];\n const matchedKeys: string[] = [];\n\n let cursor = 0;\n menuItems.forEach((item) => {\n // key的格式最终为0,1,2,0.1,0.2,0.1.1,0.1.2\n item.key = parentCursor === \"\" ? `${cursor}` : `${parentCursor}.${cursor}`;\n if (isGroup(item) || isSubMenu(item)) {\n const tmp = initMenuItemAndMatchCurrentPathKeys(\n item.items,\n pathname,\n search,\n item.key\n );\n selectedKeys.push(...tmp.selectedKeys);\n if (tmp.selectedKeys.length || item.defaultExpanded) {\n openedKeys.push(item.key);\n }\n openedKeys.push(...tmp.openedKeys);\n matchedKeys.push(...tmp.matchedKeys);\n } else {\n if (matchMenuItem(item, pathname, search)) {\n selectedKeys.push(String(item.key));\n\n const keyPath = item.key.split(\".\");\n\n for (let i = 0; i < keyPath.length; i++) {\n matchedKeys.push(keyPath.slice(0, i + 1).join(\".\"));\n }\n }\n }\n cursor += 1;\n });\n if (selectedKeys.length && parentCursor !== \"\") {\n openedKeys.push(parentCursor);\n }\n return {\n selectedKeys: selectedKeys,\n openedKeys: openedKeys,\n matchedKeys: matchedKeys,\n };\n}\n\nfunction getMatchOfSearch(\n currentSearch: string,\n toSearch: string | undefined\n): boolean {\n const current = new URLSearchParams(currentSearch);\n const to = new URLSearchParams(toSearch);\n for (const [key, value] of to.entries()) {\n // Allow `?k=` to match `?` (when `k` doesn't exist)\n if ((current.get(key) ?? \"\") !== value) {\n return false;\n }\n }\n return true;\n}\n\nexport function matchMenuItem(\n item: SidebarMenuSimpleItem,\n pathname: string,\n search: string\n): boolean {\n if (!item.to) return false;\n const to = typeof item.to === \"object\" ? item.to : parsePath(item.to);\n\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath = to.pathname!.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n let match = !!matchPath(pathname, {\n path: escapedPath,\n exact: item.exact,\n });\n\n if (match && item.activeMatchSearch) {\n match = getMatchOfSearch(search, to.search);\n }\n\n if (!match && Array.isArray(item.activeIncludes)) {\n for (const include of item.activeIncludes) {\n let parseInclude: Location | undefined;\n const hasSearch = include.includes(\"?\");\n\n if (hasSearch) {\n parseInclude = parsePath(include);\n }\n match = !!matchPath(pathname, {\n path: hasSearch ? parseInclude!.pathname : include,\n exact: true,\n });\n\n if (match && parseInclude?.search) {\n match = getMatchOfSearch(search, parseInclude.search);\n }\n\n if (match) {\n break;\n }\n }\n }\n\n if (match && Array.isArray(item.activeExcludes)) {\n for (const include of item.activeExcludes) {\n match = !matchPath(pathname, {\n path: include,\n exact: true,\n });\n if (!match) {\n break;\n }\n }\n }\n\n return match;\n}\n"],"names":["initializeReactI18n","NS","locales","WrappedPopover","wrapBrick","WrappedSearch","onChange","onSearch","WrappedIcon","LOCAL_STORAGE_PREFIX","maxVisitorLength","ThreeLevelMenuPopoverContent","props","useTranslation","menuItem","selectedKey","items","searchResult","setSearchResult","useState","searchKey","setSearchKey","triggerRef","useRef","nameSpace","concat","title","storage","useMemo","JsonStorage","localStorage","searchHistory","getItem","popoverTriggerClick","_triggerRef$current","current","click","React","className","onClick","e","stopPropagation","placeholder","t","K","SEARCH_BY_MENU_NAME","detail","list","uniq","length","pop","setItem","flatMap","i","filter","text","toLowerCase","includes","trim","onFocus","onBlur","trigger","placement","anchorDisplay","distance","slot","ref","map","renderLinkCom","width","style","height","textAlign","lineHeight","NO_DATA","SEARCH_HISTORY","lib","theme","icon","h","key","gridTemplateColumns","item","index","_item$items","classnames","active","en","QUICK_ACCESS","REMOVE_ITEM_FROM_QUICK_ACCESS","ADD_ITEM_TO_QUICK_ACCESS","NO_DATA_TIPS_IN_QUICK_ACCESS","SITE_MAP_SEARCH_RECOMMEND","MAX_COLLECT_COUNT_TIPS","NO_DATA_SEARCH_INFO","SEARCH_ITEM_PLACEHOLDER","zh","MyCollectionApi_listMyCollection","_ref","params","options","http","get","_x","_x2","apply","this","arguments","DRAG_DIRECTION","collectModule","DragContext","collectService","constructor","maxCollectLength","_defineProperty","Map","getFavoritesById","id","_cloneDeep","cloneDeep","collectMap","fetchFavorites","_this","_asyncToGenerator","cachedPromise","collectPromise","favoritesPromise","module","collectionName","then","result","_result$payloads","payloads","extInfo","Boolean","set","setItemAsFavorite","unshift","updateFavoriteItems","data","name","url","to","post","error","handleHttpError","equalItem","prevItem","removeItemFromFavorite","findIndex","row","splice","isCollected","some","toggleFavorite","checkMaxCapacity","moveFavoriteTo","option","from","direction","fromIndex","toIndex","Left","groupId","WrappedLink","WrappedTooltip","PlaceholderDropComp","onDragOver","onFavoriteUpdate","useContext","onDragEnter","target","background","onDragLeave","onDrop","formData","JSON","parse","dataTransfer","getData","newDataList","ItemTag","suffix","allowDrag","onDragStart","overElement","onDragEnd","containerRef","isDragIng","setIsDragIng","isActive","dataset","draggable","_e$dataTransfer","setData","stringify","preventDefault","dropEffect","classNames","href","Right","QuickVisitItem","onAllowDrag","onFavorite","suffixRef","iconRef","handleRemove","useCallback","handleMouseDown","useEffect","addEventListener","removeEventListener","handleClick","suffixGroups","content","hoist","onMouseDown","StarIcon","_ref2","_extends","RecommendItem","walkMenuItem","type","Array","isArray","walkMenuItems","push","itemColumnWidth","GroupView","groups","groupCategoryMap","categoryOrder","groupMenus","Set","forEach","_item$groupFrom","groupFrom","add","value","DefaultGroup","CustomGroup","groupRef","columnCount","setColumnCount","resizeObserver","ResizeObserver","entries","entry","contentRect","Math","floor","observe","disconnect","columnWidth","display","group","GroupItem","WrappedInput","onValueChange","SiteMapItem","menuGroup","visible","favoriteList","setFavoriteList","flatItems","flatMenuItems","q","setQ","setFilters","dragElement","setDragElement","setOverElement","setAllowDrag","setDirection","initialized","setInitialized","handleFavorite","collectList","handleSearch","v","debouncedHandleSearch","debounce","handleDragOver","throttle","dropElement","element","node","parentElement","findDropElement","isValidDragAction","left","getBoundingClientRect","right","clientX","undefined","hasData","Provider","handleDragEnd","enable","WrappedLinkItem","isGroup","isSubMenu","groupAsSubMenu","linkStyle","renderSpanCom","subMenu","___CSS_LOADER_EXPORT___","toString","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_checkPrivateRedeclaration","obj","privateCollection","has","TypeError","_classPrivateFieldInitSpec","privateMap","initMenuItemAndMatchCurrentPathKeys","menuItems","pathname","search","parentCursor","selectedKeys","openedKeys","matchedKeys","cursor","tmp","defaultExpanded","parsePath","escapedPath","replace","match","matchPath","path","exact","activeMatchSearch","getMatchOfSearch","activeIncludes","include","_parseInclude","parseInclude","hasSearch","activeExcludes","_include","matchMenuItem","String","keyPath","split","slice","join","currentSearch","toSearch","URLSearchParams","_current$get"],"sourceRoot":""}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/*! For license information please see 4904.5dfde72c.js.LICENSE.txt */
|
|
2
|
+
"use strict";(self.webpackChunk_next_bricks_nav=self.webpackChunk_next_bricks_nav||[]).push([[4904],{4904:(e,t,n)=>{n.d(t,{fm:()=>z,ir:()=>D,pU:()=>J,sZ:()=>H});var r,i=n(9740),a=n(6330),o=n(8769),s=n(4),c=n(259),u=n(4612),p=n(4864),l=n(9393),d=n(3346),m=n(6730),f=function(){var e=(0,a.A)((function*(e,t){return(yield m.http.get("api/gateway/user_service.launchpad.ListCollectionV2/api/v2/launchpad/collection",(0,i.A)((0,i.A)({},t),{},{params:e}))).data}));return function(t,n){return e.apply(this,arguments)}}(),h=function(){var e=(0,a.A)((function*(e,t){return(yield m.http.post("api/gateway/user_service.launchpad.CreateCollectionV2/api/v2/launchpad/collection",e,t)).data}));return function(t,n){return e.apply(this,arguments)}}(),v=(e,t)=>m.http.delete("api/gateway/user_service.launchpad.DeleteCollectionV2/api/v2/launchpad/collection/".concat(e),t),I=n(3496),y=function(){var e=(0,a.A)((function*(e,t,n){return(yield I.http.post("api/gateway/cmdb.instance.PostSearchV3/v3/object/".concat(e,"/instance/_search"),t,n)).data}));return function(t,n,r){return e.apply(this,arguments)}}(),g=10,A=10,w=n(6659),k=n(1030);function C(){return(C=(0,a.A)((function*(){var e=yield(0,d.i)({},{interceptorParams:{ignoreLoadingBar:!0},noAbortOnRouteChange:!0}),t=new Map;for(var n of e.storyboards){var r=n.app;r.localeName=(0,w.F)(r.locales,r.name),t.set(r.id,r)}var a=[],o=new Map;for(var s of e.desktops){var c=[];for(var u of s.items)switch(u.type){case"app":var p=t.get(u.id);p&&c.push((0,i.A)((0,i.A)({},u),{},{name:p.localeName,url:p.homepage,menuIcon:p.menuIcon}));break;case"custom":c.push(u),o.set(u.id,u);break;case"dir":var l=[];for(var m of u.items)if("app"===m.type){var f=t.get(m.id);f&&l.push((0,i.A)((0,i.A)({},m),{},{name:f.localeName,url:f.homepage,menuIcon:f.menuIcon}))}else"custom"===m.type&&(l.push(m),o.set(m.id,m));l.length>0&&c.push((0,i.A)((0,i.A)({},u),{},{items:l}))}c.length>0&&a.push((0,i.A)((0,i.A)({},s),{},{items:c}))}return{menuGroups:a,microAppsById:t,customLinksById:o}}))).apply(this,arguments)}function F(){return b.apply(this,arguments)}function b(){return(b=(0,a.A)((function*(){return(yield f({page:1,pageSize:g},{interceptorParams:{ignoreLoadingBar:!0},noAbortOnRouteChange:!0})).list}))).apply(this,arguments)}function S(){return(S=(0,a.A)((function*(){var e=yield F(),t=[];for(var n of e)if("microApp"===n.type){var r=n.relatedApp;r.localeName=(0,w.F)(r.locales,r.name),t.push({favoriteId:n.instanceId,type:"app",name:r.localeName,id:r.appId,url:r.homepage,instanceId:r.instanceId,menuIcon:r.menuIcon})}else if("customItem"===n.type){var i=n.relatedCustomItem;t.push({favoriteId:n.instanceId,type:"custom",name:i.name,id:i.id,url:i.url,menuIcon:i.menuIcon})}else"link"===n.type&&t.push({favoriteId:n.instanceId,type:"link",name:n.name,url:n.link,menuIcon:n.icon});return t}))).apply(this,arguments)}function _(){return(_=(0,a.A)((function*(e){return h({type:"app"===e.type?"microApp":"customItem",relatedInstanceId:e.instanceId},{interceptorParams:{ignoreLoadingBar:!0}})}))).apply(this,arguments)}function B(){return(B=(0,a.A)((function*(e){return e.favoriteId?v(e.favoriteId):F().then((t=>{var n,r=null===(n=t.find((t=>{var n,r;return"app"===e.type?"microApp"===t.type&&(null===(n=t.relatedApp)||void 0===n?void 0:n.appId)===e.id:"custom"===e.type&&(null===(r=t.relatedCustomItem)||void 0===r?void 0:r.id)===e.id})))||void 0===n?void 0:n.instanceId;if(r)return v(r);console.error("Menu item to unstar not found:",e)}))}))).apply(this,arguments)}function P(){return(P=(0,a.A)((function*(){var e=(yield y("MICRO_APP_CATEGORY@EASYOPS",{fields:["id","type","name","icon","order","platformApps.appId","platformApps.name","platformApps.homepage","platformApps.description","platformApps.menuIcon","platformApps.locales","platformApps._object_id","platformApps.@.order","platformItems.id","platformItems.name","platformItems.url","platformItems.description","platformItems.menuIcon","platformItems._object_id","platformItems.@.order"],page:1,page_size:300,query:{type:"platform"}})).list,t=null==e?void 0:e.map((e=>{var t=e.platformApps.map((e=>{var t;return{type:"app",name:(0,w.F)(e.locales,e.name),id:e.appId,url:e.homepage,menuIcon:e.menuIcon,description:e.description,instanceId:e.instanceId,order:null===(t=e["@"])||void 0===t?void 0:t.order}})),n=e.platformItems.map((e=>{var t;return{type:"custom",name:e.name,id:e.id,url:e.url,menuIcon:e.menuIcon,description:e.description,instanceId:e.instanceId,order:null===(t=e["@"])||void 0===t?void 0:t.order}})),r=(0,k.sortBy)([...t,...n],"order");return{instanceId:e.instanceId,id:e.id,name:e.name,icon:e.icon,order:e.order,items:r}}));return[{id:"#all",name:"全部",icon:{lib:"easyops",category:"second-menu",icon:"sprint-planning-second-menu"},items:[]},...(0,k.sortBy)(t,"order")]}))).apply(this,arguments)}function x(e,t){return e.id.toLowerCase().includes(t)||e.name.toLowerCase().includes(t)||e.description&&e.description.toLowerCase().includes(t)?e:null}function E(e,t){return e.id.toLowerCase().includes(t)||e.name.toLowerCase().includes(t)||e.description&&e.description.toLowerCase().includes(t)?e:null}var L="launchpad-recent-visits:".concat(null===(r=c.auth.getAuth())||void 0===r?void 0:r.org),M=new u.G(localStorage),O=[],N=new Map,j=new Map,G=!1,R=[],V=!1,T=[],q=!1,D=new p.x((0,a.A)((function*(){({menuGroups:O,microAppsById:N,customLinksById:j}=yield function(){return C.apply(this,arguments)}()),G=!0}))),z=new p.x((0,a.A)((function*(){R=yield function(){return S.apply(this,arguments)}(),V=!0}))),J=new p.x((0,a.A)((function*(){T=yield function(){return P.apply(this,arguments)}(),q=!0}))),Y=e=>(0,l.Ds)({type:"error",message:(0,s.httpErrorToString)(e)});function H(e){var[t,n]=(0,o.useState)(O),[r,c]=(0,o.useState)(N),[u,p]=(0,o.useState)(j),[d,m]=(0,o.useState)(""),[f,h]=(0,o.useState)(!G),[v,I]=(0,o.useState)(!V),[y,w]=(0,o.useState)(!q),[k,C]=(0,o.useState)([]),[F,b]=(0,o.useState)([]),[S,P]=(0,o.useState)(R),[H,U]=(0,o.useState)(T);(0,o.useEffect)((()=>{e&&!f&&(n(O),c(N),p(j))}),[e,f]),(0,o.useEffect)((()=>{e&&!v&&P(R)}),[e,v]),(0,o.useEffect)((()=>{e&&!y&&U(T)}),[e,y]),(0,o.useEffect)((()=>{var t;e&&C(null!==(t=M.getItem(L))&&void 0!==t?t:[])}),[e]),(0,o.useEffect)((()=>{if(e){var t=function(){var e=(0,a.A)((function*(){try{yield D.fetch(),h(!1)}catch(e){(0,s.handleHttpError)(e)}}));return function(){return e.apply(this,arguments)}}();t()}}),[e]),(0,o.useEffect)((()=>{if(e){var t=function(){var e=(0,a.A)((function*(){try{yield z.fetch(),I(!1)}catch(e){I(!1),Y(e)}}));return function(){return e.apply(this,arguments)}}();t()}}),[e]),(0,o.useEffect)((()=>{var t;if(e&&null!==(t=(0,s.getRuntime)())&&void 0!==t&&t.getFeatureFlags()["launchpad-show-platform-category"]){var n=function(){var e=(0,a.A)((function*(){try{yield J.fetch(),w(!1)}catch(e){w(!1),Y(e)}}));return function(){return e.apply(this,arguments)}}();n()}}),[e]),(0,o.useEffect)((()=>{if(!f){var e=k.map((e=>{if("app"===e.type){var t=r.get(e.id);return t?{type:"app",name:t.localeName,id:t.id,url:t.homepage,instanceId:t.instanceId,menuIcon:t.menuIcon}:null}return u.get(e.id)})).filter(Boolean);b(e)}}),[u,f,r,k]);var Z=(0,o.useCallback)((e=>{var t,{type:n,id:r}=e,i=null!==(t=M.getItem(L))&&void 0!==t?t:[],a=i.findIndex((e=>e.type===n&&e.id===r));a>-1&&i.splice(a,1),i.unshift({type:n,id:r}),i.length>A&&i.pop(),M.setItem(L,i)}),[]),K=(0,o.useCallback)((e=>S.some((t=>Q(e,t)))),[S]),W=(0,o.useCallback)((e=>{var t,n=S.findIndex((t=>"link"===e.type?t.favoriteId===e.favoriteId:Q(e,t)));if(n>-1){var r=S[n];t=S.slice(0,n).concat(S.slice(n+1)),function(e){return B.apply(this,arguments)}(r).catch(Y)}else{if(S.length>=g)return void(0,l.ui)({type:"warn",title:"收藏数量已达上限",content:"当前收藏链接数量已达上限(".concat(g,"个),请删除部分收藏后再添加。")});var a=(0,i.A)({},e);t=S.concat(a),function(e){return _.apply(this,arguments)}(e).then((e=>{e&&(a.favoriteId=e.instanceId)}),Y)}P(t),R=t}),[S]),X=(0,o.useMemo)((()=>function(e,t){if(!t)return e;var n=t.toLowerCase();return e.map((e=>(0,i.A)((0,i.A)({},e),{},{items:e.items.map((e=>{switch(e.type){case"app":return x(e,n);case"custom":return E(e,n);case"dir":var t=e.items.map((e=>"app"===e.type?x(e,n):"custom"===e.type?E(e,n):null)).filter(Boolean);return t.length>0?(0,i.A)((0,i.A)({},e),{},{items:t}):null}})).filter(Boolean)}))).filter((e=>e.items.length>0))}(t,d)),[t,d]),$=(0,o.useMemo)((()=>function(e,t){if(!t)return e;var n=t.toLowerCase();return e.map((e=>(0,i.A)((0,i.A)({},e),{},{items:e.items.map((e=>{switch(e.type){case"app":return x(e,n);case"custom":return E(e,n)}})).filter(Boolean)})))}(H,d)),[H,d]);return{loading:f,q:d,setQ:m,menuGroups:X,loadingFavorites:v,loadingPlatformCategories:y,favorites:S,recentVisits:F,pushRecentVisit:Z,isStarred:K,toggleStar:W,platformCategories:$}}function Q(e,t){return e.instanceId&&t.instanceId?t.instanceId===e.instanceId:t.type===e.type&&t.id===e.id}},9393:(e,t,n)=>{n.d(t,{Bj:()=>a,Ds:()=>c,EM:()=>o,ui:()=>s});var r=n(9938),i=n(8438),a=(0,r.wrapBrick)("eo-icon"),o=(0,r.wrapBrick)("eo-link"),s=(0,i.unwrapProvider)("basic.show-dialog"),c=(0,i.unwrapProvider)("basic.show-notification")},4864:(e,t,n)=>{n.d(t,{x:()=>a});var r=n(6330),i=n(4586);class a{constructor(e){(0,i.A)(this,"preFetchId",null),(0,i.A)(this,"preFetchScheduled",!1),(0,i.A)(this,"firstFetchPromise",null),(0,i.A)(this,"isFetching",!1),(0,i.A)(this,"task",void 0),this.task=e}schedulePrefetch(){var e=this;if(!this.preFetchScheduled){this.preFetchScheduled=!0;var t=function(){var t=(0,r.A)((function*(){e.preFetchId=null,e.fetch()}));return function(){return t.apply(this,arguments)}}();"function"==typeof window.requestIdleCallback?this.preFetchId=window.requestIdleCallback(t):this.preFetchId=setTimeout(t)}}fetch(e){var t;return this.preFetchId&&("function"==typeof window.cancelIdleCallback?cancelIdleCallback(this.preFetchId):clearTimeout(this.preFetchId),this.preFetchId=null),this.isFetching&&!e||(this.isFetching=!0,(t=this.task()).catch((e=>{console.error(e),this.firstFetchPromise=null})).finally((()=>{this.isFetching=!1})),this.firstFetchPromise||(this.firstFetchPromise=t),!e)?this.firstFetchPromise:t}}},6659:(e,t,n)=>{n.d(t,{F:()=>i});var r=n(7058);function i(e,t){var n;if(!e)return t;var i=Object.fromEntries(Object.entries(e).filter((e=>{var[t,n]=e;return n.name})).map((e=>{var[t,n]=e;return[t,n.name]})));return null!==(n=(0,r.i18nText)(i))&&void 0!==n?n:t}},4612:(e,t,n)=>{n.d(t,{G:()=>r});class r{constructor(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"brick-next-";this.storage=e,this.prefix=t}setItem(e,t){this.storage.setItem(this.prefix+e,JSON.stringify(t))}getItem(e){return JSON.parse(this.storage.getItem(this.prefix+e))}removeItem(e){return this.storage.removeItem(this.prefix+e)}clear(){return this.storage.clear()}}}}]);
|
|
3
|
+
//# sourceMappingURL=4904.5dfde72c.js.map
|