@next-bricks/nav 1.8.2 → 1.8.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bricks.json +1 -1
- package/dist/chunks/{0.9877dbd1.js → 0.672708c3.js} +2 -2
- package/dist/chunks/{0.9877dbd1.js.map → 0.672708c3.js.map} +1 -1
- package/dist/chunks/{1488.1b7efd8c.js → 1488.928cd7ae.js} +3 -3
- package/dist/chunks/{1488.1b7efd8c.js.map → 1488.928cd7ae.js.map} +1 -1
- package/dist/chunks/{242.7170e651.js → 242.0f87c6f6.js} +2 -2
- package/dist/chunks/{242.7170e651.js.map → 242.0f87c6f6.js.map} +1 -1
- package/dist/chunks/3322.223ab55c.js +2 -0
- package/dist/chunks/3322.223ab55c.js.map +1 -0
- package/dist/chunks/{5140.9376d0f5.js → 5140.21c0f1c6.js} +3 -3
- package/dist/chunks/{5140.9376d0f5.js.map → 5140.21c0f1c6.js.map} +1 -1
- package/dist/chunks/{6784.959eada8.js → 6784.1f1de73c.js} +2 -2
- package/dist/chunks/{6784.959eada8.js.map → 6784.1f1de73c.js.map} +1 -1
- package/dist/chunks/{7324.eeb88a1b.js → 7324.6b0bd416.js} +3 -3
- package/dist/chunks/{7324.eeb88a1b.js.map → 7324.6b0bd416.js.map} +1 -1
- package/dist/chunks/{7861.a39271fd.js → 7861.193cbeb3.js} +2 -2
- package/dist/chunks/{7861.a39271fd.js.map → 7861.193cbeb3.js.map} +1 -1
- package/dist/chunks/{8380.d628bc96.js → 8380.60849d8c.js} +2 -2
- package/dist/chunks/{8380.d628bc96.js.map → 8380.60849d8c.js.map} +1 -1
- package/dist/chunks/{easyops-navbar-alerts.1a2df38a.js → easyops-navbar-alerts.1937add2.js} +2 -2
- package/dist/chunks/{easyops-navbar-alerts.1a2df38a.js.map → easyops-navbar-alerts.1937add2.js.map} +1 -1
- package/dist/chunks/{eo-directory-tree.6c89896a.js → eo-directory-tree.cbc56211.js} +2 -2
- package/dist/chunks/{eo-directory-tree.6c89896a.js.map → eo-directory-tree.cbc56211.js.map} +1 -1
- package/dist/chunks/{eo-directory.a1502218.js → eo-directory.6e379380.js} +3 -3
- package/dist/chunks/{eo-directory.a1502218.js.map → eo-directory.6e379380.js.map} +1 -1
- package/dist/chunks/{eo-frame-breadcrumb.ade06130.js → eo-frame-breadcrumb.a5fc9aaf.js} +2 -2
- package/dist/chunks/{eo-frame-breadcrumb.ade06130.js.map → eo-frame-breadcrumb.a5fc9aaf.js.map} +1 -1
- package/dist/chunks/{eo-launchpad-button-v2.2b1409db.js → eo-launchpad-button-v2.6a0a710a.js} +2 -2
- package/dist/chunks/{eo-launchpad-button-v2.2b1409db.js.map → eo-launchpad-button-v2.6a0a710a.js.map} +1 -1
- package/dist/chunks/{eo-nav-menu.a5f84569.js → eo-nav-menu.b0aa7fc7.js} +2 -2
- package/dist/chunks/{eo-nav-menu.a5f84569.js.map → eo-nav-menu.b0aa7fc7.js.map} +1 -1
- package/dist/chunks/{eo-sidebar-menu-group.520c4478.js → eo-sidebar-menu-group.21aefb8f.js} +3 -3
- package/dist/chunks/{eo-sidebar-menu-group.520c4478.js.map → eo-sidebar-menu-group.21aefb8f.js.map} +1 -1
- package/dist/chunks/{eo-sidebar-menu-submenu.b6e02411.js → eo-sidebar-menu-submenu.a471f436.js} +3 -3
- package/dist/chunks/{eo-sidebar-menu-submenu.b6e02411.js.map → eo-sidebar-menu-submenu.a471f436.js.map} +1 -1
- package/dist/chunks/{eo-sidebar-menu.65d1a8cd.js → eo-sidebar-menu.b65e1327.js} +2 -2
- package/dist/chunks/{eo-sidebar-menu.65d1a8cd.js.map → eo-sidebar-menu.b65e1327.js.map} +1 -1
- package/dist/chunks/{eo-sidebar-sub-menu.0ef6104a.js → eo-sidebar-sub-menu.a366a9cb.js} +3 -3
- package/dist/chunks/{eo-sidebar-sub-menu.0ef6104a.js.map → eo-sidebar-sub-menu.a366a9cb.js.map} +1 -1
- package/dist/chunks/{eo-sidebar.d7796b7a.js → eo-sidebar.7dfb8f2c.js} +3 -3
- package/dist/chunks/{eo-sidebar.d7796b7a.js.map → eo-sidebar.7dfb8f2c.js.map} +1 -1
- package/dist/chunks/{launchpad-config.f9d46bcb.js → launchpad-config.d79612f6.js} +3 -3
- package/dist/chunks/{launchpad-config.f9d46bcb.js.map → launchpad-config.d79612f6.js.map} +1 -1
- package/dist/chunks/{main.0b3ac00f.js → main.47bc12a6.js} +2 -2
- package/dist/chunks/{main.0b3ac00f.js.map → main.47bc12a6.js.map} +1 -1
- package/dist/chunks/{nav-logo.beb930a4.js → nav-logo.6f02674c.js} +2 -2
- package/dist/chunks/{nav-logo.beb930a4.js.map → nav-logo.6f02674c.js.map} +1 -1
- package/dist/{index.97b84db4.js → index.df65be58.js} +2 -2
- package/dist/{index.97b84db4.js.map → index.df65be58.js.map} +1 -1
- package/dist-types/launchpad-button-v2/wrapped-bricks.d.ts +1 -10
- package/package.json +3 -3
- package/dist/chunks/3322.9aeff5ff.js +0 -2
- package/dist/chunks/3322.9aeff5ff.js.map +0 -1
- /package/dist/chunks/{1488.1b7efd8c.js.LICENSE.txt → 1488.928cd7ae.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{5140.9376d0f5.js.LICENSE.txt → 5140.21c0f1c6.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{7324.eeb88a1b.js.LICENSE.txt → 7324.6b0bd416.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{eo-directory.a1502218.js.LICENSE.txt → eo-directory.6e379380.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{eo-sidebar-menu-group.520c4478.js.LICENSE.txt → eo-sidebar-menu-group.21aefb8f.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{eo-sidebar-menu-submenu.b6e02411.js.LICENSE.txt → eo-sidebar-menu-submenu.a471f436.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{eo-sidebar-sub-menu.0ef6104a.js.LICENSE.txt → eo-sidebar-sub-menu.a366a9cb.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{eo-sidebar.d7796b7a.js.LICENSE.txt → eo-sidebar.7dfb8f2c.js.LICENSE.txt} +0 -0
- /package/dist/chunks/{launchpad-config.f9d46bcb.js.LICENSE.txt → launchpad-config.d79612f6.js.LICENSE.txt} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chunks/1488.1b7efd8c.js","mappings":"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","sources":["webpack:///./src/nav-menu/index.tsx","webpack:///./src/launchpad/index.tsx","webpack:///./src/launchpad-button-v2/index.tsx","webpack:///./src/launchpad-config/wrapped-bricks.ts","webpack:///./src/launchpad-config/MenuGroup.tsx","webpack:///./src/launchpad-config/index.tsx","webpack:///./src/easyops-navbar-alerts/index.tsx","webpack:///./src/launchpad-quick-access/index.tsx","webpack:///./src/search-launchpad/host-context.css?4d0b","webpack:///./src/search-launchpad/index.tsx","webpack:///./src/launchpad-recent-visits/index.tsx","webpack:///./src/app-bar-wrapper/index.tsx","webpack:///./src/frame-breadcrumb/index.tsx","webpack:///./src/sidebar/sidebar-menu-item/index.tsx","webpack:///./src/sidebar/utils.tsx","webpack:///./src/sidebar/sidebar-menu-group/index.tsx","webpack:///./src/sidebar/sidebar-menu-submenu/index.tsx","webpack:///./src/sidebar/sidebar-menu/index.tsx","webpack:///./src/images/fixed.svg","webpack:///./src/images/toFixed.svg","webpack:///./src/sidebar/i18n.ts","webpack:///./src/sidebar/index.tsx","webpack:///../../src/debounceByAnimationFrame.ts","webpack:///./src/sidebar-sub-menu/index.tsx","webpack:///./src/directory/index.tsx","webpack:///./src/directory-tree/DirectoryTreeContext.ts","webpack:///./src/directory-tree/Tree.tsx","webpack:///./src/directory-tree/utils.ts","webpack:///./src/directory-tree/index.tsx","webpack:///./src/directory-tree/directory-tree-leaf/index.tsx","webpack:///./src/directory-tree/constants.ts","webpack:///./src/directory-tree/directory-tree-internal-node/arrow.svg","webpack:///./src/directory-tree/directory-tree-internal-node/index.tsx","webpack:///./src/nav-logo/index.tsx","webpack:///./src/search-launchpad/host-context.css","webpack:///./src/app-bar-wrapper/styles.shadow.css","webpack:///./src/directory-tree/directory-tree-internal-node/styles.shadow.css","webpack:///./src/directory-tree/directory-tree-leaf/styles.shadow.css","webpack:///./src/directory-tree/styles.shadow.css","webpack:///./src/directory/styles.shadow.css","webpack:///./src/easyops-navbar-alerts/styles.shadow.css","webpack:///./src/frame-breadcrumb/styles.shadow.css","webpack:///./src/launchpad-config/styles.shadow.css","webpack:///./src/launchpad-quick-access/styles.shadow.css","webpack:///./src/launchpad-recent-visits/styles.shadow.css","webpack:///./src/nav-logo/styles.shadow.css","webpack:///./src/search-launchpad/styles.shadow.css","webpack:///./src/sidebar-sub-menu/styles.shadow.css","webpack:///./src/sidebar/sidebar-menu-group/styles.shadow.css","webpack:///./src/sidebar/sidebar-menu-item/styles.shadow.css","webpack:///./src/sidebar/sidebar-menu-submenu/styles.shadow.css","webpack:///./src/sidebar/sidebar-menu/styles.shadow.css","webpack:///./src/sidebar/styles.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:///../../node_modules/@next-api-sdk/user-service-sdk/dist/esm/api/user_service/my_collection/listMyCollection.js","webpack:///../../node_modules/@next-api-sdk/user-service-sdk/dist/esm/api/user_service/my_collection/upsertMyCollection.js"],"sourcesContent":["import React, {\n CSSProperties,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { getHistory } from \"@next-core/runtime\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport styleText from \"./nav-menu.shadow.css\";\nimport { UnregisterCallback } from \"history\";\nimport type { SidebarMenu } from \"@next-bricks/basic/menu\";\nimport type {\n MenuItem as MenuItemComponent,\n MenuComponentProps,\n} from \"@next-bricks/basic/menu-item\";\nimport { isSubMenu, isGroup, renderLinkCom, renderSpanCom } from \"./utils.js\";\nimport { initMenuItemAndMatchCurrentPathKeys } from \"@next-shared/general/menu\";\nimport type {\n SidebarMenuGroup,\n SidebarMenuItem,\n SidebarMenuSimpleItem,\n} from \"@next-shared/general/types\";\nimport type {\n Popover,\n PopoverProps,\n PopoverEvents,\n PopoverEventsMapping,\n Placement,\n} from \"@next-bricks/basic/popover\";\nimport \"@next-core/theme\";\nimport classnames from \"classnames\";\nimport { ThreeLevelMenuPopoverContent } from \"./ThreeLevelMenuPopoverContent.js\";\nimport { SiteMapItem } from \"./site-map/SiteMapItem.js\";\nimport SiteMapStyleText from \"../nav-menu/site-map/SiteMapItem.shadow.css\";\nimport ItemTagStyleText from \"../nav-menu/site-map/ItemTag.shadow.css\";\nimport GroupItemStyleText from \"../nav-menu/site-map/GroupItem.shadow.css\";\nimport \"./host-context.css\";\n\nconst { defineElement, property } = createDecorators();\n\nconst WrappedMenuItem = wrapBrick<MenuItemComponent, MenuComponentProps>(\n \"eo-menu-item\"\n);\nconst WrappedPopover = wrapBrick<\n Popover,\n PopoverProps,\n PopoverEvents,\n PopoverEventsMapping\n>(\"eo-popover\", {\n onVisibleChange: \"visible.change\",\n beforeVisibleChange: \"before.visible.change\",\n});\n\nconst GAP_WIDTH = 8;\n\ninterface NavMenuProps {\n menu?: SidebarMenu;\n showTooltip?: boolean;\n}\n\ninterface MenuItemComProps {\n index?: number;\n hidden?: boolean;\n item: SidebarMenuItem;\n topData?: boolean;\n selectedKey?: string[];\n showTooltip?: boolean;\n overflow?: boolean;\n}\ninterface SimpleMenuItemComProps extends MenuItemComProps {\n item: SidebarMenuSimpleItem;\n}\ninterface MenuGroupComProps extends MenuItemComProps {\n item: SidebarMenuGroup;\n}\nfunction RenderMenuItemCom(props: MenuItemComProps) {\n const { item } = props;\n return isSubMenu(item as SidebarMenuGroup, props.topData) ? (\n <SubMenuItemCom {...props} item={item as SidebarMenuGroup}></SubMenuItemCom>\n ) : isGroup(item) ? (\n <GroupMenuItemCom {...props} item={item as SidebarMenuGroup} />\n ) : (\n <SimpleMenuItemCom\n {...props}\n item={item as SidebarMenuSimpleItem}\n ></SimpleMenuItemCom>\n );\n}\nfunction SimpleMenuItemCom(props: SimpleMenuItemComProps) {\n const { item, index, hidden, showTooltip, selectedKey = [] } = props;\n return (\n <WrappedMenuItem\n data-index={index}\n className={hidden ? \"overflow-menu-item\" : \"\"}\n key={item.key}\n title={showTooltip ? item.text : \"\"}\n active={item.key ? selectedKey.includes(item.key) : false}\n >\n {renderLinkCom(item, { width: \"100%\" })}\n </WrappedMenuItem>\n );\n}\n\nlet scrollWidth: number;\n// istanbul ignore next;\nconst handlePopupVisibleChange = (event: CustomEvent<boolean>) => {\n // 当用户设置滚动条一直显示时,来回切换 overflow: hidden 会导致滚动条显示或隐藏\n // 造成页面宽度变化而导致的抖动的问题\n const paddingRight =\n scrollWidth ??\n (scrollWidth = window.innerWidth - document.body.clientWidth);\n\n document.body.style.paddingRight = event.detail ? paddingRight + \"px\" : \"\";\n document.body.style.overflow = event.detail ? \"hidden\" : \"\";\n document.body.style.touchAction = event.detail ? \"none\" : \"\";\n};\n\nfunction SubMenuItemCom({\n index,\n hidden,\n item,\n topData,\n showTooltip,\n selectedKey = [],\n overflow,\n}: MenuGroupComProps) {\n return item.items?.length > 0 ? (\n <WrappedPopover\n data-index={index}\n className={classnames(\"popover\", {\n subprime: !topData,\n \"overflow-menu-item\": hidden,\n })}\n arrow={false}\n trigger=\"hover\"\n placement={topData ? \"bottom-start\" : \"right-start\"}\n distance={0}\n anchorDisplay=\"block\"\n strategy=\"fixed\"\n >\n <WrappedMenuItem\n className=\"sub-menu-item-label\"\n key={item.key}\n slot=\"anchor\"\n title={showTooltip ? item.title : \"\"}\n >\n {renderSpanCom(item, !topData)}\n </WrappedMenuItem>\n <div\n className={classnames(\"sub-menu-wrapper\", {\n \"overflow-menu-wrapper\": overflow,\n })}\n >\n {item.items.map((innerItem) => (\n <React.Fragment key={innerItem.key}>\n <RenderMenuItemCom\n item={innerItem}\n selectedKey={selectedKey}\n showTooltip={showTooltip}\n />\n </React.Fragment>\n ))}\n </div>\n </WrappedPopover>\n ) : null;\n}\n\nfunction GroupMenuItemCom({\n item,\n showTooltip,\n selectedKey = [],\n}: MenuGroupComProps) {\n return item.items?.length > 0 ? (\n item.childLayout === \"category\" ? (\n <ThreeLevelMenuCom\n item={item}\n selectedKey={selectedKey}\n showTooltip={showTooltip}\n placement=\"right-start\"\n anchorDisplay=\"block\"\n />\n ) : (item as SidebarMenuGroup).childLayout === \"siteMap\" ? (\n <SitMapMenCom\n item={item}\n selectedKey={selectedKey}\n showTooltip={showTooltip}\n placement=\"right-start\"\n anchorDisplay=\"block\"\n topData={false}\n />\n ) : (\n <>\n <div className=\"group-label\">{item.title}</div>\n <div className=\"group-wrapper\">\n {item.items.map((innerItem) => {\n return (\n <React.Fragment key={innerItem.key}>\n <RenderMenuItemCom\n item={innerItem}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n />\n </React.Fragment>\n );\n })}\n </div>\n </>\n )\n ) : null;\n}\n\nfunction ThreeLevelMenuCom({\n index,\n hidden,\n item,\n selectedKey = [],\n showTooltip,\n placement = \"bottom-start\",\n anchorDisplay,\n}: {\n index?: number;\n hidden?: boolean;\n item: SidebarMenuGroup;\n selectedKey?: string[];\n showTooltip?: boolean;\n placement?: Placement;\n anchorDisplay?: CSSProperties[\"display\"];\n}) {\n return item.items?.length > 0 ? (\n <WrappedPopover\n data-index={index}\n className={classnames(\"three-level-menu-popover\", \"popover\", {\n \"overflow-menu-item\": hidden,\n })}\n arrow={false}\n trigger={\"hover\"}\n placement={placement}\n distance={0}\n key={item.key}\n strategy=\"fixed\"\n anchorDisplay={anchorDisplay}\n beforeVisibleChange={handlePopupVisibleChange}\n >\n <WrappedMenuItem\n className=\"sub-menu-item-label\"\n key={item.key}\n slot=\"anchor\"\n title={showTooltip ? item.title : \"\"}\n >\n {renderSpanCom(item)}\n </WrappedMenuItem>\n <div className=\"sub-menu-wrapper\">\n <ThreeLevelMenuPopoverContent\n menuItem={item}\n selectedKey={selectedKey}\n ></ThreeLevelMenuPopoverContent>\n </div>\n </WrappedPopover>\n ) : null;\n}\n\nfunction SitMapMenCom({\n index,\n hidden,\n item,\n selectedKey = [],\n showTooltip,\n placement = \"bottom-start\",\n anchorDisplay,\n topData,\n}: {\n index?: number;\n hidden?: boolean;\n item: SidebarMenuGroup;\n selectedKey?: string[];\n showTooltip?: boolean;\n placement?: Placement;\n anchorDisplay?: CSSProperties[\"display\"];\n topData?: boolean;\n}) {\n const [visible, setVisible] = useState<boolean>();\n\n const handleVisibleChange = (event: CustomEvent<boolean>): void => {\n setVisible(event.detail);\n handlePopupVisibleChange(event);\n };\n\n return item.items?.length > 0 ? (\n <WrappedPopover\n data-index={index}\n className={classnames(\"popover\", {\n \"overflow-menu-item\": hidden,\n })}\n trigger={\"hover\"}\n placement={placement}\n distance={0}\n key={item.key}\n strategy=\"fixed\"\n arrow={false}\n anchorDisplay={anchorDisplay}\n beforeVisibleChange={handleVisibleChange}\n >\n <WrappedMenuItem\n className=\"sub-menu-item-label\"\n key={item.key}\n slot=\"anchor\"\n title={showTooltip ? item.title : \"\"}\n >\n {renderSpanCom(item)}\n </WrappedMenuItem>\n <div\n className={classnames(\"sub-menu-sit-map-wrapper\", {\n \"in-group-site-map\": !topData,\n })}\n onClick={(e) => e.stopPropagation()}\n >\n <SiteMapItem\n menuGroup={item}\n selectedKey={selectedKey}\n visible={visible}\n />\n </div>\n </WrappedPopover>\n ) : null;\n}\n\n/**\n * 菜单构件\n * @author sailor\n * @category navigation\n */\n@defineElement(\"eo-nav-menu\", {\n styleTexts: [\n SiteMapStyleText,\n ItemTagStyleText,\n GroupItemStyleText,\n styleText,\n ],\n})\nclass NavMenu extends ReactNextElement {\n /**\n * 菜单项\n */\n @property({\n attribute: false,\n })\n accessor menu: SidebarMenu | undefined;\n\n /**\n * 是否显示 tooltip\n */\n @property({\n type: Boolean,\n })\n accessor showTooltip: boolean | undefined;\n\n render() {\n return <NavMenuComponent menu={this.menu} showTooltip={this.showTooltip} />;\n }\n}\n\nfunction NavMenuComponent(props: NavMenuProps) {\n const { menu, showTooltip } = props;\n\n const history = getHistory();\n const navMenuWrapperRef = useRef<HTMLDivElement>(null);\n const [location, setLocation] = useState(history.location);\n const [overflowIndex, setOverflowIndex] = useState<number>(\n Number.MAX_SAFE_INTEGER\n );\n const { pathname, search } = location;\n\n const selectedKey = useMemo(() => {\n const { selectedKeys } = initMenuItemAndMatchCurrentPathKeys(\n menu?.menuItems ?? [],\n pathname,\n search,\n \"\"\n );\n return selectedKeys;\n }, [menu?.menuItems, pathname, search]);\n\n useEffect(() => {\n const unListen: UnregisterCallback = history.listen((location) => {\n setLocation(location);\n });\n return unListen;\n }, []);\n\n useEffect(() => {\n if (navMenuWrapperRef.current) {\n const resizeObserver = new ResizeObserver(() => {\n if (navMenuWrapperRef.current) {\n const { width } = navMenuWrapperRef.current.getClientRects()[0] ?? {};\n const childNodes = navMenuWrapperRef.current.childNodes;\n\n if (childNodes.length && width) {\n let wrapperWidth = width;\n let overflowIndex = childNodes.length;\n\n for (let i = 0; i < childNodes.length; i++) {\n const { width: childWidth, height: childHeight } = (\n childNodes[i] as HTMLElement\n ).getClientRects()[0];\n\n if (!childHeight && wrapperWidth - 40 < 0) {\n overflowIndex = i - 1;\n break;\n }\n\n wrapperWidth =\n wrapperWidth - childWidth - (i > 0 ? GAP_WIDTH : 0);\n if (wrapperWidth < 0) {\n overflowIndex = i;\n break;\n }\n }\n\n setOverflowIndex(overflowIndex < 0 ? 0 : overflowIndex);\n }\n }\n });\n resizeObserver.observe(navMenuWrapperRef.current);\n\n return () => {\n resizeObserver.disconnect();\n };\n }\n }, []);\n\n const overflowMenu = useMemo(\n (): SidebarMenuItem => ({\n type: \"subMenu\",\n title: \"···\",\n items: menu?.menuItems.slice(\n overflowIndex,\n menu.menuItems.length\n ) as SidebarMenuItem[],\n }),\n [menu?.menuItems, overflowIndex]\n );\n\n return (\n <div ref={navMenuWrapperRef} className=\"nav-menu-wrapper\">\n {menu?.menuItems.map((item, index) => {\n const isHidden = overflowIndex <= index;\n return (\n <React.Fragment key={item.key}>\n {isSubMenu(item as SidebarMenuGroup, true) &&\n (item as SidebarMenuGroup).childLayout === \"category\" &&\n (item as SidebarMenuGroup).items?.length ? (\n <ThreeLevelMenuCom\n index={index}\n hidden={isHidden}\n item={item as SidebarMenuGroup}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n />\n ) : (item as SidebarMenuGroup).type === \"group\" &&\n (item as SidebarMenuGroup).childLayout === \"siteMap\" ? (\n <SitMapMenCom\n index={index}\n hidden={isHidden}\n item={item as SidebarMenuGroup}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n topData={true}\n />\n ) : (\n <RenderMenuItemCom\n index={index}\n hidden={isHidden}\n item={item}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n topData={true}\n />\n )}\n </React.Fragment>\n );\n })}\n <RenderMenuItemCom\n hidden={overflowIndex > (menu?.menuItems?.length ?? 0)}\n item={overflowMenu}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n overflow={true}\n topData={true}\n />\n </div>\n );\n}\n\nexport { NavMenu };\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { LaunchpadButton as LaunchpadButtonComponent } from \"./LaunchpadButton/LaunchpadButton.js\";\nimport { initializeReactI18n } from \"@next-core/i18n/react\";\nimport \"@next-core/theme\";\nimport { NS, locales } from \"./i18n.js\";\nimport styleText from \"./LaunchpadButton/LaunchpadButton.shadow.css\";\n\ninitializeReactI18n(NS, locales);\n\nconst { defineElement } = createDecorators();\n\n/**\n * Launchpad 按钮构件\n * @author sailor\n * @insider\n */\n@defineElement(\"eo-launchpad-button\", {\n styleTexts: [styleText],\n})\nclass LaunchpadButton extends ReactNextElement {\n render() {\n return <LaunchpadButtonComponent />;\n }\n}\n\nexport { LaunchpadButton };\n","import React, { useEffect, useState } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\nimport \"@next-core/theme\";\nimport { getHistory, getRuntime } from \"@next-core/runtime\";\nimport type { lockBodyScroll as _lockBodyScroll } from \"@next-bricks/basic/data-providers/lock-body-scroll/lock-body-scroll\";\n// import { useTranslation, initializeReactI18n } from \"@next-core/i18n/react\";\nimport hotkeys from \"hotkeys-js\";\nimport classNames from \"classnames\";\n// import { K, NS, locales } from \"./i18n.js\";\nimport LaunchpadSvg from \"../images/launchpad.svg\";\nimport styleText from \"./styles.shadow.css\";\nimport platformCategoryStyleText from \"./PlatformCategory.shadow.css\";\nimport { Launchpad } from \"./Launchpad\";\nimport {\n deferredFavorites,\n deferredLaunchpadInfo,\n deferredPlatformCategories,\n} from \"./useLaunchpadInfo\";\nimport \"./host-context.css\";\n\n// initializeReactI18n(NS, locales);\n\nconst { defineElement } = createDecorators();\n\nconst lockBodyScroll = unwrapProvider<typeof _lockBodyScroll>(\n \"basic.lock-body-scroll\"\n);\n\n/**\n * 构件 `eo-launchpad-button-v2`\n * @insider\n */\nexport\n@defineElement(\"eo-launchpad-button-v2\", {\n styleTexts: [styleText, platformCategoryStyleText],\n})\nclass EoLaunchpadButtonV2 extends ReactNextElement {\n disconnectedCallback(): void {\n super.disconnectedCallback();\n lockBodyScroll(this, false);\n }\n\n render() {\n return <EoLaunchpadButtonV2Component host={this} />;\n }\n}\n\nexport function EoLaunchpadButtonV2Component({ host }: { host: HTMLElement }) {\n const [initialized, setInitialized] = useState(false);\n const [active, setActive] = useState(false);\n const toggleLaunchpad = (): void => {\n setActive((previous) => !previous);\n };\n\n useEffect(() => {\n // 当切换页面时,关闭 Launchpad。\n const unlisten = getHistory().listen(() => {\n setActive(false);\n });\n return unlisten;\n }, []);\n\n useEffect(() => {\n // 打开一次 launchpad 后,保留 DOM。\n if (active && !initialized) {\n setInitialized(true);\n }\n }, [active, initialized]);\n\n // istanbul ignore next\n useEffect(() => {\n hotkeys.filter = function () {\n return true;\n };\n\n // 快捷打开/关闭 Launchpad\n hotkeys(\"alt+l\", (event) => {\n event.preventDefault();\n setActive((previous) => !previous);\n });\n\n // 按 Esc 关闭 Launchpad\n hotkeys(\"esc\", () => {\n setActive(false);\n });\n\n return () => {\n hotkeys.unbind(\"alt+l\");\n hotkeys.unbind(\"esc\");\n };\n }, []);\n\n useEffect(() => {\n lockBodyScroll(host, active);\n }, [active, host]);\n\n useEffect(() => {\n deferredLaunchpadInfo.schedulePrefetch();\n deferredFavorites.schedulePrefetch();\n getRuntime()?.getFeatureFlags()[\"launchpad-show-platform-category\"] &&\n deferredPlatformCategories.schedulePrefetch();\n }, []);\n\n return (\n <>\n <a\n role=\"button\"\n className={classNames(\"launchpad-button\", { active })}\n onClick={toggleLaunchpad}\n >\n <LaunchpadSvg />\n </a>\n <div\n className={classNames(\"mask\", { active })}\n onClick={toggleLaunchpad}\n ></div>\n {initialized && <Launchpad active={active} />}\n </>\n );\n}\n","import { wrapBrick } from \"@next-core/react-element\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport type {\n EoDropdownActions,\n DropdownActionsProps,\n DropdownActionsEvents,\n DropdownActionsEventsMapping,\n} from \"@next-bricks/basic/dropdown-actions\";\nimport type { showDialog as _showDialog } from \"@next-bricks/basic/data-providers/show-dialog/show-dialog\";\n\nexport const WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nexport const WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nexport const WrappedDropdownActions = wrapBrick<\n EoDropdownActions,\n DropdownActionsProps,\n DropdownActionsEvents,\n DropdownActionsEventsMapping\n>(\"eo-dropdown-actions\", {\n onActionClick: \"action.click\",\n onVisibleChange: \"visible.change\",\n});\n\n// Use `unwrapProvider` to get the original function of a provider\nexport const showDialog =\n unwrapProvider<typeof _showDialog>(\"basic.show-dialog\");\n","import React, { useCallback, useMemo, useState } from \"react\";\nimport { pick } from \"lodash\";\nimport classNames from \"classnames\";\nimport { checkIfByTransform } from \"@next-core/runtime\";\nimport type { SimpleAction } from \"@next-bricks/basic/actions\";\nimport {\n WrappedDropdownActions,\n WrappedIcon,\n WrappedLink,\n} from \"./wrapped-bricks\";\nimport type {\n ConfigMenuGroup,\n ConfigMenuItemDir,\n ConfigMenuItemNormal,\n MenuAction,\n MenuActionEventDetail,\n} from \"./interfaces\";\nimport { getAppLocaleName } from \"../shared/getLocaleName\";\n\nexport interface MenuGroupProps {\n data: ConfigMenuGroup;\n actions?: MenuAction[];\n onActionClick?: (detail: MenuActionEventDetail) => void;\n}\n\nexport function MenuGroup({ data, actions, onActionClick }: MenuGroupProps) {\n const { name, items } = data;\n const [dropdownActive, setDropdownActive] = useState(false);\n\n const filteredActions = useMemo(\n () =>\n actions?.filter((item) => checkIfByTransform(item, { type: \"group\" })),\n [actions]\n );\n\n const handleActionClick = useCallback(\n (event: CustomEvent<SimpleAction>) => {\n onActionClick?.({\n data,\n action: event.detail,\n });\n },\n [data, onActionClick]\n );\n\n return (\n <li className={classNames(\"menu-group\", { empty: items.length === 0 })}>\n <div className=\"menu-group-label-wrapper\">\n <span className=\"menu-group-label\">{name}</span>\n <WrappedDropdownActions\n actions={filteredActions}\n onVisibleChange={(event) => {\n setDropdownActive(event.detail);\n }}\n onActionClick={handleActionClick}\n >\n <WrappedIcon\n lib=\"fa\"\n icon=\"gear\"\n className={classNames(\"menu-config\", { active: dropdownActive })}\n />\n </WrappedDropdownActions>\n </div>\n <ul className=\"menu\">\n {items.map((item) =>\n item.type === \"dir\" ? (\n <MenuItemFolder\n key={item.instanceId}\n data={item}\n actions={actions}\n onActionClick={onActionClick}\n />\n ) : (\n <MenuItem\n key={`${item.type}-${item.id}`}\n data={item}\n actions={actions}\n onActionClick={onActionClick}\n />\n )\n )}\n </ul>\n </li>\n );\n}\n\nexport interface MenuItemProps {\n data: ConfigMenuItemNormal;\n actions?: MenuAction[];\n onActionClick?: (detail: MenuActionEventDetail) => void;\n}\n\nexport function MenuItem({ data, actions, onActionClick }: MenuItemProps) {\n const name = useMemo(\n () =>\n data.type === \"app\"\n ? getAppLocaleName(data.locales, data.name)\n : data.name,\n [data]\n );\n\n const [dropdownActive, setDropdownActive] = useState(false);\n\n const filteredActions = useMemo(\n () => actions?.filter((item) => checkIfByTransform(item, data)),\n [actions, data]\n );\n\n const handleActionClick = useCallback(\n (event: CustomEvent<SimpleAction>) => {\n onActionClick?.({\n data,\n action: event.detail,\n });\n },\n [data, onActionClick]\n );\n\n return (\n <li className=\"menu-item\">\n <WrappedLink>\n <WrappedIcon\n className={`menu-icon`}\n lib=\"easyops\"\n icon=\"micro-app-center\"\n {...(data.menuIcon?.lib && data.menuIcon.icon\n ? (pick(data.menuIcon, [\n \"lib\",\n \"icon\",\n \"theme\",\n \"category\",\n \"prefix\",\n ]) as any)\n : null)}\n />\n <span className=\"menu-item-label\">{name}</span>\n </WrappedLink>\n <WrappedDropdownActions\n actions={filteredActions}\n onVisibleChange={(event) => {\n setDropdownActive(event.detail);\n }}\n onActionClick={handleActionClick}\n >\n <WrappedIcon\n lib=\"fa\"\n icon=\"gear\"\n className={classNames(\"menu-config\", { active: dropdownActive })}\n />\n </WrappedDropdownActions>\n </li>\n );\n}\n\nexport interface MenuItemFolderProps {\n data: ConfigMenuItemDir;\n actions?: MenuAction[];\n onActionClick?: (detail: MenuActionEventDetail) => void;\n}\n\nfunction MenuItemFolder({ data, actions, onActionClick }: MenuItemFolderProps) {\n const { name, items } = data;\n const [dropdownActive, setDropdownActive] = useState(false);\n const [expanded, setExpanded] = useState(false);\n\n const filteredActions = useMemo(\n () => actions?.filter((item) => checkIfByTransform(item, { type: \"dir\" })),\n [actions]\n );\n\n const toggle = useCallback(() => {\n setExpanded((previous) => !previous);\n }, []);\n\n const handleActionClick = useCallback(\n (event: CustomEvent<SimpleAction>) => {\n onActionClick?.({\n data,\n action: event.detail,\n });\n },\n [data, onActionClick]\n );\n\n return (\n <li\n className={classNames(\"menu-item folder\", { empty: items.length === 0 })}\n >\n <div className=\"menu-folder-label-wrapper\">\n <WrappedLink onClick={toggle}>\n <WrappedIcon\n lib=\"fa\"\n prefix=\"far\"\n icon=\"folder-open\"\n className=\"menu-icon\"\n />\n <span className=\"menu-item-label\">{name}</span>\n <WrappedIcon\n lib=\"antd\"\n icon={expanded ? \"up\" : \"down\"}\n className=\"menu-item-toggle\"\n />\n </WrappedLink>\n <WrappedDropdownActions\n actions={filteredActions}\n onVisibleChange={(event) => {\n setDropdownActive(event.detail);\n }}\n onActionClick={handleActionClick}\n >\n <WrappedIcon\n lib=\"fa\"\n icon=\"gear\"\n className={classNames(\"menu-config\", { active: dropdownActive })}\n />\n </WrappedDropdownActions>\n </div>\n <ul className={classNames(\"sub-menu\", { expanded })}>\n {items.map((item) => (\n <MenuItem\n key={item.instanceId}\n data={item}\n actions={actions}\n onActionClick={onActionClick}\n />\n ))}\n </ul>\n </li>\n );\n}\n","import React from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport type {\n ConfigMenuGroup,\n MenuAction,\n MenuActionEventDetail,\n} from \"./interfaces\";\nimport { MenuGroup } from \"./MenuGroup\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property, event } = createDecorators();\n\n/**\n * 构件 `nav.launchpad-config`\n * @insider\n */\nexport\n@defineElement(\"nav.launchpad-config\", {\n styleTexts: [styleText],\n})\nclass LaunchpadConfig extends ReactNextElement implements LaunchpadConfigProps {\n @property({ attribute: false })\n accessor menuGroups: ConfigMenuGroup[] | undefined;\n\n @property({ attribute: false })\n accessor actions: MenuAction[] | undefined;\n\n @event({ type: \"action.click\" })\n accessor #actionClickEvent!: EventEmitter<MenuActionEventDetail>;\n\n #onActionClick = (detail: MenuActionEventDetail) => {\n this.#actionClickEvent.emit(detail);\n };\n\n render() {\n return (\n <LaunchpadConfigComponent\n menuGroups={this.menuGroups}\n actions={this.actions}\n onActionClick={this.#onActionClick}\n />\n );\n }\n}\n\nexport interface LaunchpadConfigProps {\n menuGroups?: ConfigMenuGroup[];\n actions?: MenuAction[];\n onActionClick?: (detail: MenuActionEventDetail) => void;\n}\n\nexport function LaunchpadConfigComponent({\n menuGroups,\n actions,\n onActionClick,\n}: LaunchpadConfigProps) {\n return (\n <ul className=\"menu-groups\">\n {menuGroups?.map((group) => (\n <MenuGroup\n key={group.instanceId}\n data={group}\n actions={actions}\n onActionClick={onActionClick}\n />\n ))}\n </ul>\n );\n}\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport { getRuntime } from \"@next-core/runtime\";\nimport { useCurrentApp } from \"@next-core/react-runtime\";\nimport { auth } from \"@next-core/easyops-runtime\";\nimport \"@next-core/theme\";\nimport { JsonStorage } from \"@next-shared/general/JsonStorage\";\nimport moment from \"moment\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport styleText from \"./styles.shadow.css\";\n\nexport const WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nexport const WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\nconst { defineElement } = createDecorators();\n\n/**\n * 构件 `nav.easyops-navbar-alerts`\n * @insider\n */\nexport\n@defineElement(\"nav.easyops-navbar-alerts\", {\n styleTexts: [styleText],\n})\nclass EasyopsNavbarAlerts extends ReactNextElement {\n render() {\n return <EasyopsNavbarAlertsComponent />;\n }\n}\n\ninterface SlowRenderInfo {\n renderTime: number;\n suggestTime: number;\n suggestUrl?: string;\n}\n\nconst storage = new JsonStorage(localStorage);\n\nexport function EasyopsNavbarAlertsComponent() {\n const [licenseHide, setLienceseHide] = useState<boolean>(false);\n const [slowRender, setSlowRender] = useState<SlowRenderInfo | null>(null);\n const currentApp = useCurrentApp();\n const licenseDismissedKey = useMemo(() => {\n const authInfo = auth.getAuth();\n return `license:${authInfo.org}`;\n }, []);\n\n const licenseDaysLeft = useMemo(() => {\n const authInfo = auth.getAuth();\n const validDaysLeft = authInfo.license?.validDaysLeft;\n let dismissExpireAt: number;\n if (licenseHide) {\n return null;\n }\n if (\n validDaysLeft &&\n validDaysLeft <= 15 &&\n authInfo.isAdmin &&\n ((dismissExpireAt = storage.getItem(licenseDismissedKey)),\n !dismissExpireAt || moment().unix() > dismissExpireAt)\n ) {\n return validDaysLeft;\n }\n return null;\n }, [licenseDismissedKey, licenseHide]);\n\n useEffect(() => {\n const handelRouteRender = (e: Event): void => {\n const renderTime = (e as CustomEvent<{ renderTime: number }>).detail\n .renderTime;\n const { loadTime, loadInfoPage } = getRuntime().getMiscSettings() as {\n loadTime: number;\n loadInfoPage?: string;\n };\n if (currentApp?.isBuildPush && loadTime > 0 && renderTime > loadTime) {\n setSlowRender({\n renderTime: millisecondToSecond(renderTime),\n suggestTime: millisecondToSecond(loadTime),\n suggestUrl: loadInfoPage,\n });\n }\n };\n window.addEventListener(\"route.render\", handelRouteRender);\n return () => {\n window.removeEventListener(\"route.render\", handelRouteRender);\n };\n }, [currentApp]);\n\n const handleLicenseAlertDismiss = useCallback(() => {\n // 一天内不再显示。\n storage.setItem(licenseDismissedKey, moment().unix() + 86400);\n setLienceseHide(true);\n }, [licenseDismissedKey]);\n\n return (\n <>\n {slowRender && (\n <Alert\n text={`您的页面存在性能问题, 当前页面渲染时间 ${slowRender.renderTime} 秒, 规定阈值为: ${slowRender.suggestTime} 秒, 您已超过。请您针对该页面进行性能优化!`}\n type=\"warning\"\n link={\n slowRender.suggestUrl\n ? {\n label: \"建议解决思路\",\n url: slowRender.suggestUrl,\n }\n : undefined\n }\n />\n )}\n {licenseDaysLeft !== null && (\n <Alert\n text={`离 License 过期还有 ${licenseDaysLeft} 天`}\n type=\"info\"\n closable\n onClose={handleLicenseAlertDismiss}\n />\n )}\n </>\n );\n}\n\ninterface AlertProps {\n text: string;\n type: \"info\" | \"warning\";\n closable?: boolean;\n link?: {\n label: string;\n url: string;\n };\n onClose?: () => void;\n}\n\nfunction Alert({ text, type, closable, link, onClose }: AlertProps) {\n return (\n <div className={`alert ${type}`}>\n <span className=\"text\">{text}</span>\n {link && (\n <WrappedLink className=\"link\" href={link.url} target=\"_blank\">\n {link.label}\n </WrappedLink>\n )}\n {closable && (\n <WrappedIcon\n lib=\"antd\"\n icon=\"close\"\n className=\"icon\"\n role=\"button\"\n onClick={onClose}\n />\n )}\n </div>\n );\n}\n\nfunction millisecondToSecond(millisecond: number) {\n return Math.floor(millisecond * 100) / 1e5;\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport { useLaunchpadInfo } from \"../launchpad-button-v2/useLaunchpadInfo\";\nimport { LaunchpadsContext } from \"../launchpad-button-v2/LaunchpadContext\";\nimport { SidebarMenuItem } from \"../launchpad-button-v2/MenuGroup\";\nimport { SidebarMenuItemData } from \"../launchpad-button-v2/interfaces\";\n\nconst { defineElement, property } = createDecorators();\n\n/**\n * 快捷访问\n * @insider\n */\nexport\n@defineElement(\"eo-launchpad-quick-access\", {\n styleTexts: [styleText],\n})\nclass EoLaunchpadQuickAccess extends ReactNextElement {\n @property({\n type: Boolean,\n })\n accessor readonly: boolean | undefined;\n\n render() {\n return <EoLaunchpadQuickAccessComponent readonly={this.readonly} />;\n }\n}\n\ninterface EoLaunchpadQuickAccessComponentProps {\n readonly?: boolean;\n}\n\nexport function EoLaunchpadQuickAccessComponent({\n readonly,\n}: EoLaunchpadQuickAccessComponentProps) {\n const {\n favorites,\n loadingFavorites,\n pushRecentVisit,\n toggleStar,\n isStarred,\n } = useLaunchpadInfo(true);\n\n return (\n <LaunchpadsContext.Provider\n value={{\n searching: false,\n loadingFavorites,\n readonly,\n pushRecentVisit,\n toggleStar,\n isStarred,\n }}\n >\n <ul className=\"quick-access-list\">\n {favorites.map((item, index) => (\n <SidebarMenuItem key={index} item={item as SidebarMenuItemData} />\n ))}\n </ul>\n </LaunchpadsContext.Provider>\n );\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./host-context.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./host-context.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { useCallback, useRef, useState } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport classNames from \"classnames\";\nimport { LaunchpadsContext } from \"../launchpad-button-v2/LaunchpadContext\";\nimport { useLaunchpadInfo } from \"../launchpad-button-v2/useLaunchpadInfo\";\nimport { MenuGroup } from \"../launchpad-button-v2/MenuGroup\";\nimport { GeneralIcon, GeneralIconProps } from \"@next-bricks/icons/general-icon\";\nimport \"./host-context.css\";\n\nexport const WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nconst { defineElement, property } = createDecorators();\n\n/**\n * launchpad 搜索\n * @insider\n */\nexport\n@defineElement(\"eo-search-launchpad\", {\n styleTexts: [styleText],\n})\nclass EoSearchLaunchpad extends ReactNextElement {\n /**\n * 简约模式\n */\n @property({\n type: Boolean,\n })\n accessor readonly: boolean | undefined;\n\n render() {\n return <EoSearchLaunchpadComponent readonly={this.readonly} />;\n }\n}\n\ninterface EoSearchLaunchpadComponentProps {\n readonly?: boolean;\n}\n\nexport function EoSearchLaunchpadComponent({\n readonly,\n}: EoSearchLaunchpadComponentProps) {\n const searchInputRef = useRef<HTMLInputElement>(null);\n const handleClickSearchBox = useCallback(() => {\n searchInputRef.current?.focus();\n }, []);\n\n const [active, setActive] = useState(false);\n\n const {\n loading,\n q,\n setQ,\n menuGroups,\n loadingFavorites,\n pushRecentVisit,\n toggleStar,\n isStarred,\n } = useLaunchpadInfo(active);\n const searching = !!q;\n\n const handleSearch = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setQ(e.target.value);\n },\n [setQ]\n );\n\n const clearSearch = useCallback(() => {\n setQ(\"\");\n }, [setQ]);\n\n return (\n <LaunchpadsContext.Provider\n value={{\n searching,\n loadingFavorites,\n readonly,\n pushRecentVisit,\n toggleStar,\n isStarred,\n }}\n >\n <div className=\"container\">\n <div className=\"search-box\" onClick={handleClickSearchBox}>\n <WrappedIcon\n lib=\"fa\"\n icon=\"magnifying-glass\"\n className=\"search-icon\"\n />\n <input\n ref={searchInputRef}\n placeholder=\"搜索产品/微应用\"\n value={q}\n onChange={handleSearch}\n className=\"search-input\"\n onFocus={() => setActive(true)}\n onBlur={() => setActive(false)}\n />\n <WrappedIcon\n lib=\"antd\"\n theme=\"filled\"\n icon=\"close-circle\"\n className={classNames(\"search-clear\", { searching })}\n onClick={clearSearch}\n onMouseDown={(e) => e.preventDefault()}\n />\n </div>\n <div\n className={classNames(\"dropdown\", { \"dropdown-active\": active })}\n onMouseDown={(e) => e.preventDefault()}\n >\n <div className={classNames(\"dropdown-content\", { loading })}>\n <Loading loading={loading} />\n <ul className=\"menu-groups\">\n {menuGroups.map((group) => (\n <MenuGroup\n key={group.name}\n name={group.name}\n items={group.items}\n />\n ))}\n </ul>\n </div>\n </div>\n </div>\n </LaunchpadsContext.Provider>\n );\n}\n\nfunction Loading({ loading }: { loading: boolean }) {\n return (\n loading && (\n <div className=\"spinner\">\n <WrappedIcon lib=\"fa\" icon=\"spinner\" spinning />\n </div>\n )\n );\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport { useLaunchpadInfo } from \"../launchpad-button-v2/useLaunchpadInfo\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\nconst { defineElement } = createDecorators();\n\n/**\n * launchpad 最近访问\n * @insider\n */\nexport\n@defineElement(\"eo-launchpad-recent-visits\", {\n styleTexts: [styleText],\n})\nclass EoLaunchpadRecentVisits extends ReactNextElement {\n render() {\n return <EoLaunchpadRecentVisitsComponent />;\n }\n}\n\nexport function EoLaunchpadRecentVisitsComponent() {\n const { recentVisits, pushRecentVisit } = useLaunchpadInfo(true);\n\n return (\n <ul className=\"recent-visits\">\n {recentVisits.map((item, index) => (\n <li key={index}>\n <WrappedLink\n onClick={() => pushRecentVisit(item)}\n {...(item.type === \"app\"\n ? {\n url: item.url,\n }\n : {\n href: item.url,\n target: \"_blank\",\n })}\n >\n <span>{item.name}</span>\n </WrappedLink>\n </li>\n ))}\n </ul>\n );\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport classNames from \"classnames\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property } = createDecorators();\n\nexport interface AppBarWrapperProps {\n isFixed?: boolean;\n position?: \"static\" | \"fixed\";\n displayCenter?: boolean;\n extraAppBarContentStyle?: React.CSSProperties;\n}\n\n/**\n * 应用顶部容器\n * @slot left - 左侧内容区\n * @slot right - 右侧内容区\n */\nexport\n@defineElement(\"eo-app-bar-wrapper\", {\n styleTexts: [styleText],\n alias: [\"basic.app-bar-wrapper\"],\n})\nclass EoAppBarWrapper extends ReactNextElement implements AppBarWrapperProps {\n /**\n * 是否固定定位。\n *\n * @default true\n * @deprecated 使用 `position` 属性代替\n */\n @property({\n type: Boolean,\n })\n accessor isFixed: boolean | undefined;\n\n /**\n * 设置定位方式:静态定位或固定定位。\n *\n * 设置时优先级高于 `isFixed`。\n *\n * @default \"fixed\"\n */\n @property()\n accessor position: \"static\" | \"fixed\" | undefined;\n\n /**\n * 居中显示\n * @default false\n */\n @property({\n type: Boolean,\n })\n accessor displayCenter: boolean | undefined;\n\n /** 自定义样式 */\n @property({\n attribute: false,\n })\n accessor extraAppBarContentStyle: React.CSSProperties | undefined;\n\n render() {\n return (\n <EoAppBarWrapperComponent\n displayCenter={this.displayCenter}\n isFixed={this.isFixed}\n position={this.position}\n extraAppBarContentStyle={this.extraAppBarContentStyle}\n />\n );\n }\n}\n\nexport function EoAppBarWrapperComponent({\n isFixed = true,\n position,\n displayCenter = false,\n extraAppBarContentStyle = {},\n}: AppBarWrapperProps) {\n React.useEffect(() => {\n const mainElement = document.getElementById(\"main-mount-point\");\n const iframeMainElement = document.getElementById(\n \"legacy-iframe-mount-point\"\n );\n mainElement && (mainElement.style.marginTop = \"\");\n iframeMainElement && (iframeMainElement.style.marginTop = \"\");\n }, []);\n\n return (\n <div className=\"app-bar-container\">\n <div\n className={classNames(\n \"app-bar\",\n position === \"static\"\n ? \"static\"\n : position === \"fixed\" || isFixed\n ? \"fixed\"\n : \"absolute\"\n )}\n >\n {/* TODO: need AppBarTips */}\n <div\n className=\"app-bar-content\"\n style={{\n justifyContent: displayCenter ? \"space-around\" : \"space-between\",\n ...extraAppBarContentStyle,\n }}\n >\n <div className=\"left\">\n <slot name=\"left\" />\n </div>\n <div className=\"right\">\n <slot name=\"right\" />\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport { getRuntime } from \"@next-core/runtime\";\nimport { useCurrentApp } from \"@next-core/react-runtime\";\nimport { BreadcrumbItemConf } from \"@next-core/types\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport type { EoBreadcrumb } from \"@next-bricks/basic/breadcrumb\";\nimport type {\n EoBreadcrumbItem,\n BreadcrumbItemProps,\n} from \"@next-bricks/basic/breadcrumb-item\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { ExtendedLocationDescriptor } from \"@next-bricks/basic/link\";\n\nconst { defineElement, property } = createDecorators();\n\nconst WrappedBreadcrumb = wrapBrick<EoBreadcrumb, unknown>(\"eo-breadcrumb\");\nconst WrappedBreadcrumbItem = wrapBrick<EoBreadcrumbItem, BreadcrumbItemProps>(\n \"eo-breadcrumb-item\"\n);\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport interface Menu {\n title: string;\n icon?: GeneralIconProps;\n link?: ExtendedLocationDescriptor;\n}\n\nexport interface EoFrameBreadcrumbProps {\n breadcrumb?: BreadcrumbItemConf[];\n noCurrentApp?: boolean;\n menu?: Menu;\n}\n\n/**\n * 面包屑\n */\nexport\n@defineElement(\"eo-frame-breadcrumb\", {\n styleTexts: [styleText],\n})\nclass EoFrameBreadcrumb\n extends ReactNextElement\n implements EoFrameBreadcrumbProps\n{\n /**\n * 面包屑配置\n */\n @property({\n attribute: false,\n })\n accessor breadcrumb: BreadcrumbItemConf[] | undefined;\n\n /**\n * 是否隐藏当前应用名称\n */\n @property({ type: Boolean })\n accessor noCurrentApp: boolean | undefined;\n\n /**\n * 菜单配置\n */\n @property({\n attribute: false,\n })\n accessor menu: Menu | undefined;\n\n render() {\n return (\n <EoFrameBreadcrumbComponent\n breadcrumb={this.breadcrumb}\n noCurrentApp={this.noCurrentApp}\n menu={this.menu}\n />\n );\n }\n}\n\nexport function EoFrameBreadcrumbComponent(props: EoFrameBreadcrumbProps) {\n const { menu } = props;\n\n const navConfig = getRuntime().getNavConfig();\n const currentApp = useCurrentApp();\n const curAppBreadcrumb = currentApp?.breadcrumb;\n\n const currentAppBreadcrumbItems = curAppBreadcrumb?.items as Array<\n BreadcrumbItemConf & { icon: GeneralIconProps }\n >;\n const breadcrumbItems = props.breadcrumb?.length\n ? props.breadcrumb\n : navConfig?.breadcrumb;\n\n const noCurrentApp = props.noCurrentApp ?? curAppBreadcrumb?.noCurrentApp;\n const useCurrentMenuTitle = curAppBreadcrumb?.useCurrentMenuTitle;\n\n return (\n <WrappedBreadcrumb>\n <span slot=\"separator\">/</span>\n {currentAppBreadcrumbItems?.map((item, index) => {\n return (\n <WrappedBreadcrumbItem key={index} url={item.to}>\n {item.icon ? (\n <WrappedIcon\n className=\"breadcrumb-item-prefix-icon\"\n slot=\"prefix\"\n {...item.icon}\n />\n ) : (\n index === 0 && (\n <WrappedIcon\n className=\"breadcrumb-item-prefix-icon\"\n slot=\"prefix\"\n lib=\"antd\"\n icon=\"home\"\n theme=\"outlined\"\n />\n )\n )}\n {item.text}\n </WrappedBreadcrumbItem>\n );\n })}\n {currentApp && !noCurrentApp ? (\n <WrappedBreadcrumbItem\n url={\n breadcrumbItems?.length &&\n currentApp.homepage &&\n !currentApp.internal\n ? currentApp.homepage\n : undefined\n }\n >\n {!currentAppBreadcrumbItems?.length && (\n <WrappedIcon\n {...currentApp.menuIcon}\n slot=\"prefix\"\n className=\"breadcrumb-item-prefix-icon\"\n />\n )}\n {currentApp.localeName}\n </WrappedBreadcrumbItem>\n ) : null}\n {useCurrentMenuTitle && menu ? (\n <WrappedBreadcrumbItem url={menu.link}>\n {menu.icon && (\n <WrappedIcon\n {...menu.icon}\n className=\"breadcrumb-item-prefix-icon\"\n slot=\"prefix\"\n />\n )}\n {menu.title}\n </WrappedBreadcrumbItem>\n ) : null}\n {breadcrumbItems?.map((item, index) => (\n <WrappedBreadcrumbItem key={index} url={item.to}>\n {item.text}\n </WrappedBreadcrumbItem>\n ))}\n </WrappedBreadcrumb>\n );\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property } = createDecorators();\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport interface EoSidebarMenuItemProps {\n url?: LinkProps[\"url\"];\n href?: LinkProps[\"href\"];\n icon?: GeneralIconProps;\n target?: LinkProps[\"target\"];\n selected?: boolean;\n inSubmenu?: boolean;\n menuCollapsed?: boolean;\n}\n\n/**\n * 侧栏菜单项\n * @category navigation\n */\nexport\n@defineElement(\"eo-sidebar-menu-item\", {\n styleTexts: [styleText],\n})\nclass EoSidebarMenuItem\n extends ReactNextElement\n implements EoSidebarMenuItemProps\n{\n /**\n * 菜单项对应的系统内地址\n */\n @property({ attribute: false })\n accessor url: LinkProps[\"url\"] | undefined;\n\n /**\n * 菜单项对应的外部链接地址\n */\n @property()\n accessor href: LinkProps[\"href\"] | undefined;\n\n /**\n * 菜单项链接打开的目标\n */\n @property()\n accessor target: LinkProps[\"target\"] | undefined;\n\n /**\n * 菜单项的图标\n */\n @property({ attribute: false })\n accessor icon: GeneralIconProps | undefined;\n\n /**\n * 是否选中\n */\n @property({ type: Boolean })\n accessor selected: boolean | undefined;\n\n /**\n * 是否在二级菜单中\n */\n @property({ type: Boolean })\n accessor inSubmenu: boolean | undefined;\n\n /**\n * 菜单整体是否收起状态\n */\n @property({ type: Boolean })\n accessor menuCollapsed: boolean | undefined;\n\n render() {\n return (\n <EoSidebarMenuItemComponent\n url={this.url}\n href={this.href}\n target={this.target}\n icon={this.icon}\n selected={this.selected}\n />\n );\n }\n}\n\nexport function EoSidebarMenuItemComponent(props: EoSidebarMenuItemProps) {\n const { url, href, target, icon, selected } = props;\n\n return (\n <WrappedLink type=\"plain\" url={url} href={href} target={target}>\n <div className={\"menu-item\"}>\n <span className=\"menu-item-icon-container\">\n <WrappedIcon\n {...icon}\n className=\"menu-item-icon\"\n {...(icon && \"imgSrc\" in icon\n ? { imgStyle: { filter: selected ? \"brightness(7)\" : undefined } }\n : {})}\n />\n </span>\n <span className=\"menu-item-text\">\n <slot />\n </span>\n </div>\n </WrappedLink>\n );\n}\n","import React, {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useRef,\n} from \"react\";\nimport { getCssPropertyValue } from \"@next-core/runtime\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type {\n SidebarMenu as SidebarMenuType,\n SidebarMenuGroup,\n SidebarMenuItem,\n SidebarMenuSimpleItem,\n} from \"@next-shared/general/types\";\nimport type {\n EoSidebarMenu,\n EoSidebarMenuProps,\n} from \"./sidebar-menu/index.js\";\nimport type {\n EoSidebarMenuItem,\n EoSidebarMenuItemProps,\n} from \"./sidebar-menu-item/index.js\";\nimport type {\n EoSidebarMenuGroup,\n EoSidebarMenuGroupProps,\n} from \"./sidebar-menu-group/index.js\";\nimport type {\n EoSidebarMenuSubmenu,\n EoSidebarMenuSubmenuProps,\n} from \"./sidebar-menu-submenu/index.js\";\n\nconst sidebarMenuItemTagNameSet = new Set([\n \"EO-SIDEBAR-MENU-ITEM\",\n \"EO-SIDEBAR-MENU-GROUP\",\n \"EO-SIDEBAR-MENU-SUBMENU\",\n]);\n\nconst isSidebarMenuItem = (element: Element) =>\n sidebarMenuItemTagNameSet.has(element.tagName);\n\nexport function useUpdateMenuCollapsedState(menuCollapsed?: boolean) {\n const slotRef = useRef<HTMLSlotElement>(null);\n\n const updateChildrenMenuCollapsedState = useCallback(() => {\n slotRef.current?.assignedElements().forEach((ele) => {\n if (isSidebarMenuItem(ele)) {\n (ele as any).menuCollapsed = menuCollapsed;\n }\n });\n }, [menuCollapsed]);\n\n useEffect(() => {\n updateChildrenMenuCollapsedState();\n }, [menuCollapsed, updateChildrenMenuCollapsedState]);\n\n useEffect(() => {\n const slotElem = slotRef.current;\n const handleSlotchange = () => {\n updateChildrenMenuCollapsedState();\n };\n slotElem?.addEventListener(\"slotchange\", handleSlotchange);\n\n return () => {\n slotElem?.removeEventListener(\"slotchange\", handleSlotchange);\n };\n }, [updateChildrenMenuCollapsedState]);\n\n return [slotRef];\n}\n\nexport const SIDE_BAR_HAS_BEEN_USED = \"side-bar-has-been-used\";\nexport const SIDE_BAR_EXPAND_STATE = \"side-bar-expand-state\";\nexport const SIDE_BAR_RESIZE_WIDTH = \"side-bar-resize-width\";\n\nexport enum ExpandedState {\n Collapsed = \"collapsed\",\n Hovered = \"hovered\",\n Expanded = \"expanded\",\n}\n\nexport const sideBarWidth =\n parseInt(getCssPropertyValue(\"--side-bar-width\", document.body), 10) || 220;\nexport const sideBarCollapsedWidth =\n parseInt(\n getCssPropertyValue(\"--side-bar-collapsed-width\", document.body),\n 10\n ) || 60;\n\ninterface ContextOfSidebarMenu {\n selectedKeys: string[];\n openedKeys: string[];\n matchedKeys: string[];\n}\n\nconst SidebarMenuContext = createContext<ContextOfSidebarMenu>({\n selectedKeys: [],\n openedKeys: [],\n matchedKeys: [],\n});\n\nconst WrappedSidebarMenu = wrapBrick<EoSidebarMenu, EoSidebarMenuProps>(\n \"eo-sidebar-menu\"\n);\nconst WrappedSidebarMenuItem = wrapBrick<\n EoSidebarMenuItem,\n EoSidebarMenuItemProps\n>(\"eo-sidebar-menu-item\");\nconst WrappedSidebarMenuGroup = wrapBrick<\n EoSidebarMenuGroup,\n EoSidebarMenuGroupProps\n>(\"eo-sidebar-menu-group\");\nconst WrappedSidebarMenuSubmenu = wrapBrick<\n EoSidebarMenuSubmenu,\n EoSidebarMenuSubmenuProps\n>(\"eo-sidebar-menu-submenu\");\n\nfunction MenuSimpleItem(\n props: SidebarMenuSimpleItem & { id?: string; inSubmenu?: boolean }\n) {\n const { to, href, target, icon, text, id, inSubmenu } = props;\n const { selectedKeys } = useContext(SidebarMenuContext);\n\n return (\n <WrappedSidebarMenuItem\n url={to as any}\n href={href}\n target={target as any}\n icon={icon}\n inSubmenu={inSubmenu}\n selected={selectedKeys.includes(id!)}\n >\n {text}\n </WrappedSidebarMenuItem>\n );\n}\n\nfunction MenuGroup(\n props: SidebarMenuGroup & { id?: string; top?: boolean; inSubmenu?: boolean }\n) {\n const { title, items, id, top, inSubmenu } = props;\n const { matchedKeys } = useContext(SidebarMenuContext);\n const isSelected = id && matchedKeys.includes(id);\n\n if (items?.length > 0) {\n return (\n <WrappedSidebarMenuGroup selected={!!isSelected} collapsable={!top}>\n <span slot=\"title\">{title}</span>\n {props.items.map((item) => {\n return (\n <MenuItem\n key={item.key}\n {...item}\n id={item.key}\n top={false}\n inSubmenu={inSubmenu}\n />\n );\n })}\n </WrappedSidebarMenuGroup>\n );\n }\n return null;\n}\n\nfunction MenuSubmenu(props: SidebarMenuGroup & { id?: string }) {\n const { title, icon, items, id } = props;\n const { openedKeys, matchedKeys } = useContext(SidebarMenuContext);\n const isSelected = id && matchedKeys.includes(id);\n\n if (items?.length > 0) {\n return (\n <WrappedSidebarMenuSubmenu\n icon={icon}\n collapsed={!openedKeys.includes(id!)}\n selected={!!isSelected}\n >\n <span slot=\"title\">{title}</span>\n {props.items.map((item) => {\n return (\n <MenuItem\n key={item.key}\n {...item}\n id={item.key}\n top={false}\n inSubmenu={true}\n />\n );\n })}\n </WrappedSidebarMenuSubmenu>\n );\n }\n return null;\n}\n\nfunction MenuItem(\n props: SidebarMenuItem & { id?: string; top?: boolean; inSubmenu?: boolean }\n) {\n if (props.type === \"subMenu\") {\n return <MenuSubmenu {...props} />;\n } else if (props.type === \"group\") {\n return <MenuGroup {...props} />;\n } else {\n return <MenuSimpleItem {...(props as SidebarMenuSimpleItem)} />;\n }\n}\n\nexport function SidebarMenu(props: {\n menu?: SidebarMenuType;\n expandedState: ExpandedState;\n selectedKeys?: string[];\n openedKeys?: string[];\n matchedKeys?: string[];\n}) {\n const { menu, expandedState, selectedKeys, openedKeys, matchedKeys } = props;\n\n return (\n <SidebarMenuContext.Provider\n value={{\n selectedKeys: selectedKeys || [],\n openedKeys: openedKeys || [],\n matchedKeys: matchedKeys || [],\n }}\n >\n <WrappedSidebarMenu\n menuCollapsed={expandedState === ExpandedState.Collapsed}\n >\n {menu?.menuItems?.map((item) => {\n return <MenuItem key={item.key} {...item} id={item.key} top={true} />;\n })}\n </WrappedSidebarMenu>\n </SidebarMenuContext.Provider>\n );\n}\n","import React, { useCallback, useEffect, useRef } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport { useUpdateMenuCollapsedState } from \"../utils.js\";\nimport classNames from \"classnames\";\n\nconst { defineElement, property } = createDecorators();\n\nexport interface EoSidebarMenuGroupProps {\n selected?: boolean;\n collapsable?: boolean;\n collapsed?: boolean;\n menuCollapsed?: boolean;\n}\n\n/**\n * 侧栏菜单分组\n * @slot title - 分组标题\n * @category navigation\n */\nexport\n@defineElement(\"eo-sidebar-menu-group\", {\n styleTexts: [styleText],\n})\nclass EoSidebarMenuGroup\n extends ReactNextElement\n implements EoSidebarMenuGroupProps\n{\n /**\n * 是否允许折叠\n */\n @property({ type: Boolean })\n accessor collapsable: boolean | undefined;\n\n /**\n * 是否折叠\n */\n @property({ type: Boolean })\n accessor collapsed: boolean | undefined;\n\n /**\n * 是否选中\n * */\n @property({ type: Boolean })\n accessor selected: boolean | undefined;\n\n /**\n * 菜单整体是否收起状态\n */\n @property({ type: Boolean })\n accessor menuCollapsed: boolean | undefined;\n\n #handleCollapseChang = (collapsed: boolean) => {\n this.collapsed = collapsed;\n };\n\n render() {\n return (\n <EoSidebarMenuGroupComponent\n collapsable={this.collapsable}\n selected={this.selected}\n collapsed={this.collapsed}\n menuCollapsed={this.menuCollapsed}\n onCollapseChange={this.#handleCollapseChang}\n />\n );\n }\n}\n\ninterface EoSidebarMenuGroupComponentProps extends EoSidebarMenuGroupProps {\n onCollapseChange?: (collapsed: boolean) => void;\n}\n\nexport function EoSidebarMenuGroupComponent(\n props: EoSidebarMenuGroupComponentProps\n) {\n const {\n collapsable = false,\n collapsed,\n menuCollapsed,\n onCollapseChange,\n } = props;\n\n const [slotRef] = useUpdateMenuCollapsedState(menuCollapsed);\n\n const titleRef = useRef<HTMLDivElement>(null);\n\n const handleClick = useCallback(() => {\n !menuCollapsed && onCollapseChange?.(!collapsed);\n }, [menuCollapsed, onCollapseChange, collapsed]);\n\n useEffect(() => {\n const titleElem = titleRef.current;\n titleElem?.addEventListener(\"click\", handleClick);\n\n return () => {\n titleElem?.removeEventListener(\"click\", handleClick);\n };\n }, [handleClick]);\n\n return (\n <div\n className={classNames(\"menu-group\", {\n \"menu-group-collapsed\": menuCollapsed ? true : collapsed,\n })}\n >\n <div className=\"menu-group-title\" ref={titleRef}>\n <span className=\"menu-group-title-icon-container\">\n <span className=\"menu-group-title-icon\"></span>\n </span>\n <div className=\"menu-group-title-text\">\n <slot name=\"title\" />\n </div>\n {collapsable && <span className=\"menu-group-arrow\" />}\n </div>\n <div className=\"menu-group-list\">\n <div className=\"menu-group-list-inner\">\n <slot ref={slotRef} />\n </div>\n </div>\n </div>\n );\n}\n","import React, { useCallback, useEffect, useRef } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport classNames from \"classnames\";\nimport { useUpdateMenuCollapsedState } from \"../utils.js\";\n\nconst { defineElement, property } = createDecorators();\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport interface EoSidebarMenuSubmenuProps {\n icon?: GeneralIconProps;\n selected?: boolean;\n collapsed?: boolean;\n menuCollapsed?: boolean;\n}\n\n/**\n * 侧栏菜单子菜单\n * @slot title - 子菜单标题\n * @category navigation\n */\nexport\n@defineElement(\"eo-sidebar-menu-submenu\", {\n styleTexts: [styleText],\n})\nclass EoSidebarMenuSubmenu\n extends ReactNextElement\n implements EoSidebarMenuSubmenuProps\n{\n /**\n * 菜单的图标\n */\n @property({ attribute: false })\n accessor icon: GeneralIconProps | undefined;\n\n /**\n * 是否选中\n * */\n @property({ type: Boolean })\n accessor selected: boolean | undefined;\n\n /**\n * 是否折叠\n */\n @property({ type: Boolean })\n accessor collapsed: boolean | undefined;\n\n /**\n * 菜单整体是否收起状态\n */\n @property({ type: Boolean })\n accessor menuCollapsed: boolean | undefined;\n\n #handleCollapseChang = (collapsed: boolean) => {\n this.collapsed = collapsed;\n };\n\n render() {\n return (\n <EoSidebarMenuSubmenuComponent\n icon={this.icon}\n selected={this.selected}\n collapsed={this.collapsed}\n menuCollapsed={this.menuCollapsed}\n onCollapseChange={this.#handleCollapseChang}\n />\n );\n }\n}\n\ninterface EoSidebarMenuSubmenuComponentProps extends EoSidebarMenuSubmenuProps {\n onCollapseChange?: (collapsed: boolean) => void;\n}\n\nexport function EoSidebarMenuSubmenuComponent(\n props: EoSidebarMenuSubmenuComponentProps\n) {\n const { icon, collapsed, menuCollapsed, onCollapseChange } = props;\n\n const [slotRef] = useUpdateMenuCollapsedState(menuCollapsed);\n\n const titleRef = useRef<HTMLDivElement>(null);\n\n const handleClick = useCallback(() => {\n !menuCollapsed && onCollapseChange?.(!collapsed);\n }, [menuCollapsed, onCollapseChange, collapsed]);\n\n useEffect(() => {\n const titleElem = titleRef.current;\n titleElem?.addEventListener(\"click\", handleClick);\n\n return () => {\n titleElem?.removeEventListener(\"click\", handleClick);\n };\n }, [handleClick]);\n\n return (\n <div\n className={classNames(\"menu-submenu\", {\n \"menu-submenu-collapsed\": menuCollapsed ? true : collapsed,\n })}\n >\n <div className=\"menu-submenu-title\" ref={titleRef}>\n <span className=\"menu-submenu-title-icon-container\">\n <WrappedIcon {...icon!} className=\"menu-submenu-title-icon\" />\n </span>\n <span className=\"menu-submenu-title-text\">\n <slot name=\"title\" />\n </span>\n <span className=\"menu-submenu-arrow\" />\n </div>\n <div className=\"menu-sub\">\n <div className=\"menu-sub-inner\">\n <slot ref={slotRef} />\n </div>\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport { useUpdateMenuCollapsedState } from \"../utils.js\";\n\nconst { defineElement, property } = createDecorators();\n\nexport interface EoSidebarMenuProps {\n menuCollapsed?: boolean;\n}\n\n/**\n * 侧栏菜单\n *\n * @category navigation\n */\nexport\n@defineElement(\"eo-sidebar-menu\", {\n styleTexts: [styleText],\n})\nclass EoSidebarMenu extends ReactNextElement implements EoSidebarMenuProps {\n /**\n * 菜单整体是否收起状态\n */\n @property({ type: Boolean })\n accessor menuCollapsed: boolean | undefined;\n\n render() {\n return <EoSidebarMenuComponent menuCollapsed={this.menuCollapsed} />;\n }\n}\n\nexport function EoSidebarMenuComponent(props: EoSidebarMenuProps) {\n const { menuCollapsed } = props;\n\n const [slotRef] = useUpdateMenuCollapsedState(menuCollapsed);\n\n return (\n <div className=\"sidebar-menu\">\n <div className=\"sidebar-menu-item-list\">\n <slot ref={slotRef} />\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nconst SvgFixed = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} viewBox=\"0 0 20 20\" {...props}><g fill=\"none\" fillRule=\"evenodd\"><path d=\"M0 0h20v20H0z\" /><path fill=\"#595959\" fillRule=\"nonzero\" d=\"m14.599 11.59-1.685-1.606-.348-4.876.93-1.044s.617-.93-.62-1.045L7.323 3s-.85.657-.097 1.296l.754.755-.385 4.76-1.49 1.683s-.388.774.328 1.065l2.961-.02.668 3.887H6.388V17h7.832v-.574h-3.743l.6-3.946 3.154.097s.812-.464.368-.986\" /></g></svg>;\nexport default SvgFixed;","import * as React from \"react\";\nconst SvgToFixed = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} viewBox=\"0 0 20 20\" {...props}><g fill=\"none\" fillRule=\"evenodd\"><path d=\"M0 0h20v20H0z\" /><path fill=\"#595959\" fillRule=\"nonzero\" d=\"m13.06 3.765 3.22 3.08c.42.28.42.84.14 1.26-.42.42-.98.42-1.26.14l-.14-.14-.28-.28-3.22 4.62.98.98c.28.42.28.98-.14 1.26-.28.28-.7.28-1.12 0l-5.88-6.02q-.42-.63 0-1.26c.28-.28.84-.28 1.12 0l.98.98 4.62-3.22-.14-.14c-.42-.42-.42-.84-.14-1.26.28-.28.84-.42 1.26 0m-4.76 9.1-1.12-1.12c-.98 1.12-2.52 2.8-2.8 3.22-.42.42-.7.98-.98 1.54q1.05-.21 1.68-.84c.42-.28 2.1-1.82 3.22-2.8\" /></g></svg>;\nexport default SvgToFixed;","export enum K {\n CLICK_TO_FIX_NAVIGATION = \"CLICK_TO_FIX_NAVIGATION\",\n UNPIN_NAVIGATION = \"UNPIN_NAVIGATION\",\n FIXED_NAVIGATION = \"FIXED_NAVIGATION\",\n}\n\nconst en: Locale = {\n UNPIN_NAVIGATION: \"Unpin navigation\",\n FIXED_NAVIGATION: \"Fixed navigation\",\n CLICK_TO_FIX_NAVIGATION: \"Click to {{action}}\",\n};\n\nconst zh: Locale = {\n UNPIN_NAVIGATION: \"取消固定\",\n FIXED_NAVIGATION: \"固定导航\",\n CLICK_TO_FIX_NAVIGATION: \"点击{{action}}\",\n};\n\nexport const NS = \"bricks/nav/eo-sidebar\";\n\nexport const locales = { en, zh };\n\ntype Locale = { [key in K]: string };\n","import React, {\n MouseEventHandler,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport type { EoTooltip, ToolTipProps } from \"@next-bricks/basic/tooltip\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { SidebarMenu as SidebarMenuType } from \"@next-shared/general/types\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport FixedSvg from \"../images/fixed.svg\";\nimport ToFixedSvg from \"../images/toFixed.svg\";\nimport { debounceByAnimationFrame } from \"@next-shared/general/debounceByAnimationFrame\";\nimport { JsonStorage } from \"@next-shared/general/JsonStorage\";\nimport {\n ExpandedState,\n SIDE_BAR_EXPAND_STATE,\n SIDE_BAR_HAS_BEEN_USED,\n SIDE_BAR_RESIZE_WIDTH,\n SidebarMenu,\n sideBarCollapsedWidth,\n sideBarWidth,\n} from \"./utils.js\";\nimport { useTranslation, initializeReactI18n } from \"@next-core/i18n/react\";\nimport { K, NS, locales } from \"./i18n.js\";\nimport classNames from \"classnames\";\nimport { initMenuItemAndMatchCurrentPathKeys } from \"@next-shared/general/menu\";\nimport { UnregisterCallback } from \"history\";\nimport { getHistory, getRuntime } from \"@next-core/runtime\";\nimport { useCurrentApp } from \"@next-core/react-runtime\";\n\ninitializeReactI18n(NS, locales);\n\nconst { defineElement, property, event } = createDecorators();\n\nconst WrappedTooltip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport interface EoSidebarProps {\n menu: SidebarMenuType;\n expandedState?: ExpandedState;\n hiddenFixedIcon?: boolean;\n position?: \"static\" | \"fixed\";\n}\n\nexport interface EoSidebarEvents {\n \"actual.width.change\": CustomEvent<number>;\n \"expanded.state.change\": CustomEvent<ExpandedState>;\n}\n\nexport interface EoSidebarEventsMapping {\n onActualWidthChange: \"actual.width.change\";\n onExpandedStateChange: \"expanded.state.change\";\n}\n\n/**\n * 侧边栏\n *\n * @category navigation\n */\nexport\n@defineElement(\"eo-sidebar\", {\n styleTexts: [styleText],\n})\nclass EoSidebar extends ReactNextElement implements EoSidebarProps {\n /**\n * 菜单数据\n */\n @property({ attribute: false })\n accessor menu!: SidebarMenuType;\n\n /**\n * 是否隐藏固定按钮\n */\n @property({ type: Boolean })\n accessor hiddenFixedIcon: boolean | undefined;\n\n /**\n * 侧栏状态\n */\n @property()\n accessor expandedState: ExpandedState | undefined;\n\n /**\n * 设置定位方式:静态定位或固定定位。\n *\n * @default \"fixed\"\n */\n @property()\n accessor position: \"static\" | \"fixed\" | undefined;\n\n /**\n * 宽度变化时触发\n * @detail 当前宽度\n */\n @event({ type: \"actual.width.change\" })\n accessor #actualWidthChangeEvent!: EventEmitter<number>;\n #handleActualWidthChange = (actualWidth: number): void => {\n this.#actualWidthChangeEvent.emit(actualWidth);\n };\n\n /**\n * 侧栏状态变化时触发\n * @detail 侧栏状态\n */\n @event({ type: \"expanded.state.change\" })\n accessor #expandedStateChangeEvent!: EventEmitter<ExpandedState>;\n #handleExpandedStateChange = (state: ExpandedState): void => {\n this.expandedState = state;\n this.#expandedStateChangeEvent.emit(state);\n };\n\n render() {\n return (\n <EoSidebarComponent\n menu={this.menu}\n expandedState={this.expandedState}\n hiddenFixedIcon={this.hiddenFixedIcon}\n position={this.position}\n onActualWidthChange={this.#handleActualWidthChange}\n onExpandedStateChange={this.#handleExpandedStateChange}\n />\n );\n }\n}\n\ninterface EoSidebarComponentProps extends EoSidebarProps {\n onActualWidthChange?: (actualWidth: number) => void;\n onExpandedStateChange?: (state: ExpandedState) => void;\n}\n\nexport function EoSidebarComponent(props: EoSidebarComponentProps) {\n const { t } = useTranslation(NS);\n const {\n menu,\n hiddenFixedIcon,\n position,\n onActualWidthChange,\n onExpandedStateChange,\n } = props;\n\n const showUserDefinedIcon = React.useMemo(\n () => getRuntime()?.getFeatureFlags()[\"sidebar-show-user-defined-icon\"],\n []\n );\n\n const storage = useMemo(() => new JsonStorage(localStorage), []);\n const history = getHistory();\n const currentApp = useCurrentApp();\n const [location, setLocation] = useState(history.location);\n const { pathname, search } = location;\n\n const [isFirstUsedTooltip, setIsFirstUsedTooltip] = useState<boolean>(\n !storage.getItem(SIDE_BAR_HAS_BEEN_USED)\n );\n const [showContentShadow, setShowContentShadow] = useState<boolean>();\n const [dragging, setDragging] = useState<boolean>();\n const [expandedState, setExpandedState] = useState<ExpandedState>(\n props.expandedState ||\n storage.getItem(SIDE_BAR_EXPAND_STATE) ||\n ExpandedState.Collapsed\n );\n\n const titleIcon = showUserDefinedIcon ? menu?.icon : currentApp?.menuIcon;\n\n const { selectedKeys, openedKeys, matchedKeys } = useMemo(() => {\n return initMenuItemAndMatchCurrentPathKeys(\n menu?.menuItems ?? [],\n pathname,\n search,\n \"\"\n );\n }, [menu?.menuItems, pathname, search]);\n\n useEffect(() => {\n const unListen: UnregisterCallback = history.listen((location) => {\n setLocation(location);\n });\n return unListen;\n }, [history]);\n\n const contentBottomPlaceholderRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (contentBottomPlaceholderRef.current) {\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.target === contentBottomPlaceholderRef.current) {\n setShowContentShadow(!entry.isIntersecting);\n }\n });\n },\n { threshold: 1 }\n );\n\n observer.observe(contentBottomPlaceholderRef.current);\n\n return () => {\n observer.disconnect();\n };\n }\n }, []);\n\n useEffect(() => {\n setExpandedState(\n props.expandedState ||\n storage.getItem(SIDE_BAR_EXPAND_STATE) ||\n ExpandedState.Collapsed\n );\n }, [props.expandedState]);\n\n useEffect(() => {\n storage.setItem(\n SIDE_BAR_EXPAND_STATE,\n expandedState === ExpandedState.Expanded\n ? ExpandedState.Expanded\n : ExpandedState.Collapsed\n );\n }, [expandedState]);\n\n const handleFixedIconClick = (): void => {\n setIsFirstUsedTooltip(false);\n storage.setItem(SIDE_BAR_HAS_BEEN_USED, true);\n\n setExpandedState((state) => {\n const newState =\n state === ExpandedState.Expanded\n ? ExpandedState.Collapsed\n : ExpandedState.Expanded;\n\n newState !== state && onExpandedStateChange?.(newState);\n return newState;\n });\n };\n\n const [expandedWidth, setExpandedWidth] = useState<number>(() => {\n // Use parseInt to compatible non-number types\n let memorizedWidth = parseInt(storage.getItem(SIDE_BAR_RESIZE_WIDTH), 10);\n if (memorizedWidth < sideBarWidth || Number.isNaN(memorizedWidth)) {\n memorizedWidth = sideBarWidth;\n }\n return memorizedWidth;\n });\n\n useEffect(() => {\n storage.setItem(SIDE_BAR_RESIZE_WIDTH, expandedWidth);\n }, [expandedWidth]);\n\n const containerRef = useRef<HTMLDivElement>(null);\n\n const handleResizeDown: MouseEventHandler = (e) => {\n setDragging(true);\n\n // Prevent text selection when dragging\n if (e.cancelable) {\n e.preventDefault();\n }\n\n const offsetX = containerRef.current?.getBoundingClientRect().left ?? 0;\n\n const drag = debounceByAnimationFrame((e: MouseEvent) => {\n const x = e.clientX - offsetX;\n const width = x >= sideBarWidth ? x : sideBarWidth;\n\n setExpandedWidth(width);\n });\n const dragEnd = (e: MouseEvent) => {\n setDragging(false);\n e.preventDefault();\n\n window.removeEventListener(\"mousemove\", drag);\n window.removeEventListener(\"mouseup\", dragEnd);\n };\n\n window.addEventListener(\"mousemove\", drag, { passive: true });\n window.addEventListener(\"mouseup\", dragEnd);\n };\n\n const handleMouseEnter = (): void => {\n setExpandedState((state) => {\n const newState =\n state === ExpandedState.Expanded\n ? ExpandedState.Expanded\n : ExpandedState.Hovered;\n\n newState !== state && onExpandedStateChange?.(newState);\n return newState;\n });\n };\n\n const handleMouseLeave = (): void => {\n setExpandedState((state) => {\n const newState =\n state === ExpandedState.Expanded\n ? ExpandedState.Expanded\n : ExpandedState.Collapsed;\n\n newState !== state && onExpandedStateChange?.(newState);\n return newState;\n });\n };\n\n const sidebarActualWidth = useMemo(() => {\n return expandedState === ExpandedState.Expanded\n ? expandedWidth\n : sideBarCollapsedWidth;\n }, [expandedState, expandedWidth]);\n\n useEffect(() => {\n onActualWidthChange?.(sidebarActualWidth);\n }, [onActualWidthChange, sidebarActualWidth]);\n\n const getContainerWidth = (inner?: boolean) => {\n // With static position, when not expanded, the outer container will keep\n // collapsed even if hovered, while only the inner container will expand.\n if (position === \"static\") {\n return expandedState === ExpandedState.Expanded ||\n (inner && expandedState === ExpandedState.Hovered)\n ? expandedWidth\n : sideBarCollapsedWidth;\n }\n return expandedState === ExpandedState.Collapsed\n ? sideBarCollapsedWidth\n : expandedWidth;\n };\n\n useEffect(() => {\n const container = containerRef.current;\n container?.addEventListener(\"mouseenter\", handleMouseEnter);\n container?.addEventListener(\"mouseleave\", handleMouseLeave);\n\n return () => {\n container?.removeEventListener(\"mouseenter\", handleMouseEnter);\n container?.removeEventListener(\"mouseleave\", handleMouseLeave);\n };\n }, []);\n\n return (\n <div\n className={classNames(\"sidebar-container\", `state-${expandedState}`, {\n dragging,\n })}\n style={{ width: getContainerWidth() }}\n ref={containerRef}\n data-testid=\"side-bar\"\n >\n <div className=\"inner\" style={{ width: getContainerWidth(true) }}>\n <div className=\"header\">\n <div className=\"menu-title\">\n <div className={classNames(\"menu-title-icon-container\")}>\n {titleIcon ? (\n <WrappedIcon\n {...(titleIcon as GeneralIconProps)}\n className=\"menu-title-icon\"\n />\n ) : (\n <span className=\"menu-title-point\" />\n )}\n </div>\n <div className=\"menu-title-text\" title={menu?.title}>\n {menu?.title}\n </div>\n </div>\n </div>\n\n <div\n className={classNames(\"content\", {\n \"show-shadow\": showContentShadow,\n })}\n >\n <SidebarMenu\n selectedKeys={selectedKeys}\n openedKeys={openedKeys}\n matchedKeys={matchedKeys}\n menu={menu}\n expandedState={expandedState}\n />\n <div ref={contentBottomPlaceholderRef} />\n </div>\n\n <div className=\"footer\">\n {!hiddenFixedIcon && (\n <WrappedTooltip\n content={\n (expandedState === ExpandedState.Expanded\n ? isFirstUsedTooltip\n ? t(K.CLICK_TO_FIX_NAVIGATION, {\n action: t(K.UNPIN_NAVIGATION),\n })\n : t(K.UNPIN_NAVIGATION)\n : isFirstUsedTooltip\n ? t(K.CLICK_TO_FIX_NAVIGATION, {\n action: t(K.FIXED_NAVIGATION),\n })\n : t(K.FIXED_NAVIGATION)) as string\n }\n >\n <i className=\"fixed-icon\" onClick={handleFixedIconClick}>\n <FixedSvg\n style={{\n display:\n expandedState === ExpandedState.Expanded\n ? undefined\n : \"none\",\n }}\n />\n <ToFixedSvg\n style={{\n display:\n expandedState === ExpandedState.Expanded\n ? \"none\"\n : undefined,\n }}\n />\n </i>\n </WrappedTooltip>\n )}\n </div>\n {expandedState === ExpandedState.Expanded && (\n <span className=\"resize-line\" onMouseDown={handleResizeDown} />\n )}\n </div>\n </div>\n );\n}\n","export type SimpleFunction<P extends unknown[] = unknown[], R = unknown> = (\n ...args: P\n) => R;\n\n// The debounce function receives our function as a parameter\nexport function debounceByAnimationFrame<P extends unknown[]>(\n fn: SimpleFunction<P, void>\n): SimpleFunction<P, void> & { cancel: () => void } {\n // This holds the requestAnimationFrame reference, so we can cancel it if we wish\n let frame: number;\n\n const cancel = () => cancelAnimationFrame(frame);\n\n // The debounce function returns a new function that can receive a variable number of arguments\n const func = (...params: P) => {\n // If the frame variable has been defined, clear it now, and queue for next frame\n if (frame) {\n cancel();\n }\n\n // Queue our function call for the next frame\n frame = requestAnimationFrame(() => {\n // Call our function and pass any params we received\n fn(...params);\n });\n };\n\n func.cancel = cancel;\n\n return func;\n}\n","import React, { useState, useEffect, useCallback } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport { getHistory } from \"@next-core/runtime\";\nimport { UnregisterCallback } from \"history\";\nimport \"@next-core/theme\";\nimport {\n SidebarMenuSimpleItem,\n SidebarMenuGroup,\n SidebarMenuItem,\n} from \"@next-shared/general/types\";\nimport {\n initMenuItemAndMatchCurrentPathKeys,\n isGroup,\n isSubMenu,\n} from \"@next-shared/general/menu\";\nimport { Menu as MenuComponent, SidebarMenu } from \"@next-bricks/basic/menu\";\nimport { Link, LinkProps, Target } from \"@next-bricks/basic/link\";\nimport {\n EoMenuItemSubMenu,\n EoMenuSubMenuProps,\n} from \"@next-bricks/basic/menu-item-sub-menu\";\nimport { EoMenuGroup } from \"@next-bricks/basic/menu-group\";\nimport { MenuComponentProps, MenuItem } from \"@next-bricks/basic/menu-item\";\nimport styleText from \"./styles.shadow.css\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport classNames from \"classnames\";\n\n// --- NOTE: uncomment these lines below to enable i18n for your brick ---\n// import { useTranslation, initializeReactI18n } from \"@next-core/i18n/react\";\n// import { K, NS, locales } from \"./i18n.js\";\n// initializeReactI18n(NS, locales);\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nconst WrappedMenu = wrapBrick<MenuComponent, any>(\"eo-menu\");\n\nconst WrappedMenuGroup = wrapBrick<EoMenuGroup, any>(\"eo-menu-group\");\n\nconst WrapperMenuItemSubMenu = wrapBrick<EoMenuItemSubMenu, EoMenuSubMenuProps>(\n \"eo-menu-item-sub-menu\"\n);\n\nconst WrappedMenuItem = wrapBrick<MenuItem, MenuComponentProps>(\"eo-menu-item\");\n\nconst WrappedLinkItem = wrapBrick<Link, LinkProps>(\"eo-link\");\n\ninterface SidebarSubMenuProps {\n menu?: SidebarMenu;\n showTooltip?: boolean;\n}\n\nconst { defineElement, property } = createDecorators();\n\n/**\n * 构件 `eo-sidebar-sub-menu`\n * @category navigation\n */\nexport\n@defineElement(\"eo-sidebar-sub-menu\", {\n styleTexts: [styleText],\n})\nclass EoSidebarSubMenu extends ReactNextElement {\n /**\n * 菜单项\n */\n @property({\n attribute: false,\n })\n accessor menu: SidebarMenu | undefined;\n\n render() {\n return <EoSidebarSubMenuComponent menu={this.menu} />;\n }\n}\n\nexport function EoSidebarSubMenuComponent(props: SidebarSubMenuProps) {\n // const { t } = useTranslation(NS);\n // const hello = t(K.HELLO);\n const { menu } = props;\n\n const history = getHistory();\n const [location, setLocation] = useState(history.location);\n const { pathname, search } = location;\n\n const [selectedKey, setSelectedKey] = useState<string[]>([]);\n const [openedKeys, setOpenedKeys] = useState<string[]>([]);\n\n const setSelected = useCallback((): void => {\n const { selectedKeys, openedKeys } = initMenuItemAndMatchCurrentPathKeys(\n menu?.menuItems ?? [],\n pathname,\n search,\n \"\"\n );\n setSelectedKey(selectedKeys);\n setOpenedKeys(openedKeys);\n }, [menu?.menuItems, pathname, search]);\n\n useEffect(() => {\n const unListen: UnregisterCallback = history.listen((location) => {\n setLocation(location);\n });\n setSelected();\n return unListen;\n }, [history, setSelected]);\n\n const getMenuItemIndent = useCallback((item: SidebarMenuItem): number => {\n return ((item.key?.split(\".\")?.length as number) - 1) * 16;\n }, []);\n\n const renderSimpleMenuItem = (\n item: SidebarMenuSimpleItem,\n options?: {\n inSubmenu?: boolean;\n }\n ) => {\n return (\n <WrappedMenuItem\n className={classNames(\"menu-item\", {\n \"in-submenu\": options?.inSubmenu,\n })}\n style={{ paddingLeft: getMenuItemIndent(item) || 16 }}\n icon={item.icon}\n active={item.key ? selectedKey.includes(item.key) : false}\n >\n <WrappedLinkItem\n className=\"menu-item-link\"\n type=\"plain\"\n url={item.to as string}\n href={item.href}\n title={item.text}\n target={item.target as Target}\n >\n <span\n className={classNames(\"menu-item-text\", {\n \"item-has-icon\": item.icon,\n })}\n >\n {item.text}\n </span>\n </WrappedLinkItem>\n </WrappedMenuItem>\n );\n };\n\n const renderSubMenuItem = (item: SidebarMenuGroup) => {\n // istanbul ignore else\n if (item.items?.length > 0) {\n return (\n <WrapperMenuItemSubMenu\n className=\"menu-sub-item\"\n icon={item.icon}\n titleStyle={{ paddingLeft: getMenuItemIndent(item) }}\n bodyStyle={{ paddingLeft: getMenuItemIndent(item) / 2 }}\n collapsed={!openedKeys.includes(item.key!)}\n >\n <span slot=\"title\">{item.title}</span>\n {item.items.map((innerItem) => (\n <React.Fragment key={innerItem.key}>\n {renderMenuItem(innerItem, {\n inSubmenu: true,\n })}\n </React.Fragment>\n ))}\n </WrapperMenuItemSubMenu>\n );\n }\n };\n\n const renderGroupMenuItem = (item: SidebarMenuGroup) => {\n // istanbul ignore else\n if (item.items?.length > 0) {\n return (\n <WrappedMenuGroup>\n <span slot=\"title\">{item.title}</span>\n\n {item.items.map((innerItem) => {\n return (\n <React.Fragment key={innerItem.key}>\n {renderMenuItem(innerItem)}\n </React.Fragment>\n );\n })}\n </WrappedMenuGroup>\n );\n }\n };\n\n function renderMenuItem(\n item: SidebarMenuItem,\n options?:\n | {\n inSubmenu?: boolean;\n }\n | undefined\n ) {\n return isSubMenu(item as SidebarMenuGroup)\n ? renderSubMenuItem(item as SidebarMenuGroup)\n : isGroup(item)\n ? renderGroupMenuItem(item)\n : renderSimpleMenuItem(item, options);\n }\n\n return (\n <WrappedMenu className=\"menu-container\" mode=\"vertical\">\n {menu?.title && (\n <div className=\"header\">\n {menu?.icon && <WrappedIcon {...(menu?.icon as GeneralIconProps)} />}\n <span className=\"title\">{menu?.title}</span>\n </div>\n )}\n <div className=\"content\">\n {menu?.menuItems.map((item) => {\n return (\n <React.Fragment key={item.key}>\n {renderMenuItem(item)}\n </React.Fragment>\n );\n })}\n </div>\n </WrappedMenu>\n );\n}\n","import React from \"react\";\nimport { createDecorators, EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport { ReactUseMultipleBricks } from \"@next-core/react-runtime\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport classNames from \"classnames\";\nimport type { EoTooltip, ToolTipProps } from \"@next-bricks/basic/tooltip\";\nimport { UseBrickConf } from \"@next-core/types\";\n\nconst { defineElement, property, event } = createDecorators();\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedTooltip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\n\n/**\n * 目录\n */\nexport\n@defineElement(\"eo-directory\", {\n styleTexts: [styleText],\n})\nclass EoDirectory extends ReactNextElement implements EoDirectoryProps {\n /**\n * 设置定位方式:静态定位或固定定位。\n *\n * @default \"fixed\"\n */\n @property()\n accessor position: \"static\" | \"fixed\" = \"fixed\";\n\n /**\n * 目录标题\n */\n @property()\n accessor directoryTitle: string | undefined;\n\n /**\n * 菜单数据\n * @default []\n * @required\n */\n @property({ attribute: false })\n accessor menuItems: MenuItem[] = [];\n\n /**\n * 后缀 useBrick\n */\n @property({\n attribute: false,\n })\n accessor suffixBrick: { useBrick: UseBrickConf } | undefined;\n\n /**\n * 默认选中高亮的菜单项\n */\n @property({ attribute: false })\n accessor defaultSelectedKeys: string[] | undefined;\n /**\n * 菜单点击,groupKey 表示对应分组的key,data 表示对应菜单项\n * @detail { groupKey: string, data: MenuChildrenItem }\n */\n @event({ type: \"menu.item.click\" })\n accessor #menuItemClickEvent!: EventEmitter<MenuItemClickEventDetail>;\n /**\n * 点击icon,detail为 对应菜单项或者是分组的key\n * @detail { key: string }\n */\n @event({ type: \"suffix.icon.click\" })\n accessor #suffixIconClickEvent!: EventEmitter<{ key: string }>;\n\n #menuItemClick = (data: MenuItemClickEventDetail) => {\n this.#menuItemClickEvent.emit(data);\n };\n #suffixIconClick = (key: string) => {\n this.#suffixIconClickEvent.emit({ key });\n };\n\n render() {\n return (\n <EoDirectoryComponent\n menuItems={this.menuItems}\n directoryTitle={this.directoryTitle}\n suffixIconClick={this.#suffixIconClick}\n menuItemClick={this.#menuItemClick}\n defaultSelectedKeys={this.defaultSelectedKeys}\n suffixBrick={this.suffixBrick}\n />\n );\n }\n}\nexport interface EoDirectoryProps {\n position?: \"static\" | \"fixed\";\n suffixBrick?: { useBrick: UseBrickConf };\n directoryTitle: string | undefined;\n menuItems: MenuItem[];\n menuItemClick?: (data: MenuItemClickEventDetail) => void;\n suffixIconClick?: (key: string) => void;\n defaultSelectedKeys?: string[] | undefined;\n}\ninterface MenuChildrenItem {\n title: string;\n key: string;\n [key: string]: any;\n}\ninterface MenuItem {\n title: string;\n key: string;\n type: \"group\" | \"item\";\n children?: MenuChildrenItem[];\n suffixIcon?: GeneralIconProps;\n suffixIconTooltip?: string;\n suffixIconDisabled?: boolean;\n}\ninterface MenuItemClickEventDetail {\n data: MenuChildrenItem;\n groupKey?: string;\n}\n\nexport function EoDirectoryComponent(props: EoDirectoryProps) {\n const {\n menuItems,\n directoryTitle,\n menuItemClick,\n suffixIconClick,\n defaultSelectedKeys,\n suffixBrick,\n } = props;\n\n return (\n <div className=\"directory-container\">\n {directoryTitle && (\n <div className=\"directory-title\" title={directoryTitle}>\n {directoryTitle}\n </div>\n )}\n <div className=\"directory-menu-list\">\n {menuItems.map((item, index) => {\n return (\n <div\n className={classNames(\"menu-item\", `menu-item-${item.type}`)}\n key={`${item.key}-${index}`}\n >\n <div\n className={classNames(`menu-item-title-${item.type}`)}\n onClick={() =>\n item.type === \"item\" && menuItemClick?.({ data: item })\n }\n >\n <span\n className={classNames(\"menu-title-text\", {\n \"menu-title-text-active\": defaultSelectedKeys?.includes(\n item.key\n ),\n })}\n >\n {item.title}\n </span>\n {suffixBrick?.useBrick ? (\n <ReactUseMultipleBricks\n useBrick={suffixBrick.useBrick}\n data={{ data: item }}\n />\n ) : null}\n {item.suffixIcon && (\n <WrappedTooltip\n content={item.suffixIconTooltip}\n placement=\"top\"\n >\n <WrappedIcon\n {...(item.suffixIcon as GeneralIconProps)}\n className={classNames(\"menu-item-title-suffix-icon\", {\n \"menu-item-title-suffix-icon-disabled\":\n item.suffixIconDisabled,\n })}\n onClick={(e) => {\n e.stopPropagation();\n if (item.suffixIconDisabled) {\n e.preventDefault();\n } else {\n suffixIconClick?.(item.key);\n }\n }}\n />\n </WrappedTooltip>\n )}\n </div>\n {item.type === \"group\" &&\n !!item.children?.length &&\n item.children.map((child, i) => {\n return (\n <div\n className=\"menu-item-title-item\"\n onClick={() =>\n menuItemClick?.({ data: child, groupKey: item.key })\n }\n key={`${child.key}-${i}`}\n >\n <span\n className={classNames(\"menu-title-text\", {\n \"menu-title-text-active\":\n defaultSelectedKeys?.includes(child.key),\n })}\n >\n {child.title}\n </span>\n </div>\n );\n })}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n","import { UseBrickConf } from \"@next-core/types\";\nimport React from \"react\";\nimport { NodeData } from \".\";\n\nexport interface ContextOfDirectoryTree {\n expandedKeysSet: Set<string>;\n selectedKeysSet: Set<string>;\n onExpand: (data: { keys: string[]; node: NodeData }) => void;\n onSelect: (data: { keys: string[]; node: NodeData }) => void;\n suffixBrick?: { useBrick: UseBrickConf };\n}\n\nexport const DirectoryTreeContext = React.createContext<ContextOfDirectoryTree>(\n {\n expandedKeysSet: new Set(),\n selectedKeysSet: new Set(),\n onExpand: () => {},\n onSelect: () => {},\n }\n);\n\nexport const useDirectoryTreeContext = (): ContextOfDirectoryTree =>\n React.useContext(DirectoryTreeContext);\n","import React, { useMemo } from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport { ReactUseMultipleBricks } from \"@next-core/react-runtime\";\nimport {\n EoDirectoryTreeLeaf,\n EoDirectoryTreeLeafEvents,\n EoDirectoryTreeLeafEventsMap,\n EoDirectoryTreeLeafProps,\n} from \"./directory-tree-leaf\";\nimport {\n EoDirectoryTreeInternalNode,\n EoDirectoryTreeInternalNodeEvents,\n EoDirectoryTreeInternalNodeEventsMap,\n EoDirectoryTreeInternalNodeProps,\n} from \"./directory-tree-internal-node\";\nimport { useDirectoryTreeContext } from \"./DirectoryTreeContext\";\nimport { TreeData } from \"./\";\n\nconst WrappedTreeLeaf = wrapBrick<\n EoDirectoryTreeLeaf,\n EoDirectoryTreeLeafProps,\n EoDirectoryTreeLeafEvents,\n EoDirectoryTreeLeafEventsMap\n>(\"eo-directory-tree-leaf\", {\n onSelect: \"select\",\n});\nconst WrappedTreeInternalNode = wrapBrick<\n EoDirectoryTreeInternalNode,\n EoDirectoryTreeInternalNodeProps,\n EoDirectoryTreeInternalNodeEvents,\n EoDirectoryTreeInternalNodeEventsMap\n>(\"eo-directory-tree-internal-node\", {\n onExpand: \"expand\",\n onSelect: \"select\",\n});\n\ninterface TreeLeafProps {\n treeData: TreeData;\n}\n\nfunction TreeLeaf(props: TreeLeafProps) {\n const { treeData } = props;\n const { data, index, depth } = treeData;\n const { selectedKeysSet, onSelect, suffixBrick } = useDirectoryTreeContext();\n\n const nodeData = useMemo(\n () => ({ data, index, depth }),\n [data, index, depth]\n );\n\n return (\n <WrappedTreeLeaf\n depth={depth}\n selected={selectedKeysSet.has(data.key)}\n onSelect={() => {\n const keys = [data.key];\n onSelect({ keys, node: nodeData });\n }}\n >\n <span title={data.title}>{data.title}</span>\n {suffixBrick?.useBrick && (\n <div slot=\"suffix\">\n <ReactUseMultipleBricks\n useBrick={suffixBrick.useBrick}\n data={nodeData}\n />\n </div>\n )}\n </WrappedTreeLeaf>\n );\n}\n\ninterface TreeInternalNodeProps {\n treeData: TreeData;\n}\n\nfunction TreeInternalNode(props: TreeInternalNodeProps) {\n const { treeData } = props;\n const { data, index, depth } = treeData;\n const { expandedKeysSet, onExpand, suffixBrick } = useDirectoryTreeContext();\n\n const nodeData = useMemo(\n () => ({ data, index, depth }),\n [data, index, depth]\n );\n\n return (\n <WrappedTreeInternalNode\n depth={depth}\n expanded={expandedKeysSet.has(data.key)}\n onExpand={(e) => {\n if (e.detail) {\n expandedKeysSet.add(data.key);\n } else {\n expandedKeysSet.delete(data.key);\n }\n const keys = [...expandedKeysSet];\n onExpand({ keys, node: nodeData });\n }}\n >\n <span slot=\"label\" title={data.title}>\n {data.title}\n </span>\n {suffixBrick?.useBrick && (\n <div slot=\"suffix\">\n <ReactUseMultipleBricks\n useBrick={suffixBrick.useBrick}\n data={nodeData}\n />\n </div>\n )}\n </WrappedTreeInternalNode>\n );\n}\n\ninterface TreeNodeProps {\n treeData: TreeData;\n}\n\nfunction TreeNode(props: TreeNodeProps) {\n const { treeData } = props;\n const isLeaf = !Array.isArray(treeData.children);\n\n return isLeaf ? (\n <TreeLeaf treeData={treeData} />\n ) : (\n <TreeInternalNode treeData={treeData} />\n );\n}\n\ninterface TreeProps {\n treeData: TreeData[];\n}\n\nexport function Tree(props: TreeProps) {\n const { treeData } = props;\n\n return treeData.map((v) => {\n return <TreeNode key={v.key} treeData={v} />;\n });\n}\n","import { get, isNil } from \"lodash\";\nimport { TreeData, TreeItem } from \"./index\";\n\nexport function getAllExpandableKeys(data: TreeItem[]): string[] {\n return data.reduce((pre, cur) => {\n const isLeaf = !Array.isArray(cur.children);\n\n if (!isLeaf) {\n const keys = [cur.key].concat(\n getAllExpandableKeys(cur.children as TreeItem[])\n );\n return pre.concat(keys);\n } else {\n return pre;\n }\n }, [] as string[]);\n}\n\nexport function getExpandableKeysAccordingToSelectedKeys(\n data: TreeItem[],\n selectedKeysSet: Set<string>\n): string[] {\n return data.reduce((pre, cur) => {\n const isLeaf = !Array.isArray(cur.children);\n\n if (!isLeaf) {\n const childrenMatched = cur.children?.some((child) =>\n selectedKeysSet.has(child.key)\n );\n const childrenExpandableKeys = getExpandableKeysAccordingToSelectedKeys(\n cur.children as TreeItem[],\n selectedKeysSet\n );\n\n const keys = childrenExpandableKeys.concat(\n childrenMatched || childrenExpandableKeys.length ? [cur.key] : []\n );\n return pre.concat(keys);\n } else {\n return pre;\n }\n }, [] as string[]);\n}\n\nexport function searchTree(\n data: TreeItem[],\n q: string,\n searchFields: (string | string[])[]\n): { data: TreeItem[]; expandedKeys: string[] } {\n if (!q) {\n return { data, expandedKeys: [] };\n }\n\n const lowerQ = q.toLowerCase();\n const _expandedKeys: string[] = [];\n const _data = data\n .map((item) => {\n const selfMatched = matchItem(item, lowerQ, searchFields);\n\n if (Array.isArray(item.children)) {\n const childrenSearchResult = searchTree(\n item.children,\n lowerQ,\n searchFields\n );\n const filteredChildren = childrenSearchResult.data;\n const childrenMatched = !!filteredChildren?.length;\n\n if (childrenMatched) {\n _expandedKeys.push(item.key, ...childrenSearchResult.expandedKeys);\n\n return {\n ...item,\n children: filteredChildren,\n };\n }\n }\n\n if (selfMatched) {\n return item;\n }\n\n return undefined;\n })\n .filter(Boolean) as TreeItem[];\n return { data: _data, expandedKeys: _expandedKeys };\n}\n\nfunction matchItem(\n item: TreeItem,\n lowerQ: string,\n searchFields: (string | string[])[]\n): TreeItem | undefined {\n const keywords = searchFields.flatMap((field) =>\n getSearchKeywords(get(item, field))\n );\n const matched = keywords.some((v) => v.toLowerCase().includes(lowerQ));\n\n if (matched) {\n return item;\n }\n return undefined;\n}\n\nfunction getSearchKeywords(value: unknown): string[] {\n const result = [];\n if (isNil(value)) {\n // do nothing\n } else if (Array.isArray(value)) {\n value.map((v) => result.push(getSearchKeywords(v)));\n } else if (Object.prototype.toString.call(value) === \"[object Object]\") {\n for (const k in value as Record<string, any>) {\n result.push(\n String(k),\n getSearchKeywords((value as Record<string, any>)[k])\n );\n }\n } else {\n // string, number, bigint, boolean...\n result.push(String(value));\n }\n\n return result.flat(Infinity).filter(Boolean) as string[];\n}\n\nexport function getFlattenTreeData(\n treeItems: TreeItem[],\n expandedKeysSet: Set<string>\n) {\n const flattenList: TreeData[] = [];\n\n function dig(list: TreeItem[], parent?: TreeData): TreeData[] {\n return list.map((treeItem, index) => {\n const pos = parent ? `${parent.pos}-${index}` : String(index);\n\n const flattenData: TreeData = {\n title: treeItem.title,\n key: treeItem.key,\n pos,\n depth: pos.split(\"-\").length - 1,\n index,\n data: treeItem,\n parent,\n };\n\n flattenList.push(flattenData);\n\n if (Array.isArray(treeItem.children)) {\n flattenData.children = expandedKeysSet.has(treeItem.key)\n ? dig(treeItem.children, flattenData)\n : [];\n } else {\n flattenData.children = undefined;\n }\n\n return flattenData;\n });\n }\n\n dig(treeItems);\n\n return flattenList;\n}\n","import React, { useMemo, useState } from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport {\n GeneralSearch,\n SearchProps,\n SearchEvents,\n SearchEventsMap,\n} from \"@next-bricks/form/search\";\nimport { Tree } from \"./Tree\";\nimport {\n getFlattenTreeData,\n getAllExpandableKeys,\n getExpandableKeysAccordingToSelectedKeys,\n searchTree,\n} from \"./utils\";\nimport { DirectoryTreeContext } from \"./DirectoryTreeContext\";\nimport { UseBrickConf } from \"@next-core/types\";\n\nconst { defineElement, property, method, event } = createDecorators();\n\nconst WrappedSearch = wrapBrick<\n GeneralSearch,\n SearchProps,\n SearchEvents,\n SearchEventsMap\n>(\"eo-search\", {\n onChange: \"change\",\n onSearch: \"search\",\n});\n\n/**\n * 传入的 data 类型\n */\nexport interface TreeItem {\n key: string;\n title: string;\n children?: TreeItem[];\n [key: string]: any;\n}\n\n/**\n * 内部格式化后的类型\n */\nexport interface TreeData {\n title: string;\n key: string;\n pos: string;\n depth: number;\n index: number;\n data: TreeItem;\n parent?: TreeData;\n children?: TreeData[];\n}\n\n/**\n * useBrick、事件使用的类型\n */\nexport interface NodeData {\n depth: number;\n index: number;\n data: TreeItem;\n}\n\nexport interface EoDirectoryTreeProps {\n data: TreeItem[];\n directoryTitle?: string;\n searchable?: boolean;\n placeholder?: string;\n selectedKeys?: string[];\n expandedKeys?: string[];\n searchFields?: (string | string[])[];\n suffixBrick?: { useBrick: UseBrickConf };\n}\n\n/**\n * 目录树\n */\nexport\n@defineElement(\"eo-directory-tree\", {\n styleTexts: [styleText],\n})\nclass EoDirectoryTree extends ReactNextElement {\n /**\n * 数据源\n */\n @property({\n attribute: false,\n })\n accessor data: TreeItem[] = [];\n\n /**\n * 目录标题\n */\n @property()\n accessor directoryTitle: string | undefined;\n\n /**\n * 可搜索\n */\n @property({\n type: Boolean,\n })\n accessor searchable: boolean | undefined;\n\n /**\n * 搜索占位说明\n */\n @property()\n accessor placeholder: string | undefined;\n\n /**\n * 除了 title 以外,额外的搜索字段\n */\n @property({\n attribute: false,\n })\n accessor searchFields: (string | string[])[] | undefined;\n\n /**\n * 后缀 useBrick\n */\n @property({\n attribute: false,\n })\n accessor suffixBrick: { useBrick: UseBrickConf } | undefined;\n\n /**\n * 选中的 keys\n */\n @property({\n attribute: false,\n })\n accessor selectedKeys: string[] | undefined;\n\n /**\n * 展开的 keys\n */\n @property({\n attribute: false,\n })\n accessor expandedKeys: string[] | undefined;\n\n /**\n * 展开全部\n */\n @method()\n expandAll() {\n this.expandedKeys = getAllExpandableKeys(this.data);\n }\n\n /**\n * 收起全部\n */\n @method()\n collapseAll() {\n this.expandedKeys = [];\n }\n\n /**\n * 根据选择项展开\n */\n @method()\n expandAccordingToSelectedKeys() {\n this.expandedKeys = getExpandableKeysAccordingToSelectedKeys(\n this.data,\n new Set(this.selectedKeys)\n );\n }\n\n /**\n * 展开事件\n * @detail keys - 展开的 keys\n */\n @event({ type: \"expand\" })\n accessor #expandEvent!: EventEmitter<{ keys: string[]; node: NodeData }>;\n #handleExpand = (data: { keys: string[]; node: NodeData }) => {\n this.expandedKeys = data.keys;\n this.#expandEvent.emit(data);\n };\n\n /**\n * 选择事件\n * @detail keys - 选择的 keys\n */\n @event({ type: \"select\" })\n accessor #selectEvent!: EventEmitter<{ keys: string[]; node: NodeData }>;\n #handleSelect = (data: { keys: string[]; node: NodeData }) => {\n this.selectedKeys = data.keys;\n this.#selectEvent.emit(data);\n };\n\n render() {\n return (\n <EoDirectoryTreeComponent\n element={this}\n data={this.data}\n directoryTitle={this.directoryTitle}\n placeholder={this.placeholder}\n searchable={this.searchable}\n searchFields={this.searchFields}\n suffixBrick={this.suffixBrick}\n selectedKeys={this.selectedKeys}\n expandedKeys={this.expandedKeys}\n onExpand={this.#handleExpand}\n onSelect={this.#handleSelect}\n />\n );\n }\n}\n\ninterface EoDirectoryTreeComponentProps extends EoDirectoryTreeProps {\n element: EoDirectoryTree;\n onExpand: (data: { keys: string[]; node: NodeData }) => void;\n onSelect: (data: { keys: string[]; node: NodeData }) => void;\n}\n\nexport function EoDirectoryTreeComponent(props: EoDirectoryTreeComponentProps) {\n const {\n element,\n data,\n directoryTitle,\n searchable,\n searchFields,\n placeholder,\n suffixBrick,\n onSelect,\n onExpand,\n } = props;\n\n const expandedKeysSet = useMemo(\n () => new Set(props.expandedKeys),\n [props.expandedKeys]\n );\n const selectedKeysSet = useMemo(\n () => new Set(props.selectedKeys),\n [props.selectedKeys]\n );\n\n const [q, setQ] = useState(\"\");\n\n const handleSearch = (e: CustomEvent<string>) => {\n setQ(e.detail);\n };\n\n const searchedData = useMemo(() => {\n const result = searchTree(data, q, (searchFields || []).concat(\"title\"));\n if (q) {\n element.expandedKeys = result.expandedKeys;\n }\n return result.data;\n }, [data, q, searchFields]);\n\n const treeData = useMemo(() => {\n return getFlattenTreeData(searchedData, expandedKeysSet);\n }, [searchedData, expandedKeysSet]);\n\n return (\n <DirectoryTreeContext.Provider\n value={{\n expandedKeysSet,\n selectedKeysSet,\n onSelect,\n onExpand,\n suffixBrick,\n }}\n >\n <div className=\"directory-container\">\n {directoryTitle && (\n <div className=\"directory-title-container\">\n <div className=\"directory-title\" title={directoryTitle}>\n {directoryTitle}\n </div>\n <div className=\"directory-title-toolbar\">\n <slot name=\"toolbar\" />\n </div>\n </div>\n )}\n {searchable && (\n <WrappedSearch\n className=\"directory-search\"\n trim\n placeholder={placeholder}\n onSearch={handleSearch}\n />\n )}\n <div className=\"tree\">\n <Tree treeData={treeData} />\n </div>\n </div>\n </DirectoryTreeContext.Provider>\n );\n}\n","import React, { useEffect, useRef } from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport { IndentSize } from \"../constants\";\n\nconst { defineElement, property, event } = createDecorators();\n\nexport interface EoDirectoryTreeLeafProps {\n depth: number;\n selected?: boolean;\n}\n\nexport interface EoDirectoryTreeLeafEvents {\n select: CustomEvent<void>;\n}\n\nexport interface EoDirectoryTreeLeafEventsMap {\n onSelect: \"select\";\n}\n\n/**\n * 目录树叶子节点\n */\nexport\n@defineElement(\"eo-directory-tree-leaf\", {\n styleTexts: [styleText],\n})\nclass EoDirectoryTreeLeaf extends ReactNextElement {\n /**\n * 深度\n */\n @property({\n type: Number,\n })\n accessor depth: number = 0;\n\n /**\n * 是否选中\n */\n @property({\n type: Boolean,\n })\n accessor selected: boolean | undefined;\n\n /**\n * 选择事件\n */\n @event({ type: \"select\" })\n accessor #selectEvent!: EventEmitter<void>;\n\n #handleSelect = () => {\n this.#selectEvent.emit();\n };\n\n render() {\n return (\n <EoDirectoryTreeLeafComponent\n depth={this.depth}\n onSelect={this.#handleSelect}\n />\n );\n }\n}\n\nexport interface EoDirectoryTreeLeafComponentProps\n extends EoDirectoryTreeLeafProps {\n onSelect: () => void;\n}\n\nexport function EoDirectoryTreeLeafComponent(\n props: EoDirectoryTreeLeafComponentProps\n) {\n const { depth, onSelect } = props;\n\n const treeItemRef = useRef<HTMLDivElement>(null);\n const suffixRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const treeItem = treeItemRef.current;\n const handleSelect = () => {\n onSelect();\n };\n\n treeItem?.addEventListener(\"click\", handleSelect);\n\n return () => {\n treeItem?.removeEventListener(\"click\", handleSelect);\n };\n }, [onSelect]);\n\n useEffect(() => {\n const suffix = suffixRef.current;\n const handleSuffixClick = (e: MouseEvent) => {\n e.stopPropagation();\n };\n\n suffix?.addEventListener(\"click\", handleSuffixClick);\n\n return () => {\n suffix?.removeEventListener(\"click\", handleSuffixClick);\n };\n }, []);\n\n return (\n <div className=\"tree-item\" ref={treeItemRef}>\n <div\n className=\"tree-item-indentation\"\n style={{\n width: IndentSize * depth,\n }}\n />\n <div className=\"tree-item-content\">\n <div className=\"tree-item-expand-button\"></div>\n <div className=\"tree-item-label\">\n <slot />\n </div>\n </div>\n <div className=\"tree-item-suffix\" ref={suffixRef}>\n <slot name=\"suffix\" />\n </div>\n </div>\n );\n}\n","export const IndentSize = 10;\n","import * as React from \"react\";\nconst SvgArrow = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width={14} height={14} viewBox=\"0 0 14 14\" {...props}><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"m11.743 9.42-4.49-5.206a.34.34 0 0 0-.506 0L2.257 9.42c-.167.194-.016.478.253.478h8.98c.27 0 .42-.284.253-.478\" /></svg>;\nexport default SvgArrow;","import React, { useEffect, useRef } from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport Arrow from \"./arrow.svg\";\nimport { IndentSize } from \"../constants\";\n\nconst { defineElement, property, event } = createDecorators();\n\nexport interface EoDirectoryTreeInternalNodeProps {\n depth: number;\n expanded?: boolean;\n selectable?: boolean;\n selected?: boolean;\n}\n\nexport interface EoDirectoryTreeInternalNodeEvents {\n expand: CustomEvent<boolean>;\n select: CustomEvent<void>;\n}\n\nexport interface EoDirectoryTreeInternalNodeEventsMap {\n onExpand: \"expand\";\n onSelect: \"select\";\n}\n\n/**\n * 目录树节点节点\n */\nexport\n@defineElement(\"eo-directory-tree-internal-node\", {\n styleTexts: [styleText],\n})\nclass EoDirectoryTreeInternalNode extends ReactNextElement {\n /**\n * 深度\n */\n @property({\n type: Number,\n })\n accessor depth: number = 0;\n\n /**\n * 是否展开\n */\n @property({\n type: Boolean,\n })\n accessor expanded: boolean | undefined;\n\n /**\n * 可选择\n */\n @property({\n type: Boolean,\n })\n accessor selectable: boolean | undefined;\n\n /**\n * 是否选中\n */\n @property({\n type: Boolean,\n })\n accessor selected: boolean | undefined;\n\n /**\n * 展开事件\n * @detail 展开状态\n */\n @event({ type: \"expand\" })\n accessor #expandEvent!: EventEmitter<boolean>;\n #handleExpand = () => {\n this.#expandEvent.emit(!this.expanded);\n };\n\n /**\n * 选择事件\n */\n @event({ type: \"select\" })\n accessor #selectEvent!: EventEmitter<void>;\n #handleSelect = () => {\n this.#selectEvent.emit();\n };\n\n render() {\n return (\n <EoDirectoryTreeInternalNodeComponent\n depth={this.depth}\n selectable={this.selectable}\n expanded={this.expanded}\n onExpand={this.#handleExpand}\n onSelect={this.#handleSelect}\n />\n );\n }\n}\n\nexport interface EoDirectoryTreeInternalNodeComponentProps\n extends EoDirectoryTreeInternalNodeProps {\n onExpand: () => void;\n onSelect: () => void;\n}\n\nexport function EoDirectoryTreeInternalNodeComponent(\n props: EoDirectoryTreeInternalNodeComponentProps\n) {\n const { depth, selectable, onExpand, onSelect } = props;\n\n const treeItemRef = useRef<HTMLDivElement>(null);\n const expandBottomRef = useRef<HTMLDivElement>(null);\n const suffixRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (selectable) {\n const treeItem = treeItemRef.current;\n const expandBottom = expandBottomRef.current;\n const handleSelect = () => {\n onSelect();\n };\n const handleExpand = (e: MouseEvent) => {\n e.stopPropagation();\n onExpand();\n };\n\n treeItem?.addEventListener(\"click\", handleSelect);\n expandBottom?.addEventListener(\"click\", handleExpand);\n\n return () => {\n treeItem?.removeEventListener(\"click\", handleSelect);\n expandBottom?.removeEventListener(\"click\", handleExpand);\n };\n } else {\n const treeItem = treeItemRef.current;\n const handleExpand = () => {\n onExpand();\n };\n\n treeItem?.addEventListener(\"click\", handleExpand);\n\n return () => {\n treeItem?.removeEventListener(\"click\", handleExpand);\n };\n }\n }, [selectable, onSelect, onExpand]);\n\n useEffect(() => {\n const suffix = suffixRef.current;\n const handleSuffixClick = (e: MouseEvent) => {\n e.stopPropagation();\n };\n\n suffix?.addEventListener(\"click\", handleSuffixClick);\n\n return () => {\n suffix?.removeEventListener(\"click\", handleSuffixClick);\n };\n }, []);\n\n return (\n <>\n <div className=\"tree-item\" ref={treeItemRef}>\n <div\n className=\"tree-item-indentation\"\n style={{\n width: IndentSize * depth,\n }}\n />\n <div className=\"tree-item-content\">\n <div className=\"tree-item-expand-button\" ref={expandBottomRef}>\n <Arrow className=\"tree-item-expand-arrow\" />\n </div>\n <div className=\"tree-item-label\">\n <slot name=\"label\" />\n </div>\n </div>\n <div className=\"tree-item-suffix\" ref={suffixRef}>\n <slot name=\"suffix\" />\n </div>\n </div>\n <div className=\"tree-item-children\">\n <div className=\"tree-item-inner\">\n <slot />\n </div>\n </div>\n </>\n );\n}\n","import React, { useMemo } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { wrapBrick, ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport { getRuntime } from \"@next-core/runtime\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\n\nconst { defineElement } = createDecorators();\n\nexport const WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nexport const WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\n/**\n * 导航栏图标\n */\nexport\n@defineElement(\"nav.nav-logo\", {\n styleTexts: [styleText],\n})\nclass NavLogo extends ReactNextElement {\n render() {\n return <NavLogoComponent />;\n }\n}\n\nexport function NavLogoComponent() {\n const brand = getRuntime().getBrandSettings();\n\n const logoNode = useMemo(() => {\n return brand.menu_bar_logo_url ? (\n <img src={brand.menu_bar_logo_url} className=\"personalized-logo\" />\n ) : (\n <WrappedIcon\n category=\"blueprint\"\n icon=\"easyops\"\n lib=\"easyops\"\n className=\"easyops-icon\"\n />\n );\n }, [brand.menu_bar_logo_url]);\n\n return (\n <div className=\"logo-container\">\n {brand.menu_bar_logo_no_link === \"true\" ? (\n logoNode\n ) : (\n <WrappedLink type=\"plain\" url=\"/\" className=\"logo-link\">\n {logoNode}\n </WrappedLink>\n )}\n </div>\n );\n}\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:root{--eo-search-launchpad-menu-icon-color:#8c8c8c}html[data-theme=\"dark\"],\nhtml[data-theme=\"dark-v2\"]{--eo-search-launchpad-menu-icon-color:rgba(255,255,255,0.45)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}.app-bar-container{height:var(--app-bar-height)}.app-bar{position:relative;z-index:999;box-shadow:var(--top-nav-shadow)}.app-bar.fixed,\n.app-bar.absolute{right:0;left:0;top:0}.app-bar.fixed{position:fixed}.app-bar.absolute{position:absolute}.app-bar-content{display:flex;justify-content:space-between;align-items:center;height:var(--app-bar-height);background-color:var(--top-navigation-bg);padding:0 16px;transition:var(--launchpad-backdrop-transition)}.left{display:flex;flex:1}.right{display:flex;justify-content:end}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}.tree-item{min-height:24px;display:flex;align-items:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:pointer;border-radius:3px}.tree-item:hover .tree-item-label{color:var(--palette-blue-4)!important}.tree-item .tree-item-indentation{flex-shrink:0}.tree-item .tree-item-content{min-width:0;flex:1;display:flex;align-items:center}.tree-item .tree-item-content .tree-item-expand-button{margin:0 4px;padding:4px;position:relative;width:10px;height:10px;flex-shrink:0;border-radius:3px}.tree-item .tree-item-content .tree-item-expand-button .tree-item-expand-arrow{color:var(--color-header-text);width:10px;height:10px;position:absolute;left:50%;top:50%;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.tree-item .tree-item-content .tree-item-label{color:var(--color-header-text);min-width:0;flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.tree-item .tree-item-suffix{flex-shrink:0}.tree-item-children{display:grid;grid-template-rows:1fr;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.tree-item-children .tree-item-inner{overflow:hidden}.tree-item-children .tree-item-inner slot::slotted(*){margin-top:8px}:host(:not([expanded])) .tree-item-children{grid-template-rows:0fr;opacity:0}:host([expanded]) .tree-item-expand-arrow{transform:translate(-50%,-50%) rotate(180deg)}:host(:not([expanded])) .tree-item-expand-arrow{transform:translate(-50%,-50%) rotate(90deg)}:host([selectable]) .tree-item-expand-button:hover{background-color:var(--color-fill-bg-base-1)}:host([selectable][selected]) .tree-item{background-color:var(--palette-blue-1)}:host([selectable][selected]) .tree-item:hover .tree-item-label{color:var(--color-header-text)!important}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}.tree-item{min-height:24px;display:flex;align-items:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:pointer;border-radius:3px}.tree-item:hover .tree-item-label{color:var(--palette-blue-4)!important}.tree-item .tree-item-indentation{flex-shrink:0}.tree-item .tree-item-content{min-width:0;flex:1;display:flex;align-items:center}.tree-item .tree-item-content .tree-item-expand-button{padding:4px;margin:0 4px;width:10px;flex-shrink:0}.tree-item .tree-item-content .tree-item-label{color:var(--color-header-text);min-width:0;flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.tree-item .tree-item-suffix{flex-shrink:0}:host([selected]) .tree-item{background-color:var(--palette-blue-1)}:host([selected]) .tree-item:hover .tree-item-label{color:var(--color-header-text)!important}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:inline-block}:host([hidden]){display:none}.directory-container{background-color:var(--color-fill-global-bg-3);padding:20px 12px 24px 20px}.directory-container .directory-title-container{margin-bottom:24px;display:flex;align-items:center;justify-content:space-between;gap:8px}.directory-container .directory-title-container .directory-title{font-size:16px;color:var(--text-color-title);line-height:24px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.directory-container .directory-search{display:block;margin-bottom:12px}.directory-container .tree > *:not(:last-child){margin-bottom:8px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}.directory-container{padding:20px 8px 24px 24px;background:var(--color-fill-global-bg-2);border-right:1px solid var(--color-text-divider-line);height:calc(100vh - var(--app-bar-height) - 44px);overflow-y:auto;scrollbar-width:none}.directory-title{font-size:var(--sub-menu-title-font-size);margin-bottom:24px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.directory-menu-list > .menu-item-group{padding-top:14px}.directory-menu-list > .menu-item-group:first-child{padding-top:0}.directory-menu-list .menu-item-title-group,\n.directory-menu-list .menu-item-title-item{display:flex;align-items:center;justify-content:space-between}.directory-menu-list .menu-item-title-group{color:#8c8c8c;font-size:12px;margin-bottom:2px}.directory-menu-list .menu-item-title-item{font-size:14px;cursor:pointer;line-height:24px;padding:3px 0}.directory-menu-list .menu-item-title-suffix-icon{width:24px;height:24px;display:flex;justify-content:center;align-items:center;font-size:14px;border-radius:var(--small-border-radius);cursor:pointer}.directory-menu-list\n .menu-item-title-suffix-icon:not(\n .menu-item-title-suffix-icon-disabled\n ):hover{background:var(--color-info-icon-bg);color:var(--color-brand-hover)}.directory-menu-list .menu-item-title-item > .menu-title-text:hover{color:var(--color-brand-hover)}.directory-menu-list .menu-item-title-item > .menu-title-text-active{color:var(--color-brand)}.directory-menu-list .menu-item-title-suffix-icon-disabled{color:var(--color-disabled-text);cursor:not-allowed}.directory-menu-list .menu-title-text{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}.alert{height:32px;padding:0 20px;display:flex;justify-content:center;align-items:center}.text{color:var(--antd-text-color);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.icon{margin-left:20px;cursor:pointer;color:#8c8c8c}.info{background-color:var(--palette-blue-1)}.warning{background-color:var(--palette-amber-1)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:flex;height:22px;align-items:center}:host([hidden]){display:none}.breadcrumb-item-prefix-icon{font-size:14px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;--local-menu-icon-color:#8c8c8c}:host([hidden]){display:none;--local-menu-icon-color:rgba(255,255,255,0.45)}ul{list-style:none;margin:0;padding:0}.menu-groups{display:grid;grid-gap:32px 16px;gap:32px 16px;grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.menu,\n.sub-menu{display:flex;flex-direction:column;gap:14px}.menu-folder-label-wrapper > eo-link,\n.menu-item > eo-link{display:block}.menu-folder-label-wrapper > eo-link::part(link),\n.menu-item > eo-link::part(link){height:20px;display:flex;align-items:center;gap:8px;color:var(--color-header-text)}.menu-group-label-wrapper,\n.menu-folder-label-wrapper,\n.menu-item:not(.folder){display:flex;gap:8px;align-items:center}.menu-group-label-wrapper{gap:3px}.menu-group:not(.empty) .menu-group-label-wrapper{margin-bottom:14px}.menu-group-label,\n.menu-item-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-group-label{font-size:var(--card-title-font-size);font-weight:500;color:var(--color-header-text)}.menu-icon{color:var(--local-menu-icon-color)}.menu-folder-label-wrapper > eo-link,\n.menu-item > eo-link{max-width:100%;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;min-width:0}.sub-menu:not(.expanded){display:none}.sub-menu{margin-left:8px;border-left:1px solid var(--color-text-divider-line);padding-left:15px}.menu-item:not(.empty) .sub-menu{margin-top:14px}.menu-item-toggle{color:var(--color-secondary-text)}.menu-config{visibility:hidden;color:var(--color-brand);cursor:pointer;display:flex;justify-content:center;align-items:center;height:24px;width:0}.menu-config.active,\n.menu-group-label-wrapper:hover .menu-config,\n.menu-item:not(.folder):hover .menu-config,\n.menu-folder-label-wrapper:hover .menu-config{visibility:visible;width:24px}.menu-config:hover,\n.menu-item > eo-link:hover::part(link),\n.menu-item > eo-link:hover .menu-icon,\n.menu-folder-label-wrapper > eo-link:hover::part(link),\n.menu-folder-label-wrapper > eo-link:hover .menu-icon,\n.menu-folder-label-wrapper > eo-link:hover .menu-item-toggle{color:var(--color-brand-hover)}@supports not (inset: 0){.sub-menu,\n .menu,\n .menu-group-label-wrapper,\n .menu-folder-label-wrapper,\n .menu-item:not(.folder),\n .menu-item > eo-link::part(link){gap:0}.menu > :not(:first-child),\n .sub-menu > :not(:first-child){margin-top:14px}.menu-icon{margin-right:8px}eo-dropdown-actions,\n .menu-item-toggle{margin-left:8px}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}.quick-access-list{display:grid;grid-gap:14px;gap:14px;grid-template-columns:repeat(2,1fr);list-style:none;margin:0;padding:0}.sidebar-menu-item{display:flex;align-items:center;justify-content:space-between;overflow:hidden}.sidebar-menu-item > eo-link{display:block;min-width:0}.sidebar-menu-item > eo-link::part(link){display:flex;align-items:center;height:20px;gap:8px;color:var(--color-header-text)}.sidebar-menu-icon{color:var(--left-sidebar-item-collapsed-icon-color)}.menu-item-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-item-remove{color:var(--color-secondary-text);cursor:pointer}.sidebar-menu-item:not(:hover) .menu-item-remove{display:none}.menu-item-remove:hover{color:var(--color-normal-text)}.menu-item-remove:active{color:var(--color-strong-text)}.sidebar-menu-item > eo-link:hover::part(link),\n.sidebar-menu-item > eo-link:hover .sidebar-menu-icon{color:var(--color-brand-hover)}@supports not (inset: 0){.sidebar-menu-item,\n .sidebar-menu-item > eo-link::part(link){gap:0}.sidebar-menu-icon{margin-right:8px}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}.recent-visits{list-style:none;margin:0;padding:0;display:grid;grid-gap:8px;gap:8px;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));max-height:56px;overflow:hidden}.recent-visits span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.recent-visits eo-link{display:block;min-width:0}.recent-visits eo-link::part(link){background-color:var(--color-fill-bg-base-1);border-radius:3px;color:var(--color-header-text);display:flex;align-items:center;height:24px;padding:0 8px}.recent-visits eo-link:hover::part(link){color:var(--color-brand-hover)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:inline-block}:host([hidden]){display:none}.logo-container{position:relative;display:flex;justify-content:flex-start;align-items:center}.logo-link{cursor:pointer}.personalized-logo{height:24px;vertical-align:top}.easyops-icon{display:block;font-size:24px;color:var(--color-brand)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}.container{position:relative}.dropdown{margin-top:5px;position:absolute;top:100%;left:0px;width:100%;z-index:1050;padding:20px 24px 24px;overflow:hidden;box-sizing:border-box;background-color:var(--antd-select-dropdown-bg);border-radius:4px;box-shadow:var(--antd-box-shadow-base);display:none}.dropdown-active{display:block}.search-box{border-bottom:1px solid var(--color-text-divider-line);display:flex;gap:8px;align-items:center;padding:10px 0;cursor:text}.search-icon{color:var(--color-auxiliary-text)}.search-input{padding:0;margin:0;border:none;outline:none;color:inherit;background-color:transparent;font-size:14px;line-height:22px;flex:1;min-width:0}.search-input::placeholder{color:var(--color-disabled-text);opacity:1}.search-clear{display:none;color:var(--color-secondary-text);cursor:pointer}.search-clear.searching{display:inline-block}.search-clear:hover{color:var(--color-auxiliary-text)}.dropdown-content{min-width:0;display:flex;flex-direction:column;gap:24px;max-height:260px;overflow-y:auto}.spinner{display:flex;justify-content:center;align-items:center;color:var(--theme-doderblue-color);flex:1;font-size:30px}.loading > :not(.spinner){display:none}.menu-group-label,\n.menu-item-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-groups,\n.menu,\n.sub-menu{list-style:none;margin:0;padding:0}.menu,\n.sub-menu{display:flex;flex-direction:column;gap:14px}.menu-item > eo-link{display:block;min-width:0}.menu-item > eo-link::part(link){height:20px;display:flex;align-items:center;gap:8px;color:var(--color-header-text)}.menu-groups{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.menu-groups{display:grid;grid-gap:32px 8px;gap:32px 8px}.menu-group{padding-right:12px;color:var(--color-header-text)}.menu-group-label{font-size:var(--card-title-font-size);font-weight:500;color:var(--color-header-text);margin-bottom:14px}.menu-item:not(.folder){display:flex;gap:8px;align-items:center}.menu-icon{color:var(--eo-search-launchpad-menu-icon-color)}.menu-item.active,\n.menu-item.active .menu-icon{color:var(--color-brand-active)}.sub-menu:not(.expanded){display:none}.sub-menu{margin-top:14px;margin-left:8px;border-left:1px solid var(--color-text-divider-line);padding-left:15px}.menu-item-star{cursor:pointer}.menu-item-star,\n.menu-item-toggle{color:var(--color-secondary-text)}.menu-item-star{display:none}.can-star.starred > .menu-item-star,\n.can-star:hover > .menu-item-star{display:inline-block}.can-star:not(.starred) > .menu-item-star{color:var(--color-secondary-text)}.starred > .menu-item-star{color:var(--palette-yellow-6)}.menu-item > eo-link:hover::part(link),\n.menu-item > eo-link:hover .menu-icon,\n.menu-item > eo-link:hover .menu-item-toggle{color:var(--color-brand-hover)}@supports not (inset: 0){.search-box,\n .menu,\n .sub-menu,\n .menu-item:not(.folder),\n .menu-item > eo-link::part(link){gap:0}.dropdown-content{display:grid;grid-auto-flow:row}.dropdown-content:not(.loading){height:-webkit-min-content;height:-moz-min-content;height:min-content}.menu > :not(:first-child),\n .sub-menu > :not(:first-child){margin-top:14px}.search-icon,\n .menu-icon{margin-right:8px}.search-clear,\n .menu-item-star,\n .menu-item-toggle{margin-left:8px}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}.menu-container{box-sizing:border-box;background:var(--third-menu-default-bg);border:1px solid var(--stroke-color-default);border-width:0 1px 0 0;border-radius:0px;padding:20px 0px;height:100%}.menu-container .header{display:flex;gap:10px;align-items:center;font-size:var(--title-font-size);padding:0 20px 16px 20px;line-height:26px;color:var(--color-header-text)}.menu-container .header .title{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;word-wrap:break-word}.menu-container .content{padding:0 12px}.menu-container .menu-item,\n .menu-container .menu-sub-item::part(sub-menu-item-title){margin:0;padding-right:16px;height:40px;line-height:40px;border-radius:4px;margin-bottom:4px}.menu-container .menu-item::part(menu-item-icon),\n .menu-container .menu-sub-item::part(menu-item-icon){color:var(--color-secondary-text)}.menu-container .menu-item-link{width:100%;color:var(--color-secondary-text)}.menu-container .menu-item-text,\n .menu-container .menu-group-text,\n .menu-container .menu-item-link{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.menu-container .menu-item-text{display:block;box-sizing:border-box;color:var(--antd-text-color)}.menu-container .menu-item:hover{background:var(--third-menu-item-hover-bg);color:var(--color-header-text)}.menu-container .menu-item:hover .menu-item-text{color:var(--color-header-text);font-weight:var(--font-weight-400)}.menu-container .in-submenu .menu-item-text{color:var(--color-normal-text)}.menu-container .menu-sub-item::part(sub-menu-item-title):hover{color:var(--color-header-text)}.menu-container .menu-item-text.item-has-icon{margin-left:6px}.menu-container .menu-item[active]{color:var(--color-brand);background-color:var(--third-menu-item-selected-bg)}.menu-container .menu-item[active] .menu-item-text{color:var(--color-brand);font-weight:var(--font-weight-500)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;--menu-item-icon-size:20px}:host([hidden]){display:none}*,\n*::before,\n*::after{box-sizing:border-box}.menu-group-title{position:relative;display:flex;align-items:center;min-height:36px;padding:8px 12px;line-height:20px;color:var(--left-secondary-text-color);border-radius:var(--larger-border-radius);transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.menu-group-title-icon-container{flex-shrink:0;margin-right:14px;display:flex;align-items:center;justify-content:center;width:var(--menu-item-icon-size);height:var(--menu-item-icon-size);color:var(--left-sidebar-item-collapsed-icon-color);font-size:var(--menu-item-icon-size);transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.menu-group-title-icon{width:1em;height:1em;border-bottom:2px solid var(--left-sidebar-group-border-color)}.menu-group-title-text{flex:1;font-size:12px;overflow:hidden;white-space:nowrap;margin-right:12px}.menu-group-list slot::slotted(*){margin-top:2px}.menu-group-arrow{position:absolute;top:50%;right:12px;width:10px;transform:translateY(-2px);transition:all 0.3s cubic-bezier(0.645,0.045,0.355,1)}.menu-group-arrow::before,\n.menu-group-arrow::after{content:\"\";position:absolute;width:6px;height:1.5px;background-color:currentColor;border-radius:2px;transition:all 0.3s cubic-bezier(0.645,0.045,0.355,1)}.menu-group-arrow::before{transform:rotate(45deg) translateX(2.5px)}.menu-group-arrow::after{transform:rotate(-45deg) translateX(-2.5px)}.menu-group-collapsed .menu-group-arrow{transform:translateY(-50%)}.menu-group-collapsed .menu-group-arrow::before{transform:rotate(-45deg) translateX(2.5px)}.menu-group-collapsed .menu-group-arrow::after{transform:rotate(45deg) translateX(-2.5px)}.menu-group-list{display:grid;grid-template-rows:1fr;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.menu-group-list-inner{overflow:hidden}:host([menu-collapsed]) .menu-group-title{padding:0px calc(50% - var(--menu-item-icon-size) / 2)}:host(:not([menu-collapsed])) .menu-group-title-icon-container{width:0;margin-right:0;opacity:0}:host([menu-collapsed]) .menu-group-title-text{opacity:0}:host([menu-collapsed]) .menu-group-arrow{opacity:0}:host(:not([menu-collapsed])) .menu-group-title-text{white-space:pre-wrap;display:-webkit-inline-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;text-overflow:ellipsis;color:#7f8ba6}:host([collapsable]) .menu-group-collapsed .menu-group-list{grid-template-rows:0fr;opacity: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, `:host{display:block;--menu-item-icon-size:20px}:host([hidden]){display:none}*,\n*::before,\n*::after{box-sizing:border-box}eo-link{display:block}.menu-item{position:relative;display:flex;align-items:center;min-height:36px;padding:8px 12px;line-height:20px;color:var(--left-sidebar-item-normal-color);border-radius:var(--medius-border-radius);cursor:pointer;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.menu-item-icon-container{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:var(--menu-item-icon-size);height:var(--menu-item-icon-size);font-size:var(--menu-item-icon-size);color:var(--left-sidebar-item-collapsed-icon-color)}:host([in-submenu]):host(:not([selected])) .menu-item{color:var(--left-sidebar-item-collapsed-color)}.menu-item-text{flex:1;margin-left:14px;margin-right:12px;font-size:14px;overflow:hidden;white-space:nowrap;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.menu-item:hover{background:var(--left-sidebar-item-hover-bg)}:host([selected]) .menu-item{color:var(--left-sidebar-item-selected-color);background:var(--left-sidebar-item-selected-bg);box-shadow:0px 2px 12px 0px rgba(26,122,255,0.30196)}:host([selected]) .menu-item-icon-container{color:var(--left-sidebar-item-selected-color)}:host([selected]) .menu-item:hover{background-color:var(--left-sidebar-item-selected-hover-bg)}:host([menu-collapsed]) .menu-item{padding:0px calc(50% - var(--menu-item-icon-size) / 2)}:host([menu-collapsed]) .menu-item-text{opacity:0}:host(:not([menu-collapsed])) .menu-item-text{white-space:pre-wrap;display:-webkit-inline-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;text-overflow:ellipsis}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;--menu-item-icon-size:20px}:host([hidden]){display:none}*,\n*::before,\n*::after{box-sizing:border-box}.menu-submenu-title{position:relative;display:flex;align-items:center;min-height:36px;padding:8px 12px;line-height:20px;color:var(--left-sidebar-item-normal-color);border-radius:var(--larger-border-radius);cursor:pointer;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.menu-submenu-title-icon-container{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:var(--menu-item-icon-size);height:var(--menu-item-icon-size);font-size:var(--menu-item-icon-size);color:var(--left-sidebar-item-collapsed-icon-color)}.menu-submenu-title-text{flex:1;margin-left:14px;margin-right:12px;font-size:14px;overflow:hidden;white-space:nowrap}.menu-submenu-arrow{position:absolute;top:50%;right:12px;width:10px;color:var(--left-sidebar-item-arrow-color);transform:translateY(-2px);transition:all 0.3s cubic-bezier(0.645,0.045,0.355,1)}.menu-submenu-arrow::before,\n.menu-submenu-arrow::after{content:\"\";position:absolute;width:6px;height:1.5px;background-color:currentColor;border-radius:2px;transition:all 0.3s cubic-bezier(0.645,0.045,0.355,1)}.menu-submenu-arrow::before{transform:rotate(45deg) translateX(2.5px)}.menu-submenu-arrow::after{transform:rotate(-45deg) translateX(-2.5px)}.menu-submenu-collapsed .menu-submenu-arrow{transform:translateY(-50%)}.menu-submenu-collapsed .menu-submenu-arrow::before{transform:rotate(-45deg) translateX(2.5px)}.menu-submenu-collapsed .menu-submenu-arrow::after{transform:rotate(45deg) translateX(-2.5px)}.menu-submenu-title:hover{background:var(--left-sidebar-item-hover-bg)}.menu-sub{display:grid;grid-template-rows:1fr;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.menu-submenu-collapsed .menu-sub{grid-template-rows:0fr;opacity:0}.menu-sub-inner{overflow:hidden}.menu-sub-inner slot::slotted(*){margin-top:2px}:host([menu-collapsed]) .menu-submenu-title{padding:0px calc(50% - var(--menu-item-icon-size) / 2)}:host([menu-collapsed]) .menu-submenu-title-text{opacity:0}:host([menu-collapsed]) .menu-submenu-arrow{opacity:0}:host(:not([menu-collapsed])) .menu-submenu-title-text{white-space:pre-wrap;display:-webkit-inline-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;text-overflow:ellipsis}:host([selected]):host([menu-collapsed]) .menu-submenu-title, :host([selected]):host([collapsed]) .menu-submenu-title{background:var(--left-sidebar-item-selected-bg);color:var(--left-sidebar-item-selected-color)}:host([selected]):host([menu-collapsed]) .menu-submenu-title-icon-container,\n :host([selected]):host([collapsed]) .menu-submenu-title-icon-container,\n :host([selected]):host([menu-collapsed]) .menu-submenu-arrow,\n :host([selected]):host([collapsed]) .menu-submenu-arrow{color:var(--left-sidebar-item-selected-color)}:host([selected]) .menu-submenu-title-text{font-weight:var(--font-weight-500)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;transition:width var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}:host([hidden]){display:none}*,\n*::before,\n*::after{box-sizing:border-box}.sidebar-menu-item-list slot::slotted(*){margin-top:6px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}:host([position=\"static\"]){height:100%}*,\n*::before,\n*::after{box-sizing:border-box}.sidebar-container{position:relative;z-index:998;height:100%}.sidebar-container,\n.inner{transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}:host(:not([position=\"static\"])) .sidebar-container{position:fixed;left:0;top:var(--app-bar-height);height:calc(100vh - var(--app-bar-height))}.inner{position:absolute;left:0;height:100%;display:flex;flex-direction:column;background-color:var(--left-menu-bg);border-right:1px solid var(--left-sidebar-border-right)}.inner:hover{background-color:var(--left-menu-hover-bg)}.inner::before{content:\"\";position:absolute;left:0;right:0;top:0;bottom:0;z-index:-1;background:var(--sidebar-bg)}.header{padding:0 12px;margin-top:14px;height:52px;flex-shrink:0}.menu-title{height:100%;display:flex;align-items:center;color:var(--left-sidebar-large-title-color)}.menu-title-icon-container{flex-shrink:0;display:flex;justify-content:center;align-items:center;width:20px;height:20px;font-size:20px;line-height:0;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.menu-title-icon{color:var(--left-sidebar-item-collapsed-icon-color)}.menu-title-point{width:4px;height:4px;background:var(--antd-text-color);border-radius:50%}.menu-title-text{font-size:16px;font-weight:var(--font-weight-500);color:var(--left-sidebar-large-title-color);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.state-collapsed .menu-title{padding:0 calc(50% - 10px)}.state-hovered .menu-title,\n.state-expanded .menu-title{padding:0 12px}.state-collapsed .menu-title-icon-container{margin-right:12px}.state-hovered .menu-title-icon-container,\n.state-expanded .menu-title-icon-container{margin-right:0;width:0;opacity:0}.content{padding:0 12px;flex:1;overflow-y:auto;scrollbar-width:none}.content::-webkit-scrollbar{width:0;background:transparent}.content.show-shadow{box-shadow:0 -17px 10px -16px rgb(0 0 0/8%) inset}.footer{height:60px;flex-shrink:0;display:flex;align-items:center;justify-content:flex-end}.fixed-icon{display:flex;justify-content:center;align-items:center;width:20px;height:20px;margin-right:8px;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.fixed-icon > svg{width:100%;height:100%}.fixed-icon:hover > svg path[fill]{fill:var(--color-brand)}.state-collapsed .fixed-icon{visibility:hidden;opacity:0}.state-hovered .fixed-icon,\n.state-expanded .fixed-icon{visibility:visible;opacity:1}.state-hovered .inner{box-shadow:var(--left-sidebar-shadow)}.resize-line{position:absolute;right:-2px;height:100%;width:2px;cursor:col-resize}.resize-line:hover,\n.resize-line:active{background-color:rgba(26,122,255,1)}.dragging,\n.dragging .inner{transition:none}`, \"\"]);\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 _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/asyncToGenerator\";\nimport { http } from \"@next-core/http\";\n/**\n * @description 获取我的收藏列表\n * @endpoint GET /api/v1/user_service/my_collection/collections\n */\nexport var MyCollectionApi_listMyCollection = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(function* (params, options) {\n return (/**! @contract easyops.api.user_service.my_collection.ListMyCollection@1.0.0 */(yield http.get(\"api/gateway/user_service.my_collection.ListMyCollection/api/v1/user_service/my_collection/collections\", _objectSpread(_objectSpread({}, options), {}, {\n params\n }))).data\n );\n });\n return function MyCollectionApi_listMyCollection(_x, _x2) {\n return _ref.apply(this, arguments);\n };\n}();\n//# sourceMappingURL=listMyCollection.js.map","import { http } from \"@next-core/http\";\n/**\n * @description 更新/新增我的收藏,这个接口用于全量更新单实例\n * @endpoint POST /api/v1/user_service/my_collection/upsert_collections\n */\nexport var MyCollectionApi_upsertMyCollection = (data, options) => /**! @contract easyops.api.user_service.my_collection.UpsertMyCollection@1.0.0 */http.post(\"api/gateway/user_service.my_collection.UpsertMyCollection/api/v1/user_service/my_collection/upsert_collections\", data, options);\n//# sourceMappingURL=upsertMyCollection.js.map"],"names":["scrollWidth","defineElement","property","createDecorators","WrappedMenuItem","wrapBrick","WrappedPopover","onVisibleChange","beforeVisibleChange","RenderMenuItemCom","props","item","isSubMenu","topData","React","SubMenuItemCom","_extends","isGroup","GroupMenuItemCom","SimpleMenuItemCom","index","hidden","showTooltip","selectedKey","className","key","title","text","active","includes","renderLinkCom","width","_NavMenu","handlePopupVisibleChange","event","_scrollWidth","paddingRight","window","innerWidth","document","body","clientWidth","style","detail","overflow","touchAction","_ref","_item$items","items","length","classnames","subprime","arrow","trigger","placement","distance","anchorDisplay","strategy","slot","renderSpanCom","map","innerItem","_ref2","_item$items2","childLayout","ThreeLevelMenuCom","SitMapMenCom","_ref3","_item$items3","ThreeLevelMenuPopoverContent","menuItem","_ref4","_item$items4","visible","setVisible","useState","onClick","e","stopPropagation","SiteMapItem","menuGroup","_classDecs","styleTexts","SiteMapStyleText","ItemTagStyleText","GroupItemStyleText","styleText","_dec","attribute","_dec2","type","Boolean","_A","WeakMap","_B","NavMenu","ReactNextElement","constructor","arguments","_classPrivateFieldInitSpec","writable","value","_initProto","_init_menu","_init_showTooltip","menu","_classPrivateFieldGet","v","_classPrivateFieldSet","render","NavMenuComponent","this","_menu$menuItems$lengt","_menu$menuItems2","history","getHistory","navMenuWrapperRef","useRef","location","setLocation","overflowIndex","setOverflowIndex","Number","MAX_SAFE_INTEGER","pathname","search","useMemo","_menu$menuItems","selectedKeys","initMenuItemAndMatchCurrentPathKeys","menuItems","useEffect","unListen","listen","current","resizeObserver","ResizeObserver","_navMenuWrapperRef$cu","getClientRects","childNodes","wrapperWidth","i","childWidth","height","childHeight","observe","disconnect","overflowMenu","slice","ref","_items","isHidden","_NavMenu2","c","_initClass","_applyDecs","initializeReactI18n","NS","locales","_LaunchpadButton","LaunchpadButton","LaunchpadButtonComponent","_LaunchpadButton2","_EoLaunchpadButtonV","lockBodyScroll","unwrapProvider","platformCategoryStyleText","EoLaunchpadButtonV2","disconnectedCallback","super","EoLaunchpadButtonV2Component","host","initialized","setInitialized","setActive","toggleLaunchpad","previous","hotkeys","filter","preventDefault","unbind","_getRuntime","deferredLaunchpadInfo","schedulePrefetch","deferredFavorites","getRuntime","getFeatureFlags","deferredPlatformCategories","role","classNames","LaunchpadSvg","Launchpad","_EoLaunchpadButtonV2","WrappedIcon","WrappedLink","WrappedDropdownActions","onActionClick","MenuGroup","data","actions","name","dropdownActive","setDropdownActive","filteredActions","checkIfByTransform","handleActionClick","useCallback","action","empty","lib","icon","MenuItemFolder","instanceId","MenuItem","concat","id","_data$menuIcon","getAppLocaleName","menuIcon","pick","expanded","setExpanded","toggle","prefix","_LaunchpadConfig","_dec3","_C","_actionClickEvent","_onActionClick","LaunchpadConfig","get","_get_actionClickEvent2","set","_set_actionClickEvent2","_init_menuGroups","_init_actions","_init_actionClickEvent","emit","menuGroups","LaunchpadConfigComponent","_set_actionClickEvent","_get_actionClickEvent","group","_LaunchpadConfig2","o","_","has","_checkInRHS","_EasyopsNavbarAlerts","EasyopsNavbarAlerts","EasyopsNavbarAlertsComponent","_EasyopsNavbarAlerts2","storage","JsonStorage","localStorage","licenseHide","setLienceseHide","slowRender","setSlowRender","currentApp","useCurrentApp","licenseDismissedKey","authInfo","auth","getAuth","org","licenseDaysLeft","_authInfo$license","dismissExpireAt","validDaysLeft","license","isAdmin","getItem","moment","unix","handelRouteRender","renderTime","loadTime","loadInfoPage","getMiscSettings","isBuildPush","millisecondToSecond","suggestTime","suggestUrl","addEventListener","removeEventListener","handleLicenseAlertDismiss","setItem","Alert","link","label","url","undefined","closable","onClose","href","target","millisecond","Math","floor","_EoLaunchpadQuickAcce","EoLaunchpadQuickAccess","_init_readonly","readonly","EoLaunchpadQuickAccessComponent","favorites","loadingFavorites","pushRecentVisit","toggleStar","isStarred","useLaunchpadInfo","LaunchpadsContext","Provider","searching","SidebarMenuItem","_EoLaunchpadQuickAccess","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_EoSearchLaunchpad","EoSearchLaunchpad","EoSearchLaunchpadComponent","searchInputRef","handleClickSearchBox","_searchInputRef$curre","focus","loading","q","setQ","handleSearch","clearSearch","placeholder","onChange","onFocus","onBlur","theme","onMouseDown","Loading","spinning","_EoSearchLaunchpad2","_EoLaunchpadRecentVis","EoLaunchpadRecentVisits","EoLaunchpadRecentVisitsComponent","recentVisits","_EoLaunchpadRecentVisits","_EoAppBarWrapper","alias","_dec4","_D","EoAppBarWrapper","_init_isFixed","_init_position","_init_displayCenter","_init_extraAppBarContentStyle","isFixed","position","displayCenter","extraAppBarContentStyle","EoAppBarWrapperComponent","mainElement","getElementById","iframeMainElement","marginTop","_objectSpread","justifyContent","_EoAppBarWrapper2","_EoFrameBreadcrumb","WrappedBreadcrumb","WrappedBreadcrumbItem","EoFrameBreadcrumb","_init_breadcrumb","_init_noCurrentApp","breadcrumb","noCurrentApp","EoFrameBreadcrumbComponent","_props$breadcrumb","_props$noCurrentApp","navConfig","getNavConfig","curAppBreadcrumb","currentAppBreadcrumbItems","breadcrumbItems","useCurrentMenuTitle","to","homepage","internal","localeName","_EoFrameBreadcrumb2","_EoSidebarMenuItem","_dec5","_dec6","_dec7","_E","_F","_G","EoSidebarMenuItem","_init_url","_init_href","_init_target","_init_icon","_init_selected","_init_inSubmenu","_init_menuCollapsed","selected","inSubmenu","menuCollapsed","EoSidebarMenuItemComponent","imgStyle","_EoSidebarMenuItem2","sidebarMenuItemTagNameSet","Set","isSidebarMenuItem","element","tagName","useUpdateMenuCollapsedState","slotRef","updateChildrenMenuCollapsedState","_slotRef$current","assignedElements","forEach","ele","slotElem","handleSlotchange","SIDE_BAR_HAS_BEEN_USED","SIDE_BAR_EXPAND_STATE","SIDE_BAR_RESIZE_WIDTH","ExpandedState","sideBarWidth","parseInt","getCssPropertyValue","sideBarCollapsedWidth","SidebarMenuContext","createContext","openedKeys","matchedKeys","WrappedSidebarMenu","WrappedSidebarMenuItem","WrappedSidebarMenuGroup","WrappedSidebarMenuSubmenu","MenuSimpleItem","useContext","top","isSelected","collapsable","MenuSubmenu","collapsed","SidebarMenu","expandedState","Collapsed","_EoSidebarMenuGroup","_handleCollapseChang","EoSidebarMenuGroup","_init_collapsable","_init_collapsed","EoSidebarMenuGroupComponent","onCollapseChange","titleRef","handleClick","titleElem","_EoSidebarMenuGroup2","_EoSidebarMenuSubmenu","EoSidebarMenuSubmenu","EoSidebarMenuSubmenuComponent","_EoSidebarMenuSubmenu2","_EoSidebarMenu","EoSidebarMenu","EoSidebarMenuComponent","_EoSidebarMenu2","xmlns","viewBox","fill","fillRule","d","K","en","UNPIN_NAVIGATION","FIXED_NAVIGATION","CLICK_TO_FIX_NAVIGATION","zh","_EoSidebar","WrappedTooltip","_actualWidthChangeEvent","_handleActualWidthChange","_expandedStateChangeEvent","_handleExpandedStateChange","EoSidebar","_get_expandedStateChangeEvent2","_set_expandedStateChangeEvent2","_get_actualWidthChangeEvent2","_set_actualWidthChangeEvent2","_init_hiddenFixedIcon","_init_expandedState","_init_actualWidthChangeEvent","actualWidth","_init_expandedStateChangeEvent","state","hiddenFixedIcon","EoSidebarComponent","onActualWidthChange","onExpandedStateChange","_set_actualWidthChangeEvent","_get_actualWidthChangeEvent","_set_expandedStateChangeEvent","_get_expandedStateChangeEvent","useTranslation","showUserDefinedIcon","isFirstUsedTooltip","setIsFirstUsedTooltip","showContentShadow","setShowContentShadow","dragging","setDragging","setExpandedState","titleIcon","contentBottomPlaceholderRef","observer","IntersectionObserver","entries","entry","isIntersecting","threshold","Expanded","expandedWidth","setExpandedWidth","memorizedWidth","isNaN","containerRef","handleMouseEnter","newState","Hovered","handleMouseLeave","sidebarActualWidth","getContainerWidth","inner","container","content","t","handleFixedIconClick","FixedSvg","display","ToFixedSvg","_containerRef$current","_containerRef$current2","cancelable","fn","frame","cancel","func","offsetX","getBoundingClientRect","left","drag","x","clientX","_len","params","Array","_key","requestAnimationFrame","cancelAnimationFrame","dragEnd","passive","_EoSidebar2","_EoSidebarSubMenu","WrappedMenu","WrappedMenuGroup","WrapperMenuItemSubMenu","WrappedLinkItem","EoSidebarSubMenu","EoSidebarSubMenuComponent","setSelectedKey","setOpenedKeys","setSelected","getMenuItemIndent","_item$key","split","renderMenuItem","titleStyle","paddingLeft","bodyStyle","renderSubMenuItem","renderGroupMenuItem","renderSimpleMenuItem","mode","_EoSidebarSubMenu2","_EoDirectory","_menuItemClickEvent","_suffixIconClickEvent","_menuItemClick","_suffixIconClick","EoDirectory","_get_suffixIconClickEvent2","_set_suffixIconClickEvent2","_get_menuItemClickEvent2","_set_menuItemClickEvent2","_init_directoryTitle","_init_menuItems","_init_suffixBrick","_init_defaultSelectedKeys","_init_menuItemClickEvent","_init_suffixIconClickEvent","directoryTitle","suffixBrick","defaultSelectedKeys","EoDirectoryComponent","suffixIconClick","menuItemClick","_set_menuItemClickEvent","_get_menuItemClickEvent","_set_suffixIconClickEvent","_get_suffixIconClickEvent","_item$children","useBrick","ReactUseMultipleBricks","suffixIcon","suffixIconTooltip","suffixIconDisabled","children","child","groupKey","_EoDirectory2","DirectoryTreeContext","expandedKeysSet","selectedKeysSet","onExpand","onSelect","useDirectoryTreeContext","WrappedTreeLeaf","WrappedTreeInternalNode","TreeLeaf","treeData","depth","nodeData","keys","node","TreeInternalNode","add","delete","TreeNode","isArray","Tree","getAllExpandableKeys","reduce","pre","cur","getExpandableKeysAccordingToSelectedKeys","_cur$children","childrenMatched","some","childrenExpandableKeys","searchTree","searchFields","expandedKeys","lowerQ","toLowerCase","_expandedKeys","_data","selfMatched","flatMap","field","getSearchKeywords","matchItem","childrenSearchResult","filteredChildren","push","result","isNil","Object","prototype","toString","call","k","String","flat","Infinity","_EoDirectoryTree","method","WrappedSearch","onSearch","_dec8","_dec9","_dec10","_dec11","_dec12","_dec13","_H","_I","_expandEvent","_handleExpand","_J","_selectEvent","_handleSelect","EoDirectoryTree","_get_selectEvent2","_set_selectEvent2","_get_expandEvent2","_set_expandEvent2","_init_data","_init_searchable","_init_placeholder","_init_searchFields","_init_selectedKeys","_init_expandedKeys","_init_expandEvent","_init_selectEvent","searchable","expandAll","collapseAll","expandAccordingToSelectedKeys","EoDirectoryTreeComponent","_set_expandEvent","_get_expandEvent","_set_selectEvent","_get_selectEvent","searchedData","treeItems","flattenList","dig","list","parent","treeItem","pos","flattenData","getFlattenTreeData","trim","_EoDirectoryTree2","_EoDirectoryTreeLeaf","EoDirectoryTreeLeaf","_init_depth","EoDirectoryTreeLeafComponent","treeItemRef","suffixRef","handleSelect","suffix","handleSuffixClick","_EoDirectoryTreeLeaf2","_EoDirectoryTreeInter","EoDirectoryTreeInternalNode","_init_expanded","_init_selectable","selectable","EoDirectoryTreeInternalNodeComponent","expandBottomRef","expandBottom","handleExpand","Arrow","_EoDirectoryTreeInternalNode","_NavLogo","NavLogo","NavLogoComponent","brand","getBrandSettings","logoNode","menu_bar_logo_url","src","category","menu_bar_logo_no_link","_NavLogo2","___CSS_LOADER_EXPORT___","module","_checkPrivateRedeclaration","obj","privateCollection","TypeError","_classExtractFieldDescriptor","receiver","privateMap","descriptor","classExtractFieldDescriptor","MyCollectionApi_listMyCollection","http","_x","_x2","apply","MyCollectionApi_upsertMyCollection","post"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"chunks/1488.928cd7ae.js","mappings":"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","sources":["webpack:///./src/nav-menu/index.tsx","webpack:///./src/launchpad/index.tsx","webpack:///./src/launchpad-button-v2/index.tsx","webpack:///./src/launchpad-config/wrapped-bricks.ts","webpack:///./src/launchpad-config/MenuGroup.tsx","webpack:///./src/launchpad-config/index.tsx","webpack:///./src/easyops-navbar-alerts/index.tsx","webpack:///./src/launchpad-quick-access/index.tsx","webpack:///./src/search-launchpad/host-context.css?4d0b","webpack:///./src/search-launchpad/index.tsx","webpack:///./src/launchpad-recent-visits/index.tsx","webpack:///./src/app-bar-wrapper/index.tsx","webpack:///./src/frame-breadcrumb/index.tsx","webpack:///./src/sidebar/sidebar-menu-item/index.tsx","webpack:///./src/sidebar/utils.tsx","webpack:///./src/sidebar/sidebar-menu-group/index.tsx","webpack:///./src/sidebar/sidebar-menu-submenu/index.tsx","webpack:///./src/sidebar/sidebar-menu/index.tsx","webpack:///./src/images/fixed.svg","webpack:///./src/images/toFixed.svg","webpack:///./src/sidebar/i18n.ts","webpack:///./src/sidebar/index.tsx","webpack:///../../src/debounceByAnimationFrame.ts","webpack:///./src/sidebar-sub-menu/index.tsx","webpack:///./src/directory/index.tsx","webpack:///./src/directory-tree/DirectoryTreeContext.ts","webpack:///./src/directory-tree/Tree.tsx","webpack:///./src/directory-tree/utils.ts","webpack:///./src/directory-tree/index.tsx","webpack:///./src/directory-tree/directory-tree-leaf/index.tsx","webpack:///./src/directory-tree/constants.ts","webpack:///./src/directory-tree/directory-tree-internal-node/arrow.svg","webpack:///./src/directory-tree/directory-tree-internal-node/index.tsx","webpack:///./src/nav-logo/index.tsx","webpack:///./src/search-launchpad/host-context.css","webpack:///./src/app-bar-wrapper/styles.shadow.css","webpack:///./src/directory-tree/directory-tree-internal-node/styles.shadow.css","webpack:///./src/directory-tree/directory-tree-leaf/styles.shadow.css","webpack:///./src/directory-tree/styles.shadow.css","webpack:///./src/directory/styles.shadow.css","webpack:///./src/easyops-navbar-alerts/styles.shadow.css","webpack:///./src/frame-breadcrumb/styles.shadow.css","webpack:///./src/launchpad-config/styles.shadow.css","webpack:///./src/launchpad-quick-access/styles.shadow.css","webpack:///./src/launchpad-recent-visits/styles.shadow.css","webpack:///./src/nav-logo/styles.shadow.css","webpack:///./src/search-launchpad/styles.shadow.css","webpack:///./src/sidebar-sub-menu/styles.shadow.css","webpack:///./src/sidebar/sidebar-menu-group/styles.shadow.css","webpack:///./src/sidebar/sidebar-menu-item/styles.shadow.css","webpack:///./src/sidebar/sidebar-menu-submenu/styles.shadow.css","webpack:///./src/sidebar/sidebar-menu/styles.shadow.css","webpack:///./src/sidebar/styles.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:///../../node_modules/@next-api-sdk/user-service-sdk/dist/esm/api/user_service/my_collection/listMyCollection.js","webpack:///../../node_modules/@next-api-sdk/user-service-sdk/dist/esm/api/user_service/my_collection/upsertMyCollection.js"],"sourcesContent":["import React, {\n CSSProperties,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { getHistory } from \"@next-core/runtime\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport styleText from \"./nav-menu.shadow.css\";\nimport { UnregisterCallback } from \"history\";\nimport type { SidebarMenu } from \"@next-bricks/basic/menu\";\nimport type {\n MenuItem as MenuItemComponent,\n MenuComponentProps,\n} from \"@next-bricks/basic/menu-item\";\nimport { isSubMenu, isGroup, renderLinkCom, renderSpanCom } from \"./utils.js\";\nimport { initMenuItemAndMatchCurrentPathKeys } from \"@next-shared/general/menu\";\nimport type {\n SidebarMenuGroup,\n SidebarMenuItem,\n SidebarMenuSimpleItem,\n} from \"@next-shared/general/types\";\nimport type {\n Popover,\n PopoverProps,\n PopoverEvents,\n PopoverEventsMapping,\n Placement,\n} from \"@next-bricks/basic/popover\";\nimport \"@next-core/theme\";\nimport classnames from \"classnames\";\nimport { ThreeLevelMenuPopoverContent } from \"./ThreeLevelMenuPopoverContent.js\";\nimport { SiteMapItem } from \"./site-map/SiteMapItem.js\";\nimport SiteMapStyleText from \"../nav-menu/site-map/SiteMapItem.shadow.css\";\nimport ItemTagStyleText from \"../nav-menu/site-map/ItemTag.shadow.css\";\nimport GroupItemStyleText from \"../nav-menu/site-map/GroupItem.shadow.css\";\nimport \"./host-context.css\";\n\nconst { defineElement, property } = createDecorators();\n\nconst WrappedMenuItem = wrapBrick<MenuItemComponent, MenuComponentProps>(\n \"eo-menu-item\"\n);\nconst WrappedPopover = wrapBrick<\n Popover,\n PopoverProps,\n PopoverEvents,\n PopoverEventsMapping\n>(\"eo-popover\", {\n onVisibleChange: \"visible.change\",\n beforeVisibleChange: \"before.visible.change\",\n});\n\nconst GAP_WIDTH = 8;\n\ninterface NavMenuProps {\n menu?: SidebarMenu;\n showTooltip?: boolean;\n}\n\ninterface MenuItemComProps {\n index?: number;\n hidden?: boolean;\n item: SidebarMenuItem;\n topData?: boolean;\n selectedKey?: string[];\n showTooltip?: boolean;\n overflow?: boolean;\n}\ninterface SimpleMenuItemComProps extends MenuItemComProps {\n item: SidebarMenuSimpleItem;\n}\ninterface MenuGroupComProps extends MenuItemComProps {\n item: SidebarMenuGroup;\n}\nfunction RenderMenuItemCom(props: MenuItemComProps) {\n const { item } = props;\n return isSubMenu(item as SidebarMenuGroup, props.topData) ? (\n <SubMenuItemCom {...props} item={item as SidebarMenuGroup}></SubMenuItemCom>\n ) : isGroup(item) ? (\n <GroupMenuItemCom {...props} item={item as SidebarMenuGroup} />\n ) : (\n <SimpleMenuItemCom\n {...props}\n item={item as SidebarMenuSimpleItem}\n ></SimpleMenuItemCom>\n );\n}\nfunction SimpleMenuItemCom(props: SimpleMenuItemComProps) {\n const { item, index, hidden, showTooltip, selectedKey = [] } = props;\n return (\n <WrappedMenuItem\n data-index={index}\n className={hidden ? \"overflow-menu-item\" : \"\"}\n key={item.key}\n title={showTooltip ? item.text : \"\"}\n active={item.key ? selectedKey.includes(item.key) : false}\n >\n {renderLinkCom(item, { width: \"100%\" })}\n </WrappedMenuItem>\n );\n}\n\nlet scrollWidth: number;\n// istanbul ignore next;\nconst handlePopupVisibleChange = (event: CustomEvent<boolean>) => {\n // 当用户设置滚动条一直显示时,来回切换 overflow: hidden 会导致滚动条显示或隐藏\n // 造成页面宽度变化而导致的抖动的问题\n const paddingRight =\n scrollWidth ??\n (scrollWidth = window.innerWidth - document.body.clientWidth);\n\n document.body.style.paddingRight = event.detail ? paddingRight + \"px\" : \"\";\n document.body.style.overflow = event.detail ? \"hidden\" : \"\";\n document.body.style.touchAction = event.detail ? \"none\" : \"\";\n};\n\nfunction SubMenuItemCom({\n index,\n hidden,\n item,\n topData,\n showTooltip,\n selectedKey = [],\n overflow,\n}: MenuGroupComProps) {\n return item.items?.length > 0 ? (\n <WrappedPopover\n data-index={index}\n className={classnames(\"popover\", {\n subprime: !topData,\n \"overflow-menu-item\": hidden,\n })}\n arrow={false}\n trigger=\"hover\"\n placement={topData ? \"bottom-start\" : \"right-start\"}\n distance={0}\n anchorDisplay=\"block\"\n strategy=\"fixed\"\n >\n <WrappedMenuItem\n className=\"sub-menu-item-label\"\n key={item.key}\n slot=\"anchor\"\n title={showTooltip ? item.title : \"\"}\n >\n {renderSpanCom(item, !topData)}\n </WrappedMenuItem>\n <div\n className={classnames(\"sub-menu-wrapper\", {\n \"overflow-menu-wrapper\": overflow,\n })}\n >\n {item.items.map((innerItem) => (\n <React.Fragment key={innerItem.key}>\n <RenderMenuItemCom\n item={innerItem}\n selectedKey={selectedKey}\n showTooltip={showTooltip}\n />\n </React.Fragment>\n ))}\n </div>\n </WrappedPopover>\n ) : null;\n}\n\nfunction GroupMenuItemCom({\n item,\n showTooltip,\n selectedKey = [],\n}: MenuGroupComProps) {\n return item.items?.length > 0 ? (\n item.childLayout === \"category\" ? (\n <ThreeLevelMenuCom\n item={item}\n selectedKey={selectedKey}\n showTooltip={showTooltip}\n placement=\"right-start\"\n anchorDisplay=\"block\"\n />\n ) : (item as SidebarMenuGroup).childLayout === \"siteMap\" ? (\n <SitMapMenCom\n item={item}\n selectedKey={selectedKey}\n showTooltip={showTooltip}\n placement=\"right-start\"\n anchorDisplay=\"block\"\n topData={false}\n />\n ) : (\n <>\n <div className=\"group-label\">{item.title}</div>\n <div className=\"group-wrapper\">\n {item.items.map((innerItem) => {\n return (\n <React.Fragment key={innerItem.key}>\n <RenderMenuItemCom\n item={innerItem}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n />\n </React.Fragment>\n );\n })}\n </div>\n </>\n )\n ) : null;\n}\n\nfunction ThreeLevelMenuCom({\n index,\n hidden,\n item,\n selectedKey = [],\n showTooltip,\n placement = \"bottom-start\",\n anchorDisplay,\n}: {\n index?: number;\n hidden?: boolean;\n item: SidebarMenuGroup;\n selectedKey?: string[];\n showTooltip?: boolean;\n placement?: Placement;\n anchorDisplay?: CSSProperties[\"display\"];\n}) {\n return item.items?.length > 0 ? (\n <WrappedPopover\n data-index={index}\n className={classnames(\"three-level-menu-popover\", \"popover\", {\n \"overflow-menu-item\": hidden,\n })}\n arrow={false}\n trigger={\"hover\"}\n placement={placement}\n distance={0}\n key={item.key}\n strategy=\"fixed\"\n anchorDisplay={anchorDisplay}\n beforeVisibleChange={handlePopupVisibleChange}\n >\n <WrappedMenuItem\n className=\"sub-menu-item-label\"\n key={item.key}\n slot=\"anchor\"\n title={showTooltip ? item.title : \"\"}\n >\n {renderSpanCom(item)}\n </WrappedMenuItem>\n <div className=\"sub-menu-wrapper\">\n <ThreeLevelMenuPopoverContent\n menuItem={item}\n selectedKey={selectedKey}\n ></ThreeLevelMenuPopoverContent>\n </div>\n </WrappedPopover>\n ) : null;\n}\n\nfunction SitMapMenCom({\n index,\n hidden,\n item,\n selectedKey = [],\n showTooltip,\n placement = \"bottom-start\",\n anchorDisplay,\n topData,\n}: {\n index?: number;\n hidden?: boolean;\n item: SidebarMenuGroup;\n selectedKey?: string[];\n showTooltip?: boolean;\n placement?: Placement;\n anchorDisplay?: CSSProperties[\"display\"];\n topData?: boolean;\n}) {\n const [visible, setVisible] = useState<boolean>();\n\n const handleVisibleChange = (event: CustomEvent<boolean>): void => {\n setVisible(event.detail);\n handlePopupVisibleChange(event);\n };\n\n return item.items?.length > 0 ? (\n <WrappedPopover\n data-index={index}\n className={classnames(\"popover\", {\n \"overflow-menu-item\": hidden,\n })}\n trigger={\"hover\"}\n placement={placement}\n distance={0}\n key={item.key}\n strategy=\"fixed\"\n arrow={false}\n anchorDisplay={anchorDisplay}\n beforeVisibleChange={handleVisibleChange}\n >\n <WrappedMenuItem\n className=\"sub-menu-item-label\"\n key={item.key}\n slot=\"anchor\"\n title={showTooltip ? item.title : \"\"}\n >\n {renderSpanCom(item)}\n </WrappedMenuItem>\n <div\n className={classnames(\"sub-menu-sit-map-wrapper\", {\n \"in-group-site-map\": !topData,\n })}\n onClick={(e) => e.stopPropagation()}\n >\n <SiteMapItem\n menuGroup={item}\n selectedKey={selectedKey}\n visible={visible}\n />\n </div>\n </WrappedPopover>\n ) : null;\n}\n\n/**\n * 菜单构件\n * @author sailor\n * @category navigation\n */\n@defineElement(\"eo-nav-menu\", {\n styleTexts: [\n SiteMapStyleText,\n ItemTagStyleText,\n GroupItemStyleText,\n styleText,\n ],\n})\nclass NavMenu extends ReactNextElement {\n /**\n * 菜单项\n */\n @property({\n attribute: false,\n })\n accessor menu: SidebarMenu | undefined;\n\n /**\n * 是否显示 tooltip\n */\n @property({\n type: Boolean,\n })\n accessor showTooltip: boolean | undefined;\n\n render() {\n return <NavMenuComponent menu={this.menu} showTooltip={this.showTooltip} />;\n }\n}\n\nfunction NavMenuComponent(props: NavMenuProps) {\n const { menu, showTooltip } = props;\n\n const history = getHistory();\n const navMenuWrapperRef = useRef<HTMLDivElement>(null);\n const [location, setLocation] = useState(history.location);\n const [overflowIndex, setOverflowIndex] = useState<number>(\n Number.MAX_SAFE_INTEGER\n );\n const { pathname, search } = location;\n\n const selectedKey = useMemo(() => {\n const { selectedKeys } = initMenuItemAndMatchCurrentPathKeys(\n menu?.menuItems ?? [],\n pathname,\n search,\n \"\"\n );\n return selectedKeys;\n }, [menu?.menuItems, pathname, search]);\n\n useEffect(() => {\n const unListen: UnregisterCallback = history.listen((location) => {\n setLocation(location);\n });\n return unListen;\n }, []);\n\n useEffect(() => {\n if (navMenuWrapperRef.current) {\n const resizeObserver = new ResizeObserver(() => {\n if (navMenuWrapperRef.current) {\n const { width } = navMenuWrapperRef.current.getClientRects()[0] ?? {};\n const childNodes = navMenuWrapperRef.current.childNodes;\n\n if (childNodes.length && width) {\n let wrapperWidth = width;\n let overflowIndex = childNodes.length;\n\n for (let i = 0; i < childNodes.length; i++) {\n const { width: childWidth, height: childHeight } = (\n childNodes[i] as HTMLElement\n ).getClientRects()[0];\n\n if (!childHeight && wrapperWidth - 40 < 0) {\n overflowIndex = i - 1;\n break;\n }\n\n wrapperWidth =\n wrapperWidth - childWidth - (i > 0 ? GAP_WIDTH : 0);\n if (wrapperWidth < 0) {\n overflowIndex = i;\n break;\n }\n }\n\n setOverflowIndex(overflowIndex < 0 ? 0 : overflowIndex);\n }\n }\n });\n resizeObserver.observe(navMenuWrapperRef.current);\n\n return () => {\n resizeObserver.disconnect();\n };\n }\n }, []);\n\n const overflowMenu = useMemo(\n (): SidebarMenuItem => ({\n type: \"subMenu\",\n title: \"···\",\n items: menu?.menuItems.slice(\n overflowIndex,\n menu.menuItems.length\n ) as SidebarMenuItem[],\n }),\n [menu?.menuItems, overflowIndex]\n );\n\n return (\n <div ref={navMenuWrapperRef} className=\"nav-menu-wrapper\">\n {menu?.menuItems.map((item, index) => {\n const isHidden = overflowIndex <= index;\n return (\n <React.Fragment key={item.key}>\n {isSubMenu(item as SidebarMenuGroup, true) &&\n (item as SidebarMenuGroup).childLayout === \"category\" &&\n (item as SidebarMenuGroup).items?.length ? (\n <ThreeLevelMenuCom\n index={index}\n hidden={isHidden}\n item={item as SidebarMenuGroup}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n />\n ) : (item as SidebarMenuGroup).type === \"group\" &&\n (item as SidebarMenuGroup).childLayout === \"siteMap\" ? (\n <SitMapMenCom\n index={index}\n hidden={isHidden}\n item={item as SidebarMenuGroup}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n topData={true}\n />\n ) : (\n <RenderMenuItemCom\n index={index}\n hidden={isHidden}\n item={item}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n topData={true}\n />\n )}\n </React.Fragment>\n );\n })}\n <RenderMenuItemCom\n hidden={overflowIndex > (menu?.menuItems?.length ?? 0)}\n item={overflowMenu}\n showTooltip={showTooltip}\n selectedKey={selectedKey}\n overflow={true}\n topData={true}\n />\n </div>\n );\n}\n\nexport { NavMenu };\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { LaunchpadButton as LaunchpadButtonComponent } from \"./LaunchpadButton/LaunchpadButton.js\";\nimport { initializeReactI18n } from \"@next-core/i18n/react\";\nimport \"@next-core/theme\";\nimport { NS, locales } from \"./i18n.js\";\nimport styleText from \"./LaunchpadButton/LaunchpadButton.shadow.css\";\n\ninitializeReactI18n(NS, locales);\n\nconst { defineElement } = createDecorators();\n\n/**\n * Launchpad 按钮构件\n * @author sailor\n * @insider\n */\n@defineElement(\"eo-launchpad-button\", {\n styleTexts: [styleText],\n})\nclass LaunchpadButton extends ReactNextElement {\n render() {\n return <LaunchpadButtonComponent />;\n }\n}\n\nexport { LaunchpadButton };\n","import React, { useEffect, useState } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\nimport \"@next-core/theme\";\nimport { getHistory, getRuntime } from \"@next-core/runtime\";\nimport type { lockBodyScroll as _lockBodyScroll } from \"@next-bricks/basic/data-providers/lock-body-scroll/lock-body-scroll\";\n// import { useTranslation, initializeReactI18n } from \"@next-core/i18n/react\";\nimport hotkeys from \"hotkeys-js\";\nimport classNames from \"classnames\";\n// import { K, NS, locales } from \"./i18n.js\";\nimport LaunchpadSvg from \"../images/launchpad.svg\";\nimport styleText from \"./styles.shadow.css\";\nimport platformCategoryStyleText from \"./PlatformCategory.shadow.css\";\nimport { Launchpad } from \"./Launchpad\";\nimport {\n deferredFavorites,\n deferredLaunchpadInfo,\n deferredPlatformCategories,\n} from \"./useLaunchpadInfo\";\nimport \"./host-context.css\";\n\n// initializeReactI18n(NS, locales);\n\nconst { defineElement } = createDecorators();\n\nconst lockBodyScroll = unwrapProvider<typeof _lockBodyScroll>(\n \"basic.lock-body-scroll\"\n);\n\n/**\n * 构件 `eo-launchpad-button-v2`\n * @insider\n */\nexport\n@defineElement(\"eo-launchpad-button-v2\", {\n styleTexts: [styleText, platformCategoryStyleText],\n})\nclass EoLaunchpadButtonV2 extends ReactNextElement {\n disconnectedCallback(): void {\n super.disconnectedCallback();\n lockBodyScroll(this, false);\n }\n\n render() {\n return <EoLaunchpadButtonV2Component host={this} />;\n }\n}\n\nexport function EoLaunchpadButtonV2Component({ host }: { host: HTMLElement }) {\n const [initialized, setInitialized] = useState(false);\n const [active, setActive] = useState(false);\n const toggleLaunchpad = (): void => {\n setActive((previous) => !previous);\n };\n\n useEffect(() => {\n // 当切换页面时,关闭 Launchpad。\n const unlisten = getHistory().listen(() => {\n setActive(false);\n });\n return unlisten;\n }, []);\n\n useEffect(() => {\n // 打开一次 launchpad 后,保留 DOM。\n if (active && !initialized) {\n setInitialized(true);\n }\n }, [active, initialized]);\n\n // istanbul ignore next\n useEffect(() => {\n hotkeys.filter = function () {\n return true;\n };\n\n // 快捷打开/关闭 Launchpad\n hotkeys(\"alt+l\", (event) => {\n event.preventDefault();\n setActive((previous) => !previous);\n });\n\n // 按 Esc 关闭 Launchpad\n hotkeys(\"esc\", () => {\n setActive(false);\n });\n\n return () => {\n hotkeys.unbind(\"alt+l\");\n hotkeys.unbind(\"esc\");\n };\n }, []);\n\n useEffect(() => {\n lockBodyScroll(host, active);\n }, [active, host]);\n\n useEffect(() => {\n deferredLaunchpadInfo.schedulePrefetch();\n deferredFavorites.schedulePrefetch();\n getRuntime()?.getFeatureFlags()[\"launchpad-show-platform-category\"] &&\n deferredPlatformCategories.schedulePrefetch();\n }, []);\n\n return (\n <>\n <a\n role=\"button\"\n className={classNames(\"launchpad-button\", { active })}\n onClick={toggleLaunchpad}\n >\n <LaunchpadSvg />\n </a>\n <div\n className={classNames(\"mask\", { active })}\n onClick={toggleLaunchpad}\n ></div>\n {initialized && <Launchpad active={active} />}\n </>\n );\n}\n","import { wrapBrick } from \"@next-core/react-element\";\nimport { unwrapProvider } from \"@next-core/utils/general\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport type {\n EoDropdownActions,\n DropdownActionsProps,\n DropdownActionsEvents,\n DropdownActionsEventsMapping,\n} from \"@next-bricks/basic/dropdown-actions\";\nimport type { showDialog as _showDialog } from \"@next-bricks/basic/data-providers/show-dialog/show-dialog\";\n\nexport const WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nexport const WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nexport const WrappedDropdownActions = wrapBrick<\n EoDropdownActions,\n DropdownActionsProps,\n DropdownActionsEvents,\n DropdownActionsEventsMapping\n>(\"eo-dropdown-actions\", {\n onActionClick: \"action.click\",\n onVisibleChange: \"visible.change\",\n});\n\n// Use `unwrapProvider` to get the original function of a provider\nexport const showDialog =\n unwrapProvider<typeof _showDialog>(\"basic.show-dialog\");\n","import React, { useCallback, useMemo, useState } from \"react\";\nimport { pick } from \"lodash\";\nimport classNames from \"classnames\";\nimport { checkIfByTransform } from \"@next-core/runtime\";\nimport type { SimpleAction } from \"@next-bricks/basic/actions\";\nimport {\n WrappedDropdownActions,\n WrappedIcon,\n WrappedLink,\n} from \"./wrapped-bricks\";\nimport type {\n ConfigMenuGroup,\n ConfigMenuItemDir,\n ConfigMenuItemNormal,\n MenuAction,\n MenuActionEventDetail,\n} from \"./interfaces\";\nimport { getAppLocaleName } from \"../shared/getLocaleName\";\n\nexport interface MenuGroupProps {\n data: ConfigMenuGroup;\n actions?: MenuAction[];\n onActionClick?: (detail: MenuActionEventDetail) => void;\n}\n\nexport function MenuGroup({ data, actions, onActionClick }: MenuGroupProps) {\n const { name, items } = data;\n const [dropdownActive, setDropdownActive] = useState(false);\n\n const filteredActions = useMemo(\n () =>\n actions?.filter((item) => checkIfByTransform(item, { type: \"group\" })),\n [actions]\n );\n\n const handleActionClick = useCallback(\n (event: CustomEvent<SimpleAction>) => {\n onActionClick?.({\n data,\n action: event.detail,\n });\n },\n [data, onActionClick]\n );\n\n return (\n <li className={classNames(\"menu-group\", { empty: items.length === 0 })}>\n <div className=\"menu-group-label-wrapper\">\n <span className=\"menu-group-label\">{name}</span>\n <WrappedDropdownActions\n actions={filteredActions}\n onVisibleChange={(event) => {\n setDropdownActive(event.detail);\n }}\n onActionClick={handleActionClick}\n >\n <WrappedIcon\n lib=\"fa\"\n icon=\"gear\"\n className={classNames(\"menu-config\", { active: dropdownActive })}\n />\n </WrappedDropdownActions>\n </div>\n <ul className=\"menu\">\n {items.map((item) =>\n item.type === \"dir\" ? (\n <MenuItemFolder\n key={item.instanceId}\n data={item}\n actions={actions}\n onActionClick={onActionClick}\n />\n ) : (\n <MenuItem\n key={`${item.type}-${item.id}`}\n data={item}\n actions={actions}\n onActionClick={onActionClick}\n />\n )\n )}\n </ul>\n </li>\n );\n}\n\nexport interface MenuItemProps {\n data: ConfigMenuItemNormal;\n actions?: MenuAction[];\n onActionClick?: (detail: MenuActionEventDetail) => void;\n}\n\nexport function MenuItem({ data, actions, onActionClick }: MenuItemProps) {\n const name = useMemo(\n () =>\n data.type === \"app\"\n ? getAppLocaleName(data.locales, data.name)\n : data.name,\n [data]\n );\n\n const [dropdownActive, setDropdownActive] = useState(false);\n\n const filteredActions = useMemo(\n () => actions?.filter((item) => checkIfByTransform(item, data)),\n [actions, data]\n );\n\n const handleActionClick = useCallback(\n (event: CustomEvent<SimpleAction>) => {\n onActionClick?.({\n data,\n action: event.detail,\n });\n },\n [data, onActionClick]\n );\n\n return (\n <li className=\"menu-item\">\n <WrappedLink>\n <WrappedIcon\n className={`menu-icon`}\n lib=\"easyops\"\n icon=\"micro-app-center\"\n {...(data.menuIcon?.lib && data.menuIcon.icon\n ? (pick(data.menuIcon, [\n \"lib\",\n \"icon\",\n \"theme\",\n \"category\",\n \"prefix\",\n ]) as any)\n : null)}\n />\n <span className=\"menu-item-label\">{name}</span>\n </WrappedLink>\n <WrappedDropdownActions\n actions={filteredActions}\n onVisibleChange={(event) => {\n setDropdownActive(event.detail);\n }}\n onActionClick={handleActionClick}\n >\n <WrappedIcon\n lib=\"fa\"\n icon=\"gear\"\n className={classNames(\"menu-config\", { active: dropdownActive })}\n />\n </WrappedDropdownActions>\n </li>\n );\n}\n\nexport interface MenuItemFolderProps {\n data: ConfigMenuItemDir;\n actions?: MenuAction[];\n onActionClick?: (detail: MenuActionEventDetail) => void;\n}\n\nfunction MenuItemFolder({ data, actions, onActionClick }: MenuItemFolderProps) {\n const { name, items } = data;\n const [dropdownActive, setDropdownActive] = useState(false);\n const [expanded, setExpanded] = useState(false);\n\n const filteredActions = useMemo(\n () => actions?.filter((item) => checkIfByTransform(item, { type: \"dir\" })),\n [actions]\n );\n\n const toggle = useCallback(() => {\n setExpanded((previous) => !previous);\n }, []);\n\n const handleActionClick = useCallback(\n (event: CustomEvent<SimpleAction>) => {\n onActionClick?.({\n data,\n action: event.detail,\n });\n },\n [data, onActionClick]\n );\n\n return (\n <li\n className={classNames(\"menu-item folder\", { empty: items.length === 0 })}\n >\n <div className=\"menu-folder-label-wrapper\">\n <WrappedLink onClick={toggle}>\n <WrappedIcon\n lib=\"fa\"\n prefix=\"far\"\n icon=\"folder-open\"\n className=\"menu-icon\"\n />\n <span className=\"menu-item-label\">{name}</span>\n <WrappedIcon\n lib=\"antd\"\n icon={expanded ? \"up\" : \"down\"}\n className=\"menu-item-toggle\"\n />\n </WrappedLink>\n <WrappedDropdownActions\n actions={filteredActions}\n onVisibleChange={(event) => {\n setDropdownActive(event.detail);\n }}\n onActionClick={handleActionClick}\n >\n <WrappedIcon\n lib=\"fa\"\n icon=\"gear\"\n className={classNames(\"menu-config\", { active: dropdownActive })}\n />\n </WrappedDropdownActions>\n </div>\n <ul className={classNames(\"sub-menu\", { expanded })}>\n {items.map((item) => (\n <MenuItem\n key={item.instanceId}\n data={item}\n actions={actions}\n onActionClick={onActionClick}\n />\n ))}\n </ul>\n </li>\n );\n}\n","import React from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport type {\n ConfigMenuGroup,\n MenuAction,\n MenuActionEventDetail,\n} from \"./interfaces\";\nimport { MenuGroup } from \"./MenuGroup\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property, event } = createDecorators();\n\n/**\n * 构件 `nav.launchpad-config`\n * @insider\n */\nexport\n@defineElement(\"nav.launchpad-config\", {\n styleTexts: [styleText],\n})\nclass LaunchpadConfig extends ReactNextElement implements LaunchpadConfigProps {\n @property({ attribute: false })\n accessor menuGroups: ConfigMenuGroup[] | undefined;\n\n @property({ attribute: false })\n accessor actions: MenuAction[] | undefined;\n\n @event({ type: \"action.click\" })\n accessor #actionClickEvent!: EventEmitter<MenuActionEventDetail>;\n\n #onActionClick = (detail: MenuActionEventDetail) => {\n this.#actionClickEvent.emit(detail);\n };\n\n render() {\n return (\n <LaunchpadConfigComponent\n menuGroups={this.menuGroups}\n actions={this.actions}\n onActionClick={this.#onActionClick}\n />\n );\n }\n}\n\nexport interface LaunchpadConfigProps {\n menuGroups?: ConfigMenuGroup[];\n actions?: MenuAction[];\n onActionClick?: (detail: MenuActionEventDetail) => void;\n}\n\nexport function LaunchpadConfigComponent({\n menuGroups,\n actions,\n onActionClick,\n}: LaunchpadConfigProps) {\n return (\n <ul className=\"menu-groups\">\n {menuGroups?.map((group) => (\n <MenuGroup\n key={group.instanceId}\n data={group}\n actions={actions}\n onActionClick={onActionClick}\n />\n ))}\n </ul>\n );\n}\n","import React, { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport { getRuntime } from \"@next-core/runtime\";\nimport { useCurrentApp } from \"@next-core/react-runtime\";\nimport { auth } from \"@next-core/easyops-runtime\";\nimport \"@next-core/theme\";\nimport { JsonStorage } from \"@next-shared/general/JsonStorage\";\nimport moment from \"moment\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport styleText from \"./styles.shadow.css\";\n\nexport const WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nexport const WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\nconst { defineElement } = createDecorators();\n\n/**\n * 构件 `nav.easyops-navbar-alerts`\n * @insider\n */\nexport\n@defineElement(\"nav.easyops-navbar-alerts\", {\n styleTexts: [styleText],\n})\nclass EasyopsNavbarAlerts extends ReactNextElement {\n render() {\n return <EasyopsNavbarAlertsComponent />;\n }\n}\n\ninterface SlowRenderInfo {\n renderTime: number;\n suggestTime: number;\n suggestUrl?: string;\n}\n\nconst storage = new JsonStorage(localStorage);\n\nexport function EasyopsNavbarAlertsComponent() {\n const [licenseHide, setLienceseHide] = useState<boolean>(false);\n const [slowRender, setSlowRender] = useState<SlowRenderInfo | null>(null);\n const currentApp = useCurrentApp();\n const licenseDismissedKey = useMemo(() => {\n const authInfo = auth.getAuth();\n return `license:${authInfo.org}`;\n }, []);\n\n const licenseDaysLeft = useMemo(() => {\n const authInfo = auth.getAuth();\n const validDaysLeft = authInfo.license?.validDaysLeft;\n let dismissExpireAt: number;\n if (licenseHide) {\n return null;\n }\n if (\n validDaysLeft &&\n validDaysLeft <= 15 &&\n authInfo.isAdmin &&\n ((dismissExpireAt = storage.getItem(licenseDismissedKey)),\n !dismissExpireAt || moment().unix() > dismissExpireAt)\n ) {\n return validDaysLeft;\n }\n return null;\n }, [licenseDismissedKey, licenseHide]);\n\n useEffect(() => {\n const handelRouteRender = (e: Event): void => {\n const renderTime = (e as CustomEvent<{ renderTime: number }>).detail\n .renderTime;\n const { loadTime, loadInfoPage } = getRuntime().getMiscSettings() as {\n loadTime: number;\n loadInfoPage?: string;\n };\n if (currentApp?.isBuildPush && loadTime > 0 && renderTime > loadTime) {\n setSlowRender({\n renderTime: millisecondToSecond(renderTime),\n suggestTime: millisecondToSecond(loadTime),\n suggestUrl: loadInfoPage,\n });\n }\n };\n window.addEventListener(\"route.render\", handelRouteRender);\n return () => {\n window.removeEventListener(\"route.render\", handelRouteRender);\n };\n }, [currentApp]);\n\n const handleLicenseAlertDismiss = useCallback(() => {\n // 一天内不再显示。\n storage.setItem(licenseDismissedKey, moment().unix() + 86400);\n setLienceseHide(true);\n }, [licenseDismissedKey]);\n\n return (\n <>\n {slowRender && (\n <Alert\n text={`您的页面存在性能问题, 当前页面渲染时间 ${slowRender.renderTime} 秒, 规定阈值为: ${slowRender.suggestTime} 秒, 您已超过。请您针对该页面进行性能优化!`}\n type=\"warning\"\n link={\n slowRender.suggestUrl\n ? {\n label: \"建议解决思路\",\n url: slowRender.suggestUrl,\n }\n : undefined\n }\n />\n )}\n {licenseDaysLeft !== null && (\n <Alert\n text={`离 License 过期还有 ${licenseDaysLeft} 天`}\n type=\"info\"\n closable\n onClose={handleLicenseAlertDismiss}\n />\n )}\n </>\n );\n}\n\ninterface AlertProps {\n text: string;\n type: \"info\" | \"warning\";\n closable?: boolean;\n link?: {\n label: string;\n url: string;\n };\n onClose?: () => void;\n}\n\nfunction Alert({ text, type, closable, link, onClose }: AlertProps) {\n return (\n <div className={`alert ${type}`}>\n <span className=\"text\">{text}</span>\n {link && (\n <WrappedLink className=\"link\" href={link.url} target=\"_blank\">\n {link.label}\n </WrappedLink>\n )}\n {closable && (\n <WrappedIcon\n lib=\"antd\"\n icon=\"close\"\n className=\"icon\"\n role=\"button\"\n onClick={onClose}\n />\n )}\n </div>\n );\n}\n\nfunction millisecondToSecond(millisecond: number) {\n return Math.floor(millisecond * 100) / 1e5;\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport { useLaunchpadInfo } from \"../launchpad-button-v2/useLaunchpadInfo\";\nimport { LaunchpadsContext } from \"../launchpad-button-v2/LaunchpadContext\";\nimport { SidebarMenuItem } from \"../launchpad-button-v2/MenuGroup\";\nimport { SidebarMenuItemData } from \"../launchpad-button-v2/interfaces\";\n\nconst { defineElement, property } = createDecorators();\n\n/**\n * 快捷访问\n * @insider\n */\nexport\n@defineElement(\"eo-launchpad-quick-access\", {\n styleTexts: [styleText],\n})\nclass EoLaunchpadQuickAccess extends ReactNextElement {\n @property({\n type: Boolean,\n })\n accessor readonly: boolean | undefined;\n\n render() {\n return <EoLaunchpadQuickAccessComponent readonly={this.readonly} />;\n }\n}\n\ninterface EoLaunchpadQuickAccessComponentProps {\n readonly?: boolean;\n}\n\nexport function EoLaunchpadQuickAccessComponent({\n readonly,\n}: EoLaunchpadQuickAccessComponentProps) {\n const {\n favorites,\n loadingFavorites,\n pushRecentVisit,\n toggleStar,\n isStarred,\n } = useLaunchpadInfo(true);\n\n return (\n <LaunchpadsContext.Provider\n value={{\n searching: false,\n loadingFavorites,\n readonly,\n pushRecentVisit,\n toggleStar,\n isStarred,\n }}\n >\n <ul className=\"quick-access-list\">\n {favorites.map((item, index) => (\n <SidebarMenuItem key={index} item={item as SidebarMenuItemData} />\n ))}\n </ul>\n </LaunchpadsContext.Provider>\n );\n}\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./host-context.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[0].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[0].use[2]!./host-context.css\";\n export default content && content.locals ? content.locals : undefined;\n","import React, { useCallback, useRef, useState } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport classNames from \"classnames\";\nimport { LaunchpadsContext } from \"../launchpad-button-v2/LaunchpadContext\";\nimport { useLaunchpadInfo } from \"../launchpad-button-v2/useLaunchpadInfo\";\nimport { MenuGroup } from \"../launchpad-button-v2/MenuGroup\";\nimport { GeneralIcon, GeneralIconProps } from \"@next-bricks/icons/general-icon\";\nimport \"./host-context.css\";\n\nexport const WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nconst { defineElement, property } = createDecorators();\n\n/**\n * launchpad 搜索\n * @insider\n */\nexport\n@defineElement(\"eo-search-launchpad\", {\n styleTexts: [styleText],\n})\nclass EoSearchLaunchpad extends ReactNextElement {\n /**\n * 简约模式\n */\n @property({\n type: Boolean,\n })\n accessor readonly: boolean | undefined;\n\n render() {\n return <EoSearchLaunchpadComponent readonly={this.readonly} />;\n }\n}\n\ninterface EoSearchLaunchpadComponentProps {\n readonly?: boolean;\n}\n\nexport function EoSearchLaunchpadComponent({\n readonly,\n}: EoSearchLaunchpadComponentProps) {\n const searchInputRef = useRef<HTMLInputElement>(null);\n const handleClickSearchBox = useCallback(() => {\n searchInputRef.current?.focus();\n }, []);\n\n const [active, setActive] = useState(false);\n\n const {\n loading,\n q,\n setQ,\n menuGroups,\n loadingFavorites,\n pushRecentVisit,\n toggleStar,\n isStarred,\n } = useLaunchpadInfo(active);\n const searching = !!q;\n\n const handleSearch = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n setQ(e.target.value);\n },\n [setQ]\n );\n\n const clearSearch = useCallback(() => {\n setQ(\"\");\n }, [setQ]);\n\n return (\n <LaunchpadsContext.Provider\n value={{\n searching,\n loadingFavorites,\n readonly,\n pushRecentVisit,\n toggleStar,\n isStarred,\n }}\n >\n <div className=\"container\">\n <div className=\"search-box\" onClick={handleClickSearchBox}>\n <WrappedIcon\n lib=\"fa\"\n icon=\"magnifying-glass\"\n className=\"search-icon\"\n />\n <input\n ref={searchInputRef}\n placeholder=\"搜索产品/微应用\"\n value={q}\n onChange={handleSearch}\n className=\"search-input\"\n onFocus={() => setActive(true)}\n onBlur={() => setActive(false)}\n />\n <WrappedIcon\n lib=\"antd\"\n theme=\"filled\"\n icon=\"close-circle\"\n className={classNames(\"search-clear\", { searching })}\n onClick={clearSearch}\n onMouseDown={(e) => e.preventDefault()}\n />\n </div>\n <div\n className={classNames(\"dropdown\", { \"dropdown-active\": active })}\n onMouseDown={(e) => e.preventDefault()}\n >\n <div className={classNames(\"dropdown-content\", { loading })}>\n <Loading loading={loading} />\n <ul className=\"menu-groups\">\n {menuGroups.map((group) => (\n <MenuGroup\n key={group.name}\n name={group.name}\n items={group.items}\n />\n ))}\n </ul>\n </div>\n </div>\n </div>\n </LaunchpadsContext.Provider>\n );\n}\n\nfunction Loading({ loading }: { loading: boolean }) {\n return (\n loading && (\n <div className=\"spinner\">\n <WrappedIcon lib=\"fa\" icon=\"spinner\" spinning />\n </div>\n )\n );\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport { useLaunchpadInfo } from \"../launchpad-button-v2/useLaunchpadInfo\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\nconst { defineElement } = createDecorators();\n\n/**\n * launchpad 最近访问\n * @insider\n */\nexport\n@defineElement(\"eo-launchpad-recent-visits\", {\n styleTexts: [styleText],\n})\nclass EoLaunchpadRecentVisits extends ReactNextElement {\n render() {\n return <EoLaunchpadRecentVisitsComponent />;\n }\n}\n\nexport function EoLaunchpadRecentVisitsComponent() {\n const { recentVisits, pushRecentVisit } = useLaunchpadInfo(true);\n\n return (\n <ul className=\"recent-visits\">\n {recentVisits.map((item, index) => (\n <li key={index}>\n <WrappedLink\n onClick={() => pushRecentVisit(item)}\n {...(item.type === \"app\"\n ? {\n url: item.url,\n }\n : {\n href: item.url,\n target: \"_blank\",\n })}\n >\n <span>{item.name}</span>\n </WrappedLink>\n </li>\n ))}\n </ul>\n );\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport classNames from \"classnames\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property } = createDecorators();\n\nexport interface AppBarWrapperProps {\n isFixed?: boolean;\n position?: \"static\" | \"fixed\";\n displayCenter?: boolean;\n extraAppBarContentStyle?: React.CSSProperties;\n}\n\n/**\n * 应用顶部容器\n * @slot left - 左侧内容区\n * @slot right - 右侧内容区\n */\nexport\n@defineElement(\"eo-app-bar-wrapper\", {\n styleTexts: [styleText],\n alias: [\"basic.app-bar-wrapper\"],\n})\nclass EoAppBarWrapper extends ReactNextElement implements AppBarWrapperProps {\n /**\n * 是否固定定位。\n *\n * @default true\n * @deprecated 使用 `position` 属性代替\n */\n @property({\n type: Boolean,\n })\n accessor isFixed: boolean | undefined;\n\n /**\n * 设置定位方式:静态定位或固定定位。\n *\n * 设置时优先级高于 `isFixed`。\n *\n * @default \"fixed\"\n */\n @property()\n accessor position: \"static\" | \"fixed\" | undefined;\n\n /**\n * 居中显示\n * @default false\n */\n @property({\n type: Boolean,\n })\n accessor displayCenter: boolean | undefined;\n\n /** 自定义样式 */\n @property({\n attribute: false,\n })\n accessor extraAppBarContentStyle: React.CSSProperties | undefined;\n\n render() {\n return (\n <EoAppBarWrapperComponent\n displayCenter={this.displayCenter}\n isFixed={this.isFixed}\n position={this.position}\n extraAppBarContentStyle={this.extraAppBarContentStyle}\n />\n );\n }\n}\n\nexport function EoAppBarWrapperComponent({\n isFixed = true,\n position,\n displayCenter = false,\n extraAppBarContentStyle = {},\n}: AppBarWrapperProps) {\n React.useEffect(() => {\n const mainElement = document.getElementById(\"main-mount-point\");\n const iframeMainElement = document.getElementById(\n \"legacy-iframe-mount-point\"\n );\n mainElement && (mainElement.style.marginTop = \"\");\n iframeMainElement && (iframeMainElement.style.marginTop = \"\");\n }, []);\n\n return (\n <div className=\"app-bar-container\">\n <div\n className={classNames(\n \"app-bar\",\n position === \"static\"\n ? \"static\"\n : position === \"fixed\" || isFixed\n ? \"fixed\"\n : \"absolute\"\n )}\n >\n {/* TODO: need AppBarTips */}\n <div\n className=\"app-bar-content\"\n style={{\n justifyContent: displayCenter ? \"space-around\" : \"space-between\",\n ...extraAppBarContentStyle,\n }}\n >\n <div className=\"left\">\n <slot name=\"left\" />\n </div>\n <div className=\"right\">\n <slot name=\"right\" />\n </div>\n </div>\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport { getRuntime } from \"@next-core/runtime\";\nimport { useCurrentApp } from \"@next-core/react-runtime\";\nimport { BreadcrumbItemConf } from \"@next-core/types\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport type { EoBreadcrumb } from \"@next-bricks/basic/breadcrumb\";\nimport type {\n EoBreadcrumbItem,\n BreadcrumbItemProps,\n} from \"@next-bricks/basic/breadcrumb-item\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { ExtendedLocationDescriptor } from \"@next-bricks/basic/link\";\n\nconst { defineElement, property } = createDecorators();\n\nconst WrappedBreadcrumb = wrapBrick<EoBreadcrumb, unknown>(\"eo-breadcrumb\");\nconst WrappedBreadcrumbItem = wrapBrick<EoBreadcrumbItem, BreadcrumbItemProps>(\n \"eo-breadcrumb-item\"\n);\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport interface Menu {\n title: string;\n icon?: GeneralIconProps;\n link?: ExtendedLocationDescriptor;\n}\n\nexport interface EoFrameBreadcrumbProps {\n breadcrumb?: BreadcrumbItemConf[];\n noCurrentApp?: boolean;\n menu?: Menu;\n}\n\n/**\n * 面包屑\n */\nexport\n@defineElement(\"eo-frame-breadcrumb\", {\n styleTexts: [styleText],\n})\nclass EoFrameBreadcrumb\n extends ReactNextElement\n implements EoFrameBreadcrumbProps\n{\n /**\n * 面包屑配置\n */\n @property({\n attribute: false,\n })\n accessor breadcrumb: BreadcrumbItemConf[] | undefined;\n\n /**\n * 是否隐藏当前应用名称\n */\n @property({ type: Boolean })\n accessor noCurrentApp: boolean | undefined;\n\n /**\n * 菜单配置\n */\n @property({\n attribute: false,\n })\n accessor menu: Menu | undefined;\n\n render() {\n return (\n <EoFrameBreadcrumbComponent\n breadcrumb={this.breadcrumb}\n noCurrentApp={this.noCurrentApp}\n menu={this.menu}\n />\n );\n }\n}\n\nexport function EoFrameBreadcrumbComponent(props: EoFrameBreadcrumbProps) {\n const { menu } = props;\n\n const navConfig = getRuntime().getNavConfig();\n const currentApp = useCurrentApp();\n const curAppBreadcrumb = currentApp?.breadcrumb;\n\n const currentAppBreadcrumbItems = curAppBreadcrumb?.items as Array<\n BreadcrumbItemConf & { icon: GeneralIconProps }\n >;\n const breadcrumbItems = props.breadcrumb?.length\n ? props.breadcrumb\n : navConfig?.breadcrumb;\n\n const noCurrentApp = props.noCurrentApp ?? curAppBreadcrumb?.noCurrentApp;\n const useCurrentMenuTitle = curAppBreadcrumb?.useCurrentMenuTitle;\n\n return (\n <WrappedBreadcrumb>\n <span slot=\"separator\">/</span>\n {currentAppBreadcrumbItems?.map((item, index) => {\n return (\n <WrappedBreadcrumbItem key={index} url={item.to}>\n {item.icon ? (\n <WrappedIcon\n className=\"breadcrumb-item-prefix-icon\"\n slot=\"prefix\"\n {...item.icon}\n />\n ) : (\n index === 0 && (\n <WrappedIcon\n className=\"breadcrumb-item-prefix-icon\"\n slot=\"prefix\"\n lib=\"antd\"\n icon=\"home\"\n theme=\"outlined\"\n />\n )\n )}\n {item.text}\n </WrappedBreadcrumbItem>\n );\n })}\n {currentApp && !noCurrentApp ? (\n <WrappedBreadcrumbItem\n url={\n breadcrumbItems?.length &&\n currentApp.homepage &&\n !currentApp.internal\n ? currentApp.homepage\n : undefined\n }\n >\n {!currentAppBreadcrumbItems?.length && (\n <WrappedIcon\n {...currentApp.menuIcon}\n slot=\"prefix\"\n className=\"breadcrumb-item-prefix-icon\"\n />\n )}\n {currentApp.localeName}\n </WrappedBreadcrumbItem>\n ) : null}\n {useCurrentMenuTitle && menu ? (\n <WrappedBreadcrumbItem url={menu.link}>\n {menu.icon && (\n <WrappedIcon\n {...menu.icon}\n className=\"breadcrumb-item-prefix-icon\"\n slot=\"prefix\"\n />\n )}\n {menu.title}\n </WrappedBreadcrumbItem>\n ) : null}\n {breadcrumbItems?.map((item, index) => (\n <WrappedBreadcrumbItem key={index} url={item.to}>\n {item.text}\n </WrappedBreadcrumbItem>\n ))}\n </WrappedBreadcrumb>\n );\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\n\nconst { defineElement, property } = createDecorators();\n\nconst WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport interface EoSidebarMenuItemProps {\n url?: LinkProps[\"url\"];\n href?: LinkProps[\"href\"];\n icon?: GeneralIconProps;\n target?: LinkProps[\"target\"];\n selected?: boolean;\n inSubmenu?: boolean;\n menuCollapsed?: boolean;\n}\n\n/**\n * 侧栏菜单项\n * @category navigation\n */\nexport\n@defineElement(\"eo-sidebar-menu-item\", {\n styleTexts: [styleText],\n})\nclass EoSidebarMenuItem\n extends ReactNextElement\n implements EoSidebarMenuItemProps\n{\n /**\n * 菜单项对应的系统内地址\n */\n @property({ attribute: false })\n accessor url: LinkProps[\"url\"] | undefined;\n\n /**\n * 菜单项对应的外部链接地址\n */\n @property()\n accessor href: LinkProps[\"href\"] | undefined;\n\n /**\n * 菜单项链接打开的目标\n */\n @property()\n accessor target: LinkProps[\"target\"] | undefined;\n\n /**\n * 菜单项的图标\n */\n @property({ attribute: false })\n accessor icon: GeneralIconProps | undefined;\n\n /**\n * 是否选中\n */\n @property({ type: Boolean })\n accessor selected: boolean | undefined;\n\n /**\n * 是否在二级菜单中\n */\n @property({ type: Boolean })\n accessor inSubmenu: boolean | undefined;\n\n /**\n * 菜单整体是否收起状态\n */\n @property({ type: Boolean })\n accessor menuCollapsed: boolean | undefined;\n\n render() {\n return (\n <EoSidebarMenuItemComponent\n url={this.url}\n href={this.href}\n target={this.target}\n icon={this.icon}\n selected={this.selected}\n />\n );\n }\n}\n\nexport function EoSidebarMenuItemComponent(props: EoSidebarMenuItemProps) {\n const { url, href, target, icon, selected } = props;\n\n return (\n <WrappedLink type=\"plain\" url={url} href={href} target={target}>\n <div className={\"menu-item\"}>\n <span className=\"menu-item-icon-container\">\n <WrappedIcon\n {...icon}\n className=\"menu-item-icon\"\n {...(icon && \"imgSrc\" in icon\n ? { imgStyle: { filter: selected ? \"brightness(7)\" : undefined } }\n : {})}\n />\n </span>\n <span className=\"menu-item-text\">\n <slot />\n </span>\n </div>\n </WrappedLink>\n );\n}\n","import React, {\n createContext,\n useCallback,\n useContext,\n useEffect,\n useRef,\n} from \"react\";\nimport { getCssPropertyValue } from \"@next-core/runtime\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport type {\n SidebarMenu as SidebarMenuType,\n SidebarMenuGroup,\n SidebarMenuItem,\n SidebarMenuSimpleItem,\n} from \"@next-shared/general/types\";\nimport type {\n EoSidebarMenu,\n EoSidebarMenuProps,\n} from \"./sidebar-menu/index.js\";\nimport type {\n EoSidebarMenuItem,\n EoSidebarMenuItemProps,\n} from \"./sidebar-menu-item/index.js\";\nimport type {\n EoSidebarMenuGroup,\n EoSidebarMenuGroupProps,\n} from \"./sidebar-menu-group/index.js\";\nimport type {\n EoSidebarMenuSubmenu,\n EoSidebarMenuSubmenuProps,\n} from \"./sidebar-menu-submenu/index.js\";\n\nconst sidebarMenuItemTagNameSet = new Set([\n \"EO-SIDEBAR-MENU-ITEM\",\n \"EO-SIDEBAR-MENU-GROUP\",\n \"EO-SIDEBAR-MENU-SUBMENU\",\n]);\n\nconst isSidebarMenuItem = (element: Element) =>\n sidebarMenuItemTagNameSet.has(element.tagName);\n\nexport function useUpdateMenuCollapsedState(menuCollapsed?: boolean) {\n const slotRef = useRef<HTMLSlotElement>(null);\n\n const updateChildrenMenuCollapsedState = useCallback(() => {\n slotRef.current?.assignedElements().forEach((ele) => {\n if (isSidebarMenuItem(ele)) {\n (ele as any).menuCollapsed = menuCollapsed;\n }\n });\n }, [menuCollapsed]);\n\n useEffect(() => {\n updateChildrenMenuCollapsedState();\n }, [menuCollapsed, updateChildrenMenuCollapsedState]);\n\n useEffect(() => {\n const slotElem = slotRef.current;\n const handleSlotchange = () => {\n updateChildrenMenuCollapsedState();\n };\n slotElem?.addEventListener(\"slotchange\", handleSlotchange);\n\n return () => {\n slotElem?.removeEventListener(\"slotchange\", handleSlotchange);\n };\n }, [updateChildrenMenuCollapsedState]);\n\n return [slotRef];\n}\n\nexport const SIDE_BAR_HAS_BEEN_USED = \"side-bar-has-been-used\";\nexport const SIDE_BAR_EXPAND_STATE = \"side-bar-expand-state\";\nexport const SIDE_BAR_RESIZE_WIDTH = \"side-bar-resize-width\";\n\nexport enum ExpandedState {\n Collapsed = \"collapsed\",\n Hovered = \"hovered\",\n Expanded = \"expanded\",\n}\n\nexport const sideBarWidth =\n parseInt(getCssPropertyValue(\"--side-bar-width\", document.body), 10) || 220;\nexport const sideBarCollapsedWidth =\n parseInt(\n getCssPropertyValue(\"--side-bar-collapsed-width\", document.body),\n 10\n ) || 60;\n\ninterface ContextOfSidebarMenu {\n selectedKeys: string[];\n openedKeys: string[];\n matchedKeys: string[];\n}\n\nconst SidebarMenuContext = createContext<ContextOfSidebarMenu>({\n selectedKeys: [],\n openedKeys: [],\n matchedKeys: [],\n});\n\nconst WrappedSidebarMenu = wrapBrick<EoSidebarMenu, EoSidebarMenuProps>(\n \"eo-sidebar-menu\"\n);\nconst WrappedSidebarMenuItem = wrapBrick<\n EoSidebarMenuItem,\n EoSidebarMenuItemProps\n>(\"eo-sidebar-menu-item\");\nconst WrappedSidebarMenuGroup = wrapBrick<\n EoSidebarMenuGroup,\n EoSidebarMenuGroupProps\n>(\"eo-sidebar-menu-group\");\nconst WrappedSidebarMenuSubmenu = wrapBrick<\n EoSidebarMenuSubmenu,\n EoSidebarMenuSubmenuProps\n>(\"eo-sidebar-menu-submenu\");\n\nfunction MenuSimpleItem(\n props: SidebarMenuSimpleItem & { id?: string; inSubmenu?: boolean }\n) {\n const { to, href, target, icon, text, id, inSubmenu } = props;\n const { selectedKeys } = useContext(SidebarMenuContext);\n\n return (\n <WrappedSidebarMenuItem\n url={to as any}\n href={href}\n target={target as any}\n icon={icon}\n inSubmenu={inSubmenu}\n selected={selectedKeys.includes(id!)}\n >\n {text}\n </WrappedSidebarMenuItem>\n );\n}\n\nfunction MenuGroup(\n props: SidebarMenuGroup & { id?: string; top?: boolean; inSubmenu?: boolean }\n) {\n const { title, items, id, top, inSubmenu } = props;\n const { matchedKeys } = useContext(SidebarMenuContext);\n const isSelected = id && matchedKeys.includes(id);\n\n if (items?.length > 0) {\n return (\n <WrappedSidebarMenuGroup selected={!!isSelected} collapsable={!top}>\n <span slot=\"title\">{title}</span>\n {props.items.map((item) => {\n return (\n <MenuItem\n key={item.key}\n {...item}\n id={item.key}\n top={false}\n inSubmenu={inSubmenu}\n />\n );\n })}\n </WrappedSidebarMenuGroup>\n );\n }\n return null;\n}\n\nfunction MenuSubmenu(props: SidebarMenuGroup & { id?: string }) {\n const { title, icon, items, id } = props;\n const { openedKeys, matchedKeys } = useContext(SidebarMenuContext);\n const isSelected = id && matchedKeys.includes(id);\n\n if (items?.length > 0) {\n return (\n <WrappedSidebarMenuSubmenu\n icon={icon}\n collapsed={!openedKeys.includes(id!)}\n selected={!!isSelected}\n >\n <span slot=\"title\">{title}</span>\n {props.items.map((item) => {\n return (\n <MenuItem\n key={item.key}\n {...item}\n id={item.key}\n top={false}\n inSubmenu={true}\n />\n );\n })}\n </WrappedSidebarMenuSubmenu>\n );\n }\n return null;\n}\n\nfunction MenuItem(\n props: SidebarMenuItem & { id?: string; top?: boolean; inSubmenu?: boolean }\n) {\n if (props.type === \"subMenu\") {\n return <MenuSubmenu {...props} />;\n } else if (props.type === \"group\") {\n return <MenuGroup {...props} />;\n } else {\n return <MenuSimpleItem {...(props as SidebarMenuSimpleItem)} />;\n }\n}\n\nexport function SidebarMenu(props: {\n menu?: SidebarMenuType;\n expandedState: ExpandedState;\n selectedKeys?: string[];\n openedKeys?: string[];\n matchedKeys?: string[];\n}) {\n const { menu, expandedState, selectedKeys, openedKeys, matchedKeys } = props;\n\n return (\n <SidebarMenuContext.Provider\n value={{\n selectedKeys: selectedKeys || [],\n openedKeys: openedKeys || [],\n matchedKeys: matchedKeys || [],\n }}\n >\n <WrappedSidebarMenu\n menuCollapsed={expandedState === ExpandedState.Collapsed}\n >\n {menu?.menuItems?.map((item) => {\n return <MenuItem key={item.key} {...item} id={item.key} top={true} />;\n })}\n </WrappedSidebarMenu>\n </SidebarMenuContext.Provider>\n );\n}\n","import React, { useCallback, useEffect, useRef } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport { useUpdateMenuCollapsedState } from \"../utils.js\";\nimport classNames from \"classnames\";\n\nconst { defineElement, property } = createDecorators();\n\nexport interface EoSidebarMenuGroupProps {\n selected?: boolean;\n collapsable?: boolean;\n collapsed?: boolean;\n menuCollapsed?: boolean;\n}\n\n/**\n * 侧栏菜单分组\n * @slot title - 分组标题\n * @category navigation\n */\nexport\n@defineElement(\"eo-sidebar-menu-group\", {\n styleTexts: [styleText],\n})\nclass EoSidebarMenuGroup\n extends ReactNextElement\n implements EoSidebarMenuGroupProps\n{\n /**\n * 是否允许折叠\n */\n @property({ type: Boolean })\n accessor collapsable: boolean | undefined;\n\n /**\n * 是否折叠\n */\n @property({ type: Boolean })\n accessor collapsed: boolean | undefined;\n\n /**\n * 是否选中\n * */\n @property({ type: Boolean })\n accessor selected: boolean | undefined;\n\n /**\n * 菜单整体是否收起状态\n */\n @property({ type: Boolean })\n accessor menuCollapsed: boolean | undefined;\n\n #handleCollapseChang = (collapsed: boolean) => {\n this.collapsed = collapsed;\n };\n\n render() {\n return (\n <EoSidebarMenuGroupComponent\n collapsable={this.collapsable}\n selected={this.selected}\n collapsed={this.collapsed}\n menuCollapsed={this.menuCollapsed}\n onCollapseChange={this.#handleCollapseChang}\n />\n );\n }\n}\n\ninterface EoSidebarMenuGroupComponentProps extends EoSidebarMenuGroupProps {\n onCollapseChange?: (collapsed: boolean) => void;\n}\n\nexport function EoSidebarMenuGroupComponent(\n props: EoSidebarMenuGroupComponentProps\n) {\n const {\n collapsable = false,\n collapsed,\n menuCollapsed,\n onCollapseChange,\n } = props;\n\n const [slotRef] = useUpdateMenuCollapsedState(menuCollapsed);\n\n const titleRef = useRef<HTMLDivElement>(null);\n\n const handleClick = useCallback(() => {\n !menuCollapsed && onCollapseChange?.(!collapsed);\n }, [menuCollapsed, onCollapseChange, collapsed]);\n\n useEffect(() => {\n const titleElem = titleRef.current;\n titleElem?.addEventListener(\"click\", handleClick);\n\n return () => {\n titleElem?.removeEventListener(\"click\", handleClick);\n };\n }, [handleClick]);\n\n return (\n <div\n className={classNames(\"menu-group\", {\n \"menu-group-collapsed\": menuCollapsed ? true : collapsed,\n })}\n >\n <div className=\"menu-group-title\" ref={titleRef}>\n <span className=\"menu-group-title-icon-container\">\n <span className=\"menu-group-title-icon\"></span>\n </span>\n <div className=\"menu-group-title-text\">\n <slot name=\"title\" />\n </div>\n {collapsable && <span className=\"menu-group-arrow\" />}\n </div>\n <div className=\"menu-group-list\">\n <div className=\"menu-group-list-inner\">\n <slot ref={slotRef} />\n </div>\n </div>\n </div>\n );\n}\n","import React, { useCallback, useEffect, useRef } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport classNames from \"classnames\";\nimport { useUpdateMenuCollapsedState } from \"../utils.js\";\n\nconst { defineElement, property } = createDecorators();\n\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport interface EoSidebarMenuSubmenuProps {\n icon?: GeneralIconProps;\n selected?: boolean;\n collapsed?: boolean;\n menuCollapsed?: boolean;\n}\n\n/**\n * 侧栏菜单子菜单\n * @slot title - 子菜单标题\n * @category navigation\n */\nexport\n@defineElement(\"eo-sidebar-menu-submenu\", {\n styleTexts: [styleText],\n})\nclass EoSidebarMenuSubmenu\n extends ReactNextElement\n implements EoSidebarMenuSubmenuProps\n{\n /**\n * 菜单的图标\n */\n @property({ attribute: false })\n accessor icon: GeneralIconProps | undefined;\n\n /**\n * 是否选中\n * */\n @property({ type: Boolean })\n accessor selected: boolean | undefined;\n\n /**\n * 是否折叠\n */\n @property({ type: Boolean })\n accessor collapsed: boolean | undefined;\n\n /**\n * 菜单整体是否收起状态\n */\n @property({ type: Boolean })\n accessor menuCollapsed: boolean | undefined;\n\n #handleCollapseChang = (collapsed: boolean) => {\n this.collapsed = collapsed;\n };\n\n render() {\n return (\n <EoSidebarMenuSubmenuComponent\n icon={this.icon}\n selected={this.selected}\n collapsed={this.collapsed}\n menuCollapsed={this.menuCollapsed}\n onCollapseChange={this.#handleCollapseChang}\n />\n );\n }\n}\n\ninterface EoSidebarMenuSubmenuComponentProps extends EoSidebarMenuSubmenuProps {\n onCollapseChange?: (collapsed: boolean) => void;\n}\n\nexport function EoSidebarMenuSubmenuComponent(\n props: EoSidebarMenuSubmenuComponentProps\n) {\n const { icon, collapsed, menuCollapsed, onCollapseChange } = props;\n\n const [slotRef] = useUpdateMenuCollapsedState(menuCollapsed);\n\n const titleRef = useRef<HTMLDivElement>(null);\n\n const handleClick = useCallback(() => {\n !menuCollapsed && onCollapseChange?.(!collapsed);\n }, [menuCollapsed, onCollapseChange, collapsed]);\n\n useEffect(() => {\n const titleElem = titleRef.current;\n titleElem?.addEventListener(\"click\", handleClick);\n\n return () => {\n titleElem?.removeEventListener(\"click\", handleClick);\n };\n }, [handleClick]);\n\n return (\n <div\n className={classNames(\"menu-submenu\", {\n \"menu-submenu-collapsed\": menuCollapsed ? true : collapsed,\n })}\n >\n <div className=\"menu-submenu-title\" ref={titleRef}>\n <span className=\"menu-submenu-title-icon-container\">\n <WrappedIcon {...icon!} className=\"menu-submenu-title-icon\" />\n </span>\n <span className=\"menu-submenu-title-text\">\n <slot name=\"title\" />\n </span>\n <span className=\"menu-submenu-arrow\" />\n </div>\n <div className=\"menu-sub\">\n <div className=\"menu-sub-inner\">\n <slot ref={slotRef} />\n </div>\n </div>\n </div>\n );\n}\n","import React from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport { useUpdateMenuCollapsedState } from \"../utils.js\";\n\nconst { defineElement, property } = createDecorators();\n\nexport interface EoSidebarMenuProps {\n menuCollapsed?: boolean;\n}\n\n/**\n * 侧栏菜单\n *\n * @category navigation\n */\nexport\n@defineElement(\"eo-sidebar-menu\", {\n styleTexts: [styleText],\n})\nclass EoSidebarMenu extends ReactNextElement implements EoSidebarMenuProps {\n /**\n * 菜单整体是否收起状态\n */\n @property({ type: Boolean })\n accessor menuCollapsed: boolean | undefined;\n\n render() {\n return <EoSidebarMenuComponent menuCollapsed={this.menuCollapsed} />;\n }\n}\n\nexport function EoSidebarMenuComponent(props: EoSidebarMenuProps) {\n const { menuCollapsed } = props;\n\n const [slotRef] = useUpdateMenuCollapsedState(menuCollapsed);\n\n return (\n <div className=\"sidebar-menu\">\n <div className=\"sidebar-menu-item-list\">\n <slot ref={slotRef} />\n </div>\n </div>\n );\n}\n","import * as React from \"react\";\nconst SvgFixed = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} viewBox=\"0 0 20 20\" {...props}><g fill=\"none\" fillRule=\"evenodd\"><path d=\"M0 0h20v20H0z\" /><path fill=\"#595959\" fillRule=\"nonzero\" d=\"m14.599 11.59-1.685-1.606-.348-4.876.93-1.044s.617-.93-.62-1.045L7.323 3s-.85.657-.097 1.296l.754.755-.385 4.76-1.49 1.683s-.388.774.328 1.065l2.961-.02.668 3.887H6.388V17h7.832v-.574h-3.743l.6-3.946 3.154.097s.812-.464.368-.986\" /></g></svg>;\nexport default SvgFixed;","import * as React from \"react\";\nconst SvgToFixed = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} viewBox=\"0 0 20 20\" {...props}><g fill=\"none\" fillRule=\"evenodd\"><path d=\"M0 0h20v20H0z\" /><path fill=\"#595959\" fillRule=\"nonzero\" d=\"m13.06 3.765 3.22 3.08c.42.28.42.84.14 1.26-.42.42-.98.42-1.26.14l-.14-.14-.28-.28-3.22 4.62.98.98c.28.42.28.98-.14 1.26-.28.28-.7.28-1.12 0l-5.88-6.02q-.42-.63 0-1.26c.28-.28.84-.28 1.12 0l.98.98 4.62-3.22-.14-.14c-.42-.42-.42-.84-.14-1.26.28-.28.84-.42 1.26 0m-4.76 9.1-1.12-1.12c-.98 1.12-2.52 2.8-2.8 3.22-.42.42-.7.98-.98 1.54q1.05-.21 1.68-.84c.42-.28 2.1-1.82 3.22-2.8\" /></g></svg>;\nexport default SvgToFixed;","export enum K {\n CLICK_TO_FIX_NAVIGATION = \"CLICK_TO_FIX_NAVIGATION\",\n UNPIN_NAVIGATION = \"UNPIN_NAVIGATION\",\n FIXED_NAVIGATION = \"FIXED_NAVIGATION\",\n}\n\nconst en: Locale = {\n UNPIN_NAVIGATION: \"Unpin navigation\",\n FIXED_NAVIGATION: \"Fixed navigation\",\n CLICK_TO_FIX_NAVIGATION: \"Click to {{action}}\",\n};\n\nconst zh: Locale = {\n UNPIN_NAVIGATION: \"取消固定\",\n FIXED_NAVIGATION: \"固定导航\",\n CLICK_TO_FIX_NAVIGATION: \"点击{{action}}\",\n};\n\nexport const NS = \"bricks/nav/eo-sidebar\";\n\nexport const locales = { en, zh };\n\ntype Locale = { [key in K]: string };\n","import React, {\n MouseEventHandler,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport type { EoTooltip, ToolTipProps } from \"@next-bricks/basic/tooltip\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { SidebarMenu as SidebarMenuType } from \"@next-shared/general/types\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport FixedSvg from \"../images/fixed.svg\";\nimport ToFixedSvg from \"../images/toFixed.svg\";\nimport { debounceByAnimationFrame } from \"@next-shared/general/debounceByAnimationFrame\";\nimport { JsonStorage } from \"@next-shared/general/JsonStorage\";\nimport {\n ExpandedState,\n SIDE_BAR_EXPAND_STATE,\n SIDE_BAR_HAS_BEEN_USED,\n SIDE_BAR_RESIZE_WIDTH,\n SidebarMenu,\n sideBarCollapsedWidth,\n sideBarWidth,\n} from \"./utils.js\";\nimport { useTranslation, initializeReactI18n } from \"@next-core/i18n/react\";\nimport { K, NS, locales } from \"./i18n.js\";\nimport classNames from \"classnames\";\nimport { initMenuItemAndMatchCurrentPathKeys } from \"@next-shared/general/menu\";\nimport { UnregisterCallback } from \"history\";\nimport { getHistory, getRuntime } from \"@next-core/runtime\";\nimport { useCurrentApp } from \"@next-core/react-runtime\";\n\ninitializeReactI18n(NS, locales);\n\nconst { defineElement, property, event } = createDecorators();\n\nconst WrappedTooltip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nexport interface EoSidebarProps {\n menu: SidebarMenuType;\n expandedState?: ExpandedState;\n hiddenFixedIcon?: boolean;\n position?: \"static\" | \"fixed\";\n}\n\nexport interface EoSidebarEvents {\n \"actual.width.change\": CustomEvent<number>;\n \"expanded.state.change\": CustomEvent<ExpandedState>;\n}\n\nexport interface EoSidebarEventsMapping {\n onActualWidthChange: \"actual.width.change\";\n onExpandedStateChange: \"expanded.state.change\";\n}\n\n/**\n * 侧边栏\n *\n * @category navigation\n */\nexport\n@defineElement(\"eo-sidebar\", {\n styleTexts: [styleText],\n})\nclass EoSidebar extends ReactNextElement implements EoSidebarProps {\n /**\n * 菜单数据\n */\n @property({ attribute: false })\n accessor menu!: SidebarMenuType;\n\n /**\n * 是否隐藏固定按钮\n */\n @property({ type: Boolean })\n accessor hiddenFixedIcon: boolean | undefined;\n\n /**\n * 侧栏状态\n */\n @property()\n accessor expandedState: ExpandedState | undefined;\n\n /**\n * 设置定位方式:静态定位或固定定位。\n *\n * @default \"fixed\"\n */\n @property()\n accessor position: \"static\" | \"fixed\" | undefined;\n\n /**\n * 宽度变化时触发\n * @detail 当前宽度\n */\n @event({ type: \"actual.width.change\" })\n accessor #actualWidthChangeEvent!: EventEmitter<number>;\n #handleActualWidthChange = (actualWidth: number): void => {\n this.#actualWidthChangeEvent.emit(actualWidth);\n };\n\n /**\n * 侧栏状态变化时触发\n * @detail 侧栏状态\n */\n @event({ type: \"expanded.state.change\" })\n accessor #expandedStateChangeEvent!: EventEmitter<ExpandedState>;\n #handleExpandedStateChange = (state: ExpandedState): void => {\n this.expandedState = state;\n this.#expandedStateChangeEvent.emit(state);\n };\n\n render() {\n return (\n <EoSidebarComponent\n menu={this.menu}\n expandedState={this.expandedState}\n hiddenFixedIcon={this.hiddenFixedIcon}\n position={this.position}\n onActualWidthChange={this.#handleActualWidthChange}\n onExpandedStateChange={this.#handleExpandedStateChange}\n />\n );\n }\n}\n\ninterface EoSidebarComponentProps extends EoSidebarProps {\n onActualWidthChange?: (actualWidth: number) => void;\n onExpandedStateChange?: (state: ExpandedState) => void;\n}\n\nexport function EoSidebarComponent(props: EoSidebarComponentProps) {\n const { t } = useTranslation(NS);\n const {\n menu,\n hiddenFixedIcon,\n position,\n onActualWidthChange,\n onExpandedStateChange,\n } = props;\n\n const showUserDefinedIcon = React.useMemo(\n () => getRuntime()?.getFeatureFlags()[\"sidebar-show-user-defined-icon\"],\n []\n );\n\n const storage = useMemo(() => new JsonStorage(localStorage), []);\n const history = getHistory();\n const currentApp = useCurrentApp();\n const [location, setLocation] = useState(history.location);\n const { pathname, search } = location;\n\n const [isFirstUsedTooltip, setIsFirstUsedTooltip] = useState<boolean>(\n !storage.getItem(SIDE_BAR_HAS_BEEN_USED)\n );\n const [showContentShadow, setShowContentShadow] = useState<boolean>();\n const [dragging, setDragging] = useState<boolean>();\n const [expandedState, setExpandedState] = useState<ExpandedState>(\n props.expandedState ||\n storage.getItem(SIDE_BAR_EXPAND_STATE) ||\n ExpandedState.Collapsed\n );\n\n const titleIcon = showUserDefinedIcon ? menu?.icon : currentApp?.menuIcon;\n\n const { selectedKeys, openedKeys, matchedKeys } = useMemo(() => {\n return initMenuItemAndMatchCurrentPathKeys(\n menu?.menuItems ?? [],\n pathname,\n search,\n \"\"\n );\n }, [menu?.menuItems, pathname, search]);\n\n useEffect(() => {\n const unListen: UnregisterCallback = history.listen((location) => {\n setLocation(location);\n });\n return unListen;\n }, [history]);\n\n const contentBottomPlaceholderRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (contentBottomPlaceholderRef.current) {\n const observer = new IntersectionObserver(\n (entries) => {\n entries.forEach((entry) => {\n if (entry.target === contentBottomPlaceholderRef.current) {\n setShowContentShadow(!entry.isIntersecting);\n }\n });\n },\n { threshold: 1 }\n );\n\n observer.observe(contentBottomPlaceholderRef.current);\n\n return () => {\n observer.disconnect();\n };\n }\n }, []);\n\n useEffect(() => {\n setExpandedState(\n props.expandedState ||\n storage.getItem(SIDE_BAR_EXPAND_STATE) ||\n ExpandedState.Collapsed\n );\n }, [props.expandedState]);\n\n useEffect(() => {\n storage.setItem(\n SIDE_BAR_EXPAND_STATE,\n expandedState === ExpandedState.Expanded\n ? ExpandedState.Expanded\n : ExpandedState.Collapsed\n );\n }, [expandedState]);\n\n const handleFixedIconClick = (): void => {\n setIsFirstUsedTooltip(false);\n storage.setItem(SIDE_BAR_HAS_BEEN_USED, true);\n\n setExpandedState((state) => {\n const newState =\n state === ExpandedState.Expanded\n ? ExpandedState.Collapsed\n : ExpandedState.Expanded;\n\n newState !== state && onExpandedStateChange?.(newState);\n return newState;\n });\n };\n\n const [expandedWidth, setExpandedWidth] = useState<number>(() => {\n // Use parseInt to compatible non-number types\n let memorizedWidth = parseInt(storage.getItem(SIDE_BAR_RESIZE_WIDTH), 10);\n if (memorizedWidth < sideBarWidth || Number.isNaN(memorizedWidth)) {\n memorizedWidth = sideBarWidth;\n }\n return memorizedWidth;\n });\n\n useEffect(() => {\n storage.setItem(SIDE_BAR_RESIZE_WIDTH, expandedWidth);\n }, [expandedWidth]);\n\n const containerRef = useRef<HTMLDivElement>(null);\n\n const handleResizeDown: MouseEventHandler = (e) => {\n setDragging(true);\n\n // Prevent text selection when dragging\n if (e.cancelable) {\n e.preventDefault();\n }\n\n const offsetX = containerRef.current?.getBoundingClientRect().left ?? 0;\n\n const drag = debounceByAnimationFrame((e: MouseEvent) => {\n const x = e.clientX - offsetX;\n const width = x >= sideBarWidth ? x : sideBarWidth;\n\n setExpandedWidth(width);\n });\n const dragEnd = (e: MouseEvent) => {\n setDragging(false);\n e.preventDefault();\n\n window.removeEventListener(\"mousemove\", drag);\n window.removeEventListener(\"mouseup\", dragEnd);\n };\n\n window.addEventListener(\"mousemove\", drag, { passive: true });\n window.addEventListener(\"mouseup\", dragEnd);\n };\n\n const handleMouseEnter = (): void => {\n setExpandedState((state) => {\n const newState =\n state === ExpandedState.Expanded\n ? ExpandedState.Expanded\n : ExpandedState.Hovered;\n\n newState !== state && onExpandedStateChange?.(newState);\n return newState;\n });\n };\n\n const handleMouseLeave = (): void => {\n setExpandedState((state) => {\n const newState =\n state === ExpandedState.Expanded\n ? ExpandedState.Expanded\n : ExpandedState.Collapsed;\n\n newState !== state && onExpandedStateChange?.(newState);\n return newState;\n });\n };\n\n const sidebarActualWidth = useMemo(() => {\n return expandedState === ExpandedState.Expanded\n ? expandedWidth\n : sideBarCollapsedWidth;\n }, [expandedState, expandedWidth]);\n\n useEffect(() => {\n onActualWidthChange?.(sidebarActualWidth);\n }, [onActualWidthChange, sidebarActualWidth]);\n\n const getContainerWidth = (inner?: boolean) => {\n // With static position, when not expanded, the outer container will keep\n // collapsed even if hovered, while only the inner container will expand.\n if (position === \"static\") {\n return expandedState === ExpandedState.Expanded ||\n (inner && expandedState === ExpandedState.Hovered)\n ? expandedWidth\n : sideBarCollapsedWidth;\n }\n return expandedState === ExpandedState.Collapsed\n ? sideBarCollapsedWidth\n : expandedWidth;\n };\n\n useEffect(() => {\n const container = containerRef.current;\n container?.addEventListener(\"mouseenter\", handleMouseEnter);\n container?.addEventListener(\"mouseleave\", handleMouseLeave);\n\n return () => {\n container?.removeEventListener(\"mouseenter\", handleMouseEnter);\n container?.removeEventListener(\"mouseleave\", handleMouseLeave);\n };\n }, []);\n\n return (\n <div\n className={classNames(\"sidebar-container\", `state-${expandedState}`, {\n dragging,\n })}\n style={{ width: getContainerWidth() }}\n ref={containerRef}\n data-testid=\"side-bar\"\n >\n <div className=\"inner\" style={{ width: getContainerWidth(true) }}>\n <div className=\"header\">\n <div className=\"menu-title\">\n <div className={classNames(\"menu-title-icon-container\")}>\n {titleIcon ? (\n <WrappedIcon\n {...(titleIcon as GeneralIconProps)}\n className=\"menu-title-icon\"\n />\n ) : (\n <span className=\"menu-title-point\" />\n )}\n </div>\n <div className=\"menu-title-text\" title={menu?.title}>\n {menu?.title}\n </div>\n </div>\n </div>\n\n <div\n className={classNames(\"content\", {\n \"show-shadow\": showContentShadow,\n })}\n >\n <SidebarMenu\n selectedKeys={selectedKeys}\n openedKeys={openedKeys}\n matchedKeys={matchedKeys}\n menu={menu}\n expandedState={expandedState}\n />\n <div ref={contentBottomPlaceholderRef} />\n </div>\n\n <div className=\"footer\">\n {!hiddenFixedIcon && (\n <WrappedTooltip\n content={\n (expandedState === ExpandedState.Expanded\n ? isFirstUsedTooltip\n ? t(K.CLICK_TO_FIX_NAVIGATION, {\n action: t(K.UNPIN_NAVIGATION),\n })\n : t(K.UNPIN_NAVIGATION)\n : isFirstUsedTooltip\n ? t(K.CLICK_TO_FIX_NAVIGATION, {\n action: t(K.FIXED_NAVIGATION),\n })\n : t(K.FIXED_NAVIGATION)) as string\n }\n >\n <i className=\"fixed-icon\" onClick={handleFixedIconClick}>\n <FixedSvg\n style={{\n display:\n expandedState === ExpandedState.Expanded\n ? undefined\n : \"none\",\n }}\n />\n <ToFixedSvg\n style={{\n display:\n expandedState === ExpandedState.Expanded\n ? \"none\"\n : undefined,\n }}\n />\n </i>\n </WrappedTooltip>\n )}\n </div>\n {expandedState === ExpandedState.Expanded && (\n <span className=\"resize-line\" onMouseDown={handleResizeDown} />\n )}\n </div>\n </div>\n );\n}\n","export type SimpleFunction<P extends unknown[] = unknown[], R = unknown> = (\n ...args: P\n) => R;\n\n// The debounce function receives our function as a parameter\nexport function debounceByAnimationFrame<P extends unknown[]>(\n fn: SimpleFunction<P, void>\n): SimpleFunction<P, void> & { cancel: () => void } {\n // This holds the requestAnimationFrame reference, so we can cancel it if we wish\n let frame: number;\n\n const cancel = () => cancelAnimationFrame(frame);\n\n // The debounce function returns a new function that can receive a variable number of arguments\n const func = (...params: P) => {\n // If the frame variable has been defined, clear it now, and queue for next frame\n if (frame) {\n cancel();\n }\n\n // Queue our function call for the next frame\n frame = requestAnimationFrame(() => {\n // Call our function and pass any params we received\n fn(...params);\n });\n };\n\n func.cancel = cancel;\n\n return func;\n}\n","import React, { useState, useEffect, useCallback } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport { getHistory } from \"@next-core/runtime\";\nimport { UnregisterCallback } from \"history\";\nimport \"@next-core/theme\";\nimport {\n SidebarMenuSimpleItem,\n SidebarMenuGroup,\n SidebarMenuItem,\n} from \"@next-shared/general/types\";\nimport {\n initMenuItemAndMatchCurrentPathKeys,\n isGroup,\n isSubMenu,\n} from \"@next-shared/general/menu\";\nimport { Menu as MenuComponent, SidebarMenu } from \"@next-bricks/basic/menu\";\nimport { Link, LinkProps, Target } from \"@next-bricks/basic/link\";\nimport {\n EoMenuItemSubMenu,\n EoMenuSubMenuProps,\n} from \"@next-bricks/basic/menu-item-sub-menu\";\nimport { EoMenuGroup } from \"@next-bricks/basic/menu-group\";\nimport { MenuComponentProps, MenuItem } from \"@next-bricks/basic/menu-item\";\nimport styleText from \"./styles.shadow.css\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport classNames from \"classnames\";\n\n// --- NOTE: uncomment these lines below to enable i18n for your brick ---\n// import { useTranslation, initializeReactI18n } from \"@next-core/i18n/react\";\n// import { K, NS, locales } from \"./i18n.js\";\n// initializeReactI18n(NS, locales);\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\n\nconst WrappedMenu = wrapBrick<MenuComponent, any>(\"eo-menu\");\n\nconst WrappedMenuGroup = wrapBrick<EoMenuGroup, any>(\"eo-menu-group\");\n\nconst WrapperMenuItemSubMenu = wrapBrick<EoMenuItemSubMenu, EoMenuSubMenuProps>(\n \"eo-menu-item-sub-menu\"\n);\n\nconst WrappedMenuItem = wrapBrick<MenuItem, MenuComponentProps>(\"eo-menu-item\");\n\nconst WrappedLinkItem = wrapBrick<Link, LinkProps>(\"eo-link\");\n\ninterface SidebarSubMenuProps {\n menu?: SidebarMenu;\n showTooltip?: boolean;\n}\n\nconst { defineElement, property } = createDecorators();\n\n/**\n * 构件 `eo-sidebar-sub-menu`\n * @category navigation\n */\nexport\n@defineElement(\"eo-sidebar-sub-menu\", {\n styleTexts: [styleText],\n})\nclass EoSidebarSubMenu extends ReactNextElement {\n /**\n * 菜单项\n */\n @property({\n attribute: false,\n })\n accessor menu: SidebarMenu | undefined;\n\n render() {\n return <EoSidebarSubMenuComponent menu={this.menu} />;\n }\n}\n\nexport function EoSidebarSubMenuComponent(props: SidebarSubMenuProps) {\n // const { t } = useTranslation(NS);\n // const hello = t(K.HELLO);\n const { menu } = props;\n\n const history = getHistory();\n const [location, setLocation] = useState(history.location);\n const { pathname, search } = location;\n\n const [selectedKey, setSelectedKey] = useState<string[]>([]);\n const [openedKeys, setOpenedKeys] = useState<string[]>([]);\n\n const setSelected = useCallback((): void => {\n const { selectedKeys, openedKeys } = initMenuItemAndMatchCurrentPathKeys(\n menu?.menuItems ?? [],\n pathname,\n search,\n \"\"\n );\n setSelectedKey(selectedKeys);\n setOpenedKeys(openedKeys);\n }, [menu?.menuItems, pathname, search]);\n\n useEffect(() => {\n const unListen: UnregisterCallback = history.listen((location) => {\n setLocation(location);\n });\n setSelected();\n return unListen;\n }, [history, setSelected]);\n\n const getMenuItemIndent = useCallback((item: SidebarMenuItem): number => {\n return ((item.key?.split(\".\")?.length as number) - 1) * 16;\n }, []);\n\n const renderSimpleMenuItem = (\n item: SidebarMenuSimpleItem,\n options?: {\n inSubmenu?: boolean;\n }\n ) => {\n return (\n <WrappedMenuItem\n className={classNames(\"menu-item\", {\n \"in-submenu\": options?.inSubmenu,\n })}\n style={{ paddingLeft: getMenuItemIndent(item) || 16 }}\n icon={item.icon}\n active={item.key ? selectedKey.includes(item.key) : false}\n >\n <WrappedLinkItem\n className=\"menu-item-link\"\n type=\"plain\"\n url={item.to as string}\n href={item.href}\n title={item.text}\n target={item.target as Target}\n >\n <span\n className={classNames(\"menu-item-text\", {\n \"item-has-icon\": item.icon,\n })}\n >\n {item.text}\n </span>\n </WrappedLinkItem>\n </WrappedMenuItem>\n );\n };\n\n const renderSubMenuItem = (item: SidebarMenuGroup) => {\n // istanbul ignore else\n if (item.items?.length > 0) {\n return (\n <WrapperMenuItemSubMenu\n className=\"menu-sub-item\"\n icon={item.icon}\n titleStyle={{ paddingLeft: getMenuItemIndent(item) }}\n bodyStyle={{ paddingLeft: getMenuItemIndent(item) / 2 }}\n collapsed={!openedKeys.includes(item.key!)}\n >\n <span slot=\"title\">{item.title}</span>\n {item.items.map((innerItem) => (\n <React.Fragment key={innerItem.key}>\n {renderMenuItem(innerItem, {\n inSubmenu: true,\n })}\n </React.Fragment>\n ))}\n </WrapperMenuItemSubMenu>\n );\n }\n };\n\n const renderGroupMenuItem = (item: SidebarMenuGroup) => {\n // istanbul ignore else\n if (item.items?.length > 0) {\n return (\n <WrappedMenuGroup>\n <span slot=\"title\">{item.title}</span>\n\n {item.items.map((innerItem) => {\n return (\n <React.Fragment key={innerItem.key}>\n {renderMenuItem(innerItem)}\n </React.Fragment>\n );\n })}\n </WrappedMenuGroup>\n );\n }\n };\n\n function renderMenuItem(\n item: SidebarMenuItem,\n options?:\n | {\n inSubmenu?: boolean;\n }\n | undefined\n ) {\n return isSubMenu(item as SidebarMenuGroup)\n ? renderSubMenuItem(item as SidebarMenuGroup)\n : isGroup(item)\n ? renderGroupMenuItem(item)\n : renderSimpleMenuItem(item, options);\n }\n\n return (\n <WrappedMenu className=\"menu-container\" mode=\"vertical\">\n {menu?.title && (\n <div className=\"header\">\n {menu?.icon && <WrappedIcon {...(menu?.icon as GeneralIconProps)} />}\n <span className=\"title\">{menu?.title}</span>\n </div>\n )}\n <div className=\"content\">\n {menu?.menuItems.map((item) => {\n return (\n <React.Fragment key={item.key}>\n {renderMenuItem(item)}\n </React.Fragment>\n );\n })}\n </div>\n </WrappedMenu>\n );\n}\n","import React from \"react\";\nimport { createDecorators, EventEmitter } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport { ReactUseMultipleBricks } from \"@next-core/react-runtime\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport classNames from \"classnames\";\nimport type { EoTooltip, ToolTipProps } from \"@next-bricks/basic/tooltip\";\nimport { UseBrickConf } from \"@next-core/types\";\n\nconst { defineElement, property, event } = createDecorators();\nconst WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nconst WrappedTooltip = wrapBrick<EoTooltip, ToolTipProps>(\"eo-tooltip\");\n\n/**\n * 目录\n */\nexport\n@defineElement(\"eo-directory\", {\n styleTexts: [styleText],\n})\nclass EoDirectory extends ReactNextElement implements EoDirectoryProps {\n /**\n * 设置定位方式:静态定位或固定定位。\n *\n * @default \"fixed\"\n */\n @property()\n accessor position: \"static\" | \"fixed\" = \"fixed\";\n\n /**\n * 目录标题\n */\n @property()\n accessor directoryTitle: string | undefined;\n\n /**\n * 菜单数据\n * @default []\n * @required\n */\n @property({ attribute: false })\n accessor menuItems: MenuItem[] = [];\n\n /**\n * 后缀 useBrick\n */\n @property({\n attribute: false,\n })\n accessor suffixBrick: { useBrick: UseBrickConf } | undefined;\n\n /**\n * 默认选中高亮的菜单项\n */\n @property({ attribute: false })\n accessor defaultSelectedKeys: string[] | undefined;\n /**\n * 菜单点击,groupKey 表示对应分组的key,data 表示对应菜单项\n * @detail { groupKey: string, data: MenuChildrenItem }\n */\n @event({ type: \"menu.item.click\" })\n accessor #menuItemClickEvent!: EventEmitter<MenuItemClickEventDetail>;\n /**\n * 点击icon,detail为 对应菜单项或者是分组的key\n * @detail { key: string }\n */\n @event({ type: \"suffix.icon.click\" })\n accessor #suffixIconClickEvent!: EventEmitter<{ key: string }>;\n\n #menuItemClick = (data: MenuItemClickEventDetail) => {\n this.#menuItemClickEvent.emit(data);\n };\n #suffixIconClick = (key: string) => {\n this.#suffixIconClickEvent.emit({ key });\n };\n\n render() {\n return (\n <EoDirectoryComponent\n menuItems={this.menuItems}\n directoryTitle={this.directoryTitle}\n suffixIconClick={this.#suffixIconClick}\n menuItemClick={this.#menuItemClick}\n defaultSelectedKeys={this.defaultSelectedKeys}\n suffixBrick={this.suffixBrick}\n />\n );\n }\n}\nexport interface EoDirectoryProps {\n position?: \"static\" | \"fixed\";\n suffixBrick?: { useBrick: UseBrickConf };\n directoryTitle: string | undefined;\n menuItems: MenuItem[];\n menuItemClick?: (data: MenuItemClickEventDetail) => void;\n suffixIconClick?: (key: string) => void;\n defaultSelectedKeys?: string[] | undefined;\n}\ninterface MenuChildrenItem {\n title: string;\n key: string;\n [key: string]: any;\n}\ninterface MenuItem {\n title: string;\n key: string;\n type: \"group\" | \"item\";\n children?: MenuChildrenItem[];\n suffixIcon?: GeneralIconProps;\n suffixIconTooltip?: string;\n suffixIconDisabled?: boolean;\n}\ninterface MenuItemClickEventDetail {\n data: MenuChildrenItem;\n groupKey?: string;\n}\n\nexport function EoDirectoryComponent(props: EoDirectoryProps) {\n const {\n menuItems,\n directoryTitle,\n menuItemClick,\n suffixIconClick,\n defaultSelectedKeys,\n suffixBrick,\n } = props;\n\n return (\n <div className=\"directory-container\">\n {directoryTitle && (\n <div className=\"directory-title\" title={directoryTitle}>\n {directoryTitle}\n </div>\n )}\n <div className=\"directory-menu-list\">\n {menuItems.map((item, index) => {\n return (\n <div\n className={classNames(\"menu-item\", `menu-item-${item.type}`)}\n key={`${item.key}-${index}`}\n >\n <div\n className={classNames(`menu-item-title-${item.type}`)}\n onClick={() =>\n item.type === \"item\" && menuItemClick?.({ data: item })\n }\n >\n <span\n className={classNames(\"menu-title-text\", {\n \"menu-title-text-active\": defaultSelectedKeys?.includes(\n item.key\n ),\n })}\n >\n {item.title}\n </span>\n {suffixBrick?.useBrick ? (\n <ReactUseMultipleBricks\n useBrick={suffixBrick.useBrick}\n data={{ data: item }}\n />\n ) : null}\n {item.suffixIcon && (\n <WrappedTooltip\n content={item.suffixIconTooltip}\n placement=\"top\"\n >\n <WrappedIcon\n {...(item.suffixIcon as GeneralIconProps)}\n className={classNames(\"menu-item-title-suffix-icon\", {\n \"menu-item-title-suffix-icon-disabled\":\n item.suffixIconDisabled,\n })}\n onClick={(e) => {\n e.stopPropagation();\n if (item.suffixIconDisabled) {\n e.preventDefault();\n } else {\n suffixIconClick?.(item.key);\n }\n }}\n />\n </WrappedTooltip>\n )}\n </div>\n {item.type === \"group\" &&\n !!item.children?.length &&\n item.children.map((child, i) => {\n return (\n <div\n className=\"menu-item-title-item\"\n onClick={() =>\n menuItemClick?.({ data: child, groupKey: item.key })\n }\n key={`${child.key}-${i}`}\n >\n <span\n className={classNames(\"menu-title-text\", {\n \"menu-title-text-active\":\n defaultSelectedKeys?.includes(child.key),\n })}\n >\n {child.title}\n </span>\n </div>\n );\n })}\n </div>\n );\n })}\n </div>\n </div>\n );\n}\n","import { UseBrickConf } from \"@next-core/types\";\nimport React from \"react\";\nimport { NodeData } from \".\";\n\nexport interface ContextOfDirectoryTree {\n expandedKeysSet: Set<string>;\n selectedKeysSet: Set<string>;\n onExpand: (data: { keys: string[]; node: NodeData }) => void;\n onSelect: (data: { keys: string[]; node: NodeData }) => void;\n suffixBrick?: { useBrick: UseBrickConf };\n}\n\nexport const DirectoryTreeContext = React.createContext<ContextOfDirectoryTree>(\n {\n expandedKeysSet: new Set(),\n selectedKeysSet: new Set(),\n onExpand: () => {},\n onSelect: () => {},\n }\n);\n\nexport const useDirectoryTreeContext = (): ContextOfDirectoryTree =>\n React.useContext(DirectoryTreeContext);\n","import React, { useMemo } from \"react\";\nimport { wrapBrick } from \"@next-core/react-element\";\nimport { ReactUseMultipleBricks } from \"@next-core/react-runtime\";\nimport {\n EoDirectoryTreeLeaf,\n EoDirectoryTreeLeafEvents,\n EoDirectoryTreeLeafEventsMap,\n EoDirectoryTreeLeafProps,\n} from \"./directory-tree-leaf\";\nimport {\n EoDirectoryTreeInternalNode,\n EoDirectoryTreeInternalNodeEvents,\n EoDirectoryTreeInternalNodeEventsMap,\n EoDirectoryTreeInternalNodeProps,\n} from \"./directory-tree-internal-node\";\nimport { useDirectoryTreeContext } from \"./DirectoryTreeContext\";\nimport { TreeData } from \"./\";\n\nconst WrappedTreeLeaf = wrapBrick<\n EoDirectoryTreeLeaf,\n EoDirectoryTreeLeafProps,\n EoDirectoryTreeLeafEvents,\n EoDirectoryTreeLeafEventsMap\n>(\"eo-directory-tree-leaf\", {\n onSelect: \"select\",\n});\nconst WrappedTreeInternalNode = wrapBrick<\n EoDirectoryTreeInternalNode,\n EoDirectoryTreeInternalNodeProps,\n EoDirectoryTreeInternalNodeEvents,\n EoDirectoryTreeInternalNodeEventsMap\n>(\"eo-directory-tree-internal-node\", {\n onExpand: \"expand\",\n onSelect: \"select\",\n});\n\ninterface TreeLeafProps {\n treeData: TreeData;\n}\n\nfunction TreeLeaf(props: TreeLeafProps) {\n const { treeData } = props;\n const { data, index, depth } = treeData;\n const { selectedKeysSet, onSelect, suffixBrick } = useDirectoryTreeContext();\n\n const nodeData = useMemo(\n () => ({ data, index, depth }),\n [data, index, depth]\n );\n\n return (\n <WrappedTreeLeaf\n depth={depth}\n selected={selectedKeysSet.has(data.key)}\n onSelect={() => {\n const keys = [data.key];\n onSelect({ keys, node: nodeData });\n }}\n >\n <span title={data.title}>{data.title}</span>\n {suffixBrick?.useBrick && (\n <div slot=\"suffix\">\n <ReactUseMultipleBricks\n useBrick={suffixBrick.useBrick}\n data={nodeData}\n />\n </div>\n )}\n </WrappedTreeLeaf>\n );\n}\n\ninterface TreeInternalNodeProps {\n treeData: TreeData;\n}\n\nfunction TreeInternalNode(props: TreeInternalNodeProps) {\n const { treeData } = props;\n const { data, index, depth } = treeData;\n const { expandedKeysSet, onExpand, suffixBrick } = useDirectoryTreeContext();\n\n const nodeData = useMemo(\n () => ({ data, index, depth }),\n [data, index, depth]\n );\n\n return (\n <WrappedTreeInternalNode\n depth={depth}\n expanded={expandedKeysSet.has(data.key)}\n onExpand={(e) => {\n if (e.detail) {\n expandedKeysSet.add(data.key);\n } else {\n expandedKeysSet.delete(data.key);\n }\n const keys = [...expandedKeysSet];\n onExpand({ keys, node: nodeData });\n }}\n >\n <span slot=\"label\" title={data.title}>\n {data.title}\n </span>\n {suffixBrick?.useBrick && (\n <div slot=\"suffix\">\n <ReactUseMultipleBricks\n useBrick={suffixBrick.useBrick}\n data={nodeData}\n />\n </div>\n )}\n </WrappedTreeInternalNode>\n );\n}\n\ninterface TreeNodeProps {\n treeData: TreeData;\n}\n\nfunction TreeNode(props: TreeNodeProps) {\n const { treeData } = props;\n const isLeaf = !Array.isArray(treeData.children);\n\n return isLeaf ? (\n <TreeLeaf treeData={treeData} />\n ) : (\n <TreeInternalNode treeData={treeData} />\n );\n}\n\ninterface TreeProps {\n treeData: TreeData[];\n}\n\nexport function Tree(props: TreeProps) {\n const { treeData } = props;\n\n return treeData.map((v) => {\n return <TreeNode key={v.key} treeData={v} />;\n });\n}\n","import { get, isNil } from \"lodash\";\nimport { TreeData, TreeItem } from \"./index\";\n\nexport function getAllExpandableKeys(data: TreeItem[]): string[] {\n return data.reduce((pre, cur) => {\n const isLeaf = !Array.isArray(cur.children);\n\n if (!isLeaf) {\n const keys = [cur.key].concat(\n getAllExpandableKeys(cur.children as TreeItem[])\n );\n return pre.concat(keys);\n } else {\n return pre;\n }\n }, [] as string[]);\n}\n\nexport function getExpandableKeysAccordingToSelectedKeys(\n data: TreeItem[],\n selectedKeysSet: Set<string>\n): string[] {\n return data.reduce((pre, cur) => {\n const isLeaf = !Array.isArray(cur.children);\n\n if (!isLeaf) {\n const childrenMatched = cur.children?.some((child) =>\n selectedKeysSet.has(child.key)\n );\n const childrenExpandableKeys = getExpandableKeysAccordingToSelectedKeys(\n cur.children as TreeItem[],\n selectedKeysSet\n );\n\n const keys = childrenExpandableKeys.concat(\n childrenMatched || childrenExpandableKeys.length ? [cur.key] : []\n );\n return pre.concat(keys);\n } else {\n return pre;\n }\n }, [] as string[]);\n}\n\nexport function searchTree(\n data: TreeItem[],\n q: string,\n searchFields: (string | string[])[]\n): { data: TreeItem[]; expandedKeys: string[] } {\n if (!q) {\n return { data, expandedKeys: [] };\n }\n\n const lowerQ = q.toLowerCase();\n const _expandedKeys: string[] = [];\n const _data = data\n .map((item) => {\n const selfMatched = matchItem(item, lowerQ, searchFields);\n\n if (Array.isArray(item.children)) {\n const childrenSearchResult = searchTree(\n item.children,\n lowerQ,\n searchFields\n );\n const filteredChildren = childrenSearchResult.data;\n const childrenMatched = !!filteredChildren?.length;\n\n if (childrenMatched) {\n _expandedKeys.push(item.key, ...childrenSearchResult.expandedKeys);\n\n return {\n ...item,\n children: filteredChildren,\n };\n }\n }\n\n if (selfMatched) {\n return item;\n }\n\n return undefined;\n })\n .filter(Boolean) as TreeItem[];\n return { data: _data, expandedKeys: _expandedKeys };\n}\n\nfunction matchItem(\n item: TreeItem,\n lowerQ: string,\n searchFields: (string | string[])[]\n): TreeItem | undefined {\n const keywords = searchFields.flatMap((field) =>\n getSearchKeywords(get(item, field))\n );\n const matched = keywords.some((v) => v.toLowerCase().includes(lowerQ));\n\n if (matched) {\n return item;\n }\n return undefined;\n}\n\nfunction getSearchKeywords(value: unknown): string[] {\n const result = [];\n if (isNil(value)) {\n // do nothing\n } else if (Array.isArray(value)) {\n value.map((v) => result.push(getSearchKeywords(v)));\n } else if (Object.prototype.toString.call(value) === \"[object Object]\") {\n for (const k in value as Record<string, any>) {\n result.push(\n String(k),\n getSearchKeywords((value as Record<string, any>)[k])\n );\n }\n } else {\n // string, number, bigint, boolean...\n result.push(String(value));\n }\n\n return result.flat(Infinity).filter(Boolean) as string[];\n}\n\nexport function getFlattenTreeData(\n treeItems: TreeItem[],\n expandedKeysSet: Set<string>\n) {\n const flattenList: TreeData[] = [];\n\n function dig(list: TreeItem[], parent?: TreeData): TreeData[] {\n return list.map((treeItem, index) => {\n const pos = parent ? `${parent.pos}-${index}` : String(index);\n\n const flattenData: TreeData = {\n title: treeItem.title,\n key: treeItem.key,\n pos,\n depth: pos.split(\"-\").length - 1,\n index,\n data: treeItem,\n parent,\n };\n\n flattenList.push(flattenData);\n\n if (Array.isArray(treeItem.children)) {\n flattenData.children = expandedKeysSet.has(treeItem.key)\n ? dig(treeItem.children, flattenData)\n : [];\n } else {\n flattenData.children = undefined;\n }\n\n return flattenData;\n });\n }\n\n dig(treeItems);\n\n return flattenList;\n}\n","import React, { useMemo, useState } from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { ReactNextElement, wrapBrick } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport {\n GeneralSearch,\n SearchProps,\n SearchEvents,\n SearchEventsMap,\n} from \"@next-bricks/form/search\";\nimport { Tree } from \"./Tree\";\nimport {\n getFlattenTreeData,\n getAllExpandableKeys,\n getExpandableKeysAccordingToSelectedKeys,\n searchTree,\n} from \"./utils\";\nimport { DirectoryTreeContext } from \"./DirectoryTreeContext\";\nimport { UseBrickConf } from \"@next-core/types\";\n\nconst { defineElement, property, method, event } = createDecorators();\n\nconst WrappedSearch = wrapBrick<\n GeneralSearch,\n SearchProps,\n SearchEvents,\n SearchEventsMap\n>(\"eo-search\", {\n onChange: \"change\",\n onSearch: \"search\",\n});\n\n/**\n * 传入的 data 类型\n */\nexport interface TreeItem {\n key: string;\n title: string;\n children?: TreeItem[];\n [key: string]: any;\n}\n\n/**\n * 内部格式化后的类型\n */\nexport interface TreeData {\n title: string;\n key: string;\n pos: string;\n depth: number;\n index: number;\n data: TreeItem;\n parent?: TreeData;\n children?: TreeData[];\n}\n\n/**\n * useBrick、事件使用的类型\n */\nexport interface NodeData {\n depth: number;\n index: number;\n data: TreeItem;\n}\n\nexport interface EoDirectoryTreeProps {\n data: TreeItem[];\n directoryTitle?: string;\n searchable?: boolean;\n placeholder?: string;\n selectedKeys?: string[];\n expandedKeys?: string[];\n searchFields?: (string | string[])[];\n suffixBrick?: { useBrick: UseBrickConf };\n}\n\n/**\n * 目录树\n */\nexport\n@defineElement(\"eo-directory-tree\", {\n styleTexts: [styleText],\n})\nclass EoDirectoryTree extends ReactNextElement {\n /**\n * 数据源\n */\n @property({\n attribute: false,\n })\n accessor data: TreeItem[] = [];\n\n /**\n * 目录标题\n */\n @property()\n accessor directoryTitle: string | undefined;\n\n /**\n * 可搜索\n */\n @property({\n type: Boolean,\n })\n accessor searchable: boolean | undefined;\n\n /**\n * 搜索占位说明\n */\n @property()\n accessor placeholder: string | undefined;\n\n /**\n * 除了 title 以外,额外的搜索字段\n */\n @property({\n attribute: false,\n })\n accessor searchFields: (string | string[])[] | undefined;\n\n /**\n * 后缀 useBrick\n */\n @property({\n attribute: false,\n })\n accessor suffixBrick: { useBrick: UseBrickConf } | undefined;\n\n /**\n * 选中的 keys\n */\n @property({\n attribute: false,\n })\n accessor selectedKeys: string[] | undefined;\n\n /**\n * 展开的 keys\n */\n @property({\n attribute: false,\n })\n accessor expandedKeys: string[] | undefined;\n\n /**\n * 展开全部\n */\n @method()\n expandAll() {\n this.expandedKeys = getAllExpandableKeys(this.data);\n }\n\n /**\n * 收起全部\n */\n @method()\n collapseAll() {\n this.expandedKeys = [];\n }\n\n /**\n * 根据选择项展开\n */\n @method()\n expandAccordingToSelectedKeys() {\n this.expandedKeys = getExpandableKeysAccordingToSelectedKeys(\n this.data,\n new Set(this.selectedKeys)\n );\n }\n\n /**\n * 展开事件\n * @detail keys - 展开的 keys\n */\n @event({ type: \"expand\" })\n accessor #expandEvent!: EventEmitter<{ keys: string[]; node: NodeData }>;\n #handleExpand = (data: { keys: string[]; node: NodeData }) => {\n this.expandedKeys = data.keys;\n this.#expandEvent.emit(data);\n };\n\n /**\n * 选择事件\n * @detail keys - 选择的 keys\n */\n @event({ type: \"select\" })\n accessor #selectEvent!: EventEmitter<{ keys: string[]; node: NodeData }>;\n #handleSelect = (data: { keys: string[]; node: NodeData }) => {\n this.selectedKeys = data.keys;\n this.#selectEvent.emit(data);\n };\n\n render() {\n return (\n <EoDirectoryTreeComponent\n element={this}\n data={this.data}\n directoryTitle={this.directoryTitle}\n placeholder={this.placeholder}\n searchable={this.searchable}\n searchFields={this.searchFields}\n suffixBrick={this.suffixBrick}\n selectedKeys={this.selectedKeys}\n expandedKeys={this.expandedKeys}\n onExpand={this.#handleExpand}\n onSelect={this.#handleSelect}\n />\n );\n }\n}\n\ninterface EoDirectoryTreeComponentProps extends EoDirectoryTreeProps {\n element: EoDirectoryTree;\n onExpand: (data: { keys: string[]; node: NodeData }) => void;\n onSelect: (data: { keys: string[]; node: NodeData }) => void;\n}\n\nexport function EoDirectoryTreeComponent(props: EoDirectoryTreeComponentProps) {\n const {\n element,\n data,\n directoryTitle,\n searchable,\n searchFields,\n placeholder,\n suffixBrick,\n onSelect,\n onExpand,\n } = props;\n\n const expandedKeysSet = useMemo(\n () => new Set(props.expandedKeys),\n [props.expandedKeys]\n );\n const selectedKeysSet = useMemo(\n () => new Set(props.selectedKeys),\n [props.selectedKeys]\n );\n\n const [q, setQ] = useState(\"\");\n\n const handleSearch = (e: CustomEvent<string>) => {\n setQ(e.detail);\n };\n\n const searchedData = useMemo(() => {\n const result = searchTree(data, q, (searchFields || []).concat(\"title\"));\n if (q) {\n element.expandedKeys = result.expandedKeys;\n }\n return result.data;\n }, [data, q, searchFields]);\n\n const treeData = useMemo(() => {\n return getFlattenTreeData(searchedData, expandedKeysSet);\n }, [searchedData, expandedKeysSet]);\n\n return (\n <DirectoryTreeContext.Provider\n value={{\n expandedKeysSet,\n selectedKeysSet,\n onSelect,\n onExpand,\n suffixBrick,\n }}\n >\n <div className=\"directory-container\">\n {directoryTitle && (\n <div className=\"directory-title-container\">\n <div className=\"directory-title\" title={directoryTitle}>\n {directoryTitle}\n </div>\n <div className=\"directory-title-toolbar\">\n <slot name=\"toolbar\" />\n </div>\n </div>\n )}\n {searchable && (\n <WrappedSearch\n className=\"directory-search\"\n trim\n placeholder={placeholder}\n onSearch={handleSearch}\n />\n )}\n <div className=\"tree\">\n <Tree treeData={treeData} />\n </div>\n </div>\n </DirectoryTreeContext.Provider>\n );\n}\n","import React, { useEffect, useRef } from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport { IndentSize } from \"../constants\";\n\nconst { defineElement, property, event } = createDecorators();\n\nexport interface EoDirectoryTreeLeafProps {\n depth: number;\n selected?: boolean;\n}\n\nexport interface EoDirectoryTreeLeafEvents {\n select: CustomEvent<void>;\n}\n\nexport interface EoDirectoryTreeLeafEventsMap {\n onSelect: \"select\";\n}\n\n/**\n * 目录树叶子节点\n */\nexport\n@defineElement(\"eo-directory-tree-leaf\", {\n styleTexts: [styleText],\n})\nclass EoDirectoryTreeLeaf extends ReactNextElement {\n /**\n * 深度\n */\n @property({\n type: Number,\n })\n accessor depth: number = 0;\n\n /**\n * 是否选中\n */\n @property({\n type: Boolean,\n })\n accessor selected: boolean | undefined;\n\n /**\n * 选择事件\n */\n @event({ type: \"select\" })\n accessor #selectEvent!: EventEmitter<void>;\n\n #handleSelect = () => {\n this.#selectEvent.emit();\n };\n\n render() {\n return (\n <EoDirectoryTreeLeafComponent\n depth={this.depth}\n onSelect={this.#handleSelect}\n />\n );\n }\n}\n\nexport interface EoDirectoryTreeLeafComponentProps\n extends EoDirectoryTreeLeafProps {\n onSelect: () => void;\n}\n\nexport function EoDirectoryTreeLeafComponent(\n props: EoDirectoryTreeLeafComponentProps\n) {\n const { depth, onSelect } = props;\n\n const treeItemRef = useRef<HTMLDivElement>(null);\n const suffixRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const treeItem = treeItemRef.current;\n const handleSelect = () => {\n onSelect();\n };\n\n treeItem?.addEventListener(\"click\", handleSelect);\n\n return () => {\n treeItem?.removeEventListener(\"click\", handleSelect);\n };\n }, [onSelect]);\n\n useEffect(() => {\n const suffix = suffixRef.current;\n const handleSuffixClick = (e: MouseEvent) => {\n e.stopPropagation();\n };\n\n suffix?.addEventListener(\"click\", handleSuffixClick);\n\n return () => {\n suffix?.removeEventListener(\"click\", handleSuffixClick);\n };\n }, []);\n\n return (\n <div className=\"tree-item\" ref={treeItemRef}>\n <div\n className=\"tree-item-indentation\"\n style={{\n width: IndentSize * depth,\n }}\n />\n <div className=\"tree-item-content\">\n <div className=\"tree-item-expand-button\"></div>\n <div className=\"tree-item-label\">\n <slot />\n </div>\n </div>\n <div className=\"tree-item-suffix\" ref={suffixRef}>\n <slot name=\"suffix\" />\n </div>\n </div>\n );\n}\n","export const IndentSize = 10;\n","import * as React from \"react\";\nconst SvgArrow = props => <svg xmlns=\"http://www.w3.org/2000/svg\" width={14} height={14} viewBox=\"0 0 14 14\" {...props}><path fill=\"currentColor\" fillRule=\"evenodd\" d=\"m11.743 9.42-4.49-5.206a.34.34 0 0 0-.506 0L2.257 9.42c-.167.194-.016.478.253.478h8.98c.27 0 .42-.284.253-.478\" /></svg>;\nexport default SvgArrow;","import React, { useEffect, useRef } from \"react\";\nimport { EventEmitter, createDecorators } from \"@next-core/element\";\nimport { ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport Arrow from \"./arrow.svg\";\nimport { IndentSize } from \"../constants\";\n\nconst { defineElement, property, event } = createDecorators();\n\nexport interface EoDirectoryTreeInternalNodeProps {\n depth: number;\n expanded?: boolean;\n selectable?: boolean;\n selected?: boolean;\n}\n\nexport interface EoDirectoryTreeInternalNodeEvents {\n expand: CustomEvent<boolean>;\n select: CustomEvent<void>;\n}\n\nexport interface EoDirectoryTreeInternalNodeEventsMap {\n onExpand: \"expand\";\n onSelect: \"select\";\n}\n\n/**\n * 目录树节点节点\n */\nexport\n@defineElement(\"eo-directory-tree-internal-node\", {\n styleTexts: [styleText],\n})\nclass EoDirectoryTreeInternalNode extends ReactNextElement {\n /**\n * 深度\n */\n @property({\n type: Number,\n })\n accessor depth: number = 0;\n\n /**\n * 是否展开\n */\n @property({\n type: Boolean,\n })\n accessor expanded: boolean | undefined;\n\n /**\n * 可选择\n */\n @property({\n type: Boolean,\n })\n accessor selectable: boolean | undefined;\n\n /**\n * 是否选中\n */\n @property({\n type: Boolean,\n })\n accessor selected: boolean | undefined;\n\n /**\n * 展开事件\n * @detail 展开状态\n */\n @event({ type: \"expand\" })\n accessor #expandEvent!: EventEmitter<boolean>;\n #handleExpand = () => {\n this.#expandEvent.emit(!this.expanded);\n };\n\n /**\n * 选择事件\n */\n @event({ type: \"select\" })\n accessor #selectEvent!: EventEmitter<void>;\n #handleSelect = () => {\n this.#selectEvent.emit();\n };\n\n render() {\n return (\n <EoDirectoryTreeInternalNodeComponent\n depth={this.depth}\n selectable={this.selectable}\n expanded={this.expanded}\n onExpand={this.#handleExpand}\n onSelect={this.#handleSelect}\n />\n );\n }\n}\n\nexport interface EoDirectoryTreeInternalNodeComponentProps\n extends EoDirectoryTreeInternalNodeProps {\n onExpand: () => void;\n onSelect: () => void;\n}\n\nexport function EoDirectoryTreeInternalNodeComponent(\n props: EoDirectoryTreeInternalNodeComponentProps\n) {\n const { depth, selectable, onExpand, onSelect } = props;\n\n const treeItemRef = useRef<HTMLDivElement>(null);\n const expandBottomRef = useRef<HTMLDivElement>(null);\n const suffixRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (selectable) {\n const treeItem = treeItemRef.current;\n const expandBottom = expandBottomRef.current;\n const handleSelect = () => {\n onSelect();\n };\n const handleExpand = (e: MouseEvent) => {\n e.stopPropagation();\n onExpand();\n };\n\n treeItem?.addEventListener(\"click\", handleSelect);\n expandBottom?.addEventListener(\"click\", handleExpand);\n\n return () => {\n treeItem?.removeEventListener(\"click\", handleSelect);\n expandBottom?.removeEventListener(\"click\", handleExpand);\n };\n } else {\n const treeItem = treeItemRef.current;\n const handleExpand = () => {\n onExpand();\n };\n\n treeItem?.addEventListener(\"click\", handleExpand);\n\n return () => {\n treeItem?.removeEventListener(\"click\", handleExpand);\n };\n }\n }, [selectable, onSelect, onExpand]);\n\n useEffect(() => {\n const suffix = suffixRef.current;\n const handleSuffixClick = (e: MouseEvent) => {\n e.stopPropagation();\n };\n\n suffix?.addEventListener(\"click\", handleSuffixClick);\n\n return () => {\n suffix?.removeEventListener(\"click\", handleSuffixClick);\n };\n }, []);\n\n return (\n <>\n <div className=\"tree-item\" ref={treeItemRef}>\n <div\n className=\"tree-item-indentation\"\n style={{\n width: IndentSize * depth,\n }}\n />\n <div className=\"tree-item-content\">\n <div className=\"tree-item-expand-button\" ref={expandBottomRef}>\n <Arrow className=\"tree-item-expand-arrow\" />\n </div>\n <div className=\"tree-item-label\">\n <slot name=\"label\" />\n </div>\n </div>\n <div className=\"tree-item-suffix\" ref={suffixRef}>\n <slot name=\"suffix\" />\n </div>\n </div>\n <div className=\"tree-item-children\">\n <div className=\"tree-item-inner\">\n <slot />\n </div>\n </div>\n </>\n );\n}\n","import React, { useMemo } from \"react\";\nimport { createDecorators } from \"@next-core/element\";\nimport { wrapBrick, ReactNextElement } from \"@next-core/react-element\";\nimport \"@next-core/theme\";\nimport styleText from \"./styles.shadow.css\";\nimport { getRuntime } from \"@next-core/runtime\";\nimport type {\n GeneralIcon,\n GeneralIconProps,\n} from \"@next-bricks/icons/general-icon\";\nimport type { Link, LinkProps } from \"@next-bricks/basic/link\";\n\nconst { defineElement } = createDecorators();\n\nexport const WrappedIcon = wrapBrick<GeneralIcon, GeneralIconProps>(\"eo-icon\");\nexport const WrappedLink = wrapBrick<Link, LinkProps>(\"eo-link\");\n\n/**\n * 导航栏图标\n */\nexport\n@defineElement(\"nav.nav-logo\", {\n styleTexts: [styleText],\n})\nclass NavLogo extends ReactNextElement {\n render() {\n return <NavLogoComponent />;\n }\n}\n\nexport function NavLogoComponent() {\n const brand = getRuntime().getBrandSettings();\n\n const logoNode = useMemo(() => {\n return brand.menu_bar_logo_url ? (\n <img src={brand.menu_bar_logo_url} className=\"personalized-logo\" />\n ) : (\n <WrappedIcon\n category=\"blueprint\"\n icon=\"easyops\"\n lib=\"easyops\"\n className=\"easyops-icon\"\n />\n );\n }, [brand.menu_bar_logo_url]);\n\n return (\n <div className=\"logo-container\">\n {brand.menu_bar_logo_no_link === \"true\" ? (\n logoNode\n ) : (\n <WrappedLink type=\"plain\" url=\"/\" className=\"logo-link\">\n {logoNode}\n </WrappedLink>\n )}\n </div>\n );\n}\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:root{--eo-search-launchpad-menu-icon-color:#8c8c8c}html[data-theme=\"dark\"],\nhtml[data-theme=\"dark-v2\"]{--eo-search-launchpad-menu-icon-color:rgba(255,255,255,0.45)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}.app-bar-container{height:var(--app-bar-height)}.app-bar{position:relative;z-index:999;box-shadow:var(--top-nav-shadow)}.app-bar.fixed,\n.app-bar.absolute{right:0;left:0;top:0}.app-bar.fixed{position:fixed}.app-bar.absolute{position:absolute}.app-bar-content{display:flex;justify-content:space-between;align-items:center;height:var(--app-bar-height);background-color:var(--top-navigation-bg);padding:0 16px;transition:var(--launchpad-backdrop-transition)}.left{display:flex;flex:1}.right{display:flex;justify-content:end}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}.tree-item{min-height:24px;display:flex;align-items:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:pointer;border-radius:3px}.tree-item:hover .tree-item-label{color:var(--palette-blue-4)!important}.tree-item .tree-item-indentation{flex-shrink:0}.tree-item .tree-item-content{min-width:0;flex:1;display:flex;align-items:center}.tree-item .tree-item-content .tree-item-expand-button{margin:0 4px;padding:4px;position:relative;width:10px;height:10px;flex-shrink:0;border-radius:3px}.tree-item .tree-item-content .tree-item-expand-button .tree-item-expand-arrow{color:var(--color-header-text);width:10px;height:10px;position:absolute;left:50%;top:50%;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.tree-item .tree-item-content .tree-item-label{color:var(--color-header-text);min-width:0;flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.tree-item .tree-item-suffix{flex-shrink:0}.tree-item-children{display:grid;grid-template-rows:1fr;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.tree-item-children .tree-item-inner{overflow:hidden}.tree-item-children .tree-item-inner slot::slotted(*){margin-top:8px}:host(:not([expanded])) .tree-item-children{grid-template-rows:0fr;opacity:0}:host([expanded]) .tree-item-expand-arrow{transform:translate(-50%,-50%) rotate(180deg)}:host(:not([expanded])) .tree-item-expand-arrow{transform:translate(-50%,-50%) rotate(90deg)}:host([selectable]) .tree-item-expand-button:hover{background-color:var(--color-fill-bg-base-1)}:host([selectable][selected]) .tree-item{background-color:var(--palette-blue-1)}:host([selectable][selected]) .tree-item:hover .tree-item-label{color:var(--color-header-text)!important}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}.tree-item{min-height:24px;display:flex;align-items:center;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:pointer;border-radius:3px}.tree-item:hover .tree-item-label{color:var(--palette-blue-4)!important}.tree-item .tree-item-indentation{flex-shrink:0}.tree-item .tree-item-content{min-width:0;flex:1;display:flex;align-items:center}.tree-item .tree-item-content .tree-item-expand-button{padding:4px;margin:0 4px;width:10px;flex-shrink:0}.tree-item .tree-item-content .tree-item-label{color:var(--color-header-text);min-width:0;flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.tree-item .tree-item-suffix{flex-shrink:0}:host([selected]) .tree-item{background-color:var(--palette-blue-1)}:host([selected]) .tree-item:hover .tree-item-label{color:var(--color-header-text)!important}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:inline-block}:host([hidden]){display:none}.directory-container{background-color:var(--color-fill-global-bg-3);padding:20px 12px 24px 20px}.directory-container .directory-title-container{margin-bottom:24px;display:flex;align-items:center;justify-content:space-between;gap:8px}.directory-container .directory-title-container .directory-title{font-size:16px;color:var(--text-color-title);line-height:24px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.directory-container .directory-search{display:block;margin-bottom:12px}.directory-container .tree > *:not(:last-child){margin-bottom:8px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}.directory-container{padding:20px 8px 24px 24px;background:var(--color-fill-global-bg-2);border-right:1px solid var(--color-text-divider-line);height:calc(100vh - var(--app-bar-height) - 44px);overflow-y:auto;scrollbar-width:none}.directory-title{font-size:var(--sub-menu-title-font-size);margin-bottom:24px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.directory-menu-list > .menu-item-group{padding-top:14px}.directory-menu-list > .menu-item-group:first-child{padding-top:0}.directory-menu-list .menu-item-title-group,\n.directory-menu-list .menu-item-title-item{display:flex;align-items:center;justify-content:space-between}.directory-menu-list .menu-item-title-group{color:#8c8c8c;font-size:12px;margin-bottom:2px}.directory-menu-list .menu-item-title-item{font-size:14px;cursor:pointer;line-height:24px;padding:3px 0}.directory-menu-list .menu-item-title-suffix-icon{width:24px;height:24px;display:flex;justify-content:center;align-items:center;font-size:14px;border-radius:var(--small-border-radius);cursor:pointer}.directory-menu-list\n .menu-item-title-suffix-icon:not(\n .menu-item-title-suffix-icon-disabled\n ):hover{background:var(--color-info-icon-bg);color:var(--color-brand-hover)}.directory-menu-list .menu-item-title-item > .menu-title-text:hover{color:var(--color-brand-hover)}.directory-menu-list .menu-item-title-item > .menu-title-text-active{color:var(--color-brand)}.directory-menu-list .menu-item-title-suffix-icon-disabled{color:var(--color-disabled-text);cursor:not-allowed}.directory-menu-list .menu-title-text{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}.alert{height:32px;padding:0 20px;display:flex;justify-content:center;align-items:center}.text{color:var(--antd-text-color);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.icon{margin-left:20px;cursor:pointer;color:#8c8c8c}.info{background-color:var(--palette-blue-1)}.warning{background-color:var(--palette-amber-1)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:flex;height:22px;align-items:center}:host([hidden]){display:none}.breadcrumb-item-prefix-icon{font-size:14px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;--local-menu-icon-color:#8c8c8c}:host([hidden]){display:none;--local-menu-icon-color:rgba(255,255,255,0.45)}ul{list-style:none;margin:0;padding:0}.menu-groups{display:grid;grid-gap:32px 16px;gap:32px 16px;grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.menu,\n.sub-menu{display:flex;flex-direction:column;gap:14px}.menu-folder-label-wrapper > eo-link,\n.menu-item > eo-link{display:block}.menu-folder-label-wrapper > eo-link::part(link),\n.menu-item > eo-link::part(link){height:20px;display:flex;align-items:center;gap:8px;color:var(--color-header-text)}.menu-group-label-wrapper,\n.menu-folder-label-wrapper,\n.menu-item:not(.folder){display:flex;gap:8px;align-items:center}.menu-group-label-wrapper{gap:3px}.menu-group:not(.empty) .menu-group-label-wrapper{margin-bottom:14px}.menu-group-label,\n.menu-item-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-group-label{font-size:var(--card-title-font-size);font-weight:500;color:var(--color-header-text)}.menu-icon{color:var(--local-menu-icon-color)}.menu-folder-label-wrapper > eo-link,\n.menu-item > eo-link{max-width:100%;width:-webkit-fit-content;width:-moz-fit-content;width:fit-content;min-width:0}.sub-menu:not(.expanded){display:none}.sub-menu{margin-left:8px;border-left:1px solid var(--color-text-divider-line);padding-left:15px}.menu-item:not(.empty) .sub-menu{margin-top:14px}.menu-item-toggle{color:var(--color-secondary-text)}.menu-config{visibility:hidden;color:var(--color-brand);cursor:pointer;display:flex;justify-content:center;align-items:center;height:24px;width:0}.menu-config.active,\n.menu-group-label-wrapper:hover .menu-config,\n.menu-item:not(.folder):hover .menu-config,\n.menu-folder-label-wrapper:hover .menu-config{visibility:visible;width:24px}.menu-config:hover,\n.menu-item > eo-link:hover::part(link),\n.menu-item > eo-link:hover .menu-icon,\n.menu-folder-label-wrapper > eo-link:hover::part(link),\n.menu-folder-label-wrapper > eo-link:hover .menu-icon,\n.menu-folder-label-wrapper > eo-link:hover .menu-item-toggle{color:var(--color-brand-hover)}@supports not (inset: 0){.sub-menu,\n .menu,\n .menu-group-label-wrapper,\n .menu-folder-label-wrapper,\n .menu-item:not(.folder),\n .menu-item > eo-link::part(link){gap:0}.menu > :not(:first-child),\n .sub-menu > :not(:first-child){margin-top:14px}.menu-icon{margin-right:8px}eo-dropdown-actions,\n .menu-item-toggle{margin-left:8px}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}.quick-access-list{display:grid;grid-gap:14px;gap:14px;grid-template-columns:repeat(2,1fr);list-style:none;margin:0;padding:0}.sidebar-menu-item{display:flex;align-items:center;justify-content:space-between;overflow:hidden}.sidebar-menu-item > eo-link{display:block;min-width:0}.sidebar-menu-item > eo-link::part(link){display:flex;align-items:center;height:20px;gap:8px;color:var(--color-header-text)}.sidebar-menu-icon{color:var(--left-sidebar-item-collapsed-icon-color)}.menu-item-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-item-remove{color:var(--color-secondary-text);cursor:pointer}.sidebar-menu-item:not(:hover) .menu-item-remove{display:none}.menu-item-remove:hover{color:var(--color-normal-text)}.menu-item-remove:active{color:var(--color-strong-text)}.sidebar-menu-item > eo-link:hover::part(link),\n.sidebar-menu-item > eo-link:hover .sidebar-menu-icon{color:var(--color-brand-hover)}@supports not (inset: 0){.sidebar-menu-item,\n .sidebar-menu-item > eo-link::part(link){gap:0}.sidebar-menu-icon{margin-right:8px}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}.recent-visits{list-style:none;margin:0;padding:0;display:grid;grid-gap:8px;gap:8px;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));max-height:56px;overflow:hidden}.recent-visits span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.recent-visits eo-link{display:block;min-width:0}.recent-visits eo-link::part(link){background-color:var(--color-fill-bg-base-1);border-radius:3px;color:var(--color-header-text);display:flex;align-items:center;height:24px;padding:0 8px}.recent-visits eo-link:hover::part(link){color:var(--color-brand-hover)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:inline-block}:host([hidden]){display:none}.logo-container{position:relative;display:flex;justify-content:flex-start;align-items:center}.logo-link{cursor:pointer}.personalized-logo{height:24px;vertical-align:top}.easyops-icon{display:block;font-size:24px;color:var(--color-brand)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}.container{position:relative}.dropdown{margin-top:5px;position:absolute;top:100%;left:0px;width:100%;z-index:1050;padding:20px 24px 24px;overflow:hidden;box-sizing:border-box;background-color:var(--antd-select-dropdown-bg);border-radius:4px;box-shadow:var(--antd-box-shadow-base);display:none}.dropdown-active{display:block}.search-box{border-bottom:1px solid var(--color-text-divider-line);display:flex;gap:8px;align-items:center;padding:10px 0;cursor:text}.search-icon{color:var(--color-auxiliary-text)}.search-input{padding:0;margin:0;border:none;outline:none;color:inherit;background-color:transparent;font-size:14px;line-height:22px;flex:1;min-width:0}.search-input::placeholder{color:var(--color-disabled-text);opacity:1}.search-clear{display:none;color:var(--color-secondary-text);cursor:pointer}.search-clear.searching{display:inline-block}.search-clear:hover{color:var(--color-auxiliary-text)}.dropdown-content{min-width:0;display:flex;flex-direction:column;gap:24px;max-height:260px;overflow-y:auto}.spinner{display:flex;justify-content:center;align-items:center;color:var(--theme-doderblue-color);flex:1;font-size:30px}.loading > :not(.spinner){display:none}.menu-group-label,\n.menu-item-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.menu-groups,\n.menu,\n.sub-menu{list-style:none;margin:0;padding:0}.menu,\n.sub-menu{display:flex;flex-direction:column;gap:14px}.menu-item > eo-link{display:block;min-width:0}.menu-item > eo-link::part(link){height:20px;display:flex;align-items:center;gap:8px;color:var(--color-header-text)}.menu-groups{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.menu-groups{display:grid;grid-gap:32px 8px;gap:32px 8px}.menu-group{padding-right:12px;color:var(--color-header-text)}.menu-group-label{font-size:var(--card-title-font-size);font-weight:500;color:var(--color-header-text);margin-bottom:14px}.menu-item:not(.folder){display:flex;gap:8px;align-items:center}.menu-icon{color:var(--eo-search-launchpad-menu-icon-color)}.menu-item.active,\n.menu-item.active .menu-icon{color:var(--color-brand-active)}.sub-menu:not(.expanded){display:none}.sub-menu{margin-top:14px;margin-left:8px;border-left:1px solid var(--color-text-divider-line);padding-left:15px}.menu-item-star{cursor:pointer}.menu-item-star,\n.menu-item-toggle{color:var(--color-secondary-text)}.menu-item-star{display:none}.can-star.starred > .menu-item-star,\n.can-star:hover > .menu-item-star{display:inline-block}.can-star:not(.starred) > .menu-item-star{color:var(--color-secondary-text)}.starred > .menu-item-star{color:var(--palette-yellow-6)}.menu-item > eo-link:hover::part(link),\n.menu-item > eo-link:hover .menu-icon,\n.menu-item > eo-link:hover .menu-item-toggle{color:var(--color-brand-hover)}@supports not (inset: 0){.search-box,\n .menu,\n .sub-menu,\n .menu-item:not(.folder),\n .menu-item > eo-link::part(link){gap:0}.dropdown-content{display:grid;grid-auto-flow:row}.dropdown-content:not(.loading){height:-webkit-min-content;height:-moz-min-content;height:min-content}.menu > :not(:first-child),\n .sub-menu > :not(:first-child){margin-top:14px}.search-icon,\n .menu-icon{margin-right:8px}.search-clear,\n .menu-item-star,\n .menu-item-toggle{margin-left:8px}}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}.menu-container{box-sizing:border-box;background:var(--third-menu-default-bg);border:1px solid var(--stroke-color-default);border-width:0 1px 0 0;border-radius:0px;padding:20px 0px;height:100%}.menu-container .header{display:flex;gap:10px;align-items:center;font-size:var(--title-font-size);padding:0 20px 16px 20px;line-height:26px;color:var(--color-header-text)}.menu-container .header .title{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;word-wrap:break-word}.menu-container .content{padding:0 12px}.menu-container .menu-item,\n .menu-container .menu-sub-item::part(sub-menu-item-title){margin:0;padding-right:16px;height:40px;line-height:40px;border-radius:4px;margin-bottom:4px}.menu-container .menu-item::part(menu-item-icon),\n .menu-container .menu-sub-item::part(menu-item-icon){color:var(--color-secondary-text)}.menu-container .menu-item-link{width:100%;color:var(--color-secondary-text)}.menu-container .menu-item-text,\n .menu-container .menu-group-text,\n .menu-container .menu-item-link{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.menu-container .menu-item-text{display:block;box-sizing:border-box;color:var(--antd-text-color)}.menu-container .menu-item:hover{background:var(--third-menu-item-hover-bg);color:var(--color-header-text)}.menu-container .menu-item:hover .menu-item-text{color:var(--color-header-text);font-weight:var(--font-weight-400)}.menu-container .in-submenu .menu-item-text{color:var(--color-normal-text)}.menu-container .menu-sub-item::part(sub-menu-item-title):hover{color:var(--color-header-text)}.menu-container .menu-item-text.item-has-icon{margin-left:6px}.menu-container .menu-item[active]{color:var(--color-brand);background-color:var(--third-menu-item-selected-bg)}.menu-container .menu-item[active] .menu-item-text{color:var(--color-brand);font-weight:var(--font-weight-500)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;--menu-item-icon-size:20px}:host([hidden]){display:none}*,\n*::before,\n*::after{box-sizing:border-box}.menu-group-title{position:relative;display:flex;align-items:center;min-height:36px;padding:8px 12px;line-height:20px;color:var(--left-secondary-text-color);border-radius:var(--larger-border-radius);transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.menu-group-title-icon-container{flex-shrink:0;margin-right:14px;display:flex;align-items:center;justify-content:center;width:var(--menu-item-icon-size);height:var(--menu-item-icon-size);color:var(--left-sidebar-item-collapsed-icon-color);font-size:var(--menu-item-icon-size);transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.menu-group-title-icon{width:1em;height:1em;border-bottom:2px solid var(--left-sidebar-group-border-color)}.menu-group-title-text{flex:1;font-size:12px;overflow:hidden;white-space:nowrap;margin-right:12px}.menu-group-list slot::slotted(*){margin-top:2px}.menu-group-arrow{position:absolute;top:50%;right:12px;width:10px;transform:translateY(-2px);transition:all 0.3s cubic-bezier(0.645,0.045,0.355,1)}.menu-group-arrow::before,\n.menu-group-arrow::after{content:\"\";position:absolute;width:6px;height:1.5px;background-color:currentColor;border-radius:2px;transition:all 0.3s cubic-bezier(0.645,0.045,0.355,1)}.menu-group-arrow::before{transform:rotate(45deg) translateX(2.5px)}.menu-group-arrow::after{transform:rotate(-45deg) translateX(-2.5px)}.menu-group-collapsed .menu-group-arrow{transform:translateY(-50%)}.menu-group-collapsed .menu-group-arrow::before{transform:rotate(-45deg) translateX(2.5px)}.menu-group-collapsed .menu-group-arrow::after{transform:rotate(45deg) translateX(-2.5px)}.menu-group-list{display:grid;grid-template-rows:1fr;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.menu-group-list-inner{overflow:hidden}:host([menu-collapsed]) .menu-group-title{padding:0px calc(50% - var(--menu-item-icon-size) / 2)}:host(:not([menu-collapsed])) .menu-group-title-icon-container{width:0;margin-right:0;opacity:0}:host([menu-collapsed]) .menu-group-title-text{opacity:0}:host([menu-collapsed]) .menu-group-arrow{opacity:0}:host(:not([menu-collapsed])) .menu-group-title-text{white-space:pre-wrap;display:-webkit-inline-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;text-overflow:ellipsis;color:#7f8ba6}:host([collapsable]) .menu-group-collapsed .menu-group-list{grid-template-rows:0fr;opacity: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, `:host{display:block;--menu-item-icon-size:20px}:host([hidden]){display:none}*,\n*::before,\n*::after{box-sizing:border-box}eo-link{display:block}.menu-item{position:relative;display:flex;align-items:center;min-height:36px;padding:8px 12px;line-height:20px;color:var(--left-sidebar-item-normal-color);border-radius:var(--medius-border-radius);cursor:pointer;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.menu-item-icon-container{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:var(--menu-item-icon-size);height:var(--menu-item-icon-size);font-size:var(--menu-item-icon-size);color:var(--left-sidebar-item-collapsed-icon-color)}:host([in-submenu]):host(:not([selected])) .menu-item{color:var(--left-sidebar-item-collapsed-color)}.menu-item-text{flex:1;margin-left:14px;margin-right:12px;font-size:14px;overflow:hidden;white-space:nowrap;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.menu-item:hover{background:var(--left-sidebar-item-hover-bg)}:host([selected]) .menu-item{color:var(--left-sidebar-item-selected-color);background:var(--left-sidebar-item-selected-bg);box-shadow:0px 2px 12px 0px rgba(26,122,255,0.30196)}:host([selected]) .menu-item-icon-container{color:var(--left-sidebar-item-selected-color)}:host([selected]) .menu-item:hover{background-color:var(--left-sidebar-item-selected-hover-bg)}:host([menu-collapsed]) .menu-item{padding:0px calc(50% - var(--menu-item-icon-size) / 2)}:host([menu-collapsed]) .menu-item-text{opacity:0}:host(:not([menu-collapsed])) .menu-item-text{white-space:pre-wrap;display:-webkit-inline-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;text-overflow:ellipsis}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;--menu-item-icon-size:20px}:host([hidden]){display:none}*,\n*::before,\n*::after{box-sizing:border-box}.menu-submenu-title{position:relative;display:flex;align-items:center;min-height:36px;padding:8px 12px;line-height:20px;color:var(--left-sidebar-item-normal-color);border-radius:var(--larger-border-radius);cursor:pointer;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.menu-submenu-title-icon-container{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:var(--menu-item-icon-size);height:var(--menu-item-icon-size);font-size:var(--menu-item-icon-size);color:var(--left-sidebar-item-collapsed-icon-color)}.menu-submenu-title-text{flex:1;margin-left:14px;margin-right:12px;font-size:14px;overflow:hidden;white-space:nowrap}.menu-submenu-arrow{position:absolute;top:50%;right:12px;width:10px;color:var(--left-sidebar-item-arrow-color);transform:translateY(-2px);transition:all 0.3s cubic-bezier(0.645,0.045,0.355,1)}.menu-submenu-arrow::before,\n.menu-submenu-arrow::after{content:\"\";position:absolute;width:6px;height:1.5px;background-color:currentColor;border-radius:2px;transition:all 0.3s cubic-bezier(0.645,0.045,0.355,1)}.menu-submenu-arrow::before{transform:rotate(45deg) translateX(2.5px)}.menu-submenu-arrow::after{transform:rotate(-45deg) translateX(-2.5px)}.menu-submenu-collapsed .menu-submenu-arrow{transform:translateY(-50%)}.menu-submenu-collapsed .menu-submenu-arrow::before{transform:rotate(-45deg) translateX(2.5px)}.menu-submenu-collapsed .menu-submenu-arrow::after{transform:rotate(45deg) translateX(-2.5px)}.menu-submenu-title:hover{background:var(--left-sidebar-item-hover-bg)}.menu-sub{display:grid;grid-template-rows:1fr;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.menu-submenu-collapsed .menu-sub{grid-template-rows:0fr;opacity:0}.menu-sub-inner{overflow:hidden}.menu-sub-inner slot::slotted(*){margin-top:2px}:host([menu-collapsed]) .menu-submenu-title{padding:0px calc(50% - var(--menu-item-icon-size) / 2)}:host([menu-collapsed]) .menu-submenu-title-text{opacity:0}:host([menu-collapsed]) .menu-submenu-arrow{opacity:0}:host(:not([menu-collapsed])) .menu-submenu-title-text{white-space:pre-wrap;display:-webkit-inline-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;text-overflow:ellipsis}:host([selected]):host([menu-collapsed]) .menu-submenu-title, :host([selected]):host([collapsed]) .menu-submenu-title{background:var(--left-sidebar-item-selected-bg);color:var(--left-sidebar-item-selected-color)}:host([selected]):host([menu-collapsed]) .menu-submenu-title-icon-container,\n :host([selected]):host([collapsed]) .menu-submenu-title-icon-container,\n :host([selected]):host([menu-collapsed]) .menu-submenu-arrow,\n :host([selected]):host([collapsed]) .menu-submenu-arrow{color:var(--left-sidebar-item-selected-color)}:host([selected]) .menu-submenu-title-text{font-weight:var(--font-weight-500)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block;transition:width var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}:host([hidden]){display:none}*,\n*::before,\n*::after{box-sizing:border-box}.sidebar-menu-item-list slot::slotted(*){margin-top:6px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___.toString();\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `:host{display:block}:host([hidden]){display:none}:host([position=\"static\"]){height:100%}*,\n*::before,\n*::after{box-sizing:border-box}.sidebar-container{position:relative;z-index:998;height:100%}.sidebar-container,\n.inner{transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}:host(:not([position=\"static\"])) .sidebar-container{position:fixed;left:0;top:var(--app-bar-height);height:calc(100vh - var(--app-bar-height))}.inner{position:absolute;left:0;height:100%;display:flex;flex-direction:column;background-color:var(--left-menu-bg);border-right:1px solid var(--left-sidebar-border-right)}.inner:hover{background-color:var(--left-menu-hover-bg)}.inner::before{content:\"\";position:absolute;left:0;right:0;top:0;bottom:0;z-index:-1;background:var(--sidebar-bg)}.header{padding:0 12px;margin-top:14px;height:52px;flex-shrink:0}.menu-title{height:100%;display:flex;align-items:center;color:var(--left-sidebar-large-title-color)}.menu-title-icon-container{flex-shrink:0;display:flex;justify-content:center;align-items:center;width:20px;height:20px;font-size:20px;line-height:0;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.menu-title-icon{color:var(--left-sidebar-item-collapsed-icon-color)}.menu-title-point{width:4px;height:4px;background:var(--antd-text-color);border-radius:50%}.menu-title-text{font-size:16px;font-weight:var(--font-weight-500);color:var(--left-sidebar-large-title-color);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.state-collapsed .menu-title{padding:0 calc(50% - 10px)}.state-hovered .menu-title,\n.state-expanded .menu-title{padding:0 12px}.state-collapsed .menu-title-icon-container{margin-right:12px}.state-hovered .menu-title-icon-container,\n.state-expanded .menu-title-icon-container{margin-right:0;width:0;opacity:0}.content{padding:0 12px;flex:1;overflow-y:auto;scrollbar-width:none}.content::-webkit-scrollbar{width:0;background:transparent}.content.show-shadow{box-shadow:0 -17px 10px -16px rgb(0 0 0/8%) inset}.footer{height:60px;flex-shrink:0;display:flex;align-items:center;justify-content:flex-end}.fixed-icon{display:flex;justify-content:center;align-items:center;width:20px;height:20px;margin-right:8px;transition:all var(--side-bar-collapse-transition-duration) var(--side-bar-collapse-transition-timing-function)}.fixed-icon > svg{width:100%;height:100%}.fixed-icon:hover > svg path[fill]{fill:var(--color-brand)}.state-collapsed .fixed-icon{visibility:hidden;opacity:0}.state-hovered .fixed-icon,\n.state-expanded .fixed-icon{visibility:visible;opacity:1}.state-hovered .inner{box-shadow:var(--left-sidebar-shadow)}.resize-line{position:absolute;right:-2px;height:100%;width:2px;cursor:col-resize}.resize-line:hover,\n.resize-line:active{background-color:rgba(26,122,255,1)}.dragging,\n.dragging .inner{transition:none}`, \"\"]);\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 _objectSpread from \"@babel/runtime/helpers/objectSpread2\";\nimport _asyncToGenerator from \"@babel/runtime/helpers/asyncToGenerator\";\nimport { http } from \"@next-core/http\";\n/**\n * @description 获取我的收藏列表\n * @endpoint GET /api/v1/user_service/my_collection/collections\n */\nexport var MyCollectionApi_listMyCollection = /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(function* (params, options) {\n return (/**! @contract easyops.api.user_service.my_collection.ListMyCollection@1.0.0 */(yield http.get(\"api/gateway/user_service.my_collection.ListMyCollection/api/v1/user_service/my_collection/collections\", _objectSpread(_objectSpread({}, options), {}, {\n params\n }))).data\n );\n });\n return function MyCollectionApi_listMyCollection(_x, _x2) {\n return _ref.apply(this, arguments);\n };\n}();\n//# sourceMappingURL=listMyCollection.js.map","import { http } from \"@next-core/http\";\n/**\n * @description 更新/新增我的收藏,这个接口用于全量更新单实例\n * @endpoint POST /api/v1/user_service/my_collection/upsert_collections\n */\nexport var MyCollectionApi_upsertMyCollection = (data, options) => /**! @contract easyops.api.user_service.my_collection.UpsertMyCollection@1.0.0 */http.post(\"api/gateway/user_service.my_collection.UpsertMyCollection/api/v1/user_service/my_collection/upsert_collections\", data, options);\n//# sourceMappingURL=upsertMyCollection.js.map"],"names":["scrollWidth","defineElement","property","createDecorators","WrappedMenuItem","wrapBrick","WrappedPopover","onVisibleChange","beforeVisibleChange","RenderMenuItemCom","props","item","isSubMenu","topData","React","SubMenuItemCom","_extends","isGroup","GroupMenuItemCom","SimpleMenuItemCom","index","hidden","showTooltip","selectedKey","className","key","title","text","active","includes","renderLinkCom","width","_NavMenu","handlePopupVisibleChange","event","_scrollWidth","paddingRight","window","innerWidth","document","body","clientWidth","style","detail","overflow","touchAction","_ref","_item$items","items","length","classnames","subprime","arrow","trigger","placement","distance","anchorDisplay","strategy","slot","renderSpanCom","map","innerItem","_ref2","_item$items2","childLayout","ThreeLevelMenuCom","SitMapMenCom","_ref3","_item$items3","ThreeLevelMenuPopoverContent","menuItem","_ref4","_item$items4","visible","setVisible","useState","onClick","e","stopPropagation","SiteMapItem","menuGroup","_classDecs","styleTexts","SiteMapStyleText","ItemTagStyleText","GroupItemStyleText","styleText","_dec","attribute","_dec2","type","Boolean","_A","WeakMap","_B","NavMenu","ReactNextElement","constructor","arguments","_classPrivateFieldInitSpec","writable","value","_initProto","_init_menu","_init_showTooltip","menu","_classPrivateFieldGet","v","_classPrivateFieldSet","render","NavMenuComponent","this","_menu$menuItems$lengt","_menu$menuItems2","history","getHistory","navMenuWrapperRef","useRef","location","setLocation","overflowIndex","setOverflowIndex","Number","MAX_SAFE_INTEGER","pathname","search","useMemo","_menu$menuItems","selectedKeys","initMenuItemAndMatchCurrentPathKeys","menuItems","useEffect","unListen","listen","current","resizeObserver","ResizeObserver","_navMenuWrapperRef$cu","getClientRects","childNodes","wrapperWidth","i","childWidth","height","childHeight","observe","disconnect","overflowMenu","slice","ref","_items","isHidden","_NavMenu2","c","_initClass","_applyDecs","initializeReactI18n","NS","locales","_LaunchpadButton","LaunchpadButton","LaunchpadButtonComponent","_LaunchpadButton2","_EoLaunchpadButtonV","lockBodyScroll","unwrapProvider","platformCategoryStyleText","EoLaunchpadButtonV2","disconnectedCallback","super","EoLaunchpadButtonV2Component","host","initialized","setInitialized","setActive","toggleLaunchpad","previous","hotkeys","filter","preventDefault","unbind","_getRuntime","deferredLaunchpadInfo","schedulePrefetch","deferredFavorites","getRuntime","getFeatureFlags","deferredPlatformCategories","role","classNames","LaunchpadSvg","Launchpad","_EoLaunchpadButtonV2","WrappedIcon","WrappedLink","WrappedDropdownActions","onActionClick","MenuGroup","data","actions","name","dropdownActive","setDropdownActive","filteredActions","checkIfByTransform","handleActionClick","useCallback","action","empty","lib","icon","MenuItemFolder","instanceId","MenuItem","concat","id","_data$menuIcon","getAppLocaleName","menuIcon","pick","expanded","setExpanded","toggle","prefix","_LaunchpadConfig","_dec3","_C","_actionClickEvent","_onActionClick","LaunchpadConfig","get","_get_actionClickEvent2","set","_set_actionClickEvent2","_init_menuGroups","_init_actions","_init_actionClickEvent","emit","menuGroups","LaunchpadConfigComponent","_set_actionClickEvent","_get_actionClickEvent","group","_LaunchpadConfig2","o","_","has","_checkInRHS","_EasyopsNavbarAlerts","EasyopsNavbarAlerts","EasyopsNavbarAlertsComponent","_EasyopsNavbarAlerts2","storage","JsonStorage","localStorage","licenseHide","setLienceseHide","slowRender","setSlowRender","currentApp","useCurrentApp","licenseDismissedKey","authInfo","auth","getAuth","org","licenseDaysLeft","_authInfo$license","dismissExpireAt","validDaysLeft","license","isAdmin","getItem","moment","unix","handelRouteRender","renderTime","loadTime","loadInfoPage","getMiscSettings","isBuildPush","millisecondToSecond","suggestTime","suggestUrl","addEventListener","removeEventListener","handleLicenseAlertDismiss","setItem","Alert","link","label","url","undefined","closable","onClose","href","target","millisecond","Math","floor","_EoLaunchpadQuickAcce","EoLaunchpadQuickAccess","_init_readonly","readonly","EoLaunchpadQuickAccessComponent","favorites","loadingFavorites","pushRecentVisit","toggleStar","isStarred","useLaunchpadInfo","LaunchpadsContext","Provider","searching","SidebarMenuItem","_EoLaunchpadQuickAccess","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_EoSearchLaunchpad","EoSearchLaunchpad","EoSearchLaunchpadComponent","searchInputRef","handleClickSearchBox","_searchInputRef$curre","focus","loading","q","setQ","handleSearch","clearSearch","placeholder","onChange","onFocus","onBlur","theme","onMouseDown","Loading","spinning","_EoSearchLaunchpad2","_EoLaunchpadRecentVis","EoLaunchpadRecentVisits","EoLaunchpadRecentVisitsComponent","recentVisits","_EoLaunchpadRecentVisits","_EoAppBarWrapper","alias","_dec4","_D","EoAppBarWrapper","_init_isFixed","_init_position","_init_displayCenter","_init_extraAppBarContentStyle","isFixed","position","displayCenter","extraAppBarContentStyle","EoAppBarWrapperComponent","mainElement","getElementById","iframeMainElement","marginTop","_objectSpread","justifyContent","_EoAppBarWrapper2","_EoFrameBreadcrumb","WrappedBreadcrumb","WrappedBreadcrumbItem","EoFrameBreadcrumb","_init_breadcrumb","_init_noCurrentApp","breadcrumb","noCurrentApp","EoFrameBreadcrumbComponent","_props$breadcrumb","_props$noCurrentApp","navConfig","getNavConfig","curAppBreadcrumb","currentAppBreadcrumbItems","breadcrumbItems","useCurrentMenuTitle","to","homepage","internal","localeName","_EoFrameBreadcrumb2","_EoSidebarMenuItem","_dec5","_dec6","_dec7","_E","_F","_G","EoSidebarMenuItem","_init_url","_init_href","_init_target","_init_icon","_init_selected","_init_inSubmenu","_init_menuCollapsed","selected","inSubmenu","menuCollapsed","EoSidebarMenuItemComponent","imgStyle","_EoSidebarMenuItem2","sidebarMenuItemTagNameSet","Set","isSidebarMenuItem","element","tagName","useUpdateMenuCollapsedState","slotRef","updateChildrenMenuCollapsedState","_slotRef$current","assignedElements","forEach","ele","slotElem","handleSlotchange","SIDE_BAR_HAS_BEEN_USED","SIDE_BAR_EXPAND_STATE","SIDE_BAR_RESIZE_WIDTH","ExpandedState","sideBarWidth","parseInt","getCssPropertyValue","sideBarCollapsedWidth","SidebarMenuContext","createContext","openedKeys","matchedKeys","WrappedSidebarMenu","WrappedSidebarMenuItem","WrappedSidebarMenuGroup","WrappedSidebarMenuSubmenu","MenuSimpleItem","useContext","top","isSelected","collapsable","MenuSubmenu","collapsed","SidebarMenu","expandedState","Collapsed","_EoSidebarMenuGroup","_handleCollapseChang","EoSidebarMenuGroup","_init_collapsable","_init_collapsed","EoSidebarMenuGroupComponent","onCollapseChange","titleRef","handleClick","titleElem","_EoSidebarMenuGroup2","_EoSidebarMenuSubmenu","EoSidebarMenuSubmenu","EoSidebarMenuSubmenuComponent","_EoSidebarMenuSubmenu2","_EoSidebarMenu","EoSidebarMenu","EoSidebarMenuComponent","_EoSidebarMenu2","xmlns","viewBox","fill","fillRule","d","K","en","UNPIN_NAVIGATION","FIXED_NAVIGATION","CLICK_TO_FIX_NAVIGATION","zh","_EoSidebar","WrappedTooltip","_actualWidthChangeEvent","_handleActualWidthChange","_expandedStateChangeEvent","_handleExpandedStateChange","EoSidebar","_get_expandedStateChangeEvent2","_set_expandedStateChangeEvent2","_get_actualWidthChangeEvent2","_set_actualWidthChangeEvent2","_init_hiddenFixedIcon","_init_expandedState","_init_actualWidthChangeEvent","actualWidth","_init_expandedStateChangeEvent","state","hiddenFixedIcon","EoSidebarComponent","onActualWidthChange","onExpandedStateChange","_set_actualWidthChangeEvent","_get_actualWidthChangeEvent","_set_expandedStateChangeEvent","_get_expandedStateChangeEvent","useTranslation","showUserDefinedIcon","isFirstUsedTooltip","setIsFirstUsedTooltip","showContentShadow","setShowContentShadow","dragging","setDragging","setExpandedState","titleIcon","contentBottomPlaceholderRef","observer","IntersectionObserver","entries","entry","isIntersecting","threshold","Expanded","expandedWidth","setExpandedWidth","memorizedWidth","isNaN","containerRef","handleMouseEnter","newState","Hovered","handleMouseLeave","sidebarActualWidth","getContainerWidth","inner","container","content","t","handleFixedIconClick","FixedSvg","display","ToFixedSvg","_containerRef$current","_containerRef$current2","cancelable","fn","frame","cancel","func","offsetX","getBoundingClientRect","left","drag","x","clientX","_len","params","Array","_key","requestAnimationFrame","cancelAnimationFrame","dragEnd","passive","_EoSidebar2","_EoSidebarSubMenu","WrappedMenu","WrappedMenuGroup","WrapperMenuItemSubMenu","WrappedLinkItem","EoSidebarSubMenu","EoSidebarSubMenuComponent","setSelectedKey","setOpenedKeys","setSelected","getMenuItemIndent","_item$key","split","renderMenuItem","titleStyle","paddingLeft","bodyStyle","renderSubMenuItem","renderGroupMenuItem","renderSimpleMenuItem","mode","_EoSidebarSubMenu2","_EoDirectory","_menuItemClickEvent","_suffixIconClickEvent","_menuItemClick","_suffixIconClick","EoDirectory","_get_suffixIconClickEvent2","_set_suffixIconClickEvent2","_get_menuItemClickEvent2","_set_menuItemClickEvent2","_init_directoryTitle","_init_menuItems","_init_suffixBrick","_init_defaultSelectedKeys","_init_menuItemClickEvent","_init_suffixIconClickEvent","directoryTitle","suffixBrick","defaultSelectedKeys","EoDirectoryComponent","suffixIconClick","menuItemClick","_set_menuItemClickEvent","_get_menuItemClickEvent","_set_suffixIconClickEvent","_get_suffixIconClickEvent","_item$children","useBrick","ReactUseMultipleBricks","suffixIcon","suffixIconTooltip","suffixIconDisabled","children","child","groupKey","_EoDirectory2","DirectoryTreeContext","expandedKeysSet","selectedKeysSet","onExpand","onSelect","useDirectoryTreeContext","WrappedTreeLeaf","WrappedTreeInternalNode","TreeLeaf","treeData","depth","nodeData","keys","node","TreeInternalNode","add","delete","TreeNode","isArray","Tree","getAllExpandableKeys","reduce","pre","cur","getExpandableKeysAccordingToSelectedKeys","_cur$children","childrenMatched","some","childrenExpandableKeys","searchTree","searchFields","expandedKeys","lowerQ","toLowerCase","_expandedKeys","_data","selfMatched","flatMap","field","getSearchKeywords","matchItem","childrenSearchResult","filteredChildren","push","result","isNil","Object","prototype","toString","call","k","String","flat","Infinity","_EoDirectoryTree","method","WrappedSearch","onSearch","_dec8","_dec9","_dec10","_dec11","_dec12","_dec13","_H","_I","_expandEvent","_handleExpand","_J","_selectEvent","_handleSelect","EoDirectoryTree","_get_selectEvent2","_set_selectEvent2","_get_expandEvent2","_set_expandEvent2","_init_data","_init_searchable","_init_placeholder","_init_searchFields","_init_selectedKeys","_init_expandedKeys","_init_expandEvent","_init_selectEvent","searchable","expandAll","collapseAll","expandAccordingToSelectedKeys","EoDirectoryTreeComponent","_set_expandEvent","_get_expandEvent","_set_selectEvent","_get_selectEvent","searchedData","treeItems","flattenList","dig","list","parent","treeItem","pos","flattenData","getFlattenTreeData","trim","_EoDirectoryTree2","_EoDirectoryTreeLeaf","EoDirectoryTreeLeaf","_init_depth","EoDirectoryTreeLeafComponent","treeItemRef","suffixRef","handleSelect","suffix","handleSuffixClick","_EoDirectoryTreeLeaf2","_EoDirectoryTreeInter","EoDirectoryTreeInternalNode","_init_expanded","_init_selectable","selectable","EoDirectoryTreeInternalNodeComponent","expandBottomRef","expandBottom","handleExpand","Arrow","_EoDirectoryTreeInternalNode","_NavLogo","NavLogo","NavLogoComponent","brand","getBrandSettings","logoNode","menu_bar_logo_url","src","category","menu_bar_logo_no_link","_NavLogo2","___CSS_LOADER_EXPORT___","module","_checkPrivateRedeclaration","obj","privateCollection","TypeError","_classExtractFieldDescriptor","receiver","privateMap","descriptor","classExtractFieldDescriptor","MyCollectionApi_listMyCollection","http","_x","_x2","apply","MyCollectionApi_upsertMyCollection","post"],"sourceRoot":""}
|