@next-bricks/nav 0.0.11 → 0.0.13
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/{2784.4c8053d8.js → 2784.ff676910.js} +1 -1
- package/dist/chunks/{5491.f07a0cc3.js → 5491.409d2800.js} +2 -2
- package/dist/chunks/5491.409d2800.js.map +1 -0
- package/dist/chunks/{752.44874f57.js → 752.79ebf0ae.js} +2 -2
- package/dist/chunks/{752.44874f57.js.map → 752.79ebf0ae.js.map} +1 -1
- package/dist/chunks/{8093.2b43ccfb.js → 8093.1e4cc530.js} +2 -2
- package/dist/chunks/{8093.2b43ccfb.js.map → 8093.1e4cc530.js.map} +1 -1
- package/dist/chunks/{9102.91d39227.js → 9102.747f386a.js} +3 -3
- package/dist/chunks/{9102.91d39227.js.map → 9102.747f386a.js.map} +1 -1
- package/dist/chunks/{eo-nav-menu.8676599c.js → eo-nav-menu.ac12ba50.js} +3 -3
- package/dist/chunks/{eo-nav-menu.8676599c.js.map → eo-nav-menu.ac12ba50.js.map} +1 -1
- package/dist/chunks/{main.2dc7564a.js → main.e4491d4e.js} +2 -2
- package/dist/chunks/{main.2dc7564a.js.map → main.e4491d4e.js.map} +1 -1
- package/dist/{index.87b6ae5d.js → index.b91d6de5.js} +2 -2
- package/dist/{index.87b6ae5d.js.map → index.b91d6de5.js.map} +1 -1
- package/package.json +2 -2
- package/dist/chunks/5491.f07a0cc3.js.map +0 -1
- /package/dist/chunks/{9102.91d39227.js.LICENSE.txt → 9102.747f386a.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{eo-nav-menu.8676599c.js.LICENSE.txt → eo-nav-menu.ac12ba50.js.LICENSE.txt} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/8093.2b43ccfb.js","mappings":"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","sources":["webpack:///./src/nav-menu/ThreeLevelMenuPopoverContent.tsx","webpack:///./src/nav-menu/i18n.ts","webpack:///./src/nav-menu/site-map/constants.ts","webpack:///./src/nav-menu/site-map/CollectService.ts","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/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:///../../node_modules/@babel/runtime/helpers/esm/checkPrivateRedeclaration.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/classExtractFieldDescriptor.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/classApplyDescriptorGet.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/classPrivateFieldInitSpec.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/classApplyDescriptorSet.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 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}\nexport const DragContext = React.createContext<ContextOfDragProps>(\n {} as ContextOfDragProps\n);\n","import { JsonStorage } from \"@next-shared/general/JsonStorage\";\nimport type { SidebarMenuSimpleItem } from \"@next-shared/general/types\";\nimport { DRAG_DIRECTION } from \"./constants.js\";\n\nexport class CollectService {\n private storage: JsonStorage;\n private maxCollectLength: number;\n readonly storageKey = \"site-map-collect\";\n\n constructor(maxCollectLength?: number) {\n this.storage = new JsonStorage(localStorage);\n this.maxCollectLength = maxCollectLength ?? 10;\n }\n\n private getCategoryId(id: string): string {\n return `${this.storageKey}-${id}`;\n }\n\n public getFavoritesById(id: string): SidebarMenuSimpleItem[] {\n return this.storage.getItem(this.getCategoryId(id)) || [];\n }\n\n public setItemAsFavorite(id: string, item: SidebarMenuSimpleItem): void {\n const key = this.getCategoryId(id);\n const list = this.getFavoritesById(id);\n\n if (list.length >= this.maxCollectLength) {\n list.pop();\n }\n\n list.unshift(item);\n this.storage.setItem(key, list);\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 key = this.getCategoryId(id);\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.storage.setItem(key, 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 this.storage.setItem(this.getCategoryId(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 React, {\n useMemo,\n useCallback,\n forwardRef,\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\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 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 onClick={handleRemove}\n >\n <WrappedIcon lib=\"antd\" icon=\"close\" />\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 setColumnCount(Math.floor(width / itemColumnWidth));\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, 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}\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 } = props;\n const groupId = menuGroup.groupId as string;\n\n const [favoriteList, setFavoriteList] = useState(\n collectService.getFavoritesById(groupId)\n );\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\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 return (\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","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\";\n}\n\nexport const renderLinkCom = (\n item: SidebarMenuSimpleItem,\n linkStyle?: React.CSSProperties\n): React.ReactElement => {\n return (\n <WrappedLinkItem\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, `:host{display:inline-block;background:none;--three-level-menu-search-input-background:linear-gradient(90deg,#e8eef6 0%,rgba(233,234,243,0) 100%);--three-level-menu-hover-color:#6bb3ff;--three-level-menu-title-color:#0b5ad9;--three-level-menu-active-color:#1a7aff;--three-level-menu-search-tag-color:rgb(89,89,89);--three-level-menu-search-tag-background:rgb(245,245,245)}:host::part(menu-item),\neo-link{display:block;padding:2px 0px}:host-context(html[data-theme=\"dark-v2\"]),\n:host-context([data-override-theme=\"dark-v2\"]){--three-level-menu-search-input-background:linear-gradient(124deg,rgba(255,255,255,0.36) 0%,rgba(255,255,255,0) 100%);--three-level-menu-hover-color:rgba(54,95,175,0.85);--three-level-menu-title-color:#6597e8;--three-level-menu-active-color:#3f75dd;--three-level-menu-search-tag-color:rgb(140,140,140);--three-level-menu-search-tag-background:rgb(107,107,107)}.nav-menu-wrapper{display:flex}.nav-menu-wrapper > eo-menu-item{padding:2px 14px}.nav-menu-wrapper > eo-popover{padding:2px 6px}.popover .sub-menu-item-label{padding:2px 0px;color:var(--color-normal-text)}.popover.subprime{display:inline-block;width:100%}.sub-menu-wrapper{min-width:160px;max-height:calc(100vh - 100px);background-color:var(--antd-dropdown-menu-bg);padding:4px 0;border-radius:6px;box-shadow:0px 4px 12px 0px rgba(17,37,64,0.08);overflow-x:hidden;overflow-y:auto}.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:6px 24px;box-sizing:border-box;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:5px 10px;color:var(--color-normal-text)}.menu-item-label:hover{background-color:var(--v8-top-menu-item-hover)}.group-label{padding-left:16px;font-size:12px;color:var(--palette-gray-7)}eo-menu-item[active] .menu-item-label{background:var(--v8-top-menu-item-selected-bg);color:var(--color-brand)!important;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(--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(--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(--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(--three-level-menu-hover-color)}.three-level-menu-popover .sub-menu-wrapper{padding-top:0px}.three-level-menu-search-container{background:var(--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(--three-level-menu-search-tag-background);border-radius:2px;font-size:7px;line-height:11px;display:inline-block;height:11px;padding:4px;color:var(--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 120px 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}`, \"\"]);\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;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;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:1px;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}.site-map .visit-access .title, .site-map .search-panel .title{display:inline-block;padding:2px 16px;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:1px;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}:host-context(html[data-theme=\"dark-v2\"]) .site-map .search-input::part(affix-wrapper), :host-context([data-override-theme=\"dark-v2\"]) .site-map .search-input::part(affix-wrapper){background:var(--antd-dropdown-menu-bg)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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}","export default function _classExtractFieldDescriptor(receiver, privateMap, action) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to \" + action + \" private field on non-instance\");\n }\n return privateMap.get(receiver);\n}","import classApplyDescriptorGet from \"./classApplyDescriptorGet.js\";\nimport classExtractFieldDescriptor from \"./classExtractFieldDescriptor.js\";\nexport default function _classPrivateFieldGet(receiver, privateMap) {\n var descriptor = classExtractFieldDescriptor(receiver, privateMap, \"get\");\n return classApplyDescriptorGet(receiver, descriptor);\n}","export default function _classApplyDescriptorGet(receiver, descriptor) {\n if (descriptor.get) {\n return descriptor.get.call(receiver);\n }\n return descriptor.value;\n}","import checkPrivateRedeclaration from \"./checkPrivateRedeclaration.js\";\nexport default function _classPrivateFieldInitSpec(obj, privateMap, value) {\n checkPrivateRedeclaration(obj, privateMap);\n privateMap.set(obj, value);\n}","import classApplyDescriptorSet from \"./classApplyDescriptorSet.js\";\nimport classExtractFieldDescriptor from \"./classExtractFieldDescriptor.js\";\nexport default function _classPrivateFieldSet(receiver, privateMap, value) {\n var descriptor = classExtractFieldDescriptor(receiver, privateMap, \"set\");\n classApplyDescriptorSet(receiver, descriptor, value);\n return value;\n}","export default function _classApplyDescriptorSet(receiver, descriptor, value) {\n if (descriptor.set) {\n descriptor.set.call(receiver, value);\n } else {\n if (!descriptor.writable) {\n throw new TypeError(\"attempted to set read only private field\");\n }\n descriptor.value = value;\n }\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} {\n const selectedKeys: string[] = [];\n const openedKeys: 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 } else {\n if (matchMenuItem(item, pathname, search)) {\n selectedKeys.push(String(item.key));\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 };\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 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 && 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 if (match && (item as any).activeMatchSearch) {\n match = getMatchOfSearch(search, to.search);\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","DRAG_DIRECTION","DragContext","collectService","constructor","maxCollectLength","_defineProperty","this","getCategoryId","id","storageKey","getFavoritesById","setItemAsFavorite","unshift","equalItem","prevItem","to","removeItemFromFavorite","findIndex","row","splice","isCollected","some","toggleFavorite","checkMaxCapacity","moveFavoriteTo","option","from","direction","fromIndex","toIndex","Left","groupId","WrappedLink","WrappedTooltip","PlaceholderDropComp","_ref","data","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","url","href","Right","QuickVisitItem","onAllowDrag","onFavorite","suffixRef","handleRemove","useCallback","handleMouseDown","useEffect","handleClick","addEventListener","removeEventListener","suffixGroups","content","hoist","onMouseDown","StarIcon","_ref2","iconRef","_extends","RecommendItem","walkMenuItem","type","Array","isArray","walkMenuItems","push","itemColumnWidth","GroupView","groups","groupCategoryMap","categoryOrder","groupMenus","Map","Set","forEach","_item$groupFrom","groupFrom","add","value","get","set","DefaultGroup","CustomGroup","groupRef","columnCount","setColumnCount","resizeObserver","ResizeObserver","entries","entry","contentRect","Math","floor","observe","disconnect","columnWidth","display","group","GroupItem","WrappedInput","onValueChange","SiteMapItem","menuGroup","favoriteList","setFavoriteList","flatItems","flatMenuItems","q","setQ","setFilters","dragElement","setDragElement","setOverElement","setAllowDrag","setDirection","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","Boolean","linkStyle","renderSpanCom","subMenu","___CSS_LOADER_EXPORT___","module","toString","_checkPrivateRedeclaration","obj","privateCollection","has","TypeError","_classExtractFieldDescriptor","receiver","privateMap","action","_classPrivateFieldGet","descriptor","call","classExtractFieldDescriptor","_classPrivateFieldInitSpec","_classPrivateFieldSet","writable","initMenuItemAndMatchCurrentPathKeys","menuItems","pathname","search","parentCursor","selectedKeys","openedKeys","cursor","tmp","defaultExpanded","parsePath","escapedPath","replace","match","matchPath","path","exact","activeIncludes","include","_parseInclude","parseInclude","hasSearch","getMatchOfSearch","activeExcludes","_include","activeMatchSearch","matchMenuItem","String","currentSearch","toSearch","URLSearchParams"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"chunks/8093.1e4cc530.js","mappings":"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","sources":["webpack:///./src/nav-menu/ThreeLevelMenuPopoverContent.tsx","webpack:///./src/nav-menu/i18n.ts","webpack:///./src/nav-menu/site-map/constants.ts","webpack:///./src/nav-menu/site-map/CollectService.ts","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/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:///../../node_modules/@babel/runtime/helpers/esm/checkPrivateRedeclaration.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/classExtractFieldDescriptor.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/classApplyDescriptorGet.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/classPrivateFieldInitSpec.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js","webpack:///../../node_modules/@babel/runtime/helpers/esm/classApplyDescriptorSet.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 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}\nexport const DragContext = React.createContext<ContextOfDragProps>(\n {} as ContextOfDragProps\n);\n","import { JsonStorage } from \"@next-shared/general/JsonStorage\";\nimport type { SidebarMenuSimpleItem } from \"@next-shared/general/types\";\nimport { DRAG_DIRECTION } from \"./constants.js\";\n\nexport class CollectService {\n private storage: JsonStorage;\n private maxCollectLength: number;\n readonly storageKey = \"site-map-collect\";\n\n constructor(maxCollectLength?: number) {\n this.storage = new JsonStorage(localStorage);\n this.maxCollectLength = maxCollectLength ?? 10;\n }\n\n private getCategoryId(id: string): string {\n return `${this.storageKey}-${id}`;\n }\n\n public getFavoritesById(id: string): SidebarMenuSimpleItem[] {\n return this.storage.getItem(this.getCategoryId(id)) || [];\n }\n\n public setItemAsFavorite(id: string, item: SidebarMenuSimpleItem): void {\n const key = this.getCategoryId(id);\n const list = this.getFavoritesById(id);\n\n if (list.length >= this.maxCollectLength) {\n list.pop();\n }\n\n list.unshift(item);\n this.storage.setItem(key, list);\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 key = this.getCategoryId(id);\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.storage.setItem(key, 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 this.storage.setItem(this.getCategoryId(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 React, {\n useMemo,\n useCallback,\n forwardRef,\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\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 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 onClick={handleRemove}\n >\n <WrappedIcon lib=\"antd\" icon=\"close\" />\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 setColumnCount(Math.floor(width / itemColumnWidth));\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, 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}\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 } = props;\n const groupId = menuGroup.groupId as string;\n\n const [favoriteList, setFavoriteList] = useState(\n collectService.getFavoritesById(groupId)\n );\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\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 return (\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","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\";\n}\n\nexport const renderLinkCom = (\n item: SidebarMenuSimpleItem,\n linkStyle?: React.CSSProperties\n): React.ReactElement => {\n return (\n <WrappedLinkItem\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, `:host{display:inline-block;background:none;--three-level-menu-search-input-background:linear-gradient(90deg,#e8eef6 0%,rgba(233,234,243,0) 100%);--three-level-menu-hover-color:#6bb3ff;--three-level-menu-title-color:#0b5ad9;--three-level-menu-active-color:#1a7aff;--three-level-menu-search-tag-color:rgb(89,89,89);--three-level-menu-search-tag-background:rgb(245,245,245)}:host::part(menu-item),\neo-link{display:block;padding:2px 0px}:host-context(html[data-theme=\"dark-v2\"]),\n:host-context([data-override-theme=\"dark-v2\"]){--three-level-menu-search-input-background:linear-gradient(124deg,rgba(255,255,255,0.36) 0%,rgba(255,255,255,0) 100%);--three-level-menu-hover-color:rgba(54,95,175,0.85);--three-level-menu-title-color:#6597e8;--three-level-menu-active-color:#3f75dd;--three-level-menu-search-tag-color:rgb(140,140,140);--three-level-menu-search-tag-background:rgb(107,107,107)}.nav-menu-wrapper{display:flex}.nav-menu-wrapper > eo-menu-item{padding:2px 14px}.nav-menu-wrapper > eo-popover{padding:2px 6px}.popover .sub-menu-item-label{padding:2px 0px;color:var(--color-normal-text)}.popover.subprime{display:inline-block;width:100%}.sub-menu-wrapper{min-width:160px;max-height:calc(100vh - 100px);background-color:var(--antd-dropdown-menu-bg);padding:4px 0;border-radius:6px;box-shadow:0px 4px 12px 0px rgba(17,37,64,0.08);overflow-x:hidden;overflow-y:auto}.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:6px 24px;box-sizing:border-box;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:5px 10px;color:var(--color-normal-text)}.menu-item-label:hover{background-color:var(--v8-top-menu-item-hover)}.group-label{padding-left:16px;font-size:12px;color:var(--palette-gray-7)}eo-menu-item[active] .menu-item-label{background:var(--v8-top-menu-item-selected-bg);color:var(--color-brand)!important;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(--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(--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(--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(--three-level-menu-hover-color)}.three-level-menu-popover .sub-menu-wrapper{padding-top:0px}.three-level-menu-search-container{background:var(--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(--three-level-menu-search-tag-background);border-radius:2px;font-size:7px;line-height:11px;display:inline-block;height:11px;padding:4px;color:var(--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 120px 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}`, \"\"]);\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;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;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:1px;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}.site-map .visit-access .title, .site-map .search-panel .title{display:inline-block;padding:2px 16px;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:1px;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}:host-context(html[data-theme=\"dark-v2\"]) .site-map .search-input::part(affix-wrapper), :host-context([data-override-theme=\"dark-v2\"]) .site-map .search-input::part(affix-wrapper){background:var(--antd-dropdown-menu-bg)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\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}","export default function _classExtractFieldDescriptor(receiver, privateMap, action) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to \" + action + \" private field on non-instance\");\n }\n return privateMap.get(receiver);\n}","import classApplyDescriptorGet from \"./classApplyDescriptorGet.js\";\nimport classExtractFieldDescriptor from \"./classExtractFieldDescriptor.js\";\nexport default function _classPrivateFieldGet(receiver, privateMap) {\n var descriptor = classExtractFieldDescriptor(receiver, privateMap, \"get\");\n return classApplyDescriptorGet(receiver, descriptor);\n}","export default function _classApplyDescriptorGet(receiver, descriptor) {\n if (descriptor.get) {\n return descriptor.get.call(receiver);\n }\n return descriptor.value;\n}","import checkPrivateRedeclaration from \"./checkPrivateRedeclaration.js\";\nexport default function _classPrivateFieldInitSpec(obj, privateMap, value) {\n checkPrivateRedeclaration(obj, privateMap);\n privateMap.set(obj, value);\n}","import classApplyDescriptorSet from \"./classApplyDescriptorSet.js\";\nimport classExtractFieldDescriptor from \"./classExtractFieldDescriptor.js\";\nexport default function _classPrivateFieldSet(receiver, privateMap, value) {\n var descriptor = classExtractFieldDescriptor(receiver, privateMap, \"set\");\n classApplyDescriptorSet(receiver, descriptor, value);\n return value;\n}","export default function _classApplyDescriptorSet(receiver, descriptor, value) {\n if (descriptor.set) {\n descriptor.set.call(receiver, value);\n } else {\n if (!descriptor.writable) {\n throw new TypeError(\"attempted to set read only private field\");\n }\n descriptor.value = value;\n }\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} {\n const selectedKeys: string[] = [];\n const openedKeys: 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 } else {\n if (matchMenuItem(item, pathname, search)) {\n selectedKeys.push(String(item.key));\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 };\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 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 && 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 if (match && (item as any).activeMatchSearch) {\n match = getMatchOfSearch(search, to.search);\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","DRAG_DIRECTION","DragContext","collectService","constructor","maxCollectLength","_defineProperty","this","getCategoryId","id","storageKey","getFavoritesById","setItemAsFavorite","unshift","equalItem","prevItem","to","removeItemFromFavorite","findIndex","row","splice","isCollected","some","toggleFavorite","checkMaxCapacity","moveFavoriteTo","option","from","direction","fromIndex","toIndex","Left","groupId","WrappedLink","WrappedTooltip","PlaceholderDropComp","_ref","data","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","url","href","Right","QuickVisitItem","onAllowDrag","onFavorite","suffixRef","handleRemove","useCallback","handleMouseDown","useEffect","handleClick","addEventListener","removeEventListener","suffixGroups","content","hoist","onMouseDown","StarIcon","_ref2","iconRef","_extends","RecommendItem","walkMenuItem","type","Array","isArray","walkMenuItems","push","itemColumnWidth","GroupView","groups","groupCategoryMap","categoryOrder","groupMenus","Map","Set","forEach","_item$groupFrom","groupFrom","add","value","get","set","DefaultGroup","CustomGroup","groupRef","columnCount","setColumnCount","resizeObserver","ResizeObserver","entries","entry","contentRect","Math","floor","observe","disconnect","columnWidth","display","group","GroupItem","WrappedInput","onValueChange","SiteMapItem","menuGroup","favoriteList","setFavoriteList","flatItems","flatMenuItems","q","setQ","setFilters","dragElement","setDragElement","setOverElement","setAllowDrag","setDirection","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","Boolean","linkStyle","renderSpanCom","subMenu","___CSS_LOADER_EXPORT___","module","toString","_checkPrivateRedeclaration","obj","privateCollection","has","TypeError","_classExtractFieldDescriptor","receiver","privateMap","action","_classPrivateFieldGet","descriptor","call","classExtractFieldDescriptor","_classPrivateFieldInitSpec","_classPrivateFieldSet","writable","initMenuItemAndMatchCurrentPathKeys","menuItems","pathname","search","parentCursor","selectedKeys","openedKeys","cursor","tmp","defaultExpanded","parsePath","escapedPath","replace","match","matchPath","path","exact","activeIncludes","include","_parseInclude","parseInclude","hasSearch","getMatchOfSearch","activeExcludes","_include","activeMatchSearch","matchMenuItem","String","currentSearch","toSearch","URLSearchParams"],"sourceRoot":""}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/*! For license information please see 9102.
|
|
2
|
-
"use strict";(self.webpackChunk_next_bricks_nav=self.webpackChunk_next_bricks_nav||[]).push([[9102],{5863:(e,t,n)=>{function r(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}n.d(t,{Z:()=>r})},175:(e,t,n)=>{function r(e,t,n){if(!t.has(e))throw new TypeError("attempted to "+n+" private field on non-instance");return t.get(e)}n.d(t,{Z:()=>r})},687:(e,t,n)=>{n.d(t,{Z:()=>i});var r=n(175);function i(e,t){return function(e,t){return t.get?t.get.call(e):t.value}(e,(0,r.Z)(e,t,"get"))}},3395:(e,t,n)=>{n.d(t,{Z:()=>i});var r=n(5863);function i(e,t,n){(0,r.Z)(e,t),t.set(e,n)}},381:(e,t,n)=>{n.d(t,{Z:()=>i});var r=n(175);function i(e,t,n){return function(e,t,n){if(t.set)t.set.call(e,n);else{if(!t.writable)throw new TypeError("attempted to set read only private field");t.value=n}}(e,(0,r.Z)(e,t,"set"),n),n}},6171:(e,t,n)=>{function r(e,t,n){if(!t.has(e))throw new TypeError("attempted to get private field on non-instance");return n}n.d(t,{Z:()=>r})},5866:(e,t,n)=>{n.d(t,{Z:()=>i});var r=n(5863);function i(e,t){(0,r.Z)(e,t),t.add(e)}},9740:(e,t,n)=>{n.d(t,{Z:()=>i});var r=n(1461);function i(e,t){if(null==e)return{};var n,i,a=(0,r.Z)(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i<o.length;i++)n=o[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}},9102:(e,t,n)=>{n.r(t),n.d(t,{analytics:()=>u,auth:()=>yt,checkInstalledApps:()=>i,checkPermissions:()=>ht,flowApi:()=>a,menu:()=>o,messageDispatcher:()=>mt});var r={};n.r(r),n.d(r,{authenticate:()=>y,getAuth:()=>g,isLoggedIn:()=>Z,logout:()=>w});var i={};n.r(i),n.d(i,{getCheckedApp:()=>ce,preCheckInstalledApps:()=>ae,waitForCheckingApps:()=>oe});var a={};n.r(a),n.d(a,{FLOW_API_PROVIDER:()=>pe,clearCollectWidgetContract:()=>Ie,collectContract:()=>Se,collectWidgetContract:()=>be,getArgsOfFlowApi:()=>ke,isFlowApiProvider:()=>Oe,registerFlowApiProvider:()=>he});var o={};n.r(o),n.d(o,{fetchMenuById:()=>tt,getMenuById:()=>et});var s={};n.r(s),n.d(s,{onRequest:()=>lt,onResponse:()=>pt,onResponseError:()=>dt});var c={};n.r(c),n.d(c,{create:()=>vt});var u={};n.r(u),n.d(u,{http:()=>s,initialize:()=>ct,pageView:()=>c});var l=n(4795),p=n(5178),d=n(6750),f=n(3352),v=function(){var e=(0,l.Z)((function*(e,t){return(yield f.http.post("api/gateway/micro_app.permission.ValidatePermissions/api/micro_app/v1/permission/validate",e,t)).data}));return function(t,n){return e.apply(this,arguments)}}(),h=n(3028),m={};function y(e){Object.assign(m,{org:e.org,username:e.username,userInstanceId:e.userInstanceId,loginFrom:e.loginFrom,accessRule:e.accessRule,isAdmin:e.isAdmin,csrfToken:e.csrfToken,license:e.license,userShowValue:e.userShowValue})}function g(){return(0,h.Z)({},m)}function w(){for(var e of Object.keys(m))m[e]=void 0;S.length=0,b.clear()}function Z(){return void 0!==m.username}var S=[],b=new Map;function I(){return(I=(0,l.Z)((function*(e,t){if(Z()&&!g().isAdmin&&Array.isArray(e.permissionsPreCheck))return O(yield t(e.permissionsPreCheck))}))).apply(this,arguments)}function A(e){if(Z()&&!g().isAdmin)return O((0,d.scanPermissionActionsInAny)(e))}function O(e){return k.apply(this,arguments)}function k(){return(k=(0,l.Z)((function*(e){var t=(0,p.difference)(e,[...S]);if(0!==t.length){S.push(...t);try{var n=yield v({actions:t});for(var r of n.actions)b.set(r.action,r.authorizationStatus),"undefined"===r.authorizationStatus&&console.error('Undefined permission action: "'.concat(r.action,'"'))}catch(e){console.error("Pre-check permissions failed",e)}}}))).apply(this,arguments)}var M=n(5866),E=n(3395),P=n(6171),_=n(381),C=n(687),N=n(4266),T=1e3,j=6,R=new WeakMap,D=new WeakMap,W=new WeakMap,L=new WeakMap,U=new WeakMap,B=new WeakMap,x=new WeakMap,F=new WeakSet,q=new WeakSet;class z{constructor(e){(0,M.Z)(this,q),(0,M.Z)(this,F),(0,E.Z)(this,R,{writable:!0,value:void 0}),(0,E.Z)(this,D,{writable:!0,value:void 0}),(0,E.Z)(this,W,{writable:!0,value:[]}),(0,E.Z)(this,L,{writable:!0,value:new Set}),(0,E.Z)(this,U,{writable:!0,value:new Set}),(0,E.Z)(this,B,{writable:!0,value:0}),(0,E.Z)(this,x,{writable:!0,value:!1}),(0,_.Z)(this,R,e)}send(e){(0,C.Z)(this,D)||(0,_.Z)(this,D,(0,P.Z)(this,F,G).call(this));var t=JSON.stringify(e);(0,C.Z)(this,D).readyState===WebSocket.OPEN?(0,C.Z)(this,D).send(t):(0,C.Z)(this,W).push(t)}onMessage(e){(0,C.Z)(this,L).add(e)}onClose(e){(0,C.Z)(this,U).add(e)}reset(){(0,C.Z)(this,W).length=0,(0,C.Z)(this,L).clear(),(0,C.Z)(this,U).clear()}close(){var e;(0,_.Z)(this,x,!0),(null===(e=(0,C.Z)(this,D))||void 0===e?void 0:e.readyState)===WebSocket.OPEN&&(0,C.Z)(this,D).close()}}function G(){console.log("WebSocket connecting ...");var e=new WebSocket((0,C.Z)(this,R));return e.addEventListener("open",(t=>{for(var n of(console.log("WebSocket open:",t),(0,_.Z)(this,B,0),(0,C.Z)(this,W)))e.send(n);(0,C.Z)(this,W).length=0})),e.addEventListener("close",(e=>{if(!(0,C.Z)(this,x)){for(var t of(console.log("WebSocket close:",e),(0,C.Z)(this,U)))t();1e3!==e.code&&(0,P.Z)(this,q,J).call(this)}})),e.addEventListener("error",(e=>{console.error("WebSocket error:",e)})),e.addEventListener("message",(e=>{var t=JSON.parse(e.data);for(var n of(0,C.Z)(this,L))n(t)})),e}function J(){if((0,C.Z)(this,B)>=j)console.error("WebSocket connect retry limit exceeded");else{var e=Math.pow(2,(0,C.Z)(this,B))*T;console.log("WebSocket will reconnect after %d seconds",e/1e3),setTimeout((()=>{var e;(0,_.Z)(this,B,(e=(0,C.Z)(this,B),++e)),(0,_.Z)(this,D,(0,P.Z)(this,F,G).call(this))}),e)}}var H=new WeakMap,V=new WeakMap,Y=new WeakMap,$=new WeakMap,K=new WeakSet;function Q(){if(!(0,C.Z)(this,H)){var e="https:"===location.protocol?"wss:":"ws:",t="".concat(e,"//").concat(window.location.host).concat((0,N.getBasePath)(),"api/websocket_service/v1/ws");(0,_.Z)(this,H,new z(t))}return(0,C.Z)(this,H)}function X(e,t,n,r){var i=(0,C.Z)(this,V)[e].get(r);if(i)return i;var a={event:"sub"===e?"TOPIC.SUB":"TOPIC.UNSUB",payload:n},o=new Promise(((t,r)=>{var i=ee(n);(0,C.Z)(this,$).onMessage((n=>{var a=n.event===("sub"===e?"TOPIC.SUB_SUCCESS":"TOPIC.UNSUB_SUCCESS"),o=n.event===("sub"===e?"TOPIC.SUB_FAILED":"TOPIC.UNSUB_FAILED");(a||o)&&i===ee(n.payload)&&(a?t:r)(n)})),(0,C.Z)(this,$).send(a)}));return"sub"===e&&(0,C.Z)(this,Y).set(t,r),(0,C.Z)(this,V)[e].set(r,o),o}function ee(e){var{system:t,topic:n}=e;return JSON.stringify({system:t,topic:n})}var te=n(9751),ne=function(){var e=(0,l.Z)((function*(e,t){return(yield te.http.post("api/gateway/micro_app_standalone.runtime.SearchMicroAppStandalone/api/v1/micro_app_standalone/search",e,t)).data}));return function(t,n){return e.apply(this,arguments)}}(),re=new Map,ie=new Map;function ae(e,t){if(window.STANDALONE_MICRO_APPS&&!window.NO_AUTH_GUARD){var n=function(e){var t,n={usedArgs:new Set},{customTemplates:r,menus:i}=null!==(t=e.meta)&&void 0!==t?t:{};return(0,d.traverseStoryboardExpressions)([e.routes,r,i],((e,t)=>{(0,d.collectInstalledAppsHasUsage)(n,e,t)}),"INSTALLED_APPS"),[...n.usedArgs]}(e),r=[];for(var i of n)re.has(i)||t(i)||r.push(i);if(0===r.length)return;var a=ne({query:{appId:{$in:r}},fields:["appId","currentVersion","installStatus"]}).catch((e=>{console.error("Get off site standalone micro-apps failed",e)})),o=function(e){re.set(e,a.then((t=>{var n,r=null==t||null===(n=t.list)||void 0===n?void 0:n.find((t=>t.appId===e)),i=r?(0,h.Z)((0,h.Z)({},r),{},{id:e}):void 0;return ie.set(e,i),i})))};for(var s of r)o(s)}}function oe(e){return se.apply(this,arguments)}function se(){return(se=(0,l.Z)((function*(e){yield Promise.all(e.map((e=>re.get(e))))}))).apply(this,arguments)}function ce(e){if(window.STANDALONE_MICRO_APPS)return ie.get(e)}var ue=n(2307),le=n(6777),pe="core.provider-flow-api";function de(e,t){return e.some((e=>e.source===t))}function fe(e){return ve.apply(this,arguments)}function ve(){return ve=(0,l.Z)((function*(e){for(var t,{url:n,originalUri:r,method:i="GET",responseWrapper:a=!0,ext_fields:o=[],request:s,isFileType:c}=e,u=["get","delete","head"].includes(i.toLowerCase()),l=c?{responseType:"blob"}:{},d=arguments.length,f=new Array(d>1?d-1:0),v=1;v<d;v++)f[v-1]=arguments[v];if(u){var m,y,g,w,Z,S;r&&"object"===(null==s?void 0:s.type)&&(null!==(m=null===(y=r.match(/:([^/]+)/g))||void 0===y?void 0:y.length)&&void 0!==m?m:0)===(null!==(g=null===(w=s.fields)||void 0===w?void 0:w.length)&&void 0!==g?g:0)?[S]=f:[Z,S]=f,t=yield le.http.simpleRequest(i,n,(0,h.Z)((0,h.Z)({params:Z},l),S))}else{var b=function(e){if(!e||"object"!==e.type)return!1;var t=e=>!(0,p.isEmpty)(e)&&e.some((e=>["file","file[]"].includes(e.type)||t(e.fields)));return t(e.fields)}(s),I=function(e){for(var t=de(e,"query"),n=de(e,"body"),r=arguments.length,i=new Array(r>1?r-1:0),a=1;a<r;a++)i[a-1]=arguments[a];if(t){if(n){var[o,s,c]=i;return{data:o,options:(0,h.Z)({params:s},c)}}var[u,l]=i;return{data:{},options:(0,h.Z)({params:u},l)}}var[p,d]=i;return{data:p,options:d}}(o,...f);t=yield le.http.requestWithBody(i,n,b?function(e){if(e instanceof FormData)return e;var t=new FormData,n=function(e){Array.isArray(i)?i.forEach((n=>{t.append(e,n)})):!(0,p.isObject)(i)||i instanceof Blob||i instanceof Date?t.append(e,i):Object.entries(i).forEach((n=>{var[r,i]=n;t.append("".concat(e,"[").concat(r,"]"),i)}))};for(var[r,i]of Object.entries(e))n(r);return t}(I.data):I.data,(0,h.Z)((0,h.Z)({},l),I.options))}return!c&&a?t.data:t})),ve.apply(this,arguments)}function he(){customElements.define(pe,(0,ue.createProviderClass)(fe))}var me=n(9169),ye=function(){var e=(0,l.Z)((function*(e,t){return(yield f.http.post("api/contract/single_search",e,t)).data}));return function(t,n){return e.apply(this,arguments)}}(),ge=new Map,we=new Map,Ze=(e,t)=>{null==e||e.forEach((e=>{t.set("".concat(e.namespaceId,".").concat(e.name),e)}))};function Se(e){Ze(e,ge)}function be(e){Ze(e,we)}function Ie(){we.clear()}var Ae=new Map;function Oe(e){return e.includes("@")}function ke(e,t,n){return Me.apply(this,arguments)}function Me(){return Me=(0,l.Z)((function*(e,t,n){if(!e.includes(":"))throw new Error("You're using legacy Custom API \"".concat(e,'" which is dropped in v3, please use Flow API instead'));var r=yield function(e){var t=Ae.get(e);return t||(t=function(e){return Ee.apply(this,arguments)}(e),Ae.set(e,t)),t}(e);if(!r)throw new Error('Flow API not found: "'.concat(e,'"'));var i=function(e,t){var n,r,i="string"==typeof t.contract?me.safeLoad(t.contract,{schema:me.JSON_SCHEMA,json:!0}):t.contract,{uri:a,method:o="GET",ext_fields:s}=null!==(n=null==i?void 0:i.endpoint)&&void 0!==n?n:{},c=!(null==i||!i.response)&&!1!==i.response.wrapper;if(!a)throw new Error('Missing endpoint.uri in contract of provider "'.concat(e,'"'));return{uri:a,method:"list"===o.toLowerCase()?"get":o,ext_fields:s,name:t.name,namespace:t.namespace,serviceName:t.serviceName,version:t.version,isFileType:"file"===(null==i||null===(r=i.response)||void 0===r?void 0:r.type),responseWrapper:c,request:null==i?void 0:i.request}}(e,r);return function(e,t,n){var r,{uri:i,method:a,ext_fields:o,name:s,namespace:c,serviceName:u,responseWrapper:l,version:p,isFileType:d,request:f}=e,v=d&&"saveAs"===n;v&&(r=t.shift());var{url:h,args:m}=function(e,t,n,r,i,a){var o=a?i?"api/gateway/".concat(i):"api/gateway/".concat(r,".").concat(n,"@").concat(a):"api/gateway/api_service.".concat(r,".").concat(n),s=t.slice();return{url:o+e.replace(/:([^/]+)/g,(()=>s.shift())),args:s}}(i,t,s,c,u,p);return[...v?[r]:[],{url:h,originalUri:i,method:a,ext_fields:o,responseWrapper:l,request:f,isFileType:d},...m]}(i,t,n)})),Me.apply(this,arguments)}function Ee(){return(Ee=(0,l.Z)((function*(e){var[t,n]=e.split("@"),[r,i]=n.split(":"),a=function(e){return ge.get(e)||we.get(e)}("".concat(t,".").concat(r));if(a)return{name:a.name,namespace:a.namespaceId,serviceName:a.serviceName,version:a.version,contract:{endpoint:a.endpoint,response:a.response,request:a.request}};var o,{contractData:s}=yield ye({contractName:"".concat(t,".").concat(r),version:i});return s?{name:s.name,namespace:null===(o=s.namespace)||void 0===o||null===(o=o[0])||void 0===o?void 0:o.name,serviceName:s.serviceName,version:s.version,contract:{endpoint:s.endpoint,response:s.response,request:s.request}}:void 0}))).apply(this,arguments)}var Pe=n(9740),_e=function(){var e=(0,l.Z)((function*(e,t,n){return(yield te.http.post("api/gateway/cmdb.instance.PostSearch/object/".concat(e,"/instance/_search"),t,n)).data}));return function(t,n,r){return e.apply(this,arguments)}}(),Ce=function(){var e=(0,l.Z)((function*(e,t,n){return(yield f.http.get("api/gateway/micro_app.installed_micro_app.GetMenusInfo/api/v1/micro-app/menus/".concat(e),(0,h.Z)((0,h.Z)({},n),{},{params:t}))).data}));return function(t,n,r){return e.apply(this,arguments)}}(),Ne=n(420),Te=Symbol("appId"),je=Symbol("menuI18nNamespace"),Re=Symbol("overrideApp");function De(){return(De=(0,l.Z)((function*(e,t,n,r){if(e.dynamicItems&&e.itemsResolve){var i=e.app[0].appId,a=t;if(i!==t.app.id){var o,s=window.STANDALONE_MICRO_APPS?e.overrideApp:null===(o=r.getStoryboardByAppId(i))||void 0===o?void 0:o.app;a=(0,h.Z)((0,h.Z)({},t),{},{overrideApp:s,appendI18nNamespace:n.get(e)})}var c=yield r.resolveData((0,h.Z)({transform:"items"},e.itemsResolve),a);e.items=c.items}}))).apply(this,arguments)}function We(){return We=(0,l.Z)((function*(e,t,n){var r=e.find((e=>"inject"!==e.type));if(r){var i=[],a=new Map,o=new WeakMap,s=function*(){if(c.i18n){var e="menu/".concat(c.menuId,"~").concat(c.app[0].appId,"+").concat(c.instanceId);Object.entries(c.i18n).forEach((t=>{var[n,r]=t;Ne.i18n.addResourceBundle(n,e,r)})),o.set(c,e)}};for(var c of e)yield*s();for(var u of(yield Promise.all(e.map((e=>function(e,t,n,r){return De.apply(this,arguments)}(e,t,o,n)))),e)){var l;if(null!==(l=u.items)&&void 0!==l&&l.length)if("inject"===u.type&&u.injectMenuGroupId){var p=a.get(u.injectMenuGroupId);p||(p=[],a.set(u.injectMenuGroupId,p)),p.push(u)}else i.push(u)}return(0,h.Z)((0,h.Z)({},r),{},{items:i.flatMap((e=>Le(e.items,e,a,o))),[je]:o.get(r),[Re]:r.overrideApp})}})),We.apply(this,arguments)}function Le(e,t,n,r){return null==e?void 0:e.map((e=>{var i,a=e.groupId&&n.get(e.groupId);return a&&n.delete(e.groupId),(0,h.Z)((0,h.Z)({},e),{},{children:(null!==(i=Le(e.children,t,n,r))&&void 0!==i?i:[]).concat(a?a.flatMap((e=>Le(e.items,e,n,r))):[]),[Te]:t.app[0].appId,[je]:r.get(t),[Re]:t.overrideApp})}))}function Ue(e){e.items=Be(e.items)}function Be(e){return function(e){return(0,p.sortBy)(e,(e=>{var t;return null!==(t=e.sort)&&void 0!==t?t:-1/0}))}(e).map((e=>(0,h.Z)((0,h.Z)({},e),{},{children:Be(e.children)})))}var xe=n(4415),Fe=n(5506),qe=["children"];function ze(e,t,n,r){if("titleDataSource"in e&&(0,ue.isObject)(e.titleDataSource)&&Object.entries(e.titleDataSource).every((e=>{var[,t]=e;return null===t||""===t}))&&delete e.titleDataSource,"if"in e&&null===e.if&&delete e.if,"to"in e&&e.to&&!(0,Fe.isEvaluable)(e.to)){var i=xe.pipes.yaml(e.to);(0,ue.isObject)(i)&&["pathname","search","hash"].some((e=>(0,ue.hasOwnProperty)(i,e)))&&(e.to=i)}var a=n;if(t!==n.app.id){var o,s=window.STANDALONE_MICRO_APPS?e[Re]:null===(o=r.getStoryboardByAppId(t))||void 0===o?void 0:o.app;a=(0,h.Z)((0,h.Z)({},n),{},{overrideApp:s,appendI18nNamespace:e[je]})}return r.asyncComputeRealValue(e,a,{ignoreSymbols:!0})}function Ge(e,t,n){return Promise.all(e.map(function(){var e=(0,l.Z)((function*(e){var{children:r}=e,i=(0,Pe.Z)(e,qe),[a,o]=yield Promise.all([ze(i,i[Te],t,n),r&&(yield Ge(r,t,n))]);return(0,h.Z)((0,h.Z)({},a),{},{children:o})}));return function(t){return e.apply(this,arguments)}}()))}var Je=function(){var e=(0,l.Z)((function*(e,t,n,r){return(yield te.http.get("api/gateway/cmdb.instance.GetDetail/object/".concat(e,"/instance/").concat(t),(0,h.Z)((0,h.Z)({},r),{},{params:n}))).data}));return function(t,n,r,i){return e.apply(this,arguments)}}(),He=new Map;function Ve(e){return Ye.apply(this,arguments)}function Ye(){return(Ye=(0,l.Z)((function*(e){if(e.title||(0,p.isEmpty)(e.titleDataSource))return e.title;var t=JSON.stringify(e.titleDataSource),n=He.get(t);if(void 0!==n)return n;var r,{objectId:i,instanceId:a,attributeId:o}=e.titleDataSource,s=null!=o?o:"name",c=yield Je(i,a,{fields:s});if("#showKey"===o&&Array.isArray(c[s])){var[u,...l]=c[s];r=l.length>0?"".concat(u,"(").concat(l.join(","),")"):String(u)}else r=String(c[s]);return He.set(t,r),r}))).apply(this,arguments)}var $e=["items","app"],Ke=new Map,Qe=new Map;function Xe(e){return null==e?void 0:e.filter(N.checkIfOfComputed).map((e=>{var t=Xe(e.children);return"group"===e.type?{type:"group",title:e.text,childLayout:e.childLayout,items:t,groupId:e.groupId,groupFrom:e.groupFrom}:null!=t&&t.length?{type:"subMenu",childLayout:e.childLayout,title:e.text,icon:e.icon,items:t,defaultExpanded:e.defaultExpanded}:(0,p.omit)(e,["type","items","children"])}))}function et(e){return Qe.get(e)}function tt(e,t,n){var r=Ke.get(e);return r||(r=function(e,t,n){return nt.apply(this,arguments)}(e,t,n)),r}function nt(){return nt=(0,l.Z)((function*(e,t,n){var r=window.STANDALONE_MICRO_APPS?function(e,t,n){var r,i,a,o,s=n.getStoryboardByAppId(t);return(null!==(r=null!==(i=null===(a=s.meta)||void 0===a?void 0:a.injectMenus)&&void 0!==i?i:null===(o=s.meta)||void 0===o?void 0:o.menus)&&void 0!==r?r:[]).filter((t=>t.menuId===e)).map((e=>{var n;return(0,h.Z)((0,h.Z)({},e),null!==(n=e.app)&&void 0!==n&&null!==(n=n[0])&&void 0!==n&&n.appId?{}:{app:[{appId:t}]})}))}(e,t.app.id,n):t.flags["three-level-menu-layout"]?(yield Ce(e,{menuObjectId:"EASYOPS_STORYBOARD_MENU"})).menus:(yield _e("EASYOPS_STORYBOARD_MENU",{page:1,page_size:200,fields:{menuId:!0,title:!0,icon:!0,link:!0,titleDataSource:!0,defaultCollapsed:!0,defaultCollapsedBreakpoint:!0,type:!0,injectMenuGroupId:!0,dynamicItems:!0,itemsResolve:!0,items:!0,i18n:!0,"items.children":!0,"app.appId":!0},query:{menuId:{$eq:e},app:{$size:{$gt:0}}}})).list,i=yield function(e,t,n){return We.apply(this,arguments)}(r,t,n);if(!i)throw new Error("Menu not found: ".concat(e));Ue(i);var{items:a,app:o}=i,s=(0,Pe.Z)(i,$e),c=(0,h.Z)((0,h.Z)({},t),{},{pendingPermissionsPreCheck:[...t.pendingPermissionsPreCheck,A([a,s])]});delete c.tplStateStoreId,delete c.forEachItem,delete c.forEachIndex;var u=o[0].appId,[l,d]=yield Promise.all([ze(s,u,c,n),Ge(a,c,n)]),f=(0,h.Z)((0,h.Z)({title:yield Ve(l)},(0,p.pick)(l,["icon","link","defaultCollapsed","defaultCollapsedBreakpoint"])),{},{menuItems:Xe(d)});Qe.set(e,f)})),nt.apply(this,arguments)}var rt=!1,it=null,at=!0,ot=[],st=[];function ct(e){rt||(rt=!0,window.addEventListener("beforeunload",(function(){if(0!==st.length){var t={model:"easyops.FRONTEND_STAT",columns:["_ver","st","et","lt","size","time","traceId","code","duration","page","uid","username","api","type","msg","status","pageId","route","apiCount","maxApiTimeCost","apiSizeCost","pageTitle"],data:st},n=new Blob([JSON.stringify(t)],{type:"application/json"});st.length=0,window.navigator.sendBeacon(e,n)}}),!1))}var ut=Symbol("HttpAnalytics");function lt(e){var t=Math.round(performance.now()),n=Date.now();return e[ut]={st:n,time:Math.round(n/1e3),perfStartTime:t},e}function pt(e,t){return ft(!1,e,t)}function dt(e,t){return ft(!0,e,t)}function ft(e,t,n){var r,i=Math.round(performance.now()),a=Date.now(),{[ut]:o,url:s}=n;if(o&&!(e&&t instanceof le.HttpAbortError)){var c,u,l;delete n[ut];var p,d,f,v,m,y,w,{st:Z,time:S,perfStartTime:b}=o,{userInstanceId:I,username:A}=g();if(e){var O=t instanceof le.HttpResponseError;(O||t instanceof le.HttpParseError)&&(({status:m,headers:y}=t.response),O&&(w=t.responseJson))}else({status:m,data:w,headers:y}=t);(0,ue.isObject)(w)&&({code:p,message:d}=w),y instanceof Headers&&(f=y.get("x-b3-traceid"),v=y.get("content-length")),r={st:Z,_ver:Z,uid:I,username:A,time:S,et:a,page:location.href,duration:i-b,api:s,type:"api",code:null!==(c=p)&&void 0!==c?c:-1,msg:null!==(u=d)&&void 0!==u?u:"",status:m,traceId:null!==(l=f)&&void 0!==l?l:"",size:v?Number(v):-1},it?st.push((0,h.Z)((0,h.Z)({},r),{},{type:"apiRequest"},it)):ot.push(r)}return e?Promise.reject(t):t}function vt(){var e=Math.round(performance.now()),t=Date.now();return ot.length=0,it=null,function(n){var{status:r,path:i,pageTitle:a}=n;if("ok"!==r)return st.push(...ot),void(ot.length=0);var o=Math.round(performance.now())-e,s=Date.now(),{username:c}=g();(function(e){var t,n,r=(t=URL.createObjectURL(new Blob([])),n=t.substring(t.lastIndexOf("/")+1),URL.revokeObjectURL(t),at&&(n="88-"+n,at=!1),n),{lt:i,route:a}=e;for(var o of(it={lt:i,route:a,pageId:r},st.push((0,h.Z)((0,h.Z)({},e),{},{pageId:r,apiCount:ot.length,maxApiTimeCost:Math.max(0,...ot.map((e=>e.duration))),size:ot.map((e=>e.size)).filter((e=>e>0)).reduce(((e,t)=>e+t),0)})),ot))st.push((0,h.Z)((0,h.Z)({},o),it));ot.length=0})({type:"page",page:location.href,_ver:t,time:Math.round(t/1e3),st:t,et:s,lt:o,pageTitle:a,username:c,route:i}),window.dispatchEvent(new CustomEvent("route.render",{detail:{renderTime:o}}))}}var ht=Object.freeze({checkPermissions:function(){if(!Z())return!1;if(g().isAdmin)return!0;for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];for(var r of t)switch(b.get(r)){case"unauthorized":case"undefined":return!1;case void 0:return console.error('Un-checked permission action: "'.concat(r,'", please make sure the permission to check is defined in permissionsPreCheck.')),!1}return!0},preCheckPermissions:function(e){if(Z()&&!g().isAdmin)return O((0,d.scanPermissionActionsInStoryboard)(e))},preCheckPermissionsForBrickOrRoute:function(e,t){return I.apply(this,arguments)}}),mt=new class{constructor(){(0,M.Z)(this,K),(0,E.Z)(this,$,{get:Q,set:void 0}),(0,E.Z)(this,H,{writable:!0,value:void 0}),(0,E.Z)(this,V,{writable:!0,value:{sub:new Map,unsub:new Map}}),(0,E.Z)(this,Y,{writable:!0,value:new Map})}subscribe(e,t){var n=JSON.stringify(t);return(0,P.Z)(this,K,X).call(this,"sub",e,t,n)}unsubscribe(e){var t=(0,C.Z)(this,Y).get(e);if(!t){var n='The message channel to unsubscribe "'.concat(e,'" is not found');return console.error(n),Promise.reject(new Error(n))}var r=JSON.parse(t),i=(0,P.Z)(this,K,X).call(this,"unsub",e,r,t);return(0,C.Z)(this,V).sub.delete(t),i.then((()=>{(0,C.Z)(this,Y).delete(e)})),i}onMessage(e,t){var n=(0,C.Z)(this,Y).get(e);n?(0,C.Z)(this,$).onMessage((e=>{"MESSAGE.PUSH"===e.event&&function(e,t){var n=JSON.parse(e);return n.system===t.system&&(n.topic===t.topic||"string"==typeof n.topic&&n.topic.includes("*")&&new RegExp("^".concat(n.topic.replace(/([^*]*)\*([^*]*)/g,((e,t,n)=>"".concat((0,p.escapeRegExp)(t),"[^/]*").concat((0,p.escapeRegExp)(n)))),"$")).test(t.topic))}(n,e.payload)&&t(e.payload.message)})):console.error('Message channel: "'.concat(e,'" not found'))}onClose(e){(0,C.Z)(this,$).onClose(e)}reset(){var e;(0,C.Z)(this,V).sub.clear(),(0,C.Z)(this,V).unsub.clear(),(0,C.Z)(this,Y).clear(),null===(e=(0,C.Z)(this,H))||void 0===e||e.reset()}},yt=function(){var e=(0,N.getV2RuntimeFromDll)();if(e)return Object.freeze((0,p.pick)(e,["authenticate","getAuth","isLoggedIn","logout"]))}()||r}}]);
|
|
3
|
-
//# sourceMappingURL=9102.
|
|
1
|
+
/*! For license information please see 9102.747f386a.js.LICENSE.txt */
|
|
2
|
+
"use strict";(self.webpackChunk_next_bricks_nav=self.webpackChunk_next_bricks_nav||[]).push([[9102],{5863:(e,t,n)=>{function r(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}n.d(t,{Z:()=>r})},175:(e,t,n)=>{function r(e,t,n){if(!t.has(e))throw new TypeError("attempted to "+n+" private field on non-instance");return t.get(e)}n.d(t,{Z:()=>r})},687:(e,t,n)=>{n.d(t,{Z:()=>i});var r=n(175);function i(e,t){return function(e,t){return t.get?t.get.call(e):t.value}(e,(0,r.Z)(e,t,"get"))}},3395:(e,t,n)=>{n.d(t,{Z:()=>i});var r=n(5863);function i(e,t,n){(0,r.Z)(e,t),t.set(e,n)}},381:(e,t,n)=>{n.d(t,{Z:()=>i});var r=n(175);function i(e,t,n){return function(e,t,n){if(t.set)t.set.call(e,n);else{if(!t.writable)throw new TypeError("attempted to set read only private field");t.value=n}}(e,(0,r.Z)(e,t,"set"),n),n}},6171:(e,t,n)=>{function r(e,t,n){if(!t.has(e))throw new TypeError("attempted to get private field on non-instance");return n}n.d(t,{Z:()=>r})},5866:(e,t,n)=>{n.d(t,{Z:()=>i});var r=n(5863);function i(e,t){(0,r.Z)(e,t),t.add(e)}},9740:(e,t,n)=>{n.d(t,{Z:()=>i});var r=n(1461);function i(e,t){if(null==e)return{};var n,i,a=(0,r.Z)(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(i=0;i<o.length;i++)n=o[i],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}},9102:(e,t,n)=>{n.r(t),n.d(t,{analytics:()=>u,auth:()=>yt,checkInstalledApps:()=>i,checkPermissions:()=>ht,flowApi:()=>a,menu:()=>o,messageDispatcher:()=>mt});var r={};n.r(r),n.d(r,{authenticate:()=>y,getAuth:()=>g,isLoggedIn:()=>Z,logout:()=>w});var i={};n.r(i),n.d(i,{getCheckedApp:()=>ce,preCheckInstalledApps:()=>ae,waitForCheckingApps:()=>oe});var a={};n.r(a),n.d(a,{FLOW_API_PROVIDER:()=>pe,clearCollectWidgetContract:()=>Ie,collectContract:()=>Se,collectWidgetContract:()=>be,getArgsOfFlowApi:()=>ke,isFlowApiProvider:()=>Oe,registerFlowApiProvider:()=>he});var o={};n.r(o),n.d(o,{fetchMenuById:()=>tt,getMenuById:()=>et});var s={};n.r(s),n.d(s,{onRequest:()=>lt,onResponse:()=>pt,onResponseError:()=>dt});var c={};n.r(c),n.d(c,{create:()=>vt});var u={};n.r(u),n.d(u,{http:()=>s,initialize:()=>ct,pageView:()=>c});var l=n(4795),p=n(5178),d=n(6750),f=n(3352),v=function(){var e=(0,l.Z)((function*(e,t){return(yield f.http.post("api/gateway/micro_app.permission.ValidatePermissions/api/micro_app/v1/permission/validate",e,t)).data}));return function(t,n){return e.apply(this,arguments)}}(),h=n(3028),m={};function y(e){Object.assign(m,{org:e.org,username:e.username,userInstanceId:e.userInstanceId,loginFrom:e.loginFrom,accessRule:e.accessRule,isAdmin:e.isAdmin,csrfToken:e.csrfToken,license:e.license,userShowValue:e.userShowValue})}function g(){return(0,h.Z)({},m)}function w(){for(var e of Object.keys(m))m[e]=void 0;S.length=0,b.clear()}function Z(){return void 0!==m.username}var S=[],b=new Map;function I(){return(I=(0,l.Z)((function*(e,t){if(Z()&&!g().isAdmin&&Array.isArray(e.permissionsPreCheck))return O(yield t(e.permissionsPreCheck))}))).apply(this,arguments)}function A(e){if(Z()&&!g().isAdmin)return O((0,d.scanPermissionActionsInAny)(e))}function O(e){return k.apply(this,arguments)}function k(){return(k=(0,l.Z)((function*(e){var t=(0,p.difference)(e,[...S]);if(0!==t.length){S.push(...t);try{var n=yield v({actions:t});for(var r of n.actions)b.set(r.action,r.authorizationStatus),"undefined"===r.authorizationStatus&&console.error('Undefined permission action: "'.concat(r.action,'"'))}catch(e){console.error("Pre-check permissions failed",e)}}}))).apply(this,arguments)}var M=n(5866),E=n(3395),P=n(6171),_=n(381),C=n(687),N=n(9043),T=1e3,j=6,R=new WeakMap,D=new WeakMap,W=new WeakMap,L=new WeakMap,U=new WeakMap,B=new WeakMap,x=new WeakMap,F=new WeakSet,q=new WeakSet;class z{constructor(e){(0,M.Z)(this,q),(0,M.Z)(this,F),(0,E.Z)(this,R,{writable:!0,value:void 0}),(0,E.Z)(this,D,{writable:!0,value:void 0}),(0,E.Z)(this,W,{writable:!0,value:[]}),(0,E.Z)(this,L,{writable:!0,value:new Set}),(0,E.Z)(this,U,{writable:!0,value:new Set}),(0,E.Z)(this,B,{writable:!0,value:0}),(0,E.Z)(this,x,{writable:!0,value:!1}),(0,_.Z)(this,R,e)}send(e){(0,C.Z)(this,D)||(0,_.Z)(this,D,(0,P.Z)(this,F,G).call(this));var t=JSON.stringify(e);(0,C.Z)(this,D).readyState===WebSocket.OPEN?(0,C.Z)(this,D).send(t):(0,C.Z)(this,W).push(t)}onMessage(e){(0,C.Z)(this,L).add(e)}onClose(e){(0,C.Z)(this,U).add(e)}reset(){(0,C.Z)(this,W).length=0,(0,C.Z)(this,L).clear(),(0,C.Z)(this,U).clear()}close(){var e;(0,_.Z)(this,x,!0),(null===(e=(0,C.Z)(this,D))||void 0===e?void 0:e.readyState)===WebSocket.OPEN&&(0,C.Z)(this,D).close()}}function G(){console.log("WebSocket connecting ...");var e=new WebSocket((0,C.Z)(this,R));return e.addEventListener("open",(t=>{for(var n of(console.log("WebSocket open:",t),(0,_.Z)(this,B,0),(0,C.Z)(this,W)))e.send(n);(0,C.Z)(this,W).length=0})),e.addEventListener("close",(e=>{if(!(0,C.Z)(this,x)){for(var t of(console.log("WebSocket close:",e),(0,C.Z)(this,U)))t();1e3!==e.code&&(0,P.Z)(this,q,J).call(this)}})),e.addEventListener("error",(e=>{console.error("WebSocket error:",e)})),e.addEventListener("message",(e=>{var t=JSON.parse(e.data);for(var n of(0,C.Z)(this,L))n(t)})),e}function J(){if((0,C.Z)(this,B)>=j)console.error("WebSocket connect retry limit exceeded");else{var e=Math.pow(2,(0,C.Z)(this,B))*T;console.log("WebSocket will reconnect after %d seconds",e/1e3),setTimeout((()=>{var e;(0,_.Z)(this,B,(e=(0,C.Z)(this,B),++e)),(0,_.Z)(this,D,(0,P.Z)(this,F,G).call(this))}),e)}}var H=new WeakMap,V=new WeakMap,Y=new WeakMap,$=new WeakMap,K=new WeakSet;function Q(){if(!(0,C.Z)(this,H)){var e="https:"===location.protocol?"wss:":"ws:",t="".concat(e,"//").concat(window.location.host).concat((0,N.getBasePath)(),"api/websocket_service/v1/ws");(0,_.Z)(this,H,new z(t))}return(0,C.Z)(this,H)}function X(e,t,n,r){var i=(0,C.Z)(this,V)[e].get(r);if(i)return i;var a={event:"sub"===e?"TOPIC.SUB":"TOPIC.UNSUB",payload:n},o=new Promise(((t,r)=>{var i=ee(n);(0,C.Z)(this,$).onMessage((n=>{var a=n.event===("sub"===e?"TOPIC.SUB_SUCCESS":"TOPIC.UNSUB_SUCCESS"),o=n.event===("sub"===e?"TOPIC.SUB_FAILED":"TOPIC.UNSUB_FAILED");(a||o)&&i===ee(n.payload)&&(a?t:r)(n)})),(0,C.Z)(this,$).send(a)}));return"sub"===e&&(0,C.Z)(this,Y).set(t,r),(0,C.Z)(this,V)[e].set(r,o),o}function ee(e){var{system:t,topic:n}=e;return JSON.stringify({system:t,topic:n})}var te=n(9751),ne=function(){var e=(0,l.Z)((function*(e,t){return(yield te.http.post("api/gateway/micro_app_standalone.runtime.SearchMicroAppStandalone/api/v1/micro_app_standalone/search",e,t)).data}));return function(t,n){return e.apply(this,arguments)}}(),re=new Map,ie=new Map;function ae(e,t){if(window.STANDALONE_MICRO_APPS&&!window.NO_AUTH_GUARD){var n=function(e){var t,n={usedArgs:new Set},{customTemplates:r,menus:i}=null!==(t=e.meta)&&void 0!==t?t:{};return(0,d.traverseStoryboardExpressions)([e.routes,r,i],((e,t)=>{(0,d.collectInstalledAppsHasUsage)(n,e,t)}),"INSTALLED_APPS"),[...n.usedArgs]}(e),r=[];for(var i of n)re.has(i)||t(i)||r.push(i);if(0===r.length)return;var a=ne({query:{appId:{$in:r}},fields:["appId","currentVersion","installStatus"]}).catch((e=>{console.error("Get off site standalone micro-apps failed",e)})),o=function(e){re.set(e,a.then((t=>{var n,r=null==t||null===(n=t.list)||void 0===n?void 0:n.find((t=>t.appId===e)),i=r?(0,h.Z)((0,h.Z)({},r),{},{id:e}):void 0;return ie.set(e,i),i})))};for(var s of r)o(s)}}function oe(e){return se.apply(this,arguments)}function se(){return(se=(0,l.Z)((function*(e){yield Promise.all(e.map((e=>re.get(e))))}))).apply(this,arguments)}function ce(e){if(window.STANDALONE_MICRO_APPS)return ie.get(e)}var ue=n(2307),le=n(6777),pe="core.provider-flow-api";function de(e,t){return e.some((e=>e.source===t))}function fe(e){return ve.apply(this,arguments)}function ve(){return ve=(0,l.Z)((function*(e){for(var t,{url:n,originalUri:r,method:i="GET",responseWrapper:a=!0,ext_fields:o=[],request:s,isFileType:c}=e,u=["get","delete","head"].includes(i.toLowerCase()),l=c?{responseType:"blob"}:{},d=arguments.length,f=new Array(d>1?d-1:0),v=1;v<d;v++)f[v-1]=arguments[v];if(u){var m,y,g,w,Z,S;r&&"object"===(null==s?void 0:s.type)&&(null!==(m=null===(y=r.match(/:([^/]+)/g))||void 0===y?void 0:y.length)&&void 0!==m?m:0)===(null!==(g=null===(w=s.fields)||void 0===w?void 0:w.length)&&void 0!==g?g:0)?[S]=f:[Z,S]=f,t=yield le.http.simpleRequest(i,n,(0,h.Z)((0,h.Z)({params:Z},l),S))}else{var b=function(e){if(!e||"object"!==e.type)return!1;var t=e=>!(0,p.isEmpty)(e)&&e.some((e=>["file","file[]"].includes(e.type)||t(e.fields)));return t(e.fields)}(s),I=function(e){for(var t=de(e,"query"),n=de(e,"body"),r=arguments.length,i=new Array(r>1?r-1:0),a=1;a<r;a++)i[a-1]=arguments[a];if(t){if(n){var[o,s,c]=i;return{data:o,options:(0,h.Z)({params:s},c)}}var[u,l]=i;return{data:{},options:(0,h.Z)({params:u},l)}}var[p,d]=i;return{data:p,options:d}}(o,...f);t=yield le.http.requestWithBody(i,n,b?function(e){if(e instanceof FormData)return e;var t=new FormData,n=function(e){Array.isArray(i)?i.forEach((n=>{t.append(e,n)})):!(0,p.isObject)(i)||i instanceof Blob||i instanceof Date?t.append(e,i):Object.entries(i).forEach((n=>{var[r,i]=n;t.append("".concat(e,"[").concat(r,"]"),i)}))};for(var[r,i]of Object.entries(e))n(r);return t}(I.data):I.data,(0,h.Z)((0,h.Z)({},l),I.options))}return!c&&a?t.data:t})),ve.apply(this,arguments)}function he(){customElements.define(pe,(0,ue.createProviderClass)(fe))}var me=n(9169),ye=function(){var e=(0,l.Z)((function*(e,t){return(yield f.http.post("api/contract/single_search",e,t)).data}));return function(t,n){return e.apply(this,arguments)}}(),ge=new Map,we=new Map,Ze=(e,t)=>{null==e||e.forEach((e=>{t.set("".concat(e.namespaceId,".").concat(e.name),e)}))};function Se(e){Ze(e,ge)}function be(e){Ze(e,we)}function Ie(){we.clear()}var Ae=new Map;function Oe(e){return e.includes("@")}function ke(e,t,n){return Me.apply(this,arguments)}function Me(){return Me=(0,l.Z)((function*(e,t,n){if(!e.includes(":"))throw new Error("You're using legacy Custom API \"".concat(e,'" which is dropped in v3, please use Flow API instead'));var r=yield function(e){var t=Ae.get(e);return t||(t=function(e){return Ee.apply(this,arguments)}(e),Ae.set(e,t)),t}(e);if(!r)throw new Error('Flow API not found: "'.concat(e,'"'));var i=function(e,t){var n,r,i="string"==typeof t.contract?me.safeLoad(t.contract,{schema:me.JSON_SCHEMA,json:!0}):t.contract,{uri:a,method:o="GET",ext_fields:s}=null!==(n=null==i?void 0:i.endpoint)&&void 0!==n?n:{},c=!(null==i||!i.response)&&!1!==i.response.wrapper;if(!a)throw new Error('Missing endpoint.uri in contract of provider "'.concat(e,'"'));return{uri:a,method:"list"===o.toLowerCase()?"get":o,ext_fields:s,name:t.name,namespace:t.namespace,serviceName:t.serviceName,version:t.version,isFileType:"file"===(null==i||null===(r=i.response)||void 0===r?void 0:r.type),responseWrapper:c,request:null==i?void 0:i.request}}(e,r);return function(e,t,n){var r,{uri:i,method:a,ext_fields:o,name:s,namespace:c,serviceName:u,responseWrapper:l,version:p,isFileType:d,request:f}=e,v=d&&"saveAs"===n;v&&(r=t.shift());var{url:h,args:m}=function(e,t,n,r,i,a){var o=a?i?"api/gateway/".concat(i):"api/gateway/".concat(r,".").concat(n,"@").concat(a):"api/gateway/api_service.".concat(r,".").concat(n),s=t.slice();return{url:o+e.replace(/:([^/]+)/g,(()=>s.shift())),args:s}}(i,t,s,c,u,p);return[...v?[r]:[],{url:h,originalUri:i,method:a,ext_fields:o,responseWrapper:l,request:f,isFileType:d},...m]}(i,t,n)})),Me.apply(this,arguments)}function Ee(){return(Ee=(0,l.Z)((function*(e){var[t,n]=e.split("@"),[r,i]=n.split(":"),a=function(e){return ge.get(e)||we.get(e)}("".concat(t,".").concat(r));if(a)return{name:a.name,namespace:a.namespaceId,serviceName:a.serviceName,version:a.version,contract:{endpoint:a.endpoint,response:a.response,request:a.request}};var o,{contractData:s}=yield ye({contractName:"".concat(t,".").concat(r),version:i});return s?{name:s.name,namespace:null===(o=s.namespace)||void 0===o||null===(o=o[0])||void 0===o?void 0:o.name,serviceName:s.serviceName,version:s.version,contract:{endpoint:s.endpoint,response:s.response,request:s.request}}:void 0}))).apply(this,arguments)}var Pe=n(9740),_e=function(){var e=(0,l.Z)((function*(e,t,n){return(yield te.http.post("api/gateway/cmdb.instance.PostSearch/object/".concat(e,"/instance/_search"),t,n)).data}));return function(t,n,r){return e.apply(this,arguments)}}(),Ce=function(){var e=(0,l.Z)((function*(e,t,n){return(yield f.http.get("api/gateway/micro_app.installed_micro_app.GetMenusInfo/api/v1/micro-app/menus/".concat(e),(0,h.Z)((0,h.Z)({},n),{},{params:t}))).data}));return function(t,n,r){return e.apply(this,arguments)}}(),Ne=n(420),Te=Symbol("appId"),je=Symbol("menuI18nNamespace"),Re=Symbol("overrideApp");function De(){return(De=(0,l.Z)((function*(e,t,n,r){if(e.dynamicItems&&e.itemsResolve){var i=e.app[0].appId,a=t;if(i!==t.app.id){var o,s=window.STANDALONE_MICRO_APPS?e.overrideApp:null===(o=r.getStoryboardByAppId(i))||void 0===o?void 0:o.app;a=(0,h.Z)((0,h.Z)({},t),{},{overrideApp:s,appendI18nNamespace:n.get(e)})}var c=yield r.resolveData((0,h.Z)({transform:"items"},e.itemsResolve),a);e.items=c.items}}))).apply(this,arguments)}function We(){return We=(0,l.Z)((function*(e,t,n){var r=e.find((e=>"inject"!==e.type));if(r){var i=[],a=new Map,o=new WeakMap,s=function*(){if(c.i18n){var e="menu/".concat(c.menuId,"~").concat(c.app[0].appId,"+").concat(c.instanceId);Object.entries(c.i18n).forEach((t=>{var[n,r]=t;Ne.i18n.addResourceBundle(n,e,r)})),o.set(c,e)}};for(var c of e)yield*s();for(var u of(yield Promise.all(e.map((e=>function(e,t,n,r){return De.apply(this,arguments)}(e,t,o,n)))),e)){var l;if(null!==(l=u.items)&&void 0!==l&&l.length)if("inject"===u.type&&u.injectMenuGroupId){var p=a.get(u.injectMenuGroupId);p||(p=[],a.set(u.injectMenuGroupId,p)),p.push(u)}else i.push(u)}return(0,h.Z)((0,h.Z)({},r),{},{items:i.flatMap((e=>Le(e.items,e,a,o))),[je]:o.get(r),[Re]:r.overrideApp})}})),We.apply(this,arguments)}function Le(e,t,n,r){return null==e?void 0:e.map((e=>{var i,a=e.groupId&&n.get(e.groupId);return a&&n.delete(e.groupId),(0,h.Z)((0,h.Z)({},e),{},{children:(null!==(i=Le(e.children,t,n,r))&&void 0!==i?i:[]).concat(a?a.flatMap((e=>Le(e.items,e,n,r))):[]),[Te]:t.app[0].appId,[je]:r.get(t),[Re]:t.overrideApp})}))}function Ue(e){e.items=Be(e.items)}function Be(e){return function(e){return(0,p.sortBy)(e,(e=>{var t;return null!==(t=e.sort)&&void 0!==t?t:-1/0}))}(e).map((e=>(0,h.Z)((0,h.Z)({},e),{},{children:Be(e.children)})))}var xe=n(4415),Fe=n(5506),qe=["children"];function ze(e,t,n,r){if("titleDataSource"in e&&(0,ue.isObject)(e.titleDataSource)&&Object.entries(e.titleDataSource).every((e=>{var[,t]=e;return null===t||""===t}))&&delete e.titleDataSource,"if"in e&&null===e.if&&delete e.if,"to"in e&&e.to&&!(0,Fe.isEvaluable)(e.to)){var i=xe.pipes.yaml(e.to);(0,ue.isObject)(i)&&["pathname","search","hash"].some((e=>(0,ue.hasOwnProperty)(i,e)))&&(e.to=i)}var a=n;if(t!==n.app.id){var o,s=window.STANDALONE_MICRO_APPS?e[Re]:null===(o=r.getStoryboardByAppId(t))||void 0===o?void 0:o.app;a=(0,h.Z)((0,h.Z)({},n),{},{overrideApp:s,appendI18nNamespace:e[je]})}return r.asyncComputeRealValue(e,a,{ignoreSymbols:!0})}function Ge(e,t,n){return Promise.all(e.map(function(){var e=(0,l.Z)((function*(e){var{children:r}=e,i=(0,Pe.Z)(e,qe),[a,o]=yield Promise.all([ze(i,i[Te],t,n),r&&(yield Ge(r,t,n))]);return(0,h.Z)((0,h.Z)({},a),{},{children:o})}));return function(t){return e.apply(this,arguments)}}()))}var Je=function(){var e=(0,l.Z)((function*(e,t,n,r){return(yield te.http.get("api/gateway/cmdb.instance.GetDetail/object/".concat(e,"/instance/").concat(t),(0,h.Z)((0,h.Z)({},r),{},{params:n}))).data}));return function(t,n,r,i){return e.apply(this,arguments)}}(),He=new Map;function Ve(e){return Ye.apply(this,arguments)}function Ye(){return(Ye=(0,l.Z)((function*(e){if(e.title||(0,p.isEmpty)(e.titleDataSource))return e.title;var t=JSON.stringify(e.titleDataSource),n=He.get(t);if(void 0!==n)return n;var r,{objectId:i,instanceId:a,attributeId:o}=e.titleDataSource,s=null!=o?o:"name",c=yield Je(i,a,{fields:s});if("#showKey"===o&&Array.isArray(c[s])){var[u,...l]=c[s];r=l.length>0?"".concat(u,"(").concat(l.join(","),")"):String(u)}else r=String(c[s]);return He.set(t,r),r}))).apply(this,arguments)}var $e=["items","app"],Ke=new Map,Qe=new Map;function Xe(e){return null==e?void 0:e.filter(N.checkIfOfComputed).map((e=>{var t=Xe(e.children);return"group"===e.type?{type:"group",title:e.text,childLayout:e.childLayout,items:t,groupId:e.groupId,groupFrom:e.groupFrom}:null!=t&&t.length?{type:"subMenu",childLayout:e.childLayout,title:e.text,icon:e.icon,items:t,defaultExpanded:e.defaultExpanded}:(0,p.omit)(e,["type","items","children"])}))}function et(e){return Qe.get(e)}function tt(e,t,n){var r=Ke.get(e);return r||(r=function(e,t,n){return nt.apply(this,arguments)}(e,t,n)),r}function nt(){return nt=(0,l.Z)((function*(e,t,n){var r=window.STANDALONE_MICRO_APPS?function(e,t,n){var r,i,a,o,s=n.getStoryboardByAppId(t);return(null!==(r=null!==(i=null===(a=s.meta)||void 0===a?void 0:a.injectMenus)&&void 0!==i?i:null===(o=s.meta)||void 0===o?void 0:o.menus)&&void 0!==r?r:[]).filter((t=>t.menuId===e)).map((e=>{var n;return(0,h.Z)((0,h.Z)({},e),null!==(n=e.app)&&void 0!==n&&null!==(n=n[0])&&void 0!==n&&n.appId?{}:{app:[{appId:t}]})}))}(e,t.app.id,n):t.flags["three-level-menu-layout"]?(yield Ce(e,{menuObjectId:"EASYOPS_STORYBOARD_MENU"})).menus:(yield _e("EASYOPS_STORYBOARD_MENU",{page:1,page_size:200,fields:{menuId:!0,title:!0,icon:!0,link:!0,titleDataSource:!0,defaultCollapsed:!0,defaultCollapsedBreakpoint:!0,type:!0,injectMenuGroupId:!0,dynamicItems:!0,itemsResolve:!0,items:!0,i18n:!0,"items.children":!0,"app.appId":!0},query:{menuId:{$eq:e},app:{$size:{$gt:0}}}})).list,i=yield function(e,t,n){return We.apply(this,arguments)}(r,t,n);if(!i)throw new Error("Menu not found: ".concat(e));Ue(i);var{items:a,app:o}=i,s=(0,Pe.Z)(i,$e),c=(0,h.Z)((0,h.Z)({},t),{},{pendingPermissionsPreCheck:[...t.pendingPermissionsPreCheck,A([a,s])]});delete c.tplStateStoreId,delete c.forEachItem,delete c.forEachIndex;var u=o[0].appId,[l,d]=yield Promise.all([ze(s,u,c,n),Ge(a,c,n)]),f=(0,h.Z)((0,h.Z)({title:yield Ve(l)},(0,p.pick)(l,["icon","link","defaultCollapsed","defaultCollapsedBreakpoint"])),{},{menuItems:Xe(d)});Qe.set(e,f)})),nt.apply(this,arguments)}var rt=!1,it=null,at=!0,ot=[],st=[];function ct(e){rt||(rt=!0,window.addEventListener("beforeunload",(function(){if(0!==st.length){var t={model:"easyops.FRONTEND_STAT",columns:["_ver","st","et","lt","size","time","traceId","code","duration","page","uid","username","api","type","msg","status","pageId","route","apiCount","maxApiTimeCost","apiSizeCost","pageTitle"],data:st},n=new Blob([JSON.stringify(t)],{type:"application/json"});st.length=0,window.navigator.sendBeacon(e,n)}}),!1))}var ut=Symbol("HttpAnalytics");function lt(e){var t=Math.round(performance.now()),n=Date.now();return e[ut]={st:n,time:Math.round(n/1e3),perfStartTime:t},e}function pt(e,t){return ft(!1,e,t)}function dt(e,t){return ft(!0,e,t)}function ft(e,t,n){var r,i=Math.round(performance.now()),a=Date.now(),{[ut]:o,url:s}=n;if(o&&!(e&&t instanceof le.HttpAbortError)){var c,u,l;delete n[ut];var p,d,f,v,m,y,w,{st:Z,time:S,perfStartTime:b}=o,{userInstanceId:I,username:A}=g();if(e){var O=t instanceof le.HttpResponseError;(O||t instanceof le.HttpParseError)&&(({status:m,headers:y}=t.response),O&&(w=t.responseJson))}else({status:m,data:w,headers:y}=t);(0,ue.isObject)(w)&&({code:p,message:d}=w),y instanceof Headers&&(f=y.get("x-b3-traceid"),v=y.get("content-length")),r={st:Z,_ver:Z,uid:I,username:A,time:S,et:a,page:location.href,duration:i-b,api:s,type:"api",code:null!==(c=p)&&void 0!==c?c:-1,msg:null!==(u=d)&&void 0!==u?u:"",status:m,traceId:null!==(l=f)&&void 0!==l?l:"",size:v?Number(v):-1},it?st.push((0,h.Z)((0,h.Z)({},r),{},{type:"apiRequest"},it)):ot.push(r)}return e?Promise.reject(t):t}function vt(){var e=Math.round(performance.now()),t=Date.now();return ot.length=0,it=null,function(n){var{status:r,path:i,pageTitle:a}=n;if("ok"!==r)return st.push(...ot),void(ot.length=0);var o=Math.round(performance.now())-e,s=Date.now(),{username:c}=g();(function(e){var t,n,r=(t=URL.createObjectURL(new Blob([])),n=t.substring(t.lastIndexOf("/")+1),URL.revokeObjectURL(t),at&&(n="88-"+n,at=!1),n),{lt:i,route:a}=e;for(var o of(it={lt:i,route:a,pageId:r},st.push((0,h.Z)((0,h.Z)({},e),{},{pageId:r,apiCount:ot.length,maxApiTimeCost:Math.max(0,...ot.map((e=>e.duration))),size:ot.map((e=>e.size)).filter((e=>e>0)).reduce(((e,t)=>e+t),0)})),ot))st.push((0,h.Z)((0,h.Z)({},o),it));ot.length=0})({type:"page",page:location.href,_ver:t,time:Math.round(t/1e3),st:t,et:s,lt:o,pageTitle:a,username:c,route:i}),window.dispatchEvent(new CustomEvent("route.render",{detail:{renderTime:o}}))}}var ht=Object.freeze({checkPermissions:function(){if(!Z())return!1;if(g().isAdmin)return!0;for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];for(var r of t)switch(b.get(r)){case"unauthorized":case"undefined":return!1;case void 0:return console.error('Un-checked permission action: "'.concat(r,'", please make sure the permission to check is defined in permissionsPreCheck.')),!1}return!0},preCheckPermissions:function(e){if(Z()&&!g().isAdmin)return O((0,d.scanPermissionActionsInStoryboard)(e))},preCheckPermissionsForBrickOrRoute:function(e,t){return I.apply(this,arguments)}}),mt=new class{constructor(){(0,M.Z)(this,K),(0,E.Z)(this,$,{get:Q,set:void 0}),(0,E.Z)(this,H,{writable:!0,value:void 0}),(0,E.Z)(this,V,{writable:!0,value:{sub:new Map,unsub:new Map}}),(0,E.Z)(this,Y,{writable:!0,value:new Map})}subscribe(e,t){var n=JSON.stringify(t);return(0,P.Z)(this,K,X).call(this,"sub",e,t,n)}unsubscribe(e){var t=(0,C.Z)(this,Y).get(e);if(!t){var n='The message channel to unsubscribe "'.concat(e,'" is not found');return console.error(n),Promise.reject(new Error(n))}var r=JSON.parse(t),i=(0,P.Z)(this,K,X).call(this,"unsub",e,r,t);return(0,C.Z)(this,V).sub.delete(t),i.then((()=>{(0,C.Z)(this,Y).delete(e)})),i}onMessage(e,t){var n=(0,C.Z)(this,Y).get(e);n?(0,C.Z)(this,$).onMessage((e=>{"MESSAGE.PUSH"===e.event&&function(e,t){var n=JSON.parse(e);return n.system===t.system&&(n.topic===t.topic||"string"==typeof n.topic&&n.topic.includes("*")&&new RegExp("^".concat(n.topic.replace(/([^*]*)\*([^*]*)/g,((e,t,n)=>"".concat((0,p.escapeRegExp)(t),"[^/]*").concat((0,p.escapeRegExp)(n)))),"$")).test(t.topic))}(n,e.payload)&&t(e.payload.message)})):console.error('Message channel: "'.concat(e,'" not found'))}onClose(e){(0,C.Z)(this,$).onClose(e)}reset(){var e;(0,C.Z)(this,V).sub.clear(),(0,C.Z)(this,V).unsub.clear(),(0,C.Z)(this,Y).clear(),null===(e=(0,C.Z)(this,H))||void 0===e||e.reset()}},yt=function(){var e=(0,N.getV2RuntimeFromDll)();if(e)return Object.freeze((0,p.pick)(e,["authenticate","getAuth","isLoggedIn","logout"]))}()||r}}]);
|
|
3
|
+
//# sourceMappingURL=9102.747f386a.js.map
|